-/* This file is generated by venus-protocol git-cca9a548. */
+/* This file is generated by venus-protocol git-ed9bd971. */
/*
* Copyright 2020 Google LLC
#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
/* 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;
}
}
+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];
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();
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,
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
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
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
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;
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;
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;
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;
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);
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;
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;
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;
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;
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;
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;
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;
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;
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
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);
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);
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);
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);
};
/* 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 },
{ "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 },
{ "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 },
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);
}
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);
}
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