diff options
author | Paul Berry <[email protected]> | 2013-09-18 14:15:36 -0700 |
---|---|---|
committer | Paul Berry <[email protected]> | 2013-10-09 16:49:31 -0700 |
commit | 3f4292a6e361c03abe922e025d24cba17e0ab305 (patch) | |
tree | ce1da045ef60477bc730dc361874e44396fb2026 /src/glsl/ir.h | |
parent | 22d3ef2df1f4fd6c4a0aaf17996fdcd9b70547cb (diff) |
glsl: Add an ir_variable::max_ifc_array_access field.
For interface blocks that contain arrays, this field will contain the
maximum element of each contained array that is accessed by the
shader. This is a first step toward supporting unsized arrays in
interface blocks.
Reviewed-by: Jordan Justen <[email protected]>
Diffstat (limited to 'src/glsl/ir.h')
-rw-r--r-- | src/glsl/ir.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/glsl/ir.h b/src/glsl/ir.h index a2778570826..eb24d4e441d 100644 --- a/src/glsl/ir.h +++ b/src/glsl/ir.h @@ -398,6 +398,10 @@ public: { assert(this->interface_type == NULL); this->interface_type = type; + if (this->is_interface_instance()) { + this->max_ifc_array_access = + rzalloc_array(this, unsigned, type->length); + } } const glsl_type *get_interface_type() const @@ -423,6 +427,19 @@ public: unsigned max_array_access; /** + * For variables which satisfy the is_interface_instance() predicate, this + * points to an array of integers such that if the ith member of the + * interface block is an array, max_ifc_array_access[i] is the maximum + * array element of that member that has been accessed. If the ith member + * of the interface block is not an array, max_ifc_array_access[i] is + * unused. + * + * For variables whose type is not an interface block, this pointer is + * NULL. + */ + unsigned *max_ifc_array_access; + + /** * Is the variable read-only? * * This is set for variables declared as \c const, shader inputs, |