diff options
| author | 2024-02-08 10:59:52 -0500 | |
|---|---|---|
| committer | 2024-02-08 10:59:52 -0500 | |
| commit | bc9711cb1e921ce9764169aa6eff1ee1e9dde9ca (patch) | |
| tree | e191f5ca2ddc770c026a8cb771d751cdbd88700a /src | |
| parent | Merge pull request #12939 from german77/wonder (diff) | |
| parent | SMMU: Ensure the backing address range matches the current (diff) | |
| download | yuzu-bc9711cb1e921ce9764169aa6eff1ee1e9dde9ca.tar.gz yuzu-bc9711cb1e921ce9764169aa6eff1ee1e9dde9ca.tar.xz yuzu-bc9711cb1e921ce9764169aa6eff1ee1e9dde9ca.zip | |
Merge pull request #12953 from FernandoS27/zero-fps-mah-ass
SMMU: Ensure the backing address range matches the current
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/device_memory_manager.inc | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/core/device_memory_manager.inc b/src/core/device_memory_manager.inc index b026f4220..6dfee806c 100644 --- a/src/core/device_memory_manager.inc +++ b/src/core/device_memory_manager.inc | |||
| @@ -532,6 +532,7 @@ void DeviceMemoryManager<Traits>::UpdatePagesCachedCount(DAddr addr, size_t size | |||
| 532 | cache_bytes = 0; | 532 | cache_bytes = 0; |
| 533 | } | 533 | } |
| 534 | }; | 534 | }; |
| 535 | size_t old_vpage = (base_vaddress >> Memory::YUZU_PAGEBITS) - 1; | ||
| 535 | for (; page != page_end; ++page) { | 536 | for (; page != page_end; ++page) { |
| 536 | CounterAtomicType& count = cached_pages->at(page >> subentries_shift).Count(page); | 537 | CounterAtomicType& count = cached_pages->at(page >> subentries_shift).Count(page); |
| 537 | auto [asid_2, vpage] = ExtractCPUBacking(page); | 538 | auto [asid_2, vpage] = ExtractCPUBacking(page); |
| @@ -547,6 +548,12 @@ void DeviceMemoryManager<Traits>::UpdatePagesCachedCount(DAddr addr, size_t size | |||
| 547 | memory_device_inter = registered_processes[asid_2.id]; | 548 | memory_device_inter = registered_processes[asid_2.id]; |
| 548 | } | 549 | } |
| 549 | 550 | ||
| 551 | if (vpage != old_vpage + 1) [[unlikely]] { | ||
| 552 | release_pending(); | ||
| 553 | } | ||
| 554 | |||
| 555 | old_vpage = vpage; | ||
| 556 | |||
| 550 | // Adds or subtracts 1, as count is a unsigned 8-bit value | 557 | // Adds or subtracts 1, as count is a unsigned 8-bit value |
| 551 | count.fetch_add(static_cast<CounterType>(delta), std::memory_order_release); | 558 | count.fetch_add(static_cast<CounterType>(delta), std::memory_order_release); |
| 552 | 559 | ||