mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-21 13:40:16 +01:00
glsl/linker: Include the interface name for input and output blocks
On my oes_shader_io_blocks branch, this fixes 71 dEQP-GLES31.functional.program_interface_query.* tests. Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Cc: mesa-stable@lists.freedesktop.org
This commit is contained in:
parent
7c11589eb4
commit
11096ecc39
1 changed files with 16 additions and 1 deletions
|
|
@ -3654,6 +3654,21 @@ add_shader_variable(struct gl_shader_program *shProg, unsigned stage_mask,
|
||||||
}
|
}
|
||||||
|
|
||||||
default: {
|
default: {
|
||||||
|
/* Issue #16 of the ARB_program_interface_query spec says:
|
||||||
|
*
|
||||||
|
* "* If a variable is a member of an interface block without an
|
||||||
|
* instance name, it is enumerated using just the variable name.
|
||||||
|
*
|
||||||
|
* * If a variable is a member of an interface block with an instance
|
||||||
|
* name, it is enumerated as "BlockName.Member", where "BlockName" is
|
||||||
|
* the name of the interface block (not the instance name) and
|
||||||
|
* "Member" is the name of the variable."
|
||||||
|
*/
|
||||||
|
const char *prefixed_name = var->data.from_named_ifc_block
|
||||||
|
? ralloc_asprintf(shProg, "%s.%s", var->get_interface_type()->name,
|
||||||
|
name)
|
||||||
|
: name;
|
||||||
|
|
||||||
/* The ARB_program_interface_query spec says:
|
/* The ARB_program_interface_query spec says:
|
||||||
*
|
*
|
||||||
* "For an active variable declared as a single instance of a basic
|
* "For an active variable declared as a single instance of a basic
|
||||||
|
|
@ -3661,7 +3676,7 @@ add_shader_variable(struct gl_shader_program *shProg, unsigned stage_mask,
|
||||||
* from the shader source."
|
* from the shader source."
|
||||||
*/
|
*/
|
||||||
gl_shader_variable *sha_v =
|
gl_shader_variable *sha_v =
|
||||||
create_shader_variable(shProg, var, name, type,
|
create_shader_variable(shProg, var, prefixed_name, type,
|
||||||
use_implicit_location, location);
|
use_implicit_location, location);
|
||||||
if (!sha_v)
|
if (!sha_v)
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue