diff options
author | Samuel Pitoiset <[email protected]> | 2017-03-01 22:09:28 +0100 |
---|---|---|
committer | Samuel Pitoiset <[email protected]> | 2017-03-03 00:57:57 +0100 |
commit | 9fc86d4f53a66a147f38f54b09629372bd085658 (patch) | |
tree | 161bdce5cb4f2a0f7da987246db6f4a0638ffdfc /src/compiler/glsl/ast.h | |
parent | 10f2c86aa3c318172a3e5cc308a1b83e0dd27e93 (diff) |
glsl: fix subroutine mismatch between declarations/definitions
Previously, when q.subroutine was set to 1, a new subroutine
declaration was added to the AST, while 0 meant a subroutine
definition has been detected by the parser.
Thus, setting the q.subroutine flag in both situations is
obviously wrong because a new type identifier is added instead
of trying to match the declaration. To fix it up, introduce
ast_type_qualifier::is_subroutine_decl() to differentiate
declarations and definitions easily.
This fixes a regression with:
arb_shader_subroutine/compiler/direct-call.vert
Cc: Mark Janes <[email protected]>
Fixes: be8aa76afd ("glsl: remove unecessary flags.q.subroutine_def")
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=100026
Signed-off-by: Samuel Pitoiset <[email protected]>
Reviewed-by: Timothy Arceri <[email protected]>
Diffstat (limited to 'src/compiler/glsl/ast.h')
-rw-r--r-- | src/compiler/glsl/ast.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/compiler/glsl/ast.h b/src/compiler/glsl/ast.h index d27b9407440..55cc5df8f31 100644 --- a/src/compiler/glsl/ast.h +++ b/src/compiler/glsl/ast.h @@ -770,6 +770,11 @@ struct ast_type_qualifier { */ bool has_memory() const; + /** + * Return true if the qualifier is a subroutine declaration. + */ + bool is_subroutine_decl() const; + bool merge_qualifier(YYLTYPE *loc, _mesa_glsl_parse_state *state, const ast_type_qualifier &q, |