From 7a9d9e575b4d85ca30fc119dfb73c1b22a6dbe63 Mon Sep 17 00:00:00 2001 From: Fernando Sahmkow Date: Thu, 24 Mar 2022 21:30:54 +0100 Subject: Texture Cache: Add Cached CPU system. --- src/video_core/texture_cache/texture_cache_base.h | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/video_core/texture_cache/texture_cache_base.h') diff --git a/src/video_core/texture_cache/texture_cache_base.h b/src/video_core/texture_cache/texture_cache_base.h index b1324edf3..ad5978a33 100644 --- a/src/video_core/texture_cache/texture_cache_base.h +++ b/src/video_core/texture_cache/texture_cache_base.h @@ -8,6 +8,7 @@ #include #include #include +#include #include #include @@ -50,6 +51,9 @@ class TextureCache { /// Address shift for caching images into a hash table static constexpr u64 PAGE_BITS = 20; + static constexpr u64 CPU_PAGE_BITS = 12; + static constexpr u64 CPU_PAGE_SIZE = 1ULL << CPU_PAGE_BITS; + /// Enables debugging features to the texture cache static constexpr bool ENABLE_VALIDATION = P::ENABLE_VALIDATION; /// Implement blits as copies between framebuffers @@ -136,6 +140,9 @@ public: /// Mark images in a range as modified from the CPU void WriteMemory(VAddr cpu_addr, size_t size); + /// Mark images in a range as modified from the CPU + void CachedWriteMemory(VAddr cpu_addr, size_t size); + /// Download contents of host images to guest memory in a region void DownloadMemory(VAddr cpu_addr, size_t size); @@ -145,6 +152,8 @@ public: /// Remove images in a region void UnmapGPUMemory(GPUVAddr gpu_addr, size_t size); + void FlushCachedWrites(); + /// Blit an image with the given parameters void BlitImage(const Tegra::Engines::Fermi2D::Surface& dst, const Tegra::Engines::Fermi2D::Surface& src, @@ -366,6 +375,8 @@ private: std::unordered_map> sparse_views; + std::unordered_set cached_cpu_invalidate; + VAddr virtual_invalid_space{}; bool has_deleted_images = false; -- cgit v1.2.3