From 4f22fb117dccba006191b1298285645d51287c3a Mon Sep 17 00:00:00 2001 From: Yiwei Zhang Date: Mon, 24 Oct 2022 22:58:52 +0000 Subject: [PATCH] venus: sync to latest venus protocol headers This brings in: - VK_KHR_push_descriptor - VK_EXT_depth_clip_control - VK_EXT_primitives_generated_query Signed-off-by: Yiwei Zhang Part-of: --- .../venus-protocol/vn_protocol_driver.h | 2 +- .../vn_protocol_driver_command_buffer.h | 118 ++++ .../vn_protocol_driver_defines.h | 2 + .../vn_protocol_driver_descriptor_set.h | 245 --------- .../vn_protocol_driver_device.h | 512 ++++++++++++++++++ .../venus-protocol/vn_protocol_driver_info.h | 7 +- .../vn_protocol_driver_pipeline.h | 94 +++- .../vn_protocol_driver_structs.h | 245 +++++++++ 8 files changed, 975 insertions(+), 250 deletions(-) diff --git a/src/virtio/venus-protocol/vn_protocol_driver.h b/src/virtio/venus-protocol/vn_protocol_driver.h index 8124d346da0..428045b4c79 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver.h +++ b/src/virtio/venus-protocol/vn_protocol_driver.h @@ -1,4 +1,4 @@ -/* This file is generated by venus-protocol git-cca9a548. */ +/* This file is generated by venus-protocol git-ed9bd971. */ /* * Copyright 2020 Google LLC diff --git a/src/virtio/venus-protocol/vn_protocol_driver_command_buffer.h b/src/virtio/venus-protocol/vn_protocol_driver_command_buffer.h index 762e10e99f1..21ee213c159 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_command_buffer.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_command_buffer.h @@ -11,6 +11,12 @@ #include "vn_instance.h" #include "vn_protocol_driver_structs.h" +/* + * These structs/unions/commands are not included + * + * vkCmdPushDescriptorSetWithTemplateKHR + */ + /* struct VkCommandBufferAllocateInfo chain */ static inline size_t @@ -5790,6 +5796,78 @@ static inline void vn_decode_vkCmdExecuteCommands_reply(struct vn_cs_decoder *de /* skip pCommandBuffers */ } +static inline size_t vn_sizeof_vkCmdPushDescriptorSetKHR(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites) +{ + const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCmdPushDescriptorSetKHR_EXT; + const VkFlags cmd_flags = 0; + size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags); + + cmd_size += vn_sizeof_VkCommandBuffer(&commandBuffer); + cmd_size += vn_sizeof_VkPipelineBindPoint(&pipelineBindPoint); + cmd_size += vn_sizeof_VkPipelineLayout(&layout); + cmd_size += vn_sizeof_uint32_t(&set); + cmd_size += vn_sizeof_uint32_t(&descriptorWriteCount); + if (pDescriptorWrites) { + cmd_size += vn_sizeof_array_size(descriptorWriteCount); + for (uint32_t i = 0; i < descriptorWriteCount; i++) + cmd_size += vn_sizeof_VkWriteDescriptorSet(&pDescriptorWrites[i]); + } else { + cmd_size += vn_sizeof_array_size(0); + } + + return cmd_size; +} + +static inline void vn_encode_vkCmdPushDescriptorSetKHR(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites) +{ + const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCmdPushDescriptorSetKHR_EXT; + + vn_encode_VkCommandTypeEXT(enc, &cmd_type); + vn_encode_VkFlags(enc, &cmd_flags); + + vn_encode_VkCommandBuffer(enc, &commandBuffer); + vn_encode_VkPipelineBindPoint(enc, &pipelineBindPoint); + vn_encode_VkPipelineLayout(enc, &layout); + vn_encode_uint32_t(enc, &set); + vn_encode_uint32_t(enc, &descriptorWriteCount); + if (pDescriptorWrites) { + vn_encode_array_size(enc, descriptorWriteCount); + for (uint32_t i = 0; i < descriptorWriteCount; i++) + vn_encode_VkWriteDescriptorSet(enc, &pDescriptorWrites[i]); + } else { + vn_encode_array_size(enc, 0); + } +} + +static inline size_t vn_sizeof_vkCmdPushDescriptorSetKHR_reply(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites) +{ + const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCmdPushDescriptorSetKHR_EXT; + size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type); + + /* skip commandBuffer */ + /* skip pipelineBindPoint */ + /* skip layout */ + /* skip set */ + /* skip descriptorWriteCount */ + /* skip pDescriptorWrites */ + + return cmd_size; +} + +static inline void vn_decode_vkCmdPushDescriptorSetKHR_reply(struct vn_cs_decoder *dec, VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites) +{ + VkCommandTypeEXT command_type; + vn_decode_VkCommandTypeEXT(dec, &command_type); + assert(command_type == VK_COMMAND_TYPE_vkCmdPushDescriptorSetKHR_EXT); + + /* skip commandBuffer */ + /* skip pipelineBindPoint */ + /* skip layout */ + /* skip set */ + /* skip descriptorWriteCount */ + /* skip pDescriptorWrites */ +} + static inline size_t vn_sizeof_vkCmdSetDeviceMask(VkCommandBuffer commandBuffer, uint32_t deviceMask) { const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCmdSetDeviceMask_EXT; @@ -9263,6 +9341,27 @@ static inline void vn_submit_vkCmdExecuteCommands(struct vn_instance *vn_instanc } } +static inline void vn_submit_vkCmdPushDescriptorSetKHR(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, struct vn_instance_submit_command *submit) +{ + uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE]; + void *cmd_data = local_cmd_data; + size_t cmd_size = vn_sizeof_vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites); + if (cmd_size > sizeof(local_cmd_data)) { + cmd_data = malloc(cmd_size); + if (!cmd_data) + cmd_size = 0; + } + const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkCmdPushDescriptorSetKHR_reply(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) : 0; + + struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size); + if (cmd_size) { + vn_encode_vkCmdPushDescriptorSetKHR(enc, cmd_flags, commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites); + vn_instance_submit_command(vn_instance, submit); + if (cmd_data != local_cmd_data) + free(cmd_data); + } +} + static inline void vn_submit_vkCmdSetDeviceMask(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkCommandBuffer commandBuffer, uint32_t deviceMask, struct vn_instance_submit_command *submit) { uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE]; @@ -11206,6 +11305,25 @@ static inline void vn_async_vkCmdExecuteCommands(struct vn_instance *vn_instance vn_submit_vkCmdExecuteCommands(vn_instance, 0, commandBuffer, commandBufferCount, pCommandBuffers, &submit); } +static inline void vn_call_vkCmdPushDescriptorSetKHR(struct vn_instance *vn_instance, VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites) +{ + VN_TRACE_FUNC(); + + struct vn_instance_submit_command submit; + vn_submit_vkCmdPushDescriptorSetKHR(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, &submit); + struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit); + if (dec) { + vn_decode_vkCmdPushDescriptorSetKHR_reply(dec, commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites); + vn_instance_free_command_reply(vn_instance, &submit); + } +} + +static inline void vn_async_vkCmdPushDescriptorSetKHR(struct vn_instance *vn_instance, VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites) +{ + struct vn_instance_submit_command submit; + vn_submit_vkCmdPushDescriptorSetKHR(vn_instance, 0, commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, &submit); +} + static inline void vn_call_vkCmdSetDeviceMask(struct vn_instance *vn_instance, VkCommandBuffer commandBuffer, uint32_t deviceMask) { VN_TRACE_FUNC(); diff --git a/src/virtio/venus-protocol/vn_protocol_driver_defines.h b/src/virtio/venus-protocol/vn_protocol_driver_defines.h index 1c67f02fa2d..baa9032b081 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_defines.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_defines.h @@ -326,6 +326,8 @@ typedef enum VkCommandTypeEXT { VK_COMMAND_TYPE_vkGetMemoryFdPropertiesKHR_EXT = 194, VK_COMMAND_TYPE_vkImportSemaphoreFdKHR_EXT = 242, VK_COMMAND_TYPE_vkGetSemaphoreFdKHR_EXT = 243, + VK_COMMAND_TYPE_vkCmdPushDescriptorSetKHR_EXT = 249, + VK_COMMAND_TYPE_vkCmdPushDescriptorSetWithTemplateKHR_EXT = 250, VK_COMMAND_TYPE_vkCmdBeginConditionalRenderingEXT_EXT = 240, VK_COMMAND_TYPE_vkCmdEndConditionalRenderingEXT_EXT = 241, VK_COMMAND_TYPE_vkImportFenceFdKHR_EXT = 238, diff --git a/src/virtio/venus-protocol/vn_protocol_driver_descriptor_set.h b/src/virtio/venus-protocol/vn_protocol_driver_descriptor_set.h index a0cf03d0ad5..d5f5314623a 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_descriptor_set.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_descriptor_set.h @@ -184,251 +184,6 @@ vn_encode_VkDescriptorSetAllocateInfo(struct vn_cs_encoder *enc, const VkDescrip vn_encode_VkDescriptorSetAllocateInfo_self(enc, val); } -/* struct VkDescriptorImageInfo */ - -static inline size_t -vn_sizeof_VkDescriptorImageInfo(const VkDescriptorImageInfo *val) -{ - size_t size = 0; - size += vn_sizeof_VkSampler(&val->sampler); - size += vn_sizeof_VkImageView(&val->imageView); - size += vn_sizeof_VkImageLayout(&val->imageLayout); - return size; -} - -static inline void -vn_encode_VkDescriptorImageInfo(struct vn_cs_encoder *enc, const VkDescriptorImageInfo *val) -{ - vn_encode_VkSampler(enc, &val->sampler); - vn_encode_VkImageView(enc, &val->imageView); - vn_encode_VkImageLayout(enc, &val->imageLayout); -} - -/* struct VkDescriptorBufferInfo */ - -static inline size_t -vn_sizeof_VkDescriptorBufferInfo(const VkDescriptorBufferInfo *val) -{ - size_t size = 0; - size += vn_sizeof_VkBuffer(&val->buffer); - size += vn_sizeof_VkDeviceSize(&val->offset); - size += vn_sizeof_VkDeviceSize(&val->range); - return size; -} - -static inline void -vn_encode_VkDescriptorBufferInfo(struct vn_cs_encoder *enc, const VkDescriptorBufferInfo *val) -{ - vn_encode_VkBuffer(enc, &val->buffer); - vn_encode_VkDeviceSize(enc, &val->offset); - vn_encode_VkDeviceSize(enc, &val->range); -} - -/* struct VkWriteDescriptorSetInlineUniformBlock chain */ - -static inline size_t -vn_sizeof_VkWriteDescriptorSetInlineUniformBlock_pnext(const void *val) -{ - /* no known/supported struct */ - return vn_sizeof_simple_pointer(NULL); -} - -static inline size_t -vn_sizeof_VkWriteDescriptorSetInlineUniformBlock_self(const VkWriteDescriptorSetInlineUniformBlock *val) -{ - size_t size = 0; - /* skip val->{sType,pNext} */ - size += vn_sizeof_uint32_t(&val->dataSize); - if (val->pData) { - size += vn_sizeof_array_size(val->dataSize); - size += vn_sizeof_blob_array(val->pData, val->dataSize); - } else { - size += vn_sizeof_array_size(0); - } - return size; -} - -static inline size_t -vn_sizeof_VkWriteDescriptorSetInlineUniformBlock(const VkWriteDescriptorSetInlineUniformBlock *val) -{ - size_t size = 0; - - size += vn_sizeof_VkStructureType(&val->sType); - size += vn_sizeof_VkWriteDescriptorSetInlineUniformBlock_pnext(val->pNext); - size += vn_sizeof_VkWriteDescriptorSetInlineUniformBlock_self(val); - - return size; -} - -static inline void -vn_encode_VkWriteDescriptorSetInlineUniformBlock_pnext(struct vn_cs_encoder *enc, const void *val) -{ - /* no known/supported struct */ - vn_encode_simple_pointer(enc, NULL); -} - -static inline void -vn_encode_VkWriteDescriptorSetInlineUniformBlock_self(struct vn_cs_encoder *enc, const VkWriteDescriptorSetInlineUniformBlock *val) -{ - /* skip val->{sType,pNext} */ - vn_encode_uint32_t(enc, &val->dataSize); - if (val->pData) { - vn_encode_array_size(enc, val->dataSize); - vn_encode_blob_array(enc, val->pData, val->dataSize); - } else { - vn_encode_array_size(enc, 0); - } -} - -static inline void -vn_encode_VkWriteDescriptorSetInlineUniformBlock(struct vn_cs_encoder *enc, const VkWriteDescriptorSetInlineUniformBlock *val) -{ - assert(val->sType == VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK); - vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK }); - vn_encode_VkWriteDescriptorSetInlineUniformBlock_pnext(enc, val->pNext); - vn_encode_VkWriteDescriptorSetInlineUniformBlock_self(enc, val); -} - -/* struct VkWriteDescriptorSet chain */ - -static inline size_t -vn_sizeof_VkWriteDescriptorSet_pnext(const void *val) -{ - const VkBaseInStructure *pnext = val; - size_t size = 0; - - while (pnext) { - switch ((int32_t)pnext->sType) { - case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK: - if (!vn_cs_renderer_protocol_has_extension(139 /* VK_EXT_inline_uniform_block */)) - break; - size += vn_sizeof_simple_pointer(pnext); - size += vn_sizeof_VkStructureType(&pnext->sType); - size += vn_sizeof_VkWriteDescriptorSet_pnext(pnext->pNext); - size += vn_sizeof_VkWriteDescriptorSetInlineUniformBlock_self((const VkWriteDescriptorSetInlineUniformBlock *)pnext); - return size; - default: - /* ignore unknown/unsupported struct */ - break; - } - pnext = pnext->pNext; - } - - return vn_sizeof_simple_pointer(NULL); -} - -static inline size_t -vn_sizeof_VkWriteDescriptorSet_self(const VkWriteDescriptorSet *val) -{ - size_t size = 0; - /* skip val->{sType,pNext} */ - size += vn_sizeof_VkDescriptorSet(&val->dstSet); - size += vn_sizeof_uint32_t(&val->dstBinding); - size += vn_sizeof_uint32_t(&val->dstArrayElement); - size += vn_sizeof_uint32_t(&val->descriptorCount); - size += vn_sizeof_VkDescriptorType(&val->descriptorType); - if (val->pImageInfo) { - size += vn_sizeof_array_size(val->descriptorCount); - for (uint32_t i = 0; i < val->descriptorCount; i++) - size += vn_sizeof_VkDescriptorImageInfo(&val->pImageInfo[i]); - } else { - size += vn_sizeof_array_size(0); - } - if (val->pBufferInfo) { - size += vn_sizeof_array_size(val->descriptorCount); - for (uint32_t i = 0; i < val->descriptorCount; i++) - size += vn_sizeof_VkDescriptorBufferInfo(&val->pBufferInfo[i]); - } else { - size += vn_sizeof_array_size(0); - } - if (val->pTexelBufferView) { - size += vn_sizeof_array_size(val->descriptorCount); - for (uint32_t i = 0; i < val->descriptorCount; i++) - size += vn_sizeof_VkBufferView(&val->pTexelBufferView[i]); - } else { - size += vn_sizeof_array_size(0); - } - return size; -} - -static inline size_t -vn_sizeof_VkWriteDescriptorSet(const VkWriteDescriptorSet *val) -{ - size_t size = 0; - - size += vn_sizeof_VkStructureType(&val->sType); - size += vn_sizeof_VkWriteDescriptorSet_pnext(val->pNext); - size += vn_sizeof_VkWriteDescriptorSet_self(val); - - return size; -} - -static inline void -vn_encode_VkWriteDescriptorSet_pnext(struct vn_cs_encoder *enc, const void *val) -{ - const VkBaseInStructure *pnext = val; - - while (pnext) { - switch ((int32_t)pnext->sType) { - case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK: - if (!vn_cs_renderer_protocol_has_extension(139 /* VK_EXT_inline_uniform_block */)) - break; - vn_encode_simple_pointer(enc, pnext); - vn_encode_VkStructureType(enc, &pnext->sType); - vn_encode_VkWriteDescriptorSet_pnext(enc, pnext->pNext); - vn_encode_VkWriteDescriptorSetInlineUniformBlock_self(enc, (const VkWriteDescriptorSetInlineUniformBlock *)pnext); - return; - default: - /* ignore unknown/unsupported struct */ - break; - } - pnext = pnext->pNext; - } - - vn_encode_simple_pointer(enc, NULL); -} - -static inline void -vn_encode_VkWriteDescriptorSet_self(struct vn_cs_encoder *enc, const VkWriteDescriptorSet *val) -{ - /* skip val->{sType,pNext} */ - vn_encode_VkDescriptorSet(enc, &val->dstSet); - vn_encode_uint32_t(enc, &val->dstBinding); - vn_encode_uint32_t(enc, &val->dstArrayElement); - vn_encode_uint32_t(enc, &val->descriptorCount); - vn_encode_VkDescriptorType(enc, &val->descriptorType); - if (val->pImageInfo) { - vn_encode_array_size(enc, val->descriptorCount); - for (uint32_t i = 0; i < val->descriptorCount; i++) - vn_encode_VkDescriptorImageInfo(enc, &val->pImageInfo[i]); - } else { - vn_encode_array_size(enc, 0); - } - if (val->pBufferInfo) { - vn_encode_array_size(enc, val->descriptorCount); - for (uint32_t i = 0; i < val->descriptorCount; i++) - vn_encode_VkDescriptorBufferInfo(enc, &val->pBufferInfo[i]); - } else { - vn_encode_array_size(enc, 0); - } - if (val->pTexelBufferView) { - vn_encode_array_size(enc, val->descriptorCount); - for (uint32_t i = 0; i < val->descriptorCount; i++) - vn_encode_VkBufferView(enc, &val->pTexelBufferView[i]); - } else { - vn_encode_array_size(enc, 0); - } -} - -static inline void -vn_encode_VkWriteDescriptorSet(struct vn_cs_encoder *enc, const VkWriteDescriptorSet *val) -{ - assert(val->sType == VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET); - vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET }); - vn_encode_VkWriteDescriptorSet_pnext(enc, val->pNext); - vn_encode_VkWriteDescriptorSet_self(enc, val); -} - /* struct VkCopyDescriptorSet chain */ static inline size_t diff --git a/src/virtio/venus-protocol/vn_protocol_driver_device.h b/src/virtio/venus-protocol/vn_protocol_driver_device.h index a8eb9cd9451..c66748c2a79 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_device.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_device.h @@ -8053,6 +8053,137 @@ vn_encode_VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT_partial(struct vn_cs_ vn_encode_VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT_self_partial(enc, val); } +/* struct VkPhysicalDeviceDepthClipControlFeaturesEXT chain */ + +static inline size_t +vn_sizeof_VkPhysicalDeviceDepthClipControlFeaturesEXT_pnext(const void *val) +{ + /* no known/supported struct */ + return vn_sizeof_simple_pointer(NULL); +} + +static inline size_t +vn_sizeof_VkPhysicalDeviceDepthClipControlFeaturesEXT_self(const VkPhysicalDeviceDepthClipControlFeaturesEXT *val) +{ + size_t size = 0; + /* skip val->{sType,pNext} */ + size += vn_sizeof_VkBool32(&val->depthClipControl); + return size; +} + +static inline size_t +vn_sizeof_VkPhysicalDeviceDepthClipControlFeaturesEXT(const VkPhysicalDeviceDepthClipControlFeaturesEXT *val) +{ + size_t size = 0; + + size += vn_sizeof_VkStructureType(&val->sType); + size += vn_sizeof_VkPhysicalDeviceDepthClipControlFeaturesEXT_pnext(val->pNext); + size += vn_sizeof_VkPhysicalDeviceDepthClipControlFeaturesEXT_self(val); + + return size; +} + +static inline void +vn_encode_VkPhysicalDeviceDepthClipControlFeaturesEXT_pnext(struct vn_cs_encoder *enc, const void *val) +{ + /* no known/supported struct */ + vn_encode_simple_pointer(enc, NULL); +} + +static inline void +vn_encode_VkPhysicalDeviceDepthClipControlFeaturesEXT_self(struct vn_cs_encoder *enc, const VkPhysicalDeviceDepthClipControlFeaturesEXT *val) +{ + /* skip val->{sType,pNext} */ + vn_encode_VkBool32(enc, &val->depthClipControl); +} + +static inline void +vn_encode_VkPhysicalDeviceDepthClipControlFeaturesEXT(struct vn_cs_encoder *enc, const VkPhysicalDeviceDepthClipControlFeaturesEXT *val) +{ + assert(val->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT); + vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT }); + vn_encode_VkPhysicalDeviceDepthClipControlFeaturesEXT_pnext(enc, val->pNext); + vn_encode_VkPhysicalDeviceDepthClipControlFeaturesEXT_self(enc, val); +} + +static inline void +vn_decode_VkPhysicalDeviceDepthClipControlFeaturesEXT_pnext(struct vn_cs_decoder *dec, const void *val) +{ + /* no known/supported struct */ + if (vn_decode_simple_pointer(dec)) + assert(false); +} + +static inline void +vn_decode_VkPhysicalDeviceDepthClipControlFeaturesEXT_self(struct vn_cs_decoder *dec, VkPhysicalDeviceDepthClipControlFeaturesEXT *val) +{ + /* skip val->{sType,pNext} */ + vn_decode_VkBool32(dec, &val->depthClipControl); +} + +static inline void +vn_decode_VkPhysicalDeviceDepthClipControlFeaturesEXT(struct vn_cs_decoder *dec, VkPhysicalDeviceDepthClipControlFeaturesEXT *val) +{ + VkStructureType stype; + vn_decode_VkStructureType(dec, &stype); + assert(stype == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT); + + assert(val->sType == stype); + vn_decode_VkPhysicalDeviceDepthClipControlFeaturesEXT_pnext(dec, val->pNext); + vn_decode_VkPhysicalDeviceDepthClipControlFeaturesEXT_self(dec, val); +} + +static inline size_t +vn_sizeof_VkPhysicalDeviceDepthClipControlFeaturesEXT_pnext_partial(const void *val) +{ + /* no known/supported struct */ + return vn_sizeof_simple_pointer(NULL); +} + +static inline size_t +vn_sizeof_VkPhysicalDeviceDepthClipControlFeaturesEXT_self_partial(const VkPhysicalDeviceDepthClipControlFeaturesEXT *val) +{ + size_t size = 0; + /* skip val->{sType,pNext} */ + /* skip val->depthClipControl */ + return size; +} + +static inline size_t +vn_sizeof_VkPhysicalDeviceDepthClipControlFeaturesEXT_partial(const VkPhysicalDeviceDepthClipControlFeaturesEXT *val) +{ + size_t size = 0; + + size += vn_sizeof_VkStructureType(&val->sType); + size += vn_sizeof_VkPhysicalDeviceDepthClipControlFeaturesEXT_pnext_partial(val->pNext); + size += vn_sizeof_VkPhysicalDeviceDepthClipControlFeaturesEXT_self_partial(val); + + return size; +} + +static inline void +vn_encode_VkPhysicalDeviceDepthClipControlFeaturesEXT_pnext_partial(struct vn_cs_encoder *enc, const void *val) +{ + /* no known/supported struct */ + vn_encode_simple_pointer(enc, NULL); +} + +static inline void +vn_encode_VkPhysicalDeviceDepthClipControlFeaturesEXT_self_partial(struct vn_cs_encoder *enc, const VkPhysicalDeviceDepthClipControlFeaturesEXT *val) +{ + /* skip val->{sType,pNext} */ + /* skip val->depthClipControl */ +} + +static inline void +vn_encode_VkPhysicalDeviceDepthClipControlFeaturesEXT_partial(struct vn_cs_encoder *enc, const VkPhysicalDeviceDepthClipControlFeaturesEXT *val) +{ + assert(val->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT); + vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT }); + vn_encode_VkPhysicalDeviceDepthClipControlFeaturesEXT_pnext_partial(enc, val->pNext); + vn_encode_VkPhysicalDeviceDepthClipControlFeaturesEXT_self_partial(enc, val); +} + /* struct VkPhysicalDeviceSynchronization2Features chain */ static inline size_t @@ -8184,6 +8315,147 @@ vn_encode_VkPhysicalDeviceSynchronization2Features_partial(struct vn_cs_encoder vn_encode_VkPhysicalDeviceSynchronization2Features_self_partial(enc, val); } +/* struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT chain */ + +static inline size_t +vn_sizeof_VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT_pnext(const void *val) +{ + /* no known/supported struct */ + return vn_sizeof_simple_pointer(NULL); +} + +static inline size_t +vn_sizeof_VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT_self(const VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT *val) +{ + size_t size = 0; + /* skip val->{sType,pNext} */ + size += vn_sizeof_VkBool32(&val->primitivesGeneratedQuery); + size += vn_sizeof_VkBool32(&val->primitivesGeneratedQueryWithRasterizerDiscard); + size += vn_sizeof_VkBool32(&val->primitivesGeneratedQueryWithNonZeroStreams); + return size; +} + +static inline size_t +vn_sizeof_VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT(const VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT *val) +{ + size_t size = 0; + + size += vn_sizeof_VkStructureType(&val->sType); + size += vn_sizeof_VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT_pnext(val->pNext); + size += vn_sizeof_VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT_self(val); + + return size; +} + +static inline void +vn_encode_VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT_pnext(struct vn_cs_encoder *enc, const void *val) +{ + /* no known/supported struct */ + vn_encode_simple_pointer(enc, NULL); +} + +static inline void +vn_encode_VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT_self(struct vn_cs_encoder *enc, const VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT *val) +{ + /* skip val->{sType,pNext} */ + vn_encode_VkBool32(enc, &val->primitivesGeneratedQuery); + vn_encode_VkBool32(enc, &val->primitivesGeneratedQueryWithRasterizerDiscard); + vn_encode_VkBool32(enc, &val->primitivesGeneratedQueryWithNonZeroStreams); +} + +static inline void +vn_encode_VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT(struct vn_cs_encoder *enc, const VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT *val) +{ + assert(val->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT); + vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT }); + vn_encode_VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT_pnext(enc, val->pNext); + vn_encode_VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT_self(enc, val); +} + +static inline void +vn_decode_VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT_pnext(struct vn_cs_decoder *dec, const void *val) +{ + /* no known/supported struct */ + if (vn_decode_simple_pointer(dec)) + assert(false); +} + +static inline void +vn_decode_VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT_self(struct vn_cs_decoder *dec, VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT *val) +{ + /* skip val->{sType,pNext} */ + vn_decode_VkBool32(dec, &val->primitivesGeneratedQuery); + vn_decode_VkBool32(dec, &val->primitivesGeneratedQueryWithRasterizerDiscard); + vn_decode_VkBool32(dec, &val->primitivesGeneratedQueryWithNonZeroStreams); +} + +static inline void +vn_decode_VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT(struct vn_cs_decoder *dec, VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT *val) +{ + VkStructureType stype; + vn_decode_VkStructureType(dec, &stype); + assert(stype == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT); + + assert(val->sType == stype); + vn_decode_VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT_pnext(dec, val->pNext); + vn_decode_VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT_self(dec, val); +} + +static inline size_t +vn_sizeof_VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT_pnext_partial(const void *val) +{ + /* no known/supported struct */ + return vn_sizeof_simple_pointer(NULL); +} + +static inline size_t +vn_sizeof_VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT_self_partial(const VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT *val) +{ + size_t size = 0; + /* skip val->{sType,pNext} */ + /* skip val->primitivesGeneratedQuery */ + /* skip val->primitivesGeneratedQueryWithRasterizerDiscard */ + /* skip val->primitivesGeneratedQueryWithNonZeroStreams */ + return size; +} + +static inline size_t +vn_sizeof_VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT_partial(const VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT *val) +{ + size_t size = 0; + + size += vn_sizeof_VkStructureType(&val->sType); + size += vn_sizeof_VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT_pnext_partial(val->pNext); + size += vn_sizeof_VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT_self_partial(val); + + return size; +} + +static inline void +vn_encode_VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT_pnext_partial(struct vn_cs_encoder *enc, const void *val) +{ + /* no known/supported struct */ + vn_encode_simple_pointer(enc, NULL); +} + +static inline void +vn_encode_VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT_self_partial(struct vn_cs_encoder *enc, const VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT *val) +{ + /* skip val->{sType,pNext} */ + /* skip val->primitivesGeneratedQuery */ + /* skip val->primitivesGeneratedQueryWithRasterizerDiscard */ + /* skip val->primitivesGeneratedQueryWithNonZeroStreams */ +} + +static inline void +vn_encode_VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT_partial(struct vn_cs_encoder *enc, const VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT *val) +{ + assert(val->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT); + vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT }); + vn_encode_VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT_pnext_partial(enc, val->pNext); + vn_encode_VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT_self_partial(enc, val); +} + /* struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT chain */ static inline size_t @@ -9188,6 +9460,14 @@ vn_sizeof_VkPhysicalDeviceFeatures2_pnext(const void *val) size += vn_sizeof_VkPhysicalDeviceFeatures2_pnext(pnext->pNext); size += vn_sizeof_VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT_self((const VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT *)pnext); return size; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT: + if (!vn_cs_renderer_protocol_has_extension(356 /* VK_EXT_depth_clip_control */)) + break; + size += vn_sizeof_simple_pointer(pnext); + size += vn_sizeof_VkStructureType(&pnext->sType); + size += vn_sizeof_VkPhysicalDeviceFeatures2_pnext(pnext->pNext); + size += vn_sizeof_VkPhysicalDeviceDepthClipControlFeaturesEXT_self((const VkPhysicalDeviceDepthClipControlFeaturesEXT *)pnext); + return size; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES: if (!vn_cs_renderer_protocol_has_extension(315 /* VK_KHR_synchronization2 */)) break; @@ -9196,6 +9476,14 @@ vn_sizeof_VkPhysicalDeviceFeatures2_pnext(const void *val) size += vn_sizeof_VkPhysicalDeviceFeatures2_pnext(pnext->pNext); size += vn_sizeof_VkPhysicalDeviceSynchronization2Features_self((const VkPhysicalDeviceSynchronization2Features *)pnext); return size; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT: + if (!vn_cs_renderer_protocol_has_extension(383 /* VK_EXT_primitives_generated_query */)) + break; + size += vn_sizeof_simple_pointer(pnext); + size += vn_sizeof_VkStructureType(&pnext->sType); + size += vn_sizeof_VkPhysicalDeviceFeatures2_pnext(pnext->pNext); + size += vn_sizeof_VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT_self((const VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT *)pnext); + return size; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT: if (!vn_cs_renderer_protocol_has_extension(331 /* VK_EXT_ycbcr_2plane_444_formats */)) break; @@ -9608,6 +9896,14 @@ vn_encode_VkPhysicalDeviceFeatures2_pnext(struct vn_cs_encoder *enc, const void vn_encode_VkPhysicalDeviceFeatures2_pnext(enc, pnext->pNext); vn_encode_VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT_self(enc, (const VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT *)pnext); return; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT: + if (!vn_cs_renderer_protocol_has_extension(356 /* VK_EXT_depth_clip_control */)) + break; + vn_encode_simple_pointer(enc, pnext); + vn_encode_VkStructureType(enc, &pnext->sType); + vn_encode_VkPhysicalDeviceFeatures2_pnext(enc, pnext->pNext); + vn_encode_VkPhysicalDeviceDepthClipControlFeaturesEXT_self(enc, (const VkPhysicalDeviceDepthClipControlFeaturesEXT *)pnext); + return; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES: if (!vn_cs_renderer_protocol_has_extension(315 /* VK_KHR_synchronization2 */)) break; @@ -9616,6 +9912,14 @@ vn_encode_VkPhysicalDeviceFeatures2_pnext(struct vn_cs_encoder *enc, const void vn_encode_VkPhysicalDeviceFeatures2_pnext(enc, pnext->pNext); vn_encode_VkPhysicalDeviceSynchronization2Features_self(enc, (const VkPhysicalDeviceSynchronization2Features *)pnext); return; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT: + if (!vn_cs_renderer_protocol_has_extension(383 /* VK_EXT_primitives_generated_query */)) + break; + vn_encode_simple_pointer(enc, pnext); + vn_encode_VkStructureType(enc, &pnext->sType); + vn_encode_VkPhysicalDeviceFeatures2_pnext(enc, pnext->pNext); + vn_encode_VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT_self(enc, (const VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT *)pnext); + return; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT: if (!vn_cs_renderer_protocol_has_extension(331 /* VK_EXT_ycbcr_2plane_444_formats */)) break; @@ -9889,10 +10193,18 @@ vn_decode_VkPhysicalDeviceFeatures2_pnext(struct vn_cs_decoder *dec, const void vn_decode_VkPhysicalDeviceFeatures2_pnext(dec, pnext->pNext); vn_decode_VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT_self(dec, (VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT *)pnext); break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT: + vn_decode_VkPhysicalDeviceFeatures2_pnext(dec, pnext->pNext); + vn_decode_VkPhysicalDeviceDepthClipControlFeaturesEXT_self(dec, (VkPhysicalDeviceDepthClipControlFeaturesEXT *)pnext); + break; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES: vn_decode_VkPhysicalDeviceFeatures2_pnext(dec, pnext->pNext); vn_decode_VkPhysicalDeviceSynchronization2Features_self(dec, (VkPhysicalDeviceSynchronization2Features *)pnext); break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT: + vn_decode_VkPhysicalDeviceFeatures2_pnext(dec, pnext->pNext); + vn_decode_VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT_self(dec, (VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT *)pnext); + break; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT: vn_decode_VkPhysicalDeviceFeatures2_pnext(dec, pnext->pNext); vn_decode_VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT_self(dec, (VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT *)pnext); @@ -10280,6 +10592,14 @@ vn_sizeof_VkPhysicalDeviceFeatures2_pnext_partial(const void *val) size += vn_sizeof_VkPhysicalDeviceFeatures2_pnext_partial(pnext->pNext); size += vn_sizeof_VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT_self_partial((const VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT *)pnext); return size; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT: + if (!vn_cs_renderer_protocol_has_extension(356 /* VK_EXT_depth_clip_control */)) + break; + size += vn_sizeof_simple_pointer(pnext); + size += vn_sizeof_VkStructureType(&pnext->sType); + size += vn_sizeof_VkPhysicalDeviceFeatures2_pnext_partial(pnext->pNext); + size += vn_sizeof_VkPhysicalDeviceDepthClipControlFeaturesEXT_self_partial((const VkPhysicalDeviceDepthClipControlFeaturesEXT *)pnext); + return size; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES: if (!vn_cs_renderer_protocol_has_extension(315 /* VK_KHR_synchronization2 */)) break; @@ -10288,6 +10608,14 @@ vn_sizeof_VkPhysicalDeviceFeatures2_pnext_partial(const void *val) size += vn_sizeof_VkPhysicalDeviceFeatures2_pnext_partial(pnext->pNext); size += vn_sizeof_VkPhysicalDeviceSynchronization2Features_self_partial((const VkPhysicalDeviceSynchronization2Features *)pnext); return size; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT: + if (!vn_cs_renderer_protocol_has_extension(383 /* VK_EXT_primitives_generated_query */)) + break; + size += vn_sizeof_simple_pointer(pnext); + size += vn_sizeof_VkStructureType(&pnext->sType); + size += vn_sizeof_VkPhysicalDeviceFeatures2_pnext_partial(pnext->pNext); + size += vn_sizeof_VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT_self_partial((const VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT *)pnext); + return size; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT: if (!vn_cs_renderer_protocol_has_extension(331 /* VK_EXT_ycbcr_2plane_444_formats */)) break; @@ -10700,6 +11028,14 @@ vn_encode_VkPhysicalDeviceFeatures2_pnext_partial(struct vn_cs_encoder *enc, con vn_encode_VkPhysicalDeviceFeatures2_pnext_partial(enc, pnext->pNext); vn_encode_VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT_self_partial(enc, (const VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT *)pnext); return; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT: + if (!vn_cs_renderer_protocol_has_extension(356 /* VK_EXT_depth_clip_control */)) + break; + vn_encode_simple_pointer(enc, pnext); + vn_encode_VkStructureType(enc, &pnext->sType); + vn_encode_VkPhysicalDeviceFeatures2_pnext_partial(enc, pnext->pNext); + vn_encode_VkPhysicalDeviceDepthClipControlFeaturesEXT_self_partial(enc, (const VkPhysicalDeviceDepthClipControlFeaturesEXT *)pnext); + return; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES: if (!vn_cs_renderer_protocol_has_extension(315 /* VK_KHR_synchronization2 */)) break; @@ -10708,6 +11044,14 @@ vn_encode_VkPhysicalDeviceFeatures2_pnext_partial(struct vn_cs_encoder *enc, con vn_encode_VkPhysicalDeviceFeatures2_pnext_partial(enc, pnext->pNext); vn_encode_VkPhysicalDeviceSynchronization2Features_self_partial(enc, (const VkPhysicalDeviceSynchronization2Features *)pnext); return; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT: + if (!vn_cs_renderer_protocol_has_extension(383 /* VK_EXT_primitives_generated_query */)) + break; + vn_encode_simple_pointer(enc, pnext); + vn_encode_VkStructureType(enc, &pnext->sType); + vn_encode_VkPhysicalDeviceFeatures2_pnext_partial(enc, pnext->pNext); + vn_encode_VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT_self_partial(enc, (const VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT *)pnext); + return; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT: if (!vn_cs_renderer_protocol_has_extension(331 /* VK_EXT_ycbcr_2plane_444_formats */)) break; @@ -11205,6 +11549,14 @@ vn_sizeof_VkDeviceCreateInfo_pnext(const void *val) size += vn_sizeof_VkDeviceCreateInfo_pnext(pnext->pNext); size += vn_sizeof_VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT_self((const VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT *)pnext); return size; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT: + if (!vn_cs_renderer_protocol_has_extension(356 /* VK_EXT_depth_clip_control */)) + break; + size += vn_sizeof_simple_pointer(pnext); + size += vn_sizeof_VkStructureType(&pnext->sType); + size += vn_sizeof_VkDeviceCreateInfo_pnext(pnext->pNext); + size += vn_sizeof_VkPhysicalDeviceDepthClipControlFeaturesEXT_self((const VkPhysicalDeviceDepthClipControlFeaturesEXT *)pnext); + return size; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES: if (!vn_cs_renderer_protocol_has_extension(315 /* VK_KHR_synchronization2 */)) break; @@ -11213,6 +11565,14 @@ vn_sizeof_VkDeviceCreateInfo_pnext(const void *val) size += vn_sizeof_VkDeviceCreateInfo_pnext(pnext->pNext); size += vn_sizeof_VkPhysicalDeviceSynchronization2Features_self((const VkPhysicalDeviceSynchronization2Features *)pnext); return size; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT: + if (!vn_cs_renderer_protocol_has_extension(383 /* VK_EXT_primitives_generated_query */)) + break; + size += vn_sizeof_simple_pointer(pnext); + size += vn_sizeof_VkStructureType(&pnext->sType); + size += vn_sizeof_VkDeviceCreateInfo_pnext(pnext->pNext); + size += vn_sizeof_VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT_self((const VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT *)pnext); + return size; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT: if (!vn_cs_renderer_protocol_has_extension(331 /* VK_EXT_ycbcr_2plane_444_formats */)) break; @@ -11678,6 +12038,14 @@ vn_encode_VkDeviceCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val) vn_encode_VkDeviceCreateInfo_pnext(enc, pnext->pNext); vn_encode_VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT_self(enc, (const VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT *)pnext); return; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT: + if (!vn_cs_renderer_protocol_has_extension(356 /* VK_EXT_depth_clip_control */)) + break; + vn_encode_simple_pointer(enc, pnext); + vn_encode_VkStructureType(enc, &pnext->sType); + vn_encode_VkDeviceCreateInfo_pnext(enc, pnext->pNext); + vn_encode_VkPhysicalDeviceDepthClipControlFeaturesEXT_self(enc, (const VkPhysicalDeviceDepthClipControlFeaturesEXT *)pnext); + return; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES: if (!vn_cs_renderer_protocol_has_extension(315 /* VK_KHR_synchronization2 */)) break; @@ -11686,6 +12054,14 @@ vn_encode_VkDeviceCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val) vn_encode_VkDeviceCreateInfo_pnext(enc, pnext->pNext); vn_encode_VkPhysicalDeviceSynchronization2Features_self(enc, (const VkPhysicalDeviceSynchronization2Features *)pnext); return; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT: + if (!vn_cs_renderer_protocol_has_extension(383 /* VK_EXT_primitives_generated_query */)) + break; + vn_encode_simple_pointer(enc, pnext); + vn_encode_VkStructureType(enc, &pnext->sType); + vn_encode_VkDeviceCreateInfo_pnext(enc, pnext->pNext); + vn_encode_VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT_self(enc, (const VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT *)pnext); + return; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT: if (!vn_cs_renderer_protocol_has_extension(331 /* VK_EXT_ycbcr_2plane_444_formats */)) break; @@ -11892,6 +12268,114 @@ vn_encode_VkPhysicalDeviceMultiDrawPropertiesEXT_partial(struct vn_cs_encoder *e vn_encode_VkPhysicalDeviceMultiDrawPropertiesEXT_self_partial(enc, val); } +/* struct VkPhysicalDevicePushDescriptorPropertiesKHR chain */ + +static inline size_t +vn_sizeof_VkPhysicalDevicePushDescriptorPropertiesKHR_pnext(const void *val) +{ + /* no known/supported struct */ + return vn_sizeof_simple_pointer(NULL); +} + +static inline size_t +vn_sizeof_VkPhysicalDevicePushDescriptorPropertiesKHR_self(const VkPhysicalDevicePushDescriptorPropertiesKHR *val) +{ + size_t size = 0; + /* skip val->{sType,pNext} */ + size += vn_sizeof_uint32_t(&val->maxPushDescriptors); + return size; +} + +static inline size_t +vn_sizeof_VkPhysicalDevicePushDescriptorPropertiesKHR(const VkPhysicalDevicePushDescriptorPropertiesKHR *val) +{ + size_t size = 0; + + size += vn_sizeof_VkStructureType(&val->sType); + size += vn_sizeof_VkPhysicalDevicePushDescriptorPropertiesKHR_pnext(val->pNext); + size += vn_sizeof_VkPhysicalDevicePushDescriptorPropertiesKHR_self(val); + + return size; +} + +static inline void +vn_decode_VkPhysicalDevicePushDescriptorPropertiesKHR_pnext(struct vn_cs_decoder *dec, const void *val) +{ + /* no known/supported struct */ + if (vn_decode_simple_pointer(dec)) + assert(false); +} + +static inline void +vn_decode_VkPhysicalDevicePushDescriptorPropertiesKHR_self(struct vn_cs_decoder *dec, VkPhysicalDevicePushDescriptorPropertiesKHR *val) +{ + /* skip val->{sType,pNext} */ + vn_decode_uint32_t(dec, &val->maxPushDescriptors); +} + +static inline void +vn_decode_VkPhysicalDevicePushDescriptorPropertiesKHR(struct vn_cs_decoder *dec, VkPhysicalDevicePushDescriptorPropertiesKHR *val) +{ + VkStructureType stype; + vn_decode_VkStructureType(dec, &stype); + assert(stype == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR); + + assert(val->sType == stype); + vn_decode_VkPhysicalDevicePushDescriptorPropertiesKHR_pnext(dec, val->pNext); + vn_decode_VkPhysicalDevicePushDescriptorPropertiesKHR_self(dec, val); +} + +static inline size_t +vn_sizeof_VkPhysicalDevicePushDescriptorPropertiesKHR_pnext_partial(const void *val) +{ + /* no known/supported struct */ + return vn_sizeof_simple_pointer(NULL); +} + +static inline size_t +vn_sizeof_VkPhysicalDevicePushDescriptorPropertiesKHR_self_partial(const VkPhysicalDevicePushDescriptorPropertiesKHR *val) +{ + size_t size = 0; + /* skip val->{sType,pNext} */ + /* skip val->maxPushDescriptors */ + return size; +} + +static inline size_t +vn_sizeof_VkPhysicalDevicePushDescriptorPropertiesKHR_partial(const VkPhysicalDevicePushDescriptorPropertiesKHR *val) +{ + size_t size = 0; + + size += vn_sizeof_VkStructureType(&val->sType); + size += vn_sizeof_VkPhysicalDevicePushDescriptorPropertiesKHR_pnext_partial(val->pNext); + size += vn_sizeof_VkPhysicalDevicePushDescriptorPropertiesKHR_self_partial(val); + + return size; +} + +static inline void +vn_encode_VkPhysicalDevicePushDescriptorPropertiesKHR_pnext_partial(struct vn_cs_encoder *enc, const void *val) +{ + /* no known/supported struct */ + vn_encode_simple_pointer(enc, NULL); +} + +static inline void +vn_encode_VkPhysicalDevicePushDescriptorPropertiesKHR_self_partial(struct vn_cs_encoder *enc, const VkPhysicalDevicePushDescriptorPropertiesKHR *val) +{ + /* skip val->{sType,pNext} */ + /* skip val->maxPushDescriptors */ +} + +static inline void +vn_encode_VkPhysicalDevicePushDescriptorPropertiesKHR_partial(struct vn_cs_encoder *enc, const VkPhysicalDevicePushDescriptorPropertiesKHR *val) +{ + assert(val->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR); + vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR }); + vn_encode_VkPhysicalDevicePushDescriptorPropertiesKHR_pnext_partial(enc, val->pNext); + vn_encode_VkPhysicalDevicePushDescriptorPropertiesKHR_self_partial(enc, val); +} + /* struct VkConformanceVersion */ static inline size_t @@ -15792,6 +16276,14 @@ vn_sizeof_VkPhysicalDeviceProperties2_pnext(const void *val) size += vn_sizeof_VkPhysicalDeviceProperties2_pnext(pnext->pNext); size += vn_sizeof_VkPhysicalDeviceMultiDrawPropertiesEXT_self((const VkPhysicalDeviceMultiDrawPropertiesEXT *)pnext); return size; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR: + if (!vn_cs_renderer_protocol_has_extension(81 /* VK_KHR_push_descriptor */)) + break; + size += vn_sizeof_simple_pointer(pnext); + size += vn_sizeof_VkStructureType(&pnext->sType); + size += vn_sizeof_VkPhysicalDeviceProperties2_pnext(pnext->pNext); + size += vn_sizeof_VkPhysicalDevicePushDescriptorPropertiesKHR_self((const VkPhysicalDevicePushDescriptorPropertiesKHR *)pnext); + return size; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES: size += vn_sizeof_simple_pointer(pnext); size += vn_sizeof_VkStructureType(&pnext->sType); @@ -16034,6 +16526,10 @@ vn_decode_VkPhysicalDeviceProperties2_pnext(struct vn_cs_decoder *dec, const voi vn_decode_VkPhysicalDeviceProperties2_pnext(dec, pnext->pNext); vn_decode_VkPhysicalDeviceMultiDrawPropertiesEXT_self(dec, (VkPhysicalDeviceMultiDrawPropertiesEXT *)pnext); break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR: + vn_decode_VkPhysicalDeviceProperties2_pnext(dec, pnext->pNext); + vn_decode_VkPhysicalDevicePushDescriptorPropertiesKHR_self(dec, (VkPhysicalDevicePushDescriptorPropertiesKHR *)pnext); + break; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES: vn_decode_VkPhysicalDeviceProperties2_pnext(dec, pnext->pNext); vn_decode_VkPhysicalDeviceDriverProperties_self(dec, (VkPhysicalDeviceDriverProperties *)pnext); @@ -16183,6 +16679,14 @@ vn_sizeof_VkPhysicalDeviceProperties2_pnext_partial(const void *val) size += vn_sizeof_VkPhysicalDeviceProperties2_pnext_partial(pnext->pNext); size += vn_sizeof_VkPhysicalDeviceMultiDrawPropertiesEXT_self_partial((const VkPhysicalDeviceMultiDrawPropertiesEXT *)pnext); return size; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR: + if (!vn_cs_renderer_protocol_has_extension(81 /* VK_KHR_push_descriptor */)) + break; + size += vn_sizeof_simple_pointer(pnext); + size += vn_sizeof_VkStructureType(&pnext->sType); + size += vn_sizeof_VkPhysicalDeviceProperties2_pnext_partial(pnext->pNext); + size += vn_sizeof_VkPhysicalDevicePushDescriptorPropertiesKHR_self_partial((const VkPhysicalDevicePushDescriptorPropertiesKHR *)pnext); + return size; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES: size += vn_sizeof_simple_pointer(pnext); size += vn_sizeof_VkStructureType(&pnext->sType); @@ -16417,6 +16921,14 @@ vn_encode_VkPhysicalDeviceProperties2_pnext_partial(struct vn_cs_encoder *enc, c vn_encode_VkPhysicalDeviceProperties2_pnext_partial(enc, pnext->pNext); vn_encode_VkPhysicalDeviceMultiDrawPropertiesEXT_self_partial(enc, (const VkPhysicalDeviceMultiDrawPropertiesEXT *)pnext); return; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR: + if (!vn_cs_renderer_protocol_has_extension(81 /* VK_KHR_push_descriptor */)) + break; + vn_encode_simple_pointer(enc, pnext); + vn_encode_VkStructureType(enc, &pnext->sType); + vn_encode_VkPhysicalDeviceProperties2_pnext_partial(enc, pnext->pNext); + vn_encode_VkPhysicalDevicePushDescriptorPropertiesKHR_self_partial(enc, (const VkPhysicalDevicePushDescriptorPropertiesKHR *)pnext); + return; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES: vn_encode_simple_pointer(enc, pnext); vn_encode_VkStructureType(enc, &pnext->sType); diff --git a/src/virtio/venus-protocol/vn_protocol_driver_info.h b/src/virtio/venus-protocol/vn_protocol_driver_info.h index 97771c81af8..cc506d15513 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_info.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_info.h @@ -19,14 +19,15 @@ struct vn_info_extension { }; /* sorted by extension names for bsearch */ -static const uint32_t _vn_info_extension_count = 95; -static const struct vn_info_extension _vn_info_extensions[95] = { +static const uint32_t _vn_info_extension_count = 98; +static const struct vn_info_extension _vn_info_extensions[98] = { { "VK_EXT_4444_formats", 341, 1 }, { "VK_EXT_calibrated_timestamps", 185, 2 }, { "VK_EXT_command_serialization", 384, 0 }, { "VK_EXT_conditional_rendering", 82, 2 }, { "VK_EXT_conservative_rasterization", 102, 1 }, { "VK_EXT_custom_border_color", 288, 12 }, + { "VK_EXT_depth_clip_control", 356, 1 }, { "VK_EXT_depth_clip_enable", 103, 1 }, { "VK_EXT_descriptor_indexing", 162, 2 }, { "VK_EXT_extended_dynamic_state", 268, 1 }, @@ -44,6 +45,7 @@ static const struct vn_info_extension _vn_info_extensions[95] = { { "VK_EXT_pipeline_creation_cache_control", 298, 3 }, { "VK_EXT_pipeline_creation_feedback", 193, 1 }, { "VK_EXT_primitive_topology_list_restart", 357, 1 }, + { "VK_EXT_primitives_generated_query", 383, 1 }, { "VK_EXT_private_data", 296, 1 }, { "VK_EXT_provoking_vertex", 255, 1 }, { "VK_EXT_queue_family_foreign", 127, 1 }, @@ -94,6 +96,7 @@ static const struct vn_info_extension _vn_info_extensions[95] = { { "VK_KHR_maintenance3", 169, 1 }, { "VK_KHR_maintenance4", 414, 2 }, { "VK_KHR_multiview", 54, 1 }, + { "VK_KHR_push_descriptor", 81, 2 }, { "VK_KHR_relaxed_block_layout", 145, 1 }, { "VK_KHR_sampler_mirror_clamp_to_edge", 15, 3 }, { "VK_KHR_sampler_ycbcr_conversion", 157, 14 }, diff --git a/src/virtio/venus-protocol/vn_protocol_driver_pipeline.h b/src/virtio/venus-protocol/vn_protocol_driver_pipeline.h index 0909eae731b..cee6dd2b2be 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_pipeline.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_pipeline.h @@ -700,12 +700,84 @@ vn_encode_VkPipelineTessellationStateCreateInfo(struct vn_cs_encoder *enc, const vn_encode_VkPipelineTessellationStateCreateInfo_self(enc, val); } +/* struct VkPipelineViewportDepthClipControlCreateInfoEXT chain */ + +static inline size_t +vn_sizeof_VkPipelineViewportDepthClipControlCreateInfoEXT_pnext(const void *val) +{ + /* no known/supported struct */ + return vn_sizeof_simple_pointer(NULL); +} + +static inline size_t +vn_sizeof_VkPipelineViewportDepthClipControlCreateInfoEXT_self(const VkPipelineViewportDepthClipControlCreateInfoEXT *val) +{ + size_t size = 0; + /* skip val->{sType,pNext} */ + size += vn_sizeof_VkBool32(&val->negativeOneToOne); + return size; +} + +static inline size_t +vn_sizeof_VkPipelineViewportDepthClipControlCreateInfoEXT(const VkPipelineViewportDepthClipControlCreateInfoEXT *val) +{ + size_t size = 0; + + size += vn_sizeof_VkStructureType(&val->sType); + size += vn_sizeof_VkPipelineViewportDepthClipControlCreateInfoEXT_pnext(val->pNext); + size += vn_sizeof_VkPipelineViewportDepthClipControlCreateInfoEXT_self(val); + + return size; +} + +static inline void +vn_encode_VkPipelineViewportDepthClipControlCreateInfoEXT_pnext(struct vn_cs_encoder *enc, const void *val) +{ + /* no known/supported struct */ + vn_encode_simple_pointer(enc, NULL); +} + +static inline void +vn_encode_VkPipelineViewportDepthClipControlCreateInfoEXT_self(struct vn_cs_encoder *enc, const VkPipelineViewportDepthClipControlCreateInfoEXT *val) +{ + /* skip val->{sType,pNext} */ + vn_encode_VkBool32(enc, &val->negativeOneToOne); +} + +static inline void +vn_encode_VkPipelineViewportDepthClipControlCreateInfoEXT(struct vn_cs_encoder *enc, const VkPipelineViewportDepthClipControlCreateInfoEXT *val) +{ + assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT); + vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT }); + vn_encode_VkPipelineViewportDepthClipControlCreateInfoEXT_pnext(enc, val->pNext); + vn_encode_VkPipelineViewportDepthClipControlCreateInfoEXT_self(enc, val); +} + /* struct VkPipelineViewportStateCreateInfo chain */ static inline size_t vn_sizeof_VkPipelineViewportStateCreateInfo_pnext(const void *val) { - /* no known/supported struct */ + const VkBaseInStructure *pnext = val; + size_t size = 0; + + while (pnext) { + switch ((int32_t)pnext->sType) { + case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT: + if (!vn_cs_renderer_protocol_has_extension(356 /* VK_EXT_depth_clip_control */)) + break; + size += vn_sizeof_simple_pointer(pnext); + size += vn_sizeof_VkStructureType(&pnext->sType); + size += vn_sizeof_VkPipelineViewportStateCreateInfo_pnext(pnext->pNext); + size += vn_sizeof_VkPipelineViewportDepthClipControlCreateInfoEXT_self((const VkPipelineViewportDepthClipControlCreateInfoEXT *)pnext); + return size; + default: + /* ignore unknown/unsupported struct */ + break; + } + pnext = pnext->pNext; + } + return vn_sizeof_simple_pointer(NULL); } @@ -749,7 +821,25 @@ vn_sizeof_VkPipelineViewportStateCreateInfo(const VkPipelineViewportStateCreateI static inline void vn_encode_VkPipelineViewportStateCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val) { - /* no known/supported struct */ + const VkBaseInStructure *pnext = val; + + while (pnext) { + switch ((int32_t)pnext->sType) { + case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT: + if (!vn_cs_renderer_protocol_has_extension(356 /* VK_EXT_depth_clip_control */)) + break; + vn_encode_simple_pointer(enc, pnext); + vn_encode_VkStructureType(enc, &pnext->sType); + vn_encode_VkPipelineViewportStateCreateInfo_pnext(enc, pnext->pNext); + vn_encode_VkPipelineViewportDepthClipControlCreateInfoEXT_self(enc, (const VkPipelineViewportDepthClipControlCreateInfoEXT *)pnext); + return; + default: + /* ignore unknown/unsupported struct */ + break; + } + pnext = pnext->pNext; + } + vn_encode_simple_pointer(enc, NULL); } diff --git a/src/virtio/venus-protocol/vn_protocol_driver_structs.h b/src/virtio/venus-protocol/vn_protocol_driver_structs.h index 73553f1ee53..eb3ec5699a7 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_structs.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_structs.h @@ -947,6 +947,251 @@ vn_encode_VkMutableDescriptorTypeCreateInfoEXT(struct vn_cs_encoder *enc, const vn_encode_VkMutableDescriptorTypeCreateInfoEXT_self(enc, val); } +/* struct VkDescriptorImageInfo */ + +static inline size_t +vn_sizeof_VkDescriptorImageInfo(const VkDescriptorImageInfo *val) +{ + size_t size = 0; + size += vn_sizeof_VkSampler(&val->sampler); + size += vn_sizeof_VkImageView(&val->imageView); + size += vn_sizeof_VkImageLayout(&val->imageLayout); + return size; +} + +static inline void +vn_encode_VkDescriptorImageInfo(struct vn_cs_encoder *enc, const VkDescriptorImageInfo *val) +{ + vn_encode_VkSampler(enc, &val->sampler); + vn_encode_VkImageView(enc, &val->imageView); + vn_encode_VkImageLayout(enc, &val->imageLayout); +} + +/* struct VkDescriptorBufferInfo */ + +static inline size_t +vn_sizeof_VkDescriptorBufferInfo(const VkDescriptorBufferInfo *val) +{ + size_t size = 0; + size += vn_sizeof_VkBuffer(&val->buffer); + size += vn_sizeof_VkDeviceSize(&val->offset); + size += vn_sizeof_VkDeviceSize(&val->range); + return size; +} + +static inline void +vn_encode_VkDescriptorBufferInfo(struct vn_cs_encoder *enc, const VkDescriptorBufferInfo *val) +{ + vn_encode_VkBuffer(enc, &val->buffer); + vn_encode_VkDeviceSize(enc, &val->offset); + vn_encode_VkDeviceSize(enc, &val->range); +} + +/* struct VkWriteDescriptorSetInlineUniformBlock chain */ + +static inline size_t +vn_sizeof_VkWriteDescriptorSetInlineUniformBlock_pnext(const void *val) +{ + /* no known/supported struct */ + return vn_sizeof_simple_pointer(NULL); +} + +static inline size_t +vn_sizeof_VkWriteDescriptorSetInlineUniformBlock_self(const VkWriteDescriptorSetInlineUniformBlock *val) +{ + size_t size = 0; + /* skip val->{sType,pNext} */ + size += vn_sizeof_uint32_t(&val->dataSize); + if (val->pData) { + size += vn_sizeof_array_size(val->dataSize); + size += vn_sizeof_blob_array(val->pData, val->dataSize); + } else { + size += vn_sizeof_array_size(0); + } + return size; +} + +static inline size_t +vn_sizeof_VkWriteDescriptorSetInlineUniformBlock(const VkWriteDescriptorSetInlineUniformBlock *val) +{ + size_t size = 0; + + size += vn_sizeof_VkStructureType(&val->sType); + size += vn_sizeof_VkWriteDescriptorSetInlineUniformBlock_pnext(val->pNext); + size += vn_sizeof_VkWriteDescriptorSetInlineUniformBlock_self(val); + + return size; +} + +static inline void +vn_encode_VkWriteDescriptorSetInlineUniformBlock_pnext(struct vn_cs_encoder *enc, const void *val) +{ + /* no known/supported struct */ + vn_encode_simple_pointer(enc, NULL); +} + +static inline void +vn_encode_VkWriteDescriptorSetInlineUniformBlock_self(struct vn_cs_encoder *enc, const VkWriteDescriptorSetInlineUniformBlock *val) +{ + /* skip val->{sType,pNext} */ + vn_encode_uint32_t(enc, &val->dataSize); + if (val->pData) { + vn_encode_array_size(enc, val->dataSize); + vn_encode_blob_array(enc, val->pData, val->dataSize); + } else { + vn_encode_array_size(enc, 0); + } +} + +static inline void +vn_encode_VkWriteDescriptorSetInlineUniformBlock(struct vn_cs_encoder *enc, const VkWriteDescriptorSetInlineUniformBlock *val) +{ + assert(val->sType == VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK); + vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK }); + vn_encode_VkWriteDescriptorSetInlineUniformBlock_pnext(enc, val->pNext); + vn_encode_VkWriteDescriptorSetInlineUniformBlock_self(enc, val); +} + +/* struct VkWriteDescriptorSet chain */ + +static inline size_t +vn_sizeof_VkWriteDescriptorSet_pnext(const void *val) +{ + const VkBaseInStructure *pnext = val; + size_t size = 0; + + while (pnext) { + switch ((int32_t)pnext->sType) { + case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK: + if (!vn_cs_renderer_protocol_has_extension(139 /* VK_EXT_inline_uniform_block */)) + break; + size += vn_sizeof_simple_pointer(pnext); + size += vn_sizeof_VkStructureType(&pnext->sType); + size += vn_sizeof_VkWriteDescriptorSet_pnext(pnext->pNext); + size += vn_sizeof_VkWriteDescriptorSetInlineUniformBlock_self((const VkWriteDescriptorSetInlineUniformBlock *)pnext); + return size; + default: + /* ignore unknown/unsupported struct */ + break; + } + pnext = pnext->pNext; + } + + return vn_sizeof_simple_pointer(NULL); +} + +static inline size_t +vn_sizeof_VkWriteDescriptorSet_self(const VkWriteDescriptorSet *val) +{ + size_t size = 0; + /* skip val->{sType,pNext} */ + size += vn_sizeof_VkDescriptorSet(&val->dstSet); + size += vn_sizeof_uint32_t(&val->dstBinding); + size += vn_sizeof_uint32_t(&val->dstArrayElement); + size += vn_sizeof_uint32_t(&val->descriptorCount); + size += vn_sizeof_VkDescriptorType(&val->descriptorType); + if (val->pImageInfo) { + size += vn_sizeof_array_size(val->descriptorCount); + for (uint32_t i = 0; i < val->descriptorCount; i++) + size += vn_sizeof_VkDescriptorImageInfo(&val->pImageInfo[i]); + } else { + size += vn_sizeof_array_size(0); + } + if (val->pBufferInfo) { + size += vn_sizeof_array_size(val->descriptorCount); + for (uint32_t i = 0; i < val->descriptorCount; i++) + size += vn_sizeof_VkDescriptorBufferInfo(&val->pBufferInfo[i]); + } else { + size += vn_sizeof_array_size(0); + } + if (val->pTexelBufferView) { + size += vn_sizeof_array_size(val->descriptorCount); + for (uint32_t i = 0; i < val->descriptorCount; i++) + size += vn_sizeof_VkBufferView(&val->pTexelBufferView[i]); + } else { + size += vn_sizeof_array_size(0); + } + return size; +} + +static inline size_t +vn_sizeof_VkWriteDescriptorSet(const VkWriteDescriptorSet *val) +{ + size_t size = 0; + + size += vn_sizeof_VkStructureType(&val->sType); + size += vn_sizeof_VkWriteDescriptorSet_pnext(val->pNext); + size += vn_sizeof_VkWriteDescriptorSet_self(val); + + return size; +} + +static inline void +vn_encode_VkWriteDescriptorSet_pnext(struct vn_cs_encoder *enc, const void *val) +{ + const VkBaseInStructure *pnext = val; + + while (pnext) { + switch ((int32_t)pnext->sType) { + case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK: + if (!vn_cs_renderer_protocol_has_extension(139 /* VK_EXT_inline_uniform_block */)) + break; + vn_encode_simple_pointer(enc, pnext); + vn_encode_VkStructureType(enc, &pnext->sType); + vn_encode_VkWriteDescriptorSet_pnext(enc, pnext->pNext); + vn_encode_VkWriteDescriptorSetInlineUniformBlock_self(enc, (const VkWriteDescriptorSetInlineUniformBlock *)pnext); + return; + default: + /* ignore unknown/unsupported struct */ + break; + } + pnext = pnext->pNext; + } + + vn_encode_simple_pointer(enc, NULL); +} + +static inline void +vn_encode_VkWriteDescriptorSet_self(struct vn_cs_encoder *enc, const VkWriteDescriptorSet *val) +{ + /* skip val->{sType,pNext} */ + vn_encode_VkDescriptorSet(enc, &val->dstSet); + vn_encode_uint32_t(enc, &val->dstBinding); + vn_encode_uint32_t(enc, &val->dstArrayElement); + vn_encode_uint32_t(enc, &val->descriptorCount); + vn_encode_VkDescriptorType(enc, &val->descriptorType); + if (val->pImageInfo) { + vn_encode_array_size(enc, val->descriptorCount); + for (uint32_t i = 0; i < val->descriptorCount; i++) + vn_encode_VkDescriptorImageInfo(enc, &val->pImageInfo[i]); + } else { + vn_encode_array_size(enc, 0); + } + if (val->pBufferInfo) { + vn_encode_array_size(enc, val->descriptorCount); + for (uint32_t i = 0; i < val->descriptorCount; i++) + vn_encode_VkDescriptorBufferInfo(enc, &val->pBufferInfo[i]); + } else { + vn_encode_array_size(enc, 0); + } + if (val->pTexelBufferView) { + vn_encode_array_size(enc, val->descriptorCount); + for (uint32_t i = 0; i < val->descriptorCount; i++) + vn_encode_VkBufferView(enc, &val->pTexelBufferView[i]); + } else { + vn_encode_array_size(enc, 0); + } +} + +static inline void +vn_encode_VkWriteDescriptorSet(struct vn_cs_encoder *enc, const VkWriteDescriptorSet *val) +{ + assert(val->sType == VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET); + vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET }); + vn_encode_VkWriteDescriptorSet_pnext(enc, val->pNext); + vn_encode_VkWriteDescriptorSet_self(enc, val); +} + /* struct VkMemoryDedicatedRequirements chain */ static inline size_t