diff options
author | Yiwei Zhang <zzyiwei@chromium.org> | 2022-10-12 09:11:31 +0000 |
---|---|---|
committer | Yiwei Zhang <zzyiwei@chromium.org> | 2022-10-12 09:11:51 +0000 |
commit | aabdfddd1372424bff1ba9da6a70c1aae69f143b (patch) | |
tree | 8282615006895838279636510b712e3cd5ccf0d8 | |
parent | 35d3902e8c08b30ad806bce4ed86f44601f3543c (diff) | |
download | virglrenderer-aabdfddd1372424bff1ba9da6a70c1aae69f143b.tar.gz |
vkr: fix VK_KHR_synchronization2 dispatches
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/virgl/virglrenderer/-/merge_requests/952>
-rw-r--r-- | src/venus/vkr_command_buffer.c | 43 | ||||
-rw-r--r-- | src/venus/vkr_queue.c | 15 |
2 files changed, 58 insertions, 0 deletions
diff --git a/src/venus/vkr_command_buffer.c b/src/venus/vkr_command_buffer.c index ccfdf94d..7c7eb046 100644 --- a/src/venus/vkr_command_buffer.c +++ b/src/venus/vkr_command_buffer.c @@ -798,6 +798,42 @@ vkr_dispatch_vkCmdEndRendering(UNUSED struct vn_dispatch_context *ctx, } static void +vkr_dispatch_vkCmdPipelineBarrier2(UNUSED struct vn_dispatch_context *ctx, + struct vn_command_vkCmdPipelineBarrier2 *args) +{ + VKR_CMD_CALL(CmdPipelineBarrier2, args, args->pDependencyInfo); +} + +static void +vkr_dispatch_vkCmdResetEvent2(UNUSED struct vn_dispatch_context *ctx, + struct vn_command_vkCmdResetEvent2 *args) +{ + VKR_CMD_CALL(CmdResetEvent2, args, args->event, args->stageMask); +} + +static void +vkr_dispatch_vkCmdSetEvent2(UNUSED struct vn_dispatch_context *ctx, + struct vn_command_vkCmdSetEvent2 *args) +{ + VKR_CMD_CALL(CmdSetEvent2, args, args->event, args->pDependencyInfo); +} + +static void +vkr_dispatch_vkCmdWaitEvents2(UNUSED struct vn_dispatch_context *ctx, + struct vn_command_vkCmdWaitEvents2 *args) +{ + VKR_CMD_CALL(CmdWaitEvents2, args, args->eventCount, args->pEvents, + args->pDependencyInfos); +} + +static void +vkr_dispatch_vkCmdWriteTimestamp2(UNUSED struct vn_dispatch_context *ctx, + struct vn_command_vkCmdWriteTimestamp2 *args) +{ + VKR_CMD_CALL(CmdWriteTimestamp2, args, args->stage, args->queryPool, args->query); +} + +static void vkr_dispatch_vkCmdDrawMultiEXT(UNUSED struct vn_dispatch_context *dispatch, struct vn_command_vkCmdDrawMultiEXT *args) { @@ -928,6 +964,13 @@ vkr_context_init_command_buffer_dispatch(struct vkr_context *ctx) dispatch->dispatch_vkCmdBeginRendering = vkr_dispatch_vkCmdBeginRendering; dispatch->dispatch_vkCmdEndRendering = vkr_dispatch_vkCmdEndRendering; + /* VK_KHR_synchronization2 */ + dispatch->dispatch_vkCmdPipelineBarrier2 = vkr_dispatch_vkCmdPipelineBarrier2; + dispatch->dispatch_vkCmdResetEvent2 = vkr_dispatch_vkCmdResetEvent2; + dispatch->dispatch_vkCmdSetEvent2 = vkr_dispatch_vkCmdSetEvent2; + dispatch->dispatch_vkCmdWaitEvents2 = vkr_dispatch_vkCmdWaitEvents2; + dispatch->dispatch_vkCmdWriteTimestamp2 = vkr_dispatch_vkCmdWriteTimestamp2; + /* VK_EXT_extended_dynamic_state2 */ dispatch->dispatch_vkCmdSetRasterizerDiscardEnable = vkr_dispatch_vkCmdSetRasterizerDiscardEnable; diff --git a/src/venus/vkr_queue.c b/src/venus/vkr_queue.c index 9469b993..05c976dd 100644 --- a/src/venus/vkr_queue.c +++ b/src/venus/vkr_queue.c @@ -402,6 +402,18 @@ vkr_dispatch_vkQueueWaitIdle(struct vn_dispatch_context *dispatch, } static void +vkr_dispatch_vkQueueSubmit2(UNUSED struct vn_dispatch_context *dispatch, + struct vn_command_vkQueueSubmit2 *args) +{ + struct vkr_queue *queue = vkr_queue_from_handle(args->queue); + struct vn_device_proc_table *vk = &queue->device->proc_table; + + vn_replace_vkQueueSubmit2_args_handle(args); + args->ret = + vk->QueueSubmit2(args->queue, args->submitCount, args->pSubmits, args->fence); +} + +static void vkr_dispatch_vkCreateFence(struct vn_dispatch_context *dispatch, struct vn_command_vkCreateFence *args) { @@ -643,6 +655,9 @@ vkr_context_init_queue_dispatch(struct vkr_context *ctx) dispatch->dispatch_vkQueueSubmit = vkr_dispatch_vkQueueSubmit; dispatch->dispatch_vkQueueBindSparse = vkr_dispatch_vkQueueBindSparse; dispatch->dispatch_vkQueueWaitIdle = vkr_dispatch_vkQueueWaitIdle; + + /* VK_KHR_synchronization2 */ + dispatch->dispatch_vkQueueSubmit2 = vkr_dispatch_vkQueueSubmit2; } void |