diff options
author | Paul Berry <[email protected]> | 2014-01-06 09:09:31 -0800 |
---|---|---|
committer | Paul Berry <[email protected]> | 2014-02-05 09:03:44 -0800 |
commit | 0fa74e848fd11c71bb70ea0a69650944e4f07571 (patch) | |
tree | e9b9cd5e6888095286ce703847548cdf98528f02 /src/glsl/ast.h | |
parent | 0398b69954eb8e73e9ae663ce200170ff70d216d (diff) |
glsl/cs: Handle compute shader local_size_{x,y,z} declaration.
Reviewed-by: Jordan Justen <[email protected]>
Diffstat (limited to 'src/glsl/ast.h')
-rw-r--r-- | src/glsl/ast.h | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/glsl/ast.h b/src/glsl/ast.h index 2d6f3a293a0..61fd923bcf9 100644 --- a/src/glsl/ast.h +++ b/src/glsl/ast.h @@ -460,6 +460,12 @@ struct ast_type_qualifier { unsigned prim_type:1; unsigned max_vertices:1; /** \} */ + + /** + * local_size_{x,y,z} flags for compute shaders. Bit 0 represents + * local_size_x, and so on. + */ + unsigned local_size:3; } /** \brief Set of flags, accessed by name. */ q; @@ -510,6 +516,13 @@ struct ast_type_qualifier { int offset; /** + * Local size specified via GL_ARB_compute_shader's "local_size_{x,y,z}" + * layout qualifier. Element i of this array is only valid if + * flags.q.local_size & (1 << i) is set. + */ + int local_size[3]; + + /** * Return true if and only if an interpolation qualifier is present. */ bool has_interpolation() const; @@ -989,6 +1002,27 @@ private: const GLenum prim_type; }; + +/** + * AST node representing a decalaration of the input layout for compute + * shaders. + */ +class ast_cs_input_layout : public ast_node +{ +public: + ast_cs_input_layout(const struct YYLTYPE &locp, const unsigned *local_size) + { + memcpy(this->local_size, local_size, sizeof(this->local_size)); + set_location(locp); + } + + virtual ir_rvalue *hir(exec_list *instructions, + struct _mesa_glsl_parse_state *state); + +private: + unsigned local_size[3]; +}; + /*@}*/ extern void |