v3dv: implement vkResetCommandPool
authorIago Toral Quiroga <itoral@igalia.com>
Thu, 27 Feb 2020 08:06:28 +0000 (09:06 +0100)
committerMarge Bot <eric+marge@anholt.net>
Tue, 13 Oct 2020 21:21:27 +0000 (21:21 +0000)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766>

src/broadcom/vulkan/v3dv_cmd_buffer.c

index 4580c77..b251683 100644 (file)
@@ -570,6 +570,23 @@ v3dv_ResetCommandBuffer(VkCommandBuffer commandBuffer,
    return cmd_buffer_reset(cmd_buffer, flags);
 }
 
+VkResult
+v3dv_ResetCommandPool(VkDevice device,
+                      VkCommandPool commandPool,
+                      VkCommandPoolResetFlags flags)
+{
+   V3DV_FROM_HANDLE(v3dv_cmd_pool, pool, commandPool);
+
+   VkCommandBufferResetFlags reset_flags = 0;
+   if (flags & VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT)
+      reset_flags = VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT;
+   list_for_each_entry(struct v3dv_cmd_buffer, cmd_buffer,
+                       &pool->cmd_buffers, pool_link) {
+      cmd_buffer_reset(cmd_buffer, reset_flags);
+   }
+
+   return VK_SUCCESS;
+}
 static void
 emit_clip_window(struct v3dv_job *job, const VkRect2D *rect)
 {