[Intel-gfx] [PATCH] Xv: fix Xv tearing on BW

Xiang, Haihao haihao.xiang at intel.com
Mon Mar 23 08:37:37 CET 2009


WAIT_FOR_EVENT with the start of vblank doesn't work on BW.
fix bug #20759
---
 src/common.h     |    6 ++++++
 src/i830_video.c |    2 +-
 2 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/src/common.h b/src/common.h
index 8b32a66..02daa49 100644
--- a/src/common.h
+++ b/src/common.h
@@ -381,6 +381,12 @@ extern int I810_DEBUG;
 /* supports Y tiled surfaces (pre-965 Mesa isn't ready yet) */
 #define SUPPORTS_YTILING(pI810) (IS_I965G(pI830))
 
+#define SUPPORTS_WAIT_FOR_START_OF_VBLANK(pI810)        \
+                                (IS_I965G(pI810) &&     \
+                                 (DEVICE_ID(pI810->PciInfo) != PCI_CHIP_I965_G) &&      \
+                                 (DEVICE_ID(pI810->PciInfo) != PCI_CHIP_I965_Q) &&      \
+                                 (DEVICE_ID(pI810->PciInfo) != PCI_CHIP_I946_GZ))
+
 #define GTT_PAGE_SIZE			KB(4)
 #define ROUND_TO(x, y)			(((x) + (y) - 1) / (y) * (y))
 #define ROUND_DOWN_TO(x, y)		((x) / (y) * (y))
diff --git a/src/i830_video.c b/src/i830_video.c
index 3f3aaac..15494ef 100644
--- a/src/i830_video.c
+++ b/src/i830_video.c
@@ -2536,7 +2536,7 @@ I830PutImage(ScrnInfoPtr pScrn,
             I830CrtcPrivatePtr intel_crtc = crtc->driver_private;
             int event;
 
-            if (IS_I965G(pI830)) {
+            if (SUPPORTS_WAIT_FOR_START_OF_VBLANK(pI830)) {
                 if (intel_crtc->pipe == 0)
                     event = MI_WAIT_FOR_PIPEA_SVBLANK;
                 else
-- 
1.5.6.3




More information about the Intel-gfx mailing list