summaryrefslogtreecommitdiff
path: root/hw/kdrive/pm2/pm2_draw.c
diff options
context:
space:
mode:
Diffstat (limited to 'hw/kdrive/pm2/pm2_draw.c')
-rw-r--r--hw/kdrive/pm2/pm2_draw.c52
1 files changed, 27 insertions, 25 deletions
diff --git a/hw/kdrive/pm2/pm2_draw.c b/hw/kdrive/pm2/pm2_draw.c
index 076123281..1662adc96 100644
--- a/hw/kdrive/pm2/pm2_draw.c
+++ b/hw/kdrive/pm2/pm2_draw.c
@@ -2,6 +2,7 @@
#include <config.h>
#endif
#include "kdrive.h"
+#include "kaa.h"
#include "pm2.h"
@@ -10,6 +11,20 @@ static VOL8 *mmio;
static void Permedia2LoadCoord(int x, int y, int w, int h);
+static void
+pmWaitMarker (ScreenPtr pScreen, int marker)
+{
+ CHECKCLIPPING;
+
+ while (GLINT_READ_REG(DMACount) != 0);
+ GLINT_WAIT(2);
+ GLINT_WRITE_REG(0x400, FilterMode);
+ GLINT_WRITE_REG(0, GlintSync);
+ do {
+ while(GLINT_READ_REG(OutFIFOWords) == 0);
+ } while (GLINT_READ_REG(OutputFIFO) != Sync_tag);
+}
+
static Bool
pmPrepareSolid (PixmapPtr pPixmap,
int rop,
@@ -159,27 +174,28 @@ Permedia2LoadCoord(int x, int y,
}
}
-KaaScreenInfoRec pmKaa = {
- pmPrepareSolid,
- pmSolid,
- pmDoneSolid,
-
- pmPrepareCopy,
- pmCopy,
- pmDoneCopy,
-};
Bool
pmDrawInit (ScreenPtr pScreen)
{
KdScreenPriv(pScreen);
pmCardInfo(pScreenPriv);
+ pmScreenInfo(pScreenPriv);
Bool ret = TRUE;
card = pm2c;
mmio = pm2c->reg_base;
- if (ret && !kaaDrawInit (pScreen, &pmKaa))
+ memset(&pm2s->kaa, 0, sizeof(KaaScreenInfoRec));
+ pm2s->kaa.waitMarker = pmWaitMarker;
+ pm2s->kaa.PrepareSolid = pmPrepareSolid;
+ pm2s->kaa.Solid = pmSolid;
+ pm2s->kaa.DoneSolid = pmDoneSolid;
+ pm2s->kaa.PrepareCopy = pmPrepareCopy;
+ pm2s->kaa.Copy = pmCopy;
+ pm2s->kaa.DoneCopy = pmDoneCopy;
+
+ if (ret && !kaaDrawInit (pScreen, &pm2s->kaa))
{
ErrorF ("kaaDrawInit failed\n");
ret = FALSE;
@@ -288,7 +304,7 @@ pmDrawEnable (ScreenPtr pScreen)
GLINT_SLOW_WRITE_REG(0, StartY);
GLINT_SLOW_WRITE_REG(0, GLINTCount);
- KdMarkSync (pScreen);
+ kaaMarkSync (pScreen);
}
void
@@ -300,17 +316,3 @@ void
pmDrawFini (ScreenPtr pScreen)
{
}
-
-void
-pmDrawSync (ScreenPtr pScreen)
-{
- CHECKCLIPPING;
-
- while (GLINT_READ_REG(DMACount) != 0);
- GLINT_WAIT(2);
- GLINT_WRITE_REG(0x400, FilterMode);
- GLINT_WRITE_REG(0, GlintSync);
- do {
- while(GLINT_READ_REG(OutFIFOWords) == 0);
- } while (GLINT_READ_REG(OutputFIFO) != Sync_tag);
-}