Module: Mesa Branch: main Commit: 80404c8b640bdc24274b67561842ebf684e741f5 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=80404c8b640bdc24274b67561842ebf684e741f5
Author: Icecream95 <[email protected]> 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> --- src/panfrost/lib/pan_blend.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/panfrost/lib/pan_blend.c b/src/panfrost/lib/pan_blend.c index 8c212a8457d..0ffcd0162db 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);
