mirror of
https://gitlab.freedesktop.org/wayland/weston.git
synced 2026-05-05 19:18:13 +02:00
gl-renderer: Replace Y_XUXV variant by Y_UV with texture swizzles
Formats using SHADER_VARIANT_Y_XUXV can now use SHADER_VARIANT_Y_UV instead with swizzle variations in order to simplify the fragment shader. Signed-off-by: Loïc Molinari <loic.molinari@collabora.com>
This commit is contained in:
parent
51ed256d26
commit
b947955499
4 changed files with 20 additions and 28 deletions
|
|
@ -37,10 +37,9 @@
|
|||
#define SHADER_VARIANT_RGBA 1
|
||||
#define SHADER_VARIANT_Y_U_V 2
|
||||
#define SHADER_VARIANT_Y_UV 3
|
||||
#define SHADER_VARIANT_Y_XUXV 4
|
||||
#define SHADER_VARIANT_XYUV 5
|
||||
#define SHADER_VARIANT_SOLID 6
|
||||
#define SHADER_VARIANT_EXTERNAL 7
|
||||
#define SHADER_VARIANT_XYUV 4
|
||||
#define SHADER_VARIANT_SOLID 5
|
||||
#define SHADER_VARIANT_EXTERNAL 6
|
||||
|
||||
/* enum gl_shader_color_curve */
|
||||
#define SHADER_COLOR_CURVE_IDENTITY 0
|
||||
|
|
@ -211,10 +210,6 @@ sample_input_texture()
|
|||
yuva.x = texture2D_swizzle(tex, 0, v_texcoord).x;
|
||||
yuva.yz = texture2D_swizzle(tex1, 1, v_texcoord).rg;
|
||||
|
||||
} else if (c_variant == SHADER_VARIANT_Y_XUXV) {
|
||||
yuva.x = texture2D_swizzle(tex, 0, v_texcoord).x;
|
||||
yuva.yz = texture2D_swizzle(tex1, 1, v_texcoord).ga;
|
||||
|
||||
} else if (c_variant == SHADER_VARIANT_XYUV) {
|
||||
yuva.xyz = texture2D_swizzle(tex, 0, v_texcoord).bgr;
|
||||
|
||||
|
|
|
|||
|
|
@ -212,7 +212,6 @@ enum gl_shader_texture_variant {
|
|||
SHADER_VARIANT_RGBA,
|
||||
SHADER_VARIANT_Y_U_V,
|
||||
SHADER_VARIANT_Y_UV,
|
||||
SHADER_VARIANT_Y_XUXV,
|
||||
SHADER_VARIANT_XYUV,
|
||||
SHADER_VARIANT_SOLID,
|
||||
SHADER_VARIANT_EXTERNAL,
|
||||
|
|
|
|||
|
|
@ -67,15 +67,15 @@
|
|||
|
||||
#define BUFFER_DAMAGE_COUNT 2
|
||||
|
||||
#define SWIZZLES_0A0G { GL_ZERO, GL_ALPHA, GL_ZERO, GL_GREEN }
|
||||
#define SWIZZLES_0B0R { GL_ZERO, GL_BLUE, GL_ZERO, GL_RED }
|
||||
#define SWIZZLES_0G0A { GL_ZERO, GL_GREEN, GL_ZERO, GL_ALPHA }
|
||||
#define SWIZZLES_0R0B { GL_ZERO, GL_RED, GL_ZERO, GL_BLUE }
|
||||
#define SWIZZLES_G000 { GL_GREEN, GL_ZERO, GL_ZERO, GL_ZERO }
|
||||
#define SWIZZLES_GR00 { GL_GREEN, GL_RED, GL_ZERO, GL_ZERO }
|
||||
#define SWIZZLES_R000 { GL_RED, GL_ZERO, GL_ZERO, GL_ZERO }
|
||||
#define SWIZZLES_RG00 { GL_RED, GL_GREEN, GL_ZERO, GL_ZERO }
|
||||
#define SWIZZLES_RGB0 { GL_RED, GL_GREEN, GL_BLUE, GL_ZERO }
|
||||
#define SWIZZLES_AG00 { GL_ALPHA, GL_GREEN, GL_ZERO, GL_ZERO }
|
||||
#define SWIZZLES_BR00 { GL_BLUE, GL_RED, GL_ZERO, GL_ZERO }
|
||||
#define SWIZZLES_G000 { GL_GREEN, GL_ZERO, GL_ZERO, GL_ZERO }
|
||||
#define SWIZZLES_GA00 { GL_GREEN, GL_ALPHA, GL_ZERO, GL_ZERO }
|
||||
#define SWIZZLES_GR00 { GL_GREEN, GL_RED, GL_ZERO, GL_ZERO }
|
||||
#define SWIZZLES_R000 { GL_RED, GL_ZERO, GL_ZERO, GL_ZERO }
|
||||
#define SWIZZLES_RB00 { GL_RED, GL_BLUE, GL_ZERO, GL_ZERO }
|
||||
#define SWIZZLES_RG00 { GL_RED, GL_GREEN, GL_ZERO, GL_ZERO }
|
||||
#define SWIZZLES_RGB0 { GL_RED, GL_GREEN, GL_BLUE, GL_ZERO }
|
||||
|
||||
enum gl_debug_mode {
|
||||
DEBUG_MODE_NONE = 0,
|
||||
|
|
@ -378,7 +378,7 @@ struct yuv_format_descriptor yuv_formats[] = {
|
|||
{
|
||||
.format = DRM_FORMAT_YUYV,
|
||||
.output_planes = 2,
|
||||
.shader_variant = SHADER_VARIANT_Y_XUXV,
|
||||
.shader_variant = SHADER_VARIANT_Y_UV,
|
||||
{{
|
||||
.format = DRM_FORMAT_GR88,
|
||||
.plane_index = 0,
|
||||
|
|
@ -386,12 +386,12 @@ struct yuv_format_descriptor yuv_formats[] = {
|
|||
}, {
|
||||
.format = DRM_FORMAT_ABGR8888,
|
||||
.plane_index = 0,
|
||||
.swizzles.array = SWIZZLES_0G0A,
|
||||
.swizzles.array = SWIZZLES_GA00,
|
||||
}}
|
||||
}, {
|
||||
.format = DRM_FORMAT_YVYU,
|
||||
.output_planes = 2,
|
||||
.shader_variant = SHADER_VARIANT_Y_XUXV,
|
||||
.shader_variant = SHADER_VARIANT_Y_UV,
|
||||
{{
|
||||
.format = DRM_FORMAT_GR88,
|
||||
.plane_index = 0,
|
||||
|
|
@ -399,12 +399,12 @@ struct yuv_format_descriptor yuv_formats[] = {
|
|||
}, {
|
||||
.format = DRM_FORMAT_ABGR8888,
|
||||
.plane_index = 0,
|
||||
.swizzles.array = SWIZZLES_0A0G,
|
||||
.swizzles.array = SWIZZLES_AG00,
|
||||
}}
|
||||
}, {
|
||||
.format = DRM_FORMAT_UYVY,
|
||||
.output_planes = 2,
|
||||
.shader_variant = SHADER_VARIANT_Y_XUXV,
|
||||
.shader_variant = SHADER_VARIANT_Y_UV,
|
||||
{{
|
||||
.format = DRM_FORMAT_GR88,
|
||||
.plane_index = 0,
|
||||
|
|
@ -412,12 +412,12 @@ struct yuv_format_descriptor yuv_formats[] = {
|
|||
}, {
|
||||
.format = DRM_FORMAT_ABGR8888,
|
||||
.plane_index = 0,
|
||||
.swizzles.array = SWIZZLES_0R0B,
|
||||
.swizzles.array = SWIZZLES_RB00,
|
||||
}}
|
||||
}, {
|
||||
.format = DRM_FORMAT_VYUY,
|
||||
.output_planes = 2,
|
||||
.shader_variant = SHADER_VARIANT_Y_XUXV,
|
||||
.shader_variant = SHADER_VARIANT_Y_UV,
|
||||
{{
|
||||
.format = DRM_FORMAT_GR88,
|
||||
.plane_index = 0,
|
||||
|
|
@ -425,7 +425,7 @@ struct yuv_format_descriptor yuv_formats[] = {
|
|||
}, {
|
||||
.format = DRM_FORMAT_ABGR8888,
|
||||
.plane_index = 0,
|
||||
.swizzles.array = SWIZZLES_0B0R,
|
||||
.swizzles.array = SWIZZLES_BR00,
|
||||
}}
|
||||
}, {
|
||||
.format = DRM_FORMAT_NV12,
|
||||
|
|
|
|||
|
|
@ -118,7 +118,6 @@ gl_shader_texture_variant_to_string(enum gl_shader_texture_variant v)
|
|||
CASERET(SHADER_VARIANT_RGBA)
|
||||
CASERET(SHADER_VARIANT_Y_U_V)
|
||||
CASERET(SHADER_VARIANT_Y_UV)
|
||||
CASERET(SHADER_VARIANT_Y_XUXV)
|
||||
CASERET(SHADER_VARIANT_XYUV)
|
||||
CASERET(SHADER_VARIANT_SOLID)
|
||||
CASERET(SHADER_VARIANT_EXTERNAL)
|
||||
|
|
@ -636,7 +635,6 @@ gl_shader_texture_variant_can_be_premult(enum gl_shader_texture_variant v)
|
|||
case SHADER_VARIANT_NONE:
|
||||
case SHADER_VARIANT_Y_U_V:
|
||||
case SHADER_VARIANT_Y_UV:
|
||||
case SHADER_VARIANT_Y_XUXV:
|
||||
case SHADER_VARIANT_XYUV:
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue