mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-27 01:10:25 +01:00
dri2_glx: Put the invalidate b/c code back in
The backwards compatibility code calls the DRI driver invalidate hook
on swap buffer and flush front buffer. This lets the DRI driver rely
on invalidate callbacks and drop the glViewport() hack, even if the
server doesn't send invalidate events. This is essentially a revert
of 2d00d16da7, except that we now also
pass the __DRI_USE_INVALIDATE extension even when the server doesn't
have DRI2 invalidate events.
This commit is contained in:
parent
c8f407bcec
commit
4cd259ca59
1 changed files with 13 additions and 6 deletions
|
|
@ -361,6 +361,14 @@ dri2WaitGL(__GLXDRIdrawable * pdraw)
|
|||
static void
|
||||
dri2FlushFrontBuffer(__DRIdrawable *driDrawable, void *loaderPrivate)
|
||||
{
|
||||
__GLXDRIdrawablePrivate *pdraw = loaderPrivate;
|
||||
__GLXdisplayPrivate *priv = __glXInitialize(pdraw->base.psc->dpy);
|
||||
__GLXDRIdisplayPrivate *pdp = (__GLXDRIdisplayPrivate *)priv->dri2Display;
|
||||
|
||||
/* Old servers don't send invalidate events */
|
||||
if (!pdp->invalidateAvailable)
|
||||
dri2InvalidateBuffers(priv->dpy, pdraw->base.drawable);
|
||||
|
||||
dri2WaitGL(loaderPrivate);
|
||||
}
|
||||
|
||||
|
|
@ -421,16 +429,16 @@ dri2SwapBuffers(__GLXDRIdrawable *pdraw, int64_t target_msc, int64_t divisor,
|
|||
(*pdraw->psc->f->flush)(pdraw->driDrawable);
|
||||
#endif
|
||||
|
||||
/* Old servers don't send invalidate events */
|
||||
if (!pdp->invalidateAvailable)
|
||||
dri2InvalidateBuffers(dpyPriv->dpy, pdraw->drawable);
|
||||
|
||||
/* Old servers can't handle swapbuffers */
|
||||
if (!pdp->swapAvailable) {
|
||||
dri2CopySubBuffer(pdraw, 0, 0, priv->width, priv->height);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Old servers don't send invalidate events */
|
||||
if (!pdp->invalidateAvailable)
|
||||
dri2InvalidateBuffers(dpyPriv->dpy, pdraw->drawable);
|
||||
|
||||
#ifdef X_DRI2SwapBuffers
|
||||
DRI2SwapBuffers(pdraw->psc->dpy, pdraw->xDrawable, target_msc, divisor,
|
||||
remainder, &ret);
|
||||
|
|
@ -737,8 +745,7 @@ dri2CreateDisplay(Display * dpy)
|
|||
pdp->loader_extensions[i++] = &systemTimeExtension.base;
|
||||
|
||||
#ifdef __DRI_USE_INVALIDATE
|
||||
if (pdp->invalidateAvailable)
|
||||
pdp->loader_extensions[i++] = &dri2UseInvalidate.base;
|
||||
pdp->loader_extensions[i++] = &dri2UseInvalidate.base;
|
||||
#endif
|
||||
pdp->loader_extensions[i++] = NULL;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue