From 82d62974164e6a3fc64a69d876e6725763023ea3 Mon Sep 17 00:00:00 2001 From: Robert Mader Date: Mon, 2 Mar 2026 13:11:05 +0100 Subject: [PATCH] gl-shaders: Remove asserts relying on shader compiler behavior yuv_coefficients and yuv_offsets should get optimized away by shader compilers as the related code paths can never be reached. This seems to work well on Mesa but not necessarily with other drivers. While on it, assert that the uniforms *are* present, unless the yuv-to-rgb conversion is handled by the driver. Signed-off-by: Robert Mader (cherry picked from commit 5c49563ef49a502a6b8fae44f8778e109d32c2d9) --- libweston/renderer-gl/gl-shaders.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/libweston/renderer-gl/gl-shaders.c b/libweston/renderer-gl/gl-shaders.c index 980418822..18eeedf66 100644 --- a/libweston/renderer-gl/gl-shaders.c +++ b/libweston/renderer-gl/gl-shaders.c @@ -762,8 +762,18 @@ gl_shader_load_config_representation(struct weston_compositor *compositor, if (sconf->yuv_coefficients == WESTON_COLOR_MATRIX_COEF_UNSET || sconf->yuv_coefficients == WESTON_COLOR_MATRIX_COEF_IDENTITY) { - assert(shader->yuv_coefficients_uniform == -1); - assert(shader->yuv_offsets_uniform == -1); + /* + * In this case the yuv_coefficients and yuv_offsets uniforms + * should never be used and thus get optimized away by the + * shader compiler. Unfortunately on some drivers this is not + * the case, so we can't assert on it. + */ + return; + } + + if (shader->yuv_coefficients_uniform == -1 || + shader->yuv_offsets_uniform == -1) { + assert(shader->key.variant == SHADER_VARIANT_EXTERNAL); return; }