summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTimothy Arceri <[email protected]>2019-02-06 20:37:14 +1100
committerTimothy Arceri <[email protected]>2019-02-08 02:54:56 +0000
commitd0af13cfb4165366f1568ce407ee180ea2b554cd (patch)
tree9a043b19fbabab36998a47d20ab7edd32a163adb
parentd0abbaa528a0b23999079951c88effb3f2c0d27a (diff)
st/glsl_to_nir: call nir_remove_dead_variables() after lowing local indirects
Reviewed-by: Jason Ekstrand <[email protected]>
-rw-r--r--src/mesa/state_tracker/st_glsl_to_nir.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/mesa/state_tracker/st_glsl_to_nir.cpp b/src/mesa/state_tracker/st_glsl_to_nir.cpp
index 5fc87354624..686c243e508 100644
--- a/src/mesa/state_tracker/st_glsl_to_nir.cpp
+++ b/src/mesa/state_tracker/st_glsl_to_nir.cpp
@@ -626,6 +626,13 @@ st_nir_link_shaders(nir_shader **producer, nir_shader **consumer, bool scalar)
st_nir_opts(*producer, scalar);
st_nir_opts(*consumer, scalar);
+
+ /* Lowering indirects can cause varying to become unused.
+ * nir_compact_varyings() depends on all dead varyings being removed so
+ * we need to call nir_remove_dead_variables() again here.
+ */
+ NIR_PASS_V(*producer, nir_remove_dead_variables, nir_var_shader_out);
+ NIR_PASS_V(*consumer, nir_remove_dead_variables, nir_var_shader_in);
}
}