Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.3.276
1.3.277
2 changes: 1 addition & 1 deletion src/Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<Import Project="$([MSBuild]::GetPathOfFileAbove('Directory.Build.props', '$(MSBuildThisFileDirectory)../'))" />

<PropertyGroup>
<TargetFrameworks>net6.0;net7.0</TargetFrameworks>
<TargetFrameworks>net6.0;net7.0;net8.0</TargetFrameworks>
<Platforms>AnyCPU;x64</Platforms>
</PropertyGroup>

Expand Down
88 changes: 88 additions & 0 deletions src/Exomia.Vulkan.Api.Core/Custom/VkArray8.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
#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;

/// <summary>
/// Used instead of public fixed T[8].
/// </summary>
/// <typeparam name="T"> Generic type parameter. </typeparam>
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkArray8<T>
where T : unmanaged
{
/// <summary>
/// The length of <see cref="VkArray8{T}" />.
/// </summary>
public const uint LENGTH = 8;

/// <summary>
/// Indexer to get or set items within this collection using array index syntax.
/// </summary>
/// <param name="index"> Zero-based index of the entry to access. </param>
/// <returns>
/// The indexed item.
/// </returns>
public T this[uint index]
{
get
{
#if DEBUG
if (index >= LENGTH) { throw new ArgumentOutOfRangeException(nameof(index)); }
#endif
return *((T*)Unsafe.AsPointer(ref this) + index);
}
set
{
#if DEBUG
if (index >= LENGTH) { throw new ArgumentOutOfRangeException(nameof(index)); }
#endif
*((T*)Unsafe.AsPointer(ref this) + index) = value;
}
}

/// <summary>
/// Indexer to get or set items within this collection using array index syntax.
/// </summary>
/// <param name="index"> Zero-based index of the entry to access. </param>
/// <returns>
/// The indexed item.
/// </returns>
public T this[int index]
{
get
{
#if DEBUG
if (index >= LENGTH || index < 0) { throw new ArgumentOutOfRangeException(nameof(index)); }
#endif
return *((T*)Unsafe.AsPointer(ref this) + index);
}
set
{
#if DEBUG
if (index >= LENGTH || index < 0) { throw new ArgumentOutOfRangeException(nameof(index)); }
#endif
*((T*)Unsafe.AsPointer(ref this) + index) = value;
}
}

#pragma warning disable 1591 //Missing XML comment for publicly visible type or member
public T M01;
public T M02;
public T M03;
public T M04;
public T M05;
public T M06;
public T M07;
public T M08;
#pragma warning restore 1591 //Missing XML comment for publicly visible type or member
}
30 changes: 30 additions & 0 deletions src/Exomia.Vulkan.Api.Core/Enums/VkStructureType.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5083,6 +5083,36 @@ public enum VkStructureType
/// </summary>
VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM = 1000510001,

/// <summary>
/// VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_KHR<br />
/// <a href="https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType">https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType</a>
/// </summary>
VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_KHR = 1000512000,

/// <summary>
/// VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PICTURE_INFO_KHR<br />
/// <a href="https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType">https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType</a>
/// </summary>
VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PICTURE_INFO_KHR = 1000512001,

/// <summary>
/// VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PROFILE_INFO_KHR<br />
/// <a href="https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType">https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType</a>
/// </summary>
VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PROFILE_INFO_KHR = 1000512003,

/// <summary>
/// VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR<br />
/// <a href="https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType">https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType</a>
/// </summary>
VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000512004,

/// <summary>
/// VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_DPB_SLOT_INFO_KHR<br />
/// <a href="https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType">https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType</a>
/// </summary>
VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_DPB_SLOT_INFO_KHR = 1000512005,

/// <summary>
/// VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR<br />
/// <a href="https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType">https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType</a>
Expand Down
14 changes: 13 additions & 1 deletion src/Exomia.Vulkan.Api.Core/Enums/VkSubgroupFeatureFlagBits.cs
Original file line number Diff line number Diff line change
Expand Up @@ -72,5 +72,17 @@ public enum VkSubgroupFeatureFlagBits
/// VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV<br />
/// <a href="https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkSubgroupFeatureFlagBits">https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkSubgroupFeatureFlagBits</a>
/// </summary>
VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 0x100
VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 0x100,

/// <summary>
/// VK_SUBGROUP_FEATURE_ROTATE_BIT_KHR<br />
/// <a href="https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkSubgroupFeatureFlagBits">https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkSubgroupFeatureFlagBits</a>
/// </summary>
VK_SUBGROUP_FEATURE_ROTATE_BIT_KHR = 0x200,

/// <summary>
/// VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR<br />
/// <a href="https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkSubgroupFeatureFlagBits">https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkSubgroupFeatureFlagBits</a>
/// </summary>
VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR = 0x400
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ namespace Exomia.Vulkan.Api.Core;
[VkDepends("VK_KHR_get_physical_device_properties2,VK_VERSION_1_1")]
[VkSpecialuse("cadsupport")]
[VkDeviceExt]
[Obsolete("promoted to VK_KHR_line_rasterization", false, UrlFormat = "https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_line_rasterization.html#_deprecation_state")]
public static unsafe class VkExtLineRasterization
{
/// <summary> The spec version. </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ namespace Exomia.Vulkan.Api.Core;
public static class VkKhrShaderSubgroupRotate
{
/// <summary> The spec version. </summary>
public const uint VK_KHR_SHADER_SUBGROUP_ROTATE_SPEC_VERSION = 1;
public const uint VK_KHR_SHADER_SUBGROUP_ROTATE_SPEC_VERSION = 2;

/// <summary> The extension name. </summary>
public const string VK_KHR_SHADER_SUBGROUP_ROTATE_EXTENSION_NAME = "VK_KHR_shader_subgroup_rotate";
Expand Down
Original file line number Diff line number Diff line change
@@ -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

global using static Exomia.Vulkan.Api.Core.VkKhrVideoDecodeAv1;

#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;

/// <summary>
/// VK_KHR_video_decode_av1 - device extension (nr. 513) - author 'KHR' [platform '' | contact 'Daniel Rakos @aqnuep']
/// <br />
/// <a href="https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_video_decode_av1.html">https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_video_decode_av1.html</a>
/// </summary>
[VkDepends("VK_KHR_video_decode_queue")]
[VkDeviceExt]
public static class VkKhrVideoDecodeAv1
{
/// <summary> The spec version. </summary>
public const uint VK_KHR_VIDEO_DECODE_AV1_SPEC_VERSION = 1;

/// <summary> The extension name. </summary>
public const string VK_KHR_VIDEO_DECODE_AV1_EXTENSION_NAME = "VK_KHR_video_decode_av1";

/// <summary>
/// An UTF8 null terminated version of <see cref="VK_KHR_VIDEO_DECODE_AV1_EXTENSION_NAME" /> represented by an
/// UTF16 string.
/// </summary>
/// <remarks>
/// Example usage:<br />
/// <br />
/// fixed(char* ptr = VK_KHR_VIDEO_DECODE_AV1_EXTENSION_NAME_UTF8_NT) {<br />
/// sbyte* utf8NtPtr = (sbyte*)ptr; // utf8NtPtr - can now be passed and used directly as a utf8_nt string for
/// unmanaged code.<br />
/// }
/// </remarks>
public const string VK_KHR_VIDEO_DECODE_AV1_EXTENSION_NAME_UTF8_NT = "\u4b56\u4b5f\u5248\u565f\u4449\u4f45\u445f\u4345\u444f\u5f45\u5641\u5f31\u5845\u4554\u534e\u4f49\u5f4e\u414e\u454d\u0000";

public const uint VK_MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR = 7;
}
Original file line number Diff line number Diff line change
@@ -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;

/// <summary>
/// VkVideoDecodeAV1CapabilitiesKHR - Structure describing AV1 decode capabilities -
/// <a
/// href="https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkVideoDecodeAV1CapabilitiesKHR.html">
/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkVideoDecodeAV1CapabilitiesKHR.html
/// </a>
/// </summary>
/// <remarks>
/// <list type="table">
/// <item>
/// <term>structextends</term><description>VkVideoCapabilitiesKHR</description>
/// </item>
/// <item>
/// <term>returnedonly</term><description>true</description>
/// </item>
/// </list>
/// </remarks>
[VkStructExtends("VkVideoCapabilitiesKHR")]
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkVideoDecodeAV1CapabilitiesKHR
{
/// <summary> The stype of this structure. </summary>
public const VkStructureType STYPE = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_KHR;

/// <summary>sType is a VkStructureType value identifying this structure.</summary>
public VkStructureType sType;

/// <summary>pNext is NULL or a pointer to a structure extending this structure.</summary>
public void* pNext;

/// <summary>
/// maxLevel is a StdVideoAV1Level value specifying the maximum AV1 level supported by the profile, as defined in
/// section A.3 of the AV1 Specification.
/// </summary>
public StdVideoAV1Level maxLevel;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
#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;

/// <summary>
/// VkVideoDecodeAV1DpbSlotInfoKHR - Structure specifies AV1 DPB information when decoding a frame -
/// <a href="https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkVideoDecodeAV1DpbSlotInfoKHR.html">https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkVideoDecodeAV1DpbSlotInfoKHR.html</a>
/// </summary>
/// <remarks>
/// <list type="table">
/// <item>
/// <term>structextends</term><description>VkVideoReferenceSlotInfoKHR</description>
/// </item>
/// </list>
/// </remarks>
[VkStructExtends("VkVideoReferenceSlotInfoKHR")]
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkVideoDecodeAV1DpbSlotInfoKHR
{
/// <summary> The stype of this structure. </summary>
public const VkStructureType STYPE = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_DPB_SLOT_INFO_KHR;

/// <summary>sType is a VkStructureType value identifying this structure.</summary>
public VkStructureType sType;

/// <summary>pNext is NULL or a pointer to a structure extending this structure.</summary>
public void* pNext;

/// <summary>
/// pStdReferenceInfo is a pointer to a StdVideoDecodeAV1ReferenceInfo structure specifying AV1 reference
/// information.
/// </summary>
public StdVideoDecodeAV1ReferenceInfo* pStdReferenceInfo;
}
Loading