Path: blob/21.2-virgl/src/virtio/venus-protocol/vn_protocol_driver_buffer_view.h
4560 views
/* This file is generated by venus-protocol. See vn_protocol_driver.h. */12/*3* Copyright 2020 Google LLC4* SPDX-License-Identifier: MIT5*/67#ifndef VN_PROTOCOL_DRIVER_BUFFER_VIEW_H8#define VN_PROTOCOL_DRIVER_BUFFER_VIEW_H910#include "vn_device.h"11#include "vn_protocol_driver_structs.h"1213/* struct VkBufferViewCreateInfo chain */1415static inline size_t16vn_sizeof_VkBufferViewCreateInfo_pnext(const void *val)17{18/* no known/supported struct */19return vn_sizeof_simple_pointer(NULL);20}2122static inline size_t23vn_sizeof_VkBufferViewCreateInfo_self(const VkBufferViewCreateInfo *val)24{25size_t size = 0;26/* skip val->{sType,pNext} */27size += vn_sizeof_VkFlags(&val->flags);28size += vn_sizeof_VkBuffer(&val->buffer);29size += vn_sizeof_VkFormat(&val->format);30size += vn_sizeof_VkDeviceSize(&val->offset);31size += vn_sizeof_VkDeviceSize(&val->range);32return size;33}3435static inline size_t36vn_sizeof_VkBufferViewCreateInfo(const VkBufferViewCreateInfo *val)37{38size_t size = 0;3940size += vn_sizeof_VkStructureType(&val->sType);41size += vn_sizeof_VkBufferViewCreateInfo_pnext(val->pNext);42size += vn_sizeof_VkBufferViewCreateInfo_self(val);4344return size;45}4647static inline void48vn_encode_VkBufferViewCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)49{50/* no known/supported struct */51vn_encode_simple_pointer(enc, NULL);52}5354static inline void55vn_encode_VkBufferViewCreateInfo_self(struct vn_cs_encoder *enc, const VkBufferViewCreateInfo *val)56{57/* skip val->{sType,pNext} */58vn_encode_VkFlags(enc, &val->flags);59vn_encode_VkBuffer(enc, &val->buffer);60vn_encode_VkFormat(enc, &val->format);61vn_encode_VkDeviceSize(enc, &val->offset);62vn_encode_VkDeviceSize(enc, &val->range);63}6465static inline void66vn_encode_VkBufferViewCreateInfo(struct vn_cs_encoder *enc, const VkBufferViewCreateInfo *val)67{68assert(val->sType == VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO);69vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO });70vn_encode_VkBufferViewCreateInfo_pnext(enc, val->pNext);71vn_encode_VkBufferViewCreateInfo_self(enc, val);72}7374static inline size_t vn_sizeof_vkCreateBufferView(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView)75{76const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateBufferView_EXT;77const VkFlags cmd_flags = 0;78size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);7980cmd_size += vn_sizeof_VkDevice(&device);81cmd_size += vn_sizeof_simple_pointer(pCreateInfo);82if (pCreateInfo)83cmd_size += vn_sizeof_VkBufferViewCreateInfo(pCreateInfo);84cmd_size += vn_sizeof_simple_pointer(pAllocator);85if (pAllocator)86assert(false);87cmd_size += vn_sizeof_simple_pointer(pView);88if (pView)89cmd_size += vn_sizeof_VkBufferView(pView);9091return cmd_size;92}9394static inline void vn_encode_vkCreateBufferView(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView)95{96const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateBufferView_EXT;9798vn_encode_VkCommandTypeEXT(enc, &cmd_type);99vn_encode_VkFlags(enc, &cmd_flags);100101vn_encode_VkDevice(enc, &device);102if (vn_encode_simple_pointer(enc, pCreateInfo))103vn_encode_VkBufferViewCreateInfo(enc, pCreateInfo);104if (vn_encode_simple_pointer(enc, pAllocator))105assert(false);106if (vn_encode_simple_pointer(enc, pView))107vn_encode_VkBufferView(enc, pView);108}109110static inline size_t vn_sizeof_vkCreateBufferView_reply(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView)111{112const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateBufferView_EXT;113size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);114115VkResult ret;116cmd_size += vn_sizeof_VkResult(&ret);117/* skip device */118/* skip pCreateInfo */119/* skip pAllocator */120cmd_size += vn_sizeof_simple_pointer(pView);121if (pView)122cmd_size += vn_sizeof_VkBufferView(pView);123124return cmd_size;125}126127static inline VkResult vn_decode_vkCreateBufferView_reply(struct vn_cs_decoder *dec, VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView)128{129VkCommandTypeEXT command_type;130vn_decode_VkCommandTypeEXT(dec, &command_type);131assert(command_type == VK_COMMAND_TYPE_vkCreateBufferView_EXT);132133VkResult ret;134vn_decode_VkResult(dec, &ret);135/* skip device */136/* skip pCreateInfo */137/* skip pAllocator */138if (vn_decode_simple_pointer(dec)) {139vn_decode_VkBufferView(dec, pView);140} else {141pView = NULL;142}143144return ret;145}146147static inline size_t vn_sizeof_vkDestroyBufferView(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator)148{149const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyBufferView_EXT;150const VkFlags cmd_flags = 0;151size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);152153cmd_size += vn_sizeof_VkDevice(&device);154cmd_size += vn_sizeof_VkBufferView(&bufferView);155cmd_size += vn_sizeof_simple_pointer(pAllocator);156if (pAllocator)157assert(false);158159return cmd_size;160}161162static inline void vn_encode_vkDestroyBufferView(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator)163{164const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyBufferView_EXT;165166vn_encode_VkCommandTypeEXT(enc, &cmd_type);167vn_encode_VkFlags(enc, &cmd_flags);168169vn_encode_VkDevice(enc, &device);170vn_encode_VkBufferView(enc, &bufferView);171if (vn_encode_simple_pointer(enc, pAllocator))172assert(false);173}174175static inline size_t vn_sizeof_vkDestroyBufferView_reply(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator)176{177const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyBufferView_EXT;178size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);179180/* skip device */181/* skip bufferView */182/* skip pAllocator */183184return cmd_size;185}186187static inline void vn_decode_vkDestroyBufferView_reply(struct vn_cs_decoder *dec, VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator)188{189VkCommandTypeEXT command_type;190vn_decode_VkCommandTypeEXT(dec, &command_type);191assert(command_type == VK_COMMAND_TYPE_vkDestroyBufferView_EXT);192193/* skip device */194/* skip bufferView */195/* skip pAllocator */196}197198static inline void vn_submit_vkCreateBufferView(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView, struct vn_instance_submit_command *submit)199{200uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];201void *cmd_data = local_cmd_data;202size_t cmd_size = vn_sizeof_vkCreateBufferView(device, pCreateInfo, pAllocator, pView);203if (cmd_size > sizeof(local_cmd_data)) {204cmd_data = malloc(cmd_size);205if (!cmd_data)206cmd_size = 0;207}208const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkCreateBufferView_reply(device, pCreateInfo, pAllocator, pView) : 0;209210struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);211if (cmd_size) {212vn_encode_vkCreateBufferView(enc, cmd_flags, device, pCreateInfo, pAllocator, pView);213vn_instance_submit_command(vn_instance, submit);214if (cmd_data != local_cmd_data)215free(cmd_data);216}217}218219static inline void vn_submit_vkDestroyBufferView(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator, struct vn_instance_submit_command *submit)220{221uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];222void *cmd_data = local_cmd_data;223size_t cmd_size = vn_sizeof_vkDestroyBufferView(device, bufferView, pAllocator);224if (cmd_size > sizeof(local_cmd_data)) {225cmd_data = malloc(cmd_size);226if (!cmd_data)227cmd_size = 0;228}229const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkDestroyBufferView_reply(device, bufferView, pAllocator) : 0;230231struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);232if (cmd_size) {233vn_encode_vkDestroyBufferView(enc, cmd_flags, device, bufferView, pAllocator);234vn_instance_submit_command(vn_instance, submit);235if (cmd_data != local_cmd_data)236free(cmd_data);237}238}239240static inline VkResult vn_call_vkCreateBufferView(struct vn_instance *vn_instance, VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView)241{242struct vn_instance_submit_command submit;243vn_submit_vkCreateBufferView(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pCreateInfo, pAllocator, pView, &submit);244struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);245if (dec) {246const VkResult ret = vn_decode_vkCreateBufferView_reply(dec, device, pCreateInfo, pAllocator, pView);247vn_instance_free_command_reply(vn_instance, &submit);248return ret;249} else {250return VK_ERROR_OUT_OF_HOST_MEMORY;251}252}253254static inline void vn_async_vkCreateBufferView(struct vn_instance *vn_instance, VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView)255{256struct vn_instance_submit_command submit;257vn_submit_vkCreateBufferView(vn_instance, 0, device, pCreateInfo, pAllocator, pView, &submit);258}259260static inline void vn_call_vkDestroyBufferView(struct vn_instance *vn_instance, VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator)261{262struct vn_instance_submit_command submit;263vn_submit_vkDestroyBufferView(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, bufferView, pAllocator, &submit);264struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);265if (dec) {266vn_decode_vkDestroyBufferView_reply(dec, device, bufferView, pAllocator);267vn_instance_free_command_reply(vn_instance, &submit);268}269}270271static inline void vn_async_vkDestroyBufferView(struct vn_instance *vn_instance, VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator)272{273struct vn_instance_submit_command submit;274vn_submit_vkDestroyBufferView(vn_instance, 0, device, bufferView, pAllocator, &submit);275}276277#endif /* VN_PROTOCOL_DRIVER_BUFFER_VIEW_H */278279280