[Mesa-dev] [PATCH] glsl: stop allocating memory for UBOs during linking

Samuel Iglesias Gonsálvez siglesias at igalia.com
Tue Jul 5 07:33:22 UTC 2016


On 02/07/16 12:02, Timothy Arceri wrote:
> This just stops counting and assigning a storage location for
> these uniforms, the count is only used to create the uniform storage.
> 
> This uniform types don't use this storage.

s/This/These

Reviewed-by: Samuel Iglesias Gonsálvez <siglesias at igalia.com>

> ---
>  src/compiler/glsl/link_uniforms.cpp | 13 ++++++++-----
>  1 file changed, 8 insertions(+), 5 deletions(-)
> 
> diff --git a/src/compiler/glsl/link_uniforms.cpp b/src/compiler/glsl/link_uniforms.cpp
> index 68e033e..c23191a 100644
> --- a/src/compiler/glsl/link_uniforms.cpp
> +++ b/src/compiler/glsl/link_uniforms.cpp
> @@ -403,7 +403,7 @@ private:
>         */
>        this->num_active_uniforms++;
>  
> -      if(!is_gl_identifier(name) && !is_shader_storage)
> +      if(!is_gl_identifier(name) && !is_shader_storage && !is_buffer_block)
>           this->num_values += values;
>     }
>  
> @@ -767,9 +767,10 @@ private:
>        this->uniforms[id].is_shader_storage =
>           current_var->is_in_shader_storage_block();
>  
> -      /* Do not assign storage if the uniform is builtin */
> +      /* Do not assign storage if the uniform is a builtin or buffer object */
>        if (!this->uniforms[id].builtin &&
> -          !this->uniforms[id].is_shader_storage)
> +          !this->uniforms[id].is_shader_storage &&
> +          this->buffer_block_index == -1)
>           this->uniforms[id].storage = this->values;
>  
>        if (this->buffer_block_index != -1) {
> @@ -823,7 +824,8 @@ private:
>        }
>  
>        if (!this->uniforms[id].builtin &&
> -          !this->uniforms[id].is_shader_storage)
> +          !this->uniforms[id].is_shader_storage &&
> +          this->buffer_block_index == -1)
>           this->values += values_for_type(type);
>     }
>  
> @@ -1276,7 +1278,8 @@ link_assign_uniform_locations(struct gl_shader_program *prog,
>  #ifndef NDEBUG
>     for (unsigned i = 0; i < num_uniforms; i++) {
>        assert(uniforms[i].storage != NULL || uniforms[i].builtin ||
> -             uniforms[i].is_shader_storage);
> +             uniforms[i].is_shader_storage ||
> +             uniforms[i].block_index != -1);
>     }
>  
>     assert(parcel.values == data_end);
> 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160705/ba9d5bee/attachment.sig>


More information about the mesa-dev mailing list