mirror of https://github.com/PCSX2/pcsx2.git
Removed the TestOnly parameter on the MTGS packet sender, and replaced it with a direct call to GIFPath_ParseTag. Simpler, more efficient, and avoids constant assertion failures when running PCSX2 in debug mode. :D
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3275 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
26fece9510
commit
d24a15e0f9
|
@ -191,7 +191,7 @@ void __fastcall WriteFIFO_page_6(u32 mem, const mem128_t *value)
|
|||
nloop0_packet[3] = psHu32(GIF_FIFO + 12);
|
||||
Registers::Freeze();
|
||||
gifRegs->stat.APATH = GIF_APATH3;
|
||||
GetMTGS().PrepDataPacket(GIF_PATH_3, nloop0_packet, 1, false);
|
||||
GetMTGS().PrepDataPacket(GIF_PATH_3, nloop0_packet, 1);
|
||||
u64* data = (u64*)GetMTGS().GetDataPacketPtr();
|
||||
data[0] = value[0];
|
||||
data[1] = value[1];
|
||||
|
|
|
@ -252,8 +252,8 @@ public:
|
|||
void WaitGS();
|
||||
void ResetGS();
|
||||
|
||||
int PrepDataPacket( GIF_PATH pathidx, const u8* srcdata, u32 size, bool TestOnly );
|
||||
int PrepDataPacket( GIF_PATH pathidx, const u32* srcdata, u32 size, bool TestOnly );
|
||||
int PrepDataPacket( GIF_PATH pathidx, const u8* srcdata, u32 size );
|
||||
int PrepDataPacket( GIF_PATH pathidx, const u32* srcdata, u32 size );
|
||||
void SendDataPacket();
|
||||
void SendGameCRC( u32 crc );
|
||||
void WaitForOpen();
|
||||
|
|
|
@ -59,7 +59,7 @@ void gsPath1Interrupt()
|
|||
if((gifRegs->stat.APATH == GIF_APATH_IDLE || gifRegs->stat.APATH == GIF_APATH1) && Path1WritePos > 0 && !gifRegs->stat.PSE)
|
||||
{
|
||||
Registers::Freeze();
|
||||
u32 size = GetMTGS().PrepDataPacket(GIF_PATH_1, Path1Buffer + (Path1ReadPos*16), (Path1WritePos - Path1ReadPos), false);
|
||||
u32 size = GetMTGS().PrepDataPacket(GIF_PATH_1, Path1Buffer + (Path1ReadPos*16), (Path1WritePos - Path1ReadPos));
|
||||
u8* pDest = GetMTGS().GetDataPacketPtr();
|
||||
//DevCon.Warning("Flush Size = %x", size);
|
||||
|
||||
|
@ -128,7 +128,7 @@ __forceinline void gsInterrupt()
|
|||
|
||||
static u32 WRITERING_DMA(u32 *pMem, u32 qwc)
|
||||
{
|
||||
int size = GetMTGS().PrepDataPacket(GIF_PATH_3, pMem, qwc, false);
|
||||
int size = GetMTGS().PrepDataPacket(GIF_PATH_3, pMem, qwc);
|
||||
u8* pgsmem = GetMTGS().GetDataPacketPtr();
|
||||
|
||||
memcpy_aligned(pgsmem, pMem, size<<4);
|
||||
|
|
|
@ -594,9 +594,9 @@ void SysMtgsThread::SendDataPacket()
|
|||
//m_PacketLocker.Release();
|
||||
}
|
||||
|
||||
int SysMtgsThread::PrepDataPacket( GIF_PATH pathidx, const u32* srcdata, u32 size, bool TestOnly )
|
||||
int SysMtgsThread::PrepDataPacket( GIF_PATH pathidx, const u32* srcdata, u32 size )
|
||||
{
|
||||
return PrepDataPacket( pathidx, (u8*)srcdata, size, TestOnly );
|
||||
return PrepDataPacket( pathidx, (u8*)srcdata, size );
|
||||
}
|
||||
|
||||
#ifdef PCSX2_GSRING_TX_STATS
|
||||
|
@ -614,7 +614,7 @@ static u32 ringtx_inf_s[32];
|
|||
// around VU memory instead of having buffer overflow...
|
||||
// Parameters:
|
||||
// size - size of the packet data, in smd128's
|
||||
int SysMtgsThread::PrepDataPacket( GIF_PATH pathidx, const u8* srcdata, u32 size, bool TestOnly )
|
||||
int SysMtgsThread::PrepDataPacket( GIF_PATH pathidx, const u8* srcdata, u32 size )
|
||||
{
|
||||
//m_PacketLocker.Acquire();
|
||||
|
||||
|
@ -674,8 +674,7 @@ int SysMtgsThread::PrepDataPacket( GIF_PATH pathidx, const u8* srcdata, u32 size
|
|||
pxAssert( size < RingBufferSize );
|
||||
pxAssert( writepos < RingBufferSize );
|
||||
|
||||
m_packet_size = GIFPath_ParseTag(pathidx, srcdata, size, TestOnly);
|
||||
if( TestOnly == true) return m_packet_size;
|
||||
m_packet_size = GIFPath_ParseTag(pathidx, srcdata, size, false);
|
||||
size = m_packet_size + 1; // takes into account our command qword.
|
||||
|
||||
if( writepos + size < RingBufferSize )
|
||||
|
|
|
@ -2057,7 +2057,7 @@ void _vuXGKICK(VURegs * VU)
|
|||
|
||||
u8* data = ((u8*)VU->Mem + ((VU->VI[_Is_].US[0]*16) & 0x3fff));
|
||||
u32 size;
|
||||
size = GetMTGS().PrepDataPacket( GIF_PATH_1, data, (0x4000-((VU->VI[_Is_].US[0]*16) & 0x3fff)) >> 4, false);
|
||||
size = GetMTGS().PrepDataPacket( GIF_PATH_1, data, (0x4000-((VU->VI[_Is_].US[0]*16) & 0x3fff)) >> 4);
|
||||
u8* pmem = GetMTGS().GetDataPacketPtr();
|
||||
|
||||
if((size << 4) > (u32)(0x4000-((VU->VI[_Is_].US[0]*16) & 0x3fff)))
|
||||
|
|
|
@ -205,7 +205,7 @@ template<int idx> _f int _vifCode_Direct(int pass, u8* data, bool isDirectHL) {
|
|||
v.bSize = 0;
|
||||
v.bPtr = 0;
|
||||
}
|
||||
const uint count = GetMTGS().PrepDataPacket(GIF_PATH_2, v.buffer, 1, false);
|
||||
const uint count = GetMTGS().PrepDataPacket(GIF_PATH_2, v.buffer, 1);
|
||||
memcpy_fast(GetMTGS().GetDataPacketPtr(), v.buffer, count << 4);
|
||||
GetMTGS().SendDataPacket();
|
||||
|
||||
|
@ -219,7 +219,7 @@ template<int idx> _f int _vifCode_Direct(int pass, u8* data, bool isDirectHL) {
|
|||
}
|
||||
else
|
||||
{
|
||||
const uint count = GetMTGS().PrepDataPacket(GIF_PATH_2, data, size >> 4, false);
|
||||
const uint count = GetMTGS().PrepDataPacket(GIF_PATH_2, data, size >> 4);
|
||||
memcpy_fast(GetMTGS().GetDataPacketPtr(), data, count << 4);
|
||||
GetMTGS().SendDataPacket();
|
||||
vif1.tag.size -= count << 2;
|
||||
|
|
|
@ -1112,7 +1112,7 @@ void __fastcall mVU_XGKICK_(u32 addr) {
|
|||
|
||||
if(gifRegs->stat.APATH == GIF_APATH_IDLE)
|
||||
{
|
||||
size = GetMTGS().PrepDataPacket(GIF_PATH_1, data, diff, false);
|
||||
size = GetMTGS().PrepDataPacket(GIF_PATH_1, data, diff);
|
||||
pDest = GetMTGS().GetDataPacketPtr();
|
||||
if (size > diff) {
|
||||
// fixme: one of these days the following *16's will get cleaned up when we introduce
|
||||
|
@ -1131,11 +1131,11 @@ void __fastcall mVU_XGKICK_(u32 addr) {
|
|||
else
|
||||
{
|
||||
//DevCon.Warning("GIF APATH busy %x Holding for later W %x, R %x", gifRegs->stat.APATH, Path1WritePos, Path1ReadPos);
|
||||
size = GetMTGS().PrepDataPacket(GIF_PATH_1, data, diff, true);
|
||||
size = GIFPath_ParseTag(GIF_PATH_1, data, diff, true);
|
||||
pDest = &Path1Buffer[Path1WritePos*16];
|
||||
|
||||
|
||||
|
||||
|
||||
//DevCon.Warning("Storing size %x PATH 1", size);
|
||||
if (size > diff) {
|
||||
// fixme: one of these days the following *16's will get cleaned up when we introduce
|
||||
|
|
|
@ -1980,7 +1980,7 @@ void __fastcall VU1XGKICK_MTGSTransfer(u32 *pMem, u32 addr)
|
|||
|
||||
if(gifRegs->stat.APATH == GIF_APATH_IDLE)
|
||||
{
|
||||
size = GetMTGS().PrepDataPacket(GIF_PATH_1, data, diff, false);
|
||||
size = GetMTGS().PrepDataPacket(GIF_PATH_1, data, diff);
|
||||
pDest = GetMTGS().GetDataPacketPtr();
|
||||
if (size > diff) {
|
||||
// fixme: one of these days the following *16's will get cleaned up when we introduce
|
||||
|
@ -1999,7 +1999,7 @@ void __fastcall VU1XGKICK_MTGSTransfer(u32 *pMem, u32 addr)
|
|||
else
|
||||
{
|
||||
//DevCon.Warning("GIF APATH busy %x Holding for later W %x, R %x", gifRegs->stat.APATH, Path1WritePos, Path1ReadPos);
|
||||
size = GetMTGS().PrepDataPacket(GIF_PATH_1, data, diff, true);
|
||||
size = GIFPath_ParseTag(GIF_PATH_1, data, diff, true);
|
||||
pDest = &Path1Buffer[Path1WritePos*16];
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue