Skip to content

Metal tvOS xcode26.0 rc

Alex Soto edited this page Sep 10, 2025 · 2 revisions

#Metal.framework https://github.com/dotnet/macios/pull/23779

diff -ruN /Applications/Xcode_26.0.0-beta7.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4RenderCommandEncoder.h /Applications/Xcode_26.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4RenderCommandEncoder.h
--- /Applications/Xcode_26.0.0-beta7.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4RenderCommandEncoder.h	2025-08-07 21:20:09
+++ /Applications/Xcode_26.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4RenderCommandEncoder.h	2025-08-18 23:20:23
@@ -139,6 +139,17 @@
           slopeScale:(float)slopeScale
                clamp:(float)clamp;
 
+/// Configures the minimum and maximum bounds for depth bounds testing.
+///
+/// The render command encoder disables depth bounds testing by default.
+/// The render command encoder also disables depth bounds testing when all of the following properties equal a specific value:
+/// - The `minBound` property is equal to `0.0f`.
+/// - The `maxBound` property is equal to `1.0f`.
+/// Both `minBound` and `maxBound` need to be within `[0.0f, 1.0f]`, and `minBound` needs to be less than or equal to `maxBound`.
+/// - Parameters:
+///   - minBound: A minimum bound for depth testing, which discards fragments with a stored depth that is less than `minBound`.
+///   - maxBound: A maximum bound for depth testing, which discards fragments with a stored depth that is greater than `maxBound`.
+- (void)setDepthTestMinBound:(float)minBound maxBound:(float)maxBound;
 
 /// Sets a scissor rectangle to discard fragments outside a specific area.
 ///
diff -ruN /Applications/Xcode_26.0.0-beta7.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLArgumentEncoder.h /Applications/Xcode_26.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLArgumentEncoder.h
--- /Applications/Xcode_26.0.0-beta7.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLArgumentEncoder.h	2025-08-04 05:29:57
+++ /Applications/Xcode_26.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLArgumentEncoder.h	2025-08-02 19:54:06
@@ -19,6 +19,7 @@
 @protocol MTLVisibleFunctionTable;
 @protocol MTLAccelerationStructure;
 @protocol MTLIntersectionFunctionTable;
+@protocol MTLDepthStencilState;
 
 /*
  @brief
@@ -192,6 +193,17 @@
 - (void)setIntersectionFunctionTables:(const id <MTLIntersectionFunctionTable> __nullable [__nonnull])intersectionFunctionTables withRange:(NSRange)range API_AVAILABLE(macos(11.0), ios(14.0), tvos(16.0));
 
 
+/*!
+ * @method setDepthStencilState:atIndex
+ * @brief Sets a depth stencil state at a given bind point index
+ */
+- (void)setDepthStencilState:(nullable id<MTLDepthStencilState>)depthStencilState atIndex:(NSUInteger)index API_AVAILABLE(macos(26.0), ios(26.0));
+
+/*!
+ * @method setDepthStencilStates:withRange:
+ * @brief Sets an array of depth stencil states at a given buffer index range
+ */
+- (void)setDepthStencilStates:(const id<MTLDepthStencilState> __nullable [__nonnull])depthStencilStates withRange:(NSRange)range API_AVAILABLE(macos(26.0), ios(26.0));
 
 @end
 
diff -ruN /Applications/Xcode_26.0.0-beta7.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDataType.h /Applications/Xcode_26.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDataType.h
--- /Applications/Xcode_26.0.0-beta7.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDataType.h	2025-08-04 07:50:58
+++ /Applications/Xcode_26.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDataType.h	2025-08-03 02:59:24
@@ -225,6 +225,8 @@
     /// Represents a data type consisting of a vector four BFloat values.
     MTLDataTypeBFloat4 API_AVAILABLE(macos(14.0), ios(17.0)) = 124,
     
+    /// Represents a data type corresponding to a depth-stencil state object.
+    MTLDataTypeDepthStencilState API_AVAILABLE(macos(26.0), ios(26.0)) = 139,
     
     /// Represents a data type corresponding to a machine learning tensor.
     MTLDataTypeTensor API_AVAILABLE(macos(26.0), ios(26.0)) = 140,
diff -ruN /Applications/Xcode_26.0.0-beta7.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDepthStencil.h /Applications/Xcode_26.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDepthStencil.h
--- /Applications/Xcode_26.0.0-beta7.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDepthStencil.h	2025-08-04 02:42:28
+++ /Applications/Xcode_26.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDepthStencil.h	2025-08-02 19:54:06
@@ -89,5 +89,10 @@
  */
 @property (readonly) id <MTLDevice> device;
 
+/*!
+ @property gpuResourceID
+ @abstract Handle of the GPU resource suitable for storing in an Argument Buffer
+ */
+@property (readonly) MTLResourceID gpuResourceID API_AVAILABLE(macos(26.0), ios(26.0));
 @end
 NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_26.0.0-beta7.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDevice.h /Applications/Xcode_26.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDevice.h
