aboutsummaryrefslogtreecommitdiff
path: root/mesalib/src/glsl/opt_dead_code.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'mesalib/src/glsl/opt_dead_code.cpp')
-rw-r--r--mesalib/src/glsl/opt_dead_code.cpp14
1 files changed, 5 insertions, 9 deletions
diff --git a/mesalib/src/glsl/opt_dead_code.cpp b/mesalib/src/glsl/opt_dead_code.cpp
index 47247e20d..b65e5c2ce 100644
--- a/mesalib/src/glsl/opt_dead_code.cpp
+++ b/mesalib/src/glsl/opt_dead_code.cpp
@@ -77,10 +77,11 @@ do_dead_code(exec_list *instructions, bool uniform_locations_assigned)
if (entry->assign) {
/* Remove a single dead assignment to the variable we found.
- * Don't do so if it's a shader output, though.
+ * Don't do so if it's a shader or function output, though.
*/
- if (entry->var->mode != ir_var_out &&
- entry->var->mode != ir_var_inout) {
+ if (entry->var->mode != ir_var_function_out &&
+ entry->var->mode != ir_var_function_inout &&
+ entry->var->mode != ir_var_shader_out) {
entry->assign->remove();
progress = true;
@@ -97,15 +98,10 @@ do_dead_code(exec_list *instructions, bool uniform_locations_assigned)
/* uniform initializers are precious, and could get used by another
* stage. Also, once uniform locations have been assigned, the
* declaration cannot be deleted.
- *
- * Also, GL_ARB_uniform_buffer_object says that std140
- * uniforms will not be eliminated. Since we always do
- * std140, just don't eliminate uniforms in UBOs.
*/
if (entry->var->mode == ir_var_uniform &&
(uniform_locations_assigned ||
- entry->var->constant_value ||
- entry->var->uniform_block != -1))
+ entry->var->constant_value))
continue;
entry->var->remove();