diff options
| author | 2022-01-16 04:43:06 +0100 | |
|---|---|---|
| committer | 2022-03-25 01:51:51 +0100 | |
| commit | ecb3342145780d811017a3a3c8f14f3e0725db75 (patch) | |
| tree | 2badf5f2b54a90cc3803d63f9f013c6abe1a6a2d /src/video_core/renderer_vulkan | |
| parent | Merge pull request #8074 from liamwhite/cached-words (diff) | |
| download | yuzu-ecb3342145780d811017a3a3c8f14f3e0725db75.tar.gz yuzu-ecb3342145780d811017a3a3c8f14f3e0725db75.tar.xz yuzu-ecb3342145780d811017a3a3c8f14f3e0725db75.zip | |
Garbage Collection: Redesign the algorithm to do a better use of memory.
Diffstat (limited to 'src/video_core/renderer_vulkan')
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_staging_buffer_pool.cpp | 2 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_texture_cache.cpp | 9 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_texture_cache.h | 4 |
3 files changed, 14 insertions, 1 deletions
diff --git a/src/video_core/renderer_vulkan/vk_staging_buffer_pool.cpp b/src/video_core/renderer_vulkan/vk_staging_buffer_pool.cpp index 5d5329abf..64a58304b 100644 --- a/src/video_core/renderer_vulkan/vk_staging_buffer_pool.cpp +++ b/src/video_core/renderer_vulkan/vk_staging_buffer_pool.cpp | |||
| @@ -118,7 +118,7 @@ StagingBufferPool::StagingBufferPool(const Device& device_, MemoryAllocator& mem | |||
| 118 | .image = nullptr, | 118 | .image = nullptr, |
| 119 | .buffer = *stream_buffer, | 119 | .buffer = *stream_buffer, |
| 120 | }; | 120 | }; |
| 121 | const auto memory_properties = device.GetPhysical().GetMemoryProperties(); | 121 | const auto memory_properties = device.GetPhysical().GetMemoryProperties().memoryProperties; |
| 122 | VkMemoryAllocateInfo stream_memory_info{ | 122 | VkMemoryAllocateInfo stream_memory_info{ |
| 123 | .sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO, | 123 | .sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO, |
| 124 | .pNext = make_dedicated ? &dedicated_info : nullptr, | 124 | .pNext = make_dedicated ? &dedicated_info : nullptr, |
diff --git a/src/video_core/renderer_vulkan/vk_texture_cache.cpp b/src/video_core/renderer_vulkan/vk_texture_cache.cpp index 83a23b66a..884f501ef 100644 --- a/src/video_core/renderer_vulkan/vk_texture_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_texture_cache.cpp | |||
| @@ -1189,6 +1189,14 @@ u64 TextureCacheRuntime::GetDeviceLocalMemory() const { | |||
| 1189 | return device.GetDeviceLocalMemory(); | 1189 | return device.GetDeviceLocalMemory(); |
| 1190 | } | 1190 | } |
| 1191 | 1191 | ||
| 1192 | u64 TextureCacheRuntime::GetDeviceMemoryUsage() const { | ||
| 1193 | return device.GetDeviceMemoryUsage(); | ||
| 1194 | } | ||
| 1195 | |||
| 1196 | bool TextureCacheRuntime::CanReportMemoryUsage() const { | ||
| 1197 | return device.CanReportMemoryUsage(); | ||
| 1198 | } | ||
| 1199 | |||
| 1192 | void TextureCacheRuntime::TickFrame() {} | 1200 | void TextureCacheRuntime::TickFrame() {} |
| 1193 | 1201 | ||
| 1194 | Image::Image(TextureCacheRuntime& runtime_, const ImageInfo& info_, GPUVAddr gpu_addr_, | 1202 | Image::Image(TextureCacheRuntime& runtime_, const ImageInfo& info_, GPUVAddr gpu_addr_, |
| @@ -1203,6 +1211,7 @@ Image::Image(TextureCacheRuntime& runtime_, const ImageInfo& info_, GPUVAddr gpu | |||
| 1203 | } else { | 1211 | } else { |
| 1204 | flags |= VideoCommon::ImageFlagBits::Converted; | 1212 | flags |= VideoCommon::ImageFlagBits::Converted; |
| 1205 | } | 1213 | } |
| 1214 | flags |= VideoCommon::ImageFlagBits::GCProtected; | ||
| 1206 | } | 1215 | } |
| 1207 | if (runtime->device.HasDebuggingToolAttached()) { | 1216 | if (runtime->device.HasDebuggingToolAttached()) { |
| 1208 | original_image.SetObjectNameEXT(VideoCommon::Name(*this).c_str()); | 1217 | original_image.SetObjectNameEXT(VideoCommon::Name(*this).c_str()); |
diff --git a/src/video_core/renderer_vulkan/vk_texture_cache.h b/src/video_core/renderer_vulkan/vk_texture_cache.h index c81130dd2..cb15b4a1c 100644 --- a/src/video_core/renderer_vulkan/vk_texture_cache.h +++ b/src/video_core/renderer_vulkan/vk_texture_cache.h | |||
| @@ -55,6 +55,10 @@ public: | |||
| 55 | 55 | ||
| 56 | u64 GetDeviceLocalMemory() const; | 56 | u64 GetDeviceLocalMemory() const; |
| 57 | 57 | ||
| 58 | u64 GetDeviceMemoryUsage() const; | ||
| 59 | |||
| 60 | bool CanReportMemoryUsage() const; | ||
| 61 | |||
| 58 | void BlitImage(Framebuffer* dst_framebuffer, ImageView& dst, ImageView& src, | 62 | void BlitImage(Framebuffer* dst_framebuffer, ImageView& dst, ImageView& src, |
| 59 | const Region2D& dst_region, const Region2D& src_region, | 63 | const Region2D& dst_region, const Region2D& src_region, |
| 60 | Tegra::Engines::Fermi2D::Filter filter, | 64 | Tegra::Engines::Fermi2D::Filter filter, |