Whole structures are assignable
authorIan Romanick <ian.d.romanick@intel.com>
Sat, 3 Apr 2010 00:05:59 +0000 (17:05 -0700)
committerIan Romanick <ian.d.romanick@intel.com>
Sat, 3 Apr 2010 00:06:57 +0000 (17:06 -0700)
Whole arrays are assignable in GLSL 1.20 and later, but it's not clear
how to handle that within the IR because the IR is supposed to be
shading language version agnostic.

ir.cpp

diff --git a/ir.cpp b/ir.cpp
index dd426df566ab074dd25e320542cd4480d4cfb45b..ef93c406198a85bcff77c21fd569e0b3a7f5635f 100644 (file)
--- a/ir.cpp
+++ b/ir.cpp
@@ -200,8 +200,11 @@ ir_dereference::is_lvalue()
    if (var == NULL)
       return false;
 
-   if (this->type->base_type == GLSL_TYPE_ARRAY ||
-       this->type->base_type == GLSL_TYPE_STRUCT)
+   /* Arrays are not assignable in GLSL 1.10, but in GLSL 1.20 and later they
+    * are.
+    */
+   /* FINISHME: Handle GLSL 1.10 vs 1.20 differences. */
+   if (this->type->base_type == GLSL_TYPE_ARRAY)
       return false;
 
    if (mode == ir_reference_variable) {