We've been allowing `centroid` and `sample` in all kinds of weird places where they're not valid.
Insist that `sample` is combined with `in` or `out`; and that `centroid` is combined with `in`, `out`, or the deprecated `varying`. Signed-off-by: Chris Forbes <chr...@ijw.co.nz> --- src/glsl/ast_to_hir.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp index 1d15e62..34ac1ef 100644 --- a/src/glsl/ast_to_hir.cpp +++ b/src/glsl/ast_to_hir.cpp @@ -1980,6 +1980,24 @@ ast_fully_specified_type::glsl_type(const char **name, type->name); } + /* Validate auxiliary storage qualifiers */ + if (this->qualifier.flags.q.sample && + !(this->qualifier.flags.q.in || + this->qualifier.flags.q.out)) { + YYLTYPE loc = this->get_location(); + _mesa_glsl_error(&loc, state, + "sample qualifier may only be used with `in' or `out'"); + } + if (this->qualifier.flags.q.centroid && + !(this->qualifier.flags.q.in || + this->qualifier.flags.q.out || + this->qualifier.flags.q.varying)) { + YYLTYPE loc = this->get_location(); + _mesa_glsl_error(&loc, state, + "centroid qualifier may only be used with `in', " + "`out' or `varying'"); + } + return type; } -- 1.9.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev