[PATCH xf86-video-trident 1/2] Rename trident_accel.c to tgui_xaa.c

Kevin Brace kevinbrace at gmx.com
Thu Feb 14 22:43:41 UTC 2019


From: Kevin Brace <kevinbrace at bracecomputerlab.com>

Signed-off-by: Kevin Brace <kevinbrace at gmx.com>
---
 src/Makefile.am     |   2 +-
 src/tgui_xaa.c      | 671 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 src/trident_accel.c | 671 ----------------------------------------------------
 3 files changed, 672 insertions(+), 672 deletions(-)
 create mode 100644 src/tgui_xaa.c
 delete mode 100644 src/trident_accel.c

diff --git a/src/Makefile.am b/src/Makefile.am
index 9e65055..6c230ed 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -34,7 +34,7 @@ trident_drv_la_SOURCES = \
          blade_accel_exa.c \
          compat-api.h \
          image_accel.c \
-         trident_accel.c \
+         tgui_xaa.c \
          trident_bank.c \
          trident_dac.c \
          trident_dga.c \
diff --git a/src/tgui_xaa.c b/src/tgui_xaa.c
new file mode 100644
index 0000000..f47fab4
--- /dev/null
+++ b/src/tgui_xaa.c
@@ -0,0 +1,671 @@
+/*
+ * Copyright 1992-2003 by Alan Hourihane, North Wales, UK.
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Alan Hourihane not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission.  Alan Hourihane makes no representations
+ * about the suitability of this software for any purpose.  It is provided
+ * "as is" without express or implied warranty.
+ *
+ * ALAN HOURIHANE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL ALAN HOURIHANE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Authors:  Alan Hourihane, <alanh at fairlite.demon.co.uk>
+ * 
+ * Trident accelerated options.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "xf86.h"
+#include "xf86_OSproc.h"
+
+#include "xf86Pci.h"
+
+#include "miline.h"
+
+#include "trident.h"
+#include "trident_regs.h"
+
+#ifdef HAVE_XAA_H
+#include "xaalocal.h"
+#include "xaarop.h"
+
+static void TridentSync(ScrnInfoPtr pScrn);
+static void TridentSetupForDashedLine(ScrnInfoPtr pScrn, int fg, int bg, 
+				int rop, unsigned int planemask, int length,
+    				unsigned char *pattern);
+static void TridentSubsequentDashedBresenhamLine(ScrnInfoPtr pScrn,
+        			int x, int y, int dmaj, int dmin, int e, 
+				int len, int octant, int phase);
+static void TridentSetupForSolidLine(ScrnInfoPtr pScrn, int color,
+				int rop, unsigned int planemask);
+static void TridentSubsequentSolidBresenhamLine(ScrnInfoPtr pScrn,
+        			int x, int y, int dmaj, int dmin, int e, 
+				int len, int octant);
+static void TridentSubsequentSolidHorVertLine(ScrnInfoPtr pScrn, int x, int y,
+    				int len, int dir);
+static void TridentSetupForFillRectSolid(ScrnInfoPtr pScrn, int color,
+				int rop, unsigned int planemask);
+static void TridentSubsequentFillRectSolid(ScrnInfoPtr pScrn, int x,
+				int y, int w, int h);
+static void TridentSubsequentScreenToScreenCopy(ScrnInfoPtr pScrn,
+				int x1, int y1, int x2,
+				int y2, int w, int h);
+static void TridentSetupForScreenToScreenCopy(ScrnInfoPtr pScrn,
+				int xdir, int ydir, int rop, 
+                                unsigned int planemask,
+				int transparency_color);
+static void TridentSetupForMono8x8PatternFill(ScrnInfoPtr pScrn, 
+				int patternx, int patterny, int fg, int bg, 
+				int rop, unsigned int planemask);
+static void TridentSubsequentMono8x8PatternFillRect(ScrnInfoPtr pScrn, 
+				int patternx, int patterny, int x, int y, 
+				int w, int h);
+#if 0
+static void TridentSetupForColor8x8PatternFill(ScrnInfoPtr pScrn, 
+				int patternx, int patterny, 
+				int rop, unsigned int planemask, int trans_col);
+static void TridentSubsequentColor8x8PatternFillRect(ScrnInfoPtr pScrn, 
+				int patternx, int patterny, int x, int y, 
+				int w, int h);
+#endif
+#if 0
+static void TridentSetupForScanlineCPUToScreenColorExpandFill(
+				ScrnInfoPtr pScrn,
+				int fg, int bg, int rop, 
+				unsigned int planemask);
+static void TridentSubsequentScanlineCPUToScreenColorExpandFill(
+				ScrnInfoPtr pScrn, int x,
+				int y, int w, int h, int skipleft);
+static void TridentSubsequentColorExpandScanline(ScrnInfoPtr pScrn, int bufno);
+#endif
+
+
+static void
+TridentInitializeAccelerator(ScrnInfoPtr pScrn)
+{
+    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
+
+    /* This forces updating the clipper */
+    pTrident->Clipping = TRUE;
+
+    CHECKCLIPPING;
+
+    if ( (pTrident->Chipset == PROVIDIA9682) ||
+         (pTrident->Chipset == CYBER9385) ||
+         (pTrident->Chipset == CYBER9382) ) 
+    	pTrident->EngineOperation |= 0x100; /* Disable Clipping */
+
+    TGUI_OPERMODE(pTrident->EngineOperation);
+
+    pTrident->PatternLocation = pScrn->displayWidth*pScrn->bitsPerPixel/8;
+}
+#endif
+
+Bool
+TridentAccelInit(ScreenPtr pScreen)
+{
+#ifdef HAVE_XAA_H
+    XAAInfoRecPtr infoPtr;
+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
+    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
+
+    if (pTrident->NoAccel)
+	return FALSE;
+
+    pTrident->AccelInfoRec = infoPtr = XAACreateInfoRec();
+    if (!infoPtr) return FALSE;
+
+    if (!(pTrident->Chipset == TGUI9440AGi && pScrn->bitsPerPixel > 8)) 
+    	infoPtr->Flags = PIXMAP_CACHE |
+		     OFFSCREEN_PIXMAPS |
+		     LINEAR_FRAMEBUFFER;
+
+    pTrident->InitializeAccelerator = TridentInitializeAccelerator;
+    TridentInitializeAccelerator(pScrn);
+
+    infoPtr->PixmapCacheFlags = DO_NOT_BLIT_STIPPLES;
+ 
+    infoPtr->Sync = TridentSync;
+
+    infoPtr->SolidLineFlags = NO_PLANEMASK;
+    infoPtr->SetupForSolidLine = TridentSetupForSolidLine;
+    infoPtr->SolidBresenhamLineErrorTermBits = 12;
+    infoPtr->SubsequentSolidBresenhamLine = TridentSubsequentSolidBresenhamLine;
+    infoPtr->SubsequentSolidHorVertLine = TridentSubsequentSolidHorVertLine;
+
+    infoPtr->DashedLineFlags = LINE_PATTERN_MSBFIRST_LSBJUSTIFIED |
+			       NO_PLANEMASK |
+			       LINE_PATTERN_POWER_OF_2_ONLY;
+    infoPtr->SetupForDashedLine = TridentSetupForDashedLine;
+    infoPtr->DashedBresenhamLineErrorTermBits = 12;
+    infoPtr->SubsequentDashedBresenhamLine = 
+					TridentSubsequentDashedBresenhamLine;  
+    infoPtr->DashPatternMaxLength = 16;
+
+    infoPtr->SolidFillFlags = NO_PLANEMASK;
+    infoPtr->SetupForSolidFill = TridentSetupForFillRectSolid;
+    infoPtr->SubsequentSolidFillRect = TridentSubsequentFillRectSolid;
+    
+    infoPtr->ScreenToScreenCopyFlags = NO_PLANEMASK;
+
+    if (!HAS_DST_TRANS) infoPtr->ScreenToScreenCopyFlags |= NO_TRANSPARENCY;
+
+    infoPtr->SetupForScreenToScreenCopy = 	
+				TridentSetupForScreenToScreenCopy;
+    infoPtr->SubsequentScreenToScreenCopy = 		
+				TridentSubsequentScreenToScreenCopy;
+
+    if (!((pTrident->Chipset == PROVIDIA9685 ||
+	   pTrident->Chipset == CYBER9388) && pScrn->bitsPerPixel > 8)) { 
+    	infoPtr->Mono8x8PatternFillFlags =  NO_PLANEMASK | 
+					HARDWARE_PATTERN_SCREEN_ORIGIN | 
+					BIT_ORDER_IN_BYTE_MSBFIRST;
+
+    	infoPtr->SetupForMono8x8PatternFill =
+				TridentSetupForMono8x8PatternFill;
+    	infoPtr->SubsequentMono8x8PatternFillRect = 
+				TridentSubsequentMono8x8PatternFillRect;
+    }
+
+#if 0 /* Not convinced this works 100% yet */
+    infoPtr->Color8x8PatternFillFlags = NO_PLANEMASK | 
+					HARDWARE_PATTERN_SCREEN_ORIGIN | 
+					BIT_ORDER_IN_BYTE_MSBFIRST;
+
+    if (!HAS_DST_TRANS) infoPtr->Color8x8PatternFillFlags |= NO_TRANSPARENCY;
+
+    infoPtr->SetupForColor8x8PatternFill =
+				TridentSetupForColor8x8PatternFill;
+    infoPtr->SubsequentColor8x8PatternFillRect = 
+				TridentSubsequentColor8x8PatternFillRect;
+#endif
+
+#if 0 /* This is buggy, it only seems to work 95% of the time.... */
+    {
+    	infoPtr->ScanlineCPUToScreenColorExpandFillFlags = NO_PLANEMASK |
+					NO_TRANSPARENCY |
+					BIT_ORDER_IN_BYTE_MSBFIRST;
+
+    	pTrident->XAAScanlineColorExpandBuffers[0] =
+	    xnfalloc(((pScrn->virtualX + 63)) *4* (pScrn->bitsPerPixel / 8));
+
+    	infoPtr->NumScanlineColorExpandBuffers = 1;
+    	infoPtr->ScanlineColorExpandBuffers = 
+					pTrident->XAAScanlineColorExpandBuffers;
+
+    	infoPtr->SetupForScanlineCPUToScreenColorExpandFill =
+			TridentSetupForScanlineCPUToScreenColorExpandFill;
+    	infoPtr->SubsequentScanlineCPUToScreenColorExpandFill = 
+			TridentSubsequentScanlineCPUToScreenColorExpandFill;
+    	infoPtr->SubsequentColorExpandScanline = 
+			TridentSubsequentColorExpandScanline;
+    }
+#endif
+
+    return(XAAInit(pScreen, infoPtr));
+#else
+    return FALSE;
+#endif
+}
+
+#ifdef HAVE_XAA_H
+static void
+TridentSync(ScrnInfoPtr pScrn)
+{
+    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
+    int count = 0, timeout = 0;
+    int busy;
+
+    TGUI_OPERMODE(pTrident->EngineOperation);
+
+    for (;;) {
+	BLTBUSY(busy);
+	if (busy != GE_BUSY) {
+	    return;
+	}
+	count++;
+	if (count == 10000000) {
+	    ErrorF("Trident: BitBLT engine time-out.\n");
+	    count = 9990000;
+	    timeout++;
+	    if (timeout == 8) {
+		/* Reset BitBLT Engine */
+		TGUI_STATUS(0x00);
+		return;
+	    }
+	}
+    }
+}
+
+static void
+TridentClearSync(ScrnInfoPtr pScrn)
+{
+    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
+    int count = 0, timeout = 0;
+    int busy;
+
+    for (;;) {
+	BLTBUSY(busy);
+	if (busy != GE_BUSY) {
+	    return;
+	}
+	count++;
+	if (count == 10000000) {
+	    ErrorF("Trident: BitBLT engine time-out.\n");
+	    count = 9990000;
+	    timeout++;
+	    if (timeout == 8) {
+		/* Reset BitBLT Engine */
+		TGUI_STATUS(0x00);
+		return;
+	    }
+	}
+    }
+}
+
+static void
+TridentSetupForScreenToScreenCopy(ScrnInfoPtr pScrn, 
+				int xdir, int ydir, int rop,
+				unsigned int planemask, int transparency_color)
+{
+    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
+    int dst = 0;
+
+    pTrident->BltScanDirection = 0;
+    if (xdir < 0) pTrident->BltScanDirection |= XNEG;
+    if (ydir < 0) pTrident->BltScanDirection |= YNEG;
+
+    REPLICATE(transparency_color);
+    if (transparency_color != -1) {
+	if (pTrident->Chipset == PROVIDIA9685 ||
+	    pTrident->Chipset == CYBER9388) {
+	    dst |= 1<<16;
+	} else {
+    	    TGUI_OPERMODE(pTrident->EngineOperation | DST_ENABLE);
+	}
+	TGUI_CKEY(transparency_color);
+    }
+
+    TGUI_DRAWFLAG(pTrident->DrawFlag | pTrident->BltScanDirection | SCR2SCR | dst);
+    TGUI_FMIX(XAAGetCopyROP(rop));
+}
+
+static void
+TridentSubsequentScreenToScreenCopy(ScrnInfoPtr pScrn, int x1, int y1,
+					int x2, int y2, int w, int h)
+{
+    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
+
+    if (pTrident->BltScanDirection & YNEG) {
+        y1 = y1 + h - 1;
+	y2 = y2 + h - 1;
+    }
+    if (pTrident->BltScanDirection & XNEG) {
+	x1 = x1 + w - 1;
+	x2 = x2 + w - 1;
+    }
+    TGUI_SRC_XY(x1,y1);
+    TGUI_DEST_XY(x2,y2);
+    TGUI_DIM_XY(w,h);
+    TGUI_COMMAND(GE_BLT);
+    TridentClearSync(pScrn);
+}
+
+static void
+TridentSetupForSolidLine(ScrnInfoPtr pScrn, int color,
+					 int rop, unsigned int planemask)
+{
+    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
+
+    pTrident->BltScanDirection = 0;
+    REPLICATE(color);
+    TGUI_FMIX(XAAGetPatternROP(rop));
+    if (pTrident->Chipset == PROVIDIA9685 ||
+        pTrident->Chipset == CYBER9388) {
+    	TGUI_FPATCOL(color);
+    } else {
+    	TGUI_FCOLOUR(color);
+    }
+}
+
+static void 
+TridentSubsequentSolidBresenhamLine( ScrnInfoPtr pScrn,
+        int x, int y, int dmaj, int dmin, int e, int len, int octant)
+{
+    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
+    int tmp = pTrident->BltScanDirection;
+
+    if (octant & YMAJOR) tmp |= YMAJ;
+    if (octant & XDECREASING) tmp |= XNEG;
+    if (octant & YDECREASING) tmp |= YNEG;
+    TGUI_DRAWFLAG(pTrident->DrawFlag | SOLIDFILL | STENCIL | tmp);
+    TGUI_SRC_XY(dmin-dmaj,dmin);
+    TGUI_DEST_XY(x,y);
+    TGUI_DIM_XY(dmin+e,len);
+    TGUI_COMMAND(GE_BRESLINE);
+    TridentSync(pScrn);
+}
+
+static void 
+TridentSubsequentSolidHorVertLine(
+    ScrnInfoPtr pScrn,
+    int x, int y, 
+    int len, int dir
+){
+    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
+
+    TGUI_DRAWFLAG(pTrident->DrawFlag | SOLIDFILL);
+    if (dir == DEGREES_0) {
+    	TGUI_DIM_XY(len,1);
+    	TGUI_DEST_XY(x,y);
+    } else {
+    	TGUI_DIM_XY(1,len);
+    	TGUI_DEST_XY(x,y);
+    }
+    TGUI_COMMAND(GE_BLT);
+    TridentSync(pScrn);
+}
+
+void
+TridentSetupForDashedLine(
+    ScrnInfoPtr pScrn, 
+    int fg, int bg, int rop,
+    unsigned int planemask,
+    int length,
+    unsigned char *pattern
+){
+    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
+    CARD32 *DashPattern = (CARD32*)pattern;
+    CARD32 NiceDashPattern = DashPattern[0];
+
+    NiceDashPattern = *((CARD16 *)pattern) & ((1<<length) - 1);
+    switch(length) {
+	case 2:	NiceDashPattern |= NiceDashPattern << 2;
+	case 4:	NiceDashPattern |= NiceDashPattern << 4;
+	case 8:	NiceDashPattern |= NiceDashPattern << 8;
+    }
+    pTrident->BltScanDirection = 0;
+    REPLICATE(fg);
+    if (pTrident->Chipset == PROVIDIA9685 ||
+        pTrident->Chipset == CYBER9388) {
+	TGUI_FPATCOL(fg);
+    	if (bg == -1) {
+	    pTrident->BltScanDirection |= 1<<12;
+    	    TGUI_BPATCOL(~fg);
+    	} else {
+    	    REPLICATE(bg);
+    	    TGUI_BPATCOL(bg);
+    	}
+    } else {
+    	TGUI_FCOLOUR(fg);
+    	if (bg == -1) {
+	    pTrident->BltScanDirection |= 1<<12;
+    	    TGUI_BCOLOUR(~fg);
+    	} else {
+    	    REPLICATE(bg);
+    	    TGUI_BCOLOUR(bg);
+    	}
+    }
+    TGUI_FMIX(XAAGetPatternROP(rop));
+    pTrident->LinePattern = NiceDashPattern;
+}
+
+
+void
+TridentSubsequentDashedBresenhamLine(ScrnInfoPtr pScrn,
+        int x, int y, int dmaj, int dmin, int e, int len, int octant, int phase)
+{
+    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
+    int tmp = pTrident->BltScanDirection;
+
+    if (octant & YMAJOR) tmp |= YMAJ;
+    if (octant & XDECREASING) tmp |= XNEG;
+    if (octant & YDECREASING) tmp |= YNEG;
+
+    TGUI_STYLE(((pTrident->LinePattern >> phase) | 
+		(pTrident->LinePattern << (16-phase))) & 0x0000FFFF);
+    TGUI_DRAWFLAG(pTrident->DrawFlag | STENCIL | tmp);
+    TGUI_SRC_XY(dmin-dmaj,dmin);
+    TGUI_DEST_XY(x,y);
+    TGUI_DIM_XY(e+dmin,len);
+    TGUI_COMMAND(GE_BRESLINE);
+    TridentSync(pScrn);
+}
+
+static void
+TridentSetupForFillRectSolid(ScrnInfoPtr pScrn, int color, 
+				    int rop, unsigned int planemask)
+{
+    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
+    int drawflag = 0;
+
+    REPLICATE(color);
+    TGUI_FMIX(XAAGetPatternROP(rop));
+    if (pTrident->Chipset == PROVIDIA9685 ||
+        pTrident->Chipset == CYBER9388) {
+    	TGUI_FPATCOL(color);
+    } else {
+    	drawflag |= PATMONO;
+    	TGUI_FCOLOUR(color);
+    }
+    TGUI_DRAWFLAG(pTrident->DrawFlag | SOLIDFILL | drawflag);
+}
+
+static void
+TridentSubsequentFillRectSolid(ScrnInfoPtr pScrn, int x, int y, int w, int h)
+{
+    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
+
+    TGUI_DIM_XY(w,h);
+    TGUI_DEST_XY(x,y);
+    TGUI_COMMAND(GE_BLT);
+    TridentSync(pScrn);
+}
+
+#if 0
+static void MoveDWORDS(
+   register CARD32* dest,
+   register CARD32* src,
+   register int dwords )
+{
+     while(dwords & ~0x03) {
+	*dest = *src;
+	*(dest + 1) = *(src + 1);
+	*(dest + 2) = *(src + 2);
+	*(dest + 3) = *(src + 3);
+	src += 4;
+	dest += 4;
+	dwords -= 4;
+     }	
+     if (!dwords) return;
+     *dest = *src;
+     dest += 1;
+     src += 1;
+     if (dwords == 1) return;
+     *dest = *src;
+     dest += 1;
+     src += 1;
+     if (dwords == 2) return;
+     *dest = *src;
+     dest += 1;
+     src += 1;
+}
+#endif
+
+static void 
+TridentSetupForMono8x8PatternFill(ScrnInfoPtr pScrn, 
+					   int patternx, int patterny, 
+					   int fg, int bg, int rop,
+					   unsigned int planemask)
+{
+    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
+    int drawflag = 0;
+
+    REPLICATE(fg);
+    if (pTrident->Chipset == PROVIDIA9685 ||
+        pTrident->Chipset == CYBER9388)
+    	TGUI_FPATCOL(fg);
+    else
+    	TGUI_FCOLOUR(fg);
+
+    if (bg == -1) {
+	drawflag |= 1<<12;
+    	if (pTrident->Chipset == PROVIDIA9685 ||
+            pTrident->Chipset == CYBER9388) 
+    	    TGUI_BPATCOL(~fg);
+	else
+    	    TGUI_BCOLOUR(~fg);
+    } else {
+    	REPLICATE(bg);
+    	if (pTrident->Chipset == PROVIDIA9685 ||
+            pTrident->Chipset == CYBER9388) 
+    	    TGUI_BPATCOL(bg);
+	else
+    	    TGUI_BCOLOUR(bg);
+    }
+
+    if (pTrident->Chipset == PROVIDIA9685 ||
+        pTrident->Chipset == CYBER9388) {
+	drawflag |= 7<<18;
+    }
+    TGUI_DRAWFLAG(pTrident->DrawFlag | PAT2SCR | PATMONO | drawflag);
+    TGUI_PATLOC(((patterny * pTrident->PatternLocation) +
+		 (patternx * pScrn->bitsPerPixel / 8)) >> 6);
+    TGUI_FMIX(XAAGetPatternROP(rop));
+}
+
+static void 
+TridentSubsequentMono8x8PatternFillRect(ScrnInfoPtr pScrn, 	
+				   int patternx, int patterny,
+				   int x, int y,
+				   int w, int h)
+{
+    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
+  
+    TGUI_DEST_XY(x,y);
+    TGUI_DIM_XY(w,h);
+    TGUI_COMMAND(GE_BLT);
+    TridentSync(pScrn);
+}
+
+#if 0
+static void 
+TridentSetupForColor8x8PatternFill(ScrnInfoPtr pScrn, 
+					   int patternx, int patterny, 
+					   int rop,
+					   unsigned int planemask,
+					   int transparency_color)
+{
+    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
+    int drawflag = 0;
+
+    REPLICATE(transparency_color);
+    if (transparency_color != -1) {
+    	if (pTrident->Chipset == PROVIDIA9685 ||
+            pTrident->Chipset == CYBER9388) {
+	    drawflag |= 1<<16;
+	} else {
+    	    TGUI_OPERMODE(pTrident->EngineOperation | DST_ENABLE);
+	}
+	TGUI_CKEY(transparency_color);
+    }
+
+    TGUI_DRAWFLAG(pTrident->DrawFlag | PAT2SCR | drawflag);
+    TGUI_PATLOC(((patterny * pTrident->PatternLocation) +
+		 (patternx * pScrn->bitsPerPixel / 8)) >> 6);
+    TGUI_FMIX(XAAGetPatternROP(rop));
+}
+
+static void 
+TridentSubsequentColor8x8PatternFillRect(ScrnInfoPtr pScrn, 	
+				   int patternx, int patterny,
+				   int x, int y,
+				   int w, int h)
+{
+    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
+  
+    TGUI_DEST_XY(x,y);
+    TGUI_DIM_XY(w,h);
+    TGUI_COMMAND(GE_BLT);
+    TridentClearSync(pScrn);
+}
+#endif
+
+#if 0
+static void
+TridentSetupForScanlineCPUToScreenColorExpandFill(
+	ScrnInfoPtr pScrn,
+	int fg, int bg, 
+	int rop, 
+	unsigned int planemask
+){
+    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
+    int drawflag = SRCMONO;
+
+    REPLICATE(fg);
+    TGUI_FCOLOUR(fg);
+    if (bg == -1) {
+	drawflag |= 1<<12;
+    	TGUI_BCOLOUR(~fg);
+    } else {
+    	REPLICATE(bg);
+    	TGUI_BCOLOUR(bg);
+    }
+
+    TGUI_SRC_XY(0,0);
+    TGUI_DRAWFLAG(drawflag);
+    TGUI_FMIX(XAAGetCopyROP(rop));
+}
+
+static void
+TridentSubsequentScanlineCPUToScreenColorExpandFill(
+	ScrnInfoPtr pScrn,
+	int x, int y, int w, int h,
+	int skipleft
+){
+    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
+    pTrident->dwords = (w + 31) >> 5;
+    pTrident->h = h;
+    pTrident->y = y;
+    pTrident->x = x;
+    pTrident->w = w;
+
+    TGUI_DEST_XY(x,pTrident->y++);
+    TGUI_DIM_XY(w,1);
+    TGUI_COMMAND(GE_BLT);
+}
+
+static void
+TridentSubsequentColorExpandScanline(ScrnInfoPtr pScrn, int bufno)
+{
+    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
+    XAAInfoRecPtr infoRec;
+    infoRec = GET_XAAINFORECPTR_FROM_SCRNINFOPTR(pScrn);
+
+    MoveDWORDS((CARD32 *)pTrident->FbBase, 
+		(CARD32 *)pTrident->XAAScanlineColorExpandBuffers[0], 
+			pTrident->dwords);
+
+    pTrident->h--;
+    TridentSync(pScrn);
+    if (pTrident->h) {
+    	TGUI_DEST_XY(pTrident->x,pTrident->y++);
+    	TGUI_DIM_XY(pTrident->w,1);
+    	TGUI_COMMAND(GE_BLT);
+    }
+}
+#endif
+#endif
diff --git a/src/trident_accel.c b/src/trident_accel.c
deleted file mode 100644
index f47fab4..0000000
--- a/src/trident_accel.c
+++ /dev/null
@@ -1,671 +0,0 @@
-/*
- * Copyright 1992-2003 by Alan Hourihane, North Wales, UK.
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Alan Hourihane not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission.  Alan Hourihane makes no representations
- * about the suitability of this software for any purpose.  It is provided
- * "as is" without express or implied warranty.
- *
- * ALAN HOURIHANE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL ALAN HOURIHANE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- * Authors:  Alan Hourihane, <alanh at fairlite.demon.co.uk>
- * 
- * Trident accelerated options.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "xf86.h"
-#include "xf86_OSproc.h"
-
-#include "xf86Pci.h"
-
-#include "miline.h"
-
-#include "trident.h"
-#include "trident_regs.h"
-
-#ifdef HAVE_XAA_H
-#include "xaalocal.h"
-#include "xaarop.h"
-
-static void TridentSync(ScrnInfoPtr pScrn);
-static void TridentSetupForDashedLine(ScrnInfoPtr pScrn, int fg, int bg, 
-				int rop, unsigned int planemask, int length,
-    				unsigned char *pattern);
-static void TridentSubsequentDashedBresenhamLine(ScrnInfoPtr pScrn,
-        			int x, int y, int dmaj, int dmin, int e, 
-				int len, int octant, int phase);
-static void TridentSetupForSolidLine(ScrnInfoPtr pScrn, int color,
-				int rop, unsigned int planemask);
-static void TridentSubsequentSolidBresenhamLine(ScrnInfoPtr pScrn,
-        			int x, int y, int dmaj, int dmin, int e, 
-				int len, int octant);
-static void TridentSubsequentSolidHorVertLine(ScrnInfoPtr pScrn, int x, int y,
-    				int len, int dir);
-static void TridentSetupForFillRectSolid(ScrnInfoPtr pScrn, int color,
-				int rop, unsigned int planemask);
-static void TridentSubsequentFillRectSolid(ScrnInfoPtr pScrn, int x,
-				int y, int w, int h);
-static void TridentSubsequentScreenToScreenCopy(ScrnInfoPtr pScrn,
-				int x1, int y1, int x2,
-				int y2, int w, int h);
-static void TridentSetupForScreenToScreenCopy(ScrnInfoPtr pScrn,
-				int xdir, int ydir, int rop, 
-                                unsigned int planemask,
-				int transparency_color);
-static void TridentSetupForMono8x8PatternFill(ScrnInfoPtr pScrn, 
-				int patternx, int patterny, int fg, int bg, 
-				int rop, unsigned int planemask);
-static void TridentSubsequentMono8x8PatternFillRect(ScrnInfoPtr pScrn, 
-				int patternx, int patterny, int x, int y, 
-				int w, int h);
-#if 0
-static void TridentSetupForColor8x8PatternFill(ScrnInfoPtr pScrn, 
-				int patternx, int patterny, 
-				int rop, unsigned int planemask, int trans_col);
-static void TridentSubsequentColor8x8PatternFillRect(ScrnInfoPtr pScrn, 
-				int patternx, int patterny, int x, int y, 
-				int w, int h);
-#endif
-#if 0
-static void TridentSetupForScanlineCPUToScreenColorExpandFill(
-				ScrnInfoPtr pScrn,
-				int fg, int bg, int rop, 
-				unsigned int planemask);
-static void TridentSubsequentScanlineCPUToScreenColorExpandFill(
-				ScrnInfoPtr pScrn, int x,
-				int y, int w, int h, int skipleft);
-static void TridentSubsequentColorExpandScanline(ScrnInfoPtr pScrn, int bufno);
-#endif
-
-
-static void
-TridentInitializeAccelerator(ScrnInfoPtr pScrn)
-{
-    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
-
-    /* This forces updating the clipper */
-    pTrident->Clipping = TRUE;
-
-    CHECKCLIPPING;
-
-    if ( (pTrident->Chipset == PROVIDIA9682) ||
-         (pTrident->Chipset == CYBER9385) ||
-         (pTrident->Chipset == CYBER9382) ) 
-    	pTrident->EngineOperation |= 0x100; /* Disable Clipping */
-
-    TGUI_OPERMODE(pTrident->EngineOperation);
-
-    pTrident->PatternLocation = pScrn->displayWidth*pScrn->bitsPerPixel/8;
-}
-#endif
-
-Bool
-TridentAccelInit(ScreenPtr pScreen)
-{
-#ifdef HAVE_XAA_H
-    XAAInfoRecPtr infoPtr;
-    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
-    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
-
-    if (pTrident->NoAccel)
-	return FALSE;
-
-    pTrident->AccelInfoRec = infoPtr = XAACreateInfoRec();
-    if (!infoPtr) return FALSE;
-
-    if (!(pTrident->Chipset == TGUI9440AGi && pScrn->bitsPerPixel > 8)) 
-    	infoPtr->Flags = PIXMAP_CACHE |
-		     OFFSCREEN_PIXMAPS |
-		     LINEAR_FRAMEBUFFER;
-
-    pTrident->InitializeAccelerator = TridentInitializeAccelerator;
-    TridentInitializeAccelerator(pScrn);
-
-    infoPtr->PixmapCacheFlags = DO_NOT_BLIT_STIPPLES;
- 
-    infoPtr->Sync = TridentSync;
-
-    infoPtr->SolidLineFlags = NO_PLANEMASK;
-    infoPtr->SetupForSolidLine = TridentSetupForSolidLine;
-    infoPtr->SolidBresenhamLineErrorTermBits = 12;
-    infoPtr->SubsequentSolidBresenhamLine = TridentSubsequentSolidBresenhamLine;
-    infoPtr->SubsequentSolidHorVertLine = TridentSubsequentSolidHorVertLine;
-
-    infoPtr->DashedLineFlags = LINE_PATTERN_MSBFIRST_LSBJUSTIFIED |
-			       NO_PLANEMASK |
-			       LINE_PATTERN_POWER_OF_2_ONLY;
-    infoPtr->SetupForDashedLine = TridentSetupForDashedLine;
-    infoPtr->DashedBresenhamLineErrorTermBits = 12;
-    infoPtr->SubsequentDashedBresenhamLine = 
-					TridentSubsequentDashedBresenhamLine;  
-    infoPtr->DashPatternMaxLength = 16;
-
-    infoPtr->SolidFillFlags = NO_PLANEMASK;
-    infoPtr->SetupForSolidFill = TridentSetupForFillRectSolid;
-    infoPtr->SubsequentSolidFillRect = TridentSubsequentFillRectSolid;
-    
-    infoPtr->ScreenToScreenCopyFlags = NO_PLANEMASK;
-
-    if (!HAS_DST_TRANS) infoPtr->ScreenToScreenCopyFlags |= NO_TRANSPARENCY;
-
-    infoPtr->SetupForScreenToScreenCopy = 	
-				TridentSetupForScreenToScreenCopy;
-    infoPtr->SubsequentScreenToScreenCopy = 		
-				TridentSubsequentScreenToScreenCopy;
-
-    if (!((pTrident->Chipset == PROVIDIA9685 ||
-	   pTrident->Chipset == CYBER9388) && pScrn->bitsPerPixel > 8)) { 
-    	infoPtr->Mono8x8PatternFillFlags =  NO_PLANEMASK | 
-					HARDWARE_PATTERN_SCREEN_ORIGIN | 
-					BIT_ORDER_IN_BYTE_MSBFIRST;
-
-    	infoPtr->SetupForMono8x8PatternFill =
-				TridentSetupForMono8x8PatternFill;
-    	infoPtr->SubsequentMono8x8PatternFillRect = 
-				TridentSubsequentMono8x8PatternFillRect;
-    }
-
-#if 0 /* Not convinced this works 100% yet */
-    infoPtr->Color8x8PatternFillFlags = NO_PLANEMASK | 
-					HARDWARE_PATTERN_SCREEN_ORIGIN | 
-					BIT_ORDER_IN_BYTE_MSBFIRST;
-
-    if (!HAS_DST_TRANS) infoPtr->Color8x8PatternFillFlags |= NO_TRANSPARENCY;
-
-    infoPtr->SetupForColor8x8PatternFill =
-				TridentSetupForColor8x8PatternFill;
-    infoPtr->SubsequentColor8x8PatternFillRect = 
-				TridentSubsequentColor8x8PatternFillRect;
-#endif
-
-#if 0 /* This is buggy, it only seems to work 95% of the time.... */
-    {
-    	infoPtr->ScanlineCPUToScreenColorExpandFillFlags = NO_PLANEMASK |
-					NO_TRANSPARENCY |
-					BIT_ORDER_IN_BYTE_MSBFIRST;
-
-    	pTrident->XAAScanlineColorExpandBuffers[0] =
-	    xnfalloc(((pScrn->virtualX + 63)) *4* (pScrn->bitsPerPixel / 8));
-
-    	infoPtr->NumScanlineColorExpandBuffers = 1;
-    	infoPtr->ScanlineColorExpandBuffers = 
-					pTrident->XAAScanlineColorExpandBuffers;
-
-    	infoPtr->SetupForScanlineCPUToScreenColorExpandFill =
-			TridentSetupForScanlineCPUToScreenColorExpandFill;
-    	infoPtr->SubsequentScanlineCPUToScreenColorExpandFill = 
-			TridentSubsequentScanlineCPUToScreenColorExpandFill;
-    	infoPtr->SubsequentColorExpandScanline = 
-			TridentSubsequentColorExpandScanline;
-    }
-#endif
-
-    return(XAAInit(pScreen, infoPtr));
-#else
-    return FALSE;
-#endif
-}
-
-#ifdef HAVE_XAA_H
-static void
-TridentSync(ScrnInfoPtr pScrn)
-{
-    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
-    int count = 0, timeout = 0;
-    int busy;
-
-    TGUI_OPERMODE(pTrident->EngineOperation);
-
-    for (;;) {
-	BLTBUSY(busy);
-	if (busy != GE_BUSY) {
-	    return;
-	}
-	count++;
-	if (count == 10000000) {
-	    ErrorF("Trident: BitBLT engine time-out.\n");
-	    count = 9990000;
-	    timeout++;
-	    if (timeout == 8) {
-		/* Reset BitBLT Engine */
-		TGUI_STATUS(0x00);
-		return;
-	    }
-	}
-    }
-}
-
-static void
-TridentClearSync(ScrnInfoPtr pScrn)
-{
-    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
-    int count = 0, timeout = 0;
-    int busy;
-
-    for (;;) {
-	BLTBUSY(busy);
-	if (busy != GE_BUSY) {
-	    return;
-	}
-	count++;
-	if (count == 10000000) {
-	    ErrorF("Trident: BitBLT engine time-out.\n");
-	    count = 9990000;
-	    timeout++;
-	    if (timeout == 8) {
-		/* Reset BitBLT Engine */
-		TGUI_STATUS(0x00);
-		return;
-	    }
-	}
-    }
-}
-
-static void
-TridentSetupForScreenToScreenCopy(ScrnInfoPtr pScrn, 
-				int xdir, int ydir, int rop,
-				unsigned int planemask, int transparency_color)
-{
-    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
-    int dst = 0;
-
-    pTrident->BltScanDirection = 0;
-    if (xdir < 0) pTrident->BltScanDirection |= XNEG;
-    if (ydir < 0) pTrident->BltScanDirection |= YNEG;
-
-    REPLICATE(transparency_color);
-    if (transparency_color != -1) {
-	if (pTrident->Chipset == PROVIDIA9685 ||
-	    pTrident->Chipset == CYBER9388) {
-	    dst |= 1<<16;
-	} else {
-    	    TGUI_OPERMODE(pTrident->EngineOperation | DST_ENABLE);
-	}
-	TGUI_CKEY(transparency_color);
-    }
-
-    TGUI_DRAWFLAG(pTrident->DrawFlag | pTrident->BltScanDirection | SCR2SCR | dst);
-    TGUI_FMIX(XAAGetCopyROP(rop));
-}
-
-static void
-TridentSubsequentScreenToScreenCopy(ScrnInfoPtr pScrn, int x1, int y1,
-					int x2, int y2, int w, int h)
-{
-    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
-
-    if (pTrident->BltScanDirection & YNEG) {
-        y1 = y1 + h - 1;
-	y2 = y2 + h - 1;
-    }
-    if (pTrident->BltScanDirection & XNEG) {
-	x1 = x1 + w - 1;
-	x2 = x2 + w - 1;
-    }
-    TGUI_SRC_XY(x1,y1);
-    TGUI_DEST_XY(x2,y2);
-    TGUI_DIM_XY(w,h);
-    TGUI_COMMAND(GE_BLT);
-    TridentClearSync(pScrn);
-}
-
-static void
-TridentSetupForSolidLine(ScrnInfoPtr pScrn, int color,
-					 int rop, unsigned int planemask)
-{
-    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
-
-    pTrident->BltScanDirection = 0;
-    REPLICATE(color);
-    TGUI_FMIX(XAAGetPatternROP(rop));
-    if (pTrident->Chipset == PROVIDIA9685 ||
-        pTrident->Chipset == CYBER9388) {
-    	TGUI_FPATCOL(color);
-    } else {
-    	TGUI_FCOLOUR(color);
-    }
-}
-
-static void 
-TridentSubsequentSolidBresenhamLine( ScrnInfoPtr pScrn,
-        int x, int y, int dmaj, int dmin, int e, int len, int octant)
-{
-    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
-    int tmp = pTrident->BltScanDirection;
-
-    if (octant & YMAJOR) tmp |= YMAJ;
-    if (octant & XDECREASING) tmp |= XNEG;
-    if (octant & YDECREASING) tmp |= YNEG;
-    TGUI_DRAWFLAG(pTrident->DrawFlag | SOLIDFILL | STENCIL | tmp);
-    TGUI_SRC_XY(dmin-dmaj,dmin);
-    TGUI_DEST_XY(x,y);
-    TGUI_DIM_XY(dmin+e,len);
-    TGUI_COMMAND(GE_BRESLINE);
-    TridentSync(pScrn);
-}
-
-static void 
-TridentSubsequentSolidHorVertLine(
-    ScrnInfoPtr pScrn,
-    int x, int y, 
-    int len, int dir
-){
-    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
-
-    TGUI_DRAWFLAG(pTrident->DrawFlag | SOLIDFILL);
-    if (dir == DEGREES_0) {
-    	TGUI_DIM_XY(len,1);
-    	TGUI_DEST_XY(x,y);
-    } else {
-    	TGUI_DIM_XY(1,len);
-    	TGUI_DEST_XY(x,y);
-    }
-    TGUI_COMMAND(GE_BLT);
-    TridentSync(pScrn);
-}
-
-void
-TridentSetupForDashedLine(
-    ScrnInfoPtr pScrn, 
-    int fg, int bg, int rop,
-    unsigned int planemask,
-    int length,
-    unsigned char *pattern
-){
-    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
-    CARD32 *DashPattern = (CARD32*)pattern;
-    CARD32 NiceDashPattern = DashPattern[0];
-
-    NiceDashPattern = *((CARD16 *)pattern) & ((1<<length) - 1);
-    switch(length) {
-	case 2:	NiceDashPattern |= NiceDashPattern << 2;
-	case 4:	NiceDashPattern |= NiceDashPattern << 4;
-	case 8:	NiceDashPattern |= NiceDashPattern << 8;
-    }
-    pTrident->BltScanDirection = 0;
-    REPLICATE(fg);
-    if (pTrident->Chipset == PROVIDIA9685 ||
-        pTrident->Chipset == CYBER9388) {
-	TGUI_FPATCOL(fg);
-    	if (bg == -1) {
-	    pTrident->BltScanDirection |= 1<<12;
-    	    TGUI_BPATCOL(~fg);
-    	} else {
-    	    REPLICATE(bg);
-    	    TGUI_BPATCOL(bg);
-    	}
-    } else {
-    	TGUI_FCOLOUR(fg);
-    	if (bg == -1) {
-	    pTrident->BltScanDirection |= 1<<12;
-    	    TGUI_BCOLOUR(~fg);
-    	} else {
-    	    REPLICATE(bg);
-    	    TGUI_BCOLOUR(bg);
-    	}
-    }
-    TGUI_FMIX(XAAGetPatternROP(rop));
-    pTrident->LinePattern = NiceDashPattern;
-}
-
-
-void
-TridentSubsequentDashedBresenhamLine(ScrnInfoPtr pScrn,
-        int x, int y, int dmaj, int dmin, int e, int len, int octant, int phase)
-{
-    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
-    int tmp = pTrident->BltScanDirection;
-
-    if (octant & YMAJOR) tmp |= YMAJ;
-    if (octant & XDECREASING) tmp |= XNEG;
-    if (octant & YDECREASING) tmp |= YNEG;
-
-    TGUI_STYLE(((pTrident->LinePattern >> phase) | 
-		(pTrident->LinePattern << (16-phase))) & 0x0000FFFF);
-    TGUI_DRAWFLAG(pTrident->DrawFlag | STENCIL | tmp);
-    TGUI_SRC_XY(dmin-dmaj,dmin);
-    TGUI_DEST_XY(x,y);
-    TGUI_DIM_XY(e+dmin,len);
-    TGUI_COMMAND(GE_BRESLINE);
-    TridentSync(pScrn);
-}
-
-static void
-TridentSetupForFillRectSolid(ScrnInfoPtr pScrn, int color, 
-				    int rop, unsigned int planemask)
-{
-    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
-    int drawflag = 0;
-
-    REPLICATE(color);
-    TGUI_FMIX(XAAGetPatternROP(rop));
-    if (pTrident->Chipset == PROVIDIA9685 ||
-        pTrident->Chipset == CYBER9388) {
-    	TGUI_FPATCOL(color);
-    } else {
-    	drawflag |= PATMONO;
-    	TGUI_FCOLOUR(color);
-    }
-    TGUI_DRAWFLAG(pTrident->DrawFlag | SOLIDFILL | drawflag);
-}
-
-static void
-TridentSubsequentFillRectSolid(ScrnInfoPtr pScrn, int x, int y, int w, int h)
-{
-    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
-
-    TGUI_DIM_XY(w,h);
-    TGUI_DEST_XY(x,y);
-    TGUI_COMMAND(GE_BLT);
-    TridentSync(pScrn);
-}
-
-#if 0
-static void MoveDWORDS(
-   register CARD32* dest,
-   register CARD32* src,
-   register int dwords )
-{
-     while(dwords & ~0x03) {
-	*dest = *src;
-	*(dest + 1) = *(src + 1);
-	*(dest + 2) = *(src + 2);
-	*(dest + 3) = *(src + 3);
-	src += 4;
-	dest += 4;
-	dwords -= 4;
-     }	
-     if (!dwords) return;
-     *dest = *src;
-     dest += 1;
-     src += 1;
-     if (dwords == 1) return;
-     *dest = *src;
-     dest += 1;
-     src += 1;
-     if (dwords == 2) return;
-     *dest = *src;
-     dest += 1;
-     src += 1;
-}
-#endif
-
-static void 
-TridentSetupForMono8x8PatternFill(ScrnInfoPtr pScrn, 
-					   int patternx, int patterny, 
-					   int fg, int bg, int rop,
-					   unsigned int planemask)
-{
-    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
-    int drawflag = 0;
-
-    REPLICATE(fg);
-    if (pTrident->Chipset == PROVIDIA9685 ||
-        pTrident->Chipset == CYBER9388)
-    	TGUI_FPATCOL(fg);
-    else
-    	TGUI_FCOLOUR(fg);
-
-    if (bg == -1) {
-	drawflag |= 1<<12;
-    	if (pTrident->Chipset == PROVIDIA9685 ||
-            pTrident->Chipset == CYBER9388) 
-    	    TGUI_BPATCOL(~fg);
-	else
-    	    TGUI_BCOLOUR(~fg);
-    } else {
-    	REPLICATE(bg);
-    	if (pTrident->Chipset == PROVIDIA9685 ||
-            pTrident->Chipset == CYBER9388) 
-    	    TGUI_BPATCOL(bg);
-	else
-    	    TGUI_BCOLOUR(bg);
-    }
-
-    if (pTrident->Chipset == PROVIDIA9685 ||
-        pTrident->Chipset == CYBER9388) {
-	drawflag |= 7<<18;
-    }
-    TGUI_DRAWFLAG(pTrident->DrawFlag | PAT2SCR | PATMONO | drawflag);
-    TGUI_PATLOC(((patterny * pTrident->PatternLocation) +
-		 (patternx * pScrn->bitsPerPixel / 8)) >> 6);
-    TGUI_FMIX(XAAGetPatternROP(rop));
-}
-
-static void 
-TridentSubsequentMono8x8PatternFillRect(ScrnInfoPtr pScrn, 	
-				   int patternx, int patterny,
-				   int x, int y,
-				   int w, int h)
-{
-    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
-  
-    TGUI_DEST_XY(x,y);
-    TGUI_DIM_XY(w,h);
-    TGUI_COMMAND(GE_BLT);
-    TridentSync(pScrn);
-}
-
-#if 0
-static void 
-TridentSetupForColor8x8PatternFill(ScrnInfoPtr pScrn, 
-					   int patternx, int patterny, 
-					   int rop,
-					   unsigned int planemask,
-					   int transparency_color)
-{
-    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
-    int drawflag = 0;
-
-    REPLICATE(transparency_color);
-    if (transparency_color != -1) {
-    	if (pTrident->Chipset == PROVIDIA9685 ||
-            pTrident->Chipset == CYBER9388) {
-	    drawflag |= 1<<16;
-	} else {
-    	    TGUI_OPERMODE(pTrident->EngineOperation | DST_ENABLE);
-	}
-	TGUI_CKEY(transparency_color);
-    }
-
-    TGUI_DRAWFLAG(pTrident->DrawFlag | PAT2SCR | drawflag);
-    TGUI_PATLOC(((patterny * pTrident->PatternLocation) +
-		 (patternx * pScrn->bitsPerPixel / 8)) >> 6);
-    TGUI_FMIX(XAAGetPatternROP(rop));
-}
-
-static void 
-TridentSubsequentColor8x8PatternFillRect(ScrnInfoPtr pScrn, 	
-				   int patternx, int patterny,
-				   int x, int y,
-				   int w, int h)
-{
-    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
-  
-    TGUI_DEST_XY(x,y);
-    TGUI_DIM_XY(w,h);
-    TGUI_COMMAND(GE_BLT);
-    TridentClearSync(pScrn);
-}
-#endif
-
-#if 0
-static void
-TridentSetupForScanlineCPUToScreenColorExpandFill(
-	ScrnInfoPtr pScrn,
-	int fg, int bg, 
-	int rop, 
-	unsigned int planemask
-){
-    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
-    int drawflag = SRCMONO;
-
-    REPLICATE(fg);
-    TGUI_FCOLOUR(fg);
-    if (bg == -1) {
-	drawflag |= 1<<12;
-    	TGUI_BCOLOUR(~fg);
-    } else {
-    	REPLICATE(bg);
-    	TGUI_BCOLOUR(bg);
-    }
-
-    TGUI_SRC_XY(0,0);
-    TGUI_DRAWFLAG(drawflag);
-    TGUI_FMIX(XAAGetCopyROP(rop));
-}
-
-static void
-TridentSubsequentScanlineCPUToScreenColorExpandFill(
-	ScrnInfoPtr pScrn,
-	int x, int y, int w, int h,
-	int skipleft
-){
-    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
-    pTrident->dwords = (w + 31) >> 5;
-    pTrident->h = h;
-    pTrident->y = y;
-    pTrident->x = x;
-    pTrident->w = w;
-
-    TGUI_DEST_XY(x,pTrident->y++);
-    TGUI_DIM_XY(w,1);
-    TGUI_COMMAND(GE_BLT);
-}
-
-static void
-TridentSubsequentColorExpandScanline(ScrnInfoPtr pScrn, int bufno)
-{
-    TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
-    XAAInfoRecPtr infoRec;
-    infoRec = GET_XAAINFORECPTR_FROM_SCRNINFOPTR(pScrn);
-
-    MoveDWORDS((CARD32 *)pTrident->FbBase, 
-		(CARD32 *)pTrident->XAAScanlineColorExpandBuffers[0], 
-			pTrident->dwords);
-
-    pTrident->h--;
-    TridentSync(pScrn);
-    if (pTrident->h) {
-    	TGUI_DEST_XY(pTrident->x,pTrident->y++);
-    	TGUI_DIM_XY(pTrident->w,1);
-    	TGUI_COMMAND(GE_BLT);
-    }
-}
-#endif
-#endif
-- 
2.7.4



More information about the xorg-devel mailing list