diff options
author | Ian Romanick <[email protected]> | 2011-11-21 11:42:37 -0800 |
---|---|---|
committer | Ian Romanick <[email protected]> | 2011-11-22 11:50:19 -0800 |
commit | 151867b422d07b9e5845e95c2ebc30567809edc5 (patch) | |
tree | 135178a787d513f9d143db6225fe54610704cff9 /src | |
parent | 4ce635c871d00e442efb2b265562685d7edd44ae (diff) |
linker: Remove erroneous multiply by 4 in uniform usage calculation
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 <[email protected]>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=42930
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=42966
Acked-by: Marek Olšák <[email protected]>
Tested-by: Vinson Lee <[email protected]>
Tested-by: Pavel Ondračka <[email protected]>
Reviewed-and-tested-by: Kenneth Graunke <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/glsl/link_uniforms.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/glsl/link_uniforms.cpp b/src/glsl/link_uniforms.cpp index ca5da30401c..c7de480a573 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. @@ -321,7 +321,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; |