Hi, The above patch works around the tearing for me (and my Intel 945G).
So : rebuild, and add the following line to the Device section of /etc/X11/xorg.conf Option "XvPreferOverlay" "true" Thanks! (I had to trivially adapt it because it overlaps with the second patch in the series... so here it is attached)
diff -rN -u old-xserver-xorg-video-intel-2.3.2/man/intel.man new-xserver-xorg-video-intel-2.3.2/man/intel.man --- old-xserver-xorg-video-intel-2.3.2/man/intel.man 2008-09-21 20:46:31.000000000 +0000 +++ new-xserver-xorg-video-intel-2.3.2/man/intel.man 2008-09-21 20:46:31.000000000 +0000 @@ -128,6 +128,11 @@ Disable or enable XVideo support. Default: XVideo is enabled for configurations where it is supported. .TP +.BI "Option \*qXvPreferOverlay\*q \*q" boolean \*q +Make hardware overlay be first XV adapter. +Some applications assume only one XV adapter present thus use first one. +Default: Textured video adapter is first and overlay second. +.TP .BI "Option \*qLegacy3D\*q \*q" boolean \*q Enable support for the legacy i915_dri.so 3D driver. This will, among other things, make the 2D driver tell libGL to diff -rN -u old-xserver-xorg-video-intel-2.3.2/src/i830_driver.c new-xserver-xorg-video-intel-2.3.2/src/i830_driver.c --- old-xserver-xorg-video-intel-2.3.2/src/i830_driver.c 2008-09-21 20:46:31.000000000 +0000 +++ new-xserver-xorg-video-intel-2.3.2/src/i830_driver.c 2008-09-21 20:46:31.000000000 +0000 @@ -318,6 +318,7 @@ OPTION_XVMC, #endif OPTION_RENDERACCEL, + OPTION_PREFER_OVERLAY, } I830Opts; static OptionInfoRec I830Options[] = { @@ -346,6 +347,7 @@ #ifdef INTEL_XVMC {OPTION_XVMC, "XvMC", OPTV_BOOLEAN, {0}, TRUE}, #endif + {OPTION_PREFER_OVERLAY, "XvPreferOverlay", OPTV_BOOLEAN, {0}, TRUE}, {OPTION_RENDERACCEL, "RenderAccel", OPTV_BOOLEAN, {0}, TRUE}, {-1, NULL, OPTV_NONE, {0}, FALSE} }; @@ -1682,6 +1684,8 @@ pI830->XvDisabled = !xf86ReturnOptValBool(pI830->Options, OPTION_XVIDEO, TRUE); + pI830->XvPreferOverlay = xf86ReturnOptValBool(pI830->Options, OPTION_PREFER_OVERLAY, FALSE); + #ifdef I830_XV if (xf86GetOptValInteger(pI830->Options, OPTION_VIDEO_KEY, &(pI830->colorKey))) { diff -rN -u old-xserver-xorg-video-intel-2.3.2/src/i830.h new-xserver-xorg-video-intel-2.3.2/src/i830.h --- old-xserver-xorg-video-intel-2.3.2/src/i830.h 2008-09-21 20:46:31.000000000 +0000 +++ new-xserver-xorg-video-intel-2.3.2/src/i830.h 2008-09-21 20:46:31.000000000 +0000 @@ -516,6 +516,7 @@ Bool XvDisabled; /* Xv disabled in PreInit. */ Bool XvEnabled; /* Xv enabled for this generation. */ + Bool XvPreferOverlay; #ifdef I830_XV int colorKey; diff -rN -u old-xserver-xorg-video-intel-2.3.2/src/i830_video.c new-xserver-xorg-video-intel-2.3.2/src/i830_video.c --- old-xserver-xorg-video-intel-2.3.2/src/i830_video.c 2008-09-21 20:46:31.000000000 +0000 +++ new-xserver-xorg-video-intel-2.3.2/src/i830_video.c 2008-09-21 20:46:31.000000000 +0000 @@ -611,7 +611,6 @@ { texturedAdaptor = I830SetupImageVideoTextured(pScreen); if (texturedAdaptor != NULL) { - adaptors[num_adaptors++] = texturedAdaptor; xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Set up textured video\n"); } else { xf86DrvMsg(pScrn->scrnIndex, X_ERROR, @@ -625,7 +624,6 @@ { overlayAdaptor = I830SetupImageVideoOverlay(pScreen); if (overlayAdaptor != NULL) { - adaptors[num_adaptors++] = overlayAdaptor; xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Set up overlay video\n"); } else { xf86DrvMsg(pScrn->scrnIndex, X_ERROR, @@ -633,6 +631,16 @@ } I830InitOffscreenImages(pScreen); } + + if (overlayAdaptor && pI830->XvPreferOverlay) + adaptors[num_adaptors++] = overlayAdaptor; + + if (texturedAdaptor) + adaptors[num_adaptors++] = texturedAdaptor; + + if (overlayAdaptor && !pI830->XvPreferOverlay) + adaptors[num_adaptors++] = overlayAdaptor; + #ifdef INTEL_XVMC if (intel_xvmc_probe(pScrn)) { if (texturedAdaptor)