diff options
author | Paul Berry <[email protected]> | 2013-07-24 14:57:24 -0700 |
---|---|---|
committer | Paul Berry <[email protected]> | 2013-08-01 20:24:32 -0700 |
commit | 20ae8e0c9168d900246d5940e07cf668dba8f0ce (patch) | |
tree | 009d51a6fa381d0ec3b2e26de7f57c7793d97aad /src/glsl/ast.h | |
parent | c1f1d8522c4650f55fac3a57466c9788f80f82f6 (diff) |
glsl: Allow geometry shader input instance arrays to be unsized.
Reviewed-by: Kenneth Graunke <[email protected]>
Reviewed-by: Ian Romanick <[email protected]>
Diffstat (limited to 'src/glsl/ast.h')
-rw-r--r-- | src/glsl/ast.h | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/src/glsl/ast.h b/src/glsl/ast.h index 3ef9913a78e..9b194dbd043 100644 --- a/src/glsl/ast.h +++ b/src/glsl/ast.h @@ -907,12 +907,14 @@ public: class ast_interface_block : public ast_node { public: ast_interface_block(ast_type_qualifier layout, - const char *instance_name, - ast_expression *array_size) + const char *instance_name, + bool is_array, + ast_expression *array_size) : layout(layout), block_name(NULL), instance_name(instance_name), - array_size(array_size) + is_array(is_array), array_size(array_size) { - /* empty */ + if (!is_array) + assert(array_size == NULL); } virtual ir_rvalue *hir(exec_list *instructions, @@ -933,13 +935,19 @@ public: exec_list declarations; /** - * Declared array size of the block instance - * - * If the block is not declared as an array, this field will be \c NULL. + * True if the block is declared as an array * * \note * A block can only be an array if it also has an instance name. If this - * field is not \c NULL, ::instance_name must also not be \c NULL. + * field is true, ::instance_name must also not be \c NULL. + */ + bool is_array; + + /** + * Declared array size of the block instance + * + * If the block is not declared as an array or if the block instance array + * is unsized, this field will be \c NULL. */ ast_expression *array_size; }; |