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

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

View File

@ -140,9 +140,11 @@ void IPU1dma()
} }
} }
if (ipuRegs.ctrl.BUSY && !CommandExecuteQueued)
{
CommandExecuteQueued = true; CommandExecuteQueued = true;
CPU_INT(IPU_PROCESS, totalqwc * BIAS); 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); 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 ); IPU_INT_FROM( readsize * BIAS );
if (ipu0ch.qwc > 0 && !CommandExecuteQueued) if (ipuRegs.ctrl.BUSY && !CommandExecuteQueued)
{ {
CommandExecuteQueued = true; CommandExecuteQueued = true;
CPU_INT(IPU_PROCESS, 4); CPU_INT(IPU_PROCESS, 4);