Skip to content
Snippets Groups Projects
Verified Commit 461a41b5 authored by Tobias Frisch's avatar Tobias Frisch
Browse files

[#59] Added VMA C++ bindings

parent 569f52fd
No related branches found
No related tags found
No related merge requests found
......@@ -25,3 +25,6 @@
[submodule "lib/VulkanMemoryAllocator"]
path = lib/VulkanMemoryAllocator
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()
add_subdirectory(${vkcv_lib}/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})
else()
......
......@@ -25,7 +25,7 @@ else()
add_subdirectory(${vkcv_lib}/SPIRV-Cross)
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})
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)
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 - ")
else()
......
#pragma once
#include <vulkan/vulkan.hpp>
#include <vk_mem_alloc.h>
#include <vk_mem_alloc.hpp>
#include "QueueManager.hpp"
......@@ -35,7 +35,7 @@ namespace vkcv
const QueueManager& getQueueManager() const;
[[nodiscard]]
const VmaAllocator& getAllocator() const;
const vma::Allocator& getAllocator() const;
static Context create(const char *applicationName,
uint32_t applicationVersion,
......@@ -52,13 +52,13 @@ namespace vkcv
* @param device Vulkan-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::PhysicalDevice m_PhysicalDevice;
vk::Device m_Device;
QueueManager m_QueueManager;
VmaAllocator m_Allocator;
vma::Allocator m_Allocator;
};
}
Subproject commit eae6e8d3bd4593e0d7071c85fba2a8f33fbe5dab
......@@ -38,7 +38,7 @@ namespace vkcv
vk::PhysicalDevice physicalDevice,
vk::Device device,
QueueManager&& queueManager,
VmaAllocator& allocator) noexcept :
vma::Allocator&& allocator) noexcept :
m_Instance(instance),
m_PhysicalDevice(physicalDevice),
m_Device(device),
......@@ -48,10 +48,7 @@ namespace vkcv
Context::~Context() noexcept
{
if (m_Allocator) {
vmaDestroyAllocator(m_Allocator);
}
m_Allocator.destroy();
m_Device.destroy();
m_Instance.destroy();
}
......@@ -75,7 +72,7 @@ namespace vkcv
return m_QueueManager;
}
const VmaAllocator& Context::getAllocator() const {
const vma::Allocator& Context::getAllocator() const {
return m_Allocator;
}
......@@ -311,18 +308,30 @@ namespace vkcv
queuePairsTransfer
);
VmaAllocatorCreateInfo allocatorCreateInfo = {};
allocatorCreateInfo.physicalDevice = physicalDevice;
allocatorCreateInfo.instance = instance;
allocatorCreateInfo.device = device;
allocatorCreateInfo.vulkanApiVersion = VK_HEADER_VERSION_COMPLETE;
const vma::AllocatorCreateInfo allocatorCreateInfo (
vma::AllocatorCreateFlags(),
physicalDevice,
device,
0,
nullptr,
nullptr,
0,
nullptr,
nullptr,
nullptr,
instance,
VK_HEADER_VERSION_COMPLETE
);
VmaAllocator allocator;
if (VK_SUCCESS != vmaCreateAllocator(&allocatorCreateInfo, &allocator)) {
allocator = nullptr;
}
vma::Allocator allocator = vma::createAllocator(allocatorCreateInfo);
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