From eb30af51d68e3cc137dd640e57c81bdda1aae527 Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Fri, 12 Jul 2013 22:36:31 -0700 Subject: [PATCH] glsl: Add a new ast_type_qualifier::has_storage() method. This makes it easy to check if any storage qualifiers are set. "centroid" is not considered a storage qualifier. In the old language rules, you can't specify "centroid" by itself; it's always "centroid in", "centroid out", or "centroid varying." So one of the other storage qualifiers will always be set; there's no need to specifically check for centroid. In the new 4.20 rules, centroid is an auxiliary storage qualifier, not a storage qualifier. Signed-off-by: Kenneth Graunke Reviewed-by: Matt Turner --- src/glsl/ast.h | 5 +++++ src/glsl/ast_type.cpp | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/glsl/ast.h b/src/glsl/ast.h index 441b389a74a..78d24ae069d 100644 --- a/src/glsl/ast.h +++ b/src/glsl/ast.h @@ -462,6 +462,11 @@ struct ast_type_qualifier { */ bool has_layout() const; + /** + * Return whether a storage qualifier is present. + */ + bool has_storage() const; + /** * \brief Return string representation of interpolation qualifier. * diff --git a/src/glsl/ast_type.cpp b/src/glsl/ast_type.cpp index 4e870a70742..2e55b76762b 100644 --- a/src/glsl/ast_type.cpp +++ b/src/glsl/ast_type.cpp @@ -74,6 +74,17 @@ ast_type_qualifier::has_layout() const || this->flags.q.explicit_index; } +bool +ast_type_qualifier::has_storage() const +{ + return this->flags.q.constant + || this->flags.q.attribute + || this->flags.q.varying + || this->flags.q.in + || this->flags.q.out + || this->flags.q.uniform; +} + const char* ast_type_qualifier::interpolation_string() const { -- 2.30.2