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 <kenneth@whitecape.org>
Reviewed-by: Matt Turner <mattst88@gmail.com>
This commit is contained in:
Kenneth Graunke 2013-07-12 22:36:31 -07:00
parent 7cef2b22b8
commit eb30af51d6
2 changed files with 16 additions and 0 deletions

View File

@ -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.
*

View File

@ -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
{