Thanks for looking into this, Ian. Acked-by: Marek Olšák <mar...@gmail.com>
On Mon, Nov 21, 2011 at 8:51 PM, Ian Romanick <i...@freedesktop.org> wrote: > From: Ian Romanick <ian.d.roman...@intel.com> > > The old count_uniform_size::num_shader_uniforms was actually > calculating the number of components used. Multiplying by 4 when > setting gl_shader::num_uniform_components caused us to count 4x as > many uniform components as were actually used. > > Signed-off-by: Ian Romanick <ian.d.roman...@intel.com> > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=42930 > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=42966 > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=43125 > Cc: Vinson Lee <v...@vmware.com> > Cc: Marek Olšák <mar...@gmail.com> > --- > src/glsl/link_uniforms.cpp | 11 ++++++----- > 1 files changed, 6 insertions(+), 5 deletions(-) > > diff --git a/src/glsl/link_uniforms.cpp b/src/glsl/link_uniforms.cpp > index ca5da30..e87b48e 100644 > --- a/src/glsl/link_uniforms.cpp > +++ b/src/glsl/link_uniforms.cpp > @@ -114,7 +114,7 @@ class count_uniform_size : public uniform_field_visitor { > public: > count_uniform_size(struct string_to_uint_map *map) > : num_active_uniforms(0), num_values(0), num_shader_samplers(0), > - num_shader_uniforms(0), map(map) > + num_shader_uniform_components(0), map(map) > { > /* empty */ > } > @@ -122,7 +122,7 @@ public: > void start_shader() > { > this->num_shader_samplers = 0; > - this->num_shader_uniforms = 0; > + this->num_shader_uniform_components = 0; > } > > /** > @@ -143,7 +143,7 @@ public: > /** > * Number of uniforms used in the current shader > */ > - unsigned num_shader_uniforms; > + unsigned num_shader_uniform_components; > > private: > virtual void visit_field(const glsl_type *type, const char *name) > @@ -165,7 +165,7 @@ private: > * Note that samplers do not count against this limit because they > * don't use any storage on current hardware. > */ > - this->num_shader_uniforms += values; > + this->num_shader_uniform_components += values; > } > > /* If the uniform is already in the map, there's nothing more to do. > @@ -182,6 +182,7 @@ private: > */ > this->num_active_uniforms++; > this->num_values += values; > + printf("%s: %d\n", name, values); > } > > struct string_to_uint_map *map; > @@ -321,7 +322,7 @@ link_assign_uniform_locations(struct gl_shader_program > *prog) > > prog->_LinkedShaders[i]->num_samplers = > uniform_size.num_shader_samplers; > prog->_LinkedShaders[i]->num_uniform_components = > - uniform_size.num_shader_uniforms * 4; > + uniform_size.num_shader_uniform_components; > } > > const unsigned num_user_uniforms = uniform_size.num_active_uniforms; > -- > 1.7.6.4 > > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev