1bf215546Sopenharmony_ci/* This file is generated by venus-protocol. See vn_protocol_driver.h. */ 2bf215546Sopenharmony_ci 3bf215546Sopenharmony_ci/* 4bf215546Sopenharmony_ci * Copyright 2020 Google LLC 5bf215546Sopenharmony_ci * SPDX-License-Identifier: MIT 6bf215546Sopenharmony_ci */ 7bf215546Sopenharmony_ci 8bf215546Sopenharmony_ci#ifndef VN_PROTOCOL_DRIVER_QUEUE_H 9bf215546Sopenharmony_ci#define VN_PROTOCOL_DRIVER_QUEUE_H 10bf215546Sopenharmony_ci 11bf215546Sopenharmony_ci#include "vn_instance.h" 12bf215546Sopenharmony_ci#include "vn_protocol_driver_structs.h" 13bf215546Sopenharmony_ci 14bf215546Sopenharmony_ci/* struct VkDeviceGroupSubmitInfo chain */ 15bf215546Sopenharmony_ci 16bf215546Sopenharmony_cistatic inline size_t 17bf215546Sopenharmony_civn_sizeof_VkDeviceGroupSubmitInfo_pnext(const void *val) 18bf215546Sopenharmony_ci{ 19bf215546Sopenharmony_ci /* no known/supported struct */ 20bf215546Sopenharmony_ci return vn_sizeof_simple_pointer(NULL); 21bf215546Sopenharmony_ci} 22bf215546Sopenharmony_ci 23bf215546Sopenharmony_cistatic inline size_t 24bf215546Sopenharmony_civn_sizeof_VkDeviceGroupSubmitInfo_self(const VkDeviceGroupSubmitInfo *val) 25bf215546Sopenharmony_ci{ 26bf215546Sopenharmony_ci size_t size = 0; 27bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 28bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->waitSemaphoreCount); 29bf215546Sopenharmony_ci if (val->pWaitSemaphoreDeviceIndices) { 30bf215546Sopenharmony_ci size += vn_sizeof_array_size(val->waitSemaphoreCount); 31bf215546Sopenharmony_ci size += vn_sizeof_uint32_t_array(val->pWaitSemaphoreDeviceIndices, val->waitSemaphoreCount); 32bf215546Sopenharmony_ci } else { 33bf215546Sopenharmony_ci size += vn_sizeof_array_size(0); 34bf215546Sopenharmony_ci } 35bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->commandBufferCount); 36bf215546Sopenharmony_ci if (val->pCommandBufferDeviceMasks) { 37bf215546Sopenharmony_ci size += vn_sizeof_array_size(val->commandBufferCount); 38bf215546Sopenharmony_ci size += vn_sizeof_uint32_t_array(val->pCommandBufferDeviceMasks, val->commandBufferCount); 39bf215546Sopenharmony_ci } else { 40bf215546Sopenharmony_ci size += vn_sizeof_array_size(0); 41bf215546Sopenharmony_ci } 42bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->signalSemaphoreCount); 43bf215546Sopenharmony_ci if (val->pSignalSemaphoreDeviceIndices) { 44bf215546Sopenharmony_ci size += vn_sizeof_array_size(val->signalSemaphoreCount); 45bf215546Sopenharmony_ci size += vn_sizeof_uint32_t_array(val->pSignalSemaphoreDeviceIndices, val->signalSemaphoreCount); 46bf215546Sopenharmony_ci } else { 47bf215546Sopenharmony_ci size += vn_sizeof_array_size(0); 48bf215546Sopenharmony_ci } 49bf215546Sopenharmony_ci return size; 50bf215546Sopenharmony_ci} 51bf215546Sopenharmony_ci 52bf215546Sopenharmony_cistatic inline size_t 53bf215546Sopenharmony_civn_sizeof_VkDeviceGroupSubmitInfo(const VkDeviceGroupSubmitInfo *val) 54bf215546Sopenharmony_ci{ 55bf215546Sopenharmony_ci size_t size = 0; 56bf215546Sopenharmony_ci 57bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&val->sType); 58bf215546Sopenharmony_ci size += vn_sizeof_VkDeviceGroupSubmitInfo_pnext(val->pNext); 59bf215546Sopenharmony_ci size += vn_sizeof_VkDeviceGroupSubmitInfo_self(val); 60bf215546Sopenharmony_ci 61bf215546Sopenharmony_ci return size; 62bf215546Sopenharmony_ci} 63bf215546Sopenharmony_ci 64bf215546Sopenharmony_cistatic inline void 65bf215546Sopenharmony_civn_encode_VkDeviceGroupSubmitInfo_pnext(struct vn_cs_encoder *enc, const void *val) 66bf215546Sopenharmony_ci{ 67bf215546Sopenharmony_ci /* no known/supported struct */ 68bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, NULL); 69bf215546Sopenharmony_ci} 70bf215546Sopenharmony_ci 71bf215546Sopenharmony_cistatic inline void 72bf215546Sopenharmony_civn_encode_VkDeviceGroupSubmitInfo_self(struct vn_cs_encoder *enc, const VkDeviceGroupSubmitInfo *val) 73bf215546Sopenharmony_ci{ 74bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 75bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->waitSemaphoreCount); 76bf215546Sopenharmony_ci if (val->pWaitSemaphoreDeviceIndices) { 77bf215546Sopenharmony_ci vn_encode_array_size(enc, val->waitSemaphoreCount); 78bf215546Sopenharmony_ci vn_encode_uint32_t_array(enc, val->pWaitSemaphoreDeviceIndices, val->waitSemaphoreCount); 79bf215546Sopenharmony_ci } else { 80bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 81bf215546Sopenharmony_ci } 82bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->commandBufferCount); 83bf215546Sopenharmony_ci if (val->pCommandBufferDeviceMasks) { 84bf215546Sopenharmony_ci vn_encode_array_size(enc, val->commandBufferCount); 85bf215546Sopenharmony_ci vn_encode_uint32_t_array(enc, val->pCommandBufferDeviceMasks, val->commandBufferCount); 86bf215546Sopenharmony_ci } else { 87bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 88bf215546Sopenharmony_ci } 89bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->signalSemaphoreCount); 90bf215546Sopenharmony_ci if (val->pSignalSemaphoreDeviceIndices) { 91bf215546Sopenharmony_ci vn_encode_array_size(enc, val->signalSemaphoreCount); 92bf215546Sopenharmony_ci vn_encode_uint32_t_array(enc, val->pSignalSemaphoreDeviceIndices, val->signalSemaphoreCount); 93bf215546Sopenharmony_ci } else { 94bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 95bf215546Sopenharmony_ci } 96bf215546Sopenharmony_ci} 97bf215546Sopenharmony_ci 98bf215546Sopenharmony_cistatic inline void 99bf215546Sopenharmony_civn_encode_VkDeviceGroupSubmitInfo(struct vn_cs_encoder *enc, const VkDeviceGroupSubmitInfo *val) 100bf215546Sopenharmony_ci{ 101bf215546Sopenharmony_ci assert(val->sType == VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO); 102bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO }); 103bf215546Sopenharmony_ci vn_encode_VkDeviceGroupSubmitInfo_pnext(enc, val->pNext); 104bf215546Sopenharmony_ci vn_encode_VkDeviceGroupSubmitInfo_self(enc, val); 105bf215546Sopenharmony_ci} 106bf215546Sopenharmony_ci 107bf215546Sopenharmony_ci/* struct VkProtectedSubmitInfo chain */ 108bf215546Sopenharmony_ci 109bf215546Sopenharmony_cistatic inline size_t 110bf215546Sopenharmony_civn_sizeof_VkProtectedSubmitInfo_pnext(const void *val) 111bf215546Sopenharmony_ci{ 112bf215546Sopenharmony_ci /* no known/supported struct */ 113bf215546Sopenharmony_ci return vn_sizeof_simple_pointer(NULL); 114bf215546Sopenharmony_ci} 115bf215546Sopenharmony_ci 116bf215546Sopenharmony_cistatic inline size_t 117bf215546Sopenharmony_civn_sizeof_VkProtectedSubmitInfo_self(const VkProtectedSubmitInfo *val) 118bf215546Sopenharmony_ci{ 119bf215546Sopenharmony_ci size_t size = 0; 120bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 121bf215546Sopenharmony_ci size += vn_sizeof_VkBool32(&val->protectedSubmit); 122bf215546Sopenharmony_ci return size; 123bf215546Sopenharmony_ci} 124bf215546Sopenharmony_ci 125bf215546Sopenharmony_cistatic inline size_t 126bf215546Sopenharmony_civn_sizeof_VkProtectedSubmitInfo(const VkProtectedSubmitInfo *val) 127bf215546Sopenharmony_ci{ 128bf215546Sopenharmony_ci size_t size = 0; 129bf215546Sopenharmony_ci 130bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&val->sType); 131bf215546Sopenharmony_ci size += vn_sizeof_VkProtectedSubmitInfo_pnext(val->pNext); 132bf215546Sopenharmony_ci size += vn_sizeof_VkProtectedSubmitInfo_self(val); 133bf215546Sopenharmony_ci 134bf215546Sopenharmony_ci return size; 135bf215546Sopenharmony_ci} 136bf215546Sopenharmony_ci 137bf215546Sopenharmony_cistatic inline void 138bf215546Sopenharmony_civn_encode_VkProtectedSubmitInfo_pnext(struct vn_cs_encoder *enc, const void *val) 139bf215546Sopenharmony_ci{ 140bf215546Sopenharmony_ci /* no known/supported struct */ 141bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, NULL); 142bf215546Sopenharmony_ci} 143bf215546Sopenharmony_ci 144bf215546Sopenharmony_cistatic inline void 145bf215546Sopenharmony_civn_encode_VkProtectedSubmitInfo_self(struct vn_cs_encoder *enc, const VkProtectedSubmitInfo *val) 146bf215546Sopenharmony_ci{ 147bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 148bf215546Sopenharmony_ci vn_encode_VkBool32(enc, &val->protectedSubmit); 149bf215546Sopenharmony_ci} 150bf215546Sopenharmony_ci 151bf215546Sopenharmony_cistatic inline void 152bf215546Sopenharmony_civn_encode_VkProtectedSubmitInfo(struct vn_cs_encoder *enc, const VkProtectedSubmitInfo *val) 153bf215546Sopenharmony_ci{ 154bf215546Sopenharmony_ci assert(val->sType == VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO); 155bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO }); 156bf215546Sopenharmony_ci vn_encode_VkProtectedSubmitInfo_pnext(enc, val->pNext); 157bf215546Sopenharmony_ci vn_encode_VkProtectedSubmitInfo_self(enc, val); 158bf215546Sopenharmony_ci} 159bf215546Sopenharmony_ci 160bf215546Sopenharmony_ci/* struct VkTimelineSemaphoreSubmitInfo chain */ 161bf215546Sopenharmony_ci 162bf215546Sopenharmony_cistatic inline size_t 163bf215546Sopenharmony_civn_sizeof_VkTimelineSemaphoreSubmitInfo_pnext(const void *val) 164bf215546Sopenharmony_ci{ 165bf215546Sopenharmony_ci /* no known/supported struct */ 166bf215546Sopenharmony_ci return vn_sizeof_simple_pointer(NULL); 167bf215546Sopenharmony_ci} 168bf215546Sopenharmony_ci 169bf215546Sopenharmony_cistatic inline size_t 170bf215546Sopenharmony_civn_sizeof_VkTimelineSemaphoreSubmitInfo_self(const VkTimelineSemaphoreSubmitInfo *val) 171bf215546Sopenharmony_ci{ 172bf215546Sopenharmony_ci size_t size = 0; 173bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 174bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->waitSemaphoreValueCount); 175bf215546Sopenharmony_ci if (val->pWaitSemaphoreValues) { 176bf215546Sopenharmony_ci size += vn_sizeof_array_size(val->waitSemaphoreValueCount); 177bf215546Sopenharmony_ci size += vn_sizeof_uint64_t_array(val->pWaitSemaphoreValues, val->waitSemaphoreValueCount); 178bf215546Sopenharmony_ci } else { 179bf215546Sopenharmony_ci size += vn_sizeof_array_size(0); 180bf215546Sopenharmony_ci } 181bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->signalSemaphoreValueCount); 182bf215546Sopenharmony_ci if (val->pSignalSemaphoreValues) { 183bf215546Sopenharmony_ci size += vn_sizeof_array_size(val->signalSemaphoreValueCount); 184bf215546Sopenharmony_ci size += vn_sizeof_uint64_t_array(val->pSignalSemaphoreValues, val->signalSemaphoreValueCount); 185bf215546Sopenharmony_ci } else { 186bf215546Sopenharmony_ci size += vn_sizeof_array_size(0); 187bf215546Sopenharmony_ci } 188bf215546Sopenharmony_ci return size; 189bf215546Sopenharmony_ci} 190bf215546Sopenharmony_ci 191bf215546Sopenharmony_cistatic inline size_t 192bf215546Sopenharmony_civn_sizeof_VkTimelineSemaphoreSubmitInfo(const VkTimelineSemaphoreSubmitInfo *val) 193bf215546Sopenharmony_ci{ 194bf215546Sopenharmony_ci size_t size = 0; 195bf215546Sopenharmony_ci 196bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&val->sType); 197bf215546Sopenharmony_ci size += vn_sizeof_VkTimelineSemaphoreSubmitInfo_pnext(val->pNext); 198bf215546Sopenharmony_ci size += vn_sizeof_VkTimelineSemaphoreSubmitInfo_self(val); 199bf215546Sopenharmony_ci 200bf215546Sopenharmony_ci return size; 201bf215546Sopenharmony_ci} 202bf215546Sopenharmony_ci 203bf215546Sopenharmony_cistatic inline void 204bf215546Sopenharmony_civn_encode_VkTimelineSemaphoreSubmitInfo_pnext(struct vn_cs_encoder *enc, const void *val) 205bf215546Sopenharmony_ci{ 206bf215546Sopenharmony_ci /* no known/supported struct */ 207bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, NULL); 208bf215546Sopenharmony_ci} 209bf215546Sopenharmony_ci 210bf215546Sopenharmony_cistatic inline void 211bf215546Sopenharmony_civn_encode_VkTimelineSemaphoreSubmitInfo_self(struct vn_cs_encoder *enc, const VkTimelineSemaphoreSubmitInfo *val) 212bf215546Sopenharmony_ci{ 213bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 214bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->waitSemaphoreValueCount); 215bf215546Sopenharmony_ci if (val->pWaitSemaphoreValues) { 216bf215546Sopenharmony_ci vn_encode_array_size(enc, val->waitSemaphoreValueCount); 217bf215546Sopenharmony_ci vn_encode_uint64_t_array(enc, val->pWaitSemaphoreValues, val->waitSemaphoreValueCount); 218bf215546Sopenharmony_ci } else { 219bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 220bf215546Sopenharmony_ci } 221bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->signalSemaphoreValueCount); 222bf215546Sopenharmony_ci if (val->pSignalSemaphoreValues) { 223bf215546Sopenharmony_ci vn_encode_array_size(enc, val->signalSemaphoreValueCount); 224bf215546Sopenharmony_ci vn_encode_uint64_t_array(enc, val->pSignalSemaphoreValues, val->signalSemaphoreValueCount); 225bf215546Sopenharmony_ci } else { 226bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 227bf215546Sopenharmony_ci } 228bf215546Sopenharmony_ci} 229bf215546Sopenharmony_ci 230bf215546Sopenharmony_cistatic inline void 231bf215546Sopenharmony_civn_encode_VkTimelineSemaphoreSubmitInfo(struct vn_cs_encoder *enc, const VkTimelineSemaphoreSubmitInfo *val) 232bf215546Sopenharmony_ci{ 233bf215546Sopenharmony_ci assert(val->sType == VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO); 234bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO }); 235bf215546Sopenharmony_ci vn_encode_VkTimelineSemaphoreSubmitInfo_pnext(enc, val->pNext); 236bf215546Sopenharmony_ci vn_encode_VkTimelineSemaphoreSubmitInfo_self(enc, val); 237bf215546Sopenharmony_ci} 238bf215546Sopenharmony_ci 239bf215546Sopenharmony_ci/* struct VkSubmitInfo chain */ 240bf215546Sopenharmony_ci 241bf215546Sopenharmony_cistatic inline size_t 242bf215546Sopenharmony_civn_sizeof_VkSubmitInfo_pnext(const void *val) 243bf215546Sopenharmony_ci{ 244bf215546Sopenharmony_ci const VkBaseInStructure *pnext = val; 245bf215546Sopenharmony_ci size_t size = 0; 246bf215546Sopenharmony_ci 247bf215546Sopenharmony_ci while (pnext) { 248bf215546Sopenharmony_ci switch ((int32_t)pnext->sType) { 249bf215546Sopenharmony_ci case VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO: 250bf215546Sopenharmony_ci size += vn_sizeof_simple_pointer(pnext); 251bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&pnext->sType); 252bf215546Sopenharmony_ci size += vn_sizeof_VkSubmitInfo_pnext(pnext->pNext); 253bf215546Sopenharmony_ci size += vn_sizeof_VkDeviceGroupSubmitInfo_self((const VkDeviceGroupSubmitInfo *)pnext); 254bf215546Sopenharmony_ci return size; 255bf215546Sopenharmony_ci case VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO: 256bf215546Sopenharmony_ci size += vn_sizeof_simple_pointer(pnext); 257bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&pnext->sType); 258bf215546Sopenharmony_ci size += vn_sizeof_VkSubmitInfo_pnext(pnext->pNext); 259bf215546Sopenharmony_ci size += vn_sizeof_VkProtectedSubmitInfo_self((const VkProtectedSubmitInfo *)pnext); 260bf215546Sopenharmony_ci return size; 261bf215546Sopenharmony_ci case VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO: 262bf215546Sopenharmony_ci size += vn_sizeof_simple_pointer(pnext); 263bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&pnext->sType); 264bf215546Sopenharmony_ci size += vn_sizeof_VkSubmitInfo_pnext(pnext->pNext); 265bf215546Sopenharmony_ci size += vn_sizeof_VkTimelineSemaphoreSubmitInfo_self((const VkTimelineSemaphoreSubmitInfo *)pnext); 266bf215546Sopenharmony_ci return size; 267bf215546Sopenharmony_ci default: 268bf215546Sopenharmony_ci /* ignore unknown/unsupported struct */ 269bf215546Sopenharmony_ci break; 270bf215546Sopenharmony_ci } 271bf215546Sopenharmony_ci pnext = pnext->pNext; 272bf215546Sopenharmony_ci } 273bf215546Sopenharmony_ci 274bf215546Sopenharmony_ci return vn_sizeof_simple_pointer(NULL); 275bf215546Sopenharmony_ci} 276bf215546Sopenharmony_ci 277bf215546Sopenharmony_cistatic inline size_t 278bf215546Sopenharmony_civn_sizeof_VkSubmitInfo_self(const VkSubmitInfo *val) 279bf215546Sopenharmony_ci{ 280bf215546Sopenharmony_ci size_t size = 0; 281bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 282bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->waitSemaphoreCount); 283bf215546Sopenharmony_ci if (val->pWaitSemaphores) { 284bf215546Sopenharmony_ci size += vn_sizeof_array_size(val->waitSemaphoreCount); 285bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->waitSemaphoreCount; i++) 286bf215546Sopenharmony_ci size += vn_sizeof_VkSemaphore(&val->pWaitSemaphores[i]); 287bf215546Sopenharmony_ci } else { 288bf215546Sopenharmony_ci size += vn_sizeof_array_size(0); 289bf215546Sopenharmony_ci } 290bf215546Sopenharmony_ci if (val->pWaitDstStageMask) { 291bf215546Sopenharmony_ci size += vn_sizeof_array_size(val->waitSemaphoreCount); 292bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->waitSemaphoreCount; i++) 293bf215546Sopenharmony_ci size += vn_sizeof_VkFlags(&val->pWaitDstStageMask[i]); 294bf215546Sopenharmony_ci } else { 295bf215546Sopenharmony_ci size += vn_sizeof_array_size(0); 296bf215546Sopenharmony_ci } 297bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->commandBufferCount); 298bf215546Sopenharmony_ci if (val->pCommandBuffers) { 299bf215546Sopenharmony_ci size += vn_sizeof_array_size(val->commandBufferCount); 300bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->commandBufferCount; i++) 301bf215546Sopenharmony_ci size += vn_sizeof_VkCommandBuffer(&val->pCommandBuffers[i]); 302bf215546Sopenharmony_ci } else { 303bf215546Sopenharmony_ci size += vn_sizeof_array_size(0); 304bf215546Sopenharmony_ci } 305bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->signalSemaphoreCount); 306bf215546Sopenharmony_ci if (val->pSignalSemaphores) { 307bf215546Sopenharmony_ci size += vn_sizeof_array_size(val->signalSemaphoreCount); 308bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->signalSemaphoreCount; i++) 309bf215546Sopenharmony_ci size += vn_sizeof_VkSemaphore(&val->pSignalSemaphores[i]); 310bf215546Sopenharmony_ci } else { 311bf215546Sopenharmony_ci size += vn_sizeof_array_size(0); 312bf215546Sopenharmony_ci } 313bf215546Sopenharmony_ci return size; 314bf215546Sopenharmony_ci} 315bf215546Sopenharmony_ci 316bf215546Sopenharmony_cistatic inline size_t 317bf215546Sopenharmony_civn_sizeof_VkSubmitInfo(const VkSubmitInfo *val) 318bf215546Sopenharmony_ci{ 319bf215546Sopenharmony_ci size_t size = 0; 320bf215546Sopenharmony_ci 321bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&val->sType); 322bf215546Sopenharmony_ci size += vn_sizeof_VkSubmitInfo_pnext(val->pNext); 323bf215546Sopenharmony_ci size += vn_sizeof_VkSubmitInfo_self(val); 324bf215546Sopenharmony_ci 325bf215546Sopenharmony_ci return size; 326bf215546Sopenharmony_ci} 327bf215546Sopenharmony_ci 328bf215546Sopenharmony_cistatic inline void 329bf215546Sopenharmony_civn_encode_VkSubmitInfo_pnext(struct vn_cs_encoder *enc, const void *val) 330bf215546Sopenharmony_ci{ 331bf215546Sopenharmony_ci const VkBaseInStructure *pnext = val; 332bf215546Sopenharmony_ci 333bf215546Sopenharmony_ci while (pnext) { 334bf215546Sopenharmony_ci switch ((int32_t)pnext->sType) { 335bf215546Sopenharmony_ci case VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO: 336bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, pnext); 337bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &pnext->sType); 338bf215546Sopenharmony_ci vn_encode_VkSubmitInfo_pnext(enc, pnext->pNext); 339bf215546Sopenharmony_ci vn_encode_VkDeviceGroupSubmitInfo_self(enc, (const VkDeviceGroupSubmitInfo *)pnext); 340bf215546Sopenharmony_ci return; 341bf215546Sopenharmony_ci case VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO: 342bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, pnext); 343bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &pnext->sType); 344bf215546Sopenharmony_ci vn_encode_VkSubmitInfo_pnext(enc, pnext->pNext); 345bf215546Sopenharmony_ci vn_encode_VkProtectedSubmitInfo_self(enc, (const VkProtectedSubmitInfo *)pnext); 346bf215546Sopenharmony_ci return; 347bf215546Sopenharmony_ci case VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO: 348bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, pnext); 349bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &pnext->sType); 350bf215546Sopenharmony_ci vn_encode_VkSubmitInfo_pnext(enc, pnext->pNext); 351bf215546Sopenharmony_ci vn_encode_VkTimelineSemaphoreSubmitInfo_self(enc, (const VkTimelineSemaphoreSubmitInfo *)pnext); 352bf215546Sopenharmony_ci return; 353bf215546Sopenharmony_ci default: 354bf215546Sopenharmony_ci /* ignore unknown/unsupported struct */ 355bf215546Sopenharmony_ci break; 356bf215546Sopenharmony_ci } 357bf215546Sopenharmony_ci pnext = pnext->pNext; 358bf215546Sopenharmony_ci } 359bf215546Sopenharmony_ci 360bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, NULL); 361bf215546Sopenharmony_ci} 362bf215546Sopenharmony_ci 363bf215546Sopenharmony_cistatic inline void 364bf215546Sopenharmony_civn_encode_VkSubmitInfo_self(struct vn_cs_encoder *enc, const VkSubmitInfo *val) 365bf215546Sopenharmony_ci{ 366bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 367bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->waitSemaphoreCount); 368bf215546Sopenharmony_ci if (val->pWaitSemaphores) { 369bf215546Sopenharmony_ci vn_encode_array_size(enc, val->waitSemaphoreCount); 370bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->waitSemaphoreCount; i++) 371bf215546Sopenharmony_ci vn_encode_VkSemaphore(enc, &val->pWaitSemaphores[i]); 372bf215546Sopenharmony_ci } else { 373bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 374bf215546Sopenharmony_ci } 375bf215546Sopenharmony_ci if (val->pWaitDstStageMask) { 376bf215546Sopenharmony_ci vn_encode_array_size(enc, val->waitSemaphoreCount); 377bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->waitSemaphoreCount; i++) 378bf215546Sopenharmony_ci vn_encode_VkFlags(enc, &val->pWaitDstStageMask[i]); 379bf215546Sopenharmony_ci } else { 380bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 381bf215546Sopenharmony_ci } 382bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->commandBufferCount); 383bf215546Sopenharmony_ci if (val->pCommandBuffers) { 384bf215546Sopenharmony_ci vn_encode_array_size(enc, val->commandBufferCount); 385bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->commandBufferCount; i++) 386bf215546Sopenharmony_ci vn_encode_VkCommandBuffer(enc, &val->pCommandBuffers[i]); 387bf215546Sopenharmony_ci } else { 388bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 389bf215546Sopenharmony_ci } 390bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->signalSemaphoreCount); 391bf215546Sopenharmony_ci if (val->pSignalSemaphores) { 392bf215546Sopenharmony_ci vn_encode_array_size(enc, val->signalSemaphoreCount); 393bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->signalSemaphoreCount; i++) 394bf215546Sopenharmony_ci vn_encode_VkSemaphore(enc, &val->pSignalSemaphores[i]); 395bf215546Sopenharmony_ci } else { 396bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 397bf215546Sopenharmony_ci } 398bf215546Sopenharmony_ci} 399bf215546Sopenharmony_ci 400bf215546Sopenharmony_cistatic inline void 401bf215546Sopenharmony_civn_encode_VkSubmitInfo(struct vn_cs_encoder *enc, const VkSubmitInfo *val) 402bf215546Sopenharmony_ci{ 403bf215546Sopenharmony_ci assert(val->sType == VK_STRUCTURE_TYPE_SUBMIT_INFO); 404bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_SUBMIT_INFO }); 405bf215546Sopenharmony_ci vn_encode_VkSubmitInfo_pnext(enc, val->pNext); 406bf215546Sopenharmony_ci vn_encode_VkSubmitInfo_self(enc, val); 407bf215546Sopenharmony_ci} 408bf215546Sopenharmony_ci 409bf215546Sopenharmony_ci/* struct VkSparseMemoryBind */ 410bf215546Sopenharmony_ci 411bf215546Sopenharmony_cistatic inline size_t 412bf215546Sopenharmony_civn_sizeof_VkSparseMemoryBind(const VkSparseMemoryBind *val) 413bf215546Sopenharmony_ci{ 414bf215546Sopenharmony_ci size_t size = 0; 415bf215546Sopenharmony_ci size += vn_sizeof_VkDeviceSize(&val->resourceOffset); 416bf215546Sopenharmony_ci size += vn_sizeof_VkDeviceSize(&val->size); 417bf215546Sopenharmony_ci size += vn_sizeof_VkDeviceMemory(&val->memory); 418bf215546Sopenharmony_ci size += vn_sizeof_VkDeviceSize(&val->memoryOffset); 419bf215546Sopenharmony_ci size += vn_sizeof_VkFlags(&val->flags); 420bf215546Sopenharmony_ci return size; 421bf215546Sopenharmony_ci} 422bf215546Sopenharmony_ci 423bf215546Sopenharmony_cistatic inline void 424bf215546Sopenharmony_civn_encode_VkSparseMemoryBind(struct vn_cs_encoder *enc, const VkSparseMemoryBind *val) 425bf215546Sopenharmony_ci{ 426bf215546Sopenharmony_ci vn_encode_VkDeviceSize(enc, &val->resourceOffset); 427bf215546Sopenharmony_ci vn_encode_VkDeviceSize(enc, &val->size); 428bf215546Sopenharmony_ci vn_encode_VkDeviceMemory(enc, &val->memory); 429bf215546Sopenharmony_ci vn_encode_VkDeviceSize(enc, &val->memoryOffset); 430bf215546Sopenharmony_ci vn_encode_VkFlags(enc, &val->flags); 431bf215546Sopenharmony_ci} 432bf215546Sopenharmony_ci 433bf215546Sopenharmony_ci/* struct VkSparseBufferMemoryBindInfo */ 434bf215546Sopenharmony_ci 435bf215546Sopenharmony_cistatic inline size_t 436bf215546Sopenharmony_civn_sizeof_VkSparseBufferMemoryBindInfo(const VkSparseBufferMemoryBindInfo *val) 437bf215546Sopenharmony_ci{ 438bf215546Sopenharmony_ci size_t size = 0; 439bf215546Sopenharmony_ci size += vn_sizeof_VkBuffer(&val->buffer); 440bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->bindCount); 441bf215546Sopenharmony_ci if (val->pBinds) { 442bf215546Sopenharmony_ci size += vn_sizeof_array_size(val->bindCount); 443bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->bindCount; i++) 444bf215546Sopenharmony_ci size += vn_sizeof_VkSparseMemoryBind(&val->pBinds[i]); 445bf215546Sopenharmony_ci } else { 446bf215546Sopenharmony_ci size += vn_sizeof_array_size(0); 447bf215546Sopenharmony_ci } 448bf215546Sopenharmony_ci return size; 449bf215546Sopenharmony_ci} 450bf215546Sopenharmony_ci 451bf215546Sopenharmony_cistatic inline void 452bf215546Sopenharmony_civn_encode_VkSparseBufferMemoryBindInfo(struct vn_cs_encoder *enc, const VkSparseBufferMemoryBindInfo *val) 453bf215546Sopenharmony_ci{ 454bf215546Sopenharmony_ci vn_encode_VkBuffer(enc, &val->buffer); 455bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->bindCount); 456bf215546Sopenharmony_ci if (val->pBinds) { 457bf215546Sopenharmony_ci vn_encode_array_size(enc, val->bindCount); 458bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->bindCount; i++) 459bf215546Sopenharmony_ci vn_encode_VkSparseMemoryBind(enc, &val->pBinds[i]); 460bf215546Sopenharmony_ci } else { 461bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 462bf215546Sopenharmony_ci } 463bf215546Sopenharmony_ci} 464bf215546Sopenharmony_ci 465bf215546Sopenharmony_ci/* struct VkSparseImageOpaqueMemoryBindInfo */ 466bf215546Sopenharmony_ci 467bf215546Sopenharmony_cistatic inline size_t 468bf215546Sopenharmony_civn_sizeof_VkSparseImageOpaqueMemoryBindInfo(const VkSparseImageOpaqueMemoryBindInfo *val) 469bf215546Sopenharmony_ci{ 470bf215546Sopenharmony_ci size_t size = 0; 471bf215546Sopenharmony_ci size += vn_sizeof_VkImage(&val->image); 472bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->bindCount); 473bf215546Sopenharmony_ci if (val->pBinds) { 474bf215546Sopenharmony_ci size += vn_sizeof_array_size(val->bindCount); 475bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->bindCount; i++) 476bf215546Sopenharmony_ci size += vn_sizeof_VkSparseMemoryBind(&val->pBinds[i]); 477bf215546Sopenharmony_ci } else { 478bf215546Sopenharmony_ci size += vn_sizeof_array_size(0); 479bf215546Sopenharmony_ci } 480bf215546Sopenharmony_ci return size; 481bf215546Sopenharmony_ci} 482bf215546Sopenharmony_ci 483bf215546Sopenharmony_cistatic inline void 484bf215546Sopenharmony_civn_encode_VkSparseImageOpaqueMemoryBindInfo(struct vn_cs_encoder *enc, const VkSparseImageOpaqueMemoryBindInfo *val) 485bf215546Sopenharmony_ci{ 486bf215546Sopenharmony_ci vn_encode_VkImage(enc, &val->image); 487bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->bindCount); 488bf215546Sopenharmony_ci if (val->pBinds) { 489bf215546Sopenharmony_ci vn_encode_array_size(enc, val->bindCount); 490bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->bindCount; i++) 491bf215546Sopenharmony_ci vn_encode_VkSparseMemoryBind(enc, &val->pBinds[i]); 492bf215546Sopenharmony_ci } else { 493bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 494bf215546Sopenharmony_ci } 495bf215546Sopenharmony_ci} 496bf215546Sopenharmony_ci 497bf215546Sopenharmony_ci/* struct VkSparseImageMemoryBind */ 498bf215546Sopenharmony_ci 499bf215546Sopenharmony_cistatic inline size_t 500bf215546Sopenharmony_civn_sizeof_VkSparseImageMemoryBind(const VkSparseImageMemoryBind *val) 501bf215546Sopenharmony_ci{ 502bf215546Sopenharmony_ci size_t size = 0; 503bf215546Sopenharmony_ci size += vn_sizeof_VkImageSubresource(&val->subresource); 504bf215546Sopenharmony_ci size += vn_sizeof_VkOffset3D(&val->offset); 505bf215546Sopenharmony_ci size += vn_sizeof_VkExtent3D(&val->extent); 506bf215546Sopenharmony_ci size += vn_sizeof_VkDeviceMemory(&val->memory); 507bf215546Sopenharmony_ci size += vn_sizeof_VkDeviceSize(&val->memoryOffset); 508bf215546Sopenharmony_ci size += vn_sizeof_VkFlags(&val->flags); 509bf215546Sopenharmony_ci return size; 510bf215546Sopenharmony_ci} 511bf215546Sopenharmony_ci 512bf215546Sopenharmony_cistatic inline void 513bf215546Sopenharmony_civn_encode_VkSparseImageMemoryBind(struct vn_cs_encoder *enc, const VkSparseImageMemoryBind *val) 514bf215546Sopenharmony_ci{ 515bf215546Sopenharmony_ci vn_encode_VkImageSubresource(enc, &val->subresource); 516bf215546Sopenharmony_ci vn_encode_VkOffset3D(enc, &val->offset); 517bf215546Sopenharmony_ci vn_encode_VkExtent3D(enc, &val->extent); 518bf215546Sopenharmony_ci vn_encode_VkDeviceMemory(enc, &val->memory); 519bf215546Sopenharmony_ci vn_encode_VkDeviceSize(enc, &val->memoryOffset); 520bf215546Sopenharmony_ci vn_encode_VkFlags(enc, &val->flags); 521bf215546Sopenharmony_ci} 522bf215546Sopenharmony_ci 523bf215546Sopenharmony_ci/* struct VkSparseImageMemoryBindInfo */ 524bf215546Sopenharmony_ci 525bf215546Sopenharmony_cistatic inline size_t 526bf215546Sopenharmony_civn_sizeof_VkSparseImageMemoryBindInfo(const VkSparseImageMemoryBindInfo *val) 527bf215546Sopenharmony_ci{ 528bf215546Sopenharmony_ci size_t size = 0; 529bf215546Sopenharmony_ci size += vn_sizeof_VkImage(&val->image); 530bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->bindCount); 531bf215546Sopenharmony_ci if (val->pBinds) { 532bf215546Sopenharmony_ci size += vn_sizeof_array_size(val->bindCount); 533bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->bindCount; i++) 534bf215546Sopenharmony_ci size += vn_sizeof_VkSparseImageMemoryBind(&val->pBinds[i]); 535bf215546Sopenharmony_ci } else { 536bf215546Sopenharmony_ci size += vn_sizeof_array_size(0); 537bf215546Sopenharmony_ci } 538bf215546Sopenharmony_ci return size; 539bf215546Sopenharmony_ci} 540bf215546Sopenharmony_ci 541bf215546Sopenharmony_cistatic inline void 542bf215546Sopenharmony_civn_encode_VkSparseImageMemoryBindInfo(struct vn_cs_encoder *enc, const VkSparseImageMemoryBindInfo *val) 543bf215546Sopenharmony_ci{ 544bf215546Sopenharmony_ci vn_encode_VkImage(enc, &val->image); 545bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->bindCount); 546bf215546Sopenharmony_ci if (val->pBinds) { 547bf215546Sopenharmony_ci vn_encode_array_size(enc, val->bindCount); 548bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->bindCount; i++) 549bf215546Sopenharmony_ci vn_encode_VkSparseImageMemoryBind(enc, &val->pBinds[i]); 550bf215546Sopenharmony_ci } else { 551bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 552bf215546Sopenharmony_ci } 553bf215546Sopenharmony_ci} 554bf215546Sopenharmony_ci 555bf215546Sopenharmony_ci/* struct VkDeviceGroupBindSparseInfo chain */ 556bf215546Sopenharmony_ci 557bf215546Sopenharmony_cistatic inline size_t 558bf215546Sopenharmony_civn_sizeof_VkDeviceGroupBindSparseInfo_pnext(const void *val) 559bf215546Sopenharmony_ci{ 560bf215546Sopenharmony_ci /* no known/supported struct */ 561bf215546Sopenharmony_ci return vn_sizeof_simple_pointer(NULL); 562bf215546Sopenharmony_ci} 563bf215546Sopenharmony_ci 564bf215546Sopenharmony_cistatic inline size_t 565bf215546Sopenharmony_civn_sizeof_VkDeviceGroupBindSparseInfo_self(const VkDeviceGroupBindSparseInfo *val) 566bf215546Sopenharmony_ci{ 567bf215546Sopenharmony_ci size_t size = 0; 568bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 569bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->resourceDeviceIndex); 570bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->memoryDeviceIndex); 571bf215546Sopenharmony_ci return size; 572bf215546Sopenharmony_ci} 573bf215546Sopenharmony_ci 574bf215546Sopenharmony_cistatic inline size_t 575bf215546Sopenharmony_civn_sizeof_VkDeviceGroupBindSparseInfo(const VkDeviceGroupBindSparseInfo *val) 576bf215546Sopenharmony_ci{ 577bf215546Sopenharmony_ci size_t size = 0; 578bf215546Sopenharmony_ci 579bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&val->sType); 580bf215546Sopenharmony_ci size += vn_sizeof_VkDeviceGroupBindSparseInfo_pnext(val->pNext); 581bf215546Sopenharmony_ci size += vn_sizeof_VkDeviceGroupBindSparseInfo_self(val); 582bf215546Sopenharmony_ci 583bf215546Sopenharmony_ci return size; 584bf215546Sopenharmony_ci} 585bf215546Sopenharmony_ci 586bf215546Sopenharmony_cistatic inline void 587bf215546Sopenharmony_civn_encode_VkDeviceGroupBindSparseInfo_pnext(struct vn_cs_encoder *enc, const void *val) 588bf215546Sopenharmony_ci{ 589bf215546Sopenharmony_ci /* no known/supported struct */ 590bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, NULL); 591bf215546Sopenharmony_ci} 592bf215546Sopenharmony_ci 593bf215546Sopenharmony_cistatic inline void 594bf215546Sopenharmony_civn_encode_VkDeviceGroupBindSparseInfo_self(struct vn_cs_encoder *enc, const VkDeviceGroupBindSparseInfo *val) 595bf215546Sopenharmony_ci{ 596bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 597bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->resourceDeviceIndex); 598bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->memoryDeviceIndex); 599bf215546Sopenharmony_ci} 600bf215546Sopenharmony_ci 601bf215546Sopenharmony_cistatic inline void 602bf215546Sopenharmony_civn_encode_VkDeviceGroupBindSparseInfo(struct vn_cs_encoder *enc, const VkDeviceGroupBindSparseInfo *val) 603bf215546Sopenharmony_ci{ 604bf215546Sopenharmony_ci assert(val->sType == VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO); 605bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO }); 606bf215546Sopenharmony_ci vn_encode_VkDeviceGroupBindSparseInfo_pnext(enc, val->pNext); 607bf215546Sopenharmony_ci vn_encode_VkDeviceGroupBindSparseInfo_self(enc, val); 608bf215546Sopenharmony_ci} 609bf215546Sopenharmony_ci 610bf215546Sopenharmony_ci/* struct VkBindSparseInfo chain */ 611bf215546Sopenharmony_ci 612bf215546Sopenharmony_cistatic inline size_t 613bf215546Sopenharmony_civn_sizeof_VkBindSparseInfo_pnext(const void *val) 614bf215546Sopenharmony_ci{ 615bf215546Sopenharmony_ci const VkBaseInStructure *pnext = val; 616bf215546Sopenharmony_ci size_t size = 0; 617bf215546Sopenharmony_ci 618bf215546Sopenharmony_ci while (pnext) { 619bf215546Sopenharmony_ci switch ((int32_t)pnext->sType) { 620bf215546Sopenharmony_ci case VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO: 621bf215546Sopenharmony_ci size += vn_sizeof_simple_pointer(pnext); 622bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&pnext->sType); 623bf215546Sopenharmony_ci size += vn_sizeof_VkBindSparseInfo_pnext(pnext->pNext); 624bf215546Sopenharmony_ci size += vn_sizeof_VkDeviceGroupBindSparseInfo_self((const VkDeviceGroupBindSparseInfo *)pnext); 625bf215546Sopenharmony_ci return size; 626bf215546Sopenharmony_ci case VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO: 627bf215546Sopenharmony_ci size += vn_sizeof_simple_pointer(pnext); 628bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&pnext->sType); 629bf215546Sopenharmony_ci size += vn_sizeof_VkBindSparseInfo_pnext(pnext->pNext); 630bf215546Sopenharmony_ci size += vn_sizeof_VkTimelineSemaphoreSubmitInfo_self((const VkTimelineSemaphoreSubmitInfo *)pnext); 631bf215546Sopenharmony_ci return size; 632bf215546Sopenharmony_ci default: 633bf215546Sopenharmony_ci /* ignore unknown/unsupported struct */ 634bf215546Sopenharmony_ci break; 635bf215546Sopenharmony_ci } 636bf215546Sopenharmony_ci pnext = pnext->pNext; 637bf215546Sopenharmony_ci } 638bf215546Sopenharmony_ci 639bf215546Sopenharmony_ci return vn_sizeof_simple_pointer(NULL); 640bf215546Sopenharmony_ci} 641bf215546Sopenharmony_ci 642bf215546Sopenharmony_cistatic inline size_t 643bf215546Sopenharmony_civn_sizeof_VkBindSparseInfo_self(const VkBindSparseInfo *val) 644bf215546Sopenharmony_ci{ 645bf215546Sopenharmony_ci size_t size = 0; 646bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 647bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->waitSemaphoreCount); 648bf215546Sopenharmony_ci if (val->pWaitSemaphores) { 649bf215546Sopenharmony_ci size += vn_sizeof_array_size(val->waitSemaphoreCount); 650bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->waitSemaphoreCount; i++) 651bf215546Sopenharmony_ci size += vn_sizeof_VkSemaphore(&val->pWaitSemaphores[i]); 652bf215546Sopenharmony_ci } else { 653bf215546Sopenharmony_ci size += vn_sizeof_array_size(0); 654bf215546Sopenharmony_ci } 655bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->bufferBindCount); 656bf215546Sopenharmony_ci if (val->pBufferBinds) { 657bf215546Sopenharmony_ci size += vn_sizeof_array_size(val->bufferBindCount); 658bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->bufferBindCount; i++) 659bf215546Sopenharmony_ci size += vn_sizeof_VkSparseBufferMemoryBindInfo(&val->pBufferBinds[i]); 660bf215546Sopenharmony_ci } else { 661bf215546Sopenharmony_ci size += vn_sizeof_array_size(0); 662bf215546Sopenharmony_ci } 663bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->imageOpaqueBindCount); 664bf215546Sopenharmony_ci if (val->pImageOpaqueBinds) { 665bf215546Sopenharmony_ci size += vn_sizeof_array_size(val->imageOpaqueBindCount); 666bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->imageOpaqueBindCount; i++) 667bf215546Sopenharmony_ci size += vn_sizeof_VkSparseImageOpaqueMemoryBindInfo(&val->pImageOpaqueBinds[i]); 668bf215546Sopenharmony_ci } else { 669bf215546Sopenharmony_ci size += vn_sizeof_array_size(0); 670bf215546Sopenharmony_ci } 671bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->imageBindCount); 672bf215546Sopenharmony_ci if (val->pImageBinds) { 673bf215546Sopenharmony_ci size += vn_sizeof_array_size(val->imageBindCount); 674bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->imageBindCount; i++) 675bf215546Sopenharmony_ci size += vn_sizeof_VkSparseImageMemoryBindInfo(&val->pImageBinds[i]); 676bf215546Sopenharmony_ci } else { 677bf215546Sopenharmony_ci size += vn_sizeof_array_size(0); 678bf215546Sopenharmony_ci } 679bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->signalSemaphoreCount); 680bf215546Sopenharmony_ci if (val->pSignalSemaphores) { 681bf215546Sopenharmony_ci size += vn_sizeof_array_size(val->signalSemaphoreCount); 682bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->signalSemaphoreCount; i++) 683bf215546Sopenharmony_ci size += vn_sizeof_VkSemaphore(&val->pSignalSemaphores[i]); 684bf215546Sopenharmony_ci } else { 685bf215546Sopenharmony_ci size += vn_sizeof_array_size(0); 686bf215546Sopenharmony_ci } 687bf215546Sopenharmony_ci return size; 688bf215546Sopenharmony_ci} 689bf215546Sopenharmony_ci 690bf215546Sopenharmony_cistatic inline size_t 691bf215546Sopenharmony_civn_sizeof_VkBindSparseInfo(const VkBindSparseInfo *val) 692bf215546Sopenharmony_ci{ 693bf215546Sopenharmony_ci size_t size = 0; 694bf215546Sopenharmony_ci 695bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&val->sType); 696bf215546Sopenharmony_ci size += vn_sizeof_VkBindSparseInfo_pnext(val->pNext); 697bf215546Sopenharmony_ci size += vn_sizeof_VkBindSparseInfo_self(val); 698bf215546Sopenharmony_ci 699bf215546Sopenharmony_ci return size; 700bf215546Sopenharmony_ci} 701bf215546Sopenharmony_ci 702bf215546Sopenharmony_cistatic inline void 703bf215546Sopenharmony_civn_encode_VkBindSparseInfo_pnext(struct vn_cs_encoder *enc, const void *val) 704bf215546Sopenharmony_ci{ 705bf215546Sopenharmony_ci const VkBaseInStructure *pnext = val; 706bf215546Sopenharmony_ci 707bf215546Sopenharmony_ci while (pnext) { 708bf215546Sopenharmony_ci switch ((int32_t)pnext->sType) { 709bf215546Sopenharmony_ci case VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO: 710bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, pnext); 711bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &pnext->sType); 712bf215546Sopenharmony_ci vn_encode_VkBindSparseInfo_pnext(enc, pnext->pNext); 713bf215546Sopenharmony_ci vn_encode_VkDeviceGroupBindSparseInfo_self(enc, (const VkDeviceGroupBindSparseInfo *)pnext); 714bf215546Sopenharmony_ci return; 715bf215546Sopenharmony_ci case VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO: 716bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, pnext); 717bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &pnext->sType); 718bf215546Sopenharmony_ci vn_encode_VkBindSparseInfo_pnext(enc, pnext->pNext); 719bf215546Sopenharmony_ci vn_encode_VkTimelineSemaphoreSubmitInfo_self(enc, (const VkTimelineSemaphoreSubmitInfo *)pnext); 720bf215546Sopenharmony_ci return; 721bf215546Sopenharmony_ci default: 722bf215546Sopenharmony_ci /* ignore unknown/unsupported struct */ 723bf215546Sopenharmony_ci break; 724bf215546Sopenharmony_ci } 725bf215546Sopenharmony_ci pnext = pnext->pNext; 726bf215546Sopenharmony_ci } 727bf215546Sopenharmony_ci 728bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, NULL); 729bf215546Sopenharmony_ci} 730bf215546Sopenharmony_ci 731bf215546Sopenharmony_cistatic inline void 732bf215546Sopenharmony_civn_encode_VkBindSparseInfo_self(struct vn_cs_encoder *enc, const VkBindSparseInfo *val) 733bf215546Sopenharmony_ci{ 734bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 735bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->waitSemaphoreCount); 736bf215546Sopenharmony_ci if (val->pWaitSemaphores) { 737bf215546Sopenharmony_ci vn_encode_array_size(enc, val->waitSemaphoreCount); 738bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->waitSemaphoreCount; i++) 739bf215546Sopenharmony_ci vn_encode_VkSemaphore(enc, &val->pWaitSemaphores[i]); 740bf215546Sopenharmony_ci } else { 741bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 742bf215546Sopenharmony_ci } 743bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->bufferBindCount); 744bf215546Sopenharmony_ci if (val->pBufferBinds) { 745bf215546Sopenharmony_ci vn_encode_array_size(enc, val->bufferBindCount); 746bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->bufferBindCount; i++) 747bf215546Sopenharmony_ci vn_encode_VkSparseBufferMemoryBindInfo(enc, &val->pBufferBinds[i]); 748bf215546Sopenharmony_ci } else { 749bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 750bf215546Sopenharmony_ci } 751bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->imageOpaqueBindCount); 752bf215546Sopenharmony_ci if (val->pImageOpaqueBinds) { 753bf215546Sopenharmony_ci vn_encode_array_size(enc, val->imageOpaqueBindCount); 754bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->imageOpaqueBindCount; i++) 755bf215546Sopenharmony_ci vn_encode_VkSparseImageOpaqueMemoryBindInfo(enc, &val->pImageOpaqueBinds[i]); 756bf215546Sopenharmony_ci } else { 757bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 758bf215546Sopenharmony_ci } 759bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->imageBindCount); 760bf215546Sopenharmony_ci if (val->pImageBinds) { 761bf215546Sopenharmony_ci vn_encode_array_size(enc, val->imageBindCount); 762bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->imageBindCount; i++) 763bf215546Sopenharmony_ci vn_encode_VkSparseImageMemoryBindInfo(enc, &val->pImageBinds[i]); 764bf215546Sopenharmony_ci } else { 765bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 766bf215546Sopenharmony_ci } 767bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->signalSemaphoreCount); 768bf215546Sopenharmony_ci if (val->pSignalSemaphores) { 769bf215546Sopenharmony_ci vn_encode_array_size(enc, val->signalSemaphoreCount); 770bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->signalSemaphoreCount; i++) 771bf215546Sopenharmony_ci vn_encode_VkSemaphore(enc, &val->pSignalSemaphores[i]); 772bf215546Sopenharmony_ci } else { 773bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 774bf215546Sopenharmony_ci } 775bf215546Sopenharmony_ci} 776bf215546Sopenharmony_ci 777bf215546Sopenharmony_cistatic inline void 778bf215546Sopenharmony_civn_encode_VkBindSparseInfo(struct vn_cs_encoder *enc, const VkBindSparseInfo *val) 779bf215546Sopenharmony_ci{ 780bf215546Sopenharmony_ci assert(val->sType == VK_STRUCTURE_TYPE_BIND_SPARSE_INFO); 781bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_BIND_SPARSE_INFO }); 782bf215546Sopenharmony_ci vn_encode_VkBindSparseInfo_pnext(enc, val->pNext); 783bf215546Sopenharmony_ci vn_encode_VkBindSparseInfo_self(enc, val); 784bf215546Sopenharmony_ci} 785bf215546Sopenharmony_ci 786bf215546Sopenharmony_ci/* struct VkSemaphoreSubmitInfo chain */ 787bf215546Sopenharmony_ci 788bf215546Sopenharmony_cistatic inline size_t 789bf215546Sopenharmony_civn_sizeof_VkSemaphoreSubmitInfo_pnext(const void *val) 790bf215546Sopenharmony_ci{ 791bf215546Sopenharmony_ci /* no known/supported struct */ 792bf215546Sopenharmony_ci return vn_sizeof_simple_pointer(NULL); 793bf215546Sopenharmony_ci} 794bf215546Sopenharmony_ci 795bf215546Sopenharmony_cistatic inline size_t 796bf215546Sopenharmony_civn_sizeof_VkSemaphoreSubmitInfo_self(const VkSemaphoreSubmitInfo *val) 797bf215546Sopenharmony_ci{ 798bf215546Sopenharmony_ci size_t size = 0; 799bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 800bf215546Sopenharmony_ci size += vn_sizeof_VkSemaphore(&val->semaphore); 801bf215546Sopenharmony_ci size += vn_sizeof_uint64_t(&val->value); 802bf215546Sopenharmony_ci size += vn_sizeof_VkFlags64(&val->stageMask); 803bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->deviceIndex); 804bf215546Sopenharmony_ci return size; 805bf215546Sopenharmony_ci} 806bf215546Sopenharmony_ci 807bf215546Sopenharmony_cistatic inline size_t 808bf215546Sopenharmony_civn_sizeof_VkSemaphoreSubmitInfo(const VkSemaphoreSubmitInfo *val) 809bf215546Sopenharmony_ci{ 810bf215546Sopenharmony_ci size_t size = 0; 811bf215546Sopenharmony_ci 812bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&val->sType); 813bf215546Sopenharmony_ci size += vn_sizeof_VkSemaphoreSubmitInfo_pnext(val->pNext); 814bf215546Sopenharmony_ci size += vn_sizeof_VkSemaphoreSubmitInfo_self(val); 815bf215546Sopenharmony_ci 816bf215546Sopenharmony_ci return size; 817bf215546Sopenharmony_ci} 818bf215546Sopenharmony_ci 819bf215546Sopenharmony_cistatic inline void 820bf215546Sopenharmony_civn_encode_VkSemaphoreSubmitInfo_pnext(struct vn_cs_encoder *enc, const void *val) 821bf215546Sopenharmony_ci{ 822bf215546Sopenharmony_ci /* no known/supported struct */ 823bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, NULL); 824bf215546Sopenharmony_ci} 825bf215546Sopenharmony_ci 826bf215546Sopenharmony_cistatic inline void 827bf215546Sopenharmony_civn_encode_VkSemaphoreSubmitInfo_self(struct vn_cs_encoder *enc, const VkSemaphoreSubmitInfo *val) 828bf215546Sopenharmony_ci{ 829bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 830bf215546Sopenharmony_ci vn_encode_VkSemaphore(enc, &val->semaphore); 831bf215546Sopenharmony_ci vn_encode_uint64_t(enc, &val->value); 832bf215546Sopenharmony_ci vn_encode_VkFlags64(enc, &val->stageMask); 833bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->deviceIndex); 834bf215546Sopenharmony_ci} 835bf215546Sopenharmony_ci 836bf215546Sopenharmony_cistatic inline void 837bf215546Sopenharmony_civn_encode_VkSemaphoreSubmitInfo(struct vn_cs_encoder *enc, const VkSemaphoreSubmitInfo *val) 838bf215546Sopenharmony_ci{ 839bf215546Sopenharmony_ci assert(val->sType == VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO); 840bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO }); 841bf215546Sopenharmony_ci vn_encode_VkSemaphoreSubmitInfo_pnext(enc, val->pNext); 842bf215546Sopenharmony_ci vn_encode_VkSemaphoreSubmitInfo_self(enc, val); 843bf215546Sopenharmony_ci} 844bf215546Sopenharmony_ci 845bf215546Sopenharmony_ci/* struct VkCommandBufferSubmitInfo chain */ 846bf215546Sopenharmony_ci 847bf215546Sopenharmony_cistatic inline size_t 848bf215546Sopenharmony_civn_sizeof_VkCommandBufferSubmitInfo_pnext(const void *val) 849bf215546Sopenharmony_ci{ 850bf215546Sopenharmony_ci /* no known/supported struct */ 851bf215546Sopenharmony_ci return vn_sizeof_simple_pointer(NULL); 852bf215546Sopenharmony_ci} 853bf215546Sopenharmony_ci 854bf215546Sopenharmony_cistatic inline size_t 855bf215546Sopenharmony_civn_sizeof_VkCommandBufferSubmitInfo_self(const VkCommandBufferSubmitInfo *val) 856bf215546Sopenharmony_ci{ 857bf215546Sopenharmony_ci size_t size = 0; 858bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 859bf215546Sopenharmony_ci size += vn_sizeof_VkCommandBuffer(&val->commandBuffer); 860bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->deviceMask); 861bf215546Sopenharmony_ci return size; 862bf215546Sopenharmony_ci} 863bf215546Sopenharmony_ci 864bf215546Sopenharmony_cistatic inline size_t 865bf215546Sopenharmony_civn_sizeof_VkCommandBufferSubmitInfo(const VkCommandBufferSubmitInfo *val) 866bf215546Sopenharmony_ci{ 867bf215546Sopenharmony_ci size_t size = 0; 868bf215546Sopenharmony_ci 869bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&val->sType); 870bf215546Sopenharmony_ci size += vn_sizeof_VkCommandBufferSubmitInfo_pnext(val->pNext); 871bf215546Sopenharmony_ci size += vn_sizeof_VkCommandBufferSubmitInfo_self(val); 872bf215546Sopenharmony_ci 873bf215546Sopenharmony_ci return size; 874bf215546Sopenharmony_ci} 875bf215546Sopenharmony_ci 876bf215546Sopenharmony_cistatic inline void 877bf215546Sopenharmony_civn_encode_VkCommandBufferSubmitInfo_pnext(struct vn_cs_encoder *enc, const void *val) 878bf215546Sopenharmony_ci{ 879bf215546Sopenharmony_ci /* no known/supported struct */ 880bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, NULL); 881bf215546Sopenharmony_ci} 882bf215546Sopenharmony_ci 883bf215546Sopenharmony_cistatic inline void 884bf215546Sopenharmony_civn_encode_VkCommandBufferSubmitInfo_self(struct vn_cs_encoder *enc, const VkCommandBufferSubmitInfo *val) 885bf215546Sopenharmony_ci{ 886bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 887bf215546Sopenharmony_ci vn_encode_VkCommandBuffer(enc, &val->commandBuffer); 888bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->deviceMask); 889bf215546Sopenharmony_ci} 890bf215546Sopenharmony_ci 891bf215546Sopenharmony_cistatic inline void 892bf215546Sopenharmony_civn_encode_VkCommandBufferSubmitInfo(struct vn_cs_encoder *enc, const VkCommandBufferSubmitInfo *val) 893bf215546Sopenharmony_ci{ 894bf215546Sopenharmony_ci assert(val->sType == VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO); 895bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO }); 896bf215546Sopenharmony_ci vn_encode_VkCommandBufferSubmitInfo_pnext(enc, val->pNext); 897bf215546Sopenharmony_ci vn_encode_VkCommandBufferSubmitInfo_self(enc, val); 898bf215546Sopenharmony_ci} 899bf215546Sopenharmony_ci 900bf215546Sopenharmony_ci/* struct VkSubmitInfo2 chain */ 901bf215546Sopenharmony_ci 902bf215546Sopenharmony_cistatic inline size_t 903bf215546Sopenharmony_civn_sizeof_VkSubmitInfo2_pnext(const void *val) 904bf215546Sopenharmony_ci{ 905bf215546Sopenharmony_ci /* no known/supported struct */ 906bf215546Sopenharmony_ci return vn_sizeof_simple_pointer(NULL); 907bf215546Sopenharmony_ci} 908bf215546Sopenharmony_ci 909bf215546Sopenharmony_cistatic inline size_t 910bf215546Sopenharmony_civn_sizeof_VkSubmitInfo2_self(const VkSubmitInfo2 *val) 911bf215546Sopenharmony_ci{ 912bf215546Sopenharmony_ci size_t size = 0; 913bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 914bf215546Sopenharmony_ci size += vn_sizeof_VkFlags(&val->flags); 915bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->waitSemaphoreInfoCount); 916bf215546Sopenharmony_ci if (val->pWaitSemaphoreInfos) { 917bf215546Sopenharmony_ci size += vn_sizeof_array_size(val->waitSemaphoreInfoCount); 918bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->waitSemaphoreInfoCount; i++) 919bf215546Sopenharmony_ci size += vn_sizeof_VkSemaphoreSubmitInfo(&val->pWaitSemaphoreInfos[i]); 920bf215546Sopenharmony_ci } else { 921bf215546Sopenharmony_ci size += vn_sizeof_array_size(0); 922bf215546Sopenharmony_ci } 923bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->commandBufferInfoCount); 924bf215546Sopenharmony_ci if (val->pCommandBufferInfos) { 925bf215546Sopenharmony_ci size += vn_sizeof_array_size(val->commandBufferInfoCount); 926bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->commandBufferInfoCount; i++) 927bf215546Sopenharmony_ci size += vn_sizeof_VkCommandBufferSubmitInfo(&val->pCommandBufferInfos[i]); 928bf215546Sopenharmony_ci } else { 929bf215546Sopenharmony_ci size += vn_sizeof_array_size(0); 930bf215546Sopenharmony_ci } 931bf215546Sopenharmony_ci size += vn_sizeof_uint32_t(&val->signalSemaphoreInfoCount); 932bf215546Sopenharmony_ci if (val->pSignalSemaphoreInfos) { 933bf215546Sopenharmony_ci size += vn_sizeof_array_size(val->signalSemaphoreInfoCount); 934bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->signalSemaphoreInfoCount; i++) 935bf215546Sopenharmony_ci size += vn_sizeof_VkSemaphoreSubmitInfo(&val->pSignalSemaphoreInfos[i]); 936bf215546Sopenharmony_ci } else { 937bf215546Sopenharmony_ci size += vn_sizeof_array_size(0); 938bf215546Sopenharmony_ci } 939bf215546Sopenharmony_ci return size; 940bf215546Sopenharmony_ci} 941bf215546Sopenharmony_ci 942bf215546Sopenharmony_cistatic inline size_t 943bf215546Sopenharmony_civn_sizeof_VkSubmitInfo2(const VkSubmitInfo2 *val) 944bf215546Sopenharmony_ci{ 945bf215546Sopenharmony_ci size_t size = 0; 946bf215546Sopenharmony_ci 947bf215546Sopenharmony_ci size += vn_sizeof_VkStructureType(&val->sType); 948bf215546Sopenharmony_ci size += vn_sizeof_VkSubmitInfo2_pnext(val->pNext); 949bf215546Sopenharmony_ci size += vn_sizeof_VkSubmitInfo2_self(val); 950bf215546Sopenharmony_ci 951bf215546Sopenharmony_ci return size; 952bf215546Sopenharmony_ci} 953bf215546Sopenharmony_ci 954bf215546Sopenharmony_cistatic inline void 955bf215546Sopenharmony_civn_encode_VkSubmitInfo2_pnext(struct vn_cs_encoder *enc, const void *val) 956bf215546Sopenharmony_ci{ 957bf215546Sopenharmony_ci /* no known/supported struct */ 958bf215546Sopenharmony_ci vn_encode_simple_pointer(enc, NULL); 959bf215546Sopenharmony_ci} 960bf215546Sopenharmony_ci 961bf215546Sopenharmony_cistatic inline void 962bf215546Sopenharmony_civn_encode_VkSubmitInfo2_self(struct vn_cs_encoder *enc, const VkSubmitInfo2 *val) 963bf215546Sopenharmony_ci{ 964bf215546Sopenharmony_ci /* skip val->{sType,pNext} */ 965bf215546Sopenharmony_ci vn_encode_VkFlags(enc, &val->flags); 966bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->waitSemaphoreInfoCount); 967bf215546Sopenharmony_ci if (val->pWaitSemaphoreInfos) { 968bf215546Sopenharmony_ci vn_encode_array_size(enc, val->waitSemaphoreInfoCount); 969bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->waitSemaphoreInfoCount; i++) 970bf215546Sopenharmony_ci vn_encode_VkSemaphoreSubmitInfo(enc, &val->pWaitSemaphoreInfos[i]); 971bf215546Sopenharmony_ci } else { 972bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 973bf215546Sopenharmony_ci } 974bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->commandBufferInfoCount); 975bf215546Sopenharmony_ci if (val->pCommandBufferInfos) { 976bf215546Sopenharmony_ci vn_encode_array_size(enc, val->commandBufferInfoCount); 977bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->commandBufferInfoCount; i++) 978bf215546Sopenharmony_ci vn_encode_VkCommandBufferSubmitInfo(enc, &val->pCommandBufferInfos[i]); 979bf215546Sopenharmony_ci } else { 980bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 981bf215546Sopenharmony_ci } 982bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &val->signalSemaphoreInfoCount); 983bf215546Sopenharmony_ci if (val->pSignalSemaphoreInfos) { 984bf215546Sopenharmony_ci vn_encode_array_size(enc, val->signalSemaphoreInfoCount); 985bf215546Sopenharmony_ci for (uint32_t i = 0; i < val->signalSemaphoreInfoCount; i++) 986bf215546Sopenharmony_ci vn_encode_VkSemaphoreSubmitInfo(enc, &val->pSignalSemaphoreInfos[i]); 987bf215546Sopenharmony_ci } else { 988bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 989bf215546Sopenharmony_ci } 990bf215546Sopenharmony_ci} 991bf215546Sopenharmony_ci 992bf215546Sopenharmony_cistatic inline void 993bf215546Sopenharmony_civn_encode_VkSubmitInfo2(struct vn_cs_encoder *enc, const VkSubmitInfo2 *val) 994bf215546Sopenharmony_ci{ 995bf215546Sopenharmony_ci assert(val->sType == VK_STRUCTURE_TYPE_SUBMIT_INFO_2); 996bf215546Sopenharmony_ci vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_SUBMIT_INFO_2 }); 997bf215546Sopenharmony_ci vn_encode_VkSubmitInfo2_pnext(enc, val->pNext); 998bf215546Sopenharmony_ci vn_encode_VkSubmitInfo2_self(enc, val); 999bf215546Sopenharmony_ci} 1000bf215546Sopenharmony_ci 1001bf215546Sopenharmony_cistatic inline size_t vn_sizeof_vkQueueSubmit(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence) 1002bf215546Sopenharmony_ci{ 1003bf215546Sopenharmony_ci const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkQueueSubmit_EXT; 1004bf215546Sopenharmony_ci const VkFlags cmd_flags = 0; 1005bf215546Sopenharmony_ci size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags); 1006bf215546Sopenharmony_ci 1007bf215546Sopenharmony_ci cmd_size += vn_sizeof_VkQueue(&queue); 1008bf215546Sopenharmony_ci cmd_size += vn_sizeof_uint32_t(&submitCount); 1009bf215546Sopenharmony_ci if (pSubmits) { 1010bf215546Sopenharmony_ci cmd_size += vn_sizeof_array_size(submitCount); 1011bf215546Sopenharmony_ci for (uint32_t i = 0; i < submitCount; i++) 1012bf215546Sopenharmony_ci cmd_size += vn_sizeof_VkSubmitInfo(&pSubmits[i]); 1013bf215546Sopenharmony_ci } else { 1014bf215546Sopenharmony_ci cmd_size += vn_sizeof_array_size(0); 1015bf215546Sopenharmony_ci } 1016bf215546Sopenharmony_ci cmd_size += vn_sizeof_VkFence(&fence); 1017bf215546Sopenharmony_ci 1018bf215546Sopenharmony_ci return cmd_size; 1019bf215546Sopenharmony_ci} 1020bf215546Sopenharmony_ci 1021bf215546Sopenharmony_cistatic inline void vn_encode_vkQueueSubmit(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence) 1022bf215546Sopenharmony_ci{ 1023bf215546Sopenharmony_ci const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkQueueSubmit_EXT; 1024bf215546Sopenharmony_ci 1025bf215546Sopenharmony_ci vn_encode_VkCommandTypeEXT(enc, &cmd_type); 1026bf215546Sopenharmony_ci vn_encode_VkFlags(enc, &cmd_flags); 1027bf215546Sopenharmony_ci 1028bf215546Sopenharmony_ci vn_encode_VkQueue(enc, &queue); 1029bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &submitCount); 1030bf215546Sopenharmony_ci if (pSubmits) { 1031bf215546Sopenharmony_ci vn_encode_array_size(enc, submitCount); 1032bf215546Sopenharmony_ci for (uint32_t i = 0; i < submitCount; i++) 1033bf215546Sopenharmony_ci vn_encode_VkSubmitInfo(enc, &pSubmits[i]); 1034bf215546Sopenharmony_ci } else { 1035bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 1036bf215546Sopenharmony_ci } 1037bf215546Sopenharmony_ci vn_encode_VkFence(enc, &fence); 1038bf215546Sopenharmony_ci} 1039bf215546Sopenharmony_ci 1040bf215546Sopenharmony_cistatic inline size_t vn_sizeof_vkQueueSubmit_reply(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence) 1041bf215546Sopenharmony_ci{ 1042bf215546Sopenharmony_ci const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkQueueSubmit_EXT; 1043bf215546Sopenharmony_ci size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type); 1044bf215546Sopenharmony_ci 1045bf215546Sopenharmony_ci VkResult ret; 1046bf215546Sopenharmony_ci cmd_size += vn_sizeof_VkResult(&ret); 1047bf215546Sopenharmony_ci /* skip queue */ 1048bf215546Sopenharmony_ci /* skip submitCount */ 1049bf215546Sopenharmony_ci /* skip pSubmits */ 1050bf215546Sopenharmony_ci /* skip fence */ 1051bf215546Sopenharmony_ci 1052bf215546Sopenharmony_ci return cmd_size; 1053bf215546Sopenharmony_ci} 1054bf215546Sopenharmony_ci 1055bf215546Sopenharmony_cistatic inline VkResult vn_decode_vkQueueSubmit_reply(struct vn_cs_decoder *dec, VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence) 1056bf215546Sopenharmony_ci{ 1057bf215546Sopenharmony_ci VkCommandTypeEXT command_type; 1058bf215546Sopenharmony_ci vn_decode_VkCommandTypeEXT(dec, &command_type); 1059bf215546Sopenharmony_ci assert(command_type == VK_COMMAND_TYPE_vkQueueSubmit_EXT); 1060bf215546Sopenharmony_ci 1061bf215546Sopenharmony_ci VkResult ret; 1062bf215546Sopenharmony_ci vn_decode_VkResult(dec, &ret); 1063bf215546Sopenharmony_ci /* skip queue */ 1064bf215546Sopenharmony_ci /* skip submitCount */ 1065bf215546Sopenharmony_ci /* skip pSubmits */ 1066bf215546Sopenharmony_ci /* skip fence */ 1067bf215546Sopenharmony_ci 1068bf215546Sopenharmony_ci return ret; 1069bf215546Sopenharmony_ci} 1070bf215546Sopenharmony_ci 1071bf215546Sopenharmony_cistatic inline size_t vn_sizeof_vkQueueWaitIdle(VkQueue queue) 1072bf215546Sopenharmony_ci{ 1073bf215546Sopenharmony_ci const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkQueueWaitIdle_EXT; 1074bf215546Sopenharmony_ci const VkFlags cmd_flags = 0; 1075bf215546Sopenharmony_ci size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags); 1076bf215546Sopenharmony_ci 1077bf215546Sopenharmony_ci cmd_size += vn_sizeof_VkQueue(&queue); 1078bf215546Sopenharmony_ci 1079bf215546Sopenharmony_ci return cmd_size; 1080bf215546Sopenharmony_ci} 1081bf215546Sopenharmony_ci 1082bf215546Sopenharmony_cistatic inline void vn_encode_vkQueueWaitIdle(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkQueue queue) 1083bf215546Sopenharmony_ci{ 1084bf215546Sopenharmony_ci const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkQueueWaitIdle_EXT; 1085bf215546Sopenharmony_ci 1086bf215546Sopenharmony_ci vn_encode_VkCommandTypeEXT(enc, &cmd_type); 1087bf215546Sopenharmony_ci vn_encode_VkFlags(enc, &cmd_flags); 1088bf215546Sopenharmony_ci 1089bf215546Sopenharmony_ci vn_encode_VkQueue(enc, &queue); 1090bf215546Sopenharmony_ci} 1091bf215546Sopenharmony_ci 1092bf215546Sopenharmony_cistatic inline size_t vn_sizeof_vkQueueWaitIdle_reply(VkQueue queue) 1093bf215546Sopenharmony_ci{ 1094bf215546Sopenharmony_ci const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkQueueWaitIdle_EXT; 1095bf215546Sopenharmony_ci size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type); 1096bf215546Sopenharmony_ci 1097bf215546Sopenharmony_ci VkResult ret; 1098bf215546Sopenharmony_ci cmd_size += vn_sizeof_VkResult(&ret); 1099bf215546Sopenharmony_ci /* skip queue */ 1100bf215546Sopenharmony_ci 1101bf215546Sopenharmony_ci return cmd_size; 1102bf215546Sopenharmony_ci} 1103bf215546Sopenharmony_ci 1104bf215546Sopenharmony_cistatic inline VkResult vn_decode_vkQueueWaitIdle_reply(struct vn_cs_decoder *dec, VkQueue queue) 1105bf215546Sopenharmony_ci{ 1106bf215546Sopenharmony_ci VkCommandTypeEXT command_type; 1107bf215546Sopenharmony_ci vn_decode_VkCommandTypeEXT(dec, &command_type); 1108bf215546Sopenharmony_ci assert(command_type == VK_COMMAND_TYPE_vkQueueWaitIdle_EXT); 1109bf215546Sopenharmony_ci 1110bf215546Sopenharmony_ci VkResult ret; 1111bf215546Sopenharmony_ci vn_decode_VkResult(dec, &ret); 1112bf215546Sopenharmony_ci /* skip queue */ 1113bf215546Sopenharmony_ci 1114bf215546Sopenharmony_ci return ret; 1115bf215546Sopenharmony_ci} 1116bf215546Sopenharmony_ci 1117bf215546Sopenharmony_cistatic inline size_t vn_sizeof_vkQueueBindSparse(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence) 1118bf215546Sopenharmony_ci{ 1119bf215546Sopenharmony_ci const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkQueueBindSparse_EXT; 1120bf215546Sopenharmony_ci const VkFlags cmd_flags = 0; 1121bf215546Sopenharmony_ci size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags); 1122bf215546Sopenharmony_ci 1123bf215546Sopenharmony_ci cmd_size += vn_sizeof_VkQueue(&queue); 1124bf215546Sopenharmony_ci cmd_size += vn_sizeof_uint32_t(&bindInfoCount); 1125bf215546Sopenharmony_ci if (pBindInfo) { 1126bf215546Sopenharmony_ci cmd_size += vn_sizeof_array_size(bindInfoCount); 1127bf215546Sopenharmony_ci for (uint32_t i = 0; i < bindInfoCount; i++) 1128bf215546Sopenharmony_ci cmd_size += vn_sizeof_VkBindSparseInfo(&pBindInfo[i]); 1129bf215546Sopenharmony_ci } else { 1130bf215546Sopenharmony_ci cmd_size += vn_sizeof_array_size(0); 1131bf215546Sopenharmony_ci } 1132bf215546Sopenharmony_ci cmd_size += vn_sizeof_VkFence(&fence); 1133bf215546Sopenharmony_ci 1134bf215546Sopenharmony_ci return cmd_size; 1135bf215546Sopenharmony_ci} 1136bf215546Sopenharmony_ci 1137bf215546Sopenharmony_cistatic inline void vn_encode_vkQueueBindSparse(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence) 1138bf215546Sopenharmony_ci{ 1139bf215546Sopenharmony_ci const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkQueueBindSparse_EXT; 1140bf215546Sopenharmony_ci 1141bf215546Sopenharmony_ci vn_encode_VkCommandTypeEXT(enc, &cmd_type); 1142bf215546Sopenharmony_ci vn_encode_VkFlags(enc, &cmd_flags); 1143bf215546Sopenharmony_ci 1144bf215546Sopenharmony_ci vn_encode_VkQueue(enc, &queue); 1145bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &bindInfoCount); 1146bf215546Sopenharmony_ci if (pBindInfo) { 1147bf215546Sopenharmony_ci vn_encode_array_size(enc, bindInfoCount); 1148bf215546Sopenharmony_ci for (uint32_t i = 0; i < bindInfoCount; i++) 1149bf215546Sopenharmony_ci vn_encode_VkBindSparseInfo(enc, &pBindInfo[i]); 1150bf215546Sopenharmony_ci } else { 1151bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 1152bf215546Sopenharmony_ci } 1153bf215546Sopenharmony_ci vn_encode_VkFence(enc, &fence); 1154bf215546Sopenharmony_ci} 1155bf215546Sopenharmony_ci 1156bf215546Sopenharmony_cistatic inline size_t vn_sizeof_vkQueueBindSparse_reply(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence) 1157bf215546Sopenharmony_ci{ 1158bf215546Sopenharmony_ci const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkQueueBindSparse_EXT; 1159bf215546Sopenharmony_ci size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type); 1160bf215546Sopenharmony_ci 1161bf215546Sopenharmony_ci VkResult ret; 1162bf215546Sopenharmony_ci cmd_size += vn_sizeof_VkResult(&ret); 1163bf215546Sopenharmony_ci /* skip queue */ 1164bf215546Sopenharmony_ci /* skip bindInfoCount */ 1165bf215546Sopenharmony_ci /* skip pBindInfo */ 1166bf215546Sopenharmony_ci /* skip fence */ 1167bf215546Sopenharmony_ci 1168bf215546Sopenharmony_ci return cmd_size; 1169bf215546Sopenharmony_ci} 1170bf215546Sopenharmony_ci 1171bf215546Sopenharmony_cistatic inline VkResult vn_decode_vkQueueBindSparse_reply(struct vn_cs_decoder *dec, VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence) 1172bf215546Sopenharmony_ci{ 1173bf215546Sopenharmony_ci VkCommandTypeEXT command_type; 1174bf215546Sopenharmony_ci vn_decode_VkCommandTypeEXT(dec, &command_type); 1175bf215546Sopenharmony_ci assert(command_type == VK_COMMAND_TYPE_vkQueueBindSparse_EXT); 1176bf215546Sopenharmony_ci 1177bf215546Sopenharmony_ci VkResult ret; 1178bf215546Sopenharmony_ci vn_decode_VkResult(dec, &ret); 1179bf215546Sopenharmony_ci /* skip queue */ 1180bf215546Sopenharmony_ci /* skip bindInfoCount */ 1181bf215546Sopenharmony_ci /* skip pBindInfo */ 1182bf215546Sopenharmony_ci /* skip fence */ 1183bf215546Sopenharmony_ci 1184bf215546Sopenharmony_ci return ret; 1185bf215546Sopenharmony_ci} 1186bf215546Sopenharmony_ci 1187bf215546Sopenharmony_cistatic inline size_t vn_sizeof_vkQueueSubmit2(VkQueue queue, uint32_t submitCount, const VkSubmitInfo2* pSubmits, VkFence fence) 1188bf215546Sopenharmony_ci{ 1189bf215546Sopenharmony_ci const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkQueueSubmit2_EXT; 1190bf215546Sopenharmony_ci const VkFlags cmd_flags = 0; 1191bf215546Sopenharmony_ci size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags); 1192bf215546Sopenharmony_ci 1193bf215546Sopenharmony_ci cmd_size += vn_sizeof_VkQueue(&queue); 1194bf215546Sopenharmony_ci cmd_size += vn_sizeof_uint32_t(&submitCount); 1195bf215546Sopenharmony_ci if (pSubmits) { 1196bf215546Sopenharmony_ci cmd_size += vn_sizeof_array_size(submitCount); 1197bf215546Sopenharmony_ci for (uint32_t i = 0; i < submitCount; i++) 1198bf215546Sopenharmony_ci cmd_size += vn_sizeof_VkSubmitInfo2(&pSubmits[i]); 1199bf215546Sopenharmony_ci } else { 1200bf215546Sopenharmony_ci cmd_size += vn_sizeof_array_size(0); 1201bf215546Sopenharmony_ci } 1202bf215546Sopenharmony_ci cmd_size += vn_sizeof_VkFence(&fence); 1203bf215546Sopenharmony_ci 1204bf215546Sopenharmony_ci return cmd_size; 1205bf215546Sopenharmony_ci} 1206bf215546Sopenharmony_ci 1207bf215546Sopenharmony_cistatic inline void vn_encode_vkQueueSubmit2(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkQueue queue, uint32_t submitCount, const VkSubmitInfo2* pSubmits, VkFence fence) 1208bf215546Sopenharmony_ci{ 1209bf215546Sopenharmony_ci const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkQueueSubmit2_EXT; 1210bf215546Sopenharmony_ci 1211bf215546Sopenharmony_ci vn_encode_VkCommandTypeEXT(enc, &cmd_type); 1212bf215546Sopenharmony_ci vn_encode_VkFlags(enc, &cmd_flags); 1213bf215546Sopenharmony_ci 1214bf215546Sopenharmony_ci vn_encode_VkQueue(enc, &queue); 1215bf215546Sopenharmony_ci vn_encode_uint32_t(enc, &submitCount); 1216bf215546Sopenharmony_ci if (pSubmits) { 1217bf215546Sopenharmony_ci vn_encode_array_size(enc, submitCount); 1218bf215546Sopenharmony_ci for (uint32_t i = 0; i < submitCount; i++) 1219bf215546Sopenharmony_ci vn_encode_VkSubmitInfo2(enc, &pSubmits[i]); 1220bf215546Sopenharmony_ci } else { 1221bf215546Sopenharmony_ci vn_encode_array_size(enc, 0); 1222bf215546Sopenharmony_ci } 1223bf215546Sopenharmony_ci vn_encode_VkFence(enc, &fence); 1224bf215546Sopenharmony_ci} 1225bf215546Sopenharmony_ci 1226bf215546Sopenharmony_cistatic inline size_t vn_sizeof_vkQueueSubmit2_reply(VkQueue queue, uint32_t submitCount, const VkSubmitInfo2* pSubmits, VkFence fence) 1227bf215546Sopenharmony_ci{ 1228bf215546Sopenharmony_ci const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkQueueSubmit2_EXT; 1229bf215546Sopenharmony_ci size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type); 1230bf215546Sopenharmony_ci 1231bf215546Sopenharmony_ci VkResult ret; 1232bf215546Sopenharmony_ci cmd_size += vn_sizeof_VkResult(&ret); 1233bf215546Sopenharmony_ci /* skip queue */ 1234bf215546Sopenharmony_ci /* skip submitCount */ 1235bf215546Sopenharmony_ci /* skip pSubmits */ 1236bf215546Sopenharmony_ci /* skip fence */ 1237bf215546Sopenharmony_ci 1238bf215546Sopenharmony_ci return cmd_size; 1239bf215546Sopenharmony_ci} 1240bf215546Sopenharmony_ci 1241bf215546Sopenharmony_cistatic inline VkResult vn_decode_vkQueueSubmit2_reply(struct vn_cs_decoder *dec, VkQueue queue, uint32_t submitCount, const VkSubmitInfo2* pSubmits, VkFence fence) 1242bf215546Sopenharmony_ci{ 1243bf215546Sopenharmony_ci VkCommandTypeEXT command_type; 1244bf215546Sopenharmony_ci vn_decode_VkCommandTypeEXT(dec, &command_type); 1245bf215546Sopenharmony_ci assert(command_type == VK_COMMAND_TYPE_vkQueueSubmit2_EXT); 1246bf215546Sopenharmony_ci 1247bf215546Sopenharmony_ci VkResult ret; 1248bf215546Sopenharmony_ci vn_decode_VkResult(dec, &ret); 1249bf215546Sopenharmony_ci /* skip queue */ 1250bf215546Sopenharmony_ci /* skip submitCount */ 1251bf215546Sopenharmony_ci /* skip pSubmits */ 1252bf215546Sopenharmony_ci /* skip fence */ 1253bf215546Sopenharmony_ci 1254bf215546Sopenharmony_ci return ret; 1255bf215546Sopenharmony_ci} 1256bf215546Sopenharmony_ci 1257bf215546Sopenharmony_cistatic inline void vn_submit_vkQueueSubmit(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence, struct vn_instance_submit_command *submit) 1258bf215546Sopenharmony_ci{ 1259bf215546Sopenharmony_ci uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE]; 1260bf215546Sopenharmony_ci void *cmd_data = local_cmd_data; 1261bf215546Sopenharmony_ci size_t cmd_size = vn_sizeof_vkQueueSubmit(queue, submitCount, pSubmits, fence); 1262bf215546Sopenharmony_ci if (cmd_size > sizeof(local_cmd_data)) { 1263bf215546Sopenharmony_ci cmd_data = malloc(cmd_size); 1264bf215546Sopenharmony_ci if (!cmd_data) 1265bf215546Sopenharmony_ci cmd_size = 0; 1266bf215546Sopenharmony_ci } 1267bf215546Sopenharmony_ci const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkQueueSubmit_reply(queue, submitCount, pSubmits, fence) : 0; 1268bf215546Sopenharmony_ci 1269bf215546Sopenharmony_ci struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size); 1270bf215546Sopenharmony_ci if (cmd_size) { 1271bf215546Sopenharmony_ci vn_encode_vkQueueSubmit(enc, cmd_flags, queue, submitCount, pSubmits, fence); 1272bf215546Sopenharmony_ci vn_instance_submit_command(vn_instance, submit); 1273bf215546Sopenharmony_ci if (cmd_data != local_cmd_data) 1274bf215546Sopenharmony_ci free(cmd_data); 1275bf215546Sopenharmony_ci } 1276bf215546Sopenharmony_ci} 1277bf215546Sopenharmony_ci 1278bf215546Sopenharmony_cistatic inline void vn_submit_vkQueueWaitIdle(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkQueue queue, struct vn_instance_submit_command *submit) 1279bf215546Sopenharmony_ci{ 1280bf215546Sopenharmony_ci uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE]; 1281bf215546Sopenharmony_ci void *cmd_data = local_cmd_data; 1282bf215546Sopenharmony_ci size_t cmd_size = vn_sizeof_vkQueueWaitIdle(queue); 1283bf215546Sopenharmony_ci if (cmd_size > sizeof(local_cmd_data)) { 1284bf215546Sopenharmony_ci cmd_data = malloc(cmd_size); 1285bf215546Sopenharmony_ci if (!cmd_data) 1286bf215546Sopenharmony_ci cmd_size = 0; 1287bf215546Sopenharmony_ci } 1288bf215546Sopenharmony_ci const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkQueueWaitIdle_reply(queue) : 0; 1289bf215546Sopenharmony_ci 1290bf215546Sopenharmony_ci struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size); 1291bf215546Sopenharmony_ci if (cmd_size) { 1292bf215546Sopenharmony_ci vn_encode_vkQueueWaitIdle(enc, cmd_flags, queue); 1293bf215546Sopenharmony_ci vn_instance_submit_command(vn_instance, submit); 1294bf215546Sopenharmony_ci if (cmd_data != local_cmd_data) 1295bf215546Sopenharmony_ci free(cmd_data); 1296bf215546Sopenharmony_ci } 1297bf215546Sopenharmony_ci} 1298bf215546Sopenharmony_ci 1299bf215546Sopenharmony_cistatic inline void vn_submit_vkQueueBindSparse(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence, struct vn_instance_submit_command *submit) 1300bf215546Sopenharmony_ci{ 1301bf215546Sopenharmony_ci uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE]; 1302bf215546Sopenharmony_ci void *cmd_data = local_cmd_data; 1303bf215546Sopenharmony_ci size_t cmd_size = vn_sizeof_vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence); 1304bf215546Sopenharmony_ci if (cmd_size > sizeof(local_cmd_data)) { 1305bf215546Sopenharmony_ci cmd_data = malloc(cmd_size); 1306bf215546Sopenharmony_ci if (!cmd_data) 1307bf215546Sopenharmony_ci cmd_size = 0; 1308bf215546Sopenharmony_ci } 1309bf215546Sopenharmony_ci const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkQueueBindSparse_reply(queue, bindInfoCount, pBindInfo, fence) : 0; 1310bf215546Sopenharmony_ci 1311bf215546Sopenharmony_ci struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size); 1312bf215546Sopenharmony_ci if (cmd_size) { 1313bf215546Sopenharmony_ci vn_encode_vkQueueBindSparse(enc, cmd_flags, queue, bindInfoCount, pBindInfo, fence); 1314bf215546Sopenharmony_ci vn_instance_submit_command(vn_instance, submit); 1315bf215546Sopenharmony_ci if (cmd_data != local_cmd_data) 1316bf215546Sopenharmony_ci free(cmd_data); 1317bf215546Sopenharmony_ci } 1318bf215546Sopenharmony_ci} 1319bf215546Sopenharmony_ci 1320bf215546Sopenharmony_cistatic inline void vn_submit_vkQueueSubmit2(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkQueue queue, uint32_t submitCount, const VkSubmitInfo2* pSubmits, VkFence fence, struct vn_instance_submit_command *submit) 1321bf215546Sopenharmony_ci{ 1322bf215546Sopenharmony_ci uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE]; 1323bf215546Sopenharmony_ci void *cmd_data = local_cmd_data; 1324bf215546Sopenharmony_ci size_t cmd_size = vn_sizeof_vkQueueSubmit2(queue, submitCount, pSubmits, fence); 1325bf215546Sopenharmony_ci if (cmd_size > sizeof(local_cmd_data)) { 1326bf215546Sopenharmony_ci cmd_data = malloc(cmd_size); 1327bf215546Sopenharmony_ci if (!cmd_data) 1328bf215546Sopenharmony_ci cmd_size = 0; 1329bf215546Sopenharmony_ci } 1330bf215546Sopenharmony_ci const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkQueueSubmit2_reply(queue, submitCount, pSubmits, fence) : 0; 1331bf215546Sopenharmony_ci 1332bf215546Sopenharmony_ci struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size); 1333bf215546Sopenharmony_ci if (cmd_size) { 1334bf215546Sopenharmony_ci vn_encode_vkQueueSubmit2(enc, cmd_flags, queue, submitCount, pSubmits, fence); 1335bf215546Sopenharmony_ci vn_instance_submit_command(vn_instance, submit); 1336bf215546Sopenharmony_ci if (cmd_data != local_cmd_data) 1337bf215546Sopenharmony_ci free(cmd_data); 1338bf215546Sopenharmony_ci } 1339bf215546Sopenharmony_ci} 1340bf215546Sopenharmony_ci 1341bf215546Sopenharmony_cistatic inline VkResult vn_call_vkQueueSubmit(struct vn_instance *vn_instance, VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence) 1342bf215546Sopenharmony_ci{ 1343bf215546Sopenharmony_ci VN_TRACE_FUNC(); 1344bf215546Sopenharmony_ci 1345bf215546Sopenharmony_ci struct vn_instance_submit_command submit; 1346bf215546Sopenharmony_ci vn_submit_vkQueueSubmit(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, queue, submitCount, pSubmits, fence, &submit); 1347bf215546Sopenharmony_ci struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit); 1348bf215546Sopenharmony_ci if (dec) { 1349bf215546Sopenharmony_ci const VkResult ret = vn_decode_vkQueueSubmit_reply(dec, queue, submitCount, pSubmits, fence); 1350bf215546Sopenharmony_ci vn_instance_free_command_reply(vn_instance, &submit); 1351bf215546Sopenharmony_ci return ret; 1352bf215546Sopenharmony_ci } else { 1353bf215546Sopenharmony_ci return VK_ERROR_OUT_OF_HOST_MEMORY; 1354bf215546Sopenharmony_ci } 1355bf215546Sopenharmony_ci} 1356bf215546Sopenharmony_ci 1357bf215546Sopenharmony_cistatic inline void vn_async_vkQueueSubmit(struct vn_instance *vn_instance, VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence) 1358bf215546Sopenharmony_ci{ 1359bf215546Sopenharmony_ci struct vn_instance_submit_command submit; 1360bf215546Sopenharmony_ci vn_submit_vkQueueSubmit(vn_instance, 0, queue, submitCount, pSubmits, fence, &submit); 1361bf215546Sopenharmony_ci} 1362bf215546Sopenharmony_ci 1363bf215546Sopenharmony_cistatic inline VkResult vn_call_vkQueueWaitIdle(struct vn_instance *vn_instance, VkQueue queue) 1364bf215546Sopenharmony_ci{ 1365bf215546Sopenharmony_ci VN_TRACE_FUNC(); 1366bf215546Sopenharmony_ci 1367bf215546Sopenharmony_ci struct vn_instance_submit_command submit; 1368bf215546Sopenharmony_ci vn_submit_vkQueueWaitIdle(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, queue, &submit); 1369bf215546Sopenharmony_ci struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit); 1370bf215546Sopenharmony_ci if (dec) { 1371bf215546Sopenharmony_ci const VkResult ret = vn_decode_vkQueueWaitIdle_reply(dec, queue); 1372bf215546Sopenharmony_ci vn_instance_free_command_reply(vn_instance, &submit); 1373bf215546Sopenharmony_ci return ret; 1374bf215546Sopenharmony_ci } else { 1375bf215546Sopenharmony_ci return VK_ERROR_OUT_OF_HOST_MEMORY; 1376bf215546Sopenharmony_ci } 1377bf215546Sopenharmony_ci} 1378bf215546Sopenharmony_ci 1379bf215546Sopenharmony_cistatic inline void vn_async_vkQueueWaitIdle(struct vn_instance *vn_instance, VkQueue queue) 1380bf215546Sopenharmony_ci{ 1381bf215546Sopenharmony_ci struct vn_instance_submit_command submit; 1382bf215546Sopenharmony_ci vn_submit_vkQueueWaitIdle(vn_instance, 0, queue, &submit); 1383bf215546Sopenharmony_ci} 1384bf215546Sopenharmony_ci 1385bf215546Sopenharmony_cistatic inline VkResult vn_call_vkQueueBindSparse(struct vn_instance *vn_instance, VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence) 1386bf215546Sopenharmony_ci{ 1387bf215546Sopenharmony_ci VN_TRACE_FUNC(); 1388bf215546Sopenharmony_ci 1389bf215546Sopenharmony_ci struct vn_instance_submit_command submit; 1390bf215546Sopenharmony_ci vn_submit_vkQueueBindSparse(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, queue, bindInfoCount, pBindInfo, fence, &submit); 1391bf215546Sopenharmony_ci struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit); 1392bf215546Sopenharmony_ci if (dec) { 1393bf215546Sopenharmony_ci const VkResult ret = vn_decode_vkQueueBindSparse_reply(dec, queue, bindInfoCount, pBindInfo, fence); 1394bf215546Sopenharmony_ci vn_instance_free_command_reply(vn_instance, &submit); 1395bf215546Sopenharmony_ci return ret; 1396bf215546Sopenharmony_ci } else { 1397bf215546Sopenharmony_ci return VK_ERROR_OUT_OF_HOST_MEMORY; 1398bf215546Sopenharmony_ci } 1399bf215546Sopenharmony_ci} 1400bf215546Sopenharmony_ci 1401bf215546Sopenharmony_cistatic inline void vn_async_vkQueueBindSparse(struct vn_instance *vn_instance, VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence) 1402bf215546Sopenharmony_ci{ 1403bf215546Sopenharmony_ci struct vn_instance_submit_command submit; 1404bf215546Sopenharmony_ci vn_submit_vkQueueBindSparse(vn_instance, 0, queue, bindInfoCount, pBindInfo, fence, &submit); 1405bf215546Sopenharmony_ci} 1406bf215546Sopenharmony_ci 1407bf215546Sopenharmony_cistatic inline VkResult vn_call_vkQueueSubmit2(struct vn_instance *vn_instance, VkQueue queue, uint32_t submitCount, const VkSubmitInfo2* pSubmits, VkFence fence) 1408bf215546Sopenharmony_ci{ 1409bf215546Sopenharmony_ci VN_TRACE_FUNC(); 1410bf215546Sopenharmony_ci 1411bf215546Sopenharmony_ci struct vn_instance_submit_command submit; 1412bf215546Sopenharmony_ci vn_submit_vkQueueSubmit2(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, queue, submitCount, pSubmits, fence, &submit); 1413bf215546Sopenharmony_ci struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit); 1414bf215546Sopenharmony_ci if (dec) { 1415bf215546Sopenharmony_ci const VkResult ret = vn_decode_vkQueueSubmit2_reply(dec, queue, submitCount, pSubmits, fence); 1416bf215546Sopenharmony_ci vn_instance_free_command_reply(vn_instance, &submit); 1417bf215546Sopenharmony_ci return ret; 1418bf215546Sopenharmony_ci } else { 1419bf215546Sopenharmony_ci return VK_ERROR_OUT_OF_HOST_MEMORY; 1420bf215546Sopenharmony_ci } 1421bf215546Sopenharmony_ci} 1422bf215546Sopenharmony_ci 1423bf215546Sopenharmony_cistatic inline void vn_async_vkQueueSubmit2(struct vn_instance *vn_instance, VkQueue queue, uint32_t submitCount, const VkSubmitInfo2* pSubmits, VkFence fence) 1424bf215546Sopenharmony_ci{ 1425bf215546Sopenharmony_ci struct vn_instance_submit_command submit; 1426bf215546Sopenharmony_ci vn_submit_vkQueueSubmit2(vn_instance, 0, queue, submitCount, pSubmits, fence, &submit); 1427bf215546Sopenharmony_ci} 1428bf215546Sopenharmony_ci 1429bf215546Sopenharmony_ci#endif /* VN_PROTOCOL_DRIVER_QUEUE_H */ 1430