glsl: Move type_contains_sampler() into glsl_type for later reuse.
[mesa.git] / src / glsl / glsl_types.cpp
index 78d10bd93808ba998e8ea424135d37f33d6673ca..a5e21bbb96c06ef319c1c12d6b220b790c71b8c9 100644 (file)
@@ -111,6 +111,22 @@ add_types_to_symbol_table(glsl_symbol_table *symtab,
    }
 }
 
+bool
+glsl_type::contains_sampler() const
+{
+   if (this->is_array()) {
+      return this->fields.array->contains_sampler();
+   } else if (this->is_record()) {
+      for (unsigned int i = 0; i < this->length; i++) {
+        if (this->fields.structure[i].type->contains_sampler())
+           return true;
+      }
+      return false;
+   } else {
+      return this->is_sampler();
+   }
+}
+
 void
 glsl_type::generate_100ES_types(glsl_symbol_table *symtab)
 {