Path: blob/21.2-virgl/src/virtio/venus-protocol/vn_protocol_driver_shader_module.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_SHADER_MODULE_H8#define VN_PROTOCOL_DRIVER_SHADER_MODULE_H910#include "vn_device.h"11#include "vn_protocol_driver_structs.h"1213/* struct VkShaderModuleCreateInfo chain */1415static inline size_t16vn_sizeof_VkShaderModuleCreateInfo_pnext(const void *val)17{18/* no known/supported struct */19return vn_sizeof_simple_pointer(NULL);20}2122static inline size_t23vn_sizeof_VkShaderModuleCreateInfo_self(const VkShaderModuleCreateInfo *val)24{25size_t size = 0;26/* skip val->{sType,pNext} */27size += vn_sizeof_VkFlags(&val->flags);28size += vn_sizeof_size_t(&val->codeSize);29if (val->pCode) {30size += vn_sizeof_array_size(val->codeSize / 4);31size += vn_sizeof_uint32_t_array(val->pCode, val->codeSize / 4);32} else {33size += vn_sizeof_array_size(0);34}35return size;36}3738static inline size_t39vn_sizeof_VkShaderModuleCreateInfo(const VkShaderModuleCreateInfo *val)40{41size_t size = 0;4243size += vn_sizeof_VkStructureType(&val->sType);44size += vn_sizeof_VkShaderModuleCreateInfo_pnext(val->pNext);45size += vn_sizeof_VkShaderModuleCreateInfo_self(val);4647return size;48}4950static inline void51vn_encode_VkShaderModuleCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)52{53/* no known/supported struct */54vn_encode_simple_pointer(enc, NULL);55}5657static inline void58vn_encode_VkShaderModuleCreateInfo_self(struct vn_cs_encoder *enc, const VkShaderModuleCreateInfo *val)59{60/* skip val->{sType,pNext} */61vn_encode_VkFlags(enc, &val->flags);62vn_encode_size_t(enc, &val->codeSize);63if (val->pCode) {64vn_encode_array_size(enc, val->codeSize / 4);65vn_encode_uint32_t_array(enc, val->pCode, val->codeSize / 4);66} else {67vn_encode_array_size(enc, 0);68}69}7071static inline void72vn_encode_VkShaderModuleCreateInfo(struct vn_cs_encoder *enc, const VkShaderModuleCreateInfo *val)73{74assert(val->sType == VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO);75vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO });76vn_encode_VkShaderModuleCreateInfo_pnext(enc, val->pNext);77vn_encode_VkShaderModuleCreateInfo_self(enc, val);78}7980static inline size_t vn_sizeof_vkCreateShaderModule(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule)81{82const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateShaderModule_EXT;83const VkFlags cmd_flags = 0;84size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);8586cmd_size += vn_sizeof_VkDevice(&device);87cmd_size += vn_sizeof_simple_pointer(pCreateInfo);88if (pCreateInfo)89cmd_size += vn_sizeof_VkShaderModuleCreateInfo(pCreateInfo);90cmd_size += vn_sizeof_simple_pointer(pAllocator);91if (pAllocator)92assert(false);93cmd_size += vn_sizeof_simple_pointer(pShaderModule);94if (pShaderModule)95cmd_size += vn_sizeof_VkShaderModule(pShaderModule);9697return cmd_size;98}99100static inline void vn_encode_vkCreateShaderModule(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule)101{102const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateShaderModule_EXT;103104vn_encode_VkCommandTypeEXT(enc, &cmd_type);105vn_encode_VkFlags(enc, &cmd_flags);106107vn_encode_VkDevice(enc, &device);108if (vn_encode_simple_pointer(enc, pCreateInfo))109vn_encode_VkShaderModuleCreateInfo(enc, pCreateInfo);110if (vn_encode_simple_pointer(enc, pAllocator))111assert(false);112if (vn_encode_simple_pointer(enc, pShaderModule))113vn_encode_VkShaderModule(enc, pShaderModule);114}115116static inline size_t vn_sizeof_vkCreateShaderModule_reply(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule)117{118const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateShaderModule_EXT;119size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);120121VkResult ret;122cmd_size += vn_sizeof_VkResult(&ret);123/* skip device */124/* skip pCreateInfo */125/* skip pAllocator */126cmd_size += vn_sizeof_simple_pointer(pShaderModule);127if (pShaderModule)128cmd_size += vn_sizeof_VkShaderModule(pShaderModule);129130return cmd_size;131}132133static inline VkResult vn_decode_vkCreateShaderModule_reply(struct vn_cs_decoder *dec, VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule)134{135VkCommandTypeEXT command_type;136vn_decode_VkCommandTypeEXT(dec, &command_type);137assert(command_type == VK_COMMAND_TYPE_vkCreateShaderModule_EXT);138139VkResult ret;140vn_decode_VkResult(dec, &ret);141/* skip device */142/* skip pCreateInfo */143/* skip pAllocator */144if (vn_decode_simple_pointer(dec)) {145vn_decode_VkShaderModule(dec, pShaderModule);146} else {147pShaderModule = NULL;148}149150return ret;151}152153static inline size_t vn_sizeof_vkDestroyShaderModule(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator)154{155const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyShaderModule_EXT;156const VkFlags cmd_flags = 0;157size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);158159cmd_size += vn_sizeof_VkDevice(&device);160cmd_size += vn_sizeof_VkShaderModule(&shaderModule);161cmd_size += vn_sizeof_simple_pointer(pAllocator);162if (pAllocator)163assert(false);164165return cmd_size;166}167168static inline void vn_encode_vkDestroyShaderModule(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator)169{170const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyShaderModule_EXT;171172vn_encode_VkCommandTypeEXT(enc, &cmd_type);173vn_encode_VkFlags(enc, &cmd_flags);174175vn_encode_VkDevice(enc, &device);176vn_encode_VkShaderModule(enc, &shaderModule);177if (vn_encode_simple_pointer(enc, pAllocator))178assert(false);179}180181static inline size_t vn_sizeof_vkDestroyShaderModule_reply(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator)182{183const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyShaderModule_EXT;184size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);185186/* skip device */187/* skip shaderModule */188/* skip pAllocator */189190return cmd_size;191}192193static inline void vn_decode_vkDestroyShaderModule_reply(struct vn_cs_decoder *dec, VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator)194{195VkCommandTypeEXT command_type;196vn_decode_VkCommandTypeEXT(dec, &command_type);197assert(command_type == VK_COMMAND_TYPE_vkDestroyShaderModule_EXT);198199/* skip device */200/* skip shaderModule */201/* skip pAllocator */202}203204static inline void vn_submit_vkCreateShaderModule(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule, struct vn_instance_submit_command *submit)205{206uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];207void *cmd_data = local_cmd_data;208size_t cmd_size = vn_sizeof_vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule);209if (cmd_size > sizeof(local_cmd_data)) {210cmd_data = malloc(cmd_size);211if (!cmd_data)212cmd_size = 0;213}214const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkCreateShaderModule_reply(device, pCreateInfo, pAllocator, pShaderModule) : 0;215216struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);217if (cmd_size) {218vn_encode_vkCreateShaderModule(enc, cmd_flags, device, pCreateInfo, pAllocator, pShaderModule);219vn_instance_submit_command(vn_instance, submit);220if (cmd_data != local_cmd_data)221free(cmd_data);222}223}224225static inline void vn_submit_vkDestroyShaderModule(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator, struct vn_instance_submit_command *submit)226{227uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];228void *cmd_data = local_cmd_data;229size_t cmd_size = vn_sizeof_vkDestroyShaderModule(device, shaderModule, pAllocator);230if (cmd_size > sizeof(local_cmd_data)) {231cmd_data = malloc(cmd_size);232if (!cmd_data)233cmd_size = 0;234}235const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkDestroyShaderModule_reply(device, shaderModule, pAllocator) : 0;236237struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);238if (cmd_size) {239vn_encode_vkDestroyShaderModule(enc, cmd_flags, device, shaderModule, pAllocator);240vn_instance_submit_command(vn_instance, submit);241if (cmd_data != local_cmd_data)242free(cmd_data);243}244}245246static inline VkResult vn_call_vkCreateShaderModule(struct vn_instance *vn_instance, VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule)247{248struct vn_instance_submit_command submit;249vn_submit_vkCreateShaderModule(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pCreateInfo, pAllocator, pShaderModule, &submit);250struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);251if (dec) {252const VkResult ret = vn_decode_vkCreateShaderModule_reply(dec, device, pCreateInfo, pAllocator, pShaderModule);253vn_instance_free_command_reply(vn_instance, &submit);254return ret;255} else {256return VK_ERROR_OUT_OF_HOST_MEMORY;257}258}259260static inline void vn_async_vkCreateShaderModule(struct vn_instance *vn_instance, VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule)261{262struct vn_instance_submit_command submit;263vn_submit_vkCreateShaderModule(vn_instance, 0, device, pCreateInfo, pAllocator, pShaderModule, &submit);264}265266static inline void vn_call_vkDestroyShaderModule(struct vn_instance *vn_instance, VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator)267{268struct vn_instance_submit_command submit;269vn_submit_vkDestroyShaderModule(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, shaderModule, pAllocator, &submit);270struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);271if (dec) {272vn_decode_vkDestroyShaderModule_reply(dec, device, shaderModule, pAllocator);273vn_instance_free_command_reply(vn_instance, &submit);274}275}276277static inline void vn_async_vkDestroyShaderModule(struct vn_instance *vn_instance, VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator)278{279struct vn_instance_submit_command submit;280vn_submit_vkDestroyShaderModule(vn_instance, 0, device, shaderModule, pAllocator, &submit);281}282283#endif /* VN_PROTOCOL_DRIVER_SHADER_MODULE_H */284285286