summaryrefslogtreecommitdiffstats
path: root/src/core/device_memory_manager.inc
diff options
context:
space:
mode:
authorLiam <byteslice@airmail.cc>2024-01-17 05:35:48 +0100
committerFernando Sahmkow <fsahmkow27@gmail.com>2024-01-31 16:38:51 +0100
commit8f848f43e979ac4049237d3b6a161696dd85372b (patch)
treee218fcb939560362b4293ab035669d776d6e0cb0 /src/core/device_memory_manager.inc
parentTexture Cache: make sparse texture table per channel (diff)
downloadyuzu-8f848f43e979ac4049237d3b6a161696dd85372b.tar
yuzu-8f848f43e979ac4049237d3b6a161696dd85372b.tar.gz
yuzu-8f848f43e979ac4049237d3b6a161696dd85372b.tar.bz2
yuzu-8f848f43e979ac4049237d3b6a161696dd85372b.tar.lz
yuzu-8f848f43e979ac4049237d3b6a161696dd85372b.tar.xz
yuzu-8f848f43e979ac4049237d3b6a161696dd85372b.tar.zst
yuzu-8f848f43e979ac4049237d3b6a161696dd85372b.zip
Diffstat (limited to '')
-rw-r--r--src/core/device_memory_manager.inc11
1 files changed, 1 insertions, 10 deletions
diff --git a/src/core/device_memory_manager.inc b/src/core/device_memory_manager.inc
index eab8a2731..0a59000aa 100644
--- a/src/core/device_memory_manager.inc
+++ b/src/core/device_memory_manager.inc
@@ -508,12 +508,7 @@ void DeviceMemoryManager<Traits>::UnregisterProcess(Asid asid) {
template <typename Traits>
void DeviceMemoryManager<Traits>::UpdatePagesCachedCount(DAddr addr, size_t size, s32 delta) {
- std::unique_lock<std::mutex> lk(counter_guard, std::defer_lock);
- const auto Lock = [&] {
- if (!lk) {
- lk.lock();
- }
- };
+ Common::ScopedRangeLock lk(counter_guard, addr, size);
u64 uncache_begin = 0;
u64 cache_begin = 0;
u64 uncache_bytes = 0;
@@ -548,7 +543,6 @@ void DeviceMemoryManager<Traits>::UpdatePagesCachedCount(DAddr addr, size_t size
}
uncache_bytes += Memory::YUZU_PAGESIZE;
} else if (uncache_bytes > 0) {
- Lock();
MarkRegionCaching(memory_device_inter, uncache_begin << Memory::YUZU_PAGEBITS,
uncache_bytes, false);
uncache_bytes = 0;
@@ -559,7 +553,6 @@ void DeviceMemoryManager<Traits>::UpdatePagesCachedCount(DAddr addr, size_t size
}
cache_bytes += Memory::YUZU_PAGESIZE;
} else if (cache_bytes > 0) {
- Lock();
MarkRegionCaching(memory_device_inter, cache_begin << Memory::YUZU_PAGEBITS, cache_bytes,
true);
cache_bytes = 0;
@@ -567,12 +560,10 @@ void DeviceMemoryManager<Traits>::UpdatePagesCachedCount(DAddr addr, size_t size
vpage++;
}
if (uncache_bytes > 0) {
- Lock();
MarkRegionCaching(memory_device_inter, uncache_begin << Memory::YUZU_PAGEBITS, uncache_bytes,
false);
}
if (cache_bytes > 0) {
- Lock();
MarkRegionCaching(memory_device_inter, cache_begin << Memory::YUZU_PAGEBITS, cache_bytes,
true);
}