[Mesa-dev] [PATCH v3 3/6] main: consider that unsized arrays have at least one active element

Timothy Arceri t_arceri at yahoo.com.au
Wed Oct 7 15:30:19 PDT 2015


On Wed, 2015-10-07 at 09:21 +0200, Samuel Iglesias Gonsalvez wrote:
> From ARB_shader_storage_buffer_object:
> 
> "When using the ARB_program_interface_query extension to enumerate
> the
>  set of active buffer variables, only the first element of arrays
> (sized
>  or unsized) will be enumerated"
> 
> _mesa_program_resource_array_size() is used when getting the name
> (and
> name length) of the active variables. When it is an unsized array,
> we want to indicate it has one active element so the returned name
> would have "[0]" at the end.
> 
> v2:
> - Use array_stride > 0 and array_elements == 0 to detect unsized
>   arrays. Because of that, we don't need is_unsized_array flag
>   (Timothy)
> 
> Signed-off-by: Samuel Iglesias Gonsalvez <siglesias at igalia.com>

Reviewed-by: Timothy Arceri <t_arceri at yahoo.com.au>

> ---
>  src/mesa/main/shader_query.cpp | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/src/mesa/main/shader_query.cpp
> b/src/mesa/main/shader_query.cpp
> index 56f990b..3748b10 100644
> --- a/src/mesa/main/shader_query.cpp
> +++ b/src/mesa/main/shader_query.cpp
> @@ -485,8 +485,14 @@ _mesa_program_resource_array_size(struct
> gl_program_resource *res)
>     case GL_COMPUTE_SUBROUTINE_UNIFORM:
>     case GL_TESS_CONTROL_SUBROUTINE_UNIFORM:
>     case GL_TESS_EVALUATION_SUBROUTINE_UNIFORM:
> -   case GL_BUFFER_VARIABLE:
>        return RESOURCE_UNI(res)->array_elements;
> +   case GL_BUFFER_VARIABLE:
> +      /* Unsized arrays */
> +      if (RESOURCE_UNI(res)->array_stride > 0 &&
> +          RESOURCE_UNI(res)->array_elements == 0)
> +         return 1;
> +      else
> +         return RESOURCE_UNI(res)->array_elements;
>     case GL_VERTEX_SUBROUTINE:
>     case GL_GEOMETRY_SUBROUTINE:
>     case GL_FRAGMENT_SUBROUTINE:


More information about the mesa-dev mailing list