On Wed, 2015-09-23 at 13:23 +1000, Timothy Arceri wrote: > Previously the code was trying to get the packing type from the array > not the > interface. > > Cc: Ian Romanick <ian.d.roman...@intel.com> > Cc: Antia Puentes <apuen...@igalia.com>
I meant to add that there is a piglit test here [1] and that this fixes the second bug mentioned in the bug report [2]. [1] http://lists.freedesktop.org/archives/piglit/2015-September/017247.html [2] https://bugs.freedesktop.org/show_bug.cgi?id=83508 > --- > src/glsl/link_uniform_block_active_visitor.cpp | 6 ++---- > src/glsl/opt_dead_code.cpp | 7 ++----- > 2 files changed, 4 insertions(+), 9 deletions(-) > > diff --git a/src/glsl/link_uniform_block_active_visitor.cpp > b/src/glsl/link_uniform_block_active_visitor.cpp > index 5102947..72e0782 100644 > --- a/src/glsl/link_uniform_block_active_visitor.cpp > +++ b/src/glsl/link_uniform_block_active_visitor.cpp > @@ -77,9 +77,6 @@ > link_uniform_block_active_visitor::visit(ir_variable *var) > if (!var->is_in_buffer_block()) > return visit_continue; > > - const glsl_type *const block_type = var->is_interface_instance() > - ? var->type : var->get_interface_type(); > - > /* Section 2.11.6 (Uniform Variables) of the OpenGL ES 3.0.3 spec > says: > * > * "All members of a named uniform block declared with a > shared or > @@ -88,7 +85,8 @@ > link_uniform_block_active_visitor::visit(ir_variable *var) > * also considered active, even if no member of the block is > * referenced." > */ > - if (block_type->interface_packing == > GLSL_INTERFACE_PACKING_PACKED) > + if (var->get_interface_type()->interface_packing == > + GLSL_INTERFACE_PACKING_PACKED) > return visit_continue; > > /* Process the block. Bail if there was an error. > diff --git a/src/glsl/opt_dead_code.cpp b/src/glsl/opt_dead_code.cpp > index e4bf874..2cb7f41 100644 > --- a/src/glsl/opt_dead_code.cpp > +++ b/src/glsl/opt_dead_code.cpp > @@ -119,11 +119,8 @@ do_dead_code(exec_list *instructions, bool > uniform_locations_assigned) > * layouts, do not eliminate it. > */ > if (entry->var->is_in_buffer_block()) { > - const glsl_type *const block_type = > - entry->var->is_interface_instance() > - ? entry->var->type : entry->var > ->get_interface_type(); > - > - if (block_type->interface_packing != > GLSL_INTERFACE_PACKING_PACKED) > + if (entry->var->get_interface_type() > ->interface_packing != > + GLSL_INTERFACE_PACKING_PACKED) > continue; > } > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev