diff options
author | Icecream95 <ixn@disroot.org> | 2022-05-05 12:57:40 +1200 |
---|---|---|
committer | Dylan Baker <dylan.c.baker@intel.com> | 2022-06-01 14:10:28 -0700 |
commit | 8e85e7d7e9c4a2a3b1b791641ab0e760633d91be (patch) | |
tree | 97e9551c2467d14b4b13cd3dce44597fc4d2550e | |
parent | fcdd2a536bd6fa5c50c013c9b207285cb28feae8 (diff) |
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)
-rw-r--r-- | .pick_status.json | 2 | ||||
-rw-r--r-- | 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); |