diff options
Diffstat (limited to 'src/mesa')
-rw-r--r-- | src/mesa/Makefile | 6 | ||||
-rw-r--r-- | src/mesa/es/Makefile | 8 | ||||
-rw-r--r-- | src/mesa/es/sources.mak | 2 | ||||
-rw-r--r-- | src/mesa/main/APIspec.dtd (renamed from src/mesa/es/main/APIspec.dtd) | 0 | ||||
-rw-r--r-- | src/mesa/main/APIspec.py (renamed from src/mesa/es/main/APIspec.py) | 0 | ||||
-rw-r--r-- | src/mesa/main/APIspec.xml (renamed from src/mesa/es/main/APIspec.xml) | 0 | ||||
-rw-r--r-- | src/mesa/main/APIspecutil.py (renamed from src/mesa/es/main/APIspecutil.py) | 0 | ||||
-rw-r--r-- | src/mesa/main/api_exec.h | 6 | ||||
-rw-r--r-- | src/mesa/main/context.c | 48 | ||||
-rw-r--r-- | src/mesa/main/es_generator.py (renamed from src/mesa/es/main/es_generator.py) | 41 | ||||
-rw-r--r-- | src/mesa/main/remap.h | 33 | ||||
-rw-r--r-- | src/mesa/sources.mak | 2 |
12 files changed, 114 insertions, 32 deletions
diff --git a/src/mesa/Makefile b/src/mesa/Makefile index 8c0ebf84c4b..7dcde5275e0 100644 --- a/src/mesa/Makefile +++ b/src/mesa/Makefile @@ -24,6 +24,12 @@ default: depend asm_subdirs glsl_builtin libmesa.a libmesagallium.a \ libglapi.a driver_subdirs +main/api_exec_es1.c: main/APIspec.xml main/es_generator.py main/APIspecutil.py main/APIspec.py + $(PYTHON2) $(PYTHON_FLAGS) main/es_generator.py -S main/APIspec.xml -V GLES1.1 > $@ + +main/api_exec_es2.c: main/APIspec.xml main/es_generator.py main/APIspecutil.py main/APIspec.py + $(PYTHON2) $(PYTHON_FLAGS) main/es_generator.py -S main/APIspec.xml -V GLES2.0 > $@ + ###################################################################### # Helper libraries used by many drivers: diff --git a/src/mesa/es/Makefile b/src/mesa/es/Makefile index 8b484853afe..b095620c9da 100644 --- a/src/mesa/es/Makefile +++ b/src/mesa/es/Makefile @@ -83,17 +83,9 @@ libes2api.a: $(ES2_API_OBJECTS) @$(MKLIB) -o es2api -static $(ES2_API_OBJECTS) GENERATED_SOURCES := \ - main/api_exec_es1.c \ - main/api_exec_es2.c \ main/get_es1.c \ main/get_es2.c -main/api_exec_es1.c: main/APIspec.xml main/es_generator.py main/APIspecutil.py main/APIspec.py - $(PYTHON2) $(PYTHON_FLAGS) main/es_generator.py -S main/APIspec.xml -V GLES1.1 > $@ - -main/api_exec_es2.c: main/APIspec.xml main/es_generator.py main/APIspecutil.py main/APIspec.py - $(PYTHON2) $(PYTHON_FLAGS) main/es_generator.py -S main/APIspec.xml -V GLES2.0 > $@ - main/get_es1.c: main/get_gen.py $(PYTHON2) $(PYTHON_FLAGS) $< 1 > $@ diff --git a/src/mesa/es/sources.mak b/src/mesa/es/sources.mak index b08069bce52..0f682f507e9 100644 --- a/src/mesa/es/sources.mak +++ b/src/mesa/es/sources.mak @@ -3,7 +3,6 @@ include $(MESA)/sources.mak # LOCAL sources LOCAL_ES1_SOURCES := \ - main/api_exec_es1.c \ main/get_es1.c \ main/drawtex.c \ main/es_cpaltex.c \ @@ -28,7 +27,6 @@ LOCAL_ES1_INCLUDES := \ -I$(MESA)/state_tracker LOCAL_ES2_SOURCES := \ - main/api_exec_es2.c \ main/get_es2.c \ main/es_cpaltex.c \ main/es_fbo.c \ diff --git a/src/mesa/es/main/APIspec.dtd b/src/mesa/main/APIspec.dtd index efcfa31f10e..efcfa31f10e 100644 --- a/src/mesa/es/main/APIspec.dtd +++ b/src/mesa/main/APIspec.dtd diff --git a/src/mesa/es/main/APIspec.py b/src/mesa/main/APIspec.py index 6947f7301cd..6947f7301cd 100644 --- a/src/mesa/es/main/APIspec.py +++ b/src/mesa/main/APIspec.py diff --git a/src/mesa/es/main/APIspec.xml b/src/mesa/main/APIspec.xml index 7e77eb74d5c..7e77eb74d5c 100644 --- a/src/mesa/es/main/APIspec.xml +++ b/src/mesa/main/APIspec.xml diff --git a/src/mesa/es/main/APIspecutil.py b/src/mesa/main/APIspecutil.py index 27a8fe8a6d4..27a8fe8a6d4 100644 --- a/src/mesa/es/main/APIspecutil.py +++ b/src/mesa/main/APIspecutil.py diff --git a/src/mesa/main/api_exec.h b/src/mesa/main/api_exec.h index dd8d500865b..29c953f31be 100644 --- a/src/mesa/main/api_exec.h +++ b/src/mesa/main/api_exec.h @@ -35,5 +35,11 @@ _mesa_alloc_dispatch_table(int size); extern struct _glapi_table * _mesa_create_exec_table(void); +extern struct _glapi_table * +_mesa_create_exec_table_es1(void); + +extern struct _glapi_table * +_mesa_create_exec_table_es2(void); + #endif diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c index 8d71cefdcf3..0963e75f35e 100644 --- a/src/mesa/main/context.c +++ b/src/mesa/main/context.c @@ -394,7 +394,25 @@ one_time_init( GLcontext *ctx ) _mesa_get_cpu_features(); - _mesa_init_remap_table(); + switch (ctx->API) { +#if FEATURE_GL + case API_OPENGL: + _mesa_init_remap_table(); + break; +#endif +#if FEATURE_ES1 + case API_OPENGLES: + _mesa_init_remap_table_es1(); + break; +#endif +#if FEATURE_ES2 + case API_OPENGLES2: + _mesa_init_remap_table_es2(); + break; +#endif + default: + break; + } _mesa_init_sqrt_table(); @@ -812,9 +830,6 @@ _mesa_initialize_context_for_api(GLcontext *ctx, assert(driverFunctions->NewTextureObject); assert(driverFunctions->FreeTexImageData); - /* misc one-time initializations */ - one_time_init(ctx); - ctx->API = api; ctx->Visual = *visual; ctx->DrawBuffer = NULL; @@ -822,6 +837,9 @@ _mesa_initialize_context_for_api(GLcontext *ctx, ctx->WinSysDrawBuffer = NULL; ctx->WinSysReadBuffer = NULL; + /* misc one-time initializations */ + one_time_init(ctx); + /* Plug in driver functions and context pointer here. * This is important because when we call alloc_shared_state() below * we'll call ctx->Driver.NewTextureObject() to create the default @@ -853,7 +871,27 @@ _mesa_initialize_context_for_api(GLcontext *ctx, #if FEATURE_dispatch /* setup the API dispatch tables */ - ctx->Exec = _mesa_create_exec_table(); + switch (ctx->API) { +#if FEATURE_GL + case API_OPENGL: + ctx->Exec = _mesa_create_exec_table(); + break; +#endif +#if FEATURE_ES1 + case API_OPENGLES: + ctx->Exec = _mesa_create_exec_table_es1(); + break; +#endif +#if FEATURE_ES2 + case API_OPENGLES2: + ctx->Exec = _mesa_create_exec_table_es2(); + break; +#endif + default: + _mesa_problem(ctx, "unknown or unsupported API"); + break; + } + if (!ctx->Exec) { _mesa_release_shared_state(ctx, ctx->Shared); return GL_FALSE; diff --git a/src/mesa/es/main/es_generator.py b/src/mesa/main/es_generator.py index 8dedafbceb0..1282a1c4f5e 100644 --- a/src/mesa/es/main/es_generator.py +++ b/src/mesa/main/es_generator.py @@ -103,11 +103,13 @@ VersionSpecificValues = { 'description' : 'GLES1.1 functions', 'header' : 'GLES/gl.h', 'extheader' : 'GLES/glext.h', + 'shortname' : 'es1' }, 'GLES2.0': { 'description' : 'GLES2.0 functions', 'header' : 'GLES2/gl2.h', 'extheader' : 'GLES2/gl2ext.h', + 'shortname' : 'es2' } } @@ -164,6 +166,7 @@ if not VersionSpecificValues.has_key(version): # Grab the version-specific items we need to use versionHeader = VersionSpecificValues[version]['header'] versionExtHeader = VersionSpecificValues[version]['extheader'] +shortname = VersionSpecificValues[version]['shortname'] # If we get to here, we're good to go. The "version" parameter # directs GetDispatchedFunctions to only allow functions from @@ -206,22 +209,24 @@ extern void _mesa_error(void *ctx, GLenum error, const char *fmtString, ... ); #include "main/compiler.h" #include "main/api_exec.h" - -#include "main/dispatch.h" - -#if FEATURE_remap_table - #include "main/remap.h" #ifdef IN_DRI_DRIVER #define _GLAPI_USE_REMAP_TABLE #endif +#include "es/glapi/glapi-%s/glapi/glapitable.h" +#include "es/glapi/glapi-%s/glapi/glapioffsets.h" +#include "es/glapi/glapi-%s/glapi/glapidispatch.h" + +#if FEATURE_remap_table + #define need_MESA_remap_table -#include "main/remap_helper.h" + +#include "es/glapi/glapi-%s/main/remap_helper.h" void -_mesa_init_remap_table(void) +_mesa_init_remap_table_%s(void) { _mesa_do_init_remap_table(_mesa_function_pool, driDispatchRemapTable_size, @@ -229,14 +234,14 @@ _mesa_init_remap_table(void) } void -_mesa_map_static_functions(void) +_mesa_map_static_functions_%s(void) { } #endif typedef void (*_glapi_proc)(void); /* generic function pointer */ -""" +""" % (shortname, shortname, shortname, shortname, shortname, shortname); # Finally we get to the all-important functions print """/************************************************************* @@ -693,14 +698,16 @@ for funcName in keys: # end for each function -print "struct _glapi_table *" -print "_mesa_create_exec_table(void)" -print "{" -print " struct _glapi_table *exec;" -print " exec = _mesa_alloc_dispatch_table(sizeof *exec);" -print " if (exec == NULL)" -print " return NULL;" -print "" +print """ +struct _glapi_table * +_mesa_create_exec_table_%s(void) +{ + struct _glapi_table *exec; + exec = _mesa_alloc_dispatch_table(sizeof *exec); + if (exec == NULL) + return NULL; + +""" % shortname for func in keys: prefix = "_es_" if func not in allSpecials else "_check_" diff --git a/src/mesa/main/remap.h b/src/mesa/main/remap.h index dda1a6be3a9..7afdee36f5b 100644 --- a/src/mesa/main/remap.h +++ b/src/mesa/main/remap.h @@ -59,6 +59,12 @@ extern void _mesa_map_static_functions(void); extern void +_mesa_map_static_functions_es1(void); + +extern void +_mesa_map_static_functions_es2(void); + +extern void _mesa_do_init_remap_table(const char *pool, int size, const struct gl_function_pool_remap *remap); @@ -66,6 +72,12 @@ _mesa_do_init_remap_table(const char *pool, extern void _mesa_init_remap_table(void); +extern void +_mesa_init_remap_table_es1(void); + +extern void +_mesa_init_remap_table_es2(void); + #else /* FEATURE_remap_table */ static INLINE const char * @@ -90,6 +102,17 @@ _mesa_map_static_functions(void) { } + +static INLINE void +_mesa_map_static_functions_es1(void) +{ +} + +static INLINE void +_mesa_map_static_functions_es2(void) +{ +} + static INLINE void _mesa_do_init_remap_table(const char *pool, int size, @@ -102,6 +125,16 @@ _mesa_init_remap_table(void) { } +static INLINE void +_mesa_init_remap_table_es1(void) +{ +} + +static INLINE void +_mesa_init_remap_table_es2(void) +{ +} + #endif /* FEATURE_remap_table */ diff --git a/src/mesa/sources.mak b/src/mesa/sources.mak index d9ebb51a6d2..72b46e981f3 100644 --- a/src/mesa/sources.mak +++ b/src/mesa/sources.mak @@ -3,6 +3,8 @@ MAIN_SOURCES = \ main/api_arrayelt.c \ main/api_exec.c \ + main/api_exec_es1.c \ + main/api_exec_es2.c \ main/api_loopback.c \ main/api_noop.c \ main/api_validate.c \ |