semaphore_t, RSX fixes

1) GS_LOCK_WAIT_FLUSH semaphore eliminated
2) GS_LOCK_WAIT_FLIP semaphore left unused
3) cellRescSetWaitFlip/cellGcmSetWaitFlip purged: they don't wait for
flip, it's a nonsense, they only generate some RSX command
4) Semaphores rewritten
This commit is contained in:
Nekotekina 2015-07-27 04:27:33 +03:00
parent 71a378a3fb
commit 8e1991c1e1
13 changed files with 213 additions and 257 deletions

View file

@ -258,6 +258,8 @@ void RSXThread::DoCmd(const u32 fcmd, const u32 cmd, const u32 args_addr, const
});
}
m_sem_flip.post_and_wait();
auto sync = [&]()
{
double limit;
@ -2499,14 +2501,6 @@ void RSXThread::Task()
if (put == get || !Emu.IsRunning())
{
if (put == get)
{
if (m_flip_status == 0)
m_sem_flip.post_and_wait();
m_sem_flush.post_and_wait();
}
std::this_thread::sleep_for(std::chrono::milliseconds(1)); // hack
continue;
}