Merge remote-tracking branch 'mesa-public/master' into vulkan
[mesa.git] / src / mesa / main / remap.c
index 0385ae8d7d996eaf24d5e76575f796ada673e84c..5a95387728512ffa149ff2e0a1e518f7605ff793 100644 (file)
@@ -1,6 +1,5 @@
 /*
  * Mesa 3-D graphics library
- * Version:  7.7
  *
  * Copyright (C) 2009 Chia-I Wu <olv@0xlab.org>
  *
  * The above copyright notice and this permission notice shall be included
  * in all copies or substantial portions of the Software.
  *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
  */
 
 
 
 #include "remap.h"
 #include "imports.h"
+#include "glapi/glapi.h"
 
-#include "glapi/dispatch.h"
-
-
-#if FEATURE_remap_table
-
+#define MAX_ENTRY_POINTS 16
 
 #define need_MESA_remap_table
-#include "remap_helper.h"
-
-#define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0]))
-#define MAX_ENTRY_POINTS 16
+#include "main/remap_helper.h"
 
 
 /* this is global for quick access */
@@ -183,10 +177,12 @@ _mesa_map_static_functions(void)
 /**
  * Initialize the remap table.  This is called in one_time_init().
  * The remap table needs to be initialized before calling the
- * CALL/GET/SET macros defined in glapi/dispatch.h.
+ * CALL/GET/SET macros defined in main/dispatch.h.
  */
-void
-_mesa_init_remap_table(void)
+static void
+_mesa_do_init_remap_table(const char *pool,
+                         int size,
+                         const struct gl_function_pool_remap *remap)
 {
    static GLboolean initialized = GL_FALSE;
    GLint i;
@@ -196,21 +192,29 @@ _mesa_init_remap_table(void)
    initialized = GL_TRUE;
 
    /* initialize the remap table */
-   for (i = 0; i < ARRAY_SIZE(driDispatchRemapTable); i++) {
+   for (i = 0; i < size; i++) {
       GLint offset;
       const char *spec;
 
       /* sanity check */
-      ASSERT(i == MESA_remap_table_functions[i].remap_index);
-      spec = _mesa_function_pool + MESA_remap_table_functions[i].pool_index;
+      assert(i == remap[i].remap_index);
+      spec = _mesa_function_pool + remap[i].pool_index;
 
       offset = _mesa_map_function_spec(spec);
       /* store the dispatch offset in the remap table */
       driDispatchRemapTable[i] = offset;
-      if (offset < 0)
-         _mesa_warning(NULL, "failed to remap index %d", i);
+      if (offset < 0) {
+         const char *name = spec + strlen(spec) + 1;
+         _mesa_warning(NULL, "failed to remap %s", name);
+      }
    }
 }
 
 
-#endif /* FEATURE_remap_table */
+void
+_mesa_init_remap_table(void)
+{
+   _mesa_do_init_remap_table(_mesa_function_pool,
+                            driDispatchRemapTable_size,
+                            MESA_remap_table_functions);
+}