mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-02 21:50:34 +01:00
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:b78a38bd02("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@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16587> (cherry picked from commitef950d370a)
This commit is contained in:
parent
1153547b86
commit
d62bc76174
2 changed files with 8 additions and 1 deletions
|
|
@ -337,7 +337,7 @@
|
|||
"description": "radeonsi: don't use sel->nir in si_check_blend_dst_sampler_noop",
|
||||
"nominated": true,
|
||||
"nomination_type": 1,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": "b78a38bd0223188ee585bfaa32384ef98527e016"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -641,6 +641,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);
|
||||
|
|
@ -658,6 +664,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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue