Mesa (glsl2): glsl_type: Don' t have two versions of a type with the same name

Ian Romanick idr at kemper.freedesktop.org
Fri Aug 6 00:37:40 UTC 2010


Module: Mesa
Branch: glsl2
Commit: 0a09d679ca97dcb634a939df2110a90c9504e2ec
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=0a09d679ca97dcb634a939df2110a90c9504e2ec

Author: Ian Romanick <ian.d.romanick at intel.com>
Date:   Thu Aug  5 17:29:15 2010 -0700

glsl_type: Don't have two versions of a type with the same name

Previously some sampler types were duplicated in GLSL 1.30 and
GL_EXT_texture_array.  This resulted in not being able to find the
built-in sampler functions when the extension was used.  When the
built-in functions were compiled, they bound to the 1.30 version.
This caused a type mismatch when trying to find the function.  It also
resulted in a confusing error message:

0:0(0): error: no matching function for call to `texture2DArray(sampler2DArray, vec3)'
0:0(0): error: candidates are: vec4 texture2DArray(sampler2DArray, vec3)

0:0(0): error:                 vec4 texture2DArray(sampler2DArray, vec3, float)

---

 src/glsl/builtin_types.h |   12 +++---------
 src/glsl/glsl_types.cpp  |    1 +
 2 files changed, 4 insertions(+), 9 deletions(-)

diff --git a/src/glsl/builtin_types.h b/src/glsl/builtin_types.h
index bd8f8b5..bfa4f3f 100644
--- a/src/glsl/builtin_types.h
+++ b/src/glsl/builtin_types.h
@@ -212,23 +212,17 @@ const glsl_type glsl_type::builtin_130_types[] = {
    glsl_type(GL_UNSIGNED_INT_VEC3, GLSL_TYPE_UINT, 3, 1, "uvec3"),
    glsl_type(GL_UNSIGNED_INT_VEC4, GLSL_TYPE_UINT, 4, 1, "uvec4"),
 
-   /* 1D and 2D texture arrays */
-   glsl_type(GL_SAMPLER_1D_ARRAY,
-	     GLSL_SAMPLER_DIM_1D, 0, 1, GLSL_TYPE_FLOAT, "sampler1DArray"),
+   /* 1D and 2D texture arrays - several of these are included only in
+    * builtin_EXT_texture_array_types.
+    */
    glsl_type(GL_INT_SAMPLER_1D_ARRAY,
 	     GLSL_SAMPLER_DIM_1D, 0, 1,   GLSL_TYPE_INT, "isampler1DArray"),
    glsl_type(GL_UNSIGNED_INT_SAMPLER_1D_ARRAY,
 	     GLSL_SAMPLER_DIM_1D, 0, 1,  GLSL_TYPE_UINT, "usampler1DArray"),
-   glsl_type(GL_SAMPLER_1D_ARRAY_SHADOW,
-	     GLSL_SAMPLER_DIM_1D, 1, 1, GLSL_TYPE_FLOAT, "sampler1DArrayShadow"),
-   glsl_type(GL_SAMPLER_2D_ARRAY,
-	     GLSL_SAMPLER_DIM_2D, 0, 1, GLSL_TYPE_FLOAT, "sampler2DArray"),
    glsl_type(GL_INT_SAMPLER_2D_ARRAY,
 	     GLSL_SAMPLER_DIM_2D, 0, 1,   GLSL_TYPE_INT, "isampler2DArray"),
    glsl_type(GL_UNSIGNED_INT_SAMPLER_2D_ARRAY,
 	     GLSL_SAMPLER_DIM_2D, 0, 1,  GLSL_TYPE_UINT, "usampler2DArray"),
-   glsl_type(GL_SAMPLER_2D_ARRAY_SHADOW,
-	     GLSL_SAMPLER_DIM_2D, 1, 1, GLSL_TYPE_FLOAT, "sampler2DArrayShadow"),
 
    /* cube shadow samplers */
    glsl_type(GL_SAMPLER_CUBE_SHADOW,
diff --git a/src/glsl/glsl_types.cpp b/src/glsl/glsl_types.cpp
index 88f305a..03f8460 100644
--- a/src/glsl/glsl_types.cpp
+++ b/src/glsl/glsl_types.cpp
@@ -144,6 +144,7 @@ glsl_type::generate_130_types(glsl_symbol_table *symtab)
 
    add_types_to_symbol_table(symtab, builtin_130_types,
 			     Elements(builtin_130_types), false);
+   generate_EXT_texture_array_types(symtab, false);
 }
 
 




More information about the mesa-commit mailing list