From af04f8b8e958a79471d58bc21745f0e8b9b2ea75 Mon Sep 17 00:00:00 2001 From: bunnei Date: Sat, 26 Mar 2022 12:38:30 -0700 Subject: Revert "Memory GPU <-> CPU: reduce infighting in the texture cache by adding CPU Cached memory." --- src/video_core/texture_cache/image_base.h | 3 -- src/video_core/texture_cache/texture_cache.h | 41 +---------------------- src/video_core/texture_cache/texture_cache_base.h | 11 ------ 3 files changed, 1 insertion(+), 54 deletions(-) (limited to 'src/video_core/texture_cache') diff --git a/src/video_core/texture_cache/image_base.h b/src/video_core/texture_cache/image_base.h index cc7999027..dd0106432 100644 --- a/src/video_core/texture_cache/image_base.h +++ b/src/video_core/texture_cache/image_base.h @@ -39,9 +39,6 @@ enum class ImageFlagBits : u32 { Rescaled = 1 << 13, CheckingRescalable = 1 << 14, IsRescalable = 1 << 15, - - // Cached CPU - CachedCpuModified = 1 << 16, ///< Contents have been modified from the CPU }; DECLARE_ENUM_FLAG_OPERATORS(ImageFlagBits) diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h index 099b2ae1b..efc1c4525 100644 --- a/src/video_core/texture_cache/texture_cache.h +++ b/src/video_core/texture_cache/texture_cache.h @@ -437,23 +437,6 @@ void TextureCache

::WriteMemory(VAddr cpu_addr, size_t size) { }); } -template -void TextureCache

::CachedWriteMemory(VAddr cpu_addr, size_t size) { - const VAddr new_cpu_addr = Common::AlignDown(cpu_addr, CPU_PAGE_SIZE); - const size_t new_size = Common::AlignUp(size + cpu_addr - new_cpu_addr, CPU_PAGE_SIZE); - ForEachImageInRegion(new_cpu_addr, new_size, [this](ImageId image_id, Image& image) { - if (True(image.flags & ImageFlagBits::CachedCpuModified)) { - return; - } - image.flags |= ImageFlagBits::CachedCpuModified; - cached_cpu_invalidate.insert(image_id); - - if (True(image.flags & ImageFlagBits::Tracked)) { - UntrackImage(image, image_id); - } - }); -} - template void TextureCache

::DownloadMemory(VAddr cpu_addr, size_t size) { std::vector images; @@ -511,18 +494,6 @@ void TextureCache

::UnmapGPUMemory(GPUVAddr gpu_addr, size_t size) { } } -template -void TextureCache

::FlushCachedWrites() { - for (ImageId image_id : cached_cpu_invalidate) { - Image& image = slot_images[image_id]; - if (True(image.flags & ImageFlagBits::CachedCpuModified)) { - image.flags &= ~ImageFlagBits::CachedCpuModified; - image.flags |= ImageFlagBits::CpuModified; - } - } - cached_cpu_invalidate.clear(); -} - template void TextureCache

::BlitImage(const Tegra::Engines::Fermi2D::Surface& dst, const Tegra::Engines::Fermi2D::Surface& src, @@ -1589,9 +1560,6 @@ void TextureCache

::UnregisterImage(ImageId image_id) { template void TextureCache

::TrackImage(ImageBase& image, ImageId image_id) { ASSERT(False(image.flags & ImageFlagBits::Tracked)); - if (True(image.flags & ImageFlagBits::CachedCpuModified)) { - return; - } image.flags |= ImageFlagBits::Tracked; if (False(image.flags & ImageFlagBits::Sparse)) { rasterizer.UpdatePagesCachedCount(image.cpu_addr, image.guest_size_bytes, 1); @@ -1648,9 +1616,6 @@ void TextureCache

::DeleteImage(ImageId image_id, bool immediate_delete) { tentative_size = EstimatedDecompressedSize(tentative_size, image.info.format); } total_used_memory -= Common::AlignUp(tentative_size, 1024); - if (True(image.flags & ImageFlagBits::CachedCpuModified)) { - cached_cpu_invalidate.erase(image_id); - } const GPUVAddr gpu_addr = image.gpu_addr; const auto alloc_it = image_allocs_table.find(gpu_addr); if (alloc_it == image_allocs_table.end()) { @@ -1817,11 +1782,7 @@ template void TextureCache

::PrepareImage(ImageId image_id, bool is_modification, bool invalidate) { Image& image = slot_images[image_id]; if (invalidate) { - if (True(image.flags & ImageFlagBits::CachedCpuModified)) { - cached_cpu_invalidate.erase(image_id); - } - image.flags &= ~(ImageFlagBits::CpuModified | ImageFlagBits::GpuModified | - ImageFlagBits::CachedCpuModified); + image.flags &= ~(ImageFlagBits::CpuModified | ImageFlagBits::GpuModified); if (False(image.flags & ImageFlagBits::Tracked)) { TrackImage(image, image_id); } diff --git a/src/video_core/texture_cache/texture_cache_base.h b/src/video_core/texture_cache/texture_cache_base.h index ad5978a33..b1324edf3 100644 --- a/src/video_core/texture_cache/texture_cache_base.h +++ b/src/video_core/texture_cache/texture_cache_base.h @@ -8,7 +8,6 @@ #include #include #include -#include #include #include @@ -51,9 +50,6 @@ 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 @@ -140,9 +136,6 @@ 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); @@ -152,8 +145,6 @@ 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, @@ -375,8 +366,6 @@ 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