diff options
| author | 2023-05-04 02:34:49 +0200 | |
|---|---|---|
| committer | 2023-05-07 23:46:12 +0200 | |
| commit | 92da86290c5ea657ae918bfe36071bdf7ac15075 (patch) | |
| tree | 54579c5be80dde28aabe68cd2467281036ef807a /src/video_core/buffer_cache | |
| parent | Texture cache: sync the first flush. (diff) | |
| download | yuzu-92da86290c5ea657ae918bfe36071bdf7ac15075.tar.gz yuzu-92da86290c5ea657ae918bfe36071bdf7ac15075.tar.xz yuzu-92da86290c5ea657ae918bfe36071bdf7ac15075.zip | |
Settings: add option to enable / disable reactive flushing
Diffstat (limited to 'src/video_core/buffer_cache')
| -rw-r--r-- | src/video_core/buffer_cache/buffer_cache.h | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/video_core/buffer_cache/buffer_cache.h b/src/video_core/buffer_cache/buffer_cache.h index 479a1a508..474822354 100644 --- a/src/video_core/buffer_cache/buffer_cache.h +++ b/src/video_core/buffer_cache/buffer_cache.h | |||
| @@ -126,7 +126,8 @@ std::optional<VideoCore::RasterizerDownloadArea> BufferCache<P>::GetFlushArea(VA | |||
| 126 | area->preemtive = true; | 126 | area->preemtive = true; |
| 127 | return area; | 127 | return area; |
| 128 | }; | 128 | }; |
| 129 | memory_tracker.MarkRegionAsPreflushable(cpu_addr_start_aligned, cpu_addr_end_aligned - cpu_addr_start_aligned); | 129 | memory_tracker.MarkRegionAsPreflushable(cpu_addr_start_aligned, |
| 130 | cpu_addr_end_aligned - cpu_addr_start_aligned); | ||
| 130 | area->preemtive = !IsRegionGpuModified(cpu_addr, size); | 131 | area->preemtive = !IsRegionGpuModified(cpu_addr, size); |
| 131 | return area; | 132 | return area; |
| 132 | } | 133 | } |
| @@ -206,7 +207,8 @@ bool BufferCache<P>::DMACopy(GPUVAddr src_address, GPUVAddr dest_address, u64 am | |||
| 206 | const VAddr new_base_address = *cpu_dest_address + diff; | 207 | const VAddr new_base_address = *cpu_dest_address + diff; |
| 207 | const IntervalType add_interval{new_base_address, new_base_address + size}; | 208 | const IntervalType add_interval{new_base_address, new_base_address + size}; |
| 208 | tmp_intervals.push_back(add_interval); | 209 | tmp_intervals.push_back(add_interval); |
| 209 | if (memory_tracker.IsRegionPreflushable(new_base_address, new_base_address + size)) { | 210 | if (!Settings::values.use_reactive_flushing.GetValue() || |
| 211 | memory_tracker.IsRegionPreflushable(new_base_address, new_base_address + size)) { | ||
| 210 | uncommitted_ranges.add(add_interval); | 212 | uncommitted_ranges.add(add_interval); |
| 211 | pending_ranges.add(add_interval); | 213 | pending_ranges.add(add_interval); |
| 212 | } | 214 | } |
| @@ -1236,7 +1238,8 @@ void BufferCache<P>::MarkWrittenBuffer(BufferId buffer_id, VAddr cpu_addr, u32 s | |||
| 1236 | 1238 | ||
| 1237 | const IntervalType base_interval{cpu_addr, cpu_addr + size}; | 1239 | const IntervalType base_interval{cpu_addr, cpu_addr + size}; |
| 1238 | common_ranges.add(base_interval); | 1240 | common_ranges.add(base_interval); |
| 1239 | if (!memory_tracker.IsRegionPreflushable(cpu_addr, cpu_addr + size)) { | 1241 | if (Settings::values.use_reactive_flushing.GetValue() && |
| 1242 | !memory_tracker.IsRegionPreflushable(cpu_addr, cpu_addr + size)) { | ||
| 1240 | return; | 1243 | return; |
| 1241 | } | 1244 | } |
| 1242 | uncommitted_ranges.add(base_interval); | 1245 | uncommitted_ranges.add(base_interval); |