X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fglsl%2Fglsl_types.cpp;h=8a34b8eb09c9e16384142e4e548d9b61d73a560f;hb=2bb91274e2cc2290ce8e790335f1e57b81d9d783;hp=a3271970482e16c2f59a2a0cef0e3b2f49af48fe;hpb=c5ff9a8b9e3cafb3764e620add2900656c59606b;p=mesa.git diff --git a/src/glsl/glsl_types.cpp b/src/glsl/glsl_types.cpp index a3271970482..8a34b8eb09c 100644 --- a/src/glsl/glsl_types.cpp +++ b/src/glsl/glsl_types.cpp @@ -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; @@ -169,7 +168,7 @@ glsl_type::generate_100ES_types(glsl_symbol_table *symtab) } void -glsl_type::generate_110_types(glsl_symbol_table *symtab) +glsl_type::generate_110_types(glsl_symbol_table *symtab, bool add_deprecated) { generate_100ES_types(symtab); @@ -177,16 +176,18 @@ glsl_type::generate_110_types(glsl_symbol_table *symtab) Elements(builtin_110_types), false); add_types_to_symbol_table(symtab, &_sampler3D_type, 1, false); - add_types_to_symbol_table(symtab, builtin_110_deprecated_structure_types, - Elements(builtin_110_deprecated_structure_types), - false); + if (add_deprecated) { + add_types_to_symbol_table(symtab, builtin_110_deprecated_structure_types, + Elements(builtin_110_deprecated_structure_types), + false); + } } void -glsl_type::generate_120_types(glsl_symbol_table *symtab) +glsl_type::generate_120_types(glsl_symbol_table *symtab, bool add_deprecated) { - generate_110_types(symtab); + generate_110_types(symtab, add_deprecated); add_types_to_symbol_table(symtab, builtin_120_types, Elements(builtin_120_types), false); @@ -194,9 +195,9 @@ glsl_type::generate_120_types(glsl_symbol_table *symtab) void -glsl_type::generate_130_types(glsl_symbol_table *symtab) +glsl_type::generate_130_types(glsl_symbol_table *symtab, bool add_deprecated) { - generate_120_types(symtab); + generate_120_types(symtab, add_deprecated); add_types_to_symbol_table(symtab, builtin_130_types, Elements(builtin_130_types), false); @@ -204,6 +205,20 @@ glsl_type::generate_130_types(glsl_symbol_table *symtab) } +void +glsl_type::generate_140_types(glsl_symbol_table *symtab) +{ + generate_130_types(symtab, false); + + 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); +} + + void glsl_type::generate_ARB_texture_rectangle_types(glsl_symbol_table *symtab, bool warn) @@ -249,23 +264,24 @@ _mesa_glsl_initialize_types(struct _mesa_glsl_parse_state *state) glsl_type::generate_100ES_types(state->symbols); break; case 110: - glsl_type::generate_110_types(state->symbols); + glsl_type::generate_110_types(state->symbols, true); break; case 120: - glsl_type::generate_120_types(state->symbols); + glsl_type::generate_120_types(state->symbols, true); break; case 130: - glsl_type::generate_130_types(state->symbols); + glsl_type::generate_130_types(state->symbols, true); break; case 140: - glsl_type::generate_130_types(state->symbols); + glsl_type::generate_140_types(state->symbols); break; default: /* error */ break; } - if (state->ARB_texture_rectangle_enable) { + if (state->ARB_texture_rectangle_enable || + state->language_version >= 140) { glsl_type::generate_ARB_texture_rectangle_types(state->symbols, state->ARB_texture_rectangle_warn); }