Input Devices

Soeren Sandmann sandmann at daimi.au.dk
Mon Aug 8 06:40:26 PDT 2005


Dave Airlie <airlied at gmail.com> writes:

> I also meant to bring Ian up on this in a recent mail he mentioned
> working on the offscreen memory manager - this is crazy talk.. we need
> a memory manager for everything, you can't start saying what is
> onscreen and offscreen at the memory management level, you don't
> understand screen, you are managing memory...

I agree with this of course, but note that the issues aren't
completely orthogonal because you clearly can't swap out any on-screen
material.

Since I think that an important goal for the memory manager should be
to make is possible to switch between two X servers instantly (ie., at
next vblank), it becomes important that the memory manageithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI08-ISO8859-3.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI08-ISO8859-4.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI08-ISO8859-9.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI08.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI10-ISO8859-1.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI10-ISO8859-10.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI10-ISO8859-13.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI10-ISO8859-14.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI10-ISO8859-15.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI10-ISO8859-2.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI10-ISO8859-3.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI10-ISO8859-4.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI10-ISO8859-9.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI10.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI12-ISO8859-1.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI12-ISO8859-10.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI12-ISO8859-13.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI12-ISO8859-14.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI12-ISO8859-15.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI12-ISO8859-2.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI12-ISO8859-3.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI12-ISO8859-4.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI12-ISO8859-9.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI12.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI14-ISO8859-1.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI14-ISO8859-10.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI14-ISO8859-13.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI14-ISO8859-14.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI14-ISO8859-15.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI14-ISO8859-2.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI14-ISO8859-3.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI14-ISO8859-4.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI14-ISO8859-9.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI14.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI18-ISO8859-1.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI18-ISO8859-10.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI18-ISO8859-13.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI18-ISO8859-14.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI18-ISO8859-15.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI18-ISO8859-2.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI18-ISO8859-3.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI18-ISO8859-4.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI18-ISO8859-9.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI18.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI24-ISO8859-1.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fonts/75dpi/ncenI24-ISO8859-10.pcf.gz
/home/compromised/keithp/6.7/root/usr/X11R6/lib/X11/fot work for some reason, even though I'm
    using the same command that xaa used, so they're done by the EXA
    core (slowly)
  o UploadToScreen and DownloadToScreen aren't implemented yet
  o *Composite aren't implemented yet
  o my offscreenBase calculation isn't precise, I'm missing out on an
    adjustment made by the I830 PreInit somewhere, but it doesn't result
    in overlap on my machine anyway (though if you have a different
    amount of memory than me, you may see corruption)

Anyway, those things aside, it works fine for me.  I was hoping to get 
some eyes on it since my knowledge of driver internals and the i8xx in 
particular is pretty superficial at this point.

Thanks,
Jesse

--Boundary-00=_Vc49Cj9HRaSIBQm
Content-Type: text/x-diff;
  charset="us-ascii";
  name="i830-exa-5.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
	filename="i830-exa-5.patch"

Index: i830.h
=================================RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/i810/i830.h,v
retrieving revision 1.12
diff -u -r1.12 i830.h
--- i830.h	31 Jul 2005 17:19:29 -0000	1.12
+++ i830.h	7 Aug 2005 23:08:17 -0000
@@ -35,7 +35,6 @@
  *   David Dawes <dawes at xfree86.org>
  *
  */
-
 #if 0
 #define I830DEBUG
 #endif
@@ -68,6 +67,12 @@
 #include "i830_dri.h"
 #endif
 
+#if 1 /* XF86EXA */
+#define I830_USE_EXA
+#include "../../exa/exa.h"
+#endif
+
+#define I830_USE_XAA
 #include "common.h"
 
 /* I830 Video BIOS support */
@@ -264,13 +269,20 @@
    I830RegRec SavedReg;
    I830RegRec ModeReg;
 
+   Bool useEXA;
    Bool noAccel;
    Bool SWCursor;
    Bool cursorOn;
+#ifdef I830_USE_XAA
    XAAInfoRecPtr AccelInfoRec;
+#endif
    xf86CursorInfoPtr CursorInfoRec;
    CloseScreenProcPtr CloseScreen;
 
+#ifdef I830_USE_EXA
+   ExaDriverPtr	EXADriverPtr;
+#endif
+
    I830WriteIndexedByteFunc writeControl;
    I830ReadIndexedByteFunc readControl;
    I830WriteByteFunc writeStandard;
