X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fmain%2Fremap.c;h=4a881865a448ab280d9b60cf20f995a2578c6735;hb=613974b774e6cace3799c304fe15a3389047d7be;hp=bfceb43c974155d092812e7a51a4337a369b14c8;hpb=ba81b0743efd978509b1931d7b4b93f37e8aeb5e;p=mesa.git diff --git a/src/mesa/main/remap.c b/src/mesa/main/remap.c index bfceb43c974..4a881865a44 100644 --- a/src/mesa/main/remap.c +++ b/src/mesa/main/remap.c @@ -1,6 +1,5 @@ /* * Mesa 3-D graphics library - * Version: 7.7 * * Copyright (C) 2009 Chia-I Wu * @@ -38,19 +37,13 @@ #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]; @@ -67,7 +60,7 @@ 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; @@ -186,8 +179,10 @@ _mesa_map_static_functions(void) * 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; @@ -197,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); +}