[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