Index: i830_accel.c
=================================RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/i810/i830_accel.c,v
retrieving revision 1.5
diff -u -r1.5 i830_accel.c
--- i830_accel.c	11 Jul 2005 02:29:51 -0000	1.5
+++ i830_accel.c	7 Aug 2005 23:08:18 -0000
@@ -112,7 +112,9 @@
 	    DRICloseScreen(screenInfo.screens[pScrn->scrnIndex]);
 	 }
 #endif
+#ifdef I830_USE_XAA
 	 pI830->AccelInfoRec = NULL;	/* Stops recursive behavior */
+#endif
 	 FatalError("lockup\n");
       }
 
@@ -211,13 +213,14 @@
    pI830->LpRing->space = pI830->LpRing->head - (pI830->LpRing->tail + 8);
    if (pI830->LpRing->space < 0)
       pI830->LpRing->space += pI830->LpRing->mem.Size;
-
+#ifdef I830_USE_XAA
    if (pI830->AccelInfoRec)
       pI830->AccelInfoRec->NeedToSync = TRUE;
+#endif
 }
 
+#ifdef I830_USE_XAA
 /* I830 Accel Functions */
-
 static void I830SetupForMono8x8PatternFill(ScrnInfoPtr pScrn,
 					   int pattx, int patty,
 					   int fg, int bg, int rop,
@@ -250,143 +253,496 @@
 static void I830SubsequentImageWriteScanline(ScrnInfoPtr pScrn, int bufno);
 #endif
 static void I830RestoreAccelState(ScrnInfoPtr pScrn);
+#endif /* I830_USE_XAA */
+
+#ifdef I830_USE_EXA
+void i830ScratchSave(ScreenPtr pScreen, ExaOffscreenArea *area);
+Bool i830UploadToScreen(PixmapPtr pDst, char *src, int src_pitch);
+Bool i830UploadToScratch(PixmapPtr pSrc, PixmapPtr pDst);
+Bool i830DownloadFromScreen(PixmapPtr pSrc, int x, int y, int w, int h, char *dst, int dst_pitch);
+
+/**
+ * I830EXASync - wait for a command to finish
+ * @pScreen: current screen
+ * @marker: marker command to wait for
+ *
+ * Wait for the command specified by @marker to finish, then return.
+ */
+static void
+I830EXASync(ScreenPtr pScreen, int marker)
+{
+    ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+    I830Ptr pI830 = I830PTR(pScrn);
 
+#ifdef XF86DRI
+    /* VT switching tries to do this. */
+    if (!pI830->LockHeld && pI830->directRenderingEnabled)
+	return;
+#endif
 
-/* The following function sets up the supported acceleration. Call it
- * from the FbInit() function in the SVGA driver, or before ScreenInit
- * in a monolithic server.
+    if (pI830->entityPrivate && !pI830->entityPrivate->RingRunning)
+	return;
+
+    /* Send a flush instruction and then wait till the ring is empty.
+     * This is stronger than waiting for the blitter to finish as it also
+     * flushes the internal graphics caches.
+     */
+    {
+	BEGIN_LP_RING(2);
+	OUT_RING(MI_FLUSH | MI_WRITE_DIRTY_STATE | MI_INVALIDATE_MAP_CACHE);
+	OUT_RING(MI_NOOP);		/* pad to quadword */
+	ADVANCE_LP_RING();
+    }
+
+    I830WaitLpRing(pScrn, pI830->LpRing->mem.Size - 8, 0);
+
+    pI830->LpRing->space = pI830->LpRing->mem.Size - 8;
+    pI830->nextColorExpandBuf = 0;
+}
+
+/**
+ * I830EXAPrepareSolid - prepare for a Solid operation, if possible
+ *
+ * TODO:
+ *   - verify supported operations
  */
-Bool
-I830AccelInit(ScreenPtr pScreen)
+static Bool
+I830EXAPrepareSolid(PixmapPtr pPixmap, int alu, Pixel planemask, Pixel fg)
 {
-   XAAInfoRecPtr infoPtr;
-   ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
-   I830Ptr pI830 = I830PTR(pScrn);
-   int i;
-   int width = 0;
-   int nr_buffers = 0;
-   unsigned char *ptr = NULL;
+    ScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum];
+    I830Ptr pI830 = I830PTR(pScrn);
 
-   if (I810_DEBUG & DEBUG_VERBOSE_ACCEL)
-      ErrorF("I830AccelInit\n");
+    pI830->BR[13] = (XAAGetPatternROP(alu) << 16) |
+	(pScrn->displayWidth * pI830->cpp);
 
-   pI830->AccelInfoRec = infoPtr = XAACreateInfoRec();
-   if (!infoPtr)
-      return FALSE;
+    pI830->BR[16] = fg;
 
-   pI830->bufferOffset = 0;
-   infoPtr->Flags = LINEAR_FRAMEBUFFER | OFFSCREEN_PIXMAPS | PIXMAP_CACHE;
+    /*
+     * Depth: 00 - 8 bit, 01 - 16 bit, 10 - 24 bit, 11 - 32 bit
+     */
+    switch (pScrn->bitsPerPixel) {
+    case 8:
+	pI830->BR[13] |= ((0 << 25) | (0 << 24));
+	break;
+    case 16:
+	pI830->BR[13] |= ((0 << 25) | (1 << 24));
+	break;
+    case 24:
+	pI830->BR[13] |= ((1 << 25) | (0 << 24));
+	break;
+    case 32:
+	pI830->BR[13] |= ((1 << 25) | (1 << 24));
+	break;
+    }
+    return TRUE;
+}
 
