[Mesa-dev] [PATCH] glsl: Validate aux storage qualifier combination with other qualifiers.
Chris Forbes
chrisf at ijw.co.nz
Fri Apr 11 17:35:42 PDT 2014
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 <chrisf at 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
More information about the mesa-dev
mailing list