Reviewed-by: Jordan Justen <jordan.l.jus...@intel.com>
On 2015-08-05 01:30:23, Iago Toral Quiroga wrote: > From: Samuel Iglesias Gonsalvez <sigles...@igalia.com> > > Signed-off-by: Samuel Iglesias Gonsalvez <sigles...@igalia.com> > --- > src/glsl/link_uniforms.cpp | 15 ++++++++++----- > 1 file changed, 10 insertions(+), 5 deletions(-) > > diff --git a/src/glsl/link_uniforms.cpp b/src/glsl/link_uniforms.cpp > index 4dcb2fb..a2d655f 100644 > --- a/src/glsl/link_uniforms.cpp > +++ b/src/glsl/link_uniforms.cpp > @@ -292,7 +292,7 @@ public: > : num_active_uniforms(0), num_values(0), num_shader_samplers(0), > num_shader_images(0), num_shader_uniform_components(0), > num_shader_subroutines(0), > - is_ubo_var(false), map(map) > + is_ubo_var(false), is_shader_storage(false), map(map) > { > /* empty */ > } > @@ -308,6 +308,7 @@ public: > void process(ir_variable *var) > { > this->is_ubo_var = var->is_in_buffer_block(); > + this->is_shader_storage = var->is_in_shader_storage_block(); > if (var->is_interface_instance()) > program_resource_visitor::process(var->get_interface_type(), > var->get_interface_type()->name); > @@ -346,6 +347,7 @@ public: > unsigned num_shader_subroutines; > > bool is_ubo_var; > + bool is_shader_storage; > > private: > virtual void visit_field(const glsl_type *type, const char *name, > @@ -374,13 +376,14 @@ private: > * components in the default block. The spec allows image > * uniforms to use up no more than one scalar slot. > */ > - this->num_shader_uniform_components += values; > + if(!is_shader_storage) > + this->num_shader_uniform_components += values; > } else { > /* Accumulate the total number of uniform slots used by this shader. > * Note that samplers do not count against this limit because they > * don't use any storage on current hardware. > */ > - if (!is_ubo_var) > + if (!is_ubo_var && !is_shader_storage) > this->num_shader_uniform_components += values; > } > > @@ -994,8 +997,10 @@ link_assign_uniform_locations(struct gl_shader_program > *prog, > sh->num_combined_uniform_components = sh->num_uniform_components; > > for (unsigned i = 0; i < sh->NumUniformBlocks; i++) { > - sh->num_combined_uniform_components += > - sh->UniformBlocks[i].UniformBufferSize / 4; > + if (!sh->UniformBlocks[i].IsShaderStorage) { > + sh->num_combined_uniform_components += > + sh->UniformBlocks[i].UniformBufferSize / 4; > + } > } > } > > -- > 1.9.1 > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev