summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Nettleton <jon.nettleton@gmail.com>2010-05-04 14:19:26 +0000
committerJon Nettleton <jon.nettleton@gmail.com>2010-05-04 14:19:26 +0000
commitfae166880411a79779380dff9fe5f22cc410d9b1 (patch)
tree5e3ff4406b8d52332950e4991d5db40f8ccbbece
parent969e8164b922b3db56725b03ef19ca5061dce411 (diff)
Improve 2d performance on chipsets without AGP/PCIe
-rw-r--r--ChangeLog13
-rw-r--r--src/via_accel.c30
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 <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;