Mesa (main): radeonsi: don't use sel->nir in si_check_blend_dst_sampler_noop
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed May 25 12:28:36 UTC 2022
Module: Mesa
Branch: main
Commit: ef950d370a7854eee751ae49f50f2ef392ab3b2b
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ef950d370a7854eee751ae49f50f2ef392ab3b2b
Author: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer at amd.com>
Date: Wed May 18 16:50:22 2022 +0200
radeonsi: don't use sel->nir in si_check_blend_dst_sampler_noop
We don't want to modify sel->nir so force the use of the serialized
version of the shader.
Waiting on sel->ready guarantees that sel->nir will be NULL and that
si_get_nir_shader will use sel->nir_binary.
Fixes: b78a38bd022 ("radeonsi: use si_nir_is_output_const_if_tex_is_const")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6415
Reviewed-by: Marek Olšák <marek.olsak at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16587>
---
src/gallium/drivers/radeonsi/si_state.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c
index 3cf7fc2f214..0b6f4226829 100644
--- a/src/gallium/drivers/radeonsi/si_state.c
+++ b/src/gallium/drivers/radeonsi/si_state.c
@@ -655,6 +655,12 @@ static bool si_check_blend_dst_sampler_noop(struct si_context *sctx)
{
if (sctx->framebuffer.state.nr_cbufs == 1) {
struct si_shader_selector *sel = sctx->shader.ps.cso;
+
+ /* Wait for the shader to be ready. */
+ util_queue_fence_wait(&sel->ready);
+
+ assert(!sel->nir);
+
bool free_nir;
if (unlikely(sel->info.writes_1_if_tex_is_1 == 0xff)) {
struct nir_shader *nir = si_get_nir_shader(sel, &sctx->shader.ps.key, &free_nir);
@@ -672,6 +678,7 @@ static bool si_check_blend_dst_sampler_noop(struct si_context *sctx)
sel->info.writes_1_if_tex_is_1 = 0;
}
+ assert(free_nir);
if (free_nir)
ralloc_free(nir);
}
More information about the mesa-commit
mailing list