[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