diff --git a/src/virtio/venus-protocol/vn_protocol_driver.h b/src/virtio/venus-protocol/vn_protocol_driver.h index 94f3cf3ede5..ab9db7cb62b 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-06940dd5. */ +/* This file is generated by venus-protocol git-9fa07f3c. */ /* * 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 26b7c88691c..f4e6ea434e7 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_command_buffer.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_command_buffer.h @@ -7779,6 +7779,178 @@ static inline void vn_decode_vkCmdDrawIndirectByteCountEXT_reply(struct vn_cs_de /* skip vertexStride */ } +static inline size_t vn_sizeof_vkCmdDrawMeshTasksEXT(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ) +{ + const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCmdDrawMeshTasksEXT_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_uint32_t(&groupCountX); + cmd_size += vn_sizeof_uint32_t(&groupCountY); + cmd_size += vn_sizeof_uint32_t(&groupCountZ); + + return cmd_size; +} + +static inline void vn_encode_vkCmdDrawMeshTasksEXT(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ) +{ + const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCmdDrawMeshTasksEXT_EXT; + + vn_encode_VkCommandTypeEXT(enc, &cmd_type); + vn_encode_VkFlags(enc, &cmd_flags); + + vn_encode_VkCommandBuffer(enc, &commandBuffer); + vn_encode_uint32_t(enc, &groupCountX); + vn_encode_uint32_t(enc, &groupCountY); + vn_encode_uint32_t(enc, &groupCountZ); +} + +static inline size_t vn_sizeof_vkCmdDrawMeshTasksEXT_reply(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ) +{ + const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCmdDrawMeshTasksEXT_EXT; + size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type); + + /* skip commandBuffer */ + /* skip groupCountX */ + /* skip groupCountY */ + /* skip groupCountZ */ + + return cmd_size; +} + +static inline void vn_decode_vkCmdDrawMeshTasksEXT_reply(struct vn_cs_decoder *dec, VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ) +{ + VkCommandTypeEXT command_type; + vn_decode_VkCommandTypeEXT(dec, &command_type); + assert(command_type == VK_COMMAND_TYPE_vkCmdDrawMeshTasksEXT_EXT); + + /* skip commandBuffer */ + /* skip groupCountX */ + /* skip groupCountY */ + /* skip groupCountZ */ +} + +static inline size_t vn_sizeof_vkCmdDrawMeshTasksIndirectEXT(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride) +{ + const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCmdDrawMeshTasksIndirectEXT_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_VkBuffer(&buffer); + cmd_size += vn_sizeof_VkDeviceSize(&offset); + cmd_size += vn_sizeof_uint32_t(&drawCount); + cmd_size += vn_sizeof_uint32_t(&stride); + + return cmd_size; +} + +static inline void vn_encode_vkCmdDrawMeshTasksIndirectEXT(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride) +{ + const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCmdDrawMeshTasksIndirectEXT_EXT; + + vn_encode_VkCommandTypeEXT(enc, &cmd_type); + vn_encode_VkFlags(enc, &cmd_flags); + + vn_encode_VkCommandBuffer(enc, &commandBuffer); + vn_encode_VkBuffer(enc, &buffer); + vn_encode_VkDeviceSize(enc, &offset); + vn_encode_uint32_t(enc, &drawCount); + vn_encode_uint32_t(enc, &stride); +} + +static inline size_t vn_sizeof_vkCmdDrawMeshTasksIndirectEXT_reply(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride) +{ + const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCmdDrawMeshTasksIndirectEXT_EXT; + size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type); + + /* skip commandBuffer */ + /* skip buffer */ + /* skip offset */ + /* skip drawCount */ + /* skip stride */ + + return cmd_size; +} + +static inline void vn_decode_vkCmdDrawMeshTasksIndirectEXT_reply(struct vn_cs_decoder *dec, VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride) +{ + VkCommandTypeEXT command_type; + vn_decode_VkCommandTypeEXT(dec, &command_type); + assert(command_type == VK_COMMAND_TYPE_vkCmdDrawMeshTasksIndirectEXT_EXT); + + /* skip commandBuffer */ + /* skip buffer */ + /* skip offset */ + /* skip drawCount */ + /* skip stride */ +} + +static inline size_t vn_sizeof_vkCmdDrawMeshTasksIndirectCountEXT(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride) +{ + const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCmdDrawMeshTasksIndirectCountEXT_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_VkBuffer(&buffer); + cmd_size += vn_sizeof_VkDeviceSize(&offset); + cmd_size += vn_sizeof_VkBuffer(&countBuffer); + cmd_size += vn_sizeof_VkDeviceSize(&countBufferOffset); + cmd_size += vn_sizeof_uint32_t(&maxDrawCount); + cmd_size += vn_sizeof_uint32_t(&stride); + + return cmd_size; +} + +static inline void vn_encode_vkCmdDrawMeshTasksIndirectCountEXT(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride) +{ + const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCmdDrawMeshTasksIndirectCountEXT_EXT; + + vn_encode_VkCommandTypeEXT(enc, &cmd_type); + vn_encode_VkFlags(enc, &cmd_flags); + + vn_encode_VkCommandBuffer(enc, &commandBuffer); + vn_encode_VkBuffer(enc, &buffer); + vn_encode_VkDeviceSize(enc, &offset); + vn_encode_VkBuffer(enc, &countBuffer); + vn_encode_VkDeviceSize(enc, &countBufferOffset); + vn_encode_uint32_t(enc, &maxDrawCount); + vn_encode_uint32_t(enc, &stride); +} + +static inline size_t vn_sizeof_vkCmdDrawMeshTasksIndirectCountEXT_reply(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride) +{ + const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCmdDrawMeshTasksIndirectCountEXT_EXT; + size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type); + + /* skip commandBuffer */ + /* skip buffer */ + /* skip offset */ + /* skip countBuffer */ + /* skip countBufferOffset */ + /* skip maxDrawCount */ + /* skip stride */ + + return cmd_size; +} + +static inline void vn_decode_vkCmdDrawMeshTasksIndirectCountEXT_reply(struct vn_cs_decoder *dec, VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride) +{ + VkCommandTypeEXT command_type; + vn_decode_VkCommandTypeEXT(dec, &command_type); + assert(command_type == VK_COMMAND_TYPE_vkCmdDrawMeshTasksIndirectCountEXT_EXT); + + /* skip commandBuffer */ + /* skip buffer */ + /* skip offset */ + /* skip countBuffer */ + /* skip countBufferOffset */ + /* skip maxDrawCount */ + /* skip stride */ +} + static inline size_t vn_sizeof_vkCmdCopyAccelerationStructureKHR(VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureInfoKHR* pInfo) { const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCmdCopyAccelerationStructureKHR_EXT; @@ -13016,6 +13188,69 @@ static inline void vn_submit_vkCmdDrawIndirectByteCountEXT(struct vn_ring *vn_ri } } +static inline void vn_submit_vkCmdDrawMeshTasksEXT(struct vn_ring *vn_ring, VkCommandFlagsEXT cmd_flags, VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ, struct vn_ring_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_vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ); + 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_vkCmdDrawMeshTasksEXT_reply(commandBuffer, groupCountX, groupCountY, groupCountZ) : 0; + + struct vn_cs_encoder *enc = vn_ring_submit_command_init(vn_ring, submit, cmd_data, cmd_size, reply_size); + if (cmd_size) { + vn_encode_vkCmdDrawMeshTasksEXT(enc, cmd_flags, commandBuffer, groupCountX, groupCountY, groupCountZ); + vn_ring_submit_command(vn_ring, submit); + if (cmd_data != local_cmd_data) + free(cmd_data); + } +} + +static inline void vn_submit_vkCmdDrawMeshTasksIndirectEXT(struct vn_ring *vn_ring, VkCommandFlagsEXT cmd_flags, VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride, struct vn_ring_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_vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride); + 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_vkCmdDrawMeshTasksIndirectEXT_reply(commandBuffer, buffer, offset, drawCount, stride) : 0; + + struct vn_cs_encoder *enc = vn_ring_submit_command_init(vn_ring, submit, cmd_data, cmd_size, reply_size); + if (cmd_size) { + vn_encode_vkCmdDrawMeshTasksIndirectEXT(enc, cmd_flags, commandBuffer, buffer, offset, drawCount, stride); + vn_ring_submit_command(vn_ring, submit); + if (cmd_data != local_cmd_data) + free(cmd_data); + } +} + +static inline void vn_submit_vkCmdDrawMeshTasksIndirectCountEXT(struct vn_ring *vn_ring, VkCommandFlagsEXT cmd_flags, VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, struct vn_ring_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_vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride); + 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_vkCmdDrawMeshTasksIndirectCountEXT_reply(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) : 0; + + struct vn_cs_encoder *enc = vn_ring_submit_command_init(vn_ring, submit, cmd_data, cmd_size, reply_size); + if (cmd_size) { + vn_encode_vkCmdDrawMeshTasksIndirectCountEXT(enc, cmd_flags, commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride); + vn_ring_submit_command(vn_ring, submit); + if (cmd_data != local_cmd_data) + free(cmd_data); + } +} + static inline void vn_submit_vkCmdCopyAccelerationStructureKHR(struct vn_ring *vn_ring, VkCommandFlagsEXT cmd_flags, VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureInfoKHR* pInfo, struct vn_ring_submit_command *submit) { uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE]; @@ -15027,6 +15262,24 @@ static inline void vn_async_vkCmdDrawIndirectByteCountEXT(struct vn_ring *vn_rin vn_submit_vkCmdDrawIndirectByteCountEXT(vn_ring, 0, commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, &submit); } +static inline void vn_async_vkCmdDrawMeshTasksEXT(struct vn_ring *vn_ring, VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ) +{ + struct vn_ring_submit_command submit; + vn_submit_vkCmdDrawMeshTasksEXT(vn_ring, 0, commandBuffer, groupCountX, groupCountY, groupCountZ, &submit); +} + +static inline void vn_async_vkCmdDrawMeshTasksIndirectEXT(struct vn_ring *vn_ring, VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride) +{ + struct vn_ring_submit_command submit; + vn_submit_vkCmdDrawMeshTasksIndirectEXT(vn_ring, 0, commandBuffer, buffer, offset, drawCount, stride, &submit); +} + +static inline void vn_async_vkCmdDrawMeshTasksIndirectCountEXT(struct vn_ring *vn_ring, VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride) +{ + struct vn_ring_submit_command submit; + vn_submit_vkCmdDrawMeshTasksIndirectCountEXT(vn_ring, 0, commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, &submit); +} + static inline void vn_async_vkCmdCopyAccelerationStructureKHR(struct vn_ring *vn_ring, VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureInfoKHR* pInfo) { struct vn_ring_submit_command submit; diff --git a/src/virtio/venus-protocol/vn_protocol_driver_defines.h b/src/virtio/venus-protocol/vn_protocol_driver_defines.h index 9557f0bb08d..cf5e9265964 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_defines.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_defines.h @@ -462,6 +462,9 @@ typedef enum VkCommandTypeEXT { VK_COMMAND_TYPE_vkCmdSetAttachmentFeedbackLoopEnableEXT_EXT = 329, VK_COMMAND_TYPE_vkCmdSetDepthClampRangeEXT_EXT = 330, VK_COMMAND_TYPE_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR_EXT = 331, + VK_COMMAND_TYPE_vkCmdDrawMeshTasksEXT_EXT = 332, + VK_COMMAND_TYPE_vkCmdDrawMeshTasksIndirectEXT_EXT = 333, + VK_COMMAND_TYPE_vkCmdDrawMeshTasksIndirectCountEXT_EXT = 334, } VkCommandTypeEXT; typedef enum VkCommandFlagBitsEXT { diff --git a/src/virtio/venus-protocol/vn_protocol_driver_device.h b/src/virtio/venus-protocol/vn_protocol_driver_device.h index e8db3fe3d33..b520d665f4e 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_device.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_device.h @@ -5601,6 +5601,157 @@ vn_encode_VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR_partial(struct vn vn_encode_VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR_self_partial(enc, val); } +/* struct VkPhysicalDeviceMeshShaderFeaturesEXT chain */ + +static inline size_t +vn_sizeof_VkPhysicalDeviceMeshShaderFeaturesEXT_pnext(const void *val) +{ + /* no known/supported struct */ + return vn_sizeof_simple_pointer(NULL); +} + +static inline size_t +vn_sizeof_VkPhysicalDeviceMeshShaderFeaturesEXT_self(const VkPhysicalDeviceMeshShaderFeaturesEXT *val) +{ + size_t size = 0; + /* skip val->{sType,pNext} */ + size += vn_sizeof_VkBool32(&val->taskShader); + size += vn_sizeof_VkBool32(&val->meshShader); + size += vn_sizeof_VkBool32(&val->multiviewMeshShader); + size += vn_sizeof_VkBool32(&val->primitiveFragmentShadingRateMeshShader); + size += vn_sizeof_VkBool32(&val->meshShaderQueries); + return size; +} + +static inline size_t +vn_sizeof_VkPhysicalDeviceMeshShaderFeaturesEXT(const VkPhysicalDeviceMeshShaderFeaturesEXT *val) +{ + size_t size = 0; + + size += vn_sizeof_VkStructureType(&val->sType); + size += vn_sizeof_VkPhysicalDeviceMeshShaderFeaturesEXT_pnext(val->pNext); + size += vn_sizeof_VkPhysicalDeviceMeshShaderFeaturesEXT_self(val); + + return size; +} + +static inline void +vn_encode_VkPhysicalDeviceMeshShaderFeaturesEXT_pnext(struct vn_cs_encoder *enc, const void *val) +{ + /* no known/supported struct */ + vn_encode_simple_pointer(enc, NULL); +} + +static inline void +vn_encode_VkPhysicalDeviceMeshShaderFeaturesEXT_self(struct vn_cs_encoder *enc, const VkPhysicalDeviceMeshShaderFeaturesEXT *val) +{ + /* skip val->{sType,pNext} */ + vn_encode_VkBool32(enc, &val->taskShader); + vn_encode_VkBool32(enc, &val->meshShader); + vn_encode_VkBool32(enc, &val->multiviewMeshShader); + vn_encode_VkBool32(enc, &val->primitiveFragmentShadingRateMeshShader); + vn_encode_VkBool32(enc, &val->meshShaderQueries); +} + +static inline void +vn_encode_VkPhysicalDeviceMeshShaderFeaturesEXT(struct vn_cs_encoder *enc, const VkPhysicalDeviceMeshShaderFeaturesEXT *val) +{ + assert(val->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT); + vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT }); + vn_encode_VkPhysicalDeviceMeshShaderFeaturesEXT_pnext(enc, val->pNext); + vn_encode_VkPhysicalDeviceMeshShaderFeaturesEXT_self(enc, val); +} + +static inline void +vn_decode_VkPhysicalDeviceMeshShaderFeaturesEXT_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_VkPhysicalDeviceMeshShaderFeaturesEXT_self(struct vn_cs_decoder *dec, VkPhysicalDeviceMeshShaderFeaturesEXT *val) +{ + /* skip val->{sType,pNext} */ + vn_decode_VkBool32(dec, &val->taskShader); + vn_decode_VkBool32(dec, &val->meshShader); + vn_decode_VkBool32(dec, &val->multiviewMeshShader); + vn_decode_VkBool32(dec, &val->primitiveFragmentShadingRateMeshShader); + vn_decode_VkBool32(dec, &val->meshShaderQueries); +} + +static inline void +vn_decode_VkPhysicalDeviceMeshShaderFeaturesEXT(struct vn_cs_decoder *dec, VkPhysicalDeviceMeshShaderFeaturesEXT *val) +{ + VkStructureType stype; + vn_decode_VkStructureType(dec, &stype); + assert(stype == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT); + + assert(val->sType == stype); + vn_decode_VkPhysicalDeviceMeshShaderFeaturesEXT_pnext(dec, val->pNext); + vn_decode_VkPhysicalDeviceMeshShaderFeaturesEXT_self(dec, val); +} + +static inline size_t +vn_sizeof_VkPhysicalDeviceMeshShaderFeaturesEXT_pnext_partial(const void *val) +{ + /* no known/supported struct */ + return vn_sizeof_simple_pointer(NULL); +} + +static inline size_t +vn_sizeof_VkPhysicalDeviceMeshShaderFeaturesEXT_self_partial(const VkPhysicalDeviceMeshShaderFeaturesEXT *val) +{ + size_t size = 0; + /* skip val->{sType,pNext} */ + /* skip val->taskShader */ + /* skip val->meshShader */ + /* skip val->multiviewMeshShader */ + /* skip val->primitiveFragmentShadingRateMeshShader */ + /* skip val->meshShaderQueries */ + return size; +} + +static inline size_t +vn_sizeof_VkPhysicalDeviceMeshShaderFeaturesEXT_partial(const VkPhysicalDeviceMeshShaderFeaturesEXT *val) +{ + size_t size = 0; + + size += vn_sizeof_VkStructureType(&val->sType); + size += vn_sizeof_VkPhysicalDeviceMeshShaderFeaturesEXT_pnext_partial(val->pNext); + size += vn_sizeof_VkPhysicalDeviceMeshShaderFeaturesEXT_self_partial(val); + + return size; +} + +static inline void +vn_encode_VkPhysicalDeviceMeshShaderFeaturesEXT_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_VkPhysicalDeviceMeshShaderFeaturesEXT_self_partial(struct vn_cs_encoder *enc, const VkPhysicalDeviceMeshShaderFeaturesEXT *val) +{ + /* skip val->{sType,pNext} */ + /* skip val->taskShader */ + /* skip val->meshShader */ + /* skip val->multiviewMeshShader */ + /* skip val->primitiveFragmentShadingRateMeshShader */ + /* skip val->meshShaderQueries */ +} + +static inline void +vn_encode_VkPhysicalDeviceMeshShaderFeaturesEXT_partial(struct vn_cs_encoder *enc, const VkPhysicalDeviceMeshShaderFeaturesEXT *val) +{ + assert(val->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT); + vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT }); + vn_encode_VkPhysicalDeviceMeshShaderFeaturesEXT_pnext_partial(enc, val->pNext); + vn_encode_VkPhysicalDeviceMeshShaderFeaturesEXT_self_partial(enc, val); +} + /* struct VkPhysicalDeviceAccelerationStructureFeaturesKHR chain */ static inline size_t @@ -17692,6 +17843,14 @@ vn_sizeof_VkPhysicalDeviceFeatures2_pnext(const void *val) size += vn_sizeof_VkPhysicalDeviceFeatures2_pnext(pnext->pNext); size += vn_sizeof_VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR_self((const VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR *)pnext); return size; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT: + if (!vn_cs_renderer_protocol_has_extension(329 /* VK_EXT_mesh_shader */)) + break; + size += vn_sizeof_simple_pointer(pnext); + size += vn_sizeof_VkStructureType(&pnext->sType); + size += vn_sizeof_VkPhysicalDeviceFeatures2_pnext(pnext->pNext); + size += vn_sizeof_VkPhysicalDeviceMeshShaderFeaturesEXT_self((const VkPhysicalDeviceMeshShaderFeaturesEXT *)pnext); + return size; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR: if (!vn_cs_renderer_protocol_has_extension(151 /* VK_KHR_acceleration_structure */)) break; @@ -18600,6 +18759,14 @@ vn_encode_VkPhysicalDeviceFeatures2_pnext(struct vn_cs_encoder *enc, const void vn_encode_VkPhysicalDeviceFeatures2_pnext(enc, pnext->pNext); vn_encode_VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR_self(enc, (const VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR *)pnext); return; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT: + if (!vn_cs_renderer_protocol_has_extension(329 /* VK_EXT_mesh_shader */)) + break; + vn_encode_simple_pointer(enc, pnext); + vn_encode_VkStructureType(enc, &pnext->sType); + vn_encode_VkPhysicalDeviceFeatures2_pnext(enc, pnext->pNext); + vn_encode_VkPhysicalDeviceMeshShaderFeaturesEXT_self(enc, (const VkPhysicalDeviceMeshShaderFeaturesEXT *)pnext); + return; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR: if (!vn_cs_renderer_protocol_has_extension(151 /* VK_KHR_acceleration_structure */)) break; @@ -19423,6 +19590,10 @@ vn_decode_VkPhysicalDeviceFeatures2_pnext(struct vn_cs_decoder *dec, const void vn_decode_VkPhysicalDeviceFeatures2_pnext(dec, pnext->pNext); vn_decode_VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR_self(dec, (VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR *)pnext); break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT: + vn_decode_VkPhysicalDeviceFeatures2_pnext(dec, pnext->pNext); + vn_decode_VkPhysicalDeviceMeshShaderFeaturesEXT_self(dec, (VkPhysicalDeviceMeshShaderFeaturesEXT *)pnext); + break; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR: vn_decode_VkPhysicalDeviceFeatures2_pnext(dec, pnext->pNext); vn_decode_VkPhysicalDeviceAccelerationStructureFeaturesKHR_self(dec, (VkPhysicalDeviceAccelerationStructureFeaturesKHR *)pnext); @@ -20004,6 +20175,14 @@ vn_sizeof_VkPhysicalDeviceFeatures2_pnext_partial(const void *val) size += vn_sizeof_VkPhysicalDeviceFeatures2_pnext_partial(pnext->pNext); size += vn_sizeof_VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR_self_partial((const VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR *)pnext); return size; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT: + if (!vn_cs_renderer_protocol_has_extension(329 /* VK_EXT_mesh_shader */)) + break; + size += vn_sizeof_simple_pointer(pnext); + size += vn_sizeof_VkStructureType(&pnext->sType); + size += vn_sizeof_VkPhysicalDeviceFeatures2_pnext_partial(pnext->pNext); + size += vn_sizeof_VkPhysicalDeviceMeshShaderFeaturesEXT_self_partial((const VkPhysicalDeviceMeshShaderFeaturesEXT *)pnext); + return size; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR: if (!vn_cs_renderer_protocol_has_extension(151 /* VK_KHR_acceleration_structure */)) break; @@ -20912,6 +21091,14 @@ vn_encode_VkPhysicalDeviceFeatures2_pnext_partial(struct vn_cs_encoder *enc, con vn_encode_VkPhysicalDeviceFeatures2_pnext_partial(enc, pnext->pNext); vn_encode_VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR_self_partial(enc, (const VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR *)pnext); return; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT: + if (!vn_cs_renderer_protocol_has_extension(329 /* VK_EXT_mesh_shader */)) + break; + vn_encode_simple_pointer(enc, pnext); + vn_encode_VkStructureType(enc, &pnext->sType); + vn_encode_VkPhysicalDeviceFeatures2_pnext_partial(enc, pnext->pNext); + vn_encode_VkPhysicalDeviceMeshShaderFeaturesEXT_self_partial(enc, (const VkPhysicalDeviceMeshShaderFeaturesEXT *)pnext); + return; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR: if (!vn_cs_renderer_protocol_has_extension(151 /* VK_KHR_acceleration_structure */)) break; @@ -21905,6 +22092,14 @@ vn_sizeof_VkDeviceCreateInfo_pnext(const void *val) size += vn_sizeof_VkDeviceCreateInfo_pnext(pnext->pNext); size += vn_sizeof_VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR_self((const VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR *)pnext); return size; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT: + if (!vn_cs_renderer_protocol_has_extension(329 /* VK_EXT_mesh_shader */)) + break; + size += vn_sizeof_simple_pointer(pnext); + size += vn_sizeof_VkStructureType(&pnext->sType); + size += vn_sizeof_VkDeviceCreateInfo_pnext(pnext->pNext); + size += vn_sizeof_VkPhysicalDeviceMeshShaderFeaturesEXT_self((const VkPhysicalDeviceMeshShaderFeaturesEXT *)pnext); + return size; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR: if (!vn_cs_renderer_protocol_has_extension(151 /* VK_KHR_acceleration_structure */)) break; @@ -22866,6 +23061,14 @@ vn_encode_VkDeviceCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val) vn_encode_VkDeviceCreateInfo_pnext(enc, pnext->pNext); vn_encode_VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR_self(enc, (const VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR *)pnext); return; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT: + if (!vn_cs_renderer_protocol_has_extension(329 /* VK_EXT_mesh_shader */)) + break; + vn_encode_simple_pointer(enc, pnext); + vn_encode_VkStructureType(enc, &pnext->sType); + vn_encode_VkDeviceCreateInfo_pnext(enc, pnext->pNext); + vn_encode_VkPhysicalDeviceMeshShaderFeaturesEXT_self(enc, (const VkPhysicalDeviceMeshShaderFeaturesEXT *)pnext); + return; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR: if (!vn_cs_renderer_protocol_has_extension(151 /* VK_KHR_acceleration_structure */)) break; @@ -26972,6 +27175,238 @@ vn_encode_VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR_partial(struct v vn_encode_VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR_self_partial(enc, val); } +/* struct VkPhysicalDeviceMeshShaderPropertiesEXT chain */ + +static inline size_t +vn_sizeof_VkPhysicalDeviceMeshShaderPropertiesEXT_pnext(const void *val) +{ + /* no known/supported struct */ + return vn_sizeof_simple_pointer(NULL); +} + +static inline size_t +vn_sizeof_VkPhysicalDeviceMeshShaderPropertiesEXT_self(const VkPhysicalDeviceMeshShaderPropertiesEXT *val) +{ + size_t size = 0; + /* skip val->{sType,pNext} */ + size += vn_sizeof_uint32_t(&val->maxTaskWorkGroupTotalCount); + size += vn_sizeof_array_size(3); + size += vn_sizeof_uint32_t_array(val->maxTaskWorkGroupCount, 3); + size += vn_sizeof_uint32_t(&val->maxTaskWorkGroupInvocations); + size += vn_sizeof_array_size(3); + size += vn_sizeof_uint32_t_array(val->maxTaskWorkGroupSize, 3); + size += vn_sizeof_uint32_t(&val->maxTaskPayloadSize); + size += vn_sizeof_uint32_t(&val->maxTaskSharedMemorySize); + size += vn_sizeof_uint32_t(&val->maxTaskPayloadAndSharedMemorySize); + size += vn_sizeof_uint32_t(&val->maxMeshWorkGroupTotalCount); + size += vn_sizeof_array_size(3); + size += vn_sizeof_uint32_t_array(val->maxMeshWorkGroupCount, 3); + size += vn_sizeof_uint32_t(&val->maxMeshWorkGroupInvocations); + size += vn_sizeof_array_size(3); + size += vn_sizeof_uint32_t_array(val->maxMeshWorkGroupSize, 3); + size += vn_sizeof_uint32_t(&val->maxMeshSharedMemorySize); + size += vn_sizeof_uint32_t(&val->maxMeshPayloadAndSharedMemorySize); + size += vn_sizeof_uint32_t(&val->maxMeshOutputMemorySize); + size += vn_sizeof_uint32_t(&val->maxMeshPayloadAndOutputMemorySize); + size += vn_sizeof_uint32_t(&val->maxMeshOutputComponents); + size += vn_sizeof_uint32_t(&val->maxMeshOutputVertices); + size += vn_sizeof_uint32_t(&val->maxMeshOutputPrimitives); + size += vn_sizeof_uint32_t(&val->maxMeshOutputLayers); + size += vn_sizeof_uint32_t(&val->maxMeshMultiviewViewCount); + size += vn_sizeof_uint32_t(&val->meshOutputPerVertexGranularity); + size += vn_sizeof_uint32_t(&val->meshOutputPerPrimitiveGranularity); + size += vn_sizeof_uint32_t(&val->maxPreferredTaskWorkGroupInvocations); + size += vn_sizeof_uint32_t(&val->maxPreferredMeshWorkGroupInvocations); + size += vn_sizeof_VkBool32(&val->prefersLocalInvocationVertexOutput); + size += vn_sizeof_VkBool32(&val->prefersLocalInvocationPrimitiveOutput); + size += vn_sizeof_VkBool32(&val->prefersCompactVertexOutput); + size += vn_sizeof_VkBool32(&val->prefersCompactPrimitiveOutput); + return size; +} + +static inline size_t +vn_sizeof_VkPhysicalDeviceMeshShaderPropertiesEXT(const VkPhysicalDeviceMeshShaderPropertiesEXT *val) +{ + size_t size = 0; + + size += vn_sizeof_VkStructureType(&val->sType); + size += vn_sizeof_VkPhysicalDeviceMeshShaderPropertiesEXT_pnext(val->pNext); + size += vn_sizeof_VkPhysicalDeviceMeshShaderPropertiesEXT_self(val); + + return size; +} + +static inline void +vn_decode_VkPhysicalDeviceMeshShaderPropertiesEXT_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_VkPhysicalDeviceMeshShaderPropertiesEXT_self(struct vn_cs_decoder *dec, VkPhysicalDeviceMeshShaderPropertiesEXT *val) +{ + /* skip val->{sType,pNext} */ + vn_decode_uint32_t(dec, &val->maxTaskWorkGroupTotalCount); + { + const size_t array_size = vn_decode_array_size(dec, 3); + vn_decode_uint32_t_array(dec, val->maxTaskWorkGroupCount, array_size); + } + vn_decode_uint32_t(dec, &val->maxTaskWorkGroupInvocations); + { + const size_t array_size = vn_decode_array_size(dec, 3); + vn_decode_uint32_t_array(dec, val->maxTaskWorkGroupSize, array_size); + } + vn_decode_uint32_t(dec, &val->maxTaskPayloadSize); + vn_decode_uint32_t(dec, &val->maxTaskSharedMemorySize); + vn_decode_uint32_t(dec, &val->maxTaskPayloadAndSharedMemorySize); + vn_decode_uint32_t(dec, &val->maxMeshWorkGroupTotalCount); + { + const size_t array_size = vn_decode_array_size(dec, 3); + vn_decode_uint32_t_array(dec, val->maxMeshWorkGroupCount, array_size); + } + vn_decode_uint32_t(dec, &val->maxMeshWorkGroupInvocations); + { + const size_t array_size = vn_decode_array_size(dec, 3); + vn_decode_uint32_t_array(dec, val->maxMeshWorkGroupSize, array_size); + } + vn_decode_uint32_t(dec, &val->maxMeshSharedMemorySize); + vn_decode_uint32_t(dec, &val->maxMeshPayloadAndSharedMemorySize); + vn_decode_uint32_t(dec, &val->maxMeshOutputMemorySize); + vn_decode_uint32_t(dec, &val->maxMeshPayloadAndOutputMemorySize); + vn_decode_uint32_t(dec, &val->maxMeshOutputComponents); + vn_decode_uint32_t(dec, &val->maxMeshOutputVertices); + vn_decode_uint32_t(dec, &val->maxMeshOutputPrimitives); + vn_decode_uint32_t(dec, &val->maxMeshOutputLayers); + vn_decode_uint32_t(dec, &val->maxMeshMultiviewViewCount); + vn_decode_uint32_t(dec, &val->meshOutputPerVertexGranularity); + vn_decode_uint32_t(dec, &val->meshOutputPerPrimitiveGranularity); + vn_decode_uint32_t(dec, &val->maxPreferredTaskWorkGroupInvocations); + vn_decode_uint32_t(dec, &val->maxPreferredMeshWorkGroupInvocations); + vn_decode_VkBool32(dec, &val->prefersLocalInvocationVertexOutput); + vn_decode_VkBool32(dec, &val->prefersLocalInvocationPrimitiveOutput); + vn_decode_VkBool32(dec, &val->prefersCompactVertexOutput); + vn_decode_VkBool32(dec, &val->prefersCompactPrimitiveOutput); +} + +static inline void +vn_decode_VkPhysicalDeviceMeshShaderPropertiesEXT(struct vn_cs_decoder *dec, VkPhysicalDeviceMeshShaderPropertiesEXT *val) +{ + VkStructureType stype; + vn_decode_VkStructureType(dec, &stype); + assert(stype == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT); + + assert(val->sType == stype); + vn_decode_VkPhysicalDeviceMeshShaderPropertiesEXT_pnext(dec, val->pNext); + vn_decode_VkPhysicalDeviceMeshShaderPropertiesEXT_self(dec, val); +} + +static inline size_t +vn_sizeof_VkPhysicalDeviceMeshShaderPropertiesEXT_pnext_partial(const void *val) +{ + /* no known/supported struct */ + return vn_sizeof_simple_pointer(NULL); +} + +static inline size_t +vn_sizeof_VkPhysicalDeviceMeshShaderPropertiesEXT_self_partial(const VkPhysicalDeviceMeshShaderPropertiesEXT *val) +{ + size_t size = 0; + /* skip val->{sType,pNext} */ + /* skip val->maxTaskWorkGroupTotalCount */ + /* skip val->maxTaskWorkGroupCount */ + /* skip val->maxTaskWorkGroupInvocations */ + /* skip val->maxTaskWorkGroupSize */ + /* skip val->maxTaskPayloadSize */ + /* skip val->maxTaskSharedMemorySize */ + /* skip val->maxTaskPayloadAndSharedMemorySize */ + /* skip val->maxMeshWorkGroupTotalCount */ + /* skip val->maxMeshWorkGroupCount */ + /* skip val->maxMeshWorkGroupInvocations */ + /* skip val->maxMeshWorkGroupSize */ + /* skip val->maxMeshSharedMemorySize */ + /* skip val->maxMeshPayloadAndSharedMemorySize */ + /* skip val->maxMeshOutputMemorySize */ + /* skip val->maxMeshPayloadAndOutputMemorySize */ + /* skip val->maxMeshOutputComponents */ + /* skip val->maxMeshOutputVertices */ + /* skip val->maxMeshOutputPrimitives */ + /* skip val->maxMeshOutputLayers */ + /* skip val->maxMeshMultiviewViewCount */ + /* skip val->meshOutputPerVertexGranularity */ + /* skip val->meshOutputPerPrimitiveGranularity */ + /* skip val->maxPreferredTaskWorkGroupInvocations */ + /* skip val->maxPreferredMeshWorkGroupInvocations */ + /* skip val->prefersLocalInvocationVertexOutput */ + /* skip val->prefersLocalInvocationPrimitiveOutput */ + /* skip val->prefersCompactVertexOutput */ + /* skip val->prefersCompactPrimitiveOutput */ + return size; +} + +static inline size_t +vn_sizeof_VkPhysicalDeviceMeshShaderPropertiesEXT_partial(const VkPhysicalDeviceMeshShaderPropertiesEXT *val) +{ + size_t size = 0; + + size += vn_sizeof_VkStructureType(&val->sType); + size += vn_sizeof_VkPhysicalDeviceMeshShaderPropertiesEXT_pnext_partial(val->pNext); + size += vn_sizeof_VkPhysicalDeviceMeshShaderPropertiesEXT_self_partial(val); + + return size; +} + +static inline void +vn_encode_VkPhysicalDeviceMeshShaderPropertiesEXT_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_VkPhysicalDeviceMeshShaderPropertiesEXT_self_partial(struct vn_cs_encoder *enc, const VkPhysicalDeviceMeshShaderPropertiesEXT *val) +{ + /* skip val->{sType,pNext} */ + /* skip val->maxTaskWorkGroupTotalCount */ + /* skip val->maxTaskWorkGroupCount */ + /* skip val->maxTaskWorkGroupInvocations */ + /* skip val->maxTaskWorkGroupSize */ + /* skip val->maxTaskPayloadSize */ + /* skip val->maxTaskSharedMemorySize */ + /* skip val->maxTaskPayloadAndSharedMemorySize */ + /* skip val->maxMeshWorkGroupTotalCount */ + /* skip val->maxMeshWorkGroupCount */ + /* skip val->maxMeshWorkGroupInvocations */ + /* skip val->maxMeshWorkGroupSize */ + /* skip val->maxMeshSharedMemorySize */ + /* skip val->maxMeshPayloadAndSharedMemorySize */ + /* skip val->maxMeshOutputMemorySize */ + /* skip val->maxMeshPayloadAndOutputMemorySize */ + /* skip val->maxMeshOutputComponents */ + /* skip val->maxMeshOutputVertices */ + /* skip val->maxMeshOutputPrimitives */ + /* skip val->maxMeshOutputLayers */ + /* skip val->maxMeshMultiviewViewCount */ + /* skip val->meshOutputPerVertexGranularity */ + /* skip val->meshOutputPerPrimitiveGranularity */ + /* skip val->maxPreferredTaskWorkGroupInvocations */ + /* skip val->maxPreferredMeshWorkGroupInvocations */ + /* skip val->prefersLocalInvocationVertexOutput */ + /* skip val->prefersLocalInvocationPrimitiveOutput */ + /* skip val->prefersCompactVertexOutput */ + /* skip val->prefersCompactPrimitiveOutput */ +} + +static inline void +vn_encode_VkPhysicalDeviceMeshShaderPropertiesEXT_partial(struct vn_cs_encoder *enc, const VkPhysicalDeviceMeshShaderPropertiesEXT *val) +{ + assert(val->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT); + vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT }); + vn_encode_VkPhysicalDeviceMeshShaderPropertiesEXT_pnext_partial(enc, val->pNext); + vn_encode_VkPhysicalDeviceMeshShaderPropertiesEXT_self_partial(enc, val); +} + /* struct VkPhysicalDeviceAccelerationStructurePropertiesKHR chain */ static inline size_t @@ -30458,6 +30893,14 @@ vn_sizeof_VkPhysicalDeviceProperties2_pnext(const void *val) size += vn_sizeof_VkPhysicalDeviceProperties2_pnext(pnext->pNext); size += vn_sizeof_VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR_self((const VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR *)pnext); return size; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT: + if (!vn_cs_renderer_protocol_has_extension(329 /* VK_EXT_mesh_shader */)) + break; + size += vn_sizeof_simple_pointer(pnext); + size += vn_sizeof_VkStructureType(&pnext->sType); + size += vn_sizeof_VkPhysicalDeviceProperties2_pnext(pnext->pNext); + size += vn_sizeof_VkPhysicalDeviceMeshShaderPropertiesEXT_self((const VkPhysicalDeviceMeshShaderPropertiesEXT *)pnext); + return size; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR: if (!vn_cs_renderer_protocol_has_extension(151 /* VK_KHR_acceleration_structure */)) break; @@ -30788,6 +31231,10 @@ vn_decode_VkPhysicalDeviceProperties2_pnext(struct vn_cs_decoder *dec, const voi vn_decode_VkPhysicalDeviceProperties2_pnext(dec, pnext->pNext); vn_decode_VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR_self(dec, (VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR *)pnext); break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT: + vn_decode_VkPhysicalDeviceProperties2_pnext(dec, pnext->pNext); + vn_decode_VkPhysicalDeviceMeshShaderPropertiesEXT_self(dec, (VkPhysicalDeviceMeshShaderPropertiesEXT *)pnext); + break; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR: vn_decode_VkPhysicalDeviceProperties2_pnext(dec, pnext->pNext); vn_decode_VkPhysicalDeviceAccelerationStructurePropertiesKHR_self(dec, (VkPhysicalDeviceAccelerationStructurePropertiesKHR *)pnext); @@ -31101,6 +31548,14 @@ vn_sizeof_VkPhysicalDeviceProperties2_pnext_partial(const void *val) size += vn_sizeof_VkPhysicalDeviceProperties2_pnext_partial(pnext->pNext); size += vn_sizeof_VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR_self_partial((const VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR *)pnext); return size; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT: + if (!vn_cs_renderer_protocol_has_extension(329 /* VK_EXT_mesh_shader */)) + break; + size += vn_sizeof_simple_pointer(pnext); + size += vn_sizeof_VkStructureType(&pnext->sType); + size += vn_sizeof_VkPhysicalDeviceProperties2_pnext_partial(pnext->pNext); + size += vn_sizeof_VkPhysicalDeviceMeshShaderPropertiesEXT_self_partial((const VkPhysicalDeviceMeshShaderPropertiesEXT *)pnext); + return size; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR: if (!vn_cs_renderer_protocol_has_extension(151 /* VK_KHR_acceleration_structure */)) break; @@ -31503,6 +31958,14 @@ vn_encode_VkPhysicalDeviceProperties2_pnext_partial(struct vn_cs_encoder *enc, c vn_encode_VkPhysicalDeviceProperties2_pnext_partial(enc, pnext->pNext); vn_encode_VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR_self_partial(enc, (const VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR *)pnext); return; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT: + if (!vn_cs_renderer_protocol_has_extension(329 /* VK_EXT_mesh_shader */)) + break; + vn_encode_simple_pointer(enc, pnext); + vn_encode_VkStructureType(enc, &pnext->sType); + vn_encode_VkPhysicalDeviceProperties2_pnext_partial(enc, pnext->pNext); + vn_encode_VkPhysicalDeviceMeshShaderPropertiesEXT_self_partial(enc, (const VkPhysicalDeviceMeshShaderPropertiesEXT *)pnext); + return; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR: if (!vn_cs_renderer_protocol_has_extension(151 /* VK_KHR_acceleration_structure */)) break; diff --git a/src/virtio/venus-protocol/vn_protocol_driver_info.h b/src/virtio/venus-protocol/vn_protocol_driver_info.h index 91f6af9167c..34340cbaa47 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_info.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_info.h @@ -19,8 +19,8 @@ struct vn_info_extension { }; /* sorted by extension names for bsearch */ -static const uint32_t _vn_info_extension_count = 184; -static const struct vn_info_extension _vn_info_extensions[184] = { +static const uint32_t _vn_info_extension_count = 185; +static const struct vn_info_extension _vn_info_extensions[185] = { { "VK_ARM_rasterization_order_attachment_access", 343, 1 }, { "VK_EXT_4444_formats", 341, 1 }, { "VK_EXT_attachment_feedback_loop_dynamic_state", 525, 1 }, @@ -66,6 +66,7 @@ static const struct vn_info_extension _vn_info_extensions[184] = { { "VK_EXT_line_rasterization", 260, 1 }, { "VK_EXT_load_store_op_none", 401, 1 }, { "VK_EXT_memory_budget", 238, 1 }, + { "VK_EXT_mesh_shader", 329, 1 }, { "VK_EXT_multi_draw", 393, 1 }, { "VK_EXT_multisampled_render_to_single_sampled", 377, 1 }, { "VK_EXT_mutable_descriptor_type", 495, 1 },