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:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user