aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYiwei Zhang <zzyiwei@chromium.org>2022-10-12 09:11:31 +0000
committerYiwei Zhang <zzyiwei@chromium.org>2022-10-12 09:11:51 +0000
commitaabdfddd1372424bff1ba9da6a70c1aae69f143b (patch)
tree8282615006895838279636510b712e3cd5ccf0d8
parent35d3902e8c08b30ad806bce4ed86f44601f3543c (diff)
downloadvirglrenderer-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.c43
-rw-r--r--src/venus/vkr_queue.c15
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