GL = (1 << API_OPENGL_COMPAT) | (1 << API_OPENGL_CORE),
ES1 = 1 << API_OPENGLES,
ES2 = 1 << API_OPENGLES2,
- ES3 = 1 << (API_OPENGL_LAST + 1),
- ES31 = 1 << (API_OPENGL_LAST + 2),
};
/**
extension_index *extension_indices;
/* String of extra extensions. */
char *extra_extensions = get_extension_override(ctx);
- GLboolean *base = (GLboolean *) &ctx->Extensions;
unsigned k;
unsigned j;
unsigned maxYear = ~0;
- unsigned api_set = (1 << ctx->API);
- if (_mesa_is_gles3(ctx))
- api_set |= ES3;
- if (_mesa_is_gles31(ctx))
- api_set |= ES31;
/* Check if the MESA_EXTENSION_MAX_YEAR env var is set */
{
for (k = 0; k < ARRAY_SIZE(extension_table); ++k) {
const struct extension *i = extension_table + k;
- if (base[i->offset] &&
- i->year <= maxYear &&
- (i->api_set & api_set)) {
+ if (i->year <= maxYear &&
+ _mesa_extension_supported(ctx, k)) {
length += strlen(i->name) + 1; /* +1 for space */
++count;
}
*/
j = 0;
for (k = 0; k < ARRAY_SIZE(extension_table); ++k) {
- const struct extension *i = extension_table + k;
-
- if (base[i->offset] &&
- i->year <= maxYear &&
- (i->api_set & api_set)) {
+ if (extension_table[k].year <= maxYear &&
+ _mesa_extension_supported(ctx, k)) {
extension_indices[j++] = k;
}
}
/* Build the extension string.*/
for (j = 0; j < count; ++j) {
const struct extension *i = &extension_table[extension_indices[j]];
- assert(base[i->offset] && (i->api_set & api_set));
+ assert(_mesa_extension_supported(ctx, extension_indices[j]));
strcat(exts, i->name);
strcat(exts, " ");
}
GLuint
_mesa_get_extension_count(struct gl_context *ctx)
{
- GLboolean *base;
unsigned k;
- unsigned api_set = (1 << ctx->API);
- if (_mesa_is_gles3(ctx))
- api_set |= ES3;
- if (_mesa_is_gles31(ctx))
- api_set |= ES31;
/* only count once */
if (ctx->Extensions.Count != 0)
return ctx->Extensions.Count;
- base = (GLboolean *) &ctx->Extensions;
for (k = 0; k < ARRAY_SIZE(extension_table); ++k) {
- const struct extension *i = extension_table + k;
-
- if (base[i->offset] && (i->api_set & api_set)) {
+ if (_mesa_extension_supported(ctx, k))
ctx->Extensions.Count++;
- }
}
return ctx->Extensions.Count;
}
const GLubyte *
_mesa_get_enabled_extension(struct gl_context *ctx, GLuint index)
{
- const GLboolean *base;
- size_t n;
- unsigned k;
- unsigned api_set = (1 << ctx->API);
- if (_mesa_is_gles3(ctx))
- api_set |= ES3;
- if (_mesa_is_gles31(ctx))
- api_set |= ES31;
-
- base = (GLboolean*) &ctx->Extensions;
- n = 0;
- for (k = 0; k < ARRAY_SIZE(extension_table); ++k) {
- const struct extension *i = extension_table + k;
+ size_t n = 0;
+ unsigned i;
- if (base[i->offset] && (i->api_set & api_set)) {
+ for (i = 0; i < ARRAY_SIZE(extension_table); ++i) {
+ if (_mesa_extension_supported(ctx, i)) {
if (n == index)
- return (const GLubyte*) i->name;
+ return (const GLubyte*) extension_table[i].name;
else
++n;
}
EXT(EXT_secondary_color , dummy_true , GLL , 0, 0, 0, 0, 1999)
EXT(EXT_separate_shader_objects , dummy_true , ES2 , 0, 0, 0, 0, 2013)
EXT(EXT_separate_specular_color , dummy_true , GLL , 0, 0, 0, 0, 1997)
-EXT(EXT_shader_integer_mix , EXT_shader_integer_mix , GL | ES3 , 0, 0, 0, 0, 2013)
+EXT(EXT_shader_integer_mix , EXT_shader_integer_mix , GL | ES2 , 0, 0, 0, 30, 2013)
EXT(EXT_shadow_funcs , ARB_shadow , GLL , 0, 0, 0, 0, 2002)
EXT(EXT_stencil_two_side , EXT_stencil_two_side , GLL , 0, 0, 0, 0, 2001)
EXT(EXT_stencil_wrap , dummy_true , GLL , 0, 0, 0, 0, 2002)
EXT(EXT_unpack_subimage , dummy_true , ES2 , 0, 0, 0, 0, 2011)
EXT(EXT_vertex_array_bgra , EXT_vertex_array_bgra , GL , 0, 0, 0, 0, 2008)
EXT(EXT_vertex_array , dummy_true , GLL , 0, 0, 0, 0, 1995)
-EXT(EXT_color_buffer_float , dummy_true , ES3 , 0, 0, 0, 0, 2013)
+EXT(EXT_color_buffer_float , dummy_true , ES2 , 0, 0, 0, 30, 2013)
EXT(OES_blend_equation_separate , EXT_blend_equation_separate , ES1 , 0, 0, 0, 0, 2009)
EXT(OES_texture_half_float , OES_texture_half_float , ES2 , 0, 0, 0, 0, 2005)
EXT(OES_texture_half_float_linear , OES_texture_half_float_linear , ES2 , 0, 0, 0, 0, 2005)
EXT(OES_texture_mirrored_repeat , dummy_true , ES1 , 0, 0, 0, 0, 2005)
-EXT(OES_texture_storage_multisample_2d_array, ARB_texture_multisample , ES31 , 0, 0, 0, 0, 2014)
+EXT(OES_texture_storage_multisample_2d_array, ARB_texture_multisample , ES2 , 0, 0, 0, 31, 2014)
EXT(OES_texture_npot , ARB_texture_non_power_of_two , ES1 | ES2 , 0, 0, 0, 0, 2005)
EXT(OES_vertex_array_object , dummy_true , ES1 | ES2 , 0, 0, 0, 0, 2010)