/*
* Mesa 3-D graphics library
- * Version: 7.7
*
* Copyright (C) 2009 Chia-I Wu <olv@0xlab.org>
*
#include "remap.h"
#include "imports.h"
+#include "glapi/glapi.h"
-#include "main/dispatch.h"
-
-
-#if FEATURE_remap_table
-
+#define MAX_ENTRY_POINTS 16
#define need_MESA_remap_table
#include "main/remap_helper.h"
-#define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0]))
-#define MAX_ENTRY_POINTS 16
-
/* this is global for quick access */
int driDispatchRemapTable[driDispatchRemapTable_size];
const char *
_mesa_get_function_spec(GLint func_index)
{
- if (func_index < ARRAY_SIZE(_mesa_function_pool))
+ if (func_index < Elements(_mesa_function_pool))
return _mesa_function_pool + func_index;
else
return NULL;
* The remap table needs to be initialized before calling the
* 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;
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);
+}