xref: /aosp_15_r20/external/virglrenderer/src/venus/vkr_command_buffer.c (revision bbecb9d118dfdb95f99bd754f8fa9be01f189df3)
1 /*
2  * Copyright 2020 Google LLC
3  * SPDX-License-Identifier: MIT
4  */
5 
6 #include "vkr_command_buffer.h"
7 
8 #include "vkr_command_buffer_gen.h"
9 
10 #ifdef __clang__
11 #pragma clang diagnostic ignored "-Wgnu-zero-variadic-macro-arguments"
12 #endif
13 
14 #define VKR_CMD_CALL(cmd_name, args, ...)                                                \
15    do {                                                                                  \
16       struct vkr_command_buffer *_cmd =                                                  \
17          vkr_command_buffer_from_handle(args->commandBuffer);                            \
18       struct vn_device_proc_table *_vk = &_cmd->device->proc_table;                      \
19                                                                                          \
20       vn_replace_vk##cmd_name##_args_handle(args);                                       \
21       _vk->cmd_name(args->commandBuffer, ##__VA_ARGS__);                                 \
22    } while (0)
23 
24 static void
vkr_dispatch_vkCreateCommandPool(struct vn_dispatch_context * dispatch,struct vn_command_vkCreateCommandPool * args)25 vkr_dispatch_vkCreateCommandPool(struct vn_dispatch_context *dispatch,
26                                  struct vn_command_vkCreateCommandPool *args)
27 {
28    struct vkr_command_pool *pool = vkr_command_pool_create_and_add(dispatch->data, args);
29    if (!pool)
30       return;
31 
32    list_inithead(&pool->command_buffers);
33 }
34 
35 static void
vkr_dispatch_vkDestroyCommandPool(struct vn_dispatch_context * dispatch,struct vn_command_vkDestroyCommandPool * args)36 vkr_dispatch_vkDestroyCommandPool(struct vn_dispatch_context *dispatch,
37                                   struct vn_command_vkDestroyCommandPool *args)
38 {
39    struct vkr_context *ctx = dispatch->data;
40    struct vkr_command_pool *pool = vkr_command_pool_from_handle(args->commandPool);
41 
42    if (!pool)
43       return;
44 
45    vkr_command_pool_release(ctx, pool);
46    vkr_command_pool_destroy_and_remove(ctx, args);
47 }
48 
49 static void
vkr_dispatch_vkResetCommandPool(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkResetCommandPool * args)50 vkr_dispatch_vkResetCommandPool(UNUSED struct vn_dispatch_context *dispatch,
51                                 struct vn_command_vkResetCommandPool *args)
52 {
53    struct vkr_device *dev = vkr_device_from_handle(args->device);
54    struct vn_device_proc_table *vk = &dev->proc_table;
55 
56    vn_replace_vkResetCommandPool_args_handle(args);
57    args->ret = vk->ResetCommandPool(args->device, args->commandPool, args->flags);
58 }
59 
60 static void
vkr_dispatch_vkTrimCommandPool(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkTrimCommandPool * args)61 vkr_dispatch_vkTrimCommandPool(UNUSED struct vn_dispatch_context *dispatch,
62                                struct vn_command_vkTrimCommandPool *args)
63 {
64    struct vkr_device *dev = vkr_device_from_handle(args->device);
65    struct vn_device_proc_table *vk = &dev->proc_table;
66 
67    vn_replace_vkTrimCommandPool_args_handle(args);
68    vk->TrimCommandPool(args->device, args->commandPool, args->flags);
69 }
70 
71 static void
vkr_dispatch_vkAllocateCommandBuffers(struct vn_dispatch_context * dispatch,struct vn_command_vkAllocateCommandBuffers * args)72 vkr_dispatch_vkAllocateCommandBuffers(struct vn_dispatch_context *dispatch,
73                                       struct vn_command_vkAllocateCommandBuffers *args)
74 {
75    struct vkr_context *ctx = dispatch->data;
76    struct vkr_device *dev = vkr_device_from_handle(args->device);
77    struct vkr_command_pool *pool =
78       vkr_command_pool_from_handle(args->pAllocateInfo->commandPool);
79    struct object_array arr;
80 
81    if (!pool) {
82       vkr_cs_decoder_set_fatal(&ctx->decoder);
83       return;
84    }
85 
86    if (vkr_command_buffer_create_array(ctx, args, &arr) != VK_SUCCESS)
87       return;
88 
89    vkr_command_buffer_add_array(ctx, dev, pool, &arr);
90 }
91 
92 static void
vkr_dispatch_vkFreeCommandBuffers(struct vn_dispatch_context * dispatch,struct vn_command_vkFreeCommandBuffers * args)93 vkr_dispatch_vkFreeCommandBuffers(struct vn_dispatch_context *dispatch,
94                                   struct vn_command_vkFreeCommandBuffers *args)
95 {
96    struct vkr_context *ctx = dispatch->data;
97    struct list_head free_list;
98 
99    /* args->pCommandBuffers is marked noautovalidity="true" */
100    if (args->commandBufferCount && !args->pCommandBuffers) {
101       vkr_cs_decoder_set_fatal(&ctx->decoder);
102       return;
103    }
104 
105    vkr_command_buffer_destroy_driver_handles(ctx, args, &free_list);
106    vkr_context_remove_objects(ctx, &free_list);
107 }
108 
109 static void
vkr_dispatch_vkResetCommandBuffer(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkResetCommandBuffer * args)110 vkr_dispatch_vkResetCommandBuffer(UNUSED struct vn_dispatch_context *dispatch,
111                                   struct vn_command_vkResetCommandBuffer *args)
112 {
113    struct vkr_command_buffer *cmd = vkr_command_buffer_from_handle(args->commandBuffer);
114    struct vn_device_proc_table *vk = &cmd->device->proc_table;
115 
116    vn_replace_vkResetCommandBuffer_args_handle(args);
117    args->ret = vk->ResetCommandBuffer(args->commandBuffer, args->flags);
118 }
119 
120 static void
vkr_dispatch_vkBeginCommandBuffer(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkBeginCommandBuffer * args)121 vkr_dispatch_vkBeginCommandBuffer(UNUSED struct vn_dispatch_context *dispatch,
122                                   struct vn_command_vkBeginCommandBuffer *args)
123 {
124    struct vkr_command_buffer *cmd = vkr_command_buffer_from_handle(args->commandBuffer);
125    struct vn_device_proc_table *vk = &cmd->device->proc_table;
126 
127    vn_replace_vkBeginCommandBuffer_args_handle(args);
128    args->ret = vk->BeginCommandBuffer(args->commandBuffer, args->pBeginInfo);
129 }
130 
131 static void
vkr_dispatch_vkEndCommandBuffer(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkEndCommandBuffer * args)132 vkr_dispatch_vkEndCommandBuffer(UNUSED struct vn_dispatch_context *dispatch,
133                                 struct vn_command_vkEndCommandBuffer *args)
134 {
135    struct vkr_command_buffer *cmd = vkr_command_buffer_from_handle(args->commandBuffer);
136    struct vn_device_proc_table *vk = &cmd->device->proc_table;
137 
138    vn_replace_vkEndCommandBuffer_args_handle(args);
139    args->ret = vk->EndCommandBuffer(args->commandBuffer);
140 }
141 
142 static void
vkr_dispatch_vkCmdBindPipeline(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdBindPipeline * args)143 vkr_dispatch_vkCmdBindPipeline(UNUSED struct vn_dispatch_context *dispatch,
144                                struct vn_command_vkCmdBindPipeline *args)
145 {
146    VKR_CMD_CALL(CmdBindPipeline, args, args->pipelineBindPoint, args->pipeline);
147 }
148 
149 static void
vkr_dispatch_vkCmdSetViewport(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdSetViewport * args)150 vkr_dispatch_vkCmdSetViewport(UNUSED struct vn_dispatch_context *dispatch,
151                               struct vn_command_vkCmdSetViewport *args)
152 {
153    VKR_CMD_CALL(CmdSetViewport, args, args->firstViewport, args->viewportCount,
154                 args->pViewports);
155 }
156 
157 static void
vkr_dispatch_vkCmdSetScissor(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdSetScissor * args)158 vkr_dispatch_vkCmdSetScissor(UNUSED struct vn_dispatch_context *dispatch,
159                              struct vn_command_vkCmdSetScissor *args)
160 {
161    VKR_CMD_CALL(CmdSetScissor, args, args->firstScissor, args->scissorCount,
162                 args->pScissors);
163 }
164 
165 static void
vkr_dispatch_vkCmdSetLineWidth(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdSetLineWidth * args)166 vkr_dispatch_vkCmdSetLineWidth(UNUSED struct vn_dispatch_context *dispatch,
167                                struct vn_command_vkCmdSetLineWidth *args)
168 {
169    VKR_CMD_CALL(CmdSetLineWidth, args, args->lineWidth);
170 }
171 
172 static void
vkr_dispatch_vkCmdSetDepthBias(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdSetDepthBias * args)173 vkr_dispatch_vkCmdSetDepthBias(UNUSED struct vn_dispatch_context *dispatch,
174                                struct vn_command_vkCmdSetDepthBias *args)
175 {
176    VKR_CMD_CALL(CmdSetDepthBias, args, args->depthBiasConstantFactor,
177                 args->depthBiasClamp, args->depthBiasSlopeFactor);
178 }
179 
180 static void
vkr_dispatch_vkCmdSetBlendConstants(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdSetBlendConstants * args)181 vkr_dispatch_vkCmdSetBlendConstants(UNUSED struct vn_dispatch_context *dispatch,
182                                     struct vn_command_vkCmdSetBlendConstants *args)
183 {
184    VKR_CMD_CALL(CmdSetBlendConstants, args, args->blendConstants);
185 }
186 
187 static void
vkr_dispatch_vkCmdSetDepthBounds(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdSetDepthBounds * args)188 vkr_dispatch_vkCmdSetDepthBounds(UNUSED struct vn_dispatch_context *dispatch,
189                                  struct vn_command_vkCmdSetDepthBounds *args)
190 {
191    VKR_CMD_CALL(CmdSetDepthBounds, args, args->minDepthBounds, args->maxDepthBounds);
192 }
193 
194 static void
vkr_dispatch_vkCmdSetStencilCompareMask(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdSetStencilCompareMask * args)195 vkr_dispatch_vkCmdSetStencilCompareMask(UNUSED struct vn_dispatch_context *dispatch,
196                                         struct vn_command_vkCmdSetStencilCompareMask *args)
197 {
198    VKR_CMD_CALL(CmdSetStencilCompareMask, args, args->faceMask, args->compareMask);
199 }
200 
201 static void
vkr_dispatch_vkCmdSetStencilWriteMask(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdSetStencilWriteMask * args)202 vkr_dispatch_vkCmdSetStencilWriteMask(UNUSED struct vn_dispatch_context *dispatch,
203                                       struct vn_command_vkCmdSetStencilWriteMask *args)
204 {
205    VKR_CMD_CALL(CmdSetStencilWriteMask, args, args->faceMask, args->writeMask);
206 }
207 
208 static void
vkr_dispatch_vkCmdSetStencilReference(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdSetStencilReference * args)209 vkr_dispatch_vkCmdSetStencilReference(UNUSED struct vn_dispatch_context *dispatch,
210                                       struct vn_command_vkCmdSetStencilReference *args)
211 {
212    VKR_CMD_CALL(CmdSetStencilReference, args, args->faceMask, args->reference);
213 }
214 
215 static void
vkr_dispatch_vkCmdBindDescriptorSets(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdBindDescriptorSets * args)216 vkr_dispatch_vkCmdBindDescriptorSets(UNUSED struct vn_dispatch_context *dispatch,
217                                      struct vn_command_vkCmdBindDescriptorSets *args)
218 {
219    VKR_CMD_CALL(CmdBindDescriptorSets, args, args->pipelineBindPoint, args->layout,
220                 args->firstSet, args->descriptorSetCount, args->pDescriptorSets,
221                 args->dynamicOffsetCount, args->pDynamicOffsets);
222 }
223 
224 static void
vkr_dispatch_vkCmdBindIndexBuffer(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdBindIndexBuffer * args)225 vkr_dispatch_vkCmdBindIndexBuffer(UNUSED struct vn_dispatch_context *dispatch,
226                                   struct vn_command_vkCmdBindIndexBuffer *args)
227 {
228    VKR_CMD_CALL(CmdBindIndexBuffer, args, args->buffer, args->offset, args->indexType);
229 }
230 
231 static void
vkr_dispatch_vkCmdBindVertexBuffers(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdBindVertexBuffers * args)232 vkr_dispatch_vkCmdBindVertexBuffers(UNUSED struct vn_dispatch_context *dispatch,
233                                     struct vn_command_vkCmdBindVertexBuffers *args)
234 {
235    VKR_CMD_CALL(CmdBindVertexBuffers, args, args->firstBinding, args->bindingCount,
236                 args->pBuffers, args->pOffsets);
237 }
238 
239 static void
vkr_dispatch_vkCmdDraw(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdDraw * args)240 vkr_dispatch_vkCmdDraw(UNUSED struct vn_dispatch_context *dispatch,
241                        struct vn_command_vkCmdDraw *args)
242 {
243    VKR_CMD_CALL(CmdDraw, args, args->vertexCount, args->instanceCount, args->firstVertex,
244                 args->firstInstance);
245 }
246 
247 static void
vkr_dispatch_vkCmdDrawIndexed(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdDrawIndexed * args)248 vkr_dispatch_vkCmdDrawIndexed(UNUSED struct vn_dispatch_context *dispatch,
249                               struct vn_command_vkCmdDrawIndexed *args)
250 {
251    VKR_CMD_CALL(CmdDrawIndexed, args, args->indexCount, args->instanceCount,
252                 args->firstIndex, args->vertexOffset, args->firstInstance);
253 }
254 
255 static void
vkr_dispatch_vkCmdDrawIndirect(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdDrawIndirect * args)256 vkr_dispatch_vkCmdDrawIndirect(UNUSED struct vn_dispatch_context *dispatch,
257                                struct vn_command_vkCmdDrawIndirect *args)
258 {
259    VKR_CMD_CALL(CmdDrawIndirect, args, args->buffer, args->offset, args->drawCount,
260                 args->stride);
261 }
262 
263 static void
vkr_dispatch_vkCmdDrawIndexedIndirect(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdDrawIndexedIndirect * args)264 vkr_dispatch_vkCmdDrawIndexedIndirect(UNUSED struct vn_dispatch_context *dispatch,
265                                       struct vn_command_vkCmdDrawIndexedIndirect *args)
266 {
267    VKR_CMD_CALL(CmdDrawIndexedIndirect, args, args->buffer, args->offset, args->drawCount,
268                 args->stride);
269 }
270 
271 static void
vkr_dispatch_vkCmdDispatch(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdDispatch * args)272 vkr_dispatch_vkCmdDispatch(UNUSED struct vn_dispatch_context *dispatch,
273                            struct vn_command_vkCmdDispatch *args)
274 {
275    VKR_CMD_CALL(CmdDispatch, args, args->groupCountX, args->groupCountY,
276                 args->groupCountZ);
277 }
278 
279 static void
vkr_dispatch_vkCmdDispatchIndirect(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdDispatchIndirect * args)280 vkr_dispatch_vkCmdDispatchIndirect(UNUSED struct vn_dispatch_context *dispatch,
281                                    struct vn_command_vkCmdDispatchIndirect *args)
282 {
283    VKR_CMD_CALL(CmdDispatchIndirect, args, args->buffer, args->offset);
284 }
285 
286 static void
vkr_dispatch_vkCmdCopyBuffer(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdCopyBuffer * args)287 vkr_dispatch_vkCmdCopyBuffer(UNUSED struct vn_dispatch_context *dispatch,
288                              struct vn_command_vkCmdCopyBuffer *args)
289 {
290    VKR_CMD_CALL(CmdCopyBuffer, args, args->srcBuffer, args->dstBuffer, args->regionCount,
291                 args->pRegions);
292 }
293 
294 static void
vkr_dispatch_vkCmdCopyBuffer2(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdCopyBuffer2 * args)295 vkr_dispatch_vkCmdCopyBuffer2(UNUSED struct vn_dispatch_context *dispatch,
296                               struct vn_command_vkCmdCopyBuffer2 *args)
297 {
298    VKR_CMD_CALL(CmdCopyBuffer2, args, args->pCopyBufferInfo);
299 }
300 
301 static void
vkr_dispatch_vkCmdCopyImage(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdCopyImage * args)302 vkr_dispatch_vkCmdCopyImage(UNUSED struct vn_dispatch_context *dispatch,
303                             struct vn_command_vkCmdCopyImage *args)
304 {
305    VKR_CMD_CALL(CmdCopyImage, args, args->srcImage, args->srcImageLayout, args->dstImage,
306                 args->dstImageLayout, args->regionCount, args->pRegions);
307 }
308 
309 static void
vkr_dispatch_vkCmdCopyImage2(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdCopyImage2 * args)310 vkr_dispatch_vkCmdCopyImage2(UNUSED struct vn_dispatch_context *dispatch,
311                              struct vn_command_vkCmdCopyImage2 *args)
312 {
313    VKR_CMD_CALL(CmdCopyImage2, args, args->pCopyImageInfo);
314 }
315 
316 static void
vkr_dispatch_vkCmdBlitImage(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdBlitImage * args)317 vkr_dispatch_vkCmdBlitImage(UNUSED struct vn_dispatch_context *dispatch,
318                             struct vn_command_vkCmdBlitImage *args)
319 {
320    VKR_CMD_CALL(CmdBlitImage, args, args->srcImage, args->srcImageLayout, args->dstImage,
321                 args->dstImageLayout, args->regionCount, args->pRegions, args->filter);
322 }
323 
324 static void
vkr_dispatch_vkCmdBlitImage2(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdBlitImage2 * args)325 vkr_dispatch_vkCmdBlitImage2(UNUSED struct vn_dispatch_context *dispatch,
326                              struct vn_command_vkCmdBlitImage2 *args)
327 {
328    VKR_CMD_CALL(CmdBlitImage2, args, args->pBlitImageInfo);
329 }
330 
331 static void
vkr_dispatch_vkCmdCopyBufferToImage(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdCopyBufferToImage * args)332 vkr_dispatch_vkCmdCopyBufferToImage(UNUSED struct vn_dispatch_context *dispatch,
333                                     struct vn_command_vkCmdCopyBufferToImage *args)
334 {
335    VKR_CMD_CALL(CmdCopyBufferToImage, args, args->srcBuffer, args->dstImage,
336                 args->dstImageLayout, args->regionCount, args->pRegions);
337 }
338 
339 static void
vkr_dispatch_vkCmdCopyBufferToImage2(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdCopyBufferToImage2 * args)340 vkr_dispatch_vkCmdCopyBufferToImage2(UNUSED struct vn_dispatch_context *dispatch,
341                                      struct vn_command_vkCmdCopyBufferToImage2 *args)
342 {
343    VKR_CMD_CALL(CmdCopyBufferToImage2, args, args->pCopyBufferToImageInfo);
344 }
345 
346 static void
vkr_dispatch_vkCmdCopyImageToBuffer(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdCopyImageToBuffer * args)347 vkr_dispatch_vkCmdCopyImageToBuffer(UNUSED struct vn_dispatch_context *dispatch,
348                                     struct vn_command_vkCmdCopyImageToBuffer *args)
349 {
350    VKR_CMD_CALL(CmdCopyImageToBuffer, args, args->srcImage, args->srcImageLayout,
351                 args->dstBuffer, args->regionCount, args->pRegions);
352 }
353 
354 static void
vkr_dispatch_vkCmdCopyImageToBuffer2(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdCopyImageToBuffer2 * args)355 vkr_dispatch_vkCmdCopyImageToBuffer2(UNUSED struct vn_dispatch_context *dispatch,
356                                      struct vn_command_vkCmdCopyImageToBuffer2 *args)
357 {
358    VKR_CMD_CALL(CmdCopyImageToBuffer2, args, args->pCopyImageToBufferInfo);
359 }
360 
361 static void
vkr_dispatch_vkCmdUpdateBuffer(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdUpdateBuffer * args)362 vkr_dispatch_vkCmdUpdateBuffer(UNUSED struct vn_dispatch_context *dispatch,
363                                struct vn_command_vkCmdUpdateBuffer *args)
364 {
365    VKR_CMD_CALL(CmdUpdateBuffer, args, args->dstBuffer, args->dstOffset, args->dataSize,
366                 args->pData);
367 }
368 
369 static void
vkr_dispatch_vkCmdFillBuffer(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdFillBuffer * args)370 vkr_dispatch_vkCmdFillBuffer(UNUSED struct vn_dispatch_context *dispatch,
371                              struct vn_command_vkCmdFillBuffer *args)
372 {
373    VKR_CMD_CALL(CmdFillBuffer, args, args->dstBuffer, args->dstOffset, args->size,
374                 args->data);
375 }
376 
377 static void
vkr_dispatch_vkCmdClearColorImage(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdClearColorImage * args)378 vkr_dispatch_vkCmdClearColorImage(UNUSED struct vn_dispatch_context *dispatch,
379                                   struct vn_command_vkCmdClearColorImage *args)
380 {
381    VKR_CMD_CALL(CmdClearColorImage, args, args->image, args->imageLayout, args->pColor,
382                 args->rangeCount, args->pRanges);
383 }
384 
385 static void
vkr_dispatch_vkCmdClearDepthStencilImage(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdClearDepthStencilImage * args)386 vkr_dispatch_vkCmdClearDepthStencilImage(
387    UNUSED struct vn_dispatch_context *dispatch,
388    struct vn_command_vkCmdClearDepthStencilImage *args)
389 {
390    VKR_CMD_CALL(CmdClearDepthStencilImage, args, args->image, args->imageLayout,
391                 args->pDepthStencil, args->rangeCount, args->pRanges);
392 }
393 
394 static void
vkr_dispatch_vkCmdClearAttachments(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdClearAttachments * args)395 vkr_dispatch_vkCmdClearAttachments(UNUSED struct vn_dispatch_context *dispatch,
396                                    struct vn_command_vkCmdClearAttachments *args)
397 {
398    VKR_CMD_CALL(CmdClearAttachments, args, args->attachmentCount, args->pAttachments,
399                 args->rectCount, args->pRects);
400 }
401 
402 static void
vkr_dispatch_vkCmdResolveImage(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdResolveImage * args)403 vkr_dispatch_vkCmdResolveImage(UNUSED struct vn_dispatch_context *dispatch,
404                                struct vn_command_vkCmdResolveImage *args)
405 {
406    VKR_CMD_CALL(CmdResolveImage, args, args->srcImage, args->srcImageLayout,
407                 args->dstImage, args->dstImageLayout, args->regionCount, args->pRegions);
408 }
409 
410 static void
vkr_dispatch_vkCmdResolveImage2(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdResolveImage2 * args)411 vkr_dispatch_vkCmdResolveImage2(UNUSED struct vn_dispatch_context *dispatch,
412                                 struct vn_command_vkCmdResolveImage2 *args)
413 {
414    VKR_CMD_CALL(CmdResolveImage2, args, args->pResolveImageInfo);
415 }
416 
417 static void
vkr_dispatch_vkCmdSetEvent(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdSetEvent * args)418 vkr_dispatch_vkCmdSetEvent(UNUSED struct vn_dispatch_context *dispatch,
419                            struct vn_command_vkCmdSetEvent *args)
420 {
421    VKR_CMD_CALL(CmdSetEvent, args, args->event, args->stageMask);
422 }
423 
424 static void
vkr_dispatch_vkCmdResetEvent(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdResetEvent * args)425 vkr_dispatch_vkCmdResetEvent(UNUSED struct vn_dispatch_context *dispatch,
426                              struct vn_command_vkCmdResetEvent *args)
427 {
428    VKR_CMD_CALL(CmdResetEvent, args, args->event, args->stageMask);
429 }
430 
431 static void
vkr_dispatch_vkCmdWaitEvents(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdWaitEvents * args)432 vkr_dispatch_vkCmdWaitEvents(UNUSED struct vn_dispatch_context *dispatch,
433                              struct vn_command_vkCmdWaitEvents *args)
434 {
435    VKR_CMD_CALL(CmdWaitEvents, args, args->eventCount, args->pEvents, args->srcStageMask,
436                 args->dstStageMask, args->memoryBarrierCount, args->pMemoryBarriers,
437                 args->bufferMemoryBarrierCount, args->pBufferMemoryBarriers,
438                 args->imageMemoryBarrierCount, args->pImageMemoryBarriers);
439 }
440 
441 static void
vkr_dispatch_vkCmdPipelineBarrier(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdPipelineBarrier * args)442 vkr_dispatch_vkCmdPipelineBarrier(UNUSED struct vn_dispatch_context *dispatch,
443                                   struct vn_command_vkCmdPipelineBarrier *args)
444 {
445    VKR_CMD_CALL(CmdPipelineBarrier, args, args->srcStageMask, args->dstStageMask,
446                 args->dependencyFlags, args->memoryBarrierCount, args->pMemoryBarriers,
447                 args->bufferMemoryBarrierCount, args->pBufferMemoryBarriers,
448                 args->imageMemoryBarrierCount, args->pImageMemoryBarriers);
449 }
450 
451 static void
vkr_dispatch_vkCmdBeginQuery(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdBeginQuery * args)452 vkr_dispatch_vkCmdBeginQuery(UNUSED struct vn_dispatch_context *dispatch,
453                              struct vn_command_vkCmdBeginQuery *args)
454 {
455    VKR_CMD_CALL(CmdBeginQuery, args, args->queryPool, args->query, args->flags);
456 }
457 
458 static void
vkr_dispatch_vkCmdEndQuery(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdEndQuery * args)459 vkr_dispatch_vkCmdEndQuery(UNUSED struct vn_dispatch_context *dispatch,
460                            struct vn_command_vkCmdEndQuery *args)
461 {
462    VKR_CMD_CALL(CmdEndQuery, args, args->queryPool, args->query);
463 }
464 
465 static void
vkr_dispatch_vkCmdResetQueryPool(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdResetQueryPool * args)466 vkr_dispatch_vkCmdResetQueryPool(UNUSED struct vn_dispatch_context *dispatch,
467                                  struct vn_command_vkCmdResetQueryPool *args)
468 {
469    VKR_CMD_CALL(CmdResetQueryPool, args, args->queryPool, args->firstQuery,
470                 args->queryCount);
471 }
472 
473 static void
vkr_dispatch_vkCmdWriteTimestamp(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdWriteTimestamp * args)474 vkr_dispatch_vkCmdWriteTimestamp(UNUSED struct vn_dispatch_context *dispatch,
475                                  struct vn_command_vkCmdWriteTimestamp *args)
476 {
477    VKR_CMD_CALL(CmdWriteTimestamp, args, args->pipelineStage, args->queryPool,
478                 args->query);
479 }
480 
481 static void
vkr_dispatch_vkCmdCopyQueryPoolResults(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdCopyQueryPoolResults * args)482 vkr_dispatch_vkCmdCopyQueryPoolResults(UNUSED struct vn_dispatch_context *dispatch,
483                                        struct vn_command_vkCmdCopyQueryPoolResults *args)
484 {
485    VKR_CMD_CALL(CmdCopyQueryPoolResults, args, args->queryPool, args->firstQuery,
486                 args->queryCount, args->dstBuffer, args->dstOffset, args->stride,
487                 args->flags);
488 }
489 
490 static void
vkr_dispatch_vkCmdPushConstants(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdPushConstants * args)491 vkr_dispatch_vkCmdPushConstants(UNUSED struct vn_dispatch_context *dispatch,
492                                 struct vn_command_vkCmdPushConstants *args)
493 {
494    VKR_CMD_CALL(CmdPushConstants, args, args->layout, args->stageFlags, args->offset,
495                 args->size, args->pValues);
496 }
497 
498 static void
vkr_dispatch_vkCmdBeginRenderPass(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdBeginRenderPass * args)499 vkr_dispatch_vkCmdBeginRenderPass(UNUSED struct vn_dispatch_context *dispatch,
500                                   struct vn_command_vkCmdBeginRenderPass *args)
501 {
502    VKR_CMD_CALL(CmdBeginRenderPass, args, args->pRenderPassBegin, args->contents);
503 }
504 
505 static void
vkr_dispatch_vkCmdNextSubpass(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdNextSubpass * args)506 vkr_dispatch_vkCmdNextSubpass(UNUSED struct vn_dispatch_context *dispatch,
507                               struct vn_command_vkCmdNextSubpass *args)
508 {
509    VKR_CMD_CALL(CmdNextSubpass, args, args->contents);
510 }
511 
512 static void
vkr_dispatch_vkCmdEndRenderPass(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdEndRenderPass * args)513 vkr_dispatch_vkCmdEndRenderPass(UNUSED struct vn_dispatch_context *dispatch,
514                                 struct vn_command_vkCmdEndRenderPass *args)
515 {
516    VKR_CMD_CALL(CmdEndRenderPass, args);
517 }
518 
519 static void
vkr_dispatch_vkCmdExecuteCommands(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdExecuteCommands * args)520 vkr_dispatch_vkCmdExecuteCommands(UNUSED struct vn_dispatch_context *dispatch,
521                                   struct vn_command_vkCmdExecuteCommands *args)
522 {
523    VKR_CMD_CALL(CmdExecuteCommands, args, args->commandBufferCount,
524                 args->pCommandBuffers);
525 }
526 
527 static void
vkr_dispatch_vkCmdSetDeviceMask(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdSetDeviceMask * args)528 vkr_dispatch_vkCmdSetDeviceMask(UNUSED struct vn_dispatch_context *dispatch,
529                                 struct vn_command_vkCmdSetDeviceMask *args)
530 {
531    VKR_CMD_CALL(CmdSetDeviceMask, args, args->deviceMask);
532 }
533 
534 static void
vkr_dispatch_vkCmdDispatchBase(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdDispatchBase * args)535 vkr_dispatch_vkCmdDispatchBase(UNUSED struct vn_dispatch_context *dispatch,
536                                struct vn_command_vkCmdDispatchBase *args)
537 {
538    VKR_CMD_CALL(CmdDispatchBase, args, args->baseGroupX, args->baseGroupY,
539                 args->baseGroupZ, args->groupCountX, args->groupCountY,
540                 args->groupCountZ);
541 }
542 
543 static void
vkr_dispatch_vkCmdBeginRenderPass2(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdBeginRenderPass2 * args)544 vkr_dispatch_vkCmdBeginRenderPass2(UNUSED struct vn_dispatch_context *dispatch,
545                                    struct vn_command_vkCmdBeginRenderPass2 *args)
546 {
547    VKR_CMD_CALL(CmdBeginRenderPass2, args, args->pRenderPassBegin,
548                 args->pSubpassBeginInfo);
549 }
550 
551 static void
vkr_dispatch_vkCmdNextSubpass2(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdNextSubpass2 * args)552 vkr_dispatch_vkCmdNextSubpass2(UNUSED struct vn_dispatch_context *dispatch,
553                                struct vn_command_vkCmdNextSubpass2 *args)
554 {
555    VKR_CMD_CALL(CmdNextSubpass2, args, args->pSubpassBeginInfo, args->pSubpassEndInfo);
556 }
557 
558 static void
vkr_dispatch_vkCmdEndRenderPass2(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdEndRenderPass2 * args)559 vkr_dispatch_vkCmdEndRenderPass2(UNUSED struct vn_dispatch_context *dispatch,
560                                  struct vn_command_vkCmdEndRenderPass2 *args)
561 {
562    VKR_CMD_CALL(CmdEndRenderPass2, args, args->pSubpassEndInfo);
563 }
564 
565 static void
vkr_dispatch_vkCmdDrawIndirectCount(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdDrawIndirectCount * args)566 vkr_dispatch_vkCmdDrawIndirectCount(UNUSED struct vn_dispatch_context *dispatch,
567                                     struct vn_command_vkCmdDrawIndirectCount *args)
568 {
569    VKR_CMD_CALL(CmdDrawIndirectCount, args, args->buffer, args->offset, args->countBuffer,
570                 args->countBufferOffset, args->maxDrawCount, args->stride);
571 }
572 
573 static void
vkr_dispatch_vkCmdDrawIndexedIndirectCount(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdDrawIndexedIndirectCount * args)574 vkr_dispatch_vkCmdDrawIndexedIndirectCount(
575    UNUSED struct vn_dispatch_context *dispatch,
576    struct vn_command_vkCmdDrawIndexedIndirectCount *args)
577 {
578    VKR_CMD_CALL(CmdDrawIndexedIndirectCount, args, args->buffer, args->offset,
579                 args->countBuffer, args->countBufferOffset, args->maxDrawCount,
580                 args->stride);
581 }
582 
583 static void
vkr_dispatch_vkCmdSetLineStippleEXT(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdSetLineStippleEXT * args)584 vkr_dispatch_vkCmdSetLineStippleEXT(UNUSED struct vn_dispatch_context *dispatch,
585                                     struct vn_command_vkCmdSetLineStippleEXT *args)
586 {
587    VKR_CMD_CALL(CmdSetLineStippleEXT, args, args->lineStippleFactor,
588                 args->lineStipplePattern);
589 }
590 
591 static void
vkr_dispatch_vkCmdBindTransformFeedbackBuffersEXT(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdBindTransformFeedbackBuffersEXT * args)592 vkr_dispatch_vkCmdBindTransformFeedbackBuffersEXT(
593    UNUSED struct vn_dispatch_context *dispatch,
594    struct vn_command_vkCmdBindTransformFeedbackBuffersEXT *args)
595 {
596    VKR_CMD_CALL(CmdBindTransformFeedbackBuffersEXT, args, args->firstBinding,
597                 args->bindingCount, args->pBuffers, args->pOffsets, args->pSizes);
598 }
599 
600 static void
vkr_dispatch_vkCmdBeginTransformFeedbackEXT(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdBeginTransformFeedbackEXT * args)601 vkr_dispatch_vkCmdBeginTransformFeedbackEXT(
602    UNUSED struct vn_dispatch_context *dispatch,
603    struct vn_command_vkCmdBeginTransformFeedbackEXT *args)
604 {
605    VKR_CMD_CALL(CmdBeginTransformFeedbackEXT, args, args->firstCounterBuffer,
606                 args->counterBufferCount, args->pCounterBuffers,
607                 args->pCounterBufferOffsets);
608 }
609 
610 static void
vkr_dispatch_vkCmdEndTransformFeedbackEXT(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdEndTransformFeedbackEXT * args)611 vkr_dispatch_vkCmdEndTransformFeedbackEXT(
612    UNUSED struct vn_dispatch_context *dispatch,
613    struct vn_command_vkCmdEndTransformFeedbackEXT *args)
614 {
615    VKR_CMD_CALL(CmdEndTransformFeedbackEXT, args, args->firstCounterBuffer,
616                 args->counterBufferCount, args->pCounterBuffers,
617                 args->pCounterBufferOffsets);
618 }
619 
620 static void
vkr_dispatch_vkCmdBeginQueryIndexedEXT(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdBeginQueryIndexedEXT * args)621 vkr_dispatch_vkCmdBeginQueryIndexedEXT(UNUSED struct vn_dispatch_context *dispatch,
622                                        struct vn_command_vkCmdBeginQueryIndexedEXT *args)
623 {
624    VKR_CMD_CALL(CmdBeginQueryIndexedEXT, args, args->queryPool, args->query, args->flags,
625                 args->index);
626 }
627 
628 static void
vkr_dispatch_vkCmdEndQueryIndexedEXT(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdEndQueryIndexedEXT * args)629 vkr_dispatch_vkCmdEndQueryIndexedEXT(UNUSED struct vn_dispatch_context *dispatch,
630                                      struct vn_command_vkCmdEndQueryIndexedEXT *args)
631 {
632    VKR_CMD_CALL(CmdEndQueryIndexedEXT, args, args->queryPool, args->query, args->index);
633 }
634 
635 static void
vkr_dispatch_vkCmdDrawIndirectByteCountEXT(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdDrawIndirectByteCountEXT * args)636 vkr_dispatch_vkCmdDrawIndirectByteCountEXT(
637    UNUSED struct vn_dispatch_context *dispatch,
638    struct vn_command_vkCmdDrawIndirectByteCountEXT *args)
639 {
640    VKR_CMD_CALL(CmdDrawIndirectByteCountEXT, args, args->instanceCount,
641                 args->firstInstance, args->counterBuffer, args->counterBufferOffset,
642                 args->counterOffset, args->vertexStride);
643 }
644 
645 static void
vkr_dispatch_vkCmdBindVertexBuffers2(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdBindVertexBuffers2 * args)646 vkr_dispatch_vkCmdBindVertexBuffers2(UNUSED struct vn_dispatch_context *dispatch,
647                                      struct vn_command_vkCmdBindVertexBuffers2 *args)
648 {
649    VKR_CMD_CALL(CmdBindVertexBuffers2, args, args->firstBinding, args->bindingCount,
650                 args->pBuffers, args->pOffsets, args->pSizes, args->pStrides);
651 }
652 
653 static void
vkr_dispatch_vkCmdSetCullMode(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdSetCullMode * args)654 vkr_dispatch_vkCmdSetCullMode(UNUSED struct vn_dispatch_context *dispatch,
655                               struct vn_command_vkCmdSetCullMode *args)
656 {
657    VKR_CMD_CALL(CmdSetCullMode, args, args->cullMode);
658 }
659 
660 static void
vkr_dispatch_vkCmdSetDepthBoundsTestEnable(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdSetDepthBoundsTestEnable * args)661 vkr_dispatch_vkCmdSetDepthBoundsTestEnable(
662    UNUSED struct vn_dispatch_context *dispatch,
663    struct vn_command_vkCmdSetDepthBoundsTestEnable *args)
664 {
665    VKR_CMD_CALL(CmdSetDepthBoundsTestEnable, args, args->depthBoundsTestEnable);
666 }
667 
668 static void
vkr_dispatch_vkCmdSetDepthCompareOp(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdSetDepthCompareOp * args)669 vkr_dispatch_vkCmdSetDepthCompareOp(UNUSED struct vn_dispatch_context *dispatch,
670                                     struct vn_command_vkCmdSetDepthCompareOp *args)
671 {
672    VKR_CMD_CALL(CmdSetDepthCompareOp, args, args->depthCompareOp);
673 }
674 
675 static void
vkr_dispatch_vkCmdSetDepthTestEnable(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdSetDepthTestEnable * args)676 vkr_dispatch_vkCmdSetDepthTestEnable(UNUSED struct vn_dispatch_context *dispatch,
677                                      struct vn_command_vkCmdSetDepthTestEnable *args)
678 {
679    VKR_CMD_CALL(CmdSetDepthTestEnable, args, args->depthTestEnable);
680 }
681 
682 static void
vkr_dispatch_vkCmdSetDepthWriteEnable(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdSetDepthWriteEnable * args)683 vkr_dispatch_vkCmdSetDepthWriteEnable(UNUSED struct vn_dispatch_context *dispatch,
684                                       struct vn_command_vkCmdSetDepthWriteEnable *args)
685 {
686    VKR_CMD_CALL(CmdSetDepthWriteEnable, args, args->depthWriteEnable);
687 }
688 
689 static void
vkr_dispatch_vkCmdSetFrontFace(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdSetFrontFace * args)690 vkr_dispatch_vkCmdSetFrontFace(UNUSED struct vn_dispatch_context *dispatch,
691                                struct vn_command_vkCmdSetFrontFace *args)
692 {
693    VKR_CMD_CALL(CmdSetFrontFace, args, args->frontFace);
694 }
695 
696 static void
vkr_dispatch_vkCmdSetPrimitiveTopology(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdSetPrimitiveTopology * args)697 vkr_dispatch_vkCmdSetPrimitiveTopology(UNUSED struct vn_dispatch_context *dispatch,
698                                        struct vn_command_vkCmdSetPrimitiveTopology *args)
699 {
700    VKR_CMD_CALL(CmdSetPrimitiveTopology, args, args->primitiveTopology);
701 }
702 
703 static void
vkr_dispatch_vkCmdSetScissorWithCount(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdSetScissorWithCount * args)704 vkr_dispatch_vkCmdSetScissorWithCount(UNUSED struct vn_dispatch_context *dispatch,
705                                       struct vn_command_vkCmdSetScissorWithCount *args)
706 {
707    VKR_CMD_CALL(CmdSetScissorWithCount, args, args->scissorCount, args->pScissors);
708 }
709 
710 static void
vkr_dispatch_vkCmdSetStencilOp(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdSetStencilOp * args)711 vkr_dispatch_vkCmdSetStencilOp(UNUSED struct vn_dispatch_context *dispatch,
712                                struct vn_command_vkCmdSetStencilOp *args)
713 {
714    VKR_CMD_CALL(CmdSetStencilOp, args, args->faceMask, args->failOp, args->passOp,
715                 args->depthFailOp, args->compareOp);
716 }
717 
718 static void
vkr_dispatch_vkCmdSetStencilTestEnable(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdSetStencilTestEnable * args)719 vkr_dispatch_vkCmdSetStencilTestEnable(UNUSED struct vn_dispatch_context *dispatch,
720                                        struct vn_command_vkCmdSetStencilTestEnable *args)
721 {
722    VKR_CMD_CALL(CmdSetStencilTestEnable, args, args->stencilTestEnable);
723 }
724 
725 static void
vkr_dispatch_vkCmdSetViewportWithCount(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdSetViewportWithCount * args)726 vkr_dispatch_vkCmdSetViewportWithCount(UNUSED struct vn_dispatch_context *dispatch,
727                                        struct vn_command_vkCmdSetViewportWithCount *args)
728 {
729    VKR_CMD_CALL(CmdSetViewportWithCount, args, args->viewportCount, args->pViewports);
730 }
731 
732 static void
vkr_dispatch_vkCmdSetDepthBiasEnable(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdSetDepthBiasEnable * args)733 vkr_dispatch_vkCmdSetDepthBiasEnable(UNUSED struct vn_dispatch_context *dispatch,
734                                      struct vn_command_vkCmdSetDepthBiasEnable *args)
735 {
736    VKR_CMD_CALL(CmdSetDepthBiasEnable, args, args->depthBiasEnable);
737 }
738 
739 static void
vkr_dispatch_vkCmdSetLogicOpEXT(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdSetLogicOpEXT * args)740 vkr_dispatch_vkCmdSetLogicOpEXT(UNUSED struct vn_dispatch_context *dispatch,
741                                 struct vn_command_vkCmdSetLogicOpEXT *args)
742 {
743    VKR_CMD_CALL(CmdSetLogicOpEXT, args, args->logicOp);
744 }
745 
746 static void
vkr_dispatch_vkCmdSetPatchControlPointsEXT(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdSetPatchControlPointsEXT * args)747 vkr_dispatch_vkCmdSetPatchControlPointsEXT(
748    UNUSED struct vn_dispatch_context *dispatch,
749    struct vn_command_vkCmdSetPatchControlPointsEXT *args)
750 {
751    VKR_CMD_CALL(CmdSetPatchControlPointsEXT, args, args->patchControlPoints);
752 }
753 
754 static void
vkr_dispatch_vkCmdSetPrimitiveRestartEnable(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdSetPrimitiveRestartEnable * args)755 vkr_dispatch_vkCmdSetPrimitiveRestartEnable(
756    UNUSED struct vn_dispatch_context *dispatch,
757    struct vn_command_vkCmdSetPrimitiveRestartEnable *args)
758 {
759    VKR_CMD_CALL(CmdSetPrimitiveRestartEnable, args, args->primitiveRestartEnable);
760 }
761 
762 static void
vkr_dispatch_vkCmdSetRasterizerDiscardEnable(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdSetRasterizerDiscardEnable * args)763 vkr_dispatch_vkCmdSetRasterizerDiscardEnable(
764    UNUSED struct vn_dispatch_context *dispatch,
765    struct vn_command_vkCmdSetRasterizerDiscardEnable *args)
766 {
767    VKR_CMD_CALL(CmdSetRasterizerDiscardEnable, args, args->rasterizerDiscardEnable);
768 }
769 
770 static void
vkr_dispatch_vkCmdBeginConditionalRenderingEXT(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdBeginConditionalRenderingEXT * args)771 vkr_dispatch_vkCmdBeginConditionalRenderingEXT(
772    UNUSED struct vn_dispatch_context *dispatch,
773    struct vn_command_vkCmdBeginConditionalRenderingEXT *args)
774 {
775    VKR_CMD_CALL(CmdBeginConditionalRenderingEXT, args, args->pConditionalRenderingBegin);
776 }
777 
778 static void
vkr_dispatch_vkCmdEndConditionalRenderingEXT(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdEndConditionalRenderingEXT * args)779 vkr_dispatch_vkCmdEndConditionalRenderingEXT(
780    UNUSED struct vn_dispatch_context *dispatch,
781    struct vn_command_vkCmdEndConditionalRenderingEXT *args)
782 {
783    VKR_CMD_CALL(CmdEndConditionalRenderingEXT, args);
784 }
785 
786 static void
vkr_dispatch_vkCmdBeginRendering(UNUSED struct vn_dispatch_context * ctx,struct vn_command_vkCmdBeginRendering * args)787 vkr_dispatch_vkCmdBeginRendering(UNUSED struct vn_dispatch_context *ctx,
788                                  struct vn_command_vkCmdBeginRendering *args)
789 {
790    VKR_CMD_CALL(CmdBeginRendering, args, args->pRenderingInfo);
791 }
792 
793 static void
vkr_dispatch_vkCmdEndRendering(UNUSED struct vn_dispatch_context * ctx,struct vn_command_vkCmdEndRendering * args)794 vkr_dispatch_vkCmdEndRendering(UNUSED struct vn_dispatch_context *ctx,
795                                struct vn_command_vkCmdEndRendering *args)
796 {
797    VKR_CMD_CALL(CmdEndRendering, args);
798 }
799 
800 static void
vkr_dispatch_vkCmdPipelineBarrier2(UNUSED struct vn_dispatch_context * ctx,struct vn_command_vkCmdPipelineBarrier2 * args)801 vkr_dispatch_vkCmdPipelineBarrier2(UNUSED struct vn_dispatch_context *ctx,
802                                    struct vn_command_vkCmdPipelineBarrier2 *args)
803 {
804    VKR_CMD_CALL(CmdPipelineBarrier2, args, args->pDependencyInfo);
805 }
806 
807 static void
vkr_dispatch_vkCmdResetEvent2(UNUSED struct vn_dispatch_context * ctx,struct vn_command_vkCmdResetEvent2 * args)808 vkr_dispatch_vkCmdResetEvent2(UNUSED struct vn_dispatch_context *ctx,
809                               struct vn_command_vkCmdResetEvent2 *args)
810 {
811    VKR_CMD_CALL(CmdResetEvent2, args, args->event, args->stageMask);
812 }
813 
814 static void
vkr_dispatch_vkCmdSetEvent2(UNUSED struct vn_dispatch_context * ctx,struct vn_command_vkCmdSetEvent2 * args)815 vkr_dispatch_vkCmdSetEvent2(UNUSED struct vn_dispatch_context *ctx,
816                             struct vn_command_vkCmdSetEvent2 *args)
817 {
818    VKR_CMD_CALL(CmdSetEvent2, args, args->event, args->pDependencyInfo);
819 }
820 
821 static void
vkr_dispatch_vkCmdWaitEvents2(UNUSED struct vn_dispatch_context * ctx,struct vn_command_vkCmdWaitEvents2 * args)822 vkr_dispatch_vkCmdWaitEvents2(UNUSED struct vn_dispatch_context *ctx,
823                               struct vn_command_vkCmdWaitEvents2 *args)
824 {
825    VKR_CMD_CALL(CmdWaitEvents2, args, args->eventCount, args->pEvents,
826                 args->pDependencyInfos);
827 }
828 
829 static void
vkr_dispatch_vkCmdWriteTimestamp2(UNUSED struct vn_dispatch_context * ctx,struct vn_command_vkCmdWriteTimestamp2 * args)830 vkr_dispatch_vkCmdWriteTimestamp2(UNUSED struct vn_dispatch_context *ctx,
831                                   struct vn_command_vkCmdWriteTimestamp2 *args)
832 {
833    VKR_CMD_CALL(CmdWriteTimestamp2, args, args->stage, args->queryPool, args->query);
834 }
835 
836 static void
vkr_dispatch_vkCmdDrawMultiEXT(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdDrawMultiEXT * args)837 vkr_dispatch_vkCmdDrawMultiEXT(UNUSED struct vn_dispatch_context *dispatch,
838                                struct vn_command_vkCmdDrawMultiEXT *args)
839 {
840    VKR_CMD_CALL(CmdDrawMultiEXT, args, args->drawCount, args->pVertexInfo,
841                 args->instanceCount, args->firstInstance, args->stride);
842 }
843 
844 static void
vkr_dispatch_vkCmdDrawMultiIndexedEXT(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdDrawMultiIndexedEXT * args)845 vkr_dispatch_vkCmdDrawMultiIndexedEXT(UNUSED struct vn_dispatch_context *dispatch,
846                                       struct vn_command_vkCmdDrawMultiIndexedEXT *args)
847 {
848    VKR_CMD_CALL(CmdDrawMultiIndexedEXT, args, args->drawCount, args->pIndexInfo,
849                 args->instanceCount, args->firstInstance, args->stride,
850                 args->pVertexOffset);
851 }
852 
853 static void
vkr_dispatch_vkCmdPushDescriptorSetKHR(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkCmdPushDescriptorSetKHR * args)854 vkr_dispatch_vkCmdPushDescriptorSetKHR(UNUSED struct vn_dispatch_context *dispatch,
855                                        struct vn_command_vkCmdPushDescriptorSetKHR *args)
856 {
857    VKR_CMD_CALL(CmdPushDescriptorSetKHR, args, args->pipelineBindPoint, args->layout,
858                 args->set, args->descriptorWriteCount, args->pDescriptorWrites);
859 }
860 
861 void
vkr_context_init_command_pool_dispatch(struct vkr_context * ctx)862 vkr_context_init_command_pool_dispatch(struct vkr_context *ctx)
863 {
864    struct vn_dispatch_context *dispatch = &ctx->dispatch;
865 
866    dispatch->dispatch_vkCreateCommandPool = vkr_dispatch_vkCreateCommandPool;
867    dispatch->dispatch_vkDestroyCommandPool = vkr_dispatch_vkDestroyCommandPool;
868    dispatch->dispatch_vkResetCommandPool = vkr_dispatch_vkResetCommandPool;
869    dispatch->dispatch_vkTrimCommandPool = vkr_dispatch_vkTrimCommandPool;
870 }
871 
872 void
vkr_context_init_command_buffer_dispatch(struct vkr_context * ctx)873 vkr_context_init_command_buffer_dispatch(struct vkr_context *ctx)
874 {
875    struct vn_dispatch_context *dispatch = &ctx->dispatch;
876 
877    dispatch->dispatch_vkAllocateCommandBuffers = vkr_dispatch_vkAllocateCommandBuffers;
878    dispatch->dispatch_vkFreeCommandBuffers = vkr_dispatch_vkFreeCommandBuffers;
879    dispatch->dispatch_vkResetCommandBuffer = vkr_dispatch_vkResetCommandBuffer;
880    dispatch->dispatch_vkBeginCommandBuffer = vkr_dispatch_vkBeginCommandBuffer;
881    dispatch->dispatch_vkEndCommandBuffer = vkr_dispatch_vkEndCommandBuffer;
882 
883    dispatch->dispatch_vkCmdBindPipeline = vkr_dispatch_vkCmdBindPipeline;
884    dispatch->dispatch_vkCmdSetViewport = vkr_dispatch_vkCmdSetViewport;
885    dispatch->dispatch_vkCmdSetScissor = vkr_dispatch_vkCmdSetScissor;
886    dispatch->dispatch_vkCmdSetLineWidth = vkr_dispatch_vkCmdSetLineWidth;
887    dispatch->dispatch_vkCmdSetDepthBias = vkr_dispatch_vkCmdSetDepthBias;
888    dispatch->dispatch_vkCmdSetBlendConstants = vkr_dispatch_vkCmdSetBlendConstants;
889    dispatch->dispatch_vkCmdSetDepthBounds = vkr_dispatch_vkCmdSetDepthBounds;
890    dispatch->dispatch_vkCmdSetStencilCompareMask =
891       vkr_dispatch_vkCmdSetStencilCompareMask;
892    dispatch->dispatch_vkCmdSetStencilWriteMask = vkr_dispatch_vkCmdSetStencilWriteMask;
893    dispatch->dispatch_vkCmdSetStencilReference = vkr_dispatch_vkCmdSetStencilReference;
894    dispatch->dispatch_vkCmdBindDescriptorSets = vkr_dispatch_vkCmdBindDescriptorSets;
895    dispatch->dispatch_vkCmdBindIndexBuffer = vkr_dispatch_vkCmdBindIndexBuffer;
896    dispatch->dispatch_vkCmdBindVertexBuffers = vkr_dispatch_vkCmdBindVertexBuffers;
897    dispatch->dispatch_vkCmdDraw = vkr_dispatch_vkCmdDraw;
898    dispatch->dispatch_vkCmdDrawIndexed = vkr_dispatch_vkCmdDrawIndexed;
899    dispatch->dispatch_vkCmdDrawIndirect = vkr_dispatch_vkCmdDrawIndirect;
900    dispatch->dispatch_vkCmdDrawIndexedIndirect = vkr_dispatch_vkCmdDrawIndexedIndirect;
901    dispatch->dispatch_vkCmdDispatch = vkr_dispatch_vkCmdDispatch;
902    dispatch->dispatch_vkCmdDispatchIndirect = vkr_dispatch_vkCmdDispatchIndirect;
903    dispatch->dispatch_vkCmdCopyBuffer = vkr_dispatch_vkCmdCopyBuffer;
904    dispatch->dispatch_vkCmdCopyBuffer2 = vkr_dispatch_vkCmdCopyBuffer2;
905    dispatch->dispatch_vkCmdCopyImage = vkr_dispatch_vkCmdCopyImage;
906    dispatch->dispatch_vkCmdCopyImage2 = vkr_dispatch_vkCmdCopyImage2;
907    dispatch->dispatch_vkCmdBlitImage = vkr_dispatch_vkCmdBlitImage;
908    dispatch->dispatch_vkCmdBlitImage2 = vkr_dispatch_vkCmdBlitImage2;
909    dispatch->dispatch_vkCmdCopyBufferToImage = vkr_dispatch_vkCmdCopyBufferToImage;
910    dispatch->dispatch_vkCmdCopyBufferToImage2 = vkr_dispatch_vkCmdCopyBufferToImage2;
911    dispatch->dispatch_vkCmdCopyImageToBuffer = vkr_dispatch_vkCmdCopyImageToBuffer;
912    dispatch->dispatch_vkCmdCopyImageToBuffer2 = vkr_dispatch_vkCmdCopyImageToBuffer2;
913    dispatch->dispatch_vkCmdUpdateBuffer = vkr_dispatch_vkCmdUpdateBuffer;
914    dispatch->dispatch_vkCmdFillBuffer = vkr_dispatch_vkCmdFillBuffer;
915    dispatch->dispatch_vkCmdClearColorImage = vkr_dispatch_vkCmdClearColorImage;
916    dispatch->dispatch_vkCmdClearDepthStencilImage =
917       vkr_dispatch_vkCmdClearDepthStencilImage;
918    dispatch->dispatch_vkCmdClearAttachments = vkr_dispatch_vkCmdClearAttachments;
919    dispatch->dispatch_vkCmdResolveImage = vkr_dispatch_vkCmdResolveImage;
920    dispatch->dispatch_vkCmdResolveImage2 = vkr_dispatch_vkCmdResolveImage2;
921    dispatch->dispatch_vkCmdSetEvent = vkr_dispatch_vkCmdSetEvent;
922    dispatch->dispatch_vkCmdResetEvent = vkr_dispatch_vkCmdResetEvent;
923    dispatch->dispatch_vkCmdWaitEvents = vkr_dispatch_vkCmdWaitEvents;
924    dispatch->dispatch_vkCmdPipelineBarrier = vkr_dispatch_vkCmdPipelineBarrier;
925    dispatch->dispatch_vkCmdBeginQuery = vkr_dispatch_vkCmdBeginQuery;
926    dispatch->dispatch_vkCmdEndQuery = vkr_dispatch_vkCmdEndQuery;
927    dispatch->dispatch_vkCmdResetQueryPool = vkr_dispatch_vkCmdResetQueryPool;
928    dispatch->dispatch_vkCmdWriteTimestamp = vkr_dispatch_vkCmdWriteTimestamp;
929    dispatch->dispatch_vkCmdCopyQueryPoolResults = vkr_dispatch_vkCmdCopyQueryPoolResults;
930    dispatch->dispatch_vkCmdPushConstants = vkr_dispatch_vkCmdPushConstants;
931    dispatch->dispatch_vkCmdBeginRenderPass = vkr_dispatch_vkCmdBeginRenderPass;
932    dispatch->dispatch_vkCmdNextSubpass = vkr_dispatch_vkCmdNextSubpass;
933    dispatch->dispatch_vkCmdEndRenderPass = vkr_dispatch_vkCmdEndRenderPass;
934    dispatch->dispatch_vkCmdExecuteCommands = vkr_dispatch_vkCmdExecuteCommands;
935    dispatch->dispatch_vkCmdSetDeviceMask = vkr_dispatch_vkCmdSetDeviceMask;
936    dispatch->dispatch_vkCmdDispatchBase = vkr_dispatch_vkCmdDispatchBase;
937    dispatch->dispatch_vkCmdBeginRenderPass2 = vkr_dispatch_vkCmdBeginRenderPass2;
938    dispatch->dispatch_vkCmdNextSubpass2 = vkr_dispatch_vkCmdNextSubpass2;
939    dispatch->dispatch_vkCmdEndRenderPass2 = vkr_dispatch_vkCmdEndRenderPass2;
940    dispatch->dispatch_vkCmdDrawIndirectCount = vkr_dispatch_vkCmdDrawIndirectCount;
941    dispatch->dispatch_vkCmdDrawIndexedIndirectCount =
942       vkr_dispatch_vkCmdDrawIndexedIndirectCount;
943 
944    dispatch->dispatch_vkCmdSetLineStippleEXT = vkr_dispatch_vkCmdSetLineStippleEXT;
945 
946    dispatch->dispatch_vkCmdBindTransformFeedbackBuffersEXT =
947       vkr_dispatch_vkCmdBindTransformFeedbackBuffersEXT;
948    dispatch->dispatch_vkCmdBeginTransformFeedbackEXT =
949       vkr_dispatch_vkCmdBeginTransformFeedbackEXT;
950    dispatch->dispatch_vkCmdEndTransformFeedbackEXT =
951       vkr_dispatch_vkCmdEndTransformFeedbackEXT;
952    dispatch->dispatch_vkCmdBeginQueryIndexedEXT = vkr_dispatch_vkCmdBeginQueryIndexedEXT;
953    dispatch->dispatch_vkCmdEndQueryIndexedEXT = vkr_dispatch_vkCmdEndQueryIndexedEXT;
954    dispatch->dispatch_vkCmdDrawIndirectByteCountEXT =
955       vkr_dispatch_vkCmdDrawIndirectByteCountEXT;
956 
957    dispatch->dispatch_vkCmdBindVertexBuffers2 = vkr_dispatch_vkCmdBindVertexBuffers2;
958    dispatch->dispatch_vkCmdSetCullMode = vkr_dispatch_vkCmdSetCullMode;
959    dispatch->dispatch_vkCmdSetDepthBoundsTestEnable =
960       vkr_dispatch_vkCmdSetDepthBoundsTestEnable;
961    dispatch->dispatch_vkCmdSetDepthCompareOp = vkr_dispatch_vkCmdSetDepthCompareOp;
962    dispatch->dispatch_vkCmdSetDepthTestEnable = vkr_dispatch_vkCmdSetDepthTestEnable;
963    dispatch->dispatch_vkCmdSetDepthWriteEnable = vkr_dispatch_vkCmdSetDepthWriteEnable;
964    dispatch->dispatch_vkCmdSetFrontFace = vkr_dispatch_vkCmdSetFrontFace;
965    dispatch->dispatch_vkCmdSetPrimitiveTopology = vkr_dispatch_vkCmdSetPrimitiveTopology;
966    dispatch->dispatch_vkCmdSetScissorWithCount = vkr_dispatch_vkCmdSetScissorWithCount;
967    dispatch->dispatch_vkCmdSetStencilOp = vkr_dispatch_vkCmdSetStencilOp;
968    dispatch->dispatch_vkCmdSetStencilTestEnable = vkr_dispatch_vkCmdSetStencilTestEnable;
969    dispatch->dispatch_vkCmdSetViewportWithCount = vkr_dispatch_vkCmdSetViewportWithCount;
970 
971    /* VK_KHR_dynamic_rendering */
972    dispatch->dispatch_vkCmdBeginRendering = vkr_dispatch_vkCmdBeginRendering;
973    dispatch->dispatch_vkCmdEndRendering = vkr_dispatch_vkCmdEndRendering;
974 
975    /* VK_KHR_synchronization2 */
976    dispatch->dispatch_vkCmdPipelineBarrier2 = vkr_dispatch_vkCmdPipelineBarrier2;
977    dispatch->dispatch_vkCmdResetEvent2 = vkr_dispatch_vkCmdResetEvent2;
978    dispatch->dispatch_vkCmdSetEvent2 = vkr_dispatch_vkCmdSetEvent2;
979    dispatch->dispatch_vkCmdWaitEvents2 = vkr_dispatch_vkCmdWaitEvents2;
980    dispatch->dispatch_vkCmdWriteTimestamp2 = vkr_dispatch_vkCmdWriteTimestamp2;
981 
982    /* VK_EXT_extended_dynamic_state2 */
983    dispatch->dispatch_vkCmdSetRasterizerDiscardEnable =
984       vkr_dispatch_vkCmdSetRasterizerDiscardEnable;
985    dispatch->dispatch_vkCmdSetPrimitiveRestartEnable =
986       vkr_dispatch_vkCmdSetPrimitiveRestartEnable;
987    dispatch->dispatch_vkCmdSetPatchControlPointsEXT =
988       vkr_dispatch_vkCmdSetPatchControlPointsEXT;
989    dispatch->dispatch_vkCmdSetLogicOpEXT = vkr_dispatch_vkCmdSetLogicOpEXT;
990    dispatch->dispatch_vkCmdSetDepthBiasEnable = vkr_dispatch_vkCmdSetDepthBiasEnable;
991 
992    /* VK_EXT_conditional_rendering */
993    dispatch->dispatch_vkCmdBeginConditionalRenderingEXT =
994       vkr_dispatch_vkCmdBeginConditionalRenderingEXT;
995    dispatch->dispatch_vkCmdEndConditionalRenderingEXT =
996       vkr_dispatch_vkCmdEndConditionalRenderingEXT;
997 
998    /* VK_EXT_multi_draw */
999    dispatch->dispatch_vkCmdDrawMultiEXT = vkr_dispatch_vkCmdDrawMultiEXT;
1000    dispatch->dispatch_vkCmdDrawMultiIndexedEXT = vkr_dispatch_vkCmdDrawMultiIndexedEXT;
1001 
1002    /* VK_KHR_push_descriptor */
1003    dispatch->dispatch_vkCmdPushDescriptorSetKHR = vkr_dispatch_vkCmdPushDescriptorSetKHR;
1004    dispatch->dispatch_vkCmdPushDescriptorSetWithTemplateKHR = NULL;
1005 }
1006