diff options
author | Eric Anholt <anholt@freebsd.org> | 2005-06-09 21:59:26 +0000 |
---|---|---|
committer | Eric Anholt <anholt@freebsd.org> | 2005-06-09 21:59:26 +0000 |
commit | e11e60b361d63ae02918dd6b43038a5c92b73a49 (patch) | |
tree | b3d6a778d4647b348960af0dc49dc8ea93fc7720 /hw/kdrive/mga/mgadraw.c | |
parent | 9f81ce945680515e6db7da6c87458bee7c0f053d (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.c | 10 |
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; |