From ed372d4b7cb83b0ec22103135b7da5d2f0775c61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Thu, 21 Nov 2024 13:26:14 -0500 Subject: [PATCH] radeonsi: try to fix Navi14 regression in debug builds MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Assertion failure: ../src/gallium/drivers/radeonsi/si_state_shaders.cpp:1369: unsigned int si_get_input_prim(const si_shader_selector*, const si_shader_key*, bool): Assertion `gs->stage == MESA_SHADER_VERTEX' failed. Fixes: 7e959864b20bd9 ("radeonsi: enable NGG culling for non-monolithic TES and GS") Tested-by: Michel Dänzer Reviewed-by: Pierre-Eric Pelloux-Prayer Part-of: --- src/gallium/drivers/radeonsi/si_shader.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/radeonsi/si_shader.h b/src/gallium/drivers/radeonsi/si_shader.h index e58a1c45ad5..adfd495890c 100644 --- a/src/gallium/drivers/radeonsi/si_shader.h +++ b/src/gallium/drivers/radeonsi/si_shader.h @@ -1154,14 +1154,19 @@ static inline bool si_shader_uses_discard(struct si_shader *shader) static inline bool si_shader_culling_enabled(struct si_shader *shader) { + /* Legacy VS/TES/GS and ES don't cull in the shader. */ + if (!shader->key.ge.as_ngg || shader->key.ge.as_es) { + assert(!shader->key.ge.opt.ngg_culling); + return false; + } + if (shader->key.ge.opt.ngg_culling) return true; unsigned output_prim = si_get_output_prim_simplified(shader->selector, &shader->key); /* This enables NGG culling for non-monolithic TES and GS. */ - return shader->key.ge.as_ngg && !shader->key.ge.as_es && - shader->selector->ngg_cull_vert_threshold == 0 && + return shader->selector->ngg_cull_vert_threshold == 0 && (output_prim == MESA_PRIM_TRIANGLES || output_prim == MESA_PRIM_LINES); }