From 695c875b04026db536d3a23aa8c1265b5835f417 Mon Sep 17 00:00:00 2001 From: Erik Faye-Lund Date: Mon, 22 Apr 2024 14:06:46 +0200 Subject: [PATCH] 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: 4da88060d0a ("panfrost: Skip blit shader labelling if the buffer has no space") CID: 1476270 Reviewed-by: Boris Brezillon Part-of: (cherry picked from commit 9058d5ff6252a1bf340453551613c4717cb87f6c) --- .pick_status.json | 2 +- src/panfrost/lib/pan_blitter.c | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 1eef26efb16..4a2cfbc10fb 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -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 diff --git a/src/panfrost/lib/pan_blitter.c b/src/panfrost/lib/pan_blitter.c index 84bcba6361f..9ffe0c16acc 100644 --- a/src/panfrost/lib/pan_blitter.c +++ b/src/panfrost/lib/pan_blitter.c @@ -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(