Просмотр исходного кода

VideoCore: Move Slot Vector to Common

Fernando Sahmkow 2 лет назад
Родитель
Сommit
4841dc0b74

+ 1 - 0
src/common/CMakeLists.txt

@@ -121,6 +121,7 @@ add_library(common STATIC
     settings_input.cpp
     settings_input.cpp
     settings_input.h
     settings_input.h
     settings_setting.h
     settings_setting.h
+    slot_vector.h
     socket_types.h
     socket_types.h
     spin_lock.cpp
     spin_lock.cpp
     spin_lock.h
     spin_lock.h

+ 4 - 4
src/video_core/texture_cache/slot_vector.h → src/common/slot_vector.h

@@ -14,7 +14,7 @@
 #include "common/common_types.h"
 #include "common/common_types.h"
 #include "common/polyfill_ranges.h"
 #include "common/polyfill_ranges.h"
 
 
-namespace VideoCommon {
+namespace Common {
 
 
 struct SlotId {
 struct SlotId {
     static constexpr u32 INVALID_INDEX = std::numeric_limits<u32>::max();
     static constexpr u32 INVALID_INDEX = std::numeric_limits<u32>::max();
@@ -217,11 +217,11 @@ private:
     std::vector<u32> free_list;
     std::vector<u32> free_list;
 };
 };
 
 
-} // namespace VideoCommon
+} // namespace Common
 
 
 template <>
 template <>
-struct std::hash<VideoCommon::SlotId> {
-    size_t operator()(const VideoCommon::SlotId& id) const noexcept {
+struct std::hash<Common::SlotId> {
+    size_t operator()(const Common::SlotId& id) const noexcept {
         return std::hash<u32>{}(id.index);
         return std::hash<u32>{}(id.index);
     }
     }
 };
 };

+ 0 - 1
src/video_core/CMakeLists.txt

@@ -274,7 +274,6 @@ add_library(video_core STATIC
     texture_cache/image_view_info.h
     texture_cache/image_view_info.h
     texture_cache/render_targets.h
     texture_cache/render_targets.h
     texture_cache/samples_helper.h
     texture_cache/samples_helper.h
-    texture_cache/slot_vector.h
     texture_cache/texture_cache.cpp
     texture_cache/texture_cache.cpp
     texture_cache/texture_cache.h
     texture_cache/texture_cache.h
     texture_cache/texture_cache_base.h
     texture_cache/texture_cache_base.h

+ 3 - 3
src/video_core/buffer_cache/buffer_cache_base.h

@@ -41,7 +41,7 @@
 #include "video_core/engines/maxwell_3d.h"
 #include "video_core/engines/maxwell_3d.h"
 #include "video_core/memory_manager.h"
 #include "video_core/memory_manager.h"
 #include "video_core/surface.h"
 #include "video_core/surface.h"
-#include "video_core/texture_cache/slot_vector.h"
+#include "common/slot_vector.h"
 #include "video_core/texture_cache/types.h"
 #include "video_core/texture_cache/types.h"
 
 
 namespace boost {
 namespace boost {
@@ -55,7 +55,7 @@ MICROPROFILE_DECLARE(GPU_PrepareBuffers);
 MICROPROFILE_DECLARE(GPU_BindUploadBuffers);
 MICROPROFILE_DECLARE(GPU_BindUploadBuffers);
 MICROPROFILE_DECLARE(GPU_DownloadMemory);
 MICROPROFILE_DECLARE(GPU_DownloadMemory);
 
 
-using BufferId = SlotId;
+using BufferId = Common::SlotId;
 
 
 using VideoCore::Surface::PixelFormat;
 using VideoCore::Surface::PixelFormat;
 using namespace Common::Literals;
 using namespace Common::Literals;
@@ -559,7 +559,7 @@ private:
 
 
     Tegra::MaxwellDeviceMemoryManager& device_memory;
     Tegra::MaxwellDeviceMemoryManager& device_memory;
 
 
-    SlotVector<Buffer> slot_buffers;
+    Common::SlotVector<Buffer> slot_buffers;
     DelayedDestructionRing<Buffer, 8> delayed_destruction_ring;
     DelayedDestructionRing<Buffer, 8> delayed_destruction_ring;
 
 
     const Tegra::Engines::DrawManager::IndirectParams* current_draw_indirect{};
     const Tegra::Engines::DrawManager::IndirectParams* current_draw_indirect{};

+ 3 - 3
src/video_core/query_cache.h

@@ -18,12 +18,12 @@
 
 
 #include "common/assert.h"
 #include "common/assert.h"
 #include "common/settings.h"
 #include "common/settings.h"
+#include "common/slot_vector.h"
 #include "video_core/control/channel_state_cache.h"
 #include "video_core/control/channel_state_cache.h"
 #include "video_core/engines/maxwell_3d.h"
 #include "video_core/engines/maxwell_3d.h"
 #include "video_core/host1x/gpu_device_memory_manager.h"
 #include "video_core/host1x/gpu_device_memory_manager.h"
 #include "video_core/memory_manager.h"
 #include "video_core/memory_manager.h"
 #include "video_core/rasterizer_interface.h"
 #include "video_core/rasterizer_interface.h"
-#include "video_core/texture_cache/slot_vector.h"
 
 
 namespace VideoCore {
 namespace VideoCore {
 enum class QueryType {
 enum class QueryType {
@@ -37,7 +37,7 @@ constexpr std::size_t NumQueryTypes = static_cast<size_t>(QueryType::Count);
 
 
 namespace VideoCommon {
 namespace VideoCommon {
 
 
-using AsyncJobId = SlotId;
+using AsyncJobId = Common::SlotId;
 
 
 static constexpr AsyncJobId NULL_ASYNC_JOB_ID{0};
 static constexpr AsyncJobId NULL_ASYNC_JOB_ID{0};
 
 
@@ -341,7 +341,7 @@ private:
     static constexpr std::uintptr_t YUZU_PAGESIZE = 4096;
     static constexpr std::uintptr_t YUZU_PAGESIZE = 4096;
     static constexpr unsigned YUZU_PAGEBITS = 12;
     static constexpr unsigned YUZU_PAGEBITS = 12;
 
 
-    SlotVector<AsyncJob> slot_async_jobs;
+    Common::SlotVector<AsyncJob> slot_async_jobs;
 
 
     VideoCore::RasterizerInterface& rasterizer;
     VideoCore::RasterizerInterface& rasterizer;
     Tegra::MaxwellDeviceMemoryManager& device_memory;
     Tegra::MaxwellDeviceMemoryManager& device_memory;

+ 1 - 1
src/video_core/renderer_opengl/gl_buffer_cache.h

@@ -90,7 +90,7 @@ public:
     void PostCopyBarrier();
     void PostCopyBarrier();
     void Finish();
     void Finish();
 
 
-    void TickFrame(VideoCommon::SlotVector<Buffer>&) noexcept {}
+    void TickFrame(Common::SlotVector<Buffer>&) noexcept {}
 
 
     void ClearBuffer(Buffer& dest_buffer, u32 offset, size_t size, u32 value);
     void ClearBuffer(Buffer& dest_buffer, u32 offset, size_t size, u32 value);
 
 

+ 1 - 1
src/video_core/renderer_opengl/gl_texture_cache.h

@@ -30,13 +30,13 @@ class Image;
 class ImageView;
 class ImageView;
 class Sampler;
 class Sampler;
 
 
+using Common::SlotVector;
 using VideoCommon::ImageId;
 using VideoCommon::ImageId;
 using VideoCommon::ImageViewId;
 using VideoCommon::ImageViewId;
 using VideoCommon::ImageViewType;
 using VideoCommon::ImageViewType;
 using VideoCommon::NUM_RT;
 using VideoCommon::NUM_RT;
 using VideoCommon::Region2D;
 using VideoCommon::Region2D;
 using VideoCommon::RenderTargets;
 using VideoCommon::RenderTargets;
-using VideoCommon::SlotVector;
 
 
 struct FormatProperties {
 struct FormatProperties {
     GLenum compatibility_class;
     GLenum compatibility_class;

+ 1 - 1
src/video_core/renderer_vulkan/vk_buffer_cache.cpp

@@ -368,7 +368,7 @@ u32 BufferCacheRuntime::GetStorageBufferAlignment() const {
     return static_cast<u32>(device.GetStorageBufferAlignment());
     return static_cast<u32>(device.GetStorageBufferAlignment());
 }
 }
 
 
-void BufferCacheRuntime::TickFrame(VideoCommon::SlotVector<Buffer>& slot_buffers) noexcept {
+void BufferCacheRuntime::TickFrame(Common::SlotVector<Buffer>& slot_buffers) noexcept {
     for (auto it = slot_buffers.begin(); it != slot_buffers.end(); it++) {
     for (auto it = slot_buffers.begin(); it != slot_buffers.end(); it++) {
         it->ResetUsageTracking();
         it->ResetUsageTracking();
     }
     }

+ 1 - 1
src/video_core/renderer_vulkan/vk_buffer_cache.h

@@ -81,7 +81,7 @@ public:
                                 ComputePassDescriptorQueue& compute_pass_descriptor_queue,
                                 ComputePassDescriptorQueue& compute_pass_descriptor_queue,
                                 DescriptorPool& descriptor_pool);
                                 DescriptorPool& descriptor_pool);
 
 
-    void TickFrame(VideoCommon::SlotVector<Buffer>& slot_buffers) noexcept;
+    void TickFrame(Common::SlotVector<Buffer>& slot_buffers) noexcept;
 
 
     void Finish();
     void Finish();
 
 

+ 1 - 1
src/video_core/renderer_vulkan/vk_texture_cache.h

@@ -20,11 +20,11 @@ struct ResolutionScalingInfo;
 
 
 namespace Vulkan {
 namespace Vulkan {
 
 
+using Common::SlotVector;
 using VideoCommon::ImageId;
 using VideoCommon::ImageId;
 using VideoCommon::NUM_RT;
 using VideoCommon::NUM_RT;
 using VideoCommon::Region2D;
 using VideoCommon::Region2D;
 using VideoCommon::RenderTargets;
 using VideoCommon::RenderTargets;
-using VideoCommon::SlotVector;
 using VideoCore::Surface::PixelFormat;
 using VideoCore::Surface::PixelFormat;
 
 
 class BlitImageHelper;
 class BlitImageHelper;

+ 9 - 9
src/video_core/texture_cache/texture_cache_base.h

@@ -21,6 +21,7 @@
 #include "common/lru_cache.h"
 #include "common/lru_cache.h"
 #include "common/polyfill_ranges.h"
 #include "common/polyfill_ranges.h"
 #include "common/scratch_buffer.h"
 #include "common/scratch_buffer.h"
+#include "common/slot_vector.h"
 #include "common/thread_worker.h"
 #include "common/thread_worker.h"
 #include "video_core/compatible_formats.h"
 #include "video_core/compatible_formats.h"
 #include "video_core/control/channel_state_cache.h"
 #include "video_core/control/channel_state_cache.h"
@@ -32,7 +33,6 @@
 #include "video_core/texture_cache/image_info.h"
 #include "video_core/texture_cache/image_info.h"
 #include "video_core/texture_cache/image_view_base.h"
 #include "video_core/texture_cache/image_view_base.h"
 #include "video_core/texture_cache/render_targets.h"
 #include "video_core/texture_cache/render_targets.h"
-#include "video_core/texture_cache/slot_vector.h"
 #include "video_core/texture_cache/types.h"
 #include "video_core/texture_cache/types.h"
 #include "video_core/textures/texture.h"
 #include "video_core/textures/texture.h"
 
 
@@ -451,16 +451,16 @@ private:
     struct PendingDownload {
     struct PendingDownload {
         bool is_swizzle;
         bool is_swizzle;
         size_t async_buffer_id;
         size_t async_buffer_id;
-        SlotId object_id;
+        Common::SlotId object_id;
     };
     };
 
 
-    SlotVector<Image> slot_images;
-    SlotVector<ImageMapView> slot_map_views;
-    SlotVector<ImageView> slot_image_views;
-    SlotVector<ImageAlloc> slot_image_allocs;
-    SlotVector<Sampler> slot_samplers;
-    SlotVector<Framebuffer> slot_framebuffers;
-    SlotVector<BufferDownload> slot_buffer_downloads;
+    Common::SlotVector<Image> slot_images;
+    Common::SlotVector<ImageMapView> slot_map_views;
+    Common::SlotVector<ImageView> slot_image_views;
+    Common::SlotVector<ImageAlloc> slot_image_allocs;
+    Common::SlotVector<Sampler> slot_samplers;
+    Common::SlotVector<Framebuffer> slot_framebuffers;
+    Common::SlotVector<BufferDownload> slot_buffer_downloads;
 
 
     // TODO: This data structure is not optimal and it should be reworked
     // TODO: This data structure is not optimal and it should be reworked
 
 

+ 8 - 8
src/video_core/texture_cache/types.h

@@ -5,21 +5,21 @@
 
 
 #include "common/common_funcs.h"
 #include "common/common_funcs.h"
 #include "common/common_types.h"
 #include "common/common_types.h"
-#include "video_core/texture_cache/slot_vector.h"
+#include "common/slot_vector.h"
 
 
 namespace VideoCommon {
 namespace VideoCommon {
 
 
 constexpr size_t NUM_RT = 8;
 constexpr size_t NUM_RT = 8;
 constexpr size_t MAX_MIP_LEVELS = 14;
 constexpr size_t MAX_MIP_LEVELS = 14;
 
 
-constexpr SlotId CORRUPT_ID{0xfffffffe};
+constexpr Common::SlotId CORRUPT_ID{0xfffffffe};
 
 
-using ImageId = SlotId;
-using ImageMapId = SlotId;
-using ImageViewId = SlotId;
-using ImageAllocId = SlotId;
-using SamplerId = SlotId;
-using FramebufferId = SlotId;
+using ImageId = Common::SlotId;
+using ImageMapId = Common::SlotId;
+using ImageViewId = Common::SlotId;
+using ImageAllocId = Common::SlotId;
+using SamplerId = Common::SlotId;
+using FramebufferId = Common::SlotId;
 
 
 /// Fake image ID for null image views
 /// Fake image ID for null image views
 constexpr ImageId NULL_IMAGE_ID{0};
 constexpr ImageId NULL_IMAGE_ID{0};