[Mesa-dev] [PATCH] [rfc] mesa/program_resource: return -1 for index if no location.
Dave Airlie
airlied at gmail.com
Thu Jun 2 22:21:11 UTC 2016
ping?
On 24 May 2016 at 06:43, Dave Airlie <airlied at gmail.com> wrote:
> From: Dave Airlie <airlied at redhat.com>
>
> The GL4.5 spec quote seems clear on this:
> "The value -1 will be returned by either command if an error occurs,
> if name does not identify an active variable on programInterface,
> or if name identifies an active variable that does not have a valid
> location assigned, as described above."
>
> This fixes:
> GL45-CTS.program_interface_query.output-built-in
>
> Signed-off-by: Dave Airlie <airlied at redhat.com>
> ---
> src/mesa/main/shader_query.cpp | 20 +++++++++++++++++---
> 1 file changed, 17 insertions(+), 3 deletions(-)
>
> diff --git a/src/mesa/main/shader_query.cpp b/src/mesa/main/shader_query.cpp
> index c8c3df4..467e9b7 100644
> --- a/src/mesa/main/shader_query.cpp
> +++ b/src/mesa/main/shader_query.cpp
> @@ -884,6 +884,13 @@ _mesa_program_resource_location_index(struct gl_shader_program *shProg,
> if (!res || !(res->StageReferences & (1 << MESA_SHADER_FRAGMENT)))
> return -1;
>
> + /* From OpenGL 4.5 spec, 7.3 Program Objects
> + * "The value -1 will be returned by either command...
> + * ... or if name identifies an active variable that does not have a
> + * valid location assigned.
> + */
> + if (RESOURCE_VAR(res)->location == -1)
> + return -1;
> return RESOURCE_VAR(res)->index;
> }
>
> @@ -1238,12 +1245,19 @@ _mesa_program_resource_prop(struct gl_shader_program *shProg,
> default:
> goto invalid_operation;
> }
> - case GL_LOCATION_INDEX:
> + case GL_LOCATION_INDEX: {
> + int tmp;
> if (res->Type != GL_PROGRAM_OUTPUT)
> goto invalid_operation;
> - *val = RESOURCE_VAR(res)->index;
> + tmp = program_resource_location(shProg, res,
> + _mesa_program_resource_name(res),
> + 0);
> + if (tmp == -1)
> + *val = -1;
> + else
> + *val = RESOURCE_VAR(res)->index;
> return 1;
> -
> + }
> case GL_NUM_COMPATIBLE_SUBROUTINES:
> if (res->Type != GL_VERTEX_SUBROUTINE_UNIFORM &&
> res->Type != GL_FRAGMENT_SUBROUTINE_UNIFORM &&
> --
> 2.5.5
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list