PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier = 0; // 7.6
PFN_vkQueueWaitIdle vkQueueWaitIdle = 0; // 7.8
PFN_vkCreateRenderPass vkCreateRenderPass = 0; // 8.1
+ PFN_vkCreateRenderPass2 vkCreateRenderPass2 = 0; // 8.1
PFN_vkDestroyRenderPass vkDestroyRenderPass = 0; // 8.1
PFN_vkCreateFramebuffer vkCreateFramebuffer = 0; // 8.3
PFN_vkDestroyFramebuffer vkDestroyFramebuffer = 0; // 8.3
PFN_vkCmdEndRenderPass vkCmdEndRenderPass = 0; // 8.4
PFN_vkCreateShaderModule vkCreateShaderModule = 0; // 9.1
PFN_vkDestroyShaderModule vkDestroyShaderModule = 0; // 9.1
+ PFN_vkCreateComputePipelines vkCreateComputePipelines = 0; // 10.1
PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines = 0; // 10.2
PFN_vkDestroyPipeline vkDestroyPipeline = 0; // 10.4
PFN_vkCmdBindPipeline vkCmdBindPipeline = 0; // 10.10
PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers = 0; // 21.2
PFN_vkCmdSetViewport vkCmdSetViewport = 0; // 24.5
PFN_vkCmdSetScissor vkCmdSetScissor = 0; // 26.1
+ PFN_vkCmdDispatch vkCmdDispatch = 0; // 28
PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilities = 0; // 30.5.1
PFN_vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormats = 0; // 30.5.2
PFN_vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModes = 0; // 30.5.3
Result CreateRenderPass(const VkRenderPassCreateInfo &rCreateInfo, VkRenderPass &rRenderPass) const
{ return { vkCreateRenderPass(device, &rCreateInfo, 0, handle_cast<::VkRenderPass *>(&rRenderPass)), "vkCreateRenderPass" }; }
+ Result CreateRenderPass2(const VkRenderPassCreateInfo2 &rCreateInfo, VkRenderPass &rRenderPass) const
+ { return { vkCreateRenderPass2(device, &rCreateInfo, 0, handle_cast<::VkRenderPass *>(&rRenderPass)), "vkCreateRenderPass2" }; }
+
void DestroyRenderPass(VkRenderPass renderPass) const
{ vkDestroyRenderPass(device, handle_cast<::VkRenderPass>(renderPass), 0); }
{ vkDestroyShaderModule(device, handle_cast<::VkShaderModule>(shaderModule), 0); }
// Chapter 10: Pipelines
+ Result CreateComputePipelines(VkPipelineCache pipelineCache, std::uint32_t createInfoCount, const VkComputePipelineCreateInfo *pCreateInfos, VkPipeline *pPipelines) const
+ { return { vkCreateComputePipelines(device, handle_cast<::VkPipelineCache>(pipelineCache), createInfoCount, pCreateInfos, 0, handle_cast<::VkPipeline *>(pPipelines)), "vkCreateComputePipelines" }; }
+
Result CreateGraphicsPipelines(VkPipelineCache pipelineCache, std::uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo *pCreateInfos, VkPipeline *pPipelines) const
{ return { vkCreateGraphicsPipelines(device, handle_cast<::VkPipelineCache>(pipelineCache), createInfoCount, pCreateInfos, 0, handle_cast<::VkPipeline *>(pPipelines)), "vkCreateGraphicsPipelines" }; }
void CmdSetScissor(VkCommandBuffer commandBuffer, std::uint32_t firstScissor, std::uint32_t scissorCount, const VkRect2D *pScissors) const
{ vkCmdSetScissor(handle_cast<::VkCommandBuffer>(commandBuffer), firstScissor, scissorCount, pScissors); }
+ // Chapter 28: Dispatching Commands
+ void CmdDispatch(VkCommandBuffer commandBuffer, std::uint32_t groupCountX, std::uint32_t groupCountY, std::uint32_t groupCountZ) const
+ { vkCmdDispatch(handle_cast<::VkCommandBuffer>(commandBuffer), groupCountX, groupCountY, groupCountZ); }
+
// Chapter 30: Window System Integration (WSI)
Result GetPhysicalDeviceSurfaceCapabilities(VkSurface surface, VkSurfaceCapabilitiesKHR &rSurfaceCapabilities) const
{ return { vkGetPhysicalDeviceSurfaceCapabilities(physicalDevice, handle_cast<::VkSurfaceKHR>(surface), &rSurfaceCapabilities), "vkGetPhysicalDeviceSurfaceCapabilities" }; }
void SetScissor(std::uint32_t firstScissor, std::uint32_t scissorCount, const VkRect2D *pScissors) const
{ vk.CmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors); }
+
+ void Dispatch(std::uint32_t groupCountX, std::uint32_t groupCountY, std::uint32_t groupCountZ) const
+ { vk.CmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ); }
};
} // namespace GL