summaryrefslogtreecommitdiff
path: root/src/core/hle/kernel
diff options
context:
space:
mode:
authorGravatar Fernando Sahmkow2020-03-29 17:06:46 -0400
committerGravatar Fernando Sahmkow2020-06-27 11:36:02 -0400
commit7e2ce2f7f47e77b46d66dcefbd0c391e58421103 (patch)
treed851ffad9019306160298aa721df295442f7749a /src/core/hle/kernel
parentFrameLimiting: Enable frame limiting for single core. (diff)
downloadyuzu-7e2ce2f7f47e77b46d66dcefbd0c391e58421103.tar.gz
yuzu-7e2ce2f7f47e77b46d66dcefbd0c391e58421103.tar.xz
yuzu-7e2ce2f7f47e77b46d66dcefbd0c391e58421103.zip
SingleCore: Improve Cycle timing Behavior and replace mutex in global scheduler for spinlock.
Diffstat (limited to 'src/core/hle/kernel')
-rw-r--r--src/core/hle/kernel/scheduler.h2
-rw-r--r--src/core/hle/kernel/server_session.cpp3
2 files changed, 3 insertions, 2 deletions
diff --git a/src/core/hle/kernel/scheduler.h b/src/core/hle/kernel/scheduler.h
index f63cc5085..10dc4b832 100644
--- a/src/core/hle/kernel/scheduler.h
+++ b/src/core/hle/kernel/scheduler.h
@@ -188,7 +188,7 @@ private:
188 188
189 /// Scheduler lock mechanisms. 189 /// Scheduler lock mechanisms.
190 bool is_locked{}; 190 bool is_locked{};
191 std::mutex inner_lock{}; // TODO(Blinkhawk): Replace for a SpinLock 191 Common::SpinLock inner_lock{};
192 std::atomic<s64> scope_lock{}; 192 std::atomic<s64> scope_lock{};
193 Core::EmuThreadHandle current_owner{Core::EmuThreadHandle::InvalidHandle()}; 193 Core::EmuThreadHandle current_owner{Core::EmuThreadHandle::InvalidHandle()};
194 194
diff --git a/src/core/hle/kernel/server_session.cpp b/src/core/hle/kernel/server_session.cpp
index 05516a453..e988a3f22 100644
--- a/src/core/hle/kernel/server_session.cpp
+++ b/src/core/hle/kernel/server_session.cpp
@@ -185,7 +185,8 @@ ResultCode ServerSession::CompleteSyncRequest() {
185ResultCode ServerSession::HandleSyncRequest(std::shared_ptr<Thread> thread, 185ResultCode ServerSession::HandleSyncRequest(std::shared_ptr<Thread> thread,
186 Core::Memory::Memory& memory) { 186 Core::Memory::Memory& memory) {
187 ResultCode result = QueueSyncRequest(std::move(thread), memory); 187 ResultCode result = QueueSyncRequest(std::move(thread), memory);
188 Core::System::GetInstance().CoreTiming().ScheduleEvent(0, request_event, {}); 188 const u64 delay = kernel.IsMulticore() ? 0U : 20000U;
189 Core::System::GetInstance().CoreTiming().ScheduleEvent(delay, request_event, {});
189 return result; 190 return result;
190} 191}
191 192