diff --git a/.version b/.version index f5c21ef4..4ab06e3b 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -1.3.263 \ No newline at end of file +1.3.264 \ No newline at end of file diff --git a/analyzer/Exomia.Vulkan.Api.Core.SourceGenerator/Extensions/EXT/VK_EXT_frame_boundary/VkExtFrameBoundary.bitmasks.cs b/analyzer/Exomia.Vulkan.Api.Core.SourceGenerator/Extensions/EXT/VK_EXT_frame_boundary/VkExtFrameBoundary.bitmasks.cs new file mode 100644 index 00000000..de861309 --- /dev/null +++ b/analyzer/Exomia.Vulkan.Api.Core.SourceGenerator/Extensions/EXT/VK_EXT_frame_boundary/VkExtFrameBoundary.bitmasks.cs @@ -0,0 +1 @@ +global using VkFrameBoundaryFlagsEXT = Exomia.Vulkan.Api.Core.VkFrameBoundaryFlagBitsEXT; diff --git a/src/Exomia.Vulkan.Api.Core/Enums/VkStructureType.cs b/src/Exomia.Vulkan.Api.Core/Enums/VkStructureType.cs index 006f5c82..b0c025eb 100644 --- a/src/Exomia.Vulkan.Api.Core/Enums/VkStructureType.cs +++ b/src/Exomia.Vulkan.Api.Core/Enums/VkStructureType.cs @@ -4225,6 +4225,18 @@ public enum VkStructureType /// VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT = 1000372001, + /// + /// VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT
+ /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType + ///
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT = 1000375000, + + /// + /// VK_STRUCTURE_TYPE_FRAME_BOUNDARY_EXT
+ /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType + ///
+ VK_STRUCTURE_TYPE_FRAME_BOUNDARY_EXT = 1000375001, + /// /// VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT
/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType @@ -4975,6 +4987,12 @@ public enum VkStructureType ///
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX = 1000529004, + /// + /// VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT
+ /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType + ///
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT = 1000530000, + /// /// VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV
/// 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_frame_boundary/VkExtFrameBoundary.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_frame_boundary/VkExtFrameBoundary.cs new file mode 100644 index 00000000..37f644a5 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_frame_boundary/VkExtFrameBoundary.cs @@ -0,0 +1,47 @@ +#region License + +// Copyright (c) 2018-2023, 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.VkExtFrameBoundary; + +#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_frame_boundary - device extension (nr. 376) - author 'EXT' [platform '' | contact 'James Fitzpatrick +/// @jamesfitzpatrick']
+/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_frame_boundary.html +///
+public static class VkExtFrameBoundary +{ + /// The spec version. + public const uint VK_EXT_FRAME_BOUNDARY_SPEC_VERSION = 1; + + /// The extension name. + public const string VK_EXT_FRAME_BOUNDARY_EXTENSION_NAME = "VK_EXT_frame_boundary"; + + /// + /// An UTF8 null terminated version of represented by an + /// UTF16 string. + /// + /// + /// Example usage:
+ ///
+ /// fixed(char* ptr = VK_EXT_FRAME_BOUNDARY_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_FRAME_BOUNDARY_EXTENSION_NAME_UTF8_NT = "\u4b56\u455f\u5458\u465f\u4152\u454d\u425f\u554f\u444e\u5241\u5f59\u5845\u4554\u534e\u4f49\u5f4e\u414e\u454d\u0000"; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_frame_boundary/VkFrameBoundaryEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_frame_boundary/VkFrameBoundaryEXT.cs new file mode 100644 index 00000000..f9722e86 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_frame_boundary/VkFrameBoundaryEXT.cs @@ -0,0 +1,67 @@ +#region License + +// Copyright (c) 2018-2023, 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; + +/// +/// VkFrameBoundaryEXT - Add frame boundary information to queue submissions - +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkFrameBoundaryEXT.html +/// +/// +/// +/// +/// structextends +/// VkSubmitInfo,VkSubmitInfo2,VkPresentInfoKHR,VkBindSparseInfo +/// +/// +/// +[VkStructExtends("VkSubmitInfo,VkSubmitInfo2,VkPresentInfoKHR,VkBindSparseInfo")] +[StructLayout(LayoutKind.Sequential)] +public unsafe struct VkFrameBoundaryEXT +{ + /// The stype of this structure. + public const VkStructureType STYPE = VK_STRUCTURE_TYPE_FRAME_BOUNDARY_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 VkFrameBoundaryFlagBitsEXT that can flag the last submission of a frame identifier. + public VkFrameBoundaryFlagsEXT flags; + + /// frameID is the frame identifier. + public ulong frameID; + + /// imageCount is the number of images that store frame results. + public uint imageCount; + + /// pImages is a pointer to an array of VkImage objects with imageCount entries. + public VkImage* pImages; + + /// bufferCount is the number of buffers the store the frame results. + public uint bufferCount; + + /// pBuffers is a pointer to an array of VkBuffer objects with bufferCount entries. + public VkBuffer* pBuffers; + + /// tagName is a numerical identifier for tag data. + public ulong tagName; + + /// tagSize is the number of bytes of tag data. + public nuint tagSize; + + /// pTag is a pointer to an array of tagSize bytes containing tag data. + public void* pTag; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_frame_boundary/VkFrameBoundaryFlagBitsEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_frame_boundary/VkFrameBoundaryFlagBitsEXT.cs new file mode 100644 index 00000000..53838478 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_frame_boundary/VkFrameBoundaryFlagBitsEXT.cs @@ -0,0 +1,29 @@ +#region License + +// Copyright (c) 2018-2023, 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; + +/// +/// VkFrameBoundaryFlagBitsEXT - Bitmask specifying whether a queue submission is the last one for a given frame +/// - +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkFrameBoundaryFlagBitsEXT.html +/// +[Flags] +public enum VkFrameBoundaryFlagBitsEXT +{ + /// + /// VK_FRAME_BOUNDARY_FRAME_END_BIT_EXT specifies that this queue submission is the last one for this frame, i.e. + /// once this queue submission has terminated, then the work for this frame is completed. + /// + VK_FRAME_BOUNDARY_FRAME_END_BIT_EXT = 0x1 +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_frame_boundary/VkPhysicalDeviceFrameBoundaryFeaturesEXT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_frame_boundary/VkPhysicalDeviceFrameBoundaryFeaturesEXT.cs new file mode 100644 index 00000000..807278ad --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_frame_boundary/VkPhysicalDeviceFrameBoundaryFeaturesEXT.cs @@ -0,0 +1,46 @@ +#region License + +// Copyright (c) 2018-2023, 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; + +/// +/// VkPhysicalDeviceFrameBoundaryFeaturesEXT - Structure describing the frame boundary features that can be supported +/// by an implementation - +/// +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFrameBoundaryFeaturesEXT.html +/// +/// +/// +/// +/// +/// structextendsVkPhysicalDeviceFeatures2,VkDeviceCreateInfo +/// +/// +/// +[VkStructExtends("VkPhysicalDeviceFeatures2,VkDeviceCreateInfo")] +[StructLayout(LayoutKind.Sequential)] +public unsafe struct VkPhysicalDeviceFrameBoundaryFeaturesEXT +{ + /// The stype of this structure. + public const VkStructureType STYPE = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_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; + + /// frameBoundary indicates whether the implementation supports frame boundary information. + public VkBool32 frameBoundary; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/MSFT/VK_MSFT_layered_driver/VkLayeredDriverUnderlyingApiMSFT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/MSFT/VK_MSFT_layered_driver/VkLayeredDriverUnderlyingApiMSFT.cs new file mode 100644 index 00000000..c47f3893 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/MSFT/VK_MSFT_layered_driver/VkLayeredDriverUnderlyingApiMSFT.cs @@ -0,0 +1,42 @@ +#region License + +// Copyright (c) 2018-2023, 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; + +/// +/// VkLayeredDriverUnderlyingApiMSFT - Layered driver underlying APIs - +/// +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkLayeredDriverUnderlyingApiMSFT.html +/// +/// +public enum VkLayeredDriverUnderlyingApiMSFT +{ + /// + /// VK_LAYERED_DRIVER_UNDERLYING_API_NONE_MSFT
+ /// + /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkLayeredDriverUnderlyingApiMSFT + /// + ///
+ VK_LAYERED_DRIVER_UNDERLYING_API_NONE_MSFT = 0, + + /// + /// VK_LAYERED_DRIVER_UNDERLYING_API_D3D12_MSFT
+ /// + /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkLayeredDriverUnderlyingApiMSFT + /// + ///
+ VK_LAYERED_DRIVER_UNDERLYING_API_D3D12_MSFT = 1 +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/MSFT/VK_MSFT_layered_driver/VkMsftLayeredDriver.cs b/src/Exomia.Vulkan.Api.Core/Extensions/MSFT/VK_MSFT_layered_driver/VkMsftLayeredDriver.cs new file mode 100644 index 00000000..0a8f77c7 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/MSFT/VK_MSFT_layered_driver/VkMsftLayeredDriver.cs @@ -0,0 +1,48 @@ +#region License + +// Copyright (c) 2018-2023, 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.VkMsftLayeredDriver; + +#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_MSFT_layered_driver - device extension (nr. 531) - author 'MSFT' [platform '' | contact 'Jesse Natalie +/// @jenatali']
+/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_MSFT_layered_driver.html +///
+[VkDepends("VK_KHR_get_physical_device_properties2")] +public static class VkMsftLayeredDriver +{ + /// The spec version. + public const uint VK_MSFT_LAYERED_DRIVER_SPEC_VERSION = 1; + + /// The extension name. + public const string VK_MSFT_LAYERED_DRIVER_EXTENSION_NAME = "VK_MSFT_layered_driver"; + + /// + /// An UTF8 null terminated version of represented by an + /// UTF16 string. + /// + /// + /// Example usage:
+ ///
+ /// fixed(char* ptr = VK_MSFT_LAYERED_DRIVER_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_MSFT_LAYERED_DRIVER_EXTENSION_NAME_UTF8_NT = "\u4b56\u4d5f\u4653\u5f54\u414c\u4559\u4552\u5f44\u5244\u5649\u5245\u455f\u5458\u4e45\u4953\u4e4f\u4e5f\u4d41\u0045"; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/MSFT/VK_MSFT_layered_driver/VkPhysicalDeviceLayeredDriverPropertiesMSFT.cs b/src/Exomia.Vulkan.Api.Core/Extensions/MSFT/VK_MSFT_layered_driver/VkPhysicalDeviceLayeredDriverPropertiesMSFT.cs new file mode 100644 index 00000000..9c9db3a0 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/MSFT/VK_MSFT_layered_driver/VkPhysicalDeviceLayeredDriverPropertiesMSFT.cs @@ -0,0 +1,52 @@ +#region License + +// Copyright (c) 2018-2023, 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; + +/// +/// VkPhysicalDeviceLayeredDriverPropertiesMSFT - Structure containing information about driver layering for a physical +/// device - +/// +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLayeredDriverPropertiesMSFT.html +/// +/// +/// +/// +/// +/// structextendsVkPhysicalDeviceProperties2 +/// +/// +/// returnedonlytrue +/// +/// +/// +[VkStructExtends("VkPhysicalDeviceProperties2")] +[StructLayout(LayoutKind.Sequential)] +public unsafe struct VkPhysicalDeviceLayeredDriverPropertiesMSFT +{ + /// The stype of this structure. + public const VkStructureType STYPE = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT; + + /// 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; + + /// + /// underlyingAPI is a VkLayeredDriverUnderlyingApiMSFT value indicating which underlying API is used to implement + /// the layered driver, or VK_LAYERED_DRIVER_UNDERLYING_API_NONE_MSFT if the driver is not layered. + /// + public VkLayeredDriverUnderlyingApiMSFT underlyingAPI; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Structs/VkPhysicalDeviceInlineUniformBlockProperties.cs b/src/Exomia.Vulkan.Api.Core/Structs/VkPhysicalDeviceInlineUniformBlockProperties.cs index d1afb8d1..3463d53c 100644 --- a/src/Exomia.Vulkan.Api.Core/Structs/VkPhysicalDeviceInlineUniformBlockProperties.cs +++ b/src/Exomia.Vulkan.Api.Core/Structs/VkPhysicalDeviceInlineUniformBlockProperties.cs @@ -48,9 +48,11 @@ public unsafe struct VkPhysicalDeviceInlineUniformBlockProperties public uint maxInlineUniformBlockSize; /// - /// maxPerStageDescriptorUpdateAfterBindInlineUniformBlocksis similar to maxPerStageDescriptorInlineUniformBlocks - /// but counts descriptor bindings from descriptor sets created with or without the - /// VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit set. + /// maxPerStageDescriptorInlineUniformBlocks is the maximum number of inline uniform block bindings that can be + /// accessible to a single shader stage in a pipeline layout. Descriptor bindings with a descriptor type of + /// VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK count against this limit. Only descriptor bindings in descriptor set + /// layouts created without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit set count against this + /// limit. /// public uint maxPerStageDescriptorInlineUniformBlocks; diff --git a/src/Exomia.Vulkan.Api.Core/Structs/VkPhysicalDeviceVulkan13Properties.cs b/src/Exomia.Vulkan.Api.Core/Structs/VkPhysicalDeviceVulkan13Properties.cs index cfee1dc8..e7ce8813 100644 --- a/src/Exomia.Vulkan.Api.Core/Structs/VkPhysicalDeviceVulkan13Properties.cs +++ b/src/Exomia.Vulkan.Api.Core/Structs/VkPhysicalDeviceVulkan13Properties.cs @@ -76,9 +76,11 @@ public unsafe struct VkPhysicalDeviceVulkan13Properties public uint maxInlineUniformBlockSize; /// - /// maxPerStageDescriptorUpdateAfterBindInlineUniformBlocksis similar to maxPerStageDescriptorInlineUniformBlocks - /// but counts descriptor bindings from descriptor sets created with or without the - /// VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit set. + /// maxPerStageDescriptorInlineUniformBlocks is the maximum number of inline uniform block bindings that can be + /// accessible to a single shader stage in a pipeline layout. Descriptor bindings with a descriptor type of + /// VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK count against this limit. Only descriptor bindings in descriptor set + /// layouts created without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit set count against this + /// limit. /// public uint maxPerStageDescriptorInlineUniformBlocks;