diff --git a/pcsx2/GS.cpp b/pcsx2/GS.cpp index 0a0a1f09f1..8680726393 100644 --- a/pcsx2/GS.cpp +++ b/pcsx2/GS.cpp @@ -221,22 +221,21 @@ void gsInit() #endif } } -//commented out for the time, as this costs fps, breaks savestates a bit (ZeroSPU2) -//and doesn't seem to help anything (rama) + void gsWaitGS() { -// if( CHECK_DUALCORE ) { -// while( *(volatile PU8*)&g_pGSRingPos != *(volatile PU8*)&g_pGSWritePos ); -// } -// else { -// while( g_pGSRingPos != g_pGSWritePos ) { -//#ifdef _WIN32 -// Sleep(1); -//#else -// usleep(500); -//#endif -// } -// } + if( CHECK_DUALCORE ) { + while( *(volatile PU8*)&g_pGSRingPos != *(volatile PU8*)&g_pGSWritePos ); + } + else { + while( g_pGSRingPos != g_pGSWritePos ) { +#ifdef _WIN32 + Sleep(1); +#else + usleep(500); +#endif + } + } } void gsShutdown() diff --git a/pcsx2/Misc.c b/pcsx2/Misc.c index 839e43ceda..2f03daac41 100644 --- a/pcsx2/Misc.c +++ b/pcsx2/Misc.c @@ -636,7 +636,7 @@ int LoadState(char *file) { } // stop and reset the system first - gsWaitGS(); + //gsWaitGS(); for (i=0; i<48; i++) ClearTLB(i); @@ -716,7 +716,7 @@ int LoadState(char *file) { // have to call in thread, otherwise weird stuff will start happening u64 uf = (uptr)f; GSRingBufSimplePacket(GS_RINGTYPE_LOAD, (u32)(uf&0xffffffff), (u32)(uf>>32), 0); - gsWaitGS(); + // gsWaitGS(); } else { _PS2Eload(GS); diff --git a/pcsx2/R5900.c b/pcsx2/R5900.c index f2e31f3e1b..ea9e0d5020 100644 --- a/pcsx2/R5900.c +++ b/pcsx2/R5900.c @@ -419,7 +419,7 @@ void cpuBranchTest() // stall mtgs if it is taking too long if( g_MTGSVifCount > 0 ) { if( cpuRegs.cycle-g_MTGSVifStart > g_MTGSVifCount ) { - gsWaitGS(); +// gsWaitGS(); g_MTGSVifCount = 0; } }