diff options
| author | Takoroka <137927095+Takoroka@users.noreply.github.com> | 2026-10-28 23:46:53 -0400 |
|---|---|---|
| committer | Takoroka <137927095+Takoroka@users.noreply.github.com> | 2026-10-28 23:46:53 -0400 |
| commit | 63244330cde7e6b2b2755e8c58d27cc34c3309ab (patch) | |
| tree | cc147e44a8cfba4ab4776c39cd4d3835e04e45b1 /src/video_core/vulkan_common/vulkan_device.cpp | |
| parent | 25b674eabdb92212a6d8149d6616b2af59317695 (diff) | |
kernel: spin briefly before sleeping on a contended KSpinLock
The scheduler lock is taken by every emulated core thousands of times a
frame (title 1's job system: WaitForAddress / SignalToAddress / yield)
and held for microseconds. As a std::mutex, a contended Lock put the
host thread to sleep at once. Now a three-state futex lock: one atomic
op uncontended, ~128 pause spins when contended, then
std::atomic::wait. Time blocked in Lock fell ~20-25% on title 1's cores.
Diffstat (limited to 'src/video_core/vulkan_common/vulkan_device.cpp')
0 files changed, 0 insertions, 0 deletions
