mesa: Move references to main/remap_helper.h to api_exec.c

This commit is contained in:
Kristian Høgsberg 2010-04-22 13:30:03 -04:00
parent fa41610630
commit 1741ddb747
6 changed files with 100 additions and 63 deletions

View File

@ -209,6 +209,32 @@ extern void _mesa_error(void *ctx, GLenum error, const char *fmtString, ... );
#include "main/dispatch.h"
#if FEATURE_remap_table
#include "main/remap.h"
#ifdef IN_DRI_DRIVER
#define _GLAPI_USE_REMAP_TABLE
#endif
#define need_MESA_remap_table
#include "main/remap_helper.h"
void
_mesa_init_remap_table(void)
{
_mesa_do_init_remap_table(_mesa_function_pool,
driDispatchRemapTable_size,
MESA_remap_table_functions);
}
void
_mesa_map_static_functions(void)
{
}
#endif
typedef void (*_glapi_proc)(void); /* generic function pointer */
"""

View File

@ -65,17 +65,12 @@ class PrintGlRemap(gl_XML.gl_print_base):
def printRealHeader(self):
print '#include "main/dispatch.h"'
print '#include "main/remap.h"'
print ''
return
def printBody(self, api):
print 'struct gl_function_remap {'
print ' GLint func_index;'
print ' GLint dispatch_offset; /* for sanity check */'
print '};'
print ''
pool_indices = {}
print '/* this is internal to remap.c */'
@ -108,10 +103,7 @@ class PrintGlRemap(gl_XML.gl_print_base):
print ''
print '/* these functions need to be remapped */'
print 'static const struct {'
print ' GLint pool_index;'
print ' GLint remap_index;'
print '} MESA_remap_table_functions[] = {'
print 'static const struct gl_function_pool_remap MESA_remap_table_functions[] = {'
# output all functions that need to be remapped
# iterate by offsets so that they are sorted by remap indices
for f in api.functionIterateByOffset():

View File

@ -107,6 +107,40 @@
#endif
#include "main/dispatch.h"
#define need_MESA_remap_table
#include "main/remap.h"
#include "main/remap_helper.h"
/* This is shared across all APIs but We define this here since
* desktop GL has the biggest remap table. */
int driDispatchRemapTable[driDispatchRemapTable_size];
/**
* 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);
}
void
_mesa_init_remap_table(void)
{
_mesa_do_init_remap_table(_mesa_function_pool,
driDispatchRemapTable_size,
MESA_remap_table_functions);
}
/**

View File

@ -38,23 +38,15 @@
#include "remap.h"
#include "imports.h"
#include "main/dispatch.h"
#include "glapi/glapi.h"
#if FEATURE_remap_table
#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];
static const char *_mesa_function_pool;
/**
* Return the spec string associated with the given function index.
@ -67,10 +59,7 @@ int driDispatchRemapTable[driDispatchRemapTable_size];
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;
return _mesa_function_pool + func_index;
}
@ -161,33 +150,15 @@ _mesa_map_function_array(const struct gl_function_remap *func_array)
}
/**
* 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.
*/
void
_mesa_init_remap_table(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;
@ -195,15 +166,16 @@ _mesa_init_remap_table(void)
if (initialized)
return;
initialized = GL_TRUE;
_mesa_function_pool = pool;
/* 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 */

View File

@ -28,9 +28,17 @@
#define REMAP_H
#include "main/mtypes.h"
#include "main/mfeatures.h"
struct gl_function_remap;
struct gl_function_pool_remap {
int pool_index;
int remap_index;
};
struct gl_function_remap {
int func_index;
int dispatch_offset; /* for sanity check */
};
#if FEATURE_remap_table
@ -39,9 +47,9 @@ extern int
driDispatchRemapTable[];
extern const char *
_mesa_get_function_spec(GLint func_index);
_mesa_get_function_spec(int func_index);
extern GLint
extern int
_mesa_map_function_spec(const char *spec);
extern void
@ -50,18 +58,23 @@ _mesa_map_function_array(const struct gl_function_remap *func_array);
extern void
_mesa_map_static_functions(void);
extern void
_mesa_do_init_remap_table(const char *pool,
int size,
const struct gl_function_pool_remap *remap);
extern void
_mesa_init_remap_table(void);
#else /* FEATURE_remap_table */
static INLINE const char *
_mesa_get_function_spec(GLint func_index)
_mesa_get_function_spec(int func_index)
{
return NULL;
}
static INLINE GLint
static INLINE int
_mesa_map_function_spec(const char *spec)
{
return -1;
@ -77,6 +90,13 @@ _mesa_map_static_functions(void)
{
}
static INLINE void
_mesa_do_init_remap_table(const char *pool,
int size,
const struct gl_function_pool_remap *remap)
{
}
static INLINE void
_mesa_init_remap_table(void)
{

View File

@ -26,11 +26,7 @@
*/
#include "main/dispatch.h"
struct gl_function_remap {
GLint func_index;
GLint dispatch_offset; /* for sanity check */
};
#include "main/remap.h"
/* this is internal to remap.c */
#ifdef need_MESA_remap_table
@ -4427,10 +4423,7 @@ static const char _mesa_function_pool[] =
;
/* these functions need to be remapped */
static const struct {
GLint pool_index;
GLint remap_index;
} MESA_remap_table_functions[] = {
static const struct gl_function_pool_remap MESA_remap_table_functions[] = {
{ 1461, AttachShader_remap_index },
{ 8848, CreateProgram_remap_index },
{ 20883, CreateShader_remap_index },