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:
Loïc Molinari 2024-11-22 18:07:11 +01:00 committed by Daniel Stone
parent 51ed256d26
commit b947955499
4 changed files with 20 additions and 28 deletions

View file

@ -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;

View file

@ -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,

View file

@ -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,

View file

@ -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;
}