179 lines
4.4 KiB
C++
179 lines
4.4 KiB
C++
#ifndef INITIALIZERS_H
|
|
#define INITIALIZERS_H
|
|
// Normal header
|
|
#include "types.h"
|
|
|
|
namespace vkinit {
|
|
VkCommandPoolCreateInfo commandPoolCreateInfo(
|
|
uint32_t queueFamilyIndex,
|
|
VkCommandPoolCreateFlags flags = 0
|
|
);
|
|
|
|
VkCommandBufferAllocateInfo commandBufferAllocateInfo(
|
|
VkCommandPool pool,
|
|
uint32_t count
|
|
);
|
|
|
|
VkFenceCreateInfo fenceCreateInfo(
|
|
VkFenceCreateFlags flags = 0
|
|
);
|
|
|
|
VkSemaphoreCreateInfo semaphoreCreateInfo (
|
|
VkSemaphoreCreateFlags flags = 0
|
|
);
|
|
|
|
VkCommandBufferBeginInfo commandBufferBeginInfo (
|
|
VkCommandBufferUsageFlags flags = 0
|
|
);
|
|
|
|
VkImageSubresourceRange imageSubresourceRange(
|
|
VkImageAspectFlags aspectMask
|
|
);
|
|
VkSemaphoreSubmitInfo semaphoreSubmitInfo(
|
|
VkPipelineStageFlags2 stageMask,
|
|
VkSemaphore semaphore
|
|
);
|
|
|
|
VkCommandBufferSubmitInfo commandBufferSubmitInfo (
|
|
VkCommandBuffer cmd
|
|
);
|
|
|
|
VkSubmitInfo2 submitInfo(
|
|
VkCommandBufferSubmitInfo* cmd,
|
|
VkSemaphoreSubmitInfo* signalSemaphoreInfo,
|
|
VkSemaphoreSubmitInfo* waitSemaphoreInfo
|
|
);
|
|
}
|
|
|
|
|
|
#endif
|
|
|
|
#ifdef INITIALIZERS_IMPL
|
|
#ifndef INITIALIZERS_IMPL_H
|
|
#define INITIALIZERS_IMPL_H
|
|
// Implementation
|
|
namespace vkinit {
|
|
VkCommandPoolCreateInfo commandPoolCreateInfo(
|
|
uint32_t queueFamilyIndex,
|
|
VkCommandPoolCreateFlags flags
|
|
) {
|
|
VkCommandPoolCreateInfo info = {};
|
|
info.sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO;
|
|
info.pNext = nullptr;
|
|
info.queueFamilyIndex = queueFamilyIndex;
|
|
info.flags = flags;
|
|
return info;
|
|
}
|
|
|
|
VkCommandBufferAllocateInfo commandBufferAllocateInfo(
|
|
VkCommandPool pool,
|
|
uint32_t count
|
|
) {
|
|
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 fenceCreateInfo(
|
|
VkFenceCreateFlags flags /*= 0 */
|
|
) {
|
|
VkFenceCreateInfo info = {};
|
|
info.sType = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO;
|
|
info.pNext = nullptr;
|
|
|
|
info.flags = flags;
|
|
|
|
return info;
|
|
}
|
|
|
|
VkSemaphoreCreateInfo semaphoreCreateInfo (
|
|
VkSemaphoreCreateFlags flags /*= 0*/
|
|
) {
|
|
VkSemaphoreCreateInfo info = {};
|
|
info.sType = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO;
|
|
info.pNext = nullptr;
|
|
info.flags = flags;
|
|
|
|
return info;
|
|
}
|
|
|
|
VkCommandBufferBeginInfo commandBufferBeginInfo (
|
|
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 imageSubresourceRange(
|
|
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 semaphoreSubmitInfo(
|
|
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 commandBufferSubmitInfo (
|
|
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 submitInfo(
|
|
VkCommandBufferSubmitInfo* cmd,
|
|
VkSemaphoreSubmitInfo* signalSemaphoreInfo,
|
|
VkSemaphoreSubmitInfo* waitSemaphoreInfo
|
|
) {
|
|
VkSubmitInfo2 info = {};
|
|
info.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO;
|
|
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;
|
|
}
|
|
}
|
|
#endif
|
|
#endif
|