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