Add EXT_texture_array support.
authorKenneth Graunke <kenneth@whitecape.org>
Tue, 8 Jun 2010 23:17:17 +0000 (16:17 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Wed, 9 Jun 2010 18:14:58 +0000 (11:14 -0700)
builtin_types.h
glsl_parser_extras.h
glsl_types.cpp

index 41ce5d218960da5fa57f108043fede1ca9566464..48202f5645456c248239e8af2d4d0468ac852a9a 100644 (file)
@@ -244,6 +244,18 @@ static const struct glsl_type builtin_ARB_texture_rectangle_types[] = {
 };
 /*@}*/
 
+/** \name Sampler types added by GL_EXT_texture_array
+ */
+/*@{*/
+
+static const struct glsl_type builtin_EXT_texture_array_types[] = {
+   glsl_type(  GLSL_SAMPLER_DIM_1D, 0, 1, GLSL_TYPE_FLOAT, "sampler1DArray"),
+   glsl_type(  GLSL_SAMPLER_DIM_2D, 0, 1, GLSL_TYPE_FLOAT, "sampler2DArray"),
+   glsl_type(  GLSL_SAMPLER_DIM_1D, 1, 1, GLSL_TYPE_FLOAT, "sampler1DArrayShadow"),
+   glsl_type(  GLSL_SAMPLER_DIM_2D, 1, 1, GLSL_TYPE_FLOAT, "sampler2DArrayShadow"),
+};
+/*@}*/
+
 /** \name Sampler types added by GL_EXT_texture_buffer_object
  */
 /*@{*/
index 157b9861a3126800f6dda4c6defe8ddea3f56352..e1585d2872ad7ab290ee3039017ea215eef5efda 100644 (file)
@@ -74,6 +74,8 @@ struct _mesa_glsl_parse_state {
    unsigned ARB_draw_buffers_warn:1;
    unsigned ARB_texture_rectangle_enable:1;
    unsigned ARB_texture_rectangle_warn:1;
+   unsigned EXT_texture_array_enable:1;
+   unsigned EXT_texture_array_warn:1;
    /*@}*/
 };
 
index e1beeefe89172835951465d89b91aba5a4b24976..9487819a447081d838c4a0d0612b0e675ee4c687 100644 (file)
@@ -90,6 +90,15 @@ generate_ARB_texture_rectangle_types(glsl_symbol_table *symtab, bool warn)
 }
 
 
+static void
+generate_EXT_texture_array_types(glsl_symbol_table *symtab, bool warn)
+{
+   add_types_to_symbol_table(symtab, builtin_EXT_texture_array_types,
+                            Elements(builtin_EXT_texture_array_types),
+                            warn);
+}
+
+
 void
 _mesa_glsl_initialize_types(struct _mesa_glsl_parse_state *state)
 {
@@ -112,6 +121,12 @@ _mesa_glsl_initialize_types(struct _mesa_glsl_parse_state *state)
       generate_ARB_texture_rectangle_types(state->symbols,
                                           state->ARB_texture_rectangle_warn);
    }
+
+   if (state->EXT_texture_array_enable && state->language_version < 130) {
+      // These are already included in 130; don't create twice.
+      generate_EXT_texture_array_types(state->symbols,
+                                      state->EXT_texture_array_warn);
+   }
 }