2009/12/29 Thomas Hellstrom <thellst...@vmware.com>:
> Kristian,
>
> I was looking at how Swapbuffers is done with DRI2 when a fake front is
> present:
>
> The back buffer is copied to the real front, and then the real front is
> copied back to the fake.
>
> This causes some problems in the vmwgfx drivers where reading from the real
> front should be avoided if at all possible.
>
> Assuming that apps that really care about stuff X has rendered to the real
> frontbuffer will explicitly call glxWaitX, could we perhaps change this
> behavior to:
>
> 1) Copy back to fake front.
> 2) Copy fake front to real front.
>
> Or would that break something?

I think that should be fine, though I prefer copying the back to front
and fake front, when present?  Like the attached patch, which also
avoids flushing and creating the region twice.

cheers,
Kristian
diff --git a/src/glx/x11/dri2_glx.c b/src/glx/x11/dri2_glx.c
index 89efe3a..0d3b1a2 100644
--- a/src/glx/x11/dri2_glx.c
+++ b/src/glx/x11/dri2_glx.c
@@ -83,8 +83,6 @@ struct __GLXDRIdrawablePrivateRec
    int have_fake_front;
 };
 
-static void dri2WaitX(__GLXDRIdrawable * pdraw);
-
 static void
 dri2DestroyContext(__GLXDRIcontext * context,
                    __GLXscreenConfigs * psc, Display * dpy)
@@ -223,12 +221,10 @@ dri2CopySubBuffer(__GLXDRIdrawable * pdraw,
    /* should get a fence ID back from here at some point */
    DRI2CopyRegion(pdraw->psc->dpy, pdraw->xDrawable, region,
                   DRI2BufferFrontLeft, DRI2BufferBackLeft);
+   if (!priv->have_fake_front) 
+      DRI2CopyRegion(pdraw->psc->dpy, pdraw->xDrawable, region,
+		     DRI2BufferFakerontLeft, DRI2BufferBackLeft);
    XFixesDestroyRegion(pdraw->psc->dpy, region);
-
-   /* Refresh the fake front (if present) after we just damaged the real
-    * front.
-    */
-   dri2WaitX(pdraw);
 }
 
 static void
------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
_______________________________________________
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to