--- /Applications/Xcode_26.0.0-beta7.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDevice.h	2025-08-07 21:20:06
+++ /Applications/Xcode_26.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDevice.h	2025-08-02 19:54:04
@@ -197,6 +197,7 @@
     MTLGPUFamilyApple7  = 1007,
     MTLGPUFamilyApple8  = 1008,
     MTLGPUFamilyApple9  = 1009,
+    MTLGPUFamilyApple10 = 1010,
 
     MTLGPUFamilyMac1 API_DEPRECATED_WITH_REPLACEMENT("MTLGPUFamilyMac2", macos(10.15, 13.0), ios(13.0, 16.0)) = 2001,
     MTLGPUFamilyMac2 = 2002,
diff -ruN /Applications/Xcode_26.0.0-beta7.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIndirectCommandBuffer.h /Applications/Xcode_26.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIndirectCommandBuffer.h
--- /Applications/Xcode_26.0.0-beta7.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIndirectCommandBuffer.h	2025-08-04 07:50:57
+++ /Applications/Xcode_26.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIndirectCommandBuffer.h	2025-08-03 00:24:38
@@ -72,6 +72,36 @@
  */
 @property (readwrite, nonatomic) BOOL inheritBuffers;
 
+/// Configures whether the indirect command buffer inherits the depth stencil state from the encoder.
+///
+/// The property's default value is <doc://com.apple.documentation/documentation/swift/true>.
+@property (readwrite, nonatomic) BOOL inheritDepthStencilState API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// Configures whether the indirect command buffer inherits the depth bias from the encoder.
+///
+/// The property's default value is <doc://com.apple.documentation/documentation/swift/true>.
+@property (readwrite, nonatomic) BOOL inheritDepthBias API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// Configures whether the indirect command buffer inherits the depth clip mode from the encoder.
+///
+/// The property's default value is <doc://com.apple.documentation/documentation/swift/true>.
+@property (readwrite, nonatomic) BOOL inheritDepthClipMode API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// Configures whether the indirect command buffer inherits the cull mode from the encoder.
+///
+/// The property's default value is <doc://com.apple.documentation/documentation/swift/true>.
+@property (readwrite, nonatomic) BOOL inheritCullMode API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// Configures whether the indirect command buffer inherits the front facing winding from the encoder.
+///
+/// The property's default value is <doc://com.apple.documentation/documentation/swift/true>.
+@property (readwrite, nonatomic) BOOL inheritFrontFacingWinding API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// Configures whether the indirect command buffer inherits the triangle fill mode from the encoder.
+///
+/// The property's default value is <doc://com.apple.documentation/documentation/swift/true>.
+@property (readwrite, nonatomic) BOOL inheritTriangleFillMode API_AVAILABLE(macos(26.0), ios(26.0));
+
 
 /*!
  @abstract
diff -ruN /Applications/Xcode_26.0.0-beta7.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIndirectCommandEncoder.h /Applications/Xcode_26.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIndirectCommandEncoder.h
--- /Applications/Xcode_26.0.0-beta7.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIndirectCommandEncoder.h	2025-08-04 05:29:57
+++ /Applications/Xcode_26.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIndirectCommandEncoder.h	2025-08-03 00:24:38
@@ -63,6 +63,12 @@
 - (void)clearBarrier API_AVAILABLE(macos(14.0), ios(17.0), tvos(18.1), visionos(2.1));
 
 
+- (void)setDepthStencilState:(nullable id<MTLDepthStencilState>)depthStencilState API_AVAILABLE(macos(26.0), ios(26.0));
+- (void)setDepthBias:(float)depthBias slopeScale:(float)slopeScale clamp:(float)clamp API_AVAILABLE(macos(26.0), ios(26.0));
+- (void)setDepthClipMode:(MTLDepthClipMode)depthClipMode API_AVAILABLE(macos(26.0), ios(26.0));
+- (void)setCullMode:(MTLCullMode)cullMode API_AVAILABLE(macos(26.0), ios(26.0));
+- (void)setFrontFacingWinding:(MTLWinding)frontFacingWindning API_AVAILABLE(macos(26.0), ios(26.0));
+- (void)setTriangleFillMode:(MTLTriangleFillMode)fillMode API_AVAILABLE(macos(26.0), ios(26.0));
 
 - (void)reset;
 
diff -ruN /Applications/Xcode_26.0.0-beta7.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderCommandEncoder.h /Applications/Xcode_26.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderCommandEncoder.h
--- /Applications/Xcode_26.0.0-beta7.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderCommandEncoder.h	2025-08-07 21:20:07
+++ /Applications/Xcode_26.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderCommandEncoder.h	2025-08-18 23:20:22
@@ -319,6 +319,17 @@
  */
 - (void)setDepthBias:(float)depthBias slopeScale:(float)slopeScale clamp:(float)clamp;
 
+/// Configures the minimum and maximum bounds for depth bounds testing.
+///
+/// The render command encoder disables depth bounds testing by default.
+/// The render command encoder also disables depth bounds testing when all of the following properties equal a specific value:
+/// - The `minBound` property is equal to `0.0f`.
+/// - The `maxBound` property is equal to `1.0f`.
+/// Both `minBound` and `maxBound` need to be within `[0.0f, 1.0f]`, and `minBound` needs to be less than or equal to `maxBound`.
+/// - Parameters:
+///   - minBound: A minimum bound for depth testing, which discards fragments with a stored depth that is less than `minBound`.
+///   - maxBound: A maximum bound for depth testing, which discards fragments with a stored depth that is greater than `maxBound`.
+- (void)setDepthTestMinBound:(float)minBound maxBound:(float)maxBound API_AVAILABLE(macos(26.0), ios(26.0));
 
 /*!
  @method setScissorRect:
diff -ruN /Applications/Xcode_26.0.0-beta7.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLSampler.h /Applications/Xcode_26.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLSampler.h
--- /Applications/Xcode_26.0.0-beta7.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLSampler.h	2025-08-04 02:16:33
+++ /Applications/Xcode_26.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLSampler.h	2025-08-18 23:42:07
@@ -89,6 +89,15 @@
     MTLSamplerBorderColorOpaqueWhite = 2,       // {1,1,1,1}
 } API_AVAILABLE(macos(10.12), ios(14.0), tvos(16.0));
 
+/// Configures how the sampler aggregates contributing samples to a final value.
+typedef NS_ENUM(NSUInteger, MTLSamplerReductionMode) {
+    /// A reduction mode that adds together the product of each contributing sample value by its weight.
+    MTLSamplerReductionModeWeightedAverage = 0,
+    /// A reduction mode that finds the minimum contributing sample value by separately evaluating each channel.
+    MTLSamplerReductionModeMinimum = 1,
+    /// A reduction mode that finds the maximum contributing sample value by separately evaluating each channel.
+    MTLSamplerReductionModeMaximum = 2,
+} API_AVAILABLE(macos(26.0), ios(26.0));
 
 /*!
  @class MTLSamplerDescriptor
@@ -149,6 +158,15 @@
  */
 @property (nonatomic) MTLSamplerBorderColor borderColor API_AVAILABLE(macos(10.12), ios(14.0), tvos(16.0));
 
+/// Sets the reduction mode for filtering contributing samples.
+///
+/// The property's default value is ``MTLSamplerReductionModeWeightedAverage``.
+/// The sampler ignores this property if any of the following property values are equal to a specific value:
+///  - The sampler's ``mipFilter`` property is equal to ``MTLSamplerMipFilterNotMipmapped``.
+///  - The sampler's ``mipFilter`` property is equal to ``MTLSamplerMipFilterNearest``.
+///  - The sampler's ``minFilter`` property is equal to ``MTLSamplerMinMagFilterNearest``.
+///  - The sampler's ``magFilter`` property is equal to ``MTLSamplerMinMagFilterNearest``.
+@property (nonatomic) MTLSamplerReductionMode reductionMode API_AVAILABLE(macos(26.0), ios(26.0));
 
 /*!
  @property normalizedCoordinates.
@@ -179,6 +197,11 @@
 @property (nonatomic) BOOL lodAverage API_AVAILABLE(ios(9.0), macos(11.0), macCatalyst(14.0));
 
 
+/// Sets the level-of-detail (lod) bias when sampling from a texture.
+///
+/// The property's default value is `0.0f`.
+/// The precision format is `S4.6`, and the range is `[-16.0, 15.999]`.
+@property (nonatomic) float lodBias API_AVAILABLE(macos(26.0), ios(26.0));
 
 /*!
  @property compareFunction
diff -ruN /Applications/Xcode_26.0.0-beta7.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/Metal.apinotes /Applications/Xcode_26.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/Metal.apinotes
--- /Applications/Xcode_26.0.0-beta7.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/Metal.apinotes	2025-07-28 18:52:27
+++ /Applications/Xcode_26.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/Metal.apinotes	2025-07-28 18:52:27
@@ -1235,6 +1235,12 @@
     SwiftName: __setIntersectionFunctionTables(_:withBufferRange:)
     MethodKind: Instance
     SwiftPrivate: true
+  - Selector: 'setDepthStencilState:atIndex:'
+    SwiftName: setDepthStencilState(_:index:)
+    MethodKind: Instance
+  - Selector: 'setDepthStencilStates:withRange:'
+    SwiftPrivate: true
+    MethodKind: Instance
 
 - Name: MTLLibrary
   Methods:
@@ -1312,6 +1318,9 @@
   - Selector: 'setScissorRects:count:'
     MethodKind: Instance
     SwiftPrivate: true
+  - Selector: 'setDepthTestMinBound:maxBound:'
+    SwiftPrivate: true
+    MethodKind: Instance
   - Selector: 'setVertexBytes:length:atIndex:'
     SwiftName: setVertexBytes(_:length:index:)
     MethodKind: Instance
@@ -2070,6 +2079,9 @@
     MethodKind: Instance
   - Selector: 'writeTimestampWithGranularity:afterStage:intoHeap:atIndex:'
     SwiftName: writeTimestamp(granularity:after:counterHeap:index:)
+    MethodKind: Instance
+  - Selector: 'setDepthTestMinBound:maxBound:'
+    SwiftPrivate: true
     MethodKind: Instance
   
 - Name: MTL4MachineLearningCommandEncoder
Clone this wiki locally