diff --git a/src/Metal/MTLCommandBuffer.cs b/src/Metal/MTLCommandBuffer.cs
new file mode 100644
index 000000000000..9de261e4cc0a
--- /dev/null
+++ b/src/Metal/MTLCommandBuffer.cs
@@ -0,0 +1,18 @@
+using System;
+
+using ObjCRuntime;
+
+#nullable enable
+
+namespace Metal {
+
+ public partial interface IMTLCommandBuffer {
+
+ /// Marks the specified residency sets as part of the current command buffer execution.
+ /// The residency sets to mark.
+ public void UseResidencySets (params IMTLResidencySet [] residencySets)
+ {
+ NativeObjectExtensions.CallWithPointerToFirstElementAndCount (residencySets, nameof (residencySets), UseResidencySets);
+ }
+ }
+}
diff --git a/src/Metal/MTLCommandQueue.cs b/src/Metal/MTLCommandQueue.cs
new file mode 100644
index 000000000000..d0a99b3caa6a
--- /dev/null
+++ b/src/Metal/MTLCommandQueue.cs
@@ -0,0 +1,25 @@
+using System;
+
+using ObjCRuntime;
+
+#nullable enable
+
+namespace Metal {
+
+ public partial interface IMTLCommandQueue {
+
+ /// Marks the specified residency sets as part of the current command buffer execution.
+ /// The residency sets to mark.
+ public void AddResidencySets (params IMTLResidencySet [] residencySets)
+ {
+ NativeObjectExtensions.CallWithPointerToFirstElementAndCount (residencySets, nameof (residencySets), AddResidencySets);
+ }
+
+ /// Removes the specified residency sets from the current command buffer execution.
+ /// The residency sets to mark.
+ public void RemoveResidencySets (params IMTLResidencySet [] residencySets)
+ {
+ NativeObjectExtensions.CallWithPointerToFirstElementAndCount (residencySets, nameof (residencySets), RemoveResidencySets);
+ }
+ }
+}
diff --git a/src/Metal/MTLDevice.cs b/src/Metal/MTLDevice.cs
index 7e0c2bc73a01..d78a254e043f 100644
--- a/src/Metal/MTLDevice.cs
+++ b/src/Metal/MTLDevice.cs
@@ -55,15 +55,14 @@ public static IMTLDevice? SystemDefault {
}
}
-#if MONOMAC || __MACCATALYST__
-
#if NET
[SupportedOSPlatform ("maccatalyst15.0")]
[SupportedOSPlatform ("macos")]
- [UnsupportedOSPlatform ("ios")]
- [UnsupportedOSPlatform ("tvos")]
+ [SupportedOSPlatform ("ios18.0")]
+ [SupportedOSPlatform ("tvos18.0")]
#else
- [MacCatalyst (15,0)]
+ [MacCatalyst (15, 0)]
+ [iOS (18, 0), TV (18, 0)]
#endif
[DllImport (Constants.MetalLibrary)]
unsafe static extern IntPtr MTLCopyAllDevices ();
@@ -71,10 +70,11 @@ public static IMTLDevice? SystemDefault {
#if NET
[SupportedOSPlatform ("maccatalyst15.0")]
[SupportedOSPlatform ("macos")]
- [UnsupportedOSPlatform ("ios")]
- [UnsupportedOSPlatform ("tvos")]
+ [SupportedOSPlatform ("ios18.0")]
+ [SupportedOSPlatform ("tvos18.0")]
#else
- [MacCatalyst (15,0)]
+ [MacCatalyst (15, 0)]
+ [iOS (18, 0), TV (18, 0)]
#endif
public static IMTLDevice [] GetAllDevices ()
{
@@ -84,8 +84,6 @@ public static IMTLDevice [] GetAllDevices ()
return devices;
}
-#endif
-
#if MONOMAC
#if NET
diff --git a/src/Metal/MTLEnums.cs b/src/Metal/MTLEnums.cs
index a12125b0b376..935d031c07b0 100644
--- a/src/Metal/MTLEnums.cs
+++ b/src/Metal/MTLEnums.cs
@@ -405,14 +405,55 @@ public enum MTLPixelFormat : ulong {
[NoiOS]
[NoMacCatalyst]
BC7_RGBAUnorm_sRGB = 153,
+
+ [Deprecated (PlatformName.iOS, 18, 0, message: "Use ASTC/ETC2/BC formats instead.")]
+ [Deprecated (PlatformName.MacCatalyst, 18, 0, message: "Use ASTC/ETC2/BC formats instead.")]
+ [Deprecated (PlatformName.MacOSX, 15, 0, message: "Use ASTC/ETC2/BC formats instead.")]
+ [Deprecated (PlatformName.TvOS, 18, 0, message: "Use ASTC/ETC2/BC formats instead.")]
PVRTC_RGB_2BPP = 160,
+
+ [Deprecated (PlatformName.iOS, 18, 0, message: "Use ASTC/ETC2/BC formats instead.")]
+ [Deprecated (PlatformName.MacCatalyst, 18, 0, message: "Use ASTC/ETC2/BC formats instead.")]
+ [Deprecated (PlatformName.MacOSX, 15, 0, message: "Use ASTC/ETC2/BC formats instead.")]
+ [Deprecated (PlatformName.TvOS, 18, 0, message: "Use ASTC/ETC2/BC formats instead.")]
PVRTC_RGB_2BPP_sRGB = 161,
+
+ [Deprecated (PlatformName.iOS, 18, 0, message: "Use ASTC/ETC2/BC formats instead.")]
+ [Deprecated (PlatformName.MacCatalyst, 18, 0, message: "Use ASTC/ETC2/BC formats instead.")]
+ [Deprecated (PlatformName.MacOSX, 15, 0, message: "Use ASTC/ETC2/BC formats instead.")]
+ [Deprecated (PlatformName.TvOS, 18, 0, message: "Use ASTC/ETC2/BC formats instead.")]
PVRTC_RGB_4BPP = 162,
+
+ [Deprecated (PlatformName.iOS, 18, 0, message: "Use ASTC/ETC2/BC formats instead.")]
+ [Deprecated (PlatformName.MacCatalyst, 18, 0, message: "Use ASTC/ETC2/BC formats instead.")]
+ [Deprecated (PlatformName.MacOSX, 15, 0, message: "Use ASTC/ETC2/BC formats instead.")]
+ [Deprecated (PlatformName.TvOS, 18, 0, message: "Use ASTC/ETC2/BC formats instead.")]
PVRTC_RGB_4BPP_sRGB = 163,
+
+ [Deprecated (PlatformName.iOS, 18, 0, message: "Use ASTC/ETC2/BC formats instead.")]
+ [Deprecated (PlatformName.MacCatalyst, 18, 0, message: "Use ASTC/ETC2/BC formats instead.")]
+ [Deprecated (PlatformName.MacOSX, 15, 0, message: "Use ASTC/ETC2/BC formats instead.")]
+ [Deprecated (PlatformName.TvOS, 18, 0, message: "Use ASTC/ETC2/BC formats instead.")]
PVRTC_RGBA_2BPP = 164,
+
+ [Deprecated (PlatformName.iOS, 18, 0, message: "Use ASTC/ETC2/BC formats instead.")]
+ [Deprecated (PlatformName.MacCatalyst, 18, 0, message: "Use ASTC/ETC2/BC formats instead.")]
+ [Deprecated (PlatformName.MacOSX, 15, 0, message: "Use ASTC/ETC2/BC formats instead.")]
+ [Deprecated (PlatformName.TvOS, 18, 0, message: "Use ASTC/ETC2/BC formats instead.")]
PVRTC_RGBA_2BPP_sRGB = 165,
+
+ [Deprecated (PlatformName.iOS, 18, 0, message: "Use ASTC/ETC2/BC formats instead.")]
+ [Deprecated (PlatformName.MacCatalyst, 18, 0, message: "Use ASTC/ETC2/BC formats instead.")]
+ [Deprecated (PlatformName.MacOSX, 15, 0, message: "Use ASTC/ETC2/BC formats instead.")]
+ [Deprecated (PlatformName.TvOS, 18, 0, message: "Use ASTC/ETC2/BC formats instead.")]
PVRTC_RGBA_4BPP = 166,
+
+ [Deprecated (PlatformName.iOS, 18, 0, message: "Use ASTC/ETC2/BC formats instead.")]
+ [Deprecated (PlatformName.MacCatalyst, 18, 0, message: "Use ASTC/ETC2/BC formats instead.")]
+ [Deprecated (PlatformName.MacOSX, 15, 0, message: "Use ASTC/ETC2/BC formats instead.")]
+ [Deprecated (PlatformName.TvOS, 18, 0, message: "Use ASTC/ETC2/BC formats instead.")]
PVRTC_RGBA_4BPP_sRGB = 167,
+
EAC_R11Unorm = 170,
EAC_R11Snorm = 172,
EAC_RG11Unorm = 174,
@@ -966,7 +1007,14 @@ public enum MTLArgumentAccess : ulong {
[Flags]
public enum MTLPipelineOption : ulong {
None,
- ArgumentInfo,
+#if !XAMCORE_5_0
+ [Deprecated (PlatformName.iOS, 18, 0, message: "Use 'BindingInfo' instead.")]
+ [Deprecated (PlatformName.TvOS, 18, 0, message: "Use 'BindingInfo' instead.")]
+ [Deprecated (PlatformName.MacCatalyst, 18, 0, message: "Use 'BindingInfo' instead.")]
+ [Deprecated (PlatformName.MacOSX, 15, 0, message: "Use 'BindingInfo' instead.")]
+ ArgumentInfo = 1 << 0,
+#endif
+ BindingInfo = 1 << 0,
BufferTypeInfo,
[iOS (14, 0)]
[TV (14, 0)]
@@ -1109,6 +1157,8 @@ public enum MTLLanguageVersion : ulong {
v3_0 = (3uL << 16) + 0,
[iOS (17, 0), TV (17, 0), MacCatalyst (17, 0), Mac (14, 0), NoWatch]
v3_1 = (3uL << 16) + 1,
+ [TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)]
+ v3_2 = (3ul << 16) + 2,
}
/// Enumerates values that indicate whether to clip or clamp depth values.
@@ -1690,7 +1740,15 @@ public enum MTLFunctionOptions : ulong {
[MacCatalyst (14, 0)]
CompileToBinary = 1uL << 0,
[iOS (17, 0), TV (17, 0), MacCatalyst (17, 0), Mac (14, 0)]
+ [Deprecated (PlatformName.MacCatalyst, 18, 0, message: "Use 'StoreFunctionInMetalPipelinesScript' instead.")]
+ [Deprecated (PlatformName.iOS, 18, 0, message: "Use 'StoreFunctionInMetalPipelinesScript' instead.")]
+ [Deprecated (PlatformName.TvOS, 18, 0, message: "Use 'StoreFunctionInMetalPipelinesScript' instead.")]
+ [Deprecated (PlatformName.MacOSX, 15, 0, message: "Use 'StoreFunctionInMetalPipelinesScript' instead.")]
StoreFunctionInMetalScript = 1uL << 1,
+ [TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)]
+ StoreFunctionInMetalPipelinesScript = 1 << 1,
+ [TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)]
+ FailOnBinaryArchiveMiss = 1 << 2,
}
[Flags, Mac (11, 0), iOS (14, 0), TV (16, 0)]
diff --git a/src/Metal/MTLResidencySet.cs b/src/Metal/MTLResidencySet.cs
new file mode 100644
index 000000000000..741ed898fd63
--- /dev/null
+++ b/src/Metal/MTLResidencySet.cs
@@ -0,0 +1,25 @@
+using System;
+
+using ObjCRuntime;
+
+#nullable enable
+
+namespace Metal {
+
+ public partial interface IMTLResidencySet {
+
+ /// Adds allocations to be committed the next time is called.
+ /// The allocations to add.
+ public void AddAllocations (params IMTLAllocation [] allocations)
+ {
+ NativeObjectExtensions.CallWithPointerToFirstElementAndCount (allocations, nameof (allocations), AddAllocations);
+ }
+
+ /// Marks allocations to be removed the next time is called.
+ /// The allocations to remove.
+ public void RemoveAllocations (params IMTLAllocation [] allocations)
+ {
+ NativeObjectExtensions.CallWithPointerToFirstElementAndCount (allocations, nameof (allocations), RemoveAllocations);
+ }
+ }
+}
diff --git a/src/ObjCRuntime/INativeObject.cs b/src/ObjCRuntime/INativeObject.cs
index 58c085400740..f464c21fd741 100644
--- a/src/ObjCRuntime/INativeObject.cs
+++ b/src/ObjCRuntime/INativeObject.cs
@@ -55,6 +55,25 @@ public static NativeHandle GetCheckedHandle (this INativeObject self)
return h;
}
#endif
+
+ internal static void CallWithPointerToFirstElementAndCount (T [] array, string arrayVariableName, Action callback)
+ where T : INativeObject
+ {
+ if (array is null)
+ ObjCRuntime.ThrowHelper.ThrowArgumentNullException (arrayVariableName);
+
+ var handles = new IntPtr [array.Length];
+ for (var i = 0; i < handles.Length; i++)
+ handles [i] = array [i].GetNonNullHandle (arrayVariableName + $"[{i}]");
+
+ unsafe {
+ fixed (IntPtr* handlesPtr = handles) {
+ callback ((IntPtr) handlesPtr, (nuint) handles.Length);
+ }
+ }
+
+ GC.KeepAlive (array);
+ }
}
#endif
}
diff --git a/src/foundation.cs b/src/foundation.cs
index 9177f2d6fdda..086271153ed1 100644
--- a/src/foundation.cs
+++ b/src/foundation.cs
@@ -13230,6 +13230,11 @@ interface NSProcessInfo {
[Export ("iOSAppOnMac")]
bool IsiOSApplicationOnMac { [Bind ("isiOSAppOnMac")] get; }
#endregion
+
+ [Field ("NSProcessInfoPerformanceProfileDidChangeNotification", "Metal")]
+ [Notification]
+ [TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0), NoWatch]
+ NSString PerformanceProfileDidChangeNotification { get; }
}
[NoWatch]
diff --git a/src/frameworks.sources b/src/frameworks.sources
index ee2132421cca..9a9213695d11 100644
--- a/src/frameworks.sources
+++ b/src/frameworks.sources
@@ -1223,6 +1223,8 @@ METAL_CORE_SOURCES = \
METAL_SOURCES = \
Metal/MTLArgumentEncoder.cs \
Metal/MTLBlitPassSampleBufferAttachmentDescriptorArray.cs \
+ Metal/MTLCommandBuffer.cs \
+ Metal/MTLCommandQueue.cs \
Metal/MTLCompat.cs \
Metal/MTLIOCompression.cs \
Metal/MTLComputeCommandEncoder.cs \
@@ -1234,6 +1236,7 @@ METAL_SOURCES = \
Metal/MTLRenderCommandEncoder.cs \
Metal/MTLRenderPassDescriptor.cs \
Metal/MTLRenderPassSampleBufferAttachmentDescriptorArray.cs \
+ Metal/MTLResidencySet.cs \
Metal/MTLResourceStateCommandEncoder.cs \
Metal/MTLResourceStatePassSampleBufferAttachmentDescriptorArray.cs \
Metal/MTLVertexDescriptor.cs \
diff --git a/src/metal.cs b/src/metal.cs
index f9d5a9b8d244..929c5fe707c9 100644
--- a/src/metal.cs
+++ b/src/metal.cs
@@ -233,8 +233,8 @@ partial interface MTLBuffer : MTLResource {
IMTLBuffer CreateRemoteBuffer (IMTLDevice device);
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("gpuAddress")]
ulong GpuAddress { get; }
@@ -413,20 +413,11 @@ partial interface MTLCommandBuffer {
[Export ("popDebugGroup")]
void PopDebugGroup ();
+
#if NET
-#if XAMCORE_5_0
- [MacCatalyst (14, 0), Mac (11, 0), iOS (13, 0), TV (16,0)]
- [Abstract] // @required but we can't add abstract members in C# and keep binary compatibility
-#elif !TVOS
- [MacCatalyst (14, 0), Mac (11, 0), iOS (13, 0), NoTV]
- [Abstract] // @required but we can't add abstract members in C# and keep binary compatibility
-#else
- [NoMacCatalyst, NoMac, NoiOS, TV (16,0)]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[MacCatalyst (14, 0), Mac (11, 0), iOS (13, 0), TV (16, 0)]
-#endif
[NullAllowed, Export ("resourceStateCommandEncoder")]
IMTLResourceStateCommandEncoder ResourceStateCommandEncoder { get; }
@@ -463,45 +454,35 @@ partial interface MTLCommandBuffer {
IMTLBlitCommandEncoder CreateBlitCommandEncoder (MTLBlitPassDescriptor blitPassDescriptor);
#if NET
-#if XAMCORE_5_0
- [Mac (11, 0), iOS (14, 0), TV (16,0), MacCatalyst (14, 0)]
- [Abstract]
-#elif !TVOS
- [Mac (11, 0), iOS (14, 0), NoTV, MacCatalyst (14, 0)]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoMacCatalyst]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (11, 0), iOS (14, 0), TV (16, 0), MacCatalyst (14, 0)]
-#endif
[Export ("resourceStateCommandEncoderWithDescriptor:")]
IMTLResourceStateCommandEncoder CreateResourceStateCommandEncoder (MTLResourceStatePassDescriptor resourceStatePassDescriptor);
#if NET
-#if XAMCORE_5_0
- [Mac (11, 0), iOS (14, 0), TV (16,0), MacCatalyst (14, 0)]
- [Abstract]
-#elif !TVOS
- [Mac (11, 0), iOS (14, 0), NoTV, MacCatalyst (14, 0)]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoMacCatalyst]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (11, 0), iOS (14, 0), TV (16, 0), MacCatalyst (14, 0)]
-#endif
[Export ("accelerationStructureCommandEncoder")]
IMTLAccelerationStructureCommandEncoder CreateAccelerationStructureCommandEncoder ();
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("accelerationStructureCommandEncoderWithDescriptor:")]
IMTLAccelerationStructureCommandEncoder CreateAccelerationStructureCommandEncoder (MTLAccelerationStructurePassDescriptor descriptor);
+
+ [Abstract]
+ [TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)]
+ [Export ("useResidencySet:")]
+ void UseResidencySet (IMTLResidencySet residencySet);
+
+ [Abstract]
+ [TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)]
+ [Export ("useResidencySets:count:")]
+ void UseResidencySets (IntPtr /* const id _Nonnull[_Nonnull] */ residencySets, nuint count);
}
interface IMTLCommandQueue { }
@@ -542,6 +523,26 @@ partial interface MTLCommandQueue {
[Export ("commandBufferWithDescriptor:")]
[return: NullAllowed]
IMTLCommandBuffer CreateCommandBuffer (MTLCommandBufferDescriptor descriptor);
+
+ [Abstract]
+ [TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)]
+ [Export ("addResidencySet:")]
+ void AddResidencySet (IMTLResidencySet residencySet);
+
+ [Abstract]
+ [TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)]
+ [Export ("addResidencySets:count:")]
+ void AddResidencySets (IntPtr residencySets, nuint count);
+
+ [Abstract]
+ [TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)]
+ [Export ("removeResidencySet:")]
+ void RemoveResidencySet (IMTLResidencySet residencySet);
+
+ [Abstract]
+ [TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)]
+ [Export ("removeResidencySets:count:")]
+ void RemoveResidencySets (IntPtr residencySets, nuint count);
}
interface IMTLComputeCommandEncoder { }
@@ -747,87 +748,37 @@ partial interface MTLComputeCommandEncoder : MTLCommandEncoder {
#endif
#if NET
-#if XAMCORE_5_0
- [Mac (11, 0), iOS (14, 0), TV (16,0), MacCatalyst (14, 0)]
- [Abstract]
-#elif !TVOS
- [Mac (11, 0), iOS (14, 0), NoTV, MacCatalyst (14, 0)]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoMacCatalyst]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (11, 0), iOS (14, 0), TV (16, 0), MacCatalyst (14, 0)]
-#endif
[Export ("setVisibleFunctionTable:atBufferIndex:")]
void SetVisibleFunctionTable ([NullAllowed] IMTLVisibleFunctionTable visibleFunctionTable, nuint bufferIndex);
#if NET
-#if XAMCORE_5_0
- [Mac (11, 0), iOS (14, 0), TV (16,0), MacCatalyst (14, 0)]
- [Abstract]
-#elif !TVOS
- [Mac (11, 0), iOS (14, 0), NoTV, MacCatalyst (14, 0)]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoMacCatalyst]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (11, 0), iOS (14, 0), TV (16, 0), MacCatalyst (14, 0)]
-#endif
[Export ("setVisibleFunctionTables:withBufferRange:")]
void SetVisibleFunctionTables (IMTLVisibleFunctionTable [] visibleFunctionTables, NSRange range);
#if NET
-#if XAMCORE_5_0
- [Mac (11, 0), iOS (14, 0), TV (16,0), MacCatalyst (14, 0)]
- [Abstract]
-#elif !TVOS
- [Mac (11, 0), iOS (14, 0), NoTV, MacCatalyst (14, 0)]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoMacCatalyst]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (11, 0), iOS (14, 0), TV (16, 0), MacCatalyst (14, 0)]
-#endif
[Export ("setIntersectionFunctionTable:atBufferIndex:")]
void SetIntersectionFunctionTable ([NullAllowed] IMTLIntersectionFunctionTable intersectionFunctionTable, nuint bufferIndex);
#if NET
-#if XAMCORE_5_0
- [Mac (11, 0), iOS (14, 0), TV (16,0), MacCatalyst (14, 0)]
- [Abstract]
-#elif !TVOS
- [Mac (11, 0), iOS (14, 0), NoTV, MacCatalyst (14, 0)]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoMacCatalyst]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (11, 0), iOS (14, 0), TV (16, 0), MacCatalyst (14, 0)]
-#endif
[Export ("setIntersectionFunctionTables:withBufferRange:")]
void SetIntersectionFunctionTables (IMTLIntersectionFunctionTable [] intersectionFunctionTables, NSRange range);
#if NET
-#if XAMCORE_5_0
- [Mac (11, 0), iOS (14, 0), TV (16,0), MacCatalyst (14, 0)]
- [Abstract]
-#elif !TVOS
- [Mac (11, 0), iOS (14, 0), NoTV, MacCatalyst (14, 0)]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoMacCatalyst]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (11, 0), iOS (14, 0), TV (16, 0), MacCatalyst (14, 0)]
-#endif
[Export ("setAccelerationStructure:atBufferIndex:")]
void SetAccelerationStructure ([NullAllowed] IMTLAccelerationStructure accelerationStructure, nuint bufferIndex);
@@ -839,22 +790,22 @@ partial interface MTLComputeCommandEncoder : MTLCommandEncoder {
void SetBuffer (IMTLBuffer buffer, nuint offset, nuint stride, nuint index);
[Mac (14, 0), iOS (17, 0), TV (17, 0), MacCatalyst (17, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("setBuffers:offsets:attributeStrides:withRange:")]
void SetBuffers (IntPtr /* IMTLBuffer[] */ buffers, IntPtr /* nuint[] */ offsets, IntPtr /* nuint[] */ strides, NSRange range);
[Mac (14, 0), iOS (17, 0), TV (17, 0), MacCatalyst (17, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("setBufferOffset:attributeStride:atIndex:")]
void SetBufferOffset (nuint offset, nuint stride, nuint index);
[Mac (14, 0), iOS (17, 0), TV (17, 0), MacCatalyst (17, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("setBytes:length:attributeStride:atIndex:")]
void SetBytes (IntPtr bytes, nuint length, nuint stride, nuint index);
@@ -932,83 +883,46 @@ partial interface MTLComputePipelineState {
bool SupportIndirectCommandBuffers { get; }
#if NET
-#if XAMCORE_5_0
- [Mac (11, 0), iOS (14, 0), TV (16,0), MacCatalyst (14, 0)]
- [Abstract]
-#elif !TVOS
- [Mac (11, 0), iOS (14, 0), NoTV, MacCatalyst (14, 0)]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoMacCatalyst]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (11, 0), iOS (14, 0), TV (16, 0), MacCatalyst (14, 0)]
-#endif
[Export ("functionHandleWithFunction:")]
IMTLFunctionHandle CreateFunctionHandle (IMTLFunction function);
#if NET
-
-#if XAMCORE_5_0
- [Mac (11, 0), iOS (14, 0), TV (16,0), MacCatalyst (14, 0)]
- [Abstract]
-#elif !TVOS
- [Mac (11, 0), iOS (14, 0), NoTV, MacCatalyst (14, 0)]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoMacCatalyst]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (11, 0), iOS (14, 0), TV (16, 0), MacCatalyst (14, 0)]
-#endif
[Export ("newComputePipelineStateWithAdditionalBinaryFunctions:error:")]
[return: Release]
IMTLComputePipelineState CreateComputePipelineState (IMTLFunction [] functions, [NullAllowed] out NSError error);
#if NET
-#if XAMCORE_5_0
- [Mac (11, 0), iOS (14, 0), TV (16,0), MacCatalyst (14, 0)]
- [Abstract]
-#elif !TVOS
- [Mac (11, 0), iOS (14, 0), NoTV, MacCatalyst (14, 0)]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoMacCatalyst]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (11, 0), iOS (14, 0), TV (16, 0), MacCatalyst (14, 0)]
-#endif
[Export ("newVisibleFunctionTableWithDescriptor:")]
[return: Release]
IMTLVisibleFunctionTable CreateVisibleFunctionTable (MTLVisibleFunctionTableDescriptor descriptor);
#if NET
-#if XAMCORE_5_0
- [Mac (11, 0), iOS (14, 0), TV (16,0), MacCatalyst (14, 0)]
- [Abstract]
-#elif !TVOS
- [Mac (11, 0), iOS (14, 0), NoTV, MacCatalyst (14, 0)]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoMacCatalyst]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (11, 0), iOS (14, 0), TV (16, 0), MacCatalyst (14, 0)]
-#endif
[Export ("newIntersectionFunctionTableWithDescriptor:")]
[return: Release]
IMTLIntersectionFunctionTable CreateIntersectionFunctionTable (MTLIntersectionFunctionTableDescriptor descriptor);
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("gpuResourceID")]
MTLResourceId GpuResourceId { get; }
+
+ [Abstract]
+ [Export ("shaderValidation")]
+ MTLShaderValidation ShaderValidation { get; }
}
interface IMTLBlitCommandEncoder { }
@@ -1132,15 +1046,17 @@ partial interface MTLBlitCommandEncoder : MTLCommandEncoder {
[Export ("optimizeIndirectCommandBuffer:withRange:")]
void Optimize (IMTLIndirectCommandBuffer indirectCommandBuffer, NSRange range);
-#if NET && !__MACOS__ && !__MACCATALYST__ && !TVOS
- [Abstract]
+ // @optional in macOS and Mac Catalyst
+#if NET && !__MACOS__ && !__MACCATALYST__
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Mac (11, 0), TV (16, 0), iOS (13, 0), MacCatalyst (15, 0)]
[Export ("getTextureAccessCounters:region:mipLevel:slice:resetCounters:countersBuffer:countersBufferOffset:")]
void GetTextureAccessCounters (IMTLTexture texture, MTLRegion region, nuint mipLevel, nuint slice, bool resetCounters, IMTLBuffer countersBuffer, nuint countersBufferOffset);
-#if NET && !__MACOS__ && !__MACCATALYST__ && !TVOS
- [Abstract]
+ // @optional in macOS and Mac Catalyst
+#if NET && !__MACOS__ && !__MACCATALYST__
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Mac (11, 0), TV (16, 0), iOS (13, 0), MacCatalyst (15, 0)]
[Export ("resetTextureAccessCounters:region:mipLevel:slice:")]
@@ -1664,87 +1580,37 @@ partial interface MTLDevice {
void CreateRenderPipelineState (MTLTileRenderPipelineDescriptor descriptor, MTLPipelineOption options, MTLNewRenderPipelineStateWithReflectionCompletionHandler completionHandler);
#if NET
-#if XAMCORE_5_0
- [MacCatalyst (13, 4), TV (16,0), iOS (13, 0)]
- [Abstract]
-#elif !TVOS
- [MacCatalyst (13, 4), NoTV, iOS (13, 0)]
- [Abstract]
-#else
- [NoMac, NoMacCatalyst, TV (16,0), NoiOS]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[MacCatalyst (13, 4), TV (16, 0), iOS (13, 0)]
-#endif
[Export ("supportsVertexAmplificationCount:")]
bool SupportsVertexAmplification (nuint count);
#if NET
-#if XAMCORE_5_0
- [MacCatalyst (13, 4), TV (16,0), iOS (13, 0)]
- [Abstract]
-#elif !TVOS
- [MacCatalyst (13, 4), NoTV, iOS (13, 0)]
- [Abstract]
-#else
- [NoMac, NoMacCatalyst, TV (16,0), NoiOS]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[MacCatalyst (13, 4), TV (16, 0), iOS (13, 0)]
-#endif
[Export ("supportsRasterizationRateMapWithLayerCount:")]
bool SupportsRasterizationRateMap (nuint layerCount);
#if NET
-#if XAMCORE_5_0
- [MacCatalyst (14, 0), Mac (11, 0), TV (16,0), iOS (13, 0)]
- [Abstract]
-#elif !TVOS
- [MacCatalyst (14, 0), Mac (11, 0), NoTV, iOS (13, 0)]
- [Abstract]
-#else
- [NoMacCatalyst, NoMac, TV (16,0), NoiOS]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[MacCatalyst (14, 0), Mac (11, 0), TV (16, 0), iOS (13, 0)]
-#endif
[Export ("sparseTileSizeWithTextureType:pixelFormat:sampleCount:")]
MTLSize GetSparseTileSize (MTLTextureType textureType, MTLPixelFormat pixelFormat, nuint sampleCount);
#if NET
-#if XAMCORE_5_0
- [MacCatalyst (14, 0), Mac (11, 0), TV (16,0), iOS (13, 0)]
- [Abstract]
-#elif !TVOS
- [MacCatalyst (14, 0), Mac (11, 0), NoTV, iOS (13, 0)]
- [Abstract]
-#else
- [NoMacCatalyst, NoMac, TV (16,0), NoiOS]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[MacCatalyst (14, 0), Mac (11, 0), TV (16, 0), iOS (13, 0)]
-#endif
[Export ("sparseTileSizeInBytes")]
nuint SparseTileSizeInBytes { get; }
#if NET
-#if XAMCORE_5_0
- [MacCatalyst (13, 4), TV (16,0), iOS (13, 0)]
- [Abstract]
-#elif !TVOS
- [MacCatalyst (13, 4), NoTV, iOS (13, 0)]
- [Abstract]
-#else
- [NoMac, NoMacCatalyst, TV (16,0), NoiOS]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[MacCatalyst (13, 4), TV (16, 0), iOS (13, 0)]
-#endif
[Export ("newRasterizationRateMapWithDescriptor:")]
[return: NullAllowed]
[return: Release]
@@ -1779,24 +1645,14 @@ partial interface MTLDevice {
#if NET
[Abstract]
#endif
- [iOS (14, 0), NoTV, NoMacCatalyst]
+ [iOS (14, 0), NoTV, MacCatalyst (14, 0)]
[Export ("barycentricCoordsSupported")]
bool BarycentricCoordsSupported { [Bind ("areBarycentricCoordsSupported")] get; }
#if NET
-#if XAMCORE_5_0
- [iOS (14, 0), TV (16,0), NoMacCatalyst]
- [Abstract]
-#elif !TVOS
- [iOS (14, 0), NoTV, NoMacCatalyst]
- [Abstract]
-#else
- [NoiOS, TV (16,0), NoMacCatalyst]
-#endif
-
-#else
- [iOS (14, 0), TV (16, 0), NoMacCatalyst]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
+ [iOS (14, 0), TV (16, 0), MacCatalyst (14, 0)]
[Export ("supportsShaderBarycentricCoordinates")]
bool SupportsShaderBarycentricCoordinates { get; }
@@ -1885,40 +1741,20 @@ partial interface MTLDevice {
nuint LocationNumber { get; }
#if NET
-#if XAMCORE_5_0
- [Mac (11, 0), TV (16,0), iOS (14, 5), MacCatalyst (14, 5)]
- [Abstract]
-#elif !TVOS
- [Mac (11, 0), NoTV, iOS (14, 5), MacCatalyst (14, 5)]
- [Abstract]
-#else
- [NoMac, TV (16,0), NoiOS, NoMacCatalyst]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (11, 0), TV (16, 0), iOS (14, 5), MacCatalyst (14, 5)]
-#endif
[Export ("supports32BitFloatFiltering")]
bool Supports32BitFloatFiltering { get; }
#if NET
-#if XAMCORE_5_0
- [Mac (11, 0), TV (16,0), iOS (14, 5), MacCatalyst (14, 5)]
- [Abstract]
-#elif !TVOS
- [Mac (11, 0), NoTV, iOS (14, 5), MacCatalyst (14, 5)]
- [Abstract]
-#else
- [NoMac, TV (16,0), NoiOS, NoMacCatalyst]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-#else
[Mac (11, 0), TV (16, 0), iOS (14, 5), MacCatalyst (14, 5)]
-#endif
[Export ("supports32BitMSAA")]
bool Supports32BitMsaa { get; }
- [Mac (11, 0), iOS (16, 4), TV (16, 4), NoMacCatalyst]
- [NoMacCatalyst]
+ [Mac (11, 0), iOS (16, 4), TV (16, 4), MacCatalyst (16, 4)]
#if NET
[Abstract]
#endif
@@ -1980,110 +1816,50 @@ partial interface MTLDevice {
IMTLBinaryArchive CreateBinaryArchive (MTLBinaryArchiveDescriptor descriptor, [NullAllowed] out NSError error);
#if NET
-#if XAMCORE_5_0
- [Mac (11, 0), iOS (14, 0), TV (!6,0), MacCatalyst (14, 0)]
- [Abstract]
-#elif !TVOS
- [Mac (11, 0), iOS (14, 0), NoTV, MacCatalyst (14, 0)]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoMacCatalyst]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (11, 0), iOS (14, 0), TV (16, 0), MacCatalyst (14, 0)]
-#endif
[Export ("supportsRaytracing")]
bool SupportsRaytracing { get; }
#if NET
-#if XAMCORE_5_0
- [Mac (11, 0), iOS (14, 0), TV (16,0), MacCatalyst (14, 0)]
- [Abstract]
-#elif !TVOS
- [Mac (11, 0), iOS (14, 0), NoTV, MacCatalyst (14, 0)]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoMacCatalyst]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (11, 0), iOS (14, 0), TV (16, 0), MacCatalyst (14, 0)]
-#endif
[Export ("accelerationStructureSizesWithDescriptor:")]
#pragma warning disable 0618 // warning CS0618: 'MTLAccelerationStructureSizes' is obsolete: 'This API is not available on this platform.'
MTLAccelerationStructureSizes CreateAccelerationStructureSizes (MTLAccelerationStructureDescriptor descriptor);
#pragma warning restore
#if NET
-#if XAMCORE_5_0
- [Mac (11, 0), iOS (14, 0), TV (16,0), MacCatalyst (14, 0)]
- [Abstract]
-#elif !TVOS
- [Mac (11, 0), iOS (14, 0), NoTV, MacCatalyst (14, 0)]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoMacCatalyst]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (11, 0), iOS (14, 0), TV (16, 0), MacCatalyst (14, 0)]
-#endif
[Export ("newAccelerationStructureWithSize:")]
[return: NullAllowed]
[return: Release]
IMTLAccelerationStructure CreateAccelerationStructure (nuint size);
#if NET
-#if XAMCORE_5_0
- [Mac (11, 0), iOS (14, 0), TV (16,0), MacCatalyst (14, 0)]
- [Abstract]
-#elif !TVOS
- [Mac (11, 0), iOS (14, 0), NoTV, MacCatalyst (14, 0)]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoMacCatalyst]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (11, 0), iOS (14, 0), TV (16, 0), MacCatalyst (14, 0)]
-#endif
[Export ("newAccelerationStructureWithDescriptor:")]
[return: NullAllowed]
[return: Release]
IMTLAccelerationStructure CreateAccelerationStructure (MTLAccelerationStructureDescriptor descriptor);
#if NET
-#if XAMCORE_5_0
- [Mac (11, 0), iOS (14, 0), TV (16,0), MacCatalyst (14, 0)]
- [Abstract]
-#elif !TVOS
- [Mac (11, 0), iOS (14, 0), NoTV, MacCatalyst (14, 0)]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoMacCatalyst]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (11, 0), iOS (14, 0), TV (16, 0), MacCatalyst (14, 0)]
-#endif
[Export ("supportsFunctionPointers")]
bool SupportsFunctionPointers { get; }
#if NET
-#if XAMCORE_5_0
- [Mac (11, 0), TV (16,0), iOS (14, 5), MacCatalyst (14, 5)]
- [Abstract]
-#elif !TVOS
- [Mac (11, 0), NoTV, iOS (14, 5), MacCatalyst (14, 5)]
- [Abstract]
-#else
- [NoMac, TV (16,0), NoiOS, NoMacCatalyst]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (11, 0), TV (16, 0), iOS (14, 5), MacCatalyst (14, 5)]
-#endif
[Export ("supportsQueryTextureLOD")]
bool SupportsQueryTextureLod { get; }
@@ -2095,53 +1871,23 @@ partial interface MTLDevice {
bool SupportsRenderDynamicLibraries { get; }
#if NET
-#if XAMCORE_5_0
- [Mac (12, 0), iOS (15, 0), MacCatalyst (15, 0), TV (16,0)]
- [Abstract]
-#elif !TVOS
- [Mac (12, 0), iOS (15, 0), MacCatalyst (15, 0), NoTV]
- [Abstract]
-#else
- [NoMac, NoiOS, NoMacCatalyst, TV (16,0)]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (12, 0), iOS (15, 0), MacCatalyst (15, 0), TV (16, 0)]
-#endif
[Export ("supportsRaytracingFromRender")]
bool SupportsRaytracingFromRender { get; }
#if NET
-#if XAMCORE_5_0
- [Mac (12, 0), iOS (15, 0), MacCatalyst (15, 0), TV (16,0)]
- [Abstract]
-#elif !TVOS
- [Mac (12, 0), iOS (15, 0), MacCatalyst (15, 0), NoTV]
- [Abstract]
-#else
- [NoMac, NoiOS, NoMacCatalyst, TV (16,0)]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (12, 0), iOS (15, 0), MacCatalyst (15, 0), TV (16, 0)]
-#endif
[Export ("supportsPrimitiveMotionBlur")]
bool SupportsPrimitiveMotionBlur { get; }
#if NET
-#if XAMCORE_5_0
- [Mac (12, 0), iOS (15, 0), MacCatalyst (15, 0), TV (16,0), NoWatch]
- [Abstract]
-#elif !TVOS
- [Mac (12, 0), iOS (15, 0), MacCatalyst (15, 0), NoTV, NoWatch]
- [Abstract]
-#else
- [NoMac, NoiOS, NoMacCatalyst, TV (16,0), NoWatch]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (12, 0), iOS (15, 0), MacCatalyst (15, 0), TV (16, 0), NoWatch]
-#endif
[Export ("supportsFunctionPointersFromRender")]
bool SupportsFunctionPointersFromRender { get; }
@@ -2163,37 +1909,37 @@ partial interface MTLDevice {
void CreateLibrary (MTLStitchedLibraryDescriptor descriptor, Action completionHandler);
[Mac (14, 0), iOS (17, 0), TV (17, 0), MacCatalyst (17, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("architecture")]
MTLArchitecture Architecture { get; }
[Mac (13, 0), iOS (16, 0), MacCatalyst (16, 0), TV (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("heapAccelerationStructureSizeAndAlignWithDescriptor:")]
MTLSizeAndAlign GetHeapAccelerationStructureSizeAndAlign (MTLAccelerationStructureDescriptor descriptor);
[Mac (13, 0), iOS (16, 0), MacCatalyst (16, 0), TV (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("heapAccelerationStructureSizeAndAlignWithSize:")]
MTLSizeAndAlign GetHeapAccelerationStructureSizeAndAlign (nuint size);
[Mac (13, 0), iOS (16, 0), MacCatalyst (16, 0), TV (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("newArgumentEncoderWithBufferBinding:")]
[return: Release]
IMTLArgumentEncoder CreateArgumentEncoder (IMTLBufferBinding bufferBinding);
[Mac (13, 0), iOS (16, 0), MacCatalyst (16, 0), TV (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("newRenderPipelineStateWithMeshDescriptor:options:reflection:error:")]
[return: NullAllowed]
@@ -2201,40 +1947,62 @@ partial interface MTLDevice {
IMTLRenderPipelineState CreateRenderPipelineState (MTLMeshRenderPipelineDescriptor descriptor, MTLPipelineOption options, [NullAllowed] out MTLRenderPipelineReflection reflection, [NullAllowed] out NSError error);
[Mac (13, 0), iOS (16, 0), MacCatalyst (16, 0), TV (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("newRenderPipelineStateWithMeshDescriptor:options:completionHandler:")]
void CreateRenderPipelineState (MTLMeshRenderPipelineDescriptor descriptor, MTLPipelineOption options, MTLNewRenderPipelineStateWithReflectionCompletionHandler completionHandler);
[Mac (13, 0), iOS (16, 0), MacCatalyst (16, 0), TV (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("sparseTileSizeInBytesForSparsePageSize:")]
nuint GetSparseTileSizeInBytes (MTLSparsePageSize sparsePageSize);
[Mac (13, 0), iOS (16, 0), MacCatalyst (16, 0), TV (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("sparseTileSizeWithTextureType:pixelFormat:sampleCount:sparsePageSize:")]
MTLSize GetSparseTileSize (MTLTextureType textureType, MTLPixelFormat pixelFormat, nuint sampleCount, MTLSparsePageSize sparsePageSize);
[NoiOS, Mac (13, 3), NoTV, NoMacCatalyst]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("maximumConcurrentCompilationTaskCount")]
nuint MaximumConcurrentCompilationTaskCount { get; }
- [NoiOS, Mac (13, 3), NoTV, NoMacCatalyst]
-#if XAMCORE_5_0
+ [NoiOS, Mac (13, 3), NoTV, NoMacCatalyst]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
+#endif
+ [Export ("shouldMaximizeConcurrentCompilation")]
+ bool ShouldMaximizeConcurrentCompilation { get; set; }
+
+ [TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)]
+ [Abstract]
+ [Export ("newLogStateWithDescriptor:error:")]
+ [return: NullAllowed]
+ [return: Release]
+ IMTLLogState GetNewLogState (MTLLogStateDescriptor descriptor, out NSError error);
+
+ [TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)]
+ [Abstract]
+ [Export ("newCommandQueueWithDescriptor:")]
+ [return: NullAllowed]
+ [return: Release]
+ IMTLCommandQueue CreateCommandQueue (MTLCommandQueueDescriptor descriptor);
+
+#if NET
[Abstract]
#endif
- [Export ("shouldMaximizeConcurrentCompilation")]
- bool ShouldMaximizeConcurrentCompilation { get; set; }
-
+ [TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)]
+ [return: NullAllowed]
+ [Export ("newResidencySetWithDescriptor:error:")]
+ [return: Release]
+ IMTLResidencySet CreateResidencySet (MTLResidencySetDescriptor descriptor, out NSError error);
}
/// Interface representing the required methods (if any) of the protocol .
@@ -2394,19 +2162,9 @@ partial interface MTLTexture : MTLResource {
bool AllowGpuOptimizedContents { get; }
#if NET
-#if XAMCORE_5_0
- [Mac (12,5), iOS (15, 0), NoMacCatalyst, TV (16,0), NoWatch]
- [Abstract]
-#elif !TVOS
- [Mac (12,5), iOS (15, 0), NoMacCatalyst, NoTV, NoWatch]
- [Abstract]
-#else
- [NoMac, NoiOS, NoMacCatalyst, TV (16,0), NoWatch]
-#endif
-
-#else
- [Mac (12, 5), iOS (15, 0), NoMacCatalyst, TV (16, 0), NoWatch]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
+ [Mac (12, 5), iOS (15, 0), MacCatalyst (15, 0), TV (16, 0), NoWatch]
[Export ("compressionType")]
MTLTextureCompressionType CompressionType { get; }
@@ -2479,23 +2237,25 @@ partial interface MTLTexture : MTLResource {
[Export ("newSharedTextureHandle")]
MTLSharedTextureHandle CreateSharedTextureHandle ();
+ // @optional in macOS and Mac Catalyst
#if NET && !__MACOS__ && !__MACCATALYST__
- [Abstract]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
[Mac (11, 0), TV (16, 0), iOS (13, 0), MacCatalyst (15, 0)]
[Export ("firstMipmapInTail")]
nuint FirstMipmapInTail { get; }
-#if NET && !__MACOS__ && !__MACCATALYST__ && !TVOS
- [Abstract]
+ // @optional in macOS and Mac Catalyst
+#if NET && !__MACOS__ && !__MACCATALYST__
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Mac (11, 0), TV (16, 0), iOS (13, 0), MacCatalyst (15, 0)]
[Export ("tailSizeInBytes")]
nuint TailSizeInBytes { get; }
-#if NET && !__MACOS__ && !__MACCATALYST__ && !TVOS
- [Abstract]
+ // @optional in macOS and Mac Catalyst
+#if NET && !__MACOS__ && !__MACCATALYST__
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Mac (11, 0), TV (16, 0), iOS (13, 0), MacCatalyst (15, 0)]
[Export ("isSparse")]
@@ -2538,8 +2298,8 @@ partial interface MTLTexture : MTLResource {
IMTLTexture CreateRemoteTexture (IMTLDevice device);
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("gpuResourceID")]
MTLResourceId GpuResourceId { get; }
@@ -2701,8 +2461,8 @@ partial interface MTLSamplerState {
IMTLDevice Device { get; }
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("gpuResourceID")]
MTLResourceId GpuResourceId { get; }
@@ -2862,6 +2622,10 @@ partial interface MTLRenderPipelineDescriptor : NSCopying {
[Mac (12, 0), iOS (15, 0), TV (15, 0), MacCatalyst (15, 0), NoWatch]
[NullAllowed, Export ("fragmentLinkedFunctions", ArgumentSemantic.Copy)]
MTLLinkedFunctions FragmentLinkedFunctions { get; set; }
+
+ [TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)]
+ [Export ("shaderValidation")]
+ MTLShaderValidation ShaderValidation { get; set; }
}
/// An array of objects.
@@ -2936,76 +2700,35 @@ partial interface MTLRenderPipelineState {
bool SupportIndirectCommandBuffers { get; }
#if NET
-
-#if XAMCORE_5_0
- [Mac (12, 0), iOS (15, 0), TV (16,0), NoWatch, MacCatalyst (15, 0)]
- [Abstract]
-#elif !TVOS
- [Mac (12, 0), iOS (15, 0), NoTV, NoWatch, MacCatalyst (15, 0)]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoWatch, NoMacCatalyst]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (12, 0), iOS (15, 0), TV (16, 0), NoWatch, MacCatalyst (15, 0)]
-#endif
[Export ("functionHandleWithFunction:stage:")]
[return: NullAllowed]
IMTLFunctionHandle FunctionHandleWithFunction (IMTLFunction function, MTLRenderStages stage);
#if NET
-#if XAMCORE_5_0
- [Mac (12, 0), iOS (15, 0), TV (!6,0), NoWatch, MacCatalyst (15, 0)]
- [Abstract]
-#elif !TVOS
- [Mac (12, 0), iOS (15, 0), NoTV, NoWatch, MacCatalyst (15, 0)]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoWatch, NoMacCatalyst]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (12, 0), iOS (15, 0), TV (16, 0), NoWatch, MacCatalyst (15, 0)]
-#endif
[Export ("newVisibleFunctionTableWithDescriptor:stage:")]
[return: NullAllowed]
[return: Release]
IMTLVisibleFunctionTable NewVisibleFunctionTableWithDescriptor (MTLVisibleFunctionTableDescriptor descriptor, MTLRenderStages stage);
#if NET
-#if XAMCORE_5_0
- [Mac (12, 0), iOS (15, 0), TV (16,0), NoWatch, MacCatalyst (15, 0)]
- [Abstract]
-#elif !TVOS
- [Mac (12, 0), iOS (15, 0), NoTV, NoWatch, MacCatalyst (15, 0)]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoWatch, NoMacCatalyst]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (12, 0), iOS (15, 0), TV (16, 0), NoWatch, MacCatalyst (15, 0)]
-#endif
[Export ("newIntersectionFunctionTableWithDescriptor:stage:")]
[return: NullAllowed]
[return: Release]
IMTLIntersectionFunctionTable NewIntersectionFunctionTableWithDescriptor (MTLIntersectionFunctionTableDescriptor descriptor, MTLRenderStages stage);
#if NET
-#if XAMCORE_5_0
- [Mac (12, 0), iOS (15, 0), TV (16,0), NoWatch, MacCatalyst (15, 0)]
- [Abstract]
-#elif !TVOS
- [Mac (12, 0), iOS (15, 0), NoTV, NoWatch, MacCatalyst (15, 0)]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoWatch, NoMacCatalyst]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (12, 0), iOS (15, 0), TV (16, 0), NoWatch, MacCatalyst (15, 0)]
-#endif
[Export ("newRenderPipelineStateWithAdditionalBinaryFunctions:error:")]
[return: NullAllowed]
[return: Release]
@@ -3027,25 +2750,30 @@ partial interface MTLRenderPipelineState {
MTLResourceId GpuResourceId { get; }
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("maxTotalThreadsPerMeshThreadgroup")]
nuint MaxTotalThreadsPerMeshThreadgroup { get; }
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("maxTotalThreadsPerObjectThreadgroup")]
nuint MaxTotalThreadsPerObjectThreadgroup { get; }
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("objectThreadExecutionWidth")]
nuint ObjectThreadExecutionWidth { get; }
+
+ [Abstract]
+ [TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)]
+ [Export ("shaderValidation")]
+ MTLShaderValidation ShaderValidation { get; }
}
/// Configures how vertex and attribute data are fetched by a vertex shader function.
@@ -3321,19 +3049,9 @@ partial interface MTLFunction {
IMTLArgumentEncoder CreateArgumentEncoder (nuint bufferIndex, [NullAllowed] out MTLArgument reflection);
#if NET
-#if XAMCORE_5_0
- [Mac (11, 0), iOS (14, 0), TV (16,0), MacCatalyst (14, 0)]
- [Abstract]
-#elif !TVOS
- [Mac (11, 0), iOS (14, 0), NoTV, MacCatalyst (14, 0)]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoMacCatalyst]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (11, 0), iOS (14, 0), TV (16, 0), MacCatalyst (14, 0)]
-#endif
[Export ("options")]
MTLFunctionOptions Options { get; }
}
@@ -3400,36 +3118,16 @@ partial interface MTLLibrary {
// protocol, so no Async
#if NET
-#if XAMCORE_5_0
- [Mac (11, 0), iOS (14, 0), TV (16,0), MacCatalyst (14, 0)]
- [Abstract]
-#elif !TVOS
- [Mac (11, 0), iOS (14, 0), NoTV, MacCatalyst (14, 0)]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoMacCatalyst]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (11, 0), iOS (14, 0), TV (16, 0), MacCatalyst (14, 0)]
-#endif
[Export ("newIntersectionFunctionWithDescriptor:completionHandler:")]
void CreateIntersectionFunction (MTLIntersectionFunctionDescriptor descriptor, Action completionHandler);
#if NET
-#if XAMCORE_5_0
- [Mac (11, 0), iOS (14, 0), TV (16,0), MacCatalyst (14, 0)]
- [Abstract]
-#elif !TVOS
- [Mac (11, 0), iOS (14, 0), NoTV, MacCatalyst (14, 0)]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoMacCatalyst]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (11, 0), iOS (14, 0), TV (16, 0), MacCatalyst (14, 0)]
-#endif
[Export ("newIntersectionFunctionWithDescriptor:error:")]
[return: NullAllowed]
[return: Release]
@@ -3467,6 +3165,10 @@ partial interface MTLCompileOptions : NSCopying {
NSDictionary PreprocessorMacros { get; set; }
#endif
+ [Deprecated (PlatformName.iOS, 18, 0, message: "Use 'MathMode' instead.")]
+ [Deprecated (PlatformName.MacCatalyst, 18, 0, message: "Use 'MathMode' instead.")]
+ [Deprecated (PlatformName.MacOSX, 15, 0, message: "Use 'MathMode' instead.")]
+ [Deprecated (PlatformName.TvOS, 18, 0, message: "Use 'MathMode' instead.")]
[Export ("fastMathEnabled")]
bool FastMathEnabled { get; set; }
@@ -3509,6 +3211,18 @@ partial interface MTLCompileOptions : NSCopying {
[Mac (13, 3), iOS (16, 4), MacCatalyst (16, 4), TV (16, 4)]
[Export ("maxTotalThreadsPerThreadgroup")]
nuint MaxTotalThreadsPerThreadgroup { get; set; }
+
+ [TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)]
+ [Export ("mathMode")]
+ MTLMathMode MathMode { get; set; }
+
+ [TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)]
+ [Export ("mathFloatingPointFunctions")]
+ MTLMathFloatingPointFunctions MathFloatingPointFunctions { get; set; }
+
+ [TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)]
+ [Export ("enableLogging")]
+ bool EnableLogging { get; set; }
}
/// Configures a stencil test operation.
@@ -4065,32 +3779,16 @@ partial interface MTLRenderCommandEncoder : MTLCommandEncoder {
void ExecuteCommands (IMTLIndirectCommandBuffer indirectCommandbuffer, IMTLBuffer indirectRangeBuffer, nuint indirectBufferOffset);
#if NET
-
-#if MONOMAC || __MACCATALYST__
- [NoiOS, NoTV, MacCatalyst (15, 0)]
- [Abstract]
-#else
- [iOS (16,0), TV (16,0), NoMacCatalyst, NoMac]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[iOS (16, 0), TV (16, 0), MacCatalyst (15, 0)]
-#endif
[Export ("memoryBarrierWithScope:afterStages:beforeStages:")]
void MemoryBarrier (MTLBarrierScope scope, MTLRenderStages after, MTLRenderStages before);
#if NET
-
-#if MONOMAC || __MACCATALYST__
- [NoiOS, NoTV, MacCatalyst (15, 0)]
- [Abstract]
-#else
- [iOS (16,0), TV (16,0), NoMacCatalyst, NoMac]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[iOS (16, 0), TV (16, 0), MacCatalyst (15, 0)]
-#endif
[Export ("memoryBarrierWithResources:count:afterStages:beforeStages:")]
void MemoryBarrier (IMTLResource [] resources, nuint count, MTLRenderStages after, MTLRenderStages before);
@@ -4221,19 +3919,9 @@ partial interface MTLRenderCommandEncoder : MTLCommandEncoder {
void SetThreadgroupMemoryLength (nuint length, nuint offset, nuint index);
#if NET
-#if XAMCORE_5_0
- [MacCatalyst (13, 4), TV (16,0), iOS (13, 0)]
- [Abstract]
-#elif !TVOS
- [MacCatalyst (13, 4), NoTV, iOS (13, 0)]
- [Abstract]
-#else
- [NoMacCatalyst, TV (16,0), NoiOS, NoMac]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[MacCatalyst (13, 4), TV (16, 0), iOS (13, 0)]
-#endif
[Export ("setVertexAmplificationCount:viewMappings:")]
void SetVertexAmplificationCount (nuint count, MTLVertexAmplificationViewMapping viewMappings);
@@ -4282,459 +3970,303 @@ partial interface MTLRenderCommandEncoder : MTLCommandEncoder {
#endif
#if NET
-#if XAMCORE_5_0
- [Mac (12, 0), iOS (15, 0), TV (16,0), MacCatalyst (15, 0), NoWatch]
- [Abstract]
-#elif !TVOS
- [Mac (12, 0), iOS (15, 0), NoTV, MacCatalyst (15, 0), NoWatch]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoMacCatalyst, NoWatch]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (12, 0), iOS (15, 0), TV (16, 0), MacCatalyst (15, 0), NoWatch]
-#endif
[Export ("setVertexVisibleFunctionTable:atBufferIndex:")]
void SetVertexVisibleFunctionTable ([NullAllowed] IMTLVisibleFunctionTable functionTable, nuint bufferIndex);
#if NET
-#if XAMCORE_5_0
- [Mac (12, 0), iOS (15, 0), TV (16,0), MacCatalyst (15, 0), NoWatch]
- [Abstract]
-#elif !TVOS
- [Mac (12, 0), iOS (15, 0), NoTV, MacCatalyst (15, 0), NoWatch]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoMacCatalyst, NoWatch]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (12, 0), iOS (15, 0), TV (16, 0), MacCatalyst (15, 0), NoWatch]
-#endif
[Export ("setVertexVisibleFunctionTables:withBufferRange:")]
void SetVertexVisibleFunctionTables (IMTLVisibleFunctionTable [] functionTables, NSRange range);
#if NET
-#if XAMCORE_5_0
- [Mac (12, 0), iOS (15, 0), TV (16,0), MacCatalyst (15, 0), NoWatch]
- [Abstract]
-#elif !TVOS
- [Mac (12, 0), iOS (15, 0), NoTV, MacCatalyst (15, 0), NoWatch]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoMacCatalyst, NoWatch]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (12, 0), iOS (15, 0), TV (16, 0), MacCatalyst (15, 0), NoWatch]
-#endif
[Export ("setVertexIntersectionFunctionTable:atBufferIndex:")]
void SetVertexIntersectionFunctionTable ([NullAllowed] IMTLIntersectionFunctionTable intersectionFunctionTable, nuint bufferIndex);
#if NET
-#if XAMCORE_5_0
- [Mac (12, 0), iOS (15, 0), TV (16,0), MacCatalyst (15, 0), NoWatch]
- [Abstract]
-#elif !TVOS
- [Mac (12, 0), iOS (15, 0), NoTV, MacCatalyst (15, 0), NoWatch]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoMacCatalyst, NoWatch]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (12, 0), iOS (15, 0), TV (16, 0), MacCatalyst (15, 0), NoWatch]
-#endif
[Export ("setVertexIntersectionFunctionTables:withBufferRange:")]
void SetVertexIntersectionFunctionTables (IMTLIntersectionFunctionTable [] intersectionFunctionTable, NSRange range);
#if NET
-
-#if XAMCORE_5_0
- [Mac (12, 0), iOS (15, 0), TV (16,0), MacCatalyst (15, 0), NoWatch]
- [Abstract]
-#elif !TVOS
- [Mac (12, 0), iOS (15, 0), NoTV, MacCatalyst (15, 0), NoWatch]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoMacCatalyst, NoWatch]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (12, 0), iOS (15, 0), TV (16, 0), MacCatalyst (15, 0), NoWatch]
-#endif
[Export ("setVertexAccelerationStructure:atBufferIndex:")]
void SetVertexAccelerationStructure ([NullAllowed] IMTLAccelerationStructure accelerationStructure, nuint bufferIndex);
#if NET
-
-#if XAMCORE_5_0
- [Mac (12, 0), iOS (15, 0), TV (16,0), MacCatalyst (15, 0), NoWatch]
- [Abstract]
-#elif !TVOS
- [Mac (12, 0), iOS (15, 0), NoTV, MacCatalyst (15, 0), NoWatch]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoMacCatalyst, NoWatch]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (12, 0), iOS (15, 0), TV (16, 0), MacCatalyst (15, 0), NoWatch]
-#endif
[Export ("setFragmentAccelerationStructure:atBufferIndex:")]
void SetFragmentAccelerationStructure ([NullAllowed] IMTLAccelerationStructure accelerationStructure, nuint bufferIndex);
#if NET
-
-#if XAMCORE_5_0
- [Mac (12, 0), iOS (15, 0), TV (16,0), MacCatalyst (15, 0), NoWatch]
- [Abstract]
-#elif !TVOS
- [Mac (12, 0), iOS (15, 0), NoTV, MacCatalyst (15, 0), NoWatch]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoMacCatalyst, NoWatch]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (12, 0), iOS (15, 0), TV (16, 0), MacCatalyst (15, 0), NoWatch]
-#endif
[Export ("setFragmentIntersectionFunctionTable:atBufferIndex:")]
void SetFragmentIntersectionFunctionTable ([NullAllowed] IMTLIntersectionFunctionTable intersectionFunctionTable, nuint bufferIndex);
#if NET
-
-#if XAMCORE_5_0
- [Mac (12, 0), iOS (15, 0), TV (16,0), MacCatalyst (15, 0), NoWatch]
- [Abstract]
-#elif !TVOS
- [Mac (12, 0), iOS (15, 0), NoTV, MacCatalyst (15, 0), NoWatch]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoMacCatalyst, NoWatch]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (12, 0), iOS (15, 0), TV (16, 0), MacCatalyst (15, 0), NoWatch]
-#endif
[Export ("setFragmentIntersectionFunctionTables:withBufferRange:")]
void SetFragmentIntersectionFunctionTables (IMTLIntersectionFunctionTable [] intersectionFunctionTable, NSRange range);
#if NET
-#if XAMCORE_5_0
- [Mac (12, 0), iOS (15, 0), TV (16,0), MacCatalyst (15, 0), NoWatch]
- [Abstract]
-#elif !TVOS
- [Mac (12, 0), iOS (15, 0), NoTV, MacCatalyst (15, 0), NoWatch]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoMacCatalyst, NoWatch]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (12, 0), iOS (15, 0), TV (16, 0), MacCatalyst (15, 0), NoWatch]
-#endif
[Export ("setFragmentVisibleFunctionTable:atBufferIndex:")]
void SetFragmentVisibleFunctionTable ([NullAllowed] IMTLVisibleFunctionTable functionTable, nuint bufferIndex);
#if NET
-
-#if XAMCORE_5_0
- [Mac (12, 0), iOS (15, 0), TV (16,0), MacCatalyst (15, 0), NoWatch]
- [Abstract]
-#elif !TVOS
- [Mac (12, 0), iOS (15, 0), NoTV, MacCatalyst (15, 0), NoWatch]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoMacCatalyst, NoWatch]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (12, 0), iOS (15, 0), TV (16, 0), MacCatalyst (15, 0), NoWatch]
-#endif
[Export ("setFragmentVisibleFunctionTables:withBufferRange:")]
void SetFragmentVisibleFunctionTables (IMTLVisibleFunctionTable [] functionTables, NSRange range);
#if NET
-
-#if XAMCORE_5_0
- [Mac (12, 0), iOS (15, 0), TV (16,0), MacCatalyst (15, 0), NoWatch]
- [Abstract]
-#elif !TVOS
- [Mac (12, 0), iOS (15, 0), NoTV, MacCatalyst (15, 0), NoWatch]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoMacCatalyst, NoWatch]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (12, 0), iOS (15, 0), TV (16, 0), MacCatalyst (15, 0), NoWatch]
-#endif
[Export ("setTileAccelerationStructure:atBufferIndex:")]
void SetTileAccelerationStructure ([NullAllowed] IMTLAccelerationStructure accelerationStructure, nuint bufferIndex);
#if NET
-#if XAMCORE_5_0
- [Mac (12, 0), iOS (15, 0), TV (16,0), MacCatalyst (15, 0), NoWatch]
- [Abstract]
-#elif !TVOS
- [Mac (12, 0), iOS (15, 0), NoTV, MacCatalyst (15, 0), NoWatch]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoMacCatalyst, NoWatch]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (12, 0), iOS (15, 0), TV (16, 0), MacCatalyst (15, 0), NoWatch]
-#endif
[Export ("setTileIntersectionFunctionTable:atBufferIndex:")]
void SetTileIntersectionFunctionTable ([NullAllowed] IMTLIntersectionFunctionTable intersectionFunctionTable, nuint bufferIndex);
#if NET
-#if XAMCORE_5_0
- [Mac (12, 0), iOS (15, 0), TV (16,0), MacCatalyst (15, 0), NoWatch]
- [Abstract]
-#elif !TVOS
- [Mac (12, 0), iOS (15, 0), NoTV, MacCatalyst (15, 0), NoWatch]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoMacCatalyst, NoWatch]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (12, 0), iOS (15, 0), TV (16, 0), MacCatalyst (15, 0), NoWatch]
-#endif
[Export ("setTileIntersectionFunctionTables:withBufferRange:")]
void SetTileIntersectionFunctionTables (IMTLIntersectionFunctionTable [] intersectionFunctionTable, NSRange range);
#if NET
-#if XAMCORE_5_0
- [Mac (12, 0), iOS (15, 0), TV (16,0), MacCatalyst (15, 0), NoWatch]
- [Abstract]
-#elif !TVOS
- [Mac (12, 0), iOS (15, 0), NoTV, MacCatalyst (15, 0), NoWatch]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoMacCatalyst, NoWatch]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (12, 0), iOS (15, 0), TV (16, 0), MacCatalyst (15, 0), NoWatch]
-#endif
[Export ("setTileVisibleFunctionTable:atBufferIndex:")]
void SetTileVisibleFunctionTable ([NullAllowed] IMTLVisibleFunctionTable functionTable, nuint bufferIndex);
#if NET
-#if XAMCORE_5_0
- [Mac (12, 0), iOS (15, 0), TV (16,0), MacCatalyst (15, 0), NoWatch]
- [Abstract]
-#elif !TVOS
- [Mac (12, 0), iOS (15, 0), NoTV, MacCatalyst (15, 0), NoWatch]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoMacCatalyst, NoWatch]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (12, 0), iOS (15, 0), TV (16, 0), MacCatalyst (15, 0), NoWatch]
-#endif
[Export ("setTileVisibleFunctionTables:withBufferRange:")]
void SetTileVisibleFunctionTables (IMTLVisibleFunctionTable [] functionTables, NSRange range);
[Mac (14, 0), iOS (17, 0), TV (17, 0), MacCatalyst (17, 0), NoWatch]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("setVertexBuffer:offset:attributeStride:atIndex:")]
void SetVertexBuffer ([NullAllowed] IMTLBuffer buffer, nuint offset, nuint stride, nuint index);
[Mac (14, 0), iOS (17, 0), TV (17, 0), MacCatalyst (17, 0), NoWatch]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("setVertexBuffers:offsets:attributeStrides:withRange:")]
void SetVertexBuffers (IntPtr buffers, IntPtr offsets, IntPtr strides, NSRange range);
[Mac (14, 0), iOS (17, 0), TV (17, 0), MacCatalyst (17, 0), NoWatch]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("setVertexBufferOffset:attributeStride:atIndex:")]
void SetVertexBufferOffset (nuint offset, nuint stride, nuint index);
[Mac (14, 0), iOS (17, 0), TV (17, 0), MacCatalyst (17, 0), NoWatch]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("setVertexBytes:length:attributeStride:atIndex:")]
void SetVertexBytes (IntPtr bytes, nuint length, nuint stride, nuint index);
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("drawMeshThreadgroups:threadsPerObjectThreadgroup:threadsPerMeshThreadgroup:")]
void DrawMeshThreadgroups (MTLSize threadgroupsPerGrid, MTLSize threadsPerObjectThreadgroup, MTLSize threadsPerMeshThreadgroup);
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("drawMeshThreadgroupsWithIndirectBuffer:indirectBufferOffset:threadsPerObjectThreadgroup:threadsPerMeshThreadgroup:")]
void DrawMeshThreadgroups (IMTLBuffer indirectBuffer, nuint indirectBufferOffset, MTLSize threadsPerObjectThreadgroup, MTLSize threadsPerMeshThreadgroup);
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("drawMeshThreads:threadsPerObjectThreadgroup:threadsPerMeshThreadgroup:")]
void DrawMeshThreads (MTLSize threadsPerGrid, MTLSize threadsPerObjectThreadgroup, MTLSize threadsPerMeshThreadgroup);
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("setMeshBufferOffset:atIndex:")]
void SetMeshBufferOffset (nuint offset, nuint index);
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("setMeshBuffers:offsets:withRange:")]
void SetMeshBuffers (IntPtr buffers, IntPtr offsets, NSRange range);
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("setMeshTexture:atIndex:")]
void SetMeshTexture ([NullAllowed] IMTLTexture texture, nuint index);
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("setMeshTextures:withRange:")]
void SetMeshTextures (IntPtr textures, NSRange range);
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("setMeshSamplerState:atIndex:")]
void SetMeshSamplerState ([NullAllowed] IMTLSamplerState sampler, nuint index);
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("setMeshSamplerStates:withRange:")]
void SetMeshSamplerStates (IntPtr samplers, NSRange range);
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("setMeshSamplerState:lodMinClamp:lodMaxClamp:atIndex:")]
void SetMeshSamplerState ([NullAllowed] IMTLSamplerState sampler, float lodMinClamp, float lodMaxClamp, nuint index);
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("setMeshSamplerStates:lodMinClamps:lodMaxClamps:withRange:")]
void SetMeshSamplerStates (IntPtr samplers, IntPtr lodMinClamps, IntPtr lodMaxClamps, NSRange range);
[Mac (14, 0), iOS (17, 0), TV (17, 0), MacCatalyst (17, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("setObjectBuffer:offset:atIndex:")]
void SetObjectBuffer (IMTLBuffer buffer, nuint offset, nuint index);
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("setObjectBufferOffset:atIndex:")]
void SetObjectBufferOffset (nuint offset, nuint index);
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("setObjectBuffers:offsets:withRange:")]
void SetObjectBuffers (IntPtr buffers, IntPtr offsets, NSRange range);
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("setObjectBytes:length:atIndex:")]
void SetObjectBytes (IntPtr bytes, nuint length, nuint index);
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("setMeshBuffer:offset:atIndex:")]
void SetMeshBuffer ([NullAllowed] IMTLBuffer buffer, nuint offset, nuint index);
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("setMeshBytes:length:atIndex:")]
void SetMeshBytes (IntPtr bytes, nuint length, nuint index);
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("setObjectSamplerState:atIndex:")]
void SetObjectSamplerState ([NullAllowed] IMTLSamplerState sampler, nuint index);
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("setObjectSamplerState:lodMinClamp:lodMaxClamp:atIndex:")]
void SetObjectSamplerState ([NullAllowed] IMTLSamplerState sampler, float lodMinClamp, float lodMaxClamp, nuint index);
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("setObjectSamplerStates:lodMinClamps:lodMaxClamps:withRange:")]
void SetObjectSamplerStates (IntPtr samplers, IntPtr lodMinClamps, IntPtr lodMaxClamps, NSRange range);
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("setObjectSamplerStates:withRange:")]
void SetObjectSamplerStates (IntPtr samplers, NSRange range);
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("setObjectTexture:atIndex:")]
void SetObjectTexture ([NullAllowed] IMTLTexture texture, nuint index);
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("setObjectTextures:withRange:")]
void SetObjectTextures (IntPtr textures, NSRange range);
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("setObjectThreadgroupMemoryLength:atIndex:")]
void SetObjectThreadgroupMemoryLength (nuint length, nuint index);
@@ -5074,7 +4606,7 @@ interface MTLHeapDescriptor : NSCopying {
[NoWatch]
[MacCatalyst (13, 1)]
[Protocol] // From Apple Docs: Your app does not define classes that implement this protocol. Model is not needed
- interface MTLHeap {
+ interface MTLHeap : MTLAllocation {
[Abstract]
[NullAllowed, Export ("label")]
string Label { get; set; }
@@ -5171,32 +4703,32 @@ interface MTLHeap {
[return: Release]
IMTLTexture CreateTexture (MTLTextureDescriptor descriptor, nuint offset);
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
[Export ("newAccelerationStructureWithSize:")]
[return: NullAllowed, Release]
IMTLAccelerationStructure CreateAccelerationStructure (nuint size);
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
[Export ("newAccelerationStructureWithDescriptor:")]
[return: NullAllowed, Release]
IMTLAccelerationStructure CreateAccelerationStructure (MTLAccelerationStructureDescriptor descriptor);
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
[Export ("newAccelerationStructureWithSize:offset:")]
[return: NullAllowed, Release]
IMTLAccelerationStructure CreateAccelerationStructure (nuint size, nuint offset);
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
[Export ("newAccelerationStructureWithDescriptor:offset:")]
@@ -5213,7 +4745,7 @@ interface IMTLHeap { }
///
[MacCatalyst (13, 1)]
[Protocol] // From Apple Docs: Your app does not define classes that implement this protocol. Model is not needed
- partial interface MTLResource {
+ partial interface MTLResource : MTLAllocation {
[Abstract, Export ("label")]
string Label { get; set; }
@@ -5271,7 +4803,7 @@ partial interface MTLResource {
[Abstract]
#endif
[Export ("allocatedSize")]
- nuint AllocatedSize { get; }
+ new nuint AllocatedSize { get; }
#if NET
[Abstract]
@@ -5371,6 +4903,10 @@ interface MTLComputePipelineDescriptor : NSCopying {
[Mac (12, 0), iOS (15, 0), TV (15, 0), NoWatch, MacCatalyst (15, 0)]
[Export ("preloadedLibraries", ArgumentSemantic.Copy)]
IMTLDynamicLibrary [] PreloadedLibraries { get; set; }
+
+ [TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)]
+ [Export ("shaderValidation")]
+ MTLShaderValidation ShaderValidation { get; set; }
}
[NoWatch]
@@ -5714,88 +5250,39 @@ interface MTLArgumentEncoder {
void SetComputePipelineStates (IMTLComputePipelineState [] pipelines, NSRange range);
#if NET
-#if XAMCORE_5_0
- [Mac (11, 0), iOS (14, 0), TV (16,0), MacCatalyst (14, 0)]
- [Abstract]
-#elif !TVOS
- [Mac (11, 0), iOS (14, 0), NoTV, MacCatalyst (14, 0)]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoMacCatalyst]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (11, 0), iOS (14, 0), TV (16, 0), MacCatalyst (14, 0)]
-#endif
[Export ("setAccelerationStructure:atIndex:")]
void SetAccelerationStructure ([NullAllowed] IMTLAccelerationStructure accelerationStructure, nuint index);
#if NET
-
-#if XAMCORE_5_0
- [Mac (11, 0), iOS (14, 0), TV (16,0), MacCatalyst (14, 0)]
- [Abstract]
-#elif !TVOS
- [Mac (11, 0), iOS (14, 0), NoTV, MacCatalyst (14, 0)]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoMacCatalyst]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (11, 0), iOS (14, 0), TV (16, 0), MacCatalyst (14, 0)]
-#endif
[Export ("setVisibleFunctionTable:atIndex:")]
void SetVisibleFunctionTable ([NullAllowed] IMTLVisibleFunctionTable visibleFunctionTable, nuint index);
#if NET
-#if XAMCORE_5_0
- [Mac (11, 0), iOS (14, 0), TV (16,0), MacCatalyst (14, 0)]
- [Abstract]
-#elif !TVOS
- [Mac (11, 0), iOS (14, 0), NoTV, MacCatalyst (14, 0)]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoMacCatalyst]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (11, 0), iOS (14, 0), TV (16, 0), MacCatalyst (14, 0)]
-#endif
[Export ("setVisibleFunctionTables:withRange:")]
void SetVisibleFunctionTables (IMTLVisibleFunctionTable [] visibleFunctionTables, NSRange range);
+
#if NET
-#if XAMCORE_5_0
- [Mac (11, 0), iOS (14, 0), TV (16,0), MacCatalyst (14, 0)]
- [Abstract]
-#elif !TVOS
- [Mac (11, 0), iOS (14, 0), NoTV, MacCatalyst (14, 0)]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoMacCatalyst]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (11, 0), iOS (14, 0), TV (16, 0), MacCatalyst (14, 0)]
-#endif
[Export ("setIntersectionFunctionTable:atIndex:")]
void SetIntersectionFunctionTable ([NullAllowed] IMTLIntersectionFunctionTable intersectionFunctionTable, nuint index);
+
#if NET
-#if XAMCORE_5_0
- [Mac (11, 0), iOS (14, 0), TV (16,0), MacCatalyst (14, 0)]
- [Abstract]
-#elif !TVOS
- [Mac (11, 0), iOS (14, 0), NoTV, MacCatalyst (14, 0)]
- [Abstract]
-#else
- [NoMac, NoiOS, TV (16,0), NoMacCatalyst]
+ [Abstract (GenerateExtensionMethod = true)]
#endif
-
-#else
[Mac (11, 0), iOS (14, 0), TV (16, 0), MacCatalyst (14, 0)]
-#endif
[Export ("setIntersectionFunctionTables:withRange:")]
void SetIntersectionFunctionTables (IMTLIntersectionFunctionTable [] intersectionFunctionTables, NSRange range);
@@ -5865,6 +5352,20 @@ interface MTLBinaryArchive {
[Mac (12, 0), iOS (15, 0), TV (15, 0), MacCatalyst (15, 0), NoWatch]
[Export ("addFunctionWithDescriptor:library:error:")]
bool AddFunctionWithDescriptor (MTLFunctionDescriptor descriptor, IMTLLibrary library, [NullAllowed] out NSError error);
+
+#if NET
+ [Abstract]
+#endif
+ [TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)]
+ [Export ("addMeshRenderPipelineFunctionsWithDescriptor:error:")]
+ bool AddMeshRenderPipelineFunctions (MTLMeshRenderPipelineDescriptor descriptor, out NSError error);
+
+#if NET
+ [Abstract]
+#endif
+ [TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)]
+ [Export ("addLibraryWithDescriptor:error:")]
+ bool AddLibrary (MTLStitchedLibraryDescriptor descriptor, out NSError error);
}
@@ -5920,6 +5421,10 @@ interface MTLTileRenderPipelineDescriptor : NSCopying {
[Mac (12, 0), iOS (15, 0), TV (15, 0), MacCatalyst (15, 0), NoWatch]
[NullAllowed, Export ("linkedFunctions", ArgumentSemantic.Copy)]
MTLLinkedFunctions LinkedFunctions { get; set; }
+
+ [TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)]
+ [Export ("shaderValidation")]
+ MTLShaderValidation ShaderValidation { get; set; }
}
interface IMTLEvent { }
@@ -6048,49 +5553,49 @@ interface MTLIndirectRenderCommand {
[Export ("setVertexBuffer:offset:attributeStride:atIndex:")]
void SetVertexBuffer (IMTLBuffer buffer, nuint offset, nuint stride, nuint index);
- [NoMac, iOS (17, 0), NoTV, MacCatalyst (17, 0)]
+ [Mac (14, 0), iOS (17, 0), NoTV, MacCatalyst (17, 0)]
#if NET
[Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("setObjectThreadgroupMemoryLength:atIndex:")]
void SetObjectThreadgroupMemoryLength (nuint length, nuint index);
- [NoMac, iOS (17, 0), NoTV, MacCatalyst (17, 0)]
+ [Mac (14, 0), iOS (17, 0), NoTV, MacCatalyst (17, 0)]
#if NET
[Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("setObjectBuffer:offset:atIndex:")]
void SetObjectBuffer (IMTLBuffer buffer, nuint offset, nuint index);
- [NoMac, iOS (17, 0), NoTV, MacCatalyst (17, 0)]
+ [Mac (14, 0), iOS (17, 0), NoTV, MacCatalyst (17, 0)]
#if NET
[Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("setMeshBuffer:offset:atIndex:")]
void SetMeshBuffer (IMTLBuffer buffer, nuint offset, nuint index);
- [NoMac, iOS (17, 0), NoTV, MacCatalyst (17, 0)]
+ [Mac (14, 0), iOS (17, 0), NoTV, MacCatalyst (17, 0)]
#if NET
[Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("drawMeshThreadgroups:threadsPerObjectThreadgroup:threadsPerMeshThreadgroup:")]
void DrawMeshThreadgroups (MTLSize threadgroupsPerGrid, MTLSize threadsPerObjectThreadgroup, MTLSize threadsPerMeshThreadgroup);
- [NoMac, iOS (17, 0), NoTV, MacCatalyst (17, 0)]
+ [Mac (14, 0), iOS (17, 0), NoTV, MacCatalyst (17, 0)]
#if NET
[Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("drawMeshThreads:threadsPerObjectThreadgroup:threadsPerMeshThreadgroup:")]
void DrawMeshThreads (MTLSize threadsPerGrid, MTLSize threadsPerObjectThreadgroup, MTLSize threadsPerMeshThreadgroup);
- [NoMac, iOS (17, 0), NoTV, MacCatalyst (17, 0)]
+ [Mac (14, 0), iOS (17, 0), NoTV, MacCatalyst (17, 0)]
#if NET
[Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("setBarrier")]
void SetBarrier ();
- [NoMac, iOS (17, 0), NoTV, MacCatalyst (17, 0)]
+ [Mac (14, 0), iOS (17, 0), NoTV, MacCatalyst (17, 0)]
#if NET
[Abstract (GenerateExtensionMethod = true)]
#endif
@@ -6177,8 +5682,8 @@ interface MTLIndirectCommandBuffer : MTLResource {
IMTLIndirectComputeCommand GetIndirectComputeCommand (nuint commandIndex);
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("gpuResourceID")]
MTLResourceId GpuResourceID { get; }
@@ -6384,8 +5889,9 @@ interface MTLResourceStateCommandEncoder : MTLCommandEncoder {
void Wait (IMTLFence fence);
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+ // @optional in macOS and Mac Catalyst
+#if NET && !__MACOS__ && !__MACCATALYST__
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("moveTextureMappingsFromTexture:sourceSlice:sourceLevel:sourceOrigin:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin:")]
void MoveTextureMappings (IMTLTexture sourceTexture, nuint sourceSlice, nuint sourceLevel, MTLOrigin sourceOrigin, MTLSize sourceSize, IMTLTexture destinationTexture, nuint destinationSlice, nuint destinationLevel, MTLOrigin destinationOrigin);
@@ -6456,8 +5962,8 @@ interface MTLIndirectComputeCommand {
void SetImageblock (nuint width, nuint height);
[Mac (14, 0), iOS (17, 0), TV (17, 0), MacCatalyst (17, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("setKernelBuffer:offset:attributeStride:atIndex:")]
void SetKernelBuffer (IMTLBuffer buffer, nuint offset, nuint stride, nuint index);
@@ -6663,6 +6169,10 @@ interface MTLAccelerationStructureTriangleGeometryDescriptor {
[Mac (13, 0), iOS (16, 0), MacCatalyst (16, 0), TV (16, 0)]
[Export ("transformationMatrixBufferOffset")]
nuint TransformationMatrixBufferOffset { get; set; }
+
+ [Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0), NoTV]
+ [Export ("transformationMatrixLayout")]
+ MTLMatrixLayout TransformationMatrixLayout { get; set; }
}
[Mac (11, 0), iOS (14, 0), TV (14, 0)]
@@ -6723,6 +6233,11 @@ interface MTLCommandBufferDescriptor : NSCopying {
[Export ("errorOptions", ArgumentSemantic.Assign)]
MTLCommandBufferErrorOption ErrorOptions { get; set; }
+
+ [TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)]
+ [Export ("logState", ArgumentSemantic.Retain), NullAllowed]
+ IMTLLogState LogState { get; set; }
+
}
[Mac (11, 0), iOS (14, 0), TV (14, 0)]
@@ -6831,6 +6346,18 @@ interface MTLInstanceAccelerationStructureDescriptor {
[Mac (12, 0), iOS (15, 0), NoWatch, MacCatalyst (15, 0)]
[Export ("motionTransformCount")]
nuint MotionTransformCount { get; set; }
+
+ [Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0), NoTV]
+ [Export ("instanceTransformationMatrixLayout")]
+ MTLMatrixLayout InstanceTransformationMatrixLayout { get; set; }
+
+ [Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0), NoTV]
+ [Export ("motionTransformType")]
+ MTLTransformType MotionTransformType { get; set; }
+
+ [Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0), NoTV]
+ [Export ("motionTransformStride")]
+ nuint MotionTransformStride { get; set; }
}
[Mac (11, 0), iOS (14, 0), TV (16, 0)]
@@ -7095,8 +6622,8 @@ interface MTLAccelerationStructureCommandEncoder : MTLCommandEncoder {
void WriteCompactedAccelerationStructureSize (IMTLAccelerationStructure accelerationStructure, IMTLBuffer buffer, nuint offset, MTLDataType sizeDataType);
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("refitAccelerationStructure:descriptor:destination:scratchBuffer:scratchBufferOffset:options:")]
void RefitAccelerationStructure (IMTLAccelerationStructure sourceAccelerationStructure, MTLAccelerationStructureDescriptor descriptor, [NullAllowed] IMTLAccelerationStructure destinationAccelerationStructure, [NullAllowed] IMTLBuffer scratchBuffer, nuint scratchBufferOffset, MTLAccelerationStructureRefitOptions options);
@@ -7118,8 +6645,8 @@ interface MTLVisibleFunctionTable : MTLResource {
void SetFunctions (IMTLFunctionHandle [] functions, NSRange range);
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("gpuResourceID")]
MTLResourceId GpuResourceId { get; }
@@ -7163,21 +6690,21 @@ interface MTLIntersectionFunctionTable : MTLResource {
[Export ("setVisibleFunctionTables:withBufferRange:")]
void SetVisibleFunctionTables (IMTLVisibleFunctionTable [] functionTables, NSRange bufferRange);
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("setOpaqueCurveIntersectionFunctionWithSignature:atIndex:")]
void SetOpaqueCurveIntersectionFunction (MTLIntersectionFunctionSignature signature, nuint index);
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("setOpaqueCurveIntersectionFunctionWithSignature:withRange:")]
void SetOpaqueCurveIntersectionFunction (MTLIntersectionFunctionSignature signature, NSRange range);
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
-#if XAMCORE_5_0
- [Abstract]
+#if NET
+ [Abstract (GenerateExtensionMethod = true)]
#endif
[Export ("gpuResourceID")]
MTLResourceId GpuResourceId { get; }
@@ -7230,7 +6757,7 @@ interface IMTLLogContainer { }
[Mac (11, 0), iOS (14, 0), TV (14, 0)]
[MacCatalyst (14, 0)]
[Protocol]
- interface MTLLogContainer {
+ interface MTLLogContainer : INSFastEnumeration {
}
@@ -7286,6 +6813,14 @@ interface MTLStitchedLibraryDescriptor : NSCopying {
[Export ("functions", ArgumentSemantic.Copy)]
IMTLFunction [] Functions { get; set; }
+
+ [TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)]
+ [Export ("binaryArchives", ArgumentSemantic.Copy)]
+ IMTLBinaryArchive [] BinaryArchives { get; set; }
+
+ [TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)]
+ [Export ("options")]
+ MTLStitchedLibraryOptions Options { get; set; }
}
[Mac (12, 0), iOS (15, 0), TV (16, 0), MacCatalyst (15, 0), NoWatch]
@@ -7350,7 +6885,7 @@ interface MTLFunctionStitchingGraph : NSCopying {
[Export ("nodes", ArgumentSemantic.Copy)]
MTLFunctionStitchingFunctionNode [] Nodes { get; set; }
- [NullAllowed, Export ("outputNode", ArgumentSemantic.Copy)]
+ [NullAllowed, Export ("outputNode", ArgumentSemantic.Retain)]
MTLFunctionStitchingFunctionNode OutputNode { get; set; }
[Export ("attributes", ArgumentSemantic.Copy)]
@@ -7413,6 +6948,10 @@ interface MTLAccelerationStructureMotionTriangleGeometryDescriptor {
[Mac (13, 0), iOS (16, 0), MacCatalyst (16, 0)]
[Export ("transformationMatrixBufferOffset")]
nuint TransformationMatrixBufferOffset { get; set; }
+
+ [Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0), NoTV]
+ [Export ("transformationMatrixLayout")]
+ MTLMatrixLayout TransformationMatrixLayout { get; set; }
}
[Mac (12, 0), iOS (15, 0), TV (16, 0), MacCatalyst (15, 0), NoWatch]
@@ -7682,6 +7221,18 @@ interface MTLIndirectInstanceAccelerationStructureDescriptor {
[Static]
[Export ("descriptor")]
MTLIndirectInstanceAccelerationStructureDescriptor GetDescriptor ();
+
+ [Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0), NoTV]
+ [Export ("instanceTransformationMatrixLayout")]
+ MTLMatrixLayout InstanceTransformationMatrixLayout { get; set; }
+
+ [Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0), NoTV]
+ [Export ("motionTransformType")]
+ MTLTransformType MotionTransformType { get; set; }
+
+ [Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0), NoTV]
+ [Export ("motionTransformStride")]
+ nuint MotionTransformStride { get; set; }
}
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
@@ -7768,6 +7319,14 @@ interface MTLMeshRenderPipelineDescriptor : NSCopying {
[Export ("reset")]
void Reset ();
+
+ [TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)]
+ [Export ("binaryArchives", ArgumentSemantic.Copy), NullAllowed]
+ IMTLBinaryArchive [] BinaryArchives { get; set; }
+
+ [TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)]
+ [Export ("shaderValidation")]
+ MTLShaderValidation ShaderValidation { get; set; }
}
[Mac (13, 0), iOS (16, 0), TV (16, 0), MacCatalyst (16, 0)]
@@ -7816,5 +7375,210 @@ interface MTLThreadgroupBinding : MTLBinding {
nuint ThreadgroupMemoryDataSize { get; }
}
+ [Native]
+ [Mac (15, 0), NoTV, iOS (18, 0), MacCatalyst (18, 0)]
+ enum MTLMatrixLayout : long {
+ ColumnMajor = 0,
+ RowMajor = 1,
+ }
+
+ [Native]
+ [Mac (15, 0), NoTV, iOS (18, 0), MacCatalyst (18, 0)]
+ enum MTLTransformType : long {
+ PackedFloat4x3 = 0,
+ Component = 1,
+ }
+
+ [Protocol (BackwardsCompatibleCodeGeneration = false)]
+ [Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0), TV (18, 0)]
+ interface MTLAllocation {
+ [Abstract]
+ [Export ("allocatedSize")]
+ nuint AllocatedSize { get; }
+ }
+
+ interface IMTLAllocation { }
+
+ [Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0), TV (18, 0)]
+ [BaseType (typeof (NSObject))]
+ interface MTLCommandQueueDescriptor : NSCopying {
+ [Export ("maxCommandBufferCount")]
+ nuint MaxCommandBufferCount { get; set; }
+
+ [Export ("logState", ArgumentSemantic.Retain), NullAllowed]
+ IMTLLogState LogState { get; set; }
+ }
+
+ [TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)]
+ [BackingFieldType (typeof (nint))]
+ enum NSDeviceCertification {
+ [Field ("NSDeviceCertificationiPhonePerformanceGaming")]
+ iPhonePerformanceGaming,
+ }
+
+ [TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)]
+ [BackingFieldType (typeof (nint))]
+ enum NSProcessPerformanceProfile {
+ [Field ("NSProcessPerformanceProfileDefault")]
+ Default,
+
+ [Field ("NSProcessPerformanceProfileSustained")]
+ Sustained,
+ }
+
+ [TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)]
+ [Category]
+ [BaseType (typeof (NSProcessInfo))]
+ interface NSProcessInfo_NSDeviceCertification {
+ [Export ("isDeviceCertifiedFor:")]
+ bool IsDeviceCertifiedFor (NSDeviceCertification performanceTier);
+
+ [Export ("hasPerformanceProfile:")]
+ bool HasPerformanceProfile (NSProcessPerformanceProfile performanceProfile);
+ }
+
+ [Flags]
+ [Native]
+ [Mac (15, 0), TV (18, 0), iOS (18, 0), MacCatalyst (18, 0)]
+ enum MTLStitchedLibraryOptions : ulong {
+ None = 0,
+ FailOnBinaryArchiveMiss = 1 << 0,
+ StoreLibraryInMetalPipelinesScript = 1 << 1,
+ }
+
+ [Native]
+ [Mac (15, 0), TV (18, 0), iOS (18, 0), MacCatalyst (18, 0)]
+ enum MTLMathMode : long {
+ Safe = 0,
+ Relaxed = 1,
+ Fast = 2,
+ }
+
+ [Native]
+ [Mac (15, 0), TV (18, 0), iOS (18, 0), MacCatalyst (18, 0)]
+ enum MTLMathFloatingPointFunctions : long {
+ Fast = 0,
+ Precise = 1,
+ }
+
+ [Native]
+ [Mac (15, 0), TV (18, 0), iOS (18, 0), MacCatalyst (18, 0)]
+ enum MTLLogLevel : long {
+ Undefined,
+ Debug,
+ Info,
+ Notice,
+ Error,
+ Fault,
+ }
+
+ delegate void MTLLogStateLogHandler ([NullAllowed] string subSystem, [NullAllowed] string category, MTLLogLevel logLevel, string message);
+
+ [Protocol (BackwardsCompatibleCodeGeneration = false)]
+ [Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0), TV (18, 0)]
+ interface MTLLogState {
+ [Abstract]
+ [Export ("addLogHandler:")]
+ void AddLogHandler (MTLLogStateLogHandler handler);
+ }
+
+ interface IMTLLogState { }
+
+ [Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0), TV (18, 0)]
+ [BaseType (typeof (NSObject))]
+ interface MTLLogStateDescriptor : NSCopying {
+ [Export ("level", ArgumentSemantic.Assign)]
+ MTLLogLevel Level { get; set; }
+
+ [Export ("bufferSize", ArgumentSemantic.Assign)]
+ nint BufferSize { get; set; }
+ }
+
+ [Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0), TV (18, 0)]
+ [ErrorDomain ("MTLLogStateErrorDomain")]
+ [Native]
+ enum MTLLogStateError : ulong {
+ InvalidSize = 1,
+ Invalid = 2,
+ }
+
+ [Native]
+ [Mac (15, 0), TV (18, 0), iOS (18, 0), MacCatalyst (18, 0)]
+ enum MTLShaderValidation : long {
+ Default = 0,
+ Enabled = 1,
+ Disabled = 2,
+ }
+
+ [Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0), TV (18, 0)]
+ [BaseType (typeof (NSObject))]
+ interface MTLResidencySetDescriptor : NSCopying {
+ [Export ("label", ArgumentSemantic.Copy), NullAllowed]
+ string Label { get; set; }
+
+ [Export ("initialCapacity")]
+ nuint InitialCapacity { get; set; }
+ }
+
+ [Protocol (BackwardsCompatibleCodeGeneration = false)]
+ [Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0), TV (18, 0)]
+ interface MTLResidencySet {
+ [Abstract]
+ [Export ("device")]
+ IMTLDevice Device { get; }
+
+ [Abstract]
+ [Export ("label"), NullAllowed]
+ string Label { get; }
+
+ [Abstract]
+ [Export ("allocatedSize")]
+ ulong AllocatedSize { get; }
+
+ [Abstract]
+ [Export ("requestResidency")]
+ void RequestResidency ();
+
+ [Abstract]
+ [Export ("endResidency")]
+ void EndResidency ();
+
+ [Abstract]
+ [Export ("addAllocation:")]
+ void AddAllocation (IMTLAllocation allocation);
+
+ [Abstract]
+ [Export ("addAllocations:count:")]
+ void AddAllocations (IntPtr allocations, nuint count);
+
+ [Abstract]
+ [Export ("removeAllocation:")]
+ void RemoveAllocation (IMTLAllocation allocation);
+
+ [Abstract]
+ [Export ("removeAllocations:count:")]
+ void RemoveAllocations (IntPtr allocations, nuint count);
+
+ [Abstract]
+ [Export ("removeAllAllocations")]
+ void RemoveAllAllocations ();
+
+ [Abstract]
+ [Export ("containsAllocation:")]
+ bool ContainsAllocation (IMTLAllocation allocation);
+
+ [Abstract]
+ [Export ("allAllocations", ArgumentSemantic.Copy)]
+ IMTLAllocation [] AllAllocations { get; }
+
+ [Abstract]
+ [Export ("allocationCount")]
+ nuint AllocationCount { get; }
+
+ [Abstract]
+ [Export ("commit")]
+ void Commit ();
+ }
+ interface IMTLResidencySet { }
}
diff --git a/tests/cecil-tests/ApiTest.KnownFailures.cs b/tests/cecil-tests/ApiTest.KnownFailures.cs
index c254e2d5bb92..e40b54ea044d 100644
--- a/tests/cecil-tests/ApiTest.KnownFailures.cs
+++ b/tests/cecil-tests/ApiTest.KnownFailures.cs
@@ -54,6 +54,7 @@ public partial class ApiTest {
"The field 'Metal.MTLLanguageVersion Metal.MTLLanguageVersion::v2_4' has incorrect capitalization: first letter is not upper case.",
"The field 'Metal.MTLLanguageVersion Metal.MTLLanguageVersion::v3_0' has incorrect capitalization: first letter is not upper case.",
"The field 'Metal.MTLLanguageVersion Metal.MTLLanguageVersion::v3_1' has incorrect capitalization: first letter is not upper case.",
+ "The field 'Metal.MTLLanguageVersion Metal.MTLLanguageVersion::v3_2' has incorrect capitalization: first letter is not upper case.",
"The field 'Metal.MTLTextureType Metal.MTLTextureType::k1D' has incorrect capitalization: first letter is not upper case.",
"The field 'Metal.MTLTextureType Metal.MTLTextureType::k1DArray' has incorrect capitalization: first letter is not upper case.",
"The field 'Metal.MTLTextureType Metal.MTLTextureType::k2D' has incorrect capitalization: first letter is not upper case.",
@@ -64,6 +65,7 @@ public partial class ApiTest {
"The field 'Metal.MTLTextureType Metal.MTLTextureType::kCube' has incorrect capitalization: first letter is not upper case.",
"The field 'Metal.MTLTextureType Metal.MTLTextureType::kCubeArray' has incorrect capitalization: first letter is not upper case.",
"The field 'Metal.MTLTextureType Metal.MTLTextureType::kTextureBuffer' has incorrect capitalization: first letter is not upper case.",
+ "The field 'Metal.NSDeviceCertification Metal.NSDeviceCertification::iPhonePerformanceGaming' has incorrect capitalization: first letter is not upper case.",
"The field 'MetalPerformanceShadersGraph.MPSGraphDeploymentPlatform MetalPerformanceShadersGraph.MPSGraphDeploymentPlatform::iOS' has incorrect capitalization: first letter is not upper case.",
"The field 'MetalPerformanceShadersGraph.MPSGraphDeploymentPlatform MetalPerformanceShadersGraph.MPSGraphDeploymentPlatform::macOS' has incorrect capitalization: first letter is not upper case.",
"The field 'MetalPerformanceShadersGraph.MPSGraphDeploymentPlatform MetalPerformanceShadersGraph.MPSGraphDeploymentPlatform::tvOS' has incorrect capitalization: first letter is not upper case.",
diff --git a/tests/cecil-tests/AttributeTest.cs b/tests/cecil-tests/AttributeTest.cs
index ba399a76c344..c6775c47e9e0 100644
--- a/tests/cecil-tests/AttributeTest.cs
+++ b/tests/cecil-tests/AttributeTest.cs
@@ -288,8 +288,6 @@ static HashSet IgnoreElementsThatDoNotExistInThatAssembly {
"SpriteKit.SKView.EncodeTo (Foundation.NSCoder)",
// These methods have different optional/required semantics between platforms.
- "Metal.MTLBlitCommandEncoder_Extensions.GetTextureAccessCounters (Metal.IMTLBlitCommandEncoder, Metal.IMTLTexture, Metal.MTLRegion, System.UIntPtr, System.UIntPtr, System.Boolean, Metal.IMTLBuffer, System.UIntPtr)",
- "Metal.MTLBlitCommandEncoder_Extensions.ResetTextureAccessCounters (Metal.IMTLBlitCommandEncoder, Metal.IMTLTexture, Metal.MTLRegion, System.UIntPtr, System.UIntPtr)",
"PassKit.PKPaymentAuthorizationControllerDelegate_Extensions.GetPresentationWindow (PassKit.IPKPaymentAuthorizationControllerDelegate, PassKit.PKPaymentAuthorizationController)",
"Metal.MTLTextureWrapper.FirstMipmapInTail",
"Metal.MTLTextureWrapper.IsSparse",
diff --git a/tests/cecil-tests/Documentation.KnownFailures.txt b/tests/cecil-tests/Documentation.KnownFailures.txt
index 035137e5eba5..983026462ad1 100644
--- a/tests/cecil-tests/Documentation.KnownFailures.txt
+++ b/tests/cecil-tests/Documentation.KnownFailures.txt
@@ -14368,7 +14368,9 @@ F:Metal.MTLFeatureSet.tvOS_GPUFamily2_v1
F:Metal.MTLFeatureSet.tvOS_GPUFamily2_v2
F:Metal.MTLFunctionLogType.Validation
F:Metal.MTLFunctionOptions.CompileToBinary
+F:Metal.MTLFunctionOptions.FailOnBinaryArchiveMiss
F:Metal.MTLFunctionOptions.None
+F:Metal.MTLFunctionOptions.StoreFunctionInMetalPipelinesScript
F:Metal.MTLFunctionOptions.StoreFunctionInMetalScript
F:Metal.MTLFunctionType.Fragment
F:Metal.MTLFunctionType.Intersection
@@ -14449,6 +14451,7 @@ F:Metal.MTLLanguageVersion.v2_3
F:Metal.MTLLanguageVersion.v2_4
F:Metal.MTLLanguageVersion.v3_0
F:Metal.MTLLanguageVersion.v3_1
+F:Metal.MTLLanguageVersion.v3_2
F:Metal.MTLLibraryError.CompileFailure
F:Metal.MTLLibraryError.CompileWarning
F:Metal.MTLLibraryError.FileNotFound
@@ -14462,6 +14465,21 @@ F:Metal.MTLLibraryType.Executable
F:Metal.MTLLoadAction.Clear
F:Metal.MTLLoadAction.DontCare
F:Metal.MTLLoadAction.Load
+F:Metal.MTLLogLevel.Debug
+F:Metal.MTLLogLevel.Error
+F:Metal.MTLLogLevel.Fault
+F:Metal.MTLLogLevel.Info
+F:Metal.MTLLogLevel.Notice
+F:Metal.MTLLogLevel.Undefined
+F:Metal.MTLLogStateError.Invalid
+F:Metal.MTLLogStateError.InvalidSize
+F:Metal.MTLMathFloatingPointFunctions.Fast
+F:Metal.MTLMathFloatingPointFunctions.Precise
+F:Metal.MTLMathMode.Fast
+F:Metal.MTLMathMode.Relaxed
+F:Metal.MTLMathMode.Safe
+F:Metal.MTLMatrixLayout.ColumnMajor
+F:Metal.MTLMatrixLayout.RowMajor
F:Metal.MTLMotionBorderMode.Clamp
F:Metal.MTLMotionBorderMode.Vanish
F:Metal.MTLMultisampleDepthResolveFilter.Max
@@ -14479,6 +14497,7 @@ F:Metal.MTLPatchType.None
F:Metal.MTLPatchType.Quad
F:Metal.MTLPatchType.Triangle
F:Metal.MTLPipelineOption.ArgumentInfo
+F:Metal.MTLPipelineOption.BindingInfo
F:Metal.MTLPipelineOption.BufferTypeInfo
F:Metal.MTLPipelineOption.FailOnBinaryArchiveMiss
F:Metal.MTLPipelineOption.None
@@ -14678,6 +14697,9 @@ F:Metal.MTLScissorRect.Height
F:Metal.MTLScissorRect.Width
F:Metal.MTLScissorRect.X
F:Metal.MTLScissorRect.Y
+F:Metal.MTLShaderValidation.Default
+F:Metal.MTLShaderValidation.Disabled
+F:Metal.MTLShaderValidation.Enabled
F:Metal.MTLSize.Depth
F:Metal.MTLSize.Height
F:Metal.MTLSize.Width
@@ -14713,6 +14735,9 @@ F:Metal.MTLStepFunction.ThreadPositionInGridX
F:Metal.MTLStepFunction.ThreadPositionInGridXIndexed
F:Metal.MTLStepFunction.ThreadPositionInGridY
F:Metal.MTLStepFunction.ThreadPositionInGridYIndexed
+F:Metal.MTLStitchedLibraryOptions.FailOnBinaryArchiveMiss
+F:Metal.MTLStitchedLibraryOptions.None
+F:Metal.MTLStitchedLibraryOptions.StoreLibraryInMetalPipelinesScript
F:Metal.MTLStorageMode.Managed
F:Metal.MTLStorageMode.Memoryless
F:Metal.MTLStorageMode.Private
@@ -14765,6 +14790,8 @@ F:Metal.MTLTextureUsage.ShaderAtomic
F:Metal.MTLTextureUsage.ShaderRead
F:Metal.MTLTextureUsage.ShaderWrite
F:Metal.MTLTextureUsage.Unknown
+F:Metal.MTLTransformType.Component
+F:Metal.MTLTransformType.PackedFloat4x3
F:Metal.MTLTriangleFillMode.Fill
F:Metal.MTLTriangleFillMode.Lines
F:Metal.MTLTriangleTessellationFactorsHalf.EdgeTessellationFactor
@@ -14841,6 +14868,9 @@ F:Metal.MTLVisibilityResultMode.Counting
F:Metal.MTLVisibilityResultMode.Disabled
F:Metal.MTLWinding.Clockwise
F:Metal.MTLWinding.CounterClockwise
+F:Metal.NSDeviceCertification.iPhonePerformanceGaming
+F:Metal.NSProcessPerformanceProfile.Default
+F:Metal.NSProcessPerformanceProfile.Sustained
F:MetalFX.MTLFXSpatialScalerColorProcessingMode.Hdr
F:MetalFX.MTLFXSpatialScalerColorProcessingMode.Linear
F:MetalFX.MTLFXSpatialScalerColorProcessingMode.Perceptual
@@ -40338,6 +40368,8 @@ M:Metal.IMTLArgumentEncoder.SetVisibleFunctionTable(Metal.IMTLVisibleFunctionTab
M:Metal.IMTLArgumentEncoder.SetVisibleFunctionTables(Metal.IMTLVisibleFunctionTable[],Foundation.NSRange)
M:Metal.IMTLBinaryArchive.AddComputePipelineFunctions(Metal.MTLComputePipelineDescriptor,Foundation.NSError@)
M:Metal.IMTLBinaryArchive.AddFunctionWithDescriptor(Metal.MTLFunctionDescriptor,Metal.IMTLLibrary,Foundation.NSError@)
+M:Metal.IMTLBinaryArchive.AddLibrary(Metal.MTLStitchedLibraryDescriptor,Foundation.NSError@)
+M:Metal.IMTLBinaryArchive.AddMeshRenderPipelineFunctions(Metal.MTLMeshRenderPipelineDescriptor,Foundation.NSError@)
M:Metal.IMTLBinaryArchive.AddRenderPipelineFunctions(Metal.MTLRenderPipelineDescriptor,Foundation.NSError@)
M:Metal.IMTLBinaryArchive.AddTileRenderPipelineFunctions(Metal.MTLTileRenderPipelineDescriptor,Foundation.NSError@)
M:Metal.IMTLBinaryArchive.Serialize(Foundation.NSUrl,Foundation.NSError@)
@@ -40392,16 +40424,22 @@ M:Metal.IMTLCommandBuffer.PresentDrawable(Metal.IMTLDrawable,System.Double)
M:Metal.IMTLCommandBuffer.PresentDrawable(Metal.IMTLDrawable)
M:Metal.IMTLCommandBuffer.PresentDrawableAfter(Metal.IMTLDrawable,System.Double)
M:Metal.IMTLCommandBuffer.PushDebugGroup(System.String)
+M:Metal.IMTLCommandBuffer.UseResidencySet(Metal.IMTLResidencySet)
+M:Metal.IMTLCommandBuffer.UseResidencySets(System.IntPtr,System.UIntPtr)
M:Metal.IMTLCommandBuffer.WaitUntilCompleted
M:Metal.IMTLCommandBuffer.WaitUntilScheduled
M:Metal.IMTLCommandEncoder.EndEncoding
M:Metal.IMTLCommandEncoder.InsertDebugSignpost(System.String)
M:Metal.IMTLCommandEncoder.PopDebugGroup
M:Metal.IMTLCommandEncoder.PushDebugGroup(System.String)
+M:Metal.IMTLCommandQueue.AddResidencySet(Metal.IMTLResidencySet)
+M:Metal.IMTLCommandQueue.AddResidencySets(System.IntPtr,System.UIntPtr)
M:Metal.IMTLCommandQueue.CommandBuffer
M:Metal.IMTLCommandQueue.CommandBufferWithUnretainedReferences
M:Metal.IMTLCommandQueue.CreateCommandBuffer(Metal.MTLCommandBufferDescriptor)
M:Metal.IMTLCommandQueue.InsertDebugCaptureBoundary
+M:Metal.IMTLCommandQueue.RemoveResidencySet(Metal.IMTLResidencySet)
+M:Metal.IMTLCommandQueue.RemoveResidencySets(System.IntPtr,System.UIntPtr)
M:Metal.IMTLComputeCommandEncoder.DispatchThreadgroups(Metal.IMTLBuffer,System.UIntPtr,Metal.MTLSize)
M:Metal.IMTLComputeCommandEncoder.DispatchThreadgroups(Metal.MTLSize,Metal.MTLSize)
M:Metal.IMTLComputeCommandEncoder.DispatchThreads(Metal.MTLSize,Metal.MTLSize)
@@ -40459,6 +40497,7 @@ M:Metal.IMTLDevice.CreateBuffer(System.IntPtr,System.UIntPtr,Metal.MTLResourceOp
M:Metal.IMTLDevice.CreateBuffer(System.UIntPtr,Metal.MTLResourceOptions)
M:Metal.IMTLDevice.CreateBufferNoCopy(System.IntPtr,System.UIntPtr,Metal.MTLResourceOptions,Metal.MTLDeallocator)
M:Metal.IMTLDevice.CreateCommandQueue
+M:Metal.IMTLDevice.CreateCommandQueue(Metal.MTLCommandQueueDescriptor)
M:Metal.IMTLDevice.CreateCommandQueue(System.UIntPtr)
M:Metal.IMTLDevice.CreateComputePipelineState(Metal.IMTLFunction,Foundation.NSError@)
M:Metal.IMTLDevice.CreateComputePipelineState(Metal.IMTLFunction,Metal.MTLPipelineOption,Metal.MTLComputePipelineReflection@,Foundation.NSError@)
@@ -40494,6 +40533,7 @@ M:Metal.IMTLDevice.CreateRenderPipelineState(Metal.MTLRenderPipelineDescriptor,M
M:Metal.IMTLDevice.CreateRenderPipelineState(Metal.MTLRenderPipelineDescriptor,System.Action{Metal.IMTLRenderPipelineState,Foundation.NSError})
M:Metal.IMTLDevice.CreateRenderPipelineState(Metal.MTLTileRenderPipelineDescriptor,Metal.MTLPipelineOption,Metal.MTLNewRenderPipelineStateWithReflectionCompletionHandler)
M:Metal.IMTLDevice.CreateRenderPipelineState(Metal.MTLTileRenderPipelineDescriptor,Metal.MTLPipelineOption,Metal.MTLRenderPipelineReflection@,Foundation.NSError@)
+M:Metal.IMTLDevice.CreateResidencySet(Metal.MTLResidencySetDescriptor,Foundation.NSError@)
M:Metal.IMTLDevice.CreateSamplerState(Metal.MTLSamplerDescriptor)
M:Metal.IMTLDevice.CreateSharedEvent
M:Metal.IMTLDevice.CreateSharedEvent(Metal.MTLSharedEventHandle)
@@ -40508,6 +40548,7 @@ M:Metal.IMTLDevice.GetHeapBufferSizeAndAlignWithLength(System.UIntPtr,Metal.MTLR
M:Metal.IMTLDevice.GetHeapTextureSizeAndAlign(Metal.MTLTextureDescriptor)
M:Metal.IMTLDevice.GetMinimumLinearTextureAlignment(Metal.MTLPixelFormat)
M:Metal.IMTLDevice.GetMinimumTextureBufferAlignment(Metal.MTLPixelFormat)
+M:Metal.IMTLDevice.GetNewLogState(Metal.MTLLogStateDescriptor,Foundation.NSError@)
M:Metal.IMTLDevice.GetSampleTimestamps(System.UIntPtr,System.UIntPtr)
M:Metal.IMTLDevice.GetSparseTileSize(Metal.MTLTextureType,Metal.MTLPixelFormat,System.UIntPtr,Metal.MTLSparsePageSize)
M:Metal.IMTLDevice.GetSparseTileSize(Metal.MTLTextureType,Metal.MTLPixelFormat,System.UIntPtr)
@@ -40583,6 +40624,7 @@ M:Metal.IMTLLibrary.CreateFunction(System.String)
M:Metal.IMTLLibrary.CreateFunctionAsync(System.String,Metal.MTLFunctionConstantValues)
M:Metal.IMTLLibrary.CreateIntersectionFunction(Metal.MTLIntersectionFunctionDescriptor,Foundation.NSError@)
M:Metal.IMTLLibrary.CreateIntersectionFunction(Metal.MTLIntersectionFunctionDescriptor,System.Action{Metal.IMTLFunction,Foundation.NSError})
+M:Metal.IMTLLogState.AddLogHandler(Metal.MTLLogStateLogHandler)
M:Metal.IMTLParallelRenderCommandEncoder.CreateRenderCommandEncoder
M:Metal.IMTLParallelRenderCommandEncoder.SetColorStoreAction(Metal.MTLStoreAction,System.UIntPtr)
M:Metal.IMTLParallelRenderCommandEncoder.SetColorStoreActionOptions(Metal.MTLStoreActionOptions,System.UIntPtr)
@@ -40730,6 +40772,15 @@ M:Metal.IMTLRenderPipelineState.GetImageblockMemoryLength(Metal.MTLSize)
M:Metal.IMTLRenderPipelineState.NewIntersectionFunctionTableWithDescriptor(Metal.MTLIntersectionFunctionTableDescriptor,Metal.MTLRenderStages)
M:Metal.IMTLRenderPipelineState.NewRenderPipelineStateWithAdditionalBinaryFunctions(Metal.MTLRenderPipelineFunctionsDescriptor,Foundation.NSError@)
M:Metal.IMTLRenderPipelineState.NewVisibleFunctionTableWithDescriptor(Metal.MTLVisibleFunctionTableDescriptor,Metal.MTLRenderStages)
+M:Metal.IMTLResidencySet.AddAllocation(Metal.IMTLAllocation)
+M:Metal.IMTLResidencySet.AddAllocations(System.IntPtr,System.UIntPtr)
+M:Metal.IMTLResidencySet.Commit
+M:Metal.IMTLResidencySet.ContainsAllocation(Metal.IMTLAllocation)
+M:Metal.IMTLResidencySet.EndResidency
+M:Metal.IMTLResidencySet.RemoveAllAllocations
+M:Metal.IMTLResidencySet.RemoveAllocation(Metal.IMTLAllocation)
+M:Metal.IMTLResidencySet.RemoveAllocations(System.IntPtr,System.UIntPtr)
+M:Metal.IMTLResidencySet.RequestResidency
M:Metal.IMTLResource.MakeAliasable
M:Metal.IMTLResource.SetOwnerWithIdentity(System.UInt32)
M:Metal.IMTLResource.SetPurgeableState(Metal.MTLPurgeableState)
@@ -40786,6 +40837,7 @@ M:Metal.MTLCommandBuffer_Extensions.CreateAccelerationStructureCommandEncoder(Me
M:Metal.MTLCommandBuffer_Extensions.CreateResourceStateCommandEncoder(Metal.IMTLCommandBuffer,Metal.MTLResourceStatePassDescriptor)
M:Metal.MTLCommandBuffer_Extensions.GetResourceStateCommandEncoder(Metal.IMTLCommandBuffer)
M:Metal.MTLCommandBufferDescriptor.Copy(Foundation.NSZone)
+M:Metal.MTLCommandQueueDescriptor.Copy(Foundation.NSZone)
M:Metal.MTLCompileOptions.Copy(Foundation.NSZone)
M:Metal.MTLComputeCommandEncoder_Extensions.SetAccelerationStructure(Metal.IMTLComputeCommandEncoder,Metal.IMTLAccelerationStructure,System.UIntPtr)
M:Metal.MTLComputeCommandEncoder_Extensions.SetBuffer(Metal.IMTLComputeCommandEncoder,Metal.IMTLBuffer,System.UIntPtr,System.UIntPtr,System.UIntPtr)
@@ -40891,6 +40943,7 @@ M:Metal.MTLLibrary_Extensions.CreateFunctionAsync(Metal.IMTLLibrary,System.Strin
M:Metal.MTLLibrary_Extensions.CreateIntersectionFunction(Metal.IMTLLibrary,Metal.MTLIntersectionFunctionDescriptor,Foundation.NSError@)
M:Metal.MTLLibrary_Extensions.CreateIntersectionFunction(Metal.IMTLLibrary,Metal.MTLIntersectionFunctionDescriptor,System.Action{Metal.IMTLFunction,Foundation.NSError})
M:Metal.MTLLinkedFunctions.Copy(Foundation.NSZone)
+M:Metal.MTLLogStateDescriptor.Copy(Foundation.NSZone)
M:Metal.MTLMeshRenderPipelineDescriptor.Copy(Foundation.NSZone)
M:Metal.MTLOrigin.#ctor(System.IntPtr,System.IntPtr,System.IntPtr)
M:Metal.MTLOrigin.ToString
@@ -40967,6 +41020,7 @@ M:Metal.MTLRenderPipelineState_Extensions.GetObjectThreadExecutionWidth(Metal.IM
M:Metal.MTLRenderPipelineState_Extensions.NewIntersectionFunctionTableWithDescriptor(Metal.IMTLRenderPipelineState,Metal.MTLIntersectionFunctionTableDescriptor,Metal.MTLRenderStages)
M:Metal.MTLRenderPipelineState_Extensions.NewRenderPipelineStateWithAdditionalBinaryFunctions(Metal.IMTLRenderPipelineState,Metal.MTLRenderPipelineFunctionsDescriptor,Foundation.NSError@)
M:Metal.MTLRenderPipelineState_Extensions.NewVisibleFunctionTableWithDescriptor(Metal.IMTLRenderPipelineState,Metal.MTLVisibleFunctionTableDescriptor,Metal.MTLRenderStages)
+M:Metal.MTLResidencySetDescriptor.Copy(Foundation.NSZone)
M:Metal.MTLResourceStateCommandEncoder_Extensions.MoveTextureMappings(Metal.IMTLResourceStateCommandEncoder,Metal.IMTLTexture,System.UIntPtr,System.UIntPtr,Metal.MTLOrigin,Metal.MTLSize,Metal.IMTLTexture,System.UIntPtr,System.UIntPtr,Metal.MTLOrigin)
M:Metal.MTLResourceStateCommandEncoder_Extensions.Update(Metal.IMTLResourceStateCommandEncoder,Metal.IMTLFence)
M:Metal.MTLResourceStateCommandEncoder_Extensions.Update(Metal.IMTLResourceStateCommandEncoder,Metal.IMTLTexture,Metal.MTLSparseTextureMappingMode,Metal.IMTLBuffer,System.UIntPtr)
@@ -41007,6 +41061,8 @@ M:Metal.MTLViewport.#ctor(System.Double,System.Double,System.Double,System.Doubl
M:Metal.MTLViewport.ToString
M:Metal.MTLVisibleFunctionTable_Extensions.GetGpuResourceId(Metal.IMTLVisibleFunctionTable)
M:Metal.MTLVisibleFunctionTableDescriptor.Copy(Foundation.NSZone)
+M:Metal.NSProcessInfo_NSDeviceCertification.HasPerformanceProfile(Foundation.NSProcessInfo,Metal.NSProcessPerformanceProfile)
+M:Metal.NSProcessInfo_NSDeviceCertification.IsDeviceCertifiedFor(Foundation.NSProcessInfo,Metal.NSDeviceCertification)
M:MetalFX.IMTLFXSpatialScaler.Encode(Metal.IMTLCommandBuffer)
M:MetalFX.IMTLFXTemporalScaler.Encode(Metal.IMTLCommandBuffer)
M:MetalFX.MTLFXSpatialScalerDescriptor.Create(Metal.IMTLDevice)
@@ -41589,6 +41645,8 @@ M:MetalPerformanceShaders.MPSCommandBuffer.PresentDrawable(Metal.IMTLDrawable,Sy
M:MetalPerformanceShaders.MPSCommandBuffer.PresentDrawable(Metal.IMTLDrawable)
M:MetalPerformanceShaders.MPSCommandBuffer.PresentDrawableAfter(Metal.IMTLDrawable,System.Double)
M:MetalPerformanceShaders.MPSCommandBuffer.PushDebugGroup(System.String)
+M:MetalPerformanceShaders.MPSCommandBuffer.UseResidencySet(Metal.IMTLResidencySet)
+M:MetalPerformanceShaders.MPSCommandBuffer.UseResidencySets(System.IntPtr,System.UIntPtr)
M:MetalPerformanceShaders.MPSCommandBuffer.WaitUntilCompleted
M:MetalPerformanceShaders.MPSCommandBuffer.WaitUntilScheduled
M:MetalPerformanceShaders.MPSGRUDescriptor.Create(System.UIntPtr,System.UIntPtr)
@@ -66421,6 +66479,7 @@ P:Foundation.NSPort.PortDidBecomeInvalidNotification
P:Foundation.NSProcessInfo.IsiOSApplicationOnMac
P:Foundation.NSProcessInfo.IsMacCatalystApplication
P:Foundation.NSProcessInfo.LowPowerModeEnabled
+P:Foundation.NSProcessInfo.PerformanceProfileDidChangeNotification
P:Foundation.NSProcessInfo.PowerStateDidChangeNotification
P:Foundation.NSProcessInfo.ThermalStateDidChangeNotification
P:Foundation.NSProgress.Cancellable
@@ -70752,6 +70811,7 @@ P:MessageUI.MFMessageComposeViewController.TextMessageAvailabilityKey
P:MessageUI.MFMessageComposeViewController.WeakMessageComposeDelegate
P:Metal.IMTLAccelerationStructure.GpuResourceId
P:Metal.IMTLAccelerationStructure.Size
+P:Metal.IMTLAllocation.AllocatedSize
P:Metal.IMTLArgumentEncoder.Alignment
P:Metal.IMTLArgumentEncoder.Device
P:Metal.IMTLArgumentEncoder.EncodedLength
@@ -70803,6 +70863,7 @@ P:Metal.IMTLComputePipelineState.Device
P:Metal.IMTLComputePipelineState.GpuResourceId
P:Metal.IMTLComputePipelineState.Label
P:Metal.IMTLComputePipelineState.MaxTotalThreadsPerThreadgroup
+P:Metal.IMTLComputePipelineState.ShaderValidation
P:Metal.IMTLComputePipelineState.StaticThreadgroupMemoryLength
P:Metal.IMTLComputePipelineState.SupportIndirectCommandBuffers
P:Metal.IMTLComputePipelineState.ThreadExecutionWidth
@@ -70924,8 +70985,14 @@ P:Metal.IMTLRenderPipelineState.MaxTotalThreadsPerObjectThreadgroup
P:Metal.IMTLRenderPipelineState.MaxTotalThreadsPerThreadgroup
P:Metal.IMTLRenderPipelineState.MeshThreadExecutionWidth
P:Metal.IMTLRenderPipelineState.ObjectThreadExecutionWidth
+P:Metal.IMTLRenderPipelineState.ShaderValidation
P:Metal.IMTLRenderPipelineState.SupportIndirectCommandBuffers
P:Metal.IMTLRenderPipelineState.ThreadgroupSizeMatchesTileSize
+P:Metal.IMTLResidencySet.AllAllocations
+P:Metal.IMTLResidencySet.AllocatedSize
+P:Metal.IMTLResidencySet.AllocationCount
+P:Metal.IMTLResidencySet.Device
+P:Metal.IMTLResidencySet.Label
P:Metal.IMTLResource.AllocatedSize
P:Metal.IMTLResource.CpuCacheMode
P:Metal.IMTLResource.Device
@@ -83110,6 +83177,7 @@ T:MessageUI.MFMessageAvailabilityChangedEventArgs
T:MessageUI.MFMessageComposeResultEventArgs
T:Metal.IMTLAccelerationStructure
T:Metal.IMTLAccelerationStructureCommandEncoder
+T:Metal.IMTLAllocation
T:Metal.IMTLBinaryArchive
T:Metal.IMTLBinding
T:Metal.IMTLBufferBinding
@@ -83132,9 +83200,11 @@ T:Metal.IMTLIndirectComputeCommand
T:Metal.IMTLIndirectRenderCommand
T:Metal.IMTLIntersectionFunctionTable
T:Metal.IMTLLogContainer
+T:Metal.IMTLLogState
T:Metal.IMTLObjectPayloadBinding
T:Metal.IMTLRasterizationRateMap
T:Metal.IMTLRenderCommandEncoder_Extensions
+T:Metal.IMTLResidencySet
T:Metal.IMTLResourceStateCommandEncoder
T:Metal.IMTLSharedEvent
T:Metal.IMTLTextureBinding
@@ -83190,6 +83260,12 @@ T:Metal.MTLIOPriority
T:Metal.MTLIOStatus
T:Metal.MTLLibraryOptimizationLevel
T:Metal.MTLLibraryType
+T:Metal.MTLLogLevel
+T:Metal.MTLLogStateError
+T:Metal.MTLLogStateLogHandler
+T:Metal.MTLMathFloatingPointFunctions
+T:Metal.MTLMathMode
+T:Metal.MTLMatrixLayout
T:Metal.MTLMotionBorderMode
T:Metal.MTLMultisampleStencilResolveFilter
T:Metal.MTLNewComputePipelineStateWithReflectionCompletionHandler
@@ -83205,6 +83281,7 @@ T:Metal.MTLResourceId
T:Metal.MTLSamplePosition
T:Metal.MTLSamplerBorderColor
T:Metal.MTLScissorRect
+T:Metal.MTLShaderValidation
T:Metal.MTLSharedEventNotificationBlock
T:Metal.MTLSize
T:Metal.MTLSizeAndAlign
@@ -83213,6 +83290,7 @@ T:Metal.MTLSparseTextureMappingMode
T:Metal.MTLSparseTextureRegionAlignmentMode
T:Metal.MTLStageInRegionIndirectArguments
T:Metal.MTLStepFunction
+T:Metal.MTLStitchedLibraryOptions
T:Metal.MTLTessellationControlPointIndexType
T:Metal.MTLTessellationFactorFormat
T:Metal.MTLTessellationFactorStepFunction
@@ -83220,10 +83298,14 @@ T:Metal.MTLTessellationPartitionMode
T:Metal.MTLTextureCompressionType
T:Metal.MTLTextureSwizzle
T:Metal.MTLTextureSwizzleChannels
+T:Metal.MTLTransformType
T:Metal.MTLTriangleTessellationFactorsHalf
T:Metal.MTLVertexAmplificationViewMapping
T:Metal.MTLVertexFormatExtensions
T:Metal.MTLViewport
+T:Metal.NSDeviceCertification
+T:Metal.NSProcessInfo_NSDeviceCertification
+T:Metal.NSProcessPerformanceProfile
T:MetalFX.IMTLFXSpatialScaler
T:MetalFX.IMTLFXTemporalScaler
T:MetalFX.MTLFXSpatialScalerColorProcessingMode
diff --git a/tests/monotouch-test/Metal/MTLCommandBufferTests.cs b/tests/monotouch-test/Metal/MTLCommandBufferTests.cs
new file mode 100644
index 000000000000..250144224e94
--- /dev/null
+++ b/tests/monotouch-test/Metal/MTLCommandBufferTests.cs
@@ -0,0 +1,52 @@
+#if !__WATCHOS__
+using System;
+using System.IO;
+using System.Runtime.InteropServices;
+
+using CoreFoundation;
+using Foundation;
+using ObjCRuntime;
+
+using Metal;
+
+using NUnit.Framework;
+
+namespace MonoTouchFixtures.Metal {
+ [Preserve (AllMembers = true)]
+ public class MTLCommandBufferTests {
+ [Test]
+ public void UseResidencySets ()
+ {
+ TestRuntime.AssertXcodeVersion (16, 0);
+
+ var device = MTLDevice.SystemDefault;
+ // some older hardware won't have a default
+ if (device is null)
+ Assert.Inconclusive ("Metal is not supported");
+
+ var supportsResidencySets = device.SupportsFamily (MTLGpuFamily.Apple6);
+ if (!supportsResidencySets)
+ Assert.Inconclusive ("Residency sets are not supported on this device.");
+
+ using var commandQ = device.CreateCommandQueue ();
+ if (commandQ is null) // this happens on a simulator
+ Assert.Inconclusive ("Could not get the functions library for the device.");
+
+ using var commandBuffer = commandQ.CommandBuffer ();
+ if (commandBuffer is null) // happens on sim
+ Assert.Inconclusive ("Could not get the command buffer for the device.");
+
+ using var residencySetDescriptor = new MTLResidencySetDescriptor () {
+ Label = "Label",
+ InitialCapacity = 3
+ };
+ using var residencySet = device.CreateResidencySet (residencySetDescriptor, out var error);
+ Assert.IsNull (error, "Error #1");
+ Assert.IsNotNull (residencySet, "ResidencySet #1");
+
+ commandBuffer.UseResidencySets (residencySet);
+ commandBuffer.UseResidencySets (new IMTLResidencySet [] { residencySet });
+ }
+ }
+}
+#endif // !__WATCHOS__
diff --git a/tests/monotouch-test/Metal/MTLCommandQueueTests.cs b/tests/monotouch-test/Metal/MTLCommandQueueTests.cs
new file mode 100644
index 000000000000..b1f66a0f9f02
--- /dev/null
+++ b/tests/monotouch-test/Metal/MTLCommandQueueTests.cs
@@ -0,0 +1,51 @@
+#if !__WATCHOS__
+using System;
+using System.IO;
+using System.Runtime.InteropServices;
+
+using CoreFoundation;
+using Foundation;
+using ObjCRuntime;
+
+using Metal;
+
+using NUnit.Framework;
+
+namespace MonoTouchFixtures.Metal {
+ [Preserve (AllMembers = true)]
+ public class MTLCommandQueueTests {
+ [Test]
+ public void AddOrRemoveResidencySets ()
+ {
+ TestRuntime.AssertXcodeVersion (16, 0);
+
+ var device = MTLDevice.SystemDefault;
+ // some older hardware won't have a default
+ if (device is null)
+ Assert.Inconclusive ("Metal is not supported");
+
+ var supportsResidencySets = device.SupportsFamily (MTLGpuFamily.Apple6);
+ if (!supportsResidencySets)
+ Assert.Inconclusive ("Residency sets are not supported on this device.");
+
+ using var commandQ = device.CreateCommandQueue ();
+ if (commandQ is null) // this happens on a simulator
+ Assert.Inconclusive ("Could not get the functions library for the device.");
+
+ using var residencySetDescriptor = new MTLResidencySetDescriptor () {
+ Label = "Label",
+ InitialCapacity = 3
+ };
+ using var residencySet = device.CreateResidencySet (residencySetDescriptor, out var error);
+ Assert.IsNull (error, "Error #1");
+ Assert.IsNotNull (residencySet, "ResidencySet #1");
+
+ commandQ.AddResidencySets (residencySet);
+ commandQ.RemoveResidencySets (residencySet);
+
+ commandQ.AddResidencySets (new IMTLResidencySet [] { residencySet });
+ commandQ.RemoveResidencySets (new IMTLResidencySet [] { residencySet });
+ }
+ }
+}
+#endif // !__WATCHOS__
diff --git a/tests/monotouch-test/Metal/MTLDeviceTests.cs b/tests/monotouch-test/Metal/MTLDeviceTests.cs
index a05cc5ffd6f6..b09b53a5ea00 100644
--- a/tests/monotouch-test/Metal/MTLDeviceTests.cs
+++ b/tests/monotouch-test/Metal/MTLDeviceTests.cs
@@ -21,12 +21,13 @@ public void Setup ()
TestRuntime.AssertXcodeVersion (9, 0);
}
-#if __MACOS__ || __MACCATALYST__
[Test]
public void GetAllDevicesTest ()
{
#if __MACCATALYST__
TestRuntime.AssertXcodeVersion (13, 0);
+#elif !__MACOS__
+ TestRuntime.AssertXcodeVersion (16, 0);
#endif
NSObject refObj = new NSObject ();
var devices = MTLDevice.GetAllDevices ();
@@ -35,7 +36,6 @@ public void GetAllDevicesTest ()
// in which case we'll get an empty array of devices.
Assert.IsNotNull (devices, "MTLDevices.GetAllDevices not null");
}
-#endif
#if __MACOS__
[Test]
diff --git a/tests/monotouch-test/Metal/MTLResidencySetTests.cs b/tests/monotouch-test/Metal/MTLResidencySetTests.cs
new file mode 100644
index 000000000000..910124298023
--- /dev/null
+++ b/tests/monotouch-test/Metal/MTLResidencySetTests.cs
@@ -0,0 +1,55 @@
+#if !__WATCHOS__
+using System;
+using System.IO;
+using System.Runtime.InteropServices;
+
+using CoreFoundation;
+using Foundation;
+using ObjCRuntime;
+
+using Metal;
+
+using NUnit.Framework;
+
+namespace MonoTouchFixtures.Metal {
+ [Preserve (AllMembers = true)]
+ public class MTLResidencySetTests {
+ [Test]
+ public void AddOrRemoveAllocations ()
+ {
+ TestRuntime.AssertXcodeVersion (16, 0);
+
+ var device = MTLDevice.SystemDefault;
+ // some older hardware won't have a default
+ if (device is null)
+ Assert.Inconclusive ("Metal is not supported");
+
+ var supportsResidencySets = device.SupportsFamily (MTLGpuFamily.Apple6);
+ if (!supportsResidencySets)
+ Assert.Inconclusive ("Residency sets are not supported on this device.");
+
+ using var heapDescriptor = new MTLHeapDescriptor () {
+ Size = 1024,
+ };
+ using var heap = device.CreateHeap (heapDescriptor);
+ using var residencySetDescriptor = new MTLResidencySetDescriptor () {
+ Label = "Label",
+ InitialCapacity = 3
+ };
+ using var residencySet = device.CreateResidencySet (residencySetDescriptor, out var error);
+ Assert.IsNull (error, "Error #1");
+ Assert.IsNotNull (residencySet, "ResidencySet #1");
+
+ residencySet.AddAllocations (heap);
+ Assert.AreEqual (1, residencySet.AllocationCount, "AllocationCount #1");
+ residencySet.RemoveAllocations (heap);
+ Assert.AreEqual (0, residencySet.AllocationCount, "AllocationCount #2");
+
+ residencySet.AddAllocations (new IMTLAllocation [] { heap });
+ Assert.AreEqual (1, residencySet.AllocationCount, "AllocationCount #3");
+ residencySet.RemoveAllocations (new IMTLAllocation [] { heap });
+ Assert.AreEqual (0, residencySet.AllocationCount, "AllocationCount #4");
+ }
+ }
+}
+#endif // !__WATCHOS__
diff --git a/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-Metal.ignore b/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-Metal.ignore
new file mode 100644
index 000000000000..4dc5421d375b
--- /dev/null
+++ b/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-Metal.ignore
@@ -0,0 +1,6 @@
+!extra-enum-value! Managed value 0 for MTLFeatureSet.iOS_GPUFamily1_v1 is available for the current platform while the value in the native header is not
+!extra-enum-value! Managed value 1 for MTLFeatureSet.iOS_GPUFamily2_v1 is available for the current platform while the value in the native header is not
+!extra-enum-value! Managed value 2 for MTLFeatureSet.iOS_GPUFamily1_v2 is available for the current platform while the value in the native header is not
+!extra-enum-value! Managed value 3 for MTLFeatureSet.iOS_GPUFamily2_v2 is available for the current platform while the value in the native header is not
+!extra-enum-value! Managed value 30000 for MTLFeatureSet.tvOS_GPUFamily1_v1 is available for the current platform while the value in the native header is not
+!extra-enum-value! Managed value 4 for MTLFeatureSet.iOS_GPUFamily3_v1 is available for the current platform while the value in the native header is not
diff --git a/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-Metal.todo b/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-Metal.todo
deleted file mode 100644
index 943e28836654..000000000000
--- a/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-Metal.todo
+++ /dev/null
@@ -1,138 +0,0 @@
-!extra-enum-value! Managed value 0 for MTLFeatureSet.iOS_GPUFamily1_v1 is available for the current platform while the value in the native header is not
-!extra-enum-value! Managed value 1 for MTLFeatureSet.iOS_GPUFamily2_v1 is available for the current platform while the value in the native header is not
-!extra-enum-value! Managed value 2 for MTLFeatureSet.iOS_GPUFamily1_v2 is available for the current platform while the value in the native header is not
-!extra-enum-value! Managed value 3 for MTLFeatureSet.iOS_GPUFamily2_v2 is available for the current platform while the value in the native header is not
-!extra-enum-value! Managed value 30000 for MTLFeatureSet.tvOS_GPUFamily1_v1 is available for the current platform while the value in the native header is not
-!extra-enum-value! Managed value 4 for MTLFeatureSet.iOS_GPUFamily3_v1 is available for the current platform while the value in the native header is not
-!missing-protocol-member! MTLDevice::areBarycentricCoordsSupported not found
-!missing-protocol-member! MTLDevice::supportsShaderBarycentricCoordinates not found
-!missing-protocol-member! MTLTexture::compressionType not found
-!incorrect-protocol-member! MTLBuffer::gpuAddress is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLHeap::newAccelerationStructureWithDescriptor: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLHeap::newAccelerationStructureWithDescriptor:offset: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLHeap::newAccelerationStructureWithSize: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLHeap::newAccelerationStructureWithSize:offset: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLIndirectCommandBuffer::gpuResourceID is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::drawMeshThreadgroups:threadsPerObjectThreadgroup:threadsPerMeshThreadgroup: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::drawMeshThreadgroupsWithIndirectBuffer:indirectBufferOffset:threadsPerObjectThreadgroup:threadsPerMeshThreadgroup: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::drawMeshThreads:threadsPerObjectThreadgroup:threadsPerMeshThreadgroup: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshBuffer:offset:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshBufferOffset:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshBuffers:offsets:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshBytes:length:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshSamplerState:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshSamplerState:lodMinClamp:lodMaxClamp:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshSamplerStates:lodMinClamps:lodMaxClamps:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshSamplerStates:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshTexture:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshTextures:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectBuffer:offset:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectBufferOffset:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectBuffers:offsets:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectBytes:length:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectSamplerState:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectSamplerState:lodMinClamp:lodMaxClamp:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectSamplerStates:lodMinClamps:lodMaxClamps:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectSamplerStates:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectTexture:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectTextures:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectThreadgroupMemoryLength:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setVertexBuffer:offset:attributeStride:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setVertexBufferOffset:attributeStride:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setVertexBuffers:offsets:attributeStrides:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setVertexBytes:length:attributeStride:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderPipelineState::maxTotalThreadsPerMeshThreadgroup is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderPipelineState::maxTotalThreadsPerObjectThreadgroup is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderPipelineState::objectThreadExecutionWidth is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLSamplerState::gpuResourceID is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLTexture::gpuResourceID is REQUIRED and should be abstract
-!missing-protocol-member! MTLDevice::supportsBCTextureCompression not found
-!unknown-native-enum! MTLArgumentAccess bound
-!deprecated-attribute-missing! MTLCompileOptions::fastMathEnabled missing a [Deprecated] attribute
-!deprecated-attribute-missing! MTLCompileOptions::setFastMathEnabled: missing a [Deprecated] attribute
-!missing-enum! MTLLogLevel not bound
-!missing-enum! MTLLogStateError not bound
-!missing-enum! MTLMathFloatingPointFunctions not bound
-!missing-enum! MTLMathMode not bound
-!missing-enum! MTLMatrixLayout not bound
-!missing-enum! MTLShaderValidation not bound
-!missing-enum! MTLStitchedLibraryOptions not bound
-!missing-enum! MTLTransformType not bound
-!missing-enum-value! MTLFunctionOptions native value MTLFunctionOptionFailOnBinaryArchiveMiss = 4 not bound
-!missing-enum-value! MTLLanguageVersion native value MTLLanguageVersion3_2 = 196610 not bound
-!missing-field! MTLLogStateErrorDomain not bound
-!missing-field! NSDeviceCertificationiPhonePerformanceGaming not bound
-!missing-field! NSProcessInfoPerformanceProfileDidChangeNotification not bound
-!missing-field! NSProcessPerformanceProfileDefault not bound
-!missing-field! NSProcessPerformanceProfileSustained not bound
-!missing-protocol! MTLAllocation not bound
-!missing-protocol! MTLLogState not bound
-!missing-protocol! MTLResidencySet not bound
-!missing-protocol-member! MTLBinaryArchive::addLibraryWithDescriptor:error: not found
-!missing-protocol-member! MTLBinaryArchive::addMeshRenderPipelineFunctionsWithDescriptor:error: not found
-!missing-protocol-member! MTLCommandBuffer::useResidencySet: not found
-!missing-protocol-member! MTLCommandBuffer::useResidencySets:count: not found
-!missing-protocol-member! MTLCommandQueue::addResidencySet: not found
-!missing-protocol-member! MTLCommandQueue::addResidencySets:count: not found
-!missing-protocol-member! MTLCommandQueue::removeResidencySet: not found
-!missing-protocol-member! MTLCommandQueue::removeResidencySets:count: not found
-!missing-protocol-member! MTLComputePipelineState::shaderValidation not found
-!missing-protocol-member! MTLDevice::newCommandQueueWithDescriptor: not found
-!missing-protocol-member! MTLDevice::newLogStateWithDescriptor:error: not found
-!missing-protocol-member! MTLDevice::newResidencySetWithDescriptor:error: not found
-!missing-protocol-member! MTLRenderPipelineState::shaderValidation not found
-!missing-selector! MTLAccelerationStructureMotionTriangleGeometryDescriptor::setTransformationMatrixLayout: not bound
-!missing-selector! MTLAccelerationStructureMotionTriangleGeometryDescriptor::transformationMatrixLayout not bound
-!missing-selector! MTLAccelerationStructureTriangleGeometryDescriptor::setTransformationMatrixLayout: not bound
-!missing-selector! MTLAccelerationStructureTriangleGeometryDescriptor::transformationMatrixLayout not bound
-!missing-selector! MTLCommandBufferDescriptor::logState not bound
-!missing-selector! MTLCommandBufferDescriptor::setLogState: not bound
-!missing-selector! MTLCommandQueueDescriptor::logState not bound
-!missing-selector! MTLCommandQueueDescriptor::maxCommandBufferCount not bound
-!missing-selector! MTLCommandQueueDescriptor::setLogState: not bound
-!missing-selector! MTLCommandQueueDescriptor::setMaxCommandBufferCount: not bound
-!missing-selector! MTLCompileOptions::enableLogging not bound
-!missing-selector! MTLCompileOptions::mathFloatingPointFunctions not bound
-!missing-selector! MTLCompileOptions::mathMode not bound
-!missing-selector! MTLCompileOptions::setEnableLogging: not bound
-!missing-selector! MTLCompileOptions::setMathFloatingPointFunctions: not bound
-!missing-selector! MTLCompileOptions::setMathMode: not bound
-!missing-selector! MTLComputePipelineDescriptor::setShaderValidation: not bound
-!missing-selector! MTLComputePipelineDescriptor::shaderValidation not bound
-!missing-selector! MTLIndirectInstanceAccelerationStructureDescriptor::instanceTransformationMatrixLayout not bound
-!missing-selector! MTLIndirectInstanceAccelerationStructureDescriptor::motionTransformStride not bound
-!missing-selector! MTLIndirectInstanceAccelerationStructureDescriptor::motionTransformType not bound
-!missing-selector! MTLIndirectInstanceAccelerationStructureDescriptor::setInstanceTransformationMatrixLayout: not bound
-!missing-selector! MTLIndirectInstanceAccelerationStructureDescriptor::setMotionTransformStride: not bound
-!missing-selector! MTLIndirectInstanceAccelerationStructureDescriptor::setMotionTransformType: not bound
-!missing-selector! MTLInstanceAccelerationStructureDescriptor::instanceTransformationMatrixLayout not bound
-!missing-selector! MTLInstanceAccelerationStructureDescriptor::motionTransformStride not bound
-!missing-selector! MTLInstanceAccelerationStructureDescriptor::motionTransformType not bound
-!missing-selector! MTLInstanceAccelerationStructureDescriptor::setInstanceTransformationMatrixLayout: not bound
-!missing-selector! MTLInstanceAccelerationStructureDescriptor::setMotionTransformStride: not bound
-!missing-selector! MTLInstanceAccelerationStructureDescriptor::setMotionTransformType: not bound
-!missing-selector! MTLLogStateDescriptor::bufferSize not bound
-!missing-selector! MTLLogStateDescriptor::level not bound
-!missing-selector! MTLLogStateDescriptor::setBufferSize: not bound
-!missing-selector! MTLLogStateDescriptor::setLevel: not bound
-!missing-selector! MTLMeshRenderPipelineDescriptor::binaryArchives not bound
-!missing-selector! MTLMeshRenderPipelineDescriptor::setBinaryArchives: not bound
-!missing-selector! MTLMeshRenderPipelineDescriptor::setShaderValidation: not bound
-!missing-selector! MTLMeshRenderPipelineDescriptor::shaderValidation not bound
-!missing-selector! MTLRenderPipelineDescriptor::setShaderValidation: not bound
-!missing-selector! MTLRenderPipelineDescriptor::shaderValidation not bound
-!missing-selector! MTLResidencySetDescriptor::initialCapacity not bound
-!missing-selector! MTLResidencySetDescriptor::label not bound
-!missing-selector! MTLResidencySetDescriptor::setInitialCapacity: not bound
-!missing-selector! MTLResidencySetDescriptor::setLabel: not bound
-!missing-selector! MTLStitchedLibraryDescriptor::binaryArchives not bound
-!missing-selector! MTLStitchedLibraryDescriptor::options not bound
-!missing-selector! MTLStitchedLibraryDescriptor::setBinaryArchives: not bound
-!missing-selector! MTLStitchedLibraryDescriptor::setOptions: not bound
-!missing-selector! MTLTileRenderPipelineDescriptor::setShaderValidation: not bound
-!missing-selector! MTLTileRenderPipelineDescriptor::shaderValidation not bound
-!missing-selector! NSProcessInfo::hasPerformanceProfile: not bound
-!missing-selector! NSProcessInfo::isDeviceCertifiedFor: not bound
-!missing-type! MTLCommandQueueDescriptor not bound
-!missing-type! MTLLogStateDescriptor not bound
-!missing-type! MTLResidencySetDescriptor not bound
diff --git a/tests/xtro-sharpie/api-annotations-dotnet/common-Metal.ignore b/tests/xtro-sharpie/api-annotations-dotnet/common-Metal.ignore
index 6b5ac5dc2014..97cc4ebb1f73 100644
--- a/tests/xtro-sharpie/api-annotations-dotnet/common-Metal.ignore
+++ b/tests/xtro-sharpie/api-annotations-dotnet/common-Metal.ignore
@@ -1,30 +1,9 @@
# MTLFunctionStitchingAttributeAlwaysInline is not documented and has no exposure
!missing-type! MTLFunctionStitchingAttributeAlwaysInline not bound
-# needs to wait for xamcore 5
-!incorrect-protocol-member! MTLComputeCommandEncoder::setBufferOffset:attributeStride:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLComputeCommandEncoder::setBuffers:offsets:attributeStrides:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLComputeCommandEncoder::setBytes:length:attributeStride:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLDevice::architecture is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLIntersectionFunctionTable::gpuResourceID is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLIntersectionFunctionTable::setOpaqueCurveIntersectionFunctionWithSignature:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLIntersectionFunctionTable::setOpaqueCurveIntersectionFunctionWithSignature:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLVisibleFunctionTable::gpuResourceID is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLCommandBuffer::accelerationStructureCommandEncoderWithDescriptor: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLComputePipelineState::gpuResourceID is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLDevice::heapAccelerationStructureSizeAndAlignWithDescriptor: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLDevice::heapAccelerationStructureSizeAndAlignWithSize: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLDevice::newArgumentEncoderWithBufferBinding: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLDevice::newRenderPipelineStateWithMeshDescriptor:options:completionHandler: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLDevice::newRenderPipelineStateWithMeshDescriptor:options:reflection:error: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLDevice::sparseTileSizeInBytesForSparsePageSize: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLDevice::sparseTileSizeWithTextureType:pixelFormat:sampleCount:sparsePageSize: is REQUIRED and should be abstract
-
# added and removed without a release, so ignoring
!missing-protocol-member! MTLDevice::newIOHandleWithURL:compressionMethod:error: not found
!missing-protocol-member! MTLDevice::newIOHandleWithURL:error: not found
-!incorrect-protocol-member! MTLAccelerationStructureCommandEncoder::refitAccelerationStructure:descriptor:destination:scratchBuffer:scratchBufferOffset:options: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLIndirectComputeCommand::setKernelBuffer:offset:attributeStride:atIndex: is REQUIRED and should be abstract
# Ignore until we find a real usage for this APIs. At the moment of the writing they give problems
# with the static registrar
@@ -47,3 +26,6 @@
!missing-protocol! MTLIOFileHandle not bound
!missing-protocol-member! MTLDevice::newIOFileHandleWithURL:compressionMethod:error: not found
!missing-protocol-member! MTLDevice::newIOFileHandleWithURL:error: not found
+
+## Removed in XAMCORE_5_0
+!unknown-native-enum! MTLArgumentAccess bound
diff --git a/tests/xtro-sharpie/api-annotations-dotnet/iOS-Metal.ignore b/tests/xtro-sharpie/api-annotations-dotnet/iOS-Metal.ignore
deleted file mode 100644
index f6b3d5615be6..000000000000
--- a/tests/xtro-sharpie/api-annotations-dotnet/iOS-Metal.ignore
+++ /dev/null
@@ -1,48 +0,0 @@
-## Adding it to the icebox until it is available on all platforms
-
-# has to wait for XAMCORE_5_0
-!incorrect-protocol-member! MTLResourceStateCommandEncoder::moveTextureMappingsFromTexture:sourceSlice:sourceLevel:sourceOrigin:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::drawMeshThreadgroups:threadsPerObjectThreadgroup:threadsPerMeshThreadgroup: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::drawMeshThreadgroupsWithIndirectBuffer:indirectBufferOffset:threadsPerObjectThreadgroup:threadsPerMeshThreadgroup: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::drawMeshThreads:threadsPerObjectThreadgroup:threadsPerMeshThreadgroup: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshBufferOffset:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshBuffers:offsets:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshSamplerState:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshSamplerState:lodMinClamp:lodMaxClamp:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshSamplerStates:lodMinClamps:lodMaxClamps:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshSamplerStates:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshTexture:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshTextures:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectBuffer:offset:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectBufferOffset:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectBuffers:offsets:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectBytes:length:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshBuffer:offset:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshBytes:length:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectSamplerState:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectSamplerState:lodMinClamp:lodMaxClamp:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectSamplerStates:lodMinClamps:lodMaxClamps:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectSamplerStates:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectTexture:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectTextures:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectThreadgroupMemoryLength:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderPipelineState::maxTotalThreadsPerMeshThreadgroup is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderPipelineState::maxTotalThreadsPerObjectThreadgroup is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderPipelineState::objectThreadExecutionWidth is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLSamplerState::gpuResourceID is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLIndirectCommandBuffer::gpuResourceID is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLTexture::gpuResourceID is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLBuffer::gpuAddress is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLHeap::newAccelerationStructureWithDescriptor: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLHeap::newAccelerationStructureWithDescriptor:offset: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLHeap::newAccelerationStructureWithSize: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLHeap::newAccelerationStructureWithSize:offset: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::memoryBarrierWithResources:count:afterStages:beforeStages: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::memoryBarrierWithScope:afterStages:beforeStages: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setVertexBuffer:offset:attributeStride:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setVertexBufferOffset:attributeStride:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setVertexBuffers:offsets:attributeStrides:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setVertexBytes:length:attributeStride:atIndex: is REQUIRED and should be abstract
-
-# deprecated but cannot be removed
-!unknown-native-enum! MTLArgumentAccess bound
diff --git a/tests/xtro-sharpie/api-annotations-dotnet/iOS-Metal.todo b/tests/xtro-sharpie/api-annotations-dotnet/iOS-Metal.todo
deleted file mode 100644
index 46f5ab46655e..000000000000
--- a/tests/xtro-sharpie/api-annotations-dotnet/iOS-Metal.todo
+++ /dev/null
@@ -1,89 +0,0 @@
-!deprecated-attribute-missing! MTLCompileOptions::fastMathEnabled missing a [Deprecated] attribute
-!deprecated-attribute-missing! MTLCompileOptions::setFastMathEnabled: missing a [Deprecated] attribute
-!missing-enum! MTLLogLevel not bound
-!missing-enum! MTLLogStateError not bound
-!missing-enum! MTLMathFloatingPointFunctions not bound
-!missing-enum! MTLMathMode not bound
-!missing-enum! MTLMatrixLayout not bound
-!missing-enum! MTLShaderValidation not bound
-!missing-enum! MTLStitchedLibraryOptions not bound
-!missing-enum! MTLTransformType not bound
-!missing-enum-value! MTLFunctionOptions native value MTLFunctionOptionFailOnBinaryArchiveMiss = 4 not bound
-!missing-enum-value! MTLLanguageVersion native value MTLLanguageVersion3_2 = 196610 not bound
-!missing-field! MTLLogStateErrorDomain not bound
-!missing-field! NSDeviceCertificationiPhonePerformanceGaming not bound
-!missing-field! NSProcessInfoPerformanceProfileDidChangeNotification not bound
-!missing-field! NSProcessPerformanceProfileDefault not bound
-!missing-field! NSProcessPerformanceProfileSustained not bound
-!missing-pinvoke! MTLCopyAllDevices is not bound
-!missing-protocol! MTLAllocation not bound
-!missing-protocol! MTLLogState not bound
-!missing-protocol! MTLResidencySet not bound
-!missing-protocol-member! MTLBinaryArchive::addLibraryWithDescriptor:error: not found
-!missing-protocol-member! MTLBinaryArchive::addMeshRenderPipelineFunctionsWithDescriptor:error: not found
-!missing-protocol-member! MTLCommandBuffer::useResidencySet: not found
-!missing-protocol-member! MTLCommandBuffer::useResidencySets:count: not found
-!missing-protocol-member! MTLCommandQueue::addResidencySet: not found
-!missing-protocol-member! MTLCommandQueue::addResidencySets:count: not found
-!missing-protocol-member! MTLCommandQueue::removeResidencySet: not found
-!missing-protocol-member! MTLCommandQueue::removeResidencySets:count: not found
-!missing-protocol-member! MTLComputePipelineState::shaderValidation not found
-!missing-protocol-member! MTLDevice::newCommandQueueWithDescriptor: not found
-!missing-protocol-member! MTLDevice::newLogStateWithDescriptor:error: not found
-!missing-protocol-member! MTLDevice::newResidencySetWithDescriptor:error: not found
-!missing-protocol-member! MTLRenderPipelineState::shaderValidation not found
-!missing-selector! MTLAccelerationStructureMotionTriangleGeometryDescriptor::setTransformationMatrixLayout: not bound
-!missing-selector! MTLAccelerationStructureMotionTriangleGeometryDescriptor::transformationMatrixLayout not bound
-!missing-selector! MTLAccelerationStructureTriangleGeometryDescriptor::setTransformationMatrixLayout: not bound
-!missing-selector! MTLAccelerationStructureTriangleGeometryDescriptor::transformationMatrixLayout not bound
-!missing-selector! MTLCommandBufferDescriptor::logState not bound
-!missing-selector! MTLCommandBufferDescriptor::setLogState: not bound
-!missing-selector! MTLCommandQueueDescriptor::logState not bound
-!missing-selector! MTLCommandQueueDescriptor::maxCommandBufferCount not bound
-!missing-selector! MTLCommandQueueDescriptor::setLogState: not bound
-!missing-selector! MTLCommandQueueDescriptor::setMaxCommandBufferCount: not bound
-!missing-selector! MTLCompileOptions::enableLogging not bound
-!missing-selector! MTLCompileOptions::mathFloatingPointFunctions not bound
-!missing-selector! MTLCompileOptions::mathMode not bound
-!missing-selector! MTLCompileOptions::setEnableLogging: not bound
-!missing-selector! MTLCompileOptions::setMathFloatingPointFunctions: not bound
-!missing-selector! MTLCompileOptions::setMathMode: not bound
-!missing-selector! MTLComputePipelineDescriptor::setShaderValidation: not bound
-!missing-selector! MTLComputePipelineDescriptor::shaderValidation not bound
-!missing-selector! MTLIndirectInstanceAccelerationStructureDescriptor::instanceTransformationMatrixLayout not bound
-!missing-selector! MTLIndirectInstanceAccelerationStructureDescriptor::motionTransformStride not bound
-!missing-selector! MTLIndirectInstanceAccelerationStructureDescriptor::motionTransformType not bound
-!missing-selector! MTLIndirectInstanceAccelerationStructureDescriptor::setInstanceTransformationMatrixLayout: not bound
-!missing-selector! MTLIndirectInstanceAccelerationStructureDescriptor::setMotionTransformStride: not bound
-!missing-selector! MTLIndirectInstanceAccelerationStructureDescriptor::setMotionTransformType: not bound
-!missing-selector! MTLInstanceAccelerationStructureDescriptor::instanceTransformationMatrixLayout not bound
-!missing-selector! MTLInstanceAccelerationStructureDescriptor::motionTransformStride not bound
-!missing-selector! MTLInstanceAccelerationStructureDescriptor::motionTransformType not bound
-!missing-selector! MTLInstanceAccelerationStructureDescriptor::setInstanceTransformationMatrixLayout: not bound
-!missing-selector! MTLInstanceAccelerationStructureDescriptor::setMotionTransformStride: not bound
-!missing-selector! MTLInstanceAccelerationStructureDescriptor::setMotionTransformType: not bound
-!missing-selector! MTLLogStateDescriptor::bufferSize not bound
-!missing-selector! MTLLogStateDescriptor::level not bound
-!missing-selector! MTLLogStateDescriptor::setBufferSize: not bound
-!missing-selector! MTLLogStateDescriptor::setLevel: not bound
-!missing-selector! MTLMeshRenderPipelineDescriptor::binaryArchives not bound
-!missing-selector! MTLMeshRenderPipelineDescriptor::setBinaryArchives: not bound
-!missing-selector! MTLMeshRenderPipelineDescriptor::setShaderValidation: not bound
-!missing-selector! MTLMeshRenderPipelineDescriptor::shaderValidation not bound
-!missing-selector! MTLRenderPipelineDescriptor::setShaderValidation: not bound
-!missing-selector! MTLRenderPipelineDescriptor::shaderValidation not bound
-!missing-selector! MTLResidencySetDescriptor::initialCapacity not bound
-!missing-selector! MTLResidencySetDescriptor::label not bound
-!missing-selector! MTLResidencySetDescriptor::setInitialCapacity: not bound
-!missing-selector! MTLResidencySetDescriptor::setLabel: not bound
-!missing-selector! MTLStitchedLibraryDescriptor::binaryArchives not bound
-!missing-selector! MTLStitchedLibraryDescriptor::options not bound
-!missing-selector! MTLStitchedLibraryDescriptor::setBinaryArchives: not bound
-!missing-selector! MTLStitchedLibraryDescriptor::setOptions: not bound
-!missing-selector! MTLTileRenderPipelineDescriptor::setShaderValidation: not bound
-!missing-selector! MTLTileRenderPipelineDescriptor::shaderValidation not bound
-!missing-selector! NSProcessInfo::hasPerformanceProfile: not bound
-!missing-selector! NSProcessInfo::isDeviceCertifiedFor: not bound
-!missing-type! MTLCommandQueueDescriptor not bound
-!missing-type! MTLLogStateDescriptor not bound
-!missing-type! MTLResidencySetDescriptor not bound
diff --git a/tests/xtro-sharpie/api-annotations-dotnet/macOS-Metal.ignore b/tests/xtro-sharpie/api-annotations-dotnet/macOS-Metal.ignore
index e90578cb7d85..a87297042e8d 100644
--- a/tests/xtro-sharpie/api-annotations-dotnet/macOS-Metal.ignore
+++ b/tests/xtro-sharpie/api-annotations-dotnet/macOS-Metal.ignore
@@ -2,50 +2,3 @@
!missing-field! MTLDeviceRemovalRequestedNotification not bound
!missing-field! MTLDeviceWasAddedNotification not bound
!missing-field! MTLDeviceWasRemovedNotification not bound
-
-# has to wait for XAMCORE_5_0
-!incorrect-protocol-member! MTLRenderCommandEncoder::drawMeshThreadgroups:threadsPerObjectThreadgroup:threadsPerMeshThreadgroup: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::drawMeshThreadgroupsWithIndirectBuffer:indirectBufferOffset:threadsPerObjectThreadgroup:threadsPerMeshThreadgroup: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::drawMeshThreads:threadsPerObjectThreadgroup:threadsPerMeshThreadgroup: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshBufferOffset:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshBuffers:offsets:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshSamplerState:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshSamplerState:lodMinClamp:lodMaxClamp:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshSamplerStates:lodMinClamps:lodMaxClamps:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshSamplerStates:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshTexture:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshTextures:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectBuffer:offset:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectBufferOffset:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectBuffers:offsets:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectBytes:length:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshBuffer:offset:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshBytes:length:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectSamplerState:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectSamplerState:lodMinClamp:lodMaxClamp:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectSamplerStates:lodMinClamps:lodMaxClamps:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectSamplerStates:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectTexture:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectTextures:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectThreadgroupMemoryLength:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderPipelineState::maxTotalThreadsPerMeshThreadgroup is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderPipelineState::maxTotalThreadsPerObjectThreadgroup is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderPipelineState::objectThreadExecutionWidth is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLSamplerState::gpuResourceID is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLIndirectCommandBuffer::gpuResourceID is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLTexture::gpuResourceID is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLDevice::maximumConcurrentCompilationTaskCount is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLDevice::setShouldMaximizeConcurrentCompilation: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLDevice::shouldMaximizeConcurrentCompilation is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLBuffer::gpuAddress is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLHeap::newAccelerationStructureWithDescriptor: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLHeap::newAccelerationStructureWithDescriptor:offset: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLHeap::newAccelerationStructureWithSize: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLHeap::newAccelerationStructureWithSize:offset: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setVertexBuffer:offset:attributeStride:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setVertexBufferOffset:attributeStride:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setVertexBuffers:offsets:attributeStrides:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setVertexBytes:length:attributeStride:atIndex: is REQUIRED and should be abstract
-
-# deprecated but cannot be removed
-!unknown-native-enum! MTLArgumentAccess bound
diff --git a/tests/xtro-sharpie/api-annotations-dotnet/macOS-Metal.todo b/tests/xtro-sharpie/api-annotations-dotnet/macOS-Metal.todo
deleted file mode 100644
index 5e2154263d5a..000000000000
--- a/tests/xtro-sharpie/api-annotations-dotnet/macOS-Metal.todo
+++ /dev/null
@@ -1,95 +0,0 @@
-!missing-protocol-member! MTLIndirectRenderCommand::clearBarrier not found
-!missing-protocol-member! MTLIndirectRenderCommand::drawMeshThreadgroups:threadsPerObjectThreadgroup:threadsPerMeshThreadgroup: not found
-!missing-protocol-member! MTLIndirectRenderCommand::drawMeshThreads:threadsPerObjectThreadgroup:threadsPerMeshThreadgroup: not found
-!missing-protocol-member! MTLIndirectRenderCommand::setBarrier not found
-!missing-protocol-member! MTLIndirectRenderCommand::setMeshBuffer:offset:atIndex: not found
-!missing-protocol-member! MTLIndirectRenderCommand::setObjectBuffer:offset:atIndex: not found
-!missing-protocol-member! MTLIndirectRenderCommand::setObjectThreadgroupMemoryLength:atIndex: not found
-!deprecated-attribute-missing! MTLCompileOptions::fastMathEnabled missing a [Deprecated] attribute
-!deprecated-attribute-missing! MTLCompileOptions::setFastMathEnabled: missing a [Deprecated] attribute
-!missing-enum! MTLLogLevel not bound
-!missing-enum! MTLLogStateError not bound
-!missing-enum! MTLMathFloatingPointFunctions not bound
-!missing-enum! MTLMathMode not bound
-!missing-enum! MTLMatrixLayout not bound
-!missing-enum! MTLShaderValidation not bound
-!missing-enum! MTLStitchedLibraryOptions not bound
-!missing-enum! MTLTransformType not bound
-!missing-enum-value! MTLFunctionOptions native value MTLFunctionOptionFailOnBinaryArchiveMiss = 4 not bound
-!missing-enum-value! MTLLanguageVersion native value MTLLanguageVersion3_2 = 196610 not bound
-!missing-field! MTLLogStateErrorDomain not bound
-!missing-field! NSDeviceCertificationiPhonePerformanceGaming not bound
-!missing-field! NSProcessInfoPerformanceProfileDidChangeNotification not bound
-!missing-field! NSProcessPerformanceProfileDefault not bound
-!missing-field! NSProcessPerformanceProfileSustained not bound
-!missing-protocol! MTLAllocation not bound
-!missing-protocol! MTLLogState not bound
-!missing-protocol! MTLResidencySet not bound
-!missing-protocol-member! MTLBinaryArchive::addLibraryWithDescriptor:error: not found
-!missing-protocol-member! MTLBinaryArchive::addMeshRenderPipelineFunctionsWithDescriptor:error: not found
-!missing-protocol-member! MTLCommandBuffer::useResidencySet: not found
-!missing-protocol-member! MTLCommandBuffer::useResidencySets:count: not found
-!missing-protocol-member! MTLCommandQueue::addResidencySet: not found
-!missing-protocol-member! MTLCommandQueue::addResidencySets:count: not found
-!missing-protocol-member! MTLCommandQueue::removeResidencySet: not found
-!missing-protocol-member! MTLCommandQueue::removeResidencySets:count: not found
-!missing-protocol-member! MTLComputePipelineState::shaderValidation not found
-!missing-protocol-member! MTLDevice::newCommandQueueWithDescriptor: not found
-!missing-protocol-member! MTLDevice::newLogStateWithDescriptor:error: not found
-!missing-protocol-member! MTLDevice::newResidencySetWithDescriptor:error: not found
-!missing-protocol-member! MTLRenderPipelineState::shaderValidation not found
-!missing-selector! MTLAccelerationStructureMotionTriangleGeometryDescriptor::setTransformationMatrixLayout: not bound
-!missing-selector! MTLAccelerationStructureMotionTriangleGeometryDescriptor::transformationMatrixLayout not bound
-!missing-selector! MTLAccelerationStructureTriangleGeometryDescriptor::setTransformationMatrixLayout: not bound
-!missing-selector! MTLAccelerationStructureTriangleGeometryDescriptor::transformationMatrixLayout not bound
-!missing-selector! MTLCommandBufferDescriptor::logState not bound
-!missing-selector! MTLCommandBufferDescriptor::setLogState: not bound
-!missing-selector! MTLCommandQueueDescriptor::logState not bound
-!missing-selector! MTLCommandQueueDescriptor::maxCommandBufferCount not bound
-!missing-selector! MTLCommandQueueDescriptor::setLogState: not bound
-!missing-selector! MTLCommandQueueDescriptor::setMaxCommandBufferCount: not bound
-!missing-selector! MTLCompileOptions::enableLogging not bound
-!missing-selector! MTLCompileOptions::mathFloatingPointFunctions not bound
-!missing-selector! MTLCompileOptions::mathMode not bound
-!missing-selector! MTLCompileOptions::setEnableLogging: not bound
-!missing-selector! MTLCompileOptions::setMathFloatingPointFunctions: not bound
-!missing-selector! MTLCompileOptions::setMathMode: not bound
-!missing-selector! MTLComputePipelineDescriptor::setShaderValidation: not bound
-!missing-selector! MTLComputePipelineDescriptor::shaderValidation not bound
-!missing-selector! MTLIndirectInstanceAccelerationStructureDescriptor::instanceTransformationMatrixLayout not bound
-!missing-selector! MTLIndirectInstanceAccelerationStructureDescriptor::motionTransformStride not bound
-!missing-selector! MTLIndirectInstanceAccelerationStructureDescriptor::motionTransformType not bound
-!missing-selector! MTLIndirectInstanceAccelerationStructureDescriptor::setInstanceTransformationMatrixLayout: not bound
-!missing-selector! MTLIndirectInstanceAccelerationStructureDescriptor::setMotionTransformStride: not bound
-!missing-selector! MTLIndirectInstanceAccelerationStructureDescriptor::setMotionTransformType: not bound
-!missing-selector! MTLInstanceAccelerationStructureDescriptor::instanceTransformationMatrixLayout not bound
-!missing-selector! MTLInstanceAccelerationStructureDescriptor::motionTransformStride not bound
-!missing-selector! MTLInstanceAccelerationStructureDescriptor::motionTransformType not bound
-!missing-selector! MTLInstanceAccelerationStructureDescriptor::setInstanceTransformationMatrixLayout: not bound
-!missing-selector! MTLInstanceAccelerationStructureDescriptor::setMotionTransformStride: not bound
-!missing-selector! MTLInstanceAccelerationStructureDescriptor::setMotionTransformType: not bound
-!missing-selector! MTLLogStateDescriptor::bufferSize not bound
-!missing-selector! MTLLogStateDescriptor::level not bound
-!missing-selector! MTLLogStateDescriptor::setBufferSize: not bound
-!missing-selector! MTLLogStateDescriptor::setLevel: not bound
-!missing-selector! MTLMeshRenderPipelineDescriptor::binaryArchives not bound
-!missing-selector! MTLMeshRenderPipelineDescriptor::setBinaryArchives: not bound
-!missing-selector! MTLMeshRenderPipelineDescriptor::setShaderValidation: not bound
-!missing-selector! MTLMeshRenderPipelineDescriptor::shaderValidation not bound
-!missing-selector! MTLRenderPipelineDescriptor::setShaderValidation: not bound
-!missing-selector! MTLRenderPipelineDescriptor::shaderValidation not bound
-!missing-selector! MTLResidencySetDescriptor::initialCapacity not bound
-!missing-selector! MTLResidencySetDescriptor::label not bound
-!missing-selector! MTLResidencySetDescriptor::setInitialCapacity: not bound
-!missing-selector! MTLResidencySetDescriptor::setLabel: not bound
-!missing-selector! MTLStitchedLibraryDescriptor::binaryArchives not bound
-!missing-selector! MTLStitchedLibraryDescriptor::options not bound
-!missing-selector! MTLStitchedLibraryDescriptor::setBinaryArchives: not bound
-!missing-selector! MTLStitchedLibraryDescriptor::setOptions: not bound
-!missing-selector! MTLTileRenderPipelineDescriptor::setShaderValidation: not bound
-!missing-selector! MTLTileRenderPipelineDescriptor::shaderValidation not bound
-!missing-selector! NSProcessInfo::hasPerformanceProfile: not bound
-!missing-selector! NSProcessInfo::isDeviceCertifiedFor: not bound
-!missing-type! MTLCommandQueueDescriptor not bound
-!missing-type! MTLLogStateDescriptor not bound
-!missing-type! MTLResidencySetDescriptor not bound
diff --git a/tests/xtro-sharpie/api-annotations-dotnet/tvOS-Metal.ignore b/tests/xtro-sharpie/api-annotations-dotnet/tvOS-Metal.ignore
deleted file mode 100644
index 17f39e163b8f..000000000000
--- a/tests/xtro-sharpie/api-annotations-dotnet/tvOS-Metal.ignore
+++ /dev/null
@@ -1,108 +0,0 @@
-# has to wait for XAMCORE_5_0
-!incorrect-protocol-member! MTLRenderCommandEncoder::drawMeshThreadgroups:threadsPerObjectThreadgroup:threadsPerMeshThreadgroup: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::drawMeshThreadgroupsWithIndirectBuffer:indirectBufferOffset:threadsPerObjectThreadgroup:threadsPerMeshThreadgroup: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::drawMeshThreads:threadsPerObjectThreadgroup:threadsPerMeshThreadgroup: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshBufferOffset:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshBuffers:offsets:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshSamplerState:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshSamplerState:lodMinClamp:lodMaxClamp:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshSamplerStates:lodMinClamps:lodMaxClamps:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshSamplerStates:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshTexture:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshTextures:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectBuffer:offset:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectBufferOffset:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectBuffers:offsets:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectBytes:length:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshBuffer:offset:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setMeshBytes:length:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectSamplerState:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectSamplerState:lodMinClamp:lodMaxClamp:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectSamplerStates:lodMinClamps:lodMaxClamps:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectSamplerStates:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectTexture:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectTextures:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setObjectThreadgroupMemoryLength:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderPipelineState::maxTotalThreadsPerMeshThreadgroup is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderPipelineState::maxTotalThreadsPerObjectThreadgroup is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderPipelineState::objectThreadExecutionWidth is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLSamplerState::gpuResourceID is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLIndirectCommandBuffer::gpuResourceID is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLTexture::gpuResourceID is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLResourceStateCommandEncoder::moveTextureMappingsFromTexture:sourceSlice:sourceLevel:sourceOrigin:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLTexture::isSparse is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLTexture::tailSizeInBytes is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLArgumentEncoder::setAccelerationStructure:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLArgumentEncoder::setIntersectionFunctionTable:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLArgumentEncoder::setIntersectionFunctionTables:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLArgumentEncoder::setVisibleFunctionTable:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLArgumentEncoder::setVisibleFunctionTables:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLBlitCommandEncoder::getTextureAccessCounters:region:mipLevel:slice:resetCounters:countersBuffer:countersBufferOffset: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLBlitCommandEncoder::resetTextureAccessCounters:region:mipLevel:slice: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLCommandBuffer::accelerationStructureCommandEncoder is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLCommandBuffer::resourceStateCommandEncoder is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLCommandBuffer::resourceStateCommandEncoderWithDescriptor: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLComputeCommandEncoder::setAccelerationStructure:atBufferIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLComputeCommandEncoder::setIntersectionFunctionTable:atBufferIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLComputeCommandEncoder::setIntersectionFunctionTables:withBufferRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLComputeCommandEncoder::setVisibleFunctionTable:atBufferIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLComputeCommandEncoder::setVisibleFunctionTables:withBufferRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLComputePipelineState::functionHandleWithFunction: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLComputePipelineState::newComputePipelineStateWithAdditionalBinaryFunctions:error: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLComputePipelineState::newIntersectionFunctionTableWithDescriptor: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLComputePipelineState::newVisibleFunctionTableWithDescriptor: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLDevice::accelerationStructureSizesWithDescriptor: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLDevice::newAccelerationStructureWithDescriptor: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLDevice::newAccelerationStructureWithSize: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLDevice::newRasterizationRateMapWithDescriptor: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLDevice::sparseTileSizeInBytes is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLDevice::sparseTileSizeWithTextureType:pixelFormat:sampleCount: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLDevice::supports32BitFloatFiltering is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLDevice::supports32BitMSAA is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLDevice::supportsFunctionPointers is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLDevice::supportsFunctionPointersFromRender is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLDevice::supportsPrimitiveMotionBlur is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLDevice::supportsQueryTextureLOD is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLDevice::supportsRasterizationRateMapWithLayerCount: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLDevice::supportsRaytracing is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLDevice::supportsRaytracingFromRender is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLDevice::supportsShaderBarycentricCoordinates is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLDevice::supportsVertexAmplificationCount: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLHeap::newAccelerationStructureWithSize: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setTileIntersectionFunctionTables:withBufferRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setTileVisibleFunctionTable:atBufferIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setTileVisibleFunctionTables:withBufferRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setVertexAccelerationStructure:atBufferIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setVertexAmplificationCount:viewMappings: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setVertexIntersectionFunctionTable:atBufferIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setVertexVisibleFunctionTable:atBufferIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setVertexVisibleFunctionTables:withBufferRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderPipelineState::functionHandleWithFunction:stage: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderPipelineState::newIntersectionFunctionTableWithDescriptor:stage: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderPipelineState::newRenderPipelineStateWithAdditionalBinaryFunctions:error: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderPipelineState::newVisibleFunctionTableWithDescriptor:stage: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLTexture::compressionType is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLHeap::newAccelerationStructureWithDescriptor:offset: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLHeap::newAccelerationStructureWithSize:offset: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLLibrary::newIntersectionFunctionWithDescriptor:completionHandler: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLLibrary::newIntersectionFunctionWithDescriptor:error: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setFragmentAccelerationStructure:atBufferIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setFragmentIntersectionFunctionTable:atBufferIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setFragmentIntersectionFunctionTables:withBufferRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setFragmentVisibleFunctionTable:atBufferIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setFragmentVisibleFunctionTables:withBufferRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setTileAccelerationStructure:atBufferIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setTileIntersectionFunctionTable:atBufferIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setVertexIntersectionFunctionTables:withBufferRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLFunction::options is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLHeap::newAccelerationStructureWithDescriptor: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLBuffer::gpuAddress is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::memoryBarrierWithResources:count:afterStages:beforeStages: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::memoryBarrierWithScope:afterStages:beforeStages: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setVertexBuffer:offset:attributeStride:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setVertexBufferOffset:attributeStride:atIndex: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setVertexBuffers:offsets:attributeStrides:withRange: is REQUIRED and should be abstract
-!incorrect-protocol-member! MTLRenderCommandEncoder::setVertexBytes:length:attributeStride:atIndex: is REQUIRED and should be abstract
-
-# deprecated but cannot be removed
-!unknown-native-enum! MTLArgumentAccess bound
diff --git a/tests/xtro-sharpie/api-annotations-dotnet/tvOS-Metal.todo b/tests/xtro-sharpie/api-annotations-dotnet/tvOS-Metal.todo
deleted file mode 100644
index 01957d4e2c33..000000000000
--- a/tests/xtro-sharpie/api-annotations-dotnet/tvOS-Metal.todo
+++ /dev/null
@@ -1,71 +0,0 @@
-!deprecated-attribute-missing! MTLCompileOptions::fastMathEnabled missing a [Deprecated] attribute
-!deprecated-attribute-missing! MTLCompileOptions::setFastMathEnabled: missing a [Deprecated] attribute
-!missing-enum! MTLLogLevel not bound
-!missing-enum! MTLLogStateError not bound
-!missing-enum! MTLMathFloatingPointFunctions not bound
-!missing-enum! MTLMathMode not bound
-!missing-enum! MTLShaderValidation not bound
-!missing-enum! MTLStitchedLibraryOptions not bound
-!missing-enum-value! MTLFunctionOptions native value MTLFunctionOptionFailOnBinaryArchiveMiss = 4 not bound
-!missing-enum-value! MTLLanguageVersion native value MTLLanguageVersion3_2 = 196610 not bound
-!missing-field! MTLLogStateErrorDomain not bound
-!missing-field! NSDeviceCertificationiPhonePerformanceGaming not bound
-!missing-field! NSProcessInfoPerformanceProfileDidChangeNotification not bound
-!missing-field! NSProcessPerformanceProfileDefault not bound
-!missing-field! NSProcessPerformanceProfileSustained not bound
-!missing-pinvoke! MTLCopyAllDevices is not bound
-!missing-protocol! MTLAllocation not bound
-!missing-protocol! MTLLogState not bound
-!missing-protocol! MTLResidencySet not bound
-!missing-protocol-member! MTLBinaryArchive::addLibraryWithDescriptor:error: not found
-!missing-protocol-member! MTLBinaryArchive::addMeshRenderPipelineFunctionsWithDescriptor:error: not found
-!missing-protocol-member! MTLCommandBuffer::useResidencySet: not found
-!missing-protocol-member! MTLCommandBuffer::useResidencySets:count: not found
-!missing-protocol-member! MTLCommandQueue::addResidencySet: not found
-!missing-protocol-member! MTLCommandQueue::addResidencySets:count: not found
-!missing-protocol-member! MTLCommandQueue::removeResidencySet: not found
-!missing-protocol-member! MTLCommandQueue::removeResidencySets:count: not found
-!missing-protocol-member! MTLComputePipelineState::shaderValidation not found
-!missing-protocol-member! MTLDevice::newCommandQueueWithDescriptor: not found
-!missing-protocol-member! MTLDevice::newLogStateWithDescriptor:error: not found
-!missing-protocol-member! MTLDevice::newResidencySetWithDescriptor:error: not found
-!missing-protocol-member! MTLRenderPipelineState::shaderValidation not found
-!missing-selector! MTLCommandBufferDescriptor::logState not bound
-!missing-selector! MTLCommandBufferDescriptor::setLogState: not bound
-!missing-selector! MTLCommandQueueDescriptor::logState not bound
-!missing-selector! MTLCommandQueueDescriptor::maxCommandBufferCount not bound
-!missing-selector! MTLCommandQueueDescriptor::setLogState: not bound
-!missing-selector! MTLCommandQueueDescriptor::setMaxCommandBufferCount: not bound
-!missing-selector! MTLCompileOptions::enableLogging not bound
-!missing-selector! MTLCompileOptions::mathFloatingPointFunctions not bound
-!missing-selector! MTLCompileOptions::mathMode not bound
-!missing-selector! MTLCompileOptions::setEnableLogging: not bound
-!missing-selector! MTLCompileOptions::setMathFloatingPointFunctions: not bound
-!missing-selector! MTLCompileOptions::setMathMode: not bound
-!missing-selector! MTLComputePipelineDescriptor::setShaderValidation: not bound
-!missing-selector! MTLComputePipelineDescriptor::shaderValidation not bound
-!missing-selector! MTLLogStateDescriptor::bufferSize not bound
-!missing-selector! MTLLogStateDescriptor::level not bound
-!missing-selector! MTLLogStateDescriptor::setBufferSize: not bound
-!missing-selector! MTLLogStateDescriptor::setLevel: not bound
-!missing-selector! MTLMeshRenderPipelineDescriptor::binaryArchives not bound
-!missing-selector! MTLMeshRenderPipelineDescriptor::setBinaryArchives: not bound
-!missing-selector! MTLMeshRenderPipelineDescriptor::setShaderValidation: not bound
-!missing-selector! MTLMeshRenderPipelineDescriptor::shaderValidation not bound
-!missing-selector! MTLRenderPipelineDescriptor::setShaderValidation: not bound
-!missing-selector! MTLRenderPipelineDescriptor::shaderValidation not bound
-!missing-selector! MTLResidencySetDescriptor::initialCapacity not bound
-!missing-selector! MTLResidencySetDescriptor::label not bound
-!missing-selector! MTLResidencySetDescriptor::setInitialCapacity: not bound
-!missing-selector! MTLResidencySetDescriptor::setLabel: not bound
-!missing-selector! MTLStitchedLibraryDescriptor::binaryArchives not bound
-!missing-selector! MTLStitchedLibraryDescriptor::options not bound
-!missing-selector! MTLStitchedLibraryDescriptor::setBinaryArchives: not bound
-!missing-selector! MTLStitchedLibraryDescriptor::setOptions: not bound
-!missing-selector! MTLTileRenderPipelineDescriptor::setShaderValidation: not bound
-!missing-selector! MTLTileRenderPipelineDescriptor::shaderValidation not bound
-!missing-selector! NSProcessInfo::hasPerformanceProfile: not bound
-!missing-selector! NSProcessInfo::isDeviceCertifiedFor: not bound
-!missing-type! MTLCommandQueueDescriptor not bound
-!missing-type! MTLLogStateDescriptor not bound
-!missing-type! MTLResidencySetDescriptor not bound
diff --git a/tests/xtro-sharpie/iOS-Metal.todo b/tests/xtro-sharpie/iOS-Metal.todo
index 46f5ab46655e..1ff9920af9c1 100644
--- a/tests/xtro-sharpie/iOS-Metal.todo
+++ b/tests/xtro-sharpie/iOS-Metal.todo
@@ -1,89 +1,3 @@
-!deprecated-attribute-missing! MTLCompileOptions::fastMathEnabled missing a [Deprecated] attribute
-!deprecated-attribute-missing! MTLCompileOptions::setFastMathEnabled: missing a [Deprecated] attribute
-!missing-enum! MTLLogLevel not bound
-!missing-enum! MTLLogStateError not bound
-!missing-enum! MTLMathFloatingPointFunctions not bound
-!missing-enum! MTLMathMode not bound
-!missing-enum! MTLMatrixLayout not bound
-!missing-enum! MTLShaderValidation not bound
-!missing-enum! MTLStitchedLibraryOptions not bound
-!missing-enum! MTLTransformType not bound
-!missing-enum-value! MTLFunctionOptions native value MTLFunctionOptionFailOnBinaryArchiveMiss = 4 not bound
-!missing-enum-value! MTLLanguageVersion native value MTLLanguageVersion3_2 = 196610 not bound
-!missing-field! MTLLogStateErrorDomain not bound
-!missing-field! NSDeviceCertificationiPhonePerformanceGaming not bound
-!missing-field! NSProcessInfoPerformanceProfileDidChangeNotification not bound
-!missing-field! NSProcessPerformanceProfileDefault not bound
-!missing-field! NSProcessPerformanceProfileSustained not bound
-!missing-pinvoke! MTLCopyAllDevices is not bound
-!missing-protocol! MTLAllocation not bound
-!missing-protocol! MTLLogState not bound
-!missing-protocol! MTLResidencySet not bound
-!missing-protocol-member! MTLBinaryArchive::addLibraryWithDescriptor:error: not found
-!missing-protocol-member! MTLBinaryArchive::addMeshRenderPipelineFunctionsWithDescriptor:error: not found
-!missing-protocol-member! MTLCommandBuffer::useResidencySet: not found
-!missing-protocol-member! MTLCommandBuffer::useResidencySets:count: not found
-!missing-protocol-member! MTLCommandQueue::addResidencySet: not found
-!missing-protocol-member! MTLCommandQueue::addResidencySets:count: not found
-!missing-protocol-member! MTLCommandQueue::removeResidencySet: not found
-!missing-protocol-member! MTLCommandQueue::removeResidencySets:count: not found
-!missing-protocol-member! MTLComputePipelineState::shaderValidation not found
-!missing-protocol-member! MTLDevice::newCommandQueueWithDescriptor: not found
-!missing-protocol-member! MTLDevice::newLogStateWithDescriptor:error: not found
-!missing-protocol-member! MTLDevice::newResidencySetWithDescriptor:error: not found
-!missing-protocol-member! MTLRenderPipelineState::shaderValidation not found
-!missing-selector! MTLAccelerationStructureMotionTriangleGeometryDescriptor::setTransformationMatrixLayout: not bound
-!missing-selector! MTLAccelerationStructureMotionTriangleGeometryDescriptor::transformationMatrixLayout not bound
-!missing-selector! MTLAccelerationStructureTriangleGeometryDescriptor::setTransformationMatrixLayout: not bound
-!missing-selector! MTLAccelerationStructureTriangleGeometryDescriptor::transformationMatrixLayout not bound
-!missing-selector! MTLCommandBufferDescriptor::logState not bound
-!missing-selector! MTLCommandBufferDescriptor::setLogState: not bound
-!missing-selector! MTLCommandQueueDescriptor::logState not bound
-!missing-selector! MTLCommandQueueDescriptor::maxCommandBufferCount not bound
-!missing-selector! MTLCommandQueueDescriptor::setLogState: not bound
-!missing-selector! MTLCommandQueueDescriptor::setMaxCommandBufferCount: not bound
-!missing-selector! MTLCompileOptions::enableLogging not bound
-!missing-selector! MTLCompileOptions::mathFloatingPointFunctions not bound
-!missing-selector! MTLCompileOptions::mathMode not bound
-!missing-selector! MTLCompileOptions::setEnableLogging: not bound
-!missing-selector! MTLCompileOptions::setMathFloatingPointFunctions: not bound
-!missing-selector! MTLCompileOptions::setMathMode: not bound
-!missing-selector! MTLComputePipelineDescriptor::setShaderValidation: not bound
-!missing-selector! MTLComputePipelineDescriptor::shaderValidation not bound
-!missing-selector! MTLIndirectInstanceAccelerationStructureDescriptor::instanceTransformationMatrixLayout not bound
-!missing-selector! MTLIndirectInstanceAccelerationStructureDescriptor::motionTransformStride not bound
-!missing-selector! MTLIndirectInstanceAccelerationStructureDescriptor::motionTransformType not bound
-!missing-selector! MTLIndirectInstanceAccelerationStructureDescriptor::setInstanceTransformationMatrixLayout: not bound
-!missing-selector! MTLIndirectInstanceAccelerationStructureDescriptor::setMotionTransformStride: not bound
-!missing-selector! MTLIndirectInstanceAccelerationStructureDescriptor::setMotionTransformType: not bound
-!missing-selector! MTLInstanceAccelerationStructureDescriptor::instanceTransformationMatrixLayout not bound
-!missing-selector! MTLInstanceAccelerationStructureDescriptor::motionTransformStride not bound
-!missing-selector! MTLInstanceAccelerationStructureDescriptor::motionTransformType not bound
-!missing-selector! MTLInstanceAccelerationStructureDescriptor::setInstanceTransformationMatrixLayout: not bound
-!missing-selector! MTLInstanceAccelerationStructureDescriptor::setMotionTransformStride: not bound
-!missing-selector! MTLInstanceAccelerationStructureDescriptor::setMotionTransformType: not bound
-!missing-selector! MTLLogStateDescriptor::bufferSize not bound
-!missing-selector! MTLLogStateDescriptor::level not bound
-!missing-selector! MTLLogStateDescriptor::setBufferSize: not bound
-!missing-selector! MTLLogStateDescriptor::setLevel: not bound
-!missing-selector! MTLMeshRenderPipelineDescriptor::binaryArchives not bound
-!missing-selector! MTLMeshRenderPipelineDescriptor::setBinaryArchives: not bound
-!missing-selector! MTLMeshRenderPipelineDescriptor::setShaderValidation: not bound
-!missing-selector! MTLMeshRenderPipelineDescriptor::shaderValidation not bound
-!missing-selector! MTLRenderPipelineDescriptor::setShaderValidation: not bound
-!missing-selector! MTLRenderPipelineDescriptor::shaderValidation not bound
-!missing-selector! MTLResidencySetDescriptor::initialCapacity not bound
-!missing-selector! MTLResidencySetDescriptor::label not bound
-!missing-selector! MTLResidencySetDescriptor::setInitialCapacity: not bound
-!missing-selector! MTLResidencySetDescriptor::setLabel: not bound
-!missing-selector! MTLStitchedLibraryDescriptor::binaryArchives not bound
-!missing-selector! MTLStitchedLibraryDescriptor::options not bound
-!missing-selector! MTLStitchedLibraryDescriptor::setBinaryArchives: not bound
-!missing-selector! MTLStitchedLibraryDescriptor::setOptions: not bound
-!missing-selector! MTLTileRenderPipelineDescriptor::setShaderValidation: not bound
-!missing-selector! MTLTileRenderPipelineDescriptor::shaderValidation not bound
-!missing-selector! NSProcessInfo::hasPerformanceProfile: not bound
-!missing-selector! NSProcessInfo::isDeviceCertifiedFor: not bound
-!missing-type! MTLCommandQueueDescriptor not bound
-!missing-type! MTLLogStateDescriptor not bound
-!missing-type! MTLResidencySetDescriptor not bound
+!incorrect-protocol-member! MTLBinaryArchive::addLibraryWithDescriptor:error: is REQUIRED and should be abstract
+!incorrect-protocol-member! MTLBinaryArchive::addMeshRenderPipelineFunctionsWithDescriptor:error: is REQUIRED and should be abstract
+!incorrect-protocol-member! MTLDevice::newResidencySetWithDescriptor:error: is REQUIRED and should be abstract
diff --git a/tests/xtro-sharpie/macOS-Metal.todo b/tests/xtro-sharpie/macOS-Metal.todo
index 5e2154263d5a..52057bb3df8e 100644
--- a/tests/xtro-sharpie/macOS-Metal.todo
+++ b/tests/xtro-sharpie/macOS-Metal.todo
@@ -1,95 +1,10 @@
-!missing-protocol-member! MTLIndirectRenderCommand::clearBarrier not found
-!missing-protocol-member! MTLIndirectRenderCommand::drawMeshThreadgroups:threadsPerObjectThreadgroup:threadsPerMeshThreadgroup: not found
-!missing-protocol-member! MTLIndirectRenderCommand::drawMeshThreads:threadsPerObjectThreadgroup:threadsPerMeshThreadgroup: not found
-!missing-protocol-member! MTLIndirectRenderCommand::setBarrier not found
-!missing-protocol-member! MTLIndirectRenderCommand::setMeshBuffer:offset:atIndex: not found
-!missing-protocol-member! MTLIndirectRenderCommand::setObjectBuffer:offset:atIndex: not found
-!missing-protocol-member! MTLIndirectRenderCommand::setObjectThreadgroupMemoryLength:atIndex: not found
-!deprecated-attribute-missing! MTLCompileOptions::fastMathEnabled missing a [Deprecated] attribute
-!deprecated-attribute-missing! MTLCompileOptions::setFastMathEnabled: missing a [Deprecated] attribute
-!missing-enum! MTLLogLevel not bound
-!missing-enum! MTLLogStateError not bound
-!missing-enum! MTLMathFloatingPointFunctions not bound
-!missing-enum! MTLMathMode not bound
-!missing-enum! MTLMatrixLayout not bound
-!missing-enum! MTLShaderValidation not bound
-!missing-enum! MTLStitchedLibraryOptions not bound
-!missing-enum! MTLTransformType not bound
-!missing-enum-value! MTLFunctionOptions native value MTLFunctionOptionFailOnBinaryArchiveMiss = 4 not bound
-!missing-enum-value! MTLLanguageVersion native value MTLLanguageVersion3_2 = 196610 not bound
-!missing-field! MTLLogStateErrorDomain not bound
-!missing-field! NSDeviceCertificationiPhonePerformanceGaming not bound
-!missing-field! NSProcessInfoPerformanceProfileDidChangeNotification not bound
-!missing-field! NSProcessPerformanceProfileDefault not bound
-!missing-field! NSProcessPerformanceProfileSustained not bound
-!missing-protocol! MTLAllocation not bound
-!missing-protocol! MTLLogState not bound
-!missing-protocol! MTLResidencySet not bound
-!missing-protocol-member! MTLBinaryArchive::addLibraryWithDescriptor:error: not found
-!missing-protocol-member! MTLBinaryArchive::addMeshRenderPipelineFunctionsWithDescriptor:error: not found
-!missing-protocol-member! MTLCommandBuffer::useResidencySet: not found
-!missing-protocol-member! MTLCommandBuffer::useResidencySets:count: not found
-!missing-protocol-member! MTLCommandQueue::addResidencySet: not found
-!missing-protocol-member! MTLCommandQueue::addResidencySets:count: not found
-!missing-protocol-member! MTLCommandQueue::removeResidencySet: not found
-!missing-protocol-member! MTLCommandQueue::removeResidencySets:count: not found
-!missing-protocol-member! MTLComputePipelineState::shaderValidation not found
-!missing-protocol-member! MTLDevice::newCommandQueueWithDescriptor: not found
-!missing-protocol-member! MTLDevice::newLogStateWithDescriptor:error: not found
-!missing-protocol-member! MTLDevice::newResidencySetWithDescriptor:error: not found
-!missing-protocol-member! MTLRenderPipelineState::shaderValidation not found
-!missing-selector! MTLAccelerationStructureMotionTriangleGeometryDescriptor::setTransformationMatrixLayout: not bound
-!missing-selector! MTLAccelerationStructureMotionTriangleGeometryDescriptor::transformationMatrixLayout not bound
-!missing-selector! MTLAccelerationStructureTriangleGeometryDescriptor::setTransformationMatrixLayout: not bound
-!missing-selector! MTLAccelerationStructureTriangleGeometryDescriptor::transformationMatrixLayout not bound
-!missing-selector! MTLCommandBufferDescriptor::logState not bound
-!missing-selector! MTLCommandBufferDescriptor::setLogState: not bound
-!missing-selector! MTLCommandQueueDescriptor::logState not bound
-!missing-selector! MTLCommandQueueDescriptor::maxCommandBufferCount not bound
-!missing-selector! MTLCommandQueueDescriptor::setLogState: not bound
-!missing-selector! MTLCommandQueueDescriptor::setMaxCommandBufferCount: not bound
-!missing-selector! MTLCompileOptions::enableLogging not bound
-!missing-selector! MTLCompileOptions::mathFloatingPointFunctions not bound
-!missing-selector! MTLCompileOptions::mathMode not bound
-!missing-selector! MTLCompileOptions::setEnableLogging: not bound
-!missing-selector! MTLCompileOptions::setMathFloatingPointFunctions: not bound
-!missing-selector! MTLCompileOptions::setMathMode: not bound
-!missing-selector! MTLComputePipelineDescriptor::setShaderValidation: not bound
-!missing-selector! MTLComputePipelineDescriptor::shaderValidation not bound
-!missing-selector! MTLIndirectInstanceAccelerationStructureDescriptor::instanceTransformationMatrixLayout not bound
-!missing-selector! MTLIndirectInstanceAccelerationStructureDescriptor::motionTransformStride not bound
-!missing-selector! MTLIndirectInstanceAccelerationStructureDescriptor::motionTransformType not bound
-!missing-selector! MTLIndirectInstanceAccelerationStructureDescriptor::setInstanceTransformationMatrixLayout: not bound
-!missing-selector! MTLIndirectInstanceAccelerationStructureDescriptor::setMotionTransformStride: not bound
-!missing-selector! MTLIndirectInstanceAccelerationStructureDescriptor::setMotionTransformType: not bound
-!missing-selector! MTLInstanceAccelerationStructureDescriptor::instanceTransformationMatrixLayout not bound
-!missing-selector! MTLInstanceAccelerationStructureDescriptor::motionTransformStride not bound
-!missing-selector! MTLInstanceAccelerationStructureDescriptor::motionTransformType not bound
-!missing-selector! MTLInstanceAccelerationStructureDescriptor::setInstanceTransformationMatrixLayout: not bound
-!missing-selector! MTLInstanceAccelerationStructureDescriptor::setMotionTransformStride: not bound
-!missing-selector! MTLInstanceAccelerationStructureDescriptor::setMotionTransformType: not bound
-!missing-selector! MTLLogStateDescriptor::bufferSize not bound
-!missing-selector! MTLLogStateDescriptor::level not bound
-!missing-selector! MTLLogStateDescriptor::setBufferSize: not bound
-!missing-selector! MTLLogStateDescriptor::setLevel: not bound
-!missing-selector! MTLMeshRenderPipelineDescriptor::binaryArchives not bound
-!missing-selector! MTLMeshRenderPipelineDescriptor::setBinaryArchives: not bound
-!missing-selector! MTLMeshRenderPipelineDescriptor::setShaderValidation: not bound
-!missing-selector! MTLMeshRenderPipelineDescriptor::shaderValidation not bound
-!missing-selector! MTLRenderPipelineDescriptor::setShaderValidation: not bound
-!missing-selector! MTLRenderPipelineDescriptor::shaderValidation not bound
-!missing-selector! MTLResidencySetDescriptor::initialCapacity not bound
-!missing-selector! MTLResidencySetDescriptor::label not bound
-!missing-selector! MTLResidencySetDescriptor::setInitialCapacity: not bound
-!missing-selector! MTLResidencySetDescriptor::setLabel: not bound
-!missing-selector! MTLStitchedLibraryDescriptor::binaryArchives not bound
-!missing-selector! MTLStitchedLibraryDescriptor::options not bound
-!missing-selector! MTLStitchedLibraryDescriptor::setBinaryArchives: not bound
-!missing-selector! MTLStitchedLibraryDescriptor::setOptions: not bound
-!missing-selector! MTLTileRenderPipelineDescriptor::setShaderValidation: not bound
-!missing-selector! MTLTileRenderPipelineDescriptor::shaderValidation not bound
-!missing-selector! NSProcessInfo::hasPerformanceProfile: not bound
-!missing-selector! NSProcessInfo::isDeviceCertifiedFor: not bound
-!missing-type! MTLCommandQueueDescriptor not bound
-!missing-type! MTLLogStateDescriptor not bound
-!missing-type! MTLResidencySetDescriptor not bound
+!incorrect-protocol-member! MTLBinaryArchive::addLibraryWithDescriptor:error: is REQUIRED and should be abstract
+!incorrect-protocol-member! MTLBinaryArchive::addMeshRenderPipelineFunctionsWithDescriptor:error: is REQUIRED and should be abstract
+!incorrect-protocol-member! MTLDevice::newResidencySetWithDescriptor:error: is REQUIRED and should be abstract
+!incorrect-protocol-member! MTLIndirectRenderCommand::clearBarrier is REQUIRED and should be abstract
+!incorrect-protocol-member! MTLIndirectRenderCommand::drawMeshThreadgroups:threadsPerObjectThreadgroup:threadsPerMeshThreadgroup: is REQUIRED and should be abstract
+!incorrect-protocol-member! MTLIndirectRenderCommand::drawMeshThreads:threadsPerObjectThreadgroup:threadsPerMeshThreadgroup: is REQUIRED and should be abstract
+!incorrect-protocol-member! MTLIndirectRenderCommand::setBarrier is REQUIRED and should be abstract
+!incorrect-protocol-member! MTLIndirectRenderCommand::setMeshBuffer:offset:atIndex: is REQUIRED and should be abstract
+!incorrect-protocol-member! MTLIndirectRenderCommand::setObjectBuffer:offset:atIndex: is REQUIRED and should be abstract
+!incorrect-protocol-member! MTLIndirectRenderCommand::setObjectThreadgroupMemoryLength:atIndex: is REQUIRED and should be abstract
diff --git a/tests/xtro-sharpie/tvOS-Metal.todo b/tests/xtro-sharpie/tvOS-Metal.todo
index 01957d4e2c33..1ff9920af9c1 100644
--- a/tests/xtro-sharpie/tvOS-Metal.todo
+++ b/tests/xtro-sharpie/tvOS-Metal.todo
@@ -1,71 +1,3 @@
-!deprecated-attribute-missing! MTLCompileOptions::fastMathEnabled missing a [Deprecated] attribute
-!deprecated-attribute-missing! MTLCompileOptions::setFastMathEnabled: missing a [Deprecated] attribute
-!missing-enum! MTLLogLevel not bound
-!missing-enum! MTLLogStateError not bound
-!missing-enum! MTLMathFloatingPointFunctions not bound
-!missing-enum! MTLMathMode not bound
-!missing-enum! MTLShaderValidation not bound
-!missing-enum! MTLStitchedLibraryOptions not bound
-!missing-enum-value! MTLFunctionOptions native value MTLFunctionOptionFailOnBinaryArchiveMiss = 4 not bound
-!missing-enum-value! MTLLanguageVersion native value MTLLanguageVersion3_2 = 196610 not bound
-!missing-field! MTLLogStateErrorDomain not bound
-!missing-field! NSDeviceCertificationiPhonePerformanceGaming not bound
-!missing-field! NSProcessInfoPerformanceProfileDidChangeNotification not bound
-!missing-field! NSProcessPerformanceProfileDefault not bound
-!missing-field! NSProcessPerformanceProfileSustained not bound
-!missing-pinvoke! MTLCopyAllDevices is not bound
-!missing-protocol! MTLAllocation not bound
-!missing-protocol! MTLLogState not bound
-!missing-protocol! MTLResidencySet not bound
-!missing-protocol-member! MTLBinaryArchive::addLibraryWithDescriptor:error: not found
-!missing-protocol-member! MTLBinaryArchive::addMeshRenderPipelineFunctionsWithDescriptor:error: not found
-!missing-protocol-member! MTLCommandBuffer::useResidencySet: not found
-!missing-protocol-member! MTLCommandBuffer::useResidencySets:count: not found
-!missing-protocol-member! MTLCommandQueue::addResidencySet: not found
-!missing-protocol-member! MTLCommandQueue::addResidencySets:count: not found
-!missing-protocol-member! MTLCommandQueue::removeResidencySet: not found
-!missing-protocol-member! MTLCommandQueue::removeResidencySets:count: not found
-!missing-protocol-member! MTLComputePipelineState::shaderValidation not found
-!missing-protocol-member! MTLDevice::newCommandQueueWithDescriptor: not found
-!missing-protocol-member! MTLDevice::newLogStateWithDescriptor:error: not found
-!missing-protocol-member! MTLDevice::newResidencySetWithDescriptor:error: not found
-!missing-protocol-member! MTLRenderPipelineState::shaderValidation not found
-!missing-selector! MTLCommandBufferDescriptor::logState not bound
-!missing-selector! MTLCommandBufferDescriptor::setLogState: not bound
-!missing-selector! MTLCommandQueueDescriptor::logState not bound
-!missing-selector! MTLCommandQueueDescriptor::maxCommandBufferCount not bound
-!missing-selector! MTLCommandQueueDescriptor::setLogState: not bound
-!missing-selector! MTLCommandQueueDescriptor::setMaxCommandBufferCount: not bound
-!missing-selector! MTLCompileOptions::enableLogging not bound
-!missing-selector! MTLCompileOptions::mathFloatingPointFunctions not bound
-!missing-selector! MTLCompileOptions::mathMode not bound
-!missing-selector! MTLCompileOptions::setEnableLogging: not bound
-!missing-selector! MTLCompileOptions::setMathFloatingPointFunctions: not bound
-!missing-selector! MTLCompileOptions::setMathMode: not bound
-!missing-selector! MTLComputePipelineDescriptor::setShaderValidation: not bound
-!missing-selector! MTLComputePipelineDescriptor::shaderValidation not bound
-!missing-selector! MTLLogStateDescriptor::bufferSize not bound
-!missing-selector! MTLLogStateDescriptor::level not bound
-!missing-selector! MTLLogStateDescriptor::setBufferSize: not bound
-!missing-selector! MTLLogStateDescriptor::setLevel: not bound
-!missing-selector! MTLMeshRenderPipelineDescriptor::binaryArchives not bound
-!missing-selector! MTLMeshRenderPipelineDescriptor::setBinaryArchives: not bound
-!missing-selector! MTLMeshRenderPipelineDescriptor::setShaderValidation: not bound
-!missing-selector! MTLMeshRenderPipelineDescriptor::shaderValidation not bound
-!missing-selector! MTLRenderPipelineDescriptor::setShaderValidation: not bound
-!missing-selector! MTLRenderPipelineDescriptor::shaderValidation not bound
-!missing-selector! MTLResidencySetDescriptor::initialCapacity not bound
-!missing-selector! MTLResidencySetDescriptor::label not bound
-!missing-selector! MTLResidencySetDescriptor::setInitialCapacity: not bound
-!missing-selector! MTLResidencySetDescriptor::setLabel: not bound
-!missing-selector! MTLStitchedLibraryDescriptor::binaryArchives not bound
-!missing-selector! MTLStitchedLibraryDescriptor::options not bound
-!missing-selector! MTLStitchedLibraryDescriptor::setBinaryArchives: not bound
-!missing-selector! MTLStitchedLibraryDescriptor::setOptions: not bound
-!missing-selector! MTLTileRenderPipelineDescriptor::setShaderValidation: not bound
-!missing-selector! MTLTileRenderPipelineDescriptor::shaderValidation not bound
-!missing-selector! NSProcessInfo::hasPerformanceProfile: not bound
-!missing-selector! NSProcessInfo::isDeviceCertifiedFor: not bound
-!missing-type! MTLCommandQueueDescriptor not bound
-!missing-type! MTLLogStateDescriptor not bound
-!missing-type! MTLResidencySetDescriptor not bound
+!incorrect-protocol-member! MTLBinaryArchive::addLibraryWithDescriptor:error: is REQUIRED and should be abstract
+!incorrect-protocol-member! MTLBinaryArchive::addMeshRenderPipelineFunctionsWithDescriptor:error: is REQUIRED and should be abstract
+!incorrect-protocol-member! MTLDevice::newResidencySetWithDescriptor:error: is REQUIRED and should be abstract