On Wed, 2015-10-07 at 09:21 +0200, Samuel Iglesias Gonsalvez wrote:
> From ARB_program_query_interface:
> 
>   For the property ARRAY_SIZE, a single integer identifying the
> number of
>   active array elements of an active variable is written to <params>.
> The
>   array size returned is in units of the type associated with the
> property
>   TYPE. For active variables not corresponding to an array of basic
> types,
>   the value one is written to <params>. If the variable is a shader
>   storage block member in an array with no declared size, the value
> zero
>   is written to <params>.
> 
> v2:
> - Unsized arrays of arrays have an array size different than zero
> 
> v3:
> - Arrays and unsized arrays will have an array_stride > 0. Use it
>   instead of is_unsized_array flag (Timothy).
> 
> Signed-off-by: Samuel Iglesias Gonsalvez <sigles...@igalia.com>

Reviewed-by: Timothy Arceri <t_arc...@yahoo.com.au>

> ---
>  src/mesa/main/shader_query.cpp | 9 ++++++++-
>  1 file changed, 8 insertions(+), 1 deletion(-)
> 
> diff --git a/src/mesa/main/shader_query.cpp
> b/src/mesa/main/shader_query.cpp
> index 3748b10..3bf4311 100644
> --- a/src/mesa/main/shader_query.cpp
> +++ b/src/mesa/main/shader_query.cpp
> @@ -1306,8 +1306,15 @@ _mesa_program_resource_prop(struct
> gl_shader_program *shProg,
>        switch (res->Type) {
>        case GL_UNIFORM:
>        case GL_BUFFER_VARIABLE:
> +         /* Test if a buffer variable is an array or an unsized
> array.
> +          * Unsized arrays return zero as array size.
> +          */
> +         if (RESOURCE_UNI(res)->is_shader_storage &&
> +             RESOURCE_UNI(res)->array_stride > 0)
> +            *val = RESOURCE_UNI(res)->array_elements;
> +         else
>              *val = MAX2(RESOURCE_UNI(res)->array_elements, 1);
> -            return 1;
> +         return 1;
>        case GL_PROGRAM_INPUT:
>        case GL_PROGRAM_OUTPUT:
>           *val = MAX2(_mesa_program_resource_array_size(res), 1);
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to