[Mesa-dev] [PATCH] linker: Remove erroneous multiply by 4 in uniform usage calculation

Marek Olšák maraeo at gmail.com
Mon Nov 21 16:06:12 PST 2011


Thanks for looking into this, Ian.

Acked-by: Marek Olšák <maraeo at gmail.com>

On Mon, Nov 21, 2011 at 8:51 PM, Ian Romanick <idr at freedesktop.org> wrote:
> From: Ian Romanick <ian.d.romanick at 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.romanick at 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 <vlee at vmware.com>
> Cc: Marek Olšák <maraeo at 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
>
>


More information about the mesa-dev mailing list