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