Mesa (staging/22.1): panfrost: Copy blend constant into variant even when reusing it

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon May 23 18:09:44 UTC 2022


Module: Mesa
Branch: staging/22.1
Commit: 8d28a81bd145b1c4e7ad61e898d0bdf471752146
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=8d28a81bd145b1c4e7ad61e898d0bdf471752146

Author: Icecream95 <ixn at disroot.org>
Date:   Thu May  5 12:57:40 2022 +1200

panfrost: Copy blend constant into variant even when reusing it

Otherwise future lookups will match searches for the old constant.

Fixes: bbff09b9521 ("panfrost: Move the blend shader cache at the device level")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6355
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16343>
(cherry picked from commit 80404c8b640bdc24274b67561842ebf684e741f5)

---

 .pick_status.json            | 2 +-
 src/panfrost/lib/pan_blend.c | 3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/.pick_status.json b/.pick_status.json
index 9f848f9a2d7..7fdde6b1651 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -670,7 +670,7 @@
         "description": "panfrost: Copy blend constant into variant even when reusing it",
         "nominated": true,
         "nomination_type": 1,
-        "resolution": 0,
+        "resolution": 1,
         "main_sha": null,
         "because_sha": "bbff09b9521f17b40441885d06e089abf6c2e0b1"
     },
diff --git a/src/panfrost/lib/pan_blend.c b/src/panfrost/lib/pan_blend.c
index d9593004ca8..82f1a6fa0c2 100644
--- a/src/panfrost/lib/pan_blend.c
+++ b/src/panfrost/lib/pan_blend.c
@@ -802,7 +802,6 @@ GENX(pan_blend_get_shader_locked)(const struct panfrost_device *dev,
 
         if (shader->nvariants < PAN_BLEND_SHADER_MAX_VARIANTS) {
                 variant = rzalloc(shader, struct pan_blend_shader_variant);
-                memcpy(variant->constants, state->constants, sizeof(variant->constants));
                 util_dynarray_init(&variant->binary, variant);
                 list_add(&variant->node, &shader->variants);
                 shader->nvariants++;
@@ -813,6 +812,8 @@ GENX(pan_blend_get_shader_locked)(const struct panfrost_device *dev,
                 util_dynarray_clear(&variant->binary);
         }
 
+        memcpy(variant->constants, state->constants, sizeof(variant->constants));
+
         nir_shader *nir =
                 GENX(pan_blend_create_shader)(dev, state, src0_type, src1_type, rt);
 



More information about the mesa-commit mailing list