Add Voodoo 3 emulation.
This commit is contained in:
parent
2415d8ad50
commit
6df66c59fb
10 changed files with 128 additions and 42 deletions
|
|
@ -277,7 +277,7 @@ void voodoo_fifo_thread(void *param)
|
|||
while (num--)
|
||||
{
|
||||
uint32_t val = cmdfifo_get(voodoo);
|
||||
if ((addr & (1 << 13)) && voodoo->type == VOODOO_BANSHEE)
|
||||
if ((addr & (1 << 13)) && voodoo->type >= VOODOO_BANSHEE)
|
||||
{
|
||||
// if (voodoo->type != VOODOO_BANSHEE)
|
||||
// fatal("CMDFIFO1: Not Banshee\n");
|
||||
|
|
@ -290,7 +290,7 @@ void voodoo_fifo_thread(void *param)
|
|||
(addr & 0x3ff) == SST_fastfillCMD || (addr & 0x3ff) == SST_nopCMD)
|
||||
voodoo->cmd_written_fifo++;
|
||||
|
||||
if (voodoo->type == VOODOO_BANSHEE && (addr & 0x3ff) == SST_swapbufferCMD)
|
||||
if (voodoo->type >= VOODOO_BANSHEE && (addr & 0x3ff) == SST_swapbufferCMD)
|
||||
voodoo->cmd_written_fifo++;
|
||||
voodoo_reg_writel(addr, val, voodoo);
|
||||
}
|
||||
|
|
@ -301,7 +301,7 @@ void voodoo_fifo_thread(void *param)
|
|||
break;
|
||||
|
||||
case 2:
|
||||
if (voodoo->type != VOODOO_BANSHEE)
|
||||
if (voodoo->type < VOODOO_BANSHEE)
|
||||
fatal("CMDFIFO2: Not Banshee\n");
|
||||
mask = (header >> 3);
|
||||
addr = 8;
|
||||
|
|
@ -393,9 +393,9 @@ void voodoo_fifo_thread(void *param)
|
|||
{
|
||||
uint32_t val = cmdfifo_get(voodoo);
|
||||
|
||||
if ((addr & (1 << 13)) && voodoo->type == VOODOO_BANSHEE)
|
||||
if ((addr & (1 << 13)) && voodoo->type >= VOODOO_BANSHEE)
|
||||
{
|
||||
if (voodoo->type != VOODOO_BANSHEE)
|
||||
if (voodoo->type < VOODOO_BANSHEE)
|
||||
fatal("CMDFIFO1: Not Banshee\n");
|
||||
// pclog("CMDFIFO1: write %08x %08x\n", addr, val);
|
||||
voodoo_2d_reg_writel(voodoo, addr, val);
|
||||
|
|
@ -406,7 +406,7 @@ void voodoo_fifo_thread(void *param)
|
|||
(addr & 0x3ff) == SST_fastfillCMD || (addr & 0x3ff) == SST_nopCMD)
|
||||
voodoo->cmd_written_fifo++;
|
||||
|
||||
if (voodoo->type == VOODOO_BANSHEE && (addr & 0x3ff) == SST_swapbufferCMD)
|
||||
if (voodoo->type >= VOODOO_BANSHEE && (addr & 0x3ff) == SST_swapbufferCMD)
|
||||
voodoo->cmd_written_fifo++;
|
||||
voodoo_reg_writel(addr, val, voodoo);
|
||||
}
|
||||
|
|
@ -435,6 +435,11 @@ void voodoo_fifo_thread(void *param)
|
|||
// pclog("texture_present at %08x %i\n", addr, (addr & voodoo->texture_mask) >> TEX_DIRTY_SHIFT);
|
||||
flush_texture_cache(voodoo, addr & voodoo->texture_mask, 0);
|
||||
}
|
||||
if (voodoo->texture_present[1][(addr & voodoo->texture_mask) >> TEX_DIRTY_SHIFT])
|
||||
{
|
||||
// pclog("texture_present at %08x %i\n", addr, (addr & voodoo->texture_mask) >> TEX_DIRTY_SHIFT);
|
||||
flush_texture_cache(voodoo, addr & voodoo->texture_mask, 1);
|
||||
}
|
||||
while (num--)
|
||||
{
|
||||
uint32_t val = cmdfifo_get(voodoo);
|
||||
|
|
|
|||
Loading…
Reference in a new issue