]> git.pld-linux.org Git - packages/XFree86.git/commitdiff
ce936ec4383be3a217b0bc8d2498b52d XFree86-glide3.patch
authorJan Rękorajski <baggins@pld-linux.org>
Thu, 2 Nov 2000 16:58:19 +0000 (16:58 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
778709eb7c74976b7b71ab15f83dc7c7  XFree86-tdfxdrmfixes.patch
0a15b1c374256b5cad7961807baa3896  xdm-xinitrc-0.2.tar.bz2

Changed files:
    XFree86-glide3.patch -> 1.1
    XFree86-tdfxdrmfixes.patch -> 1.1

XFree86-glide3.patch [new file with mode: 0644]
XFree86-tdfxdrmfixes.patch [new file with mode: 0644]

diff --git a/XFree86-glide3.patch b/XFree86-glide3.patch
new file mode 100644 (file)
index 0000000..6d51233
--- /dev/null
@@ -0,0 +1,11 @@
+--- xc/lib/GL/mesa/src/drv/tdfx/Imakefile.fred Thu Aug 24 09:17:57 2000
++++ xc/lib/GL/mesa/src/drv/tdfx/Imakefile      Thu Aug 24 09:51:47 2000
+@@ -278,7 +278,7 @@
+          SRCS = $(DRISRCS) $(DRMSRCS) $(TDFXSRCS) $(MESASRCS) $(ASMSRCS)
+          OBJS = $(DRIOBJS) $(DRMOBJS) $(TDFXOBJS) $(MESAOBJS) $(ASMOBJS)
+-REQUIREDLIBS = -lglide3x -lm
++REQUIREDLIBS = -lglide3 -lm
+ #if !GlxBuiltInTdfx
+ REQUIREDLIBS += -L../../../.. -lGL
+ #endif
diff --git a/XFree86-tdfxdrmfixes.patch b/XFree86-tdfxdrmfixes.patch
new file mode 100644 (file)
index 0000000..8c7df5f
--- /dev/null
@@ -0,0 +1,324 @@
+--- XFree86-4.0.1/xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_dri.c.chmou Tue Sep 19 17:34:43 2000
++++ XFree86-4.0.1/xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_dri.c       Tue Sep 19 18:30:25 2000
+@@ -127,9 +127,10 @@
+       }
+     }
+     if (i!=numConfigs) {
+-      ErrorF("Incorrect initialization of visuals\n");
++      xf86DrvMsg(pScreen->myNum, X_ERROR,
++                 "Incorrect initialization of visuals\n");
+       return FALSE;
+-    } else ErrorF("Created %d visuals\n", numConfigs);
++    }
+     break; /* 16bpp */
+   case 24:
+@@ -224,7 +225,7 @@
+       xf86DrvMsg(pScreen->myNum, X_ERROR,
+                  "Incorrect initialization of visuals\n");
+       return FALSE;
+-    } else ErrorF("Created %d visuals\n", numConfigs);
++    }
+     break;
+   }
+   pTDFX->numVisualConfigs = numConfigs;
+@@ -263,12 +264,21 @@
+   switch (pScrn->bitsPerPixel) {
+   case 8:
++    xf86DrvMsg(pScreen->myNum, X_ERROR,
++                 "DRI not supported in 8 bpp mode, disabling DRI.\n");
+     return FALSE;
+   case 16:
+     break;
+   case 24:
++    xf86DrvMsg(pScreen->myNum, X_ERROR,
++                 "DRI not supported in 24 bpp mode, disabling DRI.\n");
++    return FALSE;
+   case 32:
+-    if (pTDFX->ChipType<=PCI_CHIP_VOODOO3) return FALSE;
++     if (pTDFX->ChipType<=PCI_CHIP_VOODOO3) {
++       xf86DrvMsg(pScreen->myNum, X_ERROR,
++                  "DRI requires Voodoo3 or later, disabling DRI.\n");
++       return FALSE;
++     }
+   }
+     /* Check that the GLX, DRI, and DRM modules have been loaded by testing
+@@ -295,8 +305,12 @@
+   }
+   pDRIInfo = DRICreateInfoRec();
+-  if (!pDRIInfo)
+-     return FALSE;
++  if (!pDRIInfo) {
++    xf86DrvMsg(pScreen->myNum, X_ERROR,
++               "DRICreatInfoRect() failed, disabling DRI.\n");
++    return FALSE;
++  }
++
+   pTDFX->pDRIInfo = pDRIInfo;
+   pDRIInfo->drmDriverName = TDFXKernelDriverName;
+@@ -336,13 +350,14 @@
+    * in the SAREA header
+    */
+   if (sizeof(XF86DRISAREARec)+sizeof(TDFXSAREAPriv)>SAREA_MAX) {
+-     xf86DrvMsg(pScreen->myNum, X_ERROR, "Data does not fit in SAREA\n");
++    xf86DrvMsg(pScreen->myNum, X_ERROR, "Data does not fit in SAREA\n");
+     return FALSE;
+   }
+   pDRIInfo->SAREASize = SAREA_MAX;
+ #endif
+   if (!(pTDFXDRI = (TDFXDRIPtr)xnfcalloc(sizeof(TDFXDRIRec),1))) {
++    xf86DrvMsg(pScreen->myNum, X_ERROR, "DRI memory allocation failed, disabling DRI.\n");
+     DRIDestroyInfoRec(pTDFX->pDRIInfo);
+     pTDFX->pDRIInfo=0;
+     return FALSE;
+@@ -363,6 +378,8 @@
+     pDRIInfo->devPrivate=0;
+     DRIDestroyInfoRec(pTDFX->pDRIInfo);
+     pTDFX->pDRIInfo=0;
++    xf86DrvMsg(pScreen->myNum, X_ERROR, "DRIScreenInit failed, disabling DRI.\n");
++
+     return FALSE;
+   }
+@@ -391,6 +408,7 @@
+   if (drmAddMap(pTDFX->drmSubFD, (drmHandle)pTDFX->MMIOAddr[0], 
+               pTDFXDRI->regsSize, DRM_REGISTERS, 0, &pTDFXDRI->regs)<0) {
+     TDFXDRICloseScreen(pScreen);
++    xf86DrvMsg(pScreen->myNum, X_ERROR, "drmAddMap failed, disabling DRI.\n");
+     return FALSE;
+   }
+   xf86DrvMsg(pScreen->myNum, X_INFO, "[drm] Registers = 0x%08lx\n",
+@@ -398,6 +416,7 @@
+   if (!(TDFXInitVisualConfigs(pScreen))) {
+     TDFXDRICloseScreen(pScreen);
++    xf86DrvMsg(pScreen->myNum, X_ERROR, "TDFXInitVisualConfigs failed, disabling DRI.\n");
+     return FALSE;
+   }
+   xf86DrvMsg(pScrn->scrnIndex, X_INFO, "visual configs initialized\n" );
+--- XFree86-4.0.1/xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_driver.c.chmou      Tue Sep 19 17:34:43 2000
++++ XFree86-4.0.1/xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_driver.c    Tue Sep 19 18:30:25 2000
+@@ -636,7 +636,6 @@
+   ClockRangePtr clockRanges;
+   int i;
+   MessageType from;
+-  char *mod=0, *reqSym=0;
+   int flags24;
+   rgb defaultWeight = {0, 0, 0};
+   pciVideoPtr match;
+@@ -663,7 +662,7 @@
+   if (flags & PROBE_DETECT) {
+     TDFXProbeDDC(pScrn, pTDFX->pEnt->index);
+-    return FALSE;
++    return TRUE;
+   }
+   
+   /* The vgahw module should be loaded here when needed */
+@@ -1195,7 +1194,10 @@
+     maxm=24;
+   } else {
+     minm=1;
+-    maxm=64;
++    maxm=57; /* This used to be 64, alas it seems the last 8 (funny that ?)
++              * values cause jittering at lower resolutions. I've not done
++              * any calculations to what the adjustment affects clock ranges,
++              * but I can still run at 1600x1200@75Hz */
+   }
+   for (n=1; n<256; n++) {
+     f_cur=REFFREQ*(n+2);
+@@ -1604,15 +1606,6 @@
+   pTDFX = TDFXPTR(pScrn);
+   pTDFX->stride = pScrn->displayWidth*pTDFX->cpp;
+-  /* Layout the memory.  Start with all the ram */
+-  memRemaining=pScrn->videoRam<<10;
+-  /* Remove the cursor space */
+-  memRemaining-=4096;
+-  /* Remove the main screen and offscreen pixmaps */
+-  memRemaining-=pTDFX->stride*(pScrn->virtualY+128);
+-  /* Remove one scanline for page alignment */
+-  memRemaining-=4095;
+-  /* Remove the back and Z buffers */
+   if (pTDFX->cpp!=3) {
+     screenSizeInTiles=calcBufferSize(pScrn->virtualX, pScrn->virtualY,
+                                    TRUE, pTDFX->cpp);
+@@ -1622,41 +1615,77 @@
+     screenSizeInTiles=calcBufferSize(pScrn->virtualX, pScrn->virtualY,
+                                    TRUE, 4);
+   }
+-  memRemaining-=screenSizeInTiles*2;
+-
+-  /* Give all the rest to textures, rounded down to a page */
+-  texSize=memRemaining&~0xFFF;
+-
+-  /* Make sure fifo has CMDFIFO_PAGES<fifoSize<255 pages */
+-  if (memRemaining-texSize<CMDFIFO_PAGES<<12)
+-    texSize=(memRemaining-(CMDFIFO_PAGES<<12))&~0xFFF;
+-  /* Fifo uses the remaining space up to 255 pages */
+-  fifoSize = (memRemaining-texSize)&~0xFFF;
+-  if (fifoSize>255<<12) fifoSize=255<<12;
+-
+-  /* Assign the variables */
+-  /* Cursor */
+-  pTDFX->cursorOffset=0; /* Size 1024 bytes */
+-
+-  /* Point the fifo at the first page */
++  memRemaining=((pScrn->videoRam<<10) - 1) &~ 0xFFF;
++  /* Note that a page is 4096 bytes, and a  */
++  /* tile is 32 x 128 = 4096 bytes.  So,    */
++  /* page and tile boundaries are the same  */
++  /* Place the depth offset first, forcing  */
++  /* it to be on an *odd* page boundary.    */
++  pTDFX->depthOffset = (memRemaining - screenSizeInTiles) &~ 0xFFF;
++  if ((pTDFX->depthOffset & (0x1 << 12)) == 0) {
++#if   0
++      xf86DrvMsg(pScrn->scrnIndex, X_INFO,
++                 "Changing depth offset from 0x%08x to 0x%08x\n",
++                 pTDFX->depthOffset,
++                 pTDFX->depthOffset - (0x1 << 12));
++#endif
++      pTDFX->depthOffset -= (0x1 << 12);
++  }
++  /* Now, place the back buffer, forcing it */
++  /* to be on an *even* page boundary.      */
++  pTDFX->backOffset = (pTDFX->depthOffset - screenSizeInTiles) &~ 0xFFF;
++  if (pTDFX->backOffset & (0x1 << 12)) {
++#if   0
++      xf86DrvMsg(pScrn->scrnIndex, X_INFO,
++                 "Changing back offset from 0x%08x to 0x%08x\n",
++                 pTDFX->backOffset,
++                 pTDFX->backOffset - (0x1 << 12));
++#endif
++      pTDFX->backOffset -= (0x1 << 12);
++  }
++  /* Now, place the front buffer, forcing   */
++  /* it to be on a page boundary too, just  */
++  /* for giggles.                           */
++  pTDFX->fbOffset
++      = (pTDFX->backOffset - (pScrn->virtualY+128)*pTDFX->stride) &~ 0xFFF;
++  /* Give the cmd fifo at least             */
++  /* CMDFIFO_PAGES pages, but no more than  */
++  /* 255.                                   */
++  fifoSize = ((255 <= CMDFIFO_PAGES) ? 255 : CMDFIFO_PAGES) << 12;
++  /* We give 4096 bytes to the cursor, fifoSize to the */
++  /* FIFO, and everything to textures.                 */
++  texSize = (pTDFX->fbOffset - fifoSize - 4096);
++  pTDFX->texOffset = pTDFX->fbOffset - texSize;
++  pTDFX->texSize = texSize;
+   pTDFX->fifoOffset = 4096;
+   pTDFX->fifoSize = fifoSize;
+-
+-  /* Textures */
+-  pTDFX->texOffset = pTDFX->fifoOffset+fifoSize;
+-  pTDFX->texSize = texSize;
+-
+-  /* Frame buffer */
+-  pTDFX->fbOffset=pTDFX->texOffset+pTDFX->texSize;
+-
+-  /* Back buffer */
+-  pTDFX->backOffset=pTDFX->fbOffset+(pScrn->virtualY+128)*pTDFX->stride;
+-  /* Round off to a page */
+-  pTDFX->backOffset=(pTDFX->backOffset+4095)&~0xFFF;
+-
+-  /* Depth buffer */
+-  pTDFX->depthOffset=pTDFX->backOffset+screenSizeInTiles;
+-
++  pTDFX->cursorOffset = 0;
++#if   0
++  xf86DrvMsg(pScrn->scrnIndex, X_INFO,
++             "Cursor Offset: [0x%08X,0x%08X)\n",
++             pTDFX->cursorOffset,
++             pTDFX->cursorOffset+1024);
++  xf86DrvMsg(pScrn->scrnIndex, X_INFO,
++             "Fifo Offset: [0x%08X, 0x%08X)\n",
++             pTDFX->fifoOffset,
++             pTDFX->fifoOffset+fifoSize);
++  xf86DrvMsg(pScrn->scrnIndex, X_INFO,
++             "Texture Offset: [0x%08X, 0x%08X)\n",
++             pTDFX->texOffset,
++             pTDFX->texOffset + texSize);
++  xf86DrvMsg(pScrn->scrnIndex, X_INFO,
++             "Front Buffer Offset: [0x%08X, 0x%08X)\n",
++             pTDFX->fbOffset,
++             pTDFX->fbOffset + (pScrn->virtualY+128)*pTDFX->stride);
++  xf86DrvMsg(pScrn->scrnIndex, X_INFO,
++             "BackOffset: [0x%08X, 0x%08X)\n",
++             pTDFX->backOffset,
++             pTDFX->backOffset+screenSizeInTiles);
++  xf86DrvMsg(pScrn->scrnIndex, X_INFO,
++             "DepthOffset: [0x%08X, 0x%08X)\n",
++             pTDFX->depthOffset,
++             pTDFX->depthOffset+screenSizeInTiles);
++#endif        /* 0/1 */
+   xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Textures Memory %0.02f MB\n",
+            (float)texSize/1024.0/1024.0);
+ }
+--- XFree86-4.0.1/xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_accel.c.chmou       Tue Sep 19 17:34:43 2000
++++ XFree86-4.0.1/xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_accel.c     Tue Sep 19 18:30:25 2000
+@@ -163,12 +163,22 @@
+   } else {
+     int chip;
+     int stride, bits;
++    int TileAperturePitch, lg2TileAperturePitch;
+     if (pTDFX->cpp==2) stride=pTDFX->stride;
+     else stride=4*pTDFX->stride/pTDFX->cpp;
+     bits=pTDFX->backOffset>>12;
++    for (lg2TileAperturePitch = 0, TileAperturePitch = 1024;
++         (lg2TileAperturePitch < 5) &&
++             TileAperturePitch < stride;
++         lg2TileAperturePitch += 1, TileAperturePitch <<= 1);
++#if   0
++    fprintf(stderr, "Using %d (== lg2(%d)-10) for tile aperture pitch\n",
++            lg2TileAperturePitch, TileAperturePitch);
++    fprintf(stderr, "stride == %d\n", stride);
++#endif
+     for (chip=0; chip<pTDFX->numChips; chip++) {
+       TDFXWriteChipLongMMIO(pTDFX, chip, LFBMEMORYCONFIG, (bits&0x1FFF) |
+-                          SST_RAW_LFB_ADDR_STRIDE_4K | 
++                          SST_RAW_LFB_ADDR_STRIDE(lg2TileAperturePitch) | 
+                           ((bits&0x6000)<<10) |
+                           ((stride+127)/128)<<SST_RAW_LFB_TILE_STRIDE_SHIFT);
+     }
+--- XFree86-4.0.1/xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_sli.c.chmou Tue Sep 19 17:34:43 2000
++++ XFree86-4.0.1/xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_sli.c       Tue Sep 19 18:30:25 2000
+@@ -1,4 +1,3 @@
+-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_sli.c,v 1.2 2000/06/17 18:23:23 dawes Exp $ */
+ #include "xf86.h"
+ #include "xf86_ansic.h"
+--- XFree86-4.0.1/xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfxdefs.h.chmou Tue Sep 19 17:34:43 2000
++++ XFree86-4.0.1/xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfxdefs.h       Tue Sep 19 18:30:25 2000
+@@ -52,8 +52,26 @@
+ #define MEM_TYPE_SGRAM  0
+ #define MEM_TYPE_SDRAM  1
++/*
++ * SST_RAW_LFB_ADDR_STRIDE(Lg2SizeInK) takes the
++ * lfbMemoryConfig value for SGRAMStrideInTiles.  This
++ * is given by this table:
++ *  SGRAMStrideInBytes        lfbMemoryConfig Value
++ *  ==================        =====================
++ *          1k                          0
++ *          2k                          1
++ *          4k                          2
++ *          8k                          3
++ *         16k                          4
++ *
++ * FWIW, the right hand column is log2(left hand column)-10
++ */
+ #define SST_RAW_LFB_ADDR_STRIDE_SHIFT 13
+-#define SST_RAW_LFB_ADDR_STRIDE_4K 0x2<<SST_RAW_LFB_ADDR_STRIDE_SHIFT
++#define SST_RAW_LFB_ADDR_STRIDE(Lg2SizeInK) \
++              ((Lg2SizeInK)<<SST_RAW_LFB_ADDR_STRIDE_SHIFT)
++#define SST_RAW_LFB_ADDR_STRIDE_4K SST_RAW_LFB_ADDR_STRIDE(2)
++#define SST_RAW_LFB_ADDR_STRIDE_8K SST_RAW_LFB_ADDR_STRIDE(3)
++#define SST_RAW_LFB_ADDR_STRIDE_16K SST_RAW_LFB_ADDR_STRIDE(4)
+ #define SST_RAW_LFB_TILE_STRIDE_SHIFT 16
+ #define BLIT_LEFT 1
This page took 0.057045 seconds and 4 git commands to generate.