150 lines
4.1 KiB
C++
150 lines
4.1 KiB
C++
#include <vk_initializers.h>
|
|
|
|
VkCommandPoolCreateInfo vkinit::command_pool_create_info(uint32_t queueFamilyIndex,
|
|
VkCommandPoolCreateFlags flags /*= 0*/)
|
|
{
|
|
VkCommandPoolCreateInfo info = {};
|
|
info.sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO;
|
|
info.pNext = nullptr;
|
|
info.queueFamilyIndex = queueFamilyIndex;
|
|
info.flags = flags;
|
|
return info;
|
|
}
|
|
|
|
|
|
VkCommandBufferAllocateInfo vkinit::command_buffer_allocate_info(
|
|
VkCommandPool pool, uint32_t count /*= 1*/)
|
|
{
|
|
VkCommandBufferAllocateInfo info = {};
|
|
info.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO;
|
|
info.pNext = nullptr;
|
|
|
|
info.commandPool = pool;
|
|
info.commandBufferCount = count;
|
|
info.level = VK_COMMAND_BUFFER_LEVEL_PRIMARY;
|
|
return info;
|
|
}
|
|
|
|
VkFenceCreateInfo vkinit::fence_create_info(VkFenceCreateFlags flags /*=0*/)
|
|
{
|
|
VkFenceCreateInfo info = {};
|
|
info.sType = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO;
|
|
info.pNext = nullptr;
|
|
info.flags = flags;
|
|
return info;
|
|
}
|
|
|
|
VkSemaphoreCreateInfo vkinit::semaphore_create_info(VkSemaphoreCreateFlags flags/*=0*/)
|
|
{
|
|
VkSemaphoreCreateInfo info = {};
|
|
info.sType = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO;
|
|
info.pNext = nullptr;
|
|
info.flags = flags;
|
|
return info;
|
|
}
|
|
|
|
VkCommandBufferBeginInfo vkinit::command_buffer_begin_info(VkCommandBufferUsageFlags flags /*= 0*/)
|
|
{
|
|
VkCommandBufferBeginInfo info = {};
|
|
info.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;
|
|
info.pNext = nullptr;
|
|
|
|
info.pInheritanceInfo = nullptr;
|
|
info.flags = flags;
|
|
return info;
|
|
}
|
|
|
|
VkImageSubresourceRange vkinit::image_subresource_range(VkImageAspectFlags aspectMask)
|
|
{
|
|
VkImageSubresourceRange subImage {};
|
|
subImage.aspectMask = aspectMask;
|
|
subImage.baseMipLevel = 0;
|
|
subImage.levelCount = VK_REMAINING_MIP_LEVELS;
|
|
subImage.baseArrayLayer = 0;
|
|
subImage.layerCount = VK_REMAINING_ARRAY_LAYERS;
|
|
|
|
return subImage;
|
|
}
|
|
|
|
VkSemaphoreSubmitInfo vkinit::semaphore_submit_info(VkPipelineStageFlags2 stageMask, VkSemaphore semaphore)
|
|
{
|
|
VkSemaphoreSubmitInfo submitInfo{};
|
|
submitInfo.sType = VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO;
|
|
submitInfo.pNext = nullptr;
|
|
submitInfo.semaphore = semaphore;
|
|
submitInfo.stageMask = stageMask;
|
|
submitInfo.deviceIndex = 0;
|
|
submitInfo.value = 1;
|
|
|
|
return submitInfo;
|
|
}
|
|
|
|
VkCommandBufferSubmitInfo vkinit::command_buffer_submit_info(VkCommandBuffer cmd)
|
|
{
|
|
VkCommandBufferSubmitInfo info{};
|
|
info.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO;
|
|
info.pNext = nullptr;
|
|
info.commandBuffer = cmd;
|
|
info.deviceMask = 0;
|
|
|
|
return info;
|
|
}
|
|
|
|
VkSubmitInfo2 vkinit::submit_info(VkCommandBufferSubmitInfo* cmd, VkSemaphoreSubmitInfo* signalSemaphoreInfo,
|
|
VkSemaphoreSubmitInfo* waitSemaphoreInfo)
|
|
{
|
|
VkSubmitInfo2 info = {};
|
|
info.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO_2;
|
|
info.pNext = nullptr;
|
|
|
|
info.waitSemaphoreInfoCount = waitSemaphoreInfo == nullptr ? 0 : 1;
|
|
info.pWaitSemaphoreInfos = waitSemaphoreInfo;
|
|
|
|
info.signalSemaphoreInfoCount = signalSemaphoreInfo == nullptr ? 0 : 1;
|
|
info.pSignalSemaphoreInfos = signalSemaphoreInfo;
|
|
|
|
info.commandBufferInfoCount = 1;
|
|
info.pCommandBufferInfos = cmd;
|
|
|
|
return info;
|
|
}
|
|
|
|
VkImageCreateInfo vkinit::image_create_info(VkFormat format, VkImageUsageFlags usageFlags, VkExtent3D extent)
|
|
{
|
|
VkImageCreateInfo info{};
|
|
info.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO;
|
|
info.pNext = nullptr;
|
|
|
|
info.imageType = VK_IMAGE_TYPE_2D;
|
|
|
|
info.format = format;
|
|
info.extent = extent;
|
|
|
|
info.mipLevels = 1;
|
|
info.arrayLayers = 1;
|
|
|
|
info.samples = VK_SAMPLE_COUNT_1_BIT;
|
|
|
|
info.tiling = VK_IMAGE_TILING_OPTIMAL;
|
|
info.usage = usageFlags;
|
|
|
|
return info;
|
|
}
|
|
|
|
VkImageViewCreateInfo vkinit::imageview_create_info(VkFormat format, VkImage image, VkImageAspectFlags aspectFlags)
|
|
{
|
|
VkImageViewCreateInfo info{};
|
|
info.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO;
|
|
info.pNext = nullptr;
|
|
|
|
info.viewType = VK_IMAGE_VIEW_TYPE_2D;
|
|
info.image = image;
|
|
info.format = format;
|
|
info.subresourceRange.baseMipLevel = 0;
|
|
info.subresourceRange.levelCount = 1;
|
|
info.subresourceRange.baseArrayLayer = 0;
|
|
info.subresourceRange.layerCount = 1;
|
|
info.subresourceRange.aspectMask = aspectFlags;
|
|
|
|
return info;
|
|
}
|