Module: Mesa
Branch: main
Commit: 1c6862078262d99aa5a6c036737c296145cd5b00
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=1c6862078262d99aa5a6c036737c296145cd5b00

Author: Rajnesh Kanwal <[email protected]>
Date:   Thu Sep  8 15:40:56 2022 +0100

pvr: Implement vkCmdResetEvent2 API.

Signed-off-by: Rajnesh Kanwal <[email protected]>
Reviewed-by: Karmjit Mahil <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18612>

---

 src/imagination/vulkan/pvr_cmd_buffer.c | 25 +++++++++++++++++++++----
 src/imagination/vulkan/pvr_private.h    |  6 ++++++
 2 files changed, 27 insertions(+), 4 deletions(-)

diff --git a/src/imagination/vulkan/pvr_cmd_buffer.c 
b/src/imagination/vulkan/pvr_cmd_buffer.c
index f1fc1cb27e4..39fb03bca54 100644
--- a/src/imagination/vulkan/pvr_cmd_buffer.c
+++ b/src/imagination/vulkan/pvr_cmd_buffer.c
@@ -5703,11 +5703,28 @@ void pvr_CmdPipelineBarrier2(VkCommandBuffer 
commandBuffer,
    }
 }
 
-void pvr_CmdResetEvent2KHR(VkCommandBuffer commandBuffer,
-                           VkEvent _event,
-                           VkPipelineStageFlags2 stageMask)
+void pvr_CmdResetEvent2(VkCommandBuffer commandBuffer,
+                        VkEvent _event,
+                        VkPipelineStageFlags2 stageMask)
 {
-   assert(!"Unimplemented");
+   PVR_FROM_HANDLE(pvr_cmd_buffer, cmd_buffer, commandBuffer);
+   PVR_FROM_HANDLE(pvr_event, event, _event);
+   struct pvr_sub_cmd_event *sub_cmd;
+   VkResult result;
+
+   PVR_CHECK_COMMAND_BUFFER_BUILDING_STATE(cmd_buffer);
+
+   result = pvr_cmd_buffer_start_sub_cmd(cmd_buffer, PVR_SUB_CMD_TYPE_EVENT);
+   if (result != VK_SUCCESS)
+      return;
+
+   sub_cmd = &cmd_buffer->state.current_sub_cmd->event;
+
+   sub_cmd->type = PVR_EVENT_TYPE_RESET;
+   sub_cmd->reset.event = event;
+   sub_cmd->reset.wait_for_stage_mask = pvr_stage_mask_src(stageMask);
+
+   pvr_cmd_buffer_end_sub_cmd(cmd_buffer);
 }
 
 void pvr_CmdSetEvent2(VkCommandBuffer commandBuffer,
diff --git a/src/imagination/vulkan/pvr_private.h 
b/src/imagination/vulkan/pvr_private.h
index bcc4ca9e895..b96deea49c3 100644
--- a/src/imagination/vulkan/pvr_private.h
+++ b/src/imagination/vulkan/pvr_private.h
@@ -741,6 +741,12 @@ struct pvr_sub_cmd_event {
          /* Stages to wait for until the event is set. */
          uint32_t wait_for_stage_mask;
       } set;
+
+      struct {
+         struct pvr_event *event;
+         /* Stages to wait for until the event is reset. */
+         uint32_t wait_for_stage_mask;
+      } reset;
    };
 };
 

Reply via email to