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: ee48e81b26 ("v3d: Always lower frag color")
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
(cherry picked from commit a131530dd1)

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38010>
This commit is contained in:
Jose Maria Casanova Crespo 2025-10-19 23:04:17 +02:00 committed by Dylan Baker
parent 40ff53c5b8
commit 717e8a8caf
2 changed files with 3 additions and 1 deletions

View file

@ -1574,7 +1574,7 @@
"description": "v3d: mark FRAG_RESULT_COLOR as output_written on SAND blits FS",
"nominated": true,
"nomination_type": 2,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": "ee48e81b26e4293e9dae9834b892839dd2f236fa",
"notes": null

View file

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