Mesa (master): st/xorg: Only damage non-front source in DRI2 CopyRegion hook.

Michel Dänzer daenzer at kemper.freedesktop.org
Fri Aug 26 09:32:14 PDT 2011


Module: Mesa
Branch: master
Commit: 751f0ce7736de455f3f6d8dcfbaf25bbbd3fcf55
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=751f0ce7736de455f3f6d8dcfbaf25bbbd3fcf55

Author: Michel Dänzer <michel.daenzer at amd.com>
Date:   Mon Aug 22 15:44:42 2011 +0200

st/xorg: Only damage non-front source in DRI2 CopyRegion hook.

Based on a vmwgfx xa/saa fix.

Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>
Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

---

 src/gallium/state_trackers/xorg/xorg_dri2.c |   16 +++++++++-------
 1 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/src/gallium/state_trackers/xorg/xorg_dri2.c b/src/gallium/state_trackers/xorg/xorg_dri2.c
index 6f2c52e..3350ac7 100644
--- a/src/gallium/state_trackers/xorg/xorg_dri2.c
+++ b/src/gallium/state_trackers/xorg/xorg_dri2.c
@@ -372,13 +372,15 @@ dri2_copy_region(DrawablePtr pDraw, RegionPtr pRegion,
     save_accel = ms->exa->accel;
     ms->exa->accel = TRUE;
 
-    /* In case it won't be though, make sure the GPU copy contents of the
-     * source pixmap will be used for the software fallback - presumably the
-     * client modified them before calling in here.
-     */
-    exaMoveInPixmap(src_priv->pPixmap);
-    DamageRegionAppend(src_draw, pRegion);
-    DamageRegionProcessPending(src_draw);
+    if (pSrcBuffer->attachment != DRI2BufferFrontLeft) {
+	/* In case it won't be though, make sure the GPU copy contents of the
+	 * source pixmap will be used for the software fallback - presumably the
+	 * client modified them before calling in here.
+	 */
+	exaMoveInPixmap(src_priv->pPixmap);
+	DamageRegionAppend(src_draw, pRegion);
+	DamageRegionProcessPending(src_draw);
+    }
 
    if (cust && cust->winsys_context_throttle)
        cust->winsys_context_throttle(cust, ms->ctx, THROTTLE_SWAP);



More information about the mesa-commit mailing list