Path: blob/21.2-virgl/src/virtio/venus-protocol/vn_protocol_driver_render_pass.h
4560 views
/* This file is generated by venus-protocol. See vn_protocol_driver.h. */12/*3* Copyright 2020 Google LLC4* SPDX-License-Identifier: MIT5*/67#ifndef VN_PROTOCOL_DRIVER_RENDER_PASS_H8#define VN_PROTOCOL_DRIVER_RENDER_PASS_H910#include "vn_device.h"11#include "vn_protocol_driver_structs.h"1213/* struct VkAttachmentDescription */1415static inline size_t16vn_sizeof_VkAttachmentDescription(const VkAttachmentDescription *val)17{18size_t size = 0;19size += vn_sizeof_VkFlags(&val->flags);20size += vn_sizeof_VkFormat(&val->format);21size += vn_sizeof_VkSampleCountFlagBits(&val->samples);22size += vn_sizeof_VkAttachmentLoadOp(&val->loadOp);23size += vn_sizeof_VkAttachmentStoreOp(&val->storeOp);24size += vn_sizeof_VkAttachmentLoadOp(&val->stencilLoadOp);25size += vn_sizeof_VkAttachmentStoreOp(&val->stencilStoreOp);26size += vn_sizeof_VkImageLayout(&val->initialLayout);27size += vn_sizeof_VkImageLayout(&val->finalLayout);28return size;29}3031static inline void32vn_encode_VkAttachmentDescription(struct vn_cs_encoder *enc, const VkAttachmentDescription *val)33{34vn_encode_VkFlags(enc, &val->flags);35vn_encode_VkFormat(enc, &val->format);36vn_encode_VkSampleCountFlagBits(enc, &val->samples);37vn_encode_VkAttachmentLoadOp(enc, &val->loadOp);38vn_encode_VkAttachmentStoreOp(enc, &val->storeOp);39vn_encode_VkAttachmentLoadOp(enc, &val->stencilLoadOp);40vn_encode_VkAttachmentStoreOp(enc, &val->stencilStoreOp);41vn_encode_VkImageLayout(enc, &val->initialLayout);42vn_encode_VkImageLayout(enc, &val->finalLayout);43}4445/* struct VkAttachmentReference */4647static inline size_t48vn_sizeof_VkAttachmentReference(const VkAttachmentReference *val)49{50size_t size = 0;51size += vn_sizeof_uint32_t(&val->attachment);52size += vn_sizeof_VkImageLayout(&val->layout);53return size;54}5556static inline void57vn_encode_VkAttachmentReference(struct vn_cs_encoder *enc, const VkAttachmentReference *val)58{59vn_encode_uint32_t(enc, &val->attachment);60vn_encode_VkImageLayout(enc, &val->layout);61}6263/* struct VkSubpassDescription */6465static inline size_t66vn_sizeof_VkSubpassDescription(const VkSubpassDescription *val)67{68size_t size = 0;69size += vn_sizeof_VkFlags(&val->flags);70size += vn_sizeof_VkPipelineBindPoint(&val->pipelineBindPoint);71size += vn_sizeof_uint32_t(&val->inputAttachmentCount);72if (val->pInputAttachments) {73size += vn_sizeof_array_size(val->inputAttachmentCount);74for (uint32_t i = 0; i < val->inputAttachmentCount; i++)75size += vn_sizeof_VkAttachmentReference(&val->pInputAttachments[i]);76} else {77size += vn_sizeof_array_size(0);78}79size += vn_sizeof_uint32_t(&val->colorAttachmentCount);80if (val->pColorAttachments) {81size += vn_sizeof_array_size(val->colorAttachmentCount);82for (uint32_t i = 0; i < val->colorAttachmentCount; i++)83size += vn_sizeof_VkAttachmentReference(&val->pColorAttachments[i]);84} else {85size += vn_sizeof_array_size(0);86}87if (val->pResolveAttachments) {88size += vn_sizeof_array_size(val->colorAttachmentCount);89for (uint32_t i = 0; i < val->colorAttachmentCount; i++)90size += vn_sizeof_VkAttachmentReference(&val->pResolveAttachments[i]);91} else {92size += vn_sizeof_array_size(0);93}94size += vn_sizeof_simple_pointer(val->pDepthStencilAttachment);95if (val->pDepthStencilAttachment)96size += vn_sizeof_VkAttachmentReference(val->pDepthStencilAttachment);97size += vn_sizeof_uint32_t(&val->preserveAttachmentCount);98if (val->pPreserveAttachments) {99size += vn_sizeof_array_size(val->preserveAttachmentCount);100size += vn_sizeof_uint32_t_array(val->pPreserveAttachments, val->preserveAttachmentCount);101} else {102size += vn_sizeof_array_size(0);103}104return size;105}106107static inline void108vn_encode_VkSubpassDescription(struct vn_cs_encoder *enc, const VkSubpassDescription *val)109{110vn_encode_VkFlags(enc, &val->flags);111vn_encode_VkPipelineBindPoint(enc, &val->pipelineBindPoint);112vn_encode_uint32_t(enc, &val->inputAttachmentCount);113if (val->pInputAttachments) {114vn_encode_array_size(enc, val->inputAttachmentCount);115for (uint32_t i = 0; i < val->inputAttachmentCount; i++)116vn_encode_VkAttachmentReference(enc, &val->pInputAttachments[i]);117} else {118vn_encode_array_size(enc, 0);119}120vn_encode_uint32_t(enc, &val->colorAttachmentCount);121if (val->pColorAttachments) {122vn_encode_array_size(enc, val->colorAttachmentCount);123for (uint32_t i = 0; i < val->colorAttachmentCount; i++)124vn_encode_VkAttachmentReference(enc, &val->pColorAttachments[i]);125} else {126vn_encode_array_size(enc, 0);127}128if (val->pResolveAttachments) {129vn_encode_array_size(enc, val->colorAttachmentCount);130for (uint32_t i = 0; i < val->colorAttachmentCount; i++)131vn_encode_VkAttachmentReference(enc, &val->pResolveAttachments[i]);132} else {133vn_encode_array_size(enc, 0);134}135if (vn_encode_simple_pointer(enc, val->pDepthStencilAttachment))136vn_encode_VkAttachmentReference(enc, val->pDepthStencilAttachment);137vn_encode_uint32_t(enc, &val->preserveAttachmentCount);138if (val->pPreserveAttachments) {139vn_encode_array_size(enc, val->preserveAttachmentCount);140vn_encode_uint32_t_array(enc, val->pPreserveAttachments, val->preserveAttachmentCount);141} else {142vn_encode_array_size(enc, 0);143}144}145146/* struct VkSubpassDependency */147148static inline size_t149vn_sizeof_VkSubpassDependency(const VkSubpassDependency *val)150{151size_t size = 0;152size += vn_sizeof_uint32_t(&val->srcSubpass);153size += vn_sizeof_uint32_t(&val->dstSubpass);154size += vn_sizeof_VkFlags(&val->srcStageMask);155size += vn_sizeof_VkFlags(&val->dstStageMask);156size += vn_sizeof_VkFlags(&val->srcAccessMask);157size += vn_sizeof_VkFlags(&val->dstAccessMask);158size += vn_sizeof_VkFlags(&val->dependencyFlags);159return size;160}161162static inline void163vn_encode_VkSubpassDependency(struct vn_cs_encoder *enc, const VkSubpassDependency *val)164{165vn_encode_uint32_t(enc, &val->srcSubpass);166vn_encode_uint32_t(enc, &val->dstSubpass);167vn_encode_VkFlags(enc, &val->srcStageMask);168vn_encode_VkFlags(enc, &val->dstStageMask);169vn_encode_VkFlags(enc, &val->srcAccessMask);170vn_encode_VkFlags(enc, &val->dstAccessMask);171vn_encode_VkFlags(enc, &val->dependencyFlags);172}173174/* struct VkRenderPassMultiviewCreateInfo chain */175176static inline size_t177vn_sizeof_VkRenderPassMultiviewCreateInfo_pnext(const void *val)178{179/* no known/supported struct */180return vn_sizeof_simple_pointer(NULL);181}182183static inline size_t184vn_sizeof_VkRenderPassMultiviewCreateInfo_self(const VkRenderPassMultiviewCreateInfo *val)185{186size_t size = 0;187/* skip val->{sType,pNext} */188size += vn_sizeof_uint32_t(&val->subpassCount);189if (val->pViewMasks) {190size += vn_sizeof_array_size(val->subpassCount);191size += vn_sizeof_uint32_t_array(val->pViewMasks, val->subpassCount);192} else {193size += vn_sizeof_array_size(0);194}195size += vn_sizeof_uint32_t(&val->dependencyCount);196if (val->pViewOffsets) {197size += vn_sizeof_array_size(val->dependencyCount);198size += vn_sizeof_int32_t_array(val->pViewOffsets, val->dependencyCount);199} else {200size += vn_sizeof_array_size(0);201}202size += vn_sizeof_uint32_t(&val->correlationMaskCount);203if (val->pCorrelationMasks) {204size += vn_sizeof_array_size(val->correlationMaskCount);205size += vn_sizeof_uint32_t_array(val->pCorrelationMasks, val->correlationMaskCount);206} else {207size += vn_sizeof_array_size(0);208}209return size;210}211212static inline size_t213vn_sizeof_VkRenderPassMultiviewCreateInfo(const VkRenderPassMultiviewCreateInfo *val)214{215size_t size = 0;216217size += vn_sizeof_VkStructureType(&val->sType);218size += vn_sizeof_VkRenderPassMultiviewCreateInfo_pnext(val->pNext);219size += vn_sizeof_VkRenderPassMultiviewCreateInfo_self(val);220221return size;222}223224static inline void225vn_encode_VkRenderPassMultiviewCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)226{227/* no known/supported struct */228vn_encode_simple_pointer(enc, NULL);229}230231static inline void232vn_encode_VkRenderPassMultiviewCreateInfo_self(struct vn_cs_encoder *enc, const VkRenderPassMultiviewCreateInfo *val)233{234/* skip val->{sType,pNext} */235vn_encode_uint32_t(enc, &val->subpassCount);236if (val->pViewMasks) {237vn_encode_array_size(enc, val->subpassCount);238vn_encode_uint32_t_array(enc, val->pViewMasks, val->subpassCount);239} else {240vn_encode_array_size(enc, 0);241}242vn_encode_uint32_t(enc, &val->dependencyCount);243if (val->pViewOffsets) {244vn_encode_array_size(enc, val->dependencyCount);245vn_encode_int32_t_array(enc, val->pViewOffsets, val->dependencyCount);246} else {247vn_encode_array_size(enc, 0);248}249vn_encode_uint32_t(enc, &val->correlationMaskCount);250if (val->pCorrelationMasks) {251vn_encode_array_size(enc, val->correlationMaskCount);252vn_encode_uint32_t_array(enc, val->pCorrelationMasks, val->correlationMaskCount);253} else {254vn_encode_array_size(enc, 0);255}256}257258static inline void259vn_encode_VkRenderPassMultiviewCreateInfo(struct vn_cs_encoder *enc, const VkRenderPassMultiviewCreateInfo *val)260{261assert(val->sType == VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO);262vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO });263vn_encode_VkRenderPassMultiviewCreateInfo_pnext(enc, val->pNext);264vn_encode_VkRenderPassMultiviewCreateInfo_self(enc, val);265}266267/* struct VkInputAttachmentAspectReference */268269static inline size_t270vn_sizeof_VkInputAttachmentAspectReference(const VkInputAttachmentAspectReference *val)271{272size_t size = 0;273size += vn_sizeof_uint32_t(&val->subpass);274size += vn_sizeof_uint32_t(&val->inputAttachmentIndex);275size += vn_sizeof_VkFlags(&val->aspectMask);276return size;277}278279static inline void280vn_encode_VkInputAttachmentAspectReference(struct vn_cs_encoder *enc, const VkInputAttachmentAspectReference *val)281{282vn_encode_uint32_t(enc, &val->subpass);283vn_encode_uint32_t(enc, &val->inputAttachmentIndex);284vn_encode_VkFlags(enc, &val->aspectMask);285}286287/* struct VkRenderPassInputAttachmentAspectCreateInfo chain */288289static inline size_t290vn_sizeof_VkRenderPassInputAttachmentAspectCreateInfo_pnext(const void *val)291{292/* no known/supported struct */293return vn_sizeof_simple_pointer(NULL);294}295296static inline size_t297vn_sizeof_VkRenderPassInputAttachmentAspectCreateInfo_self(const VkRenderPassInputAttachmentAspectCreateInfo *val)298{299size_t size = 0;300/* skip val->{sType,pNext} */301size += vn_sizeof_uint32_t(&val->aspectReferenceCount);302if (val->pAspectReferences) {303size += vn_sizeof_array_size(val->aspectReferenceCount);304for (uint32_t i = 0; i < val->aspectReferenceCount; i++)305size += vn_sizeof_VkInputAttachmentAspectReference(&val->pAspectReferences[i]);306} else {307size += vn_sizeof_array_size(0);308}309return size;310}311312static inline size_t313vn_sizeof_VkRenderPassInputAttachmentAspectCreateInfo(const VkRenderPassInputAttachmentAspectCreateInfo *val)314{315size_t size = 0;316317size += vn_sizeof_VkStructureType(&val->sType);318size += vn_sizeof_VkRenderPassInputAttachmentAspectCreateInfo_pnext(val->pNext);319size += vn_sizeof_VkRenderPassInputAttachmentAspectCreateInfo_self(val);320321return size;322}323324static inline void325vn_encode_VkRenderPassInputAttachmentAspectCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)326{327/* no known/supported struct */328vn_encode_simple_pointer(enc, NULL);329}330331static inline void332vn_encode_VkRenderPassInputAttachmentAspectCreateInfo_self(struct vn_cs_encoder *enc, const VkRenderPassInputAttachmentAspectCreateInfo *val)333{334/* skip val->{sType,pNext} */335vn_encode_uint32_t(enc, &val->aspectReferenceCount);336if (val->pAspectReferences) {337vn_encode_array_size(enc, val->aspectReferenceCount);338for (uint32_t i = 0; i < val->aspectReferenceCount; i++)339vn_encode_VkInputAttachmentAspectReference(enc, &val->pAspectReferences[i]);340} else {341vn_encode_array_size(enc, 0);342}343}344345static inline void346vn_encode_VkRenderPassInputAttachmentAspectCreateInfo(struct vn_cs_encoder *enc, const VkRenderPassInputAttachmentAspectCreateInfo *val)347{348assert(val->sType == VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO);349vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO });350vn_encode_VkRenderPassInputAttachmentAspectCreateInfo_pnext(enc, val->pNext);351vn_encode_VkRenderPassInputAttachmentAspectCreateInfo_self(enc, val);352}353354/* struct VkRenderPassCreateInfo chain */355356static inline size_t357vn_sizeof_VkRenderPassCreateInfo_pnext(const void *val)358{359const VkBaseInStructure *pnext = val;360size_t size = 0;361362while (pnext) {363switch ((int32_t)pnext->sType) {364case VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO:365size += vn_sizeof_simple_pointer(pnext);366size += vn_sizeof_VkStructureType(&pnext->sType);367size += vn_sizeof_VkRenderPassCreateInfo_pnext(pnext->pNext);368size += vn_sizeof_VkRenderPassMultiviewCreateInfo_self((const VkRenderPassMultiviewCreateInfo *)pnext);369return size;370case VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO:371size += vn_sizeof_simple_pointer(pnext);372size += vn_sizeof_VkStructureType(&pnext->sType);373size += vn_sizeof_VkRenderPassCreateInfo_pnext(pnext->pNext);374size += vn_sizeof_VkRenderPassInputAttachmentAspectCreateInfo_self((const VkRenderPassInputAttachmentAspectCreateInfo *)pnext);375return size;376default:377/* ignore unknown/unsupported struct */378break;379}380pnext = pnext->pNext;381}382383return vn_sizeof_simple_pointer(NULL);384}385386static inline size_t387vn_sizeof_VkRenderPassCreateInfo_self(const VkRenderPassCreateInfo *val)388{389size_t size = 0;390/* skip val->{sType,pNext} */391size += vn_sizeof_VkFlags(&val->flags);392size += vn_sizeof_uint32_t(&val->attachmentCount);393if (val->pAttachments) {394size += vn_sizeof_array_size(val->attachmentCount);395for (uint32_t i = 0; i < val->attachmentCount; i++)396size += vn_sizeof_VkAttachmentDescription(&val->pAttachments[i]);397} else {398size += vn_sizeof_array_size(0);399}400size += vn_sizeof_uint32_t(&val->subpassCount);401if (val->pSubpasses) {402size += vn_sizeof_array_size(val->subpassCount);403for (uint32_t i = 0; i < val->subpassCount; i++)404size += vn_sizeof_VkSubpassDescription(&val->pSubpasses[i]);405} else {406size += vn_sizeof_array_size(0);407}408size += vn_sizeof_uint32_t(&val->dependencyCount);409if (val->pDependencies) {410size += vn_sizeof_array_size(val->dependencyCount);411for (uint32_t i = 0; i < val->dependencyCount; i++)412size += vn_sizeof_VkSubpassDependency(&val->pDependencies[i]);413} else {414size += vn_sizeof_array_size(0);415}416return size;417}418419static inline size_t420vn_sizeof_VkRenderPassCreateInfo(const VkRenderPassCreateInfo *val)421{422size_t size = 0;423424size += vn_sizeof_VkStructureType(&val->sType);425size += vn_sizeof_VkRenderPassCreateInfo_pnext(val->pNext);426size += vn_sizeof_VkRenderPassCreateInfo_self(val);427428return size;429}430431static inline void432vn_encode_VkRenderPassCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)433{434const VkBaseInStructure *pnext = val;435436while (pnext) {437switch ((int32_t)pnext->sType) {438case VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO:439vn_encode_simple_pointer(enc, pnext);440vn_encode_VkStructureType(enc, &pnext->sType);441vn_encode_VkRenderPassCreateInfo_pnext(enc, pnext->pNext);442vn_encode_VkRenderPassMultiviewCreateInfo_self(enc, (const VkRenderPassMultiviewCreateInfo *)pnext);443return;444case VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO:445vn_encode_simple_pointer(enc, pnext);446vn_encode_VkStructureType(enc, &pnext->sType);447vn_encode_VkRenderPassCreateInfo_pnext(enc, pnext->pNext);448vn_encode_VkRenderPassInputAttachmentAspectCreateInfo_self(enc, (const VkRenderPassInputAttachmentAspectCreateInfo *)pnext);449return;450default:451/* ignore unknown/unsupported struct */452break;453}454pnext = pnext->pNext;455}456457vn_encode_simple_pointer(enc, NULL);458}459460static inline void461vn_encode_VkRenderPassCreateInfo_self(struct vn_cs_encoder *enc, const VkRenderPassCreateInfo *val)462{463/* skip val->{sType,pNext} */464vn_encode_VkFlags(enc, &val->flags);465vn_encode_uint32_t(enc, &val->attachmentCount);466if (val->pAttachments) {467vn_encode_array_size(enc, val->attachmentCount);468for (uint32_t i = 0; i < val->attachmentCount; i++)469vn_encode_VkAttachmentDescription(enc, &val->pAttachments[i]);470} else {471vn_encode_array_size(enc, 0);472}473vn_encode_uint32_t(enc, &val->subpassCount);474if (val->pSubpasses) {475vn_encode_array_size(enc, val->subpassCount);476for (uint32_t i = 0; i < val->subpassCount; i++)477vn_encode_VkSubpassDescription(enc, &val->pSubpasses[i]);478} else {479vn_encode_array_size(enc, 0);480}481vn_encode_uint32_t(enc, &val->dependencyCount);482if (val->pDependencies) {483vn_encode_array_size(enc, val->dependencyCount);484for (uint32_t i = 0; i < val->dependencyCount; i++)485vn_encode_VkSubpassDependency(enc, &val->pDependencies[i]);486} else {487vn_encode_array_size(enc, 0);488}489}490491static inline void492vn_encode_VkRenderPassCreateInfo(struct vn_cs_encoder *enc, const VkRenderPassCreateInfo *val)493{494assert(val->sType == VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO);495vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO });496vn_encode_VkRenderPassCreateInfo_pnext(enc, val->pNext);497vn_encode_VkRenderPassCreateInfo_self(enc, val);498}499500/* struct VkAttachmentDescriptionStencilLayout chain */501502static inline size_t503vn_sizeof_VkAttachmentDescriptionStencilLayout_pnext(const void *val)504{505/* no known/supported struct */506return vn_sizeof_simple_pointer(NULL);507}508509static inline size_t510vn_sizeof_VkAttachmentDescriptionStencilLayout_self(const VkAttachmentDescriptionStencilLayout *val)511{512size_t size = 0;513/* skip val->{sType,pNext} */514size += vn_sizeof_VkImageLayout(&val->stencilInitialLayout);515size += vn_sizeof_VkImageLayout(&val->stencilFinalLayout);516return size;517}518519static inline size_t520vn_sizeof_VkAttachmentDescriptionStencilLayout(const VkAttachmentDescriptionStencilLayout *val)521{522size_t size = 0;523524size += vn_sizeof_VkStructureType(&val->sType);525size += vn_sizeof_VkAttachmentDescriptionStencilLayout_pnext(val->pNext);526size += vn_sizeof_VkAttachmentDescriptionStencilLayout_self(val);527528return size;529}530531static inline void532vn_encode_VkAttachmentDescriptionStencilLayout_pnext(struct vn_cs_encoder *enc, const void *val)533{534/* no known/supported struct */535vn_encode_simple_pointer(enc, NULL);536}537538static inline void539vn_encode_VkAttachmentDescriptionStencilLayout_self(struct vn_cs_encoder *enc, const VkAttachmentDescriptionStencilLayout *val)540{541/* skip val->{sType,pNext} */542vn_encode_VkImageLayout(enc, &val->stencilInitialLayout);543vn_encode_VkImageLayout(enc, &val->stencilFinalLayout);544}545546static inline void547vn_encode_VkAttachmentDescriptionStencilLayout(struct vn_cs_encoder *enc, const VkAttachmentDescriptionStencilLayout *val)548{549assert(val->sType == VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT);550vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT });551vn_encode_VkAttachmentDescriptionStencilLayout_pnext(enc, val->pNext);552vn_encode_VkAttachmentDescriptionStencilLayout_self(enc, val);553}554555/* struct VkAttachmentDescription2 chain */556557static inline size_t558vn_sizeof_VkAttachmentDescription2_pnext(const void *val)559{560const VkBaseInStructure *pnext = val;561size_t size = 0;562563while (pnext) {564switch ((int32_t)pnext->sType) {565case VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT:566size += vn_sizeof_simple_pointer(pnext);567size += vn_sizeof_VkStructureType(&pnext->sType);568size += vn_sizeof_VkAttachmentDescription2_pnext(pnext->pNext);569size += vn_sizeof_VkAttachmentDescriptionStencilLayout_self((const VkAttachmentDescriptionStencilLayout *)pnext);570return size;571default:572/* ignore unknown/unsupported struct */573break;574}575pnext = pnext->pNext;576}577578return vn_sizeof_simple_pointer(NULL);579}580581static inline size_t582vn_sizeof_VkAttachmentDescription2_self(const VkAttachmentDescription2 *val)583{584size_t size = 0;585/* skip val->{sType,pNext} */586size += vn_sizeof_VkFlags(&val->flags);587size += vn_sizeof_VkFormat(&val->format);588size += vn_sizeof_VkSampleCountFlagBits(&val->samples);589size += vn_sizeof_VkAttachmentLoadOp(&val->loadOp);590size += vn_sizeof_VkAttachmentStoreOp(&val->storeOp);591size += vn_sizeof_VkAttachmentLoadOp(&val->stencilLoadOp);592size += vn_sizeof_VkAttachmentStoreOp(&val->stencilStoreOp);593size += vn_sizeof_VkImageLayout(&val->initialLayout);594size += vn_sizeof_VkImageLayout(&val->finalLayout);595return size;596}597598static inline size_t599vn_sizeof_VkAttachmentDescription2(const VkAttachmentDescription2 *val)600{601size_t size = 0;602603size += vn_sizeof_VkStructureType(&val->sType);604size += vn_sizeof_VkAttachmentDescription2_pnext(val->pNext);605size += vn_sizeof_VkAttachmentDescription2_self(val);606607return size;608}609610static inline void611vn_encode_VkAttachmentDescription2_pnext(struct vn_cs_encoder *enc, const void *val)612{613const VkBaseInStructure *pnext = val;614615while (pnext) {616switch ((int32_t)pnext->sType) {617case VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT:618vn_encode_simple_pointer(enc, pnext);619vn_encode_VkStructureType(enc, &pnext->sType);620vn_encode_VkAttachmentDescription2_pnext(enc, pnext->pNext);621vn_encode_VkAttachmentDescriptionStencilLayout_self(enc, (const VkAttachmentDescriptionStencilLayout *)pnext);622return;623default:624/* ignore unknown/unsupported struct */625break;626}627pnext = pnext->pNext;628}629630vn_encode_simple_pointer(enc, NULL);631}632633static inline void634vn_encode_VkAttachmentDescription2_self(struct vn_cs_encoder *enc, const VkAttachmentDescription2 *val)635{636/* skip val->{sType,pNext} */637vn_encode_VkFlags(enc, &val->flags);638vn_encode_VkFormat(enc, &val->format);639vn_encode_VkSampleCountFlagBits(enc, &val->samples);640vn_encode_VkAttachmentLoadOp(enc, &val->loadOp);641vn_encode_VkAttachmentStoreOp(enc, &val->storeOp);642vn_encode_VkAttachmentLoadOp(enc, &val->stencilLoadOp);643vn_encode_VkAttachmentStoreOp(enc, &val->stencilStoreOp);644vn_encode_VkImageLayout(enc, &val->initialLayout);645vn_encode_VkImageLayout(enc, &val->finalLayout);646}647648static inline void649vn_encode_VkAttachmentDescription2(struct vn_cs_encoder *enc, const VkAttachmentDescription2 *val)650{651assert(val->sType == VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2);652vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 });653vn_encode_VkAttachmentDescription2_pnext(enc, val->pNext);654vn_encode_VkAttachmentDescription2_self(enc, val);655}656657/* struct VkAttachmentReferenceStencilLayout chain */658659static inline size_t660vn_sizeof_VkAttachmentReferenceStencilLayout_pnext(const void *val)661{662/* no known/supported struct */663return vn_sizeof_simple_pointer(NULL);664}665666static inline size_t667vn_sizeof_VkAttachmentReferenceStencilLayout_self(const VkAttachmentReferenceStencilLayout *val)668{669size_t size = 0;670/* skip val->{sType,pNext} */671size += vn_sizeof_VkImageLayout(&val->stencilLayout);672return size;673}674675static inline size_t676vn_sizeof_VkAttachmentReferenceStencilLayout(const VkAttachmentReferenceStencilLayout *val)677{678size_t size = 0;679680size += vn_sizeof_VkStructureType(&val->sType);681size += vn_sizeof_VkAttachmentReferenceStencilLayout_pnext(val->pNext);682size += vn_sizeof_VkAttachmentReferenceStencilLayout_self(val);683684return size;685}686687static inline void688vn_encode_VkAttachmentReferenceStencilLayout_pnext(struct vn_cs_encoder *enc, const void *val)689{690/* no known/supported struct */691vn_encode_simple_pointer(enc, NULL);692}693694static inline void695vn_encode_VkAttachmentReferenceStencilLayout_self(struct vn_cs_encoder *enc, const VkAttachmentReferenceStencilLayout *val)696{697/* skip val->{sType,pNext} */698vn_encode_VkImageLayout(enc, &val->stencilLayout);699}700701static inline void702vn_encode_VkAttachmentReferenceStencilLayout(struct vn_cs_encoder *enc, const VkAttachmentReferenceStencilLayout *val)703{704assert(val->sType == VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT);705vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT });706vn_encode_VkAttachmentReferenceStencilLayout_pnext(enc, val->pNext);707vn_encode_VkAttachmentReferenceStencilLayout_self(enc, val);708}709710/* struct VkAttachmentReference2 chain */711712static inline size_t713vn_sizeof_VkAttachmentReference2_pnext(const void *val)714{715const VkBaseInStructure *pnext = val;716size_t size = 0;717718while (pnext) {719switch ((int32_t)pnext->sType) {720case VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT:721size += vn_sizeof_simple_pointer(pnext);722size += vn_sizeof_VkStructureType(&pnext->sType);723size += vn_sizeof_VkAttachmentReference2_pnext(pnext->pNext);724size += vn_sizeof_VkAttachmentReferenceStencilLayout_self((const VkAttachmentReferenceStencilLayout *)pnext);725return size;726default:727/* ignore unknown/unsupported struct */728break;729}730pnext = pnext->pNext;731}732733return vn_sizeof_simple_pointer(NULL);734}735736static inline size_t737vn_sizeof_VkAttachmentReference2_self(const VkAttachmentReference2 *val)738{739size_t size = 0;740/* skip val->{sType,pNext} */741size += vn_sizeof_uint32_t(&val->attachment);742size += vn_sizeof_VkImageLayout(&val->layout);743size += vn_sizeof_VkFlags(&val->aspectMask);744return size;745}746747static inline size_t748vn_sizeof_VkAttachmentReference2(const VkAttachmentReference2 *val)749{750size_t size = 0;751752size += vn_sizeof_VkStructureType(&val->sType);753size += vn_sizeof_VkAttachmentReference2_pnext(val->pNext);754size += vn_sizeof_VkAttachmentReference2_self(val);755756return size;757}758759static inline void760vn_encode_VkAttachmentReference2_pnext(struct vn_cs_encoder *enc, const void *val)761{762const VkBaseInStructure *pnext = val;763764while (pnext) {765switch ((int32_t)pnext->sType) {766case VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT:767vn_encode_simple_pointer(enc, pnext);768vn_encode_VkStructureType(enc, &pnext->sType);769vn_encode_VkAttachmentReference2_pnext(enc, pnext->pNext);770vn_encode_VkAttachmentReferenceStencilLayout_self(enc, (const VkAttachmentReferenceStencilLayout *)pnext);771return;772default:773/* ignore unknown/unsupported struct */774break;775}776pnext = pnext->pNext;777}778779vn_encode_simple_pointer(enc, NULL);780}781782static inline void783vn_encode_VkAttachmentReference2_self(struct vn_cs_encoder *enc, const VkAttachmentReference2 *val)784{785/* skip val->{sType,pNext} */786vn_encode_uint32_t(enc, &val->attachment);787vn_encode_VkImageLayout(enc, &val->layout);788vn_encode_VkFlags(enc, &val->aspectMask);789}790791static inline void792vn_encode_VkAttachmentReference2(struct vn_cs_encoder *enc, const VkAttachmentReference2 *val)793{794assert(val->sType == VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2);795vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 });796vn_encode_VkAttachmentReference2_pnext(enc, val->pNext);797vn_encode_VkAttachmentReference2_self(enc, val);798}799800/* struct VkSubpassDescriptionDepthStencilResolve chain */801802static inline size_t803vn_sizeof_VkSubpassDescriptionDepthStencilResolve_pnext(const void *val)804{805/* no known/supported struct */806return vn_sizeof_simple_pointer(NULL);807}808809static inline size_t810vn_sizeof_VkSubpassDescriptionDepthStencilResolve_self(const VkSubpassDescriptionDepthStencilResolve *val)811{812size_t size = 0;813/* skip val->{sType,pNext} */814size += vn_sizeof_VkResolveModeFlagBits(&val->depthResolveMode);815size += vn_sizeof_VkResolveModeFlagBits(&val->stencilResolveMode);816size += vn_sizeof_simple_pointer(val->pDepthStencilResolveAttachment);817if (val->pDepthStencilResolveAttachment)818size += vn_sizeof_VkAttachmentReference2(val->pDepthStencilResolveAttachment);819return size;820}821822static inline size_t823vn_sizeof_VkSubpassDescriptionDepthStencilResolve(const VkSubpassDescriptionDepthStencilResolve *val)824{825size_t size = 0;826827size += vn_sizeof_VkStructureType(&val->sType);828size += vn_sizeof_VkSubpassDescriptionDepthStencilResolve_pnext(val->pNext);829size += vn_sizeof_VkSubpassDescriptionDepthStencilResolve_self(val);830831return size;832}833834static inline void835vn_encode_VkSubpassDescriptionDepthStencilResolve_pnext(struct vn_cs_encoder *enc, const void *val)836{837/* no known/supported struct */838vn_encode_simple_pointer(enc, NULL);839}840841static inline void842vn_encode_VkSubpassDescriptionDepthStencilResolve_self(struct vn_cs_encoder *enc, const VkSubpassDescriptionDepthStencilResolve *val)843{844/* skip val->{sType,pNext} */845vn_encode_VkResolveModeFlagBits(enc, &val->depthResolveMode);846vn_encode_VkResolveModeFlagBits(enc, &val->stencilResolveMode);847if (vn_encode_simple_pointer(enc, val->pDepthStencilResolveAttachment))848vn_encode_VkAttachmentReference2(enc, val->pDepthStencilResolveAttachment);849}850851static inline void852vn_encode_VkSubpassDescriptionDepthStencilResolve(struct vn_cs_encoder *enc, const VkSubpassDescriptionDepthStencilResolve *val)853{854assert(val->sType == VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE);855vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE });856vn_encode_VkSubpassDescriptionDepthStencilResolve_pnext(enc, val->pNext);857vn_encode_VkSubpassDescriptionDepthStencilResolve_self(enc, val);858}859860/* struct VkSubpassDescription2 chain */861862static inline size_t863vn_sizeof_VkSubpassDescription2_pnext(const void *val)864{865const VkBaseInStructure *pnext = val;866size_t size = 0;867868while (pnext) {869switch ((int32_t)pnext->sType) {870case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE:871size += vn_sizeof_simple_pointer(pnext);872size += vn_sizeof_VkStructureType(&pnext->sType);873size += vn_sizeof_VkSubpassDescription2_pnext(pnext->pNext);874size += vn_sizeof_VkSubpassDescriptionDepthStencilResolve_self((const VkSubpassDescriptionDepthStencilResolve *)pnext);875return size;876default:877/* ignore unknown/unsupported struct */878break;879}880pnext = pnext->pNext;881}882883return vn_sizeof_simple_pointer(NULL);884}885886static inline size_t887vn_sizeof_VkSubpassDescription2_self(const VkSubpassDescription2 *val)888{889size_t size = 0;890/* skip val->{sType,pNext} */891size += vn_sizeof_VkFlags(&val->flags);892size += vn_sizeof_VkPipelineBindPoint(&val->pipelineBindPoint);893size += vn_sizeof_uint32_t(&val->viewMask);894size += vn_sizeof_uint32_t(&val->inputAttachmentCount);895if (val->pInputAttachments) {896size += vn_sizeof_array_size(val->inputAttachmentCount);897for (uint32_t i = 0; i < val->inputAttachmentCount; i++)898size += vn_sizeof_VkAttachmentReference2(&val->pInputAttachments[i]);899} else {900size += vn_sizeof_array_size(0);901}902size += vn_sizeof_uint32_t(&val->colorAttachmentCount);903if (val->pColorAttachments) {904size += vn_sizeof_array_size(val->colorAttachmentCount);905for (uint32_t i = 0; i < val->colorAttachmentCount; i++)906size += vn_sizeof_VkAttachmentReference2(&val->pColorAttachments[i]);907} else {908size += vn_sizeof_array_size(0);909}910if (val->pResolveAttachments) {911size += vn_sizeof_array_size(val->colorAttachmentCount);912for (uint32_t i = 0; i < val->colorAttachmentCount; i++)913size += vn_sizeof_VkAttachmentReference2(&val->pResolveAttachments[i]);914} else {915size += vn_sizeof_array_size(0);916}917size += vn_sizeof_simple_pointer(val->pDepthStencilAttachment);918if (val->pDepthStencilAttachment)919size += vn_sizeof_VkAttachmentReference2(val->pDepthStencilAttachment);920size += vn_sizeof_uint32_t(&val->preserveAttachmentCount);921if (val->pPreserveAttachments) {922size += vn_sizeof_array_size(val->preserveAttachmentCount);923size += vn_sizeof_uint32_t_array(val->pPreserveAttachments, val->preserveAttachmentCount);924} else {925size += vn_sizeof_array_size(0);926}927return size;928}929930static inline size_t931vn_sizeof_VkSubpassDescription2(const VkSubpassDescription2 *val)932{933size_t size = 0;934935size += vn_sizeof_VkStructureType(&val->sType);936size += vn_sizeof_VkSubpassDescription2_pnext(val->pNext);937size += vn_sizeof_VkSubpassDescription2_self(val);938939return size;940}941942static inline void943vn_encode_VkSubpassDescription2_pnext(struct vn_cs_encoder *enc, const void *val)944{945const VkBaseInStructure *pnext = val;946947while (pnext) {948switch ((int32_t)pnext->sType) {949case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE:950vn_encode_simple_pointer(enc, pnext);951vn_encode_VkStructureType(enc, &pnext->sType);952vn_encode_VkSubpassDescription2_pnext(enc, pnext->pNext);953vn_encode_VkSubpassDescriptionDepthStencilResolve_self(enc, (const VkSubpassDescriptionDepthStencilResolve *)pnext);954return;955default:956/* ignore unknown/unsupported struct */957break;958}959pnext = pnext->pNext;960}961962vn_encode_simple_pointer(enc, NULL);963}964965static inline void966vn_encode_VkSubpassDescription2_self(struct vn_cs_encoder *enc, const VkSubpassDescription2 *val)967{968/* skip val->{sType,pNext} */969vn_encode_VkFlags(enc, &val->flags);970vn_encode_VkPipelineBindPoint(enc, &val->pipelineBindPoint);971vn_encode_uint32_t(enc, &val->viewMask);972vn_encode_uint32_t(enc, &val->inputAttachmentCount);973if (val->pInputAttachments) {974vn_encode_array_size(enc, val->inputAttachmentCount);975for (uint32_t i = 0; i < val->inputAttachmentCount; i++)976vn_encode_VkAttachmentReference2(enc, &val->pInputAttachments[i]);977} else {978vn_encode_array_size(enc, 0);979}980vn_encode_uint32_t(enc, &val->colorAttachmentCount);981if (val->pColorAttachments) {982vn_encode_array_size(enc, val->colorAttachmentCount);983for (uint32_t i = 0; i < val->colorAttachmentCount; i++)984vn_encode_VkAttachmentReference2(enc, &val->pColorAttachments[i]);985} else {986vn_encode_array_size(enc, 0);987}988if (val->pResolveAttachments) {989vn_encode_array_size(enc, val->colorAttachmentCount);990for (uint32_t i = 0; i < val->colorAttachmentCount; i++)991vn_encode_VkAttachmentReference2(enc, &val->pResolveAttachments[i]);992} else {993vn_encode_array_size(enc, 0);994}995if (vn_encode_simple_pointer(enc, val->pDepthStencilAttachment))996vn_encode_VkAttachmentReference2(enc, val->pDepthStencilAttachment);997vn_encode_uint32_t(enc, &val->preserveAttachmentCount);998if (val->pPreserveAttachments) {999vn_encode_array_size(enc, val->preserveAttachmentCount);1000vn_encode_uint32_t_array(enc, val->pPreserveAttachments, val->preserveAttachmentCount);1001} else {1002vn_encode_array_size(enc, 0);1003}1004}10051006static inline void1007vn_encode_VkSubpassDescription2(struct vn_cs_encoder *enc, const VkSubpassDescription2 *val)1008{1009assert(val->sType == VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2);1010vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 });1011vn_encode_VkSubpassDescription2_pnext(enc, val->pNext);1012vn_encode_VkSubpassDescription2_self(enc, val);1013}10141015/* struct VkSubpassDependency2 chain */10161017static inline size_t1018vn_sizeof_VkSubpassDependency2_pnext(const void *val)1019{1020/* no known/supported struct */1021return vn_sizeof_simple_pointer(NULL);1022}10231024static inline size_t1025vn_sizeof_VkSubpassDependency2_self(const VkSubpassDependency2 *val)1026{1027size_t size = 0;1028/* skip val->{sType,pNext} */1029size += vn_sizeof_uint32_t(&val->srcSubpass);1030size += vn_sizeof_uint32_t(&val->dstSubpass);1031size += vn_sizeof_VkFlags(&val->srcStageMask);1032size += vn_sizeof_VkFlags(&val->dstStageMask);1033size += vn_sizeof_VkFlags(&val->srcAccessMask);1034size += vn_sizeof_VkFlags(&val->dstAccessMask);1035size += vn_sizeof_VkFlags(&val->dependencyFlags);1036size += vn_sizeof_int32_t(&val->viewOffset);1037return size;1038}10391040static inline size_t1041vn_sizeof_VkSubpassDependency2(const VkSubpassDependency2 *val)1042{1043size_t size = 0;10441045size += vn_sizeof_VkStructureType(&val->sType);1046size += vn_sizeof_VkSubpassDependency2_pnext(val->pNext);1047size += vn_sizeof_VkSubpassDependency2_self(val);10481049return size;1050}10511052static inline void1053vn_encode_VkSubpassDependency2_pnext(struct vn_cs_encoder *enc, const void *val)1054{1055/* no known/supported struct */1056vn_encode_simple_pointer(enc, NULL);1057}10581059static inline void1060vn_encode_VkSubpassDependency2_self(struct vn_cs_encoder *enc, const VkSubpassDependency2 *val)1061{1062/* skip val->{sType,pNext} */1063vn_encode_uint32_t(enc, &val->srcSubpass);1064vn_encode_uint32_t(enc, &val->dstSubpass);1065vn_encode_VkFlags(enc, &val->srcStageMask);1066vn_encode_VkFlags(enc, &val->dstStageMask);1067vn_encode_VkFlags(enc, &val->srcAccessMask);1068vn_encode_VkFlags(enc, &val->dstAccessMask);1069vn_encode_VkFlags(enc, &val->dependencyFlags);1070vn_encode_int32_t(enc, &val->viewOffset);1071}10721073static inline void1074vn_encode_VkSubpassDependency2(struct vn_cs_encoder *enc, const VkSubpassDependency2 *val)1075{1076assert(val->sType == VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2);1077vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 });1078vn_encode_VkSubpassDependency2_pnext(enc, val->pNext);1079vn_encode_VkSubpassDependency2_self(enc, val);1080}10811082/* struct VkRenderPassCreateInfo2 chain */10831084static inline size_t1085vn_sizeof_VkRenderPassCreateInfo2_pnext(const void *val)1086{1087/* no known/supported struct */1088return vn_sizeof_simple_pointer(NULL);1089}10901091static inline size_t1092vn_sizeof_VkRenderPassCreateInfo2_self(const VkRenderPassCreateInfo2 *val)1093{1094size_t size = 0;1095/* skip val->{sType,pNext} */1096size += vn_sizeof_VkFlags(&val->flags);1097size += vn_sizeof_uint32_t(&val->attachmentCount);1098if (val->pAttachments) {1099size += vn_sizeof_array_size(val->attachmentCount);1100for (uint32_t i = 0; i < val->attachmentCount; i++)1101size += vn_sizeof_VkAttachmentDescription2(&val->pAttachments[i]);1102} else {1103size += vn_sizeof_array_size(0);1104}1105size += vn_sizeof_uint32_t(&val->subpassCount);1106if (val->pSubpasses) {1107size += vn_sizeof_array_size(val->subpassCount);1108for (uint32_t i = 0; i < val->subpassCount; i++)1109size += vn_sizeof_VkSubpassDescription2(&val->pSubpasses[i]);1110} else {1111size += vn_sizeof_array_size(0);1112}1113size += vn_sizeof_uint32_t(&val->dependencyCount);1114if (val->pDependencies) {1115size += vn_sizeof_array_size(val->dependencyCount);1116for (uint32_t i = 0; i < val->dependencyCount; i++)1117size += vn_sizeof_VkSubpassDependency2(&val->pDependencies[i]);1118} else {1119size += vn_sizeof_array_size(0);1120}1121size += vn_sizeof_uint32_t(&val->correlatedViewMaskCount);1122if (val->pCorrelatedViewMasks) {1123size += vn_sizeof_array_size(val->correlatedViewMaskCount);1124size += vn_sizeof_uint32_t_array(val->pCorrelatedViewMasks, val->correlatedViewMaskCount);1125} else {1126size += vn_sizeof_array_size(0);1127}1128return size;1129}11301131static inline size_t1132vn_sizeof_VkRenderPassCreateInfo2(const VkRenderPassCreateInfo2 *val)1133{1134size_t size = 0;11351136size += vn_sizeof_VkStructureType(&val->sType);1137size += vn_sizeof_VkRenderPassCreateInfo2_pnext(val->pNext);1138size += vn_sizeof_VkRenderPassCreateInfo2_self(val);11391140return size;1141}11421143static inline void1144vn_encode_VkRenderPassCreateInfo2_pnext(struct vn_cs_encoder *enc, const void *val)1145{1146/* no known/supported struct */1147vn_encode_simple_pointer(enc, NULL);1148}11491150static inline void1151vn_encode_VkRenderPassCreateInfo2_self(struct vn_cs_encoder *enc, const VkRenderPassCreateInfo2 *val)1152{1153/* skip val->{sType,pNext} */1154vn_encode_VkFlags(enc, &val->flags);1155vn_encode_uint32_t(enc, &val->attachmentCount);1156if (val->pAttachments) {1157vn_encode_array_size(enc, val->attachmentCount);1158for (uint32_t i = 0; i < val->attachmentCount; i++)1159vn_encode_VkAttachmentDescription2(enc, &val->pAttachments[i]);1160} else {1161vn_encode_array_size(enc, 0);1162}1163vn_encode_uint32_t(enc, &val->subpassCount);1164if (val->pSubpasses) {1165vn_encode_array_size(enc, val->subpassCount);1166for (uint32_t i = 0; i < val->subpassCount; i++)1167vn_encode_VkSubpassDescription2(enc, &val->pSubpasses[i]);1168} else {1169vn_encode_array_size(enc, 0);1170}1171vn_encode_uint32_t(enc, &val->dependencyCount);1172if (val->pDependencies) {1173vn_encode_array_size(enc, val->dependencyCount);1174for (uint32_t i = 0; i < val->dependencyCount; i++)1175vn_encode_VkSubpassDependency2(enc, &val->pDependencies[i]);1176} else {1177vn_encode_array_size(enc, 0);1178}1179vn_encode_uint32_t(enc, &val->correlatedViewMaskCount);1180if (val->pCorrelatedViewMasks) {1181vn_encode_array_size(enc, val->correlatedViewMaskCount);1182vn_encode_uint32_t_array(enc, val->pCorrelatedViewMasks, val->correlatedViewMaskCount);1183} else {1184vn_encode_array_size(enc, 0);1185}1186}11871188static inline void1189vn_encode_VkRenderPassCreateInfo2(struct vn_cs_encoder *enc, const VkRenderPassCreateInfo2 *val)1190{1191assert(val->sType == VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2);1192vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 });1193vn_encode_VkRenderPassCreateInfo2_pnext(enc, val->pNext);1194vn_encode_VkRenderPassCreateInfo2_self(enc, val);1195}11961197static inline size_t vn_sizeof_vkCreateRenderPass(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass)1198{1199const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateRenderPass_EXT;1200const VkFlags cmd_flags = 0;1201size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);12021203cmd_size += vn_sizeof_VkDevice(&device);1204cmd_size += vn_sizeof_simple_pointer(pCreateInfo);1205if (pCreateInfo)1206cmd_size += vn_sizeof_VkRenderPassCreateInfo(pCreateInfo);1207cmd_size += vn_sizeof_simple_pointer(pAllocator);1208if (pAllocator)1209assert(false);1210cmd_size += vn_sizeof_simple_pointer(pRenderPass);1211if (pRenderPass)1212cmd_size += vn_sizeof_VkRenderPass(pRenderPass);12131214return cmd_size;1215}12161217static inline void vn_encode_vkCreateRenderPass(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass)1218{1219const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateRenderPass_EXT;12201221vn_encode_VkCommandTypeEXT(enc, &cmd_type);1222vn_encode_VkFlags(enc, &cmd_flags);12231224vn_encode_VkDevice(enc, &device);1225if (vn_encode_simple_pointer(enc, pCreateInfo))1226vn_encode_VkRenderPassCreateInfo(enc, pCreateInfo);1227if (vn_encode_simple_pointer(enc, pAllocator))1228assert(false);1229if (vn_encode_simple_pointer(enc, pRenderPass))1230vn_encode_VkRenderPass(enc, pRenderPass);1231}12321233static inline size_t vn_sizeof_vkCreateRenderPass_reply(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass)1234{1235const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateRenderPass_EXT;1236size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);12371238VkResult ret;1239cmd_size += vn_sizeof_VkResult(&ret);1240/* skip device */1241/* skip pCreateInfo */1242/* skip pAllocator */1243cmd_size += vn_sizeof_simple_pointer(pRenderPass);1244if (pRenderPass)1245cmd_size += vn_sizeof_VkRenderPass(pRenderPass);12461247return cmd_size;1248}12491250static inline VkResult vn_decode_vkCreateRenderPass_reply(struct vn_cs_decoder *dec, VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass)1251{1252VkCommandTypeEXT command_type;1253vn_decode_VkCommandTypeEXT(dec, &command_type);1254assert(command_type == VK_COMMAND_TYPE_vkCreateRenderPass_EXT);12551256VkResult ret;1257vn_decode_VkResult(dec, &ret);1258/* skip device */1259/* skip pCreateInfo */1260/* skip pAllocator */1261if (vn_decode_simple_pointer(dec)) {1262vn_decode_VkRenderPass(dec, pRenderPass);1263} else {1264pRenderPass = NULL;1265}12661267return ret;1268}12691270static inline size_t vn_sizeof_vkDestroyRenderPass(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator)1271{1272const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyRenderPass_EXT;1273const VkFlags cmd_flags = 0;1274size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);12751276cmd_size += vn_sizeof_VkDevice(&device);1277cmd_size += vn_sizeof_VkRenderPass(&renderPass);1278cmd_size += vn_sizeof_simple_pointer(pAllocator);1279if (pAllocator)1280assert(false);12811282return cmd_size;1283}12841285static inline void vn_encode_vkDestroyRenderPass(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator)1286{1287const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyRenderPass_EXT;12881289vn_encode_VkCommandTypeEXT(enc, &cmd_type);1290vn_encode_VkFlags(enc, &cmd_flags);12911292vn_encode_VkDevice(enc, &device);1293vn_encode_VkRenderPass(enc, &renderPass);1294if (vn_encode_simple_pointer(enc, pAllocator))1295assert(false);1296}12971298static inline size_t vn_sizeof_vkDestroyRenderPass_reply(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator)1299{1300const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyRenderPass_EXT;1301size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);13021303/* skip device */1304/* skip renderPass */1305/* skip pAllocator */13061307return cmd_size;1308}13091310static inline void vn_decode_vkDestroyRenderPass_reply(struct vn_cs_decoder *dec, VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator)1311{1312VkCommandTypeEXT command_type;1313vn_decode_VkCommandTypeEXT(dec, &command_type);1314assert(command_type == VK_COMMAND_TYPE_vkDestroyRenderPass_EXT);13151316/* skip device */1317/* skip renderPass */1318/* skip pAllocator */1319}13201321static inline size_t vn_sizeof_vkGetRenderAreaGranularity(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity)1322{1323const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetRenderAreaGranularity_EXT;1324const VkFlags cmd_flags = 0;1325size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);13261327cmd_size += vn_sizeof_VkDevice(&device);1328cmd_size += vn_sizeof_VkRenderPass(&renderPass);1329cmd_size += vn_sizeof_simple_pointer(pGranularity);1330if (pGranularity)1331cmd_size += vn_sizeof_VkExtent2D_partial(pGranularity);13321333return cmd_size;1334}13351336static inline void vn_encode_vkGetRenderAreaGranularity(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity)1337{1338const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetRenderAreaGranularity_EXT;13391340vn_encode_VkCommandTypeEXT(enc, &cmd_type);1341vn_encode_VkFlags(enc, &cmd_flags);13421343vn_encode_VkDevice(enc, &device);1344vn_encode_VkRenderPass(enc, &renderPass);1345if (vn_encode_simple_pointer(enc, pGranularity))1346vn_encode_VkExtent2D_partial(enc, pGranularity);1347}13481349static inline size_t vn_sizeof_vkGetRenderAreaGranularity_reply(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity)1350{1351const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetRenderAreaGranularity_EXT;1352size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);13531354/* skip device */1355/* skip renderPass */1356cmd_size += vn_sizeof_simple_pointer(pGranularity);1357if (pGranularity)1358cmd_size += vn_sizeof_VkExtent2D(pGranularity);13591360return cmd_size;1361}13621363static inline void vn_decode_vkGetRenderAreaGranularity_reply(struct vn_cs_decoder *dec, VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity)1364{1365VkCommandTypeEXT command_type;1366vn_decode_VkCommandTypeEXT(dec, &command_type);1367assert(command_type == VK_COMMAND_TYPE_vkGetRenderAreaGranularity_EXT);13681369/* skip device */1370/* skip renderPass */1371if (vn_decode_simple_pointer(dec)) {1372vn_decode_VkExtent2D(dec, pGranularity);1373} else {1374pGranularity = NULL;1375}1376}13771378static inline size_t vn_sizeof_vkCreateRenderPass2(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass)1379{1380const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateRenderPass2_EXT;1381const VkFlags cmd_flags = 0;1382size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);13831384cmd_size += vn_sizeof_VkDevice(&device);1385cmd_size += vn_sizeof_simple_pointer(pCreateInfo);1386if (pCreateInfo)1387cmd_size += vn_sizeof_VkRenderPassCreateInfo2(pCreateInfo);1388cmd_size += vn_sizeof_simple_pointer(pAllocator);1389if (pAllocator)1390assert(false);1391cmd_size += vn_sizeof_simple_pointer(pRenderPass);1392if (pRenderPass)1393cmd_size += vn_sizeof_VkRenderPass(pRenderPass);13941395return cmd_size;1396}13971398static inline void vn_encode_vkCreateRenderPass2(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass)1399{1400const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateRenderPass2_EXT;14011402vn_encode_VkCommandTypeEXT(enc, &cmd_type);1403vn_encode_VkFlags(enc, &cmd_flags);14041405vn_encode_VkDevice(enc, &device);1406if (vn_encode_simple_pointer(enc, pCreateInfo))1407vn_encode_VkRenderPassCreateInfo2(enc, pCreateInfo);1408if (vn_encode_simple_pointer(enc, pAllocator))1409assert(false);1410if (vn_encode_simple_pointer(enc, pRenderPass))1411vn_encode_VkRenderPass(enc, pRenderPass);1412}14131414static inline size_t vn_sizeof_vkCreateRenderPass2_reply(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass)1415{1416const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateRenderPass2_EXT;1417size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);14181419VkResult ret;1420cmd_size += vn_sizeof_VkResult(&ret);1421/* skip device */1422/* skip pCreateInfo */1423/* skip pAllocator */1424cmd_size += vn_sizeof_simple_pointer(pRenderPass);1425if (pRenderPass)1426cmd_size += vn_sizeof_VkRenderPass(pRenderPass);14271428return cmd_size;1429}14301431static inline VkResult vn_decode_vkCreateRenderPass2_reply(struct vn_cs_decoder *dec, VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass)1432{1433VkCommandTypeEXT command_type;1434vn_decode_VkCommandTypeEXT(dec, &command_type);1435assert(command_type == VK_COMMAND_TYPE_vkCreateRenderPass2_EXT);14361437VkResult ret;1438vn_decode_VkResult(dec, &ret);1439/* skip device */1440/* skip pCreateInfo */1441/* skip pAllocator */1442if (vn_decode_simple_pointer(dec)) {1443vn_decode_VkRenderPass(dec, pRenderPass);1444} else {1445pRenderPass = NULL;1446}14471448return ret;1449}14501451static inline void vn_submit_vkCreateRenderPass(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass, struct vn_instance_submit_command *submit)1452{1453uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];1454void *cmd_data = local_cmd_data;1455size_t cmd_size = vn_sizeof_vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass);1456if (cmd_size > sizeof(local_cmd_data)) {1457cmd_data = malloc(cmd_size);1458if (!cmd_data)1459cmd_size = 0;1460}1461const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkCreateRenderPass_reply(device, pCreateInfo, pAllocator, pRenderPass) : 0;14621463struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);1464if (cmd_size) {1465vn_encode_vkCreateRenderPass(enc, cmd_flags, device, pCreateInfo, pAllocator, pRenderPass);1466vn_instance_submit_command(vn_instance, submit);1467if (cmd_data != local_cmd_data)1468free(cmd_data);1469}1470}14711472static inline void vn_submit_vkDestroyRenderPass(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator, struct vn_instance_submit_command *submit)1473{1474uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];1475void *cmd_data = local_cmd_data;1476size_t cmd_size = vn_sizeof_vkDestroyRenderPass(device, renderPass, pAllocator);1477if (cmd_size > sizeof(local_cmd_data)) {1478cmd_data = malloc(cmd_size);1479if (!cmd_data)1480cmd_size = 0;1481}1482const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkDestroyRenderPass_reply(device, renderPass, pAllocator) : 0;14831484struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);1485if (cmd_size) {1486vn_encode_vkDestroyRenderPass(enc, cmd_flags, device, renderPass, pAllocator);1487vn_instance_submit_command(vn_instance, submit);1488if (cmd_data != local_cmd_data)1489free(cmd_data);1490}1491}14921493static inline void vn_submit_vkGetRenderAreaGranularity(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity, struct vn_instance_submit_command *submit)1494{1495uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];1496void *cmd_data = local_cmd_data;1497size_t cmd_size = vn_sizeof_vkGetRenderAreaGranularity(device, renderPass, pGranularity);1498if (cmd_size > sizeof(local_cmd_data)) {1499cmd_data = malloc(cmd_size);1500if (!cmd_data)1501cmd_size = 0;1502}1503const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkGetRenderAreaGranularity_reply(device, renderPass, pGranularity) : 0;15041505struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);1506if (cmd_size) {1507vn_encode_vkGetRenderAreaGranularity(enc, cmd_flags, device, renderPass, pGranularity);1508vn_instance_submit_command(vn_instance, submit);1509if (cmd_data != local_cmd_data)1510free(cmd_data);1511}1512}15131514static inline void vn_submit_vkCreateRenderPass2(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass, struct vn_instance_submit_command *submit)1515{1516uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];1517void *cmd_data = local_cmd_data;1518size_t cmd_size = vn_sizeof_vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass);1519if (cmd_size > sizeof(local_cmd_data)) {1520cmd_data = malloc(cmd_size);1521if (!cmd_data)1522cmd_size = 0;1523}1524const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkCreateRenderPass2_reply(device, pCreateInfo, pAllocator, pRenderPass) : 0;15251526struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);1527if (cmd_size) {1528vn_encode_vkCreateRenderPass2(enc, cmd_flags, device, pCreateInfo, pAllocator, pRenderPass);1529vn_instance_submit_command(vn_instance, submit);1530if (cmd_data != local_cmd_data)1531free(cmd_data);1532}1533}15341535static inline VkResult vn_call_vkCreateRenderPass(struct vn_instance *vn_instance, VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass)1536{1537struct vn_instance_submit_command submit;1538vn_submit_vkCreateRenderPass(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pCreateInfo, pAllocator, pRenderPass, &submit);1539struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);1540if (dec) {1541const VkResult ret = vn_decode_vkCreateRenderPass_reply(dec, device, pCreateInfo, pAllocator, pRenderPass);1542vn_instance_free_command_reply(vn_instance, &submit);1543return ret;1544} else {1545return VK_ERROR_OUT_OF_HOST_MEMORY;1546}1547}15481549static inline void vn_async_vkCreateRenderPass(struct vn_instance *vn_instance, VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass)1550{1551struct vn_instance_submit_command submit;1552vn_submit_vkCreateRenderPass(vn_instance, 0, device, pCreateInfo, pAllocator, pRenderPass, &submit);1553}15541555static inline void vn_call_vkDestroyRenderPass(struct vn_instance *vn_instance, VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator)1556{1557struct vn_instance_submit_command submit;1558vn_submit_vkDestroyRenderPass(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, renderPass, pAllocator, &submit);1559struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);1560if (dec) {1561vn_decode_vkDestroyRenderPass_reply(dec, device, renderPass, pAllocator);1562vn_instance_free_command_reply(vn_instance, &submit);1563}1564}15651566static inline void vn_async_vkDestroyRenderPass(struct vn_instance *vn_instance, VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator)1567{1568struct vn_instance_submit_command submit;1569vn_submit_vkDestroyRenderPass(vn_instance, 0, device, renderPass, pAllocator, &submit);1570}15711572static inline void vn_call_vkGetRenderAreaGranularity(struct vn_instance *vn_instance, VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity)1573{1574struct vn_instance_submit_command submit;1575vn_submit_vkGetRenderAreaGranularity(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, renderPass, pGranularity, &submit);1576struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);1577if (dec) {1578vn_decode_vkGetRenderAreaGranularity_reply(dec, device, renderPass, pGranularity);1579vn_instance_free_command_reply(vn_instance, &submit);1580}1581}15821583static inline void vn_async_vkGetRenderAreaGranularity(struct vn_instance *vn_instance, VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity)1584{1585struct vn_instance_submit_command submit;1586vn_submit_vkGetRenderAreaGranularity(vn_instance, 0, device, renderPass, pGranularity, &submit);1587}15881589static inline VkResult vn_call_vkCreateRenderPass2(struct vn_instance *vn_instance, VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass)1590{1591struct vn_instance_submit_command submit;1592vn_submit_vkCreateRenderPass2(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pCreateInfo, pAllocator, pRenderPass, &submit);1593struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);1594if (dec) {1595const VkResult ret = vn_decode_vkCreateRenderPass2_reply(dec, device, pCreateInfo, pAllocator, pRenderPass);1596vn_instance_free_command_reply(vn_instance, &submit);1597return ret;1598} else {1599return VK_ERROR_OUT_OF_HOST_MEMORY;1600}1601}16021603static inline void vn_async_vkCreateRenderPass2(struct vn_instance *vn_instance, VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass)1604{1605struct vn_instance_submit_command submit;1606vn_submit_vkCreateRenderPass2(vn_instance, 0, device, pCreateInfo, pAllocator, pRenderPass, &submit);1607}16081609#endif /* VN_PROTOCOL_DRIVER_RENDER_PASS_H */161016111612