Program Listing for File gpu_memory_buffer.hpp¶
↰ Return to documentation for file (inexor/vulkan-renderer/wrapper/gpu_memory_buffer.hpp
)
#pragma once
#include <vk_mem_alloc.h>
#include <string>
namespace inexor::vulkan_renderer::wrapper {
// Forward declaration
class Device;
class GPUMemoryBuffer {
protected:
std::string m_name;
const Device &m_device;
VkBuffer m_buffer{VK_NULL_HANDLE};
VkDeviceSize m_buffer_size{0};
VmaAllocation m_allocation{VK_NULL_HANDLE};
VmaAllocationInfo m_allocation_info{};
public:
GPUMemoryBuffer(const Device &device, const std::string &name, const VkDeviceSize &size,
const VkBufferUsageFlags &buffer_usage, const VmaMemoryUsage &memory_usage);
GPUMemoryBuffer(const Device &device, const std::string &name, const VkDeviceSize &buffer_size, const void *data,
std::size_t data_size, const VkBufferUsageFlags &buffer_usage, const VmaMemoryUsage &memory_usage);
GPUMemoryBuffer(const GPUMemoryBuffer &) = delete;
GPUMemoryBuffer(GPUMemoryBuffer &&) noexcept;
virtual ~GPUMemoryBuffer();
GPUMemoryBuffer &operator=(const GPUMemoryBuffer &) = delete;
GPUMemoryBuffer &operator=(GPUMemoryBuffer &&) = delete;
[[nodiscard]] const std::string &name() const {
return m_name;
}
[[nodiscard]] VkBuffer buffer() const {
return m_buffer;
}
[[nodiscard]] VmaAllocation allocation() const {
return m_allocation;
}
[[nodiscard]] VmaAllocationInfo allocation_info() const {
return m_allocation_info;
}
};
} // namespace inexor::vulkan_renderer::wrapper