// vulkan_engine.h : Include file for standard system include files, // or project specific include files. #pragma once #include namespace vkinit { //> init_cmd VkCommandPoolCreateInfo command_pool_create_info(uint32_t queueFamilyIndex, VkCommandPoolCreateFlags flags = 0); VkCommandBufferAllocateInfo command_buffer_allocate_info(VkCommandPool pool, uint32_t count = 1); //< init_cmd VkCommandBufferBeginInfo command_buffer_begin_info(VkCommandBufferUsageFlags flags = 0); VkCommandBufferSubmitInfo command_buffer_submit_info(VkCommandBuffer cmd); VkFenceCreateInfo fence_create_info(VkFenceCreateFlags flags = 0); VkSemaphoreCreateInfo semaphore_create_info(VkSemaphoreCreateFlags flags = 0); VkSubmitInfo2 submit_info(VkCommandBufferSubmitInfo *cmd, VkSemaphoreSubmitInfo *signalSemaphoreInfo, VkSemaphoreSubmitInfo *waitSemaphoreInfo); VkPresentInfoKHR present_info(); VkRenderingAttachmentInfo attachment_info(VkImageView view, VkClearValue *clear, VkImageLayout layout /*= VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL*/); VkRenderingAttachmentInfo depth_attachment_info(VkImageView view, VkImageLayout layout /*= VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL*/); VkRenderingInfo rendering_info(VkExtent2D renderExtent, VkRenderingAttachmentInfo *colorAttachment, VkRenderingAttachmentInfo *depthAttachment); VkRenderingInfo rendering_info_multi(VkExtent2D renderExtent, uint32_t colorCount, VkRenderingAttachmentInfo *colorAttachments, VkRenderingAttachmentInfo *depthAttachment); VkImageSubresourceRange image_subresource_range(VkImageAspectFlags aspectMask); VkSemaphoreSubmitInfo semaphore_submit_info(VkPipelineStageFlags2 stageMask, VkSemaphore semaphore); VkDescriptorSetLayoutBinding descriptorset_layout_binding(VkDescriptorType type, VkShaderStageFlags stageFlags, uint32_t binding); VkDescriptorSetLayoutCreateInfo descriptorset_layout_create_info(VkDescriptorSetLayoutBinding *bindings, uint32_t bindingCount); VkWriteDescriptorSet write_descriptor_image(VkDescriptorType type, VkDescriptorSet dstSet, VkDescriptorImageInfo *imageInfo, uint32_t binding); VkWriteDescriptorSet write_descriptor_buffer(VkDescriptorType type, VkDescriptorSet dstSet, VkDescriptorBufferInfo *bufferInfo, uint32_t binding); VkDescriptorBufferInfo buffer_info(VkBuffer buffer, VkDeviceSize offset, VkDeviceSize range); VkImageCreateInfo image_create_info(VkFormat format, VkImageUsageFlags usageFlags, VkExtent3D extent); VkImageViewCreateInfo imageview_create_info(VkFormat format, VkImage image, VkImageAspectFlags aspectFlags); // Overload: explicit mip/array counts and image flags (e.g., cube compatible) VkImageCreateInfo image_create_info(VkFormat format, VkImageUsageFlags usageFlags, VkExtent3D extent, uint32_t mipLevels, uint32_t arrayLayers, VkImageCreateFlags flags); // Overload: explicit view type and subresource counts for layered/cubemap views VkImageViewCreateInfo imageview_create_info(VkImageViewType viewType, VkFormat format, VkImage image, VkImageAspectFlags aspectFlags, uint32_t baseMipLevel, uint32_t levelCount, uint32_t baseArrayLayer, uint32_t layerCount); VkPipelineLayoutCreateInfo pipeline_layout_create_info(); VkPipelineShaderStageCreateInfo pipeline_shader_stage_create_info(VkShaderStageFlagBits stage, VkShaderModule shaderModule, const char *entry = "main"); } // namespace vkinit