Path: blob/21.2-virgl/src/virtio/venus-protocol/vn_protocol_driver_device_memory.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_DEVICE_MEMORY_H8#define VN_PROTOCOL_DRIVER_DEVICE_MEMORY_H910#include "vn_device.h"11#include "vn_protocol_driver_structs.h"1213/*14* These structs/unions/commands are not included15*16* VkImportMemoryFdInfoKHR17* vkMapMemory18*/1920/* struct VkExportMemoryAllocateInfo chain */2122static inline size_t23vn_sizeof_VkExportMemoryAllocateInfo_pnext(const void *val)24{25/* no known/supported struct */26return vn_sizeof_simple_pointer(NULL);27}2829static inline size_t30vn_sizeof_VkExportMemoryAllocateInfo_self(const VkExportMemoryAllocateInfo *val)31{32size_t size = 0;33/* skip val->{sType,pNext} */34size += vn_sizeof_VkFlags(&val->handleTypes);35return size;36}3738static inline size_t39vn_sizeof_VkExportMemoryAllocateInfo(const VkExportMemoryAllocateInfo *val)40{41size_t size = 0;4243size += vn_sizeof_VkStructureType(&val->sType);44size += vn_sizeof_VkExportMemoryAllocateInfo_pnext(val->pNext);45size += vn_sizeof_VkExportMemoryAllocateInfo_self(val);4647return size;48}4950static inline void51vn_encode_VkExportMemoryAllocateInfo_pnext(struct vn_cs_encoder *enc, const void *val)52{53/* no known/supported struct */54vn_encode_simple_pointer(enc, NULL);55}5657static inline void58vn_encode_VkExportMemoryAllocateInfo_self(struct vn_cs_encoder *enc, const VkExportMemoryAllocateInfo *val)59{60/* skip val->{sType,pNext} */61vn_encode_VkFlags(enc, &val->handleTypes);62}6364static inline void65vn_encode_VkExportMemoryAllocateInfo(struct vn_cs_encoder *enc, const VkExportMemoryAllocateInfo *val)66{67assert(val->sType == VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO);68vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO });69vn_encode_VkExportMemoryAllocateInfo_pnext(enc, val->pNext);70vn_encode_VkExportMemoryAllocateInfo_self(enc, val);71}7273/* struct VkMemoryAllocateFlagsInfo chain */7475static inline size_t76vn_sizeof_VkMemoryAllocateFlagsInfo_pnext(const void *val)77{78/* no known/supported struct */79return vn_sizeof_simple_pointer(NULL);80}8182static inline size_t83vn_sizeof_VkMemoryAllocateFlagsInfo_self(const VkMemoryAllocateFlagsInfo *val)84{85size_t size = 0;86/* skip val->{sType,pNext} */87size += vn_sizeof_VkFlags(&val->flags);88size += vn_sizeof_uint32_t(&val->deviceMask);89return size;90}9192static inline size_t93vn_sizeof_VkMemoryAllocateFlagsInfo(const VkMemoryAllocateFlagsInfo *val)94{95size_t size = 0;9697size += vn_sizeof_VkStructureType(&val->sType);98size += vn_sizeof_VkMemoryAllocateFlagsInfo_pnext(val->pNext);99size += vn_sizeof_VkMemoryAllocateFlagsInfo_self(val);100101return size;102}103104static inline void105vn_encode_VkMemoryAllocateFlagsInfo_pnext(struct vn_cs_encoder *enc, const void *val)106{107/* no known/supported struct */108vn_encode_simple_pointer(enc, NULL);109}110111static inline void112vn_encode_VkMemoryAllocateFlagsInfo_self(struct vn_cs_encoder *enc, const VkMemoryAllocateFlagsInfo *val)113{114/* skip val->{sType,pNext} */115vn_encode_VkFlags(enc, &val->flags);116vn_encode_uint32_t(enc, &val->deviceMask);117}118119static inline void120vn_encode_VkMemoryAllocateFlagsInfo(struct vn_cs_encoder *enc, const VkMemoryAllocateFlagsInfo *val)121{122assert(val->sType == VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO);123vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO });124vn_encode_VkMemoryAllocateFlagsInfo_pnext(enc, val->pNext);125vn_encode_VkMemoryAllocateFlagsInfo_self(enc, val);126}127128/* struct VkMemoryDedicatedAllocateInfo chain */129130static inline size_t131vn_sizeof_VkMemoryDedicatedAllocateInfo_pnext(const void *val)132{133/* no known/supported struct */134return vn_sizeof_simple_pointer(NULL);135}136137static inline size_t138vn_sizeof_VkMemoryDedicatedAllocateInfo_self(const VkMemoryDedicatedAllocateInfo *val)139{140size_t size = 0;141/* skip val->{sType,pNext} */142size += vn_sizeof_VkImage(&val->image);143size += vn_sizeof_VkBuffer(&val->buffer);144return size;145}146147static inline size_t148vn_sizeof_VkMemoryDedicatedAllocateInfo(const VkMemoryDedicatedAllocateInfo *val)149{150size_t size = 0;151152size += vn_sizeof_VkStructureType(&val->sType);153size += vn_sizeof_VkMemoryDedicatedAllocateInfo_pnext(val->pNext);154size += vn_sizeof_VkMemoryDedicatedAllocateInfo_self(val);155156return size;157}158159static inline void160vn_encode_VkMemoryDedicatedAllocateInfo_pnext(struct vn_cs_encoder *enc, const void *val)161{162/* no known/supported struct */163vn_encode_simple_pointer(enc, NULL);164}165166static inline void167vn_encode_VkMemoryDedicatedAllocateInfo_self(struct vn_cs_encoder *enc, const VkMemoryDedicatedAllocateInfo *val)168{169/* skip val->{sType,pNext} */170vn_encode_VkImage(enc, &val->image);171vn_encode_VkBuffer(enc, &val->buffer);172}173174static inline void175vn_encode_VkMemoryDedicatedAllocateInfo(struct vn_cs_encoder *enc, const VkMemoryDedicatedAllocateInfo *val)176{177assert(val->sType == VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO);178vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO });179vn_encode_VkMemoryDedicatedAllocateInfo_pnext(enc, val->pNext);180vn_encode_VkMemoryDedicatedAllocateInfo_self(enc, val);181}182183/* struct VkMemoryOpaqueCaptureAddressAllocateInfo chain */184185static inline size_t186vn_sizeof_VkMemoryOpaqueCaptureAddressAllocateInfo_pnext(const void *val)187{188/* no known/supported struct */189return vn_sizeof_simple_pointer(NULL);190}191192static inline size_t193vn_sizeof_VkMemoryOpaqueCaptureAddressAllocateInfo_self(const VkMemoryOpaqueCaptureAddressAllocateInfo *val)194{195size_t size = 0;196/* skip val->{sType,pNext} */197size += vn_sizeof_uint64_t(&val->opaqueCaptureAddress);198return size;199}200201static inline size_t202vn_sizeof_VkMemoryOpaqueCaptureAddressAllocateInfo(const VkMemoryOpaqueCaptureAddressAllocateInfo *val)203{204size_t size = 0;205206size += vn_sizeof_VkStructureType(&val->sType);207size += vn_sizeof_VkMemoryOpaqueCaptureAddressAllocateInfo_pnext(val->pNext);208size += vn_sizeof_VkMemoryOpaqueCaptureAddressAllocateInfo_self(val);209210return size;211}212213static inline void214vn_encode_VkMemoryOpaqueCaptureAddressAllocateInfo_pnext(struct vn_cs_encoder *enc, const void *val)215{216/* no known/supported struct */217vn_encode_simple_pointer(enc, NULL);218}219220static inline void221vn_encode_VkMemoryOpaqueCaptureAddressAllocateInfo_self(struct vn_cs_encoder *enc, const VkMemoryOpaqueCaptureAddressAllocateInfo *val)222{223/* skip val->{sType,pNext} */224vn_encode_uint64_t(enc, &val->opaqueCaptureAddress);225}226227static inline void228vn_encode_VkMemoryOpaqueCaptureAddressAllocateInfo(struct vn_cs_encoder *enc, const VkMemoryOpaqueCaptureAddressAllocateInfo *val)229{230assert(val->sType == VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO);231vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO });232vn_encode_VkMemoryOpaqueCaptureAddressAllocateInfo_pnext(enc, val->pNext);233vn_encode_VkMemoryOpaqueCaptureAddressAllocateInfo_self(enc, val);234}235236/* struct VkImportMemoryResourceInfoMESA chain */237238static inline size_t239vn_sizeof_VkImportMemoryResourceInfoMESA_pnext(const void *val)240{241/* no known/supported struct */242return vn_sizeof_simple_pointer(NULL);243}244245static inline size_t246vn_sizeof_VkImportMemoryResourceInfoMESA_self(const VkImportMemoryResourceInfoMESA *val)247{248size_t size = 0;249/* skip val->{sType,pNext} */250size += vn_sizeof_uint32_t(&val->resourceId);251return size;252}253254static inline size_t255vn_sizeof_VkImportMemoryResourceInfoMESA(const VkImportMemoryResourceInfoMESA *val)256{257size_t size = 0;258259size += vn_sizeof_VkStructureType(&val->sType);260size += vn_sizeof_VkImportMemoryResourceInfoMESA_pnext(val->pNext);261size += vn_sizeof_VkImportMemoryResourceInfoMESA_self(val);262263return size;264}265266static inline void267vn_encode_VkImportMemoryResourceInfoMESA_pnext(struct vn_cs_encoder *enc, const void *val)268{269/* no known/supported struct */270vn_encode_simple_pointer(enc, NULL);271}272273static inline void274vn_encode_VkImportMemoryResourceInfoMESA_self(struct vn_cs_encoder *enc, const VkImportMemoryResourceInfoMESA *val)275{276/* skip val->{sType,pNext} */277vn_encode_uint32_t(enc, &val->resourceId);278}279280static inline void281vn_encode_VkImportMemoryResourceInfoMESA(struct vn_cs_encoder *enc, const VkImportMemoryResourceInfoMESA *val)282{283assert(val->sType == VK_STRUCTURE_TYPE_IMPORT_MEMORY_RESOURCE_INFO_MESA);284vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_IMPORT_MEMORY_RESOURCE_INFO_MESA });285vn_encode_VkImportMemoryResourceInfoMESA_pnext(enc, val->pNext);286vn_encode_VkImportMemoryResourceInfoMESA_self(enc, val);287}288289/* struct VkMemoryAllocateInfo chain */290291static inline size_t292vn_sizeof_VkMemoryAllocateInfo_pnext(const void *val)293{294const VkBaseInStructure *pnext = val;295size_t size = 0;296297while (pnext) {298switch ((int32_t)pnext->sType) {299case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO:300size += vn_sizeof_simple_pointer(pnext);301size += vn_sizeof_VkStructureType(&pnext->sType);302size += vn_sizeof_VkMemoryAllocateInfo_pnext(pnext->pNext);303size += vn_sizeof_VkExportMemoryAllocateInfo_self((const VkExportMemoryAllocateInfo *)pnext);304return size;305case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO:306size += vn_sizeof_simple_pointer(pnext);307size += vn_sizeof_VkStructureType(&pnext->sType);308size += vn_sizeof_VkMemoryAllocateInfo_pnext(pnext->pNext);309size += vn_sizeof_VkMemoryAllocateFlagsInfo_self((const VkMemoryAllocateFlagsInfo *)pnext);310return size;311case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO:312size += vn_sizeof_simple_pointer(pnext);313size += vn_sizeof_VkStructureType(&pnext->sType);314size += vn_sizeof_VkMemoryAllocateInfo_pnext(pnext->pNext);315size += vn_sizeof_VkMemoryDedicatedAllocateInfo_self((const VkMemoryDedicatedAllocateInfo *)pnext);316return size;317case VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO:318size += vn_sizeof_simple_pointer(pnext);319size += vn_sizeof_VkStructureType(&pnext->sType);320size += vn_sizeof_VkMemoryAllocateInfo_pnext(pnext->pNext);321size += vn_sizeof_VkMemoryOpaqueCaptureAddressAllocateInfo_self((const VkMemoryOpaqueCaptureAddressAllocateInfo *)pnext);322return size;323case VK_STRUCTURE_TYPE_IMPORT_MEMORY_RESOURCE_INFO_MESA:324size += vn_sizeof_simple_pointer(pnext);325size += vn_sizeof_VkStructureType(&pnext->sType);326size += vn_sizeof_VkMemoryAllocateInfo_pnext(pnext->pNext);327size += vn_sizeof_VkImportMemoryResourceInfoMESA_self((const VkImportMemoryResourceInfoMESA *)pnext);328return size;329case VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR:330default:331/* ignore unknown/unsupported struct */332break;333}334pnext = pnext->pNext;335}336337return vn_sizeof_simple_pointer(NULL);338}339340static inline size_t341vn_sizeof_VkMemoryAllocateInfo_self(const VkMemoryAllocateInfo *val)342{343size_t size = 0;344/* skip val->{sType,pNext} */345size += vn_sizeof_VkDeviceSize(&val->allocationSize);346size += vn_sizeof_uint32_t(&val->memoryTypeIndex);347return size;348}349350static inline size_t351vn_sizeof_VkMemoryAllocateInfo(const VkMemoryAllocateInfo *val)352{353size_t size = 0;354355size += vn_sizeof_VkStructureType(&val->sType);356size += vn_sizeof_VkMemoryAllocateInfo_pnext(val->pNext);357size += vn_sizeof_VkMemoryAllocateInfo_self(val);358359return size;360}361362static inline void363vn_encode_VkMemoryAllocateInfo_pnext(struct vn_cs_encoder *enc, const void *val)364{365const VkBaseInStructure *pnext = val;366367while (pnext) {368switch ((int32_t)pnext->sType) {369case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO:370vn_encode_simple_pointer(enc, pnext);371vn_encode_VkStructureType(enc, &pnext->sType);372vn_encode_VkMemoryAllocateInfo_pnext(enc, pnext->pNext);373vn_encode_VkExportMemoryAllocateInfo_self(enc, (const VkExportMemoryAllocateInfo *)pnext);374return;375case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO:376vn_encode_simple_pointer(enc, pnext);377vn_encode_VkStructureType(enc, &pnext->sType);378vn_encode_VkMemoryAllocateInfo_pnext(enc, pnext->pNext);379vn_encode_VkMemoryAllocateFlagsInfo_self(enc, (const VkMemoryAllocateFlagsInfo *)pnext);380return;381case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO:382vn_encode_simple_pointer(enc, pnext);383vn_encode_VkStructureType(enc, &pnext->sType);384vn_encode_VkMemoryAllocateInfo_pnext(enc, pnext->pNext);385vn_encode_VkMemoryDedicatedAllocateInfo_self(enc, (const VkMemoryDedicatedAllocateInfo *)pnext);386return;387case VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO:388vn_encode_simple_pointer(enc, pnext);389vn_encode_VkStructureType(enc, &pnext->sType);390vn_encode_VkMemoryAllocateInfo_pnext(enc, pnext->pNext);391vn_encode_VkMemoryOpaqueCaptureAddressAllocateInfo_self(enc, (const VkMemoryOpaqueCaptureAddressAllocateInfo *)pnext);392return;393case VK_STRUCTURE_TYPE_IMPORT_MEMORY_RESOURCE_INFO_MESA:394vn_encode_simple_pointer(enc, pnext);395vn_encode_VkStructureType(enc, &pnext->sType);396vn_encode_VkMemoryAllocateInfo_pnext(enc, pnext->pNext);397vn_encode_VkImportMemoryResourceInfoMESA_self(enc, (const VkImportMemoryResourceInfoMESA *)pnext);398return;399case VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR:400default:401/* ignore unknown/unsupported struct */402break;403}404pnext = pnext->pNext;405}406407vn_encode_simple_pointer(enc, NULL);408}409410static inline void411vn_encode_VkMemoryAllocateInfo_self(struct vn_cs_encoder *enc, const VkMemoryAllocateInfo *val)412{413/* skip val->{sType,pNext} */414vn_encode_VkDeviceSize(enc, &val->allocationSize);415vn_encode_uint32_t(enc, &val->memoryTypeIndex);416}417418static inline void419vn_encode_VkMemoryAllocateInfo(struct vn_cs_encoder *enc, const VkMemoryAllocateInfo *val)420{421assert(val->sType == VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO);422vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO });423vn_encode_VkMemoryAllocateInfo_pnext(enc, val->pNext);424vn_encode_VkMemoryAllocateInfo_self(enc, val);425}426427/* struct VkMappedMemoryRange chain */428429static inline size_t430vn_sizeof_VkMappedMemoryRange_pnext(const void *val)431{432/* no known/supported struct */433return vn_sizeof_simple_pointer(NULL);434}435436static inline size_t437vn_sizeof_VkMappedMemoryRange_self(const VkMappedMemoryRange *val)438{439size_t size = 0;440/* skip val->{sType,pNext} */441size += vn_sizeof_VkDeviceMemory(&val->memory);442size += vn_sizeof_VkDeviceSize(&val->offset);443size += vn_sizeof_VkDeviceSize(&val->size);444return size;445}446447static inline size_t448vn_sizeof_VkMappedMemoryRange(const VkMappedMemoryRange *val)449{450size_t size = 0;451452size += vn_sizeof_VkStructureType(&val->sType);453size += vn_sizeof_VkMappedMemoryRange_pnext(val->pNext);454size += vn_sizeof_VkMappedMemoryRange_self(val);455456return size;457}458459static inline void460vn_encode_VkMappedMemoryRange_pnext(struct vn_cs_encoder *enc, const void *val)461{462/* no known/supported struct */463vn_encode_simple_pointer(enc, NULL);464}465466static inline void467vn_encode_VkMappedMemoryRange_self(struct vn_cs_encoder *enc, const VkMappedMemoryRange *val)468{469/* skip val->{sType,pNext} */470vn_encode_VkDeviceMemory(enc, &val->memory);471vn_encode_VkDeviceSize(enc, &val->offset);472vn_encode_VkDeviceSize(enc, &val->size);473}474475static inline void476vn_encode_VkMappedMemoryRange(struct vn_cs_encoder *enc, const VkMappedMemoryRange *val)477{478assert(val->sType == VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE);479vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE });480vn_encode_VkMappedMemoryRange_pnext(enc, val->pNext);481vn_encode_VkMappedMemoryRange_self(enc, val);482}483484static inline void485vn_decode_VkMappedMemoryRange_pnext(struct vn_cs_decoder *dec, const void *val)486{487/* no known/supported struct */488if (vn_decode_simple_pointer(dec))489assert(false);490}491492static inline void493vn_decode_VkMappedMemoryRange_self(struct vn_cs_decoder *dec, VkMappedMemoryRange *val)494{495/* skip val->{sType,pNext} */496vn_decode_VkDeviceMemory(dec, &val->memory);497vn_decode_VkDeviceSize(dec, &val->offset);498vn_decode_VkDeviceSize(dec, &val->size);499}500501static inline void502vn_decode_VkMappedMemoryRange(struct vn_cs_decoder *dec, VkMappedMemoryRange *val)503{504VkStructureType stype;505vn_decode_VkStructureType(dec, &stype);506assert(stype == VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE);507508assert(val->sType == stype);509vn_decode_VkMappedMemoryRange_pnext(dec, val->pNext);510vn_decode_VkMappedMemoryRange_self(dec, val);511}512513/* struct VkDeviceMemoryOpaqueCaptureAddressInfo chain */514515static inline size_t516vn_sizeof_VkDeviceMemoryOpaqueCaptureAddressInfo_pnext(const void *val)517{518/* no known/supported struct */519return vn_sizeof_simple_pointer(NULL);520}521522static inline size_t523vn_sizeof_VkDeviceMemoryOpaqueCaptureAddressInfo_self(const VkDeviceMemoryOpaqueCaptureAddressInfo *val)524{525size_t size = 0;526/* skip val->{sType,pNext} */527size += vn_sizeof_VkDeviceMemory(&val->memory);528return size;529}530531static inline size_t532vn_sizeof_VkDeviceMemoryOpaqueCaptureAddressInfo(const VkDeviceMemoryOpaqueCaptureAddressInfo *val)533{534size_t size = 0;535536size += vn_sizeof_VkStructureType(&val->sType);537size += vn_sizeof_VkDeviceMemoryOpaqueCaptureAddressInfo_pnext(val->pNext);538size += vn_sizeof_VkDeviceMemoryOpaqueCaptureAddressInfo_self(val);539540return size;541}542543static inline void544vn_encode_VkDeviceMemoryOpaqueCaptureAddressInfo_pnext(struct vn_cs_encoder *enc, const void *val)545{546/* no known/supported struct */547vn_encode_simple_pointer(enc, NULL);548}549550static inline void551vn_encode_VkDeviceMemoryOpaqueCaptureAddressInfo_self(struct vn_cs_encoder *enc, const VkDeviceMemoryOpaqueCaptureAddressInfo *val)552{553/* skip val->{sType,pNext} */554vn_encode_VkDeviceMemory(enc, &val->memory);555}556557static inline void558vn_encode_VkDeviceMemoryOpaqueCaptureAddressInfo(struct vn_cs_encoder *enc, const VkDeviceMemoryOpaqueCaptureAddressInfo *val)559{560assert(val->sType == VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO);561vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO });562vn_encode_VkDeviceMemoryOpaqueCaptureAddressInfo_pnext(enc, val->pNext);563vn_encode_VkDeviceMemoryOpaqueCaptureAddressInfo_self(enc, val);564}565566static inline void567vn_decode_VkDeviceMemoryOpaqueCaptureAddressInfo_pnext(struct vn_cs_decoder *dec, const void *val)568{569/* no known/supported struct */570if (vn_decode_simple_pointer(dec))571assert(false);572}573574static inline void575vn_decode_VkDeviceMemoryOpaqueCaptureAddressInfo_self(struct vn_cs_decoder *dec, VkDeviceMemoryOpaqueCaptureAddressInfo *val)576{577/* skip val->{sType,pNext} */578vn_decode_VkDeviceMemory(dec, &val->memory);579}580581static inline void582vn_decode_VkDeviceMemoryOpaqueCaptureAddressInfo(struct vn_cs_decoder *dec, VkDeviceMemoryOpaqueCaptureAddressInfo *val)583{584VkStructureType stype;585vn_decode_VkStructureType(dec, &stype);586assert(stype == VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO);587588assert(val->sType == stype);589vn_decode_VkDeviceMemoryOpaqueCaptureAddressInfo_pnext(dec, val->pNext);590vn_decode_VkDeviceMemoryOpaqueCaptureAddressInfo_self(dec, val);591}592593static inline size_t vn_sizeof_vkAllocateMemory(VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory)594{595const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkAllocateMemory_EXT;596const VkFlags cmd_flags = 0;597size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);598599cmd_size += vn_sizeof_VkDevice(&device);600cmd_size += vn_sizeof_simple_pointer(pAllocateInfo);601if (pAllocateInfo)602cmd_size += vn_sizeof_VkMemoryAllocateInfo(pAllocateInfo);603cmd_size += vn_sizeof_simple_pointer(pAllocator);604if (pAllocator)605assert(false);606cmd_size += vn_sizeof_simple_pointer(pMemory);607if (pMemory)608cmd_size += vn_sizeof_VkDeviceMemory(pMemory);609610return cmd_size;611}612613static inline void vn_encode_vkAllocateMemory(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory)614{615const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkAllocateMemory_EXT;616617vn_encode_VkCommandTypeEXT(enc, &cmd_type);618vn_encode_VkFlags(enc, &cmd_flags);619620vn_encode_VkDevice(enc, &device);621if (vn_encode_simple_pointer(enc, pAllocateInfo))622vn_encode_VkMemoryAllocateInfo(enc, pAllocateInfo);623if (vn_encode_simple_pointer(enc, pAllocator))624assert(false);625if (vn_encode_simple_pointer(enc, pMemory))626vn_encode_VkDeviceMemory(enc, pMemory);627}628629static inline size_t vn_sizeof_vkAllocateMemory_reply(VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory)630{631const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkAllocateMemory_EXT;632size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);633634VkResult ret;635cmd_size += vn_sizeof_VkResult(&ret);636/* skip device */637/* skip pAllocateInfo */638/* skip pAllocator */639cmd_size += vn_sizeof_simple_pointer(pMemory);640if (pMemory)641cmd_size += vn_sizeof_VkDeviceMemory(pMemory);642643return cmd_size;644}645646static inline VkResult vn_decode_vkAllocateMemory_reply(struct vn_cs_decoder *dec, VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory)647{648VkCommandTypeEXT command_type;649vn_decode_VkCommandTypeEXT(dec, &command_type);650assert(command_type == VK_COMMAND_TYPE_vkAllocateMemory_EXT);651652VkResult ret;653vn_decode_VkResult(dec, &ret);654/* skip device */655/* skip pAllocateInfo */656/* skip pAllocator */657if (vn_decode_simple_pointer(dec)) {658vn_decode_VkDeviceMemory(dec, pMemory);659} else {660pMemory = NULL;661}662663return ret;664}665666static inline size_t vn_sizeof_vkFreeMemory(VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator)667{668const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkFreeMemory_EXT;669const VkFlags cmd_flags = 0;670size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);671672cmd_size += vn_sizeof_VkDevice(&device);673cmd_size += vn_sizeof_VkDeviceMemory(&memory);674cmd_size += vn_sizeof_simple_pointer(pAllocator);675if (pAllocator)676assert(false);677678return cmd_size;679}680681static inline void vn_encode_vkFreeMemory(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator)682{683const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkFreeMemory_EXT;684685vn_encode_VkCommandTypeEXT(enc, &cmd_type);686vn_encode_VkFlags(enc, &cmd_flags);687688vn_encode_VkDevice(enc, &device);689vn_encode_VkDeviceMemory(enc, &memory);690if (vn_encode_simple_pointer(enc, pAllocator))691assert(false);692}693694static inline size_t vn_sizeof_vkFreeMemory_reply(VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator)695{696const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkFreeMemory_EXT;697size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);698699/* skip device */700/* skip memory */701/* skip pAllocator */702703return cmd_size;704}705706static inline void vn_decode_vkFreeMemory_reply(struct vn_cs_decoder *dec, VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator)707{708VkCommandTypeEXT command_type;709vn_decode_VkCommandTypeEXT(dec, &command_type);710assert(command_type == VK_COMMAND_TYPE_vkFreeMemory_EXT);711712/* skip device */713/* skip memory */714/* skip pAllocator */715}716717static inline size_t vn_sizeof_vkUnmapMemory(VkDevice device, VkDeviceMemory memory)718{719const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkUnmapMemory_EXT;720const VkFlags cmd_flags = 0;721size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);722723cmd_size += vn_sizeof_VkDevice(&device);724cmd_size += vn_sizeof_VkDeviceMemory(&memory);725726return cmd_size;727}728729static inline void vn_encode_vkUnmapMemory(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkDeviceMemory memory)730{731const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkUnmapMemory_EXT;732733vn_encode_VkCommandTypeEXT(enc, &cmd_type);734vn_encode_VkFlags(enc, &cmd_flags);735736vn_encode_VkDevice(enc, &device);737vn_encode_VkDeviceMemory(enc, &memory);738}739740static inline size_t vn_sizeof_vkUnmapMemory_reply(VkDevice device, VkDeviceMemory memory)741{742const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkUnmapMemory_EXT;743size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);744745/* skip device */746/* skip memory */747748return cmd_size;749}750751static inline void vn_decode_vkUnmapMemory_reply(struct vn_cs_decoder *dec, VkDevice device, VkDeviceMemory memory)752{753VkCommandTypeEXT command_type;754vn_decode_VkCommandTypeEXT(dec, &command_type);755assert(command_type == VK_COMMAND_TYPE_vkUnmapMemory_EXT);756757/* skip device */758/* skip memory */759}760761static inline size_t vn_sizeof_vkFlushMappedMemoryRanges(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges)762{763const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkFlushMappedMemoryRanges_EXT;764const VkFlags cmd_flags = 0;765size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);766767cmd_size += vn_sizeof_VkDevice(&device);768cmd_size += vn_sizeof_uint32_t(&memoryRangeCount);769if (pMemoryRanges) {770cmd_size += vn_sizeof_array_size(memoryRangeCount);771for (uint32_t i = 0; i < memoryRangeCount; i++)772cmd_size += vn_sizeof_VkMappedMemoryRange(&pMemoryRanges[i]);773} else {774cmd_size += vn_sizeof_array_size(0);775}776777return cmd_size;778}779780static inline void vn_encode_vkFlushMappedMemoryRanges(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges)781{782const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkFlushMappedMemoryRanges_EXT;783784vn_encode_VkCommandTypeEXT(enc, &cmd_type);785vn_encode_VkFlags(enc, &cmd_flags);786787vn_encode_VkDevice(enc, &device);788vn_encode_uint32_t(enc, &memoryRangeCount);789if (pMemoryRanges) {790vn_encode_array_size(enc, memoryRangeCount);791for (uint32_t i = 0; i < memoryRangeCount; i++)792vn_encode_VkMappedMemoryRange(enc, &pMemoryRanges[i]);793} else {794vn_encode_array_size(enc, 0);795}796}797798static inline size_t vn_sizeof_vkFlushMappedMemoryRanges_reply(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges)799{800const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkFlushMappedMemoryRanges_EXT;801size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);802803VkResult ret;804cmd_size += vn_sizeof_VkResult(&ret);805/* skip device */806/* skip memoryRangeCount */807/* skip pMemoryRanges */808809return cmd_size;810}811812static inline VkResult vn_decode_vkFlushMappedMemoryRanges_reply(struct vn_cs_decoder *dec, VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges)813{814VkCommandTypeEXT command_type;815vn_decode_VkCommandTypeEXT(dec, &command_type);816assert(command_type == VK_COMMAND_TYPE_vkFlushMappedMemoryRanges_EXT);817818VkResult ret;819vn_decode_VkResult(dec, &ret);820/* skip device */821/* skip memoryRangeCount */822/* skip pMemoryRanges */823824return ret;825}826827static inline size_t vn_sizeof_vkInvalidateMappedMemoryRanges(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges)828{829const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkInvalidateMappedMemoryRanges_EXT;830const VkFlags cmd_flags = 0;831size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);832833cmd_size += vn_sizeof_VkDevice(&device);834cmd_size += vn_sizeof_uint32_t(&memoryRangeCount);835if (pMemoryRanges) {836cmd_size += vn_sizeof_array_size(memoryRangeCount);837for (uint32_t i = 0; i < memoryRangeCount; i++)838cmd_size += vn_sizeof_VkMappedMemoryRange(&pMemoryRanges[i]);839} else {840cmd_size += vn_sizeof_array_size(0);841}842843return cmd_size;844}845846static inline void vn_encode_vkInvalidateMappedMemoryRanges(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges)847{848const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkInvalidateMappedMemoryRanges_EXT;849850vn_encode_VkCommandTypeEXT(enc, &cmd_type);851vn_encode_VkFlags(enc, &cmd_flags);852853vn_encode_VkDevice(enc, &device);854vn_encode_uint32_t(enc, &memoryRangeCount);855if (pMemoryRanges) {856vn_encode_array_size(enc, memoryRangeCount);857for (uint32_t i = 0; i < memoryRangeCount; i++)858vn_encode_VkMappedMemoryRange(enc, &pMemoryRanges[i]);859} else {860vn_encode_array_size(enc, 0);861}862}863864static inline size_t vn_sizeof_vkInvalidateMappedMemoryRanges_reply(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges)865{866const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkInvalidateMappedMemoryRanges_EXT;867size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);868869VkResult ret;870cmd_size += vn_sizeof_VkResult(&ret);871/* skip device */872/* skip memoryRangeCount */873/* skip pMemoryRanges */874875return cmd_size;876}877878static inline VkResult vn_decode_vkInvalidateMappedMemoryRanges_reply(struct vn_cs_decoder *dec, VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges)879{880VkCommandTypeEXT command_type;881vn_decode_VkCommandTypeEXT(dec, &command_type);882assert(command_type == VK_COMMAND_TYPE_vkInvalidateMappedMemoryRanges_EXT);883884VkResult ret;885vn_decode_VkResult(dec, &ret);886/* skip device */887/* skip memoryRangeCount */888/* skip pMemoryRanges */889890return ret;891}892893static inline size_t vn_sizeof_vkGetDeviceMemoryCommitment(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes)894{895const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetDeviceMemoryCommitment_EXT;896const VkFlags cmd_flags = 0;897size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);898899cmd_size += vn_sizeof_VkDevice(&device);900cmd_size += vn_sizeof_VkDeviceMemory(&memory);901cmd_size += vn_sizeof_simple_pointer(pCommittedMemoryInBytes); /* out */902903return cmd_size;904}905906static inline void vn_encode_vkGetDeviceMemoryCommitment(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes)907{908const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetDeviceMemoryCommitment_EXT;909910vn_encode_VkCommandTypeEXT(enc, &cmd_type);911vn_encode_VkFlags(enc, &cmd_flags);912913vn_encode_VkDevice(enc, &device);914vn_encode_VkDeviceMemory(enc, &memory);915vn_encode_simple_pointer(enc, pCommittedMemoryInBytes); /* out */916}917918static inline size_t vn_sizeof_vkGetDeviceMemoryCommitment_reply(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes)919{920const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetDeviceMemoryCommitment_EXT;921size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);922923/* skip device */924/* skip memory */925cmd_size += vn_sizeof_simple_pointer(pCommittedMemoryInBytes);926if (pCommittedMemoryInBytes)927cmd_size += vn_sizeof_VkDeviceSize(pCommittedMemoryInBytes);928929return cmd_size;930}931932static inline void vn_decode_vkGetDeviceMemoryCommitment_reply(struct vn_cs_decoder *dec, VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes)933{934VkCommandTypeEXT command_type;935vn_decode_VkCommandTypeEXT(dec, &command_type);936assert(command_type == VK_COMMAND_TYPE_vkGetDeviceMemoryCommitment_EXT);937938/* skip device */939/* skip memory */940if (vn_decode_simple_pointer(dec)) {941vn_decode_VkDeviceSize(dec, pCommittedMemoryInBytes);942} else {943pCommittedMemoryInBytes = NULL;944}945}946947static inline size_t vn_sizeof_vkGetDeviceMemoryOpaqueCaptureAddress(VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)948{949const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetDeviceMemoryOpaqueCaptureAddress_EXT;950const VkFlags cmd_flags = 0;951size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);952953cmd_size += vn_sizeof_VkDevice(&device);954cmd_size += vn_sizeof_simple_pointer(pInfo);955if (pInfo)956cmd_size += vn_sizeof_VkDeviceMemoryOpaqueCaptureAddressInfo(pInfo);957958return cmd_size;959}960961static inline void vn_encode_vkGetDeviceMemoryOpaqueCaptureAddress(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)962{963const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetDeviceMemoryOpaqueCaptureAddress_EXT;964965vn_encode_VkCommandTypeEXT(enc, &cmd_type);966vn_encode_VkFlags(enc, &cmd_flags);967968vn_encode_VkDevice(enc, &device);969if (vn_encode_simple_pointer(enc, pInfo))970vn_encode_VkDeviceMemoryOpaqueCaptureAddressInfo(enc, pInfo);971}972973static inline size_t vn_sizeof_vkGetDeviceMemoryOpaqueCaptureAddress_reply(VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)974{975const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetDeviceMemoryOpaqueCaptureAddress_EXT;976size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);977978uint64_t ret;979cmd_size += vn_sizeof_uint64_t(&ret);980/* skip device */981/* skip pInfo */982983return cmd_size;984}985986static inline uint64_t vn_decode_vkGetDeviceMemoryOpaqueCaptureAddress_reply(struct vn_cs_decoder *dec, VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)987{988VkCommandTypeEXT command_type;989vn_decode_VkCommandTypeEXT(dec, &command_type);990assert(command_type == VK_COMMAND_TYPE_vkGetDeviceMemoryOpaqueCaptureAddress_EXT);991992uint64_t ret;993vn_decode_uint64_t(dec, &ret);994/* skip device */995/* skip pInfo */996997return ret;998}9991000static inline void vn_submit_vkAllocateMemory(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory, struct vn_instance_submit_command *submit)1001{1002uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];1003void *cmd_data = local_cmd_data;1004size_t cmd_size = vn_sizeof_vkAllocateMemory(device, pAllocateInfo, pAllocator, pMemory);1005if (cmd_size > sizeof(local_cmd_data)) {1006cmd_data = malloc(cmd_size);1007if (!cmd_data)1008cmd_size = 0;1009}1010const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkAllocateMemory_reply(device, pAllocateInfo, pAllocator, pMemory) : 0;10111012struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);1013if (cmd_size) {1014vn_encode_vkAllocateMemory(enc, cmd_flags, device, pAllocateInfo, pAllocator, pMemory);1015vn_instance_submit_command(vn_instance, submit);1016if (cmd_data != local_cmd_data)1017free(cmd_data);1018}1019}10201021static inline void vn_submit_vkFreeMemory(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator, struct vn_instance_submit_command *submit)1022{1023uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];1024void *cmd_data = local_cmd_data;1025size_t cmd_size = vn_sizeof_vkFreeMemory(device, memory, pAllocator);1026if (cmd_size > sizeof(local_cmd_data)) {1027cmd_data = malloc(cmd_size);1028if (!cmd_data)1029cmd_size = 0;1030}1031const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkFreeMemory_reply(device, memory, pAllocator) : 0;10321033struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);1034if (cmd_size) {1035vn_encode_vkFreeMemory(enc, cmd_flags, device, memory, pAllocator);1036vn_instance_submit_command(vn_instance, submit);1037if (cmd_data != local_cmd_data)1038free(cmd_data);1039}1040}10411042static inline void vn_submit_vkUnmapMemory(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, VkDeviceMemory memory, struct vn_instance_submit_command *submit)1043{1044uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];1045void *cmd_data = local_cmd_data;1046size_t cmd_size = vn_sizeof_vkUnmapMemory(device, memory);1047if (cmd_size > sizeof(local_cmd_data)) {1048cmd_data = malloc(cmd_size);1049if (!cmd_data)1050cmd_size = 0;1051}1052const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkUnmapMemory_reply(device, memory) : 0;10531054struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);1055if (cmd_size) {1056vn_encode_vkUnmapMemory(enc, cmd_flags, device, memory);1057vn_instance_submit_command(vn_instance, submit);1058if (cmd_data != local_cmd_data)1059free(cmd_data);1060}1061}10621063static inline void vn_submit_vkFlushMappedMemoryRanges(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges, struct vn_instance_submit_command *submit)1064{1065uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];1066void *cmd_data = local_cmd_data;1067size_t cmd_size = vn_sizeof_vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges);1068if (cmd_size > sizeof(local_cmd_data)) {1069cmd_data = malloc(cmd_size);1070if (!cmd_data)1071cmd_size = 0;1072}1073const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkFlushMappedMemoryRanges_reply(device, memoryRangeCount, pMemoryRanges) : 0;10741075struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);1076if (cmd_size) {1077vn_encode_vkFlushMappedMemoryRanges(enc, cmd_flags, device, memoryRangeCount, pMemoryRanges);1078vn_instance_submit_command(vn_instance, submit);1079if (cmd_data != local_cmd_data)1080free(cmd_data);1081}1082}10831084static inline void vn_submit_vkInvalidateMappedMemoryRanges(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges, struct vn_instance_submit_command *submit)1085{1086uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];1087void *cmd_data = local_cmd_data;1088size_t cmd_size = vn_sizeof_vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges);1089if (cmd_size > sizeof(local_cmd_data)) {1090cmd_data = malloc(cmd_size);1091if (!cmd_data)1092cmd_size = 0;1093}1094const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkInvalidateMappedMemoryRanges_reply(device, memoryRangeCount, pMemoryRanges) : 0;10951096struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);1097if (cmd_size) {1098vn_encode_vkInvalidateMappedMemoryRanges(enc, cmd_flags, device, memoryRangeCount, pMemoryRanges);1099vn_instance_submit_command(vn_instance, submit);1100if (cmd_data != local_cmd_data)1101free(cmd_data);1102}1103}11041105static inline void vn_submit_vkGetDeviceMemoryCommitment(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes, struct vn_instance_submit_command *submit)1106{1107uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];1108void *cmd_data = local_cmd_data;1109size_t cmd_size = vn_sizeof_vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes);1110if (cmd_size > sizeof(local_cmd_data)) {1111cmd_data = malloc(cmd_size);1112if (!cmd_data)1113cmd_size = 0;1114}1115const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkGetDeviceMemoryCommitment_reply(device, memory, pCommittedMemoryInBytes) : 0;11161117struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);1118if (cmd_size) {1119vn_encode_vkGetDeviceMemoryCommitment(enc, cmd_flags, device, memory, pCommittedMemoryInBytes);1120vn_instance_submit_command(vn_instance, submit);1121if (cmd_data != local_cmd_data)1122free(cmd_data);1123}1124}11251126static inline void vn_submit_vkGetDeviceMemoryOpaqueCaptureAddress(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo, struct vn_instance_submit_command *submit)1127{1128uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];1129void *cmd_data = local_cmd_data;1130size_t cmd_size = vn_sizeof_vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo);1131if (cmd_size > sizeof(local_cmd_data)) {1132cmd_data = malloc(cmd_size);1133if (!cmd_data)1134cmd_size = 0;1135}1136const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkGetDeviceMemoryOpaqueCaptureAddress_reply(device, pInfo) : 0;11371138struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);1139if (cmd_size) {1140vn_encode_vkGetDeviceMemoryOpaqueCaptureAddress(enc, cmd_flags, device, pInfo);1141vn_instance_submit_command(vn_instance, submit);1142if (cmd_data != local_cmd_data)1143free(cmd_data);1144}1145}11461147static inline VkResult vn_call_vkAllocateMemory(struct vn_instance *vn_instance, VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory)1148{1149struct vn_instance_submit_command submit;1150vn_submit_vkAllocateMemory(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pAllocateInfo, pAllocator, pMemory, &submit);1151struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);1152if (dec) {1153const VkResult ret = vn_decode_vkAllocateMemory_reply(dec, device, pAllocateInfo, pAllocator, pMemory);1154vn_instance_free_command_reply(vn_instance, &submit);1155return ret;1156} else {1157return VK_ERROR_OUT_OF_HOST_MEMORY;1158}1159}11601161static inline void vn_async_vkAllocateMemory(struct vn_instance *vn_instance, VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory)1162{1163struct vn_instance_submit_command submit;1164vn_submit_vkAllocateMemory(vn_instance, 0, device, pAllocateInfo, pAllocator, pMemory, &submit);1165}11661167static inline void vn_call_vkFreeMemory(struct vn_instance *vn_instance, VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator)1168{1169struct vn_instance_submit_command submit;1170vn_submit_vkFreeMemory(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, memory, pAllocator, &submit);1171struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);1172if (dec) {1173vn_decode_vkFreeMemory_reply(dec, device, memory, pAllocator);1174vn_instance_free_command_reply(vn_instance, &submit);1175}1176}11771178static inline void vn_async_vkFreeMemory(struct vn_instance *vn_instance, VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator)1179{1180struct vn_instance_submit_command submit;1181vn_submit_vkFreeMemory(vn_instance, 0, device, memory, pAllocator, &submit);1182}11831184static inline void vn_call_vkUnmapMemory(struct vn_instance *vn_instance, VkDevice device, VkDeviceMemory memory)1185{1186struct vn_instance_submit_command submit;1187vn_submit_vkUnmapMemory(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, memory, &submit);1188struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);1189if (dec) {1190vn_decode_vkUnmapMemory_reply(dec, device, memory);1191vn_instance_free_command_reply(vn_instance, &submit);1192}1193}11941195static inline void vn_async_vkUnmapMemory(struct vn_instance *vn_instance, VkDevice device, VkDeviceMemory memory)1196{1197struct vn_instance_submit_command submit;1198vn_submit_vkUnmapMemory(vn_instance, 0, device, memory, &submit);1199}12001201static inline VkResult vn_call_vkFlushMappedMemoryRanges(struct vn_instance *vn_instance, VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges)1202{1203struct vn_instance_submit_command submit;1204vn_submit_vkFlushMappedMemoryRanges(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, memoryRangeCount, pMemoryRanges, &submit);1205struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);1206if (dec) {1207const VkResult ret = vn_decode_vkFlushMappedMemoryRanges_reply(dec, device, memoryRangeCount, pMemoryRanges);1208vn_instance_free_command_reply(vn_instance, &submit);1209return ret;1210} else {1211return VK_ERROR_OUT_OF_HOST_MEMORY;1212}1213}12141215static inline void vn_async_vkFlushMappedMemoryRanges(struct vn_instance *vn_instance, VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges)1216{1217struct vn_instance_submit_command submit;1218vn_submit_vkFlushMappedMemoryRanges(vn_instance, 0, device, memoryRangeCount, pMemoryRanges, &submit);1219}12201221static inline VkResult vn_call_vkInvalidateMappedMemoryRanges(struct vn_instance *vn_instance, VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges)1222{1223struct vn_instance_submit_command submit;1224vn_submit_vkInvalidateMappedMemoryRanges(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, memoryRangeCount, pMemoryRanges, &submit);1225struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);1226if (dec) {1227const VkResult ret = vn_decode_vkInvalidateMappedMemoryRanges_reply(dec, device, memoryRangeCount, pMemoryRanges);1228vn_instance_free_command_reply(vn_instance, &submit);1229return ret;1230} else {1231return VK_ERROR_OUT_OF_HOST_MEMORY;1232}1233}12341235static inline void vn_async_vkInvalidateMappedMemoryRanges(struct vn_instance *vn_instance, VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges)1236{1237struct vn_instance_submit_command submit;1238vn_submit_vkInvalidateMappedMemoryRanges(vn_instance, 0, device, memoryRangeCount, pMemoryRanges, &submit);1239}12401241static inline void vn_call_vkGetDeviceMemoryCommitment(struct vn_instance *vn_instance, VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes)1242{1243struct vn_instance_submit_command submit;1244vn_submit_vkGetDeviceMemoryCommitment(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, memory, pCommittedMemoryInBytes, &submit);1245struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);1246if (dec) {1247vn_decode_vkGetDeviceMemoryCommitment_reply(dec, device, memory, pCommittedMemoryInBytes);1248vn_instance_free_command_reply(vn_instance, &submit);1249}1250}12511252static inline void vn_async_vkGetDeviceMemoryCommitment(struct vn_instance *vn_instance, VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes)1253{1254struct vn_instance_submit_command submit;1255vn_submit_vkGetDeviceMemoryCommitment(vn_instance, 0, device, memory, pCommittedMemoryInBytes, &submit);1256}12571258static inline uint64_t vn_call_vkGetDeviceMemoryOpaqueCaptureAddress(struct vn_instance *vn_instance, VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)1259{1260struct vn_instance_submit_command submit;1261vn_submit_vkGetDeviceMemoryOpaqueCaptureAddress(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pInfo, &submit);1262struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);1263if (dec) {1264const uint64_t ret = vn_decode_vkGetDeviceMemoryOpaqueCaptureAddress_reply(dec, device, pInfo);1265vn_instance_free_command_reply(vn_instance, &submit);1266return ret;1267} else {1268return VK_ERROR_OUT_OF_HOST_MEMORY;1269}1270}12711272static inline void vn_async_vkGetDeviceMemoryOpaqueCaptureAddress(struct vn_instance *vn_instance, VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)1273{1274struct vn_instance_submit_command submit;1275vn_submit_vkGetDeviceMemoryOpaqueCaptureAddress(vn_instance, 0, device, pInfo, &submit);1276}12771278#endif /* VN_PROTOCOL_DRIVER_DEVICE_MEMORY_H */127912801281