pvr: adaptive end-of-render interrupt delay

EoR interrupt delay now depends on the TA context size.
Issue #634
Fixes issues with FMV in some WinCE games (Resident Evil 2, Next Tetris,
Nightmare Creatures 2)
This commit is contained in:
Flyinghead 2022-11-01 18:29:44 +01:00
parent 5a1a766bd4
commit 0b0e64304e
1 changed files with 14 additions and 1 deletions

View File

@ -270,7 +270,20 @@ void spg_Reset(bool hard)
void scheduleRenderDone(TA_context *cntx)
{
if (cntx)
sh4_sched_request(render_end_schid, 500000 * 3);
{
int cycles;
if (settings.platform.isNaomi2()) {
cycles = 1500000;
}
else
{
int size = 0;
for (TA_context *c = cntx; c != nullptr; c = c->nextContext)
size += c->tad.thd_data - c->tad.thd_root;
cycles = std::min(100000 + size * 2, 1500000);
}
sh4_sched_request(render_end_schid, cycles);
}
else
sh4_sched_request(render_end_schid, 4096);
}