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; }; };
