[Mesa-dev] [PATCH 30/32] glsl: Allow elimination of uniform block members

Ian Romanick idr at freedesktop.org
Tue Jan 22 00:52:21 PST 2013

From: Ian Romanick <ian.d.romanick at intel.com>

glGetActiveUniform is not supposed to report block members that are not
active even if they are included in the layout of the block.  The block
layout is determined from the GLSL_TYPE_INTERFACE that defines the
block, so eliminating the ir_variables that correspond to the individual
fields is safe.

Fixes gles3conform test

This also fixes the assertion failures (added in the previous commit) in
gles3conform uniform_buffer_object_index_of_not_active_block,
uniform_buffer_object_inherit_and_override_layouts, and

Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
 src/glsl/opt_dead_code.cpp | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

diff --git a/src/glsl/opt_dead_code.cpp b/src/glsl/opt_dead_code.cpp
index ac0ffc3..2dd15e9 100644
--- a/src/glsl/opt_dead_code.cpp
+++ b/src/glsl/opt_dead_code.cpp
@@ -97,15 +97,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->is_in_uniform_block()))
+	      entry->var->constant_value))

More information about the mesa-dev mailing list