[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