Sophie

Sophie

distrib > Mandriva > 2007.1 > x86_64 > by-pkgid > e9d7306cbb3d13290c9b1281bcbf9c3a > files > 9

x11-server-1.2.0-9.1mdv2007.1.src.rpm

--- ./hw/xfree86/xaa/xaaInit.c.offscreen-pixmaps	2006-07-05 14:31:42.000000000 -0400
+++ ./hw/xfree86/xaa/xaaInit.c	2006-08-30 16:47:29.000000000 -0400
@@ -97,6 +97,30 @@
     xfree(infoRec);
 }
 
+void
+XAAEvictPixmaps(void)
+{
+    XAAScreenPtr pScreenPriv;
+    XAAInfoRecPtr infoRec;
+    ScreenPtr pScreen;
+    int i;
+
+    xf86MsgVerb(X_INFO, 3, "XAA: Evicting pixmaps\n");
+
+    for (i = 0; i < screenInfo.numScreens; i++) {
+	pScreen = screenInfo.screens[i];
+	infoRec = GET_XAAINFORECPTR_FROM_SCREEN(pScreen);
+
+	pScreenPriv = pScreen->devPrivates[XAAScreenIndex].ptr;
+	infoRec = pScreenPriv->AccelInfoRec;
+
+	infoRec->offscreenDepths = 0;
+	infoRec->Flags &= ~OFFSCREEN_PIXMAPS;
+       
+	XAAMoveOutOffscreenPixmaps(pScreen);
+	XAAInvalidatePixmapCache(pScreen);
+    }
+}
 
 Bool 
 XAAInit(ScreenPtr pScreen, XAAInfoRecPtr infoRec)
--- ./GL/glx/glxdri.c.offscreen-pixmaps	2006-08-30 16:46:45.000000000 -0400
+++ ./GL/glx/glxdri.c	2006-08-30 16:45:52.000000000 -0400
@@ -340,6 +340,19 @@
     int		bpp;
     GLenum	target, format, type;
 
+    /* When the GLX_EXT_texture_from_pixmap is used, as it's
+     * implemented here, we want to pull pixmap out of video memory
+     * and into host memory. */
+    {
+      extern void XAAEvictPixmaps(void);
+      static int evictedPixmaps;
+
+      if (!evictedPixmaps) {
+	XAAEvictPixmaps();
+	evictedPixmaps = TRUE;
+      }
+    }
+
     pixmap = (PixmapPtr) glxPixmap->pDraw;
     if (!glxPixmap->pDamage) {
         glxPixmap->pDamage = DamageCreate(NULL, NULL, DamageReportNone,