From f9e60699596080fbcbb91dc6b0306d12810e07ec Mon Sep 17 00:00:00 2001 From: Christian Gmeiner Date: Wed, 14 Jun 2023 21:19:45 +0200 Subject: [PATCH] etnaviv: nir: call nir_remove_dead_variables(..) before linking setup There are cases where there is a chain to an unused nir variable that get removed by nir_opt_dce. This breaks our current linker as the variable can still be accessed via nir_foreach_shader_in_variable(..) macro. So lets call nir_remove_dead_variables(..) just before we setup our linking. Signed-off-by: Christian Gmeiner Acked-by: Lucas Stach Part-of: --- src/etnaviv/ci/etnaviv-gc2000-fails.txt | 8 -------- src/gallium/drivers/etnaviv/etnaviv_compiler_nir.c | 5 +++++ 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/etnaviv/ci/etnaviv-gc2000-fails.txt b/src/etnaviv/ci/etnaviv-gc2000-fails.txt index aba0594bc27..b1ad59c6f8a 100644 --- a/src/etnaviv/ci/etnaviv-gc2000-fails.txt +++ b/src/etnaviv/ci/etnaviv-gc2000-fails.txt @@ -193,10 +193,6 @@ spec@arb_fragment_program@fp-fragment-position,Crash spec@arb_fragment_program@fp-indirections2,Fail spec@arb_fragment_program@sparse-samplers,Crash -# MESA: error: etna_link_shader:1302: Semantic value not found in vertex shader outputs -# ati_fragment_shader-render-ops: ../src/gallium/drivers/etnaviv/etnaviv_shader.c:141: etna_link_shaders: Assertion `0' failed. -spec@ati_fragment_shader@ati_fragment_shader-render-ops,Crash - spec@arb_framebuffer_object@arb_framebuffer_object-depth-stencil-blit stencil gl_depth24_stencil8,Fail spec@arb_framebuffer_object@arb_framebuffer_object-depth-stencil-blit stencil gl_stencil_index16,Fail spec@arb_framebuffer_object@arb_framebuffer_object-depth-stencil-blit stencil gl_stencil_index1,Fail @@ -567,10 +563,6 @@ spec@nv_fog_distance@simple draw - gl_eye_plane,Fail spec@nv_primitive_restart@primitive-restart-draw-mode-lines,Fail spec@nv_primitive_restart@primitive-restart-draw-mode-triangles,Fail -# MESA: error: etna_link_shader:1302: Semantic value not found in vertex shader outputs -# nv_texture_env_combine4-combine: ../src/gallium/drivers/etnaviv/etnaviv_shader.c:141: etna_link_shaders: Assertion `0' failed. -spec@nv_texture_env_combine4@nv_texture_env_combine4-combine,Crash - # segfault spec@sgis_generate_mipmap@gen-nonzero-unit,Crash diff --git a/src/gallium/drivers/etnaviv/etnaviv_compiler_nir.c b/src/gallium/drivers/etnaviv/etnaviv_compiler_nir.c index 048279eb8ad..d06477db726 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_compiler_nir.c +++ b/src/gallium/drivers/etnaviv/etnaviv_compiler_nir.c @@ -1103,6 +1103,11 @@ etna_compile_shader(struct etna_shader_variant *v) false, v->key.sprite_coord_yinvert); } + /* + * Remove any dead in variables before we iterate over them + */ + NIR_PASS_V(s, nir_remove_dead_variables, nir_var_shader_in, NULL); + /* setup input linking */ struct etna_shader_io_file *sf = &v->infile; if (s->info.stage == MESA_SHADER_VERTEX) {