mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-02 16:38:09 +02:00
glx: Invalidate buffers after binding a drawable
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. https://bugs.freedesktop.org/show_bug.cgi?id=29984 https://bugs.freedesktop.org/show_bug.cgi?id=30155
This commit is contained in:
parent
d74bab1fb6
commit
86a1938aa5
1 changed files with 15 additions and 4 deletions
|
|
@ -138,6 +138,7 @@ dri2_bind_context(struct glx_context *context, struct glx_context *old,
|
|||
struct dri2_context *pcp = (struct dri2_context *) context;
|
||||
struct dri2_screen *psc = (struct dri2_screen *) pcp->base.psc;
|
||||
struct dri2_drawable *pdraw, *pread;
|
||||
struct dri2_display *pdp;
|
||||
|
||||
pdraw = (struct dri2_drawable *) driFetchDrawable(context, draw);
|
||||
pread = (struct dri2_drawable *) driFetchDrawable(context, read);
|
||||
|
|
@ -145,11 +146,21 @@ dri2_bind_context(struct glx_context *context, struct glx_context *old,
|
|||
if (pdraw == NULL || pread == NULL)
|
||||
return GLXBadDrawable;
|
||||
|
||||
if ((*psc->core->bindContext) (pcp->driContext,
|
||||
pdraw->driDrawable, pread->driDrawable))
|
||||
return Success;
|
||||
if (!(*psc->core->bindContext) (pcp->driContext,
|
||||
pdraw->driDrawable, pread->driDrawable))
|
||||
return GLXBadContext;
|
||||
|
||||
return GLXBadContext;
|
||||
/* 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 *) psc->base.display;
|
||||
if (!pdp->invalidateAvailable) {
|
||||
dri2InvalidateBuffers(psc->base.dpy, pdraw->base.xDrawable);
|
||||
if (pread != pdraw)
|
||||
dri2InvalidateBuffers(psc->base.dpy, pread->base.xDrawable);
|
||||
}
|
||||
|
||||
return Success;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue