diff --git a/.version b/.version
index 4e00a40a..a50d758b 100644
--- a/.version
+++ b/.version
@@ -1 +1 @@
-1.3.225
\ No newline at end of file
+1.3.226
\ No newline at end of file
diff --git a/src/Exomia.Vulkan.Api.Core/Enums/VkBufferUsageFlagBits.cs b/src/Exomia.Vulkan.Api.Core/Enums/VkBufferUsageFlagBits.cs
index fb21fd76..791f0789 100644
--- a/src/Exomia.Vulkan.Api.Core/Enums/VkBufferUsageFlagBits.cs
+++ b/src/Exomia.Vulkan.Api.Core/Enums/VkBufferUsageFlagBits.cs
@@ -91,7 +91,7 @@ public enum VkBufferUsageFlagBits
/// href="https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdDrawMeshTasksIndirectCountNV.html">
/// vkCmdDrawMeshTasksIndirectCountNV
///
- /// , or
+ /// , vkCmdDrawMeshTasksIndirectEXT, vkCmdDrawMeshTasksIndirectCountEXT, or
/// vkCmdDispatchIndirect
/// . It is also suitable for passing as the buffer member of VkIndirectCommandsStreamNV, or sequencesCountBuffer or
/// sequencesIndexBuffer or preprocessedBuffer member of VkGeneratedCommandsInfoNV
diff --git a/src/Exomia.Vulkan.Api.Core/Enums/VkPipelineCreateFlagBits.cs b/src/Exomia.Vulkan.Api.Core/Enums/VkPipelineCreateFlagBits.cs
index 35226154..55dee901 100644
--- a/src/Exomia.Vulkan.Api.Core/Enums/VkPipelineCreateFlagBits.cs
+++ b/src/Exomia.Vulkan.Api.Core/Enums/VkPipelineCreateFlagBits.cs
@@ -234,6 +234,12 @@ public enum VkPipelineCreateFlagBits
///
VK_PIPELINE_CREATE_RESERVED_27_BIT_EXT = 0x8000000,
+ ///
+ /// VK_PIPELINE_CREATE_RESERVED_30_BIT_EXT
+ /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkPipelineCreateFlagBits
+ ///
+ VK_PIPELINE_CREATE_RESERVED_30_BIT_EXT = 0x40000000,
+
///
/// VK_PIPELINE_CREATE_DISPATCH_BASE
/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkPipelineCreateFlagBits
diff --git a/src/Exomia.Vulkan.Api.Core/Enums/VkPipelineStageFlagBits.cs b/src/Exomia.Vulkan.Api.Core/Enums/VkPipelineStageFlagBits.cs
index 6af6865f..070dd442 100644
--- a/src/Exomia.Vulkan.Api.Core/Enums/VkPipelineStageFlagBits.cs
+++ b/src/Exomia.Vulkan.Api.Core/Enums/VkPipelineStageFlagBits.cs
@@ -124,8 +124,8 @@ public enum VkPipelineStageFlagBits
/// VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT specifies the execution of all graphics pipeline stages, and is equivalent to
/// the logical OR of:
/// VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT
- /// VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV
- /// VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV
+ /// VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT
+ /// VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT
/// VK_PIPELINE_STAGE_VERTEX_INPUT_BIT
/// VK_PIPELINE_STAGE_VERTEX_SHADER_BIT
/// VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
@@ -223,12 +223,6 @@ public enum VkPipelineStageFlagBits
///
VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 0x200000,
- /// VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV specifies the task shader stage.
- VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 0x80000,
-
- /// VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV specifies the mesh shader stage.
- VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 0x100000,
-
///
/// VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT specifies the stage of the pipeline where the fragment density
/// map is read to
@@ -267,6 +261,12 @@ public enum VkPipelineStageFlagBits
///
VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 0x20000,
+ /// VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT specifies the task shader stage.
+ VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT = 0x80000,
+
+ /// VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT specifies the mesh shader stage.
+ VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT = 0x100000,
+
///
/// VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR specifies the stage of the pipeline where the
///
VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,
+ /// VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT specifies the task shader stage.
+ VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT,
+
+ /// VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT specifies the mesh shader stage.
+ VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT,
+
/// VK_PIPELINE_STAGE_NONE specifies no stages of execution.
VK_PIPELINE_STAGE_NONE_KHR = VK_PIPELINE_STAGE_NONE
}
\ No newline at end of file
diff --git a/src/Exomia.Vulkan.Api.Core/Enums/VkPipelineStageFlagBits2.cs b/src/Exomia.Vulkan.Api.Core/Enums/VkPipelineStageFlagBits2.cs
index b475e1de..f2e15353 100644
--- a/src/Exomia.Vulkan.Api.Core/Enums/VkPipelineStageFlagBits2.cs
+++ b/src/Exomia.Vulkan.Api.Core/Enums/VkPipelineStageFlagBits2.cs
@@ -131,8 +131,8 @@ public enum VkPipelineStageFlagBits2 : ulong
/// VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT specifies the execution of all graphics pipeline stages, and is equivalent to
/// the logical OR of:
/// VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT
- /// VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV
- /// VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV
+ /// VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT
+ /// VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT
/// VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT
/// VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT
/// VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT
@@ -209,8 +209,8 @@ public enum VkPipelineStageFlagBits2 : ulong
/// VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT
/// VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT
/// VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT
- /// VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV
- /// VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV
+ /// VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT
+ /// VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT
///
VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT = 0x4000000000,
@@ -297,11 +297,11 @@ public enum VkPipelineStageFlagBits2 : ulong
///
VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 0x800000,
- /// VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV specifies the task shader stage.
- VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV = 0x80000,
+ /// VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT specifies the task shader stage.
+ VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT = 0x80000,
- /// VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV specifies the mesh shader stage.
- VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV = 0x100000,
+ /// VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT specifies the mesh shader stage.
+ VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT = 0x100000,
/// VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI specifies the subpass shading shader stage.
VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI = 0x8000000000,
@@ -461,8 +461,8 @@ public enum VkPipelineStageFlagBits2 : ulong
/// VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT specifies the execution of all graphics pipeline stages, and is equivalent to
/// the logical OR of:
/// VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT
- /// VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV
- /// VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV
+ /// VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT
+ /// VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT
/// VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT
/// VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT
/// VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT
@@ -539,8 +539,8 @@ public enum VkPipelineStageFlagBits2 : ulong
/// VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT
/// VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT
/// VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT
- /// VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV
- /// VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV
+ /// VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT
+ /// VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT
///
VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR = VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT,
@@ -571,5 +571,11 @@ public enum VkPipelineStageFlagBits2 : ulong
///
/// .
///
- VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_NV = VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
+ VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_NV = VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,
+
+ /// VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT specifies the task shader stage.
+ VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV = VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT,
+
+ /// VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT specifies the mesh shader stage.
+ VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV = VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT
}
\ No newline at end of file
diff --git a/src/Exomia.Vulkan.Api.Core/Enums/VkQueryPipelineStatisticFlagBits.cs b/src/Exomia.Vulkan.Api.Core/Enums/VkQueryPipelineStatisticFlagBits.cs
index bf5375be..56b9c15d 100644
--- a/src/Exomia.Vulkan.Api.Core/Enums/VkQueryPipelineStatisticFlagBits.cs
+++ b/src/Exomia.Vulkan.Api.Core/Enums/VkQueryPipelineStatisticFlagBits.cs
@@ -137,5 +137,19 @@ public enum VkQueryPipelineStatisticFlagBits
/// additional compute shader invocations for implementation-dependent reasons as long as the results of rendering
/// otherwise remain unchanged.
///
- VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 0x400
+ VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 0x400,
+
+ ///
+ /// VK_QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXTspecifies that queries managed by the pool will
+ /// count the number of task shader invocations. The counter’s value is incremented every time the task shader is
+ /// invoked.
+ ///
+ VK_QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT = 0x800,
+
+ ///
+ /// VK_QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXTspecifies that queries managed by the pool will
+ /// count the number of mesh shader invocations. The counter’s value is incremented every time the mesh shader is
+ /// invoked.
+ ///
+ VK_QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT = 0x1000
}
\ No newline at end of file
diff --git a/src/Exomia.Vulkan.Api.Core/Enums/VkQueryType.cs b/src/Exomia.Vulkan.Api.Core/Enums/VkQueryType.cs
index 9294f2df..ef7fb015 100644
--- a/src/Exomia.Vulkan.Api.Core/Enums/VkQueryType.cs
+++ b/src/Exomia.Vulkan.Api.Core/Enums/VkQueryType.cs
@@ -145,6 +145,16 @@ public enum VkQueryType
///
VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR = 1000299000,
+ ///
+ /// VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT specifies a
+ ///
+ /// generated
+ /// mesh primitives query
+ ///
+ /// .
+ ///
+ VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT = 1000328000,
+
///
/// VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT specifies a
///
diff --git a/src/Exomia.Vulkan.Api.Core/Enums/VkSemaphoreType.cs b/src/Exomia.Vulkan.Api.Core/Enums/VkSemaphoreType.cs
index 6580c1dd..8ed01875 100644
--- a/src/Exomia.Vulkan.Api.Core/Enums/VkSemaphoreType.cs
+++ b/src/Exomia.Vulkan.Api.Core/Enums/VkSemaphoreType.cs
@@ -14,7 +14,7 @@
namespace Exomia.Vulkan.Api.Core;
///
-/// VkSemaphoreType - Sepcifies the type of a semaphore object -
+/// VkSemaphoreType - Specifies the type of a semaphore object -
/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSemaphoreType.html
///
public enum VkSemaphoreType
diff --git a/src/Exomia.Vulkan.Api.Core/Enums/VkShaderStageFlagBits.cs b/src/Exomia.Vulkan.Api.Core/Enums/VkShaderStageFlagBits.cs
index 435db172..8f933caf 100644
--- a/src/Exomia.Vulkan.Api.Core/Enums/VkShaderStageFlagBits.cs
+++ b/src/Exomia.Vulkan.Api.Core/Enums/VkShaderStageFlagBits.cs
@@ -68,11 +68,11 @@ public enum VkShaderStageFlagBits
/// VK_SHADER_STAGE_CALLABLE_BIT_KHR specifies the callable stage.
VK_SHADER_STAGE_CALLABLE_BIT_KHR = 0x2000,
- /// VK_SHADER_STAGE_TASK_BIT_NV specifies the task stage.
- VK_SHADER_STAGE_TASK_BIT_NV = 0x40,
+ /// VK_SHADER_STAGE_TASK_BIT_EXT specifies the task stage.
+ VK_SHADER_STAGE_TASK_BIT_EXT = 0x40,
- /// VK_SHADER_STAGE_MESH_BIT_NV specifies the mesh stage.
- VK_SHADER_STAGE_MESH_BIT_NV = 0x80,
+ /// VK_SHADER_STAGE_MESH_BIT_EXT specifies the mesh stage.
+ VK_SHADER_STAGE_MESH_BIT_EXT = 0x80,
///
/// VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI
@@ -114,5 +114,11 @@ public enum VkShaderStageFlagBits
VK_SHADER_STAGE_INTERSECTION_BIT_NV = VK_SHADER_STAGE_INTERSECTION_BIT_KHR,
/// VK_SHADER_STAGE_CALLABLE_BIT_KHR specifies the callable stage.
- VK_SHADER_STAGE_CALLABLE_BIT_NV = VK_SHADER_STAGE_CALLABLE_BIT_KHR
+ VK_SHADER_STAGE_CALLABLE_BIT_NV = VK_SHADER_STAGE_CALLABLE_BIT_KHR,
+
+ /// VK_SHADER_STAGE_TASK_BIT_EXT specifies the task stage.
+ VK_SHADER_STAGE_TASK_BIT_NV = VK_SHADER_STAGE_TASK_BIT_EXT,
+
+ /// VK_SHADER_STAGE_MESH_BIT_EXT specifies the mesh stage.
+ VK_SHADER_STAGE_MESH_BIT_NV = VK_SHADER_STAGE_MESH_BIT_EXT
}
\ No newline at end of file
diff --git a/src/Exomia.Vulkan.Api.Core/Enums/VkStructureType.cs b/src/Exomia.Vulkan.Api.Core/Enums/VkStructureType.cs
index b8d61f5f..9ec170f5 100644
--- a/src/Exomia.Vulkan.Api.Core/Enums/VkStructureType.cs
+++ b/src/Exomia.Vulkan.Api.Core/Enums/VkStructureType.cs
@@ -1573,6 +1573,12 @@ public enum VkStructureType
///
VK_STRUCTURE_TYPE_VIDEO_DECODE_CAPABILITIES_KHR = 1000024001,
+ ///
+ /// VK_STRUCTURE_TYPE_VIDEO_DECODE_USAGE_INFO_KHR
+ /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType
+ ///
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_USAGE_INFO_KHR = 1000024002,
+
///
/// VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV
/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType
@@ -3421,6 +3427,12 @@ public enum VkStructureType
///
VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR = 1000299003,
+ ///
+ /// VK_STRUCTURE_TYPE_VIDEO_ENCODE_USAGE_INFO_KHR
+ /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType
+ ///
+ VK_STRUCTURE_TYPE_VIDEO_ENCODE_USAGE_INFO_KHR = 1000299004,
+
///
/// VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV
/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType
@@ -3601,6 +3613,18 @@ public enum VkStructureType
///
VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV = 1000327002,
+ ///
+ /// VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT
+ /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType
+ ///
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT = 1000328000,
+
+ ///
+ /// VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT
+ /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType
+ ///
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT = 1000328001,
+
///
/// VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT
/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType
@@ -3997,6 +4021,12 @@ public enum VkStructureType
///
VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE = 1000420002,
+ ///
+ /// VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT
+ /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType
+ ///
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT = 1000421000,
+
///
/// VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT
/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType
diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/ARM/VK_ARM_rasterization_order_attachment_access/VkArmRasterizationOrderAttachmentAccess.cs b/src/Exomia.Vulkan.Api.Core/Extensions/ARM/VK_ARM_rasterization_order_attachment_access/VkArmRasterizationOrderAttachmentAccess.cs
index 4e89b43f..b1716a73 100644
--- a/src/Exomia.Vulkan.Api.Core/Extensions/ARM/VK_ARM_rasterization_order_attachment_access/VkArmRasterizationOrderAttachmentAccess.cs
+++ b/src/Exomia.Vulkan.Api.Core/Extensions/ARM/VK_ARM_rasterization_order_attachment_access/VkArmRasterizationOrderAttachmentAccess.cs
@@ -27,6 +27,9 @@ namespace Exomia.Vulkan.Api.Core;
///
///
[VkRequires("VK_KHR_get_physical_device_properties2")]
+[Obsolete(
+ "promoted to VK_EXT_rasterization_order_attachment_access", false,
+ UrlFormat = "https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_ARM_rasterization_order_attachment_access.html#_deprecation_state")]
public static class VkArmRasterizationOrderAttachmentAccess
{
/// The spec version.
diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_depth_clamp_zero_one/VkExtDepthClampZeroOne.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_depth_clamp_zero_one/VkExtDepthClampZeroOne.cs
new file mode 100644
index 00000000..dabb58a6
--- /dev/null
+++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_depth_clamp_zero_one/VkExtDepthClampZeroOne.cs
@@ -0,0 +1,48 @@
+#region License
+
+// Copyright (c) 2018-2022, exomia
+// All rights reserved.
+//
+// This source code is licensed under the BSD-style license found in the
+// LICENSE file in the root directory of this source tree.
+
+#endregion
+
+global using static Exomia.Vulkan.Api.Core.VkExtDepthClampZeroOne;
+
+#pragma warning disable CA2211 // Non-constant fields should not be visible
+#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable InconsistentNaming
+// ReSharper disable once CheckNamespace
+namespace Exomia.Vulkan.Api.Core;
+
+///
+/// VK_EXT_depth_clamp_zero_one - device extension (nr. 422) - author 'EXT' [platform '' | contact 'Graeme Leese
+/// @gnl21']
+/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_depth_clamp_zero_one.html
+///
+public static class VkExtDepthClampZeroOne
+{
+ /// The spec version.
+ public const uint VK_EXT_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION = 1;
+
+ /// The extension name.
+ public const string VK_EXT_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME = "VK_EXT_depth_clamp_zero_one";
+
+ ///
+ /// An UTF8 null terminated version of represented by
+ /// an UTF16 string.
+ ///
+ ///
+ /// Example usage:
+ ///
+ /// fixed(char* ptr = VK_EXT_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME_UTF8_NT) {
+ /// sbyte* utf8NtPtr = (sbyte*)ptr; // utf8NtPtr - can now be passed and used directly as a utf8_nt string for
+ /// unmanaged code.
+ /// }
+ ///
+ public const string VK_EXT_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME_UTF8_NT =
+ "\u4b56\u455f\u5458\u445f\u5045\u4854\u435f\u414c\u504d\u5a5f\u5245\u5f4f\u4e4f\u5f45\u5845\u4554\u534e\u4f49\u5f4e\u414e\u454d\u0000";
+}
\ No newline at end of file
diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_depth_clamp_zero_one/VkPhysicalDeviceDepthClampZeroOneFeaturesEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_depth_clamp_zero_one/VkPhysicalDeviceDepthClampZeroOneFeaturesEXT.cs
new file mode 100644
index 00000000..885c9e4e
--- /dev/null
+++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_depth_clamp_zero_one/VkPhysicalDeviceDepthClampZeroOneFeaturesEXT.cs
@@ -0,0 +1,45 @@
+#region License
+
+// Copyright (c) 2018-2022, exomia
+// All rights reserved.
+//
+// This source code is licensed under the BSD-style license found in the
+// LICENSE file in the root directory of this source tree.
+
+#endregion
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable InconsistentNaming
+// ReSharper disable once CheckNamespace
+namespace Exomia.Vulkan.Api.Core;
+
+///
+/// VkPhysicalDeviceDepthClampZeroOneFeaturesEXT - Structure describing feature to control zero to one depth clamping -
+///
+/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDepthClampZeroOneFeaturesEXT.html
+///
+///
+///
+///
+/// -
+/// structextendsVkPhysicalDeviceFeatures2,VkDeviceCreateInfo
+///
+///
+///
+[VkStructExtends("VkPhysicalDeviceFeatures2,VkDeviceCreateInfo")]
+[StructLayout(LayoutKind.Sequential)]
+public unsafe struct VkPhysicalDeviceDepthClampZeroOneFeaturesEXT
+{
+ /// The stype of this structure.
+ public const VkStructureType STYPE = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT;
+
+ /// sType is the type of this structure.
+ public VkStructureType sType;
+
+ /// pNext is NULL or a pointer to a structure extending this structure.
+ public void* pNext;
+
+ /// depthClampZeroOne indicates that the implementation supports clamping the depth to a range of 0 to 1.
+ public VkBool32 depthClampZeroOne;
+}
\ No newline at end of file
diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_mesh_shader/VkDrawMeshTasksIndirectCommandEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_mesh_shader/VkDrawMeshTasksIndirectCommandEXT.cs
new file mode 100644
index 00000000..97d95aeb
--- /dev/null
+++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_mesh_shader/VkDrawMeshTasksIndirectCommandEXT.cs
@@ -0,0 +1,34 @@
+#region License
+
+// Copyright (c) 2018-2022, exomia
+// All rights reserved.
+//
+// This source code is licensed under the BSD-style license found in the
+// LICENSE file in the root directory of this source tree.
+
+#endregion
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable InconsistentNaming
+// ReSharper disable once CheckNamespace
+namespace Exomia.Vulkan.Api.Core;
+
+///
+/// VkDrawMeshTasksIndirectCommandEXT - Structure specifying a mesh tasks draw indirect command -
+///
+/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDrawMeshTasksIndirectCommandEXT.html
+///
+///
+[StructLayout(LayoutKind.Sequential)]
+public struct VkDrawMeshTasksIndirectCommandEXT
+{
+ /// groupCountX is the number of local workgroups to dispatch in the X dimension.
+ public uint groupCountX;
+
+ /// groupCountY is the number of local workgroups to dispatch in the Y dimension.
+ public uint groupCountY;
+
+ /// groupCountZ is the number of local workgroups to dispatch in the Z dimension.
+ public uint groupCountZ;
+}
\ No newline at end of file
diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_mesh_shader/VkExtMeshShader.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_mesh_shader/VkExtMeshShader.cs
new file mode 100644
index 00000000..6fb8f8aa
--- /dev/null
+++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_mesh_shader/VkExtMeshShader.cs
@@ -0,0 +1,144 @@
+#region License
+
+// Copyright (c) 2018-2022, exomia
+// All rights reserved.
+//
+// This source code is licensed under the BSD-style license found in the
+// LICENSE file in the root directory of this source tree.
+
+#endregion
+
+global using static Exomia.Vulkan.Api.Core.VkExtMeshShader;
+
+#pragma warning disable CA2211 // Non-constant fields should not be visible
+#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable InconsistentNaming
+// ReSharper disable once CheckNamespace
+namespace Exomia.Vulkan.Api.Core;
+
+///
+/// VK_EXT_mesh_shader - device extension (nr. 329) - author 'EXT' [platform '' | contact 'Christoph Kubisch
+/// @pixeljetstream']
+/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_mesh_shader.html
+///
+[VkRequires("VK_KHR_get_physical_device_properties2")]
+public static unsafe class VkExtMeshShader
+{
+ /// The spec version.
+ public const uint VK_EXT_MESH_SHADER_SPEC_VERSION = 1;
+
+ /// The extension name.
+ public const string VK_EXT_MESH_SHADER_EXTENSION_NAME = "VK_EXT_mesh_shader";
+
+ ///
+ /// An UTF8 null terminated version of represented by an UTF16
+ /// string.
+ ///
+ ///
+ /// Example usage:
+ ///
+ /// fixed(char* ptr = VK_EXT_MESH_SHADER_EXTENSION_NAME_UTF8_NT) {
+ /// sbyte* utf8NtPtr = (sbyte*)ptr; // utf8NtPtr - can now be passed and used directly as a utf8_nt string for
+ /// unmanaged code.
+ /// }
+ ///
+ public const string VK_EXT_MESH_SHADER_EXTENSION_NAME_UTF8_NT = "\u4b56\u455f\u5458\u4d5f\u5345\u5f48\u4853\u4441\u5245\u455f\u5458\u4e45\u4953\u4e4f\u4e5f\u4d41\u0045";
+
+ ///
+ /// vkCmdDrawMeshTasksEXT - Draw mesh task work items -
+ /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdDrawMeshTasksEXT.html
+ ///
+ /// commandBuffer is the command buffer into which the command will be recorded.
+ /// groupCountX is the number of local workgroups to dispatch in the X dimension.
+ /// groupCountY is the number of local workgroups to dispatch in the Y dimension.
+ /// groupCountZ is the number of local workgroups to dispatch in the Z dimension.
+ public static readonly delegate*<
+ VkCommandBuffer /*commandBuffer*/,
+ uint /*groupCountX*/,
+ uint /*groupCountY*/,
+ uint /*groupCountZ*/,
+ void> vkCmdDrawMeshTasksEXT = null;
+
+ ///
+ /// vkCmdDrawMeshTasksIndirectEXT - Issue an indirect mesh tasks draw into a command buffer -
+ /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdDrawMeshTasksIndirectEXT.html
+ ///
+ /// commandBuffer is the command buffer into which the command is recorded.
+ /// buffer is the buffer containing draw parameters.
+ /// offset is the byte offset into buffer where parameters begin.
+ /// drawCount is the number of draws to execute, and can be zero.
+ /// stride is the byte stride between successive sets of draw parameters.
+ public static readonly delegate*<
+ VkCommandBuffer /*commandBuffer*/,
+ VkBuffer /*buffer*/,
+ VkDeviceSize /*offset*/,
+ uint /*drawCount*/,
+ uint /*stride*/,
+ void> vkCmdDrawMeshTasksIndirectEXT = null;
+
+ ///
+ /// vkCmdDrawMeshTasksIndirectCountEXT - Perform an indirect mesh tasks draw with the draw count sourced from a
+ /// buffer -
+ ///
+ /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdDrawMeshTasksIndirectCountEXT.html
+ ///
+ ///
+ /// commandBuffer is the command buffer into which the command is recorded.
+ /// buffer is the buffer containing draw parameters.
+ /// offset is the byte offset into buffer where parameters begin.
+ /// countBuffer is the buffer containing the draw count.
+ /// countBufferOffset is the byte offset into countBuffer where the draw count begins.
+ ///
+ /// maxDrawCount specifies the maximum number of draws that will be executed. The actual number
+ /// of executed draw calls is the minimum of the count specified in countBuffer and maxDrawCount.
+ ///
+ /// stride is the byte stride between successive sets of draw parameters.
+ public static readonly delegate*<
+ VkCommandBuffer /*commandBuffer*/,
+ VkBuffer /*buffer*/,
+ VkDeviceSize /*offset*/,
+ VkBuffer /*countBuffer*/,
+ VkDeviceSize /*countBufferOffset*/,
+ uint /*maxDrawCount*/,
+ uint /*stride*/,
+ void> vkCmdDrawMeshTasksIndirectCountEXT = null;
+
+ /// Loads all function pointer based on the device for this extension. (see remarks!)
+ /// The device that the function pointers will be compatible with.
+ ///
+ /// This load method makes the following function pointers available:
+ ///
+ /// -
+ /// vkCmdDrawMeshTasksEXT
+ ///
+ /// -
+ /// vkCmdDrawMeshTasksIndirectEXT
+ ///
+ /// -
+ /// vkCmdDrawMeshTasksIndirectCountEXT
+ ///
+ ///
+ ///
+ public static void Load(VkDevice device)
+ {
+ fixed (delegate** pvkCmdDrawMeshTasksEXT = &vkCmdDrawMeshTasksEXT)
+ {
+ *pvkCmdDrawMeshTasksEXT = (delegate*)GetVkFunction(device, "\u6b76\u6d43\u4464\u6172\u4d77\u7365\u5468\u7361\u736b\u5845\u0054");
+ }
+
+ fixed (delegate** pvkCmdDrawMeshTasksIndirectEXT = &vkCmdDrawMeshTasksIndirectEXT)
+ {
+ *pvkCmdDrawMeshTasksIndirectEXT = (delegate*)GetVkFunction(
+ device, "\u6b76\u6d43\u4464\u6172\u4d77\u7365\u5468\u7361\u736b\u6e49\u6964\u6572\u7463\u5845\u0054");
+ }
+
+ fixed (delegate** pvkCmdDrawMeshTasksIndirectCountEXT = &vkCmdDrawMeshTasksIndirectCountEXT)
+ {
+ *pvkCmdDrawMeshTasksIndirectCountEXT = (delegate*)GetVkFunction(
+ device, "\u6b76\u6d43\u4464\u6172\u4d77\u7365\u5468\u7361\u736b\u6e49\u6964\u6572\u7463\u6f43\u6e75\u4574\u5458\u0000");
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_mesh_shader/VkPhysicalDeviceMeshShaderFeaturesEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_mesh_shader/VkPhysicalDeviceMeshShaderFeaturesEXT.cs
new file mode 100644
index 00000000..75cb58e3
--- /dev/null
+++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_mesh_shader/VkPhysicalDeviceMeshShaderFeaturesEXT.cs
@@ -0,0 +1,76 @@
+#region License
+
+// Copyright (c) 2018-2022, exomia
+// All rights reserved.
+//
+// This source code is licensed under the BSD-style license found in the
+// LICENSE file in the root directory of this source tree.
+
+#endregion
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable InconsistentNaming
+// ReSharper disable once CheckNamespace
+namespace Exomia.Vulkan.Api.Core;
+
+///
+/// VkPhysicalDeviceMeshShaderFeaturesEXT - Structure describing mesh shading features that can be supported by an
+/// implementation -
+///
+/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderFeaturesEXT.html
+///
+///
+///
+///
+/// -
+/// structextendsVkPhysicalDeviceFeatures2,VkDeviceCreateInfo
+///
+///
+///
+[VkStructExtends("VkPhysicalDeviceFeatures2,VkDeviceCreateInfo")]
+[StructLayout(LayoutKind.Sequential)]
+public unsafe struct VkPhysicalDeviceMeshShaderFeaturesEXT
+{
+ /// The stype of this structure.
+ public const VkStructureType STYPE = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT;
+
+ /// sType is the type of this structure.
+ public VkStructureType sType;
+
+ /// pNext is NULL or a pointer to a structure extending this structure.
+ public void* pNext;
+
+ ///
+ /// taskShader specifies whether task shaders are supported. If this feature is not enabled, the
+ /// VK_SHADER_STAGE_TASK_BIT_EXTand VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT enum values must not be used.
+ ///
+ public VkBool32 taskShader;
+
+ ///
+ /// meshShader specifies whether mesh shaders are supported. If this feature is not enabled, the
+ /// VK_SHADER_STAGE_MESH_BIT_EXTand VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT enum values must not be used.
+ ///
+ public VkBool32 meshShader;
+
+ ///
+ /// multiviewMeshShader specifies whether the implementation supports multiview rendering within a render pass,
+ /// with mesh shaders. If this feature is not enabled, then a pipeline compiled against a subpass with a non-zero view
+ /// mask must not include a mesh shader.
+ ///
+ public VkBool32 multiviewMeshShader;
+
+ ///
+ /// primitiveFragmentShadingRateMeshShader indicates that the implementation supports the primitive fragment
+ /// shading rate in mesh shaders.
+ ///
+ public VkBool32 primitiveFragmentShadingRateMeshShader;
+
+ ///
+ /// meshShaderQueries indicates that the implementation supports creating query pools using the
+ /// VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT query type and statistic queries containing the
+ /// VK_QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT and
+ /// VK_QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT flags
+ ///
+ public VkBool32 meshShaderQueries;
+}
\ No newline at end of file
diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_mesh_shader/VkPhysicalDeviceMeshShaderPropertiesEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_mesh_shader/VkPhysicalDeviceMeshShaderPropertiesEXT.cs
new file mode 100644
index 00000000..fde8f148
--- /dev/null
+++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_mesh_shader/VkPhysicalDeviceMeshShaderPropertiesEXT.cs
@@ -0,0 +1,232 @@
+#region License
+
+// Copyright (c) 2018-2022, exomia
+// All rights reserved.
+//
+// This source code is licensed under the BSD-style license found in the
+// LICENSE file in the root directory of this source tree.
+
+#endregion
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable InconsistentNaming
+// ReSharper disable once CheckNamespace
+namespace Exomia.Vulkan.Api.Core;
+
+///
+/// VkPhysicalDeviceMeshShaderPropertiesEXT - Structure describing mesh shading properties -
+///
+/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html
+///
+///
+///
+///
+/// -
+/// structextendsVkPhysicalDeviceProperties2
+///
+/// -
+/// returnedonlytrue
+///
+///
+///
+[VkStructExtends("VkPhysicalDeviceProperties2")]
+[StructLayout(LayoutKind.Sequential)]
+public unsafe struct VkPhysicalDeviceMeshShaderPropertiesEXT
+{
+ /// The stype of this structure.
+ public const VkStructureType STYPE = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT;
+
+ /// sType is the type of this structure.
+ public VkStructureType sType;
+
+ /// pNext is NULL or a pointer to a structure extending this structure.
+ public void* pNext;
+
+ ///
+ /// maxTaskWorkGroupTotalCountis the maximum number of total local workgroups that can be launched by a single
+ /// mesh tasks drawing command. See
+ /// https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-mesh-shading.
+ ///
+ public uint maxTaskWorkGroupTotalCount;
+
+ ///
+ /// maxTaskWorkGroupCount[3] is the maximum number of local workgroups that can be launched by a single mesh
+ /// tasks drawing command. These three values represent the maximum number of local workgroups for the X, Y, and Z
+ /// dimensions, respectively. The workgroup count parameters to the drawing commands must be less than or equal to the
+ /// corresponding limit. The product of these dimensions must be less than or equal to maxTaskWorkGroupTotalCount.
+ ///
+ public VkArray3 maxTaskWorkGroupCount;
+
+ ///
+ /// maxTaskWorkGroupInvocations is the maximum total number of task shader invocations in a single local
+ /// workgroup. The product of the X, Y, and Z sizes, as specified by the LocalSizeor LocalSizeId execution mode
+ /// in shader modules or by the object decorated by the WorkgroupSize decoration, must be less than or equal to
+ /// this limit.
+ ///
+ public uint maxTaskWorkGroupInvocations;
+
+ ///
+ /// maxTaskWorkGroupSize[3] is the maximum size of a local task workgroup, per dimension. These three
+ /// values represent the maximum local workgroup size in the X, Y, and Z dimensions, respectively. The x, y,
+ /// and z sizes, as specified by the LocalSizeor LocalSizeId execution mode or by the object decorated by the
+ /// WorkgroupSize decoration in shader modules, must be less than or equal to the corresponding limit.
+ ///
+ public VkArray3 maxTaskWorkGroupSize;
+
+ ///
+ /// maxTaskPayloadSize is the maximum total storage size, in bytes, available for variables declared with the
+ /// TaskPayloadWorkgroupEXT storage class in shader modules in the task shader stage.
+ ///
+ public uint maxTaskPayloadSize;
+
+ ///
+ /// maxTaskSharedMemorySize is the maximum total storage size, in bytes, available for variables declared with
+ /// the Workgroup storage class in shader modules in the task shader stage.
+ ///
+ public uint maxTaskSharedMemorySize;
+
+ ///
+ /// maxTaskPayloadAndSharedMemorySize is the maximum total storage size, in bytes, available for variables that
+ /// are declared with the TaskPayloadWorkgroupEXT or Workgroup storage class, in shader modules in the task shader
+ /// stage.
+ ///
+ public uint maxTaskPayloadAndSharedMemorySize;
+
+ ///
+ /// maxMeshWorkGroupTotalCountis the maximum number of local output tasks a single task shader workgroup can
+ /// emit.
+ ///
+ public uint maxMeshWorkGroupTotalCount;
+
+ ///
+ /// maxMeshWorkGroupCount[3] is the maximum number of local output tasks a single task shader workgroup can emit,
+ /// per dimension. These three values represent the maximum number of local output tasks for the X, Y, and Z
+ /// dimensions, respectively. The workgroup count parameters to the OpEmitMeshTasksEXT must be less than or equal to
+ /// the corresponding limit. The product of these dimensions must be less than or equal to maxMeshWorkGroupTotalCount.
+ ///
+ public VkArray3 maxMeshWorkGroupCount;
+
+ ///
+ /// maxMeshWorkGroupInvocations is the maximum total number of mesh shader invocations in a single local
+ /// workgroup. The product of the X, Y, and Z sizes, as specified by the LocalSizeor LocalSizeId execution mode
+ /// in shader modules or by the object decorated by the WorkgroupSize decoration, must be less than or equal to
+ /// this limit.
+ ///
+ public uint maxMeshWorkGroupInvocations;
+
+ ///
+ /// maxMeshWorkGroupSize[3] is the maximum size of a local mesh workgroup, per dimension. These three
+ /// values represent the maximum local workgroup size in the X, Y, and Z dimensions, respectively. The x, y,
+ /// and z sizes, as specified by the LocalSizeor LocalSizeId execution mode or by the object decorated by the
+ /// WorkgroupSize decoration in shader modules, must be less than or equal to the corresponding limit.
+ ///
+ public VkArray3 maxMeshWorkGroupSize;
+
+ ///
+ /// maxMeshSharedMemorySize is the maximum total storage size, in bytes, available for variables declared with
+ /// the Workgroup storage class in shader modules in the mesh shader stage.
+ ///
+ public uint maxMeshSharedMemorySize;
+
+ ///
+ /// maxMeshPayloadAndSharedMemorySize is the maximum total storage size, in bytes, available for variables that
+ /// are declared with the TaskPayloadWorkgroupEXT or Workgroup storage class in shader modules in the mesh shader
+ /// stage.
+ ///
+ public uint maxMeshPayloadAndSharedMemorySize;
+
+ ///
+ /// maxMeshOutputMemorySize is the maximum total storage size, in bytes, available for output variables in shader
+ /// modules in the mesh shader stage, according to the formula in Mesh Shader Output.
+ ///
+ public uint maxMeshOutputMemorySize;
+
+ ///
+ /// maxMeshPayloadAndOutputMemorySize is the maximum total storage size, in bytes, available for variables that
+ /// are declared with the TaskPayloadWorkgroupEXT storage class, or output variables in shader modules in the mesh
+ /// shader stage, according to the formula in Mesh Shader Output.
+ ///
+ public uint maxMeshPayloadAndOutputMemorySize;
+
+ ///
+ /// maxMeshOutputComponents is the maximum number of components of output variables which can be output from the
+ /// mesh shader stage.
+ ///
+ public uint maxMeshOutputComponents;
+
+ ///
+ /// maxMeshOutputVertices is the maximum number of vertices which can be emitted by a single mesh shader
+ /// workgroup.
+ ///
+ public uint maxMeshOutputVertices;
+
+ ///
+ /// maxMeshOutputPrimitives is the maximum number of primitives which can be emitted by a single mesh shader
+ /// workgroup.
+ ///
+ public uint maxMeshOutputPrimitives;
+
+ ///
+ /// maxMeshOutputLayers is one greater than the maximum layer index that can be output from the mesh shader
+ /// stage.
+ ///
+ public uint maxMeshOutputLayers;
+
+ /// maxMeshMultiviewViewCount is one greater than the maximum view index that can be used by any mesh shader.
+ public uint maxMeshMultiviewViewCount;
+
+ ///
+ /// meshOutputPerVertexGranularity is the granularity of vertex allocation. The number of output vertices
+ /// allocated for the mesh shader stage is padded to a multiple of this number. The value can be used to calculate the
+ /// required storage size for output variables in shader modules in the mesh shader stage, which must be less than or
+ /// equal to maxMeshOutputMemorySize.
+ ///
+ public uint meshOutputPerVertexGranularity;
+
+ ///
+ /// meshOutputPerPrimitiveGranularity is the granularity of primitive allocation. The number of output primitives
+ /// allocated for the mesh shader stage is padded to a multiple of this number. The value can be used to calculate the
+ /// required storage size for output variables in shader modules in the mesh shader stage, which must be less than or
+ /// equal to maxMeshOutputMemorySize.
+ ///
+ public uint meshOutputPerPrimitiveGranularity;
+
+ ///
+ /// maxPreferredTaskWorkGroupInvocations is the maximum number of task shader invocations in a single workgroup
+ /// that is preferred by the implementation for optimal performance. The value is guaranteed to be a multiple of a
+ /// supported subgroup size for the task shader stage.
+ ///
+ public uint maxPreferredTaskWorkGroupInvocations;
+
+ ///
+ /// maxPreferredMeshWorkGroupInvocations is the maximum number of mesh shader invocations in a single workgroup
+ /// that is preferred by the implementation for optimal performance. The value is guaranteed to be a multiple of a
+ /// supported subgroup size for the mesh shader stage.
+ ///
+ public uint maxPreferredMeshWorkGroupInvocations;
+
+ ///
+ /// prefersLocalInvocationVertexOutput specifies whether writes to the vertex output array in a mesh shader yield
+ /// best performance when the array index matches LocalInvocationIndex.
+ ///
+ public VkBool32 prefersLocalInvocationVertexOutput;
+
+ ///
+ /// prefersLocalInvocationPrimitiveOutput specifies whether writes to the primitive output array in a mesh shader
+ /// yield best performance when the array index matches LocalInvocationIndex.
+ ///
+ public VkBool32 prefersLocalInvocationPrimitiveOutput;
+
+ ///
+ /// prefersCompactVertexOutputspecifies whether output vertices should be compacted after custom culling in the
+ /// mesh shader for best performance, otherwise keeping the vertices at their original location may be better.
+ ///
+ public VkBool32 prefersCompactVertexOutput;
+
+ ///
+ /// prefersCompactPrimitiveOutput specifies whether output primitives should be compacted after custom culling in
+ /// the mesh shader for best performance, otherwise the use of CullPrimitiveEXT may be better.
+ ///
+ public VkBool32 prefersCompactPrimitiveOutput;
+}
\ No newline at end of file
diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_shader_atomic_float/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_shader_atomic_float/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.cs
index 018cf6fc..9ca77033 100644
--- a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_shader_atomic_float/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.cs
+++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_shader_atomic_float/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.cs
@@ -67,25 +67,25 @@ public unsafe struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT
///
/// shaderSharedFloat32Atomicsindicates whether shaders can perform 32-bit floating-point load, store and
- /// exchange atomic operations on shared memory.
+ /// exchange atomic operations on shared and payload memory.
///
public VkBool32 shaderSharedFloat32Atomics;
///
/// shaderSharedFloat32AtomicAdd indicates whether shaders canperform 32-bit floating-point add atomic operations
- /// on shared memory.
+ /// on shared and payload memory.
///
public VkBool32 shaderSharedFloat32AtomicAdd;
///
/// shaderSharedFloat64Atomicsindicates whether shaders can perform 64-bit floating-point load, store and
- /// exchange atomic operations on shared memory.
+ /// exchange atomic operations on shared and payload memory.
///
public VkBool32 shaderSharedFloat64Atomics;
///
/// shaderSharedFloat64AtomicAdd indicates whether shaders canperform 64-bit floating-point add atomic operations
- /// on shared memory.
+ /// on shared and payload memory.
///
public VkBool32 shaderSharedFloat64AtomicAdd;
diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_shader_atomic_float2/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_shader_atomic_float2/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.cs
index 285378e4..d8a881f3 100644
--- a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_shader_atomic_float2/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.cs
+++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_shader_atomic_float2/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.cs
@@ -73,31 +73,31 @@ public unsafe struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT
///
/// shaderSharedFloat16Atomicsindicates whether shaders can perform 16-bit floating-point load, store and
- /// exchange atomic operations on shared memory.
+ /// exchange atomic operations on shared and payload memory.
///
public VkBool32 shaderSharedFloat16Atomics;
///
/// shaderSharedFloat16AtomicAdd indicates whether shaders canperform 16-bit floating-point add atomic operations
- /// on shared memory.
+ /// on shared and payload memory.
///
public VkBool32 shaderSharedFloat16AtomicAdd;
///
/// shaderSharedFloat16AtomicMinMax indicates whether shaders canperform 16-bit floating-point min and max atomic
- /// operations on shared memory.
+ /// operations on shared and payload memory.
///
public VkBool32 shaderSharedFloat16AtomicMinMax;
///
/// shaderSharedFloat32AtomicMinMax indicates whether shaders canperform 32-bit floating-point min and max atomic
- /// operations on shared memory.
+ /// operations on shared and payload memory.
///
public VkBool32 shaderSharedFloat32AtomicMinMax;
///
/// shaderSharedFloat64AtomicMinMax indicates whether shaders canperform 64-bit floating-point min and max atomic
- /// operations on shared memory.
+ /// operations on shared and payload memory.
///
public VkBool32 shaderSharedFloat64AtomicMinMax;
diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_acceleration_structure/VkAccelerationStructureTypeKHR.cs b/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_acceleration_structure/VkAccelerationStructureTypeKHR.cs
index 80fcefa2..c1324cf2 100644
--- a/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_acceleration_structure/VkAccelerationStructureTypeKHR.cs
+++ b/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_acceleration_structure/VkAccelerationStructureTypeKHR.cs
@@ -33,7 +33,8 @@ public enum VkAccelerationStructureTypeKHR
///
/// VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR is an acceleration structure whose type is determined at build time
- /// used for special circumstances.
+ /// used for special circumstances. In these cases, the acceleration structure type is not known at creation time, but
+ /// must be specified at build time as either top or bottom.
///
VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR = 2,
diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/NV/VK_NV_device_generated_commands/VkIndirectCommandsTokenTypeNV.cs b/src/Exomia.Vulkan.Api.Core/Extensions/NV/VK_NV_device_generated_commands/VkIndirectCommandsTokenTypeNV.cs
index a7d439b8..224149f9 100644
--- a/src/Exomia.Vulkan.Api.Core/Extensions/NV/VK_NV_device_generated_commands/VkIndirectCommandsTokenTypeNV.cs
+++ b/src/Exomia.Vulkan.Api.Core/Extensions/NV/VK_NV_device_generated_commands/VkIndirectCommandsTokenTypeNV.cs
@@ -89,5 +89,14 @@ public enum VkIndirectCommandsTokenTypeNV
///
///
///
- VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7
+ VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7,
+
+ ///
+ ///
+ /// -
+ /// Equivalent commandvkCmdDrawMeshTasksIndirectEXT
+ ///
+ ///
+ ///
+ VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV = 1000328000
}
\ No newline at end of file
diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/NV/VK_NV_mesh_shader/VkPhysicalDeviceMeshShaderFeaturesNV.cs b/src/Exomia.Vulkan.Api.Core/Extensions/NV/VK_NV_mesh_shader/VkPhysicalDeviceMeshShaderFeaturesNV.cs
index 1d36d16d..37235d72 100644
--- a/src/Exomia.Vulkan.Api.Core/Extensions/NV/VK_NV_mesh_shader/VkPhysicalDeviceMeshShaderFeaturesNV.cs
+++ b/src/Exomia.Vulkan.Api.Core/Extensions/NV/VK_NV_mesh_shader/VkPhysicalDeviceMeshShaderFeaturesNV.cs
@@ -41,9 +41,15 @@ public unsafe struct VkPhysicalDeviceMeshShaderFeaturesNV
/// pNext is NULL or a pointer to a structure extending this structure.
public void* pNext;
- /// taskShader indicates whether the task shader stage is supported.
+ ///
+ /// taskShader specifies whether task shaders are supported. If this feature is not enabled, the
+ /// VK_SHADER_STAGE_TASK_BIT_NVand VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV enum values must not be used.
+ ///
public VkBool32 taskShader;
- /// meshShader indicates whether the mesh shader stage is supported.
+ ///
+ /// meshShader specifies whether mesh shaders are supported. If this feature is not enabled, the
+ /// VK_SHADER_STAGE_MESH_BIT_NVand VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV enum values must not be used.
+ ///
public VkBool32 meshShader;
}
\ No newline at end of file
diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/NV/VK_NV_mesh_shader/VkPhysicalDeviceMeshShaderPropertiesNV.cs b/src/Exomia.Vulkan.Api.Core/Extensions/NV/VK_NV_mesh_shader/VkPhysicalDeviceMeshShaderPropertiesNV.cs
index 6036b361..59203876 100644
--- a/src/Exomia.Vulkan.Api.Core/Extensions/NV/VK_NV_mesh_shader/VkPhysicalDeviceMeshShaderPropertiesNV.cs
+++ b/src/Exomia.Vulkan.Api.Core/Extensions/NV/VK_NV_mesh_shader/VkPhysicalDeviceMeshShaderPropertiesNV.cs
@@ -102,7 +102,7 @@ public unsafe struct VkPhysicalDeviceMeshShaderPropertiesNV
/// maxMeshOutputPrimitives is the maximum number of primitives a mesh shader output can store.
public uint maxMeshOutputPrimitives;
- /// maxMeshMultiviewViewCount is the maximum number of multi-view views a mesh shader can use.
+ /// maxMeshMultiviewViewCount is the maximum number of multiview views a mesh shader can use.
public uint maxMeshMultiviewViewCount;
///
diff --git a/src/Exomia.Vulkan.Api.Core/Structs/VkGraphicsPipelineCreateInfo.cs b/src/Exomia.Vulkan.Api.Core/Structs/VkGraphicsPipelineCreateInfo.cs
index d460bf2d..0d93532a 100644
--- a/src/Exomia.Vulkan.Api.Core/Structs/VkGraphicsPipelineCreateInfo.cs
+++ b/src/Exomia.Vulkan.Api.Core/Structs/VkGraphicsPipelineCreateInfo.cs
@@ -42,14 +42,15 @@ public unsafe struct VkGraphicsPipelineCreateInfo
public VkPipelineShaderStageCreateInfo* pStages;
///
- /// pVertexInputState is a pointer to a VkPipelineVertexInputStateCreateInfo structure defining vertex input state
- /// for use with vertex shading.
+ /// pVertexInputState is a pointer to a VkPipelineVertexInputStateCreateInfo structure. It is ignored if the
+ /// pipeline includes a mesh shader stage. It is ignored if the pipeline is created with the
+ /// VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state set.
///
public VkPipelineVertexInputStateCreateInfo* pVertexInputState;
///
/// pInputAssemblyState is a pointer to a VkPipelineInputAssemblyStateCreateInfo structure which determines input
- /// assembly behavior for vertex shading, as described in Drawing Commands.
+ /// assembly behavior, as described in Drawing Commands. It is ignored if the pipeline includes a mesh shader stage.
///
public VkPipelineInputAssemblyStateCreateInfo* pInputAssemblyState;
diff --git a/src/Exomia.Vulkan.Api.Core/Structs/VkPhysicalDeviceShaderAtomicInt64Features.cs b/src/Exomia.Vulkan.Api.Core/Structs/VkPhysicalDeviceShaderAtomicInt64Features.cs
index 63716b7c..cbf37855 100644
--- a/src/Exomia.Vulkan.Api.Core/Structs/VkPhysicalDeviceShaderAtomicInt64Features.cs
+++ b/src/Exomia.Vulkan.Api.Core/Structs/VkPhysicalDeviceShaderAtomicInt64Features.cs
@@ -48,7 +48,7 @@ public unsafe struct VkPhysicalDeviceShaderAtomicInt64Features
///
/// shaderSharedInt64Atomics indicates whether shaders can perform 64-bit unsigned and signed integer atomic
- /// operations on shared memory.
+ /// operations on shared and payload memory.
///
public VkBool32 shaderSharedInt64Atomics;
}
\ No newline at end of file
diff --git a/src/Exomia.Vulkan.Api.Core/Structs/VkPhysicalDeviceSubgroupSizeControlFeatures.cs b/src/Exomia.Vulkan.Api.Core/Structs/VkPhysicalDeviceSubgroupSizeControlFeatures.cs
index 4cd292f1..6a112f85 100644
--- a/src/Exomia.Vulkan.Api.Core/Structs/VkPhysicalDeviceSubgroupSizeControlFeatures.cs
+++ b/src/Exomia.Vulkan.Api.Core/Structs/VkPhysicalDeviceSubgroupSizeControlFeatures.cs
@@ -49,8 +49,8 @@ public unsafe struct VkPhysicalDeviceSubgroupSizeControlFeatures
public VkBool32 subgroupSizeControl;
///
- /// computeFullSubgroups indicates whether the implementation supports requiring full subgroups in compute shaders
- /// via the VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT flag.
+ /// computeFullSubgroups indicates whether the implementation supports requiring full subgroups in compute , mesh,
+ /// or task shaders via the VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT flag.
///
public VkBool32 computeFullSubgroups;
}
\ No newline at end of file
diff --git a/src/Exomia.Vulkan.Api.Core/Structs/VkPhysicalDeviceVulkan12Features.cs b/src/Exomia.Vulkan.Api.Core/Structs/VkPhysicalDeviceVulkan12Features.cs
index 4e94170c..caf36ada 100644
--- a/src/Exomia.Vulkan.Api.Core/Structs/VkPhysicalDeviceVulkan12Features.cs
+++ b/src/Exomia.Vulkan.Api.Core/Structs/VkPhysicalDeviceVulkan12Features.cs
@@ -85,7 +85,7 @@ public unsafe struct VkPhysicalDeviceVulkan12Features
///
/// shaderSharedInt64Atomics indicates whether shaders can perform 64-bit unsigned and signed integer atomic
- /// operations on shared memory.
+ /// operations on shared and payload memory.
///
public VkBool32 shaderSharedInt64Atomics;
@@ -368,18 +368,18 @@ public unsafe struct VkPhysicalDeviceVulkan12Features
public VkBool32 vulkanMemoryModelAvailabilityVisibilityChains;
///
- /// shaderOutputViewportIndexindicates whether the implementation supports the ShaderViewportIndex SPIR-V
- /// capability enabling variables decorated with the ViewportIndex built-in to be exported from vertex or tessellation
- /// evaluation shaders. If this feature is not enabled, the ViewportIndex built-in decoration must not be used on
- /// outputs in vertex or tessellation evaluation shaders.
+ /// shaderOutputViewportIndex indicates whether the implementation supports the ShaderViewportIndex SPIR-V
+ /// capability enabling variables decorated with the ViewportIndex built-in to be exported from mesh, vertex or
+ /// tessellation evaluation shaders. If this feature is not enabled, the ViewportIndex built-in decoration must
+ /// not be used on outputs in mesh, vertex or tessellation evaluation shaders.
///
public VkBool32 shaderOutputViewportIndex;
///
- /// shaderOutputLayer indicates whether the implementation supports the ShaderLayer SPIR-V capability enabling
- /// variables decorated with the Layer built-in to be exported from vertex or tessellation evaluation shaders. If this
- /// feature is not enabled, the Layer built-in decoration mustnot be used on outputs in vertex or tessellation
- /// evaluation shaders.
+ /// shaderOutputLayer indicates whether the implementation supports the ShaderLayer SPIR-V capability
+ /// enabling variables decorated with the Layer built-in to be exported from mesh, vertex or tessellation
+ /// evaluation shaders. If this feature is not enabled, the Layer built-in decoration must not be used on
+ /// outputs in mesh, vertex or tessellation evaluation shaders.
///
public VkBool32 shaderOutputLayer;
diff --git a/src/Exomia.Vulkan.Api.Core/Structs/VkPhysicalDeviceVulkan13Features.cs b/src/Exomia.Vulkan.Api.Core/Structs/VkPhysicalDeviceVulkan13Features.cs
index 889d9fac..bbf7ce6f 100644
--- a/src/Exomia.Vulkan.Api.Core/Structs/VkPhysicalDeviceVulkan13Features.cs
+++ b/src/Exomia.Vulkan.Api.Core/Structs/VkPhysicalDeviceVulkan13Features.cs
@@ -91,8 +91,8 @@ public unsafe struct VkPhysicalDeviceVulkan13Features
public VkBool32 subgroupSizeControl;
///
- /// computeFullSubgroups indicates whether the implementation supports requiring full subgroups in compute shaders
- /// via the VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT flag.
+ /// computeFullSubgroups indicates whether the implementation supports requiring full subgroups in compute , mesh,
+ /// or task shaders via the VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT flag.
///
public VkBool32 computeFullSubgroups;