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;