Home | History | Annotate | Line # | Download | only in venus-protocol
      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_STRUCTS_H
      9 #define VN_PROTOCOL_DRIVER_STRUCTS_H
     10 
     11 #include "vn_protocol_driver_handles.h"
     12 
     13 /*
     14  * These structs/unions/commands are not included
     15  *
     16  *   VkAllocationCallbacks
     17  */
     18 
     19 /* struct VkExtent3D */
     20 
     21 static inline size_t
     22 vn_sizeof_VkExtent3D(const VkExtent3D *val)
     23 {
     24     size_t size = 0;
     25     size += vn_sizeof_uint32_t(&val->width);
     26     size += vn_sizeof_uint32_t(&val->height);
     27     size += vn_sizeof_uint32_t(&val->depth);
     28     return size;
     29 }
     30 
     31 static inline void
     32 vn_encode_VkExtent3D(struct vn_cs_encoder *enc, const VkExtent3D *val)
     33 {
     34     vn_encode_uint32_t(enc, &val->width);
     35     vn_encode_uint32_t(enc, &val->height);
     36     vn_encode_uint32_t(enc, &val->depth);
     37 }
     38 
     39 static inline void
     40 vn_decode_VkExtent3D(struct vn_cs_decoder *dec, VkExtent3D *val)
     41 {
     42     vn_decode_uint32_t(dec, &val->width);
     43     vn_decode_uint32_t(dec, &val->height);
     44     vn_decode_uint32_t(dec, &val->depth);
     45 }
     46 
     47 static inline size_t
     48 vn_sizeof_VkExtent3D_partial(const VkExtent3D *val)
     49 {
     50     size_t size = 0;
     51     /* skip val->width */
     52     /* skip val->height */
     53     /* skip val->depth */
     54     return size;
     55 }
     56 
     57 static inline void
     58 vn_encode_VkExtent3D_partial(struct vn_cs_encoder *enc, const VkExtent3D *val)
     59 {
     60     /* skip val->width */
     61     /* skip val->height */
     62     /* skip val->depth */
     63 }
     64 
     65 /* struct VkLayerProperties */
     66 
     67 static inline size_t
     68 vn_sizeof_VkLayerProperties(const VkLayerProperties *val)
     69 {
     70     size_t size = 0;
     71     size += vn_sizeof_array_size(VK_MAX_EXTENSION_NAME_SIZE);
     72     size += vn_sizeof_char_array(val->layerName, VK_MAX_EXTENSION_NAME_SIZE);
     73     size += vn_sizeof_uint32_t(&val->specVersion);
     74     size += vn_sizeof_uint32_t(&val->implementationVersion);
     75     size += vn_sizeof_array_size(VK_MAX_DESCRIPTION_SIZE);
     76     size += vn_sizeof_char_array(val->description, VK_MAX_DESCRIPTION_SIZE);
     77     return size;
     78 }
     79 
     80 static inline void
     81 vn_decode_VkLayerProperties(struct vn_cs_decoder *dec, VkLayerProperties *val)
     82 {
     83     {
     84         const size_t array_size = vn_decode_array_size(dec, VK_MAX_EXTENSION_NAME_SIZE);
     85         vn_decode_char_array(dec, val->layerName, array_size);
     86     }
     87     vn_decode_uint32_t(dec, &val->specVersion);
     88     vn_decode_uint32_t(dec, &val->implementationVersion);
     89     {
     90         const size_t array_size = vn_decode_array_size(dec, VK_MAX_DESCRIPTION_SIZE);
     91         vn_decode_char_array(dec, val->description, array_size);
     92     }
     93 }
     94 
     95 static inline size_t
     96 vn_sizeof_VkLayerProperties_partial(const VkLayerProperties *val)
     97 {
     98     size_t size = 0;
     99     /* skip val->layerName */
    100     /* skip val->specVersion */
    101     /* skip val->implementationVersion */
    102     /* skip val->description */
    103     return size;
    104 }
    105 
    106 static inline void
    107 vn_encode_VkLayerProperties_partial(struct vn_cs_encoder *enc, const VkLayerProperties *val)
    108 {
    109     /* skip val->layerName */
    110     /* skip val->specVersion */
    111     /* skip val->implementationVersion */
    112     /* skip val->description */
    113 }
    114 
    115 /* struct VkExtensionProperties */
    116 
    117 static inline size_t
    118 vn_sizeof_VkExtensionProperties(const VkExtensionProperties *val)
    119 {
    120     size_t size = 0;
    121     size += vn_sizeof_array_size(VK_MAX_EXTENSION_NAME_SIZE);
    122     size += vn_sizeof_char_array(val->extensionName, VK_MAX_EXTENSION_NAME_SIZE);
    123     size += vn_sizeof_uint32_t(&val->specVersion);
    124     return size;
    125 }
    126 
    127 static inline void
    128 vn_encode_VkExtensionProperties(struct vn_cs_encoder *enc, const VkExtensionProperties *val)
    129 {
    130     vn_encode_array_size(enc, VK_MAX_EXTENSION_NAME_SIZE);
    131     vn_encode_char_array(enc, val->extensionName, VK_MAX_EXTENSION_NAME_SIZE);
    132     vn_encode_uint32_t(enc, &val->specVersion);
    133 }
    134 
    135 static inline void
    136 vn_decode_VkExtensionProperties(struct vn_cs_decoder *dec, VkExtensionProperties *val)
    137 {
    138     {
    139         const size_t array_size = vn_decode_array_size(dec, VK_MAX_EXTENSION_NAME_SIZE);
    140         vn_decode_char_array(dec, val->extensionName, array_size);
    141     }
    142     vn_decode_uint32_t(dec, &val->specVersion);
    143 }
    144 
    145 static inline size_t
    146 vn_sizeof_VkExtensionProperties_partial(const VkExtensionProperties *val)
    147 {
    148     size_t size = 0;
    149     /* skip val->extensionName */
    150     /* skip val->specVersion */
    151     return size;
    152 }
    153 
    154 static inline void
    155 vn_encode_VkExtensionProperties_partial(struct vn_cs_encoder *enc, const VkExtensionProperties *val)
    156 {
    157     /* skip val->extensionName */
    158     /* skip val->specVersion */
    159 }
    160 
    161 /* struct VkMemoryRequirements */
    162 
    163 static inline size_t
    164 vn_sizeof_VkMemoryRequirements(const VkMemoryRequirements *val)
    165 {
    166     size_t size = 0;
    167     size += vn_sizeof_VkDeviceSize(&val->size);
    168     size += vn_sizeof_VkDeviceSize(&val->alignment);
    169     size += vn_sizeof_uint32_t(&val->memoryTypeBits);
    170     return size;
    171 }
    172 
    173 static inline void
    174 vn_decode_VkMemoryRequirements(struct vn_cs_decoder *dec, VkMemoryRequirements *val)
    175 {
    176     vn_decode_VkDeviceSize(dec, &val->size);
    177     vn_decode_VkDeviceSize(dec, &val->alignment);
    178     vn_decode_uint32_t(dec, &val->memoryTypeBits);
    179 }
    180 
    181 static inline size_t
    182 vn_sizeof_VkMemoryRequirements_partial(const VkMemoryRequirements *val)
    183 {
    184     size_t size = 0;
    185     /* skip val->size */
    186     /* skip val->alignment */
    187     /* skip val->memoryTypeBits */
    188     return size;
    189 }
    190 
    191 static inline void
    192 vn_encode_VkMemoryRequirements_partial(struct vn_cs_encoder *enc, const VkMemoryRequirements *val)
    193 {
    194     /* skip val->size */
    195     /* skip val->alignment */
    196     /* skip val->memoryTypeBits */
    197 }
    198 
    199 /* struct VkSparseImageFormatProperties */
    200 
    201 static inline size_t
    202 vn_sizeof_VkSparseImageFormatProperties(const VkSparseImageFormatProperties *val)
    203 {
    204     size_t size = 0;
    205     size += vn_sizeof_VkFlags(&val->aspectMask);
    206     size += vn_sizeof_VkExtent3D(&val->imageGranularity);
    207     size += vn_sizeof_VkFlags(&val->flags);
    208     return size;
    209 }
    210 
    211 static inline void
    212 vn_decode_VkSparseImageFormatProperties(struct vn_cs_decoder *dec, VkSparseImageFormatProperties *val)
    213 {
    214     vn_decode_VkFlags(dec, &val->aspectMask);
    215     vn_decode_VkExtent3D(dec, &val->imageGranularity);
    216     vn_decode_VkFlags(dec, &val->flags);
    217 }
    218 
    219 static inline size_t
    220 vn_sizeof_VkSparseImageFormatProperties_partial(const VkSparseImageFormatProperties *val)
    221 {
    222     size_t size = 0;
    223     /* skip val->aspectMask */
    224     size += vn_sizeof_VkExtent3D_partial(&val->imageGranularity);
    225     /* skip val->flags */
    226     return size;
    227 }
    228 
    229 static inline void
    230 vn_encode_VkSparseImageFormatProperties_partial(struct vn_cs_encoder *enc, const VkSparseImageFormatProperties *val)
    231 {
    232     /* skip val->aspectMask */
    233     vn_encode_VkExtent3D_partial(enc, &val->imageGranularity);
    234     /* skip val->flags */
    235 }
    236 
    237 /* struct VkImageSubresource */
    238 
    239 static inline size_t
    240 vn_sizeof_VkImageSubresource(const VkImageSubresource *val)
    241 {
    242     size_t size = 0;
    243     size += vn_sizeof_VkFlags(&val->aspectMask);
    244     size += vn_sizeof_uint32_t(&val->mipLevel);
    245     size += vn_sizeof_uint32_t(&val->arrayLayer);
    246     return size;
    247 }
    248 
    249 static inline void
    250 vn_encode_VkImageSubresource(struct vn_cs_encoder *enc, const VkImageSubresource *val)
    251 {
    252     vn_encode_VkFlags(enc, &val->aspectMask);
    253     vn_encode_uint32_t(enc, &val->mipLevel);
    254     vn_encode_uint32_t(enc, &val->arrayLayer);
    255 }
    256 
    257 /* struct VkOffset3D */
    258 
    259 static inline size_t
    260 vn_sizeof_VkOffset3D(const VkOffset3D *val)
    261 {
    262     size_t size = 0;
    263     size += vn_sizeof_int32_t(&val->x);
    264     size += vn_sizeof_int32_t(&val->y);
    265     size += vn_sizeof_int32_t(&val->z);
    266     return size;
    267 }
    268 
    269 static inline void
    270 vn_encode_VkOffset3D(struct vn_cs_encoder *enc, const VkOffset3D *val)
    271 {
    272     vn_encode_int32_t(enc, &val->x);
    273     vn_encode_int32_t(enc, &val->y);
    274     vn_encode_int32_t(enc, &val->z);
    275 }
    276 
    277 /* struct VkSemaphoreTypeCreateInfo chain */
    278 
    279 static inline size_t
    280 vn_sizeof_VkSemaphoreTypeCreateInfo_pnext(const void *val)
    281 {
    282     /* no known/supported struct */
    283     return vn_sizeof_simple_pointer(NULL);
    284 }
    285 
    286 static inline size_t
    287 vn_sizeof_VkSemaphoreTypeCreateInfo_self(const VkSemaphoreTypeCreateInfo *val)
    288 {
    289     size_t size = 0;
    290     /* skip val->{sType,pNext} */
    291     size += vn_sizeof_VkSemaphoreType(&val->semaphoreType);
    292     size += vn_sizeof_uint64_t(&val->initialValue);
    293     return size;
    294 }
    295 
    296 static inline size_t
    297 vn_sizeof_VkSemaphoreTypeCreateInfo(const VkSemaphoreTypeCreateInfo *val)
    298 {
    299     size_t size = 0;
    300 
    301     size += vn_sizeof_VkStructureType(&val->sType);
    302     size += vn_sizeof_VkSemaphoreTypeCreateInfo_pnext(val->pNext);
    303     size += vn_sizeof_VkSemaphoreTypeCreateInfo_self(val);
    304 
    305     return size;
    306 }
    307 
    308 static inline void
    309 vn_encode_VkSemaphoreTypeCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)
    310 {
    311     /* no known/supported struct */
    312     vn_encode_simple_pointer(enc, NULL);
    313 }
    314 
    315 static inline void
    316 vn_encode_VkSemaphoreTypeCreateInfo_self(struct vn_cs_encoder *enc, const VkSemaphoreTypeCreateInfo *val)
    317 {
    318     /* skip val->{sType,pNext} */
    319     vn_encode_VkSemaphoreType(enc, &val->semaphoreType);
    320     vn_encode_uint64_t(enc, &val->initialValue);
    321 }
    322 
    323 static inline void
    324 vn_encode_VkSemaphoreTypeCreateInfo(struct vn_cs_encoder *enc, const VkSemaphoreTypeCreateInfo *val)
    325 {
    326     assert(val->sType == VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO);
    327     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO });
    328     vn_encode_VkSemaphoreTypeCreateInfo_pnext(enc, val->pNext);
    329     vn_encode_VkSemaphoreTypeCreateInfo_self(enc, val);
    330 }
    331 
    332 /* struct VkImageFormatListCreateInfo chain */
    333 
    334 static inline size_t
    335 vn_sizeof_VkImageFormatListCreateInfo_pnext(const void *val)
    336 {
    337     /* no known/supported struct */
    338     return vn_sizeof_simple_pointer(NULL);
    339 }
    340 
    341 static inline size_t
    342 vn_sizeof_VkImageFormatListCreateInfo_self(const VkImageFormatListCreateInfo *val)
    343 {
    344     size_t size = 0;
    345     /* skip val->{sType,pNext} */
    346     size += vn_sizeof_uint32_t(&val->viewFormatCount);
    347     if (val->pViewFormats) {
    348         size += vn_sizeof_array_size(val->viewFormatCount);
    349         size += vn_sizeof_VkFormat_array(val->pViewFormats, val->viewFormatCount);
    350     } else {
    351         size += vn_sizeof_array_size(0);
    352     }
    353     return size;
    354 }
    355 
    356 static inline size_t
    357 vn_sizeof_VkImageFormatListCreateInfo(const VkImageFormatListCreateInfo *val)
    358 {
    359     size_t size = 0;
    360 
    361     size += vn_sizeof_VkStructureType(&val->sType);
    362     size += vn_sizeof_VkImageFormatListCreateInfo_pnext(val->pNext);
    363     size += vn_sizeof_VkImageFormatListCreateInfo_self(val);
    364 
    365     return size;
    366 }
    367 
    368 static inline void
    369 vn_encode_VkImageFormatListCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)
    370 {
    371     /* no known/supported struct */
    372     vn_encode_simple_pointer(enc, NULL);
    373 }
    374 
    375 static inline void
    376 vn_encode_VkImageFormatListCreateInfo_self(struct vn_cs_encoder *enc, const VkImageFormatListCreateInfo *val)
    377 {
    378     /* skip val->{sType,pNext} */
    379     vn_encode_uint32_t(enc, &val->viewFormatCount);
    380     if (val->pViewFormats) {
    381         vn_encode_array_size(enc, val->viewFormatCount);
    382         vn_encode_VkFormat_array(enc, val->pViewFormats, val->viewFormatCount);
    383     } else {
    384         vn_encode_array_size(enc, 0);
    385     }
    386 }
    387 
    388 static inline void
    389 vn_encode_VkImageFormatListCreateInfo(struct vn_cs_encoder *enc, const VkImageFormatListCreateInfo *val)
    390 {
    391     assert(val->sType == VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO);
    392     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO });
    393     vn_encode_VkImageFormatListCreateInfo_pnext(enc, val->pNext);
    394     vn_encode_VkImageFormatListCreateInfo_self(enc, val);
    395 }
    396 
    397 /* struct VkImageStencilUsageCreateInfo chain */
    398 
    399 static inline size_t
    400 vn_sizeof_VkImageStencilUsageCreateInfo_pnext(const void *val)
    401 {
    402     /* no known/supported struct */
    403     return vn_sizeof_simple_pointer(NULL);
    404 }
    405 
    406 static inline size_t
    407 vn_sizeof_VkImageStencilUsageCreateInfo_self(const VkImageStencilUsageCreateInfo *val)
    408 {
    409     size_t size = 0;
    410     /* skip val->{sType,pNext} */
    411     size += vn_sizeof_VkFlags(&val->stencilUsage);
    412     return size;
    413 }
    414 
    415 static inline size_t
    416 vn_sizeof_VkImageStencilUsageCreateInfo(const VkImageStencilUsageCreateInfo *val)
    417 {
    418     size_t size = 0;
    419 
    420     size += vn_sizeof_VkStructureType(&val->sType);
    421     size += vn_sizeof_VkImageStencilUsageCreateInfo_pnext(val->pNext);
    422     size += vn_sizeof_VkImageStencilUsageCreateInfo_self(val);
    423 
    424     return size;
    425 }
    426 
    427 static inline void
    428 vn_encode_VkImageStencilUsageCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)
    429 {
    430     /* no known/supported struct */
    431     vn_encode_simple_pointer(enc, NULL);
    432 }
    433 
    434 static inline void
    435 vn_encode_VkImageStencilUsageCreateInfo_self(struct vn_cs_encoder *enc, const VkImageStencilUsageCreateInfo *val)
    436 {
    437     /* skip val->{sType,pNext} */
    438     vn_encode_VkFlags(enc, &val->stencilUsage);
    439 }
    440 
    441 static inline void
    442 vn_encode_VkImageStencilUsageCreateInfo(struct vn_cs_encoder *enc, const VkImageStencilUsageCreateInfo *val)
    443 {
    444     assert(val->sType == VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO);
    445     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO });
    446     vn_encode_VkImageStencilUsageCreateInfo_pnext(enc, val->pNext);
    447     vn_encode_VkImageStencilUsageCreateInfo_self(enc, val);
    448 }
    449 
    450 /* struct VkComponentMapping */
    451 
    452 static inline size_t
    453 vn_sizeof_VkComponentMapping(const VkComponentMapping *val)
    454 {
    455     size_t size = 0;
    456     size += vn_sizeof_VkComponentSwizzle(&val->r);
    457     size += vn_sizeof_VkComponentSwizzle(&val->g);
    458     size += vn_sizeof_VkComponentSwizzle(&val->b);
    459     size += vn_sizeof_VkComponentSwizzle(&val->a);
    460     return size;
    461 }
    462 
    463 static inline void
    464 vn_encode_VkComponentMapping(struct vn_cs_encoder *enc, const VkComponentMapping *val)
    465 {
    466     vn_encode_VkComponentSwizzle(enc, &val->r);
    467     vn_encode_VkComponentSwizzle(enc, &val->g);
    468     vn_encode_VkComponentSwizzle(enc, &val->b);
    469     vn_encode_VkComponentSwizzle(enc, &val->a);
    470 }
    471 
    472 static inline void
    473 vn_decode_VkComponentMapping(struct vn_cs_decoder *dec, VkComponentMapping *val)
    474 {
    475     vn_decode_VkComponentSwizzle(dec, &val->r);
    476     vn_decode_VkComponentSwizzle(dec, &val->g);
    477     vn_decode_VkComponentSwizzle(dec, &val->b);
    478     vn_decode_VkComponentSwizzle(dec, &val->a);
    479 }
    480 
    481 static inline size_t
    482 vn_sizeof_VkComponentMapping_partial(const VkComponentMapping *val)
    483 {
    484     size_t size = 0;
    485     /* skip val->r */
    486     /* skip val->g */
    487     /* skip val->b */
    488     /* skip val->a */
    489     return size;
    490 }
    491 
    492 static inline void
    493 vn_encode_VkComponentMapping_partial(struct vn_cs_encoder *enc, const VkComponentMapping *val)
    494 {
    495     /* skip val->r */
    496     /* skip val->g */
    497     /* skip val->b */
    498     /* skip val->a */
    499 }
    500 
    501 /* struct VkImageSubresourceRange */
    502 
    503 static inline size_t
    504 vn_sizeof_VkImageSubresourceRange(const VkImageSubresourceRange *val)
    505 {
    506     size_t size = 0;
    507     size += vn_sizeof_VkFlags(&val->aspectMask);
    508     size += vn_sizeof_uint32_t(&val->baseMipLevel);
    509     size += vn_sizeof_uint32_t(&val->levelCount);
    510     size += vn_sizeof_uint32_t(&val->baseArrayLayer);
    511     size += vn_sizeof_uint32_t(&val->layerCount);
    512     return size;
    513 }
    514 
    515 static inline void
    516 vn_encode_VkImageSubresourceRange(struct vn_cs_encoder *enc, const VkImageSubresourceRange *val)
    517 {
    518     vn_encode_VkFlags(enc, &val->aspectMask);
    519     vn_encode_uint32_t(enc, &val->baseMipLevel);
    520     vn_encode_uint32_t(enc, &val->levelCount);
    521     vn_encode_uint32_t(enc, &val->baseArrayLayer);
    522     vn_encode_uint32_t(enc, &val->layerCount);
    523 }
    524 
    525 /* struct VkSamplerYcbcrConversionInfo chain */
    526 
    527 static inline size_t
    528 vn_sizeof_VkSamplerYcbcrConversionInfo_pnext(const void *val)
    529 {
    530     /* no known/supported struct */
    531     return vn_sizeof_simple_pointer(NULL);
    532 }
    533 
    534 static inline size_t
    535 vn_sizeof_VkSamplerYcbcrConversionInfo_self(const VkSamplerYcbcrConversionInfo *val)
    536 {
    537     size_t size = 0;
    538     /* skip val->{sType,pNext} */
    539     size += vn_sizeof_VkSamplerYcbcrConversion(&val->conversion);
    540     return size;
    541 }
    542 
    543 static inline size_t
    544 vn_sizeof_VkSamplerYcbcrConversionInfo(const VkSamplerYcbcrConversionInfo *val)
    545 {
    546     size_t size = 0;
    547 
    548     size += vn_sizeof_VkStructureType(&val->sType);
    549     size += vn_sizeof_VkSamplerYcbcrConversionInfo_pnext(val->pNext);
    550     size += vn_sizeof_VkSamplerYcbcrConversionInfo_self(val);
    551 
    552     return size;
    553 }
    554 
    555 static inline void
    556 vn_encode_VkSamplerYcbcrConversionInfo_pnext(struct vn_cs_encoder *enc, const void *val)
    557 {
    558     /* no known/supported struct */
    559     vn_encode_simple_pointer(enc, NULL);
    560 }
    561 
    562 static inline void
    563 vn_encode_VkSamplerYcbcrConversionInfo_self(struct vn_cs_encoder *enc, const VkSamplerYcbcrConversionInfo *val)
    564 {
    565     /* skip val->{sType,pNext} */
    566     vn_encode_VkSamplerYcbcrConversion(enc, &val->conversion);
    567 }
    568 
    569 static inline void
    570 vn_encode_VkSamplerYcbcrConversionInfo(struct vn_cs_encoder *enc, const VkSamplerYcbcrConversionInfo *val)
    571 {
    572     assert(val->sType == VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO);
    573     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO });
    574     vn_encode_VkSamplerYcbcrConversionInfo_pnext(enc, val->pNext);
    575     vn_encode_VkSamplerYcbcrConversionInfo_self(enc, val);
    576 }
    577 
    578 /* struct VkViewport */
    579 
    580 static inline size_t
    581 vn_sizeof_VkViewport(const VkViewport *val)
    582 {
    583     size_t size = 0;
    584     size += vn_sizeof_float(&val->x);
    585     size += vn_sizeof_float(&val->y);
    586     size += vn_sizeof_float(&val->width);
    587     size += vn_sizeof_float(&val->height);
    588     size += vn_sizeof_float(&val->minDepth);
    589     size += vn_sizeof_float(&val->maxDepth);
    590     return size;
    591 }
    592 
    593 static inline void
    594 vn_encode_VkViewport(struct vn_cs_encoder *enc, const VkViewport *val)
    595 {
    596     vn_encode_float(enc, &val->x);
    597     vn_encode_float(enc, &val->y);
    598     vn_encode_float(enc, &val->width);
    599     vn_encode_float(enc, &val->height);
    600     vn_encode_float(enc, &val->minDepth);
    601     vn_encode_float(enc, &val->maxDepth);
    602 }
    603 
    604 static inline void
    605 vn_decode_VkViewport(struct vn_cs_decoder *dec, VkViewport *val)
    606 {
    607     vn_decode_float(dec, &val->x);
    608     vn_decode_float(dec, &val->y);
    609     vn_decode_float(dec, &val->width);
    610     vn_decode_float(dec, &val->height);
    611     vn_decode_float(dec, &val->minDepth);
    612     vn_decode_float(dec, &val->maxDepth);
    613 }
    614 
    615 /* struct VkOffset2D */
    616 
    617 static inline size_t
    618 vn_sizeof_VkOffset2D(const VkOffset2D *val)
    619 {
    620     size_t size = 0;
    621     size += vn_sizeof_int32_t(&val->x);
    622     size += vn_sizeof_int32_t(&val->y);
    623     return size;
    624 }
    625 
    626 static inline void
    627 vn_encode_VkOffset2D(struct vn_cs_encoder *enc, const VkOffset2D *val)
    628 {
    629     vn_encode_int32_t(enc, &val->x);
    630     vn_encode_int32_t(enc, &val->y);
    631 }
    632 
    633 static inline void
    634 vn_decode_VkOffset2D(struct vn_cs_decoder *dec, VkOffset2D *val)
    635 {
    636     vn_decode_int32_t(dec, &val->x);
    637     vn_decode_int32_t(dec, &val->y);
    638 }
    639 
    640 static inline size_t
    641 vn_sizeof_VkOffset2D_partial(const VkOffset2D *val)
    642 {
    643     size_t size = 0;
    644     /* skip val->x */
    645     /* skip val->y */
    646     return size;
    647 }
    648 
    649 static inline void
    650 vn_encode_VkOffset2D_partial(struct vn_cs_encoder *enc, const VkOffset2D *val)
    651 {
    652     /* skip val->x */
    653     /* skip val->y */
    654 }
    655 
    656 /* struct VkExtent2D */
    657 
    658 static inline size_t
    659 vn_sizeof_VkExtent2D(const VkExtent2D *val)
    660 {
    661     size_t size = 0;
    662     size += vn_sizeof_uint32_t(&val->width);
    663     size += vn_sizeof_uint32_t(&val->height);
    664     return size;
    665 }
    666 
    667 static inline void
    668 vn_encode_VkExtent2D(struct vn_cs_encoder *enc, const VkExtent2D *val)
    669 {
    670     vn_encode_uint32_t(enc, &val->width);
    671     vn_encode_uint32_t(enc, &val->height);
    672 }
    673 
    674 static inline void
    675 vn_decode_VkExtent2D(struct vn_cs_decoder *dec, VkExtent2D *val)
    676 {
    677     vn_decode_uint32_t(dec, &val->width);
    678     vn_decode_uint32_t(dec, &val->height);
    679 }
    680 
    681 static inline size_t
    682 vn_sizeof_VkExtent2D_partial(const VkExtent2D *val)
    683 {
    684     size_t size = 0;
    685     /* skip val->width */
    686     /* skip val->height */
    687     return size;
    688 }
    689 
    690 static inline void
    691 vn_encode_VkExtent2D_partial(struct vn_cs_encoder *enc, const VkExtent2D *val)
    692 {
    693     /* skip val->width */
    694     /* skip val->height */
    695 }
    696 
    697 /* struct VkRect2D */
    698 
    699 static inline size_t
    700 vn_sizeof_VkRect2D(const VkRect2D *val)
    701 {
    702     size_t size = 0;
    703     size += vn_sizeof_VkOffset2D(&val->offset);
    704     size += vn_sizeof_VkExtent2D(&val->extent);
    705     return size;
    706 }
    707 
    708 static inline void
    709 vn_encode_VkRect2D(struct vn_cs_encoder *enc, const VkRect2D *val)
    710 {
    711     vn_encode_VkOffset2D(enc, &val->offset);
    712     vn_encode_VkExtent2D(enc, &val->extent);
    713 }
    714 
    715 static inline void
    716 vn_decode_VkRect2D(struct vn_cs_decoder *dec, VkRect2D *val)
    717 {
    718     vn_decode_VkOffset2D(dec, &val->offset);
    719     vn_decode_VkExtent2D(dec, &val->extent);
    720 }
    721 
    722 static inline size_t
    723 vn_sizeof_VkRect2D_partial(const VkRect2D *val)
    724 {
    725     size_t size = 0;
    726     size += vn_sizeof_VkOffset2D_partial(&val->offset);
    727     size += vn_sizeof_VkExtent2D_partial(&val->extent);
    728     return size;
    729 }
    730 
    731 static inline void
    732 vn_encode_VkRect2D_partial(struct vn_cs_encoder *enc, const VkRect2D *val)
    733 {
    734     vn_encode_VkOffset2D_partial(enc, &val->offset);
    735     vn_encode_VkExtent2D_partial(enc, &val->extent);
    736 }
    737 
    738 /* struct VkMemoryDedicatedRequirements chain */
    739 
    740 static inline size_t
    741 vn_sizeof_VkMemoryDedicatedRequirements_pnext(const void *val)
    742 {
    743     /* no known/supported struct */
    744     return vn_sizeof_simple_pointer(NULL);
    745 }
    746 
    747 static inline size_t
    748 vn_sizeof_VkMemoryDedicatedRequirements_self(const VkMemoryDedicatedRequirements *val)
    749 {
    750     size_t size = 0;
    751     /* skip val->{sType,pNext} */
    752     size += vn_sizeof_VkBool32(&val->prefersDedicatedAllocation);
    753     size += vn_sizeof_VkBool32(&val->requiresDedicatedAllocation);
    754     return size;
    755 }
    756 
    757 static inline size_t
    758 vn_sizeof_VkMemoryDedicatedRequirements(const VkMemoryDedicatedRequirements *val)
    759 {
    760     size_t size = 0;
    761 
    762     size += vn_sizeof_VkStructureType(&val->sType);
    763     size += vn_sizeof_VkMemoryDedicatedRequirements_pnext(val->pNext);
    764     size += vn_sizeof_VkMemoryDedicatedRequirements_self(val);
    765 
    766     return size;
    767 }
    768 
    769 static inline void
    770 vn_decode_VkMemoryDedicatedRequirements_pnext(struct vn_cs_decoder *dec, const void *val)
    771 {
    772     /* no known/supported struct */
    773     if (vn_decode_simple_pointer(dec))
    774         assert(false);
    775 }
    776 
    777 static inline void
    778 vn_decode_VkMemoryDedicatedRequirements_self(struct vn_cs_decoder *dec, VkMemoryDedicatedRequirements *val)
    779 {
    780     /* skip val->{sType,pNext} */
    781     vn_decode_VkBool32(dec, &val->prefersDedicatedAllocation);
    782     vn_decode_VkBool32(dec, &val->requiresDedicatedAllocation);
    783 }
    784 
    785 static inline void
    786 vn_decode_VkMemoryDedicatedRequirements(struct vn_cs_decoder *dec, VkMemoryDedicatedRequirements *val)
    787 {
    788     VkStructureType stype;
    789     vn_decode_VkStructureType(dec, &stype);
    790     assert(stype == VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS);
    791 
    792     assert(val->sType == stype);
    793     vn_decode_VkMemoryDedicatedRequirements_pnext(dec, val->pNext);
    794     vn_decode_VkMemoryDedicatedRequirements_self(dec, val);
    795 }
    796 
    797 static inline size_t
    798 vn_sizeof_VkMemoryDedicatedRequirements_pnext_partial(const void *val)
    799 {
    800     /* no known/supported struct */
    801     return vn_sizeof_simple_pointer(NULL);
    802 }
    803 
    804 static inline size_t
    805 vn_sizeof_VkMemoryDedicatedRequirements_self_partial(const VkMemoryDedicatedRequirements *val)
    806 {
    807     size_t size = 0;
    808     /* skip val->{sType,pNext} */
    809     /* skip val->prefersDedicatedAllocation */
    810     /* skip val->requiresDedicatedAllocation */
    811     return size;
    812 }
    813 
    814 static inline size_t
    815 vn_sizeof_VkMemoryDedicatedRequirements_partial(const VkMemoryDedicatedRequirements *val)
    816 {
    817     size_t size = 0;
    818 
    819     size += vn_sizeof_VkStructureType(&val->sType);
    820     size += vn_sizeof_VkMemoryDedicatedRequirements_pnext_partial(val->pNext);
    821     size += vn_sizeof_VkMemoryDedicatedRequirements_self_partial(val);
    822 
    823     return size;
    824 }
    825 
    826 static inline void
    827 vn_encode_VkMemoryDedicatedRequirements_pnext_partial(struct vn_cs_encoder *enc, const void *val)
    828 {
    829     /* no known/supported struct */
    830     vn_encode_simple_pointer(enc, NULL);
    831 }
    832 
    833 static inline void
    834 vn_encode_VkMemoryDedicatedRequirements_self_partial(struct vn_cs_encoder *enc, const VkMemoryDedicatedRequirements *val)
    835 {
    836     /* skip val->{sType,pNext} */
    837     /* skip val->prefersDedicatedAllocation */
    838     /* skip val->requiresDedicatedAllocation */
    839 }
    840 
    841 static inline void
    842 vn_encode_VkMemoryDedicatedRequirements_partial(struct vn_cs_encoder *enc, const VkMemoryDedicatedRequirements *val)
    843 {
    844     assert(val->sType == VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS);
    845     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS });
    846     vn_encode_VkMemoryDedicatedRequirements_pnext_partial(enc, val->pNext);
    847     vn_encode_VkMemoryDedicatedRequirements_self_partial(enc, val);
    848 }
    849 
    850 /* struct VkMemoryRequirements2 chain */
    851 
    852 static inline size_t
    853 vn_sizeof_VkMemoryRequirements2_pnext(const void *val)
    854 {
    855     const VkBaseInStructure *pnext = val;
    856     size_t size = 0;
    857 
    858     while (pnext) {
    859         switch ((int32_t)pnext->sType) {
    860         case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS:
    861             size += vn_sizeof_simple_pointer(pnext);
    862             size += vn_sizeof_VkStructureType(&pnext->sType);
    863             size += vn_sizeof_VkMemoryRequirements2_pnext(pnext->pNext);
    864             size += vn_sizeof_VkMemoryDedicatedRequirements_self((const VkMemoryDedicatedRequirements *)pnext);
    865             return size;
    866         default:
    867             /* ignore unknown/unsupported struct */
    868             break;
    869         }
    870         pnext = pnext->pNext;
    871     }
    872 
    873     return vn_sizeof_simple_pointer(NULL);
    874 }
    875 
    876 static inline size_t
    877 vn_sizeof_VkMemoryRequirements2_self(const VkMemoryRequirements2 *val)
    878 {
    879     size_t size = 0;
    880     /* skip val->{sType,pNext} */
    881     size += vn_sizeof_VkMemoryRequirements(&val->memoryRequirements);
    882     return size;
    883 }
    884 
    885 static inline size_t
    886 vn_sizeof_VkMemoryRequirements2(const VkMemoryRequirements2 *val)
    887 {
    888     size_t size = 0;
    889 
    890     size += vn_sizeof_VkStructureType(&val->sType);
    891     size += vn_sizeof_VkMemoryRequirements2_pnext(val->pNext);
    892     size += vn_sizeof_VkMemoryRequirements2_self(val);
    893 
    894     return size;
    895 }
    896 
    897 static inline void
    898 vn_decode_VkMemoryRequirements2_pnext(struct vn_cs_decoder *dec, const void *val)
    899 {
    900     VkBaseOutStructure *pnext = (VkBaseOutStructure *)val;
    901     VkStructureType stype;
    902 
    903     if (!vn_decode_simple_pointer(dec))
    904         return;
    905 
    906     vn_decode_VkStructureType(dec, &stype);
    907     while (true) {
    908         assert(pnext);
    909         if (pnext->sType == stype)
    910             break;
    911     }
    912 
    913     switch ((int32_t)pnext->sType) {
    914     case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS:
    915         vn_decode_VkMemoryRequirements2_pnext(dec, pnext->pNext);
    916         vn_decode_VkMemoryDedicatedRequirements_self(dec, (VkMemoryDedicatedRequirements *)pnext);
    917         break;
    918     default:
    919         assert(false);
    920         break;
    921     }
    922 }
    923 
    924 static inline void
    925 vn_decode_VkMemoryRequirements2_self(struct vn_cs_decoder *dec, VkMemoryRequirements2 *val)
    926 {
    927     /* skip val->{sType,pNext} */
    928     vn_decode_VkMemoryRequirements(dec, &val->memoryRequirements);
    929 }
    930 
    931 static inline void
    932 vn_decode_VkMemoryRequirements2(struct vn_cs_decoder *dec, VkMemoryRequirements2 *val)
    933 {
    934     VkStructureType stype;
    935     vn_decode_VkStructureType(dec, &stype);
    936     assert(stype == VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2);
    937 
    938     assert(val->sType == stype);
    939     vn_decode_VkMemoryRequirements2_pnext(dec, val->pNext);
    940     vn_decode_VkMemoryRequirements2_self(dec, val);
    941 }
    942 
    943 static inline size_t
    944 vn_sizeof_VkMemoryRequirements2_pnext_partial(const void *val)
    945 {
    946     const VkBaseInStructure *pnext = val;
    947     size_t size = 0;
    948 
    949     while (pnext) {
    950         switch ((int32_t)pnext->sType) {
    951         case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS:
    952             size += vn_sizeof_simple_pointer(pnext);
    953             size += vn_sizeof_VkStructureType(&pnext->sType);
    954             size += vn_sizeof_VkMemoryRequirements2_pnext_partial(pnext->pNext);
    955             size += vn_sizeof_VkMemoryDedicatedRequirements_self_partial((const VkMemoryDedicatedRequirements *)pnext);
    956             return size;
    957         default:
    958             /* ignore unknown/unsupported struct */
    959             break;
    960         }
    961         pnext = pnext->pNext;
    962     }
    963 
    964     return vn_sizeof_simple_pointer(NULL);
    965 }
    966 
    967 static inline size_t
    968 vn_sizeof_VkMemoryRequirements2_self_partial(const VkMemoryRequirements2 *val)
    969 {
    970     size_t size = 0;
    971     /* skip val->{sType,pNext} */
    972     size += vn_sizeof_VkMemoryRequirements_partial(&val->memoryRequirements);
    973     return size;
    974 }
    975 
    976 static inline size_t
    977 vn_sizeof_VkMemoryRequirements2_partial(const VkMemoryRequirements2 *val)
    978 {
    979     size_t size = 0;
    980 
    981     size += vn_sizeof_VkStructureType(&val->sType);
    982     size += vn_sizeof_VkMemoryRequirements2_pnext_partial(val->pNext);
    983     size += vn_sizeof_VkMemoryRequirements2_self_partial(val);
    984 
    985     return size;
    986 }
    987 
    988 static inline void
    989 vn_encode_VkMemoryRequirements2_pnext_partial(struct vn_cs_encoder *enc, const void *val)
    990 {
    991     const VkBaseInStructure *pnext = val;
    992 
    993     while (pnext) {
    994         switch ((int32_t)pnext->sType) {
    995         case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS:
    996             vn_encode_simple_pointer(enc, pnext);
    997             vn_encode_VkStructureType(enc, &pnext->sType);
    998             vn_encode_VkMemoryRequirements2_pnext_partial(enc, pnext->pNext);
    999             vn_encode_VkMemoryDedicatedRequirements_self_partial(enc, (const VkMemoryDedicatedRequirements *)pnext);
   1000             return;
   1001         default:
   1002             /* ignore unknown/unsupported struct */
   1003             break;
   1004         }
   1005         pnext = pnext->pNext;
   1006     }
   1007 
   1008     vn_encode_simple_pointer(enc, NULL);
   1009 }
   1010 
   1011 static inline void
   1012 vn_encode_VkMemoryRequirements2_self_partial(struct vn_cs_encoder *enc, const VkMemoryRequirements2 *val)
   1013 {
   1014     /* skip val->{sType,pNext} */
   1015     vn_encode_VkMemoryRequirements_partial(enc, &val->memoryRequirements);
   1016 }
   1017 
   1018 static inline void
   1019 vn_encode_VkMemoryRequirements2_partial(struct vn_cs_encoder *enc, const VkMemoryRequirements2 *val)
   1020 {
   1021     assert(val->sType == VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2);
   1022     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 });
   1023     vn_encode_VkMemoryRequirements2_pnext_partial(enc, val->pNext);
   1024     vn_encode_VkMemoryRequirements2_self_partial(enc, val);
   1025 }
   1026 
   1027 #endif /* VN_PROTOCOL_DRIVER_STRUCTS_H */
   1028