mirror of https://github.com/PCSX2/pcsx2.git
Quick fix for the IPU issue.
Should allow people to test the important changes in r2822. git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2823 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
774411e3a4
commit
c504e3f118
|
@ -1314,17 +1314,29 @@ static __forceinline int IPU1chain() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static __forceinline bool flushGIF()
|
//static __forceinline bool flushGIF()
|
||||||
|
//{
|
||||||
|
// //Wait for all GS paths to be clear
|
||||||
|
// if (GSTransferStatus._u32 != 0x2a)
|
||||||
|
// {
|
||||||
|
// if(GSTransferStatus.PTH3 != STOPPED_MODE && vif1Regs->mskpath3) return true;
|
||||||
|
// DMA_LOG("Waiting for GS transfers to finish %x", GSTransferStatus._u32);
|
||||||
|
// IPU_INT_TO(4);
|
||||||
|
// return false;
|
||||||
|
// }
|
||||||
|
// return true;
|
||||||
|
//}
|
||||||
|
|
||||||
|
static __forceinline void flushGIF()
|
||||||
{
|
{
|
||||||
//Wait for all GS paths to be clear
|
if (dmacRegs->ctrl.STD != STD_GIF || (gif->madr + (gif->qwc * 16)) < dmacRegs->stadr.ADDR)
|
||||||
if (GSTransferStatus._u32 != 0x2a)
|
{
|
||||||
{
|
while(gif->chcr.STR && (vif1Regs->mskpath3 == 0) && GSTransferStatus.PTH3 != STOPPED_MODE)
|
||||||
if(GSTransferStatus.PTH3 != STOPPED_MODE && vif1Regs->mskpath3) return true;
|
{
|
||||||
DMA_LOG("Waiting for GS transfers to finish %x", GSTransferStatus._u32);
|
GIF_LOG("Flushing gif chcr %x tadr %x madr %x qwc %x", gif->chcr._u32, gif->tadr, gif->madr, gif->qwc);
|
||||||
IPU_INT_TO(4);
|
gsInterrupt();
|
||||||
return false;
|
}
|
||||||
}
|
}
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1335,7 +1347,8 @@ int IPU1dma()
|
||||||
int totalqwc = 0;
|
int totalqwc = 0;
|
||||||
|
|
||||||
//We need to make sure GIF has flushed before sending IPU data, it seems to REALLY screw FFX videos
|
//We need to make sure GIF has flushed before sending IPU data, it seems to REALLY screw FFX videos
|
||||||
if(!flushGIF()) return totalqwc;
|
//if(!flushGIF()) return totalqwc;
|
||||||
|
flushGIF();
|
||||||
|
|
||||||
DMA_LOG("IPU1 DMA Called QWC %x Finished %d In Progress %d tadr %x", ipu1dma->qwc, IPU1Status.DMAFinished, IPU1Status.InProgress, ipu1dma->tadr);
|
DMA_LOG("IPU1 DMA Called QWC %x Finished %d In Progress %d tadr %x", ipu1dma->qwc, IPU1Status.DMAFinished, IPU1Status.InProgress, ipu1dma->tadr);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue