From: Chris Forbes <[email protected]> This covers two of the three uses of 'subroutine':
- Subroutine type declarations - Subroutine uniform declarations Support for the `subroutine (type, ...)` form will be added in a later commit. Signed-off-by: Chris Forbes <[email protected]> --- src/glsl/ast.h | 3 +++ src/glsl/glsl_parser.yy | 15 +++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/src/glsl/ast.h b/src/glsl/ast.h index ef74e51..d2c5fec 100644 --- a/src/glsl/ast.h +++ b/src/glsl/ast.h @@ -514,6 +514,9 @@ struct ast_type_qualifier { unsigned stream:1; /**< Has stream value assigned */ unsigned explicit_stream:1; /**< stream value assigned explicitly by shader code */ /** \} */ + + /** \name Qualifiers for GL_ARB_shader_subroutine */ + unsigned subroutine:1; /**< Is this marked 'subroutine' */ } /** \brief Set of flags, accessed by name. */ q; diff --git a/src/glsl/glsl_parser.yy b/src/glsl/glsl_parser.yy index aceb3b9..743cf26 100644 --- a/src/glsl/glsl_parser.yy +++ b/src/glsl/glsl_parser.yy @@ -214,6 +214,7 @@ static bool match_layout_qualifier(const char *s1, const char *s2, %type <type_qualifier> layout_qualifier %type <type_qualifier> layout_qualifier_id_list layout_qualifier_id %type <type_qualifier> interface_block_layout_qualifier +%type <type_qualifier> subroutine_qualifier %type <type_qualifier> interface_qualifier %type <type_specifier> type_specifier %type <type_specifier> type_specifier_nonarray @@ -1547,6 +1548,14 @@ interface_block_layout_qualifier: } ; +subroutine_qualifier: + SUBROUTINE + { + memset(& $$, 0, sizeof($$)); + $$.flags.q.subroutine = 1; + } + ; + interpolation_qualifier: SMOOTH { @@ -1581,6 +1590,7 @@ type_qualifier: | storage_qualifier | interpolation_qualifier | layout_qualifier + | subroutine_qualifier | precision_qualifier { memset(&$$, 0, sizeof($$)); @@ -1671,6 +1681,11 @@ type_qualifier: $$ = $1; $$.merge_qualifier(&@1, state, $2); } + | subroutine_qualifier type_qualifier + { + $$ = $1; + $$.merge_qualifier(&@1, state, $2); + } | auxiliary_storage_qualifier type_qualifier { if ($2.has_auxiliary_storage()) { -- 2.1.0 _______________________________________________ mesa-dev mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-dev
