X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fmain%2Fremap.c;h=fa412c0c4f7c1c3988c18378e22299990b198f8b;hb=9ce7d79cdc503ffddfa11609ffb91e297953c2ce;hp=c89fba453023ecad854b78d226f6f089272d97e1;hpb=16ee7a55ae269612263468195f2af998cb9ef695;p=mesa.git diff --git a/src/mesa/main/remap.c b/src/mesa/main/remap.c index c89fba45302..fa412c0c4f7 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 * @@ -36,10 +35,7 @@ * a dynamic entry, or the corresponding static entry, in glapi. */ -#include "mfeatures.h" - -#if FEATURE_remap_table - +#include #include "remap.h" #include "imports.h" #include "glapi/glapi.h" @@ -48,30 +44,13 @@ #define need_MESA_remap_table #include "main/remap_helper.h" +#include "errors.h" /* this is global for quick access */ int driDispatchRemapTable[driDispatchRemapTable_size]; -/** - * Return the spec string associated with the given function index. - * The index is available from including remap_helper.h. - * - * \param func_index an opaque function index. - * - * \return the spec string associated with the function index, or NULL. - */ -const char * -_mesa_get_function_spec(GLint func_index) -{ - if (func_index < Elements(_mesa_function_pool)) - return _mesa_function_pool + func_index; - else - return NULL; -} - - /** * Map a function by its spec. The function will be added to glapi, * and the dispatch offset will be returned. @@ -84,12 +63,12 @@ _mesa_get_function_spec(GLint func_index) * \return the offset of the (re-)mapped function in the dispatch * table, or -1. */ -GLint -_mesa_map_function_spec(const char *spec) +static int +map_function_spec(const char *spec) { const char *signature; const char *names[MAX_ENTRY_POINTS + 1]; - GLint num_names = 0; + int num_names = 0; if (!spec) return -1; @@ -115,112 +94,36 @@ _mesa_map_function_spec(const char *spec) } -/** - * Map an array of functions. This is a convenient function for - * use with arrays available from including remap_helper.h. - * - * Note that the dispatch offsets of the functions are not returned. - * If they are needed, _mesa_map_function_spec() should be used. - * - * \param func_array an array of function remaps. - */ -void -_mesa_map_function_array(const struct gl_function_remap *func_array) -{ - GLint i; - - if (!func_array) - return; - - for (i = 0; func_array[i].func_index != -1; i++) { - const char *spec; - GLint offset; - - spec = _mesa_get_function_spec(func_array[i].func_index); - if (!spec) { - _mesa_problem(NULL, "invalid function index %d", - func_array[i].func_index); - continue; - } - - offset = _mesa_map_function_spec(spec); - /* error checks */ - if (offset < 0) { - const char *name = spec + strlen(spec) + 1; - _mesa_warning(NULL, "failed to remap %s", name); - } - else if (func_array[i].dispatch_offset >= 0 && - offset != func_array[i].dispatch_offset) { - const char *name = spec + strlen(spec) + 1; - _mesa_problem(NULL, "%s should be mapped to %d, not %d", - name, func_array[i].dispatch_offset, offset); - } - } -} - - -/** - * Map the functions which are already static. - * - * When a extension function are incorporated into the ABI, the - * extension suffix is usually stripped. Mapping such functions - * makes sure the alternative names are available. - * - * Note that functions mapped by _mesa_init_remap_table() are - * excluded. - */ -void -_mesa_map_static_functions(void) -{ - /* Remap static functions which have alternative names and are in the ABI. - * This is to be on the safe side. glapi should have defined those names. - */ - _mesa_map_function_array(MESA_alt_functions); -} - - /** * 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 main/dispatch.h. */ -static void -_mesa_do_init_remap_table(const char *pool, - int size, - const struct gl_function_pool_remap *remap) +void +_mesa_init_remap_table(void) { - static GLboolean initialized = GL_FALSE; + static bool initialized = false; GLint i; if (initialized) return; - initialized = GL_TRUE; + initialized = true; - /* initialize the remap table */ - for (i = 0; i < size; i++) { - GLint offset; + /* initialize the MESA_remap_table_functions table */ + for (i = 0; i < driDispatchRemapTable_size; i++) { + int offset; const char *spec; /* sanity check */ - ASSERT(i == remap[i].remap_index); - spec = _mesa_function_pool + remap[i].pool_index; + assert(i == MESA_remap_table_functions[i].remap_index); + spec = _mesa_function_pool + MESA_remap_table_functions[i].pool_index; - offset = _mesa_map_function_spec(spec); - /* store the dispatch offset in the remap table */ + offset = map_function_spec(spec); + /* store the dispatch offset in the MESA_remap_table_functions 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); + } } } - - -void -_mesa_init_remap_table(void) -{ - _mesa_do_init_remap_table(_mesa_function_pool, - driDispatchRemapTable_size, - MESA_remap_table_functions); -} - - -#endif /* FEATURE_remap_table */