summaryrefslogtreecommitdiffstats
path: root/src/glsl/ast.h
diff options
context:
space:
mode:
authorFrancisco Jerez <[email protected]>2013-10-20 12:38:07 -0700
committerIan Romanick <[email protected]>2013-11-07 15:56:57 -0800
commite63bb298531918c3a17e77a9ad96670e724c9c37 (patch)
tree9181aa991c227472ebb5d4a225e2c6dd7c811369 /src/glsl/ast.h
parent30f61c471de5a9637e5d830e2b5b9dc4145f94d2 (diff)
glsl: Implement parser support for atomic counters.
v2: Mark atomic counters as read-only variables. Move offset overlap code to the linker. Use the contains_atomic() convenience method. v3: Use pointer to integer instead of non-const reference. Add comment so we remember to add a spec quotation from the next GLSL release once the issue of atomic counter aggregation within structures is clarified. v4 (idr): Don't use std::map because it's overkill. Add an assertion that ctx->Const.MaxAtomicBufferBindings <= MAX_COMBINED_ATOMIC_BUFFERS. Signed-off-by: Francisco Jerez <[email protected]> Signed-off-by: Ian Romanick <[email protected]> Reviewed-by: Paul Berry <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
Diffstat (limited to 'src/glsl/ast.h')
-rw-r--r--src/glsl/ast.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/glsl/ast.h b/src/glsl/ast.h
index 97905c6a6d1..5c214b6043b 100644
--- a/src/glsl/ast.h
+++ b/src/glsl/ast.h
@@ -385,6 +385,12 @@ struct ast_type_qualifier {
*/
unsigned explicit_binding:1;
+ /**
+ * Flag set if GL_ARB_shader_atomic counter "offset" layout
+ * qualifier is used.
+ */
+ unsigned explicit_offset:1;
+
/** \name Layout qualifiers for GL_AMD_conservative_depth */
/** \{ */
unsigned depth_any:1;
@@ -448,6 +454,15 @@ struct ast_type_qualifier {
int binding;
/**
+ * Offset specified via GL_ARB_shader_atomic_counter's "offset"
+ * keyword.
+ *
+ * \note
+ * This field is only valid if \c explicit_offset is set.
+ */
+ int offset;
+
+ /**
* Return true if and only if an interpolation qualifier is present.
*/
bool has_interpolation() const;