glapi: Encapsulate nop table knowledge in new _mesa_new_nop_table function
authorIan Romanick <ian.d.romanick@intel.com>
Tue, 26 May 2015 18:41:44 +0000 (11:41 -0700)
committerIan Romanick <ian.d.romanick@intel.com>
Wed, 27 May 2015 01:25:41 +0000 (18:25 -0700)
Encapsulate the knowledge about how to build the nop table in a new
_mesa_new_nop_table function.  This makes it easier for dispatch_sanity
to keep working now and in the future.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
Tested-by: Mark Janes <mark.a.janes@intel.com>
Cc: 10.6 <mesa-stable@lists.freedesktop.org>
src/mesa/main/api_exec.h
src/mesa/main/context.c
src/mesa/main/tests/dispatch_sanity.cpp

index 12249fec2283642c9eddf26f9c84d769b3845619..655cb32d0a458ef7718ebc7c42afb9f1f27d650a 100644 (file)
@@ -38,6 +38,9 @@ _mesa_initialize_exec_table(struct gl_context *ctx);
 extern void
 _mesa_initialize_dispatch_tables(struct gl_context *ctx);
 
+extern struct _glapi_table *
+_mesa_new_nop_table(unsigned numEntries);
+
 #ifdef __cplusplus
 } // extern "C"
 #endif
index 02875ba2a06a142c57da3e487f283e39b5592821..e4faf3d462a618b868083e2159e02a5e26964ee9 100644 (file)
@@ -962,12 +962,12 @@ generic_nop(void)
  * the __stdcall convention which requires the callee to clean up the
  * call stack.  That's impossible with one generic no-op function.
  */
-#if !USE_GLAPI_NOP_FEATURES
-static struct _glapi_table *
-new_nop_table(unsigned numEntries)
+struct _glapi_table *
+_mesa_new_nop_table(unsigned numEntries)
 {
    struct _glapi_table *table;
 
+#if !USE_GLAPI_NOP_FEATURES
    table = malloc(numEntries * sizeof(_glapi_proc));
    if (table) {
       _glapi_proc *entry = (_glapi_proc *) table;
@@ -976,9 +976,11 @@ new_nop_table(unsigned numEntries)
          entry[i] = (_glapi_proc) generic_nop;
       }
    }
+#else
+   table = _glapi_new_nop_table(numEntries);
+#endif
    return table;
 }
-#endif
 
 
 /**
@@ -996,10 +998,7 @@ alloc_dispatch_table(void)
     */
    int numEntries = MAX2(_glapi_get_dispatch_table_size(), _gloffset_COUNT);
 
-#if !USE_GLAPI_NOP_FEATURES
-   struct _glapi_table *table = new_nop_table(numEntries);
-#else
-   struct _glapi_table *table = _glapi_new_nop_table(numEntries);
+   struct _glapi_table *table = _mesa_new_nop_table(numEntries);
 
 #if defined(_WIN32)
    if (table) {
@@ -1023,6 +1022,7 @@ alloc_dispatch_table(void)
    }
 #endif
 
+#if USE_GLAPI_NOP_FEATURES
    _glapi_set_nop_handler(nop_handler);
 #endif
 
index d38b68d0c9aa87d77c51251f643a086ee424aeec..c6f3c395733e165412a2d93225d32967f39fbf78 100644 (file)
@@ -96,7 +96,7 @@ DispatchSanity_test::SetUp()
    _mesa_init_driver_functions(&driver_functions);
 
    const unsigned size = _glapi_get_dispatch_table_size();
-   nop_table = (_glapi_proc *) _glapi_new_nop_table(size);
+   nop_table = (_glapi_proc *) _mesa_new_nop_table(size);
 }
 
 void