summaryrefslogtreecommitdiff
path: root/hw/kdrive/mga/mgadraw.c
diff options
context:
space:
mode:
authorEric Anholt <anholt@freebsd.org>2005-06-09 21:59:26 +0000
committerEric Anholt <anholt@freebsd.org>2005-06-09 21:59:26 +0000
commite11e60b361d63ae02918dd6b43038a5c92b73a49 (patch)
treeb3d6a778d4647b348960af0dc49dc8ea93fc7720 /hw/kdrive/mga/mgadraw.c
parent9f81ce945680515e6db7da6c87458bee7c0f053d (diff)
Greatly improve the correctness and performance of the MGA render
implementation. Includes cache flushing to prevent bad first reads of the framebuffer, fixing blending of many formats, falling back on many unsupported operations, and falling back early to prevent migration. Passes all of rendercheck except some of the blend (!) tests.
Diffstat (limited to 'hw/kdrive/mga/mgadraw.c')
-rw-r--r--hw/kdrive/mga/mgadraw.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/hw/kdrive/mga/mgadraw.c b/hw/kdrive/mga/mgadraw.c
index 3f6d8b2a2..301c6bd40 100644
--- a/hw/kdrive/mga/mgadraw.c
+++ b/hw/kdrive/mga/mgadraw.c
@@ -68,7 +68,11 @@ mgaWaitAvail (int n)
void
mgaWaitIdle (void)
{
- while (MGA_IN32 (mmio, MGA_REG_STATUS) & 0x10000);
+ while (MGA_IN32 (mmio, MGA_REG_STATUS) & 0x10000)
+ ;
+
+ mgaWaitAvail (1);
+ MGA_OUT32(mmio, MGA_REG_CACHEFLUSH, 0);
}
static void
@@ -268,9 +272,7 @@ mgaDrawInit (ScreenPtr pScreen)
mgas->kaa.flags = KAA_OFFSCREEN_PIXMAPS;
if (card->attr.deviceID == MGA_G4XX_DEVICE_ID) {
- mgas->kaa.PrepareBlend = mgaPrepareBlend;
- mgas->kaa.Blend = mgaBlend;
- mgas->kaa.DoneBlend = mgaDoneBlend;
+ mgas->kaa.CheckComposite = mgaCheckComposite;
mgas->kaa.PrepareComposite = mgaPrepareComposite;
mgas->kaa.Composite = mgaComposite;
mgas->kaa.DoneComposite = mgaDoneComposite;