Path: blob/21.2-virgl/src/virtio/venus-protocol/vn_protocol_driver_semaphore.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_SEMAPHORE_H8#define VN_PROTOCOL_DRIVER_SEMAPHORE_H910#include "vn_device.h"11#include "vn_protocol_driver_structs.h"1213/* struct VkExportSemaphoreCreateInfo chain */1415static inline size_t16vn_sizeof_VkExportSemaphoreCreateInfo_pnext(const void *val)17{18/* no known/supported struct */19return vn_sizeof_simple_pointer(NULL);20}2122static inline size_t23vn_sizeof_VkExportSemaphoreCreateInfo_self(const VkExportSemaphoreCreateInfo *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_VkExportSemaphoreCreateInfo(const VkExportSemaphoreCreateInfo *val)33{34size_t size = 0;3536size += vn_sizeof_VkStructureType(&val->sType);37size += vn_sizeof_VkExportSemaphoreCreateInfo_pnext(val->pNext);38size += vn_sizeof_VkExportSemaphoreCreateInfo_self(val);3940return size;41}4243static inline void44vn_encode_VkExportSemaphoreCreateInfo_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_VkExportSemaphoreCreateInfo_self(struct vn_cs_encoder *enc, const VkExportSemaphoreCreateInfo *val)52{53/* skip val->{sType,pNext} */54vn_encode_VkFlags(enc, &val->handleTypes);55}5657static inline void58vn_encode_VkExportSemaphoreCreateInfo(struct vn_cs_encoder *enc, const VkExportSemaphoreCreateInfo *val)59{60assert(val->sType == VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO);61vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO });62vn_encode_VkExportSemaphoreCreateInfo_pnext(enc, val->pNext);63vn_encode_VkExportSemaphoreCreateInfo_self(enc, val);64}6566/* struct VkSemaphoreCreateInfo chain */6768static inline size_t69vn_sizeof_VkSemaphoreCreateInfo_pnext(const void *val)70{71const VkBaseInStructure *pnext = val;72size_t size = 0;7374while (pnext) {75switch ((int32_t)pnext->sType) {76case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO:77size += vn_sizeof_simple_pointer(pnext);78size += vn_sizeof_VkStructureType(&pnext->sType);79size += vn_sizeof_VkSemaphoreCreateInfo_pnext(pnext->pNext);80size += vn_sizeof_VkExportSemaphoreCreateInfo_self((const VkExportSemaphoreCreateInfo *)pnext);81return size;82case VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO:83size += vn_sizeof_simple_pointer(pnext);84size += vn_sizeof_VkStructureType(&pnext->sType);85size += vn_sizeof_VkSemaphoreCreateInfo_pnext(pnext->pNext);86size += vn_sizeof_VkSemaphoreTypeCreateInfo_self((const VkSemaphoreTypeCreateInfo *)pnext);87return size;88default:89/* ignore unknown/unsupported struct */90break;91}92pnext = pnext->pNext;93}9495return vn_sizeof_simple_pointer(NULL);96}9798static inline size_t99vn_sizeof_VkSemaphoreCreateInfo_self(const VkSemaphoreCreateInfo *val)100{101size_t size = 0;102/* skip val->{sType,pNext} */103size += vn_sizeof_VkFlags(&val->flags);104return size;105}106107static inline size_t108vn_sizeof_VkSemaphoreCreateInfo(const VkSemaphoreCreateInfo *val)109{110size_t size = 0;111112size += vn_sizeof_VkStructureType(&val->sType);113size += vn_sizeof_VkSemaphoreCreateInfo_pnext(val->pNext);114size += vn_sizeof_VkSemaphoreCreateInfo_self(val);115116return size;117}118119static inline void120vn_encode_VkSemaphoreCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)121{122const VkBaseInStructure *pnext = val;123124while (pnext) {125switch ((int32_t)pnext->sType) {126case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO:127vn_encode_simple_pointer(enc, pnext);128vn_encode_VkStructureType(enc, &pnext->sType);129vn_encode_VkSemaphoreCreateInfo_pnext(enc, pnext->pNext);130vn_encode_VkExportSemaphoreCreateInfo_self(enc, (const VkExportSemaphoreCreateInfo *)pnext);131return;132case VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO:133vn_encode_simple_pointer(enc, pnext);134vn_encode_VkStructureType(enc, &pnext->sType);135vn_encode_VkSemaphoreCreateInfo_pnext(enc, pnext->pNext);136vn_encode_VkSemaphoreTypeCreateInfo_self(enc, (const VkSemaphoreTypeCreateInfo *)pnext);137return;138default:139/* ignore unknown/unsupported struct */140break;141}142pnext = pnext->pNext;143}144145vn_encode_simple_pointer(enc, NULL);146}147148static inline void149vn_encode_VkSemaphoreCreateInfo_self(struct vn_cs_encoder *enc, const VkSemaphoreCreateInfo *val)150{151/* skip val->{sType,pNext} */152vn_encode_VkFlags(enc, &val->flags);153}154155static inline void156vn_encode_VkSemaphoreCreateInfo(struct vn_cs_encoder *enc, const VkSemaphoreCreateInfo *val)157{158assert(val->sType == VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO);159vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO });160vn_encode_VkSemaphoreCreateInfo_pnext(enc, val->pNext);161vn_encode_VkSemaphoreCreateInfo_self(enc, val);162}163164/* struct VkSemaphoreWaitInfo chain */165166static inline size_t167vn_sizeof_VkSemaphoreWaitInfo_pnext(const void *val)168{169/* no known/supported struct */170return vn_sizeof_simple_pointer(NULL);171}172173static inline size_t174vn_sizeof_VkSemaphoreWaitInfo_self(const VkSemaphoreWaitInfo *val)175{176size_t size = 0;177/* skip val->{sType,pNext} */178size += vn_sizeof_VkFlags(&val->flags);179size += vn_sizeof_uint32_t(&val->semaphoreCount);180if (val->pSemaphores) {181size += vn_sizeof_array_size(val->semaphoreCount);182for (uint32_t i = 0; i < val->semaphoreCount; i++)183size += vn_sizeof_VkSemaphore(&val->pSemaphores[i]);184} else {185size += vn_sizeof_array_size(0);186}187if (val->pValues) {188size += vn_sizeof_array_size(val->semaphoreCount);189size += vn_sizeof_uint64_t_array(val->pValues, val->semaphoreCount);190} else {191size += vn_sizeof_array_size(0);192}193return size;194}195196static inline size_t197vn_sizeof_VkSemaphoreWaitInfo(const VkSemaphoreWaitInfo *val)198{199size_t size = 0;200201size += vn_sizeof_VkStructureType(&val->sType);202size += vn_sizeof_VkSemaphoreWaitInfo_pnext(val->pNext);203size += vn_sizeof_VkSemaphoreWaitInfo_self(val);204205return size;206}207208static inline void209vn_encode_VkSemaphoreWaitInfo_pnext(struct vn_cs_encoder *enc, const void *val)210{211/* no known/supported struct */212vn_encode_simple_pointer(enc, NULL);213}214215static inline void216vn_encode_VkSemaphoreWaitInfo_self(struct vn_cs_encoder *enc, const VkSemaphoreWaitInfo *val)217{218/* skip val->{sType,pNext} */219vn_encode_VkFlags(enc, &val->flags);220vn_encode_uint32_t(enc, &val->semaphoreCount);221if (val->pSemaphores) {222vn_encode_array_size(enc, val->semaphoreCount);223for (uint32_t i = 0; i < val->semaphoreCount; i++)224vn_encode_VkSemaphore(enc, &val->pSemaphores[i]);225} else {226vn_encode_array_size(enc, 0);227}228if (val->pValues) {229vn_encode_array_size(enc, val->semaphoreCount);230vn_encode_uint64_t_array(enc, val->pValues, val->semaphoreCount);231} else {232vn_encode_array_size(enc, 0);233}234}235236static inline void237vn_encode_VkSemaphoreWaitInfo(struct vn_cs_encoder *enc, const VkSemaphoreWaitInfo *val)238{239assert(val->sType == VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO);240vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO });241vn_encode_VkSemaphoreWaitInfo_pnext(enc, val->pNext);242vn_encode_VkSemaphoreWaitInfo_self(enc, val);243}244245/* struct VkSemaphoreSignalInfo chain */246247static inline size_t248vn_sizeof_VkSemaphoreSignalInfo_pnext(const void *val)249{250/* no known/supported struct */251return vn_sizeof_simple_pointer(NULL);252}253254static inline size_t255vn_sizeof_VkSemaphoreSignalInfo_self(const VkSemaphoreSignalInfo *val)256{257size_t size = 0;258/* skip val->{sType,pNext} */259size += vn_sizeof_VkSemaphore(&val->semaphore);260size += vn_sizeof_uint64_t(&val->value);261return size;262}263264static inline size_t265vn_sizeof_VkSemaphoreSignalInfo(const VkSemaphoreSignalInfo *val)266{267size_t size = 0;268269size += vn_sizeof_VkStructureType(&val->sType);270size += vn_sizeof_VkSemaphoreSignalInfo_pnext(val->pNext);271size += vn_sizeof_VkSemaphoreSignalInfo_self(val);272273return size;274}275276static inline void277vn_encode_VkSemaphoreSignalInfo_pnext(struct vn_cs_encoder *enc, const void *val)278{279/* no known/supported struct */280vn_encode_simple_pointer(enc, NULL);281}282283static inline void284vn_encode_VkSemaphoreSignalInfo_self(struct vn_cs_encoder *enc, const VkSemaphoreSignalInfo *val)285{286/* skip val->{sType,pNext} */287vn_encode_VkSemaphore(enc, &val->semaphore);288vn_encode_uint64_t(enc, &val->value);289}290291static inline void292vn_encode_VkSemaphoreSignalInfo(struct vn_cs_encoder *enc, const VkSemaphoreSignalInfo *val)293{294assert(val->sType == VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO);295vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO });296vn_encode_VkSemaphoreSignalInfo_pnext(enc, val->pNext);297vn_encode_VkSemaphoreSignalInfo_self(enc, val);298}299300static inline void301vn_decode_VkSemaphoreSignalInfo_pnext(struct vn_cs_decoder *dec, const void *val)302{303/* no known/supported struct */304if (vn_decode_simple_pointer(dec))305assert(false);306}307308static inline void309vn_decode_VkSemaphoreSignalInfo_self(struct vn_cs_decoder *dec, VkSemaphoreSignalInfo *val)310{311/* skip val->{sType,pNext} */312vn_decode_VkSemaphore(dec, &val->semaphore);313vn_decode_uint64_t(dec, &val->value);314}315316static inline void317vn_decode_VkSemaphoreSignalInfo(struct vn_cs_decoder *dec, VkSemaphoreSignalInfo *val)318{319VkStructureType stype;320vn_decode_VkStructureType(dec, &stype);321assert(stype == VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO);322323assert(val->sType == stype);324vn_decode_VkSemaphoreSignalInfo_pnext(dec, val->pNext);325vn_decode_VkSemaphoreSignalInfo_self(dec, val);326}327328static inline size_t vn_sizeof_vkCreateSemaphore(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore)329{330const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateSemaphore_EXT;331const VkFlags cmd_flags = 0;332size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);333334cmd_size += vn_sizeof_VkDevice(&device);335cmd_size += vn_sizeof_simple_pointer(pCreateInfo);336if (pCreateInfo)337cmd_size += vn_sizeof_VkSemaphoreCreateInfo(pCreateInfo);338cmd_size += vn_sizeof_simple_pointer(pAllocator);339if (pAllocator)340assert(false);341cmd_size += vn_sizeof_simple_pointer(pSemaphore);342if (pSemaphore)343cmd_size += vn_sizeof_VkSemaphore(pSemaphore);344345return cmd_size;346}347348static inline void vn_encode_vkCreateSemaphore(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore)349{350const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateSemaphore_EXT;351352vn_encode_VkCommandTypeEXT(enc, &cmd_type);353vn_encode_VkFlags(enc, &cmd_flags);354355vn_encode_VkDevice(enc, &device);356if (vn_encode_simple_pointer(enc, pCreateInfo))357vn_encode_VkSemaphoreCreateInfo(enc, pCreateInfo);358if (vn_encode_simple_pointer(enc, pAllocator))359assert(false);360if (vn_encode_simple_pointer(enc, pSemaphore))361vn_encode_VkSemaphore(enc, pSemaphore);362}363364static inline size_t vn_sizeof_vkCreateSemaphore_reply(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore)365{366const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateSemaphore_EXT;367size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);368369VkResult ret;370cmd_size += vn_sizeof_VkResult(&ret);371/* skip device */372/* skip pCreateInfo */373/* skip pAllocator */374cmd_size += vn_sizeof_simple_pointer(pSemaphore);375if (pSemaphore)376cmd_size += vn_sizeof_VkSemaphore(pSemaphore);377378return cmd_size;379}380381static inline VkResult vn_decode_vkCreateSemaphore_reply(struct vn_cs_decoder *dec, VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore)382{383VkCommandTypeEXT command_type;384vn_decode_VkCommandTypeEXT(dec, &command_type);385assert(command_type == VK_COMMAND_TYPE_vkCreateSemaphore_EXT);386387VkResult ret;388vn_decode_VkResult(dec, &ret);389/* skip device */390/* skip pCreateInfo */391/* skip pAllocator */392if (vn_decode_simple_pointer(dec)) {393vn_decode_VkSemaphore(dec, pSemaphore);394} else {395pSemaphore = NULL;396}397398return ret;399}400401static inline size_t vn_sizeof_vkDestroySemaphore(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator)402{403const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroySemaphore_EXT;404const VkFlags cmd_flags = 0;405size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);406407cmd_size += vn_sizeof_VkDevice(&device);408cmd_size += vn_sizeof_VkSemaphore(&semaphore);409cmd_size += vn_sizeof_simple_pointer(pAllocator);410if (pAllocator)411assert(false);412413return cmd_size;414}415416static inline void vn_encode_vkDestroySemaphore(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator)417{418const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroySemaphore_EXT;419420vn_encode_VkCommandTypeEXT(enc, &cmd_type);421vn_encode_VkFlags(enc, &cmd_flags);422423vn_encode_VkDevice(enc, &device);424vn_encode_VkSemaphore(enc, &semaphore);425if (vn_encode_simple_pointer(enc, pAllocator))426assert(false);427}428429static inline size_t vn_sizeof_vkDestroySemaphore_reply(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator)430{431const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroySemaphore_EXT;432size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);433434/* skip device */435/* skip semaphore */436/* skip pAllocator */437438return cmd_size;439}440441static inline void vn_decode_vkDestroySemaphore_reply(struct vn_cs_decoder *dec, VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator)442{443VkCommandTypeEXT command_type;444vn_decode_VkCommandTypeEXT(dec, &command_type);445assert(command_type == VK_COMMAND_TYPE_vkDestroySemaphore_EXT);446447/* skip device */448/* skip semaphore */449/* skip pAllocator */450}451452static inline size_t vn_sizeof_vkGetSemaphoreCounterValue(VkDevice device, VkSemaphore semaphore, uint64_t* pValue)453{454const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetSemaphoreCounterValue_EXT;455const VkFlags cmd_flags = 0;456size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);457458cmd_size += vn_sizeof_VkDevice(&device);459cmd_size += vn_sizeof_VkSemaphore(&semaphore);460cmd_size += vn_sizeof_simple_pointer(pValue); /* out */461462return cmd_size;463}464465static inline void vn_encode_vkGetSemaphoreCounterValue(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkSemaphore semaphore, uint64_t* pValue)466{467const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetSemaphoreCounterValue_EXT;468469vn_encode_VkCommandTypeEXT(enc, &cmd_type);470vn_encode_VkFlags(enc, &cmd_flags);471472vn_encode_VkDevice(enc, &device);473vn_encode_VkSemaphore(enc, &semaphore);474vn_encode_simple_pointer(enc, pValue); /* out */475}476477static inline size_t vn_sizeof_vkGetSemaphoreCounterValue_reply(VkDevice device, VkSemaphore semaphore, uint64_t* pValue)478{479const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetSemaphoreCounterValue_EXT;480size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);481482VkResult ret;483cmd_size += vn_sizeof_VkResult(&ret);484/* skip device */485/* skip semaphore */486cmd_size += vn_sizeof_simple_pointer(pValue);487if (pValue)488cmd_size += vn_sizeof_uint64_t(pValue);489490return cmd_size;491}492493static inline VkResult vn_decode_vkGetSemaphoreCounterValue_reply(struct vn_cs_decoder *dec, VkDevice device, VkSemaphore semaphore, uint64_t* pValue)494{495VkCommandTypeEXT command_type;496vn_decode_VkCommandTypeEXT(dec, &command_type);497assert(command_type == VK_COMMAND_TYPE_vkGetSemaphoreCounterValue_EXT);498499VkResult ret;500vn_decode_VkResult(dec, &ret);501/* skip device */502/* skip semaphore */503if (vn_decode_simple_pointer(dec)) {504vn_decode_uint64_t(dec, pValue);505} else {506pValue = NULL;507}508509return ret;510}511512static inline size_t vn_sizeof_vkWaitSemaphores(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout)513{514const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkWaitSemaphores_EXT;515const VkFlags cmd_flags = 0;516size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);517518cmd_size += vn_sizeof_VkDevice(&device);519cmd_size += vn_sizeof_simple_pointer(pWaitInfo);520if (pWaitInfo)521cmd_size += vn_sizeof_VkSemaphoreWaitInfo(pWaitInfo);522cmd_size += vn_sizeof_uint64_t(&timeout);523524return cmd_size;525}526527static inline void vn_encode_vkWaitSemaphores(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout)528{529const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkWaitSemaphores_EXT;530531vn_encode_VkCommandTypeEXT(enc, &cmd_type);532vn_encode_VkFlags(enc, &cmd_flags);533534vn_encode_VkDevice(enc, &device);535if (vn_encode_simple_pointer(enc, pWaitInfo))536vn_encode_VkSemaphoreWaitInfo(enc, pWaitInfo);537vn_encode_uint64_t(enc, &timeout);538}539540static inline size_t vn_sizeof_vkWaitSemaphores_reply(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout)541{542const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkWaitSemaphores_EXT;543size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);544545VkResult ret;546cmd_size += vn_sizeof_VkResult(&ret);547/* skip device */548/* skip pWaitInfo */549/* skip timeout */550551return cmd_size;552}553554static inline VkResult vn_decode_vkWaitSemaphores_reply(struct vn_cs_decoder *dec, VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout)555{556VkCommandTypeEXT command_type;557vn_decode_VkCommandTypeEXT(dec, &command_type);558assert(command_type == VK_COMMAND_TYPE_vkWaitSemaphores_EXT);559560VkResult ret;561vn_decode_VkResult(dec, &ret);562/* skip device */563/* skip pWaitInfo */564/* skip timeout */565566return ret;567}568569static inline size_t vn_sizeof_vkSignalSemaphore(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo)570{571const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkSignalSemaphore_EXT;572const VkFlags cmd_flags = 0;573size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);574575cmd_size += vn_sizeof_VkDevice(&device);576cmd_size += vn_sizeof_simple_pointer(pSignalInfo);577if (pSignalInfo)578cmd_size += vn_sizeof_VkSemaphoreSignalInfo(pSignalInfo);579580return cmd_size;581}582583static inline void vn_encode_vkSignalSemaphore(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo)584{585const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkSignalSemaphore_EXT;586587vn_encode_VkCommandTypeEXT(enc, &cmd_type);588vn_encode_VkFlags(enc, &cmd_flags);589590vn_encode_VkDevice(enc, &device);591if (vn_encode_simple_pointer(enc, pSignalInfo))592vn_encode_VkSemaphoreSignalInfo(enc, pSignalInfo);593}594595static inline size_t vn_sizeof_vkSignalSemaphore_reply(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo)596{597const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkSignalSemaphore_EXT;598size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);599600VkResult ret;601cmd_size += vn_sizeof_VkResult(&ret);602/* skip device */603/* skip pSignalInfo */604605return cmd_size;606}607608static inline VkResult vn_decode_vkSignalSemaphore_reply(struct vn_cs_decoder *dec, VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo)609{610VkCommandTypeEXT command_type;611vn_decode_VkCommandTypeEXT(dec, &command_type);612assert(command_type == VK_COMMAND_TYPE_vkSignalSemaphore_EXT);613614VkResult ret;615vn_decode_VkResult(dec, &ret);616/* skip device */617/* skip pSignalInfo */618619return ret;620}621622static inline void vn_submit_vkCreateSemaphore(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore, struct vn_instance_submit_command *submit)623{624uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];625void *cmd_data = local_cmd_data;626size_t cmd_size = vn_sizeof_vkCreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore);627if (cmd_size > sizeof(local_cmd_data)) {628cmd_data = malloc(cmd_size);629if (!cmd_data)630cmd_size = 0;631}632const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkCreateSemaphore_reply(device, pCreateInfo, pAllocator, pSemaphore) : 0;633634struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);635if (cmd_size) {636vn_encode_vkCreateSemaphore(enc, cmd_flags, device, pCreateInfo, pAllocator, pSemaphore);637vn_instance_submit_command(vn_instance, submit);638if (cmd_data != local_cmd_data)639free(cmd_data);640}641}642643static inline void vn_submit_vkDestroySemaphore(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator, struct vn_instance_submit_command *submit)644{645uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];646void *cmd_data = local_cmd_data;647size_t cmd_size = vn_sizeof_vkDestroySemaphore(device, semaphore, pAllocator);648if (cmd_size > sizeof(local_cmd_data)) {649cmd_data = malloc(cmd_size);650if (!cmd_data)651cmd_size = 0;652}653const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkDestroySemaphore_reply(device, semaphore, pAllocator) : 0;654655struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);656if (cmd_size) {657vn_encode_vkDestroySemaphore(enc, cmd_flags, device, semaphore, pAllocator);658vn_instance_submit_command(vn_instance, submit);659if (cmd_data != local_cmd_data)660free(cmd_data);661}662}663664static inline void vn_submit_vkGetSemaphoreCounterValue(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, VkSemaphore semaphore, uint64_t* pValue, struct vn_instance_submit_command *submit)665{666uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];667void *cmd_data = local_cmd_data;668size_t cmd_size = vn_sizeof_vkGetSemaphoreCounterValue(device, semaphore, pValue);669if (cmd_size > sizeof(local_cmd_data)) {670cmd_data = malloc(cmd_size);671if (!cmd_data)672cmd_size = 0;673}674const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkGetSemaphoreCounterValue_reply(device, semaphore, pValue) : 0;675676struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);677if (cmd_size) {678vn_encode_vkGetSemaphoreCounterValue(enc, cmd_flags, device, semaphore, pValue);679vn_instance_submit_command(vn_instance, submit);680if (cmd_data != local_cmd_data)681free(cmd_data);682}683}684685static inline void vn_submit_vkWaitSemaphores(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout, struct vn_instance_submit_command *submit)686{687uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];688void *cmd_data = local_cmd_data;689size_t cmd_size = vn_sizeof_vkWaitSemaphores(device, pWaitInfo, timeout);690if (cmd_size > sizeof(local_cmd_data)) {691cmd_data = malloc(cmd_size);692if (!cmd_data)693cmd_size = 0;694}695const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkWaitSemaphores_reply(device, pWaitInfo, timeout) : 0;696697struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);698if (cmd_size) {699vn_encode_vkWaitSemaphores(enc, cmd_flags, device, pWaitInfo, timeout);700vn_instance_submit_command(vn_instance, submit);701if (cmd_data != local_cmd_data)702free(cmd_data);703}704}705706static inline void vn_submit_vkSignalSemaphore(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo, struct vn_instance_submit_command *submit)707{708uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];709void *cmd_data = local_cmd_data;710size_t cmd_size = vn_sizeof_vkSignalSemaphore(device, pSignalInfo);711if (cmd_size > sizeof(local_cmd_data)) {712cmd_data = malloc(cmd_size);713if (!cmd_data)714cmd_size = 0;715}716const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkSignalSemaphore_reply(device, pSignalInfo) : 0;717718struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);719if (cmd_size) {720vn_encode_vkSignalSemaphore(enc, cmd_flags, device, pSignalInfo);721vn_instance_submit_command(vn_instance, submit);722if (cmd_data != local_cmd_data)723free(cmd_data);724}725}726727static inline VkResult vn_call_vkCreateSemaphore(struct vn_instance *vn_instance, VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore)728{729struct vn_instance_submit_command submit;730vn_submit_vkCreateSemaphore(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pCreateInfo, pAllocator, pSemaphore, &submit);731struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);732if (dec) {733const VkResult ret = vn_decode_vkCreateSemaphore_reply(dec, device, pCreateInfo, pAllocator, pSemaphore);734vn_instance_free_command_reply(vn_instance, &submit);735return ret;736} else {737return VK_ERROR_OUT_OF_HOST_MEMORY;738}739}740741static inline void vn_async_vkCreateSemaphore(struct vn_instance *vn_instance, VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore)742{743struct vn_instance_submit_command submit;744vn_submit_vkCreateSemaphore(vn_instance, 0, device, pCreateInfo, pAllocator, pSemaphore, &submit);745}746747static inline void vn_call_vkDestroySemaphore(struct vn_instance *vn_instance, VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator)748{749struct vn_instance_submit_command submit;750vn_submit_vkDestroySemaphore(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, semaphore, pAllocator, &submit);751struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);752if (dec) {753vn_decode_vkDestroySemaphore_reply(dec, device, semaphore, pAllocator);754vn_instance_free_command_reply(vn_instance, &submit);755}756}757758static inline void vn_async_vkDestroySemaphore(struct vn_instance *vn_instance, VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator)759{760struct vn_instance_submit_command submit;761vn_submit_vkDestroySemaphore(vn_instance, 0, device, semaphore, pAllocator, &submit);762}763764static inline VkResult vn_call_vkGetSemaphoreCounterValue(struct vn_instance *vn_instance, VkDevice device, VkSemaphore semaphore, uint64_t* pValue)765{766struct vn_instance_submit_command submit;767vn_submit_vkGetSemaphoreCounterValue(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, semaphore, pValue, &submit);768struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);769if (dec) {770const VkResult ret = vn_decode_vkGetSemaphoreCounterValue_reply(dec, device, semaphore, pValue);771vn_instance_free_command_reply(vn_instance, &submit);772return ret;773} else {774return VK_ERROR_OUT_OF_HOST_MEMORY;775}776}777778static inline void vn_async_vkGetSemaphoreCounterValue(struct vn_instance *vn_instance, VkDevice device, VkSemaphore semaphore, uint64_t* pValue)779{780struct vn_instance_submit_command submit;781vn_submit_vkGetSemaphoreCounterValue(vn_instance, 0, device, semaphore, pValue, &submit);782}783784static inline VkResult vn_call_vkWaitSemaphores(struct vn_instance *vn_instance, VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout)785{786struct vn_instance_submit_command submit;787vn_submit_vkWaitSemaphores(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pWaitInfo, timeout, &submit);788struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);789if (dec) {790const VkResult ret = vn_decode_vkWaitSemaphores_reply(dec, device, pWaitInfo, timeout);791vn_instance_free_command_reply(vn_instance, &submit);792return ret;793} else {794return VK_ERROR_OUT_OF_HOST_MEMORY;795}796}797798static inline void vn_async_vkWaitSemaphores(struct vn_instance *vn_instance, VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout)799{800struct vn_instance_submit_command submit;801vn_submit_vkWaitSemaphores(vn_instance, 0, device, pWaitInfo, timeout, &submit);802}803804static inline VkResult vn_call_vkSignalSemaphore(struct vn_instance *vn_instance, VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo)805{806struct vn_instance_submit_command submit;807vn_submit_vkSignalSemaphore(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pSignalInfo, &submit);808struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);809if (dec) {810const VkResult ret = vn_decode_vkSignalSemaphore_reply(dec, device, pSignalInfo);811vn_instance_free_command_reply(vn_instance, &submit);812return ret;813} else {814return VK_ERROR_OUT_OF_HOST_MEMORY;815}816}817818static inline void vn_async_vkSignalSemaphore(struct vn_instance *vn_instance, VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo)819{820struct vn_instance_submit_command submit;821vn_submit_vkSignalSemaphore(vn_instance, 0, device, pSignalInfo, &submit);822}823824#endif /* VN_PROTOCOL_DRIVER_SEMAPHORE_H */825826827