1 /* This file is generated by venus-protocol. See vn_protocol_renderer.h. */
2
3 /*
4 * Copyright 2020 Google LLC
5 * SPDX-License-Identifier: MIT
6 */
7
8 #ifndef VN_PROTOCOL_RENDERER_INSTANCE_H
9 #define VN_PROTOCOL_RENDERER_INSTANCE_H
10
11 #include "vn_protocol_renderer_structs.h"
12
13 #pragma GCC diagnostic push
14 #pragma GCC diagnostic ignored "-Wpointer-arith"
15 #pragma GCC diagnostic ignored "-Wunused-parameter"
16
17 /*
18 * These structs/unions/commands are not included
19 *
20 * vkGetInstanceProcAddr
21 */
22
23 /* struct VkApplicationInfo chain */
24
25 static inline void *
vn_decode_VkApplicationInfo_pnext_temp(struct vn_cs_decoder * dec)26 vn_decode_VkApplicationInfo_pnext_temp(struct vn_cs_decoder *dec)
27 {
28 /* no known/supported struct */
29 if (vn_decode_simple_pointer(dec))
30 vn_cs_decoder_set_fatal(dec);
31 return NULL;
32 }
33
34 static inline void
vn_decode_VkApplicationInfo_self_temp(struct vn_cs_decoder * dec,VkApplicationInfo * val)35 vn_decode_VkApplicationInfo_self_temp(struct vn_cs_decoder *dec, VkApplicationInfo *val)
36 {
37 /* skip val->{sType,pNext} */
38 if (vn_peek_array_size(dec)) {
39 const size_t string_size = vn_decode_array_size_unchecked(dec);
40 val->pApplicationName = vn_cs_decoder_alloc_temp(dec, sizeof(*val->pApplicationName) * string_size);
41 if (!val->pApplicationName) return;
42 vn_decode_char_array(dec, (char *)val->pApplicationName, string_size);
43 } else {
44 vn_decode_array_size_unchecked(dec);
45 val->pApplicationName = NULL;
46 }
47 vn_decode_uint32_t(dec, &val->applicationVersion);
48 if (vn_peek_array_size(dec)) {
49 const size_t string_size = vn_decode_array_size_unchecked(dec);
50 val->pEngineName = vn_cs_decoder_alloc_temp(dec, sizeof(*val->pEngineName) * string_size);
51 if (!val->pEngineName) return;
52 vn_decode_char_array(dec, (char *)val->pEngineName, string_size);
53 } else {
54 vn_decode_array_size_unchecked(dec);
55 val->pEngineName = NULL;
56 }
57 vn_decode_uint32_t(dec, &val->engineVersion);
58 vn_decode_uint32_t(dec, &val->apiVersion);
59 }
60
61 static inline void
vn_decode_VkApplicationInfo_temp(struct vn_cs_decoder * dec,VkApplicationInfo * val)62 vn_decode_VkApplicationInfo_temp(struct vn_cs_decoder *dec, VkApplicationInfo *val)
63 {
64 VkStructureType stype;
65 vn_decode_VkStructureType(dec, &stype);
66 if (stype != VK_STRUCTURE_TYPE_APPLICATION_INFO)
67 vn_cs_decoder_set_fatal(dec);
68
69 val->sType = stype;
70 val->pNext = vn_decode_VkApplicationInfo_pnext_temp(dec);
71 vn_decode_VkApplicationInfo_self_temp(dec, val);
72 }
73
74 static inline void
vn_replace_VkApplicationInfo_handle_self(VkApplicationInfo * val)75 vn_replace_VkApplicationInfo_handle_self(VkApplicationInfo *val)
76 {
77 /* skip val->sType */
78 /* skip val->pNext */
79 /* skip val->pApplicationName */
80 /* skip val->applicationVersion */
81 /* skip val->pEngineName */
82 /* skip val->engineVersion */
83 /* skip val->apiVersion */
84 }
85
86 static inline void
vn_replace_VkApplicationInfo_handle(VkApplicationInfo * val)87 vn_replace_VkApplicationInfo_handle(VkApplicationInfo *val)
88 {
89 struct VkBaseOutStructure *pnext = (struct VkBaseOutStructure *)val;
90
91 do {
92 switch ((int32_t)pnext->sType) {
93 case VK_STRUCTURE_TYPE_APPLICATION_INFO:
94 vn_replace_VkApplicationInfo_handle_self((VkApplicationInfo *)pnext);
95 break;
96 default:
97 /* ignore unknown/unsupported struct */
98 break;
99 }
100 pnext = pnext->pNext;
101 } while (pnext);
102 }
103
104 /* struct VkInstanceCreateInfo chain */
105
106 static inline void *
vn_decode_VkInstanceCreateInfo_pnext_temp(struct vn_cs_decoder * dec)107 vn_decode_VkInstanceCreateInfo_pnext_temp(struct vn_cs_decoder *dec)
108 {
109 /* no known/supported struct */
110 if (vn_decode_simple_pointer(dec))
111 vn_cs_decoder_set_fatal(dec);
112 return NULL;
113 }
114
115 static inline void
vn_decode_VkInstanceCreateInfo_self_temp(struct vn_cs_decoder * dec,VkInstanceCreateInfo * val)116 vn_decode_VkInstanceCreateInfo_self_temp(struct vn_cs_decoder *dec, VkInstanceCreateInfo *val)
117 {
118 /* skip val->{sType,pNext} */
119 vn_decode_VkFlags(dec, &val->flags);
120 if (vn_decode_simple_pointer(dec)) {
121 val->pApplicationInfo = vn_cs_decoder_alloc_temp(dec, sizeof(*val->pApplicationInfo));
122 if (!val->pApplicationInfo) return;
123 vn_decode_VkApplicationInfo_temp(dec, (VkApplicationInfo *)val->pApplicationInfo);
124 } else {
125 val->pApplicationInfo = NULL;
126 }
127 vn_decode_uint32_t(dec, &val->enabledLayerCount);
128 if (vn_peek_array_size(dec)) {
129 const uint32_t iter_count = vn_decode_array_size(dec, val->enabledLayerCount);
130 val->ppEnabledLayerNames = vn_cs_decoder_alloc_temp(dec, sizeof(*val->ppEnabledLayerNames) * iter_count);
131 if (!val->ppEnabledLayerNames) return;
132 for (uint32_t i = 0; i < iter_count; i++) {
133 const size_t string_size = vn_decode_array_size_unchecked(dec);
134 ((char **)val->ppEnabledLayerNames)[i] = vn_cs_decoder_alloc_temp(dec, sizeof(*val->ppEnabledLayerNames[i]) * string_size);
135 if (!val->ppEnabledLayerNames[i]) return;
136 vn_decode_char_array(dec, ((char **)val->ppEnabledLayerNames)[i], string_size);
137 }
138 } else {
139 vn_decode_array_size(dec, val->enabledLayerCount);
140 val->ppEnabledLayerNames = NULL;
141 }
142 vn_decode_uint32_t(dec, &val->enabledExtensionCount);
143 if (vn_peek_array_size(dec)) {
144 const uint32_t iter_count = vn_decode_array_size(dec, val->enabledExtensionCount);
145 val->ppEnabledExtensionNames = vn_cs_decoder_alloc_temp(dec, sizeof(*val->ppEnabledExtensionNames) * iter_count);
146 if (!val->ppEnabledExtensionNames) return;
147 for (uint32_t i = 0; i < iter_count; i++) {
148 const size_t string_size = vn_decode_array_size_unchecked(dec);
149 ((char **)val->ppEnabledExtensionNames)[i] = vn_cs_decoder_alloc_temp(dec, sizeof(*val->ppEnabledExtensionNames[i]) * string_size);
150 if (!val->ppEnabledExtensionNames[i]) return;
151 vn_decode_char_array(dec, ((char **)val->ppEnabledExtensionNames)[i], string_size);
152 }
153 } else {
154 vn_decode_array_size(dec, val->enabledExtensionCount);
155 val->ppEnabledExtensionNames = NULL;
156 }
157 }
158
159 static inline void
vn_decode_VkInstanceCreateInfo_temp(struct vn_cs_decoder * dec,VkInstanceCreateInfo * val)160 vn_decode_VkInstanceCreateInfo_temp(struct vn_cs_decoder *dec, VkInstanceCreateInfo *val)
161 {
162 VkStructureType stype;
163 vn_decode_VkStructureType(dec, &stype);
164 if (stype != VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO)
165 vn_cs_decoder_set_fatal(dec);
166
167 val->sType = stype;
168 val->pNext = vn_decode_VkInstanceCreateInfo_pnext_temp(dec);
169 vn_decode_VkInstanceCreateInfo_self_temp(dec, val);
170 }
171
172 static inline void
vn_replace_VkInstanceCreateInfo_handle_self(VkInstanceCreateInfo * val)173 vn_replace_VkInstanceCreateInfo_handle_self(VkInstanceCreateInfo *val)
174 {
175 /* skip val->sType */
176 /* skip val->pNext */
177 /* skip val->flags */
178 if (val->pApplicationInfo)
179 vn_replace_VkApplicationInfo_handle((VkApplicationInfo *)val->pApplicationInfo);
180 /* skip val->enabledLayerCount */
181 /* skip val->ppEnabledLayerNames */
182 /* skip val->enabledExtensionCount */
183 /* skip val->ppEnabledExtensionNames */
184 }
185
186 static inline void
vn_replace_VkInstanceCreateInfo_handle(VkInstanceCreateInfo * val)187 vn_replace_VkInstanceCreateInfo_handle(VkInstanceCreateInfo *val)
188 {
189 struct VkBaseOutStructure *pnext = (struct VkBaseOutStructure *)val;
190
191 do {
192 switch ((int32_t)pnext->sType) {
193 case VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO:
194 vn_replace_VkInstanceCreateInfo_handle_self((VkInstanceCreateInfo *)pnext);
195 break;
196 default:
197 /* ignore unknown/unsupported struct */
198 break;
199 }
200 pnext = pnext->pNext;
201 } while (pnext);
202 }
203
vn_decode_vkCreateInstance_args_temp(struct vn_cs_decoder * dec,struct vn_command_vkCreateInstance * args)204 static inline void vn_decode_vkCreateInstance_args_temp(struct vn_cs_decoder *dec, struct vn_command_vkCreateInstance *args)
205 {
206 if (vn_decode_simple_pointer(dec)) {
207 args->pCreateInfo = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pCreateInfo));
208 if (!args->pCreateInfo) return;
209 vn_decode_VkInstanceCreateInfo_temp(dec, (VkInstanceCreateInfo *)args->pCreateInfo);
210 } else {
211 args->pCreateInfo = NULL;
212 vn_cs_decoder_set_fatal(dec);
213 }
214 if (vn_decode_simple_pointer(dec)) {
215 vn_cs_decoder_set_fatal(dec);
216 } else {
217 args->pAllocator = NULL;
218 }
219 if (vn_decode_simple_pointer(dec)) {
220 args->pInstance = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pInstance));
221 if (!args->pInstance) return;
222 vn_decode_VkInstance_temp(dec, args->pInstance);
223 } else {
224 args->pInstance = NULL;
225 vn_cs_decoder_set_fatal(dec);
226 }
227 }
228
vn_replace_vkCreateInstance_args_handle(struct vn_command_vkCreateInstance * args)229 static inline void vn_replace_vkCreateInstance_args_handle(struct vn_command_vkCreateInstance *args)
230 {
231 if (args->pCreateInfo)
232 vn_replace_VkInstanceCreateInfo_handle((VkInstanceCreateInfo *)args->pCreateInfo);
233 /* skip args->pAllocator */
234 /* skip args->pInstance */
235 }
236
vn_encode_vkCreateInstance_reply(struct vn_cs_encoder * enc,const struct vn_command_vkCreateInstance * args)237 static inline void vn_encode_vkCreateInstance_reply(struct vn_cs_encoder *enc, const struct vn_command_vkCreateInstance *args)
238 {
239 vn_encode_VkCommandTypeEXT(enc, &(VkCommandTypeEXT){VK_COMMAND_TYPE_vkCreateInstance_EXT});
240
241 vn_encode_VkResult(enc, &args->ret);
242 /* skip args->pCreateInfo */
243 /* skip args->pAllocator */
244 if (vn_encode_simple_pointer(enc, args->pInstance))
245 vn_encode_VkInstance(enc, args->pInstance);
246 }
247
vn_decode_vkDestroyInstance_args_temp(struct vn_cs_decoder * dec,struct vn_command_vkDestroyInstance * args)248 static inline void vn_decode_vkDestroyInstance_args_temp(struct vn_cs_decoder *dec, struct vn_command_vkDestroyInstance *args)
249 {
250 vn_decode_VkInstance_lookup(dec, &args->instance);
251 if (vn_decode_simple_pointer(dec)) {
252 vn_cs_decoder_set_fatal(dec);
253 } else {
254 args->pAllocator = NULL;
255 }
256 }
257
vn_replace_vkDestroyInstance_args_handle(struct vn_command_vkDestroyInstance * args)258 static inline void vn_replace_vkDestroyInstance_args_handle(struct vn_command_vkDestroyInstance *args)
259 {
260 vn_replace_VkInstance_handle(&args->instance);
261 /* skip args->pAllocator */
262 }
263
vn_encode_vkDestroyInstance_reply(struct vn_cs_encoder * enc,const struct vn_command_vkDestroyInstance * args)264 static inline void vn_encode_vkDestroyInstance_reply(struct vn_cs_encoder *enc, const struct vn_command_vkDestroyInstance *args)
265 {
266 vn_encode_VkCommandTypeEXT(enc, &(VkCommandTypeEXT){VK_COMMAND_TYPE_vkDestroyInstance_EXT});
267
268 /* skip args->instance */
269 /* skip args->pAllocator */
270 }
271
vn_decode_vkEnumerateInstanceVersion_args_temp(struct vn_cs_decoder * dec,struct vn_command_vkEnumerateInstanceVersion * args)272 static inline void vn_decode_vkEnumerateInstanceVersion_args_temp(struct vn_cs_decoder *dec, struct vn_command_vkEnumerateInstanceVersion *args)
273 {
274 if (vn_decode_simple_pointer(dec)) {
275 args->pApiVersion = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pApiVersion));
276 if (!args->pApiVersion) return;
277 } else {
278 args->pApiVersion = NULL;
279 vn_cs_decoder_set_fatal(dec);
280 }
281 }
282
vn_replace_vkEnumerateInstanceVersion_args_handle(struct vn_command_vkEnumerateInstanceVersion * args)283 static inline void vn_replace_vkEnumerateInstanceVersion_args_handle(struct vn_command_vkEnumerateInstanceVersion *args)
284 {
285 /* skip args->pApiVersion */
286 }
287
vn_encode_vkEnumerateInstanceVersion_reply(struct vn_cs_encoder * enc,const struct vn_command_vkEnumerateInstanceVersion * args)288 static inline void vn_encode_vkEnumerateInstanceVersion_reply(struct vn_cs_encoder *enc, const struct vn_command_vkEnumerateInstanceVersion *args)
289 {
290 vn_encode_VkCommandTypeEXT(enc, &(VkCommandTypeEXT){VK_COMMAND_TYPE_vkEnumerateInstanceVersion_EXT});
291
292 vn_encode_VkResult(enc, &args->ret);
293 if (vn_encode_simple_pointer(enc, args->pApiVersion))
294 vn_encode_uint32_t(enc, args->pApiVersion);
295 }
296
vn_decode_vkEnumerateInstanceLayerProperties_args_temp(struct vn_cs_decoder * dec,struct vn_command_vkEnumerateInstanceLayerProperties * args)297 static inline void vn_decode_vkEnumerateInstanceLayerProperties_args_temp(struct vn_cs_decoder *dec, struct vn_command_vkEnumerateInstanceLayerProperties *args)
298 {
299 if (vn_decode_simple_pointer(dec)) {
300 args->pPropertyCount = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pPropertyCount));
301 if (!args->pPropertyCount) return;
302 vn_decode_uint32_t(dec, args->pPropertyCount);
303 } else {
304 args->pPropertyCount = NULL;
305 vn_cs_decoder_set_fatal(dec);
306 }
307 if (vn_peek_array_size(dec)) {
308 const uint32_t iter_count = vn_decode_array_size(dec, (args->pPropertyCount ? *args->pPropertyCount : 0));
309 args->pProperties = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pProperties) * iter_count);
310 if (!args->pProperties) return;
311 for (uint32_t i = 0; i < iter_count; i++)
312 vn_decode_VkLayerProperties_partial_temp(dec, &args->pProperties[i]);
313 } else {
314 vn_decode_array_size_unchecked(dec);
315 args->pProperties = NULL;
316 }
317 }
318
vn_replace_vkEnumerateInstanceLayerProperties_args_handle(struct vn_command_vkEnumerateInstanceLayerProperties * args)319 static inline void vn_replace_vkEnumerateInstanceLayerProperties_args_handle(struct vn_command_vkEnumerateInstanceLayerProperties *args)
320 {
321 /* skip args->pPropertyCount */
322 /* skip args->pProperties */
323 }
324
vn_encode_vkEnumerateInstanceLayerProperties_reply(struct vn_cs_encoder * enc,const struct vn_command_vkEnumerateInstanceLayerProperties * args)325 static inline void vn_encode_vkEnumerateInstanceLayerProperties_reply(struct vn_cs_encoder *enc, const struct vn_command_vkEnumerateInstanceLayerProperties *args)
326 {
327 vn_encode_VkCommandTypeEXT(enc, &(VkCommandTypeEXT){VK_COMMAND_TYPE_vkEnumerateInstanceLayerProperties_EXT});
328
329 vn_encode_VkResult(enc, &args->ret);
330 if (vn_encode_simple_pointer(enc, args->pPropertyCount))
331 vn_encode_uint32_t(enc, args->pPropertyCount);
332 if (args->pProperties) {
333 vn_encode_array_size(enc, (args->pPropertyCount ? *args->pPropertyCount : 0));
334 for (uint32_t i = 0; i < (args->pPropertyCount ? *args->pPropertyCount : 0); i++)
335 vn_encode_VkLayerProperties(enc, &args->pProperties[i]);
336 } else {
337 vn_encode_array_size(enc, 0);
338 }
339 }
340
vn_decode_vkEnumerateInstanceExtensionProperties_args_temp(struct vn_cs_decoder * dec,struct vn_command_vkEnumerateInstanceExtensionProperties * args)341 static inline void vn_decode_vkEnumerateInstanceExtensionProperties_args_temp(struct vn_cs_decoder *dec, struct vn_command_vkEnumerateInstanceExtensionProperties *args)
342 {
343 if (vn_peek_array_size(dec)) {
344 const size_t string_size = vn_decode_array_size_unchecked(dec);
345 args->pLayerName = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pLayerName) * string_size);
346 if (!args->pLayerName) return;
347 vn_decode_char_array(dec, (char *)args->pLayerName, string_size);
348 } else {
349 vn_decode_array_size_unchecked(dec);
350 args->pLayerName = NULL;
351 }
352 if (vn_decode_simple_pointer(dec)) {
353 args->pPropertyCount = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pPropertyCount));
354 if (!args->pPropertyCount) return;
355 vn_decode_uint32_t(dec, args->pPropertyCount);
356 } else {
357 args->pPropertyCount = NULL;
358 vn_cs_decoder_set_fatal(dec);
359 }
360 if (vn_peek_array_size(dec)) {
361 const uint32_t iter_count = vn_decode_array_size(dec, (args->pPropertyCount ? *args->pPropertyCount : 0));
362 args->pProperties = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pProperties) * iter_count);
363 if (!args->pProperties) return;
364 for (uint32_t i = 0; i < iter_count; i++)
365 vn_decode_VkExtensionProperties_partial_temp(dec, &args->pProperties[i]);
366 } else {
367 vn_decode_array_size_unchecked(dec);
368 args->pProperties = NULL;
369 }
370 }
371
vn_replace_vkEnumerateInstanceExtensionProperties_args_handle(struct vn_command_vkEnumerateInstanceExtensionProperties * args)372 static inline void vn_replace_vkEnumerateInstanceExtensionProperties_args_handle(struct vn_command_vkEnumerateInstanceExtensionProperties *args)
373 {
374 /* skip args->pLayerName */
375 /* skip args->pPropertyCount */
376 /* skip args->pProperties */
377 }
378
vn_encode_vkEnumerateInstanceExtensionProperties_reply(struct vn_cs_encoder * enc,const struct vn_command_vkEnumerateInstanceExtensionProperties * args)379 static inline void vn_encode_vkEnumerateInstanceExtensionProperties_reply(struct vn_cs_encoder *enc, const struct vn_command_vkEnumerateInstanceExtensionProperties *args)
380 {
381 vn_encode_VkCommandTypeEXT(enc, &(VkCommandTypeEXT){VK_COMMAND_TYPE_vkEnumerateInstanceExtensionProperties_EXT});
382
383 vn_encode_VkResult(enc, &args->ret);
384 /* skip args->pLayerName */
385 if (vn_encode_simple_pointer(enc, args->pPropertyCount))
386 vn_encode_uint32_t(enc, args->pPropertyCount);
387 if (args->pProperties) {
388 vn_encode_array_size(enc, (args->pPropertyCount ? *args->pPropertyCount : 0));
389 for (uint32_t i = 0; i < (args->pPropertyCount ? *args->pPropertyCount : 0); i++)
390 vn_encode_VkExtensionProperties(enc, &args->pProperties[i]);
391 } else {
392 vn_encode_array_size(enc, 0);
393 }
394 }
395
vn_dispatch_vkCreateInstance(struct vn_dispatch_context * ctx,VkCommandFlagsEXT flags)396 static inline void vn_dispatch_vkCreateInstance(struct vn_dispatch_context *ctx, VkCommandFlagsEXT flags)
397 {
398 struct vn_command_vkCreateInstance args;
399
400 if (!ctx->dispatch_vkCreateInstance) {
401 vn_cs_decoder_set_fatal(ctx->decoder);
402 return;
403 }
404
405 vn_decode_vkCreateInstance_args_temp(ctx->decoder, &args);
406
407 if (!vn_cs_decoder_get_fatal(ctx->decoder))
408 ctx->dispatch_vkCreateInstance(ctx, &args);
409
410 #ifdef DEBUG
411 if (!vn_cs_decoder_get_fatal(ctx->decoder) && vn_dispatch_should_log_result(args.ret))
412 vn_dispatch_debug_log(ctx, "vkCreateInstance returned %d", args.ret);
413 #endif
414
415 if (!vn_cs_decoder_get_fatal(ctx->decoder) && (flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT))
416 vn_encode_vkCreateInstance_reply(ctx->encoder, &args);
417
418 vn_cs_decoder_reset_temp_pool(ctx->decoder);
419 }
420
vn_dispatch_vkDestroyInstance(struct vn_dispatch_context * ctx,VkCommandFlagsEXT flags)421 static inline void vn_dispatch_vkDestroyInstance(struct vn_dispatch_context *ctx, VkCommandFlagsEXT flags)
422 {
423 struct vn_command_vkDestroyInstance args;
424
425 if (!ctx->dispatch_vkDestroyInstance) {
426 vn_cs_decoder_set_fatal(ctx->decoder);
427 return;
428 }
429
430 vn_decode_vkDestroyInstance_args_temp(ctx->decoder, &args);
431 if (!args.instance) {
432 vn_cs_decoder_set_fatal(ctx->decoder);
433 return;
434 }
435
436 if (!vn_cs_decoder_get_fatal(ctx->decoder))
437 ctx->dispatch_vkDestroyInstance(ctx, &args);
438
439
440 if (!vn_cs_decoder_get_fatal(ctx->decoder) && (flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT))
441 vn_encode_vkDestroyInstance_reply(ctx->encoder, &args);
442
443 vn_cs_decoder_reset_temp_pool(ctx->decoder);
444 }
445
vn_dispatch_vkEnumerateInstanceVersion(struct vn_dispatch_context * ctx,VkCommandFlagsEXT flags)446 static inline void vn_dispatch_vkEnumerateInstanceVersion(struct vn_dispatch_context *ctx, VkCommandFlagsEXT flags)
447 {
448 struct vn_command_vkEnumerateInstanceVersion args;
449
450 if (!ctx->dispatch_vkEnumerateInstanceVersion) {
451 vn_cs_decoder_set_fatal(ctx->decoder);
452 return;
453 }
454
455 vn_decode_vkEnumerateInstanceVersion_args_temp(ctx->decoder, &args);
456
457 if (!vn_cs_decoder_get_fatal(ctx->decoder))
458 ctx->dispatch_vkEnumerateInstanceVersion(ctx, &args);
459
460 #ifdef DEBUG
461 if (!vn_cs_decoder_get_fatal(ctx->decoder) && vn_dispatch_should_log_result(args.ret))
462 vn_dispatch_debug_log(ctx, "vkEnumerateInstanceVersion returned %d", args.ret);
463 #endif
464
465 if (!vn_cs_decoder_get_fatal(ctx->decoder) && (flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT))
466 vn_encode_vkEnumerateInstanceVersion_reply(ctx->encoder, &args);
467
468 vn_cs_decoder_reset_temp_pool(ctx->decoder);
469 }
470
vn_dispatch_vkEnumerateInstanceLayerProperties(struct vn_dispatch_context * ctx,VkCommandFlagsEXT flags)471 static inline void vn_dispatch_vkEnumerateInstanceLayerProperties(struct vn_dispatch_context *ctx, VkCommandFlagsEXT flags)
472 {
473 struct vn_command_vkEnumerateInstanceLayerProperties args;
474
475 if (!ctx->dispatch_vkEnumerateInstanceLayerProperties) {
476 vn_cs_decoder_set_fatal(ctx->decoder);
477 return;
478 }
479
480 vn_decode_vkEnumerateInstanceLayerProperties_args_temp(ctx->decoder, &args);
481
482 if (!vn_cs_decoder_get_fatal(ctx->decoder))
483 ctx->dispatch_vkEnumerateInstanceLayerProperties(ctx, &args);
484
485 #ifdef DEBUG
486 if (!vn_cs_decoder_get_fatal(ctx->decoder) && vn_dispatch_should_log_result(args.ret))
487 vn_dispatch_debug_log(ctx, "vkEnumerateInstanceLayerProperties returned %d", args.ret);
488 #endif
489
490 if (!vn_cs_decoder_get_fatal(ctx->decoder) && (flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT))
491 vn_encode_vkEnumerateInstanceLayerProperties_reply(ctx->encoder, &args);
492
493 vn_cs_decoder_reset_temp_pool(ctx->decoder);
494 }
495
vn_dispatch_vkEnumerateInstanceExtensionProperties(struct vn_dispatch_context * ctx,VkCommandFlagsEXT flags)496 static inline void vn_dispatch_vkEnumerateInstanceExtensionProperties(struct vn_dispatch_context *ctx, VkCommandFlagsEXT flags)
497 {
498 struct vn_command_vkEnumerateInstanceExtensionProperties args;
499
500 if (!ctx->dispatch_vkEnumerateInstanceExtensionProperties) {
501 vn_cs_decoder_set_fatal(ctx->decoder);
502 return;
503 }
504
505 vn_decode_vkEnumerateInstanceExtensionProperties_args_temp(ctx->decoder, &args);
506
507 if (!vn_cs_decoder_get_fatal(ctx->decoder))
508 ctx->dispatch_vkEnumerateInstanceExtensionProperties(ctx, &args);
509
510 #ifdef DEBUG
511 if (!vn_cs_decoder_get_fatal(ctx->decoder) && vn_dispatch_should_log_result(args.ret))
512 vn_dispatch_debug_log(ctx, "vkEnumerateInstanceExtensionProperties returned %d", args.ret);
513 #endif
514
515 if (!vn_cs_decoder_get_fatal(ctx->decoder) && (flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT))
516 vn_encode_vkEnumerateInstanceExtensionProperties_reply(ctx->encoder, &args);
517
518 vn_cs_decoder_reset_temp_pool(ctx->decoder);
519 }
520
521 #pragma GCC diagnostic pop
522
523 #endif /* VN_PROTOCOL_RENDERER_INSTANCE_H */
524