aboutsummaryrefslogtreecommitdiff
path: root/mesalib/src/glsl/opt_dead_code.cpp
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2013-01-28 07:58:44 +0100
committermarha <marha@users.sourceforge.net>2013-01-28 07:58:44 +0100
commit39b49babc915183f4d712053b46f0e010427c191 (patch)
treeb512cf3f17a0defe9e2cd6ababdc9f5337f93d0e /mesalib/src/glsl/opt_dead_code.cpp
parent3e3af07f7697e9d23dd62fcf8f3a055602ae3341 (diff)
parent69c8cec54b01ed522bf10baf20da70304bac701a (diff)
downloadvcxsrv-39b49babc915183f4d712053b46f0e010427c191.tar.gz
vcxsrv-39b49babc915183f4d712053b46f0e010427c191.tar.bz2
vcxsrv-39b49babc915183f4d712053b46f0e010427c191.zip
Merge remote-tracking branch 'origin/released'
* origin/released: mesa mkfontscale pixman git update 28 jan 2013
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();