memory_allocator: Remove OpenGL interop
* Appears to be unused atm
This commit is contained in:
		| @@ -89,8 +89,8 @@ RendererVulkan::RendererVulkan(Core::TelemetrySession& telemetry_session_, | |||||||
|                               Settings::values.renderer_debug.GetValue())), |                               Settings::values.renderer_debug.GetValue())), | ||||||
|       debug_callback(Settings::values.renderer_debug ? CreateDebugCallback(instance) : nullptr), |       debug_callback(Settings::values.renderer_debug ? CreateDebugCallback(instance) : nullptr), | ||||||
|       surface(CreateSurface(instance, render_window.GetWindowInfo())), |       surface(CreateSurface(instance, render_window.GetWindowInfo())), | ||||||
|       device(CreateDevice(instance, dld, *surface)), memory_allocator(device, false), |       device(CreateDevice(instance, dld, *surface)), memory_allocator(device), state_tracker(), | ||||||
|       state_tracker(), scheduler(device, state_tracker), |       scheduler(device, state_tracker), | ||||||
|       swapchain(*surface, device, scheduler, render_window.GetFramebufferLayout().width, |       swapchain(*surface, device, scheduler, render_window.GetFramebufferLayout().width, | ||||||
|                 render_window.GetFramebufferLayout().height, false), |                 render_window.GetFramebufferLayout().height, false), | ||||||
|       present_manager(instance, render_window, device, memory_allocator, scheduler, swapchain, |       present_manager(instance, render_window, device, memory_allocator, scheduler, swapchain, | ||||||
|   | |||||||
| @@ -18,7 +18,7 @@ using namespace Common::Literals; | |||||||
|  |  | ||||||
| TurboMode::TurboMode(const vk::Instance& instance, const vk::InstanceDispatch& dld) | TurboMode::TurboMode(const vk::Instance& instance, const vk::InstanceDispatch& dld) | ||||||
| #ifndef ANDROID | #ifndef ANDROID | ||||||
|     : m_device{CreateDevice(instance, dld, VK_NULL_HANDLE)}, m_allocator{m_device, false} |     : m_device{CreateDevice(instance, dld, VK_NULL_HANDLE)}, m_allocator{m_device} | ||||||
| #endif | #endif | ||||||
| { | { | ||||||
|     { |     { | ||||||
|   | |||||||
| @@ -6,8 +6,6 @@ | |||||||
| #include <optional> | #include <optional> | ||||||
| #include <vector> | #include <vector> | ||||||
|  |  | ||||||
| #include <glad/glad.h> |  | ||||||
|  |  | ||||||
| #include "common/alignment.h" | #include "common/alignment.h" | ||||||
| #include "common/assert.h" | #include "common/assert.h" | ||||||
| #include "common/common_types.h" | #include "common/common_types.h" | ||||||
| @@ -54,17 +52,6 @@ struct Range { | |||||||
|     return VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT; |     return VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT; | ||||||
| } | } | ||||||
|  |  | ||||||
| constexpr VkExportMemoryAllocateInfo EXPORT_ALLOCATE_INFO{ |  | ||||||
|     .sType = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO, |  | ||||||
|     .pNext = nullptr, |  | ||||||
| #ifdef _WIN32 |  | ||||||
|     .handleTypes = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT, |  | ||||||
| #elif __unix__ |  | ||||||
|     .handleTypes = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT, |  | ||||||
| #else |  | ||||||
|     .handleTypes = 0, |  | ||||||
| #endif |  | ||||||
| }; |  | ||||||
| } // Anonymous namespace | } // Anonymous namespace | ||||||
|  |  | ||||||
| class MemoryAllocation { | class MemoryAllocation { | ||||||
| @@ -74,14 +61,6 @@ public: | |||||||
|         : allocator{allocator_}, memory{std::move(memory_)}, allocation_size{allocation_size_}, |         : allocator{allocator_}, memory{std::move(memory_)}, allocation_size{allocation_size_}, | ||||||
|           property_flags{properties}, shifted_memory_type{1U << type} {} |           property_flags{properties}, shifted_memory_type{1U << type} {} | ||||||
|  |  | ||||||
| #if defined(_WIN32) || defined(__unix__) |  | ||||||
|     ~MemoryAllocation() { |  | ||||||
|         if (owning_opengl_handle != 0) { |  | ||||||
|             glDeleteMemoryObjectsEXT(1, &owning_opengl_handle); |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|     MemoryAllocation& operator=(const MemoryAllocation&) = delete; |     MemoryAllocation& operator=(const MemoryAllocation&) = delete; | ||||||
|     MemoryAllocation(const MemoryAllocation&) = delete; |     MemoryAllocation(const MemoryAllocation&) = delete; | ||||||
|  |  | ||||||
| @@ -120,31 +99,6 @@ public: | |||||||
|         return memory_mapped_span; |         return memory_mapped_span; | ||||||
|     } |     } | ||||||
|  |  | ||||||
| #ifdef _WIN32 |  | ||||||
|     [[nodiscard]] u32 ExportOpenGLHandle() { |  | ||||||
|         if (!owning_opengl_handle) { |  | ||||||
|             glCreateMemoryObjectsEXT(1, &owning_opengl_handle); |  | ||||||
|             glImportMemoryWin32HandleEXT(owning_opengl_handle, allocation_size, |  | ||||||
|                                          GL_HANDLE_TYPE_OPAQUE_WIN32_EXT, |  | ||||||
|                                          memory.GetMemoryWin32HandleKHR()); |  | ||||||
|         } |  | ||||||
|         return owning_opengl_handle; |  | ||||||
|     } |  | ||||||
| #elif __unix__ |  | ||||||
|     [[nodiscard]] u32 ExportOpenGLHandle() { |  | ||||||
|         if (!owning_opengl_handle) { |  | ||||||
|             glCreateMemoryObjectsEXT(1, &owning_opengl_handle); |  | ||||||
|             glImportMemoryFdEXT(owning_opengl_handle, allocation_size, GL_HANDLE_TYPE_OPAQUE_FD_EXT, |  | ||||||
|                                 memory.GetMemoryFdKHR()); |  | ||||||
|         } |  | ||||||
|         return owning_opengl_handle; |  | ||||||
|     } |  | ||||||
| #else |  | ||||||
|     [[nodiscard]] u32 ExportOpenGLHandle() { |  | ||||||
|         return 0; |  | ||||||
|     } |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|     /// Returns whether this allocation is compatible with the arguments. |     /// Returns whether this allocation is compatible with the arguments. | ||||||
|     [[nodiscard]] bool IsCompatible(VkMemoryPropertyFlags flags, u32 type_mask) const { |     [[nodiscard]] bool IsCompatible(VkMemoryPropertyFlags flags, u32 type_mask) const { | ||||||
|         return (flags & property_flags) == flags && (type_mask & shifted_memory_type) != 0; |         return (flags & property_flags) == flags && (type_mask & shifted_memory_type) != 0; | ||||||
| @@ -182,9 +136,6 @@ private: | |||||||
|     const u32 shifted_memory_type;              ///< Shifted Vulkan memory type. |     const u32 shifted_memory_type;              ///< Shifted Vulkan memory type. | ||||||
|     std::vector<Range> commits;                 ///< All commit ranges done from this allocation. |     std::vector<Range> commits;                 ///< All commit ranges done from this allocation. | ||||||
|     std::span<u8> memory_mapped_span; ///< Memory mapped span. Empty if not queried before. |     std::span<u8> memory_mapped_span; ///< Memory mapped span. Empty if not queried before. | ||||||
| #if defined(_WIN32) || defined(__unix__) |  | ||||||
|     u32 owning_opengl_handle{}; ///< Owning OpenGL memory object handle. |  | ||||||
| #endif |  | ||||||
| }; | }; | ||||||
|  |  | ||||||
| MemoryCommit::MemoryCommit(MemoryAllocation* allocation_, VkDeviceMemory memory_, u64 begin_, | MemoryCommit::MemoryCommit(MemoryAllocation* allocation_, VkDeviceMemory memory_, u64 begin_, | ||||||
| @@ -216,19 +167,14 @@ std::span<u8> MemoryCommit::Map() { | |||||||
|     return span; |     return span; | ||||||
| } | } | ||||||
|  |  | ||||||
| u32 MemoryCommit::ExportOpenGLHandle() const { |  | ||||||
|     return allocation->ExportOpenGLHandle(); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| void MemoryCommit::Release() { | void MemoryCommit::Release() { | ||||||
|     if (allocation) { |     if (allocation) { | ||||||
|         allocation->Free(begin); |         allocation->Free(begin); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| MemoryAllocator::MemoryAllocator(const Device& device_, bool export_allocations_) | MemoryAllocator::MemoryAllocator(const Device& device_) | ||||||
|     : device{device_}, properties{device_.GetPhysical().GetMemoryProperties().memoryProperties}, |     : device{device_}, properties{device_.GetPhysical().GetMemoryProperties().memoryProperties}, | ||||||
|       export_allocations{export_allocations_}, |  | ||||||
|       buffer_image_granularity{ |       buffer_image_granularity{ | ||||||
|           device_.GetPhysical().GetProperties().limits.bufferImageGranularity} {} |           device_.GetPhysical().GetProperties().limits.bufferImageGranularity} {} | ||||||
|  |  | ||||||
| @@ -271,7 +217,7 @@ bool MemoryAllocator::TryAllocMemory(VkMemoryPropertyFlags flags, u32 type_mask, | |||||||
|     const u32 type = FindType(flags, type_mask).value(); |     const u32 type = FindType(flags, type_mask).value(); | ||||||
|     vk::DeviceMemory memory = device.GetLogical().TryAllocateMemory({ |     vk::DeviceMemory memory = device.GetLogical().TryAllocateMemory({ | ||||||
|         .sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO, |         .sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO, | ||||||
|         .pNext = export_allocations ? &EXPORT_ALLOCATE_INFO : nullptr, |         .pNext = nullptr, | ||||||
|         .allocationSize = size, |         .allocationSize = size, | ||||||
|         .memoryTypeIndex = type, |         .memoryTypeIndex = type, | ||||||
|     }); |     }); | ||||||
|   | |||||||
| @@ -41,9 +41,6 @@ public: | |||||||
|     /// It will map the backing allocation if it hasn't been mapped before. |     /// It will map the backing allocation if it hasn't been mapped before. | ||||||
|     std::span<u8> Map(); |     std::span<u8> Map(); | ||||||
|  |  | ||||||
|     /// Returns an non-owning OpenGL handle, creating one if it doesn't exist. |  | ||||||
|     u32 ExportOpenGLHandle() const; |  | ||||||
|  |  | ||||||
|     /// Returns the Vulkan memory handler. |     /// Returns the Vulkan memory handler. | ||||||
|     VkDeviceMemory Memory() const { |     VkDeviceMemory Memory() const { | ||||||
|         return memory; |         return memory; | ||||||
| @@ -74,11 +71,10 @@ public: | |||||||
|      * Construct memory allocator |      * Construct memory allocator | ||||||
|      * |      * | ||||||
|      * @param device_             Device to allocate from |      * @param device_             Device to allocate from | ||||||
|      * @param export_allocations_ True when allocations have to be exported |  | ||||||
|      * |      * | ||||||
|      * @throw vk::Exception on failure |      * @throw vk::Exception on failure | ||||||
|      */ |      */ | ||||||
|     explicit MemoryAllocator(const Device& device_, bool export_allocations_); |     explicit MemoryAllocator(const Device& device_); | ||||||
|     ~MemoryAllocator(); |     ~MemoryAllocator(); | ||||||
|  |  | ||||||
|     MemoryAllocator& operator=(const MemoryAllocator&) = delete; |     MemoryAllocator& operator=(const MemoryAllocator&) = delete; | ||||||
| @@ -119,7 +115,6 @@ private: | |||||||
|  |  | ||||||
|     const Device& device;                                       ///< Device handle. |     const Device& device;                                       ///< Device handle. | ||||||
|     const VkPhysicalDeviceMemoryProperties properties;          ///< Physical device properties. |     const VkPhysicalDeviceMemoryProperties properties;          ///< Physical device properties. | ||||||
|     const bool export_allocations; ///< True when memory allocations have to be exported. |  | ||||||
|     std::vector<std::unique_ptr<MemoryAllocation>> allocations; ///< Current allocations. |     std::vector<std::unique_ptr<MemoryAllocation>> allocations; ///< Current allocations. | ||||||
|     VkDeviceSize buffer_image_granularity; // The granularity for adjacent offsets between buffers |     VkDeviceSize buffer_image_granularity; // The granularity for adjacent offsets between buffers | ||||||
|                                            // and optimal images |                                            // and optimal images | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user