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@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev