[Mesa-dev] [PATCH v2 18/24] mesa: refactor GetActiveUniform

Martin Peres martin.peres at linux.intel.com
Mon Apr 13 07:25:23 PDT 2015


On 01/04/15 15:14, Tapani Pälli wrote:
> Signed-off-by: Tapani Pälli <tapani.palli at intel.com>
> ---
>   src/mesa/main/uniform_query.cpp | 33 ++++++++++++++++-----------------
>   1 file changed, 16 insertions(+), 17 deletions(-)
>
> diff --git a/src/mesa/main/uniform_query.cpp b/src/mesa/main/uniform_query.cpp
> index 9611667..4e77b32 100644
> --- a/src/mesa/main/uniform_query.cpp
> +++ b/src/mesa/main/uniform_query.cpp
> @@ -46,6 +46,7 @@ _mesa_GetActiveUniform(GLuint program, GLuint index,
>   {
>      GET_CURRENT_CONTEXT(ctx);
>      struct gl_shader_program *shProg;
> +   struct gl_program_resource *res;
>   
>      if (maxLength < 0) {
>         _mesa_error(ctx, GL_INVALID_VALUE, "glGetActiveUniform(maxLength < 0)");
> @@ -56,27 +57,25 @@ _mesa_GetActiveUniform(GLuint program, GLuint index,
>      if (!shProg)
>         return;
>   
> -   if (index >= shProg->NumUserUniformStorage) {
> +   res = _mesa_program_resource_find_index((struct gl_shader_program *) shProg,
> +                                           GL_UNIFORM, index);
> +
> +   if (!res) {
>         _mesa_error(ctx, GL_INVALID_VALUE, "glGetActiveUniform(index)");
>         return;
>      }
>   
> -   const struct gl_uniform_storage *const uni = &shProg->UniformStorage[index];
> -
> -   if (nameOut) {
> -      _mesa_get_uniform_name(uni, maxLength, length, nameOut);
> -   }
> -
> -   if (size) {
> -      /* array_elements is zero for non-arrays, but the API requires that 1 be
> -       * returned.
> -       */
> -      *size = MAX2(1, uni->array_elements);
> -   }
> -
> -   if (type) {
> -      *type = uni->type->gl_type;
> -   }
> +   if (nameOut)
> +      _mesa_get_program_resource_name(shProg, GL_UNIFORM, index, maxLength,
> +                                      length, nameOut, "glGetActiveUniform");
> +   if (type)
> +      _mesa_program_resource_prop((struct gl_shader_program *) shProg,
> +                                  res, index, GL_TYPE, (GLint*) type,
> +                                  "glGetActiveUniform");
> +   if (size)
> +      _mesa_program_resource_prop((struct gl_shader_program *) shProg,
> +                                  res, index, GL_ARRAY_SIZE, (GLint*) size,
> +                                  "glGetActiveUniform");
>   }
>   
>   static GLenum
Reviewed-by: Martin Peres <martin.peres at linux.intel.com>


More information about the mesa-dev mailing list