Path: blob/21.2-virgl/src/virtio/venus-protocol/vn_protocol_driver_pipeline.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_PIPELINE_H8#define VN_PROTOCOL_DRIVER_PIPELINE_H910#include "vn_device.h"11#include "vn_protocol_driver_structs.h"1213/* struct VkSpecializationMapEntry */1415static inline size_t16vn_sizeof_VkSpecializationMapEntry(const VkSpecializationMapEntry *val)17{18size_t size = 0;19size += vn_sizeof_uint32_t(&val->constantID);20size += vn_sizeof_uint32_t(&val->offset);21size += vn_sizeof_size_t(&val->size);22return size;23}2425static inline void26vn_encode_VkSpecializationMapEntry(struct vn_cs_encoder *enc, const VkSpecializationMapEntry *val)27{28vn_encode_uint32_t(enc, &val->constantID);29vn_encode_uint32_t(enc, &val->offset);30vn_encode_size_t(enc, &val->size);31}3233/* struct VkSpecializationInfo */3435static inline size_t36vn_sizeof_VkSpecializationInfo(const VkSpecializationInfo *val)37{38size_t size = 0;39size += vn_sizeof_uint32_t(&val->mapEntryCount);40if (val->pMapEntries) {41size += vn_sizeof_array_size(val->mapEntryCount);42for (uint32_t i = 0; i < val->mapEntryCount; i++)43size += vn_sizeof_VkSpecializationMapEntry(&val->pMapEntries[i]);44} else {45size += vn_sizeof_array_size(0);46}47size += vn_sizeof_size_t(&val->dataSize);48if (val->pData) {49size += vn_sizeof_array_size(val->dataSize);50size += vn_sizeof_blob_array(val->pData, val->dataSize);51} else {52size += vn_sizeof_array_size(0);53}54return size;55}5657static inline void58vn_encode_VkSpecializationInfo(struct vn_cs_encoder *enc, const VkSpecializationInfo *val)59{60vn_encode_uint32_t(enc, &val->mapEntryCount);61if (val->pMapEntries) {62vn_encode_array_size(enc, val->mapEntryCount);63for (uint32_t i = 0; i < val->mapEntryCount; i++)64vn_encode_VkSpecializationMapEntry(enc, &val->pMapEntries[i]);65} else {66vn_encode_array_size(enc, 0);67}68vn_encode_size_t(enc, &val->dataSize);69if (val->pData) {70vn_encode_array_size(enc, val->dataSize);71vn_encode_blob_array(enc, val->pData, val->dataSize);72} else {73vn_encode_array_size(enc, 0);74}75}7677/* struct VkPipelineShaderStageCreateInfo chain */7879static inline size_t80vn_sizeof_VkPipelineShaderStageCreateInfo_pnext(const void *val)81{82/* no known/supported struct */83return vn_sizeof_simple_pointer(NULL);84}8586static inline size_t87vn_sizeof_VkPipelineShaderStageCreateInfo_self(const VkPipelineShaderStageCreateInfo *val)88{89size_t size = 0;90/* skip val->{sType,pNext} */91size += vn_sizeof_VkFlags(&val->flags);92size += vn_sizeof_VkShaderStageFlagBits(&val->stage);93size += vn_sizeof_VkShaderModule(&val->module);94if (val->pName) {95const size_t string_size = strlen(val->pName) + 1;96size += vn_sizeof_array_size(string_size);97size += vn_sizeof_blob_array(val->pName, string_size);98} else {99size += vn_sizeof_array_size(0);100}101size += vn_sizeof_simple_pointer(val->pSpecializationInfo);102if (val->pSpecializationInfo)103size += vn_sizeof_VkSpecializationInfo(val->pSpecializationInfo);104return size;105}106107static inline size_t108vn_sizeof_VkPipelineShaderStageCreateInfo(const VkPipelineShaderStageCreateInfo *val)109{110size_t size = 0;111112size += vn_sizeof_VkStructureType(&val->sType);113size += vn_sizeof_VkPipelineShaderStageCreateInfo_pnext(val->pNext);114size += vn_sizeof_VkPipelineShaderStageCreateInfo_self(val);115116return size;117}118119static inline void120vn_encode_VkPipelineShaderStageCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)121{122/* no known/supported struct */123vn_encode_simple_pointer(enc, NULL);124}125126static inline void127vn_encode_VkPipelineShaderStageCreateInfo_self(struct vn_cs_encoder *enc, const VkPipelineShaderStageCreateInfo *val)128{129/* skip val->{sType,pNext} */130vn_encode_VkFlags(enc, &val->flags);131vn_encode_VkShaderStageFlagBits(enc, &val->stage);132vn_encode_VkShaderModule(enc, &val->module);133if (val->pName) {134const size_t string_size = strlen(val->pName) + 1;135vn_encode_array_size(enc, string_size);136vn_encode_blob_array(enc, val->pName, string_size);137} else {138vn_encode_array_size(enc, 0);139}140if (vn_encode_simple_pointer(enc, val->pSpecializationInfo))141vn_encode_VkSpecializationInfo(enc, val->pSpecializationInfo);142}143144static inline void145vn_encode_VkPipelineShaderStageCreateInfo(struct vn_cs_encoder *enc, const VkPipelineShaderStageCreateInfo *val)146{147assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO);148vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO });149vn_encode_VkPipelineShaderStageCreateInfo_pnext(enc, val->pNext);150vn_encode_VkPipelineShaderStageCreateInfo_self(enc, val);151}152153/* struct VkVertexInputBindingDescription */154155static inline size_t156vn_sizeof_VkVertexInputBindingDescription(const VkVertexInputBindingDescription *val)157{158size_t size = 0;159size += vn_sizeof_uint32_t(&val->binding);160size += vn_sizeof_uint32_t(&val->stride);161size += vn_sizeof_VkVertexInputRate(&val->inputRate);162return size;163}164165static inline void166vn_encode_VkVertexInputBindingDescription(struct vn_cs_encoder *enc, const VkVertexInputBindingDescription *val)167{168vn_encode_uint32_t(enc, &val->binding);169vn_encode_uint32_t(enc, &val->stride);170vn_encode_VkVertexInputRate(enc, &val->inputRate);171}172173/* struct VkVertexInputAttributeDescription */174175static inline size_t176vn_sizeof_VkVertexInputAttributeDescription(const VkVertexInputAttributeDescription *val)177{178size_t size = 0;179size += vn_sizeof_uint32_t(&val->location);180size += vn_sizeof_uint32_t(&val->binding);181size += vn_sizeof_VkFormat(&val->format);182size += vn_sizeof_uint32_t(&val->offset);183return size;184}185186static inline void187vn_encode_VkVertexInputAttributeDescription(struct vn_cs_encoder *enc, const VkVertexInputAttributeDescription *val)188{189vn_encode_uint32_t(enc, &val->location);190vn_encode_uint32_t(enc, &val->binding);191vn_encode_VkFormat(enc, &val->format);192vn_encode_uint32_t(enc, &val->offset);193}194195/* struct VkPipelineVertexInputStateCreateInfo chain */196197static inline size_t198vn_sizeof_VkPipelineVertexInputStateCreateInfo_pnext(const void *val)199{200/* no known/supported struct */201return vn_sizeof_simple_pointer(NULL);202}203204static inline size_t205vn_sizeof_VkPipelineVertexInputStateCreateInfo_self(const VkPipelineVertexInputStateCreateInfo *val)206{207size_t size = 0;208/* skip val->{sType,pNext} */209size += vn_sizeof_VkFlags(&val->flags);210size += vn_sizeof_uint32_t(&val->vertexBindingDescriptionCount);211if (val->pVertexBindingDescriptions) {212size += vn_sizeof_array_size(val->vertexBindingDescriptionCount);213for (uint32_t i = 0; i < val->vertexBindingDescriptionCount; i++)214size += vn_sizeof_VkVertexInputBindingDescription(&val->pVertexBindingDescriptions[i]);215} else {216size += vn_sizeof_array_size(0);217}218size += vn_sizeof_uint32_t(&val->vertexAttributeDescriptionCount);219if (val->pVertexAttributeDescriptions) {220size += vn_sizeof_array_size(val->vertexAttributeDescriptionCount);221for (uint32_t i = 0; i < val->vertexAttributeDescriptionCount; i++)222size += vn_sizeof_VkVertexInputAttributeDescription(&val->pVertexAttributeDescriptions[i]);223} else {224size += vn_sizeof_array_size(0);225}226return size;227}228229static inline size_t230vn_sizeof_VkPipelineVertexInputStateCreateInfo(const VkPipelineVertexInputStateCreateInfo *val)231{232size_t size = 0;233234size += vn_sizeof_VkStructureType(&val->sType);235size += vn_sizeof_VkPipelineVertexInputStateCreateInfo_pnext(val->pNext);236size += vn_sizeof_VkPipelineVertexInputStateCreateInfo_self(val);237238return size;239}240241static inline void242vn_encode_VkPipelineVertexInputStateCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)243{244/* no known/supported struct */245vn_encode_simple_pointer(enc, NULL);246}247248static inline void249vn_encode_VkPipelineVertexInputStateCreateInfo_self(struct vn_cs_encoder *enc, const VkPipelineVertexInputStateCreateInfo *val)250{251/* skip val->{sType,pNext} */252vn_encode_VkFlags(enc, &val->flags);253vn_encode_uint32_t(enc, &val->vertexBindingDescriptionCount);254if (val->pVertexBindingDescriptions) {255vn_encode_array_size(enc, val->vertexBindingDescriptionCount);256for (uint32_t i = 0; i < val->vertexBindingDescriptionCount; i++)257vn_encode_VkVertexInputBindingDescription(enc, &val->pVertexBindingDescriptions[i]);258} else {259vn_encode_array_size(enc, 0);260}261vn_encode_uint32_t(enc, &val->vertexAttributeDescriptionCount);262if (val->pVertexAttributeDescriptions) {263vn_encode_array_size(enc, val->vertexAttributeDescriptionCount);264for (uint32_t i = 0; i < val->vertexAttributeDescriptionCount; i++)265vn_encode_VkVertexInputAttributeDescription(enc, &val->pVertexAttributeDescriptions[i]);266} else {267vn_encode_array_size(enc, 0);268}269}270271static inline void272vn_encode_VkPipelineVertexInputStateCreateInfo(struct vn_cs_encoder *enc, const VkPipelineVertexInputStateCreateInfo *val)273{274assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO);275vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO });276vn_encode_VkPipelineVertexInputStateCreateInfo_pnext(enc, val->pNext);277vn_encode_VkPipelineVertexInputStateCreateInfo_self(enc, val);278}279280/* struct VkPipelineInputAssemblyStateCreateInfo chain */281282static inline size_t283vn_sizeof_VkPipelineInputAssemblyStateCreateInfo_pnext(const void *val)284{285/* no known/supported struct */286return vn_sizeof_simple_pointer(NULL);287}288289static inline size_t290vn_sizeof_VkPipelineInputAssemblyStateCreateInfo_self(const VkPipelineInputAssemblyStateCreateInfo *val)291{292size_t size = 0;293/* skip val->{sType,pNext} */294size += vn_sizeof_VkFlags(&val->flags);295size += vn_sizeof_VkPrimitiveTopology(&val->topology);296size += vn_sizeof_VkBool32(&val->primitiveRestartEnable);297return size;298}299300static inline size_t301vn_sizeof_VkPipelineInputAssemblyStateCreateInfo(const VkPipelineInputAssemblyStateCreateInfo *val)302{303size_t size = 0;304305size += vn_sizeof_VkStructureType(&val->sType);306size += vn_sizeof_VkPipelineInputAssemblyStateCreateInfo_pnext(val->pNext);307size += vn_sizeof_VkPipelineInputAssemblyStateCreateInfo_self(val);308309return size;310}311312static inline void313vn_encode_VkPipelineInputAssemblyStateCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)314{315/* no known/supported struct */316vn_encode_simple_pointer(enc, NULL);317}318319static inline void320vn_encode_VkPipelineInputAssemblyStateCreateInfo_self(struct vn_cs_encoder *enc, const VkPipelineInputAssemblyStateCreateInfo *val)321{322/* skip val->{sType,pNext} */323vn_encode_VkFlags(enc, &val->flags);324vn_encode_VkPrimitiveTopology(enc, &val->topology);325vn_encode_VkBool32(enc, &val->primitiveRestartEnable);326}327328static inline void329vn_encode_VkPipelineInputAssemblyStateCreateInfo(struct vn_cs_encoder *enc, const VkPipelineInputAssemblyStateCreateInfo *val)330{331assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO);332vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO });333vn_encode_VkPipelineInputAssemblyStateCreateInfo_pnext(enc, val->pNext);334vn_encode_VkPipelineInputAssemblyStateCreateInfo_self(enc, val);335}336337/* struct VkPipelineTessellationDomainOriginStateCreateInfo chain */338339static inline size_t340vn_sizeof_VkPipelineTessellationDomainOriginStateCreateInfo_pnext(const void *val)341{342/* no known/supported struct */343return vn_sizeof_simple_pointer(NULL);344}345346static inline size_t347vn_sizeof_VkPipelineTessellationDomainOriginStateCreateInfo_self(const VkPipelineTessellationDomainOriginStateCreateInfo *val)348{349size_t size = 0;350/* skip val->{sType,pNext} */351size += vn_sizeof_VkTessellationDomainOrigin(&val->domainOrigin);352return size;353}354355static inline size_t356vn_sizeof_VkPipelineTessellationDomainOriginStateCreateInfo(const VkPipelineTessellationDomainOriginStateCreateInfo *val)357{358size_t size = 0;359360size += vn_sizeof_VkStructureType(&val->sType);361size += vn_sizeof_VkPipelineTessellationDomainOriginStateCreateInfo_pnext(val->pNext);362size += vn_sizeof_VkPipelineTessellationDomainOriginStateCreateInfo_self(val);363364return size;365}366367static inline void368vn_encode_VkPipelineTessellationDomainOriginStateCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)369{370/* no known/supported struct */371vn_encode_simple_pointer(enc, NULL);372}373374static inline void375vn_encode_VkPipelineTessellationDomainOriginStateCreateInfo_self(struct vn_cs_encoder *enc, const VkPipelineTessellationDomainOriginStateCreateInfo *val)376{377/* skip val->{sType,pNext} */378vn_encode_VkTessellationDomainOrigin(enc, &val->domainOrigin);379}380381static inline void382vn_encode_VkPipelineTessellationDomainOriginStateCreateInfo(struct vn_cs_encoder *enc, const VkPipelineTessellationDomainOriginStateCreateInfo *val)383{384assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO);385vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO });386vn_encode_VkPipelineTessellationDomainOriginStateCreateInfo_pnext(enc, val->pNext);387vn_encode_VkPipelineTessellationDomainOriginStateCreateInfo_self(enc, val);388}389390/* struct VkPipelineTessellationStateCreateInfo chain */391392static inline size_t393vn_sizeof_VkPipelineTessellationStateCreateInfo_pnext(const void *val)394{395const VkBaseInStructure *pnext = val;396size_t size = 0;397398while (pnext) {399switch ((int32_t)pnext->sType) {400case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO:401size += vn_sizeof_simple_pointer(pnext);402size += vn_sizeof_VkStructureType(&pnext->sType);403size += vn_sizeof_VkPipelineTessellationStateCreateInfo_pnext(pnext->pNext);404size += vn_sizeof_VkPipelineTessellationDomainOriginStateCreateInfo_self((const VkPipelineTessellationDomainOriginStateCreateInfo *)pnext);405return size;406default:407/* ignore unknown/unsupported struct */408break;409}410pnext = pnext->pNext;411}412413return vn_sizeof_simple_pointer(NULL);414}415416static inline size_t417vn_sizeof_VkPipelineTessellationStateCreateInfo_self(const VkPipelineTessellationStateCreateInfo *val)418{419size_t size = 0;420/* skip val->{sType,pNext} */421size += vn_sizeof_VkFlags(&val->flags);422size += vn_sizeof_uint32_t(&val->patchControlPoints);423return size;424}425426static inline size_t427vn_sizeof_VkPipelineTessellationStateCreateInfo(const VkPipelineTessellationStateCreateInfo *val)428{429size_t size = 0;430431size += vn_sizeof_VkStructureType(&val->sType);432size += vn_sizeof_VkPipelineTessellationStateCreateInfo_pnext(val->pNext);433size += vn_sizeof_VkPipelineTessellationStateCreateInfo_self(val);434435return size;436}437438static inline void439vn_encode_VkPipelineTessellationStateCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)440{441const VkBaseInStructure *pnext = val;442443while (pnext) {444switch ((int32_t)pnext->sType) {445case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO:446vn_encode_simple_pointer(enc, pnext);447vn_encode_VkStructureType(enc, &pnext->sType);448vn_encode_VkPipelineTessellationStateCreateInfo_pnext(enc, pnext->pNext);449vn_encode_VkPipelineTessellationDomainOriginStateCreateInfo_self(enc, (const VkPipelineTessellationDomainOriginStateCreateInfo *)pnext);450return;451default:452/* ignore unknown/unsupported struct */453break;454}455pnext = pnext->pNext;456}457458vn_encode_simple_pointer(enc, NULL);459}460461static inline void462vn_encode_VkPipelineTessellationStateCreateInfo_self(struct vn_cs_encoder *enc, const VkPipelineTessellationStateCreateInfo *val)463{464/* skip val->{sType,pNext} */465vn_encode_VkFlags(enc, &val->flags);466vn_encode_uint32_t(enc, &val->patchControlPoints);467}468469static inline void470vn_encode_VkPipelineTessellationStateCreateInfo(struct vn_cs_encoder *enc, const VkPipelineTessellationStateCreateInfo *val)471{472assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO);473vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO });474vn_encode_VkPipelineTessellationStateCreateInfo_pnext(enc, val->pNext);475vn_encode_VkPipelineTessellationStateCreateInfo_self(enc, val);476}477478/* struct VkPipelineViewportStateCreateInfo chain */479480static inline size_t481vn_sizeof_VkPipelineViewportStateCreateInfo_pnext(const void *val)482{483/* no known/supported struct */484return vn_sizeof_simple_pointer(NULL);485}486487static inline size_t488vn_sizeof_VkPipelineViewportStateCreateInfo_self(const VkPipelineViewportStateCreateInfo *val)489{490size_t size = 0;491/* skip val->{sType,pNext} */492size += vn_sizeof_VkFlags(&val->flags);493size += vn_sizeof_uint32_t(&val->viewportCount);494if (val->pViewports) {495size += vn_sizeof_array_size(val->viewportCount);496for (uint32_t i = 0; i < val->viewportCount; i++)497size += vn_sizeof_VkViewport(&val->pViewports[i]);498} else {499size += vn_sizeof_array_size(0);500}501size += vn_sizeof_uint32_t(&val->scissorCount);502if (val->pScissors) {503size += vn_sizeof_array_size(val->scissorCount);504for (uint32_t i = 0; i < val->scissorCount; i++)505size += vn_sizeof_VkRect2D(&val->pScissors[i]);506} else {507size += vn_sizeof_array_size(0);508}509return size;510}511512static inline size_t513vn_sizeof_VkPipelineViewportStateCreateInfo(const VkPipelineViewportStateCreateInfo *val)514{515size_t size = 0;516517size += vn_sizeof_VkStructureType(&val->sType);518size += vn_sizeof_VkPipelineViewportStateCreateInfo_pnext(val->pNext);519size += vn_sizeof_VkPipelineViewportStateCreateInfo_self(val);520521return size;522}523524static inline void525vn_encode_VkPipelineViewportStateCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)526{527/* no known/supported struct */528vn_encode_simple_pointer(enc, NULL);529}530531static inline void532vn_encode_VkPipelineViewportStateCreateInfo_self(struct vn_cs_encoder *enc, const VkPipelineViewportStateCreateInfo *val)533{534/* skip val->{sType,pNext} */535vn_encode_VkFlags(enc, &val->flags);536vn_encode_uint32_t(enc, &val->viewportCount);537if (val->pViewports) {538vn_encode_array_size(enc, val->viewportCount);539for (uint32_t i = 0; i < val->viewportCount; i++)540vn_encode_VkViewport(enc, &val->pViewports[i]);541} else {542vn_encode_array_size(enc, 0);543}544vn_encode_uint32_t(enc, &val->scissorCount);545if (val->pScissors) {546vn_encode_array_size(enc, val->scissorCount);547for (uint32_t i = 0; i < val->scissorCount; i++)548vn_encode_VkRect2D(enc, &val->pScissors[i]);549} else {550vn_encode_array_size(enc, 0);551}552}553554static inline void555vn_encode_VkPipelineViewportStateCreateInfo(struct vn_cs_encoder *enc, const VkPipelineViewportStateCreateInfo *val)556{557assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO);558vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO });559vn_encode_VkPipelineViewportStateCreateInfo_pnext(enc, val->pNext);560vn_encode_VkPipelineViewportStateCreateInfo_self(enc, val);561}562563/* struct VkPipelineRasterizationStateStreamCreateInfoEXT chain */564565static inline size_t566vn_sizeof_VkPipelineRasterizationStateStreamCreateInfoEXT_pnext(const void *val)567{568/* no known/supported struct */569return vn_sizeof_simple_pointer(NULL);570}571572static inline size_t573vn_sizeof_VkPipelineRasterizationStateStreamCreateInfoEXT_self(const VkPipelineRasterizationStateStreamCreateInfoEXT *val)574{575size_t size = 0;576/* skip val->{sType,pNext} */577size += vn_sizeof_VkFlags(&val->flags);578size += vn_sizeof_uint32_t(&val->rasterizationStream);579return size;580}581582static inline size_t583vn_sizeof_VkPipelineRasterizationStateStreamCreateInfoEXT(const VkPipelineRasterizationStateStreamCreateInfoEXT *val)584{585size_t size = 0;586587size += vn_sizeof_VkStructureType(&val->sType);588size += vn_sizeof_VkPipelineRasterizationStateStreamCreateInfoEXT_pnext(val->pNext);589size += vn_sizeof_VkPipelineRasterizationStateStreamCreateInfoEXT_self(val);590591return size;592}593594static inline void595vn_encode_VkPipelineRasterizationStateStreamCreateInfoEXT_pnext(struct vn_cs_encoder *enc, const void *val)596{597/* no known/supported struct */598vn_encode_simple_pointer(enc, NULL);599}600601static inline void602vn_encode_VkPipelineRasterizationStateStreamCreateInfoEXT_self(struct vn_cs_encoder *enc, const VkPipelineRasterizationStateStreamCreateInfoEXT *val)603{604/* skip val->{sType,pNext} */605vn_encode_VkFlags(enc, &val->flags);606vn_encode_uint32_t(enc, &val->rasterizationStream);607}608609static inline void610vn_encode_VkPipelineRasterizationStateStreamCreateInfoEXT(struct vn_cs_encoder *enc, const VkPipelineRasterizationStateStreamCreateInfoEXT *val)611{612assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT);613vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT });614vn_encode_VkPipelineRasterizationStateStreamCreateInfoEXT_pnext(enc, val->pNext);615vn_encode_VkPipelineRasterizationStateStreamCreateInfoEXT_self(enc, val);616}617618/* struct VkPipelineRasterizationStateCreateInfo chain */619620static inline size_t621vn_sizeof_VkPipelineRasterizationStateCreateInfo_pnext(const void *val)622{623const VkBaseInStructure *pnext = val;624size_t size = 0;625626while (pnext) {627switch ((int32_t)pnext->sType) {628case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT:629size += vn_sizeof_simple_pointer(pnext);630size += vn_sizeof_VkStructureType(&pnext->sType);631size += vn_sizeof_VkPipelineRasterizationStateCreateInfo_pnext(pnext->pNext);632size += vn_sizeof_VkPipelineRasterizationStateStreamCreateInfoEXT_self((const VkPipelineRasterizationStateStreamCreateInfoEXT *)pnext);633return size;634default:635/* ignore unknown/unsupported struct */636break;637}638pnext = pnext->pNext;639}640641return vn_sizeof_simple_pointer(NULL);642}643644static inline size_t645vn_sizeof_VkPipelineRasterizationStateCreateInfo_self(const VkPipelineRasterizationStateCreateInfo *val)646{647size_t size = 0;648/* skip val->{sType,pNext} */649size += vn_sizeof_VkFlags(&val->flags);650size += vn_sizeof_VkBool32(&val->depthClampEnable);651size += vn_sizeof_VkBool32(&val->rasterizerDiscardEnable);652size += vn_sizeof_VkPolygonMode(&val->polygonMode);653size += vn_sizeof_VkFlags(&val->cullMode);654size += vn_sizeof_VkFrontFace(&val->frontFace);655size += vn_sizeof_VkBool32(&val->depthBiasEnable);656size += vn_sizeof_float(&val->depthBiasConstantFactor);657size += vn_sizeof_float(&val->depthBiasClamp);658size += vn_sizeof_float(&val->depthBiasSlopeFactor);659size += vn_sizeof_float(&val->lineWidth);660return size;661}662663static inline size_t664vn_sizeof_VkPipelineRasterizationStateCreateInfo(const VkPipelineRasterizationStateCreateInfo *val)665{666size_t size = 0;667668size += vn_sizeof_VkStructureType(&val->sType);669size += vn_sizeof_VkPipelineRasterizationStateCreateInfo_pnext(val->pNext);670size += vn_sizeof_VkPipelineRasterizationStateCreateInfo_self(val);671672return size;673}674675static inline void676vn_encode_VkPipelineRasterizationStateCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)677{678const VkBaseInStructure *pnext = val;679680while (pnext) {681switch ((int32_t)pnext->sType) {682case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT:683vn_encode_simple_pointer(enc, pnext);684vn_encode_VkStructureType(enc, &pnext->sType);685vn_encode_VkPipelineRasterizationStateCreateInfo_pnext(enc, pnext->pNext);686vn_encode_VkPipelineRasterizationStateStreamCreateInfoEXT_self(enc, (const VkPipelineRasterizationStateStreamCreateInfoEXT *)pnext);687return;688default:689/* ignore unknown/unsupported struct */690break;691}692pnext = pnext->pNext;693}694695vn_encode_simple_pointer(enc, NULL);696}697698static inline void699vn_encode_VkPipelineRasterizationStateCreateInfo_self(struct vn_cs_encoder *enc, const VkPipelineRasterizationStateCreateInfo *val)700{701/* skip val->{sType,pNext} */702vn_encode_VkFlags(enc, &val->flags);703vn_encode_VkBool32(enc, &val->depthClampEnable);704vn_encode_VkBool32(enc, &val->rasterizerDiscardEnable);705vn_encode_VkPolygonMode(enc, &val->polygonMode);706vn_encode_VkFlags(enc, &val->cullMode);707vn_encode_VkFrontFace(enc, &val->frontFace);708vn_encode_VkBool32(enc, &val->depthBiasEnable);709vn_encode_float(enc, &val->depthBiasConstantFactor);710vn_encode_float(enc, &val->depthBiasClamp);711vn_encode_float(enc, &val->depthBiasSlopeFactor);712vn_encode_float(enc, &val->lineWidth);713}714715static inline void716vn_encode_VkPipelineRasterizationStateCreateInfo(struct vn_cs_encoder *enc, const VkPipelineRasterizationStateCreateInfo *val)717{718assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO);719vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO });720vn_encode_VkPipelineRasterizationStateCreateInfo_pnext(enc, val->pNext);721vn_encode_VkPipelineRasterizationStateCreateInfo_self(enc, val);722}723724/* struct VkPipelineMultisampleStateCreateInfo chain */725726static inline size_t727vn_sizeof_VkPipelineMultisampleStateCreateInfo_pnext(const void *val)728{729/* no known/supported struct */730return vn_sizeof_simple_pointer(NULL);731}732733static inline size_t734vn_sizeof_VkPipelineMultisampleStateCreateInfo_self(const VkPipelineMultisampleStateCreateInfo *val)735{736size_t size = 0;737/* skip val->{sType,pNext} */738size += vn_sizeof_VkFlags(&val->flags);739size += vn_sizeof_VkSampleCountFlagBits(&val->rasterizationSamples);740size += vn_sizeof_VkBool32(&val->sampleShadingEnable);741size += vn_sizeof_float(&val->minSampleShading);742if (val->pSampleMask) {743size += vn_sizeof_array_size((val->rasterizationSamples + 31) / 32);744size += vn_sizeof_VkSampleMask_array(val->pSampleMask, (val->rasterizationSamples + 31) / 32);745} else {746size += vn_sizeof_array_size(0);747}748size += vn_sizeof_VkBool32(&val->alphaToCoverageEnable);749size += vn_sizeof_VkBool32(&val->alphaToOneEnable);750return size;751}752753static inline size_t754vn_sizeof_VkPipelineMultisampleStateCreateInfo(const VkPipelineMultisampleStateCreateInfo *val)755{756size_t size = 0;757758size += vn_sizeof_VkStructureType(&val->sType);759size += vn_sizeof_VkPipelineMultisampleStateCreateInfo_pnext(val->pNext);760size += vn_sizeof_VkPipelineMultisampleStateCreateInfo_self(val);761762return size;763}764765static inline void766vn_encode_VkPipelineMultisampleStateCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)767{768/* no known/supported struct */769vn_encode_simple_pointer(enc, NULL);770}771772static inline void773vn_encode_VkPipelineMultisampleStateCreateInfo_self(struct vn_cs_encoder *enc, const VkPipelineMultisampleStateCreateInfo *val)774{775/* skip val->{sType,pNext} */776vn_encode_VkFlags(enc, &val->flags);777vn_encode_VkSampleCountFlagBits(enc, &val->rasterizationSamples);778vn_encode_VkBool32(enc, &val->sampleShadingEnable);779vn_encode_float(enc, &val->minSampleShading);780if (val->pSampleMask) {781vn_encode_array_size(enc, (val->rasterizationSamples + 31) / 32);782vn_encode_VkSampleMask_array(enc, val->pSampleMask, (val->rasterizationSamples + 31) / 32);783} else {784vn_encode_array_size(enc, 0);785}786vn_encode_VkBool32(enc, &val->alphaToCoverageEnable);787vn_encode_VkBool32(enc, &val->alphaToOneEnable);788}789790static inline void791vn_encode_VkPipelineMultisampleStateCreateInfo(struct vn_cs_encoder *enc, const VkPipelineMultisampleStateCreateInfo *val)792{793assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO);794vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO });795vn_encode_VkPipelineMultisampleStateCreateInfo_pnext(enc, val->pNext);796vn_encode_VkPipelineMultisampleStateCreateInfo_self(enc, val);797}798799/* struct VkStencilOpState */800801static inline size_t802vn_sizeof_VkStencilOpState(const VkStencilOpState *val)803{804size_t size = 0;805size += vn_sizeof_VkStencilOp(&val->failOp);806size += vn_sizeof_VkStencilOp(&val->passOp);807size += vn_sizeof_VkStencilOp(&val->depthFailOp);808size += vn_sizeof_VkCompareOp(&val->compareOp);809size += vn_sizeof_uint32_t(&val->compareMask);810size += vn_sizeof_uint32_t(&val->writeMask);811size += vn_sizeof_uint32_t(&val->reference);812return size;813}814815static inline void816vn_encode_VkStencilOpState(struct vn_cs_encoder *enc, const VkStencilOpState *val)817{818vn_encode_VkStencilOp(enc, &val->failOp);819vn_encode_VkStencilOp(enc, &val->passOp);820vn_encode_VkStencilOp(enc, &val->depthFailOp);821vn_encode_VkCompareOp(enc, &val->compareOp);822vn_encode_uint32_t(enc, &val->compareMask);823vn_encode_uint32_t(enc, &val->writeMask);824vn_encode_uint32_t(enc, &val->reference);825}826827/* struct VkPipelineDepthStencilStateCreateInfo chain */828829static inline size_t830vn_sizeof_VkPipelineDepthStencilStateCreateInfo_pnext(const void *val)831{832/* no known/supported struct */833return vn_sizeof_simple_pointer(NULL);834}835836static inline size_t837vn_sizeof_VkPipelineDepthStencilStateCreateInfo_self(const VkPipelineDepthStencilStateCreateInfo *val)838{839size_t size = 0;840/* skip val->{sType,pNext} */841size += vn_sizeof_VkFlags(&val->flags);842size += vn_sizeof_VkBool32(&val->depthTestEnable);843size += vn_sizeof_VkBool32(&val->depthWriteEnable);844size += vn_sizeof_VkCompareOp(&val->depthCompareOp);845size += vn_sizeof_VkBool32(&val->depthBoundsTestEnable);846size += vn_sizeof_VkBool32(&val->stencilTestEnable);847size += vn_sizeof_VkStencilOpState(&val->front);848size += vn_sizeof_VkStencilOpState(&val->back);849size += vn_sizeof_float(&val->minDepthBounds);850size += vn_sizeof_float(&val->maxDepthBounds);851return size;852}853854static inline size_t855vn_sizeof_VkPipelineDepthStencilStateCreateInfo(const VkPipelineDepthStencilStateCreateInfo *val)856{857size_t size = 0;858859size += vn_sizeof_VkStructureType(&val->sType);860size += vn_sizeof_VkPipelineDepthStencilStateCreateInfo_pnext(val->pNext);861size += vn_sizeof_VkPipelineDepthStencilStateCreateInfo_self(val);862863return size;864}865866static inline void867vn_encode_VkPipelineDepthStencilStateCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)868{869/* no known/supported struct */870vn_encode_simple_pointer(enc, NULL);871}872873static inline void874vn_encode_VkPipelineDepthStencilStateCreateInfo_self(struct vn_cs_encoder *enc, const VkPipelineDepthStencilStateCreateInfo *val)875{876/* skip val->{sType,pNext} */877vn_encode_VkFlags(enc, &val->flags);878vn_encode_VkBool32(enc, &val->depthTestEnable);879vn_encode_VkBool32(enc, &val->depthWriteEnable);880vn_encode_VkCompareOp(enc, &val->depthCompareOp);881vn_encode_VkBool32(enc, &val->depthBoundsTestEnable);882vn_encode_VkBool32(enc, &val->stencilTestEnable);883vn_encode_VkStencilOpState(enc, &val->front);884vn_encode_VkStencilOpState(enc, &val->back);885vn_encode_float(enc, &val->minDepthBounds);886vn_encode_float(enc, &val->maxDepthBounds);887}888889static inline void890vn_encode_VkPipelineDepthStencilStateCreateInfo(struct vn_cs_encoder *enc, const VkPipelineDepthStencilStateCreateInfo *val)891{892assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO);893vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO });894vn_encode_VkPipelineDepthStencilStateCreateInfo_pnext(enc, val->pNext);895vn_encode_VkPipelineDepthStencilStateCreateInfo_self(enc, val);896}897898/* struct VkPipelineColorBlendAttachmentState */899900static inline size_t901vn_sizeof_VkPipelineColorBlendAttachmentState(const VkPipelineColorBlendAttachmentState *val)902{903size_t size = 0;904size += vn_sizeof_VkBool32(&val->blendEnable);905size += vn_sizeof_VkBlendFactor(&val->srcColorBlendFactor);906size += vn_sizeof_VkBlendFactor(&val->dstColorBlendFactor);907size += vn_sizeof_VkBlendOp(&val->colorBlendOp);908size += vn_sizeof_VkBlendFactor(&val->srcAlphaBlendFactor);909size += vn_sizeof_VkBlendFactor(&val->dstAlphaBlendFactor);910size += vn_sizeof_VkBlendOp(&val->alphaBlendOp);911size += vn_sizeof_VkFlags(&val->colorWriteMask);912return size;913}914915static inline void916vn_encode_VkPipelineColorBlendAttachmentState(struct vn_cs_encoder *enc, const VkPipelineColorBlendAttachmentState *val)917{918vn_encode_VkBool32(enc, &val->blendEnable);919vn_encode_VkBlendFactor(enc, &val->srcColorBlendFactor);920vn_encode_VkBlendFactor(enc, &val->dstColorBlendFactor);921vn_encode_VkBlendOp(enc, &val->colorBlendOp);922vn_encode_VkBlendFactor(enc, &val->srcAlphaBlendFactor);923vn_encode_VkBlendFactor(enc, &val->dstAlphaBlendFactor);924vn_encode_VkBlendOp(enc, &val->alphaBlendOp);925vn_encode_VkFlags(enc, &val->colorWriteMask);926}927928/* struct VkPipelineColorBlendStateCreateInfo chain */929930static inline size_t931vn_sizeof_VkPipelineColorBlendStateCreateInfo_pnext(const void *val)932{933/* no known/supported struct */934return vn_sizeof_simple_pointer(NULL);935}936937static inline size_t938vn_sizeof_VkPipelineColorBlendStateCreateInfo_self(const VkPipelineColorBlendStateCreateInfo *val)939{940size_t size = 0;941/* skip val->{sType,pNext} */942size += vn_sizeof_VkFlags(&val->flags);943size += vn_sizeof_VkBool32(&val->logicOpEnable);944size += vn_sizeof_VkLogicOp(&val->logicOp);945size += vn_sizeof_uint32_t(&val->attachmentCount);946if (val->pAttachments) {947size += vn_sizeof_array_size(val->attachmentCount);948for (uint32_t i = 0; i < val->attachmentCount; i++)949size += vn_sizeof_VkPipelineColorBlendAttachmentState(&val->pAttachments[i]);950} else {951size += vn_sizeof_array_size(0);952}953size += vn_sizeof_array_size(4);954size += vn_sizeof_float_array(val->blendConstants, 4);955return size;956}957958static inline size_t959vn_sizeof_VkPipelineColorBlendStateCreateInfo(const VkPipelineColorBlendStateCreateInfo *val)960{961size_t size = 0;962963size += vn_sizeof_VkStructureType(&val->sType);964size += vn_sizeof_VkPipelineColorBlendStateCreateInfo_pnext(val->pNext);965size += vn_sizeof_VkPipelineColorBlendStateCreateInfo_self(val);966967return size;968}969970static inline void971vn_encode_VkPipelineColorBlendStateCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)972{973/* no known/supported struct */974vn_encode_simple_pointer(enc, NULL);975}976977static inline void978vn_encode_VkPipelineColorBlendStateCreateInfo_self(struct vn_cs_encoder *enc, const VkPipelineColorBlendStateCreateInfo *val)979{980/* skip val->{sType,pNext} */981vn_encode_VkFlags(enc, &val->flags);982vn_encode_VkBool32(enc, &val->logicOpEnable);983vn_encode_VkLogicOp(enc, &val->logicOp);984vn_encode_uint32_t(enc, &val->attachmentCount);985if (val->pAttachments) {986vn_encode_array_size(enc, val->attachmentCount);987for (uint32_t i = 0; i < val->attachmentCount; i++)988vn_encode_VkPipelineColorBlendAttachmentState(enc, &val->pAttachments[i]);989} else {990vn_encode_array_size(enc, 0);991}992vn_encode_array_size(enc, 4);993vn_encode_float_array(enc, val->blendConstants, 4);994}995996static inline void997vn_encode_VkPipelineColorBlendStateCreateInfo(struct vn_cs_encoder *enc, const VkPipelineColorBlendStateCreateInfo *val)998{999assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO);1000vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO });1001vn_encode_VkPipelineColorBlendStateCreateInfo_pnext(enc, val->pNext);1002vn_encode_VkPipelineColorBlendStateCreateInfo_self(enc, val);1003}10041005/* struct VkPipelineDynamicStateCreateInfo chain */10061007static inline size_t1008vn_sizeof_VkPipelineDynamicStateCreateInfo_pnext(const void *val)1009{1010/* no known/supported struct */1011return vn_sizeof_simple_pointer(NULL);1012}10131014static inline size_t1015vn_sizeof_VkPipelineDynamicStateCreateInfo_self(const VkPipelineDynamicStateCreateInfo *val)1016{1017size_t size = 0;1018/* skip val->{sType,pNext} */1019size += vn_sizeof_VkFlags(&val->flags);1020size += vn_sizeof_uint32_t(&val->dynamicStateCount);1021if (val->pDynamicStates) {1022size += vn_sizeof_array_size(val->dynamicStateCount);1023size += vn_sizeof_VkDynamicState_array(val->pDynamicStates, val->dynamicStateCount);1024} else {1025size += vn_sizeof_array_size(0);1026}1027return size;1028}10291030static inline size_t1031vn_sizeof_VkPipelineDynamicStateCreateInfo(const VkPipelineDynamicStateCreateInfo *val)1032{1033size_t size = 0;10341035size += vn_sizeof_VkStructureType(&val->sType);1036size += vn_sizeof_VkPipelineDynamicStateCreateInfo_pnext(val->pNext);1037size += vn_sizeof_VkPipelineDynamicStateCreateInfo_self(val);10381039return size;1040}10411042static inline void1043vn_encode_VkPipelineDynamicStateCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)1044{1045/* no known/supported struct */1046vn_encode_simple_pointer(enc, NULL);1047}10481049static inline void1050vn_encode_VkPipelineDynamicStateCreateInfo_self(struct vn_cs_encoder *enc, const VkPipelineDynamicStateCreateInfo *val)1051{1052/* skip val->{sType,pNext} */1053vn_encode_VkFlags(enc, &val->flags);1054vn_encode_uint32_t(enc, &val->dynamicStateCount);1055if (val->pDynamicStates) {1056vn_encode_array_size(enc, val->dynamicStateCount);1057vn_encode_VkDynamicState_array(enc, val->pDynamicStates, val->dynamicStateCount);1058} else {1059vn_encode_array_size(enc, 0);1060}1061}10621063static inline void1064vn_encode_VkPipelineDynamicStateCreateInfo(struct vn_cs_encoder *enc, const VkPipelineDynamicStateCreateInfo *val)1065{1066assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO);1067vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO });1068vn_encode_VkPipelineDynamicStateCreateInfo_pnext(enc, val->pNext);1069vn_encode_VkPipelineDynamicStateCreateInfo_self(enc, val);1070}10711072/* struct VkGraphicsPipelineCreateInfo chain */10731074static inline size_t1075vn_sizeof_VkGraphicsPipelineCreateInfo_pnext(const void *val)1076{1077/* no known/supported struct */1078return vn_sizeof_simple_pointer(NULL);1079}10801081static inline size_t1082vn_sizeof_VkGraphicsPipelineCreateInfo_self(const VkGraphicsPipelineCreateInfo *val)1083{1084size_t size = 0;1085/* skip val->{sType,pNext} */1086size += vn_sizeof_VkFlags(&val->flags);1087size += vn_sizeof_uint32_t(&val->stageCount);1088if (val->pStages) {1089size += vn_sizeof_array_size(val->stageCount);1090for (uint32_t i = 0; i < val->stageCount; i++)1091size += vn_sizeof_VkPipelineShaderStageCreateInfo(&val->pStages[i]);1092} else {1093size += vn_sizeof_array_size(0);1094}1095size += vn_sizeof_simple_pointer(val->pVertexInputState);1096if (val->pVertexInputState)1097size += vn_sizeof_VkPipelineVertexInputStateCreateInfo(val->pVertexInputState);1098size += vn_sizeof_simple_pointer(val->pInputAssemblyState);1099if (val->pInputAssemblyState)1100size += vn_sizeof_VkPipelineInputAssemblyStateCreateInfo(val->pInputAssemblyState);1101size += vn_sizeof_simple_pointer(val->pTessellationState);1102if (val->pTessellationState)1103size += vn_sizeof_VkPipelineTessellationStateCreateInfo(val->pTessellationState);1104size += vn_sizeof_simple_pointer(val->pViewportState);1105if (val->pViewportState)1106size += vn_sizeof_VkPipelineViewportStateCreateInfo(val->pViewportState);1107size += vn_sizeof_simple_pointer(val->pRasterizationState);1108if (val->pRasterizationState)1109size += vn_sizeof_VkPipelineRasterizationStateCreateInfo(val->pRasterizationState);1110size += vn_sizeof_simple_pointer(val->pMultisampleState);1111if (val->pMultisampleState)1112size += vn_sizeof_VkPipelineMultisampleStateCreateInfo(val->pMultisampleState);1113size += vn_sizeof_simple_pointer(val->pDepthStencilState);1114if (val->pDepthStencilState)1115size += vn_sizeof_VkPipelineDepthStencilStateCreateInfo(val->pDepthStencilState);1116size += vn_sizeof_simple_pointer(val->pColorBlendState);1117if (val->pColorBlendState)1118size += vn_sizeof_VkPipelineColorBlendStateCreateInfo(val->pColorBlendState);1119size += vn_sizeof_simple_pointer(val->pDynamicState);1120if (val->pDynamicState)1121size += vn_sizeof_VkPipelineDynamicStateCreateInfo(val->pDynamicState);1122size += vn_sizeof_VkPipelineLayout(&val->layout);1123size += vn_sizeof_VkRenderPass(&val->renderPass);1124size += vn_sizeof_uint32_t(&val->subpass);1125size += vn_sizeof_VkPipeline(&val->basePipelineHandle);1126size += vn_sizeof_int32_t(&val->basePipelineIndex);1127return size;1128}11291130static inline size_t1131vn_sizeof_VkGraphicsPipelineCreateInfo(const VkGraphicsPipelineCreateInfo *val)1132{1133size_t size = 0;11341135size += vn_sizeof_VkStructureType(&val->sType);1136size += vn_sizeof_VkGraphicsPipelineCreateInfo_pnext(val->pNext);1137size += vn_sizeof_VkGraphicsPipelineCreateInfo_self(val);11381139return size;1140}11411142static inline void1143vn_encode_VkGraphicsPipelineCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)1144{1145/* no known/supported struct */1146vn_encode_simple_pointer(enc, NULL);1147}11481149static inline void1150vn_encode_VkGraphicsPipelineCreateInfo_self(struct vn_cs_encoder *enc, const VkGraphicsPipelineCreateInfo *val)1151{1152/* skip val->{sType,pNext} */1153vn_encode_VkFlags(enc, &val->flags);1154vn_encode_uint32_t(enc, &val->stageCount);1155if (val->pStages) {1156vn_encode_array_size(enc, val->stageCount);1157for (uint32_t i = 0; i < val->stageCount; i++)1158vn_encode_VkPipelineShaderStageCreateInfo(enc, &val->pStages[i]);1159} else {1160vn_encode_array_size(enc, 0);1161}1162if (vn_encode_simple_pointer(enc, val->pVertexInputState))1163vn_encode_VkPipelineVertexInputStateCreateInfo(enc, val->pVertexInputState);1164if (vn_encode_simple_pointer(enc, val->pInputAssemblyState))1165vn_encode_VkPipelineInputAssemblyStateCreateInfo(enc, val->pInputAssemblyState);1166if (vn_encode_simple_pointer(enc, val->pTessellationState))1167vn_encode_VkPipelineTessellationStateCreateInfo(enc, val->pTessellationState);1168if (vn_encode_simple_pointer(enc, val->pViewportState))1169vn_encode_VkPipelineViewportStateCreateInfo(enc, val->pViewportState);1170if (vn_encode_simple_pointer(enc, val->pRasterizationState))1171vn_encode_VkPipelineRasterizationStateCreateInfo(enc, val->pRasterizationState);1172if (vn_encode_simple_pointer(enc, val->pMultisampleState))1173vn_encode_VkPipelineMultisampleStateCreateInfo(enc, val->pMultisampleState);1174if (vn_encode_simple_pointer(enc, val->pDepthStencilState))1175vn_encode_VkPipelineDepthStencilStateCreateInfo(enc, val->pDepthStencilState);1176if (vn_encode_simple_pointer(enc, val->pColorBlendState))1177vn_encode_VkPipelineColorBlendStateCreateInfo(enc, val->pColorBlendState);1178if (vn_encode_simple_pointer(enc, val->pDynamicState))1179vn_encode_VkPipelineDynamicStateCreateInfo(enc, val->pDynamicState);1180vn_encode_VkPipelineLayout(enc, &val->layout);1181vn_encode_VkRenderPass(enc, &val->renderPass);1182vn_encode_uint32_t(enc, &val->subpass);1183vn_encode_VkPipeline(enc, &val->basePipelineHandle);1184vn_encode_int32_t(enc, &val->basePipelineIndex);1185}11861187static inline void1188vn_encode_VkGraphicsPipelineCreateInfo(struct vn_cs_encoder *enc, const VkGraphicsPipelineCreateInfo *val)1189{1190assert(val->sType == VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO);1191vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO });1192vn_encode_VkGraphicsPipelineCreateInfo_pnext(enc, val->pNext);1193vn_encode_VkGraphicsPipelineCreateInfo_self(enc, val);1194}11951196/* struct VkComputePipelineCreateInfo chain */11971198static inline size_t1199vn_sizeof_VkComputePipelineCreateInfo_pnext(const void *val)1200{1201/* no known/supported struct */1202return vn_sizeof_simple_pointer(NULL);1203}12041205static inline size_t1206vn_sizeof_VkComputePipelineCreateInfo_self(const VkComputePipelineCreateInfo *val)1207{1208size_t size = 0;1209/* skip val->{sType,pNext} */1210size += vn_sizeof_VkFlags(&val->flags);1211size += vn_sizeof_VkPipelineShaderStageCreateInfo(&val->stage);1212size += vn_sizeof_VkPipelineLayout(&val->layout);1213size += vn_sizeof_VkPipeline(&val->basePipelineHandle);1214size += vn_sizeof_int32_t(&val->basePipelineIndex);1215return size;1216}12171218static inline size_t1219vn_sizeof_VkComputePipelineCreateInfo(const VkComputePipelineCreateInfo *val)1220{1221size_t size = 0;12221223size += vn_sizeof_VkStructureType(&val->sType);1224size += vn_sizeof_VkComputePipelineCreateInfo_pnext(val->pNext);1225size += vn_sizeof_VkComputePipelineCreateInfo_self(val);12261227return size;1228}12291230static inline void1231vn_encode_VkComputePipelineCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)1232{1233/* no known/supported struct */1234vn_encode_simple_pointer(enc, NULL);1235}12361237static inline void1238vn_encode_VkComputePipelineCreateInfo_self(struct vn_cs_encoder *enc, const VkComputePipelineCreateInfo *val)1239{1240/* skip val->{sType,pNext} */1241vn_encode_VkFlags(enc, &val->flags);1242vn_encode_VkPipelineShaderStageCreateInfo(enc, &val->stage);1243vn_encode_VkPipelineLayout(enc, &val->layout);1244vn_encode_VkPipeline(enc, &val->basePipelineHandle);1245vn_encode_int32_t(enc, &val->basePipelineIndex);1246}12471248static inline void1249vn_encode_VkComputePipelineCreateInfo(struct vn_cs_encoder *enc, const VkComputePipelineCreateInfo *val)1250{1251assert(val->sType == VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO);1252vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO });1253vn_encode_VkComputePipelineCreateInfo_pnext(enc, val->pNext);1254vn_encode_VkComputePipelineCreateInfo_self(enc, val);1255}12561257static inline size_t vn_sizeof_vkCreateGraphicsPipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines)1258{1259const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateGraphicsPipelines_EXT;1260const VkFlags cmd_flags = 0;1261size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);12621263cmd_size += vn_sizeof_VkDevice(&device);1264cmd_size += vn_sizeof_VkPipelineCache(&pipelineCache);1265cmd_size += vn_sizeof_uint32_t(&createInfoCount);1266if (pCreateInfos) {1267cmd_size += vn_sizeof_array_size(createInfoCount);1268for (uint32_t i = 0; i < createInfoCount; i++)1269cmd_size += vn_sizeof_VkGraphicsPipelineCreateInfo(&pCreateInfos[i]);1270} else {1271cmd_size += vn_sizeof_array_size(0);1272}1273cmd_size += vn_sizeof_simple_pointer(pAllocator);1274if (pAllocator)1275assert(false);1276if (pPipelines) {1277cmd_size += vn_sizeof_array_size(createInfoCount);1278for (uint32_t i = 0; i < createInfoCount; i++)1279cmd_size += vn_sizeof_VkPipeline(&pPipelines[i]);1280} else {1281cmd_size += vn_sizeof_array_size(0);1282}12831284return cmd_size;1285}12861287static inline void vn_encode_vkCreateGraphicsPipelines(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines)1288{1289const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateGraphicsPipelines_EXT;12901291vn_encode_VkCommandTypeEXT(enc, &cmd_type);1292vn_encode_VkFlags(enc, &cmd_flags);12931294vn_encode_VkDevice(enc, &device);1295vn_encode_VkPipelineCache(enc, &pipelineCache);1296vn_encode_uint32_t(enc, &createInfoCount);1297if (pCreateInfos) {1298vn_encode_array_size(enc, createInfoCount);1299for (uint32_t i = 0; i < createInfoCount; i++)1300vn_encode_VkGraphicsPipelineCreateInfo(enc, &pCreateInfos[i]);1301} else {1302vn_encode_array_size(enc, 0);1303}1304if (vn_encode_simple_pointer(enc, pAllocator))1305assert(false);1306if (pPipelines) {1307vn_encode_array_size(enc, createInfoCount);1308for (uint32_t i = 0; i < createInfoCount; i++)1309vn_encode_VkPipeline(enc, &pPipelines[i]);1310} else {1311vn_encode_array_size(enc, 0);1312}1313}13141315static inline size_t vn_sizeof_vkCreateGraphicsPipelines_reply(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines)1316{1317const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateGraphicsPipelines_EXT;1318size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);13191320VkResult ret;1321cmd_size += vn_sizeof_VkResult(&ret);1322/* skip device */1323/* skip pipelineCache */1324/* skip createInfoCount */1325/* skip pCreateInfos */1326/* skip pAllocator */1327if (pPipelines) {1328cmd_size += vn_sizeof_array_size(createInfoCount);1329for (uint32_t i = 0; i < createInfoCount; i++)1330cmd_size += vn_sizeof_VkPipeline(&pPipelines[i]);1331} else {1332cmd_size += vn_sizeof_array_size(0);1333}13341335return cmd_size;1336}13371338static inline VkResult vn_decode_vkCreateGraphicsPipelines_reply(struct vn_cs_decoder *dec, VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines)1339{1340VkCommandTypeEXT command_type;1341vn_decode_VkCommandTypeEXT(dec, &command_type);1342assert(command_type == VK_COMMAND_TYPE_vkCreateGraphicsPipelines_EXT);13431344VkResult ret;1345vn_decode_VkResult(dec, &ret);1346/* skip device */1347/* skip pipelineCache */1348/* skip createInfoCount */1349/* skip pCreateInfos */1350/* skip pAllocator */1351if (vn_peek_array_size(dec)) {1352vn_decode_array_size(dec, createInfoCount);1353for (uint32_t i = 0; i < createInfoCount; i++)1354vn_decode_VkPipeline(dec, &pPipelines[i]);1355} else {1356vn_decode_array_size(dec, 0);1357pPipelines = NULL;1358}13591360return ret;1361}13621363static inline size_t vn_sizeof_vkCreateComputePipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines)1364{1365const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateComputePipelines_EXT;1366const VkFlags cmd_flags = 0;1367size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);13681369cmd_size += vn_sizeof_VkDevice(&device);1370cmd_size += vn_sizeof_VkPipelineCache(&pipelineCache);1371cmd_size += vn_sizeof_uint32_t(&createInfoCount);1372if (pCreateInfos) {1373cmd_size += vn_sizeof_array_size(createInfoCount);1374for (uint32_t i = 0; i < createInfoCount; i++)1375cmd_size += vn_sizeof_VkComputePipelineCreateInfo(&pCreateInfos[i]);1376} else {1377cmd_size += vn_sizeof_array_size(0);1378}1379cmd_size += vn_sizeof_simple_pointer(pAllocator);1380if (pAllocator)1381assert(false);1382if (pPipelines) {1383cmd_size += vn_sizeof_array_size(createInfoCount);1384for (uint32_t i = 0; i < createInfoCount; i++)1385cmd_size += vn_sizeof_VkPipeline(&pPipelines[i]);1386} else {1387cmd_size += vn_sizeof_array_size(0);1388}13891390return cmd_size;1391}13921393static inline void vn_encode_vkCreateComputePipelines(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines)1394{1395const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateComputePipelines_EXT;13961397vn_encode_VkCommandTypeEXT(enc, &cmd_type);1398vn_encode_VkFlags(enc, &cmd_flags);13991400vn_encode_VkDevice(enc, &device);1401vn_encode_VkPipelineCache(enc, &pipelineCache);1402vn_encode_uint32_t(enc, &createInfoCount);1403if (pCreateInfos) {1404vn_encode_array_size(enc, createInfoCount);1405for (uint32_t i = 0; i < createInfoCount; i++)1406vn_encode_VkComputePipelineCreateInfo(enc, &pCreateInfos[i]);1407} else {1408vn_encode_array_size(enc, 0);1409}1410if (vn_encode_simple_pointer(enc, pAllocator))1411assert(false);1412if (pPipelines) {1413vn_encode_array_size(enc, createInfoCount);1414for (uint32_t i = 0; i < createInfoCount; i++)1415vn_encode_VkPipeline(enc, &pPipelines[i]);1416} else {1417vn_encode_array_size(enc, 0);1418}1419}14201421static inline size_t vn_sizeof_vkCreateComputePipelines_reply(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines)1422{1423const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateComputePipelines_EXT;1424size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);14251426VkResult ret;1427cmd_size += vn_sizeof_VkResult(&ret);1428/* skip device */1429/* skip pipelineCache */1430/* skip createInfoCount */1431/* skip pCreateInfos */1432/* skip pAllocator */1433if (pPipelines) {1434cmd_size += vn_sizeof_array_size(createInfoCount);1435for (uint32_t i = 0; i < createInfoCount; i++)1436cmd_size += vn_sizeof_VkPipeline(&pPipelines[i]);1437} else {1438cmd_size += vn_sizeof_array_size(0);1439}14401441return cmd_size;1442}14431444static inline VkResult vn_decode_vkCreateComputePipelines_reply(struct vn_cs_decoder *dec, VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines)1445{1446VkCommandTypeEXT command_type;1447vn_decode_VkCommandTypeEXT(dec, &command_type);1448assert(command_type == VK_COMMAND_TYPE_vkCreateComputePipelines_EXT);14491450VkResult ret;1451vn_decode_VkResult(dec, &ret);1452/* skip device */1453/* skip pipelineCache */1454/* skip createInfoCount */1455/* skip pCreateInfos */1456/* skip pAllocator */1457if (vn_peek_array_size(dec)) {1458vn_decode_array_size(dec, createInfoCount);1459for (uint32_t i = 0; i < createInfoCount; i++)1460vn_decode_VkPipeline(dec, &pPipelines[i]);1461} else {1462vn_decode_array_size(dec, 0);1463pPipelines = NULL;1464}14651466return ret;1467}14681469static inline size_t vn_sizeof_vkDestroyPipeline(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator)1470{1471const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyPipeline_EXT;1472const VkFlags cmd_flags = 0;1473size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);14741475cmd_size += vn_sizeof_VkDevice(&device);1476cmd_size += vn_sizeof_VkPipeline(&pipeline);1477cmd_size += vn_sizeof_simple_pointer(pAllocator);1478if (pAllocator)1479assert(false);14801481return cmd_size;1482}14831484static inline void vn_encode_vkDestroyPipeline(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator)1485{1486const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyPipeline_EXT;14871488vn_encode_VkCommandTypeEXT(enc, &cmd_type);1489vn_encode_VkFlags(enc, &cmd_flags);14901491vn_encode_VkDevice(enc, &device);1492vn_encode_VkPipeline(enc, &pipeline);1493if (vn_encode_simple_pointer(enc, pAllocator))1494assert(false);1495}14961497static inline size_t vn_sizeof_vkDestroyPipeline_reply(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator)1498{1499const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyPipeline_EXT;1500size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);15011502/* skip device */1503/* skip pipeline */1504/* skip pAllocator */15051506return cmd_size;1507}15081509static inline void vn_decode_vkDestroyPipeline_reply(struct vn_cs_decoder *dec, VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator)1510{1511VkCommandTypeEXT command_type;1512vn_decode_VkCommandTypeEXT(dec, &command_type);1513assert(command_type == VK_COMMAND_TYPE_vkDestroyPipeline_EXT);15141515/* skip device */1516/* skip pipeline */1517/* skip pAllocator */1518}15191520static inline void vn_submit_vkCreateGraphicsPipelines(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines, struct vn_instance_submit_command *submit)1521{1522uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];1523void *cmd_data = local_cmd_data;1524size_t cmd_size = vn_sizeof_vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);1525if (cmd_size > sizeof(local_cmd_data)) {1526cmd_data = malloc(cmd_size);1527if (!cmd_data)1528cmd_size = 0;1529}1530const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkCreateGraphicsPipelines_reply(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) : 0;15311532struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);1533if (cmd_size) {1534vn_encode_vkCreateGraphicsPipelines(enc, cmd_flags, device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);1535vn_instance_submit_command(vn_instance, submit);1536if (cmd_data != local_cmd_data)1537free(cmd_data);1538}1539}15401541static inline void vn_submit_vkCreateComputePipelines(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines, struct vn_instance_submit_command *submit)1542{1543uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];1544void *cmd_data = local_cmd_data;1545size_t cmd_size = vn_sizeof_vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);1546if (cmd_size > sizeof(local_cmd_data)) {1547cmd_data = malloc(cmd_size);1548if (!cmd_data)1549cmd_size = 0;1550}1551const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkCreateComputePipelines_reply(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) : 0;15521553struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);1554if (cmd_size) {1555vn_encode_vkCreateComputePipelines(enc, cmd_flags, device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);1556vn_instance_submit_command(vn_instance, submit);1557if (cmd_data != local_cmd_data)1558free(cmd_data);1559}1560}15611562static inline void vn_submit_vkDestroyPipeline(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator, struct vn_instance_submit_command *submit)1563{1564uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];1565void *cmd_data = local_cmd_data;1566size_t cmd_size = vn_sizeof_vkDestroyPipeline(device, pipeline, pAllocator);1567if (cmd_size > sizeof(local_cmd_data)) {1568cmd_data = malloc(cmd_size);1569if (!cmd_data)1570cmd_size = 0;1571}1572const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkDestroyPipeline_reply(device, pipeline, pAllocator) : 0;15731574struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);1575if (cmd_size) {1576vn_encode_vkDestroyPipeline(enc, cmd_flags, device, pipeline, pAllocator);1577vn_instance_submit_command(vn_instance, submit);1578if (cmd_data != local_cmd_data)1579free(cmd_data);1580}1581}15821583static inline VkResult vn_call_vkCreateGraphicsPipelines(struct vn_instance *vn_instance, VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines)1584{1585struct vn_instance_submit_command submit;1586vn_submit_vkCreateGraphicsPipelines(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, &submit);1587struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);1588if (dec) {1589const VkResult ret = vn_decode_vkCreateGraphicsPipelines_reply(dec, device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);1590vn_instance_free_command_reply(vn_instance, &submit);1591return ret;1592} else {1593return VK_ERROR_OUT_OF_HOST_MEMORY;1594}1595}15961597static inline void vn_async_vkCreateGraphicsPipelines(struct vn_instance *vn_instance, VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines)1598{1599struct vn_instance_submit_command submit;1600vn_submit_vkCreateGraphicsPipelines(vn_instance, 0, device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, &submit);1601}16021603static inline VkResult vn_call_vkCreateComputePipelines(struct vn_instance *vn_instance, VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines)1604{1605struct vn_instance_submit_command submit;1606vn_submit_vkCreateComputePipelines(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, &submit);1607struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);1608if (dec) {1609const VkResult ret = vn_decode_vkCreateComputePipelines_reply(dec, device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);1610vn_instance_free_command_reply(vn_instance, &submit);1611return ret;1612} else {1613return VK_ERROR_OUT_OF_HOST_MEMORY;1614}1615}16161617static inline void vn_async_vkCreateComputePipelines(struct vn_instance *vn_instance, VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines)1618{1619struct vn_instance_submit_command submit;1620vn_submit_vkCreateComputePipelines(vn_instance, 0, device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, &submit);1621}16221623static inline void vn_call_vkDestroyPipeline(struct vn_instance *vn_instance, VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator)1624{1625struct vn_instance_submit_command submit;1626vn_submit_vkDestroyPipeline(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pipeline, pAllocator, &submit);1627struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);1628if (dec) {1629vn_decode_vkDestroyPipeline_reply(dec, device, pipeline, pAllocator);1630vn_instance_free_command_reply(vn_instance, &submit);1631}1632}16331634static inline void vn_async_vkDestroyPipeline(struct vn_instance *vn_instance, VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator)1635{1636struct vn_instance_submit_command submit;1637vn_submit_vkDestroyPipeline(vn_instance, 0, device, pipeline, pAllocator, &submit);1638}16391640#endif /* VN_PROTOCOL_DRIVER_PIPELINE_H */164116421643