Path: blob/21.2-virgl/src/virtio/venus-protocol/vn_protocol_driver_pipeline_layout.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_LAYOUT_H8#define VN_PROTOCOL_DRIVER_PIPELINE_LAYOUT_H910#include "vn_device.h"11#include "vn_protocol_driver_structs.h"1213/* struct VkPushConstantRange */1415static inline size_t16vn_sizeof_VkPushConstantRange(const VkPushConstantRange *val)17{18size_t size = 0;19size += vn_sizeof_VkFlags(&val->stageFlags);20size += vn_sizeof_uint32_t(&val->offset);21size += vn_sizeof_uint32_t(&val->size);22return size;23}2425static inline void26vn_encode_VkPushConstantRange(struct vn_cs_encoder *enc, const VkPushConstantRange *val)27{28vn_encode_VkFlags(enc, &val->stageFlags);29vn_encode_uint32_t(enc, &val->offset);30vn_encode_uint32_t(enc, &val->size);31}3233/* struct VkPipelineLayoutCreateInfo chain */3435static inline size_t36vn_sizeof_VkPipelineLayoutCreateInfo_pnext(const void *val)37{38/* no known/supported struct */39return vn_sizeof_simple_pointer(NULL);40}4142static inline size_t43vn_sizeof_VkPipelineLayoutCreateInfo_self(const VkPipelineLayoutCreateInfo *val)44{45size_t size = 0;46/* skip val->{sType,pNext} */47size += vn_sizeof_VkFlags(&val->flags);48size += vn_sizeof_uint32_t(&val->setLayoutCount);49if (val->pSetLayouts) {50size += vn_sizeof_array_size(val->setLayoutCount);51for (uint32_t i = 0; i < val->setLayoutCount; i++)52size += vn_sizeof_VkDescriptorSetLayout(&val->pSetLayouts[i]);53} else {54size += vn_sizeof_array_size(0);55}56size += vn_sizeof_uint32_t(&val->pushConstantRangeCount);57if (val->pPushConstantRanges) {58size += vn_sizeof_array_size(val->pushConstantRangeCount);59for (uint32_t i = 0; i < val->pushConstantRangeCount; i++)60size += vn_sizeof_VkPushConstantRange(&val->pPushConstantRanges[i]);61} else {62size += vn_sizeof_array_size(0);63}64return size;65}6667static inline size_t68vn_sizeof_VkPipelineLayoutCreateInfo(const VkPipelineLayoutCreateInfo *val)69{70size_t size = 0;7172size += vn_sizeof_VkStructureType(&val->sType);73size += vn_sizeof_VkPipelineLayoutCreateInfo_pnext(val->pNext);74size += vn_sizeof_VkPipelineLayoutCreateInfo_self(val);7576return size;77}7879static inline void80vn_encode_VkPipelineLayoutCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)81{82/* no known/supported struct */83vn_encode_simple_pointer(enc, NULL);84}8586static inline void87vn_encode_VkPipelineLayoutCreateInfo_self(struct vn_cs_encoder *enc, const VkPipelineLayoutCreateInfo *val)88{89/* skip val->{sType,pNext} */90vn_encode_VkFlags(enc, &val->flags);91vn_encode_uint32_t(enc, &val->setLayoutCount);92if (val->pSetLayouts) {93vn_encode_array_size(enc, val->setLayoutCount);94for (uint32_t i = 0; i < val->setLayoutCount; i++)95vn_encode_VkDescriptorSetLayout(enc, &val->pSetLayouts[i]);96} else {97vn_encode_array_size(enc, 0);98}99vn_encode_uint32_t(enc, &val->pushConstantRangeCount);100if (val->pPushConstantRanges) {101vn_encode_array_size(enc, val->pushConstantRangeCount);102for (uint32_t i = 0; i < val->pushConstantRangeCount; i++)103vn_encode_VkPushConstantRange(enc, &val->pPushConstantRanges[i]);104} else {105vn_encode_array_size(enc, 0);106}107}108109static inline void110vn_encode_VkPipelineLayoutCreateInfo(struct vn_cs_encoder *enc, const VkPipelineLayoutCreateInfo *val)111{112assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO);113vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO });114vn_encode_VkPipelineLayoutCreateInfo_pnext(enc, val->pNext);115vn_encode_VkPipelineLayoutCreateInfo_self(enc, val);116}117118static inline size_t vn_sizeof_vkCreatePipelineLayout(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout)119{120const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreatePipelineLayout_EXT;121const VkFlags cmd_flags = 0;122size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);123124cmd_size += vn_sizeof_VkDevice(&device);125cmd_size += vn_sizeof_simple_pointer(pCreateInfo);126if (pCreateInfo)127cmd_size += vn_sizeof_VkPipelineLayoutCreateInfo(pCreateInfo);128cmd_size += vn_sizeof_simple_pointer(pAllocator);129if (pAllocator)130assert(false);131cmd_size += vn_sizeof_simple_pointer(pPipelineLayout);132if (pPipelineLayout)133cmd_size += vn_sizeof_VkPipelineLayout(pPipelineLayout);134135return cmd_size;136}137138static inline void vn_encode_vkCreatePipelineLayout(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout)139{140const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreatePipelineLayout_EXT;141142vn_encode_VkCommandTypeEXT(enc, &cmd_type);143vn_encode_VkFlags(enc, &cmd_flags);144145vn_encode_VkDevice(enc, &device);146if (vn_encode_simple_pointer(enc, pCreateInfo))147vn_encode_VkPipelineLayoutCreateInfo(enc, pCreateInfo);148if (vn_encode_simple_pointer(enc, pAllocator))149assert(false);150if (vn_encode_simple_pointer(enc, pPipelineLayout))151vn_encode_VkPipelineLayout(enc, pPipelineLayout);152}153154static inline size_t vn_sizeof_vkCreatePipelineLayout_reply(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout)155{156const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreatePipelineLayout_EXT;157size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);158159VkResult ret;160cmd_size += vn_sizeof_VkResult(&ret);161/* skip device */162/* skip pCreateInfo */163/* skip pAllocator */164cmd_size += vn_sizeof_simple_pointer(pPipelineLayout);165if (pPipelineLayout)166cmd_size += vn_sizeof_VkPipelineLayout(pPipelineLayout);167168return cmd_size;169}170171static inline VkResult vn_decode_vkCreatePipelineLayout_reply(struct vn_cs_decoder *dec, VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout)172{173VkCommandTypeEXT command_type;174vn_decode_VkCommandTypeEXT(dec, &command_type);175assert(command_type == VK_COMMAND_TYPE_vkCreatePipelineLayout_EXT);176177VkResult ret;178vn_decode_VkResult(dec, &ret);179/* skip device */180/* skip pCreateInfo */181/* skip pAllocator */182if (vn_decode_simple_pointer(dec)) {183vn_decode_VkPipelineLayout(dec, pPipelineLayout);184} else {185pPipelineLayout = NULL;186}187188return ret;189}190191static inline size_t vn_sizeof_vkDestroyPipelineLayout(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator)192{193const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyPipelineLayout_EXT;194const VkFlags cmd_flags = 0;195size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);196197cmd_size += vn_sizeof_VkDevice(&device);198cmd_size += vn_sizeof_VkPipelineLayout(&pipelineLayout);199cmd_size += vn_sizeof_simple_pointer(pAllocator);200if (pAllocator)201assert(false);202203return cmd_size;204}205206static inline void vn_encode_vkDestroyPipelineLayout(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator)207{208const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyPipelineLayout_EXT;209210vn_encode_VkCommandTypeEXT(enc, &cmd_type);211vn_encode_VkFlags(enc, &cmd_flags);212213vn_encode_VkDevice(enc, &device);214vn_encode_VkPipelineLayout(enc, &pipelineLayout);215if (vn_encode_simple_pointer(enc, pAllocator))216assert(false);217}218219static inline size_t vn_sizeof_vkDestroyPipelineLayout_reply(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator)220{221const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyPipelineLayout_EXT;222size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);223224/* skip device */225/* skip pipelineLayout */226/* skip pAllocator */227228return cmd_size;229}230231static inline void vn_decode_vkDestroyPipelineLayout_reply(struct vn_cs_decoder *dec, VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator)232{233VkCommandTypeEXT command_type;234vn_decode_VkCommandTypeEXT(dec, &command_type);235assert(command_type == VK_COMMAND_TYPE_vkDestroyPipelineLayout_EXT);236237/* skip device */238/* skip pipelineLayout */239/* skip pAllocator */240}241242static inline void vn_submit_vkCreatePipelineLayout(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout, struct vn_instance_submit_command *submit)243{244uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];245void *cmd_data = local_cmd_data;246size_t cmd_size = vn_sizeof_vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout);247if (cmd_size > sizeof(local_cmd_data)) {248cmd_data = malloc(cmd_size);249if (!cmd_data)250cmd_size = 0;251}252const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkCreatePipelineLayout_reply(device, pCreateInfo, pAllocator, pPipelineLayout) : 0;253254struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);255if (cmd_size) {256vn_encode_vkCreatePipelineLayout(enc, cmd_flags, device, pCreateInfo, pAllocator, pPipelineLayout);257vn_instance_submit_command(vn_instance, submit);258if (cmd_data != local_cmd_data)259free(cmd_data);260}261}262263static inline void vn_submit_vkDestroyPipelineLayout(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator, struct vn_instance_submit_command *submit)264{265uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];266void *cmd_data = local_cmd_data;267size_t cmd_size = vn_sizeof_vkDestroyPipelineLayout(device, pipelineLayout, pAllocator);268if (cmd_size > sizeof(local_cmd_data)) {269cmd_data = malloc(cmd_size);270if (!cmd_data)271cmd_size = 0;272}273const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkDestroyPipelineLayout_reply(device, pipelineLayout, pAllocator) : 0;274275struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);276if (cmd_size) {277vn_encode_vkDestroyPipelineLayout(enc, cmd_flags, device, pipelineLayout, pAllocator);278vn_instance_submit_command(vn_instance, submit);279if (cmd_data != local_cmd_data)280free(cmd_data);281}282}283284static inline VkResult vn_call_vkCreatePipelineLayout(struct vn_instance *vn_instance, VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout)285{286struct vn_instance_submit_command submit;287vn_submit_vkCreatePipelineLayout(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pCreateInfo, pAllocator, pPipelineLayout, &submit);288struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);289if (dec) {290const VkResult ret = vn_decode_vkCreatePipelineLayout_reply(dec, device, pCreateInfo, pAllocator, pPipelineLayout);291vn_instance_free_command_reply(vn_instance, &submit);292return ret;293} else {294return VK_ERROR_OUT_OF_HOST_MEMORY;295}296}297298static inline void vn_async_vkCreatePipelineLayout(struct vn_instance *vn_instance, VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout)299{300struct vn_instance_submit_command submit;301vn_submit_vkCreatePipelineLayout(vn_instance, 0, device, pCreateInfo, pAllocator, pPipelineLayout, &submit);302}303304static inline void vn_call_vkDestroyPipelineLayout(struct vn_instance *vn_instance, VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator)305{306struct vn_instance_submit_command submit;307vn_submit_vkDestroyPipelineLayout(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pipelineLayout, pAllocator, &submit);308struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);309if (dec) {310vn_decode_vkDestroyPipelineLayout_reply(dec, device, pipelineLayout, pAllocator);311vn_instance_free_command_reply(vn_instance, &submit);312}313}314315static inline void vn_async_vkDestroyPipelineLayout(struct vn_instance *vn_instance, VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator)316{317struct vn_instance_submit_command submit;318vn_submit_vkDestroyPipelineLayout(vn_instance, 0, device, pipelineLayout, pAllocator, &submit);319}320321#endif /* VN_PROTOCOL_DRIVER_PIPELINE_LAYOUT_H */322323324