* a dynamic entry, or the corresponding static entry, in glapi.
*/
+#include <stdbool.h>
#include "remap.h"
#include "imports.h"
#include "glapi/glapi.h"
#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 < ARRAY_SIZE(_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.
* \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;
* 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) {
const char *name = spec + strlen(spec) + 1;
}
}
}
-
-
-void
-_mesa_init_remap_table(void)
-{
- _mesa_do_init_remap_table(_mesa_function_pool,
- driDispatchRemapTable_size,
- MESA_remap_table_functions);
-}