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.299
1.3.300
16 changes: 14 additions & 2 deletions src/Exomia.Vulkan.Api.Core/Enums/VkMemoryPropertyFlagBits.cs
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,20 @@ public enum VkMemoryPropertyFlagBits
VK_MEMORY_PROPERTY_PROTECTED_BIT = 0x20,

/// <summary>
/// VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD bit specifies that device accesses to allocations of this memory
/// type are automatically made available and visible.
/// VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD bit specifies that device accesses to allocations of this memory type
/// are automatically made
/// <a
/// href="https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-available-and-visible">
/// available
/// and visible
/// </a>
/// on the device. If paired with VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
/// <a
/// href="https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-available-and-visible">
/// memory
/// domain operations
/// </a>
/// are also performed automatically between host and device.
/// </summary>
VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD = 0x40,

Expand Down
18 changes: 18 additions & 0 deletions src/Exomia.Vulkan.Api.Core/Enums/VkStructureType.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5647,6 +5647,24 @@ public enum VkStructureType
/// </summary>
VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT = 1000582001,

/// <summary>
/// VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV<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_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV = 1000593000,

/// <summary>
/// VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV<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_COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV = 1000593001,

/// <summary>
/// VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV<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_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV = 1000593002,

/// <summary>
/// VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES<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
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ public unsafe struct VkPhysicalDeviceMeshShaderFeaturesEXT
public VkBool32 meshShader;

/// <summary>
/// multiviewMeshShader specifies whether the implementation supports multiviewrendering within a render pass,
/// multiviewMeshShader specifies whether the implementation supports multiview rendering within a render pass,
/// with mesh shaders. If this feature is not enabled, then a pipeline compiled against a subpass with a non-zero view
/// mask must not include a mesh shader.
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,7 @@ public static readonly delegate*<
/// <a href="https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdCopyMemoryToMicromapEXT.html">https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdCopyMemoryToMicromapEXT.html</a>
/// </summary>
/// <param name="commandBuffer">commandBuffer is the command buffer into which the command will be recorded.</param>
/// <param name="pInfo">pInfo is a pointer to a VkCopyMicromapToMemoryInfoEXTstructure defining the copy operation.</param>
/// <param name="pInfo">pInfo is a pointer to a VkCopyMemoryToMicromapInfoEXTstructure defining the copy operation.</param>
public static readonly delegate*<
VkCommandBuffer /*commandBuffer*/,
VkCopyMemoryToMicromapInfoEXT* /*pInfo*/,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
#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>
/// VkCooperativeMatrixFlexibleDimensionsPropertiesNV - Structure specifying cooperative matrix properties -
/// <a
/// href="https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCooperativeMatrixFlexibleDimensionsPropertiesNV.html">
/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCooperativeMatrixFlexibleDimensionsPropertiesNV.html
/// </a>
/// </summary>
/// <remarks>
/// <list type="table">
/// <item>
/// <term>returnedonly</term><description>true</description>
/// </item>
/// </list>
/// </remarks>
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkCooperativeMatrixFlexibleDimensionsPropertiesNV
{
/// <summary> The stype of this structure. </summary>
public const VkStructureType STYPE = VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV;

/// <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>
/// MGranularity is the granularity of the number of rows in matrices A, C, and Result. The rows must be an
/// integer multiple of this value.
/// </summary>
public uint MGranularity;

/// <summary>
/// NGranularity is the granularity of columns in matrices B, C, Result. The columns must be an integer multiple
/// of this value.
/// </summary>
public uint NGranularity;

/// <summary>
/// KGranularity is the granularity of columns in matrix A and rows in matrix B. The columns/rows must be an
/// integer multiple of this value.
/// </summary>
public uint KGranularity;

/// <summary>AType is the component type of matrix A, of type VkComponentTypeKHR.</summary>
public VkComponentTypeKHR AType;

/// <summary>BType is the component type of matrix B, of type VkComponentTypeKHR.</summary>
public VkComponentTypeKHR BType;

/// <summary>CType is the component type of matrix C, of type VkComponentTypeKHR.</summary>
public VkComponentTypeKHR CType;

/// <summary>ResultType is the component type of matrix Result, of type VkComponentTypeKHR.</summary>
public VkComponentTypeKHR ResultType;

/// <summary>
/// saturatingAccumulation indicates whether the SaturatingAccumulation operand to
/// OpCooperativeMatrixMulAddKHRmust be present or not. If it is VK_TRUE, the SaturatingAccumulation operand must be
/// present. If it is VK_FALSE, the SaturatingAccumulation operand mustnot be present.
/// </summary>
public VkBool32 saturatingAccumulation;

/// <summary>scope is the scope of all the matrix types, of type VkScopeKHR.</summary>
public VkScopeKHR scope;

/// <summary>
/// workgroupInvocations is the number of invocations in the local workgroup when this combination of values is
/// supported.
/// </summary>
public uint workgroupInvocations;
}
Original file line number Diff line number Diff line change
@@ -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

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

