freedreno/ir3: Don't lower_gs multiple times

At least with gallium, this can be called multiple times via
pipe_screen::finalize_nir().  But it is not designed to be called
multiple times, and can result in vertex_flags getting 'optimized'
away.

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6720
Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17341>
This commit is contained in:
Rob Clark
2022-07-01 14:44:00 -07:00
committed by Marge Bot
parent 62c5d428bc
commit 5434de7ab6
+5
View File
@@ -909,6 +909,11 @@ ir3_nir_lower_gs(nir_shader *shader)
{
struct state state = {};
/* Don't lower multiple times: */
nir_foreach_shader_out_variable (var, shader)
if (var->data.location == VARYING_SLOT_GS_VERTEX_FLAGS_IR3)
return;
if (shader_debug_enabled(shader->info.stage)) {
mesa_logi("NIR (before gs lowering):");
nir_log_shaderi(shader);