Path: blob/21.2-virgl/src/virtio/venus-protocol/vn_protocol_driver_sampler.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_SAMPLER_H8#define VN_PROTOCOL_DRIVER_SAMPLER_H910#include "vn_device.h"11#include "vn_protocol_driver_structs.h"1213/* struct VkSamplerReductionModeCreateInfo chain */1415static inline size_t16vn_sizeof_VkSamplerReductionModeCreateInfo_pnext(const void *val)17{18/* no known/supported struct */19return vn_sizeof_simple_pointer(NULL);20}2122static inline size_t23vn_sizeof_VkSamplerReductionModeCreateInfo_self(const VkSamplerReductionModeCreateInfo *val)24{25size_t size = 0;26/* skip val->{sType,pNext} */27size += vn_sizeof_VkSamplerReductionMode(&val->reductionMode);28return size;29}3031static inline size_t32vn_sizeof_VkSamplerReductionModeCreateInfo(const VkSamplerReductionModeCreateInfo *val)33{34size_t size = 0;3536size += vn_sizeof_VkStructureType(&val->sType);37size += vn_sizeof_VkSamplerReductionModeCreateInfo_pnext(val->pNext);38size += vn_sizeof_VkSamplerReductionModeCreateInfo_self(val);3940return size;41}4243static inline void44vn_encode_VkSamplerReductionModeCreateInfo_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_VkSamplerReductionModeCreateInfo_self(struct vn_cs_encoder *enc, const VkSamplerReductionModeCreateInfo *val)52{53/* skip val->{sType,pNext} */54vn_encode_VkSamplerReductionMode(enc, &val->reductionMode);55}5657static inline void58vn_encode_VkSamplerReductionModeCreateInfo(struct vn_cs_encoder *enc, const VkSamplerReductionModeCreateInfo *val)59{60assert(val->sType == VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO);61vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO });62vn_encode_VkSamplerReductionModeCreateInfo_pnext(enc, val->pNext);63vn_encode_VkSamplerReductionModeCreateInfo_self(enc, val);64}6566/* struct VkSamplerCreateInfo chain */6768static inline size_t69vn_sizeof_VkSamplerCreateInfo_pnext(const void *val)70{71const VkBaseInStructure *pnext = val;72size_t size = 0;7374while (pnext) {75switch ((int32_t)pnext->sType) {76case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO:77size += vn_sizeof_simple_pointer(pnext);78size += vn_sizeof_VkStructureType(&pnext->sType);79size += vn_sizeof_VkSamplerCreateInfo_pnext(pnext->pNext);80size += vn_sizeof_VkSamplerYcbcrConversionInfo_self((const VkSamplerYcbcrConversionInfo *)pnext);81return size;82case VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO:83size += vn_sizeof_simple_pointer(pnext);84size += vn_sizeof_VkStructureType(&pnext->sType);85size += vn_sizeof_VkSamplerCreateInfo_pnext(pnext->pNext);86size += vn_sizeof_VkSamplerReductionModeCreateInfo_self((const VkSamplerReductionModeCreateInfo *)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_VkSamplerCreateInfo_self(const VkSamplerCreateInfo *val)100{101size_t size = 0;102/* skip val->{sType,pNext} */103size += vn_sizeof_VkFlags(&val->flags);104size += vn_sizeof_VkFilter(&val->magFilter);105size += vn_sizeof_VkFilter(&val->minFilter);106size += vn_sizeof_VkSamplerMipmapMode(&val->mipmapMode);107size += vn_sizeof_VkSamplerAddressMode(&val->addressModeU);108size += vn_sizeof_VkSamplerAddressMode(&val->addressModeV);109size += vn_sizeof_VkSamplerAddressMode(&val->addressModeW);110size += vn_sizeof_float(&val->mipLodBias);111size += vn_sizeof_VkBool32(&val->anisotropyEnable);112size += vn_sizeof_float(&val->maxAnisotropy);113size += vn_sizeof_VkBool32(&val->compareEnable);114size += vn_sizeof_VkCompareOp(&val->compareOp);115size += vn_sizeof_float(&val->minLod);116size += vn_sizeof_float(&val->maxLod);117size += vn_sizeof_VkBorderColor(&val->borderColor);118size += vn_sizeof_VkBool32(&val->unnormalizedCoordinates);119return size;120}121122static inline size_t123vn_sizeof_VkSamplerCreateInfo(const VkSamplerCreateInfo *val)124{125size_t size = 0;126127size += vn_sizeof_VkStructureType(&val->sType);128size += vn_sizeof_VkSamplerCreateInfo_pnext(val->pNext);129size += vn_sizeof_VkSamplerCreateInfo_self(val);130131return size;132}133134static inline void135vn_encode_VkSamplerCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)136{137const VkBaseInStructure *pnext = val;138139while (pnext) {140switch ((int32_t)pnext->sType) {141case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO:142vn_encode_simple_pointer(enc, pnext);143vn_encode_VkStructureType(enc, &pnext->sType);144vn_encode_VkSamplerCreateInfo_pnext(enc, pnext->pNext);145vn_encode_VkSamplerYcbcrConversionInfo_self(enc, (const VkSamplerYcbcrConversionInfo *)pnext);146return;147case VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO:148vn_encode_simple_pointer(enc, pnext);149vn_encode_VkStructureType(enc, &pnext->sType);150vn_encode_VkSamplerCreateInfo_pnext(enc, pnext->pNext);151vn_encode_VkSamplerReductionModeCreateInfo_self(enc, (const VkSamplerReductionModeCreateInfo *)pnext);152return;153default:154/* ignore unknown/unsupported struct */155break;156}157pnext = pnext->pNext;158}159160vn_encode_simple_pointer(enc, NULL);161}162163static inline void164vn_encode_VkSamplerCreateInfo_self(struct vn_cs_encoder *enc, const VkSamplerCreateInfo *val)165{166/* skip val->{sType,pNext} */167vn_encode_VkFlags(enc, &val->flags);168vn_encode_VkFilter(enc, &val->magFilter);169vn_encode_VkFilter(enc, &val->minFilter);170vn_encode_VkSamplerMipmapMode(enc, &val->mipmapMode);171vn_encode_VkSamplerAddressMode(enc, &val->addressModeU);172vn_encode_VkSamplerAddressMode(enc, &val->addressModeV);173vn_encode_VkSamplerAddressMode(enc, &val->addressModeW);174vn_encode_float(enc, &val->mipLodBias);175vn_encode_VkBool32(enc, &val->anisotropyEnable);176vn_encode_float(enc, &val->maxAnisotropy);177vn_encode_VkBool32(enc, &val->compareEnable);178vn_encode_VkCompareOp(enc, &val->compareOp);179vn_encode_float(enc, &val->minLod);180vn_encode_float(enc, &val->maxLod);181vn_encode_VkBorderColor(enc, &val->borderColor);182vn_encode_VkBool32(enc, &val->unnormalizedCoordinates);183}184185static inline void186vn_encode_VkSamplerCreateInfo(struct vn_cs_encoder *enc, const VkSamplerCreateInfo *val)187{188assert(val->sType == VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO);189vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO });190vn_encode_VkSamplerCreateInfo_pnext(enc, val->pNext);191vn_encode_VkSamplerCreateInfo_self(enc, val);192}193194static inline size_t vn_sizeof_vkCreateSampler(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler)195{196const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateSampler_EXT;197const VkFlags cmd_flags = 0;198size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);199200cmd_size += vn_sizeof_VkDevice(&device);201cmd_size += vn_sizeof_simple_pointer(pCreateInfo);202if (pCreateInfo)203cmd_size += vn_sizeof_VkSamplerCreateInfo(pCreateInfo);204cmd_size += vn_sizeof_simple_pointer(pAllocator);205if (pAllocator)206assert(false);207cmd_size += vn_sizeof_simple_pointer(pSampler);208if (pSampler)209cmd_size += vn_sizeof_VkSampler(pSampler);210211return cmd_size;212}213214static inline void vn_encode_vkCreateSampler(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler)215{216const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateSampler_EXT;217218vn_encode_VkCommandTypeEXT(enc, &cmd_type);219vn_encode_VkFlags(enc, &cmd_flags);220221vn_encode_VkDevice(enc, &device);222if (vn_encode_simple_pointer(enc, pCreateInfo))223vn_encode_VkSamplerCreateInfo(enc, pCreateInfo);224if (vn_encode_simple_pointer(enc, pAllocator))225assert(false);226if (vn_encode_simple_pointer(enc, pSampler))227vn_encode_VkSampler(enc, pSampler);228}229230static inline size_t vn_sizeof_vkCreateSampler_reply(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler)231{232const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateSampler_EXT;233size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);234235VkResult ret;236cmd_size += vn_sizeof_VkResult(&ret);237/* skip device */238/* skip pCreateInfo */239/* skip pAllocator */240cmd_size += vn_sizeof_simple_pointer(pSampler);241if (pSampler)242cmd_size += vn_sizeof_VkSampler(pSampler);243244return cmd_size;245}246247static inline VkResult vn_decode_vkCreateSampler_reply(struct vn_cs_decoder *dec, VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler)248{249VkCommandTypeEXT command_type;250vn_decode_VkCommandTypeEXT(dec, &command_type);251assert(command_type == VK_COMMAND_TYPE_vkCreateSampler_EXT);252253VkResult ret;254vn_decode_VkResult(dec, &ret);255/* skip device */256/* skip pCreateInfo */257/* skip pAllocator */258if (vn_decode_simple_pointer(dec)) {259vn_decode_VkSampler(dec, pSampler);260} else {261pSampler = NULL;262}263264return ret;265}266267static inline size_t vn_sizeof_vkDestroySampler(VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator)268{269const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroySampler_EXT;270const VkFlags cmd_flags = 0;271size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);272273cmd_size += vn_sizeof_VkDevice(&device);274cmd_size += vn_sizeof_VkSampler(&sampler);275cmd_size += vn_sizeof_simple_pointer(pAllocator);276if (pAllocator)277assert(false);278279return cmd_size;280}281282static inline void vn_encode_vkDestroySampler(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator)283{284const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroySampler_EXT;285286vn_encode_VkCommandTypeEXT(enc, &cmd_type);287vn_encode_VkFlags(enc, &cmd_flags);288289vn_encode_VkDevice(enc, &device);290vn_encode_VkSampler(enc, &sampler);291if (vn_encode_simple_pointer(enc, pAllocator))292assert(false);293}294295static inline size_t vn_sizeof_vkDestroySampler_reply(VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator)296{297const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroySampler_EXT;298size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);299300/* skip device */301/* skip sampler */302/* skip pAllocator */303304return cmd_size;305}306307static inline void vn_decode_vkDestroySampler_reply(struct vn_cs_decoder *dec, VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator)308{309VkCommandTypeEXT command_type;310vn_decode_VkCommandTypeEXT(dec, &command_type);311assert(command_type == VK_COMMAND_TYPE_vkDestroySampler_EXT);312313/* skip device */314/* skip sampler */315/* skip pAllocator */316}317318static inline void vn_submit_vkCreateSampler(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler, struct vn_instance_submit_command *submit)319{320uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];321void *cmd_data = local_cmd_data;322size_t cmd_size = vn_sizeof_vkCreateSampler(device, pCreateInfo, pAllocator, pSampler);323if (cmd_size > sizeof(local_cmd_data)) {324cmd_data = malloc(cmd_size);325if (!cmd_data)326cmd_size = 0;327}328const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkCreateSampler_reply(device, pCreateInfo, pAllocator, pSampler) : 0;329330struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);331if (cmd_size) {332vn_encode_vkCreateSampler(enc, cmd_flags, device, pCreateInfo, pAllocator, pSampler);333vn_instance_submit_command(vn_instance, submit);334if (cmd_data != local_cmd_data)335free(cmd_data);336}337}338339static inline void vn_submit_vkDestroySampler(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator, struct vn_instance_submit_command *submit)340{341uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];342void *cmd_data = local_cmd_data;343size_t cmd_size = vn_sizeof_vkDestroySampler(device, sampler, pAllocator);344if (cmd_size > sizeof(local_cmd_data)) {345cmd_data = malloc(cmd_size);346if (!cmd_data)347cmd_size = 0;348}349const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkDestroySampler_reply(device, sampler, pAllocator) : 0;350351struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);352if (cmd_size) {353vn_encode_vkDestroySampler(enc, cmd_flags, device, sampler, pAllocator);354vn_instance_submit_command(vn_instance, submit);355if (cmd_data != local_cmd_data)356free(cmd_data);357}358}359360static inline VkResult vn_call_vkCreateSampler(struct vn_instance *vn_instance, VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler)361{362struct vn_instance_submit_command submit;363vn_submit_vkCreateSampler(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pCreateInfo, pAllocator, pSampler, &submit);364struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);365if (dec) {366const VkResult ret = vn_decode_vkCreateSampler_reply(dec, device, pCreateInfo, pAllocator, pSampler);367vn_instance_free_command_reply(vn_instance, &submit);368return ret;369} else {370return VK_ERROR_OUT_OF_HOST_MEMORY;371}372}373374static inline void vn_async_vkCreateSampler(struct vn_instance *vn_instance, VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler)375{376struct vn_instance_submit_command submit;377vn_submit_vkCreateSampler(vn_instance, 0, device, pCreateInfo, pAllocator, pSampler, &submit);378}379380static inline void vn_call_vkDestroySampler(struct vn_instance *vn_instance, VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator)381{382struct vn_instance_submit_command submit;383vn_submit_vkDestroySampler(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, sampler, pAllocator, &submit);384struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);385if (dec) {386vn_decode_vkDestroySampler_reply(dec, device, sampler, pAllocator);387vn_instance_free_command_reply(vn_instance, &submit);388}389}390391static inline void vn_async_vkDestroySampler(struct vn_instance *vn_instance, VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator)392{393struct vn_instance_submit_command submit;394vn_submit_vkDestroySampler(vn_instance, 0, device, sampler, pAllocator, &submit);395}396397#endif /* VN_PROTOCOL_DRIVER_SAMPLER_H */398399400