mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-22 23:30:14 +00:00
Vulcan Nightmare
Experimentally bringing up vulcan support
This commit is contained in:
parent
863a786c48
commit
83b576e8d9
189 changed files with 12147 additions and 7820 deletions
60
include/rendering/vk_utils.hpp
Normal file
60
include/rendering/vk_utils.hpp
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
#pragma once
|
||||
|
||||
#include <vulkan/vulkan.h>
|
||||
#include <vk_mem_alloc.h>
|
||||
#include <cstdint>
|
||||
|
||||
namespace wowee {
|
||||
namespace rendering {
|
||||
|
||||
class VkContext;
|
||||
|
||||
struct AllocatedBuffer {
|
||||
VkBuffer buffer = VK_NULL_HANDLE;
|
||||
VmaAllocation allocation = VK_NULL_HANDLE;
|
||||
VmaAllocationInfo info{};
|
||||
};
|
||||
|
||||
struct AllocatedImage {
|
||||
VkImage image = VK_NULL_HANDLE;
|
||||
VmaAllocation allocation = VK_NULL_HANDLE;
|
||||
VkImageView imageView = VK_NULL_HANDLE;
|
||||
VkExtent2D extent{};
|
||||
VkFormat format = VK_FORMAT_UNDEFINED;
|
||||
};
|
||||
|
||||
// Buffer creation
|
||||
AllocatedBuffer createBuffer(VmaAllocator allocator, VkDeviceSize size,
|
||||
VkBufferUsageFlags usage, VmaMemoryUsage memoryUsage);
|
||||
|
||||
void destroyBuffer(VmaAllocator allocator, AllocatedBuffer& buffer);
|
||||
|
||||
// Image creation
|
||||
AllocatedImage createImage(VkDevice device, VmaAllocator allocator,
|
||||
uint32_t width, uint32_t height, VkFormat format,
|
||||
VkImageUsageFlags usage, VkSampleCountFlagBits samples = VK_SAMPLE_COUNT_1_BIT,
|
||||
uint32_t mipLevels = 1);
|
||||
|
||||
void destroyImage(VkDevice device, VmaAllocator allocator, AllocatedImage& image);
|
||||
|
||||
// Image layout transitions
|
||||
void transitionImageLayout(VkCommandBuffer cmd, VkImage image,
|
||||
VkImageLayout oldLayout, VkImageLayout newLayout,
|
||||
VkPipelineStageFlags srcStage = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT,
|
||||
VkPipelineStageFlags dstStage = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT);
|
||||
|
||||
// Staging upload helper — copies CPU data to a GPU-local buffer
|
||||
AllocatedBuffer uploadBuffer(VkContext& ctx, const void* data, VkDeviceSize size,
|
||||
VkBufferUsageFlags usage);
|
||||
|
||||
// Check VkResult and log on failure
|
||||
inline bool vkCheck(VkResult result, const char* msg) {
|
||||
if (result != VK_SUCCESS) {
|
||||
// Caller should log the message
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace rendering
|
||||
} // namespace wowee
|
||||
Loading…
Add table
Add a link
Reference in a new issue