2020-03-09 12:30:07 +01:00
|
|
|
#include "Containers/Array.h"
|
|
|
|
|
#include <vulkan/vulkan.h>
|
|
|
|
|
|
|
|
|
|
namespace Seele
|
|
|
|
|
{
|
2020-03-20 01:27:40 +01:00
|
|
|
namespace Vulkan
|
2020-03-09 12:30:07 +01:00
|
|
|
{
|
2020-03-20 01:27:40 +01:00
|
|
|
VkBool32 debugCallback(VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objType, uint64_t obj, size_t location, int32_t code, const char* layerPrefix, const char* msg, void* userData);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkResult CreateDebugReportCallbackEXT(VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback);
|
|
|
|
|
void DestroyDebugReportCallbackEXT(VkInstance instance, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT pCallback);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
namespace init
|
|
|
|
|
{
|
|
|
|
|
VkApplicationInfo ApplicationInfo(
|
|
|
|
|
const char* appName,
|
|
|
|
|
uint32_t appVersion,
|
|
|
|
|
const char* engineName,
|
|
|
|
|
uint32_t engineVersion,
|
|
|
|
|
uint32_t apiVersion);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkInstanceCreateInfo InstanceCreateInfo(
|
|
|
|
|
VkApplicationInfo* appInfo,
|
|
|
|
|
const Array<const char*>& extensions,
|
|
|
|
|
const Array<const char*>& layers);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkDebugReportCallbackCreateInfoEXT DebugReportCallbackCreateInfo(
|
|
|
|
|
VkDebugReportFlagsEXT flags);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkDeviceQueueCreateInfo DeviceQueueCreateInfo(
|
|
|
|
|
int queueFamilyIndex,
|
|
|
|
|
int queueCount);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkDeviceQueueCreateInfo DeviceQueueCreateInfo(
|
|
|
|
|
int queueFamilyIndex,
|
|
|
|
|
int queueCount,
|
|
|
|
|
float* queuePriority);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkDeviceCreateInfo DeviceCreateInfo(
|
|
|
|
|
VkDeviceQueueCreateInfo* queueInfos,
|
|
|
|
|
uint32_t queueCount,
|
|
|
|
|
VkPhysicalDeviceFeatures* features,
|
|
|
|
|
const char* const* deviceExtensions,
|
|
|
|
|
uint32_t deviceExtensionCount,
|
|
|
|
|
const char* const* layers,
|
|
|
|
|
uint32_t layerCount);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkDeviceCreateInfo DeviceCreateInfo(
|
|
|
|
|
VkDeviceQueueCreateInfo* queueInfos,
|
|
|
|
|
uint32_t queueCount,
|
|
|
|
|
VkPhysicalDeviceFeatures* features);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkSwapchainCreateInfoKHR SwapchainCreateInfo(
|
|
|
|
|
VkSurfaceKHR surface,
|
|
|
|
|
uint32_t minImageCount,
|
|
|
|
|
VkFormat imageFormat,
|
|
|
|
|
VkColorSpaceKHR colorSpace,
|
|
|
|
|
VkExtent2D extent,
|
|
|
|
|
uint32_t arrayLayers,
|
|
|
|
|
VkImageUsageFlags usage,
|
|
|
|
|
VkSurfaceTransformFlagBitsKHR Transform,
|
|
|
|
|
VkCompositeAlphaFlagBitsKHR alpha,
|
|
|
|
|
VkPresentModeKHR presentMode,
|
|
|
|
|
VkBool32 clipped);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkSwapchainCreateInfoKHR SwapchainCreateInfo(
|
|
|
|
|
VkSurfaceKHR surface,
|
|
|
|
|
uint32_t minImageCount,
|
|
|
|
|
VkFormat imageFormat,
|
|
|
|
|
VkColorSpaceKHR colorSpace,
|
|
|
|
|
uint32_t width,
|
|
|
|
|
uint32_t height,
|
|
|
|
|
uint32_t arrayLayers,
|
|
|
|
|
VkImageUsageFlags usage,
|
|
|
|
|
VkSurfaceTransformFlagBitsKHR Transform,
|
|
|
|
|
VkCompositeAlphaFlagBitsKHR alpha,
|
|
|
|
|
VkPresentModeKHR presentMode,
|
|
|
|
|
VkBool32 clipped);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkFramebufferCreateInfo FramebufferCreateInfo(
|
|
|
|
|
VkRenderPass renderPass,
|
|
|
|
|
uint32_t attachmentCount,
|
|
|
|
|
VkImageView* attachments,
|
|
|
|
|
uint32_t width,
|
|
|
|
|
uint32_t height,
|
|
|
|
|
uint32_t layers);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkAttachmentDescription AttachmentDescription(
|
|
|
|
|
VkFormat format,
|
|
|
|
|
VkSampleCountFlagBits sample,
|
|
|
|
|
VkAttachmentLoadOp loadOp,
|
|
|
|
|
VkAttachmentStoreOp storeOp,
|
|
|
|
|
VkAttachmentLoadOp stencilLoadOp,
|
|
|
|
|
VkAttachmentStoreOp stencilStoreOp,
|
|
|
|
|
VkImageLayout imageLayout,
|
|
|
|
|
VkImageLayout finalLayout);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkSubpassDescription SubpassDescription(
|
|
|
|
|
VkPipelineBindPoint bindPoint,
|
|
|
|
|
uint32_t colorAttachmentCount,
|
|
|
|
|
VkAttachmentReference* colorReference,
|
|
|
|
|
uint32_t depthAttachmentCount = 0,
|
|
|
|
|
VkAttachmentReference* depthReference = nullptr,
|
|
|
|
|
uint32_t inputAttachmentCount = 0,
|
|
|
|
|
VkAttachmentReference* inputReference = nullptr,
|
|
|
|
|
uint32_t resolveAttachmentCount = 0,
|
|
|
|
|
VkAttachmentReference* resolveReference = nullptr,
|
|
|
|
|
uint32_t preserveAttachmentCount = 0,
|
|
|
|
|
VkAttachmentReference* preserveReference = nullptr);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkRenderPassCreateInfo RenderPassCreateInfo(
|
|
|
|
|
uint32_t attachmentCount,
|
|
|
|
|
const VkAttachmentDescription* attachments,
|
|
|
|
|
uint32_t subpassCount,
|
|
|
|
|
const VkSubpassDescription* subpasses,
|
|
|
|
|
uint32_t dependencyCount,
|
|
|
|
|
const VkSubpassDependency* subpassDependencies);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkMemoryAllocateInfo MemoryAllocateInfo();
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkCommandBufferAllocateInfo CommandBufferAllocateInfo(
|
|
|
|
|
VkCommandPool cmdPool,
|
|
|
|
|
VkCommandBufferLevel level,
|
|
|
|
|
uint32_t bufferCount);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkCommandPoolCreateInfo CommandPoolCreateInfo();
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkCommandBufferBeginInfo CommandBufferBeginInfo();
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkCommandBufferInheritanceInfo CommandBufferInheritanceInfo();
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkRenderPassBeginInfo RenderPassBeginInfo();
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkRenderPassCreateInfo RenderPassCreateInfo();
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkImageMemoryBarrier ImageMemoryBarrier(VkImage image, VkImageLayout oldLayout, VkImageLayout newLayout, uint32_t srcQueue = VK_QUEUE_FAMILY_IGNORED, uint32_t dstQueue = VK_QUEUE_FAMILY_IGNORED);
|
|
|
|
|
VkImageMemoryBarrier ImageMemoryBarrier();
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkBufferMemoryBarrier BufferMemoryBarrier();
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkMemoryBarrier MemoryBarrier();
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkImageCreateInfo ImageCreateInfo();
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkSamplerCreateInfo SamplerCreateInfo();
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkImageViewCreateInfo ImageViewCreateInfo();
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkSemaphoreCreateInfo SemaphoreCreateInfo();
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkFenceCreateInfo FenceCreateInfo(
|
|
|
|
|
VkFenceCreateFlags flags);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkEventCreateInfo EventCreateInfo();
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkSubmitInfo SubmitInfo();
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkImageSubresourceRange ImageSubresourceRange(
|
|
|
|
|
VkImageAspectFlags aspect = VK_IMAGE_ASPECT_COLOR_BIT,
|
|
|
|
|
uint32_t startMip = 0);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkViewport Viewport(
|
|
|
|
|
float width,
|
|
|
|
|
float height,
|
|
|
|
|
float minDepth,
|
|
|
|
|
float maxDepth);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkRect2D Rect2D(
|
|
|
|
|
int32_t width,
|
|
|
|
|
int32_t height,
|
|
|
|
|
int32_t offsetX,
|
|
|
|
|
int32_t offsetY);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkBufferCreateInfo BufferCreateInfo();
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkBufferCreateInfo BufferCreateInfo(
|
|
|
|
|
VkBufferUsageFlags usage,
|
|
|
|
|
VkDeviceSize size);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkDescriptorPoolCreateInfo DescriptorPoolCreateInfo(
|
|
|
|
|
uint32_t poolSizeCount,
|
|
|
|
|
VkDescriptorPoolSize* pPoolSizes,
|
|
|
|
|
uint32_t maxSets);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkDescriptorPoolSize DescriptorPoolSize(
|
|
|
|
|
VkDescriptorType type,
|
|
|
|
|
uint32_t descriptorCount);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkDescriptorSetLayoutBinding DescriptorSetLayoutBinding(
|
|
|
|
|
VkDescriptorType type,
|
|
|
|
|
VkShaderStageFlags stageFlags,
|
|
|
|
|
uint32_t binding,
|
|
|
|
|
uint32_t count);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkDescriptorSetLayoutCreateInfo DescriptorSetLayoutCreateInfo(
|
|
|
|
|
const VkDescriptorSetLayoutBinding* pBindings,
|
|
|
|
|
uint32_t bindingCount);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkPipelineLayoutCreateInfo PipelineLayoutCreateInfo(
|
|
|
|
|
const VkDescriptorSetLayout* pSetLayouts,
|
|
|
|
|
uint32_t setLayoutCount);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkDescriptorSetAllocateInfo DescriptorSetAllocateInfo(
|
|
|
|
|
VkDescriptorPool descriptorPool,
|
|
|
|
|
const VkDescriptorSetLayout* pSetLayouts,
|
|
|
|
|
uint32_t descriptorSetCount);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkDescriptorBufferInfo DescriptorBufferInfo(
|
|
|
|
|
VkBuffer buffer,
|
|
|
|
|
VkDeviceSize offset,
|
|
|
|
|
VkDeviceSize range);
|
|
|
|
|
VkDescriptorImageInfo DescriptorImageInfo(
|
|
|
|
|
VkSampler sampler,
|
|
|
|
|
VkImageView imageView,
|
|
|
|
|
VkImageLayout imageLayout);
|
|
|
|
|
|
|
|
|
|
VkWriteDescriptorSet WriteDescriptorSet(
|
|
|
|
|
VkDescriptorSet dstSet,
|
|
|
|
|
VkDescriptorType type,
|
|
|
|
|
uint32_t binding,
|
|
|
|
|
VkDescriptorBufferInfo* bufferInfo);
|
|
|
|
|
|
|
|
|
|
VkWriteDescriptorSet WriteDescriptorSet(
|
|
|
|
|
VkDescriptorSet dstSet,
|
|
|
|
|
VkDescriptorType type,
|
|
|
|
|
uint32_t binding,
|
|
|
|
|
VkDescriptorImageInfo* bufferInfo);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
|
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkVertexInputBindingDescription VertexInputBindingDescription(
|
|
|
|
|
uint32_t binding,
|
|
|
|
|
uint32_t stride,
|
|
|
|
|
VkVertexInputRate inputRate);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkVertexInputAttributeDescription VertexInputAttributeDescription(
|
|
|
|
|
uint32_t binding,
|
|
|
|
|
uint32_t location,
|
|
|
|
|
VkFormat format,
|
|
|
|
|
uint32_t offset);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkPipelineVertexInputStateCreateInfo PipelineVertexInputStateCreateInfo();
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkPipelineInputAssemblyStateCreateInfo PipelineInputAssemblyStateCreateInfo(
|
|
|
|
|
VkPrimitiveTopology topology,
|
|
|
|
|
VkPipelineInputAssemblyStateCreateFlags flags,
|
|
|
|
|
VkBool32 primitiveRestartEnable);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkPipelineRasterizationStateCreateInfo PipelineRasterizationStateCreateInfo(
|
|
|
|
|
VkPolygonMode polygonMode,
|
|
|
|
|
VkCullModeFlags cullMode,
|
|
|
|
|
VkFrontFace frontFace,
|
|
|
|
|
VkPipelineRasterizationStateCreateFlags flags);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkPipelineColorBlendAttachmentState PipelineColorBlendAttachmentState(
|
|
|
|
|
VkColorComponentFlags colorWriteMask,
|
|
|
|
|
VkBool32 blendEnable);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkPipelineColorBlendStateCreateInfo PipelineColorBlendStateCreateInfo(
|
|
|
|
|
uint32_t attachmentCount,
|
|
|
|
|
const VkPipelineColorBlendAttachmentState* pAttachments);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkPipelineDepthStencilStateCreateInfo PipelineDepthStencilStateCreateInfo(
|
|
|
|
|
VkBool32 depthTestEnable,
|
|
|
|
|
VkBool32 depthWriteEnable,
|
|
|
|
|
VkCompareOp depthCompareOp);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkPipelineViewportStateCreateInfo PipelineViewportStateCreateInfo(
|
|
|
|
|
uint32_t viewportCount,
|
|
|
|
|
uint32_t scissorCount,
|
|
|
|
|
VkPipelineViewportStateCreateFlags flags);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkPipelineMultisampleStateCreateInfo PipelineMultisampleStateCreateInfo(
|
|
|
|
|
VkSampleCountFlagBits rasterizationSamples,
|
|
|
|
|
VkPipelineMultisampleStateCreateFlags flags);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkPipelineDynamicStateCreateInfo PipelineDynamicStateCreateInfo(
|
|
|
|
|
const VkDynamicState* pDynamicStates,
|
|
|
|
|
uint32_t dynamicStateCount,
|
|
|
|
|
VkPipelineDynamicStateCreateFlags flags);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkPipelineTessellationStateCreateInfo PipelineTessellationStateCreateInfo(
|
|
|
|
|
uint32_t patchControlPoints);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkGraphicsPipelineCreateInfo PipelineCreateInfo(
|
|
|
|
|
VkPipelineLayout layout,
|
|
|
|
|
VkRenderPass renderPass,
|
|
|
|
|
VkPipelineCreateFlags flags);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkComputePipelineCreateInfo ComputePipelineCreateInfo(
|
|
|
|
|
VkPipelineLayout layout,
|
|
|
|
|
VkPipelineCreateFlags flags);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkPushConstantRange PushConstantRange(
|
|
|
|
|
VkShaderStageFlags stageFlags,
|
|
|
|
|
uint32_t size,
|
|
|
|
|
uint32_t offset);
|
2020-03-09 12:30:07 +01:00
|
|
|
|
2020-03-20 01:27:40 +01:00
|
|
|
VkPipelineShaderStageCreateInfo PipelineShaderStageCreateInfo(
|
|
|
|
|
VkShaderStageFlagBits stage,
|
|
|
|
|
VkShaderModule module,
|
|
|
|
|
const char* entryName);
|
|
|
|
|
}
|
2020-03-09 12:30:07 +01:00
|
|
|
}
|
2020-03-20 01:27:40 +01:00
|
|
|
}
|