glsl: add subroutine index qualifier support
authorTimothy Arceri <timothy.arceri@collabora.com>
Sun, 8 Nov 2015 22:34:40 +0000 (09:34 +1100)
committerTimothy Arceri <t_arceri@yahoo.com.au>
Fri, 20 Nov 2015 20:30:12 +0000 (07:30 +1100)
commitf7af69c350977f03c6648bdb0b21851933cb98ad
treec25f69ed79f3463aa3f7fe78b570d1fa0ec8e86e
parent02d2ab23786a0f4ef635914801da97faf577197a
glsl: add subroutine index qualifier support

ARB_explicit_uniform_location allows the index for subroutine functions
to be explicitly set in the shader.

This patch reduces the restriction on the index qualifier in
validate_layout_qualifiers() to allow it to be applied to subroutines
and adds the new subroutine qualifier validation to ast_function::hir().

ast_fully_specified_type::has_qualifiers() is updated to allow the
index qualifier on subroutine functions when explicit uniform locations
is available.

A new check is added to ast_type_qualifier::merge_qualifier() to stop
multiple function qualifiers from being defied, before this patch this
would cause a segfault.

Finally a new variable is added to ir_function_signature to store the
index. This value is validated and the non explicit values assigned in
link_assign_subroutine_types().

Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
src/glsl/ast.h
src/glsl/ast_to_hir.cpp
src/glsl/ast_type.cpp
src/glsl/ir.cpp
src/glsl/ir.h
src/glsl/ir_clone.cpp
src/glsl/linker.cpp
src/mesa/main/mtypes.h
src/mesa/main/shader_query.cpp