[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#234388: xserver-xfree86: [tdfx] X server refuses to use DRI at 1280x960 resolution



On Mon, Feb 23, 2004 at 03:47:23PM +0000, Claudio Martins wrote:
> Package: xserver-xfree86
> Version: 4.3.0-2
> Severity: important
> Tags: sid
> 
> 
>   XFree86 refuses to use DRI at resolutions higher than 1024x768 on a
>   3dfx Voodoo Banshee and complains with this message on the logs:
> 
>   (WW) TDFX(0): [dri] To use DRI, with a 16Mb Voodoo 3 or Banshee card,
>   you must invoke the server using a maximum resolution of 1024x768 or lower.
> 
>   I think this behaviour is not justified by any technical reason,

This seems a hasty conclusion to reach if you're not very familiar with the
driver code and the video hardware.

> nor does it make any sense, since this card has functioned correctly
> using DRI and OpenGL at resolutions as high as 1280x960, up to XFree86
> version 4.2.x.  Even if running certain OpenGL apps at 1280x960 would
> be too slow (like quake3), switching to lower res. modes like 1024x768
> or 800x600 used to work okay, but now with this version the X server
> simply refuses to use DRI and the kernel doesn't even automatically
> load the drm module like it used to.

Perhaps you could review the changes made to the tdfx driver between
XFree86 4.2.1 and 4.3.0 (the tdfx driver has not, to date, been changed
on xf-4_3-branch).

It looks to me like the error message you're complaining of was not
added in 4.3.0.

xfree86/cvs/HEAD/xc % cvs diff -u -r xf-4_2_1 -r xf-4_3_0 programs/Xserver/hw/xfree86/drivers/tdfx
Index: programs/Xserver/hw/xfree86/drivers/tdfx/Imakefile
===================================================================
RCS file: /cvs/xc/programs/Xserver/hw/xfree86/drivers/tdfx/Imakefile,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -u -r1.21 -r1.22
--- programs/Xserver/hw/xfree86/drivers/tdfx/Imakefile	21 May 2001 21:43:55 -0000	1.21
+++ programs/Xserver/hw/xfree86/drivers/tdfx/Imakefile	17 Feb 2003 17:06:44 -0000	1.22
@@ -1,4 +1,4 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tdfx/Imakefile,v 1.21 2001/05/21 21:43:55 dawes Exp $
+XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tdfx/Imakefile,v 1.22 2003/02/17 17:06:44 dawes Exp $
 XCOMM
 XCOMM This is the Imakefile for the TDFX driver.  
 XCOMM 
@@ -36,7 +36,7 @@
 	   -I$(XF86SRC)/xaa -I$(XF86SRC)/rac -I$(XF86SRC)/int10 \
            -I$(SERVERSRC)/fb -I$(XF86SRC)/xaa -I$(XF86SRC)/ramdac \
 	   -I$(XF86SRC)/vgahw -I$(XF86SRC)/ddc -I$(XF86SRC)/i2c \
-           -I$(XF86SRC)/ddc -I$(XF86OSSRC)/vbe -I$(SERVERSRC)/Xext \
+           -I$(XF86SRC)/ddc -I$(XF86SRC)/vbe -I$(SERVERSRC)/Xext \
            -I$(FONTINCSRC) -I$(SERVERSRC)/include -I$(XINCLUDESRC) \
 	   -I$(EXTINCSRC) -I$(SERVERSRC)/render \
 	   $(DRIINCLUDES)
Index: programs/Xserver/hw/xfree86/drivers/tdfx/tdfx.h
===================================================================
RCS file: /cvs/xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx.h,v
retrieving revision 1.25
retrieving revision 1.27
diff -u -u -r1.25 -r1.27
--- programs/Xserver/hw/xfree86/drivers/tdfx/tdfx.h	18 Aug 2001 02:51:13 -0000	1.25
+++ programs/Xserver/hw/xfree86/drivers/tdfx/tdfx.h	17 Oct 2002 01:02:08 -0000	1.27
@@ -5,7 +5,7 @@
 
    Copyright: 1998,1999
 */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx.h,v 1.25 2001/08/18 02:51:13 dawes Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx.h,v 1.27 2002/10/17 01:02:08 dawes Exp $ */
 
 #ifndef _TDFX_H_
 #define _TDFX_H_
@@ -138,7 +138,7 @@
   unsigned char *MMIOBase[MAXCHIPS];
   unsigned char *FbBase;
   unsigned char *myFbBase;
-  unsigned int PIOBase[MAXCHIPS];
+  IOADDRESS PIOBase[MAXCHIPS];
   long FbMapSize;
   int pixelFormat;
   int stride;
@@ -219,6 +219,8 @@
   int videoKey;
   void (*VideoTimerCallback)(ScrnInfoPtr, Time);
   FBLinearPtr overlayBuffer;
+  FBLinearPtr overlayBuffer2;	/* for double-buffering */
+  int whichOverlayBuffer;	/* flip-flop */
   FBAreaPtr textureBuffer;
   Bool TextureXvideo;
   XF86VideoAdaptorPtr overlayAdaptor;
Index: programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_dri.c
===================================================================
RCS file: /cvs/xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_dri.c,v
retrieving revision 1.23
retrieving revision 1.25
diff -u -u -r1.23 -r1.25
--- programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_dri.c	21 May 2001 21:43:55 -0000	1.23
+++ programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_dri.c	8 Feb 2003 21:26:59 -0000	1.25
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_dri.c,v 1.23 2001/05/21 21:43:55 dawes Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_dri.c,v 1.25 2003/02/08 21:26:59 dawes Exp $ */
 
 #include "xf86.h"
 #include "xf86_OSproc.h"
@@ -195,7 +195,7 @@
 	    else
 	      pConfigs[i].doubleBuffer = FALSE;
 	    pConfigs[i].stereo = FALSE;
-	    pConfigs[i].bufferSize = 16;
+	    pConfigs[i].bufferSize = (pScrn->bitsPerPixel==32) ? 32 : 24;
 	    if (depth) {
 	      if (pTDFX->cpp > 2)
 		pConfigs[i].depthSize = 24;
@@ -636,6 +636,11 @@
 	pTDFX->overlayBuffer = NULL;
   }
 
+  if(pTDFX->overlayBuffer2) {
+	xf86FreeOffscreenLinear(pTDFX->overlayBuffer2);
+	pTDFX->overlayBuffer2 = NULL;
+  }
+
   if(pTDFX->textureBuffer) {
 	xf86FreeOffscreenArea(pTDFX->textureBuffer);
 	pTDFX->textureBuffer = NULL;
Index: programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_driver.c
===================================================================
RCS file: /cvs/xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_driver.c,v
retrieving revision 1.87
retrieving revision 1.92
diff -u -u -r1.87 -r1.92
--- programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_driver.c	4 Jan 2002 21:22:35 -0000	1.87
+++ programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_driver.c	25 Nov 2002 14:05:00 -0000	1.92
@@ -27,7 +27,7 @@
 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 **************************************************************************/
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_driver.c,v 1.87 2002/01/04 21:22:35 tsi Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_driver.c,v 1.92 2002/11/25 14:05:00 eich Exp $ */
 
 /*
  * Authors:
@@ -189,6 +189,7 @@
 };
 
 static const char *vgahwSymbols[] = {
+    "vgaHWEnable",
     "vgaHWFreeHWRec",
     "vgaHWGetHWRec",
     "vgaHWGetIOBase",
@@ -582,7 +583,8 @@
       pTDFX->PciTag[pTDFX->numChips] = pciTag((*ppPci)->bus, 
 					      (*ppPci)->device,
 					      (*ppPci)->func);
-      pTDFX->PIOBase[pTDFX->numChips] = (*ppPci)->ioBase[2]&0xFFFFFFFC;
+      pTDFX->PIOBase[pTDFX->numChips] =
+	pScrn->domainIOBase + ((*ppPci)->ioBase[2] & 0xFFFFFFFCU);
       pTDFX->numChips++;
     }
   }
@@ -740,7 +742,7 @@
    * We don't need VGA resources during OPERATING state. However I'm
    * not sure if they are disabled.
    */
-  xf86SetOperatingState(RES_SHARED_VGA, pTDFX->pEnt->index, ResDisableOpr);
+  xf86SetOperatingState(resVgaIo, pTDFX->pEnt->index, ResDisableOpr);
 #if 0
   pScrn->racIoFlags = RAC_COLORMAP | RAC_CURSOR | RAC_VIEWPORT;
   pScrn->racMemFlags = RAC_COLORMAP | RAC_CURSOR | RAC_VIEWPORT;
@@ -750,21 +752,22 @@
 
   /* Is VGA memory disabled during OPERATING state? */
 
-  xf86SetOperatingState(resVgaMemShared, pTDFX->pEnt->index, ResDisableOpr);
+  xf86SetOperatingState(resVgaMem, pTDFX->pEnt->index, ResDisableOpr);
 #else
   pScrn->racMemFlags = RAC_FB | RAC_COLORMAP | RAC_CURSOR | RAC_VIEWPORT;
 #endif
 #endif
 
-#if 0  
+#if 1
     /* 
      * I'm sure we don't need to set these. All resources 
      * for these operations are exclusive.
      */
-  if (pTDFX->usePIO)
-    pScrn->racIoFlags = RAC_FB | RAC_COLORMAP | RAC_CURSOR | RAC_VIEWPORT;
-  else
-    pScrn->racMemFlags = RAC_FB | RAC_COLORMAP | RAC_CURSOR | RAC_VIEWPORT;
+  if (pTDFX->usePIO) {
+      pScrn->racMemFlags = RAC_FB;
+      pScrn->racIoFlags = RAC_FB | RAC_COLORMAP | RAC_CURSOR | RAC_VIEWPORT;
+  } else
+      pScrn->racMemFlags = RAC_FB | RAC_COLORMAP | RAC_CURSOR | RAC_VIEWPORT;
 #endif
 
   /* Set pScrn->monitor */
@@ -875,9 +878,7 @@
   xf86DrvMsg(pScrn->scrnIndex, from, "MMIO registers at addr 0x%lX\n",
 	     (unsigned long)pTDFX->MMIOAddr[0]);
 
-  if (match->ioBase[2]) {
-    pTDFX->PIOBase[0] = match->ioBase[2]&0xFFFFFFFC;
-  } else {
+  if (!match->ioBase[2]) {
     xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
 	       "No valid PIO address in PCI config space\n");
     TDFXFreeRec(pScrn);
@@ -2392,7 +2393,7 @@
 static int
 TDFXValidMode(int scrnIndex, DisplayModePtr mode, Bool verbose, int flags) {
   TDFXTRACE("TDFXValidMode start\n");
-  if ((mode->HDisplay>2046) || (mode->VDisplay>1536)) 
+  if ((mode->HDisplay>2048) || (mode->VDisplay>1536)) 
     return MODE_BAD;
   /* Banshee doesn't support interlace. Does V3? */
   if (mode->Flags&V_INTERLACE) 
Index: programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_video.c
===================================================================
RCS file: /cvs/xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_video.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -u -r1.15 -r1.16
--- programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_video.c	1 Aug 2001 00:44:54 -0000	1.15
+++ programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_video.c	17 Oct 2002 01:02:08 -0000	1.16
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_video.c,v 1.15 2001/08/01 00:44:54 tsi Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_video.c,v 1.16 2002/10/17 01:02:08 dawes Exp $ */
 
 #include "xf86.h"
 #include "tdfx.h"
@@ -712,6 +712,9 @@
    int nbox;
    int format;
 
+   TDFXTRACE("TDFXPutImageTexture(src_x=%d, src_y=%d, drw_x=%d, drw_y=%d, .. sync=%d\n",
+		   src_x, src_y, drw_x, drw_y, sync);
+
    /* Check the source format */
    if (id == FOURCC_YV12)      format = SST_2D_FORMAT_YUYV;
    else if (id == FOURCC_UYVY) format = SST_2D_FORMAT_UYVY;
@@ -832,6 +835,10 @@
         xf86FreeOffscreenLinear(pTDFX->overlayBuffer);
         pTDFX->overlayBuffer = NULL;
      }
+     if(pTDFX->overlayBuffer2) {
+        xf86FreeOffscreenLinear(pTDFX->overlayBuffer2);
+        pTDFX->overlayBuffer2 = NULL;
+     }
      pPriv->videoStatus = 0;
   } else {
      if(pPriv->videoStatus & CLIENT_VIDEO_ON) {
@@ -842,6 +849,56 @@
 }
 
 
+/* * * * * *
+
+Decoder...
+
+VIDPROCCFG:  0x5c:  Video Processor Configuration register
+
+#define VIDPROCCFGMASK          0xa2e3eb6c
+  3 2         1         0
+  10987654321098765432109876543210
+  10100010111000111110101101101100
+
+The "1" bits are the bits cleared to 0 in pTDFX->ModeReg.vidcfg
+
+
+Then we or in 0x320:
+
+      11
+      109876543210
+320 = 001100100000
+    
+bit 11=0: Do not bypass clut (colour lookup) for overlay
+bit 10=0: Do not bypass clut for desktop
+bit  9=1: use video-in buffer address as overlay start
+          address (auto-flipping)
+bit  8=1: fetch overlay surface
+bit  7=0: do not fetch the desktop surface (?)
+bit  6=0: chromakey not inverted
+bit  5=1: chromakey enabled
+bit  4=0: half-mode disabled
+bit  3=0: not interlaced (interlace doesn't work on Avenger)
+bit  2=0: overlay stereo disabled
+bit  1=0: Windows cursor mode
+bit  0=0: Video processor off, VGA mode on
+
+SST_VIDEO_2X_MODE_EN: bit26: means 2 pixels per screen clock mode is on
+
+VIDOVERLAYSTARTCOORDS: x&y coords of overlay on the screen
+VIDOVERLAYENDSCREENCOORDS: x&y coorder of bot-right of overlay on the screen
+VIDOVERLAYDUDX: step size in source per hoz step in screen space (x-mag)
+VIDOVERLAYDUDXOFFSETSRCWIDTH:
+VIDOVERLAYDVDY: step size in sourcxe per vertical step in screen (y-mag)
+VIDOVERLAYDVDYOFFSET: initial offset of DVDY
+VIDDESKTOPOVERLAYSTRIDE: desktop surface stride
+
+SST_3D_LEFTOVERLAYBUF: starting physical address of the overlay surface buffer
+VIDINADDR0: starting address of video-in buffer-0
+ [this is set, but this is for video _input_ as I understand docs...?]
+
+* * * * * */
+
 static void
 TDFXDisplayVideoOverlay(
     ScrnInfoPtr pScrn,
@@ -889,8 +946,51 @@
     pTDFX->writeLong(pTDFX, VIDDESKTOPOVERLAYSTRIDE, pTDFX->ModeReg.stride);
     pTDFX->writeLong(pTDFX, SST_3D_LEFTOVERLAYBUF, offset & ~3);
     pTDFX->writeLong(pTDFX, VIDINADDR0, offset & ~3);
+    TDFXTRACE("TDFXDisplayVideoOverlay: done, offset=0x%x\n");
+}
+
+
+#if 0
+
+/* * * * *
+
+TDFXSwapVideoOverlayBuffer tries to use the Avenger SWAPBUFFER
+capability to change frames without tearing.
+
+Use this in preference to TDFXDisplayVideoOverlay where all image
+parameters are the same as the previous frame - ie where only the
+SST_3D_LEFTOVERLAYBUF register would have been changed.
+
+NOTE: Work in progress - doesn't seem to sync to VSYNC, and only every
+other frame gets displayed...
+
+Seeing that the buffer swap initiated by DisplayVideoOverlay gets
+synced to VSYNC anyway, just adding double-buffering to PutImageOverlay
+appears to do the job.  Still - I leave this code in in case we can
+get it working later
+
+  -- Steve Davies 2002-10-04
+  -- <steve@daviesfam.org>
+
+* * * * * */
+
+static void
+TDFXSwapVideoOverlayBuffer(
+    ScrnInfoPtr pScrn,
+    int offset,
+    int left
+){
+    TDFXPtr pTDFX = TDFXPTR(pScrn);
+    offset += ((left >> 16) & ~1) << 1;
+    /* Write mew buffer address */
+    pTDFX->writeLong(pTDFX, SST_3D_LEFTOVERLAYBUF, offset & ~3);
+    /* Incremement the swap-pending counter */
+    pTDFX->writeLong(pTDFX, SST_3D_SWAPPENDING, 0);
+    /* write the swapbuffer command - triggered by (next) VSYNC */
+    pTDFX->writeLong(pTDFX, SST_3D_SWAPBUFFERCMD, 1);
 }
 
+#endif
 
 static int
 TDFXPutImageOverlay(
@@ -916,6 +1016,9 @@
    BoxRec dstBox;
    CARD32 tmp;
 
+   TDFXTRACE("TDFXPutImageOverlay: src_x=%d, src_y=%d, drw_x=%d, drw_y=%d, src_w=%d, src_h=%d, drw_w=%d, drw_h=%d, id=%d, width=%d, height=%d, sync=%d\n",
+		   src_x, src_y, drw_x, drw_y, src_w, src_h, drw_w, drw_h, id, width, height, Sync);
+
    /*
     * s2offset, s3offset - byte offsets into U and V plane of the
     *                      source where copying starts.  Y plane is
@@ -973,13 +1076,26 @@
 
    if(!(pTDFX->overlayBuffer = TDFXAllocateMemoryLinear(pScrn, pTDFX->overlayBuffer, new_size)))
         return BadAlloc;
+   /* Second buffer for double-buffering (If we can't get the memory then we just don't double-buffer) */
+   if (!(pTDFX->overlayBuffer2 = TDFXAllocateMemoryLinear(pScrn, pTDFX->overlayBuffer2, new_size)))
+     pTDFX->whichOverlayBuffer = 0;
+   TDFXTRACE("TDFXPutImageOverlay: %s have a second overlay buffer for double-buffering\n",
+	     pTDFX->overlayBuffer2 ? "Do" : "Do not");
 
    /* copy data */
    top = ya >> 16;
    left = (xa >> 16) & ~1;
    npixels = ((((xb + 0xffff) >> 16) + 1) & ~1) - left;
 
-   offset = (pTDFX->overlayBuffer->offset * bpp) + (top * dstPitch) + pTDFX->fbOffset;
+   /* Get buffer offset */
+   if (pTDFX->whichOverlayBuffer == 0)
+     offset = (pTDFX->overlayBuffer->offset * bpp) + (top * dstPitch) + pTDFX->fbOffset;
+   else
+     offset = (pTDFX->overlayBuffer2->offset * bpp) + (top * dstPitch) + pTDFX->fbOffset;
+
+   /* Flip to other buffer for next time */
+   pTDFX->whichOverlayBuffer ^= 1;
+
    dst_start = pTDFX->FbBase + offset;
 
    switch(id) {
@@ -996,6 +1112,7 @@
            s3offset = tmp;
         }
         nlines = ((((yb + 0xffff) >> 16) + 1) & ~1) - top;
+	TDFXTRACE("TDFXPutImageOverlay: using copymungeddata\n");
         TDFXCopyMungedData(buf + (top * srcPitch) + left, buf + s2offset,
                            buf + s3offset, dst_start, srcPitch, srcPitch2,
                            dstPitch, nlines, npixels);
@@ -1007,6 +1124,7 @@
         buf += (top * srcPitch) + left;
         nlines = ((yb + 0xffff) >> 16) - top;
         dst_start += left;
+	TDFXTRACE("TDFXPutImageOverlay: using copydata\n");
         TDFXCopyData(buf, dst_start, srcPitch, dstPitch, nlines, npixels);
         break;
     }
@@ -1025,6 +1143,15 @@
 
     pTDFX->VideoTimerCallback = TDFXVideoTimerCallback;
 
+    /* Display some swap-buffer related info...: vidCurrOverlayStartAddr, fbiSwapHistory */
+    /* To give us some insight into workings or otherwise of swapbuffer stuff */
+    TDFXTRACE("TDFXPutImageOverlay: vidCurrOverlayStrtAdr=%x, fbiSwpHist=%x, whchBuf=%d, 3Dstus=%x\n",
+	      pTDFX->readLong(pTDFX, VIDCUROVERLAYSTARTADDR),
+	      pTDFX->readLong(pTDFX, SST_3D_FBISWAPHISTORY),
+	      pTDFX->whichOverlayBuffer,
+	      pTDFX->readLong(pTDFX, SST_3D_STATUS)
+    );
+
     return Success;
 }
 
@@ -1050,6 +1177,10 @@
                    xf86FreeOffscreenLinear(pTDFX->overlayBuffer);
                    pTDFX->overlayBuffer = NULL;
                 }
+                if(pTDFX->overlayBuffer2) {
+                   xf86FreeOffscreenLinear(pTDFX->overlayBuffer2);
+                   pTDFX->overlayBuffer2 = NULL;
+                }
                 pPriv->videoStatus = 0;
                 pTDFX->VideoTimerCallback = NULL;
             }
Index: programs/Xserver/hw/xfree86/drivers/tdfx/tdfxdefs.h
===================================================================
RCS file: /cvs/xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfxdefs.h,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -u -r1.12 -r1.13
--- programs/Xserver/hw/xfree86/drivers/tdfx/tdfxdefs.h	5 Apr 2001 21:29:17 -0000	1.12
+++ programs/Xserver/hw/xfree86/drivers/tdfx/tdfxdefs.h	17 Oct 2002 01:02:08 -0000	1.13
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfxdefs.h,v 1.12 2001/04/05 21:29:17 dawes Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfxdefs.h,v 1.13 2002/10/17 01:02:08 dawes Exp $ */
 /*
    Voodoo Banshee driver version 1.0.1
 
@@ -197,12 +197,16 @@
 
 /* 3D Registers */
 #define SST_3D_OFFSET           	0x200000
+#define SST_3D_STATUS			SST_3D_OFFSET+0
 #define SST_3D_LFBMODE               	SST_3D_OFFSET+0x114
 #define SST_3D_COMMAND 			SST_3D_OFFSET+0x120
+#define SST_3D_SWAPBUFFERCMD		SST_3D_OFFSET+0x128
 #define SST_3D_SLICTRL 			SST_3D_OFFSET+0x20C
 #define SST_3D_AACTRL			SST_3D_OFFSET+0x210
+#define SST_3D_SWAPPENDING		SST_3D_OFFSET+0x24C
 #define SST_3D_LEFTOVERLAYBUF		SST_3D_OFFSET+0x250
 #define SST_3D_RIGHTOVERLAYBUF		SST_3D_OFFSET+0x254
+#define SST_3D_FBISWAPHISTORY		SST_3D_OFFSET+0x258
 
 /* NAPALM REGISTERS */
 #define CFG_PCI_COMMAND			4

-- 
G. Branden Robinson                |
Debian GNU/Linux                   |     Music is the brandy of the damned.
branden@debian.org                 |     -- George Bernard Shaw
http://people.debian.org/~branden/ |

Attachment: signature.asc
Description: Digital signature


Reply to: