diff --git a/src/video_core/buffer_cache/region_manager.h b/src/video_core/buffer_cache/region_manager.h index 2c70d10b4..2088dd106 100644 --- a/src/video_core/buffer_cache/region_manager.h +++ b/src/video_core/buffer_cache/region_manager.h @@ -184,8 +184,13 @@ private: void UpdateProtection() { RENDERER_TRACE; RegionBits mask = cpu ^ writeable; + + if (mask.None()) { + return; // No changes to the CPU tracking state + } + writeable = cpu; - tracker->UpdatePageWatchersMasked(cpu_addr, mask); + tracker->UpdatePageWatchersForRegion(cpu_addr, mask); } #ifdef PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP diff --git a/src/video_core/page_manager.cpp b/src/video_core/page_manager.cpp index f2f41f90e..147595d52 100644 --- a/src/video_core/page_manager.cpp +++ b/src/video_core/page_manager.cpp @@ -241,7 +241,7 @@ struct PageManager::Impl { } template - void UpdatePageWatchersMasked(VAddr base_addr, RegionBits& mask) { + void UpdatePageWatchersForRegion(VAddr base_addr, RegionBits& mask) { RENDERER_TRACE; auto start_range = mask.FirstRange(); auto end_range = mask.LastRange(); @@ -331,13 +331,13 @@ void PageManager::UpdatePageWatchers(VAddr addr, u64 size) const { } template -void PageManager::UpdatePageWatchersMasked(VAddr base_addr, RegionBits& mask) const { - impl->UpdatePageWatchersMasked(base_addr, mask); +void PageManager::UpdatePageWatchersForRegion(VAddr base_addr, RegionBits& mask) const { + impl->UpdatePageWatchersForRegion(base_addr, mask); } template void PageManager::UpdatePageWatchers(VAddr addr, u64 size) const; template void PageManager::UpdatePageWatchers(VAddr addr, u64 size) const; -template void PageManager::UpdatePageWatchersMasked(VAddr base_addr, RegionBits& mask) const; -template void PageManager::UpdatePageWatchersMasked(VAddr base_addr, RegionBits& mask) const; +template void PageManager::UpdatePageWatchersForRegion(VAddr base_addr, RegionBits& mask) const; +template void PageManager::UpdatePageWatchersForRegion(VAddr base_addr, RegionBits& mask) const; } // namespace VideoCore diff --git a/src/video_core/page_manager.h b/src/video_core/page_manager.h index 9b21ef6b0..157b34984 100644 --- a/src/video_core/page_manager.h +++ b/src/video_core/page_manager.h @@ -35,7 +35,7 @@ public: /// Updates watches in the pages touching the specified region /// using a mask. template - void UpdatePageWatchersMasked(VAddr base_addr, RegionBits& mask) const; + void UpdatePageWatchersForRegion(VAddr base_addr, RegionBits& mask) const; /// Returns page aligned address. static constexpr VAddr GetPageAddr(VAddr addr) {