[Mesa-dev] [PATCH 2/3] glsl: simplify set_opaque_binding()

Timothy Arceri tarceri at itsqueeze.com
Thu May 11 11:06:52 UTC 2017


Yeah this is from a time before we used a shared opaque array for things 
like active. Looks good :)

1-2 are:

Reviewed-by: Timothy Arceri <tarceri at itsqueeze.com>

The next patch does what you say, but it feels odd reviewing it without 
any patches that use it. I think you should just bundle that with the 
upcoming series.

On 11/05/17 20:31, Samuel Pitoiset wrote:
> While we are at it, update the GLSL spec comment.
> 
> Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
> ---
>   src/compiler/glsl/link_uniform_initializers.cpp | 41 ++++++++++++-------------
>   1 file changed, 20 insertions(+), 21 deletions(-)
> 
> diff --git a/src/compiler/glsl/link_uniform_initializers.cpp b/src/compiler/glsl/link_uniform_initializers.cpp
> index 79a6c75aaa..a7af75586e 100644
> --- a/src/compiler/glsl/link_uniform_initializers.cpp
> +++ b/src/compiler/glsl/link_uniform_initializers.cpp
> @@ -117,7 +117,7 @@ set_opaque_binding(void *mem_ctx, gl_shader_program *prog,
>   
>         const unsigned elements = MAX2(storage->array_elements, 1);
>   
> -      /* Section 4.4.4 (Opaque-Uniform Layout Qualifiers) of the GLSL 4.20 spec
> +      /* Section 4.4.6 (Opaque-Uniform Layout Qualifiers) of the GLSL 4.50 spec
>          * says:
>          *
>          *     "If the binding identifier is used with an array, the first element
> @@ -129,27 +129,26 @@ set_opaque_binding(void *mem_ctx, gl_shader_program *prog,
>         }
>   
>         for (int sh = 0; sh < MESA_SHADER_STAGES; sh++) {
> -        gl_linked_shader *shader = prog->_LinkedShaders[sh];
> -
> -         if (shader) {
> -            if (storage->type->is_sampler() && storage->opaque[sh].active) {
> -               for (unsigned i = 0; i < elements; i++) {
> -                  const unsigned index = storage->opaque[sh].index + i;
> -                  if (index >= ARRAY_SIZE(shader->Program->SamplerUnits))
> -                     break;
> -                  shader->Program->SamplerUnits[index] =
> -                     storage->storage[i].i;
> -               }
> +         gl_linked_shader *shader = prog->_LinkedShaders[sh];
>   
> -            } else if (storage->type->is_image() &&
> -                    storage->opaque[sh].active) {
> -               for (unsigned i = 0; i < elements; i++) {
> -                  const unsigned index = storage->opaque[sh].index + i;
> -                  if (index >= ARRAY_SIZE(shader->Program->sh.ImageUnits))
> -                     break;
> -                  shader->Program->sh.ImageUnits[index] =
> -                     storage->storage[i].i;
> -               }
> +         if (!shader)
> +            continue;
> +         if (!storage->opaque[sh].active)
> +            continue;
> +
> +         if (storage->type->is_sampler()) {
> +            for (unsigned i = 0; i < elements; i++) {
> +               const unsigned index = storage->opaque[sh].index + i;
> +               if (index >= ARRAY_SIZE(shader->Program->SamplerUnits))
> +                  break;
> +               shader->Program->SamplerUnits[index] = storage->storage[i].i;
> +            }
> +         } else if (storage->type->is_image()) {
> +            for (unsigned i = 0; i < elements; i++) {
> +               const unsigned index = storage->opaque[sh].index + i;
> +               if (index >= ARRAY_SIZE(shader->Program->sh.ImageUnits))
> +                  break;
> +               shader->Program->sh.ImageUnits[index] = storage->storage[i].i;
>               }
>            }
>         }
> 


More information about the mesa-dev mailing list