-   /* Use the same sync function as the I830.
-    */
-   infoPtr->Sync = I830Sync;
+static void
+I830EXASolid(PixmapPtr pPixmap, int x1, int y1, int x2, int y2)
+{
+    ScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum];
+    I830Ptr pI830 = I830PTR(pScrn);
+    int h = y2 - y1, w = x2 - x1;
+
+    {
+	BEGIN_LP_RING(6);
+
+	if (pScrn->bitsPerPixel = 32)
+	    OUT_RING(COLOR_BLT_CMD | COLOR_BLT_WRITE_ALPHA |
+		     COLOR_BLT_WRITE_RGB);
+	else
+	    OUT_RING(COLOR_BLT_CMD);
+
+	OUT_RING(pI830->BR[13]);
+	OUT_RING((h << 16) | (w * pI830->cpp));
+	OUT_RING(pI830->bufferOffset + (y1 * pScrn->displayWidth + x1) *
+		 pI830->cpp);
+	OUT_RING(pI830->BR[16]);
+	OUT_RING(0);
 
-   /* Everything else is different enough to justify different functions */
-   {
-      infoPtr->SolidFillFlags = NO_PLANEMASK;
-      infoPtr->SetupForSolidFill = I830SetupForSolidFill;
-      infoPtr->SubsequentSolidFillRect = I830SubsequentSolidFillRect;
-   }
+	ADVANCE_LP_RING();
+    }
+}
 
-   {
-      infoPtr->ScreenToScreenCopyFlags = (NO_PLANEMASK | NO_TRANSPARENCY);
+static void
+I830EXADoneSolid(PixmapPtr pPixmap)
+{
+    return;
+}
 
-      infoPtr->SetupForScreenToScreenCopy = I830SetupForScreenToScreenCopy;
-      infoPtr->SubsequentScreenToScreenCopy -	    I830SubsequentScreenToScreenCopy;
-   }
+/**
+ * TODO:
+ *   - check for unsupported ops (e.g. planemask?)
+ */
+static Bool
+I830EXAPrepareCopy(PixmapPtr pSrcPixmap, PixmapPtr pDstPixmap, int xdir,
+		   int ydir, int alu, Pixel planemask)
+{
+    ScrnInfoPtr pScrn = xf86Screens[pDstPixmap->drawable.pScreen->myNum];
+    I830Ptr pI830 = I830PTR(pScrn);
+    int pitch = pScrn->displayWidth * pI830->cpp;
+
+    if (ydir < 0) /* can't handle bottom to top */
+	return FALSE;
+
+    pI830->BR[13] = pitch | XAAGetCopyROP(alu) << 16;
+
+    switch (pScrn->bitsPerPixel) {
+    case 8:
+	break;
+    case 16:
+	pI830->BR[13] |= (1 << 24);
+	break;
+    case 32:
+	pI830->BR[13] |= ((1 << 25) | (1 << 24));
+	break;
+    }
+    return TRUE;
+}
 
-   {
-      infoPtr->SetupForMono8x8PatternFill = I830SetupForMono8x8PatternFill;
-      infoPtr->SubsequentMono8x8PatternFillRect -	    I830SubsequentMono8x8PatternFillRect;
+static void
+I830EXACopy(PixmapPtr pDstPixmap, int src_x1, int src_y1, int dst_x1,
+	    int dst_y1, int w, int h)
+{
+    ScrnInfoPtr pScrn = xf86Screens[pDstPixmap->drawable.pScreen->myNum];
+    I830Ptr pI830 = I830PTR(pScrn);
+    int dst_x2, dst_y2;
+
+    dst_x2 = dst_x1 + w;
+    dst_y2 = dst_y1 + h;
+
+    {
+	BEGIN_LP_RING(8);
+
+	if (pScrn->bitsPerPixel = 32)
+	    OUT_RING(XY_SRC_COPY_BLT_CMD | XY_SRC_COPY_BLT_WRITE_ALPHA |
+		     XY_SRC_COPY_BLT_WRITE_RGB);
+	else
+	    OUT_RING(XY_SRC_COPY_BLT_CMD);
+
+	OUT_RING(pI830->BR[13]);
+	OUT_RING((dst_y1 << 16) | (dst_x1 & 0xffff));
+	OUT_RING((dst_y2 << 16) | (dst_x2 & 0xffff));
+	OUT_RING(pI830->bufferOffset);
+	OUT_RING((src_y1 << 16) | (src_x1 & 0xffff));
+	OUT_RING(pI830->BR[13] & 0xFFFF);
+	OUT_RING(pI830->bufferOffset);
 
-      infoPtr->Mono8x8PatternFillFlags = (HARDWARE_PATTERN_PROGRAMMED_BITS |
-					  HARDWARE_PATTERN_SCREEN_ORIGIN |
-					  HARDWARE_PATTERN_PROGRAMMED_ORIGIN |
-					  BIT_ORDER_IN_BYTE_MSBFIRST |
-					  NO_PLANEMASK);
+	ADVANCE_LP_RING();
+    }
+}
 
-   }
+static void
+I830EXADoneCopy(PixmapPtr pDstPixmap)
+{
+    return;
+}
 
-   /* On the primary screen */
-   if (pI830->init = 0) {
-      if (pI830->Scratch.Size != 0) {
-         width = ((pScrn->displayWidth + 31) & ~31) / 8;
-         nr_buffers = pI830->Scratch.Size / width;
-         ptr = pI830->FbBase + pI830->Scratch.Start;
-      }
-   } else {
-   /* On the secondary screen */
-      I830Ptr pI8301 = I830PTR(pI830->entityPrivate->pScrn_1);
-      if (pI8301->Scratch2.Size != 0) {
-         width = ((pScrn->displayWidth + 31) & ~31) / 8;
-         nr_buffers = pI8301->Scratch2.Size / width;
-         /* We have to use the primary screen's FbBase, as that's where
-          * we allocated Scratch2, so we get the correct pointer */
-         ptr = pI8301->FbBase + pI8301->Scratch2.Start;
-      }
-   }
+#if 0 /* Not done (or even started for that matter) */
+static Bool
+I830EXAUploadToScreen(PixmapPtr pDst, char *src, int src_pitch)
+{
+    ScrnInfoPtr pScrn = xf86Screens[pDst->drawable.pScreen->myNum];
+    I830Ptr pI830 = I830PTR(pScrn);
+    unsigned char *dst = pDst->devPrivate.ptr;
+    int dst_pitch = pDst->devKind;
+    int size = src_pitch < dst_pitch ? src_pitch : dst_pitch;
+    int h = pDst->drawable.height;
+
+    I830Sync(pScrn);
+
+    while(h--) {
+	i830MemCopyToVideoRam(pI830, dst, (unsigned char *)src, size);
+	src += src_pitch;
+	dst += dst_pitch;
+    }
 
-   if (nr_buffers) {
-      pI830->NumScanlineColorExpandBuffers = nr_buffers;
-      pI830->ScanlineColorExpandBuffers = (unsigned char **)
+    return TRUE;
+}
+
+static Bool
+I830EXADownloadFromScreen(PixmapPtr pSrc, int x, int y, int w, int h,
+			  char *dst, int dst_pitch)
+{
+    ScrnInfoPtr pScrn = xf86Screens[pSrc->drawable.pScreen->myNum];
+    I830Ptr pI830 = I830PTR(pScrn);
+    unsigned char *src = pSrc->devPrivate.ptr;
+    int src_pitch = pSrc->devKind;
+    int size = src_pitch < dst_pitch ? src_pitch : dst_pitch;
+
+    I830Sync(pScrn);
+
+    while(h--) {
+	i830MemCopyFromVideoRam(pI830, (unsigned char *)dst, src, size);
+	src += src_pitch;
+	dst += dst_pitch;
+    }
+
+    return TRUE;
+}
+
+static Bool
+I830EXACheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskPicture,
+		      PicturePtr pDstPicture)
+{
+    return FALSE; /* no Composite yet */
+}
+
+static Bool
+I830EXAPrepareComposite(int op, PicturePtr pSrcPicture,
+			PicturePtr pMaskPicture, PicturePtr pDstPicture,
+			PixmapPtr pSrc, PixmapPtr pMask, PixmapPtr pDst)
+{
+    return FALSE; /* no Composite yet */
+}
+
+static void
+I830EXAComposite(PixmapPtr pDst, int srcX, int srcY, int maskX, int maskY,
+		 int dstX, int dstY, int width, int height)
+{
+    return; /* no Composite yet */
+}
+
+static void
+I830EXADoneComposite(PixmapPtr pDst)
+{
+    return; /* no Composite yet */
+}
+#endif
+
+/*
+ * TODO:
+ *   - verify offscreen base, pitch, alignment, etc.
+ *   - romised/keithp/6.7/root/usr/X11R6/man/man3/glEvalCoord2dv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glEvalCoord2f.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glEvalCoord2fv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glEvalMesh.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glEvalMesh1.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glEvalMesh2.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glEvalPoint.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glEvalPoint1.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glEvalPoint2.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glFeedbackBuffer.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glFinish.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glFlush.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glFog.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glFogf.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glFogfv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glFogi.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glFogiv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glFrontFace.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glFrustum.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGenLists.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGenTextures.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGet.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetBooleanv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetClipPlane.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetColorTable.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetColorTableParameter.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetColorTableParameterfv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetColorTableParameteriv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetConvolutionFilter.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetConvolutionParameter.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetDoublev.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetError.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetFloatv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetHistogram.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetHistogramParameter.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetIntegerv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetLight.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetLightfv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetLightiv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetMap.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetMapdv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetMapfv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetMapiv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetMaterial.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetMaterialfv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetMaterialiv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetMinmax.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetMinmaxParameter.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetPixelMap.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetPixelMapfv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetPixelMapuiv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetPixelMapusv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetPointerv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetPolygonStipple.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetSeparableFilter.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetString.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetTexEnv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetTexEnvfv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetTexEnviv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetTexGen.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetTexGendv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetTexGenfv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetTexGeniv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetTexImage.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetTexLevelParameter.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetTexLevelParameterfv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetTexLevelParameteriv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetTexParameter.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetTexParameterfv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glGetTexParameteriv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glHint.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glHistogram.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glIndex.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glIndexd.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glIndexdv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glIndexf.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glIndexfv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glIndexi.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glIndexiv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glIndexMask.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glIndexPointer.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glIndexs.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glIndexsv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glIndexub.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glIndexubv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glInitNames.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glInterleavedArrays.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glIsEnabled.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glIslist.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glIsTexture.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glLight.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glLightf.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glLightfv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glLighti.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glLightiv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glLightModel.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glLightModelf.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glLightModelfv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glLightModeli.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glLightModeliv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glLineStipple.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glLineWidth.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glListBase.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glLoadIdentity.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glLoadMatrix.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glLoadMatrixd.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glLoadMatrixf.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glLoadName.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glLogicOp.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMap1.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMap1d.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMap1f.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMap2.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMap2d.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMap2f.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMapGrid.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMapGrid1d.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMapGrid1f.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMapGrid2d.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMapGrid2f.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMaterial.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMaterialf.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMaterialfv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMateriali.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMaterialiv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMatrixMode.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMinmax.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMultiTexCoord1dARB.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMultiTexCoord1dvARB.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMultiTexCoord1fARB.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMultiTexCoord1fvARB.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMultiTexCoord1iARB.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMultiTexCoord1ivARB.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMultiTexCoord1sARB.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMultiTexCoord1svARB.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMultiTexCoord2dARB.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMultiTexCoord2dvARB.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMultiTexCoord2fARB.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMultiTexCoord2fvARB.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMultiTexCoord2iARB.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMultiTexCoord2ivARB.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMultiTexCoord2sARB.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMultiTexCoord2svARB.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMultiTexCoord3dARB.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMultiTexCoord3dvARB.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMultiTexCoord3fARB.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMultiTexCoord3fvARB.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMultiTexCoord3iARB.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMultiTexCoord3ivARB.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMultiTexCoord3sARB.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMultiTexCoord3svARB.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMultiTexCoord4dARB.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMultiTexCoord4dvARB.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMultiTexCoord4fARB.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMultiTexCoord4fvARB.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMultiTexCoord4iARB.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMultiTexCoord4ivARB.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMultiTexCoord4sARB.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMultiTexCoord4svARB.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMultiTexCoordARB.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMultMatrix.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMultMatrixd.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glMultMatrixf.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glNewList.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glNormal.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glNormal3b.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glNormal3bv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glNormal3d.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glNormal3dv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glNormal3f.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glNormal3fv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glNormal3i.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glNormal3iv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glNormal3s.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glNormal3sv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glNormalPointer.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glOrtho.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glPassThrough.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glPixelMap.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glPixelMapfv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glPixelMapuiv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glPixelMapusv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glPixelStore.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glPixelStoref.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glPixelStorei.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glPixelTransfer.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glPixelTransferf.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glPixelTransferi.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glPixelZoom.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glPointSize.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glPolygonMode.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glPolygonOffset.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glPolygonStipple.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glPopAttrib.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glPopClientAttrib.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glPopMatrix.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glPopName.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glPrioritizeTextures.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glPushAttrib.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glPushClientAttrib.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glPushMatrix.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glPushName.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glRasterPos.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glRasterPos2d.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glRasterPos2dv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glRasterPos2f.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glRasterPos2fv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glRasterPos2i.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glRasterPos2iv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glRasterPos2s.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glRasterPos2sv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glRasterPos3d.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glRasterPos3dv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glRasterPos3f.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glRasterPos3fv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glRasterPos3i.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glRasterPos3iv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glRasterPos3s.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glRasterPos3sv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glRasterPos4d.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glRasterPos4dv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glRasterPos4f.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glRasterPos4fv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glRasterPos4i.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glRasterPos4iv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glRasterPos4s.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glRasterPos4sv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glReadBuffer.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glReadPixels.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glRect.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glRectd.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glRectdv.3x
/home/compromised/keithp/6.7/root/usr/X11R6/man/man3/glRectf.3x
/XAA
    if (infoPtr) {
       if (infoPtr->ScanlineColorExpandBuffers)
 	 xfree(infoPtr->ScanlineColorExpandBuffers);
       XAADestroyInfoRec(infoPtr);
       pI830->AccelInfoRec = NULL;
    }
-
+#endif
+#ifdef I830_USE_EXA
+   if (pI830->useEXA) {
+       exaDriverFini(pScreen);
+       xfree(pI830->EXADriverPtr);
+       pI830->EXADriverPtr = NULL;
+   }
+#endif
    if (pI830->CursorInfoRec) {
       xf86DestroyCursorInfoRec(pI830->CursorInfoRec);
       pI830->CursorInfoRec = 0;
Index: i830_video.c
=================================RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/i810/i830_video.c,v
retrieving revision 1.18
diff -u -r1.18 i830_video.c
--- i830_video.c	11 Jul 2005 02:29:51 -0000	1.18
+++ i830_video.c	7 Aug 2005 23:08:24 -0000
@@ -1489,10 +1489,10 @@
 I830AllocateMemory(ScrnInfoPtr pScrn, FBLinearPtr linear, int size)
 {
    ScreenPtr pScreen;
-   FBLinearPtr new_linear;
 
    DPRINTF(PFX, "I830AllocateMemory\n");
-
+#ifdef I830_USE_XAA
+   FBLinearPtr new_linear;
    if (linear) {
       if (linear->size >= size)
 	 return linear;
@@ -1523,6 +1523,32 @@
    }
 
    return new_linear;
+#endif /* I830_USE_XAA */
+#ifdef I830_USE_EXA
+   {
+       ExaOffscreenArea *area = (ExaOffscreenArea *)(linear);
+
+       if (area) {
+	   if(area->size >= size)
+	       return linear;
+
+	   exaOffscreenFree(pScreen, area);
+	   linear = NULL;
+       }
+
+       if (!(area = exaOffscreenAlloc(pScreen, size, 4, TRUE, NULL,
+				     NULL))) {
+	   xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+		      "Xv: Failed to allocate %d bytes of video memory\n",
+		      size);
+	   return 0;
+       }
+       else {
+	   linear = (void *)area;
+	   return linear;
+       }
+   }
+#endif /* I830_USE_EXA */
 }
 
 static int

--Boundary-00=_Vc49Cj9HRaSIBQm--



More information about the xorg mailing list