On Fri, Nov 19, 2010 at 1:52 PM, Adam Jackson <[email protected]> wrote: > Never implemented in any open source driver. The implementation > assumed explicit DDX driver knowledge of how the client-side driver > worked, since at the time the server's GL renderer was not a DRI driver. > But now, it is, so any implementation of these should be done with > additional DRI driver API, like the swap control extension.
Yeah, kill it. Signed-off-by: Kristian Høgsberg <[email protected]> > Signed-off-by: Adam Jackson <[email protected]> > --- > glx/Makefile.am | 1 - > glx/g_disptab.h | 52 ---------- > glx/glxcmds.c | 233 > ---------------------------------------------- > glx/glxcmdsswap.c | 1 - > glx/glxdri.c | 1 - > glx/glxdri2.c | 1 - > glx/glxdriswrast.c | 1 - > glx/glxext.c | 19 +---- > glx/glxscreens.c | 27 ------ > glx/glxscreens.h | 18 ---- > glx/indirect_table.c | 1 - > glx/xfont.c | 1 - > hw/xquartz/GL/indirect.c | 2 - > hw/xwin/glx/indirect.c | 2 - > 14 files changed, 1 insertions(+), 359 deletions(-) > delete mode 100644 glx/g_disptab.h > > diff --git a/glx/Makefile.am b/glx/Makefile.am > index 9d9fa3c..d708872 100644 > --- a/glx/Makefile.am > +++ b/glx/Makefile.am > @@ -68,7 +68,6 @@ libglx_la_SOURCES = \ > indirect_program.c \ > indirect_table.h \ > indirect_texture_compression.c \ > - g_disptab.h \ > glxbyteorder.h \ > glxcmds.c \ > glxcmdsswap.c \ > diff --git a/glx/g_disptab.h b/glx/g_disptab.h > deleted file mode 100644 > index 9b4308b..0000000 > --- a/glx/g_disptab.h > +++ /dev/null > @@ -1,52 +0,0 @@ > -/* DO NOT EDIT - THIS FILE IS AUTOMATICALLY GENERATED */ > -#ifdef HAVE_DIX_CONFIG_H > -#include <dix-config.h> > -#endif > - > -#ifndef _GLX_g_disptab_h_ > -#define _GLX_g_disptab_h_ > -/* > - * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008) > - * Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved. > - * > - * Permission is hereby granted, free of charge, to any person obtaining a > - * copy of this software and associated documentation files (the "Software"), > - * to deal in the Software without restriction, including without limitation > - * the rights to use, copy, modify, merge, publish, distribute, sublicense, > - * and/or sell copies of the Software, and to permit persons to whom the > - * Software is furnished to do so, subject to the following conditions: > - * > - * The above copyright notice including the dates of first publication and > - * either this permission notice or a reference to > - * http://oss.sgi.com/projects/FreeB/ > - * shall be included in all copies or substantial portions of the Software. > - * > - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS > - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > MERCHANTABILITY, > - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL > - * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER > LIABILITY, > - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF > - * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE > - * SOFTWARE. > - * > - * Except as contained in this notice, the name of Silicon Graphics, Inc. > - * shall not be used in advertising or otherwise to promote the sale, use or > - * other dealings in this Software without prior written authorization from > - * Silicon Graphics, Inc. > - */ > - > -extern int __glXDisp_BindSwapBarrierSGIX(__GLXclientState *cl, GLbyte *pc); > -extern int __glXDisp_QueryMaxSwapBarriersSGIX(__GLXclientState *cl, GLbyte > *pc); > -extern int __glXDisp_QueryHyperpipeNetworkSGIX(__GLXclientState *cl, GLbyte > *pc); > -extern int __glXDisp_DestroyHyperpipeConfigSGIX (__GLXclientState *cl, > GLbyte *pc); > -extern int __glXDisp_QueryHyperpipeConfigSGIX(__GLXclientState *cl, GLbyte > *pc); > -extern int __glXDisp_HyperpipeConfigSGIX(__GLXclientState *cl, GLbyte *pc); > - > -extern int __glXDispSwap_BindSwapBarrierSGIX(__GLXclientState *cl, GLbyte > *pc); > -extern int __glXDispSwap_QueryMaxSwapBarriersSGIX(__GLXclientState *cl, > GLbyte *pc); > -extern int __glXDispSwap_QueryHyperpipeNetworkSGIX(__GLXclientState *cl, > GLbyte *pc); > -extern int __glXDispSwap_DestroyHyperpipeConfigSGIX (__GLXclientState *cl, > GLbyte *pc); > -extern int __glXDispSwap_QueryHyperpipeConfigSGIX(__GLXclientState *cl, > GLbyte *pc); > -extern int __glXDispSwap_HyperpipeConfigSGIX(__GLXclientState *cl, GLbyte > *pc); > - > -#endif /* _GLX_g_disptab_h_ */ > diff --git a/glx/glxcmds.c b/glx/glxcmds.c > index 8d13c15..de9c3f0 100644 > --- a/glx/glxcmds.c > +++ b/glx/glxcmds.c > @@ -38,7 +38,6 @@ > #include "glxserver.h" > #include <GL/glxtokens.h> > #include <unpack.h> > -#include "g_disptab.h" > #include <pixmapstr.h> > #include <windowstr.h> > #include "glxutil.h" > @@ -2061,238 +2060,6 @@ int __glXDisp_RenderLarge(__GLXclientState *cl, > GLbyte *pc) > } > } > > -extern RESTYPE __glXSwapBarrierRes; > - > -int __glXDisp_BindSwapBarrierSGIX(__GLXclientState *cl, GLbyte *pc) > -{ > - ClientPtr client = cl->client; > - xGLXBindSwapBarrierSGIXReq *req = (xGLXBindSwapBarrierSGIXReq *) pc; > - XID drawable = req->drawable; > - int barrier = req->barrier; > - DrawablePtr pDraw; > - int screen, rc; > - __GLXscreen *pGlxScreen; > - > - rc = dixLookupDrawable(&pDraw, drawable, client, 0, DixGetAttrAccess); > - pGlxScreen = glxGetScreen(pDraw->pScreen); > - if (rc == Success && (pDraw->type == DRAWABLE_WINDOW)) { > - screen = pDraw->pScreen->myNum; > - if (pGlxScreen->swapBarrierFuncs) { > - int ret = > pGlxScreen->swapBarrierFuncs->bindSwapBarrierFunc(screen, drawable, barrier); > - if (ret == Success) { > - if (barrier) > - /* add source for cleanup when drawable is gone */ > - AddResource(drawable, __glXSwapBarrierRes, > (pointer)(intptr_t)screen); > - else > - /* delete source */ > - FreeResourceByType(drawable, __glXSwapBarrierRes, FALSE); > - } > - return ret; > - } > - } > - client->errorValue = drawable; > - return __glXError(GLXBadDrawable); > -} > - > - > -int __glXDisp_QueryMaxSwapBarriersSGIX(__GLXclientState *cl, GLbyte *pc) > -{ > - ClientPtr client = cl->client; > - xGLXQueryMaxSwapBarriersSGIXReq *req = > - (xGLXQueryMaxSwapBarriersSGIXReq *) pc; > - xGLXQueryMaxSwapBarriersSGIXReply reply; > - int screen = req->screen; > - __GLXscreen *pGlxScreen; > - > - pGlxScreen = glxGetScreen(screenInfo.screens[screen]); > - if (pGlxScreen->swapBarrierFuncs) > - reply.max = > pGlxScreen->swapBarrierFuncs->queryMaxSwapBarriersFunc(screen); > - else > - reply.max = 0; > - > - > - reply.length = 0; > - reply.type = X_Reply; > - reply.sequenceNumber = client->sequence; > - > - if (client->swapped) { > - __GLX_DECLARE_SWAP_VARIABLES; > - __GLX_SWAP_SHORT(&reply.sequenceNumber); > - } > - > - WriteToClient(client, sz_xGLXQueryMaxSwapBarriersSGIXReply, > - (char *) &reply); > - return Success; > -} > - > -#define GLX_BAD_HYPERPIPE_SGIX 92 > - > -int __glXDisp_QueryHyperpipeNetworkSGIX(__GLXclientState *cl, GLbyte *pc) > -{ > - ClientPtr client = cl->client; > - xGLXQueryHyperpipeNetworkSGIXReq * req = > (xGLXQueryHyperpipeNetworkSGIXReq *) pc; > - xGLXQueryHyperpipeNetworkSGIXReply reply; > - int screen = req->screen; > - void *rdata = NULL; > - > - int length=0; > - int npipes=0; > - > - int n= 0; > - __GLXscreen *pGlxScreen; > - > - pGlxScreen = glxGetScreen(screenInfo.screens[screen]); > - if (pGlxScreen->hyperpipeFuncs) { > - rdata = > - (pGlxScreen->hyperpipeFuncs->queryHyperpipeNetworkFunc(screen, > &npipes, &n)); > - } > - length = __GLX_PAD(n) >> 2; > - reply.type = X_Reply; > - reply.sequenceNumber = client->sequence; > - reply.length = length; > - reply.n = n; > - reply.npipes = npipes; > - > - if (client->swapped) { > - __GLX_DECLARE_SWAP_VARIABLES; > - __GLX_SWAP_SHORT(&reply.sequenceNumber); > - __GLX_SWAP_INT(&reply.length); > - __GLX_SWAP_INT(&reply.n); > - __GLX_SWAP_INT(&reply.npipes); > - } > - WriteToClient(client, sz_xGLXQueryHyperpipeNetworkSGIXReply, > - (char *) &reply); > - > - WriteToClient(client, length << 2, (char *)rdata); > - > - return Success; > -} > - > -int __glXDisp_DestroyHyperpipeConfigSGIX (__GLXclientState *cl, GLbyte *pc) > -{ > - ClientPtr client = cl->client; > - xGLXDestroyHyperpipeConfigSGIXReq * req = > - (xGLXDestroyHyperpipeConfigSGIXReq *) pc; > - xGLXDestroyHyperpipeConfigSGIXReply reply; > - int screen = req->screen; > - int success = GLX_BAD_HYPERPIPE_SGIX; > - int hpId ; > - __GLXscreen *pGlxScreen; > - > - hpId = req->hpId; > - > - pGlxScreen = glxGetScreen(screenInfo.screens[screen]); > - if (pGlxScreen->hyperpipeFuncs) { > - success = > pGlxScreen->hyperpipeFuncs->destroyHyperpipeConfigFunc(screen, hpId); > - } > - > - reply.type = X_Reply; > - reply.sequenceNumber = client->sequence; > - reply.length = __GLX_PAD(0) >> 2; > - reply.n = 0; > - reply.success = success; > - > - > - if (client->swapped) { > - __GLX_DECLARE_SWAP_VARIABLES; > - __GLX_SWAP_SHORT(&reply.sequenceNumber); > - } > - WriteToClient(client, > - sz_xGLXDestroyHyperpipeConfigSGIXReply, > - (char *) &reply); > - return Success; > -} > - > -int __glXDisp_QueryHyperpipeConfigSGIX(__GLXclientState *cl, GLbyte *pc) > -{ > - ClientPtr client = cl->client; > - xGLXQueryHyperpipeConfigSGIXReq * req = > - (xGLXQueryHyperpipeConfigSGIXReq *) pc; > - xGLXQueryHyperpipeConfigSGIXReply reply; > - int screen = req->screen; > - void *rdata = NULL; > - int length; > - int npipes=0; > - int n= 0; > - int hpId; > - __GLXscreen *pGlxScreen; > - > - hpId = req->hpId; > - > - pGlxScreen = glxGetScreen(screenInfo.screens[screen]); > - if (pGlxScreen->hyperpipeFuncs) { > - rdata = pGlxScreen->hyperpipeFuncs->queryHyperpipeConfigFunc(screen, > hpId,&npipes, &n); > - } > - > - length = __GLX_PAD(n) >> 2; > - reply.type = X_Reply; > - reply.sequenceNumber = client->sequence; > - reply.length = length; > - reply.n = n; > - reply.npipes = npipes; > - > - > - if (client->swapped) { > - __GLX_DECLARE_SWAP_VARIABLES; > - __GLX_SWAP_SHORT(&reply.sequenceNumber); > - __GLX_SWAP_INT(&reply.length); > - __GLX_SWAP_INT(&reply.n); > - __GLX_SWAP_INT(&reply.npipes); > - } > - > - WriteToClient(client, sz_xGLXQueryHyperpipeConfigSGIXReply, > - (char *) &reply); > - > - WriteToClient(client, length << 2, (char *)rdata); > - > - return Success; > -} > - > -int __glXDisp_HyperpipeConfigSGIX(__GLXclientState *cl, GLbyte *pc) > -{ > - ClientPtr client = cl->client; > - xGLXHyperpipeConfigSGIXReq * req = > - (xGLXHyperpipeConfigSGIXReq *) pc; > - xGLXHyperpipeConfigSGIXReply reply; > - int screen = req->screen; > - void *rdata; > - > - int npipes=0, networkId; > - int hpId=-1; > - __GLXscreen *pGlxScreen; > - > - pGlxScreen = glxGetScreen(screenInfo.screens[screen]); > - networkId = (int)req->networkId; > - npipes = (int)req->npipes; > - rdata = (void *)(req +1); > - > - if (pGlxScreen->hyperpipeFuncs) { > - pGlxScreen->hyperpipeFuncs->hyperpipeConfigFunc(screen,networkId, > - &hpId, &npipes, > - (void *) rdata); > - } > - > - reply.type = X_Reply; > - reply.sequenceNumber = client->sequence; > - reply.length = __GLX_PAD(0) >> 2; > - reply.n = 0; > - reply.npipes = npipes; > - reply.hpId = hpId; > - > - if (client->swapped) { > - __GLX_DECLARE_SWAP_VARIABLES; > - __GLX_SWAP_SHORT(&reply.sequenceNumber); > - __GLX_SWAP_INT(&reply.npipes); > - __GLX_SWAP_INT(&reply.hpId); > - } > - > - WriteToClient(client, sz_xGLXHyperpipeConfigSGIXReply, > - (char *) &reply); > - > - return Success; > -} > - > - > /************************************************************************/ > > /* > diff --git a/glx/glxcmdsswap.c b/glx/glxcmdsswap.c > index c414dc8..ce4d69a 100644 > --- a/glx/glxcmdsswap.c > +++ b/glx/glxcmdsswap.c > @@ -37,7 +37,6 @@ > #include "glxutil.h" > #include <GL/glxtokens.h> > #include <unpack.h> > -#include "g_disptab.h" > #include <pixmapstr.h> > #include <windowstr.h> > #include "glxext.h" > diff --git a/glx/glxdri.c b/glx/glxdri.c > index 41482c9..64ebe0a 100644 > --- a/glx/glxdri.c > +++ b/glx/glxdri.c > @@ -56,7 +56,6 @@ > #include "glxutil.h" > #include "glxdricommon.h" > > -#include "g_disptab.h" > #include "glapitable.h" > #include "glapi.h" > #include "glthread.h" > diff --git a/glx/glxdri2.c b/glx/glxdri2.c > index c2305ad..ad1d31d 100644 > --- a/glx/glxdri2.c > +++ b/glx/glxdri2.c > @@ -48,7 +48,6 @@ > #include "glxutil.h" > #include "glxdricommon.h" > > -#include "g_disptab.h" > #include "glapitable.h" > #include "glapi.h" > #include "glthread.h" > diff --git a/glx/glxdriswrast.c b/glx/glxdriswrast.c > index dc12f57..08ea338 100644 > --- a/glx/glxdriswrast.c > +++ b/glx/glxdriswrast.c > @@ -48,7 +48,6 @@ > #include "glxutil.h" > #include "glxdricommon.h" > > -#include "g_disptab.h" > #include "glapitable.h" > #include "glapi.h" > #include "glthread.h" > diff --git a/glx/glxext.c b/glx/glxext.c > index f5ebe4f..4bd5d6b 100644 > --- a/glx/glxext.c > +++ b/glx/glxext.c > @@ -39,7 +39,6 @@ > #include <registry.h> > #include "privates.h" > #include <os.h> > -#include "g_disptab.h" > #include "unpack.h" > #include "glxutil.h" > #include "glxext.h" > @@ -58,7 +57,6 @@ __GLXcontext *__glXContextList; > */ > RESTYPE __glXContextRes; > RESTYPE __glXDrawableRes; > -RESTYPE __glXSwapBarrierRes; > > /* > ** Reply for most singles. > @@ -228,19 +226,6 @@ GLboolean __glXFreeContext(__GLXcontext *cx) > return GL_TRUE; > } > > -extern RESTYPE __glXSwapBarrierRes; > - > -static int SwapBarrierGone(int screen, XID drawable) > -{ > - __GLXscreen *pGlxScreen = glxGetScreen(screenInfo.screens[screen]); > - > - if (pGlxScreen->swapBarrierFuncs) { > - pGlxScreen->swapBarrierFuncs->bindSwapBarrierFunc(screen, drawable, > 0); > - } > - FreeResourceByType(drawable, __glXSwapBarrierRes, FALSE); > - return True; > -} > - > /************************************************************************/ > > /* > @@ -358,9 +343,7 @@ void GlxExtensionInit(void) > "GLXContext"); > __glXDrawableRes = CreateNewResourceType((DeleteType)DrawableGone, > "GLXDrawable"); > - __glXSwapBarrierRes = CreateNewResourceType((DeleteType)SwapBarrierGone, > - "GLXSwapBarrier"); > - if (!__glXContextRes || !__glXDrawableRes || !__glXSwapBarrierRes) > + if (!__glXContextRes || !__glXDrawableRes) > return; > > if (!dixRegisterPrivateKey(&glxClientPrivateKeyRec, PRIVATE_CLIENT, > sizeof (__GLXclientState))) > diff --git a/glx/glxscreens.c b/glx/glxscreens.c > index 8515e14..496cf9e 100644 > --- a/glx/glxscreens.c > +++ b/glx/glxscreens.c > @@ -175,8 +175,6 @@ static char GLXServerExtensions[] = > "GLX_SGI_make_current_read " > #ifndef __APPLE__ > "GLX_SGIS_multisample " > - "GLX_SGIX_hyperpipe " > - "GLX_SGIX_swap_barrier " > #endif > "GLX_SGIX_fbconfig " > "GLX_SGIX_pbuffer " > @@ -184,31 +182,6 @@ static char GLXServerExtensions[] = > "GLX_INTEL_swap_event" > ; > > -/* > - * If your DDX driver wants to register support for swap barriers or > hyperpipe > - * topology, it should call __glXHyperpipeInit() or __glXSwapBarrierInit() > - * with a dispatch table of functions to handle the requests. In the > XFree86 > - * DDX, for example, you would call these near the bottom of the driver's > - * ScreenInit method, after DRI has been initialized. > - * > - * This should be replaced with a better method when we teach the server how > - * to load DRI drivers. > - */ > - > -void __glXHyperpipeInit(int screen, __GLXHyperpipeExtensionFuncs *funcs) > -{ > - __GLXscreen *pGlxScreen = glxGetScreen(screenInfo.screens[screen]); > - > - pGlxScreen->hyperpipeFuncs = funcs; > -} > - > -void __glXSwapBarrierInit(int screen, __GLXSwapBarrierExtensionFuncs *funcs) > -{ > - __GLXscreen *pGlxScreen = glxGetScreen(screenInfo.screens[screen]); > - > - pGlxScreen->swapBarrierFuncs = funcs; > -} > - > static Bool > glxCloseScreen (int index, ScreenPtr pScreen) > { > diff --git a/glx/glxscreens.h b/glx/glxscreens.h > index 861e03c..93b4109 100644 > --- a/glx/glxscreens.h > +++ b/glx/glxscreens.h > @@ -35,21 +35,6 @@ > * Silicon Graphics, Inc. > */ > > -typedef struct { > - void * (* queryHyperpipeNetworkFunc)(int, int *, int *); > - void * (* queryHyperpipeConfigFunc)(int, int, int *, int *); > - int (* destroyHyperpipeConfigFunc)(int, int); > - void * (* hyperpipeConfigFunc)(int, int, int *, int *, void *); > -} __GLXHyperpipeExtensionFuncs; > - > -typedef struct { > - int (* bindSwapBarrierFunc)(int, XID, int); > - int (* queryMaxSwapBarriersFunc)(int); > -} __GLXSwapBarrierExtensionFuncs; > - > -void __glXHyperpipeInit(int screen, __GLXHyperpipeExtensionFuncs *funcs); > -void __glXSwapBarrierInit(int screen, __GLXSwapBarrierExtensionFuncs *funcs); > - > typedef struct __GLXconfig __GLXconfig; > struct __GLXconfig { > __GLXconfig *next; > @@ -144,9 +129,6 @@ struct __GLXscreen { > int (*swapInterval) (__GLXdrawable *drawable, > int interval); > > - __GLXHyperpipeExtensionFuncs *hyperpipeFuncs; > - __GLXSwapBarrierExtensionFuncs *swapBarrierFuncs; > - > ScreenPtr pScreen; > > /* Linked list of valid fbconfigs for this screen. */ > diff --git a/glx/indirect_table.c b/glx/indirect_table.c > index cb32026..01d1da3 100644 > --- a/glx/indirect_table.c > +++ b/glx/indirect_table.c > @@ -30,7 +30,6 @@ > #include "glxext.h" > #include "indirect_dispatch.h" > #include "indirect_reqsize.h" > -#include "g_disptab.h" > #include "indirect_table.h" > > /*****************************************************************/ > diff --git a/glx/xfont.c b/glx/xfont.c > index b4081cf..9943784 100644 > --- a/glx/xfont.c > +++ b/glx/xfont.c > @@ -35,7 +35,6 @@ > #include "glxserver.h" > #include "glxutil.h" > #include "unpack.h" > -#include "g_disptab.h" > #include "glapitable.h" > #include "glapi.h" > #include "glthread.h" > diff --git a/hw/xquartz/GL/indirect.c b/hw/xquartz/GL/indirect.c > index 58f78fb..bdc7c3d 100644 > --- a/hw/xquartz/GL/indirect.c > +++ b/hw/xquartz/GL/indirect.c > @@ -586,8 +586,6 @@ static __GLXscreen * __glXAquaScreenProbe(ScreenPtr > pScreen) { > screen->base.createContext = __glXAquaScreenCreateContext; > screen->base.createDrawable = __glXAquaScreenCreateDrawable; > screen->base.swapInterval = /*FIXME*/ NULL; > - screen->base.hyperpipeFuncs = NULL; > - screen->base.swapBarrierFuncs = NULL; > screen->base.pScreen = pScreen; > > screen->base.fbconfigs = > __glXAquaCreateVisualConfigs(&screen->base.numFBConfigs, pScreen->myNum); > diff --git a/hw/xwin/glx/indirect.c b/hw/xwin/glx/indirect.c > index 3891885..baefe04 100644 > --- a/hw/xwin/glx/indirect.c > +++ b/hw/xwin/glx/indirect.c > @@ -649,8 +649,6 @@ glxWinScreenProbe(ScreenPtr pScreen) > screen->base.createContext = glxWinCreateContext; > screen->base.createDrawable = glxWinCreateDrawable; > screen->base.swapInterval = glxWinScreenSwapInterval; > - screen->base.hyperpipeFuncs = NULL; > - screen->base.swapBarrierFuncs = NULL; > screen->base.pScreen = pScreen; > > if (strstr(wgl_extensions, "WGL_ARB_pixel_format")) > -- > 1.7.3.1 > > _______________________________________________ > [email protected]: X.Org development > Archives: http://lists.x.org/archives/xorg-devel > Info: http://lists.x.org/mailman/listinfo/xorg-devel > _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
