1/* This file is generated by venus-protocol.  See vn_protocol_driver.h. */
2
3/*
4 * Copyright 2020 Google LLC
5 * SPDX-License-Identifier: MIT
6 */
7
8#ifndef VN_PROTOCOL_DRIVER_HANDLES_H
9#define VN_PROTOCOL_DRIVER_HANDLES_H
10
11#include "vn_protocol_driver_types.h"
12
13/* VK_DEFINE_HANDLE(VkInstance) */
14
15static inline size_t
16vn_sizeof_VkInstance(const VkInstance *val)
17{
18    return sizeof(uint64_t);
19}
20
21static inline void
22vn_encode_VkInstance(struct vn_cs_encoder *enc, const VkInstance *val)
23{
24    const uint64_t id = vn_cs_handle_load_id((const void **)val, VK_OBJECT_TYPE_INSTANCE);
25    vn_encode_uint64_t(enc, &id);
26}
27
28static inline void
29vn_decode_VkInstance(struct vn_cs_decoder *dec, VkInstance *val)
30{
31    uint64_t id;
32    vn_decode_uint64_t(dec, &id);
33    vn_cs_handle_store_id((void **)val, id, VK_OBJECT_TYPE_INSTANCE);
34}
35
36/* VK_DEFINE_HANDLE(VkPhysicalDevice) */
37
38static inline size_t
39vn_sizeof_VkPhysicalDevice(const VkPhysicalDevice *val)
40{
41    return sizeof(uint64_t);
42}
43
44static inline void
45vn_encode_VkPhysicalDevice(struct vn_cs_encoder *enc, const VkPhysicalDevice *val)
46{
47    const uint64_t id = vn_cs_handle_load_id((const void **)val, VK_OBJECT_TYPE_PHYSICAL_DEVICE);
48    vn_encode_uint64_t(enc, &id);
49}
50
51static inline void
52vn_decode_VkPhysicalDevice(struct vn_cs_decoder *dec, VkPhysicalDevice *val)
53{
54    uint64_t id;
55    vn_decode_uint64_t(dec, &id);
56    vn_cs_handle_store_id((void **)val, id, VK_OBJECT_TYPE_PHYSICAL_DEVICE);
57}
58
59/* VK_DEFINE_HANDLE(VkDevice) */
60
61static inline size_t
62vn_sizeof_VkDevice(const VkDevice *val)
63{
64    return sizeof(uint64_t);
65}
66
67static inline void
68vn_encode_VkDevice(struct vn_cs_encoder *enc, const VkDevice *val)
69{
70    const uint64_t id = vn_cs_handle_load_id((const void **)val, VK_OBJECT_TYPE_DEVICE);
71    vn_encode_uint64_t(enc, &id);
72}
73
74static inline void
75vn_decode_VkDevice(struct vn_cs_decoder *dec, VkDevice *val)
76{
77    uint64_t id;
78    vn_decode_uint64_t(dec, &id);
79    vn_cs_handle_store_id((void **)val, id, VK_OBJECT_TYPE_DEVICE);
80}
81
82/* VK_DEFINE_HANDLE(VkQueue) */
83
84static inline size_t
85vn_sizeof_VkQueue(const VkQueue *val)
86{
87    return sizeof(uint64_t);
88}
89
90static inline void
91vn_encode_VkQueue(struct vn_cs_encoder *enc, const VkQueue *val)
92{
93    const uint64_t id = vn_cs_handle_load_id((const void **)val, VK_OBJECT_TYPE_QUEUE);
94    vn_encode_uint64_t(enc, &id);
95}
96
97static inline void
98vn_decode_VkQueue(struct vn_cs_decoder *dec, VkQueue *val)
99{
100    uint64_t id;
101    vn_decode_uint64_t(dec, &id);
102    vn_cs_handle_store_id((void **)val, id, VK_OBJECT_TYPE_QUEUE);
103}
104
105/* VK_DEFINE_HANDLE(VkCommandBuffer) */
106
107static inline size_t
108vn_sizeof_VkCommandBuffer(const VkCommandBuffer *val)
109{
110    return sizeof(uint64_t);
111}
112
113static inline void
114vn_encode_VkCommandBuffer(struct vn_cs_encoder *enc, const VkCommandBuffer *val)
115{
116    const uint64_t id = vn_cs_handle_load_id((const void **)val, VK_OBJECT_TYPE_COMMAND_BUFFER);
117    vn_encode_uint64_t(enc, &id);
118}
119
120static inline void
121vn_decode_VkCommandBuffer(struct vn_cs_decoder *dec, VkCommandBuffer *val)
122{
123    uint64_t id;
124    vn_decode_uint64_t(dec, &id);
125    vn_cs_handle_store_id((void **)val, id, VK_OBJECT_TYPE_COMMAND_BUFFER);
126}
127
128/* VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeviceMemory) */
129
130static inline size_t
131vn_sizeof_VkDeviceMemory(const VkDeviceMemory *val)
132{
133    return sizeof(uint64_t);
134}
135
136static inline void
137vn_encode_VkDeviceMemory(struct vn_cs_encoder *enc, const VkDeviceMemory *val)
138{
139    const uint64_t id = vn_cs_handle_load_id((const void **)val, VK_OBJECT_TYPE_DEVICE_MEMORY);
140    vn_encode_uint64_t(enc, &id);
141}
142
143static inline void
144vn_decode_VkDeviceMemory(struct vn_cs_decoder *dec, VkDeviceMemory *val)
145{
146    uint64_t id;
147    vn_decode_uint64_t(dec, &id);
148    vn_cs_handle_store_id((void **)val, id, VK_OBJECT_TYPE_DEVICE_MEMORY);
149}
150
151/* VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCommandPool) */
152
153static inline size_t
154vn_sizeof_VkCommandPool(const VkCommandPool *val)
155{
156    return sizeof(uint64_t);
157}
158
159static inline void
160vn_encode_VkCommandPool(struct vn_cs_encoder *enc, const VkCommandPool *val)
161{
162    const uint64_t id = vn_cs_handle_load_id((const void **)val, VK_OBJECT_TYPE_COMMAND_POOL);
163    vn_encode_uint64_t(enc, &id);
164}
165
166static inline void
167vn_decode_VkCommandPool(struct vn_cs_decoder *dec, VkCommandPool *val)
168{
169    uint64_t id;
170    vn_decode_uint64_t(dec, &id);
171    vn_cs_handle_store_id((void **)val, id, VK_OBJECT_TYPE_COMMAND_POOL);
172}
173
174/* VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBuffer) */
175
176static inline size_t
177vn_sizeof_VkBuffer(const VkBuffer *val)
178{
179    return sizeof(uint64_t);
180}
181
182static inline void
183vn_encode_VkBuffer(struct vn_cs_encoder *enc, const VkBuffer *val)
184{
185    const uint64_t id = vn_cs_handle_load_id((const void **)val, VK_OBJECT_TYPE_BUFFER);
186    vn_encode_uint64_t(enc, &id);
187}
188
189static inline void
190vn_decode_VkBuffer(struct vn_cs_decoder *dec, VkBuffer *val)
191{
192    uint64_t id;
193    vn_decode_uint64_t(dec, &id);
194    vn_cs_handle_store_id((void **)val, id, VK_OBJECT_TYPE_BUFFER);
195}
196
197/* VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferView) */
198
199static inline size_t
200vn_sizeof_VkBufferView(const VkBufferView *val)
201{
202    return sizeof(uint64_t);
203}
204
205static inline void
206vn_encode_VkBufferView(struct vn_cs_encoder *enc, const VkBufferView *val)
207{
208    const uint64_t id = vn_cs_handle_load_id((const void **)val, VK_OBJECT_TYPE_BUFFER_VIEW);
209    vn_encode_uint64_t(enc, &id);
210}
211
212static inline void
213vn_decode_VkBufferView(struct vn_cs_decoder *dec, VkBufferView *val)
214{
215    uint64_t id;
216    vn_decode_uint64_t(dec, &id);
217    vn_cs_handle_store_id((void **)val, id, VK_OBJECT_TYPE_BUFFER_VIEW);
218}
219
220/* VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImage) */
221
222static inline size_t
223vn_sizeof_VkImage(const VkImage *val)
224{
225    return sizeof(uint64_t);
226}
227
228static inline void
229vn_encode_VkImage(struct vn_cs_encoder *enc, const VkImage *val)
230{
231    const uint64_t id = vn_cs_handle_load_id((const void **)val, VK_OBJECT_TYPE_IMAGE);
232    vn_encode_uint64_t(enc, &id);
233}
234
235static inline void
236vn_decode_VkImage(struct vn_cs_decoder *dec, VkImage *val)
237{
238    uint64_t id;
239    vn_decode_uint64_t(dec, &id);
240    vn_cs_handle_store_id((void **)val, id, VK_OBJECT_TYPE_IMAGE);
241}
242
243/* VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImageView) */
244
245static inline size_t
246vn_sizeof_VkImageView(const VkImageView *val)
247{
248    return sizeof(uint64_t);
249}
250
251static inline void
252vn_encode_VkImageView(struct vn_cs_encoder *enc, const VkImageView *val)
253{
254    const uint64_t id = vn_cs_handle_load_id((const void **)val, VK_OBJECT_TYPE_IMAGE_VIEW);
255    vn_encode_uint64_t(enc, &id);
256}
257
258static inline void
259vn_decode_VkImageView(struct vn_cs_decoder *dec, VkImageView *val)
260{
261    uint64_t id;
262    vn_decode_uint64_t(dec, &id);
263    vn_cs_handle_store_id((void **)val, id, VK_OBJECT_TYPE_IMAGE_VIEW);
264}
265
266/* VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkShaderModule) */
267
268static inline size_t
269vn_sizeof_VkShaderModule(const VkShaderModule *val)
270{
271    return sizeof(uint64_t);
272}
273
274static inline void
275vn_encode_VkShaderModule(struct vn_cs_encoder *enc, const VkShaderModule *val)
276{
277    const uint64_t id = vn_cs_handle_load_id((const void **)val, VK_OBJECT_TYPE_SHADER_MODULE);
278    vn_encode_uint64_t(enc, &id);
279}
280
281static inline void
282vn_decode_VkShaderModule(struct vn_cs_decoder *dec, VkShaderModule *val)
283{
284    uint64_t id;
285    vn_decode_uint64_t(dec, &id);
286    vn_cs_handle_store_id((void **)val, id, VK_OBJECT_TYPE_SHADER_MODULE);
287}
288
289/* VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipeline) */
290
291static inline size_t
292vn_sizeof_VkPipeline(const VkPipeline *val)
293{
294    return sizeof(uint64_t);
295}
296
297static inline void
298vn_encode_VkPipeline(struct vn_cs_encoder *enc, const VkPipeline *val)
299{
300    const uint64_t id = vn_cs_handle_load_id((const void **)val, VK_OBJECT_TYPE_PIPELINE);
301    vn_encode_uint64_t(enc, &id);
302}
303
304static inline void
305vn_decode_VkPipeline(struct vn_cs_decoder *dec, VkPipeline *val)
306{
307    uint64_t id;
308    vn_decode_uint64_t(dec, &id);
309    vn_cs_handle_store_id((void **)val, id, VK_OBJECT_TYPE_PIPELINE);
310}
311
312/* VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineLayout) */
313
314static inline size_t
315vn_sizeof_VkPipelineLayout(const VkPipelineLayout *val)
316{
317    return sizeof(uint64_t);
318}
319
320static inline void
321vn_encode_VkPipelineLayout(struct vn_cs_encoder *enc, const VkPipelineLayout *val)
322{
323    const uint64_t id = vn_cs_handle_load_id((const void **)val, VK_OBJECT_TYPE_PIPELINE_LAYOUT);
324    vn_encode_uint64_t(enc, &id);
325}
326
327static inline void
328vn_decode_VkPipelineLayout(struct vn_cs_decoder *dec, VkPipelineLayout *val)
329{
330    uint64_t id;
331    vn_decode_uint64_t(dec, &id);
332    vn_cs_handle_store_id((void **)val, id, VK_OBJECT_TYPE_PIPELINE_LAYOUT);
333}
334
335/* VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSampler) */
336
337static inline size_t
338vn_sizeof_VkSampler(const VkSampler *val)
339{
340    return sizeof(uint64_t);
341}
342
343static inline void
344vn_encode_VkSampler(struct vn_cs_encoder *enc, const VkSampler *val)
345{
346    const uint64_t id = vn_cs_handle_load_id((const void **)val, VK_OBJECT_TYPE_SAMPLER);
347    vn_encode_uint64_t(enc, &id);
348}
349
350static inline void
351vn_decode_VkSampler(struct vn_cs_decoder *dec, VkSampler *val)
352{
353    uint64_t id;
354    vn_decode_uint64_t(dec, &id);
355    vn_cs_handle_store_id((void **)val, id, VK_OBJECT_TYPE_SAMPLER);
356}
357
358/* VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSet) */
359
360static inline size_t
361vn_sizeof_VkDescriptorSet(const VkDescriptorSet *val)
362{
363    return sizeof(uint64_t);
364}
365
366static inline void
367vn_encode_VkDescriptorSet(struct vn_cs_encoder *enc, const VkDescriptorSet *val)
368{
369    const uint64_t id = vn_cs_handle_load_id((const void **)val, VK_OBJECT_TYPE_DESCRIPTOR_SET);
370    vn_encode_uint64_t(enc, &id);
371}
372
373static inline void
374vn_decode_VkDescriptorSet(struct vn_cs_decoder *dec, VkDescriptorSet *val)
375{
376    uint64_t id;
377    vn_decode_uint64_t(dec, &id);
378    vn_cs_handle_store_id((void **)val, id, VK_OBJECT_TYPE_DESCRIPTOR_SET);
379}
380
381/* VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSetLayout) */
382
383static inline size_t
384vn_sizeof_VkDescriptorSetLayout(const VkDescriptorSetLayout *val)
385{
386    return sizeof(uint64_t);
387}
388
389static inline void
390vn_encode_VkDescriptorSetLayout(struct vn_cs_encoder *enc, const VkDescriptorSetLayout *val)
391{
392    const uint64_t id = vn_cs_handle_load_id((const void **)val, VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT);
393    vn_encode_uint64_t(enc, &id);
394}
395
396static inline void
397vn_decode_VkDescriptorSetLayout(struct vn_cs_decoder *dec, VkDescriptorSetLayout *val)
398{
399    uint64_t id;
400    vn_decode_uint64_t(dec, &id);
401    vn_cs_handle_store_id((void **)val, id, VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT);
402}
403
404/* VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorPool) */
405
406static inline size_t
407vn_sizeof_VkDescriptorPool(const VkDescriptorPool *val)
408{
409    return sizeof(uint64_t);
410}
411
412static inline void
413vn_encode_VkDescriptorPool(struct vn_cs_encoder *enc, const VkDescriptorPool *val)
414{
415    const uint64_t id = vn_cs_handle_load_id((const void **)val, VK_OBJECT_TYPE_DESCRIPTOR_POOL);
416    vn_encode_uint64_t(enc, &id);
417}
418
419static inline void
420vn_decode_VkDescriptorPool(struct vn_cs_decoder *dec, VkDescriptorPool *val)
421{
422    uint64_t id;
423    vn_decode_uint64_t(dec, &id);
424    vn_cs_handle_store_id((void **)val, id, VK_OBJECT_TYPE_DESCRIPTOR_POOL);
425}
426
427/* VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFence) */
428
429static inline size_t
430vn_sizeof_VkFence(const VkFence *val)
431{
432    return sizeof(uint64_t);
433}
434
435static inline void
436vn_encode_VkFence(struct vn_cs_encoder *enc, const VkFence *val)
437{
438    const uint64_t id = vn_cs_handle_load_id((const void **)val, VK_OBJECT_TYPE_FENCE);
439    vn_encode_uint64_t(enc, &id);
440}
441
442static inline void
443vn_decode_VkFence(struct vn_cs_decoder *dec, VkFence *val)
444{
445    uint64_t id;
446    vn_decode_uint64_t(dec, &id);
447    vn_cs_handle_store_id((void **)val, id, VK_OBJECT_TYPE_FENCE);
448}
449
450/* VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSemaphore) */
451
452static inline size_t
453vn_sizeof_VkSemaphore(const VkSemaphore *val)
454{
455    return sizeof(uint64_t);
456}
457
458static inline void
459vn_encode_VkSemaphore(struct vn_cs_encoder *enc, const VkSemaphore *val)
460{
461    const uint64_t id = vn_cs_handle_load_id((const void **)val, VK_OBJECT_TYPE_SEMAPHORE);
462    vn_encode_uint64_t(enc, &id);
463}
464
465static inline void
466vn_decode_VkSemaphore(struct vn_cs_decoder *dec, VkSemaphore *val)
467{
468    uint64_t id;
469    vn_decode_uint64_t(dec, &id);
470    vn_cs_handle_store_id((void **)val, id, VK_OBJECT_TYPE_SEMAPHORE);
471}
472
473/* VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkEvent) */
474
475static inline size_t
476vn_sizeof_VkEvent(const VkEvent *val)
477{
478    return sizeof(uint64_t);
479}
480
481static inline void
482vn_encode_VkEvent(struct vn_cs_encoder *enc, const VkEvent *val)
483{
484    const uint64_t id = vn_cs_handle_load_id((const void **)val, VK_OBJECT_TYPE_EVENT);
485    vn_encode_uint64_t(enc, &id);
486}
487
488static inline void
489vn_decode_VkEvent(struct vn_cs_decoder *dec, VkEvent *val)
490{
491    uint64_t id;
492    vn_decode_uint64_t(dec, &id);
493    vn_cs_handle_store_id((void **)val, id, VK_OBJECT_TYPE_EVENT);
494}
495
496/* VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkQueryPool) */
497
498static inline size_t
499vn_sizeof_VkQueryPool(const VkQueryPool *val)
500{
501    return sizeof(uint64_t);
502}
503
504static inline void
505vn_encode_VkQueryPool(struct vn_cs_encoder *enc, const VkQueryPool *val)
506{
507    const uint64_t id = vn_cs_handle_load_id((const void **)val, VK_OBJECT_TYPE_QUERY_POOL);
508    vn_encode_uint64_t(enc, &id);
509}
510
511static inline void
512vn_decode_VkQueryPool(struct vn_cs_decoder *dec, VkQueryPool *val)
513{
514    uint64_t id;
515    vn_decode_uint64_t(dec, &id);
516    vn_cs_handle_store_id((void **)val, id, VK_OBJECT_TYPE_QUERY_POOL);
517}
518
519/* VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFramebuffer) */
520
521static inline size_t
522vn_sizeof_VkFramebuffer(const VkFramebuffer *val)
523{
524    return sizeof(uint64_t);
525}
526
527static inline void
528vn_encode_VkFramebuffer(struct vn_cs_encoder *enc, const VkFramebuffer *val)
529{
530    const uint64_t id = vn_cs_handle_load_id((const void **)val, VK_OBJECT_TYPE_FRAMEBUFFER);
531    vn_encode_uint64_t(enc, &id);
532}
533
534static inline void
535vn_decode_VkFramebuffer(struct vn_cs_decoder *dec, VkFramebuffer *val)
536{
537    uint64_t id;
538    vn_decode_uint64_t(dec, &id);
539    vn_cs_handle_store_id((void **)val, id, VK_OBJECT_TYPE_FRAMEBUFFER);
540}
541
542/* VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkRenderPass) */
543
544static inline size_t
545vn_sizeof_VkRenderPass(const VkRenderPass *val)
546{
547    return sizeof(uint64_t);
548}
549
550static inline void
551vn_encode_VkRenderPass(struct vn_cs_encoder *enc, const VkRenderPass *val)
552{
553    const uint64_t id = vn_cs_handle_load_id((const void **)val, VK_OBJECT_TYPE_RENDER_PASS);
554    vn_encode_uint64_t(enc, &id);
555}
556
557static inline void
558vn_decode_VkRenderPass(struct vn_cs_decoder *dec, VkRenderPass *val)
559{
560    uint64_t id;
561    vn_decode_uint64_t(dec, &id);
562    vn_cs_handle_store_id((void **)val, id, VK_OBJECT_TYPE_RENDER_PASS);
563}
564
565/* VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineCache) */
566
567static inline size_t
568vn_sizeof_VkPipelineCache(const VkPipelineCache *val)
569{
570    return sizeof(uint64_t);
571}
572
573static inline void
574vn_encode_VkPipelineCache(struct vn_cs_encoder *enc, const VkPipelineCache *val)
575{
576    const uint64_t id = vn_cs_handle_load_id((const void **)val, VK_OBJECT_TYPE_PIPELINE_CACHE);
577    vn_encode_uint64_t(enc, &id);
578}
579
580static inline void
581vn_decode_VkPipelineCache(struct vn_cs_decoder *dec, VkPipelineCache *val)
582{
583    uint64_t id;
584    vn_decode_uint64_t(dec, &id);
585    vn_cs_handle_store_id((void **)val, id, VK_OBJECT_TYPE_PIPELINE_CACHE);
586}
587
588/* VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorUpdateTemplate) */
589
590static inline size_t
591vn_sizeof_VkDescriptorUpdateTemplate(const VkDescriptorUpdateTemplate *val)
592{
593    return sizeof(uint64_t);
594}
595
596static inline void
597vn_encode_VkDescriptorUpdateTemplate(struct vn_cs_encoder *enc, const VkDescriptorUpdateTemplate *val)
598{
599    const uint64_t id = vn_cs_handle_load_id((const void **)val, VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE);
600    vn_encode_uint64_t(enc, &id);
601}
602
603static inline void
604vn_decode_VkDescriptorUpdateTemplate(struct vn_cs_decoder *dec, VkDescriptorUpdateTemplate *val)
605{
606    uint64_t id;
607    vn_decode_uint64_t(dec, &id);
608    vn_cs_handle_store_id((void **)val, id, VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE);
609}
610
611/* VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSamplerYcbcrConversion) */
612
613static inline size_t
614vn_sizeof_VkSamplerYcbcrConversion(const VkSamplerYcbcrConversion *val)
615{
616    return sizeof(uint64_t);
617}
618
619static inline void
620vn_encode_VkSamplerYcbcrConversion(struct vn_cs_encoder *enc, const VkSamplerYcbcrConversion *val)
621{
622    const uint64_t id = vn_cs_handle_load_id((const void **)val, VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION);
623    vn_encode_uint64_t(enc, &id);
624}
625
626static inline void
627vn_decode_VkSamplerYcbcrConversion(struct vn_cs_decoder *dec, VkSamplerYcbcrConversion *val)
628{
629    uint64_t id;
630    vn_decode_uint64_t(dec, &id);
631    vn_cs_handle_store_id((void **)val, id, VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION);
632}
633
634/* VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPrivateDataSlot) */
635
636static inline size_t
637vn_sizeof_VkPrivateDataSlot(const VkPrivateDataSlot *val)
638{
639    return sizeof(uint64_t);
640}
641
642static inline void
643vn_encode_VkPrivateDataSlot(struct vn_cs_encoder *enc, const VkPrivateDataSlot *val)
644{
645    const uint64_t id = vn_cs_handle_load_id((const void **)val, VK_OBJECT_TYPE_PRIVATE_DATA_SLOT);
646    vn_encode_uint64_t(enc, &id);
647}
648
649static inline void
650vn_decode_VkPrivateDataSlot(struct vn_cs_decoder *dec, VkPrivateDataSlot *val)
651{
652    uint64_t id;
653    vn_decode_uint64_t(dec, &id);
654    vn_cs_handle_store_id((void **)val, id, VK_OBJECT_TYPE_PRIVATE_DATA_SLOT);
655}
656
657#endif /* VN_PROTOCOL_DRIVER_HANDLES_H */
658