diff options
Diffstat (limited to 'src/glx/glxcmds.c')
-rw-r--r-- | src/glx/glxcmds.c | 211 |
1 files changed, 27 insertions, 184 deletions
diff --git a/src/glx/glxcmds.c b/src/glx/glxcmds.c index ef8674f..8f809dc 100644 --- a/src/glx/glxcmds.c +++ b/src/glx/glxcmds.c @@ -39,17 +39,10 @@ #include "glcontextmodes.h" #ifdef GLX_DIRECT_RENDERING -#ifdef GLX_USE_APPLEGL -#include "apple_glx_context.h" -#include "apple_glx.h" -#include "glx_error.h" -#define GC_IS_DIRECT(gc) ((gc)->isDirect) -#else #include <sys/time.h> #include <X11/extensions/xf86vmode.h> #include "xf86dri.h" #define GC_IS_DIRECT(gc) ((gc)->driContext != NULL) -#endif #else #define GC_IS_DIRECT(gc) (0) #endif @@ -66,7 +59,7 @@ static const char __glXGLXClientVersion[] = "1.4"; /****************************************************************************/ -#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) +#ifdef GLX_DIRECT_RENDERING static Bool windowExistsFlag; static int @@ -351,12 +344,6 @@ AllocateGLXContext(Display * dpy) bufSize = __GLX_MAX_RENDER_CMD_SIZE; } gc->maxSmallRenderCommandSize = bufSize; - -#ifdef GLX_USE_APPLEGL - gc->driContext = NULL; - gc->do_destroy = False; -#endif - return gc; } @@ -380,13 +367,8 @@ CreateContext(Display * dpy, int generic_id, GLXContext gc; #ifdef GLX_DIRECT_RENDERING __GLXscreenConfigs *const psc = GetGLXScreenConfigs(dpy, screen); -#ifdef GLX_USE_APPLEGL - const __GLcontextModes *mode; - int errorcode; - bool x11error; -#endif #endif - + if (dpy == NULL) return NULL; @@ -397,7 +379,6 @@ CreateContext(Display * dpy, int generic_id, if (!gc) return NULL; -#ifndef GLX_USE_APPLEGL /* TODO: darwin indirect */ #ifdef GLX_DIRECT_RENDERING if (allowDirect && psc->driScreen) { gc->driContext = psc->driScreen->createContext(psc, fbconfig, gc, @@ -474,36 +455,10 @@ CreateContext(Display * dpy, int generic_id, UnlockDisplay(dpy); SyncHandle(); -#endif gc->imported = GL_FALSE; gc->renderType = renderType; - /* TODO: darwin: Integrate with above to do indirect */ -#ifdef GLX_USE_APPLEGL - mode = _gl_context_modes_find_fbconfig(psc->configs, - fbconfig->fbconfigID); - - if(NULL == mode) { - __glXSendError(dpy, BadValue, fbconfig->fbconfigID, X_GLXCreateContext, - true); - __glXFreeContext(gc); - return NULL; - } - - if(apple_glx_create_context(&gc->driContext, dpy, screen, mode, - shareList ? shareList->driContext : NULL, - &errorcode, &x11error)) { - __glXSendError(dpy, errorcode, 0, X_GLXCreateContext, x11error); - __glXFreeContext(gc); - return NULL; - } - - gc->currentContextTag = -1; - gc->mode = mode; - gc->isDirect = allowDirect; -#endif - return gc; } @@ -562,7 +517,6 @@ __glXFreeContext(__GLXcontext * gc) static void DestroyContext(Display * dpy, GLXContext gc) { -#ifndef GLX_USE_APPLEGL /* TODO: darwin: indirect */ xGLXDestroyContextReq *req; GLXContextID xid; CARD8 opcode; @@ -588,7 +542,7 @@ DestroyContext(Display * dpy, GLXContext gc) return; } -#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) +#ifdef GLX_DIRECT_RENDERING /* Destroy the direct rendering context */ if (gc->driContext) { (*gc->driContext->destroyContext) (gc->driContext, gc->psc, dpy); @@ -598,31 +552,17 @@ DestroyContext(Display * dpy, GLXContext gc) #endif __glXFreeVertexArrayState(gc); -#else - __glXLock(); -#endif /* GLX_USE_APPLEGL */ if (gc->currentDpy) { -#ifdef GLX_USE_APPLEGL - /* - * Set the Bool that indicates that we should destroy this GLX context - * when the context is no longer current. - */ - gc->do_destroy = True; -#endif /* Have to free later cuz it's in use now */ __glXUnlock(); } else { /* Destroy the handle if not current to anybody */ __glXUnlock(); -#ifdef GLX_USE_APPLEGL - if(gc->driContext) - apple_glx_destroy_context(&gc->driContext, dpy); -#endif __glXFreeContext(gc); } -#ifndef GLX_USE_APPLEGL + if (!imported) { /* ** This dpy also created the server side part of the context. @@ -636,7 +576,6 @@ DestroyContext(Display * dpy, GLXContext gc) UnlockDisplay(dpy); SyncHandle(); } -#endif } PUBLIC void @@ -691,9 +630,7 @@ glXQueryExtension(Display * dpy, int *errorBase, int *eventBase) PUBLIC void glXWaitGL(void) { -#ifndef GLX_USE_APPLEGL xGLXWaitGLReq *req; -#endif GLXContext gc = __glXGetCurrentContext(); Display *dpy = gc->currentDpy; @@ -702,10 +639,8 @@ glXWaitGL(void) /* Flush any pending commands out */ __glXFlushRenderBuffer(gc, gc->pc); -#ifdef GLX_USE_APPLEGL - glFinish(); -#else -#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) + +#ifdef GLX_DIRECT_RENDERING if (gc->driContext) { int screen; __GLXDRIdrawable *pdraw = @@ -729,7 +664,6 @@ glXWaitGL(void) req->contextTag = gc->currentContextTag; UnlockDisplay(dpy); SyncHandle(); -#endif /* GLX_USE_APPLEGL */ } /* @@ -739,9 +673,7 @@ glXWaitGL(void) PUBLIC void glXWaitX(void) { -#ifndef GLX_USE_APPLEGL xGLXWaitXReq *req; -#endif GLXContext gc = __glXGetCurrentContext(); Display *dpy = gc->currentDpy; @@ -751,10 +683,7 @@ glXWaitX(void) /* Flush any pending commands out */ __glXFlushRenderBuffer(gc, gc->pc); -#ifdef GLX_USE_APPLEGL - apple_glx_waitx(dpy, gc->driContext); -#else -#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) +#ifdef GLX_DIRECT_RENDERING if (gc->driContext) { int screen; __GLXDRIdrawable *pdraw = @@ -781,15 +710,12 @@ glXWaitX(void) req->contextTag = gc->currentContextTag; UnlockDisplay(dpy); SyncHandle(); -#endif /* GLX_USE_APPLEGL */ } PUBLIC void glXUseXFont(Font font, int first, int count, int listBase) { -#ifndef GLX_USE_APPLEGL xGLXUseXFontReq *req; -#endif GLXContext gc = __glXGetCurrentContext(); Display *dpy = gc->currentDpy; @@ -798,10 +724,8 @@ glXUseXFont(Font font, int first, int count, int listBase) /* Flush any pending commands out */ (void) __glXFlushRenderBuffer(gc, gc->pc); -#ifdef GLX_USE_APPLEGL - DRI_glXUseXFont(font, first, count, listBase); -#else -#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) + +#ifdef GLX_DIRECT_RENDERING if (gc->driContext) { DRI_glXUseXFont(font, first, count, listBase); return; @@ -820,7 +744,6 @@ glXUseXFont(Font font, int first, int count, int listBase) req->listBase = listBase; UnlockDisplay(dpy); SyncHandle(); -#endif /* GLX_USE_APPLEGL */ } /************************************************************************/ @@ -833,17 +756,6 @@ PUBLIC void glXCopyContext(Display * dpy, GLXContext source, GLXContext dest, unsigned long mask) { -#ifdef GLX_USE_APPLEGL - GLXContext gc = __glXGetCurrentContext(); - int errorcode; - bool x11error; - - if(apple_glx_copy_context(gc->driContext, source->driContext, dest->driContext, - mask, &errorcode, &x11error)) { - __glXSendError(dpy, errorcode, 0, X_GLXCopyContext, x11error); - } - -#else xGLXCopyContextReq *req; GLXContext gc = __glXGetCurrentContext(); GLXContextTag tag; @@ -854,7 +766,7 @@ glXCopyContext(Display * dpy, GLXContext source, return; } -#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) +#ifdef GLX_DIRECT_RENDERING if (gc->driContext) { /* NOT_DONE: This does not work yet */ } @@ -882,7 +794,6 @@ glXCopyContext(Display * dpy, GLXContext source, req->contextTag = tag; UnlockDisplay(dpy); SyncHandle(); -#endif /* GLX_USE_APPLEGL */ } @@ -897,9 +808,6 @@ glXCopyContext(Display * dpy, GLXContext source, static Bool __glXIsDirect(Display * dpy, GLXContextID contextID) { -#ifndef GLX_USE_APPLEGL /* TODO: apple indirect */ - return GC_IS_DIRECT(gc); -#else #if !defined(USE_XCB) xGLXIsDirectReq *req; xGLXIsDirectReply reply; @@ -935,7 +843,6 @@ __glXIsDirect(Display * dpy, GLXContextID contextID) return reply.isDirect; #endif /* USE_XCB */ -#endif /* GLX_USE_APPLEGL */ } /** @@ -959,18 +866,6 @@ glXIsDirect(Display * dpy, GLXContext gc) PUBLIC GLXPixmap glXCreateGLXPixmap(Display * dpy, XVisualInfo * vis, Pixmap pixmap) { -#ifdef GLX_USE_APPLEGL - int screen = vis->screen; - __GLXscreenConfigs *const psc = GetGLXScreenConfigs(dpy, screen); - const __GLcontextModes *modes; - - modes = _gl_context_modes_find_visual(psc->visuals, vis->visualid); - - if(apple_glx_pixmap_create(dpy, vis->screen, pixmap, modes)) - return None; - - return pixmap; -#else xGLXCreateGLXPixmapReq *req; GLXPixmap xid; CARD8 opcode; @@ -992,7 +887,7 @@ glXCreateGLXPixmap(Display * dpy, XVisualInfo * vis, Pixmap pixmap) UnlockDisplay(dpy); SyncHandle(); -#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) +#ifdef GLX_DIRECT_RENDERING do { /* FIXME: Maybe delay __DRIdrawable creation until the drawable * is actually bound to a context... */ @@ -1020,7 +915,6 @@ glXCreateGLXPixmap(Display * dpy, XVisualInfo * vis, Pixmap pixmap) #endif return xid; -#endif } /* @@ -1029,10 +923,6 @@ glXCreateGLXPixmap(Display * dpy, XVisualInfo * vis, Pixmap pixmap) PUBLIC void glXDestroyGLXPixmap(Display * dpy, GLXPixmap glxpixmap) { -#ifdef GLX_USE_APPLEGL - if(apple_glx_pixmap_destroy(dpy, glxpixmap)) - __glXSendError(dpy, GLXBadPixmap, glxpixmap, X_GLXDestroyPixmap, false); -#else xGLXDestroyGLXPixmapReq *req; CARD8 opcode; @@ -1050,7 +940,7 @@ glXDestroyGLXPixmap(Display * dpy, GLXPixmap glxpixmap) UnlockDisplay(dpy); SyncHandle(); -#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) +#ifdef GLX_DIRECT_RENDERING { int screen; __GLXdisplayPrivate *const priv = __glXInitialize(dpy); @@ -1063,20 +953,11 @@ glXDestroyGLXPixmap(Display * dpy, GLXPixmap glxpixmap) } } #endif -#endif /* GLX_USE_APPLEGL */ } PUBLIC void glXSwapBuffers(Display * dpy, GLXDrawable drawable) { -#ifdef GLX_USE_APPLEGL - GLXContext gc = glXGetCurrentContext(); - if(gc && apple_glx_is_current_drawable(dpy, gc->driContext, drawable)) { - apple_glx_swap_buffers(gc->driContext); - } else { - __glXSendError(dpy, GLXBadCurrentWindow, 0, X_GLXSwapBuffers, false); - } -#else GLXContext gc; GLXContextTag tag; CARD8 opcode; @@ -1086,7 +967,7 @@ glXSwapBuffers(Display * dpy, GLXDrawable drawable) xGLXSwapBuffersReq *req; #endif -#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) +#ifdef GLX_DIRECT_RENDERING __GLXDRIdrawable *pdraw = GetGLXDRIDrawable(dpy, drawable, NULL); if (pdraw != NULL) { @@ -1131,7 +1012,6 @@ glXSwapBuffers(Display * dpy, GLXDrawable drawable) SyncHandle(); XFlush(dpy); #endif /* USE_XCB */ -#endif /* GLX_USE_APPLEGL */ } @@ -1556,12 +1436,6 @@ glXChooseVisual(Display * dpy, int screen, int *attribList) } } -#ifdef GLX_USE_APPLEGL - if(visualList && getenv("LIBGL_DUMP_VISUALID")) { - printf("visualid 0x%lx\n", visualList[0].visualid); - } -#endif - return visualList; } @@ -1584,7 +1458,7 @@ glXQueryExtensionsString(Display * dpy, int screen) } __glXCalculateUsableExtensions(psc, -#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) +#ifdef GLX_DIRECT_RENDERING (psc->driScreen != NULL), #else GL_FALSE, @@ -1695,7 +1569,6 @@ PUBLIC GLX_ALIAS(Display *, glXGetCurrentDisplayEXT, (void), (), glXGetCurrentDisplay) -#ifndef GLX_USE_APPLEGL /** * Used internally by libGL to send \c xGLXQueryContextinfoExtReq requests * to the X-server. @@ -1807,16 +1680,13 @@ static int __glXQueryContextInfo(Display * dpy, GLXContext ctx) return retval; } -#endif - PUBLIC int glXQueryContext(Display * dpy, GLXContext ctx, int attribute, int *value) { -#ifndef GLX_USE_APPLEGL int retVal; /* get the information from the server if we don't have it already */ -#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) +#ifdef GLX_DIRECT_RENDERING if (!ctx->driContext && (ctx->mode == NULL)) { #else if (ctx->mode == NULL) { @@ -1825,17 +1695,13 @@ glXQueryContext(Display * dpy, GLXContext ctx, int attribute, int *value) if (Success != retVal) return retVal; } -#endif - switch (attribute) { -#ifndef GLX_USE_APPLEGL - case GLX_SHARE_CONTEXT_EXT: + case GLX_SHARE_CONTEXT_EXT: *value = (int) (ctx->share_xid); break; case GLX_VISUAL_ID_EXT: *value = ctx->mode ? ctx->mode->visualID : None; break; -#endif case GLX_SCREEN: *value = (int) (ctx->screen); break; @@ -1864,9 +1730,6 @@ PUBLIC GLXContextID glXGetContextIDEXT(const GLXContext ctx) PUBLIC GLXContext glXImportContextEXT(Display * dpy, GLXContextID contextID) { -#ifdef GLX_USE_APPLEGL - return NULL; -#else GLXContext ctx; if (contextID == None) { @@ -1887,7 +1750,6 @@ glXImportContextEXT(Display * dpy, GLXContextID contextID) } } return ctx; -#endif } PUBLIC void @@ -2015,7 +1877,7 @@ glXGetVisualFromFBConfig(Display * dpy, GLXFBConfig config) return XGetVisualInfo(dpy, VisualIDMask, &visualTemplate, &count); } -#ifndef GLX_USE_APPLEGL + /* ** GLX_SGI_swap_control */ @@ -2353,7 +2215,6 @@ __glXWaitVideoSyncSGI(int divisor, int remainder, unsigned int *count) return GLX_BAD_CONTEXT; } -#endif /* GLX_USE_APPLEGL */ /* ** GLX_SGIX_fbconfig @@ -2380,24 +2241,17 @@ glXCreateGLXPixmapWithConfigSGIX(Display * dpy, GLXFBConfigSGIX config, Pixmap pixmap) { -#ifndef GLX_USE_APPLEGL xGLXVendorPrivateWithReplyReq *vpreq; xGLXCreateGLXPixmapWithConfigSGIXReq *req; GLXPixmap xid = None; CARD8 opcode; - __GLXscreenConfigs *psc; -#endif const __GLcontextModes *const fbconfig = (__GLcontextModes *) config; + __GLXscreenConfigs *psc; if ((dpy == NULL) || (config == NULL)) { return None; } -#ifdef GLX_USE_APPLEGL - if(apple_glx_pixmap_create(dpy, fbconfig->screen, pixmap, fbconfig)) - return None; - return pixmap; -#else psc = GetGLXScreenConfigs(dpy, fbconfig->screen); if ((psc != NULL) @@ -2425,7 +2279,6 @@ glXCreateGLXPixmapWithConfigSGIX(Display * dpy, } return xid; -#endif } PUBLIC GLXContext @@ -2471,7 +2324,7 @@ glXGetFBConfigFromVisualSGIX(Display * dpy, XVisualInfo * vis) return NULL; } -#ifndef GLX_USE_APPLEGL + /* ** GLX_SGIX_swap_group */ @@ -2539,7 +2392,7 @@ __glXGetSyncValuesOML(Display * dpy, GLXDrawable drawable, return False; } -#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) +#ifdef GLX_DIRECT_RENDERING _X_HIDDEN GLboolean __driGetMscRateOML(__DRIdrawable * draw, int32_t * numerator, int32_t * denominator, void *private) @@ -2979,7 +2832,7 @@ __glXBindTexImageEXT(Display * dpy, i++; } -#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) +#ifdef GLX_DIRECT_RENDERING if (gc->driContext) { __GLXDRIdrawable *pdraw = GetGLXDRIDrawable(dpy, drawable, NULL); @@ -3069,8 +2922,6 @@ __glXReleaseTexImageEXT(Display * dpy, GLXDrawable drawable, int buffer) /*@}*/ -#endif /* GLX_USE_APPLEGL */ - /** * \c strdup is actually not a standard ANSI C or POSIX routine. * Irix will not define it if ANSI mode is in effect. @@ -3148,7 +2999,6 @@ static const struct name_address_pair GLX_functions[] = { GLX_FUNCTION(glXQueryDrawable), GLX_FUNCTION(glXSelectEvent), -#ifndef GLX_USE_APPLEGL /*** GLX_SGI_swap_control ***/ GLX_FUNCTION2(glXSwapIntervalSGI, __glXSwapIntervalSGI), @@ -3166,7 +3016,6 @@ static const struct name_address_pair GLX_functions[] = { GLX_FUNCTION2(glXGetCurrentDisplayEXT, glXGetCurrentDisplay), GLX_FUNCTION(glXImportContextEXT), GLX_FUNCTION2(glXQueryContextInfoEXT, glXQueryContext), -#endif /*** GLX_SGIX_fbconfig ***/ GLX_FUNCTION2(glXGetFBConfigAttribSGIX, glXGetFBConfigAttrib), @@ -3176,7 +3025,6 @@ static const struct name_address_pair GLX_functions[] = { GLX_FUNCTION2(glXGetVisualFromFBConfigSGIX, glXGetVisualFromFBConfig), GLX_FUNCTION(glXGetFBConfigFromVisualSGIX), -#ifndef GLX_USE_APPLEGL /*** GLX_SGIX_pbuffer ***/ GLX_FUNCTION(glXCreateGLXPbufferSGIX), GLX_FUNCTION(glXDestroyGLXPbufferSGIX), @@ -3214,7 +3062,6 @@ static const struct name_address_pair GLX_functions[] = { GLX_FUNCTION2(glXEndFrameTrackingMESA, __glXEndFrameTrackingMESA), GLX_FUNCTION2(glXGetFrameUsageMESA, __glXGetFrameUsageMESA), GLX_FUNCTION2(glXQueryFrameTrackingMESA, __glXQueryFrameTrackingMESA), -#endif /*** GLX_ARB_get_proc_address ***/ GLX_FUNCTION(glXGetProcAddressARB), @@ -3222,7 +3069,6 @@ static const struct name_address_pair GLX_functions[] = { /*** GLX 1.4 ***/ GLX_FUNCTION2(glXGetProcAddress, glXGetProcAddressARB), -#ifndef GLX_USE_APPLEGL /*** GLX_OML_sync_control ***/ GLX_FUNCTION2(glXWaitForSbcOML, __glXWaitForSbcOML), GLX_FUNCTION2(glXWaitForMscOML, __glXWaitForMscOML), @@ -3233,9 +3079,8 @@ static const struct name_address_pair GLX_functions[] = { /*** GLX_EXT_texture_from_pixmap ***/ GLX_FUNCTION2(glXBindTexImageEXT, __glXBindTexImageEXT), GLX_FUNCTION2(glXReleaseTexImageEXT, __glXReleaseTexImageEXT), -#endif -#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) +#ifdef GLX_DIRECT_RENDERING /*** DRI configuration ***/ GLX_FUNCTION(glXGetScreenDriver), GLX_FUNCTION(glXGetDriverConfig), @@ -3244,7 +3089,7 @@ static const struct name_address_pair GLX_functions[] = { {NULL, NULL} /* end of list */ }; -#ifndef GLX_USE_APPLEGL + static const GLvoid * get_glx_proc_address(const char *funcName) { @@ -3258,7 +3103,7 @@ get_glx_proc_address(const char *funcName) return NULL; } -#endif + /** * Get the address of a named GL function. This is the pre-GLX 1.4 name for @@ -3281,15 +3126,13 @@ PUBLIC void (*glXGetProcAddressARB(const GLubyte * procName)) (void) * DRI based drivers from searching the core GL function table for * internal API functions. */ -#ifdef GLX_USE_APPLEGL - f = (gl_function) apple_glx_get_proc_address(procName); -#else + f = (gl_function) get_glx_proc_address((const char *) procName); if ((f == NULL) && (procName[0] == 'g') && (procName[1] == 'l') && (procName[2] != 'X')) { f = (gl_function) _glapi_get_proc_address((const char *) procName); } -#endif + return f; } @@ -3312,7 +3155,7 @@ PUBLIC void (*glXGetProcAddress(const GLubyte * procName)) (void) #endif /* __GNUC__ */ -#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) +#ifdef GLX_DIRECT_RENDERING /** * Get the unadjusted system time (UST). Currently, the UST is measured in * microseconds since Epoc. The actual resolution of the UST may vary from |