Path: blob/21.2-virgl/src/virtio/venus-protocol/vn_protocol_driver_buffer.h
4560 views
/* This file is generated by venus-protocol. See vn_protocol_driver.h. */12/*3* Copyright 2020 Google LLC4* SPDX-License-Identifier: MIT5*/67#ifndef VN_PROTOCOL_DRIVER_BUFFER_H8#define VN_PROTOCOL_DRIVER_BUFFER_H910#include "vn_device.h"11#include "vn_protocol_driver_structs.h"1213/* struct VkExternalMemoryBufferCreateInfo chain */1415static inline size_t16vn_sizeof_VkExternalMemoryBufferCreateInfo_pnext(const void *val)17{18/* no known/supported struct */19return vn_sizeof_simple_pointer(NULL);20}2122static inline size_t23vn_sizeof_VkExternalMemoryBufferCreateInfo_self(const VkExternalMemoryBufferCreateInfo *val)24{25size_t size = 0;26/* skip val->{sType,pNext} */27size += vn_sizeof_VkFlags(&val->handleTypes);28return size;29}3031static inline size_t32vn_sizeof_VkExternalMemoryBufferCreateInfo(const VkExternalMemoryBufferCreateInfo *val)33{34size_t size = 0;3536size += vn_sizeof_VkStructureType(&val->sType);37size += vn_sizeof_VkExternalMemoryBufferCreateInfo_pnext(val->pNext);38size += vn_sizeof_VkExternalMemoryBufferCreateInfo_self(val);3940return size;41}4243static inline void44vn_encode_VkExternalMemoryBufferCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)45{46/* no known/supported struct */47vn_encode_simple_pointer(enc, NULL);48}4950static inline void51vn_encode_VkExternalMemoryBufferCreateInfo_self(struct vn_cs_encoder *enc, const VkExternalMemoryBufferCreateInfo *val)52{53/* skip val->{sType,pNext} */54vn_encode_VkFlags(enc, &val->handleTypes);55}5657static inline void58vn_encode_VkExternalMemoryBufferCreateInfo(struct vn_cs_encoder *enc, const VkExternalMemoryBufferCreateInfo *val)59{60assert(val->sType == VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO);61vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO });62vn_encode_VkExternalMemoryBufferCreateInfo_pnext(enc, val->pNext);63vn_encode_VkExternalMemoryBufferCreateInfo_self(enc, val);64}6566/* struct VkBufferOpaqueCaptureAddressCreateInfo chain */6768static inline size_t69vn_sizeof_VkBufferOpaqueCaptureAddressCreateInfo_pnext(const void *val)70{71/* no known/supported struct */72return vn_sizeof_simple_pointer(NULL);73}7475static inline size_t76vn_sizeof_VkBufferOpaqueCaptureAddressCreateInfo_self(const VkBufferOpaqueCaptureAddressCreateInfo *val)77{78size_t size = 0;79/* skip val->{sType,pNext} */80size += vn_sizeof_uint64_t(&val->opaqueCaptureAddress);81return size;82}8384static inline size_t85vn_sizeof_VkBufferOpaqueCaptureAddressCreateInfo(const VkBufferOpaqueCaptureAddressCreateInfo *val)86{87size_t size = 0;8889size += vn_sizeof_VkStructureType(&val->sType);90size += vn_sizeof_VkBufferOpaqueCaptureAddressCreateInfo_pnext(val->pNext);91size += vn_sizeof_VkBufferOpaqueCaptureAddressCreateInfo_self(val);9293return size;94}9596static inline void97vn_encode_VkBufferOpaqueCaptureAddressCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)98{99/* no known/supported struct */100vn_encode_simple_pointer(enc, NULL);101}102103static inline void104vn_encode_VkBufferOpaqueCaptureAddressCreateInfo_self(struct vn_cs_encoder *enc, const VkBufferOpaqueCaptureAddressCreateInfo *val)105{106/* skip val->{sType,pNext} */107vn_encode_uint64_t(enc, &val->opaqueCaptureAddress);108}109110static inline void111vn_encode_VkBufferOpaqueCaptureAddressCreateInfo(struct vn_cs_encoder *enc, const VkBufferOpaqueCaptureAddressCreateInfo *val)112{113assert(val->sType == VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO);114vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO });115vn_encode_VkBufferOpaqueCaptureAddressCreateInfo_pnext(enc, val->pNext);116vn_encode_VkBufferOpaqueCaptureAddressCreateInfo_self(enc, val);117}118119/* struct VkBufferCreateInfo chain */120121static inline size_t122vn_sizeof_VkBufferCreateInfo_pnext(const void *val)123{124const VkBaseInStructure *pnext = val;125size_t size = 0;126127while (pnext) {128switch ((int32_t)pnext->sType) {129case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO:130size += vn_sizeof_simple_pointer(pnext);131size += vn_sizeof_VkStructureType(&pnext->sType);132size += vn_sizeof_VkBufferCreateInfo_pnext(pnext->pNext);133size += vn_sizeof_VkExternalMemoryBufferCreateInfo_self((const VkExternalMemoryBufferCreateInfo *)pnext);134return size;135case VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO:136size += vn_sizeof_simple_pointer(pnext);137size += vn_sizeof_VkStructureType(&pnext->sType);138size += vn_sizeof_VkBufferCreateInfo_pnext(pnext->pNext);139size += vn_sizeof_VkBufferOpaqueCaptureAddressCreateInfo_self((const VkBufferOpaqueCaptureAddressCreateInfo *)pnext);140return size;141default:142/* ignore unknown/unsupported struct */143break;144}145pnext = pnext->pNext;146}147148return vn_sizeof_simple_pointer(NULL);149}150151static inline size_t152vn_sizeof_VkBufferCreateInfo_self(const VkBufferCreateInfo *val)153{154size_t size = 0;155/* skip val->{sType,pNext} */156size += vn_sizeof_VkFlags(&val->flags);157size += vn_sizeof_VkDeviceSize(&val->size);158size += vn_sizeof_VkFlags(&val->usage);159size += vn_sizeof_VkSharingMode(&val->sharingMode);160size += vn_sizeof_uint32_t(&val->queueFamilyIndexCount);161if (val->pQueueFamilyIndices) {162size += vn_sizeof_array_size(val->queueFamilyIndexCount);163size += vn_sizeof_uint32_t_array(val->pQueueFamilyIndices, val->queueFamilyIndexCount);164} else {165size += vn_sizeof_array_size(0);166}167return size;168}169170static inline size_t171vn_sizeof_VkBufferCreateInfo(const VkBufferCreateInfo *val)172{173size_t size = 0;174175size += vn_sizeof_VkStructureType(&val->sType);176size += vn_sizeof_VkBufferCreateInfo_pnext(val->pNext);177size += vn_sizeof_VkBufferCreateInfo_self(val);178179return size;180}181182static inline void183vn_encode_VkBufferCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)184{185const VkBaseInStructure *pnext = val;186187while (pnext) {188switch ((int32_t)pnext->sType) {189case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO:190vn_encode_simple_pointer(enc, pnext);191vn_encode_VkStructureType(enc, &pnext->sType);192vn_encode_VkBufferCreateInfo_pnext(enc, pnext->pNext);193vn_encode_VkExternalMemoryBufferCreateInfo_self(enc, (const VkExternalMemoryBufferCreateInfo *)pnext);194return;195case VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO:196vn_encode_simple_pointer(enc, pnext);197vn_encode_VkStructureType(enc, &pnext->sType);198vn_encode_VkBufferCreateInfo_pnext(enc, pnext->pNext);199vn_encode_VkBufferOpaqueCaptureAddressCreateInfo_self(enc, (const VkBufferOpaqueCaptureAddressCreateInfo *)pnext);200return;201default:202/* ignore unknown/unsupported struct */203break;204}205pnext = pnext->pNext;206}207208vn_encode_simple_pointer(enc, NULL);209}210211static inline void212vn_encode_VkBufferCreateInfo_self(struct vn_cs_encoder *enc, const VkBufferCreateInfo *val)213{214/* skip val->{sType,pNext} */215vn_encode_VkFlags(enc, &val->flags);216vn_encode_VkDeviceSize(enc, &val->size);217vn_encode_VkFlags(enc, &val->usage);218vn_encode_VkSharingMode(enc, &val->sharingMode);219vn_encode_uint32_t(enc, &val->queueFamilyIndexCount);220if (val->pQueueFamilyIndices) {221vn_encode_array_size(enc, val->queueFamilyIndexCount);222vn_encode_uint32_t_array(enc, val->pQueueFamilyIndices, val->queueFamilyIndexCount);223} else {224vn_encode_array_size(enc, 0);225}226}227228static inline void229vn_encode_VkBufferCreateInfo(struct vn_cs_encoder *enc, const VkBufferCreateInfo *val)230{231assert(val->sType == VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO);232vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO });233vn_encode_VkBufferCreateInfo_pnext(enc, val->pNext);234vn_encode_VkBufferCreateInfo_self(enc, val);235}236237/* struct VkBindBufferMemoryDeviceGroupInfo chain */238239static inline size_t240vn_sizeof_VkBindBufferMemoryDeviceGroupInfo_pnext(const void *val)241{242/* no known/supported struct */243return vn_sizeof_simple_pointer(NULL);244}245246static inline size_t247vn_sizeof_VkBindBufferMemoryDeviceGroupInfo_self(const VkBindBufferMemoryDeviceGroupInfo *val)248{249size_t size = 0;250/* skip val->{sType,pNext} */251size += vn_sizeof_uint32_t(&val->deviceIndexCount);252if (val->pDeviceIndices) {253size += vn_sizeof_array_size(val->deviceIndexCount);254size += vn_sizeof_uint32_t_array(val->pDeviceIndices, val->deviceIndexCount);255} else {256size += vn_sizeof_array_size(0);257}258return size;259}260261static inline size_t262vn_sizeof_VkBindBufferMemoryDeviceGroupInfo(const VkBindBufferMemoryDeviceGroupInfo *val)263{264size_t size = 0;265266size += vn_sizeof_VkStructureType(&val->sType);267size += vn_sizeof_VkBindBufferMemoryDeviceGroupInfo_pnext(val->pNext);268size += vn_sizeof_VkBindBufferMemoryDeviceGroupInfo_self(val);269270return size;271}272273static inline void274vn_encode_VkBindBufferMemoryDeviceGroupInfo_pnext(struct vn_cs_encoder *enc, const void *val)275{276/* no known/supported struct */277vn_encode_simple_pointer(enc, NULL);278}279280static inline void281vn_encode_VkBindBufferMemoryDeviceGroupInfo_self(struct vn_cs_encoder *enc, const VkBindBufferMemoryDeviceGroupInfo *val)282{283/* skip val->{sType,pNext} */284vn_encode_uint32_t(enc, &val->deviceIndexCount);285if (val->pDeviceIndices) {286vn_encode_array_size(enc, val->deviceIndexCount);287vn_encode_uint32_t_array(enc, val->pDeviceIndices, val->deviceIndexCount);288} else {289vn_encode_array_size(enc, 0);290}291}292293static inline void294vn_encode_VkBindBufferMemoryDeviceGroupInfo(struct vn_cs_encoder *enc, const VkBindBufferMemoryDeviceGroupInfo *val)295{296assert(val->sType == VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO);297vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO });298vn_encode_VkBindBufferMemoryDeviceGroupInfo_pnext(enc, val->pNext);299vn_encode_VkBindBufferMemoryDeviceGroupInfo_self(enc, val);300}301302static inline void303vn_decode_VkBindBufferMemoryDeviceGroupInfo_pnext(struct vn_cs_decoder *dec, const void *val)304{305/* no known/supported struct */306if (vn_decode_simple_pointer(dec))307assert(false);308}309310static inline void311vn_decode_VkBindBufferMemoryDeviceGroupInfo_self(struct vn_cs_decoder *dec, VkBindBufferMemoryDeviceGroupInfo *val)312{313/* skip val->{sType,pNext} */314vn_decode_uint32_t(dec, &val->deviceIndexCount);315if (vn_peek_array_size(dec)) {316const size_t array_size = vn_decode_array_size(dec, val->deviceIndexCount);317vn_decode_uint32_t_array(dec, (uint32_t *)val->pDeviceIndices, array_size);318} else {319vn_decode_array_size(dec, 0);320val->pDeviceIndices = NULL;321}322}323324static inline void325vn_decode_VkBindBufferMemoryDeviceGroupInfo(struct vn_cs_decoder *dec, VkBindBufferMemoryDeviceGroupInfo *val)326{327VkStructureType stype;328vn_decode_VkStructureType(dec, &stype);329assert(stype == VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO);330331assert(val->sType == stype);332vn_decode_VkBindBufferMemoryDeviceGroupInfo_pnext(dec, val->pNext);333vn_decode_VkBindBufferMemoryDeviceGroupInfo_self(dec, val);334}335336/* struct VkBindBufferMemoryInfo chain */337338static inline size_t339vn_sizeof_VkBindBufferMemoryInfo_pnext(const void *val)340{341const VkBaseInStructure *pnext = val;342size_t size = 0;343344while (pnext) {345switch ((int32_t)pnext->sType) {346case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO:347size += vn_sizeof_simple_pointer(pnext);348size += vn_sizeof_VkStructureType(&pnext->sType);349size += vn_sizeof_VkBindBufferMemoryInfo_pnext(pnext->pNext);350size += vn_sizeof_VkBindBufferMemoryDeviceGroupInfo_self((const VkBindBufferMemoryDeviceGroupInfo *)pnext);351return size;352default:353/* ignore unknown/unsupported struct */354break;355}356pnext = pnext->pNext;357}358359return vn_sizeof_simple_pointer(NULL);360}361362static inline size_t363vn_sizeof_VkBindBufferMemoryInfo_self(const VkBindBufferMemoryInfo *val)364{365size_t size = 0;366/* skip val->{sType,pNext} */367size += vn_sizeof_VkBuffer(&val->buffer);368size += vn_sizeof_VkDeviceMemory(&val->memory);369size += vn_sizeof_VkDeviceSize(&val->memoryOffset);370return size;371}372373static inline size_t374vn_sizeof_VkBindBufferMemoryInfo(const VkBindBufferMemoryInfo *val)375{376size_t size = 0;377378size += vn_sizeof_VkStructureType(&val->sType);379size += vn_sizeof_VkBindBufferMemoryInfo_pnext(val->pNext);380size += vn_sizeof_VkBindBufferMemoryInfo_self(val);381382return size;383}384385static inline void386vn_encode_VkBindBufferMemoryInfo_pnext(struct vn_cs_encoder *enc, const void *val)387{388const VkBaseInStructure *pnext = val;389390while (pnext) {391switch ((int32_t)pnext->sType) {392case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO:393vn_encode_simple_pointer(enc, pnext);394vn_encode_VkStructureType(enc, &pnext->sType);395vn_encode_VkBindBufferMemoryInfo_pnext(enc, pnext->pNext);396vn_encode_VkBindBufferMemoryDeviceGroupInfo_self(enc, (const VkBindBufferMemoryDeviceGroupInfo *)pnext);397return;398default:399/* ignore unknown/unsupported struct */400break;401}402pnext = pnext->pNext;403}404405vn_encode_simple_pointer(enc, NULL);406}407408static inline void409vn_encode_VkBindBufferMemoryInfo_self(struct vn_cs_encoder *enc, const VkBindBufferMemoryInfo *val)410{411/* skip val->{sType,pNext} */412vn_encode_VkBuffer(enc, &val->buffer);413vn_encode_VkDeviceMemory(enc, &val->memory);414vn_encode_VkDeviceSize(enc, &val->memoryOffset);415}416417static inline void418vn_encode_VkBindBufferMemoryInfo(struct vn_cs_encoder *enc, const VkBindBufferMemoryInfo *val)419{420assert(val->sType == VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO);421vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO });422vn_encode_VkBindBufferMemoryInfo_pnext(enc, val->pNext);423vn_encode_VkBindBufferMemoryInfo_self(enc, val);424}425426static inline void427vn_decode_VkBindBufferMemoryInfo_pnext(struct vn_cs_decoder *dec, const void *val)428{429VkBaseOutStructure *pnext = (VkBaseOutStructure *)val;430VkStructureType stype;431432if (!vn_decode_simple_pointer(dec))433return;434435vn_decode_VkStructureType(dec, &stype);436while (true) {437assert(pnext);438if (pnext->sType == stype)439break;440}441442switch ((int32_t)pnext->sType) {443case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO:444vn_decode_VkBindBufferMemoryInfo_pnext(dec, pnext->pNext);445vn_decode_VkBindBufferMemoryDeviceGroupInfo_self(dec, (VkBindBufferMemoryDeviceGroupInfo *)pnext);446break;447default:448assert(false);449break;450}451}452453static inline void454vn_decode_VkBindBufferMemoryInfo_self(struct vn_cs_decoder *dec, VkBindBufferMemoryInfo *val)455{456/* skip val->{sType,pNext} */457vn_decode_VkBuffer(dec, &val->buffer);458vn_decode_VkDeviceMemory(dec, &val->memory);459vn_decode_VkDeviceSize(dec, &val->memoryOffset);460}461462static inline void463vn_decode_VkBindBufferMemoryInfo(struct vn_cs_decoder *dec, VkBindBufferMemoryInfo *val)464{465VkStructureType stype;466vn_decode_VkStructureType(dec, &stype);467assert(stype == VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO);468469assert(val->sType == stype);470vn_decode_VkBindBufferMemoryInfo_pnext(dec, val->pNext);471vn_decode_VkBindBufferMemoryInfo_self(dec, val);472}473474/* struct VkBufferMemoryRequirementsInfo2 chain */475476static inline size_t477vn_sizeof_VkBufferMemoryRequirementsInfo2_pnext(const void *val)478{479/* no known/supported struct */480return vn_sizeof_simple_pointer(NULL);481}482483static inline size_t484vn_sizeof_VkBufferMemoryRequirementsInfo2_self(const VkBufferMemoryRequirementsInfo2 *val)485{486size_t size = 0;487/* skip val->{sType,pNext} */488size += vn_sizeof_VkBuffer(&val->buffer);489return size;490}491492static inline size_t493vn_sizeof_VkBufferMemoryRequirementsInfo2(const VkBufferMemoryRequirementsInfo2 *val)494{495size_t size = 0;496497size += vn_sizeof_VkStructureType(&val->sType);498size += vn_sizeof_VkBufferMemoryRequirementsInfo2_pnext(val->pNext);499size += vn_sizeof_VkBufferMemoryRequirementsInfo2_self(val);500501return size;502}503504static inline void505vn_encode_VkBufferMemoryRequirementsInfo2_pnext(struct vn_cs_encoder *enc, const void *val)506{507/* no known/supported struct */508vn_encode_simple_pointer(enc, NULL);509}510511static inline void512vn_encode_VkBufferMemoryRequirementsInfo2_self(struct vn_cs_encoder *enc, const VkBufferMemoryRequirementsInfo2 *val)513{514/* skip val->{sType,pNext} */515vn_encode_VkBuffer(enc, &val->buffer);516}517518static inline void519vn_encode_VkBufferMemoryRequirementsInfo2(struct vn_cs_encoder *enc, const VkBufferMemoryRequirementsInfo2 *val)520{521assert(val->sType == VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2);522vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 });523vn_encode_VkBufferMemoryRequirementsInfo2_pnext(enc, val->pNext);524vn_encode_VkBufferMemoryRequirementsInfo2_self(enc, val);525}526527/* struct VkBufferDeviceAddressInfo chain */528529static inline size_t530vn_sizeof_VkBufferDeviceAddressInfo_pnext(const void *val)531{532/* no known/supported struct */533return vn_sizeof_simple_pointer(NULL);534}535536static inline size_t537vn_sizeof_VkBufferDeviceAddressInfo_self(const VkBufferDeviceAddressInfo *val)538{539size_t size = 0;540/* skip val->{sType,pNext} */541size += vn_sizeof_VkBuffer(&val->buffer);542return size;543}544545static inline size_t546vn_sizeof_VkBufferDeviceAddressInfo(const VkBufferDeviceAddressInfo *val)547{548size_t size = 0;549550size += vn_sizeof_VkStructureType(&val->sType);551size += vn_sizeof_VkBufferDeviceAddressInfo_pnext(val->pNext);552size += vn_sizeof_VkBufferDeviceAddressInfo_self(val);553554return size;555}556557static inline void558vn_encode_VkBufferDeviceAddressInfo_pnext(struct vn_cs_encoder *enc, const void *val)559{560/* no known/supported struct */561vn_encode_simple_pointer(enc, NULL);562}563564static inline void565vn_encode_VkBufferDeviceAddressInfo_self(struct vn_cs_encoder *enc, const VkBufferDeviceAddressInfo *val)566{567/* skip val->{sType,pNext} */568vn_encode_VkBuffer(enc, &val->buffer);569}570571static inline void572vn_encode_VkBufferDeviceAddressInfo(struct vn_cs_encoder *enc, const VkBufferDeviceAddressInfo *val)573{574assert(val->sType == VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO);575vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO });576vn_encode_VkBufferDeviceAddressInfo_pnext(enc, val->pNext);577vn_encode_VkBufferDeviceAddressInfo_self(enc, val);578}579580static inline void581vn_decode_VkBufferDeviceAddressInfo_pnext(struct vn_cs_decoder *dec, const void *val)582{583/* no known/supported struct */584if (vn_decode_simple_pointer(dec))585assert(false);586}587588static inline void589vn_decode_VkBufferDeviceAddressInfo_self(struct vn_cs_decoder *dec, VkBufferDeviceAddressInfo *val)590{591/* skip val->{sType,pNext} */592vn_decode_VkBuffer(dec, &val->buffer);593}594595static inline void596vn_decode_VkBufferDeviceAddressInfo(struct vn_cs_decoder *dec, VkBufferDeviceAddressInfo *val)597{598VkStructureType stype;599vn_decode_VkStructureType(dec, &stype);600assert(stype == VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO);601602assert(val->sType == stype);603vn_decode_VkBufferDeviceAddressInfo_pnext(dec, val->pNext);604vn_decode_VkBufferDeviceAddressInfo_self(dec, val);605}606607static inline size_t vn_sizeof_vkGetBufferMemoryRequirements(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements)608{609const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetBufferMemoryRequirements_EXT;610const VkFlags cmd_flags = 0;611size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);612613cmd_size += vn_sizeof_VkDevice(&device);614cmd_size += vn_sizeof_VkBuffer(&buffer);615cmd_size += vn_sizeof_simple_pointer(pMemoryRequirements);616if (pMemoryRequirements)617cmd_size += vn_sizeof_VkMemoryRequirements_partial(pMemoryRequirements);618619return cmd_size;620}621622static inline void vn_encode_vkGetBufferMemoryRequirements(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements)623{624const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetBufferMemoryRequirements_EXT;625626vn_encode_VkCommandTypeEXT(enc, &cmd_type);627vn_encode_VkFlags(enc, &cmd_flags);628629vn_encode_VkDevice(enc, &device);630vn_encode_VkBuffer(enc, &buffer);631if (vn_encode_simple_pointer(enc, pMemoryRequirements))632vn_encode_VkMemoryRequirements_partial(enc, pMemoryRequirements);633}634635static inline size_t vn_sizeof_vkGetBufferMemoryRequirements_reply(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements)636{637const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetBufferMemoryRequirements_EXT;638size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);639640/* skip device */641/* skip buffer */642cmd_size += vn_sizeof_simple_pointer(pMemoryRequirements);643if (pMemoryRequirements)644cmd_size += vn_sizeof_VkMemoryRequirements(pMemoryRequirements);645646return cmd_size;647}648649static inline void vn_decode_vkGetBufferMemoryRequirements_reply(struct vn_cs_decoder *dec, VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements)650{651VkCommandTypeEXT command_type;652vn_decode_VkCommandTypeEXT(dec, &command_type);653assert(command_type == VK_COMMAND_TYPE_vkGetBufferMemoryRequirements_EXT);654655/* skip device */656/* skip buffer */657if (vn_decode_simple_pointer(dec)) {658vn_decode_VkMemoryRequirements(dec, pMemoryRequirements);659} else {660pMemoryRequirements = NULL;661}662}663664static inline size_t vn_sizeof_vkBindBufferMemory(VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset)665{666const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkBindBufferMemory_EXT;667const VkFlags cmd_flags = 0;668size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);669670cmd_size += vn_sizeof_VkDevice(&device);671cmd_size += vn_sizeof_VkBuffer(&buffer);672cmd_size += vn_sizeof_VkDeviceMemory(&memory);673cmd_size += vn_sizeof_VkDeviceSize(&memoryOffset);674675return cmd_size;676}677678static inline void vn_encode_vkBindBufferMemory(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset)679{680const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkBindBufferMemory_EXT;681682vn_encode_VkCommandTypeEXT(enc, &cmd_type);683vn_encode_VkFlags(enc, &cmd_flags);684685vn_encode_VkDevice(enc, &device);686vn_encode_VkBuffer(enc, &buffer);687vn_encode_VkDeviceMemory(enc, &memory);688vn_encode_VkDeviceSize(enc, &memoryOffset);689}690691static inline size_t vn_sizeof_vkBindBufferMemory_reply(VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset)692{693const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkBindBufferMemory_EXT;694size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);695696VkResult ret;697cmd_size += vn_sizeof_VkResult(&ret);698/* skip device */699/* skip buffer */700/* skip memory */701/* skip memoryOffset */702703return cmd_size;704}705706static inline VkResult vn_decode_vkBindBufferMemory_reply(struct vn_cs_decoder *dec, VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset)707{708VkCommandTypeEXT command_type;709vn_decode_VkCommandTypeEXT(dec, &command_type);710assert(command_type == VK_COMMAND_TYPE_vkBindBufferMemory_EXT);711712VkResult ret;713vn_decode_VkResult(dec, &ret);714/* skip device */715/* skip buffer */716/* skip memory */717/* skip memoryOffset */718719return ret;720}721722static inline size_t vn_sizeof_vkCreateBuffer(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer)723{724const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateBuffer_EXT;725const VkFlags cmd_flags = 0;726size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);727728cmd_size += vn_sizeof_VkDevice(&device);729cmd_size += vn_sizeof_simple_pointer(pCreateInfo);730if (pCreateInfo)731cmd_size += vn_sizeof_VkBufferCreateInfo(pCreateInfo);732cmd_size += vn_sizeof_simple_pointer(pAllocator);733if (pAllocator)734assert(false);735cmd_size += vn_sizeof_simple_pointer(pBuffer);736if (pBuffer)737cmd_size += vn_sizeof_VkBuffer(pBuffer);738739return cmd_size;740}741742static inline void vn_encode_vkCreateBuffer(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer)743{744const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateBuffer_EXT;745746vn_encode_VkCommandTypeEXT(enc, &cmd_type);747vn_encode_VkFlags(enc, &cmd_flags);748749vn_encode_VkDevice(enc, &device);750if (vn_encode_simple_pointer(enc, pCreateInfo))751vn_encode_VkBufferCreateInfo(enc, pCreateInfo);752if (vn_encode_simple_pointer(enc, pAllocator))753assert(false);754if (vn_encode_simple_pointer(enc, pBuffer))755vn_encode_VkBuffer(enc, pBuffer);756}757758static inline size_t vn_sizeof_vkCreateBuffer_reply(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer)759{760const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateBuffer_EXT;761size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);762763VkResult ret;764cmd_size += vn_sizeof_VkResult(&ret);765/* skip device */766/* skip pCreateInfo */767/* skip pAllocator */768cmd_size += vn_sizeof_simple_pointer(pBuffer);769if (pBuffer)770cmd_size += vn_sizeof_VkBuffer(pBuffer);771772return cmd_size;773}774775static inline VkResult vn_decode_vkCreateBuffer_reply(struct vn_cs_decoder *dec, VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer)776{777VkCommandTypeEXT command_type;778vn_decode_VkCommandTypeEXT(dec, &command_type);779assert(command_type == VK_COMMAND_TYPE_vkCreateBuffer_EXT);780781VkResult ret;782vn_decode_VkResult(dec, &ret);783/* skip device */784/* skip pCreateInfo */785/* skip pAllocator */786if (vn_decode_simple_pointer(dec)) {787vn_decode_VkBuffer(dec, pBuffer);788} else {789pBuffer = NULL;790}791792return ret;793}794795static inline size_t vn_sizeof_vkDestroyBuffer(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator)796{797const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyBuffer_EXT;798const VkFlags cmd_flags = 0;799size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);800801cmd_size += vn_sizeof_VkDevice(&device);802cmd_size += vn_sizeof_VkBuffer(&buffer);803cmd_size += vn_sizeof_simple_pointer(pAllocator);804if (pAllocator)805assert(false);806807return cmd_size;808}809810static inline void vn_encode_vkDestroyBuffer(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator)811{812const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyBuffer_EXT;813814vn_encode_VkCommandTypeEXT(enc, &cmd_type);815vn_encode_VkFlags(enc, &cmd_flags);816817vn_encode_VkDevice(enc, &device);818vn_encode_VkBuffer(enc, &buffer);819if (vn_encode_simple_pointer(enc, pAllocator))820assert(false);821}822823static inline size_t vn_sizeof_vkDestroyBuffer_reply(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator)824{825const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyBuffer_EXT;826size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);827828/* skip device */829/* skip buffer */830/* skip pAllocator */831832return cmd_size;833}834835static inline void vn_decode_vkDestroyBuffer_reply(struct vn_cs_decoder *dec, VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator)836{837VkCommandTypeEXT command_type;838vn_decode_VkCommandTypeEXT(dec, &command_type);839assert(command_type == VK_COMMAND_TYPE_vkDestroyBuffer_EXT);840841/* skip device */842/* skip buffer */843/* skip pAllocator */844}845846static inline size_t vn_sizeof_vkBindBufferMemory2(VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos)847{848const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkBindBufferMemory2_EXT;849const VkFlags cmd_flags = 0;850size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);851852cmd_size += vn_sizeof_VkDevice(&device);853cmd_size += vn_sizeof_uint32_t(&bindInfoCount);854if (pBindInfos) {855cmd_size += vn_sizeof_array_size(bindInfoCount);856for (uint32_t i = 0; i < bindInfoCount; i++)857cmd_size += vn_sizeof_VkBindBufferMemoryInfo(&pBindInfos[i]);858} else {859cmd_size += vn_sizeof_array_size(0);860}861862return cmd_size;863}864865static inline void vn_encode_vkBindBufferMemory2(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos)866{867const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkBindBufferMemory2_EXT;868869vn_encode_VkCommandTypeEXT(enc, &cmd_type);870vn_encode_VkFlags(enc, &cmd_flags);871872vn_encode_VkDevice(enc, &device);873vn_encode_uint32_t(enc, &bindInfoCount);874if (pBindInfos) {875vn_encode_array_size(enc, bindInfoCount);876for (uint32_t i = 0; i < bindInfoCount; i++)877vn_encode_VkBindBufferMemoryInfo(enc, &pBindInfos[i]);878} else {879vn_encode_array_size(enc, 0);880}881}882883static inline size_t vn_sizeof_vkBindBufferMemory2_reply(VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos)884{885const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkBindBufferMemory2_EXT;886size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);887888VkResult ret;889cmd_size += vn_sizeof_VkResult(&ret);890/* skip device */891/* skip bindInfoCount */892/* skip pBindInfos */893894return cmd_size;895}896897static inline VkResult vn_decode_vkBindBufferMemory2_reply(struct vn_cs_decoder *dec, VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos)898{899VkCommandTypeEXT command_type;900vn_decode_VkCommandTypeEXT(dec, &command_type);901assert(command_type == VK_COMMAND_TYPE_vkBindBufferMemory2_EXT);902903VkResult ret;904vn_decode_VkResult(dec, &ret);905/* skip device */906/* skip bindInfoCount */907/* skip pBindInfos */908909return ret;910}911912static inline size_t vn_sizeof_vkGetBufferMemoryRequirements2(VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements)913{914const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetBufferMemoryRequirements2_EXT;915const VkFlags cmd_flags = 0;916size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);917918cmd_size += vn_sizeof_VkDevice(&device);919cmd_size += vn_sizeof_simple_pointer(pInfo);920if (pInfo)921cmd_size += vn_sizeof_VkBufferMemoryRequirementsInfo2(pInfo);922cmd_size += vn_sizeof_simple_pointer(pMemoryRequirements);923if (pMemoryRequirements)924cmd_size += vn_sizeof_VkMemoryRequirements2_partial(pMemoryRequirements);925926return cmd_size;927}928929static inline void vn_encode_vkGetBufferMemoryRequirements2(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements)930{931const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetBufferMemoryRequirements2_EXT;932933vn_encode_VkCommandTypeEXT(enc, &cmd_type);934vn_encode_VkFlags(enc, &cmd_flags);935936vn_encode_VkDevice(enc, &device);937if (vn_encode_simple_pointer(enc, pInfo))938vn_encode_VkBufferMemoryRequirementsInfo2(enc, pInfo);939if (vn_encode_simple_pointer(enc, pMemoryRequirements))940vn_encode_VkMemoryRequirements2_partial(enc, pMemoryRequirements);941}942943static inline size_t vn_sizeof_vkGetBufferMemoryRequirements2_reply(VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements)944{945const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetBufferMemoryRequirements2_EXT;946size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);947948/* skip device */949/* skip pInfo */950cmd_size += vn_sizeof_simple_pointer(pMemoryRequirements);951if (pMemoryRequirements)952cmd_size += vn_sizeof_VkMemoryRequirements2(pMemoryRequirements);953954return cmd_size;955}956957static inline void vn_decode_vkGetBufferMemoryRequirements2_reply(struct vn_cs_decoder *dec, VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements)958{959VkCommandTypeEXT command_type;960vn_decode_VkCommandTypeEXT(dec, &command_type);961assert(command_type == VK_COMMAND_TYPE_vkGetBufferMemoryRequirements2_EXT);962963/* skip device */964/* skip pInfo */965if (vn_decode_simple_pointer(dec)) {966vn_decode_VkMemoryRequirements2(dec, pMemoryRequirements);967} else {968pMemoryRequirements = NULL;969}970}971972static inline size_t vn_sizeof_vkGetBufferOpaqueCaptureAddress(VkDevice device, const VkBufferDeviceAddressInfo* pInfo)973{974const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetBufferOpaqueCaptureAddress_EXT;975const VkFlags cmd_flags = 0;976size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);977978cmd_size += vn_sizeof_VkDevice(&device);979cmd_size += vn_sizeof_simple_pointer(pInfo);980if (pInfo)981cmd_size += vn_sizeof_VkBufferDeviceAddressInfo(pInfo);982983return cmd_size;984}985986static inline void vn_encode_vkGetBufferOpaqueCaptureAddress(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkBufferDeviceAddressInfo* pInfo)987{988const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetBufferOpaqueCaptureAddress_EXT;989990vn_encode_VkCommandTypeEXT(enc, &cmd_type);991vn_encode_VkFlags(enc, &cmd_flags);992993vn_encode_VkDevice(enc, &device);994if (vn_encode_simple_pointer(enc, pInfo))995vn_encode_VkBufferDeviceAddressInfo(enc, pInfo);996}997998static inline size_t vn_sizeof_vkGetBufferOpaqueCaptureAddress_reply(VkDevice device, const VkBufferDeviceAddressInfo* pInfo)999{1000const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetBufferOpaqueCaptureAddress_EXT;1001size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);10021003uint64_t ret;1004cmd_size += vn_sizeof_uint64_t(&ret);1005/* skip device */1006/* skip pInfo */10071008return cmd_size;1009}10101011static inline uint64_t vn_decode_vkGetBufferOpaqueCaptureAddress_reply(struct vn_cs_decoder *dec, VkDevice device, const VkBufferDeviceAddressInfo* pInfo)1012{1013VkCommandTypeEXT command_type;1014vn_decode_VkCommandTypeEXT(dec, &command_type);1015assert(command_type == VK_COMMAND_TYPE_vkGetBufferOpaqueCaptureAddress_EXT);10161017uint64_t ret;1018vn_decode_uint64_t(dec, &ret);1019/* skip device */1020/* skip pInfo */10211022return ret;1023}10241025static inline size_t vn_sizeof_vkGetBufferDeviceAddress(VkDevice device, const VkBufferDeviceAddressInfo* pInfo)1026{1027const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetBufferDeviceAddress_EXT;1028const VkFlags cmd_flags = 0;1029size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);10301031cmd_size += vn_sizeof_VkDevice(&device);1032cmd_size += vn_sizeof_simple_pointer(pInfo);1033if (pInfo)1034cmd_size += vn_sizeof_VkBufferDeviceAddressInfo(pInfo);10351036return cmd_size;1037}10381039static inline void vn_encode_vkGetBufferDeviceAddress(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkBufferDeviceAddressInfo* pInfo)1040{1041const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetBufferDeviceAddress_EXT;10421043vn_encode_VkCommandTypeEXT(enc, &cmd_type);1044vn_encode_VkFlags(enc, &cmd_flags);10451046vn_encode_VkDevice(enc, &device);1047if (vn_encode_simple_pointer(enc, pInfo))1048vn_encode_VkBufferDeviceAddressInfo(enc, pInfo);1049}10501051static inline size_t vn_sizeof_vkGetBufferDeviceAddress_reply(VkDevice device, const VkBufferDeviceAddressInfo* pInfo)1052{1053const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetBufferDeviceAddress_EXT;1054size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);10551056VkDeviceAddress ret;1057cmd_size += vn_sizeof_VkDeviceAddress(&ret);1058/* skip device */1059/* skip pInfo */10601061return cmd_size;1062}10631064static inline VkDeviceAddress vn_decode_vkGetBufferDeviceAddress_reply(struct vn_cs_decoder *dec, VkDevice device, const VkBufferDeviceAddressInfo* pInfo)1065{1066VkCommandTypeEXT command_type;1067vn_decode_VkCommandTypeEXT(dec, &command_type);1068assert(command_type == VK_COMMAND_TYPE_vkGetBufferDeviceAddress_EXT);10691070VkDeviceAddress ret;1071vn_decode_VkDeviceAddress(dec, &ret);1072/* skip device */1073/* skip pInfo */10741075return ret;1076}10771078static inline void vn_submit_vkGetBufferMemoryRequirements(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements, struct vn_instance_submit_command *submit)1079{1080uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];1081void *cmd_data = local_cmd_data;1082size_t cmd_size = vn_sizeof_vkGetBufferMemoryRequirements(device, buffer, pMemoryRequirements);1083if (cmd_size > sizeof(local_cmd_data)) {1084cmd_data = malloc(cmd_size);1085if (!cmd_data)1086cmd_size = 0;1087}1088const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkGetBufferMemoryRequirements_reply(device, buffer, pMemoryRequirements) : 0;10891090struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);1091if (cmd_size) {1092vn_encode_vkGetBufferMemoryRequirements(enc, cmd_flags, device, buffer, pMemoryRequirements);1093vn_instance_submit_command(vn_instance, submit);1094if (cmd_data != local_cmd_data)1095free(cmd_data);1096}1097}10981099static inline void vn_submit_vkBindBufferMemory(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset, struct vn_instance_submit_command *submit)1100{1101uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];1102void *cmd_data = local_cmd_data;1103size_t cmd_size = vn_sizeof_vkBindBufferMemory(device, buffer, memory, memoryOffset);1104if (cmd_size > sizeof(local_cmd_data)) {1105cmd_data = malloc(cmd_size);1106if (!cmd_data)1107cmd_size = 0;1108}1109const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkBindBufferMemory_reply(device, buffer, memory, memoryOffset) : 0;11101111struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);1112if (cmd_size) {1113vn_encode_vkBindBufferMemory(enc, cmd_flags, device, buffer, memory, memoryOffset);1114vn_instance_submit_command(vn_instance, submit);1115if (cmd_data != local_cmd_data)1116free(cmd_data);1117}1118}11191120static inline void vn_submit_vkCreateBuffer(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer, struct vn_instance_submit_command *submit)1121{1122uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];1123void *cmd_data = local_cmd_data;1124size_t cmd_size = vn_sizeof_vkCreateBuffer(device, pCreateInfo, pAllocator, pBuffer);1125if (cmd_size > sizeof(local_cmd_data)) {1126cmd_data = malloc(cmd_size);1127if (!cmd_data)1128cmd_size = 0;1129}1130const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkCreateBuffer_reply(device, pCreateInfo, pAllocator, pBuffer) : 0;11311132struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);1133if (cmd_size) {1134vn_encode_vkCreateBuffer(enc, cmd_flags, device, pCreateInfo, pAllocator, pBuffer);1135vn_instance_submit_command(vn_instance, submit);1136if (cmd_data != local_cmd_data)1137free(cmd_data);1138}1139}11401141static inline void vn_submit_vkDestroyBuffer(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator, struct vn_instance_submit_command *submit)1142{1143uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];1144void *cmd_data = local_cmd_data;1145size_t cmd_size = vn_sizeof_vkDestroyBuffer(device, buffer, pAllocator);1146if (cmd_size > sizeof(local_cmd_data)) {1147cmd_data = malloc(cmd_size);1148if (!cmd_data)1149cmd_size = 0;1150}1151const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkDestroyBuffer_reply(device, buffer, pAllocator) : 0;11521153struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);1154if (cmd_size) {1155vn_encode_vkDestroyBuffer(enc, cmd_flags, device, buffer, pAllocator);1156vn_instance_submit_command(vn_instance, submit);1157if (cmd_data != local_cmd_data)1158free(cmd_data);1159}1160}11611162static inline void vn_submit_vkBindBufferMemory2(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos, struct vn_instance_submit_command *submit)1163{1164uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];1165void *cmd_data = local_cmd_data;1166size_t cmd_size = vn_sizeof_vkBindBufferMemory2(device, bindInfoCount, pBindInfos);1167if (cmd_size > sizeof(local_cmd_data)) {1168cmd_data = malloc(cmd_size);1169if (!cmd_data)1170cmd_size = 0;1171}1172const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkBindBufferMemory2_reply(device, bindInfoCount, pBindInfos) : 0;11731174struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);1175if (cmd_size) {1176vn_encode_vkBindBufferMemory2(enc, cmd_flags, device, bindInfoCount, pBindInfos);1177vn_instance_submit_command(vn_instance, submit);1178if (cmd_data != local_cmd_data)1179free(cmd_data);1180}1181}11821183static inline void vn_submit_vkGetBufferMemoryRequirements2(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements, struct vn_instance_submit_command *submit)1184{1185uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];1186void *cmd_data = local_cmd_data;1187size_t cmd_size = vn_sizeof_vkGetBufferMemoryRequirements2(device, pInfo, pMemoryRequirements);1188if (cmd_size > sizeof(local_cmd_data)) {1189cmd_data = malloc(cmd_size);1190if (!cmd_data)1191cmd_size = 0;1192}1193const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkGetBufferMemoryRequirements2_reply(device, pInfo, pMemoryRequirements) : 0;11941195struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);1196if (cmd_size) {1197vn_encode_vkGetBufferMemoryRequirements2(enc, cmd_flags, device, pInfo, pMemoryRequirements);1198vn_instance_submit_command(vn_instance, submit);1199if (cmd_data != local_cmd_data)1200free(cmd_data);1201}1202}12031204static inline void vn_submit_vkGetBufferOpaqueCaptureAddress(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkBufferDeviceAddressInfo* pInfo, struct vn_instance_submit_command *submit)1205{1206uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];1207void *cmd_data = local_cmd_data;1208size_t cmd_size = vn_sizeof_vkGetBufferOpaqueCaptureAddress(device, pInfo);1209if (cmd_size > sizeof(local_cmd_data)) {1210cmd_data = malloc(cmd_size);1211if (!cmd_data)1212cmd_size = 0;1213}1214const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkGetBufferOpaqueCaptureAddress_reply(device, pInfo) : 0;12151216struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);1217if (cmd_size) {1218vn_encode_vkGetBufferOpaqueCaptureAddress(enc, cmd_flags, device, pInfo);1219vn_instance_submit_command(vn_instance, submit);1220if (cmd_data != local_cmd_data)1221free(cmd_data);1222}1223}12241225static inline void vn_submit_vkGetBufferDeviceAddress(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkBufferDeviceAddressInfo* pInfo, struct vn_instance_submit_command *submit)1226{1227uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];1228void *cmd_data = local_cmd_data;1229size_t cmd_size = vn_sizeof_vkGetBufferDeviceAddress(device, pInfo);1230if (cmd_size > sizeof(local_cmd_data)) {1231cmd_data = malloc(cmd_size);1232if (!cmd_data)1233cmd_size = 0;1234}1235const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkGetBufferDeviceAddress_reply(device, pInfo) : 0;12361237struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);1238if (cmd_size) {1239vn_encode_vkGetBufferDeviceAddress(enc, cmd_flags, device, pInfo);1240vn_instance_submit_command(vn_instance, submit);1241if (cmd_data != local_cmd_data)1242free(cmd_data);1243}1244}12451246static inline void vn_call_vkGetBufferMemoryRequirements(struct vn_instance *vn_instance, VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements)1247{1248struct vn_instance_submit_command submit;1249vn_submit_vkGetBufferMemoryRequirements(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, buffer, pMemoryRequirements, &submit);1250struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);1251if (dec) {1252vn_decode_vkGetBufferMemoryRequirements_reply(dec, device, buffer, pMemoryRequirements);1253vn_instance_free_command_reply(vn_instance, &submit);1254}1255}12561257static inline void vn_async_vkGetBufferMemoryRequirements(struct vn_instance *vn_instance, VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements)1258{1259struct vn_instance_submit_command submit;1260vn_submit_vkGetBufferMemoryRequirements(vn_instance, 0, device, buffer, pMemoryRequirements, &submit);1261}12621263static inline VkResult vn_call_vkBindBufferMemory(struct vn_instance *vn_instance, VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset)1264{1265struct vn_instance_submit_command submit;1266vn_submit_vkBindBufferMemory(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, buffer, memory, memoryOffset, &submit);1267struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);1268if (dec) {1269const VkResult ret = vn_decode_vkBindBufferMemory_reply(dec, device, buffer, memory, memoryOffset);1270vn_instance_free_command_reply(vn_instance, &submit);1271return ret;1272} else {1273return VK_ERROR_OUT_OF_HOST_MEMORY;1274}1275}12761277static inline void vn_async_vkBindBufferMemory(struct vn_instance *vn_instance, VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset)1278{1279struct vn_instance_submit_command submit;1280vn_submit_vkBindBufferMemory(vn_instance, 0, device, buffer, memory, memoryOffset, &submit);1281}12821283static inline VkResult vn_call_vkCreateBuffer(struct vn_instance *vn_instance, VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer)1284{1285struct vn_instance_submit_command submit;1286vn_submit_vkCreateBuffer(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pCreateInfo, pAllocator, pBuffer, &submit);1287struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);1288if (dec) {1289const VkResult ret = vn_decode_vkCreateBuffer_reply(dec, device, pCreateInfo, pAllocator, pBuffer);1290vn_instance_free_command_reply(vn_instance, &submit);1291return ret;1292} else {1293return VK_ERROR_OUT_OF_HOST_MEMORY;1294}1295}12961297static inline void vn_async_vkCreateBuffer(struct vn_instance *vn_instance, VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer)1298{1299struct vn_instance_submit_command submit;1300vn_submit_vkCreateBuffer(vn_instance, 0, device, pCreateInfo, pAllocator, pBuffer, &submit);1301}13021303static inline void vn_call_vkDestroyBuffer(struct vn_instance *vn_instance, VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator)1304{1305struct vn_instance_submit_command submit;1306vn_submit_vkDestroyBuffer(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, buffer, pAllocator, &submit);1307struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);1308if (dec) {1309vn_decode_vkDestroyBuffer_reply(dec, device, buffer, pAllocator);1310vn_instance_free_command_reply(vn_instance, &submit);1311}1312}13131314static inline void vn_async_vkDestroyBuffer(struct vn_instance *vn_instance, VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator)1315{1316struct vn_instance_submit_command submit;1317vn_submit_vkDestroyBuffer(vn_instance, 0, device, buffer, pAllocator, &submit);1318}13191320static inline VkResult vn_call_vkBindBufferMemory2(struct vn_instance *vn_instance, VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos)1321{1322struct vn_instance_submit_command submit;1323vn_submit_vkBindBufferMemory2(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, bindInfoCount, pBindInfos, &submit);1324struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);1325if (dec) {1326const VkResult ret = vn_decode_vkBindBufferMemory2_reply(dec, device, bindInfoCount, pBindInfos);1327vn_instance_free_command_reply(vn_instance, &submit);1328return ret;1329} else {1330return VK_ERROR_OUT_OF_HOST_MEMORY;1331}1332}13331334static inline void vn_async_vkBindBufferMemory2(struct vn_instance *vn_instance, VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos)1335{1336struct vn_instance_submit_command submit;1337vn_submit_vkBindBufferMemory2(vn_instance, 0, device, bindInfoCount, pBindInfos, &submit);1338}13391340static inline void vn_call_vkGetBufferMemoryRequirements2(struct vn_instance *vn_instance, VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements)1341{1342struct vn_instance_submit_command submit;1343vn_submit_vkGetBufferMemoryRequirements2(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pInfo, pMemoryRequirements, &submit);1344struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);1345if (dec) {1346vn_decode_vkGetBufferMemoryRequirements2_reply(dec, device, pInfo, pMemoryRequirements);1347vn_instance_free_command_reply(vn_instance, &submit);1348}1349}13501351static inline void vn_async_vkGetBufferMemoryRequirements2(struct vn_instance *vn_instance, VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements)1352{1353struct vn_instance_submit_command submit;1354vn_submit_vkGetBufferMemoryRequirements2(vn_instance, 0, device, pInfo, pMemoryRequirements, &submit);1355}13561357static inline uint64_t vn_call_vkGetBufferOpaqueCaptureAddress(struct vn_instance *vn_instance, VkDevice device, const VkBufferDeviceAddressInfo* pInfo)1358{1359struct vn_instance_submit_command submit;1360vn_submit_vkGetBufferOpaqueCaptureAddress(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pInfo, &submit);1361struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);1362if (dec) {1363const uint64_t ret = vn_decode_vkGetBufferOpaqueCaptureAddress_reply(dec, device, pInfo);1364vn_instance_free_command_reply(vn_instance, &submit);1365return ret;1366} else {1367return VK_ERROR_OUT_OF_HOST_MEMORY;1368}1369}13701371static inline void vn_async_vkGetBufferOpaqueCaptureAddress(struct vn_instance *vn_instance, VkDevice device, const VkBufferDeviceAddressInfo* pInfo)1372{1373struct vn_instance_submit_command submit;1374vn_submit_vkGetBufferOpaqueCaptureAddress(vn_instance, 0, device, pInfo, &submit);1375}13761377static inline VkDeviceAddress vn_call_vkGetBufferDeviceAddress(struct vn_instance *vn_instance, VkDevice device, const VkBufferDeviceAddressInfo* pInfo)1378{1379struct vn_instance_submit_command submit;1380vn_submit_vkGetBufferDeviceAddress(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pInfo, &submit);1381struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);1382if (dec) {1383const VkDeviceAddress ret = vn_decode_vkGetBufferDeviceAddress_reply(dec, device, pInfo);1384vn_instance_free_command_reply(vn_instance, &submit);1385return ret;1386} else {1387return VK_ERROR_OUT_OF_HOST_MEMORY;1388}1389}13901391static inline void vn_async_vkGetBufferDeviceAddress(struct vn_instance *vn_instance, VkDevice device, const VkBufferDeviceAddressInfo* pInfo)1392{1393struct vn_instance_submit_command submit;1394vn_submit_vkGetBufferDeviceAddress(vn_instance, 0, device, pInfo, &submit);1395}13961397#endif /* VN_PROTOCOL_DRIVER_BUFFER_H */139813991400