summaryrefslogtreecommitdiff
path: root/src/glx/x11/dri2_glx.c
diff options
context:
space:
mode:
authorAlan Hourihane <alanh@vmware.com>2009-02-19 18:39:08 +0000
committerAlan Hourihane <alanh@vmware.com>2009-02-23 20:28:11 +0000
commit65562453fba69e862d5e3b381d18db9c40d9353c (patch)
tree02f8b11eace9763d3b6dd61773a0193dd2417c3a /src/glx/x11/dri2_glx.c
parent4fc7cde770a66ff5bcf817af33a7b0b2c04354d5 (diff)
glx: add support for a reallyFlush() function before swap occurs.
Diffstat (limited to 'src/glx/x11/dri2_glx.c')
-rw-r--r--src/glx/x11/dri2_glx.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/glx/x11/dri2_glx.c b/src/glx/x11/dri2_glx.c
index 776a14f614..0ef5d3ab56 100644
--- a/src/glx/x11/dri2_glx.c
+++ b/src/glx/x11/dri2_glx.c
@@ -208,7 +208,13 @@ static void dri2CopySubBuffer(__GLXDRIdrawable *pdraw,
xrect.width = width;
xrect.height = height;
+#ifdef __DRI2_FLUSH
+ if (pdraw->psc->f)
+ (*pdraw->psc->f->flush)(pdraw->driDrawable);
+#endif
+
region = XFixesCreateRegion(pdraw->psc->dpy, &xrect, 1);
+ /* should get a fence ID back from here at some point */
DRI2CopyRegion(pdraw->psc->dpy, pdraw->drawable, region,
DRI2BufferFrontLeft, DRI2BufferBackLeft);
XFixesDestroyRegion(pdraw->psc->dpy, region);
@@ -236,6 +242,11 @@ static void dri2WaitX(__GLXDRIdrawable *pdraw)
xrect.width = priv->width;
xrect.height = priv->height;
+#ifdef __DRI2_FLUSH
+ if (pdraw->psc->f)
+ (*pdraw->psc->f->flush)(pdraw->driDrawable);
+#endif
+
region = XFixesCreateRegion(pdraw->psc->dpy, &xrect, 1);
DRI2CopyRegion(pdraw->psc->dpy, pdraw->drawable, region,
DRI2BufferFakeFrontLeft, DRI2BufferFrontLeft);
@@ -256,6 +267,11 @@ static void dri2WaitGL(__GLXDRIdrawable *pdraw)
xrect.width = priv->width;
xrect.height = priv->height;
+#ifdef __DRI2_FLUSH
+ if (pdraw->psc->f)
+ (*pdraw->psc->f->flush)(pdraw->driDrawable);
+#endif
+
region = XFixesCreateRegion(pdraw->psc->dpy, &xrect, 1);
DRI2CopyRegion(pdraw->psc->dpy, pdraw->drawable, region,
DRI2BufferFrontLeft, DRI2BufferFakeFrontLeft);