First acceleration function implemented (DrawSolid)
This commit is contained in:
parent
47436a8af8
commit
c231856a13
|
@ -1,6 +1,7 @@
|
|||
2004-04-10 Franco Catrin L. <fcatrin@tuxpan.com>
|
||||
* MMIO enabled after switching to new VT
|
||||
|
||||
* First acceleration function implemented (DrawSolid)
|
||||
|
||||
2004-04-06 Franco Catrin L. <fcatrin@tuxpan.com>
|
||||
* Returned to a working state. Brent will
|
||||
continue working on a backend in a separate CVS branch
|
||||
|
|
|
@ -47,12 +47,8 @@ CARD32 fgColor;
|
|||
static void neoWaitIdle(NeoCardInfo *neoc)
|
||||
{
|
||||
// if MMIO is not working it may halt the machine
|
||||
DBGOUT("Waiting for idle...\n");
|
||||
DBGOUT("blStat %lx=%lx\n", &mmio->bltStat, mmio->bltStat);
|
||||
unsigned int i = 0;
|
||||
while ((mmio->bltStat & 1) && ++i<100000);
|
||||
if (i>=100000) DBGOUT("Wait Idle timeout\n");
|
||||
else DBGOUT("*** Wait Idle ok\n");
|
||||
}
|
||||
|
||||
static void neoWaitFifo(NeoCardInfo *neoc, int requested_fifo_space)
|
||||
|
@ -71,19 +67,12 @@ static Bool neoPrepareSolid(PixmapPtr pPixmap,
|
|||
return FALSE;
|
||||
} else {
|
||||
fgColor = fg;
|
||||
/* set blt control */
|
||||
/* NEO_BC0_SRC_IS_FG |
|
||||
NEO_BC3_SRC_XY_ADDR |
|
||||
NEO_BC3_DST_XY_ADDR |
|
||||
NEO_BC3_SKIP_MAPPING | 0x0c0000; */
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
static void neoSolid (int x1, int y1, int x2, int y2)
|
||||
{
|
||||
DBGOUT("Solid (%i, %i) - (%i, %i). \n", x1, y1, x2, y2);
|
||||
int x, y, w, h;
|
||||
x = x1;
|
||||
y = y1;
|
||||
|
@ -97,12 +86,6 @@ static void neoSolid (int x1, int y1, int x2, int y2)
|
|||
y = y2;
|
||||
h = -h;
|
||||
}
|
||||
|
||||
int pitch = 16;
|
||||
|
||||
neoWaitIdle(card);
|
||||
mmio->bltStat = NEO_MODE1_DEPTH16 << 16;
|
||||
mmio->pitch = (pitch << 16) | (pitch & 0xffff);
|
||||
|
||||
neoWaitIdle(card);
|
||||
mmio->fgColor = fgColor;
|
||||
|
@ -110,11 +93,9 @@ static void neoSolid (int x1, int y1, int x2, int y2)
|
|||
NEO_BC3_FIFO_EN |
|
||||
NEO_BC0_SRC_IS_FG |
|
||||
NEO_BC3_SKIP_MAPPING | 0x0c0000;
|
||||
mmio->dstStart = (y <<16) | (x & 0xffff);
|
||||
mmio->dstStart = y * screen->pitch + x * screen->depth;
|
||||
|
||||
mmio->xyExt = (h << 16) | (w & 0xffff);
|
||||
DBGOUT("Solid (%i, %i) - (%i, %i). Color %li\n", x, y, w, h, fgColor);
|
||||
// DBGOUT("Offset %lx. Extent %lx\n",mmio->dstStart, mmio->xyExt);
|
||||
mmio->xyExt = (unsigned long)(h << 16) | (w & 0xffff);
|
||||
}
|
||||
|
||||
|
||||
|
@ -169,10 +150,9 @@ void neoDrawEnable (ScreenPtr pScreen)
|
|||
screen = neos;
|
||||
card = neoc;
|
||||
mmio = neoc->mmio;
|
||||
DBGOUT("NEO AA MMIO=%p\n", mmio);
|
||||
// screen->depth = screen->vesa.mode.BitsPerPixel/8;
|
||||
// screen->pitch = screen->vesa.mode.BytesPerScanLine;
|
||||
// DBGOUT("NEO depth=%x, pitch=%x\n", screen->depth, screen->pitch);
|
||||
screen->depth = screen->backendScreen.mode.BitsPerPixel/8;
|
||||
screen->pitch = screen->backendScreen.mode.BytesPerScanLine;
|
||||
DBGOUT("NEO depth=%x, pitch=%x\n", screen->depth, screen->pitch);
|
||||
LEAVE();
|
||||
}
|
||||
|
||||
|
|
|
@ -52,7 +52,6 @@ struct NeoChipInfo neoChips[] = {
|
|||
static Bool
|
||||
neoCardInit(KdCardInfo *card)
|
||||
{
|
||||
ENTER();
|
||||
NeoCardInfo *neoc;
|
||||
struct NeoChipInfo *chip;
|
||||
|
||||
|
@ -79,14 +78,12 @@ neoCardInit(KdCardInfo *card)
|
|||
|
||||
card->driver = neoc;
|
||||
|
||||
LEAVE();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static Bool
|
||||
neoScreenInit(KdScreenInfo *screen)
|
||||
{
|
||||
ENTER();
|
||||
NeoScreenInfo *neos;
|
||||
neoCardInfo(screen);
|
||||
int screen_size, memory;
|
||||
|
@ -122,7 +119,6 @@ neoScreenInit(KdScreenInfo *screen)
|
|||
|
||||
screen->driver = neos;
|
||||
|
||||
LEAVE();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -185,7 +181,6 @@ static void neoUnlock(NeoCardInfo *neoc){
|
|||
Bool
|
||||
neoMapReg(KdCardInfo *card, NeoCardInfo *neoc)
|
||||
{
|
||||
ENTER();
|
||||
neoc->reg_base = card->attr.address[1] & 0xFFF80000;
|
||||
if(!neoc->reg_base) {
|
||||
return FALSE;
|
||||
|
@ -198,18 +193,12 @@ neoMapReg(KdCardInfo *card, NeoCardInfo *neoc)
|
|||
|
||||
KdSetMappedMode(neoc->reg_base, NEO_REG_SIZE(card), KD_MAPPED_MODE_REGISTERS);
|
||||
|
||||
// if you see the cursor sprite them MMIO is working
|
||||
|
||||
*(((CARD32 *)neoc->mmio)+0x400) =(CARD32)8;
|
||||
//neoSetIndex(neoc, 0x3ce, 0x82,8);
|
||||
LEAVE();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
neoUnmapReg(KdCardInfo *card, NeoCardInfo *neoc)
|
||||
{
|
||||
ENTER();
|
||||
if(neoc->reg_base)
|
||||
{
|
||||
neoSetIndex(neoc, 0x3ce, 0x82,0);
|
||||
|
@ -217,7 +206,6 @@ neoUnmapReg(KdCardInfo *card, NeoCardInfo *neoc)
|
|||
KdUnmapDevice((void *)neoc->mmio, NEO_REG_SIZE(card));
|
||||
neoc->reg_base = 0;
|
||||
}
|
||||
LEAVE();
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -247,7 +235,6 @@ neoEnable(ScreenPtr pScreen)
|
|||
}
|
||||
|
||||
neoSetMMIO(pScreenPriv->card, neoc);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue