diff options
author | liamwhite <liamwhite@users.noreply.github.com> | 2023-05-11 16:45:47 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-11 16:45:47 +0200 |
commit | 2643ea80df585dbdd6496eb62ae951394ce56e2d (patch) | |
tree | c65d9701d017a066081d58e62ed166173475c9f7 /src/video_core | |
parent | Merge pull request #10222 from liamwhite/q (diff) | |
parent | Swap order of checking/setting region modifications in the buffer_cache (diff) | |
download | yuzu-2643ea80df585dbdd6496eb62ae951394ce56e2d.tar yuzu-2643ea80df585dbdd6496eb62ae951394ce56e2d.tar.gz yuzu-2643ea80df585dbdd6496eb62ae951394ce56e2d.tar.bz2 yuzu-2643ea80df585dbdd6496eb62ae951394ce56e2d.tar.lz yuzu-2643ea80df585dbdd6496eb62ae951394ce56e2d.tar.xz yuzu-2643ea80df585dbdd6496eb62ae951394ce56e2d.tar.zst yuzu-2643ea80df585dbdd6496eb62ae951394ce56e2d.zip |
Diffstat (limited to 'src/video_core')
-rw-r--r-- | src/video_core/buffer_cache/buffer_cache.h | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/video_core/buffer_cache/buffer_cache.h b/src/video_core/buffer_cache/buffer_cache.h index 6624919a4..fff57ffa9 100644 --- a/src/video_core/buffer_cache/buffer_cache.h +++ b/src/video_core/buffer_cache/buffer_cache.h @@ -96,12 +96,12 @@ void BufferCache<P>::TickFrame() { template <class P> void BufferCache<P>::WriteMemory(VAddr cpu_addr, u64 size) { - memory_tracker.MarkRegionAsCpuModified(cpu_addr, size); if (memory_tracker.IsRegionGpuModified(cpu_addr, size)) { const IntervalType subtract_interval{cpu_addr, cpu_addr + size}; ClearDownload(subtract_interval); common_ranges.subtract(subtract_interval); } + memory_tracker.MarkRegionAsCpuModified(cpu_addr, size); } template <class P> @@ -122,9 +122,10 @@ std::optional<VideoCore::RasterizerDownloadArea> BufferCache<P>::GetFlushArea(VA area->preemtive = true; return area; }; + area->preemtive = + !IsRegionGpuModified(cpu_addr_start_aligned, cpu_addr_end_aligned - cpu_addr_start_aligned); memory_tracker.MarkRegionAsPreflushable(cpu_addr_start_aligned, cpu_addr_end_aligned - cpu_addr_start_aligned); - area->preemtive = !IsRegionGpuModified(cpu_addr, size); return area; } @@ -1223,11 +1224,10 @@ void BufferCache<P>::UpdateComputeTextureBuffers() { template <class P> void BufferCache<P>::MarkWrittenBuffer(BufferId buffer_id, VAddr cpu_addr, u32 size) { - memory_tracker.MarkRegionAsGpuModified(cpu_addr, size); - if (memory_tracker.IsRegionCpuModified(cpu_addr, size)) { SynchronizeBuffer(slot_buffers[buffer_id], cpu_addr, size); } + memory_tracker.MarkRegionAsGpuModified(cpu_addr, size); const IntervalType base_interval{cpu_addr, cpu_addr + size}; common_ranges.add(base_interval); |