[Mesa-dev] [RFC 07/21] mesa/extensions: Use _mesa_extension_supported()
Nanley Chery
nanleychery at gmail.com
Mon Oct 19 15:36:25 PDT 2015
From: Nanley Chery <nanley.g.chery at intel.com>
Replace open-coded checks for extension support with
_mesa_extension_supported().
Signed-off-by: Nanley Chery <nanley.g.chery at intel.com>
---
src/mesa/main/extensions.c | 54 ++++++++--------------------------------
src/mesa/main/extensions_table.h | 6 ++---
2 files changed, 14 insertions(+), 46 deletions(-)
diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c
index 7137bc9..5d2eb1d 100644
--- a/src/mesa/main/extensions.c
+++ b/src/mesa/main/extensions.c
@@ -49,8 +49,6 @@ enum {
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),
};
/**
@@ -481,15 +479,9 @@ _mesa_make_extension_string(struct gl_context *ctx)
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 */
{
@@ -506,9 +498,8 @@ _mesa_make_extension_string(struct gl_context *ctx)
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;
}
@@ -536,11 +527,8 @@ _mesa_make_extension_string(struct gl_context *ctx)
*/
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;
}
}
@@ -551,7 +539,7 @@ _mesa_make_extension_string(struct gl_context *ctx)
/* 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, " ");
}
@@ -570,25 +558,15 @@ _mesa_make_extension_string(struct gl_context *ctx)
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;
}
@@ -599,23 +577,13 @@ _mesa_get_extension_count(struct gl_context *ctx)
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;
}
diff --git a/src/mesa/main/extensions_table.h b/src/mesa/main/extensions_table.h
index 24a0908..fecb402 100644
--- a/src/mesa/main/extensions_table.h
+++ b/src/mesa/main/extensions_table.h
@@ -167,7 +167,7 @@ EXT(EXT_rescale_normal , dummy_true
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)
@@ -206,7 +206,7 @@ EXT(EXT_transform_feedback , EXT_transform_feedback
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)
@@ -250,7 +250,7 @@ EXT(OES_texture_float_linear , OES_texture_float_linear
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)
--
2.6.1
More information about the mesa-dev
mailing list