diff options
-rw-r--r-- | ChangeLog | 13 | ||||
-rw-r--r-- | src/via_accel.c | 30 |
2 files changed, 26 insertions, 17 deletions
@@ -1,3 +1,16 @@ +2010-05-04 Jon Nettleton <jon.nettleton@gmail.com> + + Improve 2d performance on chipsets that don't have + AGP/PCIe support yet. + + * src/via_accel.c: (viaSetupForScreenToScreenCopy), + (viaSetupForSolidFill), (viaSetupForMono8x8PatternFill), + (viaSetupForColor8x8PatternFill), + (viaSetupForCPUToScreenColorExpandFill), + (viaSubsequentScanlineCPUToScreenColorExpandFill), + (viaSetupForImageWrite), (viaSubsequentImageWriteRect), + (viaSetupForSolidLine), (viaSetupForDashedLine), (viaInitXAA): + 2010-05-04 Jon Nettleton <jon.nettleton@gmail.com> Put timeouts on our while statements. These codepaths diff --git a/src/via_accel.c b/src/via_accel.c index 4a5810e..13bbec9 100644 --- a/src/via_accel.c +++ b/src/via_accel.c @@ -759,6 +759,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 @@ -796,6 +797,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 @@ -852,6 +854,7 @@ viaSetupForMono8x8PatternFill(ScrnInfoPtr pScrn, int pattern0, int pattern1, tdc->pattern0 = pattern0; tdc->pattern1 = pattern1; viaAccelTransparentHelper(pVia, 0x00, 0x00, FALSE); + ADVANCE_RING; } static void @@ -901,6 +904,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 @@ -962,9 +966,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 @@ -991,7 +995,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); } @@ -1005,9 +1009,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 @@ -1030,7 +1034,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); } @@ -1052,6 +1056,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 @@ -1189,6 +1194,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 @@ -1297,8 +1303,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 @@ -1308,16 +1314,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; |