diff options
Diffstat (limited to 'src/mesa/main/context.c')
-rw-r--r-- | src/mesa/main/context.c | 88 |
1 files changed, 39 insertions, 49 deletions
diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c index 4bd36bbcded..fef403671ec 100644 --- a/src/mesa/main/context.c +++ b/src/mesa/main/context.c @@ -1,4 +1,4 @@ -/* $Id: context.c,v 1.185 2002/10/16 17:57:51 brianp Exp $ */ +/* $Id: context.c,v 1.186 2002/10/24 23:57:20 brianp Exp $ */ /* * Mesa 3-D graphics library @@ -25,10 +25,8 @@ */ -#ifdef PC_HEADER -#include "all.h" -#else #include "glheader.h" +#include "imports.h" #include "buffers.h" #include "clip.h" #include "colortab.h" @@ -43,7 +41,6 @@ #include "hash.h" #include "light.h" #include "macros.h" -#include "mem.h" #include "mmath.h" #include "simple_list.h" #include "state.h" @@ -58,7 +55,7 @@ #include "math/m_matrix.h" #include "math/m_xform.h" #include "math/mathmod.h" -#endif + #if defined(MESA_TRACE) #include "Trace/tr_context.h" @@ -94,7 +91,7 @@ _mesa_destroyContext(__GLcontext *gc) { if (gc) { _mesa_free_context_data(gc); - (*gc->imports.free)(gc, gc); + _mesa_free(gc); } return GL_TRUE; } @@ -240,9 +237,8 @@ __glCoreCreateContext(__GLimports *imports, __GLcontextModes *modes) return NULL; } + _mesa_initialize_context(ctx, modes, NULL, imports, GL_FALSE); ctx->imports = *imports; - _mesa_init_default_exports(&(ctx->exports)); - _mesa_initialize_context(ctx, modes, NULL, imports); return ctx; } @@ -561,7 +557,7 @@ one_time_init( GLcontext *ctx ) #ifdef USE_SPARC_ASM _mesa_init_sparc_glapi_relocs(); #endif - if ((*ctx->imports.getenv)(ctx, "MESA_DEBUG")) { + if (_mesa_getenv("MESA_DEBUG")) { _glapi_noop_enable_warnings(GL_TRUE); #ifndef GLX_DIRECT_RENDERING /* libGL from before 2002/06/28 don't have this function. Someday, @@ -1477,13 +1473,13 @@ init_attrib_groups( GLcontext *ctx ) ctx->_Facing = 0; /* For debug/development only */ - ctx->NoRaster = (*ctx->imports.getenv)(ctx, "MESA_NO_RASTER") ? GL_TRUE : GL_FALSE; + ctx->NoRaster = _mesa_getenv("MESA_NO_RASTER") ? GL_TRUE : GL_FALSE; ctx->FirstTimeCurrent = GL_TRUE; /* Dither disable */ - ctx->NoDither = (*ctx->imports.getenv)(ctx, "MESA_NO_DITHER") ? GL_TRUE : GL_FALSE; + ctx->NoDither = _mesa_getenv("MESA_NO_DITHER") ? GL_TRUE : GL_FALSE; if (ctx->NoDither) { - if ((*ctx->imports.getenv)(ctx, "MESA_DEBUG")) { + if (_mesa_getenv("MESA_DEBUG")) { _mesa_debug(ctx, "MESA_NO_DITHER set - dithering disabled\n"); } ctx->Color.DitherFlag = GL_FALSE; @@ -1592,36 +1588,36 @@ alloc_proxy_textures( GLcontext *ctx ) static void add_debug_flags( const char *debug ) { #ifdef MESA_DEBUG - if (strstr(debug, "varray")) + if (_mesa_strstr(debug, "varray")) MESA_VERBOSE |= VERBOSE_VARRAY; - if (strstr(debug, "tex")) + if (_mesa_strstr(debug, "tex")) MESA_VERBOSE |= VERBOSE_TEXTURE; - if (strstr(debug, "imm")) + if (_mesa_strstr(debug, "imm")) MESA_VERBOSE |= VERBOSE_IMMEDIATE; - if (strstr(debug, "pipe")) + if (_mesa_strstr(debug, "pipe")) MESA_VERBOSE |= VERBOSE_PIPELINE; - if (strstr(debug, "driver")) + if (_mesa_strstr(debug, "driver")) MESA_VERBOSE |= VERBOSE_DRIVER; - if (strstr(debug, "state")) + if (_mesa_strstr(debug, "state")) MESA_VERBOSE |= VERBOSE_STATE; - if (strstr(debug, "api")) + if (_mesa_strstr(debug, "api")) MESA_VERBOSE |= VERBOSE_API; - if (strstr(debug, "list")) + if (_mesa_strstr(debug, "list")) MESA_VERBOSE |= VERBOSE_DISPLAY_LIST; - if (strstr(debug, "lighting")) + if (_mesa_strstr(debug, "lighting")) MESA_VERBOSE |= VERBOSE_LIGHTING; /* Debug flag: */ - if (strstr(debug, "flush")) + if (_mesa_strstr(debug, "flush")) MESA_DEBUG_FLAGS |= DEBUG_ALWAYS_FLUSH; #endif } @@ -1635,16 +1631,18 @@ GLboolean _mesa_initialize_context( GLcontext *ctx, const GLvisual *visual, GLcontext *share_list, - const __GLimports *imports ) + void *driver_ctx, + GLboolean direct ) { GLuint dispatchSize; const char *c; - ASSERT(imports); - ASSERT(imports->other); /* other points to the device driver's context */ + ASSERT(driver_ctx); - /* assing imports */ - ctx->imports = *imports; + /* If the driver wants core Mesa to use special imports, it'll have to + * override these defaults. + */ + _mesa_init_default_imports( &(ctx->imports), driver_ctx ); /* initialize the exports (Mesa functions called by the window system) */ _mesa_init_default_exports( &(ctx->exports) ); @@ -1652,17 +1650,7 @@ _mesa_initialize_context( GLcontext *ctx, /* misc one-time initializations */ one_time_init(ctx); -#if 0 - /** - ** OpenGL SI stuff - **/ - if (!ctx->imports.malloc) { - _mesa_init_default_imports(&ctx->imports, driver_ctx); - } - /* exports are setup by the device driver */ -#endif - - ctx->DriverCtx = imports->other; + ctx->DriverCtx = driver_ctx; ctx->Visual = *visual; ctx->DrawBuffer = NULL; ctx->ReadBuffer = NULL; @@ -1860,11 +1848,11 @@ _mesa_initialize_context( GLcontext *ctx, } ctx->MRD = 1.0; /* Minimum resolvable depth value, for polygon offset */ - c = (*ctx->imports.getenv)(ctx, "MESA_DEBUG"); + c = _mesa_getenv("MESA_DEBUG"); if (c) add_debug_flags(c); - c = (*ctx->imports.getenv)(ctx, "MESA_VERBOSE"); + c = _mesa_getenv("MESA_VERBOSE"); if (c) add_debug_flags(c); @@ -1877,29 +1865,31 @@ _mesa_initialize_context( GLcontext *ctx, * Allocate and initialize a GLcontext structure. * Input: visual - a GLvisual pointer (we copy the struct contents) * sharelist - another context to share display lists with or NULL - * imports - points to a fully-initialized __GLimports object. + * driver_ctx - pointer to device driver's context state struct + * direct - direct rendering? * Return: pointer to a new __GLcontextRec or NULL if error. */ GLcontext * _mesa_create_context( const GLvisual *visual, GLcontext *share_list, - const __GLimports *imports ) + void *driver_ctx, + GLboolean direct ) + { GLcontext *ctx; ASSERT(visual); - ASSERT(imports); - ASSERT(imports->calloc); + ASSERT(driver_ctx); - ctx = (GLcontext *) (*imports->calloc)(NULL, 1, sizeof(GLcontext)); + ctx = (GLcontext *) _mesa_calloc(sizeof(GLcontext)); if (!ctx) return NULL; - if (_mesa_initialize_context(ctx, visual, share_list, imports)) { + if (_mesa_initialize_context(ctx, visual, share_list, driver_ctx, direct)) { return ctx; } else { - (*imports->free)(NULL, ctx); + _mesa_free(ctx); return NULL; } } @@ -2281,7 +2271,7 @@ _mesa_make_current2( GLcontext *newCtx, GLframebuffer *drawBuffer, * information. */ if (newCtx->FirstTimeCurrent) { - if ((*newCtx->imports.getenv)(newCtx, "MESA_INFO")) { + if (_mesa_getenv("MESA_INFO")) { print_info(); } newCtx->FirstTimeCurrent = GL_FALSE; |