panfrost: correct first-tracking for signature

If we unconditionally assign false to first *before* we use it, it's
never true when used. Instead, let's assign it *both* at the end *and*
when continuing.

Fixes: 4da88060d0 ("panfrost: Skip blit shader labelling if the buffer has no space")
CID: 1476270
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28856>
(cherry picked from commit 9058d5ff62)
This commit is contained in:
Erik Faye-Lund 2024-04-22 14:06:46 +02:00 committed by Eric Engestrom
parent c2dc7eff44
commit 695c875b04
2 changed files with 6 additions and 3 deletions

View file

@ -1254,7 +1254,7 @@
"description": "panfrost: correct first-tracking for signature",
"nominated": true,
"nomination_type": 1,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": "4da88060d0a3662a579a26748d7e3458c1b4800d",
"notes": null

View file

@ -457,10 +457,11 @@ pan_blitter_get_blit_shader(struct panfrost_device *dev,
coord_comps = MAX2(coord_comps, (key->surfaces[i].dim ?: 3) +
(key->surfaces[i].array ? 1 : 0));
first = false;
if (sig_offset >= sizeof(sig))
if (sig_offset >= sizeof(sig)) {
first = false;
continue;
}
sig_offset +=
snprintf(sig + sig_offset, sizeof(sig) - sig_offset,
@ -468,6 +469,8 @@ pan_blitter_get_blit_shader(struct panfrost_device *dev,
first ? "" : ",", gl_frag_result_name(key->surfaces[i].loc),
type_str, dim_str, key->surfaces[i].array ? "[]" : "",
key->surfaces[i].src_samples, key->surfaces[i].dst_samples);
first = false;
}
nir_builder b = nir_builder_init_simple_shader(