diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c index 15252b5b269..4af4b69114f 100644 --- a/src/glx/dri2_glx.c +++ b/src/glx/dri2_glx.c @@ -157,7 +157,7 @@ dri2_bind_context(struct glx_context *context, struct glx_context *old, /* If the server doesn't send invalidate events, we may miss a * resize before the rendering starts. Invalidate the buffers now * so the driver will recheck before rendering starts. */ - pdp = (struct dri2_display *) dpyPriv->dri2Display; + pdp = (struct dri2_display *) dpyPriv->driDisplay; if (!pdp->invalidateAvailable && pdraw) { dri2InvalidateBuffers(psc->base.dpy, pdraw->base.xDrawable); if (pread != pdraw && pread) @@ -306,7 +306,7 @@ dri2DestroyDrawable(__GLXDRIdrawable *base) struct dri2_screen *psc = (struct dri2_screen *) base->psc; struct dri2_drawable *pdraw = (struct dri2_drawable *) base; struct glx_display *dpyPriv = psc->base.display; - struct dri2_display *pdp = (struct dri2_display *)dpyPriv->dri2Display; + struct dri2_display *pdp = (struct dri2_display *)dpyPriv->driDisplay; __glxHashDelete(pdp->dri2Hash, pdraw->base.xDrawable); (*psc->core->destroyDrawable) (pdraw->driDrawable); @@ -368,7 +368,7 @@ dri2CreateDrawable(struct glx_screen *base, XID xDrawable, } DRI2CreateDrawable(psc->base.dpy, xDrawable); - pdp = (struct dri2_display *)dpyPriv->dri2Display; + pdp = (struct dri2_display *)dpyPriv->driDisplay; /* Create a new drawable */ pdraw->driDrawable = (*psc->dri2->createNewDrawable) (psc->driScreen, @@ -651,7 +651,7 @@ dri2FlushFrontBuffer(__DRIdrawable *driDrawable, void *loaderPrivate) if (priv == NULL) return; - pdp = (struct dri2_display *) priv->dri2Display; + pdp = (struct dri2_display *) priv->driDisplay; gc = __glXGetCurrentContext(); dri2Throttle(psc, pdraw, __DRI2_THROTTLE_FLUSHFRONT); @@ -796,7 +796,7 @@ dri2SwapBuffers(__GLXDRIdrawable *pdraw, int64_t target_msc, int64_t divisor, struct glx_display *dpyPriv = __glXInitialize(priv->base.psc->dpy); struct dri2_screen *psc = (struct dri2_screen *) priv->base.psc; struct dri2_display *pdp = - (struct dri2_display *)dpyPriv->dri2Display; + (struct dri2_display *)dpyPriv->driDisplay; int64_t ret = 0; /* Check we have the right attachments */ @@ -995,7 +995,7 @@ dri2_bind_tex_image(Display * dpy, if (dpyPriv == NULL) return; - pdp = (struct dri2_display *) dpyPriv->dri2Display; + pdp = (struct dri2_display *) dpyPriv->driDisplay; if (pdraw != NULL) { psc = (struct dri2_screen *) base->psc; @@ -1060,7 +1060,7 @@ dri2BindExtensions(struct dri2_screen *psc, struct glx_display * priv, const char *driverName) { const struct dri2_display *const pdp = (struct dri2_display *) - priv->dri2Display; + priv->driDisplay; const __DRIextension **extensions; int i; @@ -1181,7 +1181,7 @@ dri2CreateScreen(int screen, struct glx_display * priv) const __DRIconfig **driver_configs; const __DRIextension **extensions; const struct dri2_display *const pdp = (struct dri2_display *) - priv->dri2Display; + priv->driDisplay; struct dri2_screen *psc; __GLXDRIscreen *psp; struct glx_config *configs = NULL, *visuals = NULL; @@ -1376,7 +1376,7 @@ _X_HIDDEN __GLXDRIdrawable * dri2GetGlxDrawableFromXDrawableId(Display *dpy, XID id) { struct glx_display *d = __glXInitialize(dpy); - struct dri2_display *pdp = (struct dri2_display *) d->dri2Display; + struct dri2_display *pdp = (struct dri2_display *) d->driDisplay; __GLXDRIdrawable *pdraw; if (__glxHashLookup(pdp->dri2Hash, id, (void *) &pdraw) == 0) diff --git a/src/glx/dri3_glx.c b/src/glx/dri3_glx.c index ce3d040ecbe..7368e9d2fcd 100644 --- a/src/glx/dri3_glx.c +++ b/src/glx/dri3_glx.c @@ -363,7 +363,7 @@ dri3_create_drawable(struct glx_screen *base, XID xDrawable, bool has_multibuffer = false; #ifdef HAVE_DRI3_MODIFIERS const struct dri3_display *const pdp = (struct dri3_display *) - base->display->dri3Display; + base->display->driDisplay; #endif pdraw = calloc(1, sizeof(*pdraw)); @@ -836,7 +836,7 @@ dri3_create_screen(int screen, struct glx_display * priv) const __DRIconfig **driver_configs; const __DRIextension **extensions; const struct dri3_display *const pdp = (struct dri3_display *) - priv->dri3Display; + priv->driDisplay; struct dri3_screen *psc; __GLXDRIscreen *psp; struct glx_config *configs = NULL, *visuals = NULL; diff --git a/src/glx/glxclient.h b/src/glx/glxclient.h index 1f199054410..347b824bdc3 100644 --- a/src/glx/glxclient.h +++ b/src/glx/glxclient.h @@ -602,16 +602,12 @@ struct glx_display #if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) __glxHashTable *drawHash; - +#endif +#if defined(GLX_DIRECT_RENDERING) || defined(GLX_USE_WINDOWSGL) /** * Per display direct rendering interface functions and data. */ - __GLXDRIdisplay *driswDisplay; - __GLXDRIdisplay *dri2Display; - __GLXDRIdisplay *dri3Display; -#endif -#ifdef GLX_USE_WINDOWSGL - __GLXDRIdisplay *windowsdriDisplay; + __GLXDRIdisplay *driDisplay; #endif }; diff --git a/src/glx/glxext.c b/src/glx/glxext.c index ac664a4a113..16e7ee4f160 100644 --- a/src/glx/glxext.c +++ b/src/glx/glxext.c @@ -256,26 +256,9 @@ glx_display_free(struct glx_display *priv) __glxHashDestroy(priv->drawHash); /* Free the direct rendering per display data */ - if (priv->driswDisplay) - (*priv->driswDisplay->destroyDisplay) (priv->driswDisplay); - priv->driswDisplay = NULL; - -#if defined (GLX_USE_DRM) - if (priv->dri2Display) - (*priv->dri2Display->destroyDisplay) (priv->dri2Display); - priv->dri2Display = NULL; - - if (priv->dri3Display) - (*priv->dri3Display->destroyDisplay) (priv->dri3Display); - priv->dri3Display = NULL; -#endif /* GLX_USE_DRM */ - -#if defined(GLX_USE_WINDOWSGL) - if (priv->windowsdriDisplay) - (*priv->windowsdriDisplay->destroyDisplay) (priv->windowsdriDisplay); - priv->windowsdriDisplay = NULL; -#endif /* GLX_USE_WINDOWSGL */ - + if (priv->driDisplay) + priv->driDisplay->destroyDisplay(priv->driDisplay); + priv->driDisplay = NULL; #endif /* GLX_DIRECT_RENDERING && !GLX_USE_APPLEGL */ free((char *) priv); @@ -808,22 +791,8 @@ AllocAndFetchScreenConfigs(Display * dpy, struct glx_display * priv) for (i = 0; i < screens; i++, psc++) { psc = NULL; #if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) -#if defined(GLX_USE_DRM) -#if defined(HAVE_DRI3) - if (priv->dri3Display) - psc = (*priv->dri3Display->createScreen) (i, priv); -#endif /* HAVE_DRI3 */ - if (psc == NULL && priv->dri2Display) - psc = (*priv->dri2Display->createScreen) (i, priv); -#endif /* GLX_USE_DRM */ - -#ifdef GLX_USE_WINDOWSGL - if (psc == NULL && priv->windowsdriDisplay) - psc = (*priv->windowsdriDisplay->createScreen) (i, priv); -#endif - - if (psc == NULL && priv->driswDisplay) - psc = (*priv->driswDisplay->createScreen) (i, priv); + if (priv->driDisplay) + psc = priv->driDisplay->createScreen(i, priv); #endif /* GLX_DIRECT_RENDERING && !GLX_USE_APPLEGL */ #if defined(GLX_USE_APPLEGL) @@ -918,14 +887,14 @@ __glXInitialize(Display * dpy) if (glx_direct && glx_accel) { #if defined(HAVE_DRI3) if (!env_var_as_boolean("LIBGL_DRI3_DISABLE", false)) - dpyPriv->dri3Display = dri3_create_display(dpy); + dpyPriv->driDisplay = dri3_create_display(dpy); #endif /* HAVE_DRI3 */ if (!env_var_as_boolean("LIBGL_DRI2_DISABLE", false)) - dpyPriv->dri2Display = dri2CreateDisplay(dpy); + dpyPriv->driDisplay = dri2CreateDisplay(dpy); } #endif /* GLX_USE_DRM */ - if (glx_direct) - dpyPriv->driswDisplay = driswCreateDisplay(dpy); + if (glx_direct && !dpyPriv->driDisplay) + dpyPriv->driDisplay = driswCreateDisplay(dpy); #endif /* GLX_DIRECT_RENDERING && !GLX_USE_APPLEGL */ #ifdef GLX_USE_APPLEGL @@ -936,8 +905,8 @@ __glXInitialize(Display * dpy) #endif #ifdef GLX_USE_WINDOWSGL - if (glx_direct && glx_accel) - dpyPriv->windowsdriDisplay = driwindowsCreateDisplay(dpy); + if (glx_direct && glx_accel && !dpyPriv->driDisplay) + dpyPriv->driDisplay = driwindowsCreateDisplay(dpy); #endif if (!AllocAndFetchScreenConfigs(dpy, dpyPriv)) {