From def3b88da5811d0612ef7659ff68c6df0477711d Mon Sep 17 00:00:00 2001 From: Karmjit Mahil Date: Thu, 15 Sep 2022 12:01:37 +0100 Subject: [PATCH] pvr: Add basic skeleton for event sub cmd. Signed-off-by: Karmjit Mahil Reviewed-by: Sarah Walker Part-of: --- src/imagination/vulkan/pvr_cmd_buffer.c | 14 ++++++++++++++ src/imagination/vulkan/pvr_private.h | 13 +++++++++++++ src/imagination/vulkan/pvr_queue.c | 9 +++++++-- 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/imagination/vulkan/pvr_cmd_buffer.c b/src/imagination/vulkan/pvr_cmd_buffer.c index bdc44f1b6b1..7efba1b57b4 100644 --- a/src/imagination/vulkan/pvr_cmd_buffer.c +++ b/src/imagination/vulkan/pvr_cmd_buffer.c @@ -104,6 +104,9 @@ static void pvr_cmd_buffer_free_sub_cmd(struct pvr_cmd_buffer *cmd_buffer, } break; + case PVR_SUB_CMD_TYPE_EVENT: + break; + default: pvr_finishme("Unsupported sub-command type %d", sub_cmd->type); break; @@ -263,6 +266,10 @@ static void pvr_cmd_buffer_update_barriers(struct pvr_cmd_buffer *cmd_buffer, barriers = PVR_PIPELINE_STAGE_TRANSFER_BIT; break; + case PVR_SUB_CMD_TYPE_EVENT: + barriers = 0; + break; + default: barriers = 0; pvr_finishme("Unsupported sub-command type %d", type); @@ -1563,6 +1570,9 @@ static VkResult pvr_cmd_buffer_end_sub_cmd(struct pvr_cmd_buffer *cmd_buffer) case PVR_SUB_CMD_TYPE_TRANSFER: break; + case PVR_SUB_CMD_TYPE_EVENT: + break; + default: pvr_finishme("Unsupported sub-command type %d", sub_cmd->type); break; @@ -1713,6 +1723,10 @@ static VkResult pvr_cmd_buffer_start_sub_cmd(struct pvr_cmd_buffer *cmd_buffer, list_inithead(&sub_cmd->transfer.transfer_cmds); break; + case PVR_SUB_CMD_TYPE_EVENT: + /* TODO: Add support for joining consecutive event sub_cmd? */ + break; + default: pvr_finishme("Unsupported sub-command type %d", type); break; diff --git a/src/imagination/vulkan/pvr_private.h b/src/imagination/vulkan/pvr_private.h index e7099379435..485712638c5 100644 --- a/src/imagination/vulkan/pvr_private.h +++ b/src/imagination/vulkan/pvr_private.h @@ -111,6 +111,14 @@ enum pvr_sub_cmd_type { PVR_SUB_CMD_TYPE_GRAPHICS, PVR_SUB_CMD_TYPE_COMPUTE, PVR_SUB_CMD_TYPE_TRANSFER, + PVR_SUB_CMD_TYPE_EVENT, +}; + +enum pvr_event_type { + PVR_EVENT_TYPE_SET, + PVR_EVENT_TYPE_RESET, + PVR_EVENT_TYPE_WAIT, + PVR_EVENT_TYPE_BARRIER, }; enum pvr_depth_stencil_usage { @@ -710,6 +718,10 @@ struct pvr_sub_cmd_transfer { struct list_head transfer_cmds; }; +struct pvr_sub_cmd_event { + enum pvr_event_type type; +}; + struct pvr_sub_cmd { /* This links the subcommand in pvr_cmd_buffer:sub_cmds list. */ struct list_head link; @@ -720,6 +732,7 @@ struct pvr_sub_cmd { struct pvr_sub_cmd_gfx gfx; struct pvr_sub_cmd_compute compute; struct pvr_sub_cmd_transfer transfer; + struct pvr_sub_cmd_event event; }; }; diff --git a/src/imagination/vulkan/pvr_queue.c b/src/imagination/vulkan/pvr_queue.c index 3b8504073c2..56ff8a7b877 100644 --- a/src/imagination/vulkan/pvr_queue.c +++ b/src/imagination/vulkan/pvr_queue.c @@ -509,9 +509,14 @@ pvr_process_cmd_buffer(struct pvr_device *device, completions); break; + case PVR_SUB_CMD_TYPE_EVENT: + pvr_finishme("Add support to process event sub cmds."); + result = vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY); + break; + default: - pvr_finishme("Unsupported sub-command type %d", sub_cmd->type); - return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY); + mesa_loge("Unsupported sub-command type %d", sub_cmd->type); + result = vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY); } if (result != VK_SUCCESS) {