From 9232e84c16da284b2ce68e441004df381cec7e91 Mon Sep 17 00:00:00 2001 From: brianp Date: Sat, 12 Feb 2000 23:09:21 +0000 Subject: Merged dispatch-0-0-2 --- xc/lib/GL/Imakefile | 7 ++- xc/lib/GL/dri/Imakefile | 3 +- xc/lib/GL/dri/dri_glx.c | 20 ++++++- xc/lib/GL/glx/Imakefile | 2 + xc/lib/GL/glx/glxclient.h | 5 ++ xc/lib/GL/glx/glxcmds.c | 96 +++++++++++++++++++++++++++++++- xc/lib/GL/glx/glxext.c | 62 +++++++++++++++++---- xc/lib/GL/glx/indirect_init.c | 26 +++------ xc/lib/GL/mesa/src/Imakefile | 25 +++++---- xc/lib/GL/mesa/src/drv/tdfx/Imakefile | 11 ++-- xc/lib/GL/mesa/src/drv/tdfx/tdfx_xmesa.c | 16 ++++++ 11 files changed, 226 insertions(+), 47 deletions(-) (limited to 'xc/lib/GL') diff --git a/xc/lib/GL/Imakefile b/xc/lib/GL/Imakefile index 2c154b2a1..21e0e559a 100644 --- a/xc/lib/GL/Imakefile +++ b/xc/lib/GL/Imakefile @@ -1,5 +1,6 @@ XCOMM $XFree86: xc/lib/GL/Imakefile,v 1.10 1999/12/14 01:32:21 robin Exp $ -XCOMM $PI: xc/lib/GL/Imakefile,v 1.11 1999/06/14 21:10:34 faith Exp $ + +#include #define IHaveSubdirs #define PassCDebugFlags @@ -104,6 +105,10 @@ DRIMESADONES = mesa/dri/DONE POBJS = $(GLXPOBJS) $(DRIPOBJS) $(DRVPOBJS) DONES = $(GLXDONES) $(DRIDONES) $(DRVDONES) +#if LocalThreads + OBJS += $(THREADS_LIBS) +#endif + #include #undef _LinkBuildLibrary diff --git a/xc/lib/GL/dri/Imakefile b/xc/lib/GL/dri/Imakefile index c5a216896..f5bde177a 100644 --- a/xc/lib/GL/dri/Imakefile +++ b/xc/lib/GL/dri/Imakefile @@ -1,5 +1,6 @@ XCOMM $XFree86: xc/lib/GL/dri/Imakefile,v 1.3 1999/12/14 01:32:22 robin Exp $ -XCOMM $PI: xc/lib/GL/dri/Imakefile,v 1.11 1999/05/16 14:00:45 faith Exp $ + +#include #define DoNormalLib NormalLibGlx #define DoSharedLib SharedLibGlx diff --git a/xc/lib/GL/dri/dri_glx.c b/xc/lib/GL/dri/dri_glx.c index 83a0c4f48..ac12eb368 100644 --- a/xc/lib/GL/dri/dri_glx.c +++ b/xc/lib/GL/dri/dri_glx.c @@ -97,6 +97,10 @@ static void *DummyCreateScreen(Display *dpy, int scrn, __DRIscreen *psc, * screen number. * We use the DRI in order to find the driCreateScreen function * exported by each screen on a display. + * + * Also, this function calls the driver's _register_gl_extensions() + * function in order to let the driver hook new extension functions + * into the libGL dispatcher. */ static void Find_CreateScreenFuncs(Display *dpy, CreateScreenFunc *createFuncs, @@ -136,7 +140,8 @@ static void Find_CreateScreenFuncs(Display *dpy, /* - * dlopen the driver module and call its driCreateScreen function. + * dlopen the driver module and save the pointer to its + * driCreateScreen function. */ { char realDriverName[100]; @@ -173,6 +178,19 @@ static void Find_CreateScreenFuncs(Display *dpy, ErrorMessage(message); dlclose(handle); } + + /* Find the driver's _register_gl_extensions() function and + * call it if present. This will let the driver tell libGL.so + * about any extension functions it wants to export. + */ + { + typedef void *(*RegisterExtFunc)(void); + RegisterExtFunc registerExtFunc = (RegisterExtFunc) dlsym(handle, "_register_gl_extensions"); + if (registerExtFunc) { + (*registerExtFunc)(); + } + } + } } } diff --git a/xc/lib/GL/glx/Imakefile b/xc/lib/GL/glx/Imakefile index 21c837814..78c64de4d 100644 --- a/xc/lib/GL/glx/Imakefile +++ b/xc/lib/GL/glx/Imakefile @@ -16,6 +16,8 @@ XCOMM 1999. The developer of the Original Software is Silicon Graphics, Inc. XCOMM Those portions of the Subject Software created by Silicon Graphics, Inc. XCOMM are Copyright (c) 1991-9 Silicon Graphics, Inc. All Rights Reserved. +#include + #define DoNormalLib NormalLibGlx #define DoSharedLib SharedLibGlx #define DoExtraLib SharedLibGlx diff --git a/xc/lib/GL/glx/glxclient.h b/xc/lib/GL/glx/glxclient.h index 810570b90..6673e5cf9 100644 --- a/xc/lib/GL/glx/glxclient.h +++ b/xc/lib/GL/glx/glxclient.h @@ -544,9 +544,14 @@ extern __GLXdisplayPrivate *__glXInitialize(Display*); extern int __glXDebug; /* This is per-thread storage in an MT environment */ +#if defined(GLX_DIRECT_RENDERING) && defined(XTHREADS) +extern __GLXcontext *__glXGetCurrentContext(void); +extern void __glXSetCurrentContext(__GLXcontext *c); +#else extern __GLXcontext *__glXcurrentContext; #define __glXGetCurrentContext() __glXcurrentContext #define __glXSetCurrentContext(gc) __glXcurrentContext = gc +#endif /* diff --git a/xc/lib/GL/glx/glxcmds.c b/xc/lib/GL/glx/glxcmds.c index 51bd9b9e2..7ad820bf1 100644 --- a/xc/lib/GL/glx/glxcmds.c +++ b/xc/lib/GL/glx/glxcmds.c @@ -25,8 +25,7 @@ * * Authors: * Kevin E. Martin - * - * $PI: xc/lib/GL/glx/glxcmds.c,v 1.8 1999/06/10 04:39:13 martin Exp $ + * Brian Paul */ #include "packsingle.h" @@ -34,6 +33,7 @@ #include #include #include +#include "glapi.h" #ifdef GLX_DIRECT_RENDERING #include "indirect_init.h" #endif @@ -1487,3 +1487,95 @@ void glXFreeContextEXT(Display *dpy, GLXContext ctx) DestroyContext(dpy, ctx); } + +/* +** glXGetProcAddress support +*/ + + +struct name_address_pair { + const char *Name; + GLvoid *Address; +}; + +static struct name_address_pair GLX_functions[] = { + { "glXChooseVisual", (GLvoid *) glXChooseVisual }, + { "glXCopyContext", (GLvoid *) glXCopyContext }, + { "glXCreateContext", (GLvoid *) glXCreateContext }, + { "glXCreateGLXPixmap", (GLvoid *) glXCreateGLXPixmap }, + { "glXDestroyContext", (GLvoid *) glXDestroyContext }, + { "glXDestroyGLXPixmap", (GLvoid *) glXDestroyGLXPixmap }, + { "glXGetConfig", (GLvoid *) glXGetConfig }, + { "glXGetCurrentContext", (GLvoid *) glXGetCurrentContext }, + { "glXGetCurrentDrawable", (GLvoid *) glXGetCurrentDrawable }, + { "glXIsDirect", (GLvoid *) glXIsDirect }, + { "glXMakeCurrent", (GLvoid *) glXMakeCurrent }, + { "glXQueryExtension", (GLvoid *) glXQueryExtension }, + { "glXQueryVersion", (GLvoid *) glXQueryVersion }, + { "glXSwapBuffers", (GLvoid *) glXSwapBuffers }, + { "glXUseXFont", (GLvoid *) glXUseXFont }, + { "glXWaitGL", (GLvoid *) glXWaitGL }, + { "glXWaitX", (GLvoid *) glXWaitX }, + + { "glXGetClientString", (GLvoid *) glXGetClientString }, + { "glXQueryExtensionsString", (GLvoid *) glXQueryExtensionsString }, + { "glXQueryServerString", (GLvoid *) glXQueryServerString }, + + { "glXGetCurrentDisplay", (GLvoid *) glXGetCurrentDisplay }, + +#if 0 /* enable this when GLX 1.3 is implemented */ + { "glXChooseFBConfig", (GLvoid *) glXChooseFBConfig }, + { "glXCreateNewContext", (GLvoid *) glXCreateNewContext }, + { "glXCreatePbuffer", (GLvoid *) glXCreatePbuffer }, + { "glXCreatePixmap", (GLvoid *) glXCreatePixmap }, + { "glXCreateWindow", (GLvoid *) glXCreateWindow }, + { "glXDestroyPbuffer", (GLvoid *) glXDestroyPbuffer }, + { "glXDestroyPixmap", (GLvoid *) glXDestroyPixmap }, + { "glXDestroyWindow", (GLvoid *) glXDestroyWindow }, + { "glXGetCurrentReadDrawable", (GLvoid *) glXGetCurrentReadDrawable }, + { "glXGetFBConfigAttrib", (GLvoid *) glXGetFBConfigAttrib }, + { "glXGetSelectedEvent", (GLvoid *) glXGetSelectedEvent }, + { "glXGetVisualFromFBConfig", (GLvoid *) glXGetVisualFromFBConfig }, + { "glXMakeContextCurrent", (GLvoid *) glXMakeContextCurrent }, + { "glXQueryContext", (GLvoid *) glXQueryContext }, + { "glXQueryDrawable", (GLvoid *) glXQueryDrawable }, + { "glXSelectEvent", (GLvoid *) glXSelectEvent }, +#endif + + /* extension functions */ + { "glXGetContextIDEXT", (GLvoid *) glXGetContextIDEXT }, + { "glXGetCurrentDrawableEXT", (GLvoid *) glXGetCurrentDrawableEXT }, + { "glXImportContextEXT", (GLvoid *) glXImportContextEXT }, + { "glXFreeContextEXT", (GLvoid *) glXFreeContextEXT }, + { "glXQueryContextInfoEXT", (GLvoid *) glXQueryContextInfoEXT }, + { "glXGetProcAddressARB", (GLvoid *) glXGetProcAddressARB }, + + { NULL, NULL } /* end of list */ +}; + + +static const GLvoid * +get_glx_proc_address(const char *funcName) +{ + GLuint i; + for (i = 0; GLX_functions[i].Name; i++) { + if (strcmp(GLX_functions[i].Name, funcName) == 0) + return GLX_functions[i].Address; + } + return NULL; +} + + +void (*glXGetProcAddressARB(const GLubyte *procName))() +{ + typedef void (*gl_function)(); + gl_function f; + + f = (gl_function) get_glx_proc_address((const char *) procName); + if (f) { + return f; + } + + f = (gl_function) _glapi_get_proc_address((const char *) procName); + return f; +} diff --git a/xc/lib/GL/glx/glxext.c b/xc/lib/GL/glx/glxext.c index 49873ae73..c69c882fe 100644 --- a/xc/lib/GL/glx/glxext.c +++ b/xc/lib/GL/glx/glxext.c @@ -36,6 +36,9 @@ #include "indirect_init.h" #include "glapi.h" #include +#ifdef XTHREADS +#include "Xthreads.h" +#endif #endif #ifdef DEBUG @@ -72,8 +75,49 @@ static __GLapi *IndirectAPI = NULL; #endif +/* + * Current context management + */ + +#if defined(GLX_DIRECT_RENDERING) && defined(XTHREADS) + +/* thread safe */ +static GLboolean TSDinitialized = GL_FALSE; +static xthread_key_t ContextTSD; + +__GLXcontext *__glXGetCurrentContext(void) +{ + if (!TSDinitialized) { + xthread_key_create(&ContextTSD, NULL); + TSDinitialized = GL_TRUE; + return &dummyContext; + } + else { + void *p; + xthread_get_specific(ContextTSD, &p); + if (!p) + return &dummyContext; + else + return (__GLXcontext *) p; + } +} + +void __glXSetCurrentContext(__GLXcontext *c) +{ + if (!TSDinitialized) { + xthread_key_create(&ContextTSD, NULL); + TSDinitialized = GL_TRUE; + } + xthread_set_specific(ContextTSD, c); +} + +#else + +/* not thread safe */ __GLXcontext *__glXcurrentContext = &dummyContext; +#endif + /* ** You can set this cell to 1 to force the gl drawing stuff to be @@ -411,15 +455,6 @@ __GLXdisplayPrivate *__glXInitialize(Display* dpy) XEDataObject dataObj; int major, minor; -#ifdef GLX_DIRECT_RENDERING - /* - **Initialize the indirect GLX dispatch table. It'll never change and - ** can be used by all indirect contexts. - */ - if (!IndirectAPI) - IndirectAPI = __glXNewIndirectAPI(); -#endif - /* The one and only long long lock */ __glXLock(); @@ -505,6 +540,7 @@ __GLXdisplayPrivate *__glXInitialize(Display* dpy) __glXClientInfo(dpy, dpyPriv->majorOpcode); } __glXUnlock(); + return dpyPriv; } @@ -897,9 +933,15 @@ Bool glXMakeCurrent(Display *dpy, GLXDrawable draw, GLXContext gc) __glXSetCurrentContext(gc); #ifdef GLX_DIRECT_RENDERING if (!gc->isDirect) { - assert(IndirectAPI); + if (!IndirectAPI) + IndirectAPI = __glXNewIndirectAPI(); _glapi_set_dispatch(IndirectAPI); } +#else + /* if not direct rendering, always need indirect dispatch */ + if (!IndirectAPI) + IndirectAPI = __glXNewIndirectAPI(); + _glapi_set_dispatch(IndirectAPI); #endif gc->currentDpy = dpy; gc->currentDrawable = draw; diff --git a/xc/lib/GL/glx/indirect_init.c b/xc/lib/GL/glx/indirect_init.c index 99b6994c9..3e1d9f909 100644 --- a/xc/lib/GL/glx/indirect_init.c +++ b/xc/lib/GL/glx/indirect_init.c @@ -29,8 +29,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* * Authors: * Kevin E. Martin - * - * $PI: xc/lib/GL/glx/indirect_init.c,v 1.2 1999/04/05 05:24:32 martin Exp $ + * Brian Paul */ #ifdef GLX_DIRECT_RENDERING @@ -49,21 +48,6 @@ static int NoOp(void) } -/* -** Initialize the given dispatch table to all no-op functions. -*/ -static void InitNoOpAPI(__GLapi *glAPI) -{ - const int entries = sizeof(__GLapi) / sizeof(void *); - int i; - void **dispatch = (void **) glAPI; - - for (i = 0; i < entries; i++) { - dispatch[i] = (void *) NoOp; - } -} - - __GLapi *__glXNewIndirectAPI(void) { __GLapi *glAPI; @@ -72,7 +56,13 @@ __GLapi *__glXNewIndirectAPI(void) glAPI = (__GLapi *) Xmalloc(entries * sizeof(void *)); /* first, set all entries to point to no-op functions */ - InitNoOpAPI(glAPI); + { + int i; + void **dispatch = (void **) glAPI; + for (i = 0; i < entries; i++) { + dispatch[i] = (void *) NoOp; + } + } /* now, initialize the entries we understand */ glAPI->Accum = __indirect_glAccum; diff --git a/xc/lib/GL/mesa/src/Imakefile b/xc/lib/GL/mesa/src/Imakefile index 41b1a1e0b..ef136da49 100644 --- a/xc/lib/GL/mesa/src/Imakefile +++ b/xc/lib/GL/mesa/src/Imakefile @@ -1,5 +1,6 @@ XCOMM $XFree86: xc/lib/GL/mesa/src/Imakefile,v 1.5 1999/12/14 01:32:25 robin Exp $ -XCOMM $PI: xc/lib/GL/mesa/src/Imakefile,v 1.5 1999/06/21 05:13:55 martin Exp $ + +#include #define DoNormalLib NormalLibGlx #define DoSharedLib SharedLibGlx @@ -30,6 +31,8 @@ LinkSourceFile(bitmap.c, ../../../../extras/Mesa/src) LinkSourceFile(bitmap.h, ../../../../extras/Mesa/src) LinkSourceFile(blend.c, ../../../../extras/Mesa/src) LinkSourceFile(blend.h, ../../../../extras/Mesa/src) +LinkSourceFile(buffers.c, ../../../../extras/Mesa/src) +LinkSourceFile(buffers.h, ../../../../extras/Mesa/src) LinkSourceFile(clip.c, ../../../../extras/Mesa/src) LinkSourceFile(clip.h, ../../../../extras/Mesa/src) LinkSourceFile(clip_funcs.h, ../../../../extras/Mesa/src) @@ -51,8 +54,6 @@ LinkSourceFile(debug_xform.c, ../../../../extras/Mesa/src) LinkSourceFile(debug_xform.h, ../../../../extras/Mesa/src) LinkSourceFile(depth.c, ../../../../extras/Mesa/src) LinkSourceFile(depth.h, ../../../../extras/Mesa/src) -LinkSourceFile(dispatch.c, ../../../../extras/Mesa/src) -LinkSourceFile(dispatch.h, ../../../../extras/Mesa/src) LinkSourceFile(dlist.c, ../../../../extras/Mesa/src) LinkSourceFile(dlist.h, ../../../../extras/Mesa/src) LinkSourceFile(dotprod_tmp.h, ../../../../extras/Mesa/src) @@ -83,12 +84,12 @@ LinkSourceFile(glapioffsets.h, ../../../../extras/Mesa/src) LinkSourceFile(glapitable.h, ../../../../extras/Mesa/src) LinkSourceFile(glapitemp.h, ../../../../extras/Mesa/src) LinkSourceFile(glheader.h, ../../../../extras/Mesa/src) -LinkSourceFile(glmisc.c, ../../../../extras/Mesa/src) -LinkSourceFile(glmisc.h, ../../../../extras/Mesa/src) LinkSourceFile(glthread.c, ../../../../extras/Mesa/src) LinkSourceFile(glthread.h, ../../../../extras/Mesa/src) LinkSourceFile(hash.c, ../../../../extras/Mesa/src) LinkSourceFile(hash.h, ../../../../extras/Mesa/src) +LinkSourceFile(hint.c, ../../../../extras/Mesa/src) +LinkSourceFile(hint.h, ../../../../extras/Mesa/src) LinkSourceFile(image.c, ../../../../extras/Mesa/src) LinkSourceFile(image.h, ../../../../extras/Mesa/src) LinkSourceFile(imaging.c, ../../../../extras/Mesa/src) @@ -142,6 +143,8 @@ LinkSourceFile(span.c, ../../../../extras/Mesa/src) LinkSourceFile(span.h, ../../../../extras/Mesa/src) LinkSourceFile(stages.c, ../../../../extras/Mesa/src) LinkSourceFile(stages.h, ../../../../extras/Mesa/src) +LinkSourceFile(state.c, ../../../../extras/Mesa/src) +LinkSourceFile(state.h, ../../../../extras/Mesa/src) LinkSourceFile(stencil.c, ../../../../extras/Mesa/src) LinkSourceFile(stencil.h, ../../../../extras/Mesa/src) LinkSourceFile(texgen_tmp.h, ../../../../extras/Mesa/src) @@ -193,6 +196,7 @@ LinkSourceFile(zoom.h, ../../../../extras/Mesa/src) bbox.c \ bitmap.c \ blend.c \ + buffers.c \ clip.c \ colortab.c \ config.c \ @@ -201,7 +205,6 @@ LinkSourceFile(zoom.h, ../../../../extras/Mesa/src) cva.c \ debug_xform.c \ depth.c \ - dispatch.c \ dlist.c \ drawpix.c \ enable.c \ @@ -213,9 +216,9 @@ LinkSourceFile(zoom.h, ../../../../extras/Mesa/src) get.c \ glapi.c \ glapinoop.c \ - glmisc.c \ glthread.c \ hash.c \ + hint.c \ image.c \ imaging.o \ light.c \ @@ -238,6 +241,7 @@ LinkSourceFile(zoom.h, ../../../../extras/Mesa/src) shade.c \ span.c \ stages.c \ + state.c \ stencil.c \ teximage.c \ texobj.c \ @@ -265,6 +269,7 @@ LinkSourceFile(zoom.h, ../../../../extras/Mesa/src) bbox.o \ bitmap.o \ blend.o \ + buffers.o \ clip.o \ colortab.o \ config.o \ @@ -273,7 +278,6 @@ LinkSourceFile(zoom.h, ../../../../extras/Mesa/src) cva.o \ debug_xform.o \ depth.o \ - dispatch.o \ dlist.o \ drawpix.o \ enable.o \ @@ -283,8 +287,8 @@ LinkSourceFile(zoom.h, ../../../../extras/Mesa/src) feedback.o \ fog.o \ get.o \ - glmisc.o \ hash.o \ + hint.o \ image.o \ imaging.o \ light.o \ @@ -307,6 +311,7 @@ LinkSourceFile(zoom.h, ../../../../extras/Mesa/src) shade.o \ span.o \ stages.o \ + state.o \ stencil.o \ teximage.o \ texobj.o \ @@ -334,7 +339,7 @@ LinkSourceFile(zoom.h, ../../../../extras/Mesa/src) #endif DEFINES = $(ALLOC_DEFINES) GlxDefines $(TDFX_DEFS) $(ASM_DEFS) - INCLUDES = -I$(XLIBSRC) -I$(EXTINCSRC) -I../include -I../../dri -I. + INCLUDES = -I$(XLIBSRC) -I$(EXTINCSRC) -I../include -I../../dri -I. -I../../../../include SRCS = $(CORE_SRCS) $(ASM_SRCS) OBJS = $(CORE_OBJS) $(ASM_OBJS) diff --git a/xc/lib/GL/mesa/src/drv/tdfx/Imakefile b/xc/lib/GL/mesa/src/drv/tdfx/Imakefile index 55dc359cc..00f0495b4 100644 --- a/xc/lib/GL/mesa/src/drv/tdfx/Imakefile +++ b/xc/lib/GL/mesa/src/drv/tdfx/Imakefile @@ -1,4 +1,6 @@ +#include + #define DoNormalLib NormalLibGlx #define DoSharedLib SharedLibGlx #define DoExtraLib SharedLibGlx @@ -84,6 +86,7 @@ LinkSourceFile(fxvs_tmp.h, ../../../../../../extras/Mesa/src/FX) ../../bbox.c \ ../../bitmap.c \ ../../blend.c \ + ../../buffers.c \ ../../clip.c \ ../../colortab.c \ ../../config.c \ @@ -92,7 +95,6 @@ LinkSourceFile(fxvs_tmp.h, ../../../../../../extras/Mesa/src/FX) ../../cva.c \ ../../debug_xform.c \ ../../depth.c \ - ../../dispatch.c \ ../../dlist.c \ ../../drawpix.c \ ../../enable.c \ @@ -104,7 +106,6 @@ LinkSourceFile(fxvs_tmp.h, ../../../../../../extras/Mesa/src/FX) ../../get.c \ ../../glapi.c \ ../../glapinoop.c \ - ../../glmisc.c \ ../../glthread.c \ ../../hash.c \ ../../image.c \ @@ -129,6 +130,7 @@ LinkSourceFile(fxvs_tmp.h, ../../../../../../extras/Mesa/src/FX) ../../shade.c \ ../../span.c \ ../../stages.c \ + ../../state.c \ ../../stencil.c \ ../../teximage.c \ ../../texobj.c \ @@ -157,6 +159,7 @@ LinkSourceFile(fxvs_tmp.h, ../../../../../../extras/Mesa/src/FX) ../../bbox.o \ ../../bitmap.o \ ../../blend.o \ + ../../buffers.o \ ../../clip.o \ ../../colortab.o \ ../../config.o \ @@ -165,7 +168,6 @@ LinkSourceFile(fxvs_tmp.h, ../../../../../../extras/Mesa/src/FX) ../../cva.o \ ../../debug_xform.o \ ../../depth.o \ - ../../dispatch.o \ ../../dlist.o \ ../../drawpix.o \ ../../enable.o \ @@ -175,8 +177,8 @@ LinkSourceFile(fxvs_tmp.h, ../../../../../../extras/Mesa/src/FX) ../../feedback.o \ ../../fog.o \ ../../get.o \ - ../../glmisc.o \ ../../hash.o \ + ../../hint.o \ ../../image.o \ ../../imaging.o \ ../../light.o \ @@ -199,6 +201,7 @@ LinkSourceFile(fxvs_tmp.h, ../../../../../../extras/Mesa/src/FX) ../../shade.o \ ../../span.o \ ../../stages.o \ + ../../state.o \ ../../stencil.o \ ../../teximage.o \ ../../texobj.o \ diff --git a/xc/lib/GL/mesa/src/drv/tdfx/tdfx_xmesa.c b/xc/lib/GL/mesa/src/drv/tdfx/tdfx_xmesa.c index 688dd756d..9ca4ef671 100644 --- a/xc/lib/GL/mesa/src/drv/tdfx/tdfx_xmesa.c +++ b/xc/lib/GL/mesa/src/drv/tdfx/tdfx_xmesa.c @@ -389,4 +389,20 @@ void XMesaSetSAREA() { /* fprintf(stderr, "Out FifoPtr=%d FifoRead=%d\n", saPriv->fifoPtr, saPriv->fifoRead); */ } + +extern void _register_gl_extensions(void); /* silence compiler warning */ + +void _register_gl_extensions(void) +{ + /* Here is where the 3Dfx driver would register new extensions + * with libGL.so. + * This function is called as soon as the driver object is dlopened. + */ +#if 0 + /* really, the return code should be checked */ + _glapi_add_entrypoint("glFooBarEXT", _gloffset_FooBarEXT); +#endif +} + + #endif -- cgit v1.2.3