Path: blob/21.2-virgl/src/virtio/venus-protocol/vn_protocol_driver_framebuffer.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_FRAMEBUFFER_H8#define VN_PROTOCOL_DRIVER_FRAMEBUFFER_H910#include "vn_device.h"11#include "vn_protocol_driver_structs.h"1213/* struct VkFramebufferAttachmentImageInfo chain */1415static inline size_t16vn_sizeof_VkFramebufferAttachmentImageInfo_pnext(const void *val)17{18/* no known/supported struct */19return vn_sizeof_simple_pointer(NULL);20}2122static inline size_t23vn_sizeof_VkFramebufferAttachmentImageInfo_self(const VkFramebufferAttachmentImageInfo *val)24{25size_t size = 0;26/* skip val->{sType,pNext} */27size += vn_sizeof_VkFlags(&val->flags);28size += vn_sizeof_VkFlags(&val->usage);29size += vn_sizeof_uint32_t(&val->width);30size += vn_sizeof_uint32_t(&val->height);31size += vn_sizeof_uint32_t(&val->layerCount);32size += vn_sizeof_uint32_t(&val->viewFormatCount);33if (val->pViewFormats) {34size += vn_sizeof_array_size(val->viewFormatCount);35size += vn_sizeof_VkFormat_array(val->pViewFormats, val->viewFormatCount);36} else {37size += vn_sizeof_array_size(0);38}39return size;40}4142static inline size_t43vn_sizeof_VkFramebufferAttachmentImageInfo(const VkFramebufferAttachmentImageInfo *val)44{45size_t size = 0;4647size += vn_sizeof_VkStructureType(&val->sType);48size += vn_sizeof_VkFramebufferAttachmentImageInfo_pnext(val->pNext);49size += vn_sizeof_VkFramebufferAttachmentImageInfo_self(val);5051return size;52}5354static inline void55vn_encode_VkFramebufferAttachmentImageInfo_pnext(struct vn_cs_encoder *enc, const void *val)56{57/* no known/supported struct */58vn_encode_simple_pointer(enc, NULL);59}6061static inline void62vn_encode_VkFramebufferAttachmentImageInfo_self(struct vn_cs_encoder *enc, const VkFramebufferAttachmentImageInfo *val)63{64/* skip val->{sType,pNext} */65vn_encode_VkFlags(enc, &val->flags);66vn_encode_VkFlags(enc, &val->usage);67vn_encode_uint32_t(enc, &val->width);68vn_encode_uint32_t(enc, &val->height);69vn_encode_uint32_t(enc, &val->layerCount);70vn_encode_uint32_t(enc, &val->viewFormatCount);71if (val->pViewFormats) {72vn_encode_array_size(enc, val->viewFormatCount);73vn_encode_VkFormat_array(enc, val->pViewFormats, val->viewFormatCount);74} else {75vn_encode_array_size(enc, 0);76}77}7879static inline void80vn_encode_VkFramebufferAttachmentImageInfo(struct vn_cs_encoder *enc, const VkFramebufferAttachmentImageInfo *val)81{82assert(val->sType == VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO);83vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO });84vn_encode_VkFramebufferAttachmentImageInfo_pnext(enc, val->pNext);85vn_encode_VkFramebufferAttachmentImageInfo_self(enc, val);86}8788/* struct VkFramebufferAttachmentsCreateInfo chain */8990static inline size_t91vn_sizeof_VkFramebufferAttachmentsCreateInfo_pnext(const void *val)92{93/* no known/supported struct */94return vn_sizeof_simple_pointer(NULL);95}9697static inline size_t98vn_sizeof_VkFramebufferAttachmentsCreateInfo_self(const VkFramebufferAttachmentsCreateInfo *val)99{100size_t size = 0;101/* skip val->{sType,pNext} */102size += vn_sizeof_uint32_t(&val->attachmentImageInfoCount);103if (val->pAttachmentImageInfos) {104size += vn_sizeof_array_size(val->attachmentImageInfoCount);105for (uint32_t i = 0; i < val->attachmentImageInfoCount; i++)106size += vn_sizeof_VkFramebufferAttachmentImageInfo(&val->pAttachmentImageInfos[i]);107} else {108size += vn_sizeof_array_size(0);109}110return size;111}112113static inline size_t114vn_sizeof_VkFramebufferAttachmentsCreateInfo(const VkFramebufferAttachmentsCreateInfo *val)115{116size_t size = 0;117118size += vn_sizeof_VkStructureType(&val->sType);119size += vn_sizeof_VkFramebufferAttachmentsCreateInfo_pnext(val->pNext);120size += vn_sizeof_VkFramebufferAttachmentsCreateInfo_self(val);121122return size;123}124125static inline void126vn_encode_VkFramebufferAttachmentsCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)127{128/* no known/supported struct */129vn_encode_simple_pointer(enc, NULL);130}131132static inline void133vn_encode_VkFramebufferAttachmentsCreateInfo_self(struct vn_cs_encoder *enc, const VkFramebufferAttachmentsCreateInfo *val)134{135/* skip val->{sType,pNext} */136vn_encode_uint32_t(enc, &val->attachmentImageInfoCount);137if (val->pAttachmentImageInfos) {138vn_encode_array_size(enc, val->attachmentImageInfoCount);139for (uint32_t i = 0; i < val->attachmentImageInfoCount; i++)140vn_encode_VkFramebufferAttachmentImageInfo(enc, &val->pAttachmentImageInfos[i]);141} else {142vn_encode_array_size(enc, 0);143}144}145146static inline void147vn_encode_VkFramebufferAttachmentsCreateInfo(struct vn_cs_encoder *enc, const VkFramebufferAttachmentsCreateInfo *val)148{149assert(val->sType == VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO);150vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO });151vn_encode_VkFramebufferAttachmentsCreateInfo_pnext(enc, val->pNext);152vn_encode_VkFramebufferAttachmentsCreateInfo_self(enc, val);153}154155/* struct VkFramebufferCreateInfo chain */156157static inline size_t158vn_sizeof_VkFramebufferCreateInfo_pnext(const void *val)159{160const VkBaseInStructure *pnext = val;161size_t size = 0;162163while (pnext) {164switch ((int32_t)pnext->sType) {165case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO:166size += vn_sizeof_simple_pointer(pnext);167size += vn_sizeof_VkStructureType(&pnext->sType);168size += vn_sizeof_VkFramebufferCreateInfo_pnext(pnext->pNext);169size += vn_sizeof_VkFramebufferAttachmentsCreateInfo_self((const VkFramebufferAttachmentsCreateInfo *)pnext);170return size;171default:172/* ignore unknown/unsupported struct */173break;174}175pnext = pnext->pNext;176}177178return vn_sizeof_simple_pointer(NULL);179}180181static inline size_t182vn_sizeof_VkFramebufferCreateInfo_self(const VkFramebufferCreateInfo *val)183{184size_t size = 0;185/* skip val->{sType,pNext} */186size += vn_sizeof_VkFlags(&val->flags);187size += vn_sizeof_VkRenderPass(&val->renderPass);188size += vn_sizeof_uint32_t(&val->attachmentCount);189if (val->pAttachments) {190size += vn_sizeof_array_size(val->attachmentCount);191for (uint32_t i = 0; i < val->attachmentCount; i++)192size += vn_sizeof_VkImageView(&val->pAttachments[i]);193} else {194size += vn_sizeof_array_size(0);195}196size += vn_sizeof_uint32_t(&val->width);197size += vn_sizeof_uint32_t(&val->height);198size += vn_sizeof_uint32_t(&val->layers);199return size;200}201202static inline size_t203vn_sizeof_VkFramebufferCreateInfo(const VkFramebufferCreateInfo *val)204{205size_t size = 0;206207size += vn_sizeof_VkStructureType(&val->sType);208size += vn_sizeof_VkFramebufferCreateInfo_pnext(val->pNext);209size += vn_sizeof_VkFramebufferCreateInfo_self(val);210211return size;212}213214static inline void215vn_encode_VkFramebufferCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)216{217const VkBaseInStructure *pnext = val;218219while (pnext) {220switch ((int32_t)pnext->sType) {221case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO:222vn_encode_simple_pointer(enc, pnext);223vn_encode_VkStructureType(enc, &pnext->sType);224vn_encode_VkFramebufferCreateInfo_pnext(enc, pnext->pNext);225vn_encode_VkFramebufferAttachmentsCreateInfo_self(enc, (const VkFramebufferAttachmentsCreateInfo *)pnext);226return;227default:228/* ignore unknown/unsupported struct */229break;230}231pnext = pnext->pNext;232}233234vn_encode_simple_pointer(enc, NULL);235}236237static inline void238vn_encode_VkFramebufferCreateInfo_self(struct vn_cs_encoder *enc, const VkFramebufferCreateInfo *val)239{240/* skip val->{sType,pNext} */241vn_encode_VkFlags(enc, &val->flags);242vn_encode_VkRenderPass(enc, &val->renderPass);243vn_encode_uint32_t(enc, &val->attachmentCount);244if (val->pAttachments) {245vn_encode_array_size(enc, val->attachmentCount);246for (uint32_t i = 0; i < val->attachmentCount; i++)247vn_encode_VkImageView(enc, &val->pAttachments[i]);248} else {249vn_encode_array_size(enc, 0);250}251vn_encode_uint32_t(enc, &val->width);252vn_encode_uint32_t(enc, &val->height);253vn_encode_uint32_t(enc, &val->layers);254}255256static inline void257vn_encode_VkFramebufferCreateInfo(struct vn_cs_encoder *enc, const VkFramebufferCreateInfo *val)258{259assert(val->sType == VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO);260vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO });261vn_encode_VkFramebufferCreateInfo_pnext(enc, val->pNext);262vn_encode_VkFramebufferCreateInfo_self(enc, val);263}264265static inline size_t vn_sizeof_vkCreateFramebuffer(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer)266{267const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateFramebuffer_EXT;268const VkFlags cmd_flags = 0;269size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);270271cmd_size += vn_sizeof_VkDevice(&device);272cmd_size += vn_sizeof_simple_pointer(pCreateInfo);273if (pCreateInfo)274cmd_size += vn_sizeof_VkFramebufferCreateInfo(pCreateInfo);275cmd_size += vn_sizeof_simple_pointer(pAllocator);276if (pAllocator)277assert(false);278cmd_size += vn_sizeof_simple_pointer(pFramebuffer);279if (pFramebuffer)280cmd_size += vn_sizeof_VkFramebuffer(pFramebuffer);281282return cmd_size;283}284285static inline void vn_encode_vkCreateFramebuffer(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer)286{287const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateFramebuffer_EXT;288289vn_encode_VkCommandTypeEXT(enc, &cmd_type);290vn_encode_VkFlags(enc, &cmd_flags);291292vn_encode_VkDevice(enc, &device);293if (vn_encode_simple_pointer(enc, pCreateInfo))294vn_encode_VkFramebufferCreateInfo(enc, pCreateInfo);295if (vn_encode_simple_pointer(enc, pAllocator))296assert(false);297if (vn_encode_simple_pointer(enc, pFramebuffer))298vn_encode_VkFramebuffer(enc, pFramebuffer);299}300301static inline size_t vn_sizeof_vkCreateFramebuffer_reply(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer)302{303const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateFramebuffer_EXT;304size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);305306VkResult ret;307cmd_size += vn_sizeof_VkResult(&ret);308/* skip device */309/* skip pCreateInfo */310/* skip pAllocator */311cmd_size += vn_sizeof_simple_pointer(pFramebuffer);312if (pFramebuffer)313cmd_size += vn_sizeof_VkFramebuffer(pFramebuffer);314315return cmd_size;316}317318static inline VkResult vn_decode_vkCreateFramebuffer_reply(struct vn_cs_decoder *dec, VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer)319{320VkCommandTypeEXT command_type;321vn_decode_VkCommandTypeEXT(dec, &command_type);322assert(command_type == VK_COMMAND_TYPE_vkCreateFramebuffer_EXT);323324VkResult ret;325vn_decode_VkResult(dec, &ret);326/* skip device */327/* skip pCreateInfo */328/* skip pAllocator */329if (vn_decode_simple_pointer(dec)) {330vn_decode_VkFramebuffer(dec, pFramebuffer);331} else {332pFramebuffer = NULL;333}334335return ret;336}337338static inline size_t vn_sizeof_vkDestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator)339{340const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyFramebuffer_EXT;341const VkFlags cmd_flags = 0;342size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);343344cmd_size += vn_sizeof_VkDevice(&device);345cmd_size += vn_sizeof_VkFramebuffer(&framebuffer);346cmd_size += vn_sizeof_simple_pointer(pAllocator);347if (pAllocator)348assert(false);349350return cmd_size;351}352353static inline void vn_encode_vkDestroyFramebuffer(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator)354{355const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyFramebuffer_EXT;356357vn_encode_VkCommandTypeEXT(enc, &cmd_type);358vn_encode_VkFlags(enc, &cmd_flags);359360vn_encode_VkDevice(enc, &device);361vn_encode_VkFramebuffer(enc, &framebuffer);362if (vn_encode_simple_pointer(enc, pAllocator))363assert(false);364}365366static inline size_t vn_sizeof_vkDestroyFramebuffer_reply(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator)367{368const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyFramebuffer_EXT;369size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);370371/* skip device */372/* skip framebuffer */373/* skip pAllocator */374375return cmd_size;376}377378static inline void vn_decode_vkDestroyFramebuffer_reply(struct vn_cs_decoder *dec, VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator)379{380VkCommandTypeEXT command_type;381vn_decode_VkCommandTypeEXT(dec, &command_type);382assert(command_type == VK_COMMAND_TYPE_vkDestroyFramebuffer_EXT);383384/* skip device */385/* skip framebuffer */386/* skip pAllocator */387}388389static inline void vn_submit_vkCreateFramebuffer(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer, struct vn_instance_submit_command *submit)390{391uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];392void *cmd_data = local_cmd_data;393size_t cmd_size = vn_sizeof_vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer);394if (cmd_size > sizeof(local_cmd_data)) {395cmd_data = malloc(cmd_size);396if (!cmd_data)397cmd_size = 0;398}399const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkCreateFramebuffer_reply(device, pCreateInfo, pAllocator, pFramebuffer) : 0;400401struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);402if (cmd_size) {403vn_encode_vkCreateFramebuffer(enc, cmd_flags, device, pCreateInfo, pAllocator, pFramebuffer);404vn_instance_submit_command(vn_instance, submit);405if (cmd_data != local_cmd_data)406free(cmd_data);407}408}409410static inline void vn_submit_vkDestroyFramebuffer(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator, struct vn_instance_submit_command *submit)411{412uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];413void *cmd_data = local_cmd_data;414size_t cmd_size = vn_sizeof_vkDestroyFramebuffer(device, framebuffer, pAllocator);415if (cmd_size > sizeof(local_cmd_data)) {416cmd_data = malloc(cmd_size);417if (!cmd_data)418cmd_size = 0;419}420const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkDestroyFramebuffer_reply(device, framebuffer, pAllocator) : 0;421422struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);423if (cmd_size) {424vn_encode_vkDestroyFramebuffer(enc, cmd_flags, device, framebuffer, pAllocator);425vn_instance_submit_command(vn_instance, submit);426if (cmd_data != local_cmd_data)427free(cmd_data);428}429}430431static inline VkResult vn_call_vkCreateFramebuffer(struct vn_instance *vn_instance, VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer)432{433struct vn_instance_submit_command submit;434vn_submit_vkCreateFramebuffer(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pCreateInfo, pAllocator, pFramebuffer, &submit);435struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);436if (dec) {437const VkResult ret = vn_decode_vkCreateFramebuffer_reply(dec, device, pCreateInfo, pAllocator, pFramebuffer);438vn_instance_free_command_reply(vn_instance, &submit);439return ret;440} else {441return VK_ERROR_OUT_OF_HOST_MEMORY;442}443}444445static inline void vn_async_vkCreateFramebuffer(struct vn_instance *vn_instance, VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer)446{447struct vn_instance_submit_command submit;448vn_submit_vkCreateFramebuffer(vn_instance, 0, device, pCreateInfo, pAllocator, pFramebuffer, &submit);449}450451static inline void vn_call_vkDestroyFramebuffer(struct vn_instance *vn_instance, VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator)452{453struct vn_instance_submit_command submit;454vn_submit_vkDestroyFramebuffer(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, framebuffer, pAllocator, &submit);455struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);456if (dec) {457vn_decode_vkDestroyFramebuffer_reply(dec, device, framebuffer, pAllocator);458vn_instance_free_command_reply(vn_instance, &submit);459}460}461462static inline void vn_async_vkDestroyFramebuffer(struct vn_instance *vn_instance, VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator)463{464struct vn_instance_submit_command submit;465vn_submit_vkDestroyFramebuffer(vn_instance, 0, device, framebuffer, pAllocator, &submit);466}467468#endif /* VN_PROTOCOL_DRIVER_FRAMEBUFFER_H */469470471