Skip to content
Snippets Groups Projects
Unverified Commit 704bca47 authored by TheJackiMonster's avatar TheJackiMonster
Browse files

[#59] Added VMA C++ bindings

parent 569f52fd
No related branches found
No related tags found
1 merge request!76Resolve "Memory-Allocator"
Pipeline #26300 failed
...@@ -25,3 +25,6 @@ ...@@ -25,3 +25,6 @@
[submodule "lib/VulkanMemoryAllocator"] [submodule "lib/VulkanMemoryAllocator"]
path = lib/VulkanMemoryAllocator path = lib/VulkanMemoryAllocator
url = https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git url = https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git
[submodule "lib/VulkanMemoryAllocator-Hpp"]
path = lib/VulkanMemoryAllocator-Hpp
url = https://github.com/malte-v/VulkanMemoryAllocator-Hpp.git
...@@ -10,7 +10,7 @@ else() ...@@ -10,7 +10,7 @@ else()
add_subdirectory(${vkcv_lib}/glfw) add_subdirectory(${vkcv_lib}/glfw)
list(APPEND vkcv_libraries glfw) list(APPEND vkcv_libraries glfw)
list(APPEND vkcv_includes ${vkcv_lib}/glfw/include) list(APPEND vkcv_includes ${vkcv_lib_path}/glfw/include)
message(${vkcv_config_msg} " GLFW - " ${glfw3_VERSION}) message(${vkcv_config_msg} " GLFW - " ${glfw3_VERSION})
else() else()
......
...@@ -25,7 +25,7 @@ else() ...@@ -25,7 +25,7 @@ else()
add_subdirectory(${vkcv_lib}/SPIRV-Cross) add_subdirectory(${vkcv_lib}/SPIRV-Cross)
list(APPEND vkcv_libraries spirv-cross-cpp) list(APPEND vkcv_libraries spirv-cross-cpp)
list(APPEND vkcv_includes ${vkcv_lib}/SPIV-Cross/include) list(APPEND vkcv_includes ${vkcv_lib_path}/SPIV-Cross/include)
message(${vkcv_config_msg} " SPIRV Cross - " ${SPIRV_CROSS_VERSION}) message(${vkcv_config_msg} " SPIRV Cross - " ${SPIRV_CROSS_VERSION})
else() else()
......
if (EXISTS "${vkcv_lib_path}/VulkanMemoryAllocator") if ((EXISTS "${vkcv_lib_path}/VulkanMemoryAllocator") AND
(EXISTS "${vkcv_lib_path}/VulkanMemoryAllocator-Hpp"))
add_subdirectory(${vkcv_lib}/VulkanMemoryAllocator) add_subdirectory(${vkcv_lib}/VulkanMemoryAllocator)
list(APPEND vkcv_libraries VulkanMemoryAllocator) list(APPEND vkcv_libraries VulkanMemoryAllocator)
list(APPEND vkcv_includes ${vkcv_lib}/VulkanMemoryAllocator/include) list(APPEND vkcv_includes ${vkcv_lib_path}/VulkanMemoryAllocator-Hpp)
message(${vkcv_config_msg} " VMA - ") message(${vkcv_config_msg} " VMA - ")
else() else()
......
#pragma once #pragma once
#include <vulkan/vulkan.hpp> #include <vulkan/vulkan.hpp>
#include <vk_mem_alloc.h> #include <vk_mem_alloc.hpp>
#include "QueueManager.hpp" #include "QueueManager.hpp"
...@@ -35,7 +35,7 @@ namespace vkcv ...@@ -35,7 +35,7 @@ namespace vkcv
const QueueManager& getQueueManager() const; const QueueManager& getQueueManager() const;
[[nodiscard]] [[nodiscard]]
const VmaAllocator& getAllocator() const; const vma::Allocator& getAllocator() const;
static Context create(const char *applicationName, static Context create(const char *applicationName,
uint32_t applicationVersion, uint32_t applicationVersion,
...@@ -52,13 +52,13 @@ namespace vkcv ...@@ -52,13 +52,13 @@ namespace vkcv
* @param device Vulkan-Device * @param device Vulkan-Device
*/ */
Context(vk::Instance instance, vk::PhysicalDevice physicalDevice, vk::Device device, Context(vk::Instance instance, vk::PhysicalDevice physicalDevice, vk::Device device,
QueueManager&& queueManager, VmaAllocator& allocator) noexcept; QueueManager&& queueManager, vma::Allocator&& allocator) noexcept;
vk::Instance m_Instance; vk::Instance m_Instance;
vk::PhysicalDevice m_PhysicalDevice; vk::PhysicalDevice m_PhysicalDevice;
vk::Device m_Device; vk::Device m_Device;
QueueManager m_QueueManager; QueueManager m_QueueManager;
VmaAllocator m_Allocator; vma::Allocator m_Allocator;
}; };
} }
Subproject commit eae6e8d3bd4593e0d7071c85fba2a8f33fbe5dab
...@@ -38,7 +38,7 @@ namespace vkcv ...@@ -38,7 +38,7 @@ namespace vkcv
vk::PhysicalDevice physicalDevice, vk::PhysicalDevice physicalDevice,
vk::Device device, vk::Device device,
QueueManager&& queueManager, QueueManager&& queueManager,
VmaAllocator& allocator) noexcept : vma::Allocator&& allocator) noexcept :
m_Instance(instance), m_Instance(instance),
m_PhysicalDevice(physicalDevice), m_PhysicalDevice(physicalDevice),
m_Device(device), m_Device(device),
...@@ -48,10 +48,7 @@ namespace vkcv ...@@ -48,10 +48,7 @@ namespace vkcv
Context::~Context() noexcept Context::~Context() noexcept
{ {
if (m_Allocator) { m_Allocator.destroy();
vmaDestroyAllocator(m_Allocator);
}
m_Device.destroy(); m_Device.destroy();
m_Instance.destroy(); m_Instance.destroy();
} }
...@@ -75,7 +72,7 @@ namespace vkcv ...@@ -75,7 +72,7 @@ namespace vkcv
return m_QueueManager; return m_QueueManager;
} }
const VmaAllocator& Context::getAllocator() const { const vma::Allocator& Context::getAllocator() const {
return m_Allocator; return m_Allocator;
} }
...@@ -311,18 +308,30 @@ namespace vkcv ...@@ -311,18 +308,30 @@ namespace vkcv
queuePairsTransfer queuePairsTransfer
); );
VmaAllocatorCreateInfo allocatorCreateInfo = {}; const vma::AllocatorCreateInfo allocatorCreateInfo (
allocatorCreateInfo.physicalDevice = physicalDevice; vma::AllocatorCreateFlags(),
allocatorCreateInfo.instance = instance; physicalDevice,
allocatorCreateInfo.device = device; device,
allocatorCreateInfo.vulkanApiVersion = VK_HEADER_VERSION_COMPLETE; 0,
nullptr,
nullptr,
0,
nullptr,
nullptr,
nullptr,
instance,
VK_HEADER_VERSION_COMPLETE
);
VmaAllocator allocator; vma::Allocator allocator = vma::createAllocator(allocatorCreateInfo);
if (VK_SUCCESS != vmaCreateAllocator(&allocatorCreateInfo, &allocator)) {
allocator = nullptr;
}
return Context(instance, physicalDevice, device, std::move(queueManager), allocator); return Context(
instance,
physicalDevice,
device,
std::move(queueManager),
std::move(allocator)
);
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment