diff options
author | Fernando Sahmkow <fsahmkow27@gmail.com> | 2021-07-04 18:08:49 +0200 |
---|---|---|
committer | Fernando Sahmkow <fsahmkow27@gmail.com> | 2021-07-09 22:20:36 +0200 |
commit | 0e4d4b4beba3521dbadfe489b54309ba33dc65f2 (patch) | |
tree | ec9087c006f1a2dc65886e3db646020e0ef7f56c /src/video_core/buffer_cache/buffer_base.h | |
parent | Merge pull request #6573 from lat9nq/cpu-settings-cleanup-2 (diff) | |
download | yuzu-0e4d4b4beba3521dbadfe489b54309ba33dc65f2.tar yuzu-0e4d4b4beba3521dbadfe489b54309ba33dc65f2.tar.gz yuzu-0e4d4b4beba3521dbadfe489b54309ba33dc65f2.tar.bz2 yuzu-0e4d4b4beba3521dbadfe489b54309ba33dc65f2.tar.lz yuzu-0e4d4b4beba3521dbadfe489b54309ba33dc65f2.tar.xz yuzu-0e4d4b4beba3521dbadfe489b54309ba33dc65f2.tar.zst yuzu-0e4d4b4beba3521dbadfe489b54309ba33dc65f2.zip |
Diffstat (limited to '')
-rw-r--r-- | src/video_core/buffer_cache/buffer_base.h | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/video_core/buffer_cache/buffer_base.h b/src/video_core/buffer_cache/buffer_base.h index b121d36a3..a56b4c3a8 100644 --- a/src/video_core/buffer_cache/buffer_base.h +++ b/src/video_core/buffer_cache/buffer_base.h @@ -226,19 +226,19 @@ public: /// Call 'func' for each CPU modified range and unmark those pages as CPU modified template <typename Func> void ForEachUploadRange(VAddr query_cpu_range, u64 size, Func&& func) { - ForEachModifiedRange<Type::CPU>(query_cpu_range, size, func); + ForEachModifiedRange<Type::CPU>(query_cpu_range, size, true, func); } /// Call 'func' for each GPU modified range and unmark those pages as GPU modified template <typename Func> - void ForEachDownloadRange(VAddr query_cpu_range, u64 size, Func&& func) { - ForEachModifiedRange<Type::GPU>(query_cpu_range, size, func); + void ForEachDownloadRange(VAddr query_cpu_range, u64 size, bool clear, Func&& func) { + ForEachModifiedRange<Type::GPU>(query_cpu_range, size, clear, func); } /// Call 'func' for each GPU modified range and unmark those pages as GPU modified template <typename Func> void ForEachDownloadRange(Func&& func) { - ForEachModifiedRange<Type::GPU>(cpu_addr, SizeBytes(), func); + ForEachModifiedRange<Type::GPU>(cpu_addr, SizeBytes(), true, func); } /// Mark buffer as picked @@ -415,7 +415,7 @@ private: * @param func Function to call for each turned off region */ template <Type type, typename Func> - void ForEachModifiedRange(VAddr query_cpu_range, s64 size, Func&& func) { + void ForEachModifiedRange(VAddr query_cpu_range, s64 size, bool clear, Func&& func) { static_assert(type != Type::Untracked); const s64 difference = query_cpu_range - cpu_addr; @@ -467,7 +467,9 @@ private: bits = (bits << left_offset) >> left_offset; const u64 current_word = state_words[word_index] & bits; - state_words[word_index] &= ~bits; + if (clear) { + state_words[word_index] &= ~bits; + } if constexpr (type == Type::CPU) { const u64 current_bits = untracked_words[word_index] & bits; |