1bf215546Sopenharmony_ci/* This file is generated by venus-protocol. See vn_protocol_driver.h. */ 2bf215546Sopenharmony_ci 3bf215546Sopenharmony_ci/* 4bf215546Sopenharmony_ci * Copyright 2020 Google LLC 5bf215546Sopenharmony_ci * SPDX-License-Identifier: MIT 6bf215546Sopenharmony_ci */ 7bf215546Sopenharmony_ci 8bf215546Sopenharmony_ci#ifndef VN_PROTOCOL_DRIVER_PIPELINE_H 9bf215546Sopenharmony_ci#define VN_PROTOCOL_DRIVER_PIPELINE_H 10bf215546Sopenharmony_ci 11bf215546Sopenharmony_ci#include "vn_instance.h" 12bf215546Sopenharmony_ci#include "vn_protocol_driver_structs.h" 13bf215546Sopenharmony_ci 14bf215546Sopenharmony_ci/* struct VkSpecializationMapEntry */ 15bf215546Sopenharmony_ci 16bf215546Sopenharmony_cistatic inline size_t 17bf215546Sopenharmony_civn_sizeof_VkSpecializationMapEntry(const VkSpecializationMapEntry *val) 18bf215546Sopenharmony_ci{ 19bf215546Sopenharmony_ci size_t size = 0; 20bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->constantID); 21bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->offset); 22bf215546Sopenharmony_ci size += vn_sizeof_size_t(&val->size); 23bf215546Sopenharmony_ci return size; 24bf215546Sopenharmony_ci} 25bf215546Sopenharmony_ci 26bf215546Sopenharmony_cistatic inline void 27bf215546Sopenharmony_civn_encode_VkSpecializationMapEntry(struct vn_cs_encoder *enc, const VkSpecializationMapEntry *val) 28bf215546Sopenharmony_ci{ 29bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->constantID); 30bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->offset); 31bf215546Sopenharmony_ci vn_encode_size_t(enc, &val->size); 32bf215546Sopenharmony_ci} 33bf215546Sopenharmony_ci 34bf215546Sopenharmony_ci/* struct VkSpecializationInfo */ 35bf215546Sopenharmony_ci 36bf215546Sopenharmony_cistatic inline size_t 37bf215546Sopenharmony_civn_sizeof_VkSpecializationInfo(const VkSpecializationInfo *val) 38bf215546Sopenharmony_ci{ 39bf215546Sopenharmony_ci size_t size = 0; 40bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->mapEntryCount); 41bf215546Sopenharmony_ci if (val->pMapEntries) { 42bf215546Sopenharmony_ci size += vn_sizeof_array_size(val->mapEntryCount); 43bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->mapEntryCount; i++) 44bf215546Sopenharmony_ci size += vn_sizeof_VkSpecializationMapEntry(&val->pMapEntries[i]); 45bf215546Sopenharmony_ci } else { 46bf215546Sopenharmony_ci size += vn_sizeof_array_size(0); 47bf215546Sopenharmony_ci } 48bf215546Sopenharmony_ci size += vn_sizeof_size_t(&val->dataSize); 49bf215546Sopenharmony_ci if (val->pData) { 50bf215546Sopenharmony_ci size += vn_sizeof_array_size(val->dataSize); 51bf215546Sopenharmony_ci size += vn_sizeof_blob_array(val->pData, val->dataSize); 52bf215546Sopenharmony_ci } else { 53bf215546Sopenharmony_ci size += vn_sizeof_array_size(0); 54bf215546Sopenharmony_ci } 55bf215546Sopenharmony_ci return size; 56bf215546Sopenharmony_ci} 57bf215546Sopenharmony_ci 58bf215546Sopenharmony_cistatic inline void 59bf215546Sopenharmony_civn_encode_VkSpecializationInfo(struct vn_cs_encoder *enc, const VkSpecializationInfo *val) 60bf215546Sopenharmony_ci{ 61bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->mapEntryCount); 62bf215546Sopenharmony_ci if (val->pMapEntries) { 63bf215546Sopenharmony_ci vn_encode_array_size(enc, val->mapEntryCount); 64bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->mapEntryCount; i++) 65bf215546Sopenharmony_ci vn_encode_VkSpecializationMapEntry(enc, &val->pMapEntries[i]); 66bf215546Sopenharmony_ci } else { 67bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 68bf215546Sopenharmony_ci } 69bf215546Sopenharmony_ci vn_encode_size_t(enc, &val->dataSize); 70bf215546Sopenharmony_ci if (val->pData) { 71bf215546Sopenharmony_ci vn_encode_array_size(enc, val->dataSize); 72bf215546Sopenharmony_ci vn_encode_blob_array(enc, val->pData, val->dataSize); 73bf215546Sopenharmony_ci } else { 74bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 75bf215546Sopenharmony_ci } 76bf215546Sopenharmony_ci} 77bf215546Sopenharmony_ci 78bf215546Sopenharmony_ci/* struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfo chain */ 79bf215546Sopenharmony_ci 80bf215546Sopenharmony_cistatic inline size_t 81bf215546Sopenharmony_civn_sizeof_VkPipelineShaderStageRequiredSubgroupSizeCreateInfo_pnext(const void *val) 82bf215546Sopenharmony_ci{ 83bf215546Sopenharmony_ci /* no known/supported struct */ 84bf215546Sopenharmony_ci return vn_sizeof_simple_pointer(NULL); 85bf215546Sopenharmony_ci} 86bf215546Sopenharmony_ci 87bf215546Sopenharmony_cistatic inline size_t 88bf215546Sopenharmony_civn_sizeof_VkPipelineShaderStageRequiredSubgroupSizeCreateInfo_self(const VkPipelineShaderStageRequiredSubgroupSizeCreateInfo *val) 89bf215546Sopenharmony_ci{ 90bf215546Sopenharmony_ci size_t size = 0; 91bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 92bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->requiredSubgroupSize); 93bf215546Sopenharmony_ci return size; 94bf215546Sopenharmony_ci} 95bf215546Sopenharmony_ci 96bf215546Sopenharmony_cistatic inline size_t 97bf215546Sopenharmony_civn_sizeof_VkPipelineShaderStageRequiredSubgroupSizeCreateInfo(const VkPipelineShaderStageRequiredSubgroupSizeCreateInfo *val) 98bf215546Sopenharmony_ci{ 99bf215546Sopenharmony_ci size_t size = 0; 100bf215546Sopenharmony_ci 101bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&val->sType); 102bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineShaderStageRequiredSubgroupSizeCreateInfo_pnext(val->pNext); 103bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineShaderStageRequiredSubgroupSizeCreateInfo_self(val); 104bf215546Sopenharmony_ci 105bf215546Sopenharmony_ci return size; 106bf215546Sopenharmony_ci} 107bf215546Sopenharmony_ci 108bf215546Sopenharmony_cistatic inline void 109bf215546Sopenharmony_civn_encode_VkPipelineShaderStageRequiredSubgroupSizeCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val) 110bf215546Sopenharmony_ci{ 111bf215546Sopenharmony_ci /* no known/supported struct */ 112bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, NULL); 113bf215546Sopenharmony_ci} 114bf215546Sopenharmony_ci 115bf215546Sopenharmony_cistatic inline void 116bf215546Sopenharmony_civn_encode_VkPipelineShaderStageRequiredSubgroupSizeCreateInfo_self(struct vn_cs_encoder *enc, const VkPipelineShaderStageRequiredSubgroupSizeCreateInfo *val) 117bf215546Sopenharmony_ci{ 118bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 119bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->requiredSubgroupSize); 120bf215546Sopenharmony_ci} 121bf215546Sopenharmony_ci 122bf215546Sopenharmony_cistatic inline void 123bf215546Sopenharmony_civn_encode_VkPipelineShaderStageRequiredSubgroupSizeCreateInfo(struct vn_cs_encoder *enc, const VkPipelineShaderStageRequiredSubgroupSizeCreateInfo *val) 124bf215546Sopenharmony_ci{ 125bf215546Sopenharmony_ci assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO); 126bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO }); 127bf215546Sopenharmony_ci vn_encode_VkPipelineShaderStageRequiredSubgroupSizeCreateInfo_pnext(enc, val->pNext); 128bf215546Sopenharmony_ci vn_encode_VkPipelineShaderStageRequiredSubgroupSizeCreateInfo_self(enc, val); 129bf215546Sopenharmony_ci} 130bf215546Sopenharmony_ci 131bf215546Sopenharmony_ci/* struct VkPipelineShaderStageCreateInfo chain */ 132bf215546Sopenharmony_ci 133bf215546Sopenharmony_cistatic inline size_t 134bf215546Sopenharmony_civn_sizeof_VkPipelineShaderStageCreateInfo_pnext(const void *val) 135bf215546Sopenharmony_ci{ 136bf215546Sopenharmony_ci const VkBaseInStructure *pnext = val; 137bf215546Sopenharmony_ci size_t size = 0; 138bf215546Sopenharmony_ci 139bf215546Sopenharmony_ci while (pnext) { 140bf215546Sopenharmony_ci switch ((int32_t)pnext->sType) { 141bf215546Sopenharmony_ci case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO: 142bf215546Sopenharmony_ci if (!vn_cs_renderer_protocol_has_extension(226 /* VK_EXT_subgroup_size_control */)) 143bf215546Sopenharmony_ci break; 144bf215546Sopenharmony_ci size += vn_sizeof_simple_pointer(pnext); 145bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&pnext->sType); 146bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineShaderStageCreateInfo_pnext(pnext->pNext); 147bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineShaderStageRequiredSubgroupSizeCreateInfo_self((const VkPipelineShaderStageRequiredSubgroupSizeCreateInfo *)pnext); 148bf215546Sopenharmony_ci return size; 149bf215546Sopenharmony_ci default: 150bf215546Sopenharmony_ci /* ignore unknown/unsupported struct */ 151bf215546Sopenharmony_ci break; 152bf215546Sopenharmony_ci } 153bf215546Sopenharmony_ci pnext = pnext->pNext; 154bf215546Sopenharmony_ci } 155bf215546Sopenharmony_ci 156bf215546Sopenharmony_ci return vn_sizeof_simple_pointer(NULL); 157bf215546Sopenharmony_ci} 158bf215546Sopenharmony_ci 159bf215546Sopenharmony_cistatic inline size_t 160bf215546Sopenharmony_civn_sizeof_VkPipelineShaderStageCreateInfo_self(const VkPipelineShaderStageCreateInfo *val) 161bf215546Sopenharmony_ci{ 162bf215546Sopenharmony_ci size_t size = 0; 163bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 164bf215546Sopenharmony_ci size += vn_sizeof_VkFlags(&val->flags); 165bf215546Sopenharmony_ci size += vn_sizeof_VkShaderStageFlagBits(&val->stage); 166bf215546Sopenharmony_ci size += vn_sizeof_VkShaderModule(&val->module); 167bf215546Sopenharmony_ci if (val->pName) { 168bf215546Sopenharmony_ci const size_t string_size = strlen(val->pName) + 1; 169bf215546Sopenharmony_ci size += vn_sizeof_array_size(string_size); 170bf215546Sopenharmony_ci size += vn_sizeof_char_array(val->pName, string_size); 171bf215546Sopenharmony_ci } else { 172bf215546Sopenharmony_ci size += vn_sizeof_array_size(0); 173bf215546Sopenharmony_ci } 174bf215546Sopenharmony_ci size += vn_sizeof_simple_pointer(val->pSpecializationInfo); 175bf215546Sopenharmony_ci if (val->pSpecializationInfo) 176bf215546Sopenharmony_ci size += vn_sizeof_VkSpecializationInfo(val->pSpecializationInfo); 177bf215546Sopenharmony_ci return size; 178bf215546Sopenharmony_ci} 179bf215546Sopenharmony_ci 180bf215546Sopenharmony_cistatic inline size_t 181bf215546Sopenharmony_civn_sizeof_VkPipelineShaderStageCreateInfo(const VkPipelineShaderStageCreateInfo *val) 182bf215546Sopenharmony_ci{ 183bf215546Sopenharmony_ci size_t size = 0; 184bf215546Sopenharmony_ci 185bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&val->sType); 186bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineShaderStageCreateInfo_pnext(val->pNext); 187bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineShaderStageCreateInfo_self(val); 188bf215546Sopenharmony_ci 189bf215546Sopenharmony_ci return size; 190bf215546Sopenharmony_ci} 191bf215546Sopenharmony_ci 192bf215546Sopenharmony_cistatic inline void 193bf215546Sopenharmony_civn_encode_VkPipelineShaderStageCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val) 194bf215546Sopenharmony_ci{ 195bf215546Sopenharmony_ci const VkBaseInStructure *pnext = val; 196bf215546Sopenharmony_ci 197bf215546Sopenharmony_ci while (pnext) { 198bf215546Sopenharmony_ci switch ((int32_t)pnext->sType) { 199bf215546Sopenharmony_ci case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO: 200bf215546Sopenharmony_ci if (!vn_cs_renderer_protocol_has_extension(226 /* VK_EXT_subgroup_size_control */)) 201bf215546Sopenharmony_ci break; 202bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, pnext); 203bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &pnext->sType); 204bf215546Sopenharmony_ci vn_encode_VkPipelineShaderStageCreateInfo_pnext(enc, pnext->pNext); 205bf215546Sopenharmony_ci vn_encode_VkPipelineShaderStageRequiredSubgroupSizeCreateInfo_self(enc, (const VkPipelineShaderStageRequiredSubgroupSizeCreateInfo *)pnext); 206bf215546Sopenharmony_ci return; 207bf215546Sopenharmony_ci default: 208bf215546Sopenharmony_ci /* ignore unknown/unsupported struct */ 209bf215546Sopenharmony_ci break; 210bf215546Sopenharmony_ci } 211bf215546Sopenharmony_ci pnext = pnext->pNext; 212bf215546Sopenharmony_ci } 213bf215546Sopenharmony_ci 214bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, NULL); 215bf215546Sopenharmony_ci} 216bf215546Sopenharmony_ci 217bf215546Sopenharmony_cistatic inline void 218bf215546Sopenharmony_civn_encode_VkPipelineShaderStageCreateInfo_self(struct vn_cs_encoder *enc, const VkPipelineShaderStageCreateInfo *val) 219bf215546Sopenharmony_ci{ 220bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 221bf215546Sopenharmony_ci vn_encode_VkFlags(enc, &val->flags); 222bf215546Sopenharmony_ci vn_encode_VkShaderStageFlagBits(enc, &val->stage); 223bf215546Sopenharmony_ci vn_encode_VkShaderModule(enc, &val->module); 224bf215546Sopenharmony_ci if (val->pName) { 225bf215546Sopenharmony_ci const size_t string_size = strlen(val->pName) + 1; 226bf215546Sopenharmony_ci vn_encode_array_size(enc, string_size); 227bf215546Sopenharmony_ci vn_encode_char_array(enc, val->pName, string_size); 228bf215546Sopenharmony_ci } else { 229bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 230bf215546Sopenharmony_ci } 231bf215546Sopenharmony_ci if (vn_encode_simple_pointer(enc, val->pSpecializationInfo)) 232bf215546Sopenharmony_ci vn_encode_VkSpecializationInfo(enc, val->pSpecializationInfo); 233bf215546Sopenharmony_ci} 234bf215546Sopenharmony_ci 235bf215546Sopenharmony_cistatic inline void 236bf215546Sopenharmony_civn_encode_VkPipelineShaderStageCreateInfo(struct vn_cs_encoder *enc, const VkPipelineShaderStageCreateInfo *val) 237bf215546Sopenharmony_ci{ 238bf215546Sopenharmony_ci assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO); 239bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO }); 240bf215546Sopenharmony_ci vn_encode_VkPipelineShaderStageCreateInfo_pnext(enc, val->pNext); 241bf215546Sopenharmony_ci vn_encode_VkPipelineShaderStageCreateInfo_self(enc, val); 242bf215546Sopenharmony_ci} 243bf215546Sopenharmony_ci 244bf215546Sopenharmony_ci/* struct VkVertexInputBindingDescription */ 245bf215546Sopenharmony_ci 246bf215546Sopenharmony_cistatic inline size_t 247bf215546Sopenharmony_civn_sizeof_VkVertexInputBindingDescription(const VkVertexInputBindingDescription *val) 248bf215546Sopenharmony_ci{ 249bf215546Sopenharmony_ci size_t size = 0; 250bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->binding); 251bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->stride); 252bf215546Sopenharmony_ci size += vn_sizeof_VkVertexInputRate(&val->inputRate); 253bf215546Sopenharmony_ci return size; 254bf215546Sopenharmony_ci} 255bf215546Sopenharmony_ci 256bf215546Sopenharmony_cistatic inline void 257bf215546Sopenharmony_civn_encode_VkVertexInputBindingDescription(struct vn_cs_encoder *enc, const VkVertexInputBindingDescription *val) 258bf215546Sopenharmony_ci{ 259bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->binding); 260bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->stride); 261bf215546Sopenharmony_ci vn_encode_VkVertexInputRate(enc, &val->inputRate); 262bf215546Sopenharmony_ci} 263bf215546Sopenharmony_ci 264bf215546Sopenharmony_ci/* struct VkVertexInputAttributeDescription */ 265bf215546Sopenharmony_ci 266bf215546Sopenharmony_cistatic inline size_t 267bf215546Sopenharmony_civn_sizeof_VkVertexInputAttributeDescription(const VkVertexInputAttributeDescription *val) 268bf215546Sopenharmony_ci{ 269bf215546Sopenharmony_ci size_t size = 0; 270bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->location); 271bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->binding); 272bf215546Sopenharmony_ci size += vn_sizeof_VkFormat(&val->format); 273bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->offset); 274bf215546Sopenharmony_ci return size; 275bf215546Sopenharmony_ci} 276bf215546Sopenharmony_ci 277bf215546Sopenharmony_cistatic inline void 278bf215546Sopenharmony_civn_encode_VkVertexInputAttributeDescription(struct vn_cs_encoder *enc, const VkVertexInputAttributeDescription *val) 279bf215546Sopenharmony_ci{ 280bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->location); 281bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->binding); 282bf215546Sopenharmony_ci vn_encode_VkFormat(enc, &val->format); 283bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->offset); 284bf215546Sopenharmony_ci} 285bf215546Sopenharmony_ci 286bf215546Sopenharmony_ci/* struct VkVertexInputBindingDivisorDescriptionEXT */ 287bf215546Sopenharmony_ci 288bf215546Sopenharmony_cistatic inline size_t 289bf215546Sopenharmony_civn_sizeof_VkVertexInputBindingDivisorDescriptionEXT(const VkVertexInputBindingDivisorDescriptionEXT *val) 290bf215546Sopenharmony_ci{ 291bf215546Sopenharmony_ci size_t size = 0; 292bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->binding); 293bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->divisor); 294bf215546Sopenharmony_ci return size; 295bf215546Sopenharmony_ci} 296bf215546Sopenharmony_ci 297bf215546Sopenharmony_cistatic inline void 298bf215546Sopenharmony_civn_encode_VkVertexInputBindingDivisorDescriptionEXT(struct vn_cs_encoder *enc, const VkVertexInputBindingDivisorDescriptionEXT *val) 299bf215546Sopenharmony_ci{ 300bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->binding); 301bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->divisor); 302bf215546Sopenharmony_ci} 303bf215546Sopenharmony_ci 304bf215546Sopenharmony_ci/* struct VkPipelineVertexInputDivisorStateCreateInfoEXT chain */ 305bf215546Sopenharmony_ci 306bf215546Sopenharmony_cistatic inline size_t 307bf215546Sopenharmony_civn_sizeof_VkPipelineVertexInputDivisorStateCreateInfoEXT_pnext(const void *val) 308bf215546Sopenharmony_ci{ 309bf215546Sopenharmony_ci /* no known/supported struct */ 310bf215546Sopenharmony_ci return vn_sizeof_simple_pointer(NULL); 311bf215546Sopenharmony_ci} 312bf215546Sopenharmony_ci 313bf215546Sopenharmony_cistatic inline size_t 314bf215546Sopenharmony_civn_sizeof_VkPipelineVertexInputDivisorStateCreateInfoEXT_self(const VkPipelineVertexInputDivisorStateCreateInfoEXT *val) 315bf215546Sopenharmony_ci{ 316bf215546Sopenharmony_ci size_t size = 0; 317bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 318bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->vertexBindingDivisorCount); 319bf215546Sopenharmony_ci if (val->pVertexBindingDivisors) { 320bf215546Sopenharmony_ci size += vn_sizeof_array_size(val->vertexBindingDivisorCount); 321bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->vertexBindingDivisorCount; i++) 322bf215546Sopenharmony_ci size += vn_sizeof_VkVertexInputBindingDivisorDescriptionEXT(&val->pVertexBindingDivisors[i]); 323bf215546Sopenharmony_ci } else { 324bf215546Sopenharmony_ci size += vn_sizeof_array_size(0); 325bf215546Sopenharmony_ci } 326bf215546Sopenharmony_ci return size; 327bf215546Sopenharmony_ci} 328bf215546Sopenharmony_ci 329bf215546Sopenharmony_cistatic inline size_t 330bf215546Sopenharmony_civn_sizeof_VkPipelineVertexInputDivisorStateCreateInfoEXT(const VkPipelineVertexInputDivisorStateCreateInfoEXT *val) 331bf215546Sopenharmony_ci{ 332bf215546Sopenharmony_ci size_t size = 0; 333bf215546Sopenharmony_ci 334bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&val->sType); 335bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineVertexInputDivisorStateCreateInfoEXT_pnext(val->pNext); 336bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineVertexInputDivisorStateCreateInfoEXT_self(val); 337bf215546Sopenharmony_ci 338bf215546Sopenharmony_ci return size; 339bf215546Sopenharmony_ci} 340bf215546Sopenharmony_ci 341bf215546Sopenharmony_cistatic inline void 342bf215546Sopenharmony_civn_encode_VkPipelineVertexInputDivisorStateCreateInfoEXT_pnext(struct vn_cs_encoder *enc, const void *val) 343bf215546Sopenharmony_ci{ 344bf215546Sopenharmony_ci /* no known/supported struct */ 345bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, NULL); 346bf215546Sopenharmony_ci} 347bf215546Sopenharmony_ci 348bf215546Sopenharmony_cistatic inline void 349bf215546Sopenharmony_civn_encode_VkPipelineVertexInputDivisorStateCreateInfoEXT_self(struct vn_cs_encoder *enc, const VkPipelineVertexInputDivisorStateCreateInfoEXT *val) 350bf215546Sopenharmony_ci{ 351bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 352bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->vertexBindingDivisorCount); 353bf215546Sopenharmony_ci if (val->pVertexBindingDivisors) { 354bf215546Sopenharmony_ci vn_encode_array_size(enc, val->vertexBindingDivisorCount); 355bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->vertexBindingDivisorCount; i++) 356bf215546Sopenharmony_ci vn_encode_VkVertexInputBindingDivisorDescriptionEXT(enc, &val->pVertexBindingDivisors[i]); 357bf215546Sopenharmony_ci } else { 358bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 359bf215546Sopenharmony_ci } 360bf215546Sopenharmony_ci} 361bf215546Sopenharmony_ci 362bf215546Sopenharmony_cistatic inline void 363bf215546Sopenharmony_civn_encode_VkPipelineVertexInputDivisorStateCreateInfoEXT(struct vn_cs_encoder *enc, const VkPipelineVertexInputDivisorStateCreateInfoEXT *val) 364bf215546Sopenharmony_ci{ 365bf215546Sopenharmony_ci assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT); 366bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT }); 367bf215546Sopenharmony_ci vn_encode_VkPipelineVertexInputDivisorStateCreateInfoEXT_pnext(enc, val->pNext); 368bf215546Sopenharmony_ci vn_encode_VkPipelineVertexInputDivisorStateCreateInfoEXT_self(enc, val); 369bf215546Sopenharmony_ci} 370bf215546Sopenharmony_ci 371bf215546Sopenharmony_ci/* struct VkPipelineVertexInputStateCreateInfo chain */ 372bf215546Sopenharmony_ci 373bf215546Sopenharmony_cistatic inline size_t 374bf215546Sopenharmony_civn_sizeof_VkPipelineVertexInputStateCreateInfo_pnext(const void *val) 375bf215546Sopenharmony_ci{ 376bf215546Sopenharmony_ci const VkBaseInStructure *pnext = val; 377bf215546Sopenharmony_ci size_t size = 0; 378bf215546Sopenharmony_ci 379bf215546Sopenharmony_ci while (pnext) { 380bf215546Sopenharmony_ci switch ((int32_t)pnext->sType) { 381bf215546Sopenharmony_ci case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT: 382bf215546Sopenharmony_ci if (!vn_cs_renderer_protocol_has_extension(191 /* VK_EXT_vertex_attribute_divisor */)) 383bf215546Sopenharmony_ci break; 384bf215546Sopenharmony_ci size += vn_sizeof_simple_pointer(pnext); 385bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&pnext->sType); 386bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineVertexInputStateCreateInfo_pnext(pnext->pNext); 387bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineVertexInputDivisorStateCreateInfoEXT_self((const VkPipelineVertexInputDivisorStateCreateInfoEXT *)pnext); 388bf215546Sopenharmony_ci return size; 389bf215546Sopenharmony_ci default: 390bf215546Sopenharmony_ci /* ignore unknown/unsupported struct */ 391bf215546Sopenharmony_ci break; 392bf215546Sopenharmony_ci } 393bf215546Sopenharmony_ci pnext = pnext->pNext; 394bf215546Sopenharmony_ci } 395bf215546Sopenharmony_ci 396bf215546Sopenharmony_ci return vn_sizeof_simple_pointer(NULL); 397bf215546Sopenharmony_ci} 398bf215546Sopenharmony_ci 399bf215546Sopenharmony_cistatic inline size_t 400bf215546Sopenharmony_civn_sizeof_VkPipelineVertexInputStateCreateInfo_self(const VkPipelineVertexInputStateCreateInfo *val) 401bf215546Sopenharmony_ci{ 402bf215546Sopenharmony_ci size_t size = 0; 403bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 404bf215546Sopenharmony_ci size += vn_sizeof_VkFlags(&val->flags); 405bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->vertexBindingDescriptionCount); 406bf215546Sopenharmony_ci if (val->pVertexBindingDescriptions) { 407bf215546Sopenharmony_ci size += vn_sizeof_array_size(val->vertexBindingDescriptionCount); 408bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->vertexBindingDescriptionCount; i++) 409bf215546Sopenharmony_ci size += vn_sizeof_VkVertexInputBindingDescription(&val->pVertexBindingDescriptions[i]); 410bf215546Sopenharmony_ci } else { 411bf215546Sopenharmony_ci size += vn_sizeof_array_size(0); 412bf215546Sopenharmony_ci } 413bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->vertexAttributeDescriptionCount); 414bf215546Sopenharmony_ci if (val->pVertexAttributeDescriptions) { 415bf215546Sopenharmony_ci size += vn_sizeof_array_size(val->vertexAttributeDescriptionCount); 416bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->vertexAttributeDescriptionCount; i++) 417bf215546Sopenharmony_ci size += vn_sizeof_VkVertexInputAttributeDescription(&val->pVertexAttributeDescriptions[i]); 418bf215546Sopenharmony_ci } else { 419bf215546Sopenharmony_ci size += vn_sizeof_array_size(0); 420bf215546Sopenharmony_ci } 421bf215546Sopenharmony_ci return size; 422bf215546Sopenharmony_ci} 423bf215546Sopenharmony_ci 424bf215546Sopenharmony_cistatic inline size_t 425bf215546Sopenharmony_civn_sizeof_VkPipelineVertexInputStateCreateInfo(const VkPipelineVertexInputStateCreateInfo *val) 426bf215546Sopenharmony_ci{ 427bf215546Sopenharmony_ci size_t size = 0; 428bf215546Sopenharmony_ci 429bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&val->sType); 430bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineVertexInputStateCreateInfo_pnext(val->pNext); 431bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineVertexInputStateCreateInfo_self(val); 432bf215546Sopenharmony_ci 433bf215546Sopenharmony_ci return size; 434bf215546Sopenharmony_ci} 435bf215546Sopenharmony_ci 436bf215546Sopenharmony_cistatic inline void 437bf215546Sopenharmony_civn_encode_VkPipelineVertexInputStateCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val) 438bf215546Sopenharmony_ci{ 439bf215546Sopenharmony_ci const VkBaseInStructure *pnext = val; 440bf215546Sopenharmony_ci 441bf215546Sopenharmony_ci while (pnext) { 442bf215546Sopenharmony_ci switch ((int32_t)pnext->sType) { 443bf215546Sopenharmony_ci case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT: 444bf215546Sopenharmony_ci if (!vn_cs_renderer_protocol_has_extension(191 /* VK_EXT_vertex_attribute_divisor */)) 445bf215546Sopenharmony_ci break; 446bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, pnext); 447bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &pnext->sType); 448bf215546Sopenharmony_ci vn_encode_VkPipelineVertexInputStateCreateInfo_pnext(enc, pnext->pNext); 449bf215546Sopenharmony_ci vn_encode_VkPipelineVertexInputDivisorStateCreateInfoEXT_self(enc, (const VkPipelineVertexInputDivisorStateCreateInfoEXT *)pnext); 450bf215546Sopenharmony_ci return; 451bf215546Sopenharmony_ci default: 452bf215546Sopenharmony_ci /* ignore unknown/unsupported struct */ 453bf215546Sopenharmony_ci break; 454bf215546Sopenharmony_ci } 455bf215546Sopenharmony_ci pnext = pnext->pNext; 456bf215546Sopenharmony_ci } 457bf215546Sopenharmony_ci 458bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, NULL); 459bf215546Sopenharmony_ci} 460bf215546Sopenharmony_ci 461bf215546Sopenharmony_cistatic inline void 462bf215546Sopenharmony_civn_encode_VkPipelineVertexInputStateCreateInfo_self(struct vn_cs_encoder *enc, const VkPipelineVertexInputStateCreateInfo *val) 463bf215546Sopenharmony_ci{ 464bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 465bf215546Sopenharmony_ci vn_encode_VkFlags(enc, &val->flags); 466bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->vertexBindingDescriptionCount); 467bf215546Sopenharmony_ci if (val->pVertexBindingDescriptions) { 468bf215546Sopenharmony_ci vn_encode_array_size(enc, val->vertexBindingDescriptionCount); 469bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->vertexBindingDescriptionCount; i++) 470bf215546Sopenharmony_ci vn_encode_VkVertexInputBindingDescription(enc, &val->pVertexBindingDescriptions[i]); 471bf215546Sopenharmony_ci } else { 472bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 473bf215546Sopenharmony_ci } 474bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->vertexAttributeDescriptionCount); 475bf215546Sopenharmony_ci if (val->pVertexAttributeDescriptions) { 476bf215546Sopenharmony_ci vn_encode_array_size(enc, val->vertexAttributeDescriptionCount); 477bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->vertexAttributeDescriptionCount; i++) 478bf215546Sopenharmony_ci vn_encode_VkVertexInputAttributeDescription(enc, &val->pVertexAttributeDescriptions[i]); 479bf215546Sopenharmony_ci } else { 480bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 481bf215546Sopenharmony_ci } 482bf215546Sopenharmony_ci} 483bf215546Sopenharmony_ci 484bf215546Sopenharmony_cistatic inline void 485bf215546Sopenharmony_civn_encode_VkPipelineVertexInputStateCreateInfo(struct vn_cs_encoder *enc, const VkPipelineVertexInputStateCreateInfo *val) 486bf215546Sopenharmony_ci{ 487bf215546Sopenharmony_ci assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO); 488bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO }); 489bf215546Sopenharmony_ci vn_encode_VkPipelineVertexInputStateCreateInfo_pnext(enc, val->pNext); 490bf215546Sopenharmony_ci vn_encode_VkPipelineVertexInputStateCreateInfo_self(enc, val); 491bf215546Sopenharmony_ci} 492bf215546Sopenharmony_ci 493bf215546Sopenharmony_ci/* struct VkPipelineInputAssemblyStateCreateInfo chain */ 494bf215546Sopenharmony_ci 495bf215546Sopenharmony_cistatic inline size_t 496bf215546Sopenharmony_civn_sizeof_VkPipelineInputAssemblyStateCreateInfo_pnext(const void *val) 497bf215546Sopenharmony_ci{ 498bf215546Sopenharmony_ci /* no known/supported struct */ 499bf215546Sopenharmony_ci return vn_sizeof_simple_pointer(NULL); 500bf215546Sopenharmony_ci} 501bf215546Sopenharmony_ci 502bf215546Sopenharmony_cistatic inline size_t 503bf215546Sopenharmony_civn_sizeof_VkPipelineInputAssemblyStateCreateInfo_self(const VkPipelineInputAssemblyStateCreateInfo *val) 504bf215546Sopenharmony_ci{ 505bf215546Sopenharmony_ci size_t size = 0; 506bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 507bf215546Sopenharmony_ci size += vn_sizeof_VkFlags(&val->flags); 508bf215546Sopenharmony_ci size += vn_sizeof_VkPrimitiveTopology(&val->topology); 509bf215546Sopenharmony_ci size += vn_sizeof_VkBool32(&val->primitiveRestartEnable); 510bf215546Sopenharmony_ci return size; 511bf215546Sopenharmony_ci} 512bf215546Sopenharmony_ci 513bf215546Sopenharmony_cistatic inline size_t 514bf215546Sopenharmony_civn_sizeof_VkPipelineInputAssemblyStateCreateInfo(const VkPipelineInputAssemblyStateCreateInfo *val) 515bf215546Sopenharmony_ci{ 516bf215546Sopenharmony_ci size_t size = 0; 517bf215546Sopenharmony_ci 518bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&val->sType); 519bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineInputAssemblyStateCreateInfo_pnext(val->pNext); 520bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineInputAssemblyStateCreateInfo_self(val); 521bf215546Sopenharmony_ci 522bf215546Sopenharmony_ci return size; 523bf215546Sopenharmony_ci} 524bf215546Sopenharmony_ci 525bf215546Sopenharmony_cistatic inline void 526bf215546Sopenharmony_civn_encode_VkPipelineInputAssemblyStateCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val) 527bf215546Sopenharmony_ci{ 528bf215546Sopenharmony_ci /* no known/supported struct */ 529bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, NULL); 530bf215546Sopenharmony_ci} 531bf215546Sopenharmony_ci 532bf215546Sopenharmony_cistatic inline void 533bf215546Sopenharmony_civn_encode_VkPipelineInputAssemblyStateCreateInfo_self(struct vn_cs_encoder *enc, const VkPipelineInputAssemblyStateCreateInfo *val) 534bf215546Sopenharmony_ci{ 535bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 536bf215546Sopenharmony_ci vn_encode_VkFlags(enc, &val->flags); 537bf215546Sopenharmony_ci vn_encode_VkPrimitiveTopology(enc, &val->topology); 538bf215546Sopenharmony_ci vn_encode_VkBool32(enc, &val->primitiveRestartEnable); 539bf215546Sopenharmony_ci} 540bf215546Sopenharmony_ci 541bf215546Sopenharmony_cistatic inline void 542bf215546Sopenharmony_civn_encode_VkPipelineInputAssemblyStateCreateInfo(struct vn_cs_encoder *enc, const VkPipelineInputAssemblyStateCreateInfo *val) 543bf215546Sopenharmony_ci{ 544bf215546Sopenharmony_ci assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO); 545bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO }); 546bf215546Sopenharmony_ci vn_encode_VkPipelineInputAssemblyStateCreateInfo_pnext(enc, val->pNext); 547bf215546Sopenharmony_ci vn_encode_VkPipelineInputAssemblyStateCreateInfo_self(enc, val); 548bf215546Sopenharmony_ci} 549bf215546Sopenharmony_ci 550bf215546Sopenharmony_ci/* struct VkPipelineTessellationDomainOriginStateCreateInfo chain */ 551bf215546Sopenharmony_ci 552bf215546Sopenharmony_cistatic inline size_t 553bf215546Sopenharmony_civn_sizeof_VkPipelineTessellationDomainOriginStateCreateInfo_pnext(const void *val) 554bf215546Sopenharmony_ci{ 555bf215546Sopenharmony_ci /* no known/supported struct */ 556bf215546Sopenharmony_ci return vn_sizeof_simple_pointer(NULL); 557bf215546Sopenharmony_ci} 558bf215546Sopenharmony_ci 559bf215546Sopenharmony_cistatic inline size_t 560bf215546Sopenharmony_civn_sizeof_VkPipelineTessellationDomainOriginStateCreateInfo_self(const VkPipelineTessellationDomainOriginStateCreateInfo *val) 561bf215546Sopenharmony_ci{ 562bf215546Sopenharmony_ci size_t size = 0; 563bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 564bf215546Sopenharmony_ci size += vn_sizeof_VkTessellationDomainOrigin(&val->domainOrigin); 565bf215546Sopenharmony_ci return size; 566bf215546Sopenharmony_ci} 567bf215546Sopenharmony_ci 568bf215546Sopenharmony_cistatic inline size_t 569bf215546Sopenharmony_civn_sizeof_VkPipelineTessellationDomainOriginStateCreateInfo(const VkPipelineTessellationDomainOriginStateCreateInfo *val) 570bf215546Sopenharmony_ci{ 571bf215546Sopenharmony_ci size_t size = 0; 572bf215546Sopenharmony_ci 573bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&val->sType); 574bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineTessellationDomainOriginStateCreateInfo_pnext(val->pNext); 575bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineTessellationDomainOriginStateCreateInfo_self(val); 576bf215546Sopenharmony_ci 577bf215546Sopenharmony_ci return size; 578bf215546Sopenharmony_ci} 579bf215546Sopenharmony_ci 580bf215546Sopenharmony_cistatic inline void 581bf215546Sopenharmony_civn_encode_VkPipelineTessellationDomainOriginStateCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val) 582bf215546Sopenharmony_ci{ 583bf215546Sopenharmony_ci /* no known/supported struct */ 584bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, NULL); 585bf215546Sopenharmony_ci} 586bf215546Sopenharmony_ci 587bf215546Sopenharmony_cistatic inline void 588bf215546Sopenharmony_civn_encode_VkPipelineTessellationDomainOriginStateCreateInfo_self(struct vn_cs_encoder *enc, const VkPipelineTessellationDomainOriginStateCreateInfo *val) 589bf215546Sopenharmony_ci{ 590bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 591bf215546Sopenharmony_ci vn_encode_VkTessellationDomainOrigin(enc, &val->domainOrigin); 592bf215546Sopenharmony_ci} 593bf215546Sopenharmony_ci 594bf215546Sopenharmony_cistatic inline void 595bf215546Sopenharmony_civn_encode_VkPipelineTessellationDomainOriginStateCreateInfo(struct vn_cs_encoder *enc, const VkPipelineTessellationDomainOriginStateCreateInfo *val) 596bf215546Sopenharmony_ci{ 597bf215546Sopenharmony_ci assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO); 598bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO }); 599bf215546Sopenharmony_ci vn_encode_VkPipelineTessellationDomainOriginStateCreateInfo_pnext(enc, val->pNext); 600bf215546Sopenharmony_ci vn_encode_VkPipelineTessellationDomainOriginStateCreateInfo_self(enc, val); 601bf215546Sopenharmony_ci} 602bf215546Sopenharmony_ci 603bf215546Sopenharmony_ci/* struct VkPipelineTessellationStateCreateInfo chain */ 604bf215546Sopenharmony_ci 605bf215546Sopenharmony_cistatic inline size_t 606bf215546Sopenharmony_civn_sizeof_VkPipelineTessellationStateCreateInfo_pnext(const void *val) 607bf215546Sopenharmony_ci{ 608bf215546Sopenharmony_ci const VkBaseInStructure *pnext = val; 609bf215546Sopenharmony_ci size_t size = 0; 610bf215546Sopenharmony_ci 611bf215546Sopenharmony_ci while (pnext) { 612bf215546Sopenharmony_ci switch ((int32_t)pnext->sType) { 613bf215546Sopenharmony_ci case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO: 614bf215546Sopenharmony_ci size += vn_sizeof_simple_pointer(pnext); 615bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&pnext->sType); 616bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineTessellationStateCreateInfo_pnext(pnext->pNext); 617bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineTessellationDomainOriginStateCreateInfo_self((const VkPipelineTessellationDomainOriginStateCreateInfo *)pnext); 618bf215546Sopenharmony_ci return size; 619bf215546Sopenharmony_ci default: 620bf215546Sopenharmony_ci /* ignore unknown/unsupported struct */ 621bf215546Sopenharmony_ci break; 622bf215546Sopenharmony_ci } 623bf215546Sopenharmony_ci pnext = pnext->pNext; 624bf215546Sopenharmony_ci } 625bf215546Sopenharmony_ci 626bf215546Sopenharmony_ci return vn_sizeof_simple_pointer(NULL); 627bf215546Sopenharmony_ci} 628bf215546Sopenharmony_ci 629bf215546Sopenharmony_cistatic inline size_t 630bf215546Sopenharmony_civn_sizeof_VkPipelineTessellationStateCreateInfo_self(const VkPipelineTessellationStateCreateInfo *val) 631bf215546Sopenharmony_ci{ 632bf215546Sopenharmony_ci size_t size = 0; 633bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 634bf215546Sopenharmony_ci size += vn_sizeof_VkFlags(&val->flags); 635bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->patchControlPoints); 636bf215546Sopenharmony_ci return size; 637bf215546Sopenharmony_ci} 638bf215546Sopenharmony_ci 639bf215546Sopenharmony_cistatic inline size_t 640bf215546Sopenharmony_civn_sizeof_VkPipelineTessellationStateCreateInfo(const VkPipelineTessellationStateCreateInfo *val) 641bf215546Sopenharmony_ci{ 642bf215546Sopenharmony_ci size_t size = 0; 643bf215546Sopenharmony_ci 644bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&val->sType); 645bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineTessellationStateCreateInfo_pnext(val->pNext); 646bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineTessellationStateCreateInfo_self(val); 647bf215546Sopenharmony_ci 648bf215546Sopenharmony_ci return size; 649bf215546Sopenharmony_ci} 650bf215546Sopenharmony_ci 651bf215546Sopenharmony_cistatic inline void 652bf215546Sopenharmony_civn_encode_VkPipelineTessellationStateCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val) 653bf215546Sopenharmony_ci{ 654bf215546Sopenharmony_ci const VkBaseInStructure *pnext = val; 655bf215546Sopenharmony_ci 656bf215546Sopenharmony_ci while (pnext) { 657bf215546Sopenharmony_ci switch ((int32_t)pnext->sType) { 658bf215546Sopenharmony_ci case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO: 659bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, pnext); 660bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &pnext->sType); 661bf215546Sopenharmony_ci vn_encode_VkPipelineTessellationStateCreateInfo_pnext(enc, pnext->pNext); 662bf215546Sopenharmony_ci vn_encode_VkPipelineTessellationDomainOriginStateCreateInfo_self(enc, (const VkPipelineTessellationDomainOriginStateCreateInfo *)pnext); 663bf215546Sopenharmony_ci return; 664bf215546Sopenharmony_ci default: 665bf215546Sopenharmony_ci /* ignore unknown/unsupported struct */ 666bf215546Sopenharmony_ci break; 667bf215546Sopenharmony_ci } 668bf215546Sopenharmony_ci pnext = pnext->pNext; 669bf215546Sopenharmony_ci } 670bf215546Sopenharmony_ci 671bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, NULL); 672bf215546Sopenharmony_ci} 673bf215546Sopenharmony_ci 674bf215546Sopenharmony_cistatic inline void 675bf215546Sopenharmony_civn_encode_VkPipelineTessellationStateCreateInfo_self(struct vn_cs_encoder *enc, const VkPipelineTessellationStateCreateInfo *val) 676bf215546Sopenharmony_ci{ 677bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 678bf215546Sopenharmony_ci vn_encode_VkFlags(enc, &val->flags); 679bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->patchControlPoints); 680bf215546Sopenharmony_ci} 681bf215546Sopenharmony_ci 682bf215546Sopenharmony_cistatic inline void 683bf215546Sopenharmony_civn_encode_VkPipelineTessellationStateCreateInfo(struct vn_cs_encoder *enc, const VkPipelineTessellationStateCreateInfo *val) 684bf215546Sopenharmony_ci{ 685bf215546Sopenharmony_ci assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO); 686bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO }); 687bf215546Sopenharmony_ci vn_encode_VkPipelineTessellationStateCreateInfo_pnext(enc, val->pNext); 688bf215546Sopenharmony_ci vn_encode_VkPipelineTessellationStateCreateInfo_self(enc, val); 689bf215546Sopenharmony_ci} 690bf215546Sopenharmony_ci 691bf215546Sopenharmony_ci/* struct VkPipelineViewportStateCreateInfo chain */ 692bf215546Sopenharmony_ci 693bf215546Sopenharmony_cistatic inline size_t 694bf215546Sopenharmony_civn_sizeof_VkPipelineViewportStateCreateInfo_pnext(const void *val) 695bf215546Sopenharmony_ci{ 696bf215546Sopenharmony_ci /* no known/supported struct */ 697bf215546Sopenharmony_ci return vn_sizeof_simple_pointer(NULL); 698bf215546Sopenharmony_ci} 699bf215546Sopenharmony_ci 700bf215546Sopenharmony_cistatic inline size_t 701bf215546Sopenharmony_civn_sizeof_VkPipelineViewportStateCreateInfo_self(const VkPipelineViewportStateCreateInfo *val) 702bf215546Sopenharmony_ci{ 703bf215546Sopenharmony_ci size_t size = 0; 704bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 705bf215546Sopenharmony_ci size += vn_sizeof_VkFlags(&val->flags); 706bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->viewportCount); 707bf215546Sopenharmony_ci if (val->pViewports) { 708bf215546Sopenharmony_ci size += vn_sizeof_array_size(val->viewportCount); 709bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->viewportCount; i++) 710bf215546Sopenharmony_ci size += vn_sizeof_VkViewport(&val->pViewports[i]); 711bf215546Sopenharmony_ci } else { 712bf215546Sopenharmony_ci size += vn_sizeof_array_size(0); 713bf215546Sopenharmony_ci } 714bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->scissorCount); 715bf215546Sopenharmony_ci if (val->pScissors) { 716bf215546Sopenharmony_ci size += vn_sizeof_array_size(val->scissorCount); 717bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->scissorCount; i++) 718bf215546Sopenharmony_ci size += vn_sizeof_VkRect2D(&val->pScissors[i]); 719bf215546Sopenharmony_ci } else { 720bf215546Sopenharmony_ci size += vn_sizeof_array_size(0); 721bf215546Sopenharmony_ci } 722bf215546Sopenharmony_ci return size; 723bf215546Sopenharmony_ci} 724bf215546Sopenharmony_ci 725bf215546Sopenharmony_cistatic inline size_t 726bf215546Sopenharmony_civn_sizeof_VkPipelineViewportStateCreateInfo(const VkPipelineViewportStateCreateInfo *val) 727bf215546Sopenharmony_ci{ 728bf215546Sopenharmony_ci size_t size = 0; 729bf215546Sopenharmony_ci 730bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&val->sType); 731bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineViewportStateCreateInfo_pnext(val->pNext); 732bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineViewportStateCreateInfo_self(val); 733bf215546Sopenharmony_ci 734bf215546Sopenharmony_ci return size; 735bf215546Sopenharmony_ci} 736bf215546Sopenharmony_ci 737bf215546Sopenharmony_cistatic inline void 738bf215546Sopenharmony_civn_encode_VkPipelineViewportStateCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val) 739bf215546Sopenharmony_ci{ 740bf215546Sopenharmony_ci /* no known/supported struct */ 741bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, NULL); 742bf215546Sopenharmony_ci} 743bf215546Sopenharmony_ci 744bf215546Sopenharmony_cistatic inline void 745bf215546Sopenharmony_civn_encode_VkPipelineViewportStateCreateInfo_self(struct vn_cs_encoder *enc, const VkPipelineViewportStateCreateInfo *val) 746bf215546Sopenharmony_ci{ 747bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 748bf215546Sopenharmony_ci vn_encode_VkFlags(enc, &val->flags); 749bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->viewportCount); 750bf215546Sopenharmony_ci if (val->pViewports) { 751bf215546Sopenharmony_ci vn_encode_array_size(enc, val->viewportCount); 752bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->viewportCount; i++) 753bf215546Sopenharmony_ci vn_encode_VkViewport(enc, &val->pViewports[i]); 754bf215546Sopenharmony_ci } else { 755bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 756bf215546Sopenharmony_ci } 757bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->scissorCount); 758bf215546Sopenharmony_ci if (val->pScissors) { 759bf215546Sopenharmony_ci vn_encode_array_size(enc, val->scissorCount); 760bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->scissorCount; i++) 761bf215546Sopenharmony_ci vn_encode_VkRect2D(enc, &val->pScissors[i]); 762bf215546Sopenharmony_ci } else { 763bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 764bf215546Sopenharmony_ci } 765bf215546Sopenharmony_ci} 766bf215546Sopenharmony_ci 767bf215546Sopenharmony_cistatic inline void 768bf215546Sopenharmony_civn_encode_VkPipelineViewportStateCreateInfo(struct vn_cs_encoder *enc, const VkPipelineViewportStateCreateInfo *val) 769bf215546Sopenharmony_ci{ 770bf215546Sopenharmony_ci assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO); 771bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO }); 772bf215546Sopenharmony_ci vn_encode_VkPipelineViewportStateCreateInfo_pnext(enc, val->pNext); 773bf215546Sopenharmony_ci vn_encode_VkPipelineViewportStateCreateInfo_self(enc, val); 774bf215546Sopenharmony_ci} 775bf215546Sopenharmony_ci 776bf215546Sopenharmony_ci/* struct VkPipelineRasterizationConservativeStateCreateInfoEXT chain */ 777bf215546Sopenharmony_ci 778bf215546Sopenharmony_cistatic inline size_t 779bf215546Sopenharmony_civn_sizeof_VkPipelineRasterizationConservativeStateCreateInfoEXT_pnext(const void *val) 780bf215546Sopenharmony_ci{ 781bf215546Sopenharmony_ci /* no known/supported struct */ 782bf215546Sopenharmony_ci return vn_sizeof_simple_pointer(NULL); 783bf215546Sopenharmony_ci} 784bf215546Sopenharmony_ci 785bf215546Sopenharmony_cistatic inline size_t 786bf215546Sopenharmony_civn_sizeof_VkPipelineRasterizationConservativeStateCreateInfoEXT_self(const VkPipelineRasterizationConservativeStateCreateInfoEXT *val) 787bf215546Sopenharmony_ci{ 788bf215546Sopenharmony_ci size_t size = 0; 789bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 790bf215546Sopenharmony_ci size += vn_sizeof_VkFlags(&val->flags); 791bf215546Sopenharmony_ci size += vn_sizeof_VkConservativeRasterizationModeEXT(&val->conservativeRasterizationMode); 792bf215546Sopenharmony_ci size += vn_sizeof_float(&val->extraPrimitiveOverestimationSize); 793bf215546Sopenharmony_ci return size; 794bf215546Sopenharmony_ci} 795bf215546Sopenharmony_ci 796bf215546Sopenharmony_cistatic inline size_t 797bf215546Sopenharmony_civn_sizeof_VkPipelineRasterizationConservativeStateCreateInfoEXT(const VkPipelineRasterizationConservativeStateCreateInfoEXT *val) 798bf215546Sopenharmony_ci{ 799bf215546Sopenharmony_ci size_t size = 0; 800bf215546Sopenharmony_ci 801bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&val->sType); 802bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineRasterizationConservativeStateCreateInfoEXT_pnext(val->pNext); 803bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineRasterizationConservativeStateCreateInfoEXT_self(val); 804bf215546Sopenharmony_ci 805bf215546Sopenharmony_ci return size; 806bf215546Sopenharmony_ci} 807bf215546Sopenharmony_ci 808bf215546Sopenharmony_cistatic inline void 809bf215546Sopenharmony_civn_encode_VkPipelineRasterizationConservativeStateCreateInfoEXT_pnext(struct vn_cs_encoder *enc, const void *val) 810bf215546Sopenharmony_ci{ 811bf215546Sopenharmony_ci /* no known/supported struct */ 812bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, NULL); 813bf215546Sopenharmony_ci} 814bf215546Sopenharmony_ci 815bf215546Sopenharmony_cistatic inline void 816bf215546Sopenharmony_civn_encode_VkPipelineRasterizationConservativeStateCreateInfoEXT_self(struct vn_cs_encoder *enc, const VkPipelineRasterizationConservativeStateCreateInfoEXT *val) 817bf215546Sopenharmony_ci{ 818bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 819bf215546Sopenharmony_ci vn_encode_VkFlags(enc, &val->flags); 820bf215546Sopenharmony_ci vn_encode_VkConservativeRasterizationModeEXT(enc, &val->conservativeRasterizationMode); 821bf215546Sopenharmony_ci vn_encode_float(enc, &val->extraPrimitiveOverestimationSize); 822bf215546Sopenharmony_ci} 823bf215546Sopenharmony_ci 824bf215546Sopenharmony_cistatic inline void 825bf215546Sopenharmony_civn_encode_VkPipelineRasterizationConservativeStateCreateInfoEXT(struct vn_cs_encoder *enc, const VkPipelineRasterizationConservativeStateCreateInfoEXT *val) 826bf215546Sopenharmony_ci{ 827bf215546Sopenharmony_ci assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT); 828bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT }); 829bf215546Sopenharmony_ci vn_encode_VkPipelineRasterizationConservativeStateCreateInfoEXT_pnext(enc, val->pNext); 830bf215546Sopenharmony_ci vn_encode_VkPipelineRasterizationConservativeStateCreateInfoEXT_self(enc, val); 831bf215546Sopenharmony_ci} 832bf215546Sopenharmony_ci 833bf215546Sopenharmony_ci/* struct VkPipelineRasterizationStateStreamCreateInfoEXT chain */ 834bf215546Sopenharmony_ci 835bf215546Sopenharmony_cistatic inline size_t 836bf215546Sopenharmony_civn_sizeof_VkPipelineRasterizationStateStreamCreateInfoEXT_pnext(const void *val) 837bf215546Sopenharmony_ci{ 838bf215546Sopenharmony_ci /* no known/supported struct */ 839bf215546Sopenharmony_ci return vn_sizeof_simple_pointer(NULL); 840bf215546Sopenharmony_ci} 841bf215546Sopenharmony_ci 842bf215546Sopenharmony_cistatic inline size_t 843bf215546Sopenharmony_civn_sizeof_VkPipelineRasterizationStateStreamCreateInfoEXT_self(const VkPipelineRasterizationStateStreamCreateInfoEXT *val) 844bf215546Sopenharmony_ci{ 845bf215546Sopenharmony_ci size_t size = 0; 846bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 847bf215546Sopenharmony_ci size += vn_sizeof_VkFlags(&val->flags); 848bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->rasterizationStream); 849bf215546Sopenharmony_ci return size; 850bf215546Sopenharmony_ci} 851bf215546Sopenharmony_ci 852bf215546Sopenharmony_cistatic inline size_t 853bf215546Sopenharmony_civn_sizeof_VkPipelineRasterizationStateStreamCreateInfoEXT(const VkPipelineRasterizationStateStreamCreateInfoEXT *val) 854bf215546Sopenharmony_ci{ 855bf215546Sopenharmony_ci size_t size = 0; 856bf215546Sopenharmony_ci 857bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&val->sType); 858bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineRasterizationStateStreamCreateInfoEXT_pnext(val->pNext); 859bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineRasterizationStateStreamCreateInfoEXT_self(val); 860bf215546Sopenharmony_ci 861bf215546Sopenharmony_ci return size; 862bf215546Sopenharmony_ci} 863bf215546Sopenharmony_ci 864bf215546Sopenharmony_cistatic inline void 865bf215546Sopenharmony_civn_encode_VkPipelineRasterizationStateStreamCreateInfoEXT_pnext(struct vn_cs_encoder *enc, const void *val) 866bf215546Sopenharmony_ci{ 867bf215546Sopenharmony_ci /* no known/supported struct */ 868bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, NULL); 869bf215546Sopenharmony_ci} 870bf215546Sopenharmony_ci 871bf215546Sopenharmony_cistatic inline void 872bf215546Sopenharmony_civn_encode_VkPipelineRasterizationStateStreamCreateInfoEXT_self(struct vn_cs_encoder *enc, const VkPipelineRasterizationStateStreamCreateInfoEXT *val) 873bf215546Sopenharmony_ci{ 874bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 875bf215546Sopenharmony_ci vn_encode_VkFlags(enc, &val->flags); 876bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->rasterizationStream); 877bf215546Sopenharmony_ci} 878bf215546Sopenharmony_ci 879bf215546Sopenharmony_cistatic inline void 880bf215546Sopenharmony_civn_encode_VkPipelineRasterizationStateStreamCreateInfoEXT(struct vn_cs_encoder *enc, const VkPipelineRasterizationStateStreamCreateInfoEXT *val) 881bf215546Sopenharmony_ci{ 882bf215546Sopenharmony_ci assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT); 883bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT }); 884bf215546Sopenharmony_ci vn_encode_VkPipelineRasterizationStateStreamCreateInfoEXT_pnext(enc, val->pNext); 885bf215546Sopenharmony_ci vn_encode_VkPipelineRasterizationStateStreamCreateInfoEXT_self(enc, val); 886bf215546Sopenharmony_ci} 887bf215546Sopenharmony_ci 888bf215546Sopenharmony_ci/* struct VkPipelineRasterizationDepthClipStateCreateInfoEXT chain */ 889bf215546Sopenharmony_ci 890bf215546Sopenharmony_cistatic inline size_t 891bf215546Sopenharmony_civn_sizeof_VkPipelineRasterizationDepthClipStateCreateInfoEXT_pnext(const void *val) 892bf215546Sopenharmony_ci{ 893bf215546Sopenharmony_ci /* no known/supported struct */ 894bf215546Sopenharmony_ci return vn_sizeof_simple_pointer(NULL); 895bf215546Sopenharmony_ci} 896bf215546Sopenharmony_ci 897bf215546Sopenharmony_cistatic inline size_t 898bf215546Sopenharmony_civn_sizeof_VkPipelineRasterizationDepthClipStateCreateInfoEXT_self(const VkPipelineRasterizationDepthClipStateCreateInfoEXT *val) 899bf215546Sopenharmony_ci{ 900bf215546Sopenharmony_ci size_t size = 0; 901bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 902bf215546Sopenharmony_ci size += vn_sizeof_VkFlags(&val->flags); 903bf215546Sopenharmony_ci size += vn_sizeof_VkBool32(&val->depthClipEnable); 904bf215546Sopenharmony_ci return size; 905bf215546Sopenharmony_ci} 906bf215546Sopenharmony_ci 907bf215546Sopenharmony_cistatic inline size_t 908bf215546Sopenharmony_civn_sizeof_VkPipelineRasterizationDepthClipStateCreateInfoEXT(const VkPipelineRasterizationDepthClipStateCreateInfoEXT *val) 909bf215546Sopenharmony_ci{ 910bf215546Sopenharmony_ci size_t size = 0; 911bf215546Sopenharmony_ci 912bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&val->sType); 913bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineRasterizationDepthClipStateCreateInfoEXT_pnext(val->pNext); 914bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineRasterizationDepthClipStateCreateInfoEXT_self(val); 915bf215546Sopenharmony_ci 916bf215546Sopenharmony_ci return size; 917bf215546Sopenharmony_ci} 918bf215546Sopenharmony_ci 919bf215546Sopenharmony_cistatic inline void 920bf215546Sopenharmony_civn_encode_VkPipelineRasterizationDepthClipStateCreateInfoEXT_pnext(struct vn_cs_encoder *enc, const void *val) 921bf215546Sopenharmony_ci{ 922bf215546Sopenharmony_ci /* no known/supported struct */ 923bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, NULL); 924bf215546Sopenharmony_ci} 925bf215546Sopenharmony_ci 926bf215546Sopenharmony_cistatic inline void 927bf215546Sopenharmony_civn_encode_VkPipelineRasterizationDepthClipStateCreateInfoEXT_self(struct vn_cs_encoder *enc, const VkPipelineRasterizationDepthClipStateCreateInfoEXT *val) 928bf215546Sopenharmony_ci{ 929bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 930bf215546Sopenharmony_ci vn_encode_VkFlags(enc, &val->flags); 931bf215546Sopenharmony_ci vn_encode_VkBool32(enc, &val->depthClipEnable); 932bf215546Sopenharmony_ci} 933bf215546Sopenharmony_ci 934bf215546Sopenharmony_cistatic inline void 935bf215546Sopenharmony_civn_encode_VkPipelineRasterizationDepthClipStateCreateInfoEXT(struct vn_cs_encoder *enc, const VkPipelineRasterizationDepthClipStateCreateInfoEXT *val) 936bf215546Sopenharmony_ci{ 937bf215546Sopenharmony_ci assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT); 938bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT }); 939bf215546Sopenharmony_ci vn_encode_VkPipelineRasterizationDepthClipStateCreateInfoEXT_pnext(enc, val->pNext); 940bf215546Sopenharmony_ci vn_encode_VkPipelineRasterizationDepthClipStateCreateInfoEXT_self(enc, val); 941bf215546Sopenharmony_ci} 942bf215546Sopenharmony_ci 943bf215546Sopenharmony_ci/* struct VkPipelineRasterizationLineStateCreateInfoEXT chain */ 944bf215546Sopenharmony_ci 945bf215546Sopenharmony_cistatic inline size_t 946bf215546Sopenharmony_civn_sizeof_VkPipelineRasterizationLineStateCreateInfoEXT_pnext(const void *val) 947bf215546Sopenharmony_ci{ 948bf215546Sopenharmony_ci /* no known/supported struct */ 949bf215546Sopenharmony_ci return vn_sizeof_simple_pointer(NULL); 950bf215546Sopenharmony_ci} 951bf215546Sopenharmony_ci 952bf215546Sopenharmony_cistatic inline size_t 953bf215546Sopenharmony_civn_sizeof_VkPipelineRasterizationLineStateCreateInfoEXT_self(const VkPipelineRasterizationLineStateCreateInfoEXT *val) 954bf215546Sopenharmony_ci{ 955bf215546Sopenharmony_ci size_t size = 0; 956bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 957bf215546Sopenharmony_ci size += vn_sizeof_VkLineRasterizationModeEXT(&val->lineRasterizationMode); 958bf215546Sopenharmony_ci size += vn_sizeof_VkBool32(&val->stippledLineEnable); 959bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->lineStippleFactor); 960bf215546Sopenharmony_ci size += vn_sizeof_uint16_t(&val->lineStipplePattern); 961bf215546Sopenharmony_ci return size; 962bf215546Sopenharmony_ci} 963bf215546Sopenharmony_ci 964bf215546Sopenharmony_cistatic inline size_t 965bf215546Sopenharmony_civn_sizeof_VkPipelineRasterizationLineStateCreateInfoEXT(const VkPipelineRasterizationLineStateCreateInfoEXT *val) 966bf215546Sopenharmony_ci{ 967bf215546Sopenharmony_ci size_t size = 0; 968bf215546Sopenharmony_ci 969bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&val->sType); 970bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineRasterizationLineStateCreateInfoEXT_pnext(val->pNext); 971bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineRasterizationLineStateCreateInfoEXT_self(val); 972bf215546Sopenharmony_ci 973bf215546Sopenharmony_ci return size; 974bf215546Sopenharmony_ci} 975bf215546Sopenharmony_ci 976bf215546Sopenharmony_cistatic inline void 977bf215546Sopenharmony_civn_encode_VkPipelineRasterizationLineStateCreateInfoEXT_pnext(struct vn_cs_encoder *enc, const void *val) 978bf215546Sopenharmony_ci{ 979bf215546Sopenharmony_ci /* no known/supported struct */ 980bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, NULL); 981bf215546Sopenharmony_ci} 982bf215546Sopenharmony_ci 983bf215546Sopenharmony_cistatic inline void 984bf215546Sopenharmony_civn_encode_VkPipelineRasterizationLineStateCreateInfoEXT_self(struct vn_cs_encoder *enc, const VkPipelineRasterizationLineStateCreateInfoEXT *val) 985bf215546Sopenharmony_ci{ 986bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 987bf215546Sopenharmony_ci vn_encode_VkLineRasterizationModeEXT(enc, &val->lineRasterizationMode); 988bf215546Sopenharmony_ci vn_encode_VkBool32(enc, &val->stippledLineEnable); 989bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->lineStippleFactor); 990bf215546Sopenharmony_ci vn_encode_uint16_t(enc, &val->lineStipplePattern); 991bf215546Sopenharmony_ci} 992bf215546Sopenharmony_ci 993bf215546Sopenharmony_cistatic inline void 994bf215546Sopenharmony_civn_encode_VkPipelineRasterizationLineStateCreateInfoEXT(struct vn_cs_encoder *enc, const VkPipelineRasterizationLineStateCreateInfoEXT *val) 995bf215546Sopenharmony_ci{ 996bf215546Sopenharmony_ci assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT); 997bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT }); 998bf215546Sopenharmony_ci vn_encode_VkPipelineRasterizationLineStateCreateInfoEXT_pnext(enc, val->pNext); 999bf215546Sopenharmony_ci vn_encode_VkPipelineRasterizationLineStateCreateInfoEXT_self(enc, val); 1000bf215546Sopenharmony_ci} 1001bf215546Sopenharmony_ci 1002bf215546Sopenharmony_ci/* struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT chain */ 1003bf215546Sopenharmony_ci 1004bf215546Sopenharmony_cistatic inline size_t 1005bf215546Sopenharmony_civn_sizeof_VkPipelineRasterizationProvokingVertexStateCreateInfoEXT_pnext(const void *val) 1006bf215546Sopenharmony_ci{ 1007bf215546Sopenharmony_ci /* no known/supported struct */ 1008bf215546Sopenharmony_ci return vn_sizeof_simple_pointer(NULL); 1009bf215546Sopenharmony_ci} 1010bf215546Sopenharmony_ci 1011bf215546Sopenharmony_cistatic inline size_t 1012bf215546Sopenharmony_civn_sizeof_VkPipelineRasterizationProvokingVertexStateCreateInfoEXT_self(const VkPipelineRasterizationProvokingVertexStateCreateInfoEXT *val) 1013bf215546Sopenharmony_ci{ 1014bf215546Sopenharmony_ci size_t size = 0; 1015bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 1016bf215546Sopenharmony_ci size += vn_sizeof_VkProvokingVertexModeEXT(&val->provokingVertexMode); 1017bf215546Sopenharmony_ci return size; 1018bf215546Sopenharmony_ci} 1019bf215546Sopenharmony_ci 1020bf215546Sopenharmony_cistatic inline size_t 1021bf215546Sopenharmony_civn_sizeof_VkPipelineRasterizationProvokingVertexStateCreateInfoEXT(const VkPipelineRasterizationProvokingVertexStateCreateInfoEXT *val) 1022bf215546Sopenharmony_ci{ 1023bf215546Sopenharmony_ci size_t size = 0; 1024bf215546Sopenharmony_ci 1025bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&val->sType); 1026bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineRasterizationProvokingVertexStateCreateInfoEXT_pnext(val->pNext); 1027bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineRasterizationProvokingVertexStateCreateInfoEXT_self(val); 1028bf215546Sopenharmony_ci 1029bf215546Sopenharmony_ci return size; 1030bf215546Sopenharmony_ci} 1031bf215546Sopenharmony_ci 1032bf215546Sopenharmony_cistatic inline void 1033bf215546Sopenharmony_civn_encode_VkPipelineRasterizationProvokingVertexStateCreateInfoEXT_pnext(struct vn_cs_encoder *enc, const void *val) 1034bf215546Sopenharmony_ci{ 1035bf215546Sopenharmony_ci /* no known/supported struct */ 1036bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, NULL); 1037bf215546Sopenharmony_ci} 1038bf215546Sopenharmony_ci 1039bf215546Sopenharmony_cistatic inline void 1040bf215546Sopenharmony_civn_encode_VkPipelineRasterizationProvokingVertexStateCreateInfoEXT_self(struct vn_cs_encoder *enc, const VkPipelineRasterizationProvokingVertexStateCreateInfoEXT *val) 1041bf215546Sopenharmony_ci{ 1042bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 1043bf215546Sopenharmony_ci vn_encode_VkProvokingVertexModeEXT(enc, &val->provokingVertexMode); 1044bf215546Sopenharmony_ci} 1045bf215546Sopenharmony_ci 1046bf215546Sopenharmony_cistatic inline void 1047bf215546Sopenharmony_civn_encode_VkPipelineRasterizationProvokingVertexStateCreateInfoEXT(struct vn_cs_encoder *enc, const VkPipelineRasterizationProvokingVertexStateCreateInfoEXT *val) 1048bf215546Sopenharmony_ci{ 1049bf215546Sopenharmony_ci assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT); 1050bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT }); 1051bf215546Sopenharmony_ci vn_encode_VkPipelineRasterizationProvokingVertexStateCreateInfoEXT_pnext(enc, val->pNext); 1052bf215546Sopenharmony_ci vn_encode_VkPipelineRasterizationProvokingVertexStateCreateInfoEXT_self(enc, val); 1053bf215546Sopenharmony_ci} 1054bf215546Sopenharmony_ci 1055bf215546Sopenharmony_ci/* struct VkPipelineRasterizationStateCreateInfo chain */ 1056bf215546Sopenharmony_ci 1057bf215546Sopenharmony_cistatic inline size_t 1058bf215546Sopenharmony_civn_sizeof_VkPipelineRasterizationStateCreateInfo_pnext(const void *val) 1059bf215546Sopenharmony_ci{ 1060bf215546Sopenharmony_ci const VkBaseInStructure *pnext = val; 1061bf215546Sopenharmony_ci size_t size = 0; 1062bf215546Sopenharmony_ci 1063bf215546Sopenharmony_ci while (pnext) { 1064bf215546Sopenharmony_ci switch ((int32_t)pnext->sType) { 1065bf215546Sopenharmony_ci case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT: 1066bf215546Sopenharmony_ci if (!vn_cs_renderer_protocol_has_extension(102 /* VK_EXT_conservative_rasterization */)) 1067bf215546Sopenharmony_ci break; 1068bf215546Sopenharmony_ci size += vn_sizeof_simple_pointer(pnext); 1069bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&pnext->sType); 1070bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineRasterizationStateCreateInfo_pnext(pnext->pNext); 1071bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineRasterizationConservativeStateCreateInfoEXT_self((const VkPipelineRasterizationConservativeStateCreateInfoEXT *)pnext); 1072bf215546Sopenharmony_ci return size; 1073bf215546Sopenharmony_ci case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT: 1074bf215546Sopenharmony_ci if (!vn_cs_renderer_protocol_has_extension(29 /* VK_EXT_transform_feedback */)) 1075bf215546Sopenharmony_ci break; 1076bf215546Sopenharmony_ci size += vn_sizeof_simple_pointer(pnext); 1077bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&pnext->sType); 1078bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineRasterizationStateCreateInfo_pnext(pnext->pNext); 1079bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineRasterizationStateStreamCreateInfoEXT_self((const VkPipelineRasterizationStateStreamCreateInfoEXT *)pnext); 1080bf215546Sopenharmony_ci return size; 1081bf215546Sopenharmony_ci case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT: 1082bf215546Sopenharmony_ci if (!vn_cs_renderer_protocol_has_extension(103 /* VK_EXT_depth_clip_enable */)) 1083bf215546Sopenharmony_ci break; 1084bf215546Sopenharmony_ci size += vn_sizeof_simple_pointer(pnext); 1085bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&pnext->sType); 1086bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineRasterizationStateCreateInfo_pnext(pnext->pNext); 1087bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineRasterizationDepthClipStateCreateInfoEXT_self((const VkPipelineRasterizationDepthClipStateCreateInfoEXT *)pnext); 1088bf215546Sopenharmony_ci return size; 1089bf215546Sopenharmony_ci case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT: 1090bf215546Sopenharmony_ci if (!vn_cs_renderer_protocol_has_extension(260 /* VK_EXT_line_rasterization */)) 1091bf215546Sopenharmony_ci break; 1092bf215546Sopenharmony_ci size += vn_sizeof_simple_pointer(pnext); 1093bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&pnext->sType); 1094bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineRasterizationStateCreateInfo_pnext(pnext->pNext); 1095bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineRasterizationLineStateCreateInfoEXT_self((const VkPipelineRasterizationLineStateCreateInfoEXT *)pnext); 1096bf215546Sopenharmony_ci return size; 1097bf215546Sopenharmony_ci case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT: 1098bf215546Sopenharmony_ci if (!vn_cs_renderer_protocol_has_extension(255 /* VK_EXT_provoking_vertex */)) 1099bf215546Sopenharmony_ci break; 1100bf215546Sopenharmony_ci size += vn_sizeof_simple_pointer(pnext); 1101bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&pnext->sType); 1102bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineRasterizationStateCreateInfo_pnext(pnext->pNext); 1103bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineRasterizationProvokingVertexStateCreateInfoEXT_self((const VkPipelineRasterizationProvokingVertexStateCreateInfoEXT *)pnext); 1104bf215546Sopenharmony_ci return size; 1105bf215546Sopenharmony_ci default: 1106bf215546Sopenharmony_ci /* ignore unknown/unsupported struct */ 1107bf215546Sopenharmony_ci break; 1108bf215546Sopenharmony_ci } 1109bf215546Sopenharmony_ci pnext = pnext->pNext; 1110bf215546Sopenharmony_ci } 1111bf215546Sopenharmony_ci 1112bf215546Sopenharmony_ci return vn_sizeof_simple_pointer(NULL); 1113bf215546Sopenharmony_ci} 1114bf215546Sopenharmony_ci 1115bf215546Sopenharmony_cistatic inline size_t 1116bf215546Sopenharmony_civn_sizeof_VkPipelineRasterizationStateCreateInfo_self(const VkPipelineRasterizationStateCreateInfo *val) 1117bf215546Sopenharmony_ci{ 1118bf215546Sopenharmony_ci size_t size = 0; 1119bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 1120bf215546Sopenharmony_ci size += vn_sizeof_VkFlags(&val->flags); 1121bf215546Sopenharmony_ci size += vn_sizeof_VkBool32(&val->depthClampEnable); 1122bf215546Sopenharmony_ci size += vn_sizeof_VkBool32(&val->rasterizerDiscardEnable); 1123bf215546Sopenharmony_ci size += vn_sizeof_VkPolygonMode(&val->polygonMode); 1124bf215546Sopenharmony_ci size += vn_sizeof_VkFlags(&val->cullMode); 1125bf215546Sopenharmony_ci size += vn_sizeof_VkFrontFace(&val->frontFace); 1126bf215546Sopenharmony_ci size += vn_sizeof_VkBool32(&val->depthBiasEnable); 1127bf215546Sopenharmony_ci size += vn_sizeof_float(&val->depthBiasConstantFactor); 1128bf215546Sopenharmony_ci size += vn_sizeof_float(&val->depthBiasClamp); 1129bf215546Sopenharmony_ci size += vn_sizeof_float(&val->depthBiasSlopeFactor); 1130bf215546Sopenharmony_ci size += vn_sizeof_float(&val->lineWidth); 1131bf215546Sopenharmony_ci return size; 1132bf215546Sopenharmony_ci} 1133bf215546Sopenharmony_ci 1134bf215546Sopenharmony_cistatic inline size_t 1135bf215546Sopenharmony_civn_sizeof_VkPipelineRasterizationStateCreateInfo(const VkPipelineRasterizationStateCreateInfo *val) 1136bf215546Sopenharmony_ci{ 1137bf215546Sopenharmony_ci size_t size = 0; 1138bf215546Sopenharmony_ci 1139bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&val->sType); 1140bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineRasterizationStateCreateInfo_pnext(val->pNext); 1141bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineRasterizationStateCreateInfo_self(val); 1142bf215546Sopenharmony_ci 1143bf215546Sopenharmony_ci return size; 1144bf215546Sopenharmony_ci} 1145bf215546Sopenharmony_ci 1146bf215546Sopenharmony_cistatic inline void 1147bf215546Sopenharmony_civn_encode_VkPipelineRasterizationStateCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val) 1148bf215546Sopenharmony_ci{ 1149bf215546Sopenharmony_ci const VkBaseInStructure *pnext = val; 1150bf215546Sopenharmony_ci 1151bf215546Sopenharmony_ci while (pnext) { 1152bf215546Sopenharmony_ci switch ((int32_t)pnext->sType) { 1153bf215546Sopenharmony_ci case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT: 1154bf215546Sopenharmony_ci if (!vn_cs_renderer_protocol_has_extension(102 /* VK_EXT_conservative_rasterization */)) 1155bf215546Sopenharmony_ci break; 1156bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, pnext); 1157bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &pnext->sType); 1158bf215546Sopenharmony_ci vn_encode_VkPipelineRasterizationStateCreateInfo_pnext(enc, pnext->pNext); 1159bf215546Sopenharmony_ci vn_encode_VkPipelineRasterizationConservativeStateCreateInfoEXT_self(enc, (const VkPipelineRasterizationConservativeStateCreateInfoEXT *)pnext); 1160bf215546Sopenharmony_ci return; 1161bf215546Sopenharmony_ci case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT: 1162bf215546Sopenharmony_ci if (!vn_cs_renderer_protocol_has_extension(29 /* VK_EXT_transform_feedback */)) 1163bf215546Sopenharmony_ci break; 1164bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, pnext); 1165bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &pnext->sType); 1166bf215546Sopenharmony_ci vn_encode_VkPipelineRasterizationStateCreateInfo_pnext(enc, pnext->pNext); 1167bf215546Sopenharmony_ci vn_encode_VkPipelineRasterizationStateStreamCreateInfoEXT_self(enc, (const VkPipelineRasterizationStateStreamCreateInfoEXT *)pnext); 1168bf215546Sopenharmony_ci return; 1169bf215546Sopenharmony_ci case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT: 1170bf215546Sopenharmony_ci if (!vn_cs_renderer_protocol_has_extension(103 /* VK_EXT_depth_clip_enable */)) 1171bf215546Sopenharmony_ci break; 1172bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, pnext); 1173bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &pnext->sType); 1174bf215546Sopenharmony_ci vn_encode_VkPipelineRasterizationStateCreateInfo_pnext(enc, pnext->pNext); 1175bf215546Sopenharmony_ci vn_encode_VkPipelineRasterizationDepthClipStateCreateInfoEXT_self(enc, (const VkPipelineRasterizationDepthClipStateCreateInfoEXT *)pnext); 1176bf215546Sopenharmony_ci return; 1177bf215546Sopenharmony_ci case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT: 1178bf215546Sopenharmony_ci if (!vn_cs_renderer_protocol_has_extension(260 /* VK_EXT_line_rasterization */)) 1179bf215546Sopenharmony_ci break; 1180bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, pnext); 1181bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &pnext->sType); 1182bf215546Sopenharmony_ci vn_encode_VkPipelineRasterizationStateCreateInfo_pnext(enc, pnext->pNext); 1183bf215546Sopenharmony_ci vn_encode_VkPipelineRasterizationLineStateCreateInfoEXT_self(enc, (const VkPipelineRasterizationLineStateCreateInfoEXT *)pnext); 1184bf215546Sopenharmony_ci return; 1185bf215546Sopenharmony_ci case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT: 1186bf215546Sopenharmony_ci if (!vn_cs_renderer_protocol_has_extension(255 /* VK_EXT_provoking_vertex */)) 1187bf215546Sopenharmony_ci break; 1188bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, pnext); 1189bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &pnext->sType); 1190bf215546Sopenharmony_ci vn_encode_VkPipelineRasterizationStateCreateInfo_pnext(enc, pnext->pNext); 1191bf215546Sopenharmony_ci vn_encode_VkPipelineRasterizationProvokingVertexStateCreateInfoEXT_self(enc, (const VkPipelineRasterizationProvokingVertexStateCreateInfoEXT *)pnext); 1192bf215546Sopenharmony_ci return; 1193bf215546Sopenharmony_ci default: 1194bf215546Sopenharmony_ci /* ignore unknown/unsupported struct */ 1195bf215546Sopenharmony_ci break; 1196bf215546Sopenharmony_ci } 1197bf215546Sopenharmony_ci pnext = pnext->pNext; 1198bf215546Sopenharmony_ci } 1199bf215546Sopenharmony_ci 1200bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, NULL); 1201bf215546Sopenharmony_ci} 1202bf215546Sopenharmony_ci 1203bf215546Sopenharmony_cistatic inline void 1204bf215546Sopenharmony_civn_encode_VkPipelineRasterizationStateCreateInfo_self(struct vn_cs_encoder *enc, const VkPipelineRasterizationStateCreateInfo *val) 1205bf215546Sopenharmony_ci{ 1206bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 1207bf215546Sopenharmony_ci vn_encode_VkFlags(enc, &val->flags); 1208bf215546Sopenharmony_ci vn_encode_VkBool32(enc, &val->depthClampEnable); 1209bf215546Sopenharmony_ci vn_encode_VkBool32(enc, &val->rasterizerDiscardEnable); 1210bf215546Sopenharmony_ci vn_encode_VkPolygonMode(enc, &val->polygonMode); 1211bf215546Sopenharmony_ci vn_encode_VkFlags(enc, &val->cullMode); 1212bf215546Sopenharmony_ci vn_encode_VkFrontFace(enc, &val->frontFace); 1213bf215546Sopenharmony_ci vn_encode_VkBool32(enc, &val->depthBiasEnable); 1214bf215546Sopenharmony_ci vn_encode_float(enc, &val->depthBiasConstantFactor); 1215bf215546Sopenharmony_ci vn_encode_float(enc, &val->depthBiasClamp); 1216bf215546Sopenharmony_ci vn_encode_float(enc, &val->depthBiasSlopeFactor); 1217bf215546Sopenharmony_ci vn_encode_float(enc, &val->lineWidth); 1218bf215546Sopenharmony_ci} 1219bf215546Sopenharmony_ci 1220bf215546Sopenharmony_cistatic inline void 1221bf215546Sopenharmony_civn_encode_VkPipelineRasterizationStateCreateInfo(struct vn_cs_encoder *enc, const VkPipelineRasterizationStateCreateInfo *val) 1222bf215546Sopenharmony_ci{ 1223bf215546Sopenharmony_ci assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO); 1224bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO }); 1225bf215546Sopenharmony_ci vn_encode_VkPipelineRasterizationStateCreateInfo_pnext(enc, val->pNext); 1226bf215546Sopenharmony_ci vn_encode_VkPipelineRasterizationStateCreateInfo_self(enc, val); 1227bf215546Sopenharmony_ci} 1228bf215546Sopenharmony_ci 1229bf215546Sopenharmony_ci/* struct VkPipelineMultisampleStateCreateInfo chain */ 1230bf215546Sopenharmony_ci 1231bf215546Sopenharmony_cistatic inline size_t 1232bf215546Sopenharmony_civn_sizeof_VkPipelineMultisampleStateCreateInfo_pnext(const void *val) 1233bf215546Sopenharmony_ci{ 1234bf215546Sopenharmony_ci /* no known/supported struct */ 1235bf215546Sopenharmony_ci return vn_sizeof_simple_pointer(NULL); 1236bf215546Sopenharmony_ci} 1237bf215546Sopenharmony_ci 1238bf215546Sopenharmony_cistatic inline size_t 1239bf215546Sopenharmony_civn_sizeof_VkPipelineMultisampleStateCreateInfo_self(const VkPipelineMultisampleStateCreateInfo *val) 1240bf215546Sopenharmony_ci{ 1241bf215546Sopenharmony_ci size_t size = 0; 1242bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 1243bf215546Sopenharmony_ci size += vn_sizeof_VkFlags(&val->flags); 1244bf215546Sopenharmony_ci size += vn_sizeof_VkSampleCountFlagBits(&val->rasterizationSamples); 1245bf215546Sopenharmony_ci size += vn_sizeof_VkBool32(&val->sampleShadingEnable); 1246bf215546Sopenharmony_ci size += vn_sizeof_float(&val->minSampleShading); 1247bf215546Sopenharmony_ci if (val->pSampleMask) { 1248bf215546Sopenharmony_ci size += vn_sizeof_array_size((val->rasterizationSamples + 31) / 32); 1249bf215546Sopenharmony_ci size += vn_sizeof_VkSampleMask_array(val->pSampleMask, (val->rasterizationSamples + 31) / 32); 1250bf215546Sopenharmony_ci } else { 1251bf215546Sopenharmony_ci size += vn_sizeof_array_size(0); 1252bf215546Sopenharmony_ci } 1253bf215546Sopenharmony_ci size += vn_sizeof_VkBool32(&val->alphaToCoverageEnable); 1254bf215546Sopenharmony_ci size += vn_sizeof_VkBool32(&val->alphaToOneEnable); 1255bf215546Sopenharmony_ci return size; 1256bf215546Sopenharmony_ci} 1257bf215546Sopenharmony_ci 1258bf215546Sopenharmony_cistatic inline size_t 1259bf215546Sopenharmony_civn_sizeof_VkPipelineMultisampleStateCreateInfo(const VkPipelineMultisampleStateCreateInfo *val) 1260bf215546Sopenharmony_ci{ 1261bf215546Sopenharmony_ci size_t size = 0; 1262bf215546Sopenharmony_ci 1263bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&val->sType); 1264bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineMultisampleStateCreateInfo_pnext(val->pNext); 1265bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineMultisampleStateCreateInfo_self(val); 1266bf215546Sopenharmony_ci 1267bf215546Sopenharmony_ci return size; 1268bf215546Sopenharmony_ci} 1269bf215546Sopenharmony_ci 1270bf215546Sopenharmony_cistatic inline void 1271bf215546Sopenharmony_civn_encode_VkPipelineMultisampleStateCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val) 1272bf215546Sopenharmony_ci{ 1273bf215546Sopenharmony_ci /* no known/supported struct */ 1274bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, NULL); 1275bf215546Sopenharmony_ci} 1276bf215546Sopenharmony_ci 1277bf215546Sopenharmony_cistatic inline void 1278bf215546Sopenharmony_civn_encode_VkPipelineMultisampleStateCreateInfo_self(struct vn_cs_encoder *enc, const VkPipelineMultisampleStateCreateInfo *val) 1279bf215546Sopenharmony_ci{ 1280bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 1281bf215546Sopenharmony_ci vn_encode_VkFlags(enc, &val->flags); 1282bf215546Sopenharmony_ci vn_encode_VkSampleCountFlagBits(enc, &val->rasterizationSamples); 1283bf215546Sopenharmony_ci vn_encode_VkBool32(enc, &val->sampleShadingEnable); 1284bf215546Sopenharmony_ci vn_encode_float(enc, &val->minSampleShading); 1285bf215546Sopenharmony_ci if (val->pSampleMask) { 1286bf215546Sopenharmony_ci vn_encode_array_size(enc, (val->rasterizationSamples + 31) / 32); 1287bf215546Sopenharmony_ci vn_encode_VkSampleMask_array(enc, val->pSampleMask, (val->rasterizationSamples + 31) / 32); 1288bf215546Sopenharmony_ci } else { 1289bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 1290bf215546Sopenharmony_ci } 1291bf215546Sopenharmony_ci vn_encode_VkBool32(enc, &val->alphaToCoverageEnable); 1292bf215546Sopenharmony_ci vn_encode_VkBool32(enc, &val->alphaToOneEnable); 1293bf215546Sopenharmony_ci} 1294bf215546Sopenharmony_ci 1295bf215546Sopenharmony_cistatic inline void 1296bf215546Sopenharmony_civn_encode_VkPipelineMultisampleStateCreateInfo(struct vn_cs_encoder *enc, const VkPipelineMultisampleStateCreateInfo *val) 1297bf215546Sopenharmony_ci{ 1298bf215546Sopenharmony_ci assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO); 1299bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO }); 1300bf215546Sopenharmony_ci vn_encode_VkPipelineMultisampleStateCreateInfo_pnext(enc, val->pNext); 1301bf215546Sopenharmony_ci vn_encode_VkPipelineMultisampleStateCreateInfo_self(enc, val); 1302bf215546Sopenharmony_ci} 1303bf215546Sopenharmony_ci 1304bf215546Sopenharmony_ci/* struct VkStencilOpState */ 1305bf215546Sopenharmony_ci 1306bf215546Sopenharmony_cistatic inline size_t 1307bf215546Sopenharmony_civn_sizeof_VkStencilOpState(const VkStencilOpState *val) 1308bf215546Sopenharmony_ci{ 1309bf215546Sopenharmony_ci size_t size = 0; 1310bf215546Sopenharmony_ci size += vn_sizeof_VkStencilOp(&val->failOp); 1311bf215546Sopenharmony_ci size += vn_sizeof_VkStencilOp(&val->passOp); 1312bf215546Sopenharmony_ci size += vn_sizeof_VkStencilOp(&val->depthFailOp); 1313bf215546Sopenharmony_ci size += vn_sizeof_VkCompareOp(&val->compareOp); 1314bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->compareMask); 1315bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->writeMask); 1316bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->reference); 1317bf215546Sopenharmony_ci return size; 1318bf215546Sopenharmony_ci} 1319bf215546Sopenharmony_ci 1320bf215546Sopenharmony_cistatic inline void 1321bf215546Sopenharmony_civn_encode_VkStencilOpState(struct vn_cs_encoder *enc, const VkStencilOpState *val) 1322bf215546Sopenharmony_ci{ 1323bf215546Sopenharmony_ci vn_encode_VkStencilOp(enc, &val->failOp); 1324bf215546Sopenharmony_ci vn_encode_VkStencilOp(enc, &val->passOp); 1325bf215546Sopenharmony_ci vn_encode_VkStencilOp(enc, &val->depthFailOp); 1326bf215546Sopenharmony_ci vn_encode_VkCompareOp(enc, &val->compareOp); 1327bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->compareMask); 1328bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->writeMask); 1329bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->reference); 1330bf215546Sopenharmony_ci} 1331bf215546Sopenharmony_ci 1332bf215546Sopenharmony_ci/* struct VkPipelineDepthStencilStateCreateInfo chain */ 1333bf215546Sopenharmony_ci 1334bf215546Sopenharmony_cistatic inline size_t 1335bf215546Sopenharmony_civn_sizeof_VkPipelineDepthStencilStateCreateInfo_pnext(const void *val) 1336bf215546Sopenharmony_ci{ 1337bf215546Sopenharmony_ci /* no known/supported struct */ 1338bf215546Sopenharmony_ci return vn_sizeof_simple_pointer(NULL); 1339bf215546Sopenharmony_ci} 1340bf215546Sopenharmony_ci 1341bf215546Sopenharmony_cistatic inline size_t 1342bf215546Sopenharmony_civn_sizeof_VkPipelineDepthStencilStateCreateInfo_self(const VkPipelineDepthStencilStateCreateInfo *val) 1343bf215546Sopenharmony_ci{ 1344bf215546Sopenharmony_ci size_t size = 0; 1345bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 1346bf215546Sopenharmony_ci size += vn_sizeof_VkFlags(&val->flags); 1347bf215546Sopenharmony_ci size += vn_sizeof_VkBool32(&val->depthTestEnable); 1348bf215546Sopenharmony_ci size += vn_sizeof_VkBool32(&val->depthWriteEnable); 1349bf215546Sopenharmony_ci size += vn_sizeof_VkCompareOp(&val->depthCompareOp); 1350bf215546Sopenharmony_ci size += vn_sizeof_VkBool32(&val->depthBoundsTestEnable); 1351bf215546Sopenharmony_ci size += vn_sizeof_VkBool32(&val->stencilTestEnable); 1352bf215546Sopenharmony_ci size += vn_sizeof_VkStencilOpState(&val->front); 1353bf215546Sopenharmony_ci size += vn_sizeof_VkStencilOpState(&val->back); 1354bf215546Sopenharmony_ci size += vn_sizeof_float(&val->minDepthBounds); 1355bf215546Sopenharmony_ci size += vn_sizeof_float(&val->maxDepthBounds); 1356bf215546Sopenharmony_ci return size; 1357bf215546Sopenharmony_ci} 1358bf215546Sopenharmony_ci 1359bf215546Sopenharmony_cistatic inline size_t 1360bf215546Sopenharmony_civn_sizeof_VkPipelineDepthStencilStateCreateInfo(const VkPipelineDepthStencilStateCreateInfo *val) 1361bf215546Sopenharmony_ci{ 1362bf215546Sopenharmony_ci size_t size = 0; 1363bf215546Sopenharmony_ci 1364bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&val->sType); 1365bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineDepthStencilStateCreateInfo_pnext(val->pNext); 1366bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineDepthStencilStateCreateInfo_self(val); 1367bf215546Sopenharmony_ci 1368bf215546Sopenharmony_ci return size; 1369bf215546Sopenharmony_ci} 1370bf215546Sopenharmony_ci 1371bf215546Sopenharmony_cistatic inline void 1372bf215546Sopenharmony_civn_encode_VkPipelineDepthStencilStateCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val) 1373bf215546Sopenharmony_ci{ 1374bf215546Sopenharmony_ci /* no known/supported struct */ 1375bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, NULL); 1376bf215546Sopenharmony_ci} 1377bf215546Sopenharmony_ci 1378bf215546Sopenharmony_cistatic inline void 1379bf215546Sopenharmony_civn_encode_VkPipelineDepthStencilStateCreateInfo_self(struct vn_cs_encoder *enc, const VkPipelineDepthStencilStateCreateInfo *val) 1380bf215546Sopenharmony_ci{ 1381bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 1382bf215546Sopenharmony_ci vn_encode_VkFlags(enc, &val->flags); 1383bf215546Sopenharmony_ci vn_encode_VkBool32(enc, &val->depthTestEnable); 1384bf215546Sopenharmony_ci vn_encode_VkBool32(enc, &val->depthWriteEnable); 1385bf215546Sopenharmony_ci vn_encode_VkCompareOp(enc, &val->depthCompareOp); 1386bf215546Sopenharmony_ci vn_encode_VkBool32(enc, &val->depthBoundsTestEnable); 1387bf215546Sopenharmony_ci vn_encode_VkBool32(enc, &val->stencilTestEnable); 1388bf215546Sopenharmony_ci vn_encode_VkStencilOpState(enc, &val->front); 1389bf215546Sopenharmony_ci vn_encode_VkStencilOpState(enc, &val->back); 1390bf215546Sopenharmony_ci vn_encode_float(enc, &val->minDepthBounds); 1391bf215546Sopenharmony_ci vn_encode_float(enc, &val->maxDepthBounds); 1392bf215546Sopenharmony_ci} 1393bf215546Sopenharmony_ci 1394bf215546Sopenharmony_cistatic inline void 1395bf215546Sopenharmony_civn_encode_VkPipelineDepthStencilStateCreateInfo(struct vn_cs_encoder *enc, const VkPipelineDepthStencilStateCreateInfo *val) 1396bf215546Sopenharmony_ci{ 1397bf215546Sopenharmony_ci assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO); 1398bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO }); 1399bf215546Sopenharmony_ci vn_encode_VkPipelineDepthStencilStateCreateInfo_pnext(enc, val->pNext); 1400bf215546Sopenharmony_ci vn_encode_VkPipelineDepthStencilStateCreateInfo_self(enc, val); 1401bf215546Sopenharmony_ci} 1402bf215546Sopenharmony_ci 1403bf215546Sopenharmony_ci/* struct VkPipelineColorBlendAttachmentState */ 1404bf215546Sopenharmony_ci 1405bf215546Sopenharmony_cistatic inline size_t 1406bf215546Sopenharmony_civn_sizeof_VkPipelineColorBlendAttachmentState(const VkPipelineColorBlendAttachmentState *val) 1407bf215546Sopenharmony_ci{ 1408bf215546Sopenharmony_ci size_t size = 0; 1409bf215546Sopenharmony_ci size += vn_sizeof_VkBool32(&val->blendEnable); 1410bf215546Sopenharmony_ci size += vn_sizeof_VkBlendFactor(&val->srcColorBlendFactor); 1411bf215546Sopenharmony_ci size += vn_sizeof_VkBlendFactor(&val->dstColorBlendFactor); 1412bf215546Sopenharmony_ci size += vn_sizeof_VkBlendOp(&val->colorBlendOp); 1413bf215546Sopenharmony_ci size += vn_sizeof_VkBlendFactor(&val->srcAlphaBlendFactor); 1414bf215546Sopenharmony_ci size += vn_sizeof_VkBlendFactor(&val->dstAlphaBlendFactor); 1415bf215546Sopenharmony_ci size += vn_sizeof_VkBlendOp(&val->alphaBlendOp); 1416bf215546Sopenharmony_ci size += vn_sizeof_VkFlags(&val->colorWriteMask); 1417bf215546Sopenharmony_ci return size; 1418bf215546Sopenharmony_ci} 1419bf215546Sopenharmony_ci 1420bf215546Sopenharmony_cistatic inline void 1421bf215546Sopenharmony_civn_encode_VkPipelineColorBlendAttachmentState(struct vn_cs_encoder *enc, const VkPipelineColorBlendAttachmentState *val) 1422bf215546Sopenharmony_ci{ 1423bf215546Sopenharmony_ci vn_encode_VkBool32(enc, &val->blendEnable); 1424bf215546Sopenharmony_ci vn_encode_VkBlendFactor(enc, &val->srcColorBlendFactor); 1425bf215546Sopenharmony_ci vn_encode_VkBlendFactor(enc, &val->dstColorBlendFactor); 1426bf215546Sopenharmony_ci vn_encode_VkBlendOp(enc, &val->colorBlendOp); 1427bf215546Sopenharmony_ci vn_encode_VkBlendFactor(enc, &val->srcAlphaBlendFactor); 1428bf215546Sopenharmony_ci vn_encode_VkBlendFactor(enc, &val->dstAlphaBlendFactor); 1429bf215546Sopenharmony_ci vn_encode_VkBlendOp(enc, &val->alphaBlendOp); 1430bf215546Sopenharmony_ci vn_encode_VkFlags(enc, &val->colorWriteMask); 1431bf215546Sopenharmony_ci} 1432bf215546Sopenharmony_ci 1433bf215546Sopenharmony_ci/* struct VkPipelineColorBlendStateCreateInfo chain */ 1434bf215546Sopenharmony_ci 1435bf215546Sopenharmony_cistatic inline size_t 1436bf215546Sopenharmony_civn_sizeof_VkPipelineColorBlendStateCreateInfo_pnext(const void *val) 1437bf215546Sopenharmony_ci{ 1438bf215546Sopenharmony_ci /* no known/supported struct */ 1439bf215546Sopenharmony_ci return vn_sizeof_simple_pointer(NULL); 1440bf215546Sopenharmony_ci} 1441bf215546Sopenharmony_ci 1442bf215546Sopenharmony_cistatic inline size_t 1443bf215546Sopenharmony_civn_sizeof_VkPipelineColorBlendStateCreateInfo_self(const VkPipelineColorBlendStateCreateInfo *val) 1444bf215546Sopenharmony_ci{ 1445bf215546Sopenharmony_ci size_t size = 0; 1446bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 1447bf215546Sopenharmony_ci size += vn_sizeof_VkFlags(&val->flags); 1448bf215546Sopenharmony_ci size += vn_sizeof_VkBool32(&val->logicOpEnable); 1449bf215546Sopenharmony_ci size += vn_sizeof_VkLogicOp(&val->logicOp); 1450bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->attachmentCount); 1451bf215546Sopenharmony_ci if (val->pAttachments) { 1452bf215546Sopenharmony_ci size += vn_sizeof_array_size(val->attachmentCount); 1453bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->attachmentCount; i++) 1454bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineColorBlendAttachmentState(&val->pAttachments[i]); 1455bf215546Sopenharmony_ci } else { 1456bf215546Sopenharmony_ci size += vn_sizeof_array_size(0); 1457bf215546Sopenharmony_ci } 1458bf215546Sopenharmony_ci size += vn_sizeof_array_size(4); 1459bf215546Sopenharmony_ci size += vn_sizeof_float_array(val->blendConstants, 4); 1460bf215546Sopenharmony_ci return size; 1461bf215546Sopenharmony_ci} 1462bf215546Sopenharmony_ci 1463bf215546Sopenharmony_cistatic inline size_t 1464bf215546Sopenharmony_civn_sizeof_VkPipelineColorBlendStateCreateInfo(const VkPipelineColorBlendStateCreateInfo *val) 1465bf215546Sopenharmony_ci{ 1466bf215546Sopenharmony_ci size_t size = 0; 1467bf215546Sopenharmony_ci 1468bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&val->sType); 1469bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineColorBlendStateCreateInfo_pnext(val->pNext); 1470bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineColorBlendStateCreateInfo_self(val); 1471bf215546Sopenharmony_ci 1472bf215546Sopenharmony_ci return size; 1473bf215546Sopenharmony_ci} 1474bf215546Sopenharmony_ci 1475bf215546Sopenharmony_cistatic inline void 1476bf215546Sopenharmony_civn_encode_VkPipelineColorBlendStateCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val) 1477bf215546Sopenharmony_ci{ 1478bf215546Sopenharmony_ci /* no known/supported struct */ 1479bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, NULL); 1480bf215546Sopenharmony_ci} 1481bf215546Sopenharmony_ci 1482bf215546Sopenharmony_cistatic inline void 1483bf215546Sopenharmony_civn_encode_VkPipelineColorBlendStateCreateInfo_self(struct vn_cs_encoder *enc, const VkPipelineColorBlendStateCreateInfo *val) 1484bf215546Sopenharmony_ci{ 1485bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 1486bf215546Sopenharmony_ci vn_encode_VkFlags(enc, &val->flags); 1487bf215546Sopenharmony_ci vn_encode_VkBool32(enc, &val->logicOpEnable); 1488bf215546Sopenharmony_ci vn_encode_VkLogicOp(enc, &val->logicOp); 1489bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->attachmentCount); 1490bf215546Sopenharmony_ci if (val->pAttachments) { 1491bf215546Sopenharmony_ci vn_encode_array_size(enc, val->attachmentCount); 1492bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->attachmentCount; i++) 1493bf215546Sopenharmony_ci vn_encode_VkPipelineColorBlendAttachmentState(enc, &val->pAttachments[i]); 1494bf215546Sopenharmony_ci } else { 1495bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 1496bf215546Sopenharmony_ci } 1497bf215546Sopenharmony_ci vn_encode_array_size(enc, 4); 1498bf215546Sopenharmony_ci vn_encode_float_array(enc, val->blendConstants, 4); 1499bf215546Sopenharmony_ci} 1500bf215546Sopenharmony_ci 1501bf215546Sopenharmony_cistatic inline void 1502bf215546Sopenharmony_civn_encode_VkPipelineColorBlendStateCreateInfo(struct vn_cs_encoder *enc, const VkPipelineColorBlendStateCreateInfo *val) 1503bf215546Sopenharmony_ci{ 1504bf215546Sopenharmony_ci assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO); 1505bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO }); 1506bf215546Sopenharmony_ci vn_encode_VkPipelineColorBlendStateCreateInfo_pnext(enc, val->pNext); 1507bf215546Sopenharmony_ci vn_encode_VkPipelineColorBlendStateCreateInfo_self(enc, val); 1508bf215546Sopenharmony_ci} 1509bf215546Sopenharmony_ci 1510bf215546Sopenharmony_ci/* struct VkPipelineDynamicStateCreateInfo chain */ 1511bf215546Sopenharmony_ci 1512bf215546Sopenharmony_cistatic inline size_t 1513bf215546Sopenharmony_civn_sizeof_VkPipelineDynamicStateCreateInfo_pnext(const void *val) 1514bf215546Sopenharmony_ci{ 1515bf215546Sopenharmony_ci /* no known/supported struct */ 1516bf215546Sopenharmony_ci return vn_sizeof_simple_pointer(NULL); 1517bf215546Sopenharmony_ci} 1518bf215546Sopenharmony_ci 1519bf215546Sopenharmony_cistatic inline size_t 1520bf215546Sopenharmony_civn_sizeof_VkPipelineDynamicStateCreateInfo_self(const VkPipelineDynamicStateCreateInfo *val) 1521bf215546Sopenharmony_ci{ 1522bf215546Sopenharmony_ci size_t size = 0; 1523bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 1524bf215546Sopenharmony_ci size += vn_sizeof_VkFlags(&val->flags); 1525bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->dynamicStateCount); 1526bf215546Sopenharmony_ci if (val->pDynamicStates) { 1527bf215546Sopenharmony_ci size += vn_sizeof_array_size(val->dynamicStateCount); 1528bf215546Sopenharmony_ci size += vn_sizeof_VkDynamicState_array(val->pDynamicStates, val->dynamicStateCount); 1529bf215546Sopenharmony_ci } else { 1530bf215546Sopenharmony_ci size += vn_sizeof_array_size(0); 1531bf215546Sopenharmony_ci } 1532bf215546Sopenharmony_ci return size; 1533bf215546Sopenharmony_ci} 1534bf215546Sopenharmony_ci 1535bf215546Sopenharmony_cistatic inline size_t 1536bf215546Sopenharmony_civn_sizeof_VkPipelineDynamicStateCreateInfo(const VkPipelineDynamicStateCreateInfo *val) 1537bf215546Sopenharmony_ci{ 1538bf215546Sopenharmony_ci size_t size = 0; 1539bf215546Sopenharmony_ci 1540bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&val->sType); 1541bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineDynamicStateCreateInfo_pnext(val->pNext); 1542bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineDynamicStateCreateInfo_self(val); 1543bf215546Sopenharmony_ci 1544bf215546Sopenharmony_ci return size; 1545bf215546Sopenharmony_ci} 1546bf215546Sopenharmony_ci 1547bf215546Sopenharmony_cistatic inline void 1548bf215546Sopenharmony_civn_encode_VkPipelineDynamicStateCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val) 1549bf215546Sopenharmony_ci{ 1550bf215546Sopenharmony_ci /* no known/supported struct */ 1551bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, NULL); 1552bf215546Sopenharmony_ci} 1553bf215546Sopenharmony_ci 1554bf215546Sopenharmony_cistatic inline void 1555bf215546Sopenharmony_civn_encode_VkPipelineDynamicStateCreateInfo_self(struct vn_cs_encoder *enc, const VkPipelineDynamicStateCreateInfo *val) 1556bf215546Sopenharmony_ci{ 1557bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 1558bf215546Sopenharmony_ci vn_encode_VkFlags(enc, &val->flags); 1559bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->dynamicStateCount); 1560bf215546Sopenharmony_ci if (val->pDynamicStates) { 1561bf215546Sopenharmony_ci vn_encode_array_size(enc, val->dynamicStateCount); 1562bf215546Sopenharmony_ci vn_encode_VkDynamicState_array(enc, val->pDynamicStates, val->dynamicStateCount); 1563bf215546Sopenharmony_ci } else { 1564bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 1565bf215546Sopenharmony_ci } 1566bf215546Sopenharmony_ci} 1567bf215546Sopenharmony_ci 1568bf215546Sopenharmony_cistatic inline void 1569bf215546Sopenharmony_civn_encode_VkPipelineDynamicStateCreateInfo(struct vn_cs_encoder *enc, const VkPipelineDynamicStateCreateInfo *val) 1570bf215546Sopenharmony_ci{ 1571bf215546Sopenharmony_ci assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO); 1572bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO }); 1573bf215546Sopenharmony_ci vn_encode_VkPipelineDynamicStateCreateInfo_pnext(enc, val->pNext); 1574bf215546Sopenharmony_ci vn_encode_VkPipelineDynamicStateCreateInfo_self(enc, val); 1575bf215546Sopenharmony_ci} 1576bf215546Sopenharmony_ci 1577bf215546Sopenharmony_ci/* struct VkPipelineCreationFeedback */ 1578bf215546Sopenharmony_ci 1579bf215546Sopenharmony_cistatic inline size_t 1580bf215546Sopenharmony_civn_sizeof_VkPipelineCreationFeedback(const VkPipelineCreationFeedback *val) 1581bf215546Sopenharmony_ci{ 1582bf215546Sopenharmony_ci size_t size = 0; 1583bf215546Sopenharmony_ci size += vn_sizeof_VkFlags(&val->flags); 1584bf215546Sopenharmony_ci size += vn_sizeof_uint64_t(&val->duration); 1585bf215546Sopenharmony_ci return size; 1586bf215546Sopenharmony_ci} 1587bf215546Sopenharmony_ci 1588bf215546Sopenharmony_cistatic inline void 1589bf215546Sopenharmony_civn_encode_VkPipelineCreationFeedback(struct vn_cs_encoder *enc, const VkPipelineCreationFeedback *val) 1590bf215546Sopenharmony_ci{ 1591bf215546Sopenharmony_ci vn_encode_VkFlags(enc, &val->flags); 1592bf215546Sopenharmony_ci vn_encode_uint64_t(enc, &val->duration); 1593bf215546Sopenharmony_ci} 1594bf215546Sopenharmony_ci 1595bf215546Sopenharmony_ci/* struct VkPipelineCreationFeedbackCreateInfo chain */ 1596bf215546Sopenharmony_ci 1597bf215546Sopenharmony_cistatic inline size_t 1598bf215546Sopenharmony_civn_sizeof_VkPipelineCreationFeedbackCreateInfo_pnext(const void *val) 1599bf215546Sopenharmony_ci{ 1600bf215546Sopenharmony_ci /* no known/supported struct */ 1601bf215546Sopenharmony_ci return vn_sizeof_simple_pointer(NULL); 1602bf215546Sopenharmony_ci} 1603bf215546Sopenharmony_ci 1604bf215546Sopenharmony_cistatic inline size_t 1605bf215546Sopenharmony_civn_sizeof_VkPipelineCreationFeedbackCreateInfo_self(const VkPipelineCreationFeedbackCreateInfo *val) 1606bf215546Sopenharmony_ci{ 1607bf215546Sopenharmony_ci size_t size = 0; 1608bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 1609bf215546Sopenharmony_ci size += vn_sizeof_simple_pointer(val->pPipelineCreationFeedback); 1610bf215546Sopenharmony_ci if (val->pPipelineCreationFeedback) 1611bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineCreationFeedback(val->pPipelineCreationFeedback); 1612bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->pipelineStageCreationFeedbackCount); 1613bf215546Sopenharmony_ci if (val->pPipelineStageCreationFeedbacks) { 1614bf215546Sopenharmony_ci size += vn_sizeof_array_size(val->pipelineStageCreationFeedbackCount); 1615bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->pipelineStageCreationFeedbackCount; i++) 1616bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineCreationFeedback(&val->pPipelineStageCreationFeedbacks[i]); 1617bf215546Sopenharmony_ci } else { 1618bf215546Sopenharmony_ci size += vn_sizeof_array_size(0); 1619bf215546Sopenharmony_ci } 1620bf215546Sopenharmony_ci return size; 1621bf215546Sopenharmony_ci} 1622bf215546Sopenharmony_ci 1623bf215546Sopenharmony_cistatic inline size_t 1624bf215546Sopenharmony_civn_sizeof_VkPipelineCreationFeedbackCreateInfo(const VkPipelineCreationFeedbackCreateInfo *val) 1625bf215546Sopenharmony_ci{ 1626bf215546Sopenharmony_ci size_t size = 0; 1627bf215546Sopenharmony_ci 1628bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&val->sType); 1629bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineCreationFeedbackCreateInfo_pnext(val->pNext); 1630bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineCreationFeedbackCreateInfo_self(val); 1631bf215546Sopenharmony_ci 1632bf215546Sopenharmony_ci return size; 1633bf215546Sopenharmony_ci} 1634bf215546Sopenharmony_ci 1635bf215546Sopenharmony_cistatic inline void 1636bf215546Sopenharmony_civn_encode_VkPipelineCreationFeedbackCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val) 1637bf215546Sopenharmony_ci{ 1638bf215546Sopenharmony_ci /* no known/supported struct */ 1639bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, NULL); 1640bf215546Sopenharmony_ci} 1641bf215546Sopenharmony_ci 1642bf215546Sopenharmony_cistatic inline void 1643bf215546Sopenharmony_civn_encode_VkPipelineCreationFeedbackCreateInfo_self(struct vn_cs_encoder *enc, const VkPipelineCreationFeedbackCreateInfo *val) 1644bf215546Sopenharmony_ci{ 1645bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 1646bf215546Sopenharmony_ci if (vn_encode_simple_pointer(enc, val->pPipelineCreationFeedback)) 1647bf215546Sopenharmony_ci vn_encode_VkPipelineCreationFeedback(enc, val->pPipelineCreationFeedback); 1648bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->pipelineStageCreationFeedbackCount); 1649bf215546Sopenharmony_ci if (val->pPipelineStageCreationFeedbacks) { 1650bf215546Sopenharmony_ci vn_encode_array_size(enc, val->pipelineStageCreationFeedbackCount); 1651bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->pipelineStageCreationFeedbackCount; i++) 1652bf215546Sopenharmony_ci vn_encode_VkPipelineCreationFeedback(enc, &val->pPipelineStageCreationFeedbacks[i]); 1653bf215546Sopenharmony_ci } else { 1654bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 1655bf215546Sopenharmony_ci } 1656bf215546Sopenharmony_ci} 1657bf215546Sopenharmony_ci 1658bf215546Sopenharmony_cistatic inline void 1659bf215546Sopenharmony_civn_encode_VkPipelineCreationFeedbackCreateInfo(struct vn_cs_encoder *enc, const VkPipelineCreationFeedbackCreateInfo *val) 1660bf215546Sopenharmony_ci{ 1661bf215546Sopenharmony_ci assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO); 1662bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO }); 1663bf215546Sopenharmony_ci vn_encode_VkPipelineCreationFeedbackCreateInfo_pnext(enc, val->pNext); 1664bf215546Sopenharmony_ci vn_encode_VkPipelineCreationFeedbackCreateInfo_self(enc, val); 1665bf215546Sopenharmony_ci} 1666bf215546Sopenharmony_ci 1667bf215546Sopenharmony_ci/* struct VkPipelineRenderingCreateInfo chain */ 1668bf215546Sopenharmony_ci 1669bf215546Sopenharmony_cistatic inline size_t 1670bf215546Sopenharmony_civn_sizeof_VkPipelineRenderingCreateInfo_pnext(const void *val) 1671bf215546Sopenharmony_ci{ 1672bf215546Sopenharmony_ci /* no known/supported struct */ 1673bf215546Sopenharmony_ci return vn_sizeof_simple_pointer(NULL); 1674bf215546Sopenharmony_ci} 1675bf215546Sopenharmony_ci 1676bf215546Sopenharmony_cistatic inline size_t 1677bf215546Sopenharmony_civn_sizeof_VkPipelineRenderingCreateInfo_self(const VkPipelineRenderingCreateInfo *val) 1678bf215546Sopenharmony_ci{ 1679bf215546Sopenharmony_ci size_t size = 0; 1680bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 1681bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->viewMask); 1682bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->colorAttachmentCount); 1683bf215546Sopenharmony_ci if (val->pColorAttachmentFormats) { 1684bf215546Sopenharmony_ci size += vn_sizeof_array_size(val->colorAttachmentCount); 1685bf215546Sopenharmony_ci size += vn_sizeof_VkFormat_array(val->pColorAttachmentFormats, val->colorAttachmentCount); 1686bf215546Sopenharmony_ci } else { 1687bf215546Sopenharmony_ci size += vn_sizeof_array_size(0); 1688bf215546Sopenharmony_ci } 1689bf215546Sopenharmony_ci size += vn_sizeof_VkFormat(&val->depthAttachmentFormat); 1690bf215546Sopenharmony_ci size += vn_sizeof_VkFormat(&val->stencilAttachmentFormat); 1691bf215546Sopenharmony_ci return size; 1692bf215546Sopenharmony_ci} 1693bf215546Sopenharmony_ci 1694bf215546Sopenharmony_cistatic inline size_t 1695bf215546Sopenharmony_civn_sizeof_VkPipelineRenderingCreateInfo(const VkPipelineRenderingCreateInfo *val) 1696bf215546Sopenharmony_ci{ 1697bf215546Sopenharmony_ci size_t size = 0; 1698bf215546Sopenharmony_ci 1699bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&val->sType); 1700bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineRenderingCreateInfo_pnext(val->pNext); 1701bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineRenderingCreateInfo_self(val); 1702bf215546Sopenharmony_ci 1703bf215546Sopenharmony_ci return size; 1704bf215546Sopenharmony_ci} 1705bf215546Sopenharmony_ci 1706bf215546Sopenharmony_cistatic inline void 1707bf215546Sopenharmony_civn_encode_VkPipelineRenderingCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val) 1708bf215546Sopenharmony_ci{ 1709bf215546Sopenharmony_ci /* no known/supported struct */ 1710bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, NULL); 1711bf215546Sopenharmony_ci} 1712bf215546Sopenharmony_ci 1713bf215546Sopenharmony_cistatic inline void 1714bf215546Sopenharmony_civn_encode_VkPipelineRenderingCreateInfo_self(struct vn_cs_encoder *enc, const VkPipelineRenderingCreateInfo *val) 1715bf215546Sopenharmony_ci{ 1716bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 1717bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->viewMask); 1718bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->colorAttachmentCount); 1719bf215546Sopenharmony_ci if (val->pColorAttachmentFormats) { 1720bf215546Sopenharmony_ci vn_encode_array_size(enc, val->colorAttachmentCount); 1721bf215546Sopenharmony_ci vn_encode_VkFormat_array(enc, val->pColorAttachmentFormats, val->colorAttachmentCount); 1722bf215546Sopenharmony_ci } else { 1723bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 1724bf215546Sopenharmony_ci } 1725bf215546Sopenharmony_ci vn_encode_VkFormat(enc, &val->depthAttachmentFormat); 1726bf215546Sopenharmony_ci vn_encode_VkFormat(enc, &val->stencilAttachmentFormat); 1727bf215546Sopenharmony_ci} 1728bf215546Sopenharmony_ci 1729bf215546Sopenharmony_cistatic inline void 1730bf215546Sopenharmony_civn_encode_VkPipelineRenderingCreateInfo(struct vn_cs_encoder *enc, const VkPipelineRenderingCreateInfo *val) 1731bf215546Sopenharmony_ci{ 1732bf215546Sopenharmony_ci assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO); 1733bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO }); 1734bf215546Sopenharmony_ci vn_encode_VkPipelineRenderingCreateInfo_pnext(enc, val->pNext); 1735bf215546Sopenharmony_ci vn_encode_VkPipelineRenderingCreateInfo_self(enc, val); 1736bf215546Sopenharmony_ci} 1737bf215546Sopenharmony_ci 1738bf215546Sopenharmony_ci/* struct VkGraphicsPipelineCreateInfo chain */ 1739bf215546Sopenharmony_ci 1740bf215546Sopenharmony_cistatic inline size_t 1741bf215546Sopenharmony_civn_sizeof_VkGraphicsPipelineCreateInfo_pnext(const void *val) 1742bf215546Sopenharmony_ci{ 1743bf215546Sopenharmony_ci const VkBaseInStructure *pnext = val; 1744bf215546Sopenharmony_ci size_t size = 0; 1745bf215546Sopenharmony_ci 1746bf215546Sopenharmony_ci while (pnext) { 1747bf215546Sopenharmony_ci switch ((int32_t)pnext->sType) { 1748bf215546Sopenharmony_ci case VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO: 1749bf215546Sopenharmony_ci if (!vn_cs_renderer_protocol_has_extension(193 /* VK_EXT_pipeline_creation_feedback */)) 1750bf215546Sopenharmony_ci break; 1751bf215546Sopenharmony_ci size += vn_sizeof_simple_pointer(pnext); 1752bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&pnext->sType); 1753bf215546Sopenharmony_ci size += vn_sizeof_VkGraphicsPipelineCreateInfo_pnext(pnext->pNext); 1754bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineCreationFeedbackCreateInfo_self((const VkPipelineCreationFeedbackCreateInfo *)pnext); 1755bf215546Sopenharmony_ci return size; 1756bf215546Sopenharmony_ci case VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO: 1757bf215546Sopenharmony_ci if (!vn_cs_renderer_protocol_has_extension(45 /* VK_KHR_dynamic_rendering */)) 1758bf215546Sopenharmony_ci break; 1759bf215546Sopenharmony_ci size += vn_sizeof_simple_pointer(pnext); 1760bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&pnext->sType); 1761bf215546Sopenharmony_ci size += vn_sizeof_VkGraphicsPipelineCreateInfo_pnext(pnext->pNext); 1762bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineRenderingCreateInfo_self((const VkPipelineRenderingCreateInfo *)pnext); 1763bf215546Sopenharmony_ci return size; 1764bf215546Sopenharmony_ci default: 1765bf215546Sopenharmony_ci /* ignore unknown/unsupported struct */ 1766bf215546Sopenharmony_ci break; 1767bf215546Sopenharmony_ci } 1768bf215546Sopenharmony_ci pnext = pnext->pNext; 1769bf215546Sopenharmony_ci } 1770bf215546Sopenharmony_ci 1771bf215546Sopenharmony_ci return vn_sizeof_simple_pointer(NULL); 1772bf215546Sopenharmony_ci} 1773bf215546Sopenharmony_ci 1774bf215546Sopenharmony_cistatic inline size_t 1775bf215546Sopenharmony_civn_sizeof_VkGraphicsPipelineCreateInfo_self(const VkGraphicsPipelineCreateInfo *val) 1776bf215546Sopenharmony_ci{ 1777bf215546Sopenharmony_ci size_t size = 0; 1778bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 1779bf215546Sopenharmony_ci size += vn_sizeof_VkFlags(&val->flags); 1780bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->stageCount); 1781bf215546Sopenharmony_ci if (val->pStages) { 1782bf215546Sopenharmony_ci size += vn_sizeof_array_size(val->stageCount); 1783bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->stageCount; i++) 1784bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineShaderStageCreateInfo(&val->pStages[i]); 1785bf215546Sopenharmony_ci } else { 1786bf215546Sopenharmony_ci size += vn_sizeof_array_size(0); 1787bf215546Sopenharmony_ci } 1788bf215546Sopenharmony_ci size += vn_sizeof_simple_pointer(val->pVertexInputState); 1789bf215546Sopenharmony_ci if (val->pVertexInputState) 1790bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineVertexInputStateCreateInfo(val->pVertexInputState); 1791bf215546Sopenharmony_ci size += vn_sizeof_simple_pointer(val->pInputAssemblyState); 1792bf215546Sopenharmony_ci if (val->pInputAssemblyState) 1793bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineInputAssemblyStateCreateInfo(val->pInputAssemblyState); 1794bf215546Sopenharmony_ci size += vn_sizeof_simple_pointer(val->pTessellationState); 1795bf215546Sopenharmony_ci if (val->pTessellationState) 1796bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineTessellationStateCreateInfo(val->pTessellationState); 1797bf215546Sopenharmony_ci size += vn_sizeof_simple_pointer(val->pViewportState); 1798bf215546Sopenharmony_ci if (val->pViewportState) 1799bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineViewportStateCreateInfo(val->pViewportState); 1800bf215546Sopenharmony_ci size += vn_sizeof_simple_pointer(val->pRasterizationState); 1801bf215546Sopenharmony_ci if (val->pRasterizationState) 1802bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineRasterizationStateCreateInfo(val->pRasterizationState); 1803bf215546Sopenharmony_ci size += vn_sizeof_simple_pointer(val->pMultisampleState); 1804bf215546Sopenharmony_ci if (val->pMultisampleState) 1805bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineMultisampleStateCreateInfo(val->pMultisampleState); 1806bf215546Sopenharmony_ci size += vn_sizeof_simple_pointer(val->pDepthStencilState); 1807bf215546Sopenharmony_ci if (val->pDepthStencilState) 1808bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineDepthStencilStateCreateInfo(val->pDepthStencilState); 1809bf215546Sopenharmony_ci size += vn_sizeof_simple_pointer(val->pColorBlendState); 1810bf215546Sopenharmony_ci if (val->pColorBlendState) 1811bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineColorBlendStateCreateInfo(val->pColorBlendState); 1812bf215546Sopenharmony_ci size += vn_sizeof_simple_pointer(val->pDynamicState); 1813bf215546Sopenharmony_ci if (val->pDynamicState) 1814bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineDynamicStateCreateInfo(val->pDynamicState); 1815bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineLayout(&val->layout); 1816bf215546Sopenharmony_ci size += vn_sizeof_VkRenderPass(&val->renderPass); 1817bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->subpass); 1818bf215546Sopenharmony_ci size += vn_sizeof_VkPipeline(&val->basePipelineHandle); 1819bf215546Sopenharmony_ci size += vn_sizeof_int32_t(&val->basePipelineIndex); 1820bf215546Sopenharmony_ci return size; 1821bf215546Sopenharmony_ci} 1822bf215546Sopenharmony_ci 1823bf215546Sopenharmony_cistatic inline size_t 1824bf215546Sopenharmony_civn_sizeof_VkGraphicsPipelineCreateInfo(const VkGraphicsPipelineCreateInfo *val) 1825bf215546Sopenharmony_ci{ 1826bf215546Sopenharmony_ci size_t size = 0; 1827bf215546Sopenharmony_ci 1828bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&val->sType); 1829bf215546Sopenharmony_ci size += vn_sizeof_VkGraphicsPipelineCreateInfo_pnext(val->pNext); 1830bf215546Sopenharmony_ci size += vn_sizeof_VkGraphicsPipelineCreateInfo_self(val); 1831bf215546Sopenharmony_ci 1832bf215546Sopenharmony_ci return size; 1833bf215546Sopenharmony_ci} 1834bf215546Sopenharmony_ci 1835bf215546Sopenharmony_cistatic inline void 1836bf215546Sopenharmony_civn_encode_VkGraphicsPipelineCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val) 1837bf215546Sopenharmony_ci{ 1838bf215546Sopenharmony_ci const VkBaseInStructure *pnext = val; 1839bf215546Sopenharmony_ci 1840bf215546Sopenharmony_ci while (pnext) { 1841bf215546Sopenharmony_ci switch ((int32_t)pnext->sType) { 1842bf215546Sopenharmony_ci case VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO: 1843bf215546Sopenharmony_ci if (!vn_cs_renderer_protocol_has_extension(193 /* VK_EXT_pipeline_creation_feedback */)) 1844bf215546Sopenharmony_ci break; 1845bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, pnext); 1846bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &pnext->sType); 1847bf215546Sopenharmony_ci vn_encode_VkGraphicsPipelineCreateInfo_pnext(enc, pnext->pNext); 1848bf215546Sopenharmony_ci vn_encode_VkPipelineCreationFeedbackCreateInfo_self(enc, (const VkPipelineCreationFeedbackCreateInfo *)pnext); 1849bf215546Sopenharmony_ci return; 1850bf215546Sopenharmony_ci case VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO: 1851bf215546Sopenharmony_ci if (!vn_cs_renderer_protocol_has_extension(45 /* VK_KHR_dynamic_rendering */)) 1852bf215546Sopenharmony_ci break; 1853bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, pnext); 1854bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &pnext->sType); 1855bf215546Sopenharmony_ci vn_encode_VkGraphicsPipelineCreateInfo_pnext(enc, pnext->pNext); 1856bf215546Sopenharmony_ci vn_encode_VkPipelineRenderingCreateInfo_self(enc, (const VkPipelineRenderingCreateInfo *)pnext); 1857bf215546Sopenharmony_ci return; 1858bf215546Sopenharmony_ci default: 1859bf215546Sopenharmony_ci /* ignore unknown/unsupported struct */ 1860bf215546Sopenharmony_ci break; 1861bf215546Sopenharmony_ci } 1862bf215546Sopenharmony_ci pnext = pnext->pNext; 1863bf215546Sopenharmony_ci } 1864bf215546Sopenharmony_ci 1865bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, NULL); 1866bf215546Sopenharmony_ci} 1867bf215546Sopenharmony_ci 1868bf215546Sopenharmony_cistatic inline void 1869bf215546Sopenharmony_civn_encode_VkGraphicsPipelineCreateInfo_self(struct vn_cs_encoder *enc, const VkGraphicsPipelineCreateInfo *val) 1870bf215546Sopenharmony_ci{ 1871bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 1872bf215546Sopenharmony_ci vn_encode_VkFlags(enc, &val->flags); 1873bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->stageCount); 1874bf215546Sopenharmony_ci if (val->pStages) { 1875bf215546Sopenharmony_ci vn_encode_array_size(enc, val->stageCount); 1876bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->stageCount; i++) 1877bf215546Sopenharmony_ci vn_encode_VkPipelineShaderStageCreateInfo(enc, &val->pStages[i]); 1878bf215546Sopenharmony_ci } else { 1879bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 1880bf215546Sopenharmony_ci } 1881bf215546Sopenharmony_ci if (vn_encode_simple_pointer(enc, val->pVertexInputState)) 1882bf215546Sopenharmony_ci vn_encode_VkPipelineVertexInputStateCreateInfo(enc, val->pVertexInputState); 1883bf215546Sopenharmony_ci if (vn_encode_simple_pointer(enc, val->pInputAssemblyState)) 1884bf215546Sopenharmony_ci vn_encode_VkPipelineInputAssemblyStateCreateInfo(enc, val->pInputAssemblyState); 1885bf215546Sopenharmony_ci if (vn_encode_simple_pointer(enc, val->pTessellationState)) 1886bf215546Sopenharmony_ci vn_encode_VkPipelineTessellationStateCreateInfo(enc, val->pTessellationState); 1887bf215546Sopenharmony_ci if (vn_encode_simple_pointer(enc, val->pViewportState)) 1888bf215546Sopenharmony_ci vn_encode_VkPipelineViewportStateCreateInfo(enc, val->pViewportState); 1889bf215546Sopenharmony_ci if (vn_encode_simple_pointer(enc, val->pRasterizationState)) 1890bf215546Sopenharmony_ci vn_encode_VkPipelineRasterizationStateCreateInfo(enc, val->pRasterizationState); 1891bf215546Sopenharmony_ci if (vn_encode_simple_pointer(enc, val->pMultisampleState)) 1892bf215546Sopenharmony_ci vn_encode_VkPipelineMultisampleStateCreateInfo(enc, val->pMultisampleState); 1893bf215546Sopenharmony_ci if (vn_encode_simple_pointer(enc, val->pDepthStencilState)) 1894bf215546Sopenharmony_ci vn_encode_VkPipelineDepthStencilStateCreateInfo(enc, val->pDepthStencilState); 1895bf215546Sopenharmony_ci if (vn_encode_simple_pointer(enc, val->pColorBlendState)) 1896bf215546Sopenharmony_ci vn_encode_VkPipelineColorBlendStateCreateInfo(enc, val->pColorBlendState); 1897bf215546Sopenharmony_ci if (vn_encode_simple_pointer(enc, val->pDynamicState)) 1898bf215546Sopenharmony_ci vn_encode_VkPipelineDynamicStateCreateInfo(enc, val->pDynamicState); 1899bf215546Sopenharmony_ci vn_encode_VkPipelineLayout(enc, &val->layout); 1900bf215546Sopenharmony_ci vn_encode_VkRenderPass(enc, &val->renderPass); 1901bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->subpass); 1902bf215546Sopenharmony_ci vn_encode_VkPipeline(enc, &val->basePipelineHandle); 1903bf215546Sopenharmony_ci vn_encode_int32_t(enc, &val->basePipelineIndex); 1904bf215546Sopenharmony_ci} 1905bf215546Sopenharmony_ci 1906bf215546Sopenharmony_cistatic inline void 1907bf215546Sopenharmony_civn_encode_VkGraphicsPipelineCreateInfo(struct vn_cs_encoder *enc, const VkGraphicsPipelineCreateInfo *val) 1908bf215546Sopenharmony_ci{ 1909bf215546Sopenharmony_ci assert(val->sType == VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO); 1910bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO }); 1911bf215546Sopenharmony_ci vn_encode_VkGraphicsPipelineCreateInfo_pnext(enc, val->pNext); 1912bf215546Sopenharmony_ci vn_encode_VkGraphicsPipelineCreateInfo_self(enc, val); 1913bf215546Sopenharmony_ci} 1914bf215546Sopenharmony_ci 1915bf215546Sopenharmony_ci/* struct VkComputePipelineCreateInfo chain */ 1916bf215546Sopenharmony_ci 1917bf215546Sopenharmony_cistatic inline size_t 1918bf215546Sopenharmony_civn_sizeof_VkComputePipelineCreateInfo_pnext(const void *val) 1919bf215546Sopenharmony_ci{ 1920bf215546Sopenharmony_ci const VkBaseInStructure *pnext = val; 1921bf215546Sopenharmony_ci size_t size = 0; 1922bf215546Sopenharmony_ci 1923bf215546Sopenharmony_ci while (pnext) { 1924bf215546Sopenharmony_ci switch ((int32_t)pnext->sType) { 1925bf215546Sopenharmony_ci case VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO: 1926bf215546Sopenharmony_ci if (!vn_cs_renderer_protocol_has_extension(193 /* VK_EXT_pipeline_creation_feedback */)) 1927bf215546Sopenharmony_ci break; 1928bf215546Sopenharmony_ci size += vn_sizeof_simple_pointer(pnext); 1929bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&pnext->sType); 1930bf215546Sopenharmony_ci size += vn_sizeof_VkComputePipelineCreateInfo_pnext(pnext->pNext); 1931bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineCreationFeedbackCreateInfo_self((const VkPipelineCreationFeedbackCreateInfo *)pnext); 1932bf215546Sopenharmony_ci return size; 1933bf215546Sopenharmony_ci default: 1934bf215546Sopenharmony_ci /* ignore unknown/unsupported struct */ 1935bf215546Sopenharmony_ci break; 1936bf215546Sopenharmony_ci } 1937bf215546Sopenharmony_ci pnext = pnext->pNext; 1938bf215546Sopenharmony_ci } 1939bf215546Sopenharmony_ci 1940bf215546Sopenharmony_ci return vn_sizeof_simple_pointer(NULL); 1941bf215546Sopenharmony_ci} 1942bf215546Sopenharmony_ci 1943bf215546Sopenharmony_cistatic inline size_t 1944bf215546Sopenharmony_civn_sizeof_VkComputePipelineCreateInfo_self(const VkComputePipelineCreateInfo *val) 1945bf215546Sopenharmony_ci{ 1946bf215546Sopenharmony_ci size_t size = 0; 1947bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 1948bf215546Sopenharmony_ci size += vn_sizeof_VkFlags(&val->flags); 1949bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineShaderStageCreateInfo(&val->stage); 1950bf215546Sopenharmony_ci size += vn_sizeof_VkPipelineLayout(&val->layout); 1951bf215546Sopenharmony_ci size += vn_sizeof_VkPipeline(&val->basePipelineHandle); 1952bf215546Sopenharmony_ci size += vn_sizeof_int32_t(&val->basePipelineIndex); 1953bf215546Sopenharmony_ci return size; 1954bf215546Sopenharmony_ci} 1955bf215546Sopenharmony_ci 1956bf215546Sopenharmony_cistatic inline size_t 1957bf215546Sopenharmony_civn_sizeof_VkComputePipelineCreateInfo(const VkComputePipelineCreateInfo *val) 1958bf215546Sopenharmony_ci{ 1959bf215546Sopenharmony_ci size_t size = 0; 1960bf215546Sopenharmony_ci 1961bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&val->sType); 1962bf215546Sopenharmony_ci size += vn_sizeof_VkComputePipelineCreateInfo_pnext(val->pNext); 1963bf215546Sopenharmony_ci size += vn_sizeof_VkComputePipelineCreateInfo_self(val); 1964bf215546Sopenharmony_ci 1965bf215546Sopenharmony_ci return size; 1966bf215546Sopenharmony_ci} 1967bf215546Sopenharmony_ci 1968bf215546Sopenharmony_cistatic inline void 1969bf215546Sopenharmony_civn_encode_VkComputePipelineCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val) 1970bf215546Sopenharmony_ci{ 1971bf215546Sopenharmony_ci const VkBaseInStructure *pnext = val; 1972bf215546Sopenharmony_ci 1973bf215546Sopenharmony_ci while (pnext) { 1974bf215546Sopenharmony_ci switch ((int32_t)pnext->sType) { 1975bf215546Sopenharmony_ci case VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO: 1976bf215546Sopenharmony_ci if (!vn_cs_renderer_protocol_has_extension(193 /* VK_EXT_pipeline_creation_feedback */)) 1977bf215546Sopenharmony_ci break; 1978bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, pnext); 1979bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &pnext->sType); 1980bf215546Sopenharmony_ci vn_encode_VkComputePipelineCreateInfo_pnext(enc, pnext->pNext); 1981bf215546Sopenharmony_ci vn_encode_VkPipelineCreationFeedbackCreateInfo_self(enc, (const VkPipelineCreationFeedbackCreateInfo *)pnext); 1982bf215546Sopenharmony_ci return; 1983bf215546Sopenharmony_ci default: 1984bf215546Sopenharmony_ci /* ignore unknown/unsupported struct */ 1985bf215546Sopenharmony_ci break; 1986bf215546Sopenharmony_ci } 1987bf215546Sopenharmony_ci pnext = pnext->pNext; 1988bf215546Sopenharmony_ci } 1989bf215546Sopenharmony_ci 1990bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, NULL); 1991bf215546Sopenharmony_ci} 1992bf215546Sopenharmony_ci 1993bf215546Sopenharmony_cistatic inline void 1994bf215546Sopenharmony_civn_encode_VkComputePipelineCreateInfo_self(struct vn_cs_encoder *enc, const VkComputePipelineCreateInfo *val) 1995bf215546Sopenharmony_ci{ 1996bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 1997bf215546Sopenharmony_ci vn_encode_VkFlags(enc, &val->flags); 1998bf215546Sopenharmony_ci vn_encode_VkPipelineShaderStageCreateInfo(enc, &val->stage); 1999bf215546Sopenharmony_ci vn_encode_VkPipelineLayout(enc, &val->layout); 2000bf215546Sopenharmony_ci vn_encode_VkPipeline(enc, &val->basePipelineHandle); 2001bf215546Sopenharmony_ci vn_encode_int32_t(enc, &val->basePipelineIndex); 2002bf215546Sopenharmony_ci} 2003bf215546Sopenharmony_ci 2004bf215546Sopenharmony_cistatic inline void 2005bf215546Sopenharmony_civn_encode_VkComputePipelineCreateInfo(struct vn_cs_encoder *enc, const VkComputePipelineCreateInfo *val) 2006bf215546Sopenharmony_ci{ 2007bf215546Sopenharmony_ci assert(val->sType == VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO); 2008bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO }); 2009bf215546Sopenharmony_ci vn_encode_VkComputePipelineCreateInfo_pnext(enc, val->pNext); 2010bf215546Sopenharmony_ci vn_encode_VkComputePipelineCreateInfo_self(enc, val); 2011bf215546Sopenharmony_ci} 2012bf215546Sopenharmony_ci 2013bf215546Sopenharmony_cistatic inline size_t vn_sizeof_vkCreateGraphicsPipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) 2014bf215546Sopenharmony_ci{ 2015bf215546Sopenharmony_ci const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateGraphicsPipelines_EXT; 2016bf215546Sopenharmony_ci const VkFlags cmd_flags = 0; 2017bf215546Sopenharmony_ci size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags); 2018bf215546Sopenharmony_ci 2019bf215546Sopenharmony_ci cmd_size += vn_sizeof_VkDevice(&device); 2020bf215546Sopenharmony_ci cmd_size += vn_sizeof_VkPipelineCache(&pipelineCache); 2021bf215546Sopenharmony_ci cmd_size += vn_sizeof_uint32_t(&createInfoCount); 2022bf215546Sopenharmony_ci if (pCreateInfos) { 2023bf215546Sopenharmony_ci cmd_size += vn_sizeof_array_size(createInfoCount); 2024bf215546Sopenharmony_ci for (uint32_t i = 0; i < createInfoCount; i++) 2025bf215546Sopenharmony_ci cmd_size += vn_sizeof_VkGraphicsPipelineCreateInfo(&pCreateInfos[i]); 2026bf215546Sopenharmony_ci } else { 2027bf215546Sopenharmony_ci cmd_size += vn_sizeof_array_size(0); 2028bf215546Sopenharmony_ci } 2029bf215546Sopenharmony_ci cmd_size += vn_sizeof_simple_pointer(pAllocator); 2030bf215546Sopenharmony_ci if (pAllocator) 2031bf215546Sopenharmony_ci assert(false); 2032bf215546Sopenharmony_ci if (pPipelines) { 2033bf215546Sopenharmony_ci cmd_size += vn_sizeof_array_size(createInfoCount); 2034bf215546Sopenharmony_ci for (uint32_t i = 0; i < createInfoCount; i++) 2035bf215546Sopenharmony_ci cmd_size += vn_sizeof_VkPipeline(&pPipelines[i]); 2036bf215546Sopenharmony_ci } else { 2037bf215546Sopenharmony_ci cmd_size += vn_sizeof_array_size(0); 2038bf215546Sopenharmony_ci } 2039bf215546Sopenharmony_ci 2040bf215546Sopenharmony_ci return cmd_size; 2041bf215546Sopenharmony_ci} 2042bf215546Sopenharmony_ci 2043bf215546Sopenharmony_cistatic 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) 2044bf215546Sopenharmony_ci{ 2045bf215546Sopenharmony_ci const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateGraphicsPipelines_EXT; 2046bf215546Sopenharmony_ci 2047bf215546Sopenharmony_ci vn_encode_VkCommandTypeEXT(enc, &cmd_type); 2048bf215546Sopenharmony_ci vn_encode_VkFlags(enc, &cmd_flags); 2049bf215546Sopenharmony_ci 2050bf215546Sopenharmony_ci vn_encode_VkDevice(enc, &device); 2051bf215546Sopenharmony_ci vn_encode_VkPipelineCache(enc, &pipelineCache); 2052bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &createInfoCount); 2053bf215546Sopenharmony_ci if (pCreateInfos) { 2054bf215546Sopenharmony_ci vn_encode_array_size(enc, createInfoCount); 2055bf215546Sopenharmony_ci for (uint32_t i = 0; i < createInfoCount; i++) 2056bf215546Sopenharmony_ci vn_encode_VkGraphicsPipelineCreateInfo(enc, &pCreateInfos[i]); 2057bf215546Sopenharmony_ci } else { 2058bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 2059bf215546Sopenharmony_ci } 2060bf215546Sopenharmony_ci if (vn_encode_simple_pointer(enc, pAllocator)) 2061bf215546Sopenharmony_ci assert(false); 2062bf215546Sopenharmony_ci if (pPipelines) { 2063bf215546Sopenharmony_ci vn_encode_array_size(enc, createInfoCount); 2064bf215546Sopenharmony_ci for (uint32_t i = 0; i < createInfoCount; i++) 2065bf215546Sopenharmony_ci vn_encode_VkPipeline(enc, &pPipelines[i]); 2066bf215546Sopenharmony_ci } else { 2067bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 2068bf215546Sopenharmony_ci } 2069bf215546Sopenharmony_ci} 2070bf215546Sopenharmony_ci 2071bf215546Sopenharmony_cistatic inline size_t vn_sizeof_vkCreateGraphicsPipelines_reply(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) 2072bf215546Sopenharmony_ci{ 2073bf215546Sopenharmony_ci const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateGraphicsPipelines_EXT; 2074bf215546Sopenharmony_ci size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type); 2075bf215546Sopenharmony_ci 2076bf215546Sopenharmony_ci VkResult ret; 2077bf215546Sopenharmony_ci cmd_size += vn_sizeof_VkResult(&ret); 2078bf215546Sopenharmony_ci /* skip device */ 2079bf215546Sopenharmony_ci /* skip pipelineCache */ 2080bf215546Sopenharmony_ci /* skip createInfoCount */ 2081bf215546Sopenharmony_ci /* skip pCreateInfos */ 2082bf215546Sopenharmony_ci /* skip pAllocator */ 2083bf215546Sopenharmony_ci if (pPipelines) { 2084bf215546Sopenharmony_ci cmd_size += vn_sizeof_array_size(createInfoCount); 2085bf215546Sopenharmony_ci for (uint32_t i = 0; i < createInfoCount; i++) 2086bf215546Sopenharmony_ci cmd_size += vn_sizeof_VkPipeline(&pPipelines[i]); 2087bf215546Sopenharmony_ci } else { 2088bf215546Sopenharmony_ci cmd_size += vn_sizeof_array_size(0); 2089bf215546Sopenharmony_ci } 2090bf215546Sopenharmony_ci 2091bf215546Sopenharmony_ci return cmd_size; 2092bf215546Sopenharmony_ci} 2093bf215546Sopenharmony_ci 2094bf215546Sopenharmony_cistatic 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) 2095bf215546Sopenharmony_ci{ 2096bf215546Sopenharmony_ci VkCommandTypeEXT command_type; 2097bf215546Sopenharmony_ci vn_decode_VkCommandTypeEXT(dec, &command_type); 2098bf215546Sopenharmony_ci assert(command_type == VK_COMMAND_TYPE_vkCreateGraphicsPipelines_EXT); 2099bf215546Sopenharmony_ci 2100bf215546Sopenharmony_ci VkResult ret; 2101bf215546Sopenharmony_ci vn_decode_VkResult(dec, &ret); 2102bf215546Sopenharmony_ci /* skip device */ 2103bf215546Sopenharmony_ci /* skip pipelineCache */ 2104bf215546Sopenharmony_ci /* skip createInfoCount */ 2105bf215546Sopenharmony_ci /* skip pCreateInfos */ 2106bf215546Sopenharmony_ci /* skip pAllocator */ 2107bf215546Sopenharmony_ci if (vn_peek_array_size(dec)) { 2108bf215546Sopenharmony_ci const uint32_t iter_count = vn_decode_array_size(dec, createInfoCount); 2109bf215546Sopenharmony_ci for (uint32_t i = 0; i < iter_count; i++) 2110bf215546Sopenharmony_ci vn_decode_VkPipeline(dec, &pPipelines[i]); 2111bf215546Sopenharmony_ci } else { 2112bf215546Sopenharmony_ci vn_decode_array_size_unchecked(dec); 2113bf215546Sopenharmony_ci pPipelines = NULL; 2114bf215546Sopenharmony_ci } 2115bf215546Sopenharmony_ci 2116bf215546Sopenharmony_ci return ret; 2117bf215546Sopenharmony_ci} 2118bf215546Sopenharmony_ci 2119bf215546Sopenharmony_cistatic inline size_t vn_sizeof_vkCreateComputePipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) 2120bf215546Sopenharmony_ci{ 2121bf215546Sopenharmony_ci const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateComputePipelines_EXT; 2122bf215546Sopenharmony_ci const VkFlags cmd_flags = 0; 2123bf215546Sopenharmony_ci size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags); 2124bf215546Sopenharmony_ci 2125bf215546Sopenharmony_ci cmd_size += vn_sizeof_VkDevice(&device); 2126bf215546Sopenharmony_ci cmd_size += vn_sizeof_VkPipelineCache(&pipelineCache); 2127bf215546Sopenharmony_ci cmd_size += vn_sizeof_uint32_t(&createInfoCount); 2128bf215546Sopenharmony_ci if (pCreateInfos) { 2129bf215546Sopenharmony_ci cmd_size += vn_sizeof_array_size(createInfoCount); 2130bf215546Sopenharmony_ci for (uint32_t i = 0; i < createInfoCount; i++) 2131bf215546Sopenharmony_ci cmd_size += vn_sizeof_VkComputePipelineCreateInfo(&pCreateInfos[i]); 2132bf215546Sopenharmony_ci } else { 2133bf215546Sopenharmony_ci cmd_size += vn_sizeof_array_size(0); 2134bf215546Sopenharmony_ci } 2135bf215546Sopenharmony_ci cmd_size += vn_sizeof_simple_pointer(pAllocator); 2136bf215546Sopenharmony_ci if (pAllocator) 2137bf215546Sopenharmony_ci assert(false); 2138bf215546Sopenharmony_ci if (pPipelines) { 2139bf215546Sopenharmony_ci cmd_size += vn_sizeof_array_size(createInfoCount); 2140bf215546Sopenharmony_ci for (uint32_t i = 0; i < createInfoCount; i++) 2141bf215546Sopenharmony_ci cmd_size += vn_sizeof_VkPipeline(&pPipelines[i]); 2142bf215546Sopenharmony_ci } else { 2143bf215546Sopenharmony_ci cmd_size += vn_sizeof_array_size(0); 2144bf215546Sopenharmony_ci } 2145bf215546Sopenharmony_ci 2146bf215546Sopenharmony_ci return cmd_size; 2147bf215546Sopenharmony_ci} 2148bf215546Sopenharmony_ci 2149bf215546Sopenharmony_cistatic 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) 2150bf215546Sopenharmony_ci{ 2151bf215546Sopenharmony_ci const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateComputePipelines_EXT; 2152bf215546Sopenharmony_ci 2153bf215546Sopenharmony_ci vn_encode_VkCommandTypeEXT(enc, &cmd_type); 2154bf215546Sopenharmony_ci vn_encode_VkFlags(enc, &cmd_flags); 2155bf215546Sopenharmony_ci 2156bf215546Sopenharmony_ci vn_encode_VkDevice(enc, &device); 2157bf215546Sopenharmony_ci vn_encode_VkPipelineCache(enc, &pipelineCache); 2158bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &createInfoCount); 2159bf215546Sopenharmony_ci if (pCreateInfos) { 2160bf215546Sopenharmony_ci vn_encode_array_size(enc, createInfoCount); 2161bf215546Sopenharmony_ci for (uint32_t i = 0; i < createInfoCount; i++) 2162bf215546Sopenharmony_ci vn_encode_VkComputePipelineCreateInfo(enc, &pCreateInfos[i]); 2163bf215546Sopenharmony_ci } else { 2164bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 2165bf215546Sopenharmony_ci } 2166bf215546Sopenharmony_ci if (vn_encode_simple_pointer(enc, pAllocator)) 2167bf215546Sopenharmony_ci assert(false); 2168bf215546Sopenharmony_ci if (pPipelines) { 2169bf215546Sopenharmony_ci vn_encode_array_size(enc, createInfoCount); 2170bf215546Sopenharmony_ci for (uint32_t i = 0; i < createInfoCount; i++) 2171bf215546Sopenharmony_ci vn_encode_VkPipeline(enc, &pPipelines[i]); 2172bf215546Sopenharmony_ci } else { 2173bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 2174bf215546Sopenharmony_ci } 2175bf215546Sopenharmony_ci} 2176bf215546Sopenharmony_ci 2177bf215546Sopenharmony_cistatic inline size_t vn_sizeof_vkCreateComputePipelines_reply(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) 2178bf215546Sopenharmony_ci{ 2179bf215546Sopenharmony_ci const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateComputePipelines_EXT; 2180bf215546Sopenharmony_ci size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type); 2181bf215546Sopenharmony_ci 2182bf215546Sopenharmony_ci VkResult ret; 2183bf215546Sopenharmony_ci cmd_size += vn_sizeof_VkResult(&ret); 2184bf215546Sopenharmony_ci /* skip device */ 2185bf215546Sopenharmony_ci /* skip pipelineCache */ 2186bf215546Sopenharmony_ci /* skip createInfoCount */ 2187bf215546Sopenharmony_ci /* skip pCreateInfos */ 2188bf215546Sopenharmony_ci /* skip pAllocator */ 2189bf215546Sopenharmony_ci if (pPipelines) { 2190bf215546Sopenharmony_ci cmd_size += vn_sizeof_array_size(createInfoCount); 2191bf215546Sopenharmony_ci for (uint32_t i = 0; i < createInfoCount; i++) 2192bf215546Sopenharmony_ci cmd_size += vn_sizeof_VkPipeline(&pPipelines[i]); 2193bf215546Sopenharmony_ci } else { 2194bf215546Sopenharmony_ci cmd_size += vn_sizeof_array_size(0); 2195bf215546Sopenharmony_ci } 2196bf215546Sopenharmony_ci 2197bf215546Sopenharmony_ci return cmd_size; 2198bf215546Sopenharmony_ci} 2199bf215546Sopenharmony_ci 2200bf215546Sopenharmony_cistatic 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) 2201bf215546Sopenharmony_ci{ 2202bf215546Sopenharmony_ci VkCommandTypeEXT command_type; 2203bf215546Sopenharmony_ci vn_decode_VkCommandTypeEXT(dec, &command_type); 2204bf215546Sopenharmony_ci assert(command_type == VK_COMMAND_TYPE_vkCreateComputePipelines_EXT); 2205bf215546Sopenharmony_ci 2206bf215546Sopenharmony_ci VkResult ret; 2207bf215546Sopenharmony_ci vn_decode_VkResult(dec, &ret); 2208bf215546Sopenharmony_ci /* skip device */ 2209bf215546Sopenharmony_ci /* skip pipelineCache */ 2210bf215546Sopenharmony_ci /* skip createInfoCount */ 2211bf215546Sopenharmony_ci /* skip pCreateInfos */ 2212bf215546Sopenharmony_ci /* skip pAllocator */ 2213bf215546Sopenharmony_ci if (vn_peek_array_size(dec)) { 2214bf215546Sopenharmony_ci const uint32_t iter_count = vn_decode_array_size(dec, createInfoCount); 2215bf215546Sopenharmony_ci for (uint32_t i = 0; i < iter_count; i++) 2216bf215546Sopenharmony_ci vn_decode_VkPipeline(dec, &pPipelines[i]); 2217bf215546Sopenharmony_ci } else { 2218bf215546Sopenharmony_ci vn_decode_array_size_unchecked(dec); 2219bf215546Sopenharmony_ci pPipelines = NULL; 2220bf215546Sopenharmony_ci } 2221bf215546Sopenharmony_ci 2222bf215546Sopenharmony_ci return ret; 2223bf215546Sopenharmony_ci} 2224bf215546Sopenharmony_ci 2225bf215546Sopenharmony_cistatic inline size_t vn_sizeof_vkDestroyPipeline(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator) 2226bf215546Sopenharmony_ci{ 2227bf215546Sopenharmony_ci const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyPipeline_EXT; 2228bf215546Sopenharmony_ci const VkFlags cmd_flags = 0; 2229bf215546Sopenharmony_ci size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags); 2230bf215546Sopenharmony_ci 2231bf215546Sopenharmony_ci cmd_size += vn_sizeof_VkDevice(&device); 2232bf215546Sopenharmony_ci cmd_size += vn_sizeof_VkPipeline(&pipeline); 2233bf215546Sopenharmony_ci cmd_size += vn_sizeof_simple_pointer(pAllocator); 2234bf215546Sopenharmony_ci if (pAllocator) 2235bf215546Sopenharmony_ci assert(false); 2236bf215546Sopenharmony_ci 2237bf215546Sopenharmony_ci return cmd_size; 2238bf215546Sopenharmony_ci} 2239bf215546Sopenharmony_ci 2240bf215546Sopenharmony_cistatic inline void vn_encode_vkDestroyPipeline(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator) 2241bf215546Sopenharmony_ci{ 2242bf215546Sopenharmony_ci const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyPipeline_EXT; 2243bf215546Sopenharmony_ci 2244bf215546Sopenharmony_ci vn_encode_VkCommandTypeEXT(enc, &cmd_type); 2245bf215546Sopenharmony_ci vn_encode_VkFlags(enc, &cmd_flags); 2246bf215546Sopenharmony_ci 2247bf215546Sopenharmony_ci vn_encode_VkDevice(enc, &device); 2248bf215546Sopenharmony_ci vn_encode_VkPipeline(enc, &pipeline); 2249bf215546Sopenharmony_ci if (vn_encode_simple_pointer(enc, pAllocator)) 2250bf215546Sopenharmony_ci assert(false); 2251bf215546Sopenharmony_ci} 2252bf215546Sopenharmony_ci 2253bf215546Sopenharmony_cistatic inline size_t vn_sizeof_vkDestroyPipeline_reply(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator) 2254bf215546Sopenharmony_ci{ 2255bf215546Sopenharmony_ci const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyPipeline_EXT; 2256bf215546Sopenharmony_ci size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type); 2257bf215546Sopenharmony_ci 2258bf215546Sopenharmony_ci /* skip device */ 2259bf215546Sopenharmony_ci /* skip pipeline */ 2260bf215546Sopenharmony_ci /* skip pAllocator */ 2261bf215546Sopenharmony_ci 2262bf215546Sopenharmony_ci return cmd_size; 2263bf215546Sopenharmony_ci} 2264bf215546Sopenharmony_ci 2265bf215546Sopenharmony_cistatic inline void vn_decode_vkDestroyPipeline_reply(struct vn_cs_decoder *dec, VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator) 2266bf215546Sopenharmony_ci{ 2267bf215546Sopenharmony_ci VkCommandTypeEXT command_type; 2268bf215546Sopenharmony_ci vn_decode_VkCommandTypeEXT(dec, &command_type); 2269bf215546Sopenharmony_ci assert(command_type == VK_COMMAND_TYPE_vkDestroyPipeline_EXT); 2270bf215546Sopenharmony_ci 2271bf215546Sopenharmony_ci /* skip device */ 2272bf215546Sopenharmony_ci /* skip pipeline */ 2273bf215546Sopenharmony_ci /* skip pAllocator */ 2274bf215546Sopenharmony_ci} 2275bf215546Sopenharmony_ci 2276bf215546Sopenharmony_cistatic 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) 2277bf215546Sopenharmony_ci{ 2278bf215546Sopenharmony_ci uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE]; 2279bf215546Sopenharmony_ci void *cmd_data = local_cmd_data; 2280bf215546Sopenharmony_ci size_t cmd_size = vn_sizeof_vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines); 2281bf215546Sopenharmony_ci if (cmd_size > sizeof(local_cmd_data)) { 2282bf215546Sopenharmony_ci cmd_data = malloc(cmd_size); 2283bf215546Sopenharmony_ci if (!cmd_data) 2284bf215546Sopenharmony_ci cmd_size = 0; 2285bf215546Sopenharmony_ci } 2286bf215546Sopenharmony_ci const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkCreateGraphicsPipelines_reply(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) : 0; 2287bf215546Sopenharmony_ci 2288bf215546Sopenharmony_ci struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size); 2289bf215546Sopenharmony_ci if (cmd_size) { 2290bf215546Sopenharmony_ci vn_encode_vkCreateGraphicsPipelines(enc, cmd_flags, device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines); 2291bf215546Sopenharmony_ci vn_instance_submit_command(vn_instance, submit); 2292bf215546Sopenharmony_ci if (cmd_data != local_cmd_data) 2293bf215546Sopenharmony_ci free(cmd_data); 2294bf215546Sopenharmony_ci } 2295bf215546Sopenharmony_ci} 2296bf215546Sopenharmony_ci 2297bf215546Sopenharmony_cistatic 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) 2298bf215546Sopenharmony_ci{ 2299bf215546Sopenharmony_ci uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE]; 2300bf215546Sopenharmony_ci void *cmd_data = local_cmd_data; 2301bf215546Sopenharmony_ci size_t cmd_size = vn_sizeof_vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines); 2302bf215546Sopenharmony_ci if (cmd_size > sizeof(local_cmd_data)) { 2303bf215546Sopenharmony_ci cmd_data = malloc(cmd_size); 2304bf215546Sopenharmony_ci if (!cmd_data) 2305bf215546Sopenharmony_ci cmd_size = 0; 2306bf215546Sopenharmony_ci } 2307bf215546Sopenharmony_ci const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkCreateComputePipelines_reply(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) : 0; 2308bf215546Sopenharmony_ci 2309bf215546Sopenharmony_ci struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size); 2310bf215546Sopenharmony_ci if (cmd_size) { 2311bf215546Sopenharmony_ci vn_encode_vkCreateComputePipelines(enc, cmd_flags, device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines); 2312bf215546Sopenharmony_ci vn_instance_submit_command(vn_instance, submit); 2313bf215546Sopenharmony_ci if (cmd_data != local_cmd_data) 2314bf215546Sopenharmony_ci free(cmd_data); 2315bf215546Sopenharmony_ci } 2316bf215546Sopenharmony_ci} 2317bf215546Sopenharmony_ci 2318bf215546Sopenharmony_cistatic 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) 2319bf215546Sopenharmony_ci{ 2320bf215546Sopenharmony_ci uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE]; 2321bf215546Sopenharmony_ci void *cmd_data = local_cmd_data; 2322bf215546Sopenharmony_ci size_t cmd_size = vn_sizeof_vkDestroyPipeline(device, pipeline, pAllocator); 2323bf215546Sopenharmony_ci if (cmd_size > sizeof(local_cmd_data)) { 2324bf215546Sopenharmony_ci cmd_data = malloc(cmd_size); 2325bf215546Sopenharmony_ci if (!cmd_data) 2326bf215546Sopenharmony_ci cmd_size = 0; 2327bf215546Sopenharmony_ci } 2328bf215546Sopenharmony_ci const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkDestroyPipeline_reply(device, pipeline, pAllocator) : 0; 2329bf215546Sopenharmony_ci 2330bf215546Sopenharmony_ci struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size); 2331bf215546Sopenharmony_ci if (cmd_size) { 2332bf215546Sopenharmony_ci vn_encode_vkDestroyPipeline(enc, cmd_flags, device, pipeline, pAllocator); 2333bf215546Sopenharmony_ci vn_instance_submit_command(vn_instance, submit); 2334bf215546Sopenharmony_ci if (cmd_data != local_cmd_data) 2335bf215546Sopenharmony_ci free(cmd_data); 2336bf215546Sopenharmony_ci } 2337bf215546Sopenharmony_ci} 2338bf215546Sopenharmony_ci 2339bf215546Sopenharmony_cistatic 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) 2340bf215546Sopenharmony_ci{ 2341bf215546Sopenharmony_ci VN_TRACE_FUNC(); 2342bf215546Sopenharmony_ci 2343bf215546Sopenharmony_ci struct vn_instance_submit_command submit; 2344bf215546Sopenharmony_ci vn_submit_vkCreateGraphicsPipelines(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, &submit); 2345bf215546Sopenharmony_ci struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit); 2346bf215546Sopenharmony_ci if (dec) { 2347bf215546Sopenharmony_ci const VkResult ret = vn_decode_vkCreateGraphicsPipelines_reply(dec, device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines); 2348bf215546Sopenharmony_ci vn_instance_free_command_reply(vn_instance, &submit); 2349bf215546Sopenharmony_ci return ret; 2350bf215546Sopenharmony_ci } else { 2351bf215546Sopenharmony_ci return VK_ERROR_OUT_OF_HOST_MEMORY; 2352bf215546Sopenharmony_ci } 2353bf215546Sopenharmony_ci} 2354bf215546Sopenharmony_ci 2355bf215546Sopenharmony_cistatic 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) 2356bf215546Sopenharmony_ci{ 2357bf215546Sopenharmony_ci struct vn_instance_submit_command submit; 2358bf215546Sopenharmony_ci vn_submit_vkCreateGraphicsPipelines(vn_instance, 0, device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, &submit); 2359bf215546Sopenharmony_ci} 2360bf215546Sopenharmony_ci 2361bf215546Sopenharmony_cistatic 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) 2362bf215546Sopenharmony_ci{ 2363bf215546Sopenharmony_ci VN_TRACE_FUNC(); 2364bf215546Sopenharmony_ci 2365bf215546Sopenharmony_ci struct vn_instance_submit_command submit; 2366bf215546Sopenharmony_ci vn_submit_vkCreateComputePipelines(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, &submit); 2367bf215546Sopenharmony_ci struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit); 2368bf215546Sopenharmony_ci if (dec) { 2369bf215546Sopenharmony_ci const VkResult ret = vn_decode_vkCreateComputePipelines_reply(dec, device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines); 2370bf215546Sopenharmony_ci vn_instance_free_command_reply(vn_instance, &submit); 2371bf215546Sopenharmony_ci return ret; 2372bf215546Sopenharmony_ci } else { 2373bf215546Sopenharmony_ci return VK_ERROR_OUT_OF_HOST_MEMORY; 2374bf215546Sopenharmony_ci } 2375bf215546Sopenharmony_ci} 2376bf215546Sopenharmony_ci 2377bf215546Sopenharmony_cistatic 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) 2378bf215546Sopenharmony_ci{ 2379bf215546Sopenharmony_ci struct vn_instance_submit_command submit; 2380bf215546Sopenharmony_ci vn_submit_vkCreateComputePipelines(vn_instance, 0, device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, &submit); 2381bf215546Sopenharmony_ci} 2382bf215546Sopenharmony_ci 2383bf215546Sopenharmony_cistatic inline void vn_call_vkDestroyPipeline(struct vn_instance *vn_instance, VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator) 2384bf215546Sopenharmony_ci{ 2385bf215546Sopenharmony_ci VN_TRACE_FUNC(); 2386bf215546Sopenharmony_ci 2387bf215546Sopenharmony_ci struct vn_instance_submit_command submit; 2388bf215546Sopenharmony_ci vn_submit_vkDestroyPipeline(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pipeline, pAllocator, &submit); 2389bf215546Sopenharmony_ci struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit); 2390bf215546Sopenharmony_ci if (dec) { 2391bf215546Sopenharmony_ci vn_decode_vkDestroyPipeline_reply(dec, device, pipeline, pAllocator); 2392bf215546Sopenharmony_ci vn_instance_free_command_reply(vn_instance, &submit); 2393bf215546Sopenharmony_ci } 2394bf215546Sopenharmony_ci} 2395bf215546Sopenharmony_ci 2396bf215546Sopenharmony_cistatic inline void vn_async_vkDestroyPipeline(struct vn_instance *vn_instance, VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator) 2397bf215546Sopenharmony_ci{ 2398bf215546Sopenharmony_ci struct vn_instance_submit_command submit; 2399bf215546Sopenharmony_ci vn_submit_vkDestroyPipeline(vn_instance, 0, device, pipeline, pAllocator, &submit); 2400bf215546Sopenharmony_ci} 2401bf215546Sopenharmony_ci 2402bf215546Sopenharmony_ci#endif /* VN_PROTOCOL_DRIVER_PIPELINE_H */ 2403