From a131530dd14b3def7c67496c2b62ccc04c70d49e Mon Sep 17 00:00:00 2001 From: Jose Maria Casanova Crespo Date: Sun, 19 Oct 2025 23:04:17 +0200 Subject: [PATCH] v3d: mark FRAG_RESULT_COLOR as output_written on SAND blits FS With the introduction of "v3d: Add support for 16bit normalised formats" https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35820 nir_lower_fragcolor is always called if shaders outputs_written shows that FRAG_RESULT_COLOR is used. But on SAND8/30 blit fragment shaders although the FRAG_RESULT_COLOR is used, it was not marked as output_written so the lowering was not applied. Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/14141 Fixes: ee48e81b26e ("v3d: Always lower frag color") Reviewed-by: Iago Toral Quiroga Part-of: --- src/gallium/drivers/v3d/v3d_blit.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/gallium/drivers/v3d/v3d_blit.c b/src/gallium/drivers/v3d/v3d_blit.c index e3100b77cd8..7a054d71d9d 100644 --- a/src/gallium/drivers/v3d/v3d_blit.c +++ b/src/gallium/drivers/v3d/v3d_blit.c @@ -690,6 +690,7 @@ v3d_get_sand8_fs(struct pipe_context *pctx, int cpp) nir_variable_create(b.shader, nir_var_shader_out, vec4, "f_color"); color_out->data.location = FRAG_RESULT_COLOR; + b.shader->info.outputs_written |= BITFIELD_BIT(FRAG_RESULT_COLOR); nir_variable *pos_in = nir_variable_create(b.shader, nir_var_shader_in, vec4, "pos"); @@ -998,6 +999,7 @@ v3d_get_sand30_fs(struct pipe_context *pctx) nir_var_shader_out, glsl_uvec4, "f_color"); color_out->data.location = FRAG_RESULT_COLOR; + b.shader->info.outputs_written |= BITFIELD_BIT(FRAG_RESULT_COLOR); nir_variable *pos_in = nir_variable_create(b.shader, nir_var_shader_in, vec4, "pos");