summaryrefslogtreecommitdiffstats
path: root/src/video_core/buffer_cache/buffer_base.h
diff options
context:
space:
mode:
authorFernando Sahmkow <fsahmkow27@gmail.com>2021-07-04 18:08:49 +0200
committerFernando Sahmkow <fsahmkow27@gmail.com>2021-07-09 22:20:36 +0200
commit0e4d4b4beba3521dbadfe489b54309ba33dc65f2 (patch)
treeec9087c006f1a2dc65886e3db646020e0ef7f56c /src/video_core/buffer_cache/buffer_base.h
parentMerge pull request #6573 from lat9nq/cpu-settings-cleanup-2 (diff)
downloadyuzu-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.h14
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;