glsl: Add support for parsing [iu]samplerBuffer types in GLSL 1.40.
authorEric Anholt <eric@anholt.net>
Mon, 26 Mar 2012 21:13:17 +0000 (14:13 -0700)
committerEric Anholt <eric@anholt.net>
Mon, 9 Apr 2012 21:34:06 +0000 (14:34 -0700)
The samplerBuffer type will be undefined in !glsl 1.40, and the
keyword is marked as reserved.  The [iu]samplerBuffer types are not
marked as reserved pre-1.40, so they don't have separate tokens and
fall through to normal type handling.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/glsl/glsl_parser.yy
src/glsl/glsl_types.cpp

index 26cdc16520610e7f3a19fbbd2c45a9608edff65a..920213c3035c404faf657ce0f241ecc844984646 100644 (file)
@@ -1405,6 +1405,7 @@ basic_type_specifier_nonarray:
        | SAMPLER2DARRAY        { $$ = "sampler2DArray"; }
        | SAMPLER1DARRAYSHADOW  { $$ = "sampler1DArrayShadow"; }
        | SAMPLER2DARRAYSHADOW  { $$ = "sampler2DArrayShadow"; }
+       | SAMPLERBUFFER         { $$ = "samplerBuffer"; }
        | ISAMPLER1D            { $$ = "isampler1D"; }
        | ISAMPLER2D            { $$ = "isampler2D"; }
        | ISAMPLER3D            { $$ = "isampler3D"; }
index 069ebd10d6c3efc4966ecf66809dcd7bc8c41f0e..8a34b8eb09c9e16384142e4e548d9b61d73a560f 100644 (file)
@@ -146,7 +146,6 @@ glsl_type::sampler_index() const
    case GLSL_SAMPLER_DIM_RECT:
       return TEXTURE_RECT_INDEX;
    case GLSL_SAMPLER_DIM_BUF:
-      assert(!"FINISHME: Implement ARB_texture_buffer_object");
       return TEXTURE_BUFFER_INDEX;
    case GLSL_SAMPLER_DIM_EXTERNAL:
       return TEXTURE_EXTERNAL_INDEX;
@@ -213,6 +212,10 @@ glsl_type::generate_140_types(glsl_symbol_table *symtab)
 
    add_types_to_symbol_table(symtab, builtin_140_types,
                             Elements(builtin_140_types), false);
+
+   add_types_to_symbol_table(symtab, builtin_EXT_texture_buffer_object_types,
+                            Elements(builtin_EXT_texture_buffer_object_types),
+                            false);
 }