From 76f89467b951c84696804b396e647d944b0750b0 Mon Sep 17 00:00:00 2001 From: eladash Date: Mon, 29 Oct 2018 18:46:56 +0200 Subject: [PATCH] narco-terror: disable immediate mfc transfers TODO: this should be done via an mfc cmds latency simulation in debug settings. ie latency == 0 == immediate transfers, otherwise queue the command and execute by an mfc thread, and wait for latency period to be over. --- rpcs3/Emu/Cell/SPUThread.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/rpcs3/Emu/Cell/SPUThread.cpp b/rpcs3/Emu/Cell/SPUThread.cpp index 915267ef5a6f..46a72c5fb766 100644 --- a/rpcs3/Emu/Cell/SPUThread.cpp +++ b/rpcs3/Emu/Cell/SPUThread.cpp @@ -1166,7 +1166,7 @@ bool spu_thread::process_mfc_cmd(spu_mfc_cmd args) return false; } - thread_ctrl::wait(); + do_mfc(true); } spu::scheduler::concurrent_execution_watchdog watchdog(*this); @@ -1366,7 +1366,7 @@ bool spu_thread::process_mfc_cmd(spu_mfc_cmd args) { if (LIKELY(args.size <= 0x4000)) { - if (LIKELY(do_dma_check(args))) + if (0 && LIKELY(do_dma_check(args))) { if (LIKELY(args.size)) { @@ -1401,7 +1401,7 @@ bool spu_thread::process_mfc_cmd(spu_mfc_cmd args) { if (LIKELY(args.size <= 0x4000)) { - if (LIKELY(do_dma_check(args) && !(ch_stall_mask & 1u << args.tag))) + if (0 && LIKELY(do_dma_check(args) && !(ch_stall_mask & 1u << args.tag))) { if (LIKELY(do_list_transfer(args))) { @@ -1917,6 +1917,7 @@ bool spu_thread::set_ch_value(u32 ch, u32 value) if (ch_tag_upd) { + do_mfc(true); const u32 completed = get_mfc_completed(); if (completed && ch_tag_upd == 1) @@ -1943,6 +1944,7 @@ bool spu_thread::set_ch_value(u32 ch, u32 value) const u32 completed = get_mfc_completed(); + do_mfc(true); if (!value) { ch_tag_upd = 0;