mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-12 09:48:37 +12:00
commit
fd56797b77
29 changed files with 906 additions and 288 deletions
|
@ -251,6 +251,7 @@ void RSXThread::DoCmd(const u32 fcmd, const u32 cmd, mem32_ptr_t& args, const u3
|
|||
//if(cmd == 0xfeadffff)
|
||||
{
|
||||
Flip();
|
||||
m_last_flip_time = get_system_time();
|
||||
|
||||
m_gcm_current_buffer = ARGS(0);
|
||||
m_read_buffer = true;
|
||||
|
@ -2311,6 +2312,14 @@ void RSXThread::DoCmd(const u32 fcmd, const u32 cmd, mem32_ptr_t& args, const u3
|
|||
}
|
||||
break;
|
||||
|
||||
case GCM_SET_USER_COMMAND:
|
||||
{
|
||||
const u32 cause = ARGS(0);
|
||||
m_user_handler.Handle(cause);
|
||||
m_user_handler.Branch(false);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
{
|
||||
std::string log = GetMethodName(cmd);
|
||||
|
@ -2366,6 +2375,41 @@ void RSXThread::Task()
|
|||
|
||||
OnInitThread();
|
||||
|
||||
m_last_flip_time = get_system_time();
|
||||
volatile bool is_vblank_stopped = false;
|
||||
|
||||
thread vblank("VBlank thread", [&]()
|
||||
{
|
||||
const u64 start_time = get_system_time();
|
||||
|
||||
m_vblank_count = 0;
|
||||
|
||||
while (!TestDestroy())
|
||||
{
|
||||
if (Emu.IsStopped())
|
||||
{
|
||||
LOG_WARNING(RSX, "VBlank thread aborted");
|
||||
return;
|
||||
}
|
||||
|
||||
if (get_system_time() - start_time > m_vblank_count * 1000000 / 60)
|
||||
{
|
||||
m_vblank_count++;
|
||||
if (m_vblank_handler)
|
||||
{
|
||||
m_vblank_handler.Handle(1);
|
||||
m_vblank_handler.Branch(false);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
Sleep(1);
|
||||
}
|
||||
|
||||
is_vblank_stopped = true;
|
||||
});
|
||||
vblank.detach();
|
||||
|
||||
while(!TestDestroy())
|
||||
{
|
||||
if (Emu.IsStopped())
|
||||
|
@ -2457,6 +2501,11 @@ void RSXThread::Task()
|
|||
//memset(Memory.GetMemFromAddr(p.m_ioAddress + get), 0, (count + 1) * 4);
|
||||
}
|
||||
|
||||
while (!is_vblank_stopped)
|
||||
{
|
||||
Sleep(1);
|
||||
}
|
||||
|
||||
LOG_NOTICE(RSX, "RSX thread ended");
|
||||
|
||||
OnExitThread();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue