diff options
| author | Takoroka <137927095+Takoroka@users.noreply.github.com> | 2026-10-29 01:51:42 -0400 |
|---|---|---|
| committer | Takoroka <137927095+Takoroka@users.noreply.github.com> | 2026-10-29 01:51:42 -0400 |
| commit | e08b40252790eef96337409d7dd606aa7bfa8428 (patch) | |
| tree | d94274e2c27fa43a99200258558437807a785bd4 /src/core/hle/kernel/kernel.cpp | |
| parent | ae980ab79568c80ed5760f7fd5f452c8a49dc1ab (diff) | |
video_core: less waiting on the GPU caches' locks
- The texture and buffer caches' mutexes spin briefly before sleeping
(Common::SpinRecursiveMutex): the GPU thread, the fencing thread and
CPU write traps take them tens of thousands of times a second for
microseconds, and a sleeping waiter's wake-up took longer than that.
Title 1's GPU thread slept 7.7% of its time there, now 3.7%.
- Fences commit and pop texture and buffer downloads separately, and
only when there are any (one fence per compute dispatch in Switch 2
titles): the fencing thread no longer holds both caches while it
copies buffer downloads.
- Inline uploads and pre-draw invalidation take the caches one at a
time again: holding one while std::lock waited for the other waited
longer.
Diffstat (limited to 'src/core/hle/kernel/kernel.cpp')
0 files changed, 0 insertions, 0 deletions
