[Mesa-dev] [PATCH 01/14] glsl: Add a new ast_type_qualifier::has_layout() method.

Kenneth Graunke kenneth at whitecape.org
Mon Jul 15 19:32:03 PDT 2013


This makes it easy to check if any layout qualifiers are set.

Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
---
 src/glsl/ast.h        |  5 +++++
 src/glsl/ast_type.cpp | 18 ++++++++++++++++++
 2 files changed, 23 insertions(+)

diff --git a/src/glsl/ast.h b/src/glsl/ast.h
index c0350e7..441b389 100644
--- a/src/glsl/ast.h
+++ b/src/glsl/ast.h
@@ -458,6 +458,11 @@ struct ast_type_qualifier {
    bool has_interpolation() const;
 
    /**
+    * Return whether a layout qualifier is present.
+    */
+   bool has_layout() const;
+
+   /**
     * \brief Return string representation of interpolation qualifier.
     *
     * If an interpolation qualifier is present, then return that qualifier's
diff --git a/src/glsl/ast_type.cpp b/src/glsl/ast_type.cpp
index be84550..4e870a7 100644
--- a/src/glsl/ast_type.cpp
+++ b/src/glsl/ast_type.cpp
@@ -56,6 +56,24 @@ bool ast_type_qualifier::has_interpolation() const
           || this->flags.q.noperspective;
 }
 
+bool
+ast_type_qualifier::has_layout() const
+{
+   return this->flags.q.origin_upper_left
+          || this->flags.q.pixel_center_integer
+          || this->flags.q.depth_any
+          || this->flags.q.depth_greater
+          || this->flags.q.depth_less
+          || this->flags.q.depth_unchanged
+          || this->flags.q.std140
+          || this->flags.q.shared
+          || this->flags.q.column_major
+          || this->flags.q.row_major
+          || this->flags.q.packed
+          || this->flags.q.explicit_location
+          || this->flags.q.explicit_index;
+}
+
 const char*
 ast_type_qualifier::interpolation_string() const
 {
-- 
1.8.3.2



More information about the mesa-dev mailing list