From 636ed4a48bf34b96851807905811579ff1a53742 Mon Sep 17 00:00:00 2001 From: Eladash Date: Sun, 8 Mar 2020 08:29:47 +0200 Subject: [PATCH] HLE cellGcmSys: Avoid calling sys_rsx syscalls in rsx code --- rpcs3/Emu/RSX/RSXThread.cpp | 8 ++++++-- rpcs3/Emu/RSX/rsx_methods.cpp | 7 ++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/rpcs3/Emu/RSX/RSXThread.cpp b/rpcs3/Emu/RSX/RSXThread.cpp index 2b910da862..5813de0c6a 100644 --- a/rpcs3/Emu/RSX/RSXThread.cpp +++ b/rpcs3/Emu/RSX/RSXThread.cpp @@ -2702,6 +2702,12 @@ namespace rsx flip_status = CELL_GCM_DISPLAY_FLIP_STATUS_DONE; m_queued_flip.in_progress = false; + if (!isHLE) + { + sys_rsx_context_attribute(0x55555555, 0xFEC, buffer, 0, 0, 0); + return; + } + if (flip_handler) { intr_thread->cmd_list @@ -2713,8 +2719,6 @@ namespace rsx thread_ctrl::notify(*intr_thread); } - - sys_rsx_context_attribute(0x55555555, 0xFEC, buffer, 0, 0, 0); } diff --git a/rpcs3/Emu/RSX/rsx_methods.cpp b/rpcs3/Emu/RSX/rsx_methods.cpp index de68adac81..85c73bbaea 100644 --- a/rpcs3/Emu/RSX/rsx_methods.cpp +++ b/rpcs3/Emu/RSX/rsx_methods.cpp @@ -1433,7 +1433,12 @@ namespace rsx void user_command(thread* rsx, u32, u32 arg) { - sys_rsx_context_attribute(0x55555555, 0xFEF, 0, arg, 0, 0); + if (!rsx->isHLE) + { + sys_rsx_context_attribute(0x55555555, 0xFEF, 0, arg, 0, 0); + return; + } + if (rsx->user_handler) { rsx->intr_thread->cmd_list