OSDN Git Service

Add glsl_type::get_base_type query
authorIan Romanick <ian.d.romanick@intel.com>
Wed, 24 Mar 2010 00:31:39 +0000 (17:31 -0700)
committerIan Romanick <ian.d.romanick@intel.com>
Wed, 24 Mar 2010 00:31:39 +0000 (17:31 -0700)
Retreives the glsl_type that corresponds to the base type of a numeric scalar /
vector / matrix type.  So vec4 returns float, etc.

glsl_types.cpp
glsl_types.h

index af6a408..2b06a33 100644 (file)
@@ -142,3 +142,20 @@ _mesa_glsl_get_vector_type(unsigned base_type, unsigned vector_length)
       return glsl_error_type;
    }
 }
+
+
+const glsl_type *glsl_type::get_base_type() const
+{
+   switch (base_type) {
+   case GLSL_TYPE_UINT:
+      return glsl_uint_type;
+   case GLSL_TYPE_INT:
+      return glsl_int_type;
+   case GLSL_TYPE_FLOAT:
+      return glsl_float_type;
+   case GLSL_TYPE_BOOL:
+      return glsl_bool_type;
+   default:
+      return glsl_error_type;
+   }
+}
index 7c48e79..97d8390 100644 (file)
@@ -138,6 +138,16 @@ struct glsl_type {
    }
 
    /**
+    * For numeric and boolean derrived types returns the basic scalar type
+    *
+    * If the type is a numeric or boolean scalar, vector, or matrix type,
+    * this function gets the scalar type of the individual components.  For
+    * all other types, including arrays of numeric or boolean types, the
+    * error type is returned.
+    */
+   const glsl_type *get_base_type() const;
+
+   /**
     * Query whether or not a type is a scalar (non-vector and non-matrix).
     */
    bool is_scalar() const