llvmpipe: fix fragdata/lastfragdata heuristic a bit more.

This heuristic broke when zmike lowered fragcolor using NIR,

This fixes a regression in:
dEQP-GLES31.functional.shaders.framebuffer_fetch.basic.last_frag_data

Fixes: db1371cce1 ("llvmpipe: fix handling of unused color attachments")
Acked-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24435>
(cherry picked from commit 773d77dc7e)
This commit is contained in:
Dave Airlie 2023-08-02 12:17:27 +10:00 committed by Eric Engestrom
parent d4b505ea89
commit 561d5b931b
2 changed files with 2 additions and 3 deletions

View file

@ -1111,7 +1111,7 @@
"description": "llvmpipe: fix fragdata/lastfragdata heuristic a bit more.",
"nominated": true,
"nomination_type": 1,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": "db1371cce1d4e0f0f4fa2518379db78efde53ea4"
},

View file

@ -1181,8 +1181,7 @@ generate_fs_loop(struct gallivm_state *gallivm,
if ((shader->info.base.output_semantic_name[attrib]
== TGSI_SEMANTIC_COLOR) &&
((cbuf < key->nr_cbufs) || (cbuf == 1 && dual_source_blend))) {
if (cbuf == 0 &&
shader->info.base.properties[TGSI_PROPERTY_FS_COLOR0_WRITES_ALL_CBUFS]) {
if (cbuf == 0) {
/* XXX: there is an edge case with FB fetch where gl_FragColor and
* gl_LastFragData[0] are used together. This creates both
* FRAG_RESULT_COLOR and FRAG_RESULT_DATA* output variables. This