IPU: Always process command if busy on DMA run

This commit is contained in:
refractionpcsx2 2022-06-04 13:30:48 +01:00
parent 906898c785
commit 37f640ece2
2 changed files with 11 additions and 6 deletions

View File

@ -178,7 +178,10 @@ void WriteFIFO_IPUin(const mem128_t* value)
//committing every 16 bytes
if( ipu_fifo.in.write((u32*)value, 1) == 0 )
{
CommandExecuteQueued = true;
CPU_INT(IPU_PROCESS, 1 * BIAS);
if (ipuRegs.ctrl.BUSY && !CommandExecuteQueued)
{
CommandExecuteQueued = true;
CPU_INT(IPU_PROCESS, 1 * BIAS);
}
}
}

View File

@ -140,9 +140,11 @@ void IPU1dma()
}
}
CommandExecuteQueued = true;
CPU_INT(IPU_PROCESS, totalqwc * BIAS);
if (ipuRegs.ctrl.BUSY && !CommandExecuteQueued)
{
CommandExecuteQueued = true;
CPU_INT(IPU_PROCESS, totalqwc * BIAS);
}
IPU_LOG("Completed Call IPU1 DMA QWC Remaining %x Finished %d In Progress %d tadr %x", ipu1ch.qwc, IPU1Status.DMAFinished, IPU1Status.InProgress, ipu1ch.tadr);
}
@ -188,7 +190,7 @@ void IPU0dma()
IPU_INT_FROM( readsize * BIAS );
if (ipu0ch.qwc > 0 && !CommandExecuteQueued)
if (ipuRegs.ctrl.BUSY && !CommandExecuteQueued)
{
CommandExecuteQueued = true;
CPU_INT(IPU_PROCESS, 4);