[Mesa-dev] [PATCH] glsl: mark special built-in inputs referenced by vertex stage
Martin Peres
martin.peres at linux.intel.com
Mon May 4 03:47:29 PDT 2015
On 30/04/15 09:27, Tapani Pälli wrote:
> Refactoring done on active attribute queries did not take in to
> account special built-in inputs for the vertex stage. This commit
> sets them referenced by vertex stage so that they get enumerated
> properly.
>
> Fixes Piglit test 'get-active-attrib-returns-all-inputs' failure.
>
> Signed-off-by: Tapani Pälli <tapani.palli at intel.com>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=90243
> ---
> src/glsl/linker.cpp | 7 ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp
> index 21fde94..6064f2f 100644
> --- a/src/glsl/linker.cpp
> +++ b/src/glsl/linker.cpp
> @@ -2556,6 +2556,7 @@ add_interface_variables(struct gl_shader_program *shProg,
> {
> foreach_in_list(ir_instruction, node, sh->ir) {
> ir_variable *var = node->as_variable();
> + uint8_t mask = 0;
>
> if (!var)
> continue;
> @@ -2571,6 +2572,10 @@ add_interface_variables(struct gl_shader_program *shProg,
> var->data.location != SYSTEM_VALUE_VERTEX_ID_ZERO_BASE &&
> var->data.location != SYSTEM_VALUE_INSTANCE_ID)
> continue;
> + /* Mark special built-in inputs referenced by the vertex stage so
> + * that they are considered active by the shader queries.
> + */
> + mask = (1 << (MESA_SHADER_VERTEX));
I cringed when I saw that you explicitly set it only for the vertex
shader, but this is indeed not a problem because only VertexID and
InstanceID can go through here.
Then I wondered why you ignored all the other builtins. The spec is
however quite specific about which builtins should be listed. No idea why.
Anyway, you get my R-b!
Reviewed-By: Martin Peres <martin.peres at linux.intel.com>
> /* FALLTHROUGH */
> case ir_var_shader_in:
> if (programInterface != GL_PROGRAM_INPUT)
> @@ -2585,7 +2590,7 @@ add_interface_variables(struct gl_shader_program *shProg,
> };
>
> if (!add_program_resource(shProg, programInterface, var,
> - build_stageref(shProg, var->name)))
> + build_stageref(shProg, var->name) | mask))
> return false;
> }
> return true;
More information about the mesa-dev
mailing list