diff --git src/via_accel.c src/via_accel.c
index fc07f38..a873df8 100644
--- src/via_accel.c
+++ src/via_accel.c
@@ -765,6 +765,7 @@ viaSetupForScreenToScreenCopy(ScrnInfoPtr pScrn, int xdir, int ydir, int rop,
tdc->cmd = cmd;
viaAccelTransparentHelper(pVia, (trans_color != -1) ? 0x4000 : 0x0000,
trans_color, FALSE);
+ ADVANCE_RING;
}
static void
@@ -802,6 +803,7 @@ viaSetupForSolidFill(ScrnInfoPtr pScrn, int color, int rop, unsigned planemask)
tdc->cmd = VIA_GEC_BLT | VIA_GEC_FIXCOLOR_PAT | VIAACCELPATTERNROP(rop);
tdc->fgColor = color;
viaAccelTransparentHelper(pVia, 0x00, 0x00, FALSE);
+ ADVANCE_RING;
}
static void
@@ -858,6 +860,7 @@ viaSetupForMono8x8PatternFill(ScrnInfoPtr pScrn, int pattern0, int pattern1,
tdc->pattern0 = pattern0;
tdc->pattern1 = pattern1;
viaAccelTransparentHelper(pVia, 0x00, 0x00, FALSE);
+ ADVANCE_RING;
}
static void
@@ -907,6 +910,7 @@ viaSetupForColor8x8PatternFill(ScrnInfoPtr pScrn, int patternx, int patterny,
tdc->patternAddr = (patternx * pVia->Bpp + patterny * pVia->Bpl);
viaAccelTransparentHelper(pVia, (trans_color != -1) ? 0x4000 : 0x0000,
trans_color, FALSE);
+ ADVANCE_RING;
}
static void
@@ -968,9 +972,9 @@ viaSetupForCPUToScreenColorExpandFill(ScrnInfoPtr pScrn, int fg, int bg,
tdc->fgColor = fg;
tdc->bgColor = bg;
- ADVANCE_RING;
-
viaAccelTransparentHelper(pVia, 0x0, 0x0, FALSE);
+
+ ADVANCE_RING;
}
static void
@@ -997,7 +1001,7 @@ viaSubsequentScanlineCPUToScreenColorExpandFill(ScrnInfoPtr pScrn, int x,
pScrn->fbOffset + sub * pVia->Bpl, tdc->mode,
pVia->Bpl, pVia->Bpl, tdc->cmd);
- viaFlushPCI(cb);
+ ADVANCE_RING;
viaDisableClipping(pScrn);
}
@@ -1011,9 +1015,9 @@ viaSetupForImageWrite(ScrnInfoPtr pScrn, int rop, unsigned planemask,
RING_VARS;
tdc->cmd = VIA_GEC_BLT | VIA_GEC_SRC_SYS | VIAACCELCOPYROP(rop);
- ADVANCE_RING;
viaAccelTransparentHelper(pVia, (trans_color != -1) ? 0x4000 : 0x0000,
trans_color, FALSE);
+ ADVANCE_RING;
}
static void
@@ -1036,7 +1040,7 @@ viaSubsequentImageWriteRect(ScrnInfoPtr pScrn, int x, int y, int w, int h,
pScrn->fbOffset + pVia->Bpl * sub, tdc->mode,
pVia->Bpl, pVia->Bpl, tdc->cmd);
- viaFlushPCI(cb);
+ ADVANCE_RING;
viaDisableClipping(pScrn);
}
@@ -1058,6 +1062,7 @@ viaSetupForSolidLine(ScrnInfoPtr pScrn, int color, int rop,
OUT_RING_H1(VIA_REG(pVia, GEMODE), tdc->mode);
OUT_RING_H1(VIA_REG(pVia, MONOPAT0), 0xFF);
OUT_RING_H1(VIA_REG(pVia, MONOPATFGC), tdc->fgColor);
+ ADVANCE_RING;
}
static void
@@ -1195,6 +1200,7 @@ viaSetupForDashedLine(ScrnInfoPtr pScrn, int fg, int bg, int rop,
OUT_RING_H1(VIA_REG(pVia, MONOPATFGC), tdc->fgColor);
OUT_RING_H1(VIA_REG(pVia, MONOPATBGC), tdc->bgColor);
OUT_RING_H1(VIA_REG(pVia, MONOPAT0), tdc->pattern0);
+ ADVANCE_RING;
}
static void
@@ -1303,8 +1309,8 @@ viaInitXAA(ScreenPtr pScreen)
SCANLINE_PAD_DWORD |
BIT_ORDER_IN_BYTE_MSBFIRST |
LEFT_EDGE_CLIPPING |
- ROP_NEEDS_SOURCE | 0);
- // SYNC_AFTER_IMAGE_WRITE | 0);
+ ROP_NEEDS_SOURCE |
+ NO_GXCOPY | 0);
/*
* Most Unichromes are much faster using processor-to-framebuffer writes
@@ -1314,16 +1320,6 @@ viaInitXAA(ScreenPtr pScreen)
* TODO Check speed for other chipsets
*/
- switch (pVia->Chipset) {
- case VIA_P4M900:
- case VIA_VX800:
- case VIA_VX855:
- break;
- default:
- xaaptr->ImageWriteFlags |= NO_GXCOPY;
- break;
- }
-
xaaptr->SetupForImageWrite = viaSetupForImageWrite;
xaaptr->SubsequentImageWriteRect = viaSubsequentImageWriteRect;
xaaptr->ImageWriteBase = pVia->BltBase;