diff options
author | Fernando Sahmkow <fsahmkow27@gmail.com> | 2023-06-28 19:32:50 +0200 |
---|---|---|
committer | Fernando Sahmkow <fsahmkow27@gmail.com> | 2023-06-28 21:32:45 +0200 |
commit | da440da9f54cc860f3c69da685a415d5ec9d7b64 (patch) | |
tree | 5a7a4a56462244970e1356a723e6a8a77477f820 /src/video_core/buffer_cache/buffer_cache.h | |
parent | MemoryTracking: Initial setup of atomic writes. (diff) | |
download | yuzu-da440da9f54cc860f3c69da685a415d5ec9d7b64.tar yuzu-da440da9f54cc860f3c69da685a415d5ec9d7b64.tar.gz yuzu-da440da9f54cc860f3c69da685a415d5ec9d7b64.tar.bz2 yuzu-da440da9f54cc860f3c69da685a415d5ec9d7b64.tar.lz yuzu-da440da9f54cc860f3c69da685a415d5ec9d7b64.tar.xz yuzu-da440da9f54cc860f3c69da685a415d5ec9d7b64.tar.zst yuzu-da440da9f54cc860f3c69da685a415d5ec9d7b64.zip |
Diffstat (limited to 'src/video_core/buffer_cache/buffer_cache.h')
-rw-r--r-- | src/video_core/buffer_cache/buffer_cache.h | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/video_core/buffer_cache/buffer_cache.h b/src/video_core/buffer_cache/buffer_cache.h index 9239ad862..b5ed3380f 100644 --- a/src/video_core/buffer_cache/buffer_cache.h +++ b/src/video_core/buffer_cache/buffer_cache.h @@ -133,6 +133,19 @@ void BufferCache<P>::CachedWriteMemory(VAddr cpu_addr, u64 size) { } template <class P> +bool BufferCache<P>::OnCPUWrite(VAddr cpu_addr, u64 size) { + const bool is_dirty = IsRegionRegistered(cpu_addr, size); + if (!is_dirty) { + return false; + } + if (memory_tracker.IsRegionGpuModified(cpu_addr, size)) { + return true; + } + WriteMemory(cpu_addr, size); + return false; +} + +template <class P> std::optional<VideoCore::RasterizerDownloadArea> BufferCache<P>::GetFlushArea(VAddr cpu_addr, u64 size) { std::optional<VideoCore::RasterizerDownloadArea> area{}; @@ -1574,7 +1587,7 @@ bool BufferCache<P>::InlineMemory(VAddr dest_address, size_t copy_size, template <class P> void BufferCache<P>::InlineMemoryImplementation(VAddr dest_address, size_t copy_size, - std::span<const u8> inlined_buffer) { + std::span<const u8> inlined_buffer) { const IntervalType subtract_interval{dest_address, dest_address + copy_size}; ClearDownload(subtract_interval); common_ranges.subtract(subtract_interval); |