Path: blob/21.2-virgl/src/virtio/venus-protocol/vn_protocol_driver_pipeline_cache.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_PIPELINE_CACHE_H8#define VN_PROTOCOL_DRIVER_PIPELINE_CACHE_H910#include "vn_device.h"11#include "vn_protocol_driver_structs.h"1213/* struct VkPipelineCacheCreateInfo chain */1415static inline size_t16vn_sizeof_VkPipelineCacheCreateInfo_pnext(const void *val)17{18/* no known/supported struct */19return vn_sizeof_simple_pointer(NULL);20}2122static inline size_t23vn_sizeof_VkPipelineCacheCreateInfo_self(const VkPipelineCacheCreateInfo *val)24{25size_t size = 0;26/* skip val->{sType,pNext} */27size += vn_sizeof_VkFlags(&val->flags);28size += vn_sizeof_size_t(&val->initialDataSize);29if (val->pInitialData) {30size += vn_sizeof_array_size(val->initialDataSize);31size += vn_sizeof_blob_array(val->pInitialData, val->initialDataSize);32} else {33size += vn_sizeof_array_size(0);34}35return size;36}3738static inline size_t39vn_sizeof_VkPipelineCacheCreateInfo(const VkPipelineCacheCreateInfo *val)40{41size_t size = 0;4243size += vn_sizeof_VkStructureType(&val->sType);44size += vn_sizeof_VkPipelineCacheCreateInfo_pnext(val->pNext);45size += vn_sizeof_VkPipelineCacheCreateInfo_self(val);4647return size;48}4950static inline void51vn_encode_VkPipelineCacheCreateInfo_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_VkPipelineCacheCreateInfo_self(struct vn_cs_encoder *enc, const VkPipelineCacheCreateInfo *val)59{60/* skip val->{sType,pNext} */61vn_encode_VkFlags(enc, &val->flags);62vn_encode_size_t(enc, &val->initialDataSize);63if (val->pInitialData) {64vn_encode_array_size(enc, val->initialDataSize);65vn_encode_blob_array(enc, val->pInitialData, val->initialDataSize);66} else {67vn_encode_array_size(enc, 0);68}69}7071static inline void72vn_encode_VkPipelineCacheCreateInfo(struct vn_cs_encoder *enc, const VkPipelineCacheCreateInfo *val)73{74assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO);75vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO });76vn_encode_VkPipelineCacheCreateInfo_pnext(enc, val->pNext);77vn_encode_VkPipelineCacheCreateInfo_self(enc, val);78}7980static inline size_t vn_sizeof_vkCreatePipelineCache(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache)81{82const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreatePipelineCache_EXT;83const VkFlags cmd_flags = 0;84size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);8586cmd_size += vn_sizeof_VkDevice(&device);87cmd_size += vn_sizeof_simple_pointer(pCreateInfo);88if (pCreateInfo)89cmd_size += vn_sizeof_VkPipelineCacheCreateInfo(pCreateInfo);90cmd_size += vn_sizeof_simple_pointer(pAllocator);91if (pAllocator)92assert(false);93cmd_size += vn_sizeof_simple_pointer(pPipelineCache);94if (pPipelineCache)95cmd_size += vn_sizeof_VkPipelineCache(pPipelineCache);9697return cmd_size;98}99100static inline void vn_encode_vkCreatePipelineCache(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache)101{102const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreatePipelineCache_EXT;103104vn_encode_VkCommandTypeEXT(enc, &cmd_type);105vn_encode_VkFlags(enc, &cmd_flags);106107vn_encode_VkDevice(enc, &device);108if (vn_encode_simple_pointer(enc, pCreateInfo))109vn_encode_VkPipelineCacheCreateInfo(enc, pCreateInfo);110if (vn_encode_simple_pointer(enc, pAllocator))111assert(false);112if (vn_encode_simple_pointer(enc, pPipelineCache))113vn_encode_VkPipelineCache(enc, pPipelineCache);114}115116static inline size_t vn_sizeof_vkCreatePipelineCache_reply(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache)117{118const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreatePipelineCache_EXT;119size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);120121VkResult ret;122cmd_size += vn_sizeof_VkResult(&ret);123/* skip device */124/* skip pCreateInfo */125/* skip pAllocator */126cmd_size += vn_sizeof_simple_pointer(pPipelineCache);127if (pPipelineCache)128cmd_size += vn_sizeof_VkPipelineCache(pPipelineCache);129130return cmd_size;131}132133static inline VkResult vn_decode_vkCreatePipelineCache_reply(struct vn_cs_decoder *dec, VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache)134{135VkCommandTypeEXT command_type;136vn_decode_VkCommandTypeEXT(dec, &command_type);137assert(command_type == VK_COMMAND_TYPE_vkCreatePipelineCache_EXT);138139VkResult ret;140vn_decode_VkResult(dec, &ret);141/* skip device */142/* skip pCreateInfo */143/* skip pAllocator */144if (vn_decode_simple_pointer(dec)) {145vn_decode_VkPipelineCache(dec, pPipelineCache);146} else {147pPipelineCache = NULL;148}149150return ret;151}152153static inline size_t vn_sizeof_vkDestroyPipelineCache(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator)154{155const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyPipelineCache_EXT;156const VkFlags cmd_flags = 0;157size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);158159cmd_size += vn_sizeof_VkDevice(&device);160cmd_size += vn_sizeof_VkPipelineCache(&pipelineCache);161cmd_size += vn_sizeof_simple_pointer(pAllocator);162if (pAllocator)163assert(false);164165return cmd_size;166}167168static inline void vn_encode_vkDestroyPipelineCache(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator)169{170const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyPipelineCache_EXT;171172vn_encode_VkCommandTypeEXT(enc, &cmd_type);173vn_encode_VkFlags(enc, &cmd_flags);174175vn_encode_VkDevice(enc, &device);176vn_encode_VkPipelineCache(enc, &pipelineCache);177if (vn_encode_simple_pointer(enc, pAllocator))178assert(false);179}180181static inline size_t vn_sizeof_vkDestroyPipelineCache_reply(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator)182{183const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyPipelineCache_EXT;184size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);185186/* skip device */187/* skip pipelineCache */188/* skip pAllocator */189190return cmd_size;191}192193static inline void vn_decode_vkDestroyPipelineCache_reply(struct vn_cs_decoder *dec, VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator)194{195VkCommandTypeEXT command_type;196vn_decode_VkCommandTypeEXT(dec, &command_type);197assert(command_type == VK_COMMAND_TYPE_vkDestroyPipelineCache_EXT);198199/* skip device */200/* skip pipelineCache */201/* skip pAllocator */202}203204static inline size_t vn_sizeof_vkGetPipelineCacheData(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData)205{206const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetPipelineCacheData_EXT;207const VkFlags cmd_flags = 0;208size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);209210cmd_size += vn_sizeof_VkDevice(&device);211cmd_size += vn_sizeof_VkPipelineCache(&pipelineCache);212cmd_size += vn_sizeof_simple_pointer(pDataSize);213if (pDataSize)214cmd_size += vn_sizeof_size_t(pDataSize);215cmd_size += vn_sizeof_simple_pointer(pData); /* out */216217return cmd_size;218}219220static inline void vn_encode_vkGetPipelineCacheData(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData)221{222const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetPipelineCacheData_EXT;223224vn_encode_VkCommandTypeEXT(enc, &cmd_type);225vn_encode_VkFlags(enc, &cmd_flags);226227vn_encode_VkDevice(enc, &device);228vn_encode_VkPipelineCache(enc, &pipelineCache);229if (vn_encode_simple_pointer(enc, pDataSize))230vn_encode_size_t(enc, pDataSize);231vn_encode_array_size(enc, pData ? *pDataSize : 0); /* out */232}233234static inline size_t vn_sizeof_vkGetPipelineCacheData_reply(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData)235{236const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetPipelineCacheData_EXT;237size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);238239VkResult ret;240cmd_size += vn_sizeof_VkResult(&ret);241/* skip device */242/* skip pipelineCache */243cmd_size += vn_sizeof_simple_pointer(pDataSize);244if (pDataSize)245cmd_size += vn_sizeof_size_t(pDataSize);246if (pData) {247cmd_size += vn_sizeof_array_size(*pDataSize);248cmd_size += vn_sizeof_blob_array(pData, *pDataSize);249} else {250cmd_size += vn_sizeof_array_size(0);251}252253return cmd_size;254}255256static inline VkResult vn_decode_vkGetPipelineCacheData_reply(struct vn_cs_decoder *dec, VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData)257{258VkCommandTypeEXT command_type;259vn_decode_VkCommandTypeEXT(dec, &command_type);260assert(command_type == VK_COMMAND_TYPE_vkGetPipelineCacheData_EXT);261262VkResult ret;263vn_decode_VkResult(dec, &ret);264/* skip device */265/* skip pipelineCache */266if (vn_decode_simple_pointer(dec)) {267vn_decode_size_t(dec, pDataSize);268} else {269pDataSize = NULL;270}271if (vn_peek_array_size(dec)) {272const size_t array_size = vn_decode_array_size(dec, *pDataSize);273vn_decode_blob_array(dec, pData, array_size);274} else {275vn_decode_array_size(dec, 0);276pData = NULL;277}278279return ret;280}281282static inline size_t vn_sizeof_vkMergePipelineCaches(VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches)283{284const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkMergePipelineCaches_EXT;285const VkFlags cmd_flags = 0;286size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);287288cmd_size += vn_sizeof_VkDevice(&device);289cmd_size += vn_sizeof_VkPipelineCache(&dstCache);290cmd_size += vn_sizeof_uint32_t(&srcCacheCount);291if (pSrcCaches) {292cmd_size += vn_sizeof_array_size(srcCacheCount);293for (uint32_t i = 0; i < srcCacheCount; i++)294cmd_size += vn_sizeof_VkPipelineCache(&pSrcCaches[i]);295} else {296cmd_size += vn_sizeof_array_size(0);297}298299return cmd_size;300}301302static inline void vn_encode_vkMergePipelineCaches(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches)303{304const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkMergePipelineCaches_EXT;305306vn_encode_VkCommandTypeEXT(enc, &cmd_type);307vn_encode_VkFlags(enc, &cmd_flags);308309vn_encode_VkDevice(enc, &device);310vn_encode_VkPipelineCache(enc, &dstCache);311vn_encode_uint32_t(enc, &srcCacheCount);312if (pSrcCaches) {313vn_encode_array_size(enc, srcCacheCount);314for (uint32_t i = 0; i < srcCacheCount; i++)315vn_encode_VkPipelineCache(enc, &pSrcCaches[i]);316} else {317vn_encode_array_size(enc, 0);318}319}320321static inline size_t vn_sizeof_vkMergePipelineCaches_reply(VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches)322{323const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkMergePipelineCaches_EXT;324size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);325326VkResult ret;327cmd_size += vn_sizeof_VkResult(&ret);328/* skip device */329/* skip dstCache */330/* skip srcCacheCount */331/* skip pSrcCaches */332333return cmd_size;334}335336static inline VkResult vn_decode_vkMergePipelineCaches_reply(struct vn_cs_decoder *dec, VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches)337{338VkCommandTypeEXT command_type;339vn_decode_VkCommandTypeEXT(dec, &command_type);340assert(command_type == VK_COMMAND_TYPE_vkMergePipelineCaches_EXT);341342VkResult ret;343vn_decode_VkResult(dec, &ret);344/* skip device */345/* skip dstCache */346/* skip srcCacheCount */347/* skip pSrcCaches */348349return ret;350}351352static inline void vn_submit_vkCreatePipelineCache(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache, struct vn_instance_submit_command *submit)353{354uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];355void *cmd_data = local_cmd_data;356size_t cmd_size = vn_sizeof_vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache);357if (cmd_size > sizeof(local_cmd_data)) {358cmd_data = malloc(cmd_size);359if (!cmd_data)360cmd_size = 0;361}362const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkCreatePipelineCache_reply(device, pCreateInfo, pAllocator, pPipelineCache) : 0;363364struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);365if (cmd_size) {366vn_encode_vkCreatePipelineCache(enc, cmd_flags, device, pCreateInfo, pAllocator, pPipelineCache);367vn_instance_submit_command(vn_instance, submit);368if (cmd_data != local_cmd_data)369free(cmd_data);370}371}372373static inline void vn_submit_vkDestroyPipelineCache(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator, struct vn_instance_submit_command *submit)374{375uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];376void *cmd_data = local_cmd_data;377size_t cmd_size = vn_sizeof_vkDestroyPipelineCache(device, pipelineCache, pAllocator);378if (cmd_size > sizeof(local_cmd_data)) {379cmd_data = malloc(cmd_size);380if (!cmd_data)381cmd_size = 0;382}383const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkDestroyPipelineCache_reply(device, pipelineCache, pAllocator) : 0;384385struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);386if (cmd_size) {387vn_encode_vkDestroyPipelineCache(enc, cmd_flags, device, pipelineCache, pAllocator);388vn_instance_submit_command(vn_instance, submit);389if (cmd_data != local_cmd_data)390free(cmd_data);391}392}393394static inline void vn_submit_vkGetPipelineCacheData(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData, struct vn_instance_submit_command *submit)395{396uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];397void *cmd_data = local_cmd_data;398size_t cmd_size = vn_sizeof_vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData);399if (cmd_size > sizeof(local_cmd_data)) {400cmd_data = malloc(cmd_size);401if (!cmd_data)402cmd_size = 0;403}404const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkGetPipelineCacheData_reply(device, pipelineCache, pDataSize, pData) : 0;405406struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);407if (cmd_size) {408vn_encode_vkGetPipelineCacheData(enc, cmd_flags, device, pipelineCache, pDataSize, pData);409vn_instance_submit_command(vn_instance, submit);410if (cmd_data != local_cmd_data)411free(cmd_data);412}413}414415static inline void vn_submit_vkMergePipelineCaches(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches, struct vn_instance_submit_command *submit)416{417uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];418void *cmd_data = local_cmd_data;419size_t cmd_size = vn_sizeof_vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches);420if (cmd_size > sizeof(local_cmd_data)) {421cmd_data = malloc(cmd_size);422if (!cmd_data)423cmd_size = 0;424}425const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkMergePipelineCaches_reply(device, dstCache, srcCacheCount, pSrcCaches) : 0;426427struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);428if (cmd_size) {429vn_encode_vkMergePipelineCaches(enc, cmd_flags, device, dstCache, srcCacheCount, pSrcCaches);430vn_instance_submit_command(vn_instance, submit);431if (cmd_data != local_cmd_data)432free(cmd_data);433}434}435436static inline VkResult vn_call_vkCreatePipelineCache(struct vn_instance *vn_instance, VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache)437{438struct vn_instance_submit_command submit;439vn_submit_vkCreatePipelineCache(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pCreateInfo, pAllocator, pPipelineCache, &submit);440struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);441if (dec) {442const VkResult ret = vn_decode_vkCreatePipelineCache_reply(dec, device, pCreateInfo, pAllocator, pPipelineCache);443vn_instance_free_command_reply(vn_instance, &submit);444return ret;445} else {446return VK_ERROR_OUT_OF_HOST_MEMORY;447}448}449450static inline void vn_async_vkCreatePipelineCache(struct vn_instance *vn_instance, VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache)451{452struct vn_instance_submit_command submit;453vn_submit_vkCreatePipelineCache(vn_instance, 0, device, pCreateInfo, pAllocator, pPipelineCache, &submit);454}455456static inline void vn_call_vkDestroyPipelineCache(struct vn_instance *vn_instance, VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator)457{458struct vn_instance_submit_command submit;459vn_submit_vkDestroyPipelineCache(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pipelineCache, pAllocator, &submit);460struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);461if (dec) {462vn_decode_vkDestroyPipelineCache_reply(dec, device, pipelineCache, pAllocator);463vn_instance_free_command_reply(vn_instance, &submit);464}465}466467static inline void vn_async_vkDestroyPipelineCache(struct vn_instance *vn_instance, VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator)468{469struct vn_instance_submit_command submit;470vn_submit_vkDestroyPipelineCache(vn_instance, 0, device, pipelineCache, pAllocator, &submit);471}472473static inline VkResult vn_call_vkGetPipelineCacheData(struct vn_instance *vn_instance, VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData)474{475struct vn_instance_submit_command submit;476vn_submit_vkGetPipelineCacheData(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pipelineCache, pDataSize, pData, &submit);477struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);478if (dec) {479const VkResult ret = vn_decode_vkGetPipelineCacheData_reply(dec, device, pipelineCache, pDataSize, pData);480vn_instance_free_command_reply(vn_instance, &submit);481return ret;482} else {483return VK_ERROR_OUT_OF_HOST_MEMORY;484}485}486487static inline void vn_async_vkGetPipelineCacheData(struct vn_instance *vn_instance, VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData)488{489struct vn_instance_submit_command submit;490vn_submit_vkGetPipelineCacheData(vn_instance, 0, device, pipelineCache, pDataSize, pData, &submit);491}492493static inline VkResult vn_call_vkMergePipelineCaches(struct vn_instance *vn_instance, VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches)494{495struct vn_instance_submit_command submit;496vn_submit_vkMergePipelineCaches(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, dstCache, srcCacheCount, pSrcCaches, &submit);497struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);498if (dec) {499const VkResult ret = vn_decode_vkMergePipelineCaches_reply(dec, device, dstCache, srcCacheCount, pSrcCaches);500vn_instance_free_command_reply(vn_instance, &submit);501return ret;502} else {503return VK_ERROR_OUT_OF_HOST_MEMORY;504}505}506507static inline void vn_async_vkMergePipelineCaches(struct vn_instance *vn_instance, VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches)508{509struct vn_instance_submit_command submit;510vn_submit_vkMergePipelineCaches(vn_instance, 0, device, dstCache, srcCacheCount, pSrcCaches, &submit);511}512513#endif /* VN_PROTOCOL_DRIVER_PIPELINE_CACHE_H */514515516