From fae166880411a79779380dff9fe5f22cc410d9b1 Mon Sep 17 00:00:00 2001 From: Jon Nettleton Date: Tue, 4 May 2010 14:19:26 +0000 Subject: Improve 2d performance on chipsets without AGP/PCIe --- ChangeLog | 13 +++++++++++++ src/via_accel.c | 30 +++++++++++++----------------- 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6c94eb1..65b9e82 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2010-05-04 Jon Nettleton + + 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 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; -- cgit v1.2.3