mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 20:28:04 +02:00
mesa/program_resource: return -1 for index if no location.
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
[airlied: use _mesa_program_resource_location_index as
suggested by Eduardo]
Reviewed-by: Eduardo Lima Mitev <elima@igalia.com>
Cc: "12.0" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
(cherry picked from commit 07403014c3)
This commit is contained in:
parent
9bf30be693
commit
b9920d2bba
1 changed files with 16 additions and 3 deletions
|
|
@ -881,6 +881,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;
|
||||
}
|
||||
|
||||
|
|
@ -1233,12 +1240,18 @@ _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(res, 0);
|
||||
if (tmp == -1)
|
||||
*val = -1;
|
||||
else
|
||||
*val = _mesa_program_resource_location_index(shProg, res->Type,
|
||||
RESOURCE_VAR(res)->name);
|
||||
return 1;
|
||||
|
||||
}
|
||||
case GL_NUM_COMPATIBLE_SUBROUTINES:
|
||||
if (res->Type != GL_VERTEX_SUBROUTINE_UNIFORM &&
|
||||
res->Type != GL_FRAGMENT_SUBROUTINE_UNIFORM &&
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue