diff options
Diffstat (limited to 'src/vulkan_helper.h')
-rw-r--r-- | src/vulkan_helper.h | 118 |
1 files changed, 0 insertions, 118 deletions
diff --git a/src/vulkan_helper.h b/src/vulkan_helper.h deleted file mode 100644 index 04fcead..0000000 --- a/src/vulkan_helper.h +++ /dev/null @@ -1,118 +0,0 @@ -#pragma once - -#include <memory> -#include <vulkan/vulkan_core.h> -#include <vulkan/vk_enum_string_helper.h> -#include <vk_mem_alloc.h> -#include <spdlog/spdlog.h> - -#include <cstdint> -#include <vector> -#include <string> - -#define CHECK_VULKAN(result) \ - do { \ - VkResult res = result; \ - if (res != VK_SUCCESS) { \ - spdlog::error("Vulkan error: {}", string_VkResult(res)); \ - abort(); \ - } \ - } while (0) - -namespace iris { - -struct Buffer_t { - VkBuffer buffer; - VkDevice device; - VmaAllocator allocator; - VmaAllocation allocation; - VkBufferUsageFlags flags; - VkDeviceSize size; - void *mapped_data = nullptr; - - void* map(); - void unmap(); - void release(); - ~Buffer_t() { release(); } -}; - -typedef std::shared_ptr<Buffer_t> Buffer; - -struct Texture2D_t { - VkImage image; - VkDevice device; - VmaAllocator allocator; - VmaAllocation allocation; - VkImageView image_view; - VkImageLayout layout; - - VkImageUsageFlags flags; - VkExtent2D extent; - - void release(); - ~Texture2D_t() { release(); } -}; - -typedef std::shared_ptr<Texture2D_t> Texture2D; - -// This is a really brute-force implementation, -// every command pool contains only 1 command buffer -struct CommandBuffer { - VkDevice device; - VkCommandPool pool; - VkCommandBuffer buffer; - VkFence fence; - VkQueue queue; - - CommandBuffer(VkDevice device, uint32_t queue_family_index, VkQueue queue); - void release(); - void begin(VkCommandBufferUsageFlags flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT); - void submit_sync(); - ~CommandBuffer() { release(); } -}; - -struct Device { - VkInstance instance; - VkPhysicalDevice physical_device; - VkDevice device; - uint32_t main_queue_family_index; - VkQueue graphics_queue; - VmaAllocator allocator; -#ifdef USE_VULKAN_VALIDATION_LAYERS - VkDebugReportCallbackEXT debugReportCallback; - VkDebugUtilsMessengerEXT debugUtilsMessenger; -#endif - - Device() = delete; - Device( - std::vector<std::string> layers, - std::vector<std::string> instance_extensions); - void destroy(); - - Buffer create_buffer( - VkDeviceSize size, - VkBufferUsageFlags usage, - VmaAllocationCreateInfo create_info = { - .usage = VMA_MEMORY_USAGE_AUTO, - }); - - Texture2D create_texture( - VkExtent2D extent, - VkFormat format, - VkImageUsageFlags usage, - VmaAllocationCreateInfo create_info = { - .usage = VMA_MEMORY_USAGE_AUTO, - }); - - Texture2D create_texture_from_image( - const char* filename, - VkFormat format, - VkImageUsageFlags usage, - VmaAllocationCreateInfo create_info = { - .usage = VMA_MEMORY_USAGE_AUTO, - }); - - CommandBuffer create_command_buffer(); -}; - -} // namespace iris
\ No newline at end of file |