vulkan: add common entrypoints for VK_KHR_create_renderpass2
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Mon, 15 Mar 2021 14:31:05 +0000 (15:31 +0100)
committerMarge Bot <eric+marge@anholt.net>
Wed, 24 Mar 2021 11:21:53 +0000 (11:21 +0000)
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9601>

src/vulkan/util/vk_render_pass.c

index 0dd8da5..fa736ec 100644 (file)
@@ -233,3 +233,59 @@ vk_common_CreateRenderPass(VkDevice _device,
 
    return result;
 }
+
+VKAPI_ATTR void VKAPI_CALL
+vk_common_CmdBeginRenderPass(VkCommandBuffer commandBuffer,
+                             const VkRenderPassBeginInfo* pRenderPassBegin,
+                             VkSubpassContents contents)
+{
+   /* We don't have a vk_command_buffer object but we can assume, since we're
+    * using common dispatch, that it's a vk_object of some sort.
+    */
+   struct vk_object_base *disp = (struct vk_object_base *)commandBuffer;
+
+   VkSubpassBeginInfo info = {
+      .sType = VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO,
+      .contents = contents,
+   };
+
+   disp->device->dispatch_table.CmdBeginRenderPass2(commandBuffer,
+                                                    pRenderPassBegin, &info);
+}
+
+VKAPI_ATTR void VKAPI_CALL
+vk_common_CmdEndRenderPass(VkCommandBuffer commandBuffer)
+{
+   /* We don't have a vk_command_buffer object but we can assume, since we're
+    * using common dispatch, that it's a vk_object of some sort.
+    */
+   struct vk_object_base *disp = (struct vk_object_base *)commandBuffer;
+
+   VkSubpassEndInfo info = {
+      .sType = VK_STRUCTURE_TYPE_SUBPASS_END_INFO,
+   };
+
+   disp->device->dispatch_table.CmdEndRenderPass2(commandBuffer, &info);
+}
+
+VKAPI_ATTR void VKAPI_CALL
+vk_common_CmdNextSubpass(VkCommandBuffer commandBuffer,
+                         VkSubpassContents contents)
+{
+   /* We don't have a vk_command_buffer object but we can assume, since we're
+    * using common dispatch, that it's a vk_object of some sort.
+    */
+   struct vk_object_base *disp = (struct vk_object_base *)commandBuffer;
+
+   VkSubpassBeginInfo begin_info = {
+      .sType = VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO,
+      .contents = contents,
+   };
+
+   VkSubpassEndInfo end_info = {
+      .sType = VK_STRUCTURE_TYPE_SUBPASS_END_INFO,
+   };
+
+   disp->device->dispatch_table.CmdNextSubpass2(commandBuffer, &begin_info,
+                                                &end_info);
+}