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_TRANSPORT_H 9 #define VN_PROTOCOL_DRIVER_TRANSPORT_H 10 11 #include "vn_instance.h" 12 #include "vn_protocol_driver_structs.h" 13 14 /* 15 * These structs/unions/commands are not included 16 * 17 * vkGetMemoryFdKHR 18 * vkGetMemoryFdPropertiesKHR 19 */ 20 21 /* struct VkCommandStreamDescriptionMESA */ 22 23 static inline size_t 24 vn_sizeof_VkCommandStreamDescriptionMESA(const VkCommandStreamDescriptionMESA *val) 25 { 26 size_t size = 0; 27 size += vn_sizeof_uint32_t(&val->resourceId); 28 size += vn_sizeof_size_t(&val->offset); 29 size += vn_sizeof_size_t(&val->size); 30 return size; 31 } 32 33 static inline void 34 vn_encode_VkCommandStreamDescriptionMESA(struct vn_cs_encoder *enc, const VkCommandStreamDescriptionMESA *val) 35 { 36 vn_encode_uint32_t(enc, &val->resourceId); 37 vn_encode_size_t(enc, &val->offset); 38 vn_encode_size_t(enc, &val->size); 39 } 40 41 /* struct VkCommandStreamDependencyMESA */ 42 43 static inline size_t 44 vn_sizeof_VkCommandStreamDependencyMESA(const VkCommandStreamDependencyMESA *val) 45 { 46 size_t size = 0; 47 size += vn_sizeof_uint32_t(&val->srcCommandStream); 48 size += vn_sizeof_uint32_t(&val->dstCommandStream); 49 return size; 50 } 51 52 static inline void 53 vn_encode_VkCommandStreamDependencyMESA(struct vn_cs_encoder *enc, const VkCommandStreamDependencyMESA *val) 54 { 55 vn_encode_uint32_t(enc, &val->srcCommandStream); 56 vn_encode_uint32_t(enc, &val->dstCommandStream); 57 } 58 59 /* struct VkRingCreateInfoMESA chain */ 60 61 static inline size_t 62 vn_sizeof_VkRingCreateInfoMESA_pnext(const void *val) 63 { 64 /* no known/supported struct */ 65 return vn_sizeof_simple_pointer(NULL); 66 } 67 68 static inline size_t 69 vn_sizeof_VkRingCreateInfoMESA_self(const VkRingCreateInfoMESA *val) 70 { 71 size_t size = 0; 72 /* skip val->{sType,pNext} */ 73 size += vn_sizeof_VkFlags(&val->flags); 74 size += vn_sizeof_uint32_t(&val->resourceId); 75 size += vn_sizeof_size_t(&val->offset); 76 size += vn_sizeof_size_t(&val->size); 77 size += vn_sizeof_uint64_t(&val->idleTimeout); 78 size += vn_sizeof_size_t(&val->headOffset); 79 size += vn_sizeof_size_t(&val->tailOffset); 80 size += vn_sizeof_size_t(&val->statusOffset); 81 size += vn_sizeof_size_t(&val->bufferOffset); 82 size += vn_sizeof_size_t(&val->bufferSize); 83 size += vn_sizeof_size_t(&val->extraOffset); 84 size += vn_sizeof_size_t(&val->extraSize); 85 return size; 86 } 87 88 static inline size_t 89 vn_sizeof_VkRingCreateInfoMESA(const VkRingCreateInfoMESA *val) 90 { 91 size_t size = 0; 92 93 size += vn_sizeof_VkStructureType(&val->sType); 94 size += vn_sizeof_VkRingCreateInfoMESA_pnext(val->pNext); 95 size += vn_sizeof_VkRingCreateInfoMESA_self(val); 96 97 return size; 98 } 99 100 static inline void 101 vn_encode_VkRingCreateInfoMESA_pnext(struct vn_cs_encoder *enc, const void *val) 102 { 103 /* no known/supported struct */ 104 vn_encode_simple_pointer(enc, NULL); 105 } 106 107 static inline void 108 vn_encode_VkRingCreateInfoMESA_self(struct vn_cs_encoder *enc, const VkRingCreateInfoMESA *val) 109 { 110 /* skip val->{sType,pNext} */ 111 vn_encode_VkFlags(enc, &val->flags); 112 vn_encode_uint32_t(enc, &val->resourceId); 113 vn_encode_size_t(enc, &val->offset); 114 vn_encode_size_t(enc, &val->size); 115 vn_encode_uint64_t(enc, &val->idleTimeout); 116 vn_encode_size_t(enc, &val->headOffset); 117 vn_encode_size_t(enc, &val->tailOffset); 118 vn_encode_size_t(enc, &val->statusOffset); 119 vn_encode_size_t(enc, &val->bufferOffset); 120 vn_encode_size_t(enc, &val->bufferSize); 121 vn_encode_size_t(enc, &val->extraOffset); 122 vn_encode_size_t(enc, &val->extraSize); 123 } 124 125 static inline void 126 vn_encode_VkRingCreateInfoMESA(struct vn_cs_encoder *enc, const VkRingCreateInfoMESA *val) 127 { 128 assert(val->sType == VK_STRUCTURE_TYPE_RING_CREATE_INFO_MESA); 129 vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_RING_CREATE_INFO_MESA }); 130 vn_encode_VkRingCreateInfoMESA_pnext(enc, val->pNext); 131 vn_encode_VkRingCreateInfoMESA_self(enc, val); 132 } 133 134 /* struct VkMemoryResourceAllocationSizeProperties100000MESA chain */ 135 136 static inline size_t 137 vn_sizeof_VkMemoryResourceAllocationSizeProperties100000MESA_pnext(const void *val) 138 { 139 /* no known/supported struct */ 140 return vn_sizeof_simple_pointer(NULL); 141 } 142 143 static inline size_t 144 vn_sizeof_VkMemoryResourceAllocationSizeProperties100000MESA_self(const VkMemoryResourceAllocationSizeProperties100000MESA *val) 145 { 146 size_t size = 0; 147 /* skip val->{sType,pNext} */ 148 size += vn_sizeof_uint64_t(&val->allocationSize); 149 return size; 150 } 151 152 static inline size_t 153 vn_sizeof_VkMemoryResourceAllocationSizeProperties100000MESA(const VkMemoryResourceAllocationSizeProperties100000MESA *val) 154 { 155 size_t size = 0; 156 157 size += vn_sizeof_VkStructureType(&val->sType); 158 size += vn_sizeof_VkMemoryResourceAllocationSizeProperties100000MESA_pnext(val->pNext); 159 size += vn_sizeof_VkMemoryResourceAllocationSizeProperties100000MESA_self(val); 160 161 return size; 162 } 163 164 static inline void 165 vn_decode_VkMemoryResourceAllocationSizeProperties100000MESA_pnext(struct vn_cs_decoder *dec, const void *val) 166 { 167 /* no known/supported struct */ 168 if (vn_decode_simple_pointer(dec)) 169 assert(false); 170 } 171 172 static inline void 173 vn_decode_VkMemoryResourceAllocationSizeProperties100000MESA_self(struct vn_cs_decoder *dec, VkMemoryResourceAllocationSizeProperties100000MESA *val) 174 { 175 /* skip val->{sType,pNext} */ 176 vn_decode_uint64_t(dec, &val->allocationSize); 177 } 178 179 static inline void 180 vn_decode_VkMemoryResourceAllocationSizeProperties100000MESA(struct vn_cs_decoder *dec, VkMemoryResourceAllocationSizeProperties100000MESA *val) 181 { 182 VkStructureType stype; 183 vn_decode_VkStructureType(dec, &stype); 184 assert(stype == VK_STRUCTURE_TYPE_MEMORY_RESOURCE_ALLOCATION_SIZE_PROPERTIES_100000_MESA); 185 186 assert(val->sType == stype); 187 vn_decode_VkMemoryResourceAllocationSizeProperties100000MESA_pnext(dec, val->pNext); 188 vn_decode_VkMemoryResourceAllocationSizeProperties100000MESA_self(dec, val); 189 } 190 191 static inline size_t 192 vn_sizeof_VkMemoryResourceAllocationSizeProperties100000MESA_pnext_partial(const void *val) 193 { 194 /* no known/supported struct */ 195 return vn_sizeof_simple_pointer(NULL); 196 } 197 198 static inline size_t 199 vn_sizeof_VkMemoryResourceAllocationSizeProperties100000MESA_self_partial(const VkMemoryResourceAllocationSizeProperties100000MESA *val) 200 { 201 size_t size = 0; 202 /* skip val->{sType,pNext} */ 203 /* skip val->allocationSize */ 204 return size; 205 } 206 207 static inline size_t 208 vn_sizeof_VkMemoryResourceAllocationSizeProperties100000MESA_partial(const VkMemoryResourceAllocationSizeProperties100000MESA *val) 209 { 210 size_t size = 0; 211 212 size += vn_sizeof_VkStructureType(&val->sType); 213 size += vn_sizeof_VkMemoryResourceAllocationSizeProperties100000MESA_pnext_partial(val->pNext); 214 size += vn_sizeof_VkMemoryResourceAllocationSizeProperties100000MESA_self_partial(val); 215 216 return size; 217 } 218 219 static inline void 220 vn_encode_VkMemoryResourceAllocationSizeProperties100000MESA_pnext_partial(struct vn_cs_encoder *enc, const void *val) 221 { 222 /* no known/supported struct */ 223 vn_encode_simple_pointer(enc, NULL); 224 } 225 226 static inline void 227 vn_encode_VkMemoryResourceAllocationSizeProperties100000MESA_self_partial(struct vn_cs_encoder *enc, const VkMemoryResourceAllocationSizeProperties100000MESA *val) 228 { 229 /* skip val->{sType,pNext} */ 230 /* skip val->allocationSize */ 231 } 232 233 static inline void 234 vn_encode_VkMemoryResourceAllocationSizeProperties100000MESA_partial(struct vn_cs_encoder *enc, const VkMemoryResourceAllocationSizeProperties100000MESA *val) 235 { 236 assert(val->sType == VK_STRUCTURE_TYPE_MEMORY_RESOURCE_ALLOCATION_SIZE_PROPERTIES_100000_MESA); 237 vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_MEMORY_RESOURCE_ALLOCATION_SIZE_PROPERTIES_100000_MESA }); 238 vn_encode_VkMemoryResourceAllocationSizeProperties100000MESA_pnext_partial(enc, val->pNext); 239 vn_encode_VkMemoryResourceAllocationSizeProperties100000MESA_self_partial(enc, val); 240 } 241 242 /* struct VkMemoryResourcePropertiesMESA chain */ 243 244 static inline size_t 245 vn_sizeof_VkMemoryResourcePropertiesMESA_pnext(const void *val) 246 { 247 const VkBaseInStructure *pnext = val; 248 size_t size = 0; 249 250 while (pnext) { 251 switch ((int32_t)pnext->sType) { 252 case VK_STRUCTURE_TYPE_MEMORY_RESOURCE_ALLOCATION_SIZE_PROPERTIES_100000_MESA: 253 size += vn_sizeof_simple_pointer(pnext); 254 size += vn_sizeof_VkStructureType(&pnext->sType); 255 size += vn_sizeof_VkMemoryResourcePropertiesMESA_pnext(pnext->pNext); 256 size += vn_sizeof_VkMemoryResourceAllocationSizeProperties100000MESA_self((const VkMemoryResourceAllocationSizeProperties100000MESA *)pnext); 257 return size; 258 default: 259 /* ignore unknown/unsupported struct */ 260 break; 261 } 262 pnext = pnext->pNext; 263 } 264 265 return vn_sizeof_simple_pointer(NULL); 266 } 267 268 static inline size_t 269 vn_sizeof_VkMemoryResourcePropertiesMESA_self(const VkMemoryResourcePropertiesMESA *val) 270 { 271 size_t size = 0; 272 /* skip val->{sType,pNext} */ 273 size += vn_sizeof_uint32_t(&val->memoryTypeBits); 274 return size; 275 } 276 277 static inline size_t 278 vn_sizeof_VkMemoryResourcePropertiesMESA(const VkMemoryResourcePropertiesMESA *val) 279 { 280 size_t size = 0; 281 282 size += vn_sizeof_VkStructureType(&val->sType); 283 size += vn_sizeof_VkMemoryResourcePropertiesMESA_pnext(val->pNext); 284 size += vn_sizeof_VkMemoryResourcePropertiesMESA_self(val); 285 286 return size; 287 } 288 289 static inline void 290 vn_decode_VkMemoryResourcePropertiesMESA_pnext(struct vn_cs_decoder *dec, const void *val) 291 { 292 VkBaseOutStructure *pnext = (VkBaseOutStructure *)val; 293 VkStructureType stype; 294 295 if (!vn_decode_simple_pointer(dec)) 296 return; 297 298 vn_decode_VkStructureType(dec, &stype); 299 while (true) { 300 assert(pnext); 301 if (pnext->sType == stype) 302 break; 303 } 304 305 switch ((int32_t)pnext->sType) { 306 case VK_STRUCTURE_TYPE_MEMORY_RESOURCE_ALLOCATION_SIZE_PROPERTIES_100000_MESA: 307 vn_decode_VkMemoryResourcePropertiesMESA_pnext(dec, pnext->pNext); 308 vn_decode_VkMemoryResourceAllocationSizeProperties100000MESA_self(dec, (VkMemoryResourceAllocationSizeProperties100000MESA *)pnext); 309 break; 310 default: 311 assert(false); 312 break; 313 } 314 } 315 316 static inline void 317 vn_decode_VkMemoryResourcePropertiesMESA_self(struct vn_cs_decoder *dec, VkMemoryResourcePropertiesMESA *val) 318 { 319 /* skip val->{sType,pNext} */ 320 vn_decode_uint32_t(dec, &val->memoryTypeBits); 321 } 322 323 static inline void 324 vn_decode_VkMemoryResourcePropertiesMESA(struct vn_cs_decoder *dec, VkMemoryResourcePropertiesMESA *val) 325 { 326 VkStructureType stype; 327 vn_decode_VkStructureType(dec, &stype); 328 assert(stype == VK_STRUCTURE_TYPE_MEMORY_RESOURCE_PROPERTIES_MESA); 329 330 assert(val->sType == stype); 331 vn_decode_VkMemoryResourcePropertiesMESA_pnext(dec, val->pNext); 332 vn_decode_VkMemoryResourcePropertiesMESA_self(dec, val); 333 } 334 335 static inline size_t 336 vn_sizeof_VkMemoryResourcePropertiesMESA_pnext_partial(const void *val) 337 { 338 const VkBaseInStructure *pnext = val; 339 size_t size = 0; 340 341 while (pnext) { 342 switch ((int32_t)pnext->sType) { 343 case VK_STRUCTURE_TYPE_MEMORY_RESOURCE_ALLOCATION_SIZE_PROPERTIES_100000_MESA: 344 size += vn_sizeof_simple_pointer(pnext); 345 size += vn_sizeof_VkStructureType(&pnext->sType); 346 size += vn_sizeof_VkMemoryResourcePropertiesMESA_pnext_partial(pnext->pNext); 347 size += vn_sizeof_VkMemoryResourceAllocationSizeProperties100000MESA_self_partial((const VkMemoryResourceAllocationSizeProperties100000MESA *)pnext); 348 return size; 349 default: 350 /* ignore unknown/unsupported struct */ 351 break; 352 } 353 pnext = pnext->pNext; 354 } 355 356 return vn_sizeof_simple_pointer(NULL); 357 } 358 359 static inline size_t 360 vn_sizeof_VkMemoryResourcePropertiesMESA_self_partial(const VkMemoryResourcePropertiesMESA *val) 361 { 362 size_t size = 0; 363 /* skip val->{sType,pNext} */ 364 /* skip val->memoryTypeBits */ 365 return size; 366 } 367 368 static inline size_t 369 vn_sizeof_VkMemoryResourcePropertiesMESA_partial(const VkMemoryResourcePropertiesMESA *val) 370 { 371 size_t size = 0; 372 373 size += vn_sizeof_VkStructureType(&val->sType); 374 size += vn_sizeof_VkMemoryResourcePropertiesMESA_pnext_partial(val->pNext); 375 size += vn_sizeof_VkMemoryResourcePropertiesMESA_self_partial(val); 376 377 return size; 378 } 379 380 static inline void 381 vn_encode_VkMemoryResourcePropertiesMESA_pnext_partial(struct vn_cs_encoder *enc, const void *val) 382 { 383 const VkBaseInStructure *pnext = val; 384 385 while (pnext) { 386 switch ((int32_t)pnext->sType) { 387 case VK_STRUCTURE_TYPE_MEMORY_RESOURCE_ALLOCATION_SIZE_PROPERTIES_100000_MESA: 388 vn_encode_simple_pointer(enc, pnext); 389 vn_encode_VkStructureType(enc, &pnext->sType); 390 vn_encode_VkMemoryResourcePropertiesMESA_pnext_partial(enc, pnext->pNext); 391 vn_encode_VkMemoryResourceAllocationSizeProperties100000MESA_self_partial(enc, (const VkMemoryResourceAllocationSizeProperties100000MESA *)pnext); 392 return; 393 default: 394 /* ignore unknown/unsupported struct */ 395 break; 396 } 397 pnext = pnext->pNext; 398 } 399 400 vn_encode_simple_pointer(enc, NULL); 401 } 402 403 static inline void 404 vn_encode_VkMemoryResourcePropertiesMESA_self_partial(struct vn_cs_encoder *enc, const VkMemoryResourcePropertiesMESA *val) 405 { 406 /* skip val->{sType,pNext} */ 407 /* skip val->memoryTypeBits */ 408 } 409 410 static inline void 411 vn_encode_VkMemoryResourcePropertiesMESA_partial(struct vn_cs_encoder *enc, const VkMemoryResourcePropertiesMESA *val) 412 { 413 assert(val->sType == VK_STRUCTURE_TYPE_MEMORY_RESOURCE_PROPERTIES_MESA); 414 vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_MEMORY_RESOURCE_PROPERTIES_MESA }); 415 vn_encode_VkMemoryResourcePropertiesMESA_pnext_partial(enc, val->pNext); 416 vn_encode_VkMemoryResourcePropertiesMESA_self_partial(enc, val); 417 } 418 419 static inline size_t vn_sizeof_vkSetReplyCommandStreamMESA(const VkCommandStreamDescriptionMESA* pStream) 420 { 421 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkSetReplyCommandStreamMESA_EXT; 422 const VkFlags cmd_flags = 0; 423 size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags); 424 425 cmd_size += vn_sizeof_simple_pointer(pStream); 426 if (pStream) 427 cmd_size += vn_sizeof_VkCommandStreamDescriptionMESA(pStream); 428 429 return cmd_size; 430 } 431 432 static inline void vn_encode_vkSetReplyCommandStreamMESA(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, const VkCommandStreamDescriptionMESA* pStream) 433 { 434 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkSetReplyCommandStreamMESA_EXT; 435 436 vn_encode_VkCommandTypeEXT(enc, &cmd_type); 437 vn_encode_VkFlags(enc, &cmd_flags); 438 439 if (vn_encode_simple_pointer(enc, pStream)) 440 vn_encode_VkCommandStreamDescriptionMESA(enc, pStream); 441 } 442 443 static inline size_t vn_sizeof_vkSetReplyCommandStreamMESA_reply(const VkCommandStreamDescriptionMESA* pStream) 444 { 445 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkSetReplyCommandStreamMESA_EXT; 446 size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type); 447 448 /* skip pStream */ 449 450 return cmd_size; 451 } 452 453 static inline void vn_decode_vkSetReplyCommandStreamMESA_reply(struct vn_cs_decoder *dec, const VkCommandStreamDescriptionMESA* pStream) 454 { 455 VkCommandTypeEXT command_type; 456 vn_decode_VkCommandTypeEXT(dec, &command_type); 457 assert(command_type == VK_COMMAND_TYPE_vkSetReplyCommandStreamMESA_EXT); 458 459 /* skip pStream */ 460 } 461 462 static inline size_t vn_sizeof_vkSeekReplyCommandStreamMESA(size_t position) 463 { 464 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkSeekReplyCommandStreamMESA_EXT; 465 const VkFlags cmd_flags = 0; 466 size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags); 467 468 cmd_size += vn_sizeof_size_t(&position); 469 470 return cmd_size; 471 } 472 473 static inline void vn_encode_vkSeekReplyCommandStreamMESA(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, size_t position) 474 { 475 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkSeekReplyCommandStreamMESA_EXT; 476 477 vn_encode_VkCommandTypeEXT(enc, &cmd_type); 478 vn_encode_VkFlags(enc, &cmd_flags); 479 480 vn_encode_size_t(enc, &position); 481 } 482 483 static inline size_t vn_sizeof_vkSeekReplyCommandStreamMESA_reply(size_t position) 484 { 485 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkSeekReplyCommandStreamMESA_EXT; 486 size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type); 487 488 /* skip position */ 489 490 return cmd_size; 491 } 492 493 static inline void vn_decode_vkSeekReplyCommandStreamMESA_reply(struct vn_cs_decoder *dec, size_t position) 494 { 495 VkCommandTypeEXT command_type; 496 vn_decode_VkCommandTypeEXT(dec, &command_type); 497 assert(command_type == VK_COMMAND_TYPE_vkSeekReplyCommandStreamMESA_EXT); 498 499 /* skip position */ 500 } 501 502 static inline size_t vn_sizeof_vkExecuteCommandStreamsMESA(uint32_t streamCount, const VkCommandStreamDescriptionMESA* pStreams, const size_t* pReplyPositions, uint32_t dependencyCount, const VkCommandStreamDependencyMESA* pDependencies, VkCommandStreamExecutionFlagsMESA flags) 503 { 504 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkExecuteCommandStreamsMESA_EXT; 505 const VkFlags cmd_flags = 0; 506 size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags); 507 508 cmd_size += vn_sizeof_uint32_t(&streamCount); 509 if (pStreams) { 510 cmd_size += vn_sizeof_array_size(streamCount); 511 for (uint32_t i = 0; i < streamCount; i++) 512 cmd_size += vn_sizeof_VkCommandStreamDescriptionMESA(&pStreams[i]); 513 } else { 514 cmd_size += vn_sizeof_array_size(0); 515 } 516 if (pReplyPositions) { 517 cmd_size += vn_sizeof_array_size(streamCount); 518 cmd_size += vn_sizeof_size_t_array(pReplyPositions, streamCount); 519 } else { 520 cmd_size += vn_sizeof_array_size(0); 521 } 522 cmd_size += vn_sizeof_uint32_t(&dependencyCount); 523 if (pDependencies) { 524 cmd_size += vn_sizeof_array_size(dependencyCount); 525 for (uint32_t i = 0; i < dependencyCount; i++) 526 cmd_size += vn_sizeof_VkCommandStreamDependencyMESA(&pDependencies[i]); 527 } else { 528 cmd_size += vn_sizeof_array_size(0); 529 } 530 cmd_size += vn_sizeof_VkFlags(&flags); 531 532 return cmd_size; 533 } 534 535 static inline void vn_encode_vkExecuteCommandStreamsMESA(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, uint32_t streamCount, const VkCommandStreamDescriptionMESA* pStreams, const size_t* pReplyPositions, uint32_t dependencyCount, const VkCommandStreamDependencyMESA* pDependencies, VkCommandStreamExecutionFlagsMESA flags) 536 { 537 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkExecuteCommandStreamsMESA_EXT; 538 539 vn_encode_VkCommandTypeEXT(enc, &cmd_type); 540 vn_encode_VkFlags(enc, &cmd_flags); 541 542 vn_encode_uint32_t(enc, &streamCount); 543 if (pStreams) { 544 vn_encode_array_size(enc, streamCount); 545 for (uint32_t i = 0; i < streamCount; i++) 546 vn_encode_VkCommandStreamDescriptionMESA(enc, &pStreams[i]); 547 } else { 548 vn_encode_array_size(enc, 0); 549 } 550 if (pReplyPositions) { 551 vn_encode_array_size(enc, streamCount); 552 vn_encode_size_t_array(enc, pReplyPositions, streamCount); 553 } else { 554 vn_encode_array_size(enc, 0); 555 } 556 vn_encode_uint32_t(enc, &dependencyCount); 557 if (pDependencies) { 558 vn_encode_array_size(enc, dependencyCount); 559 for (uint32_t i = 0; i < dependencyCount; i++) 560 vn_encode_VkCommandStreamDependencyMESA(enc, &pDependencies[i]); 561 } else { 562 vn_encode_array_size(enc, 0); 563 } 564 vn_encode_VkFlags(enc, &flags); 565 } 566 567 static inline size_t vn_sizeof_vkExecuteCommandStreamsMESA_reply(uint32_t streamCount, const VkCommandStreamDescriptionMESA* pStreams, const size_t* pReplyPositions, uint32_t dependencyCount, const VkCommandStreamDependencyMESA* pDependencies, VkCommandStreamExecutionFlagsMESA flags) 568 { 569 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkExecuteCommandStreamsMESA_EXT; 570 size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type); 571 572 /* skip streamCount */ 573 /* skip pStreams */ 574 /* skip pReplyPositions */ 575 /* skip dependencyCount */ 576 /* skip pDependencies */ 577 /* skip flags */ 578 579 return cmd_size; 580 } 581 582 static inline void vn_decode_vkExecuteCommandStreamsMESA_reply(struct vn_cs_decoder *dec, uint32_t streamCount, const VkCommandStreamDescriptionMESA* pStreams, const size_t* pReplyPositions, uint32_t dependencyCount, const VkCommandStreamDependencyMESA* pDependencies, VkCommandStreamExecutionFlagsMESA flags) 583 { 584 VkCommandTypeEXT command_type; 585 vn_decode_VkCommandTypeEXT(dec, &command_type); 586 assert(command_type == VK_COMMAND_TYPE_vkExecuteCommandStreamsMESA_EXT); 587 588 /* skip streamCount */ 589 /* skip pStreams */ 590 /* skip pReplyPositions */ 591 /* skip dependencyCount */ 592 /* skip pDependencies */ 593 /* skip flags */ 594 } 595 596 static inline size_t vn_sizeof_vkCreateRingMESA(uint64_t ring, const VkRingCreateInfoMESA* pCreateInfo) 597 { 598 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateRingMESA_EXT; 599 const VkFlags cmd_flags = 0; 600 size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags); 601 602 cmd_size += vn_sizeof_uint64_t(&ring); 603 cmd_size += vn_sizeof_simple_pointer(pCreateInfo); 604 if (pCreateInfo) 605 cmd_size += vn_sizeof_VkRingCreateInfoMESA(pCreateInfo); 606 607 return cmd_size; 608 } 609 610 static inline void vn_encode_vkCreateRingMESA(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, uint64_t ring, const VkRingCreateInfoMESA* pCreateInfo) 611 { 612 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateRingMESA_EXT; 613 614 vn_encode_VkCommandTypeEXT(enc, &cmd_type); 615 vn_encode_VkFlags(enc, &cmd_flags); 616 617 vn_encode_uint64_t(enc, &ring); 618 if (vn_encode_simple_pointer(enc, pCreateInfo)) 619 vn_encode_VkRingCreateInfoMESA(enc, pCreateInfo); 620 } 621 622 static inline size_t vn_sizeof_vkCreateRingMESA_reply(uint64_t ring, const VkRingCreateInfoMESA* pCreateInfo) 623 { 624 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateRingMESA_EXT; 625 size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type); 626 627 /* skip ring */ 628 /* skip pCreateInfo */ 629 630 return cmd_size; 631 } 632 633 static inline void vn_decode_vkCreateRingMESA_reply(struct vn_cs_decoder *dec, uint64_t ring, const VkRingCreateInfoMESA* pCreateInfo) 634 { 635 VkCommandTypeEXT command_type; 636 vn_decode_VkCommandTypeEXT(dec, &command_type); 637 assert(command_type == VK_COMMAND_TYPE_vkCreateRingMESA_EXT); 638 639 /* skip ring */ 640 /* skip pCreateInfo */ 641 } 642 643 static inline size_t vn_sizeof_vkDestroyRingMESA(uint64_t ring) 644 { 645 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyRingMESA_EXT; 646 const VkFlags cmd_flags = 0; 647 size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags); 648 649 cmd_size += vn_sizeof_uint64_t(&ring); 650 651 return cmd_size; 652 } 653 654 static inline void vn_encode_vkDestroyRingMESA(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, uint64_t ring) 655 { 656 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyRingMESA_EXT; 657 658 vn_encode_VkCommandTypeEXT(enc, &cmd_type); 659 vn_encode_VkFlags(enc, &cmd_flags); 660 661 vn_encode_uint64_t(enc, &ring); 662 } 663 664 static inline size_t vn_sizeof_vkDestroyRingMESA_reply(uint64_t ring) 665 { 666 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyRingMESA_EXT; 667 size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type); 668 669 /* skip ring */ 670 671 return cmd_size; 672 } 673 674 static inline void vn_decode_vkDestroyRingMESA_reply(struct vn_cs_decoder *dec, uint64_t ring) 675 { 676 VkCommandTypeEXT command_type; 677 vn_decode_VkCommandTypeEXT(dec, &command_type); 678 assert(command_type == VK_COMMAND_TYPE_vkDestroyRingMESA_EXT); 679 680 /* skip ring */ 681 } 682 683 static inline size_t vn_sizeof_vkNotifyRingMESA(uint64_t ring, uint32_t seqno, VkRingNotifyFlagsMESA flags) 684 { 685 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkNotifyRingMESA_EXT; 686 const VkFlags cmd_flags = 0; 687 size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags); 688 689 cmd_size += vn_sizeof_uint64_t(&ring); 690 cmd_size += vn_sizeof_uint32_t(&seqno); 691 cmd_size += vn_sizeof_VkFlags(&flags); 692 693 return cmd_size; 694 } 695 696 static inline void vn_encode_vkNotifyRingMESA(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, uint64_t ring, uint32_t seqno, VkRingNotifyFlagsMESA flags) 697 { 698 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkNotifyRingMESA_EXT; 699 700 vn_encode_VkCommandTypeEXT(enc, &cmd_type); 701 vn_encode_VkFlags(enc, &cmd_flags); 702 703 vn_encode_uint64_t(enc, &ring); 704 vn_encode_uint32_t(enc, &seqno); 705 vn_encode_VkFlags(enc, &flags); 706 } 707 708 static inline size_t vn_sizeof_vkNotifyRingMESA_reply(uint64_t ring, uint32_t seqno, VkRingNotifyFlagsMESA flags) 709 { 710 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkNotifyRingMESA_EXT; 711 size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type); 712 713 /* skip ring */ 714 /* skip seqno */ 715 /* skip flags */ 716 717 return cmd_size; 718 } 719 720 static inline void vn_decode_vkNotifyRingMESA_reply(struct vn_cs_decoder *dec, uint64_t ring, uint32_t seqno, VkRingNotifyFlagsMESA flags) 721 { 722 VkCommandTypeEXT command_type; 723 vn_decode_VkCommandTypeEXT(dec, &command_type); 724 assert(command_type == VK_COMMAND_TYPE_vkNotifyRingMESA_EXT); 725 726 /* skip ring */ 727 /* skip seqno */ 728 /* skip flags */ 729 } 730 731 static inline size_t vn_sizeof_vkWriteRingExtraMESA(uint64_t ring, size_t offset, uint32_t value) 732 { 733 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkWriteRingExtraMESA_EXT; 734 const VkFlags cmd_flags = 0; 735 size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags); 736 737 cmd_size += vn_sizeof_uint64_t(&ring); 738 cmd_size += vn_sizeof_size_t(&offset); 739 cmd_size += vn_sizeof_uint32_t(&value); 740 741 return cmd_size; 742 } 743 744 static inline void vn_encode_vkWriteRingExtraMESA(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, uint64_t ring, size_t offset, uint32_t value) 745 { 746 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkWriteRingExtraMESA_EXT; 747 748 vn_encode_VkCommandTypeEXT(enc, &cmd_type); 749 vn_encode_VkFlags(enc, &cmd_flags); 750 751 vn_encode_uint64_t(enc, &ring); 752 vn_encode_size_t(enc, &offset); 753 vn_encode_uint32_t(enc, &value); 754 } 755 756 static inline size_t vn_sizeof_vkWriteRingExtraMESA_reply(uint64_t ring, size_t offset, uint32_t value) 757 { 758 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkWriteRingExtraMESA_EXT; 759 size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type); 760 761 /* skip ring */ 762 /* skip offset */ 763 /* skip value */ 764 765 return cmd_size; 766 } 767 768 static inline void vn_decode_vkWriteRingExtraMESA_reply(struct vn_cs_decoder *dec, uint64_t ring, size_t offset, uint32_t value) 769 { 770 VkCommandTypeEXT command_type; 771 vn_decode_VkCommandTypeEXT(dec, &command_type); 772 assert(command_type == VK_COMMAND_TYPE_vkWriteRingExtraMESA_EXT); 773 774 /* skip ring */ 775 /* skip offset */ 776 /* skip value */ 777 } 778 779 static inline size_t vn_sizeof_vkGetMemoryResourcePropertiesMESA(VkDevice device, uint32_t resourceId, VkMemoryResourcePropertiesMESA* pMemoryResourceProperties) 780 { 781 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetMemoryResourcePropertiesMESA_EXT; 782 const VkFlags cmd_flags = 0; 783 size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags); 784 785 cmd_size += vn_sizeof_VkDevice(&device); 786 cmd_size += vn_sizeof_uint32_t(&resourceId); 787 cmd_size += vn_sizeof_simple_pointer(pMemoryResourceProperties); 788 if (pMemoryResourceProperties) 789 cmd_size += vn_sizeof_VkMemoryResourcePropertiesMESA_partial(pMemoryResourceProperties); 790 791 return cmd_size; 792 } 793 794 static inline void vn_encode_vkGetMemoryResourcePropertiesMESA(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, uint32_t resourceId, VkMemoryResourcePropertiesMESA* pMemoryResourceProperties) 795 { 796 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetMemoryResourcePropertiesMESA_EXT; 797 798 vn_encode_VkCommandTypeEXT(enc, &cmd_type); 799 vn_encode_VkFlags(enc, &cmd_flags); 800 801 vn_encode_VkDevice(enc, &device); 802 vn_encode_uint32_t(enc, &resourceId); 803 if (vn_encode_simple_pointer(enc, pMemoryResourceProperties)) 804 vn_encode_VkMemoryResourcePropertiesMESA_partial(enc, pMemoryResourceProperties); 805 } 806 807 static inline size_t vn_sizeof_vkGetMemoryResourcePropertiesMESA_reply(VkDevice device, uint32_t resourceId, VkMemoryResourcePropertiesMESA* pMemoryResourceProperties) 808 { 809 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetMemoryResourcePropertiesMESA_EXT; 810 size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type); 811 812 VkResult ret; 813 cmd_size += vn_sizeof_VkResult(&ret); 814 /* skip device */ 815 /* skip resourceId */ 816 cmd_size += vn_sizeof_simple_pointer(pMemoryResourceProperties); 817 if (pMemoryResourceProperties) 818 cmd_size += vn_sizeof_VkMemoryResourcePropertiesMESA(pMemoryResourceProperties); 819 820 return cmd_size; 821 } 822 823 static inline VkResult vn_decode_vkGetMemoryResourcePropertiesMESA_reply(struct vn_cs_decoder *dec, VkDevice device, uint32_t resourceId, VkMemoryResourcePropertiesMESA* pMemoryResourceProperties) 824 { 825 VkCommandTypeEXT command_type; 826 vn_decode_VkCommandTypeEXT(dec, &command_type); 827 assert(command_type == VK_COMMAND_TYPE_vkGetMemoryResourcePropertiesMESA_EXT); 828 829 VkResult ret; 830 vn_decode_VkResult(dec, &ret); 831 /* skip device */ 832 /* skip resourceId */ 833 if (vn_decode_simple_pointer(dec)) { 834 vn_decode_VkMemoryResourcePropertiesMESA(dec, pMemoryResourceProperties); 835 } else { 836 pMemoryResourceProperties = NULL; 837 } 838 839 return ret; 840 } 841 842 static inline size_t vn_sizeof_vkGetVenusExperimentalFeatureData100000MESA(size_t* pDataSize, void* pData) 843 { 844 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetVenusExperimentalFeatureData100000MESA_EXT; 845 const VkFlags cmd_flags = 0; 846 size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags); 847 848 cmd_size += vn_sizeof_simple_pointer(pDataSize); 849 if (pDataSize) 850 cmd_size += vn_sizeof_size_t(pDataSize); 851 cmd_size += vn_sizeof_simple_pointer(pData); /* out */ 852 853 return cmd_size; 854 } 855 856 static inline void vn_encode_vkGetVenusExperimentalFeatureData100000MESA(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, size_t* pDataSize, void* pData) 857 { 858 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetVenusExperimentalFeatureData100000MESA_EXT; 859 860 vn_encode_VkCommandTypeEXT(enc, &cmd_type); 861 vn_encode_VkFlags(enc, &cmd_flags); 862 863 if (vn_encode_simple_pointer(enc, pDataSize)) 864 vn_encode_size_t(enc, pDataSize); 865 vn_encode_array_size(enc, pData ? (pDataSize ? *pDataSize : 0) : 0); /* out */ 866 } 867 868 static inline size_t vn_sizeof_vkGetVenusExperimentalFeatureData100000MESA_reply(size_t* pDataSize, void* pData) 869 { 870 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetVenusExperimentalFeatureData100000MESA_EXT; 871 size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type); 872 873 cmd_size += vn_sizeof_simple_pointer(pDataSize); 874 if (pDataSize) 875 cmd_size += vn_sizeof_size_t(pDataSize); 876 if (pData) { 877 cmd_size += vn_sizeof_array_size((pDataSize ? *pDataSize : 0)); 878 cmd_size += vn_sizeof_blob_array(pData, (pDataSize ? *pDataSize : 0)); 879 } else { 880 cmd_size += vn_sizeof_array_size(0); 881 } 882 883 return cmd_size; 884 } 885 886 static inline void vn_decode_vkGetVenusExperimentalFeatureData100000MESA_reply(struct vn_cs_decoder *dec, size_t* pDataSize, void* pData) 887 { 888 VkCommandTypeEXT command_type; 889 vn_decode_VkCommandTypeEXT(dec, &command_type); 890 assert(command_type == VK_COMMAND_TYPE_vkGetVenusExperimentalFeatureData100000MESA_EXT); 891 892 if (vn_decode_simple_pointer(dec)) { 893 vn_decode_size_t(dec, pDataSize); 894 } else { 895 pDataSize = NULL; 896 } 897 if (vn_peek_array_size(dec)) { 898 const size_t array_size = vn_decode_array_size(dec, (pDataSize ? *pDataSize : 0)); 899 vn_decode_blob_array(dec, pData, array_size); 900 } else { 901 vn_decode_array_size_unchecked(dec); 902 pData = NULL; 903 } 904 } 905 906 static inline void vn_submit_vkSetReplyCommandStreamMESA(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, const VkCommandStreamDescriptionMESA* pStream, struct vn_instance_submit_command *submit) 907 { 908 uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE]; 909 void *cmd_data = local_cmd_data; 910 size_t cmd_size = vn_sizeof_vkSetReplyCommandStreamMESA(pStream); 911 if (cmd_size > sizeof(local_cmd_data)) { 912 cmd_data = malloc(cmd_size); 913 if (!cmd_data) 914 cmd_size = 0; 915 } 916 const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkSetReplyCommandStreamMESA_reply(pStream) : 0; 917 918 struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size); 919 if (cmd_size) { 920 vn_encode_vkSetReplyCommandStreamMESA(enc, cmd_flags, pStream); 921 vn_instance_submit_command(vn_instance, submit); 922 if (cmd_data != local_cmd_data) 923 free(cmd_data); 924 } 925 } 926 927 static inline void vn_submit_vkSeekReplyCommandStreamMESA(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, size_t position, struct vn_instance_submit_command *submit) 928 { 929 uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE]; 930 void *cmd_data = local_cmd_data; 931 size_t cmd_size = vn_sizeof_vkSeekReplyCommandStreamMESA(position); 932 if (cmd_size > sizeof(local_cmd_data)) { 933 cmd_data = malloc(cmd_size); 934 if (!cmd_data) 935 cmd_size = 0; 936 } 937 const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkSeekReplyCommandStreamMESA_reply(position) : 0; 938 939 struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size); 940 if (cmd_size) { 941 vn_encode_vkSeekReplyCommandStreamMESA(enc, cmd_flags, position); 942 vn_instance_submit_command(vn_instance, submit); 943 if (cmd_data != local_cmd_data) 944 free(cmd_data); 945 } 946 } 947 948 static inline void vn_submit_vkExecuteCommandStreamsMESA(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, uint32_t streamCount, const VkCommandStreamDescriptionMESA* pStreams, const size_t* pReplyPositions, uint32_t dependencyCount, const VkCommandStreamDependencyMESA* pDependencies, VkCommandStreamExecutionFlagsMESA flags, struct vn_instance_submit_command *submit) 949 { 950 uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE]; 951 void *cmd_data = local_cmd_data; 952 size_t cmd_size = vn_sizeof_vkExecuteCommandStreamsMESA(streamCount, pStreams, pReplyPositions, dependencyCount, pDependencies, flags); 953 if (cmd_size > sizeof(local_cmd_data)) { 954 cmd_data = malloc(cmd_size); 955 if (!cmd_data) 956 cmd_size = 0; 957 } 958 const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkExecuteCommandStreamsMESA_reply(streamCount, pStreams, pReplyPositions, dependencyCount, pDependencies, flags) : 0; 959 960 struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size); 961 if (cmd_size) { 962 vn_encode_vkExecuteCommandStreamsMESA(enc, cmd_flags, streamCount, pStreams, pReplyPositions, dependencyCount, pDependencies, flags); 963 vn_instance_submit_command(vn_instance, submit); 964 if (cmd_data != local_cmd_data) 965 free(cmd_data); 966 } 967 } 968 969 static inline void vn_submit_vkCreateRingMESA(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, uint64_t ring, const VkRingCreateInfoMESA* pCreateInfo, struct vn_instance_submit_command *submit) 970 { 971 uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE]; 972 void *cmd_data = local_cmd_data; 973 size_t cmd_size = vn_sizeof_vkCreateRingMESA(ring, pCreateInfo); 974 if (cmd_size > sizeof(local_cmd_data)) { 975 cmd_data = malloc(cmd_size); 976 if (!cmd_data) 977 cmd_size = 0; 978 } 979 const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkCreateRingMESA_reply(ring, pCreateInfo) : 0; 980 981 struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size); 982 if (cmd_size) { 983 vn_encode_vkCreateRingMESA(enc, cmd_flags, ring, pCreateInfo); 984 vn_instance_submit_command(vn_instance, submit); 985 if (cmd_data != local_cmd_data) 986 free(cmd_data); 987 } 988 } 989 990 static inline void vn_submit_vkDestroyRingMESA(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, uint64_t ring, struct vn_instance_submit_command *submit) 991 { 992 uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE]; 993 void *cmd_data = local_cmd_data; 994 size_t cmd_size = vn_sizeof_vkDestroyRingMESA(ring); 995 if (cmd_size > sizeof(local_cmd_data)) { 996 cmd_data = malloc(cmd_size); 997 if (!cmd_data) 998 cmd_size = 0; 999 } 1000 const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkDestroyRingMESA_reply(ring) : 0; 1001 1002 struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size); 1003 if (cmd_size) { 1004 vn_encode_vkDestroyRingMESA(enc, cmd_flags, ring); 1005 vn_instance_submit_command(vn_instance, submit); 1006 if (cmd_data != local_cmd_data) 1007 free(cmd_data); 1008 } 1009 } 1010 1011 static inline void vn_submit_vkNotifyRingMESA(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, uint64_t ring, uint32_t seqno, VkRingNotifyFlagsMESA flags, struct vn_instance_submit_command *submit) 1012 { 1013 uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE]; 1014 void *cmd_data = local_cmd_data; 1015 size_t cmd_size = vn_sizeof_vkNotifyRingMESA(ring, seqno, flags); 1016 if (cmd_size > sizeof(local_cmd_data)) { 1017 cmd_data = malloc(cmd_size); 1018 if (!cmd_data) 1019 cmd_size = 0; 1020 } 1021 const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkNotifyRingMESA_reply(ring, seqno, flags) : 0; 1022 1023 struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size); 1024 if (cmd_size) { 1025 vn_encode_vkNotifyRingMESA(enc, cmd_flags, ring, seqno, flags); 1026 vn_instance_submit_command(vn_instance, submit); 1027 if (cmd_data != local_cmd_data) 1028 free(cmd_data); 1029 } 1030 } 1031 1032 static inline void vn_submit_vkWriteRingExtraMESA(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, uint64_t ring, size_t offset, uint32_t value, struct vn_instance_submit_command *submit) 1033 { 1034 uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE]; 1035 void *cmd_data = local_cmd_data; 1036 size_t cmd_size = vn_sizeof_vkWriteRingExtraMESA(ring, offset, value); 1037 if (cmd_size > sizeof(local_cmd_data)) { 1038 cmd_data = malloc(cmd_size); 1039 if (!cmd_data) 1040 cmd_size = 0; 1041 } 1042 const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkWriteRingExtraMESA_reply(ring, offset, value) : 0; 1043 1044 struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size); 1045 if (cmd_size) { 1046 vn_encode_vkWriteRingExtraMESA(enc, cmd_flags, ring, offset, value); 1047 vn_instance_submit_command(vn_instance, submit); 1048 if (cmd_data != local_cmd_data) 1049 free(cmd_data); 1050 } 1051 } 1052 1053 static inline void vn_submit_vkGetMemoryResourcePropertiesMESA(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, uint32_t resourceId, VkMemoryResourcePropertiesMESA* pMemoryResourceProperties, struct vn_instance_submit_command *submit) 1054 { 1055 uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE]; 1056 void *cmd_data = local_cmd_data; 1057 size_t cmd_size = vn_sizeof_vkGetMemoryResourcePropertiesMESA(device, resourceId, pMemoryResourceProperties); 1058 if (cmd_size > sizeof(local_cmd_data)) { 1059 cmd_data = malloc(cmd_size); 1060 if (!cmd_data) 1061 cmd_size = 0; 1062 } 1063 const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkGetMemoryResourcePropertiesMESA_reply(device, resourceId, pMemoryResourceProperties) : 0; 1064 1065 struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size); 1066 if (cmd_size) { 1067 vn_encode_vkGetMemoryResourcePropertiesMESA(enc, cmd_flags, device, resourceId, pMemoryResourceProperties); 1068 vn_instance_submit_command(vn_instance, submit); 1069 if (cmd_data != local_cmd_data) 1070 free(cmd_data); 1071 } 1072 } 1073 1074 static inline void vn_submit_vkGetVenusExperimentalFeatureData100000MESA(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, size_t* pDataSize, void* pData, struct vn_instance_submit_command *submit) 1075 { 1076 uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE]; 1077 void *cmd_data = local_cmd_data; 1078 size_t cmd_size = vn_sizeof_vkGetVenusExperimentalFeatureData100000MESA(pDataSize, pData); 1079 if (cmd_size > sizeof(local_cmd_data)) { 1080 cmd_data = malloc(cmd_size); 1081 if (!cmd_data) 1082 cmd_size = 0; 1083 } 1084 const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkGetVenusExperimentalFeatureData100000MESA_reply(pDataSize, pData) : 0; 1085 1086 struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size); 1087 if (cmd_size) { 1088 vn_encode_vkGetVenusExperimentalFeatureData100000MESA(enc, cmd_flags, pDataSize, pData); 1089 vn_instance_submit_command(vn_instance, submit); 1090 if (cmd_data != local_cmd_data) 1091 free(cmd_data); 1092 } 1093 } 1094 1095 static inline void vn_call_vkSetReplyCommandStreamMESA(struct vn_instance *vn_instance, const VkCommandStreamDescriptionMESA* pStream) 1096 { 1097 VN_TRACE_FUNC(); 1098 1099 struct vn_instance_submit_command submit; 1100 vn_submit_vkSetReplyCommandStreamMESA(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, pStream, &submit); 1101 struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit); 1102 if (dec) { 1103 vn_decode_vkSetReplyCommandStreamMESA_reply(dec, pStream); 1104 vn_instance_free_command_reply(vn_instance, &submit); 1105 } 1106 } 1107 1108 static inline void vn_async_vkSetReplyCommandStreamMESA(struct vn_instance *vn_instance, const VkCommandStreamDescriptionMESA* pStream) 1109 { 1110 struct vn_instance_submit_command submit; 1111 vn_submit_vkSetReplyCommandStreamMESA(vn_instance, 0, pStream, &submit); 1112 } 1113 1114 static inline void vn_call_vkSeekReplyCommandStreamMESA(struct vn_instance *vn_instance, size_t position) 1115 { 1116 VN_TRACE_FUNC(); 1117 1118 struct vn_instance_submit_command submit; 1119 vn_submit_vkSeekReplyCommandStreamMESA(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, position, &submit); 1120 struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit); 1121 if (dec) { 1122 vn_decode_vkSeekReplyCommandStreamMESA_reply(dec, position); 1123 vn_instance_free_command_reply(vn_instance, &submit); 1124 } 1125 } 1126 1127 static inline void vn_async_vkSeekReplyCommandStreamMESA(struct vn_instance *vn_instance, size_t position) 1128 { 1129 struct vn_instance_submit_command submit; 1130 vn_submit_vkSeekReplyCommandStreamMESA(vn_instance, 0, position, &submit); 1131 } 1132 1133 static inline void vn_call_vkExecuteCommandStreamsMESA(struct vn_instance *vn_instance, uint32_t streamCount, const VkCommandStreamDescriptionMESA* pStreams, const size_t* pReplyPositions, uint32_t dependencyCount, const VkCommandStreamDependencyMESA* pDependencies, VkCommandStreamExecutionFlagsMESA flags) 1134 { 1135 VN_TRACE_FUNC(); 1136 1137 struct vn_instance_submit_command submit; 1138 vn_submit_vkExecuteCommandStreamsMESA(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, streamCount, pStreams, pReplyPositions, dependencyCount, pDependencies, flags, &submit); 1139 struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit); 1140 if (dec) { 1141 vn_decode_vkExecuteCommandStreamsMESA_reply(dec, streamCount, pStreams, pReplyPositions, dependencyCount, pDependencies, flags); 1142 vn_instance_free_command_reply(vn_instance, &submit); 1143 } 1144 } 1145 1146 static inline void vn_async_vkExecuteCommandStreamsMESA(struct vn_instance *vn_instance, uint32_t streamCount, const VkCommandStreamDescriptionMESA* pStreams, const size_t* pReplyPositions, uint32_t dependencyCount, const VkCommandStreamDependencyMESA* pDependencies, VkCommandStreamExecutionFlagsMESA flags) 1147 { 1148 struct vn_instance_submit_command submit; 1149 vn_submit_vkExecuteCommandStreamsMESA(vn_instance, 0, streamCount, pStreams, pReplyPositions, dependencyCount, pDependencies, flags, &submit); 1150 } 1151 1152 static inline void vn_call_vkCreateRingMESA(struct vn_instance *vn_instance, uint64_t ring, const VkRingCreateInfoMESA* pCreateInfo) 1153 { 1154 VN_TRACE_FUNC(); 1155 1156 struct vn_instance_submit_command submit; 1157 vn_submit_vkCreateRingMESA(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, ring, pCreateInfo, &submit); 1158 struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit); 1159 if (dec) { 1160 vn_decode_vkCreateRingMESA_reply(dec, ring, pCreateInfo); 1161 vn_instance_free_command_reply(vn_instance, &submit); 1162 } 1163 } 1164 1165 static inline void vn_async_vkCreateRingMESA(struct vn_instance *vn_instance, uint64_t ring, const VkRingCreateInfoMESA* pCreateInfo) 1166 { 1167 struct vn_instance_submit_command submit; 1168 vn_submit_vkCreateRingMESA(vn_instance, 0, ring, pCreateInfo, &submit); 1169 } 1170 1171 static inline void vn_call_vkDestroyRingMESA(struct vn_instance *vn_instance, uint64_t ring) 1172 { 1173 VN_TRACE_FUNC(); 1174 1175 struct vn_instance_submit_command submit; 1176 vn_submit_vkDestroyRingMESA(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, ring, &submit); 1177 struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit); 1178 if (dec) { 1179 vn_decode_vkDestroyRingMESA_reply(dec, ring); 1180 vn_instance_free_command_reply(vn_instance, &submit); 1181 } 1182 } 1183 1184 static inline void vn_async_vkDestroyRingMESA(struct vn_instance *vn_instance, uint64_t ring) 1185 { 1186 struct vn_instance_submit_command submit; 1187 vn_submit_vkDestroyRingMESA(vn_instance, 0, ring, &submit); 1188 } 1189 1190 static inline void vn_call_vkNotifyRingMESA(struct vn_instance *vn_instance, uint64_t ring, uint32_t seqno, VkRingNotifyFlagsMESA flags) 1191 { 1192 VN_TRACE_FUNC(); 1193 1194 struct vn_instance_submit_command submit; 1195 vn_submit_vkNotifyRingMESA(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, ring, seqno, flags, &submit); 1196 struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit); 1197 if (dec) { 1198 vn_decode_vkNotifyRingMESA_reply(dec, ring, seqno, flags); 1199 vn_instance_free_command_reply(vn_instance, &submit); 1200 } 1201 } 1202 1203 static inline void vn_async_vkNotifyRingMESA(struct vn_instance *vn_instance, uint64_t ring, uint32_t seqno, VkRingNotifyFlagsMESA flags) 1204 { 1205 struct vn_instance_submit_command submit; 1206 vn_submit_vkNotifyRingMESA(vn_instance, 0, ring, seqno, flags, &submit); 1207 } 1208 1209 static inline void vn_call_vkWriteRingExtraMESA(struct vn_instance *vn_instance, uint64_t ring, size_t offset, uint32_t value) 1210 { 1211 VN_TRACE_FUNC(); 1212 1213 struct vn_instance_submit_command submit; 1214 vn_submit_vkWriteRingExtraMESA(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, ring, offset, value, &submit); 1215 struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit); 1216 if (dec) { 1217 vn_decode_vkWriteRingExtraMESA_reply(dec, ring, offset, value); 1218 vn_instance_free_command_reply(vn_instance, &submit); 1219 } 1220 } 1221 1222 static inline void vn_async_vkWriteRingExtraMESA(struct vn_instance *vn_instance, uint64_t ring, size_t offset, uint32_t value) 1223 { 1224 struct vn_instance_submit_command submit; 1225 vn_submit_vkWriteRingExtraMESA(vn_instance, 0, ring, offset, value, &submit); 1226 } 1227 1228 static inline VkResult vn_call_vkGetMemoryResourcePropertiesMESA(struct vn_instance *vn_instance, VkDevice device, uint32_t resourceId, VkMemoryResourcePropertiesMESA* pMemoryResourceProperties) 1229 { 1230 VN_TRACE_FUNC(); 1231 1232 struct vn_instance_submit_command submit; 1233 vn_submit_vkGetMemoryResourcePropertiesMESA(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, resourceId, pMemoryResourceProperties, &submit); 1234 struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit); 1235 if (dec) { 1236 const VkResult ret = vn_decode_vkGetMemoryResourcePropertiesMESA_reply(dec, device, resourceId, pMemoryResourceProperties); 1237 vn_instance_free_command_reply(vn_instance, &submit); 1238 return ret; 1239 } else { 1240 return VK_ERROR_OUT_OF_HOST_MEMORY; 1241 } 1242 } 1243 1244 static inline void vn_async_vkGetMemoryResourcePropertiesMESA(struct vn_instance *vn_instance, VkDevice device, uint32_t resourceId, VkMemoryResourcePropertiesMESA* pMemoryResourceProperties) 1245 { 1246 struct vn_instance_submit_command submit; 1247 vn_submit_vkGetMemoryResourcePropertiesMESA(vn_instance, 0, device, resourceId, pMemoryResourceProperties, &submit); 1248 } 1249 1250 static inline void vn_call_vkGetVenusExperimentalFeatureData100000MESA(struct vn_instance *vn_instance, size_t* pDataSize, void* pData) 1251 { 1252 VN_TRACE_FUNC(); 1253 1254 struct vn_instance_submit_command submit; 1255 vn_submit_vkGetVenusExperimentalFeatureData100000MESA(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, pDataSize, pData, &submit); 1256 struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit); 1257 if (dec) { 1258 vn_decode_vkGetVenusExperimentalFeatureData100000MESA_reply(dec, pDataSize, pData); 1259 vn_instance_free_command_reply(vn_instance, &submit); 1260 } 1261 } 1262 1263 static inline void vn_async_vkGetVenusExperimentalFeatureData100000MESA(struct vn_instance *vn_instance, size_t* pDataSize, void* pData) 1264 { 1265 struct vn_instance_submit_command submit; 1266 vn_submit_vkGetVenusExperimentalFeatureData100000MESA(vn_instance, 0, pDataSize, pData, &submit); 1267 } 1268 1269 #endif /* VN_PROTOCOL_DRIVER_TRANSPORT_H */ 1270