Treat texture rectangles as an extension that is enabled be default

This commit is contained in:
Ian Romanick 2010-04-07 17:13:44 -07:00
parent c77b257094
commit 0c82465395
4 changed files with 42 additions and 11 deletions

View File

@ -167,8 +167,6 @@ done
gen_sampler_type "3D" "GLSL_SAMPLER_DIM_3D" 0 0 "GLSL_TYPE_FLOAT"
gen_sampler_type "Cube" "GLSL_SAMPLER_DIM_CUBE" 0 0 "GLSL_TYPE_FLOAT"
gen_sampler_type "2DRect" "GLSL_SAMPLER_DIM_RECT" 0 0 "GLSL_TYPE_FLOAT"
gen_sampler_type "2DRect" "GLSL_SAMPLER_DIM_RECT" 1 0 "GLSL_TYPE_FLOAT"
gen_footer
@ -328,6 +326,16 @@ echo ''
echo 'const glsl_type *const glsl_type::uint_type = & builtin_130_types['$uint_index'];'
echo '/*@}*/'
echo
echo '/** \name Sampler types added by GL_ARB_texture_rectangle'
echo ' */'
echo '/*@{*/'
gen_header "ARB_texture_rectangle"
gen_sampler_type "2DRect" "GLSL_SAMPLER_DIM_RECT" 0 0 "GLSL_TYPE_FLOAT"
gen_sampler_type "2DRect" "GLSL_SAMPLER_DIM_RECT" 1 0 "GLSL_TYPE_FLOAT"
gen_footer
echo '/*@}*/'
echo
echo '/** \name Sampler types added by GL_EXT_texture_buffer_object'
echo ' */'

View File

@ -135,6 +135,9 @@ _mesa_glsl_process_extension(const char *name, YYLTYPE *name_locp,
state->ARB_draw_buffers_enable = (ext_mode != extension_disable);
state->ARB_draw_buffers_warn = (ext_mode == extension_warn);
}
} if (strcmp(name, "GL_ARB_texture_rectangle") == 0) {
state->ARB_texture_rectangle_enable = (ext_mode != extension_disable);
state->ARB_texture_rectangle_warn = (ext_mode == extension_warn);
} else {
unsupported = true;
}
@ -736,6 +739,7 @@ main(int argc, char **argv)
state.error = false;
state.temp_index = 0;
state.loop_or_switch_nesting = NULL;
state.ARB_texture_rectangle_enable = true;
_mesa_glsl_lexer_ctor(& state, shader, shader_len);
_mesa_glsl_parse(& state);

View File

@ -66,6 +66,8 @@ struct _mesa_glsl_parse_state {
/*@{*/
unsigned ARB_draw_buffers_enable:1;
unsigned ARB_draw_buffers_warn:1;
unsigned ARB_texture_rectangle_enable:1;
unsigned ARB_texture_rectangle_warn:1;
/*@}*/
};

View File

@ -35,11 +35,11 @@ hash_table *glsl_type::array_types = NULL;
static void
add_types_to_symbol_table(glsl_symbol_table *symtab,
const struct glsl_type *types,
unsigned num_types)
unsigned num_types, bool warn)
{
unsigned i;
(void) warn;
for (i = 0; i < num_types; i++) {
for (unsigned i = 0; i < num_types; i++) {
symtab->add_type(types[i].name, & types[i]);
}
}
@ -49,12 +49,15 @@ static void
generate_110_types(glsl_symbol_table *symtab)
{
add_types_to_symbol_table(symtab, builtin_core_types,
Elements(builtin_core_types));
Elements(builtin_core_types),
false);
add_types_to_symbol_table(symtab, builtin_structure_types,
Elements(builtin_structure_types));
Elements(builtin_structure_types),
false);
add_types_to_symbol_table(symtab, builtin_110_deprecated_structure_types,
Elements(builtin_110_deprecated_structure_types));
add_types_to_symbol_table(symtab, & void_type, 1);
Elements(builtin_110_deprecated_structure_types),
false);
add_types_to_symbol_table(symtab, & void_type, 1, false);
}
@ -64,7 +67,7 @@ generate_120_types(glsl_symbol_table *symtab)
generate_110_types(symtab);
add_types_to_symbol_table(symtab, builtin_120_types,
Elements(builtin_120_types));
Elements(builtin_120_types), false);
}
@ -74,7 +77,16 @@ generate_130_types(glsl_symbol_table *symtab)
generate_120_types(symtab);
add_types_to_symbol_table(symtab, builtin_130_types,
Elements(builtin_130_types));
Elements(builtin_130_types), false);
}
static void
generate_ARB_texture_rectangle_types(glsl_symbol_table *symtab, bool warn)
{
add_types_to_symbol_table(symtab, builtin_ARB_texture_rectangle_types,
Elements(builtin_ARB_texture_rectangle_types),
warn);
}
@ -95,6 +107,11 @@ _mesa_glsl_initialize_types(struct _mesa_glsl_parse_state *state)
/* error */
break;
}
if (state->ARB_texture_rectangle_enable) {
generate_ARB_texture_rectangle_types(state->symbols,
state->ARB_texture_rectangle_warn);
}
}