[Mesa-dev] [PATCH] glsl: stop allocating memory for SSBOs and builtins

Dave Airlie airlied at gmail.com
Wed Jun 8 01:44:33 UTC 2016


Reviewed-by: Dave Airlie <airlied at redhat.com>

On 8 June 2016 at 10:04, Timothy Arceri <timothy.arceri at collabora.com> wrote:
> Ping. This just stops counting and assigning a storage location for
> these uniforms, the count is only used to create the Uniform storage
> [1].
>
> These uniform types don't use this storage.
>
> [1] https://cgit.freedesktop.org/mesa/mesa/tree/src/compiler/glsl/link_
> uniforms.cpp#n1080
>
> On Thu, 2016-06-02 at 15:32 +1000, Timothy Arceri wrote:
>> ---
>>  src/compiler/glsl/link_uniforms.cpp | 20 +++++++++++++-------
>>  1 file changed, 13 insertions(+), 7 deletions(-)
>>
>> diff --git a/src/compiler/glsl/link_uniforms.cpp
>> b/src/compiler/glsl/link_uniforms.cpp
>> index a7f136c..571c49f 100644
>> --- a/src/compiler/glsl/link_uniforms.cpp
>> +++ b/src/compiler/glsl/link_uniforms.cpp
>> @@ -402,7 +402,9 @@ private:
>>         * uniforms.
>>         */
>>        this->num_active_uniforms++;
>> -      this->num_values += values;
>> +
>> +      if(!is_gl_identifier(name) && !is_shader_storage)
>> +         this->num_values += values;
>>     }
>>
>>     struct string_to_uint_map *hidden_map;
>> @@ -762,13 +764,14 @@ private:
>>           current_var->data.how_declared == ir_var_hidden;
>>        this->uniforms[id].builtin = is_gl_identifier(name);
>>
>> -      /* Do not assign storage if the uniform is builtin */
>> -      if (!this->uniforms[id].builtin)
>> -         this->uniforms[id].storage = this->values;
>> -
>>        this->uniforms[id].is_shader_storage =
>>           current_var->is_in_shader_storage_block();
>>
>> +      /* Do not assign storage if the uniform is builtin */
>> +      if (!this->uniforms[id].builtin &&
>> +          !this->uniforms[id].is_shader_storage)
>> +         this->uniforms[id].storage = this->values;
>> +
>>        if (this->buffer_block_index != -1) {
>>           this->uniforms[id].block_index = this->buffer_block_index;
>>
>> @@ -819,7 +822,9 @@ private:
>>           this->uniforms[id].row_major = false;
>>        }
>>
>> -      this->values += values_for_type(type);
>> +      if (!this->uniforms[id].builtin &&
>> +          !this->uniforms[id].is_shader_storage)
>> +         this->values += values_for_type(type);
>>     }
>>
>>     /**
>> @@ -1270,7 +1275,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);
>> +      assert(uniforms[i].storage != NULL || uniforms[i].builtin ||
>> +             uniforms[i].is_shader_storage);
>>     }
>>
>>     assert(parcel.values == data_end);
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list