#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_NV_cooperative_matrix2 - device extension (nr. 594) - author 'NV' [platform '' | contact 'Jeff Bolz
/// @jeffbolznv']<br />
/// <a href="https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_NV_cooperative_matrix2.html">https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_NV_cooperative_matrix2.html</a>
/// </summary>
[VkDepends("VK_KHR_cooperative_matrix")]
[VkDeviceExt]
public static unsafe class VkNvCooperativeMatrix2
{
/// <summary> The spec version. </summary>
public const uint VK_NV_COOPERATIVE_MATRIX_2_SPEC_VERSION = 1;

/// <summary> The extension name. </summary>
public const string VK_NV_COOPERATIVE_MATRIX_2_EXTENSION_NAME = "VK_NV_cooperative_matrix2";

/// <summary>
/// An UTF8 null terminated version of <see cref="VK_NV_COOPERATIVE_MATRIX_2_EXTENSION_NAME" /> represented by an
/// UTF16 string.
/// </summary>
/// <remarks>
/// Example usage:<br />
/// <br />
/// fixed(char* ptr = VK_NV_COOPERATIVE_MATRIX_2_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_NV_COOPERATIVE_MATRIX_2_EXTENSION_NAME_UTF8_NT =
"\u4b56\u4e5f\u5f56\u4f43\u504f\u5245\u5441\u5649\u5f45\u414d\u5254\u5849\u325f\u455f\u5458\u4e45\u4953\u4e4f\u4e5f\u4d41\u0045";

/// <summary>
/// vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV - Returns properties describing what cooperative
/// matrix types are supported -
/// <a
/// href="https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV.html">
/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV.html
/// </a>
/// </summary>
/// <param name="physicalDevice">physicalDevice is the physical device.</param>
/// <param name="pPropertyCount">
/// pPropertyCount is a pointer to an integer related to the number of cooperative matrix
/// properties available or queried.
/// </param>
/// <param name="pProperties">
/// pProperties is either NULL or a pointer to an array of
/// VkCooperativeMatrixFlexibleDimensionsPropertiesNV structures.
/// </param>
/// <remarks>
/// <list type="table">
/// <item>
/// <term>successcodes</term><description>VK_SUCCESS,VK_INCOMPLETE</description>
/// </item>
/// <item>
/// <term>errorcodes</term><description>VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY</description>
/// </item>
/// </list>
/// </remarks>
public static readonly delegate*<
VkPhysicalDevice /*physicalDevice*/,
uint* /*pPropertyCount*/,
VkCooperativeMatrixFlexibleDimensionsPropertiesNV* /*pProperties*/,
VkResult> vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV = null;

/// <summary> Loads all function pointer based on the instance for this extension. (see remarks!) </summary>
/// <param name="instance"> The instance that the function pointers will be compatible with. </param>
/// <remarks>
/// This load method makes the following function pointers available:<br />
/// <list type="bullet">
/// <item>
/// <description>vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV</description>
/// </item>
/// </list>
/// </remarks>
public static void Load(VkInstance instance)
{
fixed (delegate*<VkPhysicalDevice, uint*, VkCooperativeMatrixFlexibleDimensionsPropertiesNV*, VkResult>* pvkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV =
&vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV)
{
*pvkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV = (delegate*<VkPhysicalDevice, uint*, VkCooperativeMatrixFlexibleDimensionsPropertiesNV*, VkResult>)GetVkFunction(
instance,
"\u6b76\u6547\u5074\u7968\u6973\u6163\u446c\u7665\u6369\u4365\u6f6f\u6570\u6172\u6974\u6576\u614d\u7274\u7869\u6c46\u7865\u6269\u656c\u6944\u656d\u736e\u6f69\u736e\u7250\u706f\u7265\u6974\u7365\u564e\u0000");
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
#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>
/// VkPhysicalDeviceCooperativeMatrix2FeaturesNV - Structure describing cooperative matrix features that can be
/// supported by an implementation -
/// <a
/// href="https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCooperativeMatrix2FeaturesNV.html">
/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCooperativeMatrix2FeaturesNV.html
/// </a>
/// </summary>
/// <remarks>
/// <list type="table">
/// <item>
/// <term>structextends</term><description>VkPhysicalDeviceFeatures2,VkDeviceCreateInfo</description>
/// </item>
/// </list>
/// </remarks>
[VkStructExtends("VkPhysicalDeviceFeatures2,VkDeviceCreateInfo")]
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkPhysicalDeviceCooperativeMatrix2FeaturesNV
{
/// <summary> The stype of this structure. </summary>
public const VkStructureType STYPE = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV;

/// <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>
/// cooperativeMatrixWorkgroupScope indicates that the implementation supports workgroup scope cooperative
/// matrices.
/// </summary>
public VkBool32 cooperativeMatrixWorkgroupScope;

/// <summary>
/// cooperativeMatrixFlexibleDimensions indicates that the implementation supports cooperative matrix sizes that
/// are a multiple of the granularity advertised in VkCooperativeMatrixFlexibleDimensionsPropertiesNV.
/// </summary>
public VkBool32 cooperativeMatrixFlexibleDimensions;

/// <summary>
/// cooperativeMatrixReductions indicates that the implementation supports the CooperativeMatrixReductionsNV
/// SPIR-V capability. This allows performing (row, column, 2x2, or all element) reductions on matrices.
/// </summary>
public VkBool32 cooperativeMatrixReductions;

/// <summary>
/// cooperativeMatrixConversions indicates that the implementation supports the CooperativeMatrixConversionsNV
/// SPIR-V capability. This allows converting accumulator matrices to A or B matrices.
/// </summary>
public VkBool32 cooperativeMatrixConversions;

/// <summary>
/// cooperativeMatrixPerElementOperations indicates that the implementation supports the
/// CooperativeMatrixPerElementOperationsNVSPIR-V capability. This allows performing element-wise operations on matrix
/// elements using a callback function.
/// </summary>
public VkBool32 cooperativeMatrixPerElementOperations;

/// <summary>
/// cooperativeMatrixTensorAddressing indicates that the implementation supports the TensorAddressingNV and
/// CooperativeMatrixTensorAddressingNV SPIR-V capabilities. This allows using tensor layout and tensor view types for
/// matrix loads and stores.
/// </summary>
public VkBool32 cooperativeMatrixTensorAddressing;

/// <summary>
/// cooperativeMatrixBlockLoads indicates that the implementation supports the CooperativeMatrixBlockLoadsNV
/// SPIR-V capability. This allows setting block size for loads and using a callback function to decode block elements.
/// </summary>
public VkBool32 cooperativeMatrixBlockLoads;
}
Loading
Loading