summaryrefslogtreecommitdiffstats
path: root/src/glsl/ir.cpp
diff options
context:
space:
mode:
authorKenneth Graunke <[email protected]>2010-07-20 03:08:32 -0700
committerKenneth Graunke <[email protected]>2010-07-21 16:38:33 -0700
commit9a6d40fbfb679f01412c1fcc9d767c20a22246d8 (patch)
tree6a3fec95f2015a1b27a40560a9316fd865646459 /src/glsl/ir.cpp
parenta096fa747611472965cf0f953bfe2757fc80383c (diff)
ir_constant_expression: Add support for array == and !=.
Piglit parser tests const-array-03.frag and const-array-04.frag now generate the correct code.
Diffstat (limited to 'src/glsl/ir.cpp')
-rw-r--r--src/glsl/ir.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/glsl/ir.cpp b/src/glsl/ir.cpp
index d3f7302b54f..5054ec725cc 100644
--- a/src/glsl/ir.cpp
+++ b/src/glsl/ir.cpp
@@ -430,9 +430,14 @@ ir_constant::has_value(const ir_constant *c) const
if (this->type != c->type)
return false;
- /* FINISHME: This will probably also handle constant arrays as soon as those
- * FINISHME: are supported.
- */
+ if (this->type->is_array()) {
+ for (unsigned i = 0; i < this->type->length; i++) {
+ if (this->array_elements[i]->has_value(c->array_elements[i]))
+ return false;
+ }
+ return true;
+ }
+
if (this->type->base_type == GLSL_TYPE_STRUCT) {
const exec_node *a_node = this->components.head;
const exec_node *b_node = c->components.head;