diff --git a/.version b/.version index fe4fd42d..3969b469 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -1.3.295 \ No newline at end of file +1.3.296 \ No newline at end of file diff --git a/analyzer/Exomia.Vulkan.Api.Core.SourceGenerator/Extensions/EXT/VK_EXT_device_generated_commands/VkExtDeviceGeneratedCommands.bitmasks.cs b/analyzer/Exomia.Vulkan.Api.Core.SourceGenerator/Extensions/EXT/VK_EXT_device_generated_commands/VkExtDeviceGeneratedCommands.bitmasks.cs new file mode 100644 index 00000000..a09c6403 --- /dev/null +++ b/analyzer/Exomia.Vulkan.Api.Core.SourceGenerator/Extensions/EXT/VK_EXT_device_generated_commands/VkExtDeviceGeneratedCommands.bitmasks.cs @@ -0,0 +1,2 @@ +global using VkIndirectCommandsLayoutUsageFlagsEXT = Exomia.Vulkan.Api.Core.VkIndirectCommandsLayoutUsageFlagBitsEXT; +global using VkIndirectCommandsInputModeFlagsEXT = Exomia.Vulkan.Api.Core.VkIndirectCommandsInputModeFlagBitsEXT; diff --git a/src/Exomia.Vulkan.Api.Core/Enums/VkAccessFlagBits.cs b/src/Exomia.Vulkan.Api.Core/Enums/VkAccessFlagBits.cs index 6cd6c60a..1ad33ae3 100644 --- a/src/Exomia.Vulkan.Api.Core/Enums/VkAccessFlagBits.cs +++ b/src/Exomia.Vulkan.Api.Core/Enums/VkAccessFlagBits.cs @@ -401,5 +401,25 @@ public enum VkAccessFlagBits VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR, /// VK_ACCESS_NONE specifies no accesses. - VK_ACCESS_NONE_KHR = VK_ACCESS_NONE + VK_ACCESS_NONE_KHR = VK_ACCESS_NONE, + + /// + /// VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV specifies reads from buffer inputs to + /// + /// vkCmdPreprocessGeneratedCommandsNV + /// + /// . Such access occurs in the VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV pipeline stage. + /// + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT = VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV, + + /// + /// VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV specifies writes to the target command buffer preprocess outputs in + /// + /// vkCmdPreprocessGeneratedCommandsNV + /// + /// . Such access occurs in the VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV pipeline stage. + /// + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT = VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV } \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Enums/VkAccessFlagBits2.cs b/src/Exomia.Vulkan.Api.Core/Enums/VkAccessFlagBits2.cs index 544e803b..e57c9b8d 100644 --- a/src/Exomia.Vulkan.Api.Core/Enums/VkAccessFlagBits2.cs +++ b/src/Exomia.Vulkan.Api.Core/Enums/VkAccessFlagBits2.cs @@ -746,6 +746,22 @@ public enum VkAccessFlagBits2 : ulong /// VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR = VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT, + /// + /// VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV specifies reads from buffer inputs to + /// + /// vkCmdPreprocessGeneratedCommandsNV + /// + /// . Such access occurs in the VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV pipeline stage. + /// + VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_EXT = VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV, + + /// + /// VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV specifies writes to the target command buffer preprocess outputs. + /// Such access occurs in the VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV pipeline stage. + /// + VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_EXT = VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV, + /// /// VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHRspecifies read access to a fragment shading rate /// attachment during rasterization. Such access occurs in the diff --git a/src/Exomia.Vulkan.Api.Core/Enums/VkBufferUsageFlagBits.cs b/src/Exomia.Vulkan.Api.Core/Enums/VkBufferUsageFlagBits.cs index f4ffcdcd..0517e988 100644 --- a/src/Exomia.Vulkan.Api.Core/Enums/VkBufferUsageFlagBits.cs +++ b/src/Exomia.Vulkan.Api.Core/Enums/VkBufferUsageFlagBits.cs @@ -99,7 +99,9 @@ public enum VkBufferUsageFlagBits /// , or /// vkCmdDispatchIndirect /// . It is also suitable for passing as the buffer member of VkIndirectCommandsStreamNV, or sequencesCountBuffer or - /// sequencesIndexBuffer or preprocessedBuffer member of VkGeneratedCommandsInfoNV + /// sequencesIndexBuffer or preprocessedBuffer member of VkGeneratedCommandsInfoNV. It is also suitable for passing as + /// the underlying buffer of either the preprocessAddress or sequenceCountAddress members of + /// VkGeneratedCommandsInfoEXT. /// VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x100, diff --git a/src/Exomia.Vulkan.Api.Core/Enums/VkDynamicState.cs b/src/Exomia.Vulkan.Api.Core/Enums/VkDynamicState.cs index f4733805..ac10f226 100644 --- a/src/Exomia.Vulkan.Api.Core/Enums/VkDynamicState.cs +++ b/src/Exomia.Vulkan.Api.Core/Enums/VkDynamicState.cs @@ -1028,6 +1028,18 @@ public enum VkDynamicState /// VK_DYNAMIC_STATE_LINE_STIPPLE_KHR = 1000259000, + /// + /// VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT specifies that the depthClampMode and pDepthClampRange state in + /// + /// VkPipelineViewportDepthClampControlCreateInfoEXT + /// + /// will be ignored and must be set dynamically with + /// vkCmdSetDepthClampRangeEXT + /// before any draw call. + /// + VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT = 1000582000, + /// /// VK_DYNAMIC_STATE_LINE_STIPPLE_EXT
/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkDynamicState diff --git a/src/Exomia.Vulkan.Api.Core/Enums/VkObjectType.cs b/src/Exomia.Vulkan.Api.Core/Enums/VkObjectType.cs index 6e83f692..a723488d 100644 --- a/src/Exomia.Vulkan.Api.Core/Enums/VkObjectType.cs +++ b/src/Exomia.Vulkan.Api.Core/Enums/VkObjectType.cs @@ -472,6 +472,24 @@ public enum VkObjectType ///
VK_OBJECT_TYPE_PIPELINE_BINARY_KHR = 1000483000, + /// + /// + /// + /// Vulkan Handle TypeVkIndirectCommandsLayoutEXT + /// + /// + /// + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_EXT = 1000572000, + + /// + /// + /// + /// Vulkan Handle TypeVkIndirectExecutionSetEXT + /// + /// + /// + VK_OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXT = 1000572001, + /// /// /// diff --git a/src/Exomia.Vulkan.Api.Core/Enums/VkPipelineStageFlagBits.cs b/src/Exomia.Vulkan.Api.Core/Enums/VkPipelineStageFlagBits.cs index 1ba02de6..9eb368bd 100644 --- a/src/Exomia.Vulkan.Api.Core/Enums/VkPipelineStageFlagBits.cs +++ b/src/Exomia.Vulkan.Api.Core/Enums/VkPipelineStageFlagBits.cs @@ -36,6 +36,11 @@ public enum VkPipelineStageFlagBits /// href="https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdExecuteGeneratedCommandsNV.html"> /// vkCmdExecuteGeneratedCommandsNV /// + /// . This stage also includes reading commands written by + /// + /// vkCmdExecuteGeneratedCommandsEXT + /// /// . /// VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 0x2, @@ -360,5 +365,16 @@ public enum VkPipelineStageFlagBits 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 + VK_PIPELINE_STAGE_NONE_KHR = VK_PIPELINE_STAGE_NONE, + + /// + /// VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV specifies the stage of the pipeline where device-side + /// preprocessing for generated commands via + /// + /// vkCmdPreprocessGeneratedCommandsNV + /// + /// is handled. + /// + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT = VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV } \ 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 defea8cd..9831978a 100644 --- a/src/Exomia.Vulkan.Api.Core/Enums/VkPipelineStageFlagBits2.cs +++ b/src/Exomia.Vulkan.Api.Core/Enums/VkPipelineStageFlagBits2.cs @@ -32,12 +32,17 @@ public enum VkPipelineStageFlagBits2 : ulong VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT = 0x1, /// - /// VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT specifies the stage of the pipeline where indirect command parameters - /// are consumed. This stage also includes reading commands written by + /// VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT specifies the stage of the pipeline where indirect command parameters are + /// consumed. This stage also includes reading commands written by /// /// vkCmdPreprocessGeneratedCommandsNV /// + /// . This stage also includes reading commands written by + /// + /// vkCmdPreprocessGeneratedCommandsEXT + /// /// . /// VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT = 0x2, @@ -371,12 +376,17 @@ public enum VkPipelineStageFlagBits2 : ulong VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR = VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT, /// - /// VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT specifies the stage of the pipeline where indirect command parameters - /// are consumed. This stage also includes reading commands written by + /// VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT specifies the stage of the pipeline where indirect command parameters are + /// consumed. This stage also includes reading commands written by /// /// vkCmdPreprocessGeneratedCommandsNV /// + /// . This stage also includes reading commands written by + /// + /// vkCmdPreprocessGeneratedCommandsEXT + /// /// . /// VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR = VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT, @@ -582,6 +592,17 @@ public enum VkPipelineStageFlagBits2 : ulong /// VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR = VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT, + /// + /// VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV specifies the stage of the pipeline where device-side generation + /// of commands via + /// + /// vkCmdPreprocessGeneratedCommandsNV + /// + /// is handled. + /// + VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_EXT = VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV, + /// /// VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR specifies the stage of the pipeline where the /// VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV = 1000568000, + /// + /// VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT
+ ///
https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType + ///
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT = 1000572000, + + /// + /// VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT
+ /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType + ///
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT = 1000572001, + + /// + /// VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT
+ /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType + ///
+ VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT = 1000572002, + + /// + /// VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT
+ /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType + ///
+ VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT = 1000572003, + + /// + /// VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT
+ /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType + ///
+ VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT = 1000572004, + + /// + /// VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT
+ /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType + ///
+ VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT = 1000572006, + + /// + /// VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT
+ /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType + ///
+ VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT = 1000572007, + + /// + /// VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT
+ /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType + ///
+ VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT = 1000572008, + + /// + /// VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT
+ /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType + ///
+ VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT = 1000572009, + + /// + /// VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT
+ /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType + ///
+ VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT = 1000572010, + + /// + /// VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT
+ /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType + ///
+ VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT = 1000572011, + + /// + /// VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT
+ /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType + ///
+ VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT = 1000572012, + + /// + /// VK_STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT
+ /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType + ///
+ VK_STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT = 1000572013, + + /// + /// VK_STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT
+ /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType + ///
+ VK_STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT = 1000572014, + /// /// VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA
/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType @@ -5545,6 +5629,18 @@ public enum VkStructureType ///
VK_STRUCTURE_TYPE_IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA = 1000575002, + /// + /// VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT
+ /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType + ///
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT = 1000582000, + + /// + /// VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT
+ /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType + ///
+ VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT = 1000582001, + /// /// VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES
/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_depth_clamp_control/VkDepthClampModeEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_depth_clamp_control/VkDepthClampModeEXT.cs new file mode 100644 index 00000000..54f628a6 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_depth_clamp_control/VkDepthClampModeEXT.cs @@ -0,0 +1,36 @@ +#region License + +// Copyright (c) 2018-2024, 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; + +/// +/// VkDepthClampModeEXT - Modes that determine the depth clamp range - +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDepthClampModeEXT.html +/// +public enum VkDepthClampModeEXT +{ + /// + /// VK_DEPTH_CLAMP_MODE_VIEWPORT_RANGE_EXT specifies that the depth clamp range follows the viewport depth range. + /// The depth clamp range of each viewport will implicitly be set to zmin = min(n,f) and zmax = max(n,f), where n and f + /// are the minDepth and maxDepth depth range values of the viewport. + /// + VK_DEPTH_CLAMP_MODE_VIEWPORT_RANGE_EXT = 0, + + /// + /// VK_DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT specifies that a single user-defined depth clamp range will be used + /// for all viewports. The user-defined depth clamp range is defined by the minDepthClampand maxDepthClamp members of + /// VkDepthClampRangeEXT + /// . + /// + VK_DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT = 1 +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_depth_clamp_control/VkDepthClampRangeEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_depth_clamp_control/VkDepthClampRangeEXT.cs new file mode 100644 index 00000000..a73cceb6 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_depth_clamp_control/VkDepthClampRangeEXT.cs @@ -0,0 +1,28 @@ +#region License + +// Copyright (c) 2018-2024, 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; + +/// +/// VkDepthClampRangeEXT - Structure specifying a depth clamp range - +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDepthClampRangeEXT.html +/// +[StructLayout(LayoutKind.Sequential)] +public struct VkDepthClampRangeEXT +{ + /// minDepthClamp sets zmin in the depth clamp range of the viewport. + public float minDepthClamp; + + /// maxDepthClamp sets zmax in the depth clamp range of the viewport. + public float maxDepthClamp; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_depth_clamp_control/VkExtDepthClampControl.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_depth_clamp_control/VkExtDepthClampControl.cs new file mode 100644 index 00000000..d11aec69 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_depth_clamp_control/VkExtDepthClampControl.cs @@ -0,0 +1,85 @@ +#region License + +// Copyright (c) 2018-2024, 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.VkExtDepthClampControl; + +#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_control - device extension (nr. 583) - author 'EXT' [platform '' | contact 'Jules Blok @jules'] +///
+/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_depth_clamp_control.html +///
+[VkDepends("VK_KHR_get_physical_device_properties2,VK_VERSION_1_1")] +[VkDeviceExt] +public static unsafe class VkExtDepthClampControl +{ + /// The spec version. + public const uint VK_EXT_DEPTH_CLAMP_CONTROL_SPEC_VERSION = 1; + + /// The extension name. + public const string VK_EXT_DEPTH_CLAMP_CONTROL_EXTENSION_NAME = "VK_EXT_depth_clamp_control"; + + /// + /// An UTF8 null terminated version of represented by an + /// UTF16 string. + /// + /// + /// Example usage:
+ ///
+ /// fixed(char* ptr = VK_EXT_DEPTH_CLAMP_CONTROL_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_CONTROL_EXTENSION_NAME_UTF8_NT = + "\u4b56\u455f\u5458\u445f\u5045\u4854\u435f\u414c\u504d\u435f\u4e4f\u5254\u4c4f\u455f\u5458\u4e45\u4953\u4e4f\u4e5f\u4d41\u0045"; + + /// + /// vkCmdSetDepthClampRangeEXT - Set the viewport depth clamp range dynamically for a command buffer - + /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdSetDepthClampRangeEXT.html + /// + /// commandBuffer is the command buffer into which the command will be recorded. + /// depthClampMode determines how the clamp range is determined for each viewport. + /// + /// pDepthClampRange sets the depth clamp range for all viewports if depthClampMode is set + /// to VK_DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT. + /// + public static readonly delegate*< + VkCommandBuffer /*commandBuffer*/, + VkDepthClampModeEXT /*depthClampMode*/, + VkDepthClampRangeEXT* /*pDepthClampRange*/, + void> vkCmdSetDepthClampRangeEXT = 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:
+ /// + /// + /// vkCmdSetDepthClampRangeEXT + /// + /// + ///
+ public static void Load(VkDevice device) + { + fixed (delegate** pvkCmdSetDepthClampRangeEXT = &vkCmdSetDepthClampRangeEXT) + { + *pvkCmdSetDepthClampRangeEXT = (delegate*)GetVkFunction( + device, "\u6b76\u6d43\u5364\u7465\u6544\u7470\u4368\u616c\u706d\u6152\u676e\u4565\u5458\u0000"); + } + } +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_depth_clamp_control/VkPhysicalDeviceDepthClampControlFeaturesEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_depth_clamp_control/VkPhysicalDeviceDepthClampControlFeaturesEXT.cs new file mode 100644 index 00000000..019fe123 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_depth_clamp_control/VkPhysicalDeviceDepthClampControlFeaturesEXT.cs @@ -0,0 +1,49 @@ +#region License + +// Copyright (c) 2018-2024, 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; + +/// +/// VkPhysicalDeviceDepthClampControlFeaturesEXT - Structure describing additional depth clamp control supported by an +/// implementation - +/// +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDepthClampControlFeaturesEXT.html +/// +/// +/// +/// +/// +/// structextendsVkPhysicalDeviceFeatures2,VkDeviceCreateInfo +/// +/// +/// +[VkStructExtends("VkPhysicalDeviceFeatures2,VkDeviceCreateInfo")] +[StructLayout(LayoutKind.Sequential)] +public unsafe struct VkPhysicalDeviceDepthClampControlFeaturesEXT +{ + /// The stype of this structure. + public const VkStructureType STYPE = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT; + + /// sType is a VkStructureType value identifying this structure. + public VkStructureType sType; + + /// pNext is NULL or a pointer to a structure extending this structure. + public void* pNext; + + /// + /// depthClampControl indicates that the implementation supports setting + /// VkPipelineViewportDepthClampControlCreateInfoEXT::depthClampModeto VK_DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT. + /// + public VkBool32 depthClampControl; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_depth_clamp_control/VkPipelineViewportDepthClampControlCreateInfoEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_depth_clamp_control/VkPipelineViewportDepthClampControlCreateInfoEXT.cs new file mode 100644 index 00000000..06f89d8d --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_depth_clamp_control/VkPipelineViewportDepthClampControlCreateInfoEXT.cs @@ -0,0 +1,52 @@ +#region License + +// Copyright (c) 2018-2024, 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; + +/// +/// VkPipelineViewportDepthClampControlCreateInfoEXT - Structure specifying parameters of a newly created pipeline +/// depth clamp control state - +/// +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPipelineViewportDepthClampControlCreateInfoEXT.html +/// +/// +/// +/// +/// +/// structextendsVkPipelineViewportStateCreateInfo +/// +/// +/// +[VkStructExtends("VkPipelineViewportStateCreateInfo")] +[StructLayout(LayoutKind.Sequential)] +public unsafe struct VkPipelineViewportDepthClampControlCreateInfoEXT +{ + /// The stype of this structure. + public const VkStructureType STYPE = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT; + + /// sType is a VkStructureType value identifying this structure. + public VkStructureType sType; + + /// pNext is NULL or a pointer to a structure extending this structure. + public void* pNext; + + /// depthClampMode determines how the clamp range is determined for each viewport. + public VkDepthClampModeEXT depthClampMode; + + /// + /// pDepthClampRange sets the depth clamp range for all viewports if depthClampMode is set to + /// VK_DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT. + /// + public VkDepthClampRangeEXT* pDepthClampRange; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkBindIndexBufferIndirectCommandEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkBindIndexBufferIndirectCommandEXT.cs new file mode 100644 index 00000000..3332a5c7 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkBindIndexBufferIndirectCommandEXT.cs @@ -0,0 +1,34 @@ +#region License + +// Copyright (c) 2018-2024, 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; + +/// +/// VkBindIndexBufferIndirectCommandEXT - Structure specifying input data for a single index buffer command token - +/// +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBindIndexBufferIndirectCommandEXT.html +/// +/// +[StructLayout(LayoutKind.Sequential)] +public struct VkBindIndexBufferIndirectCommandEXT +{ + /// bufferAddress specifies a physical address of the VkBufferused as index buffer. + public VkDeviceAddress bufferAddress; + + /// size is the byte size range which is available for this operation from the provided address. + public uint size; + + /// indexType is a VkIndexType value specifying how indices are treated. + public VkIndexType indexType; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkBindVertexBufferIndirectCommandEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkBindVertexBufferIndirectCommandEXT.cs new file mode 100644 index 00000000..1c1cbe16 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkBindVertexBufferIndirectCommandEXT.cs @@ -0,0 +1,34 @@ +#region License + +// Copyright (c) 2018-2024, 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; + +/// +/// VkBindVertexBufferIndirectCommandEXT - Structure specifying input data for a single vertex buffer command token - +/// +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBindVertexBufferIndirectCommandEXT.html +/// +/// +[StructLayout(LayoutKind.Sequential)] +public struct VkBindVertexBufferIndirectCommandEXT +{ + /// bufferAddress specifies a physical address of the VkBufferused as vertex input binding. + public VkDeviceAddress bufferAddress; + + /// size is the byte size range which is available for this operation from the provided address. + public uint size; + + /// stride is the byte size stride for this vertex input binding as in VkVertexInputBindingDescription::stride. + public uint stride; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkDrawIndirectCountIndirectCommandEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkDrawIndirectCountIndirectCommandEXT.cs new file mode 100644 index 00000000..4c21f34f --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkDrawIndirectCountIndirectCommandEXT.cs @@ -0,0 +1,34 @@ +#region License + +// Copyright (c) 2018-2024, 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; + +/// +/// VkDrawIndirectCountIndirectCommandEXT - Structure specifying input data for a single draw-type command token - +/// +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDrawIndirectCountIndirectCommandEXT.html +/// +/// +[StructLayout(LayoutKind.Sequential)] +public struct VkDrawIndirectCountIndirectCommandEXT +{ + /// bufferAddress specifies a physical address of the VkBufferused for draw commands. + public VkDeviceAddress bufferAddress; + + /// stride is the byte size stride for the command arguments + public uint stride; + + /// commandCount is the number of commands to execute + public uint commandCount; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkExtDeviceGeneratedCommands.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkExtDeviceGeneratedCommands.cs new file mode 100644 index 00000000..86ba1b85 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkExtDeviceGeneratedCommands.cs @@ -0,0 +1,357 @@ +#region License + +// Copyright (c) 2018-2024, 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.VkExtDeviceGeneratedCommands; + +#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_device_generated_commands - device extension (nr. 573) - author 'EXT' [platform '' | contact 'Mike +/// Blumenkrantz @zmike']
+/// +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_device_generated_commands.html +/// +///
+[VkDepends("VK_KHR_buffer_device_address+VK_KHR_maintenance5")] +[VkDeviceExt] +public static unsafe class VkExtDeviceGeneratedCommands +{ + /// The spec version. + public const uint VK_EXT_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 1; + + /// The extension name. + public const string VK_EXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_EXT_device_generated_commands"; + + /// + /// An UTF8 null terminated version of represented + /// by an UTF16 string. + /// + /// + /// Example usage:
+ ///
+ /// fixed(char* ptr = VK_EXT_DEVICE_GENERATED_COMMANDS_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_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME_UTF8_NT = + "\u4b56\u455f\u5458\u445f\u5645\u4349\u5f45\u4547\u454e\u4152\u4554\u5f44\u4f43\u4d4d\u4e41\u5344\u455f\u5458\u4e45\u4953\u4e4f\u4e5f\u4d41\u0045"; + + /// + /// vkGetGeneratedCommandsMemoryRequirementsEXT - Retrieve the buffer allocation requirements for generated commands - + /// + /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetGeneratedCommandsMemoryRequirementsEXT.html + /// + /// + /// device is the logical device that owns the buffer. + /// + /// pInfo is a pointer to a VkGeneratedCommandsMemoryRequirementsInfoEXT structure containing + /// parameters required for the memory requirements query. + /// + /// + /// pMemoryRequirements is a pointer to a VkMemoryRequirements2structure in which the + /// memory requirements of the buffer object are returned. + /// + public static readonly delegate*< + VkDevice /*device*/, + VkGeneratedCommandsMemoryRequirementsInfoEXT* /*pInfo*/, + VkMemoryRequirements2* /*pMemoryRequirements*/, + void> vkGetGeneratedCommandsMemoryRequirementsEXT = null; + + /// + /// vkCmdPreprocessGeneratedCommandsEXT - Performs preprocessing for generated commands - + /// + /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdPreprocessGeneratedCommandsEXT.html + /// + /// + /// commandBuffer is the command buffer which does the preprocessing. + /// + /// pGeneratedCommandsInfo is a pointer to a VkGeneratedCommandsInfoEXT structure + /// containing parameters affecting the preprocessing step. + /// + /// + /// stateCommandBuffer is a command buffer from which to snapshot current states affecting + /// the preprocessing step. When a graphics command action token is used, graphics state is snapshotted. When a compute + /// action command token is used, compute state is snapshotted. When a ray tracing action command token is used, ray + /// tracing state is snapshotted. It can be deleted at any time after this command has been recorded. + /// + public static readonly delegate*< + VkCommandBuffer /*commandBuffer*/, + VkGeneratedCommandsInfoEXT* /*pGeneratedCommandsInfo*/, + VkCommandBuffer /*stateCommandBuffer*/, + void> vkCmdPreprocessGeneratedCommandsEXT = null; + + /// + /// vkCmdExecuteGeneratedCommandsEXT - Generate and execute commands on the device - + /// + /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdExecuteGeneratedCommandsEXT.html + /// + /// + /// commandBuffer is the command buffer into which the command is recorded. + /// + /// isPreprocessed represents whether the input data has already been preprocessed on the + /// device. If it is VK_FALSE this command will implicitly trigger the preprocessing step, otherwise not. + /// + /// + /// pGeneratedCommandsInfo is a pointer to a VkGeneratedCommandsInfoEXT structure + /// containing parameters affecting the generation of commands. + /// + public static readonly delegate*< + VkCommandBuffer /*commandBuffer*/, + VkBool32 /*isPreprocessed*/, + VkGeneratedCommandsInfoEXT* /*pGeneratedCommandsInfo*/, + void> vkCmdExecuteGeneratedCommandsEXT = null; + + /// + /// vkCreateIndirectCommandsLayoutEXT - Create an indirect command layout object - + /// + /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateIndirectCommandsLayoutEXT.html + /// + /// + /// device is the logical device that creates the indirect command layout. + /// + /// pCreateInfo is a pointer to a VkIndirectCommandsLayoutCreateInfoEXT structure containing + /// parameters affecting creation of the indirect command layout. + /// + /// pAllocator controls host memory allocation as described in the Memory Allocation chapter. + /// + /// pIndirectCommandsLayout is a pointer to a VkIndirectCommandsLayoutEXT handle in + /// which the resulting indirect command layout is returned. + /// + /// + /// + /// + /// successcodesVK_SUCCESS + /// + /// + /// errorcodesVK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY + /// + /// + /// + public static readonly delegate*< + VkDevice /*device*/, + VkIndirectCommandsLayoutCreateInfoEXT* /*pCreateInfo*/, + VkAllocationCallbacks* /*pAllocator*/, + VkIndirectCommandsLayoutEXT* /*pIndirectCommandsLayout*/, + VkResult> vkCreateIndirectCommandsLayoutEXT = null; + + /// + /// vkDestroyIndirectCommandsLayoutEXT - Destroy an indirect commands layout - + /// + /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDestroyIndirectCommandsLayoutEXT.html + /// + /// + /// device is the logical device that destroys the layout. + /// indirectCommandsLayout is the layout to destroy. + /// pAllocator controls host memory allocation as described in the Memory Allocation chapter. + public static readonly delegate*< + VkDevice /*device*/, + VkIndirectCommandsLayoutEXT /*indirectCommandsLayout*/, + VkAllocationCallbacks* /*pAllocator*/, + void> vkDestroyIndirectCommandsLayoutEXT = null; + + /// + /// vkCreateIndirectExecutionSetEXT - Create an indirect execution set - + /// + /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateIndirectExecutionSetEXT.html + /// + /// + /// device is the logical device that creates the indirect execution set. + /// + /// pCreateInfo is a pointer to a VkIndirectExecutionSetCreateInfoEXT structure containing + /// parameters affecting creation of the indirect execution set. + /// + /// pAllocator controls host memory allocation as described in the Memory Allocation chapter. + /// + /// pIndirectExecutionSet is a pointer to a VkIndirectExecutionSetEXT handle in which + /// the resulting indirect execution set is returned. + /// + /// + /// + /// + /// successcodesVK_SUCCESS + /// + /// + /// errorcodesVK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY + /// + /// + /// + public static readonly delegate*< + VkDevice /*device*/, + VkIndirectExecutionSetCreateInfoEXT* /*pCreateInfo*/, + VkAllocationCallbacks* /*pAllocator*/, + VkIndirectExecutionSetEXT* /*pIndirectExecutionSet*/, + VkResult> vkCreateIndirectExecutionSetEXT = null; + + /// + /// vkDestroyIndirectExecutionSetEXT - Destroy an indirect execution set - + /// + /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDestroyIndirectExecutionSetEXT.html + /// + /// + /// device is the logical device that owns the indirect execution set. + /// indirectExecutionSet is the indirect execution set to destroy. + /// pAllocator controls host memory allocation as described in the Memory Allocation chapter. + public static readonly delegate*< + VkDevice /*device*/, + VkIndirectExecutionSetEXT /*indirectExecutionSet*/, + VkAllocationCallbacks* /*pAllocator*/, + void> vkDestroyIndirectExecutionSetEXT = null; + + /// + /// vkUpdateIndirectExecutionSetPipelineEXT - Update the contents of an indirect execution set - + /// + /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkUpdateIndirectExecutionSetPipelineEXT.html + /// + /// + /// device is the logical device that owns the indirect execution set. + /// indirectExecutionSet is the indirect execution set being updated. + /// executionSetWriteCount is the number of elements in the pExecutionSetWrites array. + /// + /// pExecutionSetWrites is a pointer to an array of + /// VkWriteIndirectExecutionSetPipelineEXT structures describing the elements to update. + /// + public static readonly delegate*< + VkDevice /*device*/, + VkIndirectExecutionSetEXT /*indirectExecutionSet*/, + uint /*executionSetWriteCount*/, + VkWriteIndirectExecutionSetPipelineEXT* /*pExecutionSetWrites*/, + void> vkUpdateIndirectExecutionSetPipelineEXT = null; + + /// + /// vkUpdateIndirectExecutionSetShaderEXT - Update the contents of an indirect execution set - + /// + /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkUpdateIndirectExecutionSetShaderEXT.html + /// + /// + /// device is the logical device that owns the indirect execution set. + /// indirectExecutionSet is the indirect execution set being updated. + /// executionSetWriteCount is the number of elements in the pExecutionSetWrites array. + /// + /// pExecutionSetWrites is a pointer to an array of VkWriteIndirectExecutionSetShaderEXT + /// structures describing the elements to update. + /// + public static readonly delegate*< + VkDevice /*device*/, + VkIndirectExecutionSetEXT /*indirectExecutionSet*/, + uint /*executionSetWriteCount*/, + VkWriteIndirectExecutionSetShaderEXT* /*pExecutionSetWrites*/, + void> vkUpdateIndirectExecutionSetShaderEXT = 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:
+ /// + /// + /// vkGetGeneratedCommandsMemoryRequirementsEXT + /// + /// + /// vkCmdPreprocessGeneratedCommandsEXT + /// + /// + /// vkCmdExecuteGeneratedCommandsEXT + /// + /// + /// vkCreateIndirectCommandsLayoutEXT + /// + /// + /// vkDestroyIndirectCommandsLayoutEXT + /// + /// + /// vkCreateIndirectExecutionSetEXT + /// + /// + /// vkDestroyIndirectExecutionSetEXT + /// + /// + /// vkUpdateIndirectExecutionSetPipelineEXT + /// + /// + /// vkUpdateIndirectExecutionSetShaderEXT + /// + /// + ///
+ public static void Load(VkDevice device) + { + fixed (delegate** pvkGetGeneratedCommandsMemoryRequirementsEXT = + &vkGetGeneratedCommandsMemoryRequirementsEXT) + { + *pvkGetGeneratedCommandsMemoryRequirementsEXT = (delegate*)GetVkFunction( + device, "\u6b76\u6547\u4774\u6e65\u7265\u7461\u6465\u6f43\u6d6d\u6e61\u7364\u654d\u6f6d\u7972\u6552\u7571\u7269\u6d65\u6e65\u7374\u5845\u0054"); + } + + fixed (delegate** pvkCmdPreprocessGeneratedCommandsEXT = &vkCmdPreprocessGeneratedCommandsEXT) + { + *pvkCmdPreprocessGeneratedCommandsEXT = (delegate*)GetVkFunction( + device, "\u6b76\u6d43\u5064\u6572\u7270\u636f\u7365\u4773\u6e65\u7265\u7461\u6465\u6f43\u6d6d\u6e61\u7364\u5845\u0054"); + } + + fixed (delegate** pvkCmdExecuteGeneratedCommandsEXT = &vkCmdExecuteGeneratedCommandsEXT) + { + *pvkCmdExecuteGeneratedCommandsEXT = (delegate*)GetVkFunction( + device, "\u6b76\u6d43\u4564\u6578\u7563\u6574\u6547\u656e\u6172\u6574\u4364\u6d6f\u616d\u646e\u4573\u5458\u0000"); + } + + fixed (delegate** pvkCreateIndirectCommandsLayoutEXT = + &vkCreateIndirectCommandsLayoutEXT) + { + *pvkCreateIndirectCommandsLayoutEXT = (delegate*)GetVkFunction( + device, "\u6b76\u7243\u6165\u6574\u6e49\u6964\u6572\u7463\u6f43\u6d6d\u6e61\u7364\u614c\u6f79\u7475\u5845\u0054"); + } + + fixed (delegate** pvkDestroyIndirectCommandsLayoutEXT = &vkDestroyIndirectCommandsLayoutEXT) + { + *pvkDestroyIndirectCommandsLayoutEXT = (delegate*)GetVkFunction( + device, "\u6b76\u6544\u7473\u6f72\u4979\u646e\u7269\u6365\u4374\u6d6f\u616d\u646e\u4c73\u7961\u756f\u4574\u5458\u0000"); + } + + fixed (delegate** pvkCreateIndirectExecutionSetEXT = + &vkCreateIndirectExecutionSetEXT) + { + *pvkCreateIndirectExecutionSetEXT = (delegate*)GetVkFunction( + device, "\u6b76\u7243\u6165\u6574\u6e49\u6964\u6572\u7463\u7845\u6365\u7475\u6f69\u536e\u7465\u5845\u0054"); + } + + fixed (delegate** pvkDestroyIndirectExecutionSetEXT = &vkDestroyIndirectExecutionSetEXT) + { + *pvkDestroyIndirectExecutionSetEXT = (delegate*)GetVkFunction( + device, "\u6b76\u6544\u7473\u6f72\u4979\u646e\u7269\u6365\u4574\u6578\u7563\u6974\u6e6f\u6553\u4574\u5458\u0000"); + } + + fixed (delegate** pvkUpdateIndirectExecutionSetPipelineEXT = &vkUpdateIndirectExecutionSetPipelineEXT) + { + *pvkUpdateIndirectExecutionSetPipelineEXT = (delegate*)GetVkFunction( + device, "\u6b76\u7055\u6164\u6574\u6e49\u6964\u6572\u7463\u7845\u6365\u7475\u6f69\u536e\u7465\u6950\u6570\u696c\u656e\u5845\u0054"); + } + + fixed (delegate** pvkUpdateIndirectExecutionSetShaderEXT = &vkUpdateIndirectExecutionSetShaderEXT) + { + *pvkUpdateIndirectExecutionSetShaderEXT = (delegate*)GetVkFunction( + device, "\u6b76\u7055\u6164\u6574\u6e49\u6964\u6572\u7463\u7845\u6365\u7475\u6f69\u536e\u7465\u6853\u6461\u7265\u5845\u0054"); + } + } +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkGeneratedCommandsInfoEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkGeneratedCommandsInfoEXT.cs new file mode 100644 index 00000000..c95792fe --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkGeneratedCommandsInfoEXT.cs @@ -0,0 +1,73 @@ +#region License + +// Copyright (c) 2018-2024, 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; + +/// +/// VkGeneratedCommandsInfoEXT - Structure specifying parameters for the generation of commands - +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkGeneratedCommandsInfoEXT.html +/// +[StructLayout(LayoutKind.Sequential)] +public unsafe struct VkGeneratedCommandsInfoEXT +{ + /// The stype of this structure. + public const VkStructureType STYPE = VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT; + + /// sType is a VkStructureType value identifying this structure. + public VkStructureType sType; + + /// pNext is NULL or a pointer to a structure extending this structure. + public void* pNext; + + /// shaderStages is the mask of shader stages used by the commands. + public VkShaderStageFlags shaderStages; + + /// indirectExecutionSet is the indirect execution set to be used for binding shaders. + public VkIndirectExecutionSetEXT indirectExecutionSet; + + /// indirectCommandsLayout is the VkIndirectCommandsLayoutEXTthat specifies the command sequence data. + public VkIndirectCommandsLayoutEXT indirectCommandsLayout; + + /// indirectAddress is an address that holds the indirect buffer data. + public VkDeviceAddress indirectAddress; + + /// indirectAddressSize is the size in bytes of indirect buffer data starting at indirectAddress. + public VkDeviceSize indirectAddressSize; + + /// + /// preprocessAddress specifies a physical address of the VkBuffer used for preprocessing the input data for + /// execution. If this structure is used with vkCmdExecuteGeneratedCommandsEXTwith its isPreprocessed set to VK_TRUE, + /// then the preprocessing step is skipped but data in this address may still be modified. The contents and the layout + /// of this address are opaque to applications and must not be modified outside functions related to device-generated + /// commands or copied to another buffer for reuse. + /// + public VkDeviceAddress preprocessAddress; + + /// preprocessSize is the maximum byte size within preprocessAddress that is available for preprocessing. + public VkDeviceSize preprocessSize; + + /// maxSequenceCount is used to determine the number of sequences to execute. + public uint maxSequenceCount; + + /// + /// sequenceCountAddress specifies an optional physical address of a single uint32_t value containing the + /// requested number of sequences to execute. + /// + public VkDeviceAddress sequenceCountAddress; + + /// + /// maxDrawCount is the maximum number of indirect draws that can be executed by any COUNT-type multi-draw + /// indirect tokens. The draw count in the indirect buffer is clamped to this value for these token types. + /// + public uint maxDrawCount; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkGeneratedCommandsMemoryRequirementsInfoEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkGeneratedCommandsMemoryRequirementsInfoEXT.cs new file mode 100644 index 00000000..e594ba6f --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkGeneratedCommandsMemoryRequirementsInfoEXT.cs @@ -0,0 +1,50 @@ +#region License + +// Copyright (c) 2018-2024, 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; + +/// +/// VkGeneratedCommandsMemoryRequirementsInfoEXT - Structure specifying parameters for the reservation of preprocess +/// buffer space - +/// +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkGeneratedCommandsMemoryRequirementsInfoEXT.html +/// +/// +[StructLayout(LayoutKind.Sequential)] +public unsafe struct VkGeneratedCommandsMemoryRequirementsInfoEXT +{ + /// The stype of this structure. + public const VkStructureType STYPE = VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT; + + /// sType is a VkStructureType value identifying this structure. + public VkStructureType sType; + + /// pNext is NULL or a pointer to a structure extending this structure. + public void* pNext; + + /// indirectExecutionSet is the indirect execution set to be used for binding shaders. + public VkIndirectExecutionSetEXT indirectExecutionSet; + + /// indirectCommandsLayout is the VkIndirectCommandsLayoutEXTthat this buffer memory is intended to be used with. + public VkIndirectCommandsLayoutEXT indirectCommandsLayout; + + /// maxSequenceCount is the maximum number of sequences that this buffer memory can be used with. + public uint maxSequenceCount; + + /// + /// maxDrawCount is the maximum number of indirect draws that can be executed by any COUNT-type multi-draw + /// indirect tokens. The draw count in the indirect buffer is clamped to this value for these token types. + /// + public uint maxDrawCount; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkGeneratedCommandsPipelineInfoEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkGeneratedCommandsPipelineInfoEXT.cs new file mode 100644 index 00000000..03c1fbba --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkGeneratedCommandsPipelineInfoEXT.cs @@ -0,0 +1,47 @@ +#region License + +// Copyright (c) 2018-2024, 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; + +/// +/// VkGeneratedCommandsPipelineInfoEXT - Structure specifying a pipeline for use with indirect command +/// preprocessing - +/// +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkGeneratedCommandsPipelineInfoEXT.html +/// +/// +/// +/// +/// +/// structextends +/// VkGeneratedCommandsInfoEXT,VkGeneratedCommandsMemoryRequirementsInfoEXT +/// +/// +/// +[VkStructExtends("VkGeneratedCommandsInfoEXT,VkGeneratedCommandsMemoryRequirementsInfoEXT")] +[StructLayout(LayoutKind.Sequential)] +public unsafe struct VkGeneratedCommandsPipelineInfoEXT +{ + /// The stype of this structure. + public const VkStructureType STYPE = VK_STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT; + + /// sType is a VkStructureType value identifying this structure. + public VkStructureType sType; + + /// pNext is NULL or a pointer to a structure extending this structure. + public void* pNext; + + /// pipeline is a valid pipeline object. + public VkPipeline pipeline; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkGeneratedCommandsShaderInfoEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkGeneratedCommandsShaderInfoEXT.cs new file mode 100644 index 00000000..257bb428 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkGeneratedCommandsShaderInfoEXT.cs @@ -0,0 +1,50 @@ +#region License + +// Copyright (c) 2018-2024, 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; + +/// +/// VkGeneratedCommandsShaderInfoEXT - Structure specifying shader objects for use with indirect command +/// preprocessing - +/// +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkGeneratedCommandsShaderInfoEXT.html +/// +/// +/// +/// +/// +/// structextends +/// VkGeneratedCommandsInfoEXT,VkGeneratedCommandsMemoryRequirementsInfoEXT +/// +/// +/// +[VkStructExtends("VkGeneratedCommandsInfoEXT,VkGeneratedCommandsMemoryRequirementsInfoEXT")] +[StructLayout(LayoutKind.Sequential)] +public unsafe struct VkGeneratedCommandsShaderInfoEXT +{ + /// The stype of this structure. + public const VkStructureType STYPE = VK_STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT; + + /// sType is a VkStructureType value identifying this structure. + public VkStructureType sType; + + /// pNext is NULL or a pointer to a structure extending this structure. + public void* pNext; + + /// shaderCount is the size of the pShaders array. + public uint shaderCount; + + /// pShaders is a pointer to an array of shader objects. + public VkShaderEXT* pShaders; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectCommandsExecutionSetTokenEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectCommandsExecutionSetTokenEXT.cs new file mode 100644 index 00000000..e51f1fcf --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectCommandsExecutionSetTokenEXT.cs @@ -0,0 +1,31 @@ +#region License + +// Copyright (c) 2018-2024, 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; + +/// +/// VkIndirectCommandsExecutionSetTokenEXT - Structure specifying input data for a single execution set command token - +/// +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkIndirectCommandsExecutionSetTokenEXT.html +/// +/// +[StructLayout(LayoutKind.Sequential)] +public struct VkIndirectCommandsExecutionSetTokenEXT +{ + /// type describes the type of indirect execution set in use. + public VkIndirectExecutionSetInfoTypeEXT type; + + /// shaderStages specifies the shaders that will be changed by this token. + public VkShaderStageFlags shaderStages; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectCommandsIndexBufferTokenEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectCommandsIndexBufferTokenEXT.cs new file mode 100644 index 00000000..9f3a02a0 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectCommandsIndexBufferTokenEXT.cs @@ -0,0 +1,29 @@ +#region License + +// Copyright (c) 2018-2024, 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; + +/// +/// VkIndirectCommandsIndexBufferTokenEXT - Structure specifying layout token info for a single index buffer command +/// token - +/// +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkIndirectCommandsIndexBufferTokenEXT.html +/// +/// +[StructLayout(LayoutKind.Sequential)] +public struct VkIndirectCommandsIndexBufferTokenEXT +{ + /// mode specifies the mode to use with this token. + public VkIndirectCommandsInputModeFlagBitsEXT mode; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectCommandsInputModeFlagBitsEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectCommandsInputModeFlagBitsEXT.cs new file mode 100644 index 00000000..01a54213 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectCommandsInputModeFlagBitsEXT.cs @@ -0,0 +1,41 @@ +#region License + +// Copyright (c) 2018-2024, 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; + +/// +/// VkIndirectCommandsInputModeFlagBitsEXT - Bitmask specifying allowed usage of an indirect commands layout - +/// +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkIndirectCommandsInputModeFlagBitsEXT.html +/// +/// +[Flags] +public enum VkIndirectCommandsInputModeFlagBitsEXT +{ + /// + /// VK_INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT indicates that the indirect buffer contains + /// + /// VkBindIndexBufferIndirectCommandEXT + /// + /// . + /// + VK_INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT = 0x1, + + /// + /// VK_INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT indicates that the indirect buffer contains + /// D3D12_INDEX_BUFFER_VIEW. + /// + VK_INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT = 0x2 +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectCommandsLayoutCreateInfoEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectCommandsLayoutCreateInfoEXT.cs new file mode 100644 index 00000000..f6f9ee4a --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectCommandsLayoutCreateInfoEXT.cs @@ -0,0 +1,57 @@ +#region License + +// Copyright (c) 2018-2024, 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; + +/// +/// VkIndirectCommandsLayoutCreateInfoEXT - Structure specifying the parameters of a newly created indirect commands +/// layout object - +/// +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkIndirectCommandsLayoutCreateInfoEXT.html +/// +/// +[StructLayout(LayoutKind.Sequential)] +public unsafe struct VkIndirectCommandsLayoutCreateInfoEXT +{ + /// The stype of this structure. + public const VkStructureType STYPE = VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT; + + /// sType is a VkStructureType value identifying this structure. + public VkStructureType sType; + + /// pNext is NULL or a pointer to a structure extending this structure. + public void* pNext; + + /// flags is a bitmask of VkIndirectCommandsLayoutUsageFlagBitsEXT specifying usage rules for this layout. + public VkIndirectCommandsLayoutUsageFlagsEXT flags; + + /// shaderStages is the VkShaderStageFlags that this layout supports. + public VkShaderStageFlags shaderStages; + + /// indirectStride is the distance in bytes between sequences in the indirect buffer + public uint indirectStride; + + /// + /// pipelineLayout is the optional VkPipelineLayout that tokens in this layout use. If the + /// dynamicGeneratedPipelineLayout feature is enabled, pipelineLayout can be VK_NULL_HANDLE and the layout mustbe + /// specified by chaining the VkPipelineLayoutCreateInfo structure off the pNext + /// + public VkPipelineLayout pipelineLayout; + + /// tokenCount is the length of the individual command sequence. + public uint tokenCount; + + /// pTokens is a pointer to an array of VkIndirectCommandsLayoutTokenEXT describing each command token in detail. + public VkIndirectCommandsLayoutTokenEXT* pTokens; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectCommandsLayoutEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectCommandsLayoutEXT.cs new file mode 100644 index 00000000..826742cf --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectCommandsLayoutEXT.cs @@ -0,0 +1,85 @@ +#region License + +// Copyright (c) 2018-2024, 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 once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +/// +/// VkIndirectCommandsLayoutEXT - Opaque handle to an indirect commands layout object - +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkIndirectCommandsLayoutEXT.html +/// +public readonly unsafe struct VkIndirectCommandsLayoutEXT +{ + /// The null value. + public static readonly VkIndirectCommandsLayoutEXT Null = (VkIndirectCommandsLayoutEXT)null; +#pragma warning disable 649 + private readonly void* _ptr; +#pragma warning restore 649 + + /// Returns a hash code for this object. + /// A hash code for this object. + public override int GetHashCode() + { + return ((IntPtr)_ptr).GetHashCode(); + } + + /// Tests if this in VkIndirectCommandsLayoutEXT is considered equal to this instance. + /// The in VkIndirectCommandsLayoutEXT to compare to this instance. + /// True if the objects are considered equal, false if they are not. + public bool Equals(in VkIndirectCommandsLayoutEXT obj) + { + return obj._ptr == _ptr; + } + + /// Tests if the object is considered equal to this instance. + /// The object to compare to this instance. + /// True if the objects are considered equal, false if they are not. + public override bool Equals(object? obj) + { + return obj is VkIndirectCommandsLayoutEXT vkIndirectCommandsLayoutEXT && Equals(in vkIndirectCommandsLayoutEXT); + } + + /// Explicit cast that converts the given void* to a VkIndirectCommandsLayoutEXT. + /// [in,out] If non-null, the pointer. + /// The result of the operation. + public static explicit operator VkIndirectCommandsLayoutEXT(void* ptr) + { + VkIndirectCommandsLayoutEXT value; + *(void**)&value = ptr; + return value; + } + + /// Equality operator. + /// The left. + /// The right. + /// The result of the operation. + public static bool operator ==(VkIndirectCommandsLayoutEXT left, VkIndirectCommandsLayoutEXT right) + { + return left._ptr == right._ptr; + } + + /// Inequality operator. + /// The left. + /// The right. + /// The result of the operation. + public static bool operator !=(VkIndirectCommandsLayoutEXT left, VkIndirectCommandsLayoutEXT right) + { + return left._ptr != right._ptr; + } + + /// Explicit cast that converts the given VkIndirectCommandsLayoutEXT to a void*. + /// The value. + /// The result of the operation. + public static explicit operator void*(VkIndirectCommandsLayoutEXT value) + { + return value._ptr; + } +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectCommandsLayoutTokenEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectCommandsLayoutTokenEXT.cs new file mode 100644 index 00000000..b601d416 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectCommandsLayoutTokenEXT.cs @@ -0,0 +1,49 @@ +#region License + +// Copyright (c) 2018-2024, 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; + +/// +/// VkIndirectCommandsLayoutTokenEXT - Struct specifying the details of an indirect command layout token - +/// +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkIndirectCommandsLayoutTokenEXT.html +/// +/// +[StructLayout(LayoutKind.Sequential)] +public unsafe struct VkIndirectCommandsLayoutTokenEXT +{ + /// The stype of this structure. + public const VkStructureType STYPE = VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT; + + /// sType is a VkStructureType value identifying this structure. + public VkStructureType sType; + + /// pNext is NULL or a pointer to a structure extending this structure. + public void* pNext; + + /// type specifies the VkIndirectCommandsTokenTypeEXT for data. + public VkIndirectCommandsTokenTypeEXT type; + + /// + /// data specifies a VkIndirectCommandsTokenDataEXT containing token-specific details for command execution. It is + /// ignored if type does not match any member of the VkIndirectCommandsTokenDataEXT union. + /// + public VkIndirectCommandsTokenDataEXT data; + + /// + /// offset is the relative byte offset for the token within one sequence of the indirect buffer. The data stored + /// at that offset is the command data for the token, e.g. VkDispatchIndirectCommand. + /// + public uint offset; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectCommandsLayoutUsageFlagBitsEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectCommandsLayoutUsageFlagBitsEXT.cs new file mode 100644 index 00000000..73819634 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectCommandsLayoutUsageFlagBitsEXT.cs @@ -0,0 +1,49 @@ +#region License + +// Copyright (c) 2018-2024, 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; + +/// +/// VkIndirectCommandsLayoutUsageFlagBitsEXT - Bitmask specifying allowed usage of an indirect commands layout - +/// +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkIndirectCommandsLayoutUsageFlagBitsEXT.html +/// +/// +[Flags] +public enum VkIndirectCommandsLayoutUsageFlagBitsEXT +{ + /// + /// VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXTspecifies that the layout is always used with the + /// manual preprocessing step through calling + /// + /// vkCmdPreprocessGeneratedCommandsEXT + /// + /// and executed by + /// + /// vkCmdExecuteGeneratedCommandsEXT + /// + /// with isPreprocessedset to VK_TRUE. + /// + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT = 0x1, + + /// + /// VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXTspecifies that the processing of sequences will + /// happen at an implementation-dependent order, which is not guaranteed to be deterministic using the same input data. + /// This flag is ignored when the shaderStages is VK_SHADER_STAGE_COMPUTE_BIT as it is implied that the dispatch + /// sequence is always unordered. + /// + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT = 0x2 +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectCommandsPushConstantTokenEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectCommandsPushConstantTokenEXT.cs new file mode 100644 index 00000000..8a8c74e1 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectCommandsPushConstantTokenEXT.cs @@ -0,0 +1,29 @@ +#region License + +// Copyright (c) 2018-2024, 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; + +/// +/// VkIndirectCommandsPushConstantTokenEXT - Structure specifying layout token info for a single push constant command +/// token - +/// +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkIndirectCommandsPushConstantTokenEXT.html +/// +/// +[StructLayout(LayoutKind.Sequential)] +public struct VkIndirectCommandsPushConstantTokenEXT +{ + /// updateRange is the push constant range that will be updated by the token. + public VkPushConstantRange updateRange; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectCommandsTokenDataEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectCommandsTokenDataEXT.cs new file mode 100644 index 00000000..006ccd86 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectCommandsTokenDataEXT.cs @@ -0,0 +1,51 @@ +#region License + +// Copyright (c) 2018-2024, 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; + +/// +/// VkIndirectCommandsTokenDataEXT - Union specifying the token-specific details of an indirect command layout +/// token - +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkIndirectCommandsTokenDataEXT.html +/// +[StructLayout(LayoutKind.Explicit)] +public unsafe struct VkIndirectCommandsTokenDataEXT +{ + /// + /// pPushConstant is a pointer to a VkIndirectCommandsPushConstantTokenEXT struct needed for + /// VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT and VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT tokens + /// + [FieldOffset(0)] + public VkIndirectCommandsPushConstantTokenEXT* pPushConstant; + + /// + /// pVertexBuffer is a pointer to a VkIndirectCommandsVertexBufferTokenEXT struct needed for + /// VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT tokens + /// + [FieldOffset(0)] + public VkIndirectCommandsVertexBufferTokenEXT* pVertexBuffer; + + /// + /// pIndexBuffer is a pointer to a VkIndirectCommandsIndexBufferTokenEXT struct needed for + /// VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT tokens + /// + [FieldOffset(0)] + public VkIndirectCommandsIndexBufferTokenEXT* pIndexBuffer; + + /// + /// pExecutionSet is a pointer to a VkIndirectCommandsExecutionSetTokenEXT struct needed for + /// VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT tokens + /// + [FieldOffset(0)] + public VkIndirectCommandsExecutionSetTokenEXT* pExecutionSet; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectCommandsTokenTypeEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectCommandsTokenTypeEXT.cs new file mode 100644 index 00000000..ee623289 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectCommandsTokenTypeEXT.cs @@ -0,0 +1,160 @@ +#region License + +// Copyright (c) 2018-2024, 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; + +/// +/// VkIndirectCommandsTokenTypeEXT - Enum specifying token commands - +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkIndirectCommandsTokenTypeEXT.html +/// +public enum VkIndirectCommandsTokenTypeEXT +{ + /// + /// + /// + /// Command Datau32[] array of indices into the indirect execution set + /// + /// + /// + VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT = 0, + + /// + /// + /// + /// Command Datau32[] raw data + /// + /// + /// + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT = 1, + + /// + /// + /// + /// Command Datau32 placeholder data (not accessed by shader) + /// + /// + /// + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT = 2, + + /// + /// + /// + /// Command DataVkBindIndexBufferIndirectCommandEXT + /// + /// + /// + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT = 3, + + /// + /// + /// + /// Command DataVkBindVertexBufferIndirectCommandEXT + /// + /// + /// + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT = 4, + + /// + /// + /// + /// Command DataVkDrawIndexedIndirectCommand + /// + /// + /// + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT = 5, + + /// + /// + /// + /// Command DataVkDrawIndirectCommand + /// + /// + /// + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT = 6, + + /// + /// + /// + /// Command Data + /// VkDrawIndirectCountIndirectCommandEXT with VkDrawIndexedIndirectCommand + /// + /// + /// + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT = 7, + + /// + /// + /// + /// Command Data + /// VkDrawIndirectCountIndirectCommandEXT with VkDrawIndirectCommand + /// + /// + /// + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT = 8, + + /// + /// + /// + /// Command DataVkDispatchIndirectCommand + /// + /// + /// + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT = 9, + + /// + /// + /// + /// Command DataVkDrawMeshTasksIndirectCommandNV + /// + /// + /// + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT = 1000202002, + + /// + /// + /// + /// Command Data + /// VkDrawIndirectCountIndirectCommandEXT with VkDrawMeshTasksIndirectCommandNV + /// + /// + /// + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT = 1000202003, + + /// + /// + /// + /// Command DataVkDrawMeshTasksIndirectCommandEXT + /// + /// + /// + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT = 1000328000, + + /// + /// + /// + /// Command Data + /// VkDrawIndirectCountIndirectCommandEXT with VkDrawMeshTasksIndirectCommandEXT + /// + /// + /// + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT = 1000328001, + + /// + /// + /// + /// Command DataVkTraceRaysIndirectCommand2KHR + /// + /// + /// + VK_INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT = 1000386004 +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectCommandsVertexBufferTokenEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectCommandsVertexBufferTokenEXT.cs new file mode 100644 index 00000000..b5ecc98f --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectCommandsVertexBufferTokenEXT.cs @@ -0,0 +1,29 @@ +#region License + +// Copyright (c) 2018-2024, 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; + +/// +/// VkIndirectCommandsVertexBufferTokenEXT - Structure specifying layout token info for a single index buffer command +/// token - +/// +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkIndirectCommandsVertexBufferTokenEXT.html +/// +/// +[StructLayout(LayoutKind.Sequential)] +public struct VkIndirectCommandsVertexBufferTokenEXT +{ + /// vertexBindingUnit is the vertex input binding number to be bound. + public uint vertexBindingUnit; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectExecutionSetCreateInfoEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectExecutionSetCreateInfoEXT.cs new file mode 100644 index 00000000..5b22e7b7 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectExecutionSetCreateInfoEXT.cs @@ -0,0 +1,43 @@ +#region License + +// Copyright (c) 2018-2024, 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; + +/// +/// VkIndirectExecutionSetCreateInfoEXT - Structure specifying parameters of a newly created indirect execution set - +/// +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkIndirectExecutionSetCreateInfoEXT.html +/// +/// +[StructLayout(LayoutKind.Sequential)] +public unsafe struct VkIndirectExecutionSetCreateInfoEXT +{ + /// The stype of this structure. + public const VkStructureType STYPE = VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT; + + /// sType is a VkStructureType value identifying this structure. + public VkStructureType sType; + + /// pNext is NULL or a pointer to a structure extending this structure. + public void* pNext; + + /// + /// type is a VkIndirectExecutionSetInfoTypeEXT describing the type of set being created and determining which + /// field of the infounion will be used. + /// + public VkIndirectExecutionSetInfoTypeEXT type; + + /// info is a VkIndirectExecutionSetInfoEXT union containing layout information for the set. + public VkIndirectExecutionSetInfoEXT info; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectExecutionSetEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectExecutionSetEXT.cs new file mode 100644 index 00000000..050d6dfd --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectExecutionSetEXT.cs @@ -0,0 +1,85 @@ +#region License + +// Copyright (c) 2018-2024, 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 once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +/// +/// VkIndirectExecutionSetEXT - Opaque handle to an indirect execution set object - +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkIndirectExecutionSetEXT.html +/// +public readonly unsafe struct VkIndirectExecutionSetEXT +{ + /// The null value. + public static readonly VkIndirectExecutionSetEXT Null = (VkIndirectExecutionSetEXT)null; +#pragma warning disable 649 + private readonly void* _ptr; +#pragma warning restore 649 + + /// Returns a hash code for this object. + /// A hash code for this object. + public override int GetHashCode() + { + return ((IntPtr)_ptr).GetHashCode(); + } + + /// Tests if this in VkIndirectExecutionSetEXT is considered equal to this instance. + /// The in VkIndirectExecutionSetEXT to compare to this instance. + /// True if the objects are considered equal, false if they are not. + public bool Equals(in VkIndirectExecutionSetEXT obj) + { + return obj._ptr == _ptr; + } + + /// Tests if the object is considered equal to this instance. + /// The object to compare to this instance. + /// True if the objects are considered equal, false if they are not. + public override bool Equals(object? obj) + { + return obj is VkIndirectExecutionSetEXT vkIndirectExecutionSetEXT && Equals(in vkIndirectExecutionSetEXT); + } + + /// Explicit cast that converts the given void* to a VkIndirectExecutionSetEXT. + /// [in,out] If non-null, the pointer. + /// The result of the operation. + public static explicit operator VkIndirectExecutionSetEXT(void* ptr) + { + VkIndirectExecutionSetEXT value; + *(void**)&value = ptr; + return value; + } + + /// Equality operator. + /// The left. + /// The right. + /// The result of the operation. + public static bool operator ==(VkIndirectExecutionSetEXT left, VkIndirectExecutionSetEXT right) + { + return left._ptr == right._ptr; + } + + /// Inequality operator. + /// The left. + /// The right. + /// The result of the operation. + public static bool operator !=(VkIndirectExecutionSetEXT left, VkIndirectExecutionSetEXT right) + { + return left._ptr != right._ptr; + } + + /// Explicit cast that converts the given VkIndirectExecutionSetEXT to a void*. + /// The value. + /// The result of the operation. + public static explicit operator void*(VkIndirectExecutionSetEXT value) + { + return value._ptr; + } +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectExecutionSetInfoEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectExecutionSetInfoEXT.cs new file mode 100644 index 00000000..3dcf0b99 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectExecutionSetInfoEXT.cs @@ -0,0 +1,36 @@ +#region License + +// Copyright (c) 2018-2024, 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; + +/// +/// VkIndirectExecutionSetInfoEXT - Union specifying parameters of a newly created indirect execution set - +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkIndirectExecutionSetInfoEXT.html +/// +[StructLayout(LayoutKind.Explicit)] +public unsafe struct VkIndirectExecutionSetInfoEXT +{ + /// + /// pPipelineInfo is a pointer to a VkIndirectExecutionSetPipelineInfoEXT struct containing pipeline layout + /// information for the set. + /// + [FieldOffset(0)] + public VkIndirectExecutionSetPipelineInfoEXT* pPipelineInfo; + + /// + /// pShaderInfo is a pointer to a VkIndirectExecutionSetShaderInfoEXT struct containing shader object layout + /// information for the set. + /// + [FieldOffset(0)] + public VkIndirectExecutionSetShaderInfoEXT* pShaderInfo; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectExecutionSetInfoTypeEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectExecutionSetInfoTypeEXT.cs new file mode 100644 index 00000000..721df32a --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectExecutionSetInfoTypeEXT.cs @@ -0,0 +1,38 @@ +#region License + +// Copyright (c) 2018-2024, 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; + +/// +/// VkIndirectExecutionSetInfoTypeEXT - Enum specifying allowed usage of an indirect execution set - +/// +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkIndirectExecutionSetInfoTypeEXT.html +/// +/// +public enum VkIndirectExecutionSetInfoTypeEXT +{ + /// + /// VK_INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT specifies that the indirect execution set contains + /// VkPipeline + /// objects. + /// + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT = 0, + + /// + /// VK_INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT specifies that the indirect execution set contains + /// VkShaderEXT + /// objects. + /// + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT = 1 +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectExecutionSetPipelineInfoEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectExecutionSetPipelineInfoEXT.cs new file mode 100644 index 00000000..31317b30 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectExecutionSetPipelineInfoEXT.cs @@ -0,0 +1,44 @@ +#region License + +// Copyright (c) 2018-2024, 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; + +/// +/// VkIndirectExecutionSetPipelineInfoEXT - Struct specifying parameters of a newly created indirect execution set +/// containing only pipelines - +/// +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkIndirectExecutionSetPipelineInfoEXT.html +/// +/// +[StructLayout(LayoutKind.Sequential)] +public unsafe struct VkIndirectExecutionSetPipelineInfoEXT +{ + /// The stype of this structure. + public const VkStructureType STYPE = VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT; + + /// sType is a VkStructureType value identifying this structure. + public VkStructureType sType; + + /// pNext is NULL or a pointer to a structure extending this structure. + public void* pNext; + + /// + /// initialPipeline is the initial pipeline for the set. This pipeline will be automatically added to the set at + /// index 0. + /// + public VkPipeline initialPipeline; + + /// maxPipelineCount is the maximum number of pipelines stored in the set. + public uint maxPipelineCount; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectExecutionSetShaderInfoEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectExecutionSetShaderInfoEXT.cs new file mode 100644 index 00000000..aa1d1f8b --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectExecutionSetShaderInfoEXT.cs @@ -0,0 +1,59 @@ +#region License + +// Copyright (c) 2018-2024, 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; + +/// +/// VkIndirectExecutionSetShaderInfoEXT - Struct specifying parameters of a newly created indirect execution set +/// containing only shader objects - +/// +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkIndirectExecutionSetShaderInfoEXT.html +/// +/// +[StructLayout(LayoutKind.Sequential)] +public unsafe struct VkIndirectExecutionSetShaderInfoEXT +{ + /// The stype of this structure. + public const VkStructureType STYPE = VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT; + + /// sType is a VkStructureType value identifying this structure. + public VkStructureType sType; + + /// pNext is NULL or a pointer to a structure extending this structure. + public void* pNext; + + /// shaderCount is the number of members in the pInitialShadersand pSetLayoutInfos arrays. + public uint shaderCount; + + /// + /// pInitialShaders is a pointer to an array containing a VkShaderEXT object for each shader stage that will be + /// used in the set. These shaders will be automatically added to the set beginning at index 0. + /// + public VkShaderEXT* pInitialShaders; + + /// + /// pSetLayoutInfos is a pointer to an array containing a VkIndirectExecutionSetShaderLayoutInfoEXT used by each + /// corresponding pInitialShaders shader stage in the set. + /// + public VkIndirectExecutionSetShaderLayoutInfoEXT* pSetLayoutInfos; + + /// maxShaderCount is the maximum number of shader objects stored in the set. + public uint maxShaderCount; + + /// pushConstantRangeCount is the number of members in the pPushConstantRanges array. + public uint pushConstantRangeCount; + + /// pPushConstantRanges is a pointer to the array of VkPushConstantRange ranges used by all shaders in the set. + public VkPushConstantRange* pPushConstantRanges; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectExecutionSetShaderLayoutInfoEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectExecutionSetShaderLayoutInfoEXT.cs new file mode 100644 index 00000000..fc7a5a2a --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkIndirectExecutionSetShaderLayoutInfoEXT.cs @@ -0,0 +1,47 @@ +#region License + +// Copyright (c) 2018-2024, 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; + +/// +/// VkIndirectExecutionSetShaderLayoutInfoEXT - Struct specifying descriptor layout parameters of a newly created +/// indirect execution set containing only shader objects - +/// +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkIndirectExecutionSetShaderLayoutInfoEXT.html +/// +/// +[StructLayout(LayoutKind.Sequential)] +public unsafe struct VkIndirectExecutionSetShaderLayoutInfoEXT +{ + /// The stype of this structure. + public const VkStructureType STYPE = VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT; + + /// + /// sType
+ /// + /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkIndirectExecutionSetShaderLayoutInfoEXT + /// + ///
+ public VkStructureType sType; + + /// pNext is NULL or a pointer to a structure extending this structure. + public void* pNext; + + /// setLayoutCount is the number of members in the pSetLayoutsarray + public uint setLayoutCount; + + /// pSetLayouts is a pointer to an array containing VkDescriptorSetLayout objects used by the shader stage. + public VkDescriptorSetLayout* pSetLayouts; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT.cs new file mode 100644 index 00000000..1459564b --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT.cs @@ -0,0 +1,56 @@ +#region License + +// Copyright (c) 2018-2024, 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; + +/// +/// VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT - Structure describing the device-generated compute features +/// that can be supported by an implementation - +/// +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT.html +/// +/// +/// +/// +/// +/// structextendsVkPhysicalDeviceFeatures2,VkDeviceCreateInfo +/// +/// +/// +[VkStructExtends("VkPhysicalDeviceFeatures2,VkDeviceCreateInfo")] +[StructLayout(LayoutKind.Sequential)] +public unsafe struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT +{ + /// The stype of this structure. + public const VkStructureType STYPE = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT; + + /// sType is a VkStructureType value identifying this structure. + public VkStructureType sType; + + /// pNext is NULL or a pointer to a structure extending this structure. + public void* pNext; + + /// + /// deviceGeneratedCommandsindicates whether the implementation supports functionality to generate commands on + /// the device. + /// + public VkBool32 deviceGeneratedCommands; + + /// + /// dynamicGeneratedPipelineLayout indicates the implementation allows the pipelineLayout member of + /// VkIndirectCommandsLayoutCreateInfoEXT to be VK_NULL_HANDLEand VkPipelineLayoutCreateInfo can be chained off those + /// structures' pNext instead. + /// + public VkBool32 dynamicGeneratedPipelineLayout; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT.cs new file mode 100644 index 00000000..f3d292dc --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT.cs @@ -0,0 +1,104 @@ +#region License + +// Copyright (c) 2018-2024, 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; + +/// +/// VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT - Structure describing push descriptor limits that can be +/// supported by an implementation - +/// +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT.html +/// +/// +/// +/// +/// +/// structextendsVkPhysicalDeviceProperties2 +/// +/// +/// returnedonlytrue +/// +/// +/// +[VkStructExtends("VkPhysicalDeviceProperties2")] +[StructLayout(LayoutKind.Sequential)] +public unsafe struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT +{ + /// The stype of this structure. + public const VkStructureType STYPE = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT; + + /// sType is a VkStructureType value identifying this structure. + public VkStructureType sType; + + /// pNext is NULL or a pointer to a structure extending this structure. + public void* pNext; + + /// maxIndirectPipelineCount is the maximum number of pipelines passed to vkCreateIndirectExecutionSetEXT. + public uint maxIndirectPipelineCount; + + /// + /// maxIndirectShaderObjectCount is the maximum number of shader objects passed to + /// vkCreateIndirectExecutionSetEXT. If this value is zero, binding shader objects indirectly is not supported. + /// + public uint maxIndirectShaderObjectCount; + + /// + /// maxIndirectSequenceCount is the maximum number of sequences in VkGeneratedCommandsInfoEXT and in + /// VkGeneratedCommandsMemoryRequirementsInfoEXT. + /// + public uint maxIndirectSequenceCount; + + /// maxIndirectCommandsTokenCount is the maximum number of tokens in VkIndirectCommandsLayoutCreateInfoEXT. + public uint maxIndirectCommandsTokenCount; + + /// maxIndirectCommandsTokenOffset is the maximum offset in VkIndirectCommandsLayoutTokenEXT. + public uint maxIndirectCommandsTokenOffset; + + /// maxIndirectCommandsIndirectStride is the maximum stream stride in VkIndirectCommandsLayoutCreateInfoEXT. + public uint maxIndirectCommandsIndirectStride; + + /// supportedIndirectCommandsInputModes indicates the supported input modes. + public VkIndirectCommandsInputModeFlagsEXT supportedIndirectCommandsInputModes; + + /// + /// supportedIndirectCommandsShaderStages indicates the stages which can be used to generate indirect commands. + /// Implementations are required to support, at minimum: VK_SHADER_STAGE_VERTEX_BIT, VK_SHADER_STAGE_FRAGMENT_BIT, + /// VK_SHADER_STAGE_COMPUTE_BIT. + /// + public VkShaderStageFlags supportedIndirectCommandsShaderStages; + + /// + /// supportedIndirectCommandsShaderStagesPipelineBinding indicates the stages which can be used within indirect + /// execution sets for indirectly binding shader stages using pipelines. + /// + public VkShaderStageFlags supportedIndirectCommandsShaderStagesPipelineBinding; + + /// + /// supportedIndirectCommandsShaderStagesShaderBinding indicates the stages which can be used within indirect + /// execution sets for indirectly binding shader stages using shader objects. + /// + public VkShaderStageFlags supportedIndirectCommandsShaderStagesShaderBinding; + + /// + /// deviceGeneratedCommandsTransformFeedback indicates whether the implementation supports interactions with + /// VK_EXT_transform_feedback for pipelines not created with VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT. + /// + public VkBool32 deviceGeneratedCommandsTransformFeedback; + + /// + /// deviceGeneratedCommandsMultiDrawIndirectCount indicates whether the implementation supports COUNT variants of + /// multi-draw indirect tokens. + /// + public VkBool32 deviceGeneratedCommandsMultiDrawIndirectCount; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkWriteIndirectExecutionSetPipelineEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkWriteIndirectExecutionSetPipelineEXT.cs new file mode 100644 index 00000000..b046af48 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkWriteIndirectExecutionSetPipelineEXT.cs @@ -0,0 +1,41 @@ +#region License + +// Copyright (c) 2018-2024, 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; + +/// +/// VkWriteIndirectExecutionSetPipelineEXT - Struct specifying pipeline update information for an indirect execution +/// set - +/// +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkWriteIndirectExecutionSetPipelineEXT.html +/// +/// +[StructLayout(LayoutKind.Sequential)] +public unsafe struct VkWriteIndirectExecutionSetPipelineEXT +{ + /// The stype of this structure. + public const VkStructureType STYPE = VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT; + + /// sType is a VkStructureType value identifying this structure. + public VkStructureType sType; + + /// pNext is NULL or a pointer to a structure extending this structure. + public void* pNext; + + /// index is the element of the set to update + public uint index; + + /// pipeline is the pipeline to store in the indirect execution set + public VkPipeline pipeline; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkWriteIndirectExecutionSetShaderEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkWriteIndirectExecutionSetShaderEXT.cs new file mode 100644 index 00000000..bfebb663 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_device_generated_commands/VkWriteIndirectExecutionSetShaderEXT.cs @@ -0,0 +1,41 @@ +#region License + +// Copyright (c) 2018-2024, 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; + +/// +/// VkWriteIndirectExecutionSetShaderEXT - Struct specifying shader object update information for an indirect execution +/// set - +/// +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkWriteIndirectExecutionSetShaderEXT.html +/// +/// +[StructLayout(LayoutKind.Sequential)] +public unsafe struct VkWriteIndirectExecutionSetShaderEXT +{ + /// The stype of this structure. + public const VkStructureType STYPE = VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT; + + /// sType is a VkStructureType value identifying this structure. + public VkStructureType sType; + + /// pNext is NULL or a pointer to a structure extending this structure. + public void* pNext; + + /// index is the element of the set to update + public uint index; + + /// shader is the shader to store in the indirect execution set + public VkShaderEXT shader; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_external_memory_acquire_unmodified/VkExtExternalMemoryAcquireUnmodified.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_external_memory_acquire_unmodified/VkExtExternalMemoryAcquireUnmodified.cs index db377cf7..d0a389d5 100644 --- a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_external_memory_acquire_unmodified/VkExtExternalMemoryAcquireUnmodified.cs +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_external_memory_acquire_unmodified/VkExtExternalMemoryAcquireUnmodified.cs @@ -20,7 +20,7 @@ namespace Exomia.Vulkan.Api.Core; /// /// VK_EXT_external_memory_acquire_unmodified - device extension (nr. 454) - author 'EXT' [platform '' | contact 'Lina -/// Versace @versalinyaa']
+/// Versace @linyaa-kiwi']
/// /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_external_memory_acquire_unmodified.html diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_external_memory_dma_buf/VkExtExternalMemoryDmaBuf.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_external_memory_dma_buf/VkExtExternalMemoryDmaBuf.cs index 5114a322..810d7678 100644 --- a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_external_memory_dma_buf/VkExtExternalMemoryDmaBuf.cs +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_external_memory_dma_buf/VkExtExternalMemoryDmaBuf.cs @@ -20,7 +20,7 @@ namespace Exomia.Vulkan.Api.Core; /// /// VK_EXT_external_memory_dma_buf - device extension (nr. 126) - author 'EXT' [platform '' | contact 'Lina Versace -/// @versalinyaa']
+/// @linyaa-kiwi']
///
https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_external_memory_dma_buf.html ///
[VkDepends("VK_KHR_external_memory_fd")] diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_image_drm_format_modifier/VkExtImageDrmFormatModifier.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_image_drm_format_modifier/VkExtImageDrmFormatModifier.cs index 12c88474..86a6767a 100644 --- a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_image_drm_format_modifier/VkExtImageDrmFormatModifier.cs +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_image_drm_format_modifier/VkExtImageDrmFormatModifier.cs @@ -20,7 +20,7 @@ namespace Exomia.Vulkan.Api.Core; /// /// VK_EXT_image_drm_format_modifier - device extension (nr. 159) - author 'EXT' [platform '' | contact 'Lina Versace -/// @versalinyaa']
+/// @linyaa-kiwi']
/// /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_image_drm_format_modifier.html diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_queue_family_foreign/VkExtQueueFamilyForeign.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_queue_family_foreign/VkExtQueueFamilyForeign.cs index b8def60d..129f7ba8 100644 --- a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_queue_family_foreign/VkExtQueueFamilyForeign.cs +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_queue_family_foreign/VkExtQueueFamilyForeign.cs @@ -20,7 +20,7 @@ namespace Exomia.Vulkan.Api.Core; /// /// VK_EXT_queue_family_foreign - device extension (nr. 127) - author 'EXT' [platform '' | contact 'Lina Versace -/// @versalinyaa']
+/// @linyaa-kiwi']
///
https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_queue_family_foreign.html ///
[VkDepends("VK_KHR_external_memory,VK_VERSION_1_1")] diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_shader_object/VkExtShaderObject.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_shader_object/VkExtShaderObject.cs index 5fa419ea..05bc1c4e 100644 --- a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_shader_object/VkExtShaderObject.cs +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_shader_object/VkExtShaderObject.cs @@ -842,6 +842,22 @@ public static readonly delegate*< VkCoverageReductionModeNV /*coverageReductionMode*/, void> vkCmdSetCoverageReductionModeNV = null; + /// + /// vkCmdSetDepthClampRangeEXT - Set the viewport depth clamp range dynamically for a command buffer - + /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdSetDepthClampRangeEXT.html + /// + /// commandBuffer is the command buffer into which the command will be recorded. + /// depthClampMode determines how the clamp range is determined for each viewport. + /// + /// pDepthClampRange sets the depth clamp range for all viewports if depthClampMode is set + /// to VK_DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT. + /// + public static readonly delegate*< + VkCommandBuffer /*commandBuffer*/, + VkDepthClampModeEXT /*depthClampMode*/, + VkDepthClampRangeEXT* /*pDepthClampRange*/, + void> vkCmdSetDepthClampRangeEXT = null; + /// Loads all function pointer based on the device for this extension. (see remarks!) /// The device that the function pointers will be compatible with. /// @@ -1006,6 +1022,9 @@ public static readonly delegate*< /// /// vkCmdSetCoverageReductionModeNV /// + /// + /// vkCmdSetDepthClampRangeEXT + /// /// /// public static void Load(VkDevice device) @@ -1314,5 +1333,11 @@ public static void Load(VkDevice device) *pvkCmdSetCoverageReductionModeNV = (delegate*)GetVkFunction( device, "\u6b76\u6d43\u5364\u7465\u6f43\u6576\u6172\u6567\u6552\u7564\u7463\u6f69\u4d6e\u646f\u4e65\u0056"); } + + fixed (delegate** pvkCmdSetDepthClampRangeEXT = &vkCmdSetDepthClampRangeEXT) + { + *pvkCmdSetDepthClampRangeEXT = (delegate*)GetVkFunction( + device, "\u6b76\u6d43\u5364\u7465\u6544\u7470\u4368\u616c\u706d\u6152\u676e\u4565\u5458\u0000"); + } } } \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_shader_object/VkShaderCreateFlagBitsEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_shader_object/VkShaderCreateFlagBitsEXT.cs index ab30d2d8..df7c38e3 100644 --- a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_shader_object/VkShaderCreateFlagBitsEXT.cs +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_shader_object/VkShaderCreateFlagBitsEXT.cs @@ -68,5 +68,15 @@ public enum VkShaderCreateFlagBitsEXT /// VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT specifies that a fragment shader can be used with a /// fragment density map attachment. ///
- VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 0x40 + VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 0x40, + + /// + /// VK_SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT specifies that the shader can be used in combination with + /// + /// https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#device-generated-commands + /// + /// . + /// + VK_SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT = 0x80 } \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_maintenance5/VkBufferUsageFlagBits2KHR.cs b/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_maintenance5/VkBufferUsageFlagBits2KHR.cs index 8c05c0af..c9d0ccf6 100644 --- a/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_maintenance5/VkBufferUsageFlagBits2KHR.cs +++ b/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_maintenance5/VkBufferUsageFlagBits2KHR.cs @@ -99,7 +99,9 @@ public enum VkBufferUsageFlagBits2KHR : ulong /// , or /// vkCmdDispatchIndirect /// . It is also suitable for passing as the buffer member of VkIndirectCommandsStreamNV, or sequencesCountBuffer or - /// sequencesIndexBuffer or preprocessedBuffer member of VkGeneratedCommandsInfoNV + /// sequencesIndexBuffer or preprocessedBuffer member of VkGeneratedCommandsInfoNV. It is also suitable for passing as + /// the underlying buffer of either the preprocessAddress or sequenceCountAddress members of + /// VkGeneratedCommandsInfoEXT. ///
VK_BUFFER_USAGE_2_INDIRECT_BUFFER_BIT_KHR = 0x100, @@ -241,6 +243,16 @@ public enum VkBufferUsageFlagBits2KHR : ulong ///
VK_BUFFER_USAGE_2_MICROMAP_STORAGE_BIT_EXT = 0x1000000, + /// + /// VK_BUFFER_USAGE_2_PREPROCESS_BUFFER_BIT_EXT specifies that the buffer can be used as a preprocess buffer for + /// + /// Device-Generated + /// Commands + /// + /// . + /// + VK_BUFFER_USAGE_2_PREPROCESS_BUFFER_BIT_EXT = 0x80000000, + /// /// VK_BUFFER_USAGE_2_SHADER_BINDING_TABLE_BIT_KHR specifies that the buffer is suitable for use as a /// diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_maintenance5/VkPipelineCreateFlagBits2KHR.cs b/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_maintenance5/VkPipelineCreateFlagBits2KHR.cs index 17caa403..a992ff03 100644 --- a/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_maintenance5/VkPipelineCreateFlagBits2KHR.cs +++ b/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_maintenance5/VkPipelineCreateFlagBits2KHR.cs @@ -282,5 +282,11 @@ public enum VkPipelineCreateFlagBits2KHR : ulong /// /// is VK_TRUE, applications should not use VK_PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR. /// - VK_PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR = 0x80000000 + VK_PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR = 0x80000000, + + /// + /// VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT specifies that the pipeline can be used in a + /// VkIndirectExecutionSetEXT. + /// + VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT = 0x4000000000 } \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/NV/VK_NV_device_generated_commands/VkIndirectCommandsLayoutUsageFlagBitsNV.cs b/src/Exomia.Vulkan.Api.Core/Extensions/NV/VK_NV_device_generated_commands/VkIndirectCommandsLayoutUsageFlagBitsNV.cs index 68d610b2..9a790f4b 100644 --- a/src/Exomia.Vulkan.Api.Core/Extensions/NV/VK_NV_device_generated_commands/VkIndirectCommandsLayoutUsageFlagBitsNV.cs +++ b/src/Exomia.Vulkan.Api.Core/Extensions/NV/VK_NV_device_generated_commands/VkIndirectCommandsLayoutUsageFlagBitsNV.cs @@ -47,9 +47,9 @@ public enum VkIndirectCommandsLayoutUsageFlagBitsNV /// /// VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVspecifies that the processing of sequences can - /// happen at an implementation-dependent order, which is not: guaranteed to be coherent using the same input data. - /// This flag is ignored when the pipelineBindPoint is VK_PIPELINE_BIND_POINT_COMPUTE as it is implied that the - /// dispatch sequence is always unordered. + /// happen at an implementation-dependent order, which is not guaranteed to be coherent using the same input data. This + /// flag is ignored when the pipelineBindPoint is VK_PIPELINE_BIND_POINT_COMPUTE as it is implied that the dispatch + /// sequence is always unordered. /// VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 0x4 } \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Structs/VkPipelineLayoutCreateInfo.cs b/src/Exomia.Vulkan.Api.Core/Structs/VkPipelineLayoutCreateInfo.cs index d5486610..64ee952e 100644 --- a/src/Exomia.Vulkan.Api.Core/Structs/VkPipelineLayoutCreateInfo.cs +++ b/src/Exomia.Vulkan.Api.Core/Structs/VkPipelineLayoutCreateInfo.cs @@ -21,12 +21,12 @@ namespace Exomia.Vulkan.Api.Core; /// /// /// structextends -/// VkBindDescriptorSetsInfoKHR,VkPushConstantsInfoKHR,VkPushDescriptorSetInfoKHR,VkPushDescriptorSetWithTemplateInfoKHR,VkSetDescriptorBufferOffsetsInfoEXT,VkBindDescriptorBufferEmbeddedSamplersInfoEXT +/// VkBindDescriptorSetsInfoKHR,VkPushConstantsInfoKHR,VkPushDescriptorSetInfoKHR,VkPushDescriptorSetWithTemplateInfoKHR,VkSetDescriptorBufferOffsetsInfoEXT,VkBindDescriptorBufferEmbeddedSamplersInfoEXT,VkIndirectCommandsLayoutCreateInfoEXT /// /// /// [VkStructExtends( - "VkBindDescriptorSetsInfoKHR,VkPushConstantsInfoKHR,VkPushDescriptorSetInfoKHR,VkPushDescriptorSetWithTemplateInfoKHR,VkSetDescriptorBufferOffsetsInfoEXT,VkBindDescriptorBufferEmbeddedSamplersInfoEXT")] + "VkBindDescriptorSetsInfoKHR,VkPushConstantsInfoKHR,VkPushDescriptorSetInfoKHR,VkPushDescriptorSetWithTemplateInfoKHR,VkSetDescriptorBufferOffsetsInfoEXT,VkBindDescriptorBufferEmbeddedSamplersInfoEXT,VkIndirectCommandsLayoutCreateInfoEXT")] [StructLayout(LayoutKind.Sequential)] public unsafe struct VkPipelineLayoutCreateInfo {