diff --git a/.version b/.version index 32d64675..6e442ec7 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -1.3.290 \ No newline at end of file +1.3.291 \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Enums/VkStructureType.cs b/src/Exomia.Vulkan.Api.Core/Enums/VkStructureType.cs index 422e87fb..1b0b8326 100644 --- a/src/Exomia.Vulkan.Api.Core/Enums/VkStructureType.cs +++ b/src/Exomia.Vulkan.Api.Core/Enums/VkStructureType.cs @@ -4897,6 +4897,24 @@ public enum VkStructureType /// VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR = 1000470006, + /// + /// VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD
+ /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType + ///
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD = 1000476000, + + /// + /// VK_STRUCTURE_TYPE_ANTI_LAG_DATA_AMD
+ /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType + ///
+ VK_STRUCTURE_TYPE_ANTI_LAG_DATA_AMD = 1000476001, + + /// + /// VK_STRUCTURE_TYPE_ANTI_LAG_PRESENTATION_INFO_AMD
+ /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType + ///
+ VK_STRUCTURE_TYPE_ANTI_LAG_PRESENTATION_INFO_AMD = 1000476002, + /// /// VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR
/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/AMD/VK_AMD_anti_lag/VkAmdAntiLag.cs b/src/Exomia.Vulkan.Api.Core/Extensions/AMD/VK_AMD_anti_lag/VkAmdAntiLag.cs new file mode 100644 index 00000000..0edb7cfd --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/AMD/VK_AMD_anti_lag/VkAmdAntiLag.cs @@ -0,0 +1,76 @@ +#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.VkAmdAntiLag; + +#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_AMD_anti_lag - device extension (nr. 477) - author 'AMD' [platform '' | contact 'Stu Smith']
+/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_AMD_anti_lag.html +///
+[VkDeviceExt] +public static unsafe class VkAmdAntiLag +{ + /// The spec version. + public const uint VK_AMD_ANTI_LAG_SPEC_VERSION = 1; + + /// The extension name. + public const string VK_AMD_ANTI_LAG_EXTENSION_NAME = "VK_AMD_anti_lag"; + + /// + /// An UTF8 null terminated version of represented by an UTF16 + /// string. + /// + /// + /// Example usage:
+ ///
+ /// fixed(char* ptr = VK_AMD_ANTI_LAG_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_AMD_ANTI_LAG_EXTENSION_NAME_UTF8_NT = "\u4b56\u415f\u444d\u415f\u544e\u5f49\u414c\u5f47\u5845\u4554\u534e\u4f49\u5f4e\u414e\u454d\u0000"; + + /// + /// vkAntiLagUpdateAMD - Provide information to reduce latency - + /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkAntiLagUpdateAMD.html + /// + /// device is the logical device + /// pData is a pointer to a VkAntiLagDataAMD structure containing latency reduction parameters. + public static readonly delegate*< + VkDevice /*device*/, + VkAntiLagDataAMD* /*pData*/, + void> vkAntiLagUpdateAMD = 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:
+ /// + /// + /// vkAntiLagUpdateAMD + /// + /// + ///
+ public static void Load(VkDevice device) + { + fixed (delegate** pvkAntiLagUpdateAMD = &vkAntiLagUpdateAMD) + { + *pvkAntiLagUpdateAMD = (delegate*)GetVkFunction(device, "\u6b76\u6e41\u6974\u614c\u5567\u6470\u7461\u4165\u444d\u0000"); + } + } +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/AMD/VK_AMD_anti_lag/VkAntiLagDataAMD.cs b/src/Exomia.Vulkan.Api.Core/Extensions/AMD/VK_AMD_anti_lag/VkAntiLagDataAMD.cs new file mode 100644 index 00000000..11f58fdc --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/AMD/VK_AMD_anti_lag/VkAntiLagDataAMD.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; + +/// +/// VkAntiLagDataAMD - Structure specifying the parameters for vkAntiLagUpdateAMD - +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAntiLagDataAMD.html +/// +[StructLayout(LayoutKind.Sequential)] +public unsafe struct VkAntiLagDataAMD +{ + /// The stype of this structure. + public const VkStructureType STYPE = VK_STRUCTURE_TYPE_ANTI_LAG_DATA_AMD; + + /// 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; + + /// mode is a VkAntiLagModeAMD value specifying the anti-lag status. + public VkAntiLagModeAMD mode; + + /// + /// maxFPS is the framerate limit, in frames per second, used by the application. This limit will be imposed if + /// anti-lag is enabled. If the application tries to render faster, the framerate will be reduced to match this limit. + /// A value of 0 will disable the limit. + /// + public uint maxFPS; + + /// + /// pPresentationInfo is a pointer to a VkAntiLagPresentationInfoAMD structure containing information about the + /// application stage. + /// + public VkAntiLagPresentationInfoAMD* pPresentationInfo; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/AMD/VK_AMD_anti_lag/VkAntiLagModeAMD.cs b/src/Exomia.Vulkan.Api.Core/Extensions/AMD/VK_AMD_anti_lag/VkAntiLagModeAMD.cs new file mode 100644 index 00000000..4af4579f --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/AMD/VK_AMD_anti_lag/VkAntiLagModeAMD.cs @@ -0,0 +1,33 @@ +#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; + +/// +/// VkAntiLagModeAMD - Set the status of the anti-lag feature - +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAntiLagModeAMD.html +/// +public enum VkAntiLagModeAMD +{ + /// + /// VK_ANTI_LAG_MODE_DRIVER_CONTROL_AMD specifies that anti-lag will be enabled or disabled depending on driver + /// settings. + /// + VK_ANTI_LAG_MODE_DRIVER_CONTROL_AMD = 0, + + /// VK_ANTI_LAG_MODE_ON_AMD specifies that anti-lag will be enabled. + VK_ANTI_LAG_MODE_ON_AMD = 1, + + /// VK_ANTI_LAG_MODE_OFF_AMD specifies that anti-lag will be disabled. + VK_ANTI_LAG_MODE_OFF_AMD = 2 +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/AMD/VK_AMD_anti_lag/VkAntiLagPresentationInfoAMD.cs b/src/Exomia.Vulkan.Api.Core/Extensions/AMD/VK_AMD_anti_lag/VkAntiLagPresentationInfoAMD.cs new file mode 100644 index 00000000..d678d869 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/AMD/VK_AMD_anti_lag/VkAntiLagPresentationInfoAMD.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; + +/// +/// VkAntiLagPresentationInfoAMD - Structure specifying information about stage - +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAntiLagPresentationInfoAMD.html +/// +[StructLayout(LayoutKind.Sequential)] +public unsafe struct VkAntiLagPresentationInfoAMD +{ + /// The stype of this structure. + public const VkStructureType STYPE = VK_STRUCTURE_TYPE_ANTI_LAG_PRESENTATION_INFO_AMD; + + /// 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; + + /// stage is a VkAntiLagStageAMD value specifying the current application stage. + public VkAntiLagStageAMD stage; + + /// + /// frameIndex is set just before the application processes input data (VK_ANTI_LAG_STAGE_INPUT_AMD). The same + /// frameIndex value should be set before the frame with current input data will be presented by + /// vkQueuePresentKHR(VK_ANTI_LAG_STAGE_PRESENT_AMD). This should be done for each frame. + /// + public ulong frameIndex; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/AMD/VK_AMD_anti_lag/VkAntiLagStageAMD.cs b/src/Exomia.Vulkan.Api.Core/Extensions/AMD/VK_AMD_anti_lag/VkAntiLagStageAMD.cs new file mode 100644 index 00000000..381fbbad --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/AMD/VK_AMD_anti_lag/VkAntiLagStageAMD.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; + +/// +/// VkAntiLagStageAMD - Report the application stage - +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAntiLagStageAMD.html +/// +public enum VkAntiLagStageAMD +{ + /// VK_ANTI_LAG_STAGE_INPUT_AMD specifies the stage before processing input. + VK_ANTI_LAG_STAGE_INPUT_AMD = 0, + + /// + /// VK_ANTI_LAG_STAGE_PRESENT_AMD specifies the stage before + /// vkQueuePresentKHR + /// . + /// + VK_ANTI_LAG_STAGE_PRESENT_AMD = 1 +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/AMD/VK_AMD_anti_lag/VkPhysicalDeviceAntiLagFeaturesAMD.cs b/src/Exomia.Vulkan.Api.Core/Extensions/AMD/VK_AMD_anti_lag/VkPhysicalDeviceAntiLagFeaturesAMD.cs new file mode 100644 index 00000000..0863c0cd --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/AMD/VK_AMD_anti_lag/VkPhysicalDeviceAntiLagFeaturesAMD.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; + +/// +/// VkPhysicalDeviceAntiLagFeaturesAMD - Structure describing whether VK_AMD_anti_lag can be supported by an +/// implementation. - +/// +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAntiLagFeaturesAMD.html +/// +/// +/// +/// +/// +/// structextendsVkPhysicalDeviceFeatures2,VkDeviceCreateInfo +/// +/// +/// +[VkStructExtends("VkPhysicalDeviceFeatures2,VkDeviceCreateInfo")] +[StructLayout(LayoutKind.Sequential)] +public unsafe struct VkPhysicalDeviceAntiLagFeaturesAMD +{ + /// The stype of this structure. + public const VkStructureType STYPE = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD; + + /// 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; + + /// + /// antiLag indicates whether the implementation supports AMD Radeon™ Anti-Lag functionality. The antiLag feature + /// only supports a single GPU and must not be enabled if VkDeviceGroupDeviceCreateInfo::physicalDeviceCount is greater + /// than 1. + /// + public VkBool32 antiLag; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_shader_object/VkColorBlendAdvancedEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_shader_object/VkColorBlendAdvancedEXT.cs index 601c3310..3428c194 100644 --- a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_shader_object/VkColorBlendAdvancedEXT.cs +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_shader_object/VkColorBlendAdvancedEXT.cs @@ -39,7 +39,7 @@ public struct VkColorBlendAdvancedEXT public VkBlendOverlapEXT blendOverlap; /// - /// clampResults specifies the results must be clamped to the [0,1] range before writing to the attachment, which + /// clampResults specifies that results must be clamped to the [0,1] range before writing to the attachment, which /// is useful when the attachment format is not normalized fixed-point. /// public VkBool32 clampResults; diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_copy_commands2/VkKhrCopyCommands2.cs b/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_copy_commands2/VkKhrCopyCommands2.cs index 0821f3d3..9ad1a06f 100644 --- a/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_copy_commands2/VkKhrCopyCommands2.cs +++ b/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_copy_commands2/VkKhrCopyCommands2.cs @@ -19,7 +19,7 @@ namespace Exomia.Vulkan.Api.Core; /// -/// VK_KHR_copy_commands2 - device extension (nr. 338) - author 'KHR' [platform '' | contact 'Jeff Leger @jackohound'] +/// VK_KHR_copy_commands2 - device extension (nr. 338) - author 'KHR' [platform '' | contact 'Matthew Netsch @mnetsch'] ///
/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_copy_commands2.html ///
diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/NV/VK_NV_ray_tracing/VkNvRayTracing.cs b/src/Exomia.Vulkan.Api.Core/Extensions/NV/VK_NV_ray_tracing/VkNvRayTracing.cs index 15557485..d68694ab 100644 --- a/src/Exomia.Vulkan.Api.Core/Extensions/NV/VK_NV_ray_tracing/VkNvRayTracing.cs +++ b/src/Exomia.Vulkan.Api.Core/Extensions/NV/VK_NV_ray_tracing/VkNvRayTracing.cs @@ -25,6 +25,7 @@ namespace Exomia.Vulkan.Api.Core; ///
[VkDepends("(VK_KHR_get_physical_device_properties2+VK_KHR_get_memory_requirements2),VK_VERSION_1_1")] [VkDeviceExt] +[Obsolete("deprecated by VK_KHR_ray_tracing_pipeline", false, UrlFormat = "https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_NV_ray_tracing.html#_deprecation_state")] public static unsafe class VkNvRayTracing { /// The spec version.