Small changes in the Voodoo Banshee code.

- Redirect byte and word writes into CMDFIFO space to LFB (FIXME).
- Added stub for the CMDFIFO code #6 (AGP-to-VRAM transfer).
This commit is contained in:
Volker Ruppert 2021-07-01 19:32:28 +00:00
parent 7e75d3d66b
commit a23db5e82a
2 changed files with 19 additions and 3 deletions

View File

@ -935,10 +935,20 @@ void bx_banshee_c::mem_write(bx_phy_address addr, unsigned len, void *data)
} else if ((addr & ~0x1ffffff) == pci_bar[1].addr) {
if (v->fbi.cmdfifo[0].enabled && (offset >= v->fbi.cmdfifo[0].base) &&
(offset < v->fbi.cmdfifo[0].end)) {
cmdfifo_w(&v->fbi.cmdfifo[0], offset, value);
if (len == 4) {
cmdfifo_w(&v->fbi.cmdfifo[0], offset, value);
} else {
BX_ERROR(("CMDFIFO #0 write with len = %d redirected to LFB", len));
mem_write_linear(offset, value, len);
}
} else if (v->fbi.cmdfifo[1].enabled && (offset >= v->fbi.cmdfifo[1].base) &&
(offset < v->fbi.cmdfifo[1].end)) {
cmdfifo_w(&v->fbi.cmdfifo[1], offset, value);
if (len == 4) {
cmdfifo_w(&v->fbi.cmdfifo[1], offset, value);
} else {
BX_ERROR(("CMDFIFO #1 write with len = %d redirected to LFB", len));
mem_write_linear(offset, value, len);
}
} else {
mem_write_linear(offset, value, len);
}

View File

@ -2962,7 +2962,7 @@ void cmdfifo_process(cmdfifo_info *f)
BX_DEBUG(("cmdfifo_process(): JMP 0x%08x", f->rdptr));
}
break;
case 4: // JMP AGP
case 4: // TODO: JMP AGP
data = cmdfifo_r(f);
default:
BX_ERROR(("CMDFIFO packet type 0: unsupported code %d", code));
@ -3194,6 +3194,12 @@ void cmdfifo_process(cmdfifo_info *f)
BX_ERROR(("CMDFIFO packet type 5: unsupported destination type %d", code));
}
break;
case 6:
// TODO: AGP to VRAM transfer
cmdfifo_r(f);
cmdfifo_r(f);
cmdfifo_r(f);
cmdfifo_r(f);
default:
BX_ERROR(("CMDFIFO: unsupported packet type %d", type));
}