Skip to content

Metal iOS xcode26.0 b1

Rolf Bjarne Kvinge edited this page Jun 24, 2025 · 3 revisions

#Metal.framework

Rolf

diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4AccelerationStructure.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4AccelerationStructure.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4AccelerationStructure.h	1969-12-31 19:00:00
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4AccelerationStructure.h	2025-05-28 02:01:30
@@ -0,0 +1,674 @@
+//
+//  MTL4AccelerationStructure.h
+//  Metal
+//
+//  Copyright (c) 2024 Apple Inc. All rights reserved.
+//
+
+#import <Metal/MTLAccelerationStructure.h>
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// Base class for Metal 4 acceleration structure descriptors.
+///
+/// Don't use this class directly. Use one of its subclasses instead.
+MTL_EXPORT API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4AccelerationStructureDescriptor : MTLAccelerationStructureDescriptor
+@end
+
+/// Base class for all Metal 4 acceleration structure geometry descriptors.
+///
+/// Don't use this class directly. Use one of the derived classes instead.
+MTL_EXPORT API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4AccelerationStructureGeometryDescriptor : NSObject <NSCopying>
+
+/// Sets the offset that this geometry contributes to determining the intersection function to invoke when a ray intersects it.
+///
+/// When you perform a ray tracing operation in the Metal Shading Language, and provide the ray intersector object
+/// with an instance of ``MTLIntersectionFunctionTable``, Metal adds this offset to the instance offset from structs such
+/// as:
+///
+/// - ``MTLAccelerationStructureInstanceDescriptor``
+/// - ``MTLAccelerationStructureUserIDInstanceDescriptor``
+/// - ``MTLAccelerationStructureMotionInstanceDescriptor``
+/// - ``MTLIndirectAccelerationStructureInstanceDescriptor``
+/// - ``MTLIndirectAccelerationStructureMotionInstanceDescriptor``
+///
+/// The sum of these offsets provides an index into the intersection function table that the ray tracing system uses
+/// to retrieve and invoke the function at this index, allowing you to customize the intersection evaluation process.
+@property (nonatomic) NSUInteger intersectionFunctionTableOffset;
+
+/// Provides a hint to Metal that this geometry is opaque, potentially accelerating the ray/primitive intersection process.
+@property (nonatomic) BOOL opaque;
+
+/// A boolean value that indicates whether the ray-tracing system in Metal allows the invocation of intersection functions
+/// more than once per ray-primitive intersection.
+///
+/// The property's default value is <doc://com.apple.documentation/documentation/swift/true>.
+@property (nonatomic) BOOL allowDuplicateIntersectionFunctionInvocation;
+
+/// Assigns an optional label you can assign to this geometry for debugging purposes.
+@property (nonatomic, copy, nullable) NSString* label;
+
+/// Assigns optional buffer containing data to associate with each primitive in this geometry.
+///
+/// You can use zero as the buffer address in this buffer range.
+@property (nonatomic) MTL4BufferRange primitiveDataBuffer;
+
+/// Defines the stride, in bytes, between each primitive's data in the primitive data buffer ``primitiveDataBuffer`` references.
+///
+/// You are responsible for ensuring the stride is at least ``primitiveDataElementSize`` in size and a multiple of 4 bytes.
+///
+/// This property defaults to `0` bytes,  which indicates the stride is equal to ``primitiveDataElementSize``.
+@property (nonatomic) NSUInteger primitiveDataStride;
+
+/// Sets the size, in bytes, of the data for each primitive in the primitive data buffer ``primitiveDataBuffer`` references.
+///
+/// This size needs to be at most ``primitiveDataStride`` in size and a multiple of 4 bytes.
+///
+/// This property defaults to 0 bytes.
+@property (nonatomic) NSUInteger primitiveDataElementSize;
+
+@end
+
+/// Descriptor for a primitive acceleration structure that directly references geometric shapes, such as triangles and
+/// bounding boxes.
+MTL_EXPORT API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4PrimitiveAccelerationStructureDescriptor : MTL4AccelerationStructureDescriptor
+
+/// Associates the array of geometry descriptors that comprise this primitive acceleration structure.
+///
+/// If you enable keyframe motion by setting property ``motionKeyframeCount`` to a value greater than `1`, then
+/// all geometry descriptors this array references need to be motion geometry descriptors and have a number of
+/// primitive buffers equals to ``motionKeyframeCount``.
+///
+/// Example of motion geometry descriptors include: ``MTL4AccelerationStructureMotionTriangleGeometryDescriptor``,
+/// ``MTL4AccelerationStructureMotionBoundingBoxGeometryDescriptor``, ``MTL4AccelerationStructureMotionCurveGeometryDescriptor``.
+@property (nonatomic, retain, nullable) NSArray <MTL4AccelerationStructureGeometryDescriptor *> *geometryDescriptors;
+
+/// Configures the behavior when the ray-tracing system samples the acceleration structure before the motion start time.
+///
+/// Use this property to control the behavior when the ray-tracing system samples the acceleration structure
+/// at a time prior to the one you set for ``motionStartTime``.
+///
+/// The default value of this property is `MTLMotionBorderModeClamp`.
+@property (nonatomic) MTLMotionBorderMode motionStartBorderMode;
+
+/// Configures the motion border mode.
+///
+/// This property controls what happens if Metal samples the acceleration structure after ``motionEndTime``.
+///
+/// Its default value is `MTLMotionBorderModeClamp`.
+@property (nonatomic) MTLMotionBorderMode motionEndBorderMode;
+
+/// Configures the motion start time for this geometry.
+///
+/// The default value of this property is `0.0f`.
+@property (nonatomic) float motionStartTime;
+
+/// Configures the motion end time for this geometry.
+///
+/// The default value of this property is `1.0f`.
+@property (nonatomic) float motionEndTime;
+
+/// Sets the motion keyframe count.
+///
+/// This property's default is `1`, indicating no motion.
+@property (nonatomic) NSUInteger motionKeyframeCount;
+
+@end
+
+/// Describes triangle geometry suitable for ray tracing.
+///
+/// Use a ``MTLResidencySet`` to mark residency of all buffers this descriptor references when you build this
+/// acceleration structure.
+MTL_EXPORT API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4AccelerationStructureTriangleGeometryDescriptor : MTL4AccelerationStructureGeometryDescriptor
+
+/// Associates a vertex buffer containing triangle vertices.
+///
+/// You are responsible for ensuring that the format of all vertex positions match the ``vertexFormat`` property, and
+/// that the buffer address for the buffer range is not zero.
+@property (nonatomic) MTL4BufferRange vertexBuffer;
+
+/// Describes the format of the vertices in the vertex buffer.
+///
+/// This property controls the format of the position attribute of the vertices the ``vertexBuffer`` references.
+///
+/// The format defaults to `MTLAttributeFormatFloat3`, corresponding to three packed floating point numbers.
+@property (nonatomic) MTLAttributeFormat vertexFormat;
+
+/// Sets the stride, in bytes, between vertices in the vertex buffer.
+///
+/// The stride you specify needs to be a multiple of the size of the vertex format you provide in the ``vertexFormat``
+/// property. Similarly, you are responsible for ensuring this stride matches the vertex format data type's alignment.
+///
+/// Defaults to `0`, which signals the stride matches the size of the ``vertexFormat`` data.
+@property (nonatomic) NSUInteger vertexStride;
+
+/// Sets an optional index buffer containing references to vertices in the `vertexBuffer`.
+///
+/// You can set this property to `0`, the default, to avoid specifying an index buffer.
+@property (nonatomic) MTL4BufferRange indexBuffer;
+
+/// Configures the size of the indices the `indexBuffer` contains, which is typically either 16 or 32-bits for each index.
+@property (nonatomic) MTLIndexType indexType;
+
+/// Declares the number of triangles in this geometry descriptor.
+@property (nonatomic) NSUInteger triangleCount;
+
+/// Assigns an optional reference to a buffer containing a `float4x3` transformation matrix.
+///
+/// When the buffer address is non-zero, Metal applies this transform to the vertex data positions when building
+/// the acceleration structure.
+///
+/// Building an acceleration structure with a descriptor that specifies this property doesn't modify the contents of
+/// the input `vertexBuffer`.
+@property (nonatomic) MTL4BufferRange transformationMatrixBuffer;
+
+/// Configures the layout for the transformation matrix in the transformation matrix buffer.
+///
+/// You can provide matrices in column-major or row-major form, and this property allows you to control
+/// how Metal interprets them.
+///
+/// Defaults to `MTLMatrixLayoutColumnMajor`.
+@property (nonatomic) MTLMatrixLayout transformationMatrixLayout;
+
+@end
+
+/// Describes bounding-box geometry suitable for ray tracing.
+///
+/// You use bounding boxes to implement procedural geometry for ray tracing, such as spheres or any other shape
+/// you define by using intersection functions.
+///
+/// Use a ``MTLResidencySet`` to mark residency of all buffers this descriptor references when you build this
+/// acceleration structure.
+MTL_EXPORT API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4AccelerationStructureBoundingBoxGeometryDescriptor : MTL4AccelerationStructureGeometryDescriptor
+
+/// References a buffer containing bounding box data in `MTLAxisAlignedBoundingBoxes` format.
+///
+/// You are responsible for ensuring the buffer address of the range is not zero.
+@property (nonatomic) MTL4BufferRange boundingBoxBuffer;
+
+/// Assigns the stride, in bytes, between bounding boxes in the bounding box buffer `boundingBoxBuffer` references.
+///
+/// You are responsible for ensuring this stride is at least 24 bytes and a multiple of 4 bytes.
+///
+/// This property defaults to `24` bytes.
+@property (nonatomic) NSUInteger boundingBoxStride;
+
+/// Describes the number of bounding boxes the `boundingBoxBuffer` contains.
+@property (nonatomic) NSUInteger boundingBoxCount;
+
+@end
+
+/// Describes motion triangle geometry, suitable for motion ray tracing.
+///
+/// Use a ``MTLResidencySet`` to mark residency of all buffers this descriptor references when you build this
+/// acceleration structure.
+MTL_EXPORT API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4AccelerationStructureMotionTriangleGeometryDescriptor : MTL4AccelerationStructureGeometryDescriptor
+
+/// Assigns a buffer where each entry contains a reference to a vertex buffer.
+///
+/// This property references a buffer that conceptually represents an array with one entry for each keyframe in the
+/// motion animation. Each one of these entries consists of a ``MTL4BufferRange`` that, in turn, references a
+/// vertex buffer containing the vertex data for the keyframe.
+///
+/// You are responsible for ensuring the buffer address is not zero for the top-level buffer, as well as for all
+/// the vertex buffers it references.
+@property (nonatomic) MTL4BufferRange vertexBuffers;
+
+/// Defines the format of the vertices in the vertex buffers.
+///
+/// All keyframes share the same vertex format. Defaults to `MTLAttributeFormatFloat3`, corresponding to three packed
+/// floating point numbers.
+@property (nonatomic) MTLAttributeFormat vertexFormat;
+
+/// Sets the stride, in bytes, between vertices in all the vertex buffer.
+///
+/// All keyframes share the same vertex stride. This stride needs to be a multiple of the size of the vertex format you
+/// provide in the ``vertexFormat`` property.
+///
+/// Similarly, you are responsible for ensuring this stride matches the vertex format data type's alignment.
+///
+/// Defaults to `0`, which signals the stride matches the size of the ``vertexFormat`` data.
+@property (nonatomic) NSUInteger vertexStride;
+
+/// Assigns an optional index buffer containing references to vertices in the vertex buffers you reference through the
+/// vertex buffers property.
+///
+/// You can set this property to `0`, the default, to avoid specifying an index buffer. All keyframes share the same
+/// index buffer.
+@property (nonatomic) MTL4BufferRange indexBuffer;
+
+/// Specifies the size of the indices the `indexBuffer` contains, which is typically either 16 or 32-bits for each index.
+@property (nonatomic) MTLIndexType indexType;
+
+/// Declares the number of triangles in the vertex buffers that the buffer in the vertex buffers property references.
+///
+/// All keyframes share the same triangle count.
+@property (nonatomic) NSUInteger triangleCount;
+
+/// Assings an optional reference to a buffer containing a `float4x3` transformation matrix.
+///
+/// When the buffer address is non-zero, Metal applies this transform to the vertex data positions when building
+/// the acceleration structure. All keyframes share the same transformation matrix.
+///
+/// Building an acceleration structure with a descriptor that specifies this property doesn't modify the contents of
+/// the input `vertexBuffer`.
+@property (nonatomic) MTL4BufferRange transformationMatrixBuffer;
+
+/// Configures the layout for the transformation matrix in the transformation matrix buffer.
+///
+/// You can provide matrices in column-major or row-major form, and this property allows you to control
+/// how Metal interprets them.
+///
+/// Defaults to `MTLMatrixLayoutColumnMajor`.
+@property (nonatomic) MTLMatrixLayout transformationMatrixLayout;
+
+@end
+
+/// Describes motion bounding box geometry, suitable for motion ray tracing.
+///
+/// You use bounding boxes to implement procedural geometry for ray tracing, such as spheres or any other shape
+/// you define by using intersection functions.
+///
+/// Use a ``MTLResidencySet`` to mark residency of all buffers this descriptor references when you build this
+/// acceleration structure.
+MTL_EXPORT API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4AccelerationStructureMotionBoundingBoxGeometryDescriptor : MTL4AccelerationStructureGeometryDescriptor
+
+
+/// Configures a reference to a buffer where each entry contains a reference to a buffer of bounding boxes.
+///
+/// This property references a buffer that conceptually represents an array with one entry for each keyframe in the
+/// motion animation. Each one of these entries consists of a ``MTL4BufferRange`` that, in turn, references a
+/// vertex buffer containing the bounding box data for the keyframe.
+///
+/// You are responsible for ensuring the buffer address is not zero for the top-level buffer, as well as for all
+/// the vertex buffers it references.
+///
+@property (nonatomic) MTL4BufferRange boundingBoxBuffers;
+
+/// Declares the stride, in bytes, between bounding boxes in the bounding box buffers each entry in `boundingBoxBuffer`
+/// references.
+///
+/// All keyframes share the same bounding box stride. You are responsible for ensuring this stride is at least 24 bytes
+/// and a multiple of 4 bytes.
+///
+/// This property defaults to `24` bytes.
+@property (nonatomic) NSUInteger boundingBoxStride;
+
+/// Declares the number of bounding boxes in each buffer that `boundingBoxBuffer` references.
+///
+/// All keyframes share the same bounding box count.
+@property (nonatomic) NSUInteger boundingBoxCount;
+
+@end
+
+/// Describes curve geometry suitable for ray tracing.
+///
+/// Use a ``MTLResidencySet`` to mark residency of all buffers this descriptor references when you build this
+/// acceleration structure.
+MTL_EXPORT API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4AccelerationStructureCurveGeometryDescriptor : MTL4AccelerationStructureGeometryDescriptor
+
+/// References a buffer containing curve control points.
+///
+/// Control points are interpolated according to the basis function you specify in ``curveBasis``.
+///
+/// You are responsible for ensuring each control is in a format matching the control point format ``controlPointFormat``
+/// specifies, as well as ensuring that the buffer address of the range is not zero.
+@property (nonatomic) MTL4BufferRange controlPointBuffer;
+
+/// Declares the number of control points in the control point buffer.
+@property (nonatomic) NSUInteger controlPointCount;
+
+/// Sets the stride, in bytes, between control points in the control point buffer the control point buffer references.
+///
+/// You are responsible for ensuring this stride is a multiple of the control point format's element size, and
+/// at a minimum exactly the control point format's size.
+///
+/// This property defaults to `0`, indicating that the control points are tightly-packed.
+@property (nonatomic) NSUInteger controlPointStride;
+
+/// Declares the format of the control points the control point buffer references.
+///
+/// Defaults to `MTLAttributeFormatFloat3`, representing 3 floating point values tightly packed.
+@property (nonatomic) MTLAttributeFormat controlPointFormat;
+
+/// Assigns a reference to a buffer containing the curve radius for each control point.
+///
+/// Metal interpolates curve radii according to the basis function you specify via ``curveBasis``.
+///
+/// You are responsible for ensuring the type of each radius matches the type property ``radiusFormat`` specifies,
+/// that each radius is at least zero, and that the buffer address of the range is not zero.
+@property (nonatomic) MTL4BufferRange radiusBuffer;
+
+/// Declares the format of the radii in the radius buffer.
+///
+/// Defaults to  `MTLAttributeFormatFloat`.
+@property (nonatomic) MTLAttributeFormat radiusFormat;
+
+/// Configures the stride, in bytes, between radii in the radius buffer.
+///
+/// You are responsible for ensuring this property is set to a multiple of the size corresponding to the ``radiusFormat``.
+///
+/// This property defaults to `0` bytes, indicating that the radii are tightly packed.
+@property (nonatomic) NSUInteger radiusStride;
+
+/// Assigns an optional index buffer containing references to control points in the control point buffer.
+///
+/// Each index represents the first control point of a curve segment. You are responsible for ensuring the buffer
+/// address of the range is not zero.
+@property (nonatomic) MTL4BufferRange indexBuffer;
+
+/// Specifies the size of the indices the `indexBuffer` contains, which is typically either 16 or 32-bits for each index.
+@property (nonatomic) MTLIndexType indexType;
+
+/// Declares the number of curve segments.
+@property (nonatomic) NSUInteger segmentCount;
+
+/// Declares the number of control points per curve segment.
+///
+/// Valid values for this property are `2`, `3`, or `4`.
+@property (nonatomic) NSUInteger segmentControlPointCount;
+
+/// Controls the curve type.
+///
+/// Defaults to `MTLCurveTypeRound`.
+@property (nonatomic) MTLCurveType curveType;
+
+/// Controls the curve basis function, determining how Metal interpolates the control points.
+///
+/// Defaults to `MTLCurveBasisBSpline`.
+@property (nonatomic) MTLCurveBasis curveBasis;
+
+/// Sets the type of curve end caps.
+///
+/// Defaults to `MTLCurveEndCapsNone`.
+@property (nonatomic) MTLCurveEndCaps curveEndCaps;
+
+@end
+
+/// Describes motion curve geometry, suitable for motion ray tracing.
+///
+/// Use a ``MTLResidencySet`` to mark residency of all buffers this descriptor references when you build this
+/// acceleration structure.
+MTL_EXPORT API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4AccelerationStructureMotionCurveGeometryDescriptor : MTL4AccelerationStructureGeometryDescriptor
+
+/// Assigns a reference to a buffer where each entry contains a reference to a buffer of control points.
+///
+/// This property references a buffer that conceptually represents an array with one entry for each keyframe in the
+/// motion animation. Each one of these entries consists of a ``MTL4BufferRange`` that, in turn, references a
+/// buffer containing the control points corresponding to the keyframe.
+///
+/// You are responsible for ensuring the buffer address is not zero for the top-level buffer, as well as for all
+/// the vertex buffers it references.
+///
+@property (nonatomic) MTL4BufferRange controlPointBuffers;
+
+/// Specifies the number of control points in the buffers the control point buffers reference.
+///
+/// All keyframes have the same number of control points.
+@property (nonatomic) NSUInteger controlPointCount;
+
+/// Sets the stride, in bytes, between control points in the control point buffer.
+///
+/// All keyframes share the same control point stride.
+///
+/// You are responsible for ensuring this stride is a multiple of the control point format's element size, and
+/// at a minimum exactly the control point format's size.
+///
+/// This property defaults to `0`, indicating that the control points are tightly-packed.
+@property (nonatomic) NSUInteger controlPointStride;
+
+/// Declares the format of the control points in the buffers that the control point buffers reference.
+///
+/// All keyframes share the same control point format. Defaults to `MTLAttributeFormatFloat3`, representing 3 floating
+/// point values tightly packed.
+@property (nonatomic) MTLAttributeFormat controlPointFormat;
+
+/// Assigns a reference to a buffer containing, in turn, references to curve radii buffers.
+///
+/// This property references a buffer that conceptually represents an array with one entry for each keyframe in the
+/// motion animation. Each one of these entries consists of a ``MTL4BufferRange`` that, in turn, references a
+/// buffer containing the radii corresponding to the keyframe.
+///
+/// Metal interpolates curve radii according to the basis function you specify via ``curveBasis``.
+///
+/// You are responsible for ensuring the type of each radius matches the type property ``radiusFormat`` specifies,
+/// that each radius is at least zero, and that the buffer address of the top-level buffer, as well as of buffer
+/// it references, is not zero.
+@property (nonatomic) MTL4BufferRange radiusBuffers;
+
+/// Sets the format of the radii in the radius buffer.
+///
+/// Defaults to  `MTLAttributeFormatFloat`. All keyframes share the same radius format.
+@property (nonatomic) MTLAttributeFormat radiusFormat;
+
+/// Sets the stride, in bytes, between radii in the radius buffer.
+///
+/// You are responsible for ensuring this property is set to a multiple of the size corresponding to the ``radiusFormat``.
+/// All keyframes share the same radius stride.
+///
+/// This property defaults to `0` bytes, indicating that the radii are tightly packed.
+@property (nonatomic) NSUInteger radiusStride;
+
+/// Assigns an optional index buffer containing references to control points in the control point buffers.
+///
+/// All keyframes share the same index buffer, with each index representing the first control point of a curve segment.
+///
+/// You are responsible for ensuring the buffer address of the range is not zero.
+@property (nonatomic) MTL4BufferRange indexBuffer;
+
+/// Configures the size of the indices the `indexBuffer` contains, which is typically either 16 or 32-bits for each index.
+@property (nonatomic) MTLIndexType indexType;
+
+/// Declares the number of curve segments.
+///
+/// All keyframes have the same number of curve segments.
+@property (nonatomic) NSUInteger segmentCount;
+
+/// Controls the number of control points per curve segment.
+///
+/// Valid values for this property are `2`, `3`, or `4`. All keyframes have the same number of control points per curve segment.
+@property (nonatomic) NSUInteger segmentControlPointCount;
+
+/// Controls the curve type.
+///
+/// Defaults to `MTLCurveTypeRound`. All keyframes share the same curve type.
+@property (nonatomic) MTLCurveType curveType;
+
+/// Sets the curve basis function, determining how Metal interpolates the control points.
+///
+/// Defaults to `MTLCurveBasisBSpline`. All keyframes share the same curve basis function.
+@property (nonatomic) MTLCurveBasis curveBasis;
+
+/// Configures the type of curve end caps.
+///
+/// Defaults to `MTLCurveEndCapsNone`. All keyframes share the same end cap type.
+@property (nonatomic) MTLCurveEndCaps curveEndCaps;
+
+@end
+
+/// Descriptor for an instance acceleration structure.
+///
+/// An instance acceleration structure references other acceleration structures, and provides the ability to
+/// "instantiate" them multiple times, each one with potentially a different transformation matrix.
+///
+/// You specify the properties of the instances in the acceleration structure this descriptor builds by providing a
+/// buffer of `structs` via its ``instanceDescriptorBuffer`` property.
+///
+/// Use a ``MTLResidencySet`` to mark residency of all buffers and acceleration structures this descriptor references
+/// when you build this acceleration structure.
+MTL_EXPORT API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4InstanceAccelerationStructureDescriptor : MTL4AccelerationStructureDescriptor
+
+/// Assigns a reference to a buffer containing instance descriptors for acceleration structures to reference.
+///
+/// This buffer conceptually represents an array of instance data. The specific format for the structs that comprise
+/// each entry depends on the value of the  ``instanceDescriptorType`` property.
+///
+/// You are responsible for ensuring the buffer address the range contains is not zero.
+@property (nonatomic) MTL4BufferRange instanceDescriptorBuffer;
+
+/// Sets the stride, in bytes, between instance descriptors the instance descriptor buffer references.
+///
+/// You are responsible for ensuring this stride is at least the size of the structure type corresponding to the instance
+/// descriptor type and a multiple of 4 bytes.
+///
+/// Defaults to `0`, indicating the instance descriptors are tightly packed.
+@property (nonatomic) NSUInteger instanceDescriptorStride;
+
+/// Controls the number of instance descriptors in the instance descriptor buffer references.
+@property (nonatomic) NSUInteger instanceCount;
+
+/// Sets the type of instance descriptor that the instance descriptor buffer references.
+///
+/// This value determines the layout Metal expects for the structs the instance descriptor buffer contains.
+///
+/// Defaults to `MTLAccelerationStructureInstanceDescriptorTypeIndirect`. Valid values for this property are
+/// `MTLAccelerationStructureInstanceDescriptorTypeIndirect` or `MTLAccelerationStructureInstanceDescriptorTypeIndirectMotion`.
+@property (nonatomic) MTLAccelerationStructureInstanceDescriptorType instanceDescriptorType;
+
+/// A buffer containing transformation information for instance motion keyframes, formatted according
+/// to the motion transform type.
+///
+/// Each instance can have a different number of keyframes that you configure via individual instance
+/// descriptors.
+///
+/// You are responsible for ensuring the buffer address the range references is not zero when using motion instance descriptors.
+@property (nonatomic) MTL4BufferRange motionTransformBuffer;
+
+/// Controls the total number of motion transforms in the motion transform buffer.
+@property (nonatomic) NSUInteger motionTransformCount;
+
+/// Specifies the layout for the transformation matrices in the instance descriptor buffer and the motion transformation matrix buffer.
+///
+/// Metal interprets the value of this property as the layout for the buffers that both ``instanceDescriptorBuffer`` and
+/// ``motionTransformBuffer`` reference.
+///
+/// Defaults to `MTLMatrixLayoutColumnMajor`.
+@property (nonatomic) MTLMatrixLayout instanceTransformationMatrixLayout;
+
+/// Controls the type of motion transforms, either as a matrix or individual components.
+///
+/// Defaults to `MTLTransformTypePackedFloat4x3`. Using a `MTLTransformTypeComponent` allows you to represent the
+/// rotation by a quaternion (instead as of part of the matrix), allowing for correct motion interpolation.
+@property (nonatomic) MTLTransformType motionTransformType;
+
+/// Specify the stride for motion transform.
+///
+/// Defaults to `0`, indicating that transforms are tightly packed according to the motion transform type.
+@property (nonatomic) NSUInteger motionTransformStride;
+
+@end
+
+/// Descriptor for an "indirect" instance acceleration structure that allows providing the instance count and
+/// motion transform count indirectly, through buffer references.
+///
+/// An instance acceleration structure references other acceleration structures, and provides the ability to
+/// "instantiate" them multiple times, each one with potentially a different transformation matrix.
+///
+/// You specify the properties of the instances in the acceleration structure this descriptor builds by providing a
+/// buffer of `structs` via its ``instanceDescriptorBuffer`` property.
+///
+/// Compared to ``MTL4InstanceAccelerationStructureDescriptor``, this descriptor allows you to provide the number
+/// of instances it references indirectly through a buffer reference, as well as the number of motion transforms.
+///
+/// This enables you to determine these counts indirectly in the GPU timeline via a compute pipeline.
+/// Metal needs only to know the maximum possible number of instances and motion transforms to support,
+/// which you specify via the ``maxInstanceCount`` and ``maxMotionTransformCount`` properties.
+///
+/// Use a ``MTLResidencySet`` to mark residency of all buffers and acceleration structures this descriptor references
+/// when you build this acceleration structure.
+MTL_EXPORT API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4IndirectInstanceAccelerationStructureDescriptor : MTL4AccelerationStructureDescriptor
+
+/// Assigns a reference to a buffer containing instance descriptors for acceleration structures to reference.
+///
+/// This buffer conceptually represents an array of instance data. The specific format for the structs that comprise
+/// each entry depends on the value of the  ``instanceDescriptorType`` property.
+///
+/// You are responsible for ensuring the buffer address the range contains is not zero.
+@property (nonatomic) MTL4BufferRange instanceDescriptorBuffer;
+
+/// Sets the stride, in bytes, between instance descriptors in the instance descriptor buffer.
+///
+/// You are responsible for ensuring this stride is at least the size of the structure type corresponding to the instance
+/// descriptor type and a multiple of 4 bytes.
+///
+/// Defaults to `0`, indicating the instance descriptors are tightly packed.
+@property (nonatomic) NSUInteger instanceDescriptorStride;
+
+/// Controls the maximum number of instance descriptors the instance descriptor buffer can reference.
+///
+/// You are responsible for ensuring that the final number of instances at build time, which you provide indirectly
+/// via a buffer reference in ``instanceCountBuffer``, is less than or equal to this number.
+@property (nonatomic) NSUInteger maxInstanceCount;
+
+/// Provides a reference to a buffer containing the number of instances in the instance descriptor buffer, formatted as a
+/// 32-bit unsigned integer.
+///
+/// You are responsible for ensuring that the final number of instances at build time, which you provide indirectly
+/// via this buffer reference , is less than or equal to the value of property ``maxInstanceCount``.
+@property (nonatomic) MTL4BufferRange instanceCountBuffer;
+
+/// Controls the type of instance descriptor that the instance descriptor buffer references.
+///
+/// This value determines the layout Metal expects for the structs the instance descriptor buffer contains.
+///
+/// Defaults to `MTLAccelerationStructureInstanceDescriptorTypeIndirect`. Valid values for this property are
+/// `MTLAccelerationStructureInstanceDescriptorTypeIndirect` or `MTLAccelerationStructureInstanceDescriptorTypeIndirectMotion`.
+@property (nonatomic) MTLAccelerationStructureInstanceDescriptorType instanceDescriptorType;
+
+/// A buffer containing transformation information for instance motion keyframes, formatted according
+/// to the motion transform type.
+///
+/// Each instance can have a different number of keyframes that you configure via individual instance
+/// descriptors.
+///
+/// You are responsible for ensuring the buffer address the range references is not zero when using motion instance descriptors.
+@property (nonatomic) MTL4BufferRange motionTransformBuffer;
+
+/// Controls the maximum number of motion transforms in the motion transform buffer.
+///
+/// You are responsible for ensuring that final number of motion transforms at build time that the buffer
+/// ``motionTransformCountBuffer`` references is less than or equal to this number.
+@property (nonatomic) NSUInteger maxMotionTransformCount;
+
+/// Associates a buffer reference containing the number of motion transforms in the motion transform buffer, formatted as a
+/// 32-bit unsigned integer.
+///
+/// You are responsible for ensuring that the final number of motion transforms at build time in the buffer this property
+/// references is less than or equal to the value of property ``maxMotionTransformCount``.
+@property (nonatomic) MTL4BufferRange motionTransformCountBuffer;
+
+/// Specifies the layout for the transformation matrices in the instance descriptor buffer and the motion transformation matrix buffer.
+///
+/// Metal interprets the value of this property as the layout for the buffers that both ``instanceDescriptorBuffer`` and
+/// ``motionTransformBuffer`` reference.
+///
+/// Defaults to `MTLMatrixLayoutColumnMajor`.
+@property (nonatomic) MTLMatrixLayout instanceTransformationMatrixLayout;
+
+/// Sets the type of motion transforms, either as a matrix or individual components.
+///
+/// Defaults to `MTLTransformTypePackedFloat4x3`. Using a `MTLTransformTypeComponent` allows you to represent the
+/// rotation by a quaternion (instead as of part of the matrix), allowing for correct motion interpolation.
+@property (nonatomic) MTLTransformType motionTransformType;
+
+/// Sets the stride for motion transform.
+///
+/// Defaults to `0`, indicating that transforms are tightly packed according to the motion transform type.
+@property (nonatomic) NSUInteger motionTransformStride;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4Archive.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4Archive.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4Archive.h	1969-12-31 19:00:00
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4Archive.h	2025-05-28 04:53:29
@@ -0,0 +1,124 @@
+//
+//  MTL4Archive.h
+//  Metal
+//
+//  Copyright © 2024 Apple, Inc. All rights reserved.
+//
+
+#ifndef MTL4Archive_h
+#define MTL4Archive_h
+
+#import <Metal/MTLDefines.h>
+#import <Metal/MTLDevice.h>
+#import <Metal/MTL4ComputePipeline.h>
+#import <Metal/MTL4RenderPipeline.h>
+
+
+@class MTL4BinaryFunctionDescriptor;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// A read-only container that stores pipeline states from a shader compiler.
+///
+/// The pipeline states can have intermediate representation (IR) binaries,
+/// GPU- and system-specifc binaries, or a combination.
+///
+/// ## Topics
+///
+/// ### Identifiying the archive
+/// - ``label``
+///
+/// ### Creating compute pipeline states
+///
+/// - ``newComputePipelineStateWithDescriptor:dynamicLinkingDescriptor:error:``
+/// - ``newComputePipelineStateWithDescriptor:error:``
+/// - ``newComputePipelineStateWithName:dynamicLinkingDescriptor:error:``
+/// - ``newComputePipelineStateWithName:error:``
+///
+/// ### Creating reder pipeline states
+///
+/// - ``newRenderPipelineStateWithDescriptor:dynamicLinkingDescriptor:error:``
+/// - ``newRenderPipelineStateWithDescriptor:error:``
+/// - ``newRenderPipelineStateWithName:dynamicLinkingDescriptor:error:``
+/// - ``newRenderPipelineStateWithName:error:``
+///
+/// ### Creating binary functions
+///
+/// - ``newBinaryFunctionWithDescriptor:functionType:error:``
+API_AVAILABLE(macos(26.0), ios(26.0)) NS_SWIFT_SENDABLE
+@protocol MTL4Archive <NSObject>
+
+/// A label that you can associate with this archive.
+@property (nullable, copy, atomic) NSString* label;
+
+
+/// Creates a compute pipeline state from the archive with a descriptor.
+///
+/// - Parameters:
+///   - descriptor: A compute pipeline descriptor.
+///   - error: On return, if the method fails, a pointer to an error information instance; otherwise `nil`.
+///
+/// - Returns: A compute pipeline state if the method succeeds, otherwise `nil`.
+- (nullable id<MTLComputePipelineState>)newComputePipelineStateWithDescriptor:(MTL4ComputePipelineDescriptor*)descriptor
+                                                                        error:(NSError**)error;
+
+/// Creates a compute pipeline state from the archive with a compute descriptor and a dynamic linking descriptor.
+///
+/// - Parameters:
+///   - descriptor: A compute pipeline descriptor.
+///   - dynamicLinkingDescriptor: A descriptor that provides additional properties
+///   to link other functions with the pipeline.
+///   - error: On return, if the method fails, a pointer to an error information instance; otherwise `nil`.
+///
+/// - Returns: A compute pipeline state if the method succeeds, otherwise `nil`.
+- (nullable id<MTLComputePipelineState>)newComputePipelineStateWithDescriptor:(MTL4ComputePipelineDescriptor *)descriptor
+                                                     dynamicLinkingDescriptor:(MTL4PipelineStageDynamicLinkingDescriptor*)dynamicLinkingDescriptor
+                                                                        error:(NSError**)error;
+
+/// Creates a render pipeline state from the archive with a descriptor.
+///
+/// You create any kind of render pipeline states with this method, including:
+/// - Traditional render pipelines
+/// - Mesh render pipelines
+/// - Tile render pipelines
+///
+/// - Parameters:
+///   - descriptor: A render pipeline descriptor.
+///   - error: On return, if the method fails, a pointer to an error information instance; otherwise `nil`.
+///
+/// - Returns: A render pipeline state if the method succeeds, otherwise `nil`.
+- (nullable id<MTLRenderPipelineState>)newRenderPipelineStateWithDescriptor:(MTL4PipelineDescriptor*)descriptor
+                                                                      error:(NSError**)error;
+
+/// Creates a render pipeline state from the archive with a render descriptor and a dynamic linking descriptor.
+///
+/// You create any kind of render pipeline states with this method, including:
+/// - Traditional render pipelines
+/// - Mesh render pipelines
+/// - Tile render pipelines
+///
+/// - Parameters:
+///   - descriptor: A render pipeline descriptor.
+///   - dynamicLinkingDescriptor: A descriptor that provides additional properties
+///   to link other functions with the pipeline.
+///   - error: On return, if the method fails, a pointer to an error information instance; otherwise `nil`.
+///
+/// - Returns: A render pipeline state if the method succeeds, otherwise `nil`.
+- (nullable id<MTLRenderPipelineState>)newRenderPipelineStateWithDescriptor:(MTL4PipelineDescriptor *)descriptor
+                                                   dynamicLinkingDescriptor:(MTL4RenderPipelineDynamicLinkingDescriptor*)dynamicLinkingDescriptor
+                                                                      error:(NSError**)error;
+
+
+/// Method used to create a binary function, with a given descriptor, from the contents of the archive.
+/// - Parameters:
+///   - descriptor: the function descriptor for a visible or intersection function.
+///   - error: an optional parameter that is populated in the case of an error.
+/// - Returns: a binary function object, otherwise `nil`.
+- (nullable id<MTL4BinaryFunction>)newBinaryFunctionWithDescriptor:(MTL4BinaryFunctionDescriptor *)descriptor
+                                                             error:(NSError**)error;
+
+
+@end
+
+NS_ASSUME_NONNULL_END
+#endif // MTL4Archive_h
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4ArgumentTable.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4ArgumentTable.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4ArgumentTable.h	1969-12-31 19:00:00
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4ArgumentTable.h	2025-05-28 02:49:11
@@ -0,0 +1,133 @@
+//
+//  MTL4ArgumentTable.h
+//  Metal
+//
+//  Copyright © 2024 Apple, Inc. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import <Metal/MTLDevice.h>
+#import <Metal/MTLDefines.h>
+#import <Metal/MTLTypes.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+
+/// Groups parameters for the creation of a Metal argument table.
+///
+/// Argument tables provide resource bindings to your Metal pipeline states.
+MTL_EXPORT
+API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4ArgumentTableDescriptor : NSObject <NSCopying>
+
+/// Determines the number of buffer-binding slots for the argument table.
+///
+/// The maximum value of this parameter is 31.
+@property (readwrite, nonatomic) NSUInteger maxBufferBindCount;
+
+/// Determines the number of texture-binding slots for the argument table.
+///
+/// The maximum value of this parameter is 128.
+@property (readwrite, nonatomic) NSUInteger maxTextureBindCount;
+
+/// Determines the number of sampler state-binding slots for the argument table.
+///
+/// The maximum value of this parameter is 16.
+@property (readwrite, nonatomic) NSUInteger maxSamplerStateBindCount;
+
+/// Configures whether Metal initializes the bindings to nil values upon creation of argument table.
+///
+/// The default value of this property is <doc://com.apple.documentation/documentation/swift/false>.
+@property (readwrite, nonatomic) BOOL initializeBindings;
+
+/// Controls whether Metal should reserve memory for attribute strides in the argument table.
+///
+/// Set this value to true if you intend to provide dynamic attribute strides when binding vertex
+/// array buffers to the argument table by calling ``MTL4ArgumentTable/setAddress:attributeStride:atIndex:``
+///
+/// The default value of this property is <doc://com.apple.documentation/documentation/swift/false>.
+@property (readwrite, nonatomic) BOOL supportAttributeStrides;
+
+/// Assigns an optional label with the argument table for debug purposes.
+@property (nullable, copy, nonatomic) NSString *label;
+
+@end
+
+/// Provides a mechanism to manage and provide resource bindings for buffers, textures, sampler states and other Metal resources.
+API_AVAILABLE(macos(26.0), ios(26.0))
+@protocol MTL4ArgumentTable <NSObject>
+
+/// Binds a GPU address to a buffer binding slot.
+///
+/// - Parameters:
+///   - gpuAddress: The GPU address of a ``MTLBuffer`` to set.
+///   - bindingIndex: a valid binding index in the buffer binding range.
+///   It is an error for this value to match or exceed the value of property
+///   ``MTL4ArgumentTableDescriptor/maxBufferBindCount`` on the descriptor
+///   from which you created this argument table.
+- (void)setAddress:(uint64_t)gpuAddress
+           atIndex:(NSUInteger)bindingIndex;
+
+/// Binds a GPU address to a buffer binding slot, providing a dynamic vertex stride.
+///
+/// This method requires that the value of property ``MTL4ArgumentTableDescriptor/supportAttributeStrides`` on the
+/// descriptor from which you created this argument table is true.
+///
+/// - Parameters:
+///   - gpuAddress: The GPU address of a ``MTLBuffer`` to set.
+///   - stride: The stride between attributes in the buffer.
+///   - bindingIndex: a valid binding index in the buffer binding range.
+///   It is an error for this value to match or exceed the value of property
+///   ``MTL4ArgumentTableDescriptor/maxBufferBindCount`` on the descriptor
+///   from which you created this argument table.
+- (void)setAddress:(uint64_t)gpuAddress
+   attributeStride:(NSUInteger)stride
+           atIndex:(NSUInteger)bindingIndex;
+
+/// Binds a resource to a buffer binding slot.
+///
+/// - Parameters:
+///   - resourceID: The ``MTLResourceID`` of the Metal resource to bind.
+///   - bindingIndex: a valid binding index in the buffer binding range.
+///   It is an error for this value to match or exceed the value of property
+///   ``MTL4ArgumentTableDescriptor/maxBufferBindCount`` on the descriptor
+///   from which you created this argument table.
+- (void)setResource:(MTLResourceID)resourceID
+      atBufferIndex:(NSUInteger)bindingIndex;
+
+/// Binds a texture to a texture binding slot.
+///
+/// - Parameters:
+///   - resourceID: The ``MTLResourceID`` of the ``MTLTexture`` instance to bind.
+///   - bindingIndex: a valid binding index in the texture binding range.
+///   It is an error for this value to match or exceed the value of property
+///   ``MTL4ArgumentTableDescriptor/maxTextureBindCount`` on the descriptor
+///   from which you created this argument table.
+- (void)setTexture:(MTLResourceID)resourceID
+           atIndex:(NSUInteger)bindingIndex;
+
+/// Binds a sampler state to a sampler state binding slot.
+///
+/// - Parameters:
+///   - resourceID: The ``MTLResourceID`` of the ``MTLSamplerState`` instance to bind.
+///   - bindingIndex: a valid binding index in the sampler binding range.
+///   It is an error for this value to match or exceed the value of property
+///   ``MTL4ArgumentTableDescriptor/maxSamplerStateBindCount`` on the descriptor
+///   from which you created this argument table.
+- (void)setSamplerState:(MTLResourceID)resourceID
+                atIndex:(NSUInteger)bindingIndex;
+
+/// The device from which you created this argument table.
+@property (readonly) id<MTLDevice> device;
+
+/// Assigns an optional label with this argument table for debugging purposes.
+///
+/// You set this label by setting property ``MTL4ArgumentTableDescriptor/label`` on the descriptor object, prior to
+/// creating this table instance.
+@property (readonly, nonatomic, nullable) NSString *label;
+
+@end
+
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4BinaryFunction.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4BinaryFunction.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4BinaryFunction.h	1969-12-31 19:00:00
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4BinaryFunction.h	2025-05-28 02:54:19
@@ -0,0 +1,43 @@
+//
+//  MTL4BinaryFunction.h
+//  Metal
+//
+//  Copyright © 2024 Apple, Inc. All rights reserved.
+//
+
+#ifndef MTL4BinaryFunction_h
+#define MTL4BinaryFunction_h
+
+#import <Metal/MTLDefines.h>
+
+#import <Foundation/Foundation.h>
+#import <Metal/MTLTypes.h>
+#import <Metal/MTLLibrary.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// Represents reflection information for a binary function.
+MTL_EXPORT
+API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4BinaryFunctionReflection : NSObject
+@end
+
+/// Represents a binary function.
+///
+/// A binary function is a shader that you precompile from Metal IR to GPU machine code.
+API_AVAILABLE(macos(26.0), ios(26.0)) NS_SWIFT_SENDABLE
+@protocol MTL4BinaryFunction <NSObject>
+
+/// Obtains the optional name of this binary function.
+@property (nullable, readonly) NSString* name;
+
+/// Obtains reflection information for this binary function.
+@property (nullable, readonly) MTL4BinaryFunctionReflection* reflection;
+
+/// Describes the type of this binary function.
+@property (readonly) MTLFunctionType functionType;
+
+@end
+
+NS_ASSUME_NONNULL_END
+#endif // MTL4BinaryFunction_h
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4BinaryFunctionDescriptor.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4BinaryFunctionDescriptor.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4BinaryFunctionDescriptor.h	1969-12-31 19:00:00
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4BinaryFunctionDescriptor.h	2025-05-28 02:54:18
@@ -0,0 +1,49 @@
+//
+//  MTL4BinaryFunctionDescriptor.h
+//  Metal
+//
+//  Copyright © 2024 Apple, Inc. All rights reserved.
+//
+
+#ifndef MTL4BinaryFunctionDescriptor_h
+#define MTL4BinaryFunctionDescriptor_h
+
+#import <Metal/MTLDefines.h>
+
+#import <Foundation/Foundation.h>
+#import <Metal/MTLTypes.h>
+#import <Metal/MTL4FunctionDescriptor.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// Options for configuring the creation of binary functions.
+typedef NS_OPTIONS(NSUInteger, MTL4BinaryFunctionOptions) {
+    /// Represents the default value: no options.
+    MTL4BinaryFunctionOptionNone = 0,
+    /// Compiles the function to have its function handles return a constant MTLResourceID across
+    /// all pipeline states. The function needs to be linked to the pipeline that will use this function.
+    MTL4BinaryFunctionOptionPipelineIndependent = 1 << 1,
+} API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// Base interface for other function-derived interfaces.
+MTL_EXPORT
+API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4BinaryFunctionDescriptor : NSObject<NSCopying>
+
+/// Associates a string that uniquely identifies a binary function.
+///
+/// You can use this property to look up a corresponding binary function by name in a ``MTL4Archive`` instance.
+@property (nonnull, copy, readwrite) NSString *name;
+
+/// Provides the function descriptor corresponding to the function to compile into a binary function.
+@property(nonatomic, readwrite, copy) MTL4FunctionDescriptor* functionDescriptor;
+
+/// Configure the options to use at binary function creation time.
+@property (nonatomic) MTL4BinaryFunctionOptions options;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+
+#endif // MTLBinary4FunctionDescriptor_h
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4CommandAllocator.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4CommandAllocator.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4CommandAllocator.h	1969-12-31 19:00:00
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4CommandAllocator.h	2025-05-28 02:54:17
@@ -0,0 +1,57 @@
+//
+//  MTL4CommandAllocator.h
+//  Metal
+//
+//  Copyright © 2024 Apple, Inc. All rights reserved.
+//
+
+#ifndef MTL4CommandAllocator_h
+#define MTL4CommandAllocator_h
+
+#import <Metal/MTLDefines.h>
+#import <Metal/MTLDevice.h>
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// Groups together parameters for creating a command allocator.
+MTL_EXPORT
+API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4CommandAllocatorDescriptor : NSObject <NSCopying>
+
+/// An optional label you can assign to the command allocator to aid debugging.
+@property (nullable, copy, nonatomic) NSString *label;
+
+@end
+
+/// Manages the memory backing the encoding of GPU commands into command buffers.
+API_AVAILABLE(macos(26.0), ios(26.0))
+@protocol MTL4CommandAllocator <NSObject>
+
+/// Returns the GPU device that this command allocator belongs to.
+@property (readonly) id<MTLDevice> device;
+
+/// Provides the optional label you specify at creation time for debug purposes.
+@property (nullable, readonly) NSString *label;
+
+/// Queries the size of the internal memory heaps of this command allocator that support encoding
+/// commands into command buffers.
+///
+/// - Returns: a size in bytes.
+- (uint64_t)allocatedSize;
+
+/// Marks the command allocator's heaps for reuse.
+///
+/// Calling this method allows new ``MTL4CommandBuffer`` to reuse its existing internal
+/// memory heaps to encode new GPU commands.
+///
+/// You are responsible to ensure that all command buffers with memory originating
+/// from this allocator instance are complete before calling resetting it.
+- (void)reset;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+
+#endif //MTL4CommandAllocator_h
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4CommandBuffer.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4CommandBuffer.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4CommandBuffer.h	1969-12-31 19:00:00
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4CommandBuffer.h	2025-05-28 02:54:17
@@ -0,0 +1,218 @@
+//
+//  MTL4CommandBuffer.h
+//  Metal
+//
+//  Copyright © 2024 Apple, Inc. All rights reserved.
+//
+
+#ifndef MTL4CommandBuffer_h
+#define MTL4CommandBuffer_h
+
+#import <Metal/MTLDefines.h>
+#import <Metal/MTLCommandBuffer.h>
+#import <Metal/MTL4RenderCommandEncoder.h>
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+@protocol MTLDevice;
+@protocol MTLLogState;
+@protocol MTLResidencySet;
+@protocol MTL4CommandAllocator;
+@protocol MTL4ComputeCommandEncoder;
+@protocol MTL4CounterHeap;
+
+@protocol MTL4MachineLearningCommandEncoder;
+
+@class MTL4RenderPassDescriptor;
+
+/// Options to configure a command buffer before encoding work into it.
+API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4CommandBufferOptions : NSObject <NSCopying>
+
+/// Contains information related to shader logging.
+///
+/// To enable shader logging, call ``MTL4CommandBuffer/beginCommandBufferWithAllocator:options:`` with an instance
+/// of ``MTL4CommandBufferOptions`` that contains a non-`nil` ``MTLLogState`` instance in this property.
+///
+/// Shader functions log messages until the command buffer ends.
+@property (readwrite, nonatomic, nullable, retain) id<MTLLogState> logState;
+
+@end
+
+/// Records a sequence of GPU commands.
+API_AVAILABLE(macos(26.0), ios(26.0))
+@protocol MTL4CommandBuffer <NSObject>
+
+/// Returns the GPU device that this command buffer belongs to.
+@property (readonly) id<MTLDevice> device;
+
+/// Assigns an optional label with this command buffer.
+@property (nullable, copy, atomic) NSString *label;
+
+/// Prepares a command buffer for encoding.
+///
+/// Attaches the command buffer to the specified ``MTL4CommandAllocator`` and declares that the
+/// application is ready to encode commands into the command buffer.
+///
+/// Command allocators only service a single command buffer at a time. If you need to issue multiple
+/// calls to this method simultaneously, for example, in a multi-threaded command encoding scenario,
+/// create multiple instances of ``MTLCommandAllocator`` and use one for each call.
+///
+/// You can safely reuse command allocators after ending the command buffer using it by calling
+/// ``endCommandBuffer``.
+///
+/// After calling this method, any prior calls to ``useResidencySet:`` and ``useResidencySets:count:``
+/// on this command buffer instance no longer apply. Make sure to call these methods again to signal
+/// your residency requirements to Metal.
+///
+/// - Parameter allocator: ``MTL4CommandAllocator`` to attach to.
+- (void)beginCommandBufferWithAllocator:(id<MTL4CommandAllocator>)allocator;
+
+/// Prepares a command buffer for encoding with additional options.
+///
+/// Attaches the command buffer to the specified ``MTL4CommandAllocator`` and declares that the
+/// application is ready to encode commands into the command buffer.
+///
+/// Command allocators only service a single command buffer at a time. If you need to issue multiple
+/// calls to this method simultaneously, for example, in a multi-threaded command encoding scenario,
+/// create multiple instances of ``MTLCommandAllocator`` and use one for each call.
+///
+/// You can safely reuse command allocators after ending the command buffer using it by calling
+/// ``endCommandBuffer``.
+///
+/// After calling this method, any prior calls to ``useResidencySet:`` and ``useResidencySets:count:``
+/// on this command buffer instance no longer apply. Make sure to call these methods again to signal
+/// your residency requirements to Metal.
+///
+/// The options you provide configure the command buffer only until the command buffer ends, in the
+/// next call to ``endCommandBuffer``.
+///
+/// - Parameters:
+///   - allocator: ``MTL4CommandAllocator`` to attach to.
+///   - options: ``MTL4CommandBufferOptions`` to configure the command buffer.
+- (void)beginCommandBufferWithAllocator:(id<MTL4CommandAllocator>)allocator
+                                options:(MTL4CommandBufferOptions *)options;
+
+/// Closes a command buffer to prepare it for submission to a command queue.
+///
+/// Explicitly ending the command buffer allows you to reuse the ``MTL4CommandAllocator`` to start servicing other
+/// command buffers. It is an error to call ``commit`` on a command buffer previously recording before calling this
+/// method.
+- (void)endCommandBuffer;
+
+/// Creates a render command encoder from a render pass descriptor.
+///
+/// - Parameters:
+///   - descriptor: Descriptor for the render pass.
+/// - Returns: The created ``MTL4RenderCommandEncoder`` instance, or `nil` if the function failed.
+- (nullable id<MTL4RenderCommandEncoder>)renderCommandEncoderWithDescriptor:(MTL4RenderPassDescriptor *)descriptor;
+
+/// Creates a render command encoder from a render pass descriptor with additional options.
+///
+/// This method creates a render command encoder to encode a render pass, whilst providing you the option to define
+/// some render pass characteristics via an instance of ``MTL4RenderEncoderOptions``.
+///
+/// Use these options to configure suspending/resuming render command encoders, which allow you to encode render passes
+/// from multiple threads simultaneously.
+///
+/// - Parameters:
+///   - descriptor: Descriptor for the render pass.
+///   - options: ``MTL4RenderEncoderOptions`` instance that provide render pass options.
+/// - Returns: The created ``MTL4RenderCommandEncoder`` instance, or `nil` if the function fails.
+- (nullable id<MTL4RenderCommandEncoder>)renderCommandEncoderWithDescriptor:(MTL4RenderPassDescriptor *)descriptor
+                                                                    options:(MTL4RenderEncoderOptions)options;
+
+/// Creates a compute command encoder.
+///
+/// - Returns: The created ``MTL4ComputeCommandEncoder`` instance, or `nil` if the function fails.
+- (nullable id<MTL4ComputeCommandEncoder>)computeCommandEncoder;
+
+/// Creates a machine learning command encoder.
+///
+/// - Returns: The created ``MTL4MachineLearningCommandEncoder`` instance , or `nil` if the function fails.
+- (nullable id<MTL4MachineLearningCommandEncoder>)machineLearningCommandEncoder;
+
+/// Marks a residency set as part of the command buffer's execution.
+///
+/// Ensures that Metal makes resident the resources that residency set contains during execution of this command buffer.
+///
+/// - Parameter residencySet: ``MTLResidencySet`` instance to mark resident.
+- (void)useResidencySet:(id<MTLResidencySet>)residencySet;
+
+/// Marks an array of residency sets as part of the command buffer's execution.
+///
+/// Ensures that Metal makes resident the resources that residency sets contain during execution of this command buffer.
+///
+/// - Parameters:
+///   - residencySets: Array of ``MTLResidencySet`` instances to mark resident.
+///   - count: Number of ``MTLResidencySet`` instances in the array.
+- (void)useResidencySets:(const id<MTLResidencySet> _Nonnull[_Nonnull])residencySets
+                   count:(NSUInteger)count;
+
+/// Pushes a string onto a stack of debug groups for this command buffer.
+///
+/// - Parameter string: The string to push.
+- (void)pushDebugGroup:(NSString *)string;
+
+/// Pops the latest string from the stack of debug groups for this command buffer.
+- (void)popDebugGroup;
+
+/// Writes a GPU timestamp into the given counter heap.
+///
+/// This method captures a timestamp after work prior to this command in the command buffer is complete.
+/// Work after this call may or may not have started.
+///
+/// You are responsible for ensuring the `counterHeap` is of type ``MTL4CounterHeapType/MTL4CounterHeapTypeTimestamp``.
+///
+/// - Parameters:
+///   - counterHeap: ``MTL4CounterHeap`` to write the timestamp into.
+///   - index: The index within the ``MTL4CounterHeap`` that Metal writes the timestamp to.
+- (void)writeTimestampIntoHeap:(id<MTL4CounterHeap>)counterHeap
+                       atIndex:(NSUInteger) index
+API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// Encodes a command that resolves an opaque counter heap into a buffer.
+///
+/// The command this method encodes converts the data within `counterHeap` into a common format
+/// and stores it into the `buffer` parameter.
+///
+/// The command places each entry in the counter heap within `range` sequentially, starting at `alignedOffset`.
+/// Each entry needs to be a fixed size that you can query by calling the
+/// ``MTLDevice/sizeOfCounterHeapEntry:`` method.
+///
+/// This command runs during the `MTLStageBlit` stage of the GPU timeline. Barrier against this stage
+/// to ensure the data is present in the resolve buffer parameter before you access it.
+///
+/// - Note: Your app needs ensure the GPU places data in the heap before you resolve it by
+/// synchronizing this stage with other GPU operations.
+///
+/// Similarly, your app needs to synchronize any GPU accesses to `buffer` after
+/// the command completes with barrier.
+///
+/// If your app needs to access `buffer` from the CPU, signal an ``MTLSharedEvent``
+/// to notify the CPU when it's ready.
+/// Alternatively, you can resolve the heap's data from the CPU by calling
+/// the heap's ``MTL4CounterHeap/resolveCounterRange:`` method.
+///
+/// - Parameters:
+///   - counterHeap: A heap the command resolves.
+///   - range: A range of index values within the heap the command resolves.
+///   - buffer: A buffer the command saves the data it resolves into.
+///   - alignedOffset: An offset within `buffer` that indicates where the command begins writing the data.
+///   - fenceToWait: A fence the GPU waits for before starting, if applicable; otherwise `nil`.
+///   - fenceToUpdate: A fence the system updates after the command finishes resolving the data; otherwise `nil`.
+ - (void)resolveCounterHeap:(id<MTL4CounterHeap>)counterHeap
+                  withRange:(NSRange)range
+                 intoBuffer:(id<MTLBuffer>)buffer
+                   atOffset:(NSUInteger)alignedOffset
+                  waitFence:(nullable id<MTLFence>)fenceToWait
+                updateFence:(nullable id<MTLFence>)fenceToUpdate
+ API_AVAILABLE(macos(26.0), ios(26.0));
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+
+#endif //MTL4CommandBuffer_h
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4CommandEncoder.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4CommandEncoder.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4CommandEncoder.h	1969-12-31 19:00:00
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4CommandEncoder.h	2025-05-28 04:53:30
@@ -0,0 +1,167 @@
+//
+//  MTL4CommandEncoder.h
+//  Metal
+//
+//  Copyright © 2024 Apple, Inc. All rights reserved.
+//
+
+#ifndef MTL4CommandEncoder_h
+#define MTL4CommandEncoder_h
+
+#import <Metal/MTLDefines.h>
+#import <Metal/MTLFence.h>
+#import <Metal/MTLCommandEncoder.h>
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// Memory consistency options for synchronization commands.
+typedef NS_OPTIONS(NSInteger, MTL4VisibilityOptions)
+{
+    /// Don't flush caches. When you use this option on a barrier, it turns it into an execution barrier.
+    MTL4VisibilityOptionNone          = 0,
+    
+    /// Flushes caches to the GPU (device) memory coherence point.
+    MTL4VisibilityOptionDevice        = 1 << 0,
+    
+} API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// An encoder that writes GPU commands into a command buffer.
+API_AVAILABLE(macos(26.0), ios(26.0))
+@protocol MTL4CommandEncoder <NSObject>
+
+/// Provides an optional label to assign to the command encoder for debug purposes.
+@property (nullable, copy, atomic) NSString *label;
+
+/// Returns the command buffer that is currently encoding commands.
+///
+/// This property may return undefined results if you call it after calling ``endEncoding``.
+@property (nullable, readonly, nonatomic) id<MTL4CommandBuffer> commandBuffer;
+
+/// Encodes a consumer barrier on work you commit to the same command queue.
+///
+/// Encode a barrier that guarantees that any subsequent work you encode in the current command encoder that corresponds
+/// to the `beforeStages` stages doesn't proceed until Metal completes all work prior to the current command encoder
+/// corresponding to the `afterQueueStages` stages, completes.
+///
+/// Metal can reorder the exact point where it applies the barrier, so encode the barrier as close to the command that
+/// consumes the resource as possible. Don't use this method for synchronizing resource access within the same pass.
+///
+/// If you need to synchronize work within a pass that you encode with an instance of a subclass of ``MTLCommandEncoder``,
+/// use memory barriers instead. For subclasses of ``MTL4CommandEncoder``, use encoder barriers.
+///
+/// You can specify `afterQueueStages` and `beforeStages` that contain ``MTLStages`` unrelated to the current command
+/// encoder.
+///
+/// - Parameters:
+///   - afterQueueStages: ``MTLStages`` mask that represents the stages of work to wait for.
+///                        This argument applies to work corresponding to these stages you
+///                        encode in prior command encoders, and not for the current encoder.
+///   - beforeStages:     ``MTLStages`` mask that represents the stages of work that wait.
+///                        This argument applies to work you encode in the current command encoder.
+///   - visibilityOptions: ``MTL4VisibilityOptions`` of the barrier.
+- (void)barrierAfterQueueStages:(MTLStages)afterQueueStages
+                   beforeStages:(MTLStages)beforeStages
+              visibilityOptions:(MTL4VisibilityOptions)visibilityOptions;
+
+/// Encodes a producer barrier on work committed to the same command queue.
+///
+/// This method encodes a barrier that guarantees that any work you encode using *subsequent command encoders*,
+/// corresponding to `beforeQueueStages`, don't begin until all commands you previously encode in the current
+/// encoder (and prior encoders), corresponding to `afterStages`, complete.
+///
+/// When calling this method, you can pass any ``MTLStages`` to parameters `afterStages` and `beforeQueueStages`,
+/// even stages that don't relate to the current or prior command encoders.
+///
+/// - Parameters:
+///   - afterStages:       ``MTLStages`` mask that represents the stages of work to wait for.
+///                         This argument applies to work corresponding to these stages you encode in
+///                         the current command encoder prior to this barrier command.
+///   - beforeQueueStages: ``MTLStages`` mask that represents the stages of work that need to wait.
+///                         This argument applies to subsequent encoders and not to work in the current
+///                         command encoder.
+///   - visibilityOptions: ``MTL4VisibilityOptions`` of the barrier, controlling cache flush behavior.
+- (void)barrierAfterStages:(MTLStages)afterStages
+         beforeQueueStages:(MTLStages)beforeQueueStages
+         visibilityOptions:(MTL4VisibilityOptions)visibilityOptions;
+
+/// Encodes an intra-pass barrier.
+///
+/// Encode a barrier that guarantees that any subsequent work you encode in the *current command encoder*,
+/// corresponding to `beforeEncoderStages`, doesn't begin until all prior commands in this command encoder,
+/// corresponding to `afterEncoderStages`, completes.
+///
+/// When calling this method, it's your responsibility to ensure parameters `afterEncoderStages` and `beforeEncoderStages`
+/// contain a combination of ``MTLStages`` for which this encoder can encode commands. For example, for a
+/// ``MTL4ComputeCommandEncoder`` instance, you can provide any combination of ``MTLStages/MTLStageDispatch``,
+/// ``MTLStages/MTLStageBlit`` and ``MTLStages/MTLStageAccelerationStructure``.
+///
+/// - Parameters:
+///   - afterEncoderStages:  ``MTLStages`` mask that represents the stages of work to wait for.
+///                          This argument only applies to subsequent work you encode in the current command encoder.
+///   - beforeEncoderStages: ``MTLStages`` mask that represents the stages of work that wait.
+///                          This argument only applies to work you encode in the current command encoder prior to
+///                          this barrier.
+///   - visibilityOptions: ``MTL4VisibilityOptions`` of the barrier, controlling cache flush behavior.
+- (void)barrierAfterEncoderStages:(MTLStages)afterEncoderStages
+              beforeEncoderStages:(MTLStages)beforeEncoderStages
+                visibilityOptions:(MTL4VisibilityOptions)visibilityOptions;
+
+/// Encodes a command to update a GPU fence.
+///
+/// This method encodes a command that updates a ``MTLFence`` instance after all previously-encoded commands in the
+/// current command encoder, corresponding to `afterEncoderStages`, complete.
+///
+/// Use parameter `afterEncoderStages` to pass in a combination of ``MTLStages`` for which this encoder can encode work.
+/// For example, for a ``MTL4ComputeCommandEncoder`` you can provide any combination of ``MTLStages/MTLStageDispatch``,
+/// ``MTLStages/MTLStageBlit`` and ``MTLStages/MTLStageAccelerationStructure``.
+///
+/// - Parameters:
+///   - fence:              ``MTLFence`` instance to update.
+///   - afterEncoderStages: ``MTLStages`` value that represents the stages of work to wait for.
+///                          This argument only applies to work encoded in the current command encoder.
+- (void)updateFence:(id<MTLFence>)fence
+ afterEncoderStages:(MTLStages)afterEncoderStages;
+
+/// Encodes a command to wait on a GPU fence.
+///
+/// Encode a command that guarantees that any subsequent work you encode via this current command encoder,
+/// corresponding to `beforeEncoderStages`, doesn't begin until all prior updates to the fence is complete.
+///
+/// To successfully wait for a fence update, schedule update and wait operations on the same command queue.
+///
+/// Use parameter `beforeEncoderStages` to pass in a combination of ``MTLStages`` for which this encoder can encode
+/// work. For example, for a ``MTL4ComputeCommandEncoder`` you can provide any combination of
+/// ``MTLStages/MTLStageDispatch``, ``MTLStages/MTLStageBlit`` and ``MTLStages/MTLStageAccelerationStructure``.
+///
+/// - Parameters:
+///   - fence:              ``MTLFence`` instance to wait for.
+///   - beforeEncoderStages:``MTLStages`` value that represents the stages of work that wait.
+///                         This argument only applies to work you encode in the current command encoder.
+- (void)waitForFence:(id<MTLFence>)fence
+ beforeEncoderStages:(MTLStages)beforeEncoderStages;
+
+/// Inserts a debug string into the frame data to aid debugging.
+///
+/// Calling this method doesn't change any behaviors, but can be useful for debugging purposes.
+///
+/// - Parameter string: The debug string to insert as a signpost.
+- (void)insertDebugSignpost:(NSString *)string;
+
+/// Pushes a string onto this encoder's stack of debug groups.
+///
+/// - Parameter string: The debug string to push.
+- (void)pushDebugGroup:(NSString *)string;
+
+/// Pops the latest debug group string from this encoder's stack of debug groups.
+- (void)popDebugGroup;
+
+/// Declares that all command generation from this encoder is complete.
+- (void)endEncoding;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+
+#endif //MTL4CommandEncoder_h
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4CommandQueue.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4CommandQueue.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4CommandQueue.h	1969-12-31 19:00:00
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4CommandQueue.h	2025-05-28 02:01:31
@@ -0,0 +1,416 @@
+//
+//  MTL4CommandQueue.h
+//  Metal
+//
+//  Copyright © 2024-2025 Apple, Inc. All rights reserved.
+//
+
+#ifndef MTL4CommandQueue_h
+#define MTL4CommandQueue_h
+
+#import <Metal/MTL4CommandBuffer.h>
+#import <Metal/MTL4CommandEncoder.h>
+#import <Metal/MTLTypes.h>
+#import <Metal/MTLEvent.h>
+#import <Metal/MTL4CommitFeedback.h>
+#import <Metal/MTLResourceStateCommandEncoder.h>
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+@protocol MTLBuffer;
+@protocol MTLTexture;
+@protocol MTLDrawable;
+@protocol MTLResidencySet;
+
+/// Enumeration of kinds of errors that committing an array of command buffers instances can produce.
+typedef NS_ENUM(NSInteger, MTL4CommandQueueError)
+{
+    /// Indicates the absence of any problems.
+    MTL4CommandQueueErrorNone          = 0,
+    
+    /// Indicates the workload takes longer to execute than the system allows.
+    MTL4CommandQueueErrorTimeout       = 1,
+    
+    /// Indicates a process doesn’t have access to a GPU device.
+    MTL4CommandQueueErrorNotPermitted  = 2,
+    
+    /// Indicates the GPU doesn’t have sufficient memory to execute a command buffer.
+    MTL4CommandQueueErrorOutOfMemory   = 3,
+    
+    /// Indicates the physical removal of the GPU before the command buffer completed.
+    MTL4CommandQueueErrorDeviceRemoved = 4,
+    
+    /// Indicates that the system revokes GPU access because it’s responsible for too many timeouts or hangs.
+    MTL4CommandQueueErrorAccessRevoked = 5,
+    
+    /// Indicates an internal problem in the Metal framework.
+    MTL4CommandQueueErrorInternal      = 6,
+    
+} API_AVAILABLE(macos(26.0), ios(26.0));
+
+API_AVAILABLE(macos(26.0), ios(26.0))
+MTL_EXTERN NSErrorDomain const MTL4CommandQueueErrorDomain;
+
+/// Represents options to configure a commit operation on a command queue.
+///
+/// You pass these options as a parameter when you call ``MTL4CommandQueue/commit:count:options:``.
+///
+/// - Note Instances of this class are not thread-safe. If your app modifies a shared commit options instance from
+/// multiple threads simultaneously, you are responsible for providing external synchronization.
+MTL_EXPORT
+API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4CommitOptions : NSObject
+
+/// Registers a commit feedback handler that Metal calls with feedback data when available.
+///
+/// - Parameter block: ``MTL4CommitFeedbackHandler`` that Metal invokes.
+- (void)addFeedbackHandler:(MTL4CommitFeedbackHandler)block;
+
+@end
+
+/// Groups together parameters for the creation of a new command queue.
+MTL_EXPORT
+API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4CommandQueueDescriptor : NSObject <NSCopying>
+
+/// Assigns an optional label to the command queue instance for debugging purposes.
+@property (nullable, copy, nonatomic) NSString *label;
+
+/// Assigns a dispatch queue to which Metal submits feedback notification blocks.
+///
+/// When you assign a dispatch queue via this method, Metal requires that the queue parameter you provide is a serial queue.
+///
+/// If you set the value of property to `nil`, the default, Metal allocates an internal dispatch queue to service feedback
+/// notifications.
+@property (nullable, nonatomic, assign) dispatch_queue_t feedbackQueue;
+
+@end
+
+/// Groups together arguments for an operation to update a sparse texture mapping.
+///
+/// When performing a sparse mapping update, you are responsible for issuing a barrier against stage `MTLStageResourceState`.
+///
+/// You can determine the sparse texture tier by calling `MTLTexture/sparseTextureTier`.
+typedef struct
+{
+    /// The mode of the mapping operation to perform.
+    ///
+    /// When mode is ``MTLSparseTextureMappingMode/MTLSparseTextureMappingModeMap``,
+    /// Metal walks the tiles in the region in X, Y, then Z order, assigning the next
+    /// tile from the heap in increasing order, starting at ``heapOffset``.
+    ///
+    /// When mode is ``MTLSparseTextureMappingMode/MTLSparseTextureMappingModeUnmap``,
+    /// Metal unmaps the tiles in the region, ignoring the contents of member ``heapOffset``.
+    MTLSparseTextureMappingMode mode;
+    
+    /// The region in the texture to update, in tiles.
+    MTLRegion textureRegion;
+    
+    /// The index of the mipmap level in the texture to update.
+    NSUInteger textureLevel;
+    
+    /// The index of the array slice in the texture to update.
+    ///
+    /// Provide `0` in this member if the texture type is not an array.
+    NSUInteger textureSlice;
+    
+    /// The starting offset in the heap, in tiles.
+    NSUInteger heapOffset;
+
+} MTL4UpdateSparseTextureMappingOperation;
+
+/// Groups together arguments for an operation to copy a sparse texture mapping.
+typedef struct
+{
+    /// The region in the source texture, in tiles.
+    ///
+    /// The tiles remain mapped in the source texture.
+    MTLRegion sourceRegion;
+    
+    /// The index of the mipmap level in the source texture.
+    NSUInteger sourceLevel;
+    
+    /// The index of the array slice in the texture source of the copy operation.
+    ///
+    /// Provide `0` in this member if the texture type is not an array.
+    NSUInteger sourceSlice;
+    
+    /// The origin in the destination texture to copy into, in tiles.
+    ///
+    /// The X, Y and Z coordinates of the tiles relative to the origin match the same
+    /// coordinates in the source region.
+    MTLOrigin destinationOrigin;
+    
+    /// The index of the mipmap level in the destination texture.
+    NSUInteger destinationLevel;
+    
+    /// The index of the array slice in the destination texture to copy into.
+    ///
+    /// Provide `0` in this member if the texture type is not an array.
+    NSUInteger destinationSlice;
+
+} MTL4CopySparseTextureMappingOperation;
+
+/// Groups together arguments for an operation to update a sparse buffer mapping.
+typedef struct
+{
+    /// The mode of the mapping operation to perform.
+    ///
+    /// When mode is ``MTLSparseTextureMappingMode/MTLSparseTextureMappingModeMap``,
+    /// Metal walks the tiles in the range in buffer offset order, assigning the
+    /// next tile from the heap in increasing order, starting at ``heapOffset``.
+    ///
+    /// When mode is ``MTLSparseTextureMappingMode/MTLSparseTextureMappingModeUnmap``,
+    /// Metal unmaps the tiles in the range, and ignores the value of member ``heapOffset``.
+    MTLSparseTextureMappingMode mode;
+    
+    /// The range in the buffer, in tiles.
+    NSRange bufferRange;
+    
+    /// The starting offset in the heap, in tiles.
+    NSUInteger heapOffset;
+
+} MTL4UpdateSparseBufferMappingOperation;
+
+/// Groups together arguments for an operation to copy a sparse buffer mapping.
+typedef struct
+{
+    /// The range in the source buffer, in tiles.
+    ///
+    /// The tiles remain mapped in the source buffer.
+    NSRange sourceRange;
+    
+    /// The origin in the destination buffer, in tiles.
+    NSUInteger destinationOffset;
+} MTL4CopySparseBufferMappingOperation;
+
+/// An abstraction representing a command queue that you use commit and synchronize command buffers and to
+/// perform other GPU operations.
+API_AVAILABLE(macos(26.0), ios(26.0)) NS_SWIFT_SENDABLE
+@protocol MTL4CommandQueue <NSObject>
+
+/// Returns the GPU device that the command queue belongs to.
+@property (readonly) id<MTLDevice> device;
+
+/// Obtains this queue's optional label for debugging purposes.
+@property (readonly, nullable) NSString* label;
+
+/// Enqueues an array of command buffers for execution.
+///
+/// The order in which you sort the command buffers in the array is meaningful, especially when it contains suspending/resuming
+/// render passes. A suspending/resuming render pass is a render pass you create by calling
+/// ``MTL4CommandBuffer/renderCommandEncoderWithDescriptor:options:``,
+/// and provide `MTL4RenderEncoderOptionSuspending` or `MTL4RenderEncoderOptionResuming` for the `options` parameter.
+///
+/// If your command buffers contain suspend/resume render passes, ensure that the first command buffer only suspends,
+/// and the last one only resumes. Additionally, make sure that all intermediate command buffers are both suspending
+/// and resuming.
+///
+/// - Parameters:
+///   - commandBuffers: an array of ``MTL4CommandBuffer``.
+///   - count: the number of ``MTL4CommandBuffer`` instances in the `commandBuffers` array.
+- (void)commit:(const id<MTL4CommandBuffer> _Nonnull[_Nonnull])commandBuffers
+         count:(NSUInteger)count;
+
+/// Enqueues an array of command buffer instances for execution with a set of options.
+///
+/// Provide an ``MTL4CommitOptions`` instance to configure the commit operation.
+///
+/// The order in which you sort the command buffers in the array is meaningful, especially when it contains suspending/resuming
+/// render passes. A suspending/resuming render pass is a render pass you create by calling
+/// ``MTL4CommandBuffer/renderCommandEncoderWithDescriptor:options:``,
+/// and provide `MTL4RenderEncoderOptionSuspending` or `MTL4RenderEncoderOptionResuming` for the `options` parameter.
+///
+/// If your command buffers contain suspend/resume render passes, ensure that the first command buffer only suspends,
+/// and the last one only resumes. Additionally, make sure that all intermediate command buffers are both suspending
+/// and resuming.
+///
+/// When you commit work from multiple threads, modifying and reusing the same options instance,
+/// you are responsible for externally synchronizing access to it.
+///
+/// - Parameters:
+///   - commandBuffers: an array of ``MTL4CommandBuffer``.
+///   - count: the number of ``MTL4CommandBuffer`` instances in the `commandBuffers` array.
+///   - options: an instance of ``MTL4CommitOptions`` that configures the commit operation.
+- (void)commit:(const id<MTL4CommandBuffer> _Nonnull[_Nonnull])commandBuffers
+         count:(NSUInteger)count
+       options:(MTL4CommitOptions *)options;
+
+/// Schedules an operation to signal a GPU event with a specific value after all GPU work prior to this point is complete.
+///
+/// - Parameters:
+///   - event: ``MTLEvent`` to signal.
+///   - value: the value to signal the ``MTLEvent`` with.
+- (void)signalEvent:(id<MTLEvent>)event
+              value:(uint64_t)value;
+
+/// Schedules an operation to wait for a GPU event of a specific value before continuing to execute any future GPU work.
+///
+/// - Parameters:
+///   - event: ``MTLEvent`` to wait on.
+///   - value: the specific value to wait for.
+- (void)waitForEvent:(id<MTLEvent>)event
+               value:(uint64_t)value;
+
+/// Schedules a signal operation on the command queue to indicate when rendering to a Metal drawable is complete.
+///
+/// Signaling when rendering to a ``MTLDrawable`` instance is complete indicates that it's safe to present it to the
+/// display.
+///
+/// You are responsible for calling this method after committing all command buffers that contain commands targeting
+/// this drawable, and before calling ``MTLDrawable/present``, ``MTLDrawable/presentAtTime:``, or
+/// ``MTLDrawable/presentAfterMinimumDuration:``.
+///
+/// - Note: This method doesn't trigger the presentation of the drawable, and fails if you call it after any of the
+/// present methods, or if you call it multiple times.
+///
+/// Metal doesn't guarantee that command buffers you commit to the command queue after calling this method execute
+/// before presentation.
+///
+/// - Parameters:
+///   - drawable: ``MTLDrawable`` instance to signal.
+- (void)signalDrawable:(id<MTLDrawable>)drawable;
+
+/// Schedules a wait operation on the command queue to ensure the display is no longer using a specific Metal drawable.
+///
+/// Use this method to ensure the display is no longer using a ``MTLDrawable`` instance before executing any subsequent
+/// commands.
+///
+/// This method returns immediately and doesn't perform any synchronization on the current thread. You are responsible
+/// for calling this method before committing any command buffers containing commands that target this drawable.
+///
+/// Call this method multiple times if you commit your command buffers to multiple command queues.
+///
+/// - Parameters:
+///   - drawable: ``MTLDrawable`` instance to signal.
+- (void)waitForDrawable:(id<MTLDrawable>)drawable;
+
+/// Marks a residency set as part of this command queue.
+///
+/// Ensures that Metal makes the residency set resident during the execution of all command buffers you commit to this
+/// command queue.
+///
+/// Each command queue supports up to 32 unique residency set instances.
+///
+/// - Parameter residencySet: ``MTLResidencySet`` to add to the command queue.
+- (void)addResidencySet:(id<MTLResidencySet>)residencySet;
+
+/// Marks an array of residency sets as part of this command queue.
+///
+/// Ensures that Metal makes the residency set resident during the execution of all command buffers you commit to this
+/// command queue.
+///
+/// Each command queue supports up to 32 unique residency set instances.
+///
+/// - Parameters:
+///   - residencySets: Array of ``MTLResidencySet`` instances to add to the command queue.
+///   - count: Number of ``MTLResidencySet`` instances in the array.
+- (void)addResidencySets:(const id<MTLResidencySet> _Nonnull[_Nonnull])residencySets
+                   count:(NSUInteger)count;
+
+/// Removes a residency set from the command queue.
+///
+/// After calling this method ensures only the remaining residency sets remain resident during the execution of the
+/// command buffers you commit this command queue.
+///
+/// - Parameter residencySet: ``MTLResidencySet`` instance to remove from the command queue.
+- (void)removeResidencySet:(id<MTLResidencySet>)residencySet;
+
+/// Removes multiple residency sets from the command queue.
+///
+/// After calling this method ensures only the remaining residency sets remain resident during the execution of the
+/// command buffers you commit this command queue.
+///
+/// - Parameters:
+///   - residencySets: Array of ``MTLResidencySet`` instances to remove from the command queue.
+///   - count: Number of ``MTLResidencySet`` instances in the array.
+- (void)removeResidencySets:(const id<MTLResidencySet> _Nonnull[_Nonnull])residencySets
+                      count:(NSUInteger)count;
+
+/// Updates multiple regions within a placement sparse texture to alias specific tiles of a Metal heap.
+///
+/// You can provide a `nil` parameter to the `heap` argument only if when you perform unmap operations. Otherwise, you are
+/// responsible for ensuring the heap is non-nil and has a
+/// ``MTLHeapDescriptor/maxCompatiblePlacementSparsePageSize`` of at least the texture's
+/// ``MTLTextureDescriptor/placementSparsePageSize``.
+///
+/// When performing a sparse mapping update, you are responsible for issuing a barrier against stage `MTLStageResourceState`.
+///
+/// You can determine the sparse texture tier by calling `MTLTexture/sparseTextureTier`.
+///
+/// - Parameters:
+///   - texture: A placement sparse ``MTLTexture``.
+///   - heap: ``MTLHeap`` you allocate with type ``MTLHeapType/MTLHeapTypePlacement``.
+///   - operations: An array of ``MTL4UpdateSparseTextureMappingOperation`` instances to perform.
+///   - count: Number of operations to perform.
+- (void)updateTextureMappings:(id<MTLTexture>)texture
+                         heap:(nullable id<MTLHeap>)heap
+                   operations:(const MTL4UpdateSparseTextureMappingOperation [_Nonnull])operations
+                        count:(NSUInteger)count;
+
+/// Copies multiple regions within a source placement sparse texture to a destination placement sparse texture.
+///
+/// You are responsible for ensuring the source and destination textures have the same
+/// ``MTLTextureDescriptor/placementSparsePageSize``.
+///
+/// Additionally, you are responsible for ensuring that the source and destination textures don't use the same aliased tiles
+/// at the same time.
+///
+/// - Note: If a sparse texture and a sparse buffer share the same backing tiles, these don't provide you
+/// you with meaningful views of the other resource’s data.
+///
+/// - Parameters:
+///   - sourceTexture: The source placement sparse ``MTLTexture``.
+///   - destinationTexture: The destination placement sparse ``MTLTexture``.
+///   - operations: An array of ``MTL4CopySparseTextureMappingOperation`` instances to perform.
+///   - count: Number of operations to perform.
+- (void)copyTextureMappingsFromTexture:(id<MTLTexture>)sourceTexture
+                             toTexture:(id<MTLTexture>)destinationTexture
+                            operations:(const MTL4CopySparseTextureMappingOperation [_Nonnull]) operations
+                                 count:(NSUInteger)count;
+
+/// Updates multiple regions within a placement sparse buffer to alias specific tiles from a Metal heap.
+///
+/// You can provide a `nil` parameter to the `heap` argument only when you perform unmap operations. Otherwise, you are
+/// responsible for ensuring parameter `heap` references an ``MTLHeap`` that has a ``MTLHeapDescriptor/maxCompatiblePlacementSparsePageSize``
+/// of at least the buffer's `placementSparsePageSize` you assign when creating the sparse buffer via
+/// ``MTLDevice/newBufferWithLength:options:placementSparsePageSize:``.
+///
+/// - Parameters:
+///   - buffer: A placement sparse ``MTLBuffer``.
+///   - heap: An ``MTLHeap`` you allocate with type ``MTLHeapType/MTLHeapTypePlacement``.
+///   - operations: An array of ``MTL4UpdateSparseBufferMappingOperation`` instances to perform.
+///   - count: Number of operations to perform.
+- (void)updateBufferMappings:(id<MTLBuffer>)buffer
+                        heap:(nullable id<MTLHeap>)heap
+                  operations:(const MTL4UpdateSparseBufferMappingOperation [_Nonnull])operations
+                       count:(NSUInteger)count;
+
+/// Copies multiple offsets within a source placement sparse buffer to a destination placement sparse buffer.
+///
+/// You are responsible for ensuring the source destination sparse buffers have the same `placementSparsePageSize` when
+/// you create them via ``MTLDevice/newBufferWithLength:options:placementSparsePageSize:``.
+///
+/// Additionally, you are responsible for ensuring both the source and destination sparse buffers don't use the same aliased
+/// tiles at the same time.
+///
+/// - Note: If a sparse texture and a sparse buffer share the same backing tiles, these don't provide you
+///         with meaningful views of the other resource’s data.
+///
+/// - Parameters:
+///   - sourceBuffer: The source placement sparse ``MTLBuffer``.
+///   - destinationBuffer: The destination placement sparse ``MTLBuffer``.
+///   - operations: An array of ``MTL4CopySparseBufferMappingOperation`` instances to perform.
+///   - count: Number of operations to perform.
+- (void)copyBufferMappingsFromBuffer:(id<MTLBuffer>)sourceBuffer
+                            toBuffer:(id<MTLBuffer>)destinationBuffer
+                          operations:(const MTL4CopySparseBufferMappingOperation [_Nonnull])operations
+                               count:(NSUInteger)count;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+
+#endif //MTL4CommandQueue_h
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4CommitFeedback.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4CommitFeedback.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4CommitFeedback.h	1969-12-31 19:00:00
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4CommitFeedback.h	2025-05-28 02:54:19
@@ -0,0 +1,43 @@
+//
+//  MTL4CommitFeedback.h
+//  Metal
+//
+//  Copyright © 2024 Apple, Inc. All rights reserved.
+//
+
+#ifndef MTL4CommitFeedback_h
+#define MTL4CommitFeedback_h
+
+#import <Foundation/Foundation.h>
+#import <Metal/MTLDefines.h>
+
+
+@protocol MTL4CommitFeedback;
+
+/// Defines the block signature for a callback Metal invokes to provide your app feedback after completing a workload.
+///
+/// You register a commit feedback block with Metal by providing an instance of ``MTL4CommitOptions`` to
+/// the command queue's commit method, ``MTL4CommandQueue/commit:count:options:``. The commit options instance
+/// references your commit feedback handler after you add it via its ``MTL4CommitOptions/addFeedbackHandler:``
+/// method.
+///
+/// - Parameter commitFeedback: a commit feedback instance containing information about the workload.
+typedef void (^ NS_SWIFT_SENDABLE MTL4CommitFeedbackHandler)(id<MTL4CommitFeedback> commitFeedback);
+
+/// Describes an object containing debug information from Metal to your app after completing a workload.
+API_AVAILABLE(macos(26.0), ios(26.0))
+@protocol MTL4CommitFeedback <NSObject>
+
+/// A description of an error when the GPU encounters an issue as it runs the committed command buffers.
+@property (readonly, nonatomic) NSError *error;
+
+/// The host time, in seconds, when the GPU starts execution of the committed command buffers.
+@property (readonly, nonatomic) CFTimeInterval GPUStartTime;
+
+/// The host time, in seconds, when the GPU finishes execution of the committed command buffers.
+@property (readonly, nonatomic) CFTimeInterval GPUEndTime;
+
+@end
+
+
+#endif // MTL4CommitFeedback_h
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4Compiler.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4Compiler.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4Compiler.h	1969-12-31 19:00:00
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4Compiler.h	2025-05-28 02:49:11
@@ -0,0 +1,376 @@
+//
+//  MTL4Compiler.h
+//  Metal
+//
+//  Copyright © 2024 Apple, Inc. All rights reserved.
+//
+
+#ifndef MTL4Compiler_h
+#define MTL4Compiler_h
+
+#import <Metal/MTLDefines.h>
+
+#import <Foundation/Foundation.h>
+#import <Metal/MTL4CompilerTask.h>
+#import <Metal/MTLLibrary.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@protocol MTLDevice;
+@protocol MTLDynamicLibrary;
+@class MTL4LibraryDescriptor;
+@class MTL4FunctionDescriptor;
+@class MTL4RenderPipelineDescriptor;
+@class MTL4ComputePipelineDescriptor;
+@class MTL4PipelineDescriptor;
+@protocol MTL4BinaryFunction;
+@protocol MTLComputePipelineState;
+@protocol MTLRenderPipelineState;
+
+@class MTL4MachineLearningPipelineDescriptor;
+@protocol MTL4MachineLearningPipelineState;
+
+@protocol MTL4Archive;
+@protocol MTL4PipelineDataSetSerializer;
+
+@class MTL4BinaryFunctionDescriptor;
+
+
+@class MTL4PipelineStageDynamicLinkingDescriptor;
+@class MTL4RenderPipelineDynamicLinkingDescriptor;
+
+/// Groups together properties for creating a compiler context.
+MTL_EXPORT
+API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4CompilerDescriptor : NSObject <NSCopying>
+
+/// Assigns an optional descriptor label to the compiler for debugging purposes.
+@property (copy, nonatomic, nullable) NSString *label;
+
+/// Assigns a pipeline data set serializer into which this compiler stores data for all pipelines it creates.
+@property (nullable, strong) id<MTL4PipelineDataSetSerializer> pipelineDataSetSerializer;
+
+
+@end
+
+MTL_EXPORT
+API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4CompilerTaskOptions : NSObject <NSCopying>
+
+/// Specifies a set of archive instances this compilation process uses for accelerating the build process.
+///
+/// In case of a match in the archive, the compiler can skip one or more compilation tasks, speeding up the build process.
+@property (nullable, copy, nonatomic) NSArray<id<MTL4Archive>>* lookupArchives;
+
+@end
+
+/// Provides a signature for a callback block that Metal calls when the compiler finishes a build task for a binary function.
+typedef void (^ NS_SWIFT_SENDABLE MTL4NewBinaryFunctionCompletionHandler)(id<MTL4BinaryFunction> __nullable function, NSError* __nullable error)
+    API_AVAILABLE(macos(26.0), ios(26.0));
+
+
+/// Provides a signature for a callback block that Metal calls when the compiler finishes a build task for a machine learning pipeline state.
+typedef void (^ NS_SWIFT_SENDABLE MTL4NewMachineLearningPipelineStateCompletionHandler)(id<MTL4MachineLearningPipelineState> __nullable mlPipelineState, NSError* __nullable error)
+API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// A abstraction for a pipeline state and shader function compiler.
+API_AVAILABLE(macos(26.0), ios(26.0)) NS_SWIFT_SENDABLE
+@protocol MTL4Compiler <NSObject>
+/// Returns the device that this compiler belongs to.
+@property (readonly) id<MTLDevice> device;
+
+/// Returns the optional label you specify at creation time.
+@property (readonly, nullable) NSString* label;
+
+/// Returns the pipeline data set serializer into which this compiler stores data for all pipelines it creates.
+@property (readonly, strong, nullable) id<MTL4PipelineDataSetSerializer> pipelineDataSetSerializer;
+
+
+/// Creates a new Metal library synchronously.
+///
+/// - Parameters:
+///   - descriptor: A description of the library to create.
+///   - error: An optional parameter into which Metal stores information in case of an error.
+///
+/// - Returns: a Metal library instance upon success, `nil` otherwise.
+- (nullable id<MTLLibrary>)newLibraryWithDescriptor:(MTL4LibraryDescriptor*)descriptor error:(NSError**)error;
+
+/// Creates a new dynamic library from a library containing Metal IR code synchronously.
+///
+/// - Parameters:
+///   - library: A library from which this compiler creates the new a dynamic library
+///   - error: An optional parameter into which Metal stores information in case of an error.
+///
+/// - Returns: A new dynamic Metal library upon success, `nil` otherwise.
+- (nullable id<MTLDynamicLibrary>)newDynamicLibrary:(id<MTLLibrary>)library error:(NSError**)error;
+
+/// Creates a new dynamic library from the contents of a file at an URL location synchronously.
+///
+/// - Parameters:
+///   - url: An URL referencing a file whose contents this compiler uses to build a dynamic library.
+///   - error: An optional parameter into which Metal stores information in case of an error.
+///
+/// - Returns: A new dynamic Metal library upon success, `nil` otherwise.
+- (nullable id<MTLDynamicLibrary>)newDynamicLibraryWithURL:(NSURL*)url error:(NSError**)error;
+
+/// Creates a new compute pipeline state object synchronously.
+///
+/// - Parameters:
+///   - descriptor: A compute pipeline state descriptor describing the pipeline this compiler creates.
+///   - compilerTaskOptions: A description of the compilation process itself, providing parameters that
+///         influence execution of the compilation process.
+///   - error: An optional parameter into which Metal stores information in case of an error.
+///
+/// - Returns: A new compute pipeline state object upon success, `nil` otherwise.
+- (nullable id<MTLComputePipelineState>)newComputePipelineStateWithDescriptor:(MTL4ComputePipelineDescriptor*)descriptor
+                                                          compilerTaskOptions:(nullable MTL4CompilerTaskOptions*)compilerTaskOptions
+                                                                        error:(NSError**)error;
+
+/// Creates a new compute pipeline state synchronously.
+///
+/// - Parameters:
+///   - descriptor: A compute pipeline state descriptor describing the pipeline this compiler creates.
+///   - dynamicLinkingDescriptor: An optional parameter that provides additional configuration for linking the pipeline state object.
+///   - compilerTaskOptions: A description of the compilation process itself, providing parameters that
+///         influence execution of the compilation process.
+///   - error: An optional parameter into which Metal stores information in case of an error.
+///
+/// - Returns: A new compute pipeline state object upon success, `nil` otherwise.
+- (nullable id<MTLComputePipelineState>)newComputePipelineStateWithDescriptor:(MTL4ComputePipelineDescriptor *)descriptor
+                                                     dynamicLinkingDescriptor:(nullable MTL4PipelineStageDynamicLinkingDescriptor*)dynamicLinkingDescriptor
+                                                          compilerTaskOptions:(nullable MTL4CompilerTaskOptions *)compilerTaskOptions
+                                                                        error:(NSError **)error;
+
+/// Creates a new render pipeline state synchronously.
+///
+/// Use this method to build any render pipeline type, including render, tile, and mesh render pipeline states.
+/// The type of the descriptor you pass indicates the pipeline type this method builds.
+///
+/// Passing in a compute pipeline descriptor to the `descriptor` parameter produces an error.
+///
+/// - Parameters:
+///   - descriptor: A render, tile, or mesh pipeline state descriptor that describes the pipeline to create.
+///   - compilerTaskOptions: A description of the compilation process itself, providing parameters that
+///         influence execution of the compilation process.
+///   - error: An optional parameter into which Metal stores information in case of an error.
+///
+/// - Returns: A new render pipeline state object upon success, `nil` otherwise.
+- (nullable id<MTLRenderPipelineState>)newRenderPipelineStateWithDescriptor:(MTL4PipelineDescriptor*)descriptor
+                                                        compilerTaskOptions:(nullable MTL4CompilerTaskOptions*)compilerTaskOptions
+                                                                      error:(NSError**)error;
+
+/// Creates a new render pipeline state synchronously.
+///
+/// Use this method to build any render pipeline type, including render, tile, and mesh render pipeline states.
+/// The type of the descriptor you pass indicates the pipeline type this method builds.
+///
+/// Passing in a compute pipeline descriptor to the `descriptor` parameter produces an error.
+///
+/// - Parameters:
+///   - descriptor: A render, tile, or mesh pipeline state descriptor that describes the pipeline to create.
+///   - dynamicLinkingDescriptor: An optional parameter that provides additional configuration for linking the pipeline state object.
+///   - compilerTaskOptions: A description of the compilation process itself, providing parameters that
+///         influence execution of the compilation process.
+///   - error: An optional parameter into which Metal stores information in case of an error.
+///
+/// - Returns: A new render pipeline state object upon success, `nil` otherwise.
+
+- (nullable id<MTLRenderPipelineState>)newRenderPipelineStateWithDescriptor:(MTL4PipelineDescriptor *)descriptor
+                                                   dynamicLinkingDescriptor:(nullable MTL4RenderPipelineDynamicLinkingDescriptor*)dynamicLinkingDescriptor
+                                                        compilerTaskOptions:(nullable MTL4CompilerTaskOptions *)compilerTaskOptions
+                                                                      error:(NSError **)error;
+
+/// Creates a new render pipeline state from another, previously unspecialized, pipeline state.
+///
+/// Metal specializes the pipeline state with new state values the descriptor provides, observing the following rules:
+/// * The compiler only updates properties that were originally specified as *unspecialized*. It doesn't modify other
+/// already-specialized properties
+/// * The compiler sets to their default behavior any unspecialized properties that your passed-in descriptor doesn't specialize
+///
+/// Additionally, there are some cases where the Metal can't specialize a pipeline:
+/// * If the original pipeline state object doesn't have any unspecialized properties
+/// * You can't re-specialize a previously specialized pipeline state object
+///
+/// - Parameters:
+///   - descriptor: A render pipeline state descriptor or any type: default, tile, or mesh render pipeline descriptor.
+///   - pipeline: A render pipeline state containing unspecialized substate.
+///   - error: An optional parameter into which Metal stores information in case of an error.
+///
+/// - Returns: a fully-specialized pipeline state object.
+///
+- (nullable id<MTLRenderPipelineState>)newRenderPipelineStateBySpecializationWithDescriptor:(MTL4PipelineDescriptor*)descriptor
+                                                                                   pipeline:(id<MTLRenderPipelineState>)pipeline
+                                                                                      error:(NSError**)error
+    API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// Creates a new binary visible or intersection function synchronously.
+///
+/// - Parameters:
+///   - descriptor: A binary function descriptor to use for creating the binary function.
+///   - compilerTaskOptions: A descriptor of the compilation itself, providing parameters that
+///         influence execution of the compilation process.
+///   - error: An optional parameter into which Metal stores information in case of an error.
+///
+/// - Returns: a new binary function upon success, `nil` otherwise.
+- (nullable id<MTL4BinaryFunction>) newBinaryFunctionWithDescriptor:(MTL4BinaryFunctionDescriptor *)descriptor
+                                                compilerTaskOptions:(nullable MTL4CompilerTaskOptions*)compilerTaskOptions
+                                                              error:(NSError**)error;
+
+/// Creates a new Metal library instance asynchronously.
+///
+/// - Parameters:
+///   - descriptor: A description of the library to create.
+///   - completionHandler: A block Metal calls when it finishes the build task.
+///
+/// - Returns: a compiler task representing the asynchronous compilation task.
+- (id<MTL4CompilerTask>)newLibraryWithDescriptor:(MTL4LibraryDescriptor*)descriptor
+                               completionHandler:(MTLNewLibraryCompletionHandler)completionHandler;
+
+/// Creates a new dynamic Metal library instance asynchronously.
+///
+/// - Parameters:
+///   - library: A library from which this compiler creates the new a dynamic library
+///   - completionHandler: A block Metal calls when it finishes the build task.
+///
+/// - Returns: A compiler task representing the asynchronous compilation task.
+- (id<MTL4CompilerTask>)newDynamicLibrary:(id<MTLLibrary>)library
+                        completionHandler:(MTLNewDynamicLibraryCompletionHandler)completionHandler;
+
+/// Creates a new dynamic library from the contents of a file at an URL location synchronously.
+///
+/// - Parameters:
+///   - url: An URL referencing a file whose contents this compiler uses to build a dynamic library.
+///   - completionHandler: A block Metal calls when it finishes the build task.
+///
+/// - Returns: a compiler task representing the asynchronous compilation task.
+- (id<MTL4CompilerTask>)newDynamicLibraryWithURL:(NSURL*)url
+                               completionHandler:(MTLNewDynamicLibraryCompletionHandler)completionHandler;
+
+/// Creates a new compute pipeline state asynchronously.
+///
+/// - Parameters:
+///   - descriptor: A compute pipeline state descriptor, describing the compute pipeline to create.
+///   - compilerTaskOptions: A descriptor of the compilation itself, providing parameters that
+///         influence execution of the compilation process.
+///   - completionHandler: A block Metal calls when it finishes the build task.
+///
+/// - Returns: a compiler task representing the asynchronous compilation task.
+- (id<MTL4CompilerTask>)newComputePipelineStateWithDescriptor:(MTL4ComputePipelineDescriptor*)descriptor
+                                          compilerTaskOptions:(nullable MTL4CompilerTaskOptions*)compilerTaskOptions
+                                            completionHandler:(MTLNewComputePipelineStateCompletionHandler)completionHandler;
+
+/// Creates a new compute pipeline state asynchronously.
+///
+/// - Parameters:
+///   - descriptor: A compute pipeline state descriptor, describing the compute pipeline to create.
+///   - dynamicLinkingDescriptor: An optional parameter that provides additional configuration for linking the pipeline state object.
+///   - compilerTaskOptions: A description of the compilation process itself, providing parameters that
+///         influence execution of the compilation process.
+///   - completionHandler: A block Metal calls when it finishes the build task.
+///
+/// - Returns: a compiler task representing the asynchronous compilation task.
+- (id<MTL4CompilerTask>)newComputePipelineStateWithDescriptor:(MTL4ComputePipelineDescriptor *)descriptor
+                                     dynamicLinkingDescriptor:(nullable MTL4PipelineStageDynamicLinkingDescriptor*)dynamicLinkingDescriptor
+                                          compilerTaskOptions:(nullable MTL4CompilerTaskOptions *)compilerTaskOptions
+                                            completionHandler:(MTLNewComputePipelineStateCompletionHandler)completionHandler;
+
+/// Creates a new render pipeline state asynchronously.
+///
+/// Use this method to build any render pipeline type, including render, tile, and mesh render pipeline states.
+/// The type of the descriptor you pass indicates the pipeline type this method builds.
+///
+/// Passing in a compute pipeline descriptor to the `descriptor` parameter produces an error.
+///
+/// - Parameters:
+///   - descriptor: A render, tile, or mesh pipeline state descriptor that describes the pipeline to create.
+///   - compilerTaskOptions: A description of the compilation process itself, providing parameters that
+///         influence execution of the compilation process.
+///   - completionHandler: A block Metal calls when it finishes the build task.
+///
+/// - Returns: a compiler task representing the asynchronous compilation task.
+- (id<MTL4CompilerTask>)newRenderPipelineStateWithDescriptor:(MTL4PipelineDescriptor*)descriptor
+                                         compilerTaskOptions:(nullable MTL4CompilerTaskOptions*)compilerTaskOptions
+                                           completionHandler:(MTLNewRenderPipelineStateCompletionHandler)completionHandler;
+
+/// Creates a new render pipeline state asynchronously.
+///
+/// Use this method to build any render pipeline type, including render, tile, and mesh render pipeline states.
+/// The type of the descriptor you pass indicates the pipeline type this method builds.
+///
+/// Passing in a compute pipeline descriptor to the `descriptor` parameter produces an error.
+///
+/// - Parameters:
+///   - descriptor: A render, tile, or mesh pipeline state descriptor that describes the pipeline to create.
+///   - dynamicLinkingDescriptor: An optional parameter that provides additional configuration for linking the pipeline state object.
+///   - compilerTaskOptions: A description of the compilation process itself, providing parameters that
+///         influence execution of the compilation process.
+///   - completionHandler: A block Metal calls when it finishes the build task.
+///
+/// - Returns: a compiler task representing the asynchronous compilation task.
+- (id<MTL4CompilerTask>)newRenderPipelineStateWithDescriptor:(MTL4PipelineDescriptor*)descriptor
+                                    dynamicLinkingDescriptor:(nullable MTL4RenderPipelineDynamicLinkingDescriptor*)dynamicLinkingDescriptor
+                                         compilerTaskOptions:(nullable MTL4CompilerTaskOptions*)compilerTaskOptions
+                                           completionHandler:(MTLNewRenderPipelineStateCompletionHandler)completionHandler;
+
+/// Creates a new render pipeline state from another, previously unspecialized, pipeline state
+///
+/// Metal specializes the pipeline state with new state values the descriptor provides, observing the following rules:
+/// * The compiler only updates properties that were originally specified as *unspecialized*. It doesn't modify other
+/// already-specialized properties
+/// * The compiler sets to their default behavior any unspecialized properties that your passed-in descriptor doesn't specialize
+///
+/// Additionally, there are some cases where the Metal can't specialize a pipeline:
+/// * If the original pipeline state object doesn't have any unspecialized properties
+/// * You can't re-specialize a previosuly specialized pipeline state object
+///
+/// - Parameters:
+///   - descriptor: A render pipeline state descriptor or any type: default, tile, or mesh render pipeline descriptor.
+///   - pipeline: A render pipeline state containing unspecialized substate.
+///   - completionHandler: A block Metal calls when it finishes the build task.
+///
+/// - Returns: a compiler task representing the asynchronous compilation task.
+///
+- (id<MTL4CompilerTask>)newRenderPipelineStateBySpecializationWithDescriptor:(MTL4PipelineDescriptor*)descriptor
+                                                                    pipeline:(id<MTLRenderPipelineState>)pipeline
+                                                           completionHandler:(MTLNewRenderPipelineStateCompletionHandler)completionHandler
+    API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// Creates a new binary visible/intersection function asynchronously.
+/// - Parameters:
+///   - descriptor: a binary function descriptor used to create the binary function.
+///   - compilerTaskOptions: a descriptor of the compilation itself, providing parameters to
+///         influence execution of this compilation, but not the resulting object.
+///   - completionHandler: a callback used on task completion.
+/// - Returns: a compiler task indicating the asynchronous compilation job.
+- (id<MTL4CompilerTask>)newBinaryFunctionWithDescriptor:(MTL4BinaryFunctionDescriptor *)descriptor
+                                    compilerTaskOptions:(nullable MTL4CompilerTaskOptions*)compilerTaskOptions
+                                      completionHandler:(MTL4NewBinaryFunctionCompletionHandler)completionHandler;
+
+/// Creates a new ML pipeline state with descriptor.
+///
+/// - Parameters:
+///   - descriptor: A machine learning pipeline state descriptor to use for creating the new pipeline state.
+///   - error: An optional parameter into which Metal stores information in case of an error.
+///
+/// - Returns: A machine learning pipeline state if operation is successful, otherwise `nil`.
+- (nullable id<MTL4MachineLearningPipelineState>)newMachineLearningPipelineStateWithDescriptor:(MTL4MachineLearningPipelineDescriptor *)descriptor
+                                                                                         error:(NSError**)error;
+
+/// Creates a new machine learning pipeline state asynchronously.
+///
+/// - Parameters:
+///   - descriptor: A machine learning pipeline state descriptor to use for creating the new pipeline state.
+///   - completionHandler: A block Metal calls when it finishes the build task.
+///
+/// - Returns: a compiler task representing the asynchronous compilation task.
+- (id<MTL4CompilerTask>)newMachineLearningPipelineStateWithDescriptor:(MTL4MachineLearningPipelineDescriptor *)descriptor
+                                                    completionHandler:(MTL4NewMachineLearningPipelineStateCompletionHandler)completionHandler;
+
+/// Cancels all pending compiler tasks for this compiler.
+- (void)cancel;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+#endif // MTL4Compiler_h
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4CompilerTask.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4CompilerTask.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4CompilerTask.h	1969-12-31 19:00:00
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4CompilerTask.h	2025-05-28 02:54:17
@@ -0,0 +1,55 @@
+//
+//  MTL4CompilerTask.h
+//  Metal
+//
+//  Copyright © 2024 Apple, Inc. All rights reserved.
+//
+
+#ifndef MTL4CompilerTask_h
+#define MTL4CompilerTask_h
+
+#import <Metal/MTLDefines.h>
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@protocol MTL4Compiler;
+
+/// Represents the status of a compiler task.
+API_AVAILABLE(macos(26.0), ios(26.0))
+typedef NS_ENUM(NSInteger, MTL4CompilerTaskStatus) {
+    /// No status.
+    MTL4CompilerTaskStatusNone      = 0,
+    
+    /// The compiler task is currently scheduled.
+    MTL4CompilerTaskStatusScheduled = 1,
+    
+    /// The compiler task is currently compiling.
+    MTL4CompilerTaskStatusCompiling = 2,
+    
+    /// The compiler task is finished.
+    MTL4CompilerTaskStatusFinished  = 3,
+};
+
+/// A reference to an asynchronous compilation task that you initiate from a compiler instance.
+API_AVAILABLE(macos(26.0), ios(26.0))
+NS_SWIFT_UNAVAILABLE("Use Swift Task instead.")
+@protocol MTL4CompilerTask <NSObject>
+/// Returns the compiler instance that this asynchronous compiler task belongs to.
+@property (readonly) id<MTL4Compiler> compiler;
+
+/// Returns the compiler task status.
+///
+/// The default is `MTL4CompilerStatusNone`.
+@property (readonly) MTL4CompilerTaskStatus status;
+
+/// Waits synchronously for this compile task to complete by blocking the calling thread.
+- (void)waitUntilCompleted;
+
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+#endif // MTL4CompilerTask_h
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4ComputeCommandEncoder.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4ComputeCommandEncoder.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4ComputeCommandEncoder.h	1969-12-31 19:00:00
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4ComputeCommandEncoder.h	2025-05-28 02:54:18
@@ -0,0 +1,753 @@
+//
+//  MTL4ComputeCommandEncoder.h
+//  Metal
+//
+//  Copyright © 2024 Apple, Inc. All rights reserved.
+//
+
+#ifndef MTL4ComputeCommandEncoder_h
+#define MTL4ComputeCommandEncoder_h
+
+#import <Metal/MTLDefines.h>
+#import <Metal/MTLBlitCommandEncoder.h>
+
+#import <Metal/MTL4CommandEncoder.h>
+#import <Metal/MTL4AccelerationStructure.h>
+#import <Metal/MTL4Counters.h>
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+@protocol MTL4ArgumentTable;
+@protocol MTLComputePipelineState;
+@protocol MTL4CounterHeap;
+
+/// Encodes a compute pass and other memory operations into a command buffer.
+///
+/// Use instances of this abstraction to encode a compute pass into ``MTL4CommandBuffer`` instances, as well as commands
+/// that copy and modify the underlying memory of various Metal resources, and commands that build or refit acceleration
+/// structures.
+API_AVAILABLE(macos(26.0), ios(26.0))
+@protocol MTL4ComputeCommandEncoder <MTL4CommandEncoder>
+
+/// Queries a bitmask representing the shader stages on which commands currently present in this command encoder
+/// operate.
+///
+/// Metal dynamically updates this property based on the commands you encode into the command encoder, for example,
+/// it sets the bit ``MTLStages/MTLStageDispatch`` if this encoder contains any commands that dispatch a compute kernel.
+///
+/// Similarly, it sets the bit ``MTLStages/MTLStageBlit`` if this encoder contains any commands to copy or modify buffers,
+/// textures, or indirect command buffers.
+///
+/// Finally, Metal sets the bit ``MTLStages/MTLStageAccelerationStructure`` if this encoder contains any commands that
+/// build, copy, or refit acceleration structures.
+///
+///- Returns: a bitmask representing shader stages that commands currently present in this command encoder operate on.
+- (MTLStages)stages;
+
+/// Configures this encoder with a compute pipeline state that applies to your subsequent dispatch commands.
+///
+/// - Parameter state: a non-`nil` ``MTLComputePipelineState``.
+- (void)setComputePipelineState:(id<MTLComputePipelineState>)state;
+
+/// Configures the size of a threadgroup memory buffer for a threadgroup argument in the compute shader function.
+///
+/// - Parameters:
+///   - length: The size of the threadgroup memory, in bytes. Use a multiple of `16` bytes.
+///   - index: An integer that corresponds to the index of the argument you annotate with attribute `[[threadgroup(index)]]`
+///   in the shader function.
+- (void)setThreadgroupMemoryLength:(NSUInteger)length
+                           atIndex:(NSUInteger)index;
+
+/// Specifies the size, in pixels, of imageblock data in tile memory.
+///
+/// - Parameters:
+///   - width:  The width of the imageblock, in pixels.
+///   - height: The height of the imageblock, in pixels.
+- (void)setImageblockWidth:(NSUInteger)width
+                    height:(NSUInteger)height;
+
+/// Encodes a compute dispatch command using an arbitrarily-sized grid.
+///
+/// - Parameters:
+///   - threadsPerGrid:        An ``MTLSize`` instance that represents the number of threads in the grid,
+///                            in each dimension.
+///   - threadsPerThreadgroup: An ``MTLSize`` instance that represents the number of threads in one
+///                            threadgroup, in each dimension.
+- (void)dispatchThreads:(MTLSize)threadsPerGrid
+  threadsPerThreadgroup:(MTLSize)threadsPerThreadgroup;
+
+/// Encodes a compute dispatch command with a grid that aligns to threadgroup boundaries.
+///
+/// - Parameters:
+///   - threadgroupsPerGrid:   An ``MTLSize`` instance that represents the number of threadgroups in the grid,
+///                            in each dimension.
+///   - threadsPerThreadgroup: An ``MTLSize`` instance that represents the number of threads in one
+///                            threadgroup, in each dimension.
+- (void)dispatchThreadgroups:(MTLSize)threadgroupsPerGrid
+       threadsPerThreadgroup:(MTLSize)threadsPerThreadgroup;
+
+/// Encodes a compute dispatch command with a grid that aligns to threadgroup boundaries, using an indirect buffer
+/// for arguments.
+///
+/// This method allows you to supply the threadgroups-per-grid counts indirectly via an ``MTLBuffer`` index. This
+/// enables you to calculate this value in the GPU timeline from a shader function, enabling GPU-driven workflows.
+///
+/// Metal assumes that the buffer contents correspond to the layout of struct ``MTLDispatchThreadgroupsIndirectArguments``.
+/// You are responsible for ensuring this address aligns to 4-bytes.
+///
+/// Use an instance of ``MTLResidencySet`` to mark residency of the indirect buffer that the `indirectBuffer`
+/// parameter references.
+///
+/// - Parameters:
+///   - indirectBuffer:        GPUAddress of a ``MTLBuffer`` instance providing compute parameters.
+///                            Lay out the data in this buffer as described in the
+///                            ``MTLDispatchThreadgroupsIndirectArguments`` structure. This address
+///                            requires 4-byte alignment.
+///   - threadsPerThreadgroup: A ``MTLSize`` instance that represents the number of threads in one
+///                            threadgroup, in each dimension.
+- (void)dispatchThreadgroupsWithIndirectBuffer:(uint64_t)indirectBuffer
+                         threadsPerThreadgroup:(MTLSize)threadsPerThreadgroup;
+
+/// Encodes a compute dispatch command with an arbitrarily sized grid, using an indirect buffer for arguments.
+///
+/// - Parameters:
+///   - indirectBuffer: GPUAddress of a ``MTLBuffer`` instance providing arguments. Lay out the data
+///                     in this buffer as described in the ``MTLDispatchThreadsIndirectArguments``
+///                     structure. This address requires 4-byte alignment.
+- (void)dispatchThreadsWithIndirectBuffer:(uint64_t)indirectBuffer;
+
+/// Encodes a command to execute a series of commands from an indirect command buffer.
+///
+/// - Parameters:
+///   - indirectCommandBuffer: ``MTLIndirectCommandBuffer`` instance containing the commands to execute.
+///   - executionRange:        The range of commands to execute. The maximum length of the range is 16,384 commands.
+- (void)executeCommandsInBuffer:(id<MTLIndirectCommandBuffer>)indirectCommandBuffer
+                      withRange:(NSRange)executionRange;
+
+/// Encodes an instruction to execute commands from an indirect command buffer, using an indirect buffer for
+/// arguments.
+///
+/// Use an instance of ``MTLResidencySet`` to mark residency of the indirect buffer that the `indirectRangeBuffer`
+/// parameter references.
+///
+/// - Parameters:
+///   - indirectCommandbuffer: ``MTLIndirectCommandBuffer`` instance containing the commands to execute.
+///   - indirectRangeBuffer:   GPUAddress of a ``MTLBuffer`` containing the execution range. Lay out the data
+///                            in this buffer as described in the ``MTLIndirectCommandBufferExecutionRange``
+///                            structure. The maximum length of the range is 16384 commands. This address
+///                            requires 4-byte alignment.
+- (void)executeCommandsInBuffer:(id<MTLIndirectCommandBuffer>)indirectCommandbuffer
+                 indirectBuffer:(uint64_t)indirectRangeBuffer;
+
+/// Encodes a command that copies data from a texture to another.
+///
+/// - Parameters:
+///   - sourceTexture:      An ``MTLTexture`` instance the command copies data from.
+///   - destinationTexture: Another ``MTLTexture`` instance the command copies the data into that has the same
+///                         ``MTLTexture/pixelFormat`` and ``MTLTexture/sampleCount`` as `sourceTexture`.
+- (void)copyFromTexture:(id<MTLTexture>)sourceTexture
+              toTexture:(id<MTLTexture>)destinationTexture;
+
+/// Encodes a command that copies slices of a texture to slices of another texture.
+///
+/// - Parameters:
+///   - sourceTexture:      A ``MTLTexture`` texture that the command copies data from. To read the source
+///                         texture contents, you need to set its ``MTLTexture/framebufferOnly`` property
+///                         to <doc://com.apple.documentation/documentation/swift/false> prior to drawing into it.
+///   - sourceSlice:        A slice within `sourceTexture` the command uses as a starting point to copy
+///                         data from. Set this to `0` if `sourceTexture` isn’t a texture array or a
+///                         cube texture.
+///   - sourceLevel:        A mipmap level within `sourceTexture`.
+///   - destinationTexture: Another ``MTLTexture`` the command copies the data to that has the same
+///                         ``MTLTexture/pixelFormat`` and ``MTLTexture/sampleCount`` as `sourceTexture`.
+///                         To write the contents into this texture, you need to set its ``MTLTexture/framebufferOnly``
+///                         property to <doc://com.apple.documentation/documentation/swift/false>.
+///   - destinationSlice:   A slice within `destinationTexture` the command uses as its starting point
+///                         for copying data to. Set this to `0` if `destinationTexture` isn’t a texture
+///                         array or a cube texture.
+///   - destinationLevel:   A mipmap level within `destinationTexture`. The mipmap level you reference needs to
+///                         have the same size as the `sourceTexture` slice's mipmap at `sourceLevel`.
+///   - sliceCount:         The number of slices the command copies so that it satisfies the conditions
+///                         that the sum of `sourceSlice` and `sliceCount` doesn’t exceed the number of
+///                         slices in `sourceTexture` and the sum of `destinationSlice` and `sliceCount`
+///                         doesn’t exceed the number of slices in `destinationTexture`.
+///   - levelCount:         The number of mipmap levels the command copies so that it satisfies the
+///                         conditions that the sum of `sourceLevel` and `levelCount` doesn’t exceed the
+///                         number of mipmap levels in `sourceTexture` and the sum of `destinationLevel`
+///                         and `levelCount` doesn’t exceed the number of mipmap levels in `destinationTexture`.
+- (void)copyFromTexture:(id<MTLTexture>)sourceTexture
+            sourceSlice:(NSUInteger)sourceSlice
+            sourceLevel:(NSUInteger)sourceLevel
+              toTexture:(id<MTLTexture>)destinationTexture
+       destinationSlice:(NSUInteger)destinationSlice
+       destinationLevel:(NSUInteger)destinationLevel
+             sliceCount:(NSUInteger)sliceCount
+             levelCount:(NSUInteger)levelCount;
+
+/// Encodes a command that copies image data from a slice of a texture into a slice of another texture.
+///
+/// - Parameters:
+///   - sourceTexture:      An ``MTLTexture`` texture that the command copies data from. To read the source
+///                         texture contents, you need to set its ``MTLTexture/framebufferOnly`` property
+///                         to <doc://com.apple.documentation/documentation/swift/false> prior to drawing into it.
+///   - sourceSlice:        A slice within `sourceTexture` the command uses as a starting point to copy
+///                         data from. Set this to `0` if `sourceTexture` isn’t a texture array or a
+///                         cube texture.
+///   - sourceLevel:        A mipmap level within `sourceTexture`.
+///   - sourceOrigin:       An ``MTLOrigin`` instance that represents a location within `sourceTexture`
+///                         that the command begins copying data from. Assign `0` to each dimension
+///                         that’s not relevant to `sourceTexture`.
+///   - sourceSize:         An ``MTLSize`` instance that represents the size of the region, in pixels,
+///                         that the command copies from `sourceTexture`, starting at `sourceOrigin`.
+///                         Assign `1` to each dimension that’s not relevant to `sourceTexture`. If
+///                         sourceTexture uses a compressed pixel format, set `sourceSize` to a multiple
+///                         of the pixel format’s block size. If the block extends outside the bounds of
+///                         the texture, clamp `sourceSize` to the edge of the texture.
+///   - destinationTexture: Another ``MTLTexture`` the command copies the data to that has the same
+///                         ``MTLTexture/pixelFormat`` and ``MTLTexture/sampleCount`` as `sourceTexture`.
+///                         To write the contents into this texture, you need to set its ``MTLTexture/framebufferOnly``
+///                         property to <doc://com.apple.documentation/documentation/swift/false>.
+///   - destinationSlice:   A slice within `destinationTexture` the command uses as its starting point
+///                         for copying data to. Set this to `0` if `destinationTexture` isn’t a texture
+///                         array or a cube texture.
+///   - destinationLevel:   A mipmap level within `destinationTexture`. The mipmap level you reference needs to
+///                         have the same size as the `sourceTexture` slice's mipmap at `sourceLevel`.
+///   - destinationOrigin:  An ``MTLOrigin`` instance that represents a location within `destinationTexture`
+///                         that the command begins copying data to. Assign `0` to each dimension that’s
+///                         not relevant to `destinationTexture`.
+- (void)copyFromTexture:(id<MTLTexture>)sourceTexture
+            sourceSlice:(NSUInteger)sourceSlice
+            sourceLevel:(NSUInteger)sourceLevel
+           sourceOrigin:(MTLOrigin)sourceOrigin
+             sourceSize:(MTLSize)sourceSize
+              toTexture:(id<MTLTexture>)destinationTexture
+       destinationSlice:(NSUInteger)destinationSlice
+       destinationLevel:(NSUInteger)destinationLevel
+      destinationOrigin:(MTLOrigin)destinationOrigin;
+
+/// Encodes a command that copies image data from a slice of an ``MTLTexture`` instance to an ``MTLBuffer`` instance.
+///
+/// - Parameters:
+///   - sourceTexture:            An ``MTLTexture`` texture that the command copies data from. To read the source
+///                               texture contents, you need to set its ``MTLTexture/framebufferOnly`` property
+///                               to <doc://com.apple.documentation/documentation/swift/false> prior to drawing into it.
+///   - sourceSlice:              A slice within `sourceTexture` the command uses as a starting point to copy
+///                               data from. Set this to `0` if `sourceTexture` isn’t a texture array or a
+///                               cube texture.
+///   - sourceLevel:              A mipmap level within `sourceTexture`.
+///   - sourceOrigin:             An ``MTLOrigin`` instance that represents a location within `sourceTexture`
+///                               that the command begins copying data from. Assign `0` to each dimension
+///                               that’s not relevant to `sourceTexture`.
+///   - sourceSize:               An ``MTLSize`` instance that represents the size of the region, in pixels,
+///                               that the command copies from `sourceTexture`, starting at `sourceOrigin`.
+///                               Assign `1` to each dimension that’s not relevant to `sourceTexture`.
+///                               If `sourceTexture` uses a compressed pixel format, set `sourceSize` to a
+///                               multiple of the `sourceTexture's` ``MTLTexture/pixelFormat`` block size.
+///                               If the block extends outside the bounds of the texture, clamp `sourceSize`
+///                               to the edge of the texture.
+///   - destinationBuffer:        An ``MTLBuffer`` instance the command copies data to.
+///   - destinationOffset:        A byte offset within `destinationBuffer` the command copies to. The value
+///                               you provide as this argument needs to be a multiple of `sourceTexture's` pixel size,
+///                               in bytes.
+///   - destinationBytesPerRow:   The number of bytes between adjacent rows of pixels in `destinationBuffer`.
+///                               This value must be a multiple of `sourceTexture's` pixel size, in bytes,
+///                               and less than or equal to the product of `sourceTexture's` pixel size,
+///                               in bytes, and the largest pixel width `sourceTexture’s` type allows. If
+///                               `sourceTexture` uses a compressed pixel format, set `destinationBytesPerRow`
+///                               to the number of bytes between the starts of two row blocks.
+///   - destinationBytesPerImage: The number of bytes between each 2D image of a 3D texture. This value must
+///                               be a multiple of `sourceTexture's` pixel size, in bytes. Set this value to
+///                               `0` if `sourceSize's` ``MTLSize/depth`` value is `1`.
+- (void) copyFromTexture:(id<MTLTexture>)sourceTexture
+             sourceSlice:(NSUInteger)sourceSlice
+             sourceLevel:(NSUInteger)sourceLevel
+            sourceOrigin:(MTLOrigin)sourceOrigin
+              sourceSize:(MTLSize)sourceSize
+                toBuffer:(id<MTLBuffer>)destinationBuffer
+       destinationOffset:(NSUInteger)destinationOffset
+  destinationBytesPerRow:(NSUInteger)destinationBytesPerRow
+destinationBytesPerImage:(NSUInteger)destinationBytesPerImage;
+
+/// Encodes a command that copies image data from a slice of a texture instance to a buffer, with
+/// options for special texture formats.
+///
+/// - Parameters:
+///   - sourceTexture:            An ``MTLTexture`` texture that the command copies data from. To read the source
+///                               texture contents, you need to set its ``MTLTexture/framebufferOnly`` property
+///                               to <doc://com.apple.documentation/documentation/swift/false> prior to drawing into it.
+///   - sourceSlice:              A slice within `sourceTexture` the command uses as a starting point to copy
+///                               data from. Set this to `0` if `sourceTexture` isn’t a texture array or a
+///                               cube texture.
+///   - sourceLevel:              A mipmap level within `sourceTexture`.
+///   - sourceOrigin:             An ``MTLOrigin`` instance that represents a location within `sourceTexture`
+///                               that the command begins copying data from. Assign `0` to each dimension
+///                               that’s not relevant to `sourceTexture`.
+///   - sourceSize:               An ``MTLSize`` instance that represents the size of the region, in pixels,
+///                               that the command copies from `sourceTexture`, starting at `sourceOrigin`.
+///                               Assign `1` to each dimension that’s not relevant to `sourceTexture`.
+///                               If `sourceTexture` uses a compressed pixel format, set `sourceSize` to a
+///                               multiple of the `sourceTexture's` ``MTLTexture/pixelFormat`` block size.
+///                               If the block extends outside the bounds of the texture, clamp `sourceSize`
+///                               to the edge of the texture.
+///   - destinationBuffer:        An ``MTLBuffer`` instance the command copies data to.
+///   - destinationOffset:        A byte offset within `destinationBuffer` the command copies to. The value
+///                               you provide as this argument needs to be a multiple of `sourceTexture's` pixel size,
+///                               in bytes.
+///   - destinationBytesPerRow:   The number of bytes between adjacent rows of pixels in `destinationBuffer`.
+///                               This value must be a multiple of `sourceTexture's` pixel size, in bytes,
+///                               and less than or equal to the product of `sourceTexture's` pixel size,
+///                               in bytes, and the largest pixel width `sourceTexture’s` type allows. If
+///                               `sourceTexture` uses a compressed pixel format, set `destinationBytesPerRow`
+///                               to the number of bytes between the starts of two row blocks.
+///   - destinationBytesPerImage: The number of bytes between each 2D image of a 3D texture. This value must
+///                               be a multiple of `sourceTexture's` pixel size, in bytes. Set this value to
+///                               `0` if `sourceSize's` ``MTLSize/depth`` value is `1`.
+///   - options:                  A ``MTLBlitOption`` value that applies to textures with applicable pixel
+///                               formats, such as combined depth/stencil or PVRTC formats. If `sourceTexture's`
+///                               ``MTLTexture/pixelFormat`` is a combined depth/stencil format, set `options`
+///                               to either ``MTLBlitOption/MTLBlitOptionDepthFromDepthStencil`` or
+///                               ``MTLBlitOption/MTLBlitOptionStencilFromDepthStencil``, but not both.
+///                               If `sourceTexture's` ``MTLTexture/pixelFormat`` is a PVRTC format, set
+///                               `options` to ``MTLBlitOption/MTLBlitOptionRowLinearPVRTC``.
+- (void) copyFromTexture:(id<MTLTexture>)sourceTexture
+             sourceSlice:(NSUInteger)sourceSlice
+             sourceLevel:(NSUInteger)sourceLevel
+            sourceOrigin:(MTLOrigin)sourceOrigin
+              sourceSize:(MTLSize)sourceSize
+                toBuffer:(id<MTLBuffer>)destinationBuffer
+       destinationOffset:(NSUInteger)destinationOffset
+  destinationBytesPerRow:(NSUInteger)destinationBytesPerRow
+destinationBytesPerImage:(NSUInteger)destinationBytesPerImage
+                 options:(MTLBlitOption)options;
+
+/// Encodes a command that copies data from a buffer instance into another.
+///
+/// - Parameters:
+///   - sourceBuffer:      An ``MTLBuffer`` instance the command copies data from.
+///   - sourceOffset:      A byte offset within `sourceBuffer` the command copies from.
+///   - destinationBuffer: An ``MTLBuffer`` instance the command copies data to.
+///   - destinationOffset: A byte offset within `destinationBuffer` the command copies to.
+///   - size:              The number of bytes the command copies from `sourceBuffer` to `destinationBuffer`.
+- (void)copyFromBuffer:(id<MTLBuffer>)sourceBuffer
+          sourceOffset:(NSUInteger)sourceOffset
+              toBuffer:(id<MTLBuffer>)destinationBuffer
+     destinationOffset:(NSUInteger)destinationOffset
+                  size:(NSUInteger)size;
+
+/// Encodes a command to copy image data from a buffer instance into a texture.
+///
+/// - Parameters:
+///   - sourceBuffer:        A ``MTLBuffer`` instance the command copies data from.
+///   - sourceOffset:        A byte offset within `sourceBuffer` the command copies from. Set this value to
+///                          a multiple of `destinationTexture's` pixel size, in bytes.
+///   - sourceBytesPerRow:   The number of bytes between adjacent rows of pixels in `sourceBuffer`. Set this value to
+///                          a multiple of `destinationTexture's` pixel size, in bytes, and less than or equal to
+///                          the product of `destinationTexture's` pixel size, in bytes, and the largest pixel width
+///                          `destinationTexture's` type allows. If `destinationTexture` uses a compressed pixel format,
+///                          set `sourceBytesPerRow` to the number of bytes between the starts of two row blocks.
+///   - sourceBytesPerImage: The number of bytes between each 2D image of a 3D texture. Set this value to a
+///                          multiple of `destinationTexture's` pixel size, in bytes, or `0`
+///                          if `sourceSize's` ``MTLSize/depth`` value is `1`.
+///   - sourceSize:          A ``MTLSize`` instance that represents the size of the region in
+///                          `destinationTexture`, in pixels, that the command copies data to, starting at
+///                          `destinationOrigin`. Assign `1` to each dimension that’s not relevant to
+///                          `destinationTexture`. If `destinationTexture` uses a compressed pixel format,
+///                          set `sourceSize` to a multiple of `destinationTexture's` ``MTLTexture/pixelFormat``
+///                          block size. If the block extends outside the bounds of the texture, clamp
+///                          `sourceSize` to the edge of the texture.
+///   - destinationTexture:  An ``MTLTexture`` instance the command copies data to. In order to copy the contents into
+///                          the destination texture, set its ``MTLTexture/framebufferOnly`` property to
+///                          <doc://com.apple.documentation/documentation/swift/false> and don't
+///                          use a combined depth/stencil ``MTLTexture/pixelFormat``.
+///   - destinationSlice:    A slice within `destinationTexture` the command uses as its starting point for
+///                          copying data to. Set this to `0` if `destinationTexture` isn’t a texture array
+///                          or a cube texture.
+///   - destinationLevel:    A mipmap level within `destinationTexture` the command copies data to.
+///   - destinationOrigin:   An ``MTLOrigin`` instance that represents a location within `destinationTexture`
+///                          that the command begins copying data to. Assign `0` to each dimension that’s not
+///                          relevant to `destinationTexture`.
+- (void)copyFromBuffer:(id<MTLBuffer>)sourceBuffer
+          sourceOffset:(NSUInteger)sourceOffset
+     sourceBytesPerRow:(NSUInteger)sourceBytesPerRow
+   sourceBytesPerImage:(NSUInteger)sourceBytesPerImage
+            sourceSize:(MTLSize)sourceSize
+             toTexture:(id<MTLTexture>)destinationTexture
+      destinationSlice:(NSUInteger)destinationSlice
+      destinationLevel:(NSUInteger)destinationLevel
+     destinationOrigin:(MTLOrigin)destinationOrigin;
+
+/// Encodes a command to copy image data from a buffer into a texture with options for special texture formats.
+///
+/// - Parameters:
+///   - sourceBuffer:        An ``MTLBuffer`` instance the command copies data from.
+///   - sourceOffset:        A byte offset within `sourceBuffer` the command copies from. Set this value to
+///                          a multiple of `destinationTexture's` pixel size, in bytes.
+///   - sourceBytesPerRow:   The number of bytes between adjacent rows of pixels in `sourceBuffer`. Set this value to
+///                          a multiple of `destinationTexture's` pixel size, in bytes, and less than or equal to
+///                          the product of `destinationTexture's` pixel size, in bytes, and the largest pixel width
+///                          `destinationTexture's` type allows. If `destinationTexture` uses a compressed pixel format,
+///                          set `sourceBytesPerRow` to the number of bytes between the starts of two row blocks.
+///   - sourceBytesPerImage: The number of bytes between each 2D image of a 3D texture. Set this value to a
+///                          multiple of `destinationTexture's` pixel size, in bytes, or `0`
+///                          if `sourceSize's` ``MTLSize/depth`` value is `1`.
+///   - sourceSize:          An ``MTLSize`` instance that represents the size of the region in
+///                          `destinationTexture`, in pixels, that the command copies data to, starting at
+///                          `destinationOrigin`. Assign `1` to each dimension that’s not relevant to
+///                          `destinationTexture`. If `destinationTexture` uses a compressed pixel format,
+///                          set `sourceSize` to a multiple of `destinationTexture's` ``MTLTexture/pixelFormat``
+///                          block size. If the block extends outside the bounds of the texture, clamp
+///                          `sourceSize` to the edge of the texture.
+///   - destinationTexture:  An ``MTLTexture`` instance the command copies data to. In order to copy the contents into
+///                          the destination texture, set its ``MTLTexture/framebufferOnly`` property to
+///                          <doc://com.apple.documentation/documentation/swift/false> and don't
+///                          use a combined depth/stencil ``MTLTexture/pixelFormat``.
+///   - destinationSlice:    A slice within `destinationTexture` the command uses as its starting point for
+///                          copying data to. Set this to `0` if `destinationTexture` isn’t a texture array
+///                          or a cube texture.
+///   - destinationLevel:    A mipmap level within `destinationTexture` the command copies data to.
+///   - destinationOrigin:   An ``MTLOrigin`` instance that represents a location within `destinationTexture`
+///                          that the command begins copying data to. Assign `0` to each dimension that’s not
+///                          relevant to `destinationTexture`.
+///   - options:             An ``MTLBlitOption`` value that applies to textures with applicable pixel formats,
+///                          such as combined depth/stencil or PVRTC formats. If `destinationTexture's`
+///                          ``MTLTexture/pixelFormat`` is a combined depth/stencil format, set `options` to
+///                          either ``MTLBlitOption/MTLBlitOptionDepthFromDepthStencil`` or
+///                          ``MTLBlitOption/MTLBlitOptionStencilFromDepthStencil``, but not both.
+///                          If `destinationTexture's` ``MTLTexture/pixelFormat`` is a PVRTC format, set
+///                          `options` to ``MTLBlitOption/MTLBlitOptionRowLinearPVRTC``.
+- (void)copyFromBuffer:(id<MTLBuffer>)sourceBuffer
+          sourceOffset:(NSUInteger)sourceOffset
+     sourceBytesPerRow:(NSUInteger)sourceBytesPerRow
+   sourceBytesPerImage:(NSUInteger)sourceBytesPerImage
+            sourceSize:(MTLSize)sourceSize
+             toTexture:(id<MTLTexture>)destinationTexture
+      destinationSlice:(NSUInteger)destinationSlice
+      destinationLevel:(NSUInteger)destinationLevel
+     destinationOrigin:(MTLOrigin)destinationOrigin
+               options:(MTLBlitOption)options;
+
+/// Encodes a command to copy data from a tensor instance into another.
+///
+/// If the `sourceTensor` and `destinationTensor` instances are not aliasable, this command applies the correct reshapes
+/// to enable this operation.
+///
+/// - Parameters:
+///    - sourceTensor:      An ``MTLTensor`` instance the command copies data from.
+///    - sourceSlice:       The slice of `sourceTensor` from which Metal copies data.
+///    - destinationTensor: An ``MTLTensor`` instance the command copies data to.
+///    - destinationSlice:  The slice of `destinationTensor` to which Metal copies data.
+- (void)copyFromTensor:(id<MTLTensor>)sourceTensor
+          sourceOrigin:(MTLTensorExtents *)sourceOrigin
+      sourceDimensions:(MTLTensorExtents *)sourceDimensions
+              toTensor:(id<MTLTensor>)destinationTensor
+     destinationOrigin:(MTLTensorExtents *)destinationOrigin
+ destinationDimensions:(MTLTensorExtents *)destinationDimensions;
+
+/// Encodes a command that generates mipmaps for a texture instance from the base mipmap level up to the highest
+/// mipmap level.
+///
+/// This method generates mipmaps for a mipmapped texture. The texture you provide needs to have a
+/// ``MTLTexture/mipmapLevelCount`` greater than `1`, and a color-renderable or color-filterable
+/// ``MTLTexture/pixelFormat``.
+///
+/// - Parameter texture: A mipmapped, color-renderable or color-filterable ``MTLTexture`` instance the command generates mipmaps for.
+- (void)generateMipmapsForTexture:(id<MTLTexture>)texture;
+
+/// Encodes a command that fills a buffer with a constant value for each byte.
+///
+/// - Parameters:
+///   - buffer: A ``MTLBuffer`` instance for which this command assigns each byte in a range to a value.
+///   - range:  A range of bytes within `buffer` the command assigns value to. When calling this method, pass in a
+///             range with a length greater than `0`.
+///   - value:  The value to write to each byte.
+- (void)fillBuffer:(id<MTLBuffer>)buffer
+             range:(NSRange)range
+             value:(uint8_t)value;
+
+/// Encodes a command that modifies the contents of a texture to improve the performance of GPU accesses
+/// to its contents.
+///
+/// Optimizing a texture for GPU access may affect the performance of CPU accesses, however, the data the CPU
+/// retrieves from the texture remains consistent.
+///
+/// You typically run this command for:
+/// * Textures the GPU accesses for an extended period of time.
+/// * Textures with a ``MTLTextureDescriptor/storageMode`` property that's ``MTLStorageMode/MTLStorageModeShared`` or
+///   ``MTLStorageMode/MTLStorageModeManaged``.
+///
+/// - Parameter texture: A ``MTLTexture`` instance the command optimizes for GPU access.
+- (void)optimizeContentsForGPUAccess:(id<MTLTexture>)texture;
+
+/// Encodes a command that modifies the contents of a texture instance to improve the performance of GPU accesses
+/// to its contents in a specific region.
+///
+/// Optimizing a texture for GPU access may affect the performance of CPU accesses, however, the data the CPU
+/// retrieves from the texture remains consistent.
+///
+/// You typically run this command for:
+/// * Textures the GPU accesses for an extended period of time.
+/// * Textures with a ``MTLTextureDescriptor/storageMode`` property that's ``MTLStorageMode/MTLStorageModeShared`` or
+///   ``MTLStorageMode/MTLStorageModeManaged``.
+///
+/// - Parameters:
+///   - texture: A ``MTLTexture`` the command optimizes for GPU access.
+///   - slice:   A slice within `texture`.
+///   - level:   A mipmap level within `texture`.
+- (void)optimizeContentsForGPUAccess:(id<MTLTexture>)texture
+                               slice:(NSUInteger)slice
+                               level:(NSUInteger)level;
+
+/// Encodes a command that modifies the contents of a texture to improve the performance of CPU accesses to
+/// its contents.
+///
+/// Optimizing a texture for CPU access may affect the performance of GPU accesses, however, the data the GPU
+/// retrieves from the texture remains consistent.
+///
+/// You typically use this command for:
+/// * Textures the CPU accesses for an extended period of time.
+/// * Textures with a ``MTLTextureDescriptor/storageMode`` property that's ``MTLStorageMode/MTLStorageModeShared`` or
+///   ``MTLStorageMode/MTLStorageModeManaged``.
+///
+/// - Parameter texture: A ``MTLTexture`` instance the command optimizes for CPU access.
+- (void)optimizeContentsForCPUAccess:(id<MTLTexture>)texture;
+
+/// Encodes a command that modifies the contents of a texture to improve the performance of CPU accesses
+/// to its contents in a specific region.
+///
+/// Optimizing a texture for CPU access may affect the performance of GPU accesses, however, the data the GPU
+/// retrieves from the texture remains consistent.
+///
+/// You typically use this command for:
+/// * Textures the CPU accesses for an extended period of time.
+/// * Textures with a ``MTLTextureDescriptor/storageMode`` property that's ``MTLStorageMode/MTLStorageModeShared`` or
+///   ``MTLStorageMode/MTLStorageModeManaged``.
+///
+/// - Parameters:
+///   - texture: A ``MTLTexture`` the command optimizes for CPU access.
+///   - slice:   A slice within `texture`.
+///   - level:   A mipmap level within `texture`.
+- (void)optimizeContentsForCPUAccess:(id<MTLTexture>)texture
+                               slice:(NSUInteger)slice
+                               level:(NSUInteger)level;
+
+/// Encodes a command that resets a range of commands in an indirect command buffer.
+///
+/// - Parameters:
+///   - buffer: An ``MTLIndirectCommandBuffer`` the command resets.
+///   - range: A range of commands within `buffer`.
+- (void)resetCommandsInBuffer:(id<MTLIndirectCommandBuffer>)buffer
+                    withRange:(NSRange)range;
+
+/// Encodes a command that copies commands from an indirect command buffer into another.
+///
+/// - Parameters:
+///   - source:           An ``MTLIndirectCommandBuffer`` instance from where the command copies.
+///   - sourceRange:      The range of commands in `source` to copy.
+///                       The copy operation requires that the source range starts at a valid execution point.
+///   - destination:      Another ``MTLIndirectCommandBuffer`` instance into which the command copies.
+///   - destinationIndex: An index in `destination` into where the command copies content to. The copy operation requires
+///                       that the destination index is a valid execution point with enough space left in `destination`
+///                       to accommodate `sourceRange.count` commands.
+- (void)copyIndirectCommandBuffer:(id<MTLIndirectCommandBuffer>)source
+                      sourceRange:(NSRange)sourceRange
+                      destination:(id<MTLIndirectCommandBuffer>)destination
+                 destinationIndex:(NSUInteger)destinationIndex;
+
+/// Encode a command to attempt to improve the performance of a range of commands within an indirect command buffer.
+///
+/// - Parameters:
+///   - indirectCommandBuffer: An ``MTLIndirectCommandBuffer`` instance that this command optimizes.
+///   - range:                 A range of commands within `indirectCommandBuffer`.
+- (void)optimizeIndirectCommandBuffer:(id<MTLIndirectCommandBuffer>)indirectCommandBuffer
+                            withRange:(NSRange)range;
+
+/// Sets an argument table for the compute shader stage of this pipeline.
+///
+/// Metal takes a snapshot of the resources in the argument table when you make dispatch or execute calls on
+/// this encoder instance. Metal makes the snapshot contents available to the compute shader function of the
+/// current pipeline state.
+///
+/// - Parameters:
+///   - argumentTable: A ``MTL4ArgumentTable`` to set on the command encoder.
+- (void)setArgumentTable:(nullable id<MTL4ArgumentTable>)argumentTable;
+
+/// Encodes an acceleration structure build into the command buffer.
+///
+/// Before you build an instance acceleration structure, you are responsible for ensuring the build operations for all
+/// primitive acceleration structures is complete. The built acceleration structure doesn't retain any references to
+/// the input buffers of the descriptor, such as the vertex buffer or instance buffer, among others.
+///
+/// The acceleration structure build process may continue as long as the command buffer is not completed. However,
+/// you can safely encode ray tracing work against the acceleration structure if you schedule and synchronize the
+/// command buffers that contain this ray tracing work such that the command buffer with the build command is complete
+/// by the time ray tracing starts.
+///
+/// You are responsible for ensuring that the acceleration structure and scratch buffer are at least the size
+/// that the query ``MTLDevice/accelerationStructureSizesWithDescriptor:`` returns.
+///
+/// Use an instance of ``MTLResidencySet`` to mark residency of the scratch buffer the `scratchBuffer` parameter references,
+/// as well as for all the primitive acceleration structures you directly and indirectly reference.
+///
+/// - Parameters:
+///   - accelerationStructure: Acceleration structure storage to build into.
+///   - descriptor:            A descriptor for the acceleration structure Metal builds.
+///   - scratchBuffer:         Scratch buffer Metal can use while building the acceleration structure.
+///                            Metal may overwrite the contents of this buffer, and you should consider
+///                            them "undefined" after the refit operation starts and completes.
+- (void)buildAccelerationStructure:(id <MTLAccelerationStructure>)accelerationStructure
+                        descriptor:(MTL4AccelerationStructureDescriptor *)descriptor
+                     scratchBuffer:(MTL4BufferRange)scratchBuffer;
+
+/// Encodes an acceleration structure refit into the command buffer.
+///
+/// You refit an acceleration structure to update it when the geometry it references changes. This operation is typically
+/// much faster than rebuilding the acceleration structure from scratch. The trade off is that after you refit the
+/// acceleration structure, its quality, as well as the performance of any subsequent ray tracing operation degrades,
+/// depending on how much the geometry changes.
+///
+/// After certain operations, refitting an acceleration structure may not be possible, for example, after adding or
+/// removing geometry.
+///
+/// When you refit an acceleration structure, you can do so in place, by specifying the same source and destination
+/// acceleration structures, or by providing a `nil` destination acceleration structure. If the source and destination
+/// acceleration structures aren't the same, then you are responsible for ensuring they don't overlap in memory.
+///
+/// Typically, the destination acceleration structure is at least as large as the source acceleration structure,
+/// except in cases where you compact the source acceleration structure. In this case, you need to allocate the
+/// destination acceleration to be at least as large as the compacted size of the source acceleration structure.
+///
+/// The scratch buffer you provide for the refit operation needs to be at least as large as the size that the query
+/// ``MTLDevice/accelerationStructureSizesWithDescriptor:`` returns. If the size this query returns is zero, you
+/// can omit providing a scratch buffer by passing `0` as the address to the `scratchBuffer` parameter.
+///
+/// Use an instance of ``MTLResidencySet`` to mark residency of the scratch buffer the `scratchBuffer` parameter references,
+/// as well as for all the instance and primitive acceleration structures you directly and indirectly reference.
+///
+/// - Parameters:
+///   - sourceAccelerationStructure:      Acceleration structure to refit.
+///   - descriptor:                       A descriptor for the acceleration structure to refit.
+///   - destinationAccelerationStructure: Acceleration structure to store the refit result into.
+///                                       If `destinationAccelerationStructure` is `nil`, Metal performs an in-place
+///                                       refit operation of the `sourceAccelerationStructure`.
+///   - scratchBuffer:                    Scratch buffer Metal can use while refitting the acceleration structure.
+///                                       Metal may overwrite the contents of this buffer, and you should consider
+///                                       them "undefined" after the refit operation starts and completes.
+- (void)refitAccelerationStructure:(id <MTLAccelerationStructure>)sourceAccelerationStructure
+                        descriptor:(MTL4AccelerationStructureDescriptor *)descriptor
+                       destination:(nullable id <MTLAccelerationStructure>)destinationAccelerationStructure
+                     scratchBuffer:(MTL4BufferRange)scratchBuffer;
+
+/// Encodes an acceleration structure refit operation into the command buffer, providing additional options.
+///
+/// You refit an acceleration structure to update it when the geometry it references changes. This operation is typically
+/// much faster than rebuilding the acceleration structure from scratch. The trade off is that after you refit the
+/// acceleration structure, its quality, as well as the performance of any subsequent ray tracing operation degrades,
+/// depending on how much the geometry changes.
+///
+/// After certain operations, refitting an acceleration structure may not be possible, for example, after adding or
+/// removing geometry.
+///
+/// When you refit an acceleration structure, you can do so in place, by specifying the same source and destination
+/// acceleration structures, or by providing a `nil` destination acceleration structure. If the source and destination
+/// acceleration structures aren't the same, then you are responsible for ensuring they don't overlap in memory.
+///
+/// Typically, the destination acceleration structure is at least as large as the source acceleration structure,
+/// except in cases where you compact the source acceleration structure. In this case, you need to allocate the
+/// destination acceleration to be at least as large as the compacted size of the source acceleration structure.
+///
+/// The scratch buffer you provide for the refit operation needs to be at least as large as the size that the query
+/// ``MTLDevice/accelerationStructureSizesWithDescriptor:`` returns. If the size this query returns is zero, you
+/// can omit providing a scratch buffer by passing `0` as the address to the `scratchBuffer` parameter.
+///
+/// Use an instance of ``MTLResidencySet`` to mark residency of the scratch buffer the `scratchBuffer` parameter references,
+/// as well as for all the instance and primitive acceleration structures you directly and indirectly reference.
+///
+/// - Parameters:
+///   - sourceAccelerationStructure:      Acceleration structure to refit.
+///   - descriptor:                       A descriptor for the acceleration structure to refit.
+///   - destinationAccelerationStructure: Acceleration structure to store the refit result into.
+///                                       If `destinationAccelerationStructure` is `nil`, Metal performs an in-place
+///                                       refit operation of the `sourceAccelerationStructure`.
+///   - scratchBuffer:                    Scratch buffer Metal can use while refitting the acceleration structure.
+///                                       Metal may overwrite the contents of this buffer, and you should consider
+///                                       them "undefined" after the refit operation starts and completes.
+///   - options:                          Options specifying the elements of the acceleration structure to refit.
+- (void)refitAccelerationStructure:(id <MTLAccelerationStructure>)sourceAccelerationStructure
+                        descriptor:(MTL4AccelerationStructureDescriptor *)descriptor
+                       destination:(nullable id <MTLAccelerationStructure>)destinationAccelerationStructure
+                     scratchBuffer:(MTL4BufferRange)scratchBuffer
+                           options:(MTLAccelerationStructureRefitOptions)options;
+
+/// Encodes an acceleration structure copy operation into the command buffer.
+///
+/// You are responsible for ensuring the source and destination acceleration structures don't overlap in memory.
+/// If this is an instance acceleration structure, Metal preserves references to the primitive acceleration structures
+/// it references.
+///
+/// Typically, the destination acceleration structure is at least as large as the source acceleration structure,
+/// except in cases where you compact the source acceleration structure. In this case, you need to allocate the
+/// destination acceleration to be at least as large as the compacted size of the source acceleration structure.
+///
+/// - Parameters:
+///   - sourceAccelerationStructure:      Acceleration structure to copy from.
+///   - destinationAccelerationStructure: Acceleration structure to copy to.
+- (void)copyAccelerationStructure:(id <MTLAccelerationStructure>)sourceAccelerationStructure
+          toAccelerationStructure:(id <MTLAccelerationStructure>)destinationAccelerationStructure;
+
+/// Encodes a command to compute the size an acceleration structure can compact into, writing the result
+/// into a buffer.
+///
+/// This size is potentially smaller than the acceleration structure. To perform compaction, you typically read
+/// this size from the buffer once the command buffer completes. You then use it to allocate a new, potentially
+/// smaller acceleration structure. Finally, you call the ``copyAndCompactAccelerationStructure:toAccelerationStructure:``
+/// method to perform the copy.
+///
+/// - Parameters:
+///   - accelerationStructure: Source acceleration structure.
+///   - buffer:                Destination size buffer. Metal writes the compacted size as a 64-bit unsigned integer
+///                            value, representing the compacted size in bytes.
+- (void)writeCompactedAccelerationStructureSize:(id <MTLAccelerationStructure>)accelerationStructure
+                                       toBuffer:(MTL4BufferRange)buffer;
+
+/// Encodes a command to copy and compact an acceleration structure.
+///
+/// You are responsible for ensuring that the source and destination acceleration structures don't overlap in memory.
+/// If this is an instance acceleration structure, Metal preserves references to primitive acceleration structures it
+/// references.
+///
+/// This operation requires that the destination acceleration structure is at least as large as the compacted size of
+/// the source acceleration structure. You can compute this size by calling the
+/// ``writeCompactedAccelerationStructureSize:toBuffer:`` method.
+///
+/// - Parameters:
+///   - sourceAccelerationStructure:      Acceleration structure to copy and compact.
+///   - destinationAccelerationStructure: Acceleration structure to copy to.
+- (void)copyAndCompactAccelerationStructure:(id <MTLAccelerationStructure>)sourceAccelerationStructure
+                    toAccelerationStructure:(id <MTLAccelerationStructure>)destinationAccelerationStructure;
+
+/// Writes a GPU timestamp into a heap.
+///
+/// The method ensures that any prior work finishes, but doesn't delay any subsequent work.
+///
+/// You can alter this command's behavior through the `granularity` parameter.
+/// - Pass ``MTL4TimestampGranularity/MTL4TimestampGranularityRelaxed`` to allow Metal to provide timestamps with
+/// minimal impact to runtime performance, but with less detail. For example, the command may group all timestamps for
+/// a pass together.
+/// - Pass ``MTL4TimestampGranularity/MTL4TimestampGranularityPrecise`` to request that Metal provides timestamps
+/// with the most detail. This can affect runtime performance.
+///
+/// - Parameters:
+///   - granularity: ``MTL4TimestampGranularity`` hint to Metal about acceptable the level of precision.
+///   - counterHeap: ``MTL4CounterHeap`` to write timestamps into.
+///   - index:       The index value into which Metal writes the timestamp.
+- (void)writeTimestampWithGranularity:(MTL4TimestampGranularity)granularity
+                             intoHeap:(id<MTL4CounterHeap>)counterHeap
+                              atIndex:(NSUInteger)index;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+
+#endif //MTL4ComputeCommandEncoder_h
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4ComputePipeline.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4ComputePipeline.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4ComputePipeline.h	1969-12-31 19:00:00
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4ComputePipeline.h	2025-05-28 02:54:17
@@ -0,0 +1,62 @@
+//
+//  MTL4ComputePipeline.h
+//  Metal
+//
+//  Copyright © 2024 Apple, Inc. All rights reserved.
+//
+
+#ifndef MTL4ComputePipeline_h
+#define MTL4ComputePipeline_h
+
+#import <Metal/MTLDefines.h>
+
+#import <Foundation/Foundation.h>
+#import <Metal/MTL4PipelineState.h>
+#import <Metal/MTLComputePipeline.h>
+
+NS_ASSUME_NONNULL_BEGIN
+@protocol MTL4BinaryFunction;
+@protocol MTLDynamicLibrary;
+@class MTL4FunctionDescriptor;
+@class MTL4LinkedFunctions;
+@class MTLComputePipelineReflection;
+@class MTL4StaticLinkingDescriptor;
+
+/// Descriptor defining how a compute pipeline state would be created.
+MTL_EXPORT
+API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4ComputePipelineDescriptor : MTL4PipelineDescriptor
+
+/// A function descriptor representing the function that will be executed by the compute pipeline.
+@property (nullable, readwrite, nonatomic, copy) MTL4FunctionDescriptor* computeFunctionDescriptor;
+
+/// A boolean value indicating whether each dimension of the threadgroup size is a multiple of its
+/// corresponding thread execution width.
+@property (readwrite, nonatomic) BOOL threadGroupSizeIsMultipleOfThreadExecutionWidth;
+
+/// The maximum total number of threads that can be executing in a single threadgroup for the
+/// compute function.
+@property (readwrite, nonatomic) NSUInteger maxTotalThreadsPerThreadgroup;
+
+/// Sets the required threads-per-threadgroup during dispatches. The `threadsPerThreadgroup` argument of any dispatch must match this value if it is set.
+/// Optional, unless the pipeline is going to use CooperativeTensors in which case this must be set.
+/// Setting this to a size of 0 in every dimension disables this property
+@property(readwrite, nonatomic) MTLSize requiredThreadsPerThreadgroup;
+
+/// A boolean value indicating whether the compute pipeline should support adding binary functions.
+@property (readwrite, nonatomic) BOOL supportBinaryLinking;
+
+/// An object that contains information about functions that are linked to the compute pipeline
+/// during creation.
+@property (nullable, copy, nonatomic) MTL4StaticLinkingDescriptor* staticLinkingDescriptor;
+
+/// A value indicating whether the pipeline should support indirect command buffers.
+@property (readwrite, nonatomic) MTL4IndirectCommandBufferSupportState supportIndirectCommandBuffers;
+
+/// Resets the descriptor to the default values.
+- (void)reset;
+@end
+
+NS_ASSUME_NONNULL_END
+
+#endif // MTL4ComputePipeline_h
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4Counters.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4Counters.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4Counters.h	1969-12-31 19:00:00
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4Counters.h	2025-05-28 02:54:17
@@ -0,0 +1,109 @@
+//
+//  MTL4Counters.h
+//  Metal
+//
+//  Copyright (c) 2024 Apple Inc. All rights reserved.
+//
+
+#ifndef MTL4Counters_h
+#define MTL4Counters_h
+
+#import <Foundation/Foundation.h>
+#import <Metal/MTLDefines.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+
+/// Represents a timestamp data entry in a counter heap of type `MTL4CounterHeapTypeTimestamp`.
+typedef struct
+{
+    uint64_t timestamp;
+} MTL4TimestampHeapEntry API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// Defines the type of a ``MTL4CounterHeap`` and the contents of its entries.
+typedef NS_ENUM(NSUInteger, MTL4CounterHeapType)
+{
+    /// Specifies that ``MTL4CounterHeap`` entries contain invalid data.
+    MTL4CounterHeapTypeInvalid,
+    
+    /// Specifies that ``MTL4CounterHeap`` entries contain GPU timestamp data.
+    MTL4CounterHeapTypeTimestamp,
+} API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// Provides a hint to the system about the desired accuracy when writing GPU counter timestamps.
+///
+/// Pass these values to ``MTL4ComputeCommandEncoder/writeTimestampWithGranularity:intoHeap:atIndex:`` and
+/// ``MTL4RenderCommandEncoder/writeTimestampWithGranularity:afterStage:intoHeap:atIndex:`` to control the
+/// desired accurracy of the counter sampling operation.
+typedef NS_ENUM(NSInteger, MTL4TimestampGranularity)
+{
+    /// A minimally-invasive timestamp which may be less precise.
+    ///
+    /// Using this granularity incurs in the lowest overhead, at the cost of precision. For example, it may sample at
+    /// command encoder boundaries.
+    MTL4TimestampGranularityRelaxed = 0,
+    
+    /// A timestamp as precise as possible.
+    ///
+    /// Using this granularity may incur in a performance penalty, for example, it may cause splitting of command encoders.
+    MTL4TimestampGranularityPrecise = 1,
+} API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// Groups together parameters for configuring a counter heap object at creation time.
+API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4CounterHeapDescriptor : NSObject<NSCopying>
+
+/// Assigns the type of data that the heap contains.
+@property (nonatomic) MTL4CounterHeapType type;
+
+/// Assigns the number of entries in the heap.
+///
+/// Each entry represents one item in the heap. The size of the individual entries depends on the heap type.
+@property (nonatomic) NSUInteger entryCount;
+
+@end
+
+/// Represents an opaque, driver-controlled section of memory that can store GPU counter data.
+///
+/// The data instances that this type stores correspond to the ``MTL4CounterHeapType`` heap type that you assign at creation time.
+API_AVAILABLE(macos(26.0), ios(26.0))
+@protocol MTL4CounterHeap <NSObject>
+
+/// Assigns a label for later inspection or visualization.
+@property (nullable, copy, atomic) NSString *label;
+
+/// Queries the number of entries in the heap.
+@property (readonly) NSUInteger count;
+
+/// Queries the type of the heap.
+@property (readonly) MTL4CounterHeapType type;
+
+/// Resolves heap data on the CPU timeline.
+///
+/// This method resolves heap data in the CPU timeline. Your app needs to ensure the GPU work has completed in order to
+/// retrieve the data correctly. You can alternatively resolve the heap data in the GPU timeline by calling
+/// ``MTL4CommandBuffer/resolveCounterHeap:withRange:intoBuffer:atOffset:waitFence:updateFence:``.
+///
+/// - Note: When resolving counters in the CPU timeline, signaling an instance of ``MTLSharedEvent`` after any workloads
+///  write counters (and waiting on that signal on the CPU) is sufficient to ensure synchronization.
+///
+/// - Parameter range: The range in the heap to resolve.
+/// - Returns a newly allocated autoreleased NSData containing tightly packed resolved heap counter values.
+- (nullable NSData*) resolveCounterRange:(NSRange) range;
+
+/// Invalidates a range of entries in this counter heap.
+///
+/// The effect of this call is immediate on the CPU timeline. You are responsible for ensuring that this counter heap is not currently in use on the GPU.
+///
+/// - Note: Invalidated entries produce 0 when resolved.
+///
+/// - Parameters:
+///   - range: A heap index range to invalidate.
+- (void) invalidateCounterRange:(NSRange) range;
+
+@end
+
+
+NS_ASSUME_NONNULL_END
+
+#endif /* MTL4Counters_h */
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4FunctionDescriptor.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4FunctionDescriptor.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4FunctionDescriptor.h	1969-12-31 19:00:00
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4FunctionDescriptor.h	2025-05-28 02:54:17
@@ -0,0 +1,26 @@
+//
+//  MTL4FunctionDescriptor.h
+//  Metal
+//
+//  Copyright © 2024 Apple, Inc. All rights reserved.
+//
+
+#ifndef MTL4FunctionDescriptor_h
+#define MTL4FunctionDescriptor_h
+
+#import <Metal/MTLDefines.h>
+
+#import <Foundation/Foundation.h>
+#import <Metal/MTLTypes.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// Base interface for describing a Metal 4 shader function.
+MTL_EXPORT
+API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4FunctionDescriptor : NSObject <NSCopying>
+@end
+
+NS_ASSUME_NONNULL_END
+
+#endif // MTL4FunctionDescriptor_h
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4LibraryDescriptor.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4LibraryDescriptor.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4LibraryDescriptor.h	1969-12-31 19:00:00
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4LibraryDescriptor.h	2025-05-28 02:54:18
@@ -0,0 +1,38 @@
+//
+//  MTL4LibraryDescriptor.h
+//  Metal
+//
+//  Copyright © 2024 Apple, Inc. All rights reserved.
+//
+
+#ifndef MTL4LibraryDescriptor_h
+#define MTL4LibraryDescriptor_h
+
+#import <Metal/MTLDefines.h>
+
+#import <Foundation/Foundation.h>
+#import <Metal/MTLTypes.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class MTLCompileOptions;
+
+/// Serves as the base descriptor for creating a Metal library.
+MTL_EXPORT
+API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4LibraryDescriptor : NSObject <NSCopying>
+/// Assigns an optional string containing the source code of the shader language program to compile into a
+/// Metal library.
+@property(nullable, copy, atomic) NSString *source;
+
+/// Provides compile-time options for the Metal library.
+@property(nullable, copy, atomic) MTLCompileOptions *options;
+
+/// Assigns an optional name to the Metal library.
+@property(nullable, copy, atomic) NSString *name;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+#endif // MTL4LibraryDescriptor_h
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4LibraryFunctionDescriptor.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4LibraryFunctionDescriptor.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4LibraryFunctionDescriptor.h	1969-12-31 19:00:00
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4LibraryFunctionDescriptor.h	2025-05-28 02:54:17
@@ -0,0 +1,33 @@
+//
+//  MTL4LibraryFunctionDescriptor.h
+//  Metal
+//
+//  Copyright © 2024 Apple, Inc. All rights reserved.
+//
+
+#ifndef MTL4LibraryFunctionDescriptor_h
+#define MTL4LibraryFunctionDescriptor_h
+
+#import <Metal/MTLDefines.h>
+
+#import <Metal/MTL4FunctionDescriptor.h>
+
+@protocol MTLLibrary;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// Describes a shader function from a Metal library.
+MTL_EXPORT
+API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4LibraryFunctionDescriptor : MTL4FunctionDescriptor
+
+/// Assigns a name to the function.
+@property (nullable, copy, atomic) NSString* name;
+
+/// Returns a reference to the library containing the function.
+@property (nullable, readwrite, nonatomic, retain) id<MTLLibrary> library;
+@end
+
+NS_ASSUME_NONNULL_END
+
+#endif // MTL4LibraryFunctionDescriptor_h
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4LinkedFunctions.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4LinkedFunctions.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4LinkedFunctions.h	1969-12-31 19:00:00
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4LinkedFunctions.h	2025-05-28 02:54:19
@@ -0,0 +1,47 @@
+//
+//  MTL4LinkedFunctions.h
+//  Metal
+//
+//  Copyright © 2024 Apple, Inc. All rights reserved.
+//
+
+#ifndef MTL4LinkedFunctions_h
+#define MTL4LinkedFunctions_h
+
+#import <Metal/MTLDefines.h>
+
+#import <Metal/MTL4BinaryFunction.h>
+#import <Metal/MTL4FunctionDescriptor.h>
+#import <Metal/MTLTypes.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// Groups together functions to link.
+MTL_EXPORT
+API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4LinkedFunctions : NSObject<NSCopying>
+
+/// Provides an array of functions to link at the Metal IR level.
+@property (readwrite, nonatomic, copy, nullable) NSArray<MTL4FunctionDescriptor*>* functionDescriptors;
+
+/// Provides an array of binary functions to link.
+@property (readwrite, nonatomic, copy, nullable) NSArray<id<MTL4BinaryFunction>>* binaryFunctions;
+
+/// Provides an array of private functions to link at the Metal IR level.
+///
+///
+/// You specify private functions to link separately from ``functionDescriptors`` because pipelines don't export private
+/// functions as ``MTLFunctionHandle`` instances.
+/// - Note: You can link private functions even when your ``MTLDevice`` doesn't support function pointers.
+@property (readwrite, nonatomic, copy, nullable) NSArray<MTL4FunctionDescriptor*>* privateFunctionDescriptors;
+
+/// Assigns groups of functions to match call-site attributes in shader code.
+///
+/// Function groups help the compiler reduce the number of candidate functions it needs to evaluate for shader function
+/// calls, potentially increasing runtime performance.
+@property (readwrite, nonatomic, copy, nullable) NSDictionary<NSString*, NSArray<MTL4FunctionDescriptor*>*>* groups;
+@end
+
+NS_ASSUME_NONNULL_END
+
+#endif // MTL4LinkedFunctions_h
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4LinkingDescriptor.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4LinkingDescriptor.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4LinkingDescriptor.h	1969-12-31 19:00:00
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4LinkingDescriptor.h	2025-05-28 02:54:18
@@ -0,0 +1,93 @@
+//
+//  MTL4LinkingDescriptor.h
+//  Metal
+//
+//  Copyright © 2025 Apple, Inc. All rights reserved.
+//
+
+#ifndef MTL4LinkingDescriptor_h
+#define MTL4LinkingDescriptor_h
+
+#import <Metal/MTLDefines.h>
+
+
+#import <Foundation/Foundation.h>
+
+#import <Metal/MTLDevice.h>
+#import <Metal/MTL4ComputePipeline.h>
+#import <Metal/MTL4RenderPipeline.h>
+#import <Metal/MTL4FunctionDescriptor.h>
+#import <Metal/MTL4BinaryFunction.h>
+
+#import <Metal/MTLDynamicLibrary.h>
+
+@class MTL4BinaryFunction;
+@class MTLDynamicLibrary;
+
+NS_ASSUME_NONNULL_BEGIN
+/// Groups together properties to drive a static linking process.
+MTL_EXPORT
+API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4StaticLinkingDescriptor : NSObject<NSCopying>
+
+/// Provides an array of functions to link at the Metal IR level.
+@property (readwrite, nonatomic, copy, nullable) NSArray<MTL4FunctionDescriptor*> *functionDescriptors;
+
+/// Provides an array of private functions to link at the Metal IR level.
+///
+/// You specify private functions to link separately from ``functionDescriptors`` because pipelines don't export private functions as ``MTLFunctionHandle`` instances.
+/// - Note: You can link private functions even when your ``MTLDevice`` doesn't support function pointers.
+@property (readwrite, nonatomic, copy, nullable) NSArray<MTL4FunctionDescriptor*> *privateFunctionDescriptors;
+
+/// Assigns groups of functions to match call-site attributes in shader code.
+///
+/// Function groups help the compiler reduce the number of candidate functions it needs to evaluate for shader function calls, potentially increasing runtime performance.
+@property (readwrite, nonatomic, copy, nullable) NSDictionary<NSString*, NSArray<MTL4FunctionDescriptor*>*> *groups;
+
+@end
+
+
+/// Groups together properties to drive the dynamic linking process of a pipeline stage.
+MTL_EXPORT
+API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4PipelineStageDynamicLinkingDescriptor : NSObject<NSCopying>
+
+/// Limits the maximum depth of the call stack for indirect function calls in the pipeline stage function.
+@property (readwrite, nonatomic) NSUInteger maxCallStackDepth;
+
+/// Provides the array of binary functions to link.
+///
+/// Binary functions are shader functions that you compile from Metal IR to machine code ahead of time
+/// using instances of ``MTL4Compiler``.
+@property (readwrite, nonatomic, copy, nullable) NSArray<id<MTL4BinaryFunction>> *binaryLinkedFunctions;
+
+/// Provides an array of dynamic libraries the compiler loads when it builds the pipeline.
+@property (readwrite, nonnull, nonatomic, copy) NSArray<id<MTLDynamicLibrary>>* preloadedLibraries;
+
+@end
+
+/// Groups together properties that provide linking properties for render pipelines.
+MTL_EXPORT
+API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4RenderPipelineDynamicLinkingDescriptor : NSObject<NSCopying>
+
+/// Controls properties for linking the vertex stage of the render pipeline.
+@property (readonly, nonatomic) MTL4PipelineStageDynamicLinkingDescriptor* vertexLinkingDescriptor;
+
+/// Controls properties for linking the fragment stage of the render pipeline.
+@property (readonly, nonatomic) MTL4PipelineStageDynamicLinkingDescriptor* fragmentLinkingDescriptor;
+
+/// Controls properties for linking the tile stage of the render pipeline.
+@property (readonly, nonatomic) MTL4PipelineStageDynamicLinkingDescriptor* tileLinkingDescriptor;
+
+/// Controls properties for link the object stage of the render pipeline.
+@property (readonly, nonatomic) MTL4PipelineStageDynamicLinkingDescriptor* objectLinkingDescriptor;
+
+/// Controls properties for linking the mesh stage of the render pipeline.
+@property (readonly, nonatomic) MTL4PipelineStageDynamicLinkingDescriptor* meshLinkingDescriptor;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+#endif // MTL4LinkingDescriptor_h
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4MachineLearningCommandEncoder.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4MachineLearningCommandEncoder.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4MachineLearningCommandEncoder.h	1969-12-31 19:00:00
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4MachineLearningCommandEncoder.h	2025-05-28 02:54:19
@@ -0,0 +1,56 @@
+//
+//  MTL4MachineLearningCommandEncoder.h
+//  Metal
+//
+//  Copyright © 2024 Apple, Inc. All rights reserved.
+//
+
+#ifndef MTL4MachineLearningCommandEncoder_h
+#define MTL4MachineLearningCommandEncoder_h
+
+#import <Metal/MTLDefines.h>
+#import <Metal/MTLBlitCommandEncoder.h>
+
+#import <Metal/MTL4CommandEncoder.h>
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+@protocol MTL4ArgumentTable;
+@protocol MTL4MachineLearningPipelineState;
+
+/// Encodes commands for dispatching machine learning networks on the GPU.
+API_AVAILABLE(macos(26.0), ios(26.0))
+@protocol MTL4MachineLearningCommandEncoder <MTL4CommandEncoder>
+
+/// Configures the encoder with a machine learning pipeline state instance.
+///
+/// The pipeline state instance affects all subsequent Machine Learning commands.
+///
+/// - Parameters:
+///   - pipelineState: A Machine Learning pipeline state instance.
+-(void)setPipelineState:(id<MTL4MachineLearningPipelineState>)pipelineState;
+
+/// Sets an argument table for the command encoder's machine learning shader stage.
+///
+/// The argument table provides inputs to all subsequent Machine Learning dispatches.
+/// - Parameters:
+///   - argumentTable: An argument table to set on the command encoder's Machine Learning stage.
+-(void)setArgumentTable:(id <MTL4ArgumentTable>)argumentTable;
+
+/// Dispatches a machine learning network using the current pipeline state and argument table.
+///
+/// This method takes a parameter consisting of a `MTLHeap` that Metal can use to allocate intermediate tensors.
+/// You can query the minimum size Metal requires for this heap by calling
+/// ``MTL4MachineLearningPipelineState/intermediatesHeapSize``.
+///
+/// - Parameters:
+///   - heap: a heap that Metal can use to allocate intermediate tensors.
+-(void) dispatchNetworkWithIntermediatesHeap:(id<MTLHeap>)heap;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+
+#endif //MTL4MachineLearningCommandEncoder_h
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4MachineLearningPipeline.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4MachineLearningPipeline.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4MachineLearningPipeline.h	1969-12-31 19:00:00
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4MachineLearningPipeline.h	2025-05-28 02:54:19
@@ -0,0 +1,101 @@
+//
+//  MTL4MachineLearningPipeline.h
+//  Metal
+//
+//  Copyright © 2024 Apple, Inc. All rights reserved.
+//
+
+#ifndef MTL4MachineLearningPipeline_h
+#define MTL4MachineLearningPipeline_h
+
+#import <Metal/MTLDefines.h>
+
+#import <Foundation/Foundation.h>
+#import <Metal/MTL4PipelineState.h>
+#import <Metal/MTL4FunctionDescriptor.h>
+#import <Metal/MTLTensor.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// Description for a machine learning pipeline state.
+MTL_EXPORT
+API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4MachineLearningPipelineDescriptor : MTL4PipelineDescriptor
+
+/// Assigns an optional string that helps identify pipeline states you create from this descriptor.
+@property (nullable, copy, nonatomic) NSString *label;
+
+/// Assigns the function that the machine learning pipeline you create from this descriptor executes.
+@property (nullable, readwrite, nonatomic, copy) MTL4FunctionDescriptor* machineLearningFunctionDescriptor;
+
+/// Sets the dimension of an input tensor at a buffer index.
+///
+/// - Parameters:
+///   - dimensions: the dimensions of the tensor.
+///   - bufferIndex: Index of the tensor to modify.
+- (void)setInputDimensions:(MTLTensorExtents * _Nullable)dimensions atBufferIndex:(NSInteger)bufferIndex;
+
+/// Sets the dimensions of multiple input tensors on a range of buffer bindings.
+///
+/// Use this method to specify the dimensions of multiple input tensors at a range of indices in a single call.
+///
+/// You can indicate that any tensors in the range have unspecified dimensions by providing `NSNull` at the their
+/// corresponding index location in the array.
+///
+/// - Important: The range's length property needs to match the number of dimensions you provide. Specifically,
+/// `range.length` needs to match `dimensions.count`.
+///
+/// - Parameters:
+///   - dimensions: An array of tensor extents.
+///   - range: The range of inputs of the `dimensions` argument.
+///   The range's `length` needs to match the dimensions' `count` property.
+- (void)setInputDimensions:(NSArray<MTLTensorExtents *> *)dimensions withRange:(NSRange)range;
+
+/// Obtains the dimensions of the input tensor at `bufferIndex` if set, `nil` otherwise.
+- (MTLTensorExtents * _Nullable)inputDimensionsAtBufferIndex:(NSInteger)bufferIndex;
+
+/// Resets the descriptor to its default values.
+- (void)reset;
+
+@end
+
+/// Represents reflection information for a machine learning pipeline state.
+MTL_EXPORT
+API_AVAILABLE(macos(26.0), ios(26.0)) NS_SWIFT_SENDABLE
+@interface MTL4MachineLearningPipelineReflection : NSObject
+
+/// Describes every input and output of the pipeline.
+@property (nonnull, readonly) NSArray<id<MTLBinding>> *bindings;
+
+@end
+
+/// A pipeline state that you can use with machine-learning encoder instances.
+///
+/// See ``MTL4MachineLearningCommandEncoder`` for more information.
+API_AVAILABLE(macos(26.0), ios(26.0)) NS_SWIFT_SENDABLE
+@protocol MTL4MachineLearningPipelineState <MTLAllocation, NSObject>
+
+/// Queries the string that helps identify this object.
+@property (nullable, readonly) NSString *label;
+
+/// Returns the device the pipeline state belongs to.
+@property (readonly) id <MTLDevice> device;
+
+/// Returns reflection information for this machine learning pipeline state.
+@property (nullable, readonly) MTL4MachineLearningPipelineReflection *reflection;
+
+/// Obtain the size of the heap, in bytes, this pipeline requires during the execution.
+///
+/// Use this value to allocate a ``MTLHeap`` instance of sufficient size that you can then provide to
+/// ``MTL4MachineLearningCommandEncoder/dispatchNetworkWithIntermediatesHeap:``.
+///
+/// Metal uses this heap to store intermediate data as it executes the pipeline. It is your responsibility to provide
+/// a heap at least as large as this property requests.
+@property (readonly) NSUInteger intermediatesHeapSize;
+
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+#endif // MTL4MachineLearningPipeline_h
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4MeshRenderPipeline.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4MeshRenderPipeline.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4MeshRenderPipeline.h	1969-12-31 19:00:00
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4MeshRenderPipeline.h	2025-05-28 02:49:13
@@ -0,0 +1,233 @@
+//
+//  MTL4MeshRenderPipeline.h
+//  Metal
+//
+//  Copyright © 2024 Apple, Inc. All rights reserved.
+//
+
+#ifndef MTL4MeshRenderPipeline_h
+#define MTL4MeshRenderPipeline_h
+
+#import <Metal/MTLDefines.h>
+
+#import <Foundation/Foundation.h>
+#import <Metal/MTL4RenderPipeline.h>
+#import <Metal/MTLFunctionHandle.h>
+#import <Metal/MTLRenderPipeline.h>
+#import <Metal/MTLTypes.h>
+
+@class MTL4FunctionDescriptor;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// Groups together properties you use to create a mesh render pipeline state object.
+///
+/// Compared to ``MTLMeshRenderPipelineDescriptor``, this interface doesn't offer a mechanism to hint to Metal mutability
+/// of object, mesh, or fragment buffers. Additionally, when you use this descriptor, you don't specify binary archives.
+MTL_EXPORT
+API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4MeshRenderPipelineDescriptor : MTL4PipelineDescriptor
+
+/// Assigns a function descriptor representing the function this pipeline executes for each *object* in the object shader stage.
+@property (nullable, readwrite, nonatomic, copy) MTL4FunctionDescriptor* objectFunctionDescriptor;
+
+/// Assigns a function descriptor representing the function this pipeline executes for each primitive in the mesh shader stage.
+@property (nullable, readwrite, nonatomic, copy) MTL4FunctionDescriptor* meshFunctionDescriptor;
+
+/// Assigns a function descriptor representing the function this pipeline executes for each fragment.
+@property (nullable, readwrite, nonatomic, copy) MTL4FunctionDescriptor* fragmentFunctionDescriptor;
+
+/// Controls the largest number of threads the pipeline state can execute in a single object shader threadgroup dispatch.
+///
+/// This number represents the maximum size of the product of the components of parameter `threadsPerObjectThreadgroup`
+/// that Metal can use when drawing with this pipeline in mesh shader dispatch methods, such as
+/// ``MTL4RenderCommandEncoder/drawMeshThreadgroups:threadsPerObjectThreadgroup:threadsPerMeshThreadgroup:``.
+///
+/// The compiler's optimizer can use the value of this property to generate more efficient code, specifically when
+/// the value doesn't exceed the thread execution width of the underlying GPU.
+///
+/// The default value of this property is `0`, which indicates that the number you pass to attribute
+/// `[[max_total_threads_per_threadgroup(N)]]` of the pipeline's object function determines the maximum
+/// total threads per threadgroup.
+///
+/// When you specify both the `[[max_total_threads_per_threadgroup(N)]]` attribute and this property, you are responsible
+/// for making sure these values match.
+///
+/// Additionally, you are responsible for ensuring this value doesn't exceed the "maximum threads per threadgroup"
+/// device limit documented in the "Metal Feature Set Tables" PDF:
+/// <https://developer.apple.com/metal/Metal-Feature-Set-Tables.pdf>.
+///
+@property (readwrite, nonatomic) NSUInteger maxTotalThreadsPerObjectThreadgroup;
+
+/// Controls the largest number of threads the pipeline state can execute in a single mesh shader threadgroup dispatch.
+///
+/// This number represents the maximum size of the product of the components of parameter `threadsPerMeshThreadgroup`
+/// that Metal can use when drawing with this pipeline in mesh shader dispatch methods, such as
+/// ``MTL4RenderCommandEncoder/drawMeshThreadgroups:threadsPerObjectThreadgroup:threadsPerMeshThreadgroup:``.
+///
+/// The compiler's optimizer can use the value of this property to generate more efficient code, specifically when
+/// the value doesn't exceed the thread execution width of the underlying GPU.
+///
+/// The default value of this property is `0`, thish indicates that the Metal Shader Language attribute
+/// `[[max_total_threads_per_threadgroup]]` you attache to the pipeline's mesh shader function determines
+/// the value of this property.
+///
+///
+/// When you specify both the `[[max_total_threads_per_threadgroup(N)]]` attribute and this property, you are responsible
+/// for making sure these values match.
+///
+/// Additionally, you are responsible for ensuring this value doesn't exceed the "maximum threads per threadgroup"
+/// device limit documented in the "Metal Feature Set Tables" PDF:
+/// <https://developer.apple.com/metal/Metal-Feature-Set-Tables.pdf>.
+///
+@property (readwrite, nonatomic) NSUInteger maxTotalThreadsPerMeshThreadgroup;
+
+/// Controls the required number of object threads-per-threadgroup when drawing with a mesh shader pipeline you create
+/// from this descriptor.
+///
+/// This argument is optional, unless this pipeline uses `CooperativeTensors`, in which case you are responsible for providing it.
+///
+/// When this value is set to non-zero, you are responsible for ensuring the parameter `threadsPerObjectThreadgroup`
+/// in any mesh dispatch draw calls that use this mesh render pipeline, such as
+/// ``MTL4RenderCommandEncoder/drawMeshThreadgroups:threadsPerObjectThreadgroup:threadsPerMeshThreadgroup:``,
+/// match it.
+///
+/// Setting this value to a size of 0 in every dimension disables this property.
+///
+@property(readwrite, nonatomic) MTLSize requiredThreadsPerObjectThreadgroup;
+
+/// Controls the required number of mesh threads-per-threadgroup when drawing with a mesh shader pipeline you create
+/// from this descriptor.
+///
+/// This argument is optional, unless this pipeline uses `CooperativeTensors`, in which case you are responsible for providing it.
+///
+/// When this value is set to non-zero, you are responsible for ensuring the parameter `threadsPerMeshThreadgroup`
+/// in any mesh dispatch draw calls that use this mesh render pipeline, such as
+/// ``MTL4RenderCommandEncoder/drawMeshThreadgroups:threadsPerObjectThreadgroup:threadsPerMeshThreadgroup:``,
+/// match it.
+///
+/// Setting this value to a size of 0 in every dimension disables this property.
+///
+@property(readwrite, nonatomic) MTLSize requiredThreadsPerMeshThreadgroup;
+
+/// Provides a guarantee to Metal regarding the number of threadgroup threads for the object stage of a pipeline you
+/// create from this descriptor.
+///
+/// If you set this property to <doc://com.apple.documentation/documentation/swift/true>, you state to Metal that when
+/// you use a mesh render pipeline you create from this descriptor, the number of threadgroup threads you dispatch for
+/// the object stage is a multiple of its ``MTLRenderPipelineState/objectThreadExecutionWidth``. The compiler's optimizer can use this guarantee to generate
+///  more efficient code.
+///
+/// This property's default value is <doc://com.apple.documentation/documentation/swift/false>.
+@property (readwrite, nonatomic) BOOL objectThreadgroupSizeIsMultipleOfThreadExecutionWidth;
+
+/// Provides a guarantee to Metal regarding the number of threadgroup threads for the mesh stage of a pipeline you
+/// create from this descriptor.
+///
+/// If you set this property to <doc://com.apple.documentation/documentation/swift/true>, you state to Metal that when
+/// you use a mesh render pipeline you create from this descriptor, the number of threadgroup threads you dispatch for
+/// the mesh stage is a multiple of its ``MTLRenderPipelineState/meshThreadExecutionWidth``. The compiler's optimizer
+/// can use this guarantee to generate more efficient code.
+///
+/// This property's default value is <doc://com.apple.documentation/documentation/swift/false>.
+@property (readwrite, nonatomic) BOOL meshThreadgroupSizeIsMultipleOfThreadExecutionWidth;
+
+/// Reserves storage for the object-to-mesh stage payload.
+///
+/// This property determines the size, in bytes, of the buffer you indicate via the Metal Shading Language `[[payload]]`
+/// attribute in the object and mesh shader functions of the mesh render pipeline.
+///
+/// If this value is `0`, Metal derives the size from the (dereferenced) type you declare for the payload in the object
+/// shader function. If the type is a pointer, Metal reserves space for a single element.
+///
+/// The default value is `0`.
+@property (readwrite, nonatomic) NSUInteger payloadMemoryLength;
+
+
+/// Controls the largest number of threads the pipeline state can execute when the object stage of a mesh
+/// render pipeline you create from this descriptor dispatches its mesh stage.
+///
+/// This number represents the maximum size of the product of the components of the parameter you pass to Metal
+/// Shading Language's built-in function `mesh_grid_properties::set_threadgroups_per_grid`.
+///
+/// The default value of this property is `0`, which indicates that the Metal Shading Language attribute
+/// `[[max_total_threadgroups_per_mesh_grid(N)]]` you attach to the pipeline's mesh shader function determines
+/// the value of this property.
+///
+/// When you specify both the `[[max_total_threadgroups_per_mesh_grid(N)]]` attribute and this property, you are
+/// responsible for making sure these values match.
+///
+/// Additionally, you are responsible for ensuring this value doesn't exceed the "maximum threads per mesh grid"
+/// device limit documented in the "Metal Feature Set Tables" PDF:
+/// <https://developer.apple.com/metal/Metal-Feature-Set-Tables.pdf>.
+///
+@property (readwrite, nonatomic) NSUInteger maxTotalThreadgroupsPerMeshGrid;
+
+/// Sets number of samples this pipeline applies for each fragment.
+@property (readwrite, nonatomic) NSUInteger rasterSampleCount;
+
+/// Indicates whether to read and use the alpha channel fragment output of color attachments to compute a sample coverage mask.
+@property (readwrite, nonatomic) MTL4AlphaToCoverageState alphaToCoverageState;
+
+/// Indicates whether the pipeline forces alpha channel values of color attachments to the largest representable value.
+@property (readwrite, nonatomic) MTL4AlphaToOneState alphaToOneState;
+
+/// Determines whether the pipeline rasterizes primitives.
+///
+/// By default, this value is <doc://com.apple.documentation/documentation/swift/true>, specifying that this pipeline
+/// rasterizes primitives. Set this property to <doc://com.apple.documentation/documentation/swift/false> when you
+/// don't provide a fragment shader function via function ``fragmentFunctionDescriptor``.
+@property (readwrite, nonatomic, getter=isRasterizationEnabled) BOOL rasterizationEnabled;
+
+/// Determines the maximum value that can you can pass as the pipeline's amplification count.
+///
+/// This property controls the maximum count you pass to ``MTL4RenderCommandEncoder/setVertexAmplificationCount:viewMappings:``
+/// when using vertex amplification with this pipeline.
+@property (readwrite, nonatomic) NSUInteger maxVertexAmplificationCount;
+
+/// Accesses an array containing descriptions of the color attachments this pipeline writes to.
+@property (readonly) MTL4RenderPipelineColorAttachmentDescriptorArray* colorAttachments;
+
+/// Provides static linking information for the object stage of the render pipeline.
+///
+/// Use this property to link extra shader functions to the object stage of the render pipeline.
+@property (null_resettable, copy, nonatomic) MTL4StaticLinkingDescriptor* objectStaticLinkingDescriptor;
+
+/// Provides static linking information for the mesh stage of the render pipeline.
+///
+/// Use this property to link extra shader functions to the mesh stage of the render pipeline.
+@property (null_resettable, copy, nonatomic) MTL4StaticLinkingDescriptor* meshStaticLinkingDescriptor;
+
+/// Provides static linking information for the fragment stage of the render pipeline.
+///
+/// Use this property to link extra shader functions to the fragment stage of the render pipeline.
+@property (null_resettable, copy, nonatomic) MTL4StaticLinkingDescriptor* fragmentStaticLinkingDescriptor;
+
+/// Indicates whether you can use the render pipeline to create new pipelines by adding binary functions to the object
+/// shader function’s callable functions list.
+@property (readwrite, nonatomic) BOOL supportObjectBinaryLinking;
+
+/// Indicates whether you can use the render pipeline to create new pipelines by adding binary functions to the mesh
+/// shader function’s callable functions list.
+@property (readwrite, nonatomic) BOOL supportMeshBinaryLinking;
+
+/// Indicates whether you can use the render pipeline to create new pipelines by adding binary functions to the fragment
+/// shader function’s callable functions list.
+@property (readwrite, nonatomic) BOOL supportFragmentBinaryLinking;
+
+/// Sets the logical-to-physical rendering remap state.
+///
+/// Use this property to assign how a ``MTL4RenderCommandEncoder`` instance maps the output of your fragment shader to
+/// physical color attachments.
+@property (readwrite, nonatomic) MTL4LogicalToPhysicalColorAttachmentMappingState colorAttachmentMappingState;
+
+/// Indicates whether the pipeline supports indirect command buffers.
+@property (readwrite, nonatomic) MTL4IndirectCommandBufferSupportState supportIndirectCommandBuffers;
+
+/// Resets this descriptor to its default state.
+- (void)reset;
+
+@end
+
+NS_ASSUME_NONNULL_END
+#endif // MTL4MeshRenderPipeline_h
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4PipelineDataSetSerializer.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4PipelineDataSetSerializer.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4PipelineDataSetSerializer.h	1969-12-31 19:00:00
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4PipelineDataSetSerializer.h	2025-05-28 02:54:17
@@ -0,0 +1,90 @@
+//
+//  MTL4PipelineDataSetSerializer.h
+//  Metal
+//
+//  Copyright © 2024 Apple, Inc. All rights reserved.
+//
+
+#ifndef MTL4PipelineDataSetSerializer_h
+#define MTL4PipelineDataSetSerializer_h
+
+#import <Metal/MTLDefines.h>
+
+#import <Metal/MTLDevice.h>
+NS_ASSUME_NONNULL_BEGIN
+
+/// Configuration options for pipeline dataset serializer objects.
+///
+/// Use these options to enable different functionality in instances of ``MTL4PipelineDataSetSerializer``.
+///
+/// You can combine these values via a logical `OR` and set it to ``MTL4PipelineDataSetSerializerDescriptor/configuration``
+/// to specify desired level of serialization support for instances of ``MTL4PipelineDataSetSerializer``.
+API_AVAILABLE(macos(26.0), ios(26.0))
+typedef NS_OPTIONS(NSInteger, MTL4PipelineDataSetSerializerConfiguration) {
+    /// Enables serializing pipeline scripts.
+    ///
+    /// Set this mask to use ``MTL4PipelineDataSetSerializer.serializeAsPipelinesScriptWithError``.
+    ///
+    /// This for the default behavior.
+    MTL4PipelineDataSetSerializerConfigurationCaptureDescriptors = 0,
+    
+    /// Enables serializing pipeline binary functions.
+    ///
+    /// Set this mask to use ``MTL4PipelineDataSetSerializer.serializeAsArchiveAndFlush(toURL:error:)``.
+    MTL4PipelineDataSetSerializerConfigurationCaptureBinaries = 1,
+    
+};
+
+/// Groups together properties to create a pipeline data set serializer.
+MTL_EXPORT
+API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4PipelineDataSetSerializerDescriptor : NSObject <NSCopying>
+
+/// Specifies the configuration of the serialization process.
+///
+/// The configuration of the serialization process determines the mechanisms you use to serialize pipeline data sets.
+///
+/// When this configuration contains ``MTL4PipelineDataSetSerializerConfigurationCaptureDescriptors``, use
+/// ``serializeAsPipelinesScriptWithError:`` to serialize pipeline scripts.
+///
+/// If this option contains ``MTL4PipelineDataSetSerializerConfigurationCaptureBinaries``, the serializer can additionally
+/// serialize to a binary archive by calling ``serializeAsArchiveAndFlushToURL:error::``.
+@property(readwrite, nonatomic) MTL4PipelineDataSetSerializerConfiguration configuration;
+
+@end
+
+/// A fast-addition container for collecting data during pipeline state creation.
+///
+/// Pipeline data serializer instances allow you to create binary archives and serialize pipeline scripts to use with
+/// the offline Metal binary generator (`metal-tt`) <doc:compiling-binary-archives-from-a-custom-configuration-script.md>.
+///
+/// You capture and retain all relevant data for all pipelines a compiler instance creates by providing an instance of
+/// this object to its ``MTL4CompilerDescriptor``.
+///
+/// After capturing data, you can serialize it to a binary archive to persist its contents offline by calling
+/// ``serializeAsArchiveAndFlushToURL:error:``. You can also serialize a pipeline script suitable for the offline binary
+/// generator (`metal-tt`) by calling ``serializeAsPipelinesScriptWithError:``
+///
+/// - Note: The objects ``MTL4PipelineDataSetSerializer`` contains are opaque and can't accelerate compilation for
+/// compilers they are not attached to. Additionally, your program can't read data out of data set serializer instances.
+API_AVAILABLE(macos(26.0), ios(26.0))
+@protocol MTL4PipelineDataSetSerializer <NSObject>
+/// Serializes a pipeline data set to an archive.
+///
+/// - Parameters:
+///   - url: the URL used to serialize the serializer data set as an archive to.
+///   - error: an optional parameter to store information in case of an error.
+/// - Returns: a boolean indicating whether the operation was successful.
+- (BOOL)serializeAsArchiveAndFlushToURL:(NSURL *)url error:(NSError **)error;
+
+/// Serializes a serializer data set to a pipeline script as raw data.
+///
+/// - Parameters:
+///   - error: an optional parameter to store information in case of an error.
+/// - Returns: an `NSData` instance containing the pipeline script.
+- (nullable NSData *)serializeAsPipelinesScriptWithError:(NSError **)error;
+
+@end
+
+NS_ASSUME_NONNULL_END
+#endif // MTL4PipelineDataSetSerializer_h
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4PipelineState.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4PipelineState.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4PipelineState.h	1969-12-31 19:00:00
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4PipelineState.h	2025-05-28 02:54:19
@@ -0,0 +1,113 @@
+//
+//  MTL4PipelineState.h
+//  Metal
+//
+//  Copyright © 2024 Apple, Inc. All rights reserved.
+//
+
+#ifndef MTL4PipelineState_h
+#define MTL4PipelineState_h
+
+#import <Metal/MTLDefines.h>
+
+
+#import <Foundation/Foundation.h>
+#import <Metal/MTLPipeline.h>
+#import <Metal/MTLTypes.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// Option mask for requesting reflection information at pipeline build time.
+typedef NS_OPTIONS(NSUInteger, MTL4ShaderReflection) {
+    
+    /// Requests no information.
+    MTL4ShaderReflectionNone           = 0,
+    
+    /// Requests reflection information for bindings.
+    MTL4ShaderReflectionBindingInfo    = 1 << 0,
+    
+    /// Requests reflection information for buffer types.
+    MTL4ShaderReflectionBufferTypeInfo = 1 << 1,
+} API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// Enumeration for controlling alpha-to-one state of a pipeline state object.
+typedef NS_ENUM(NSInteger, MTL4AlphaToOneState) {
+    
+    /// Disables alpha-to-one.
+    MTL4AlphaToOneStateDisabled = 0,
+    
+    /// Enables alpha-to-one.
+    MTL4AlphaToOneStateEnabled  = 1,
+
+} API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// Enumeration for controlling alpha-to-coverage state of a pipeline state object.
+typedef NS_ENUM(NSInteger, MTL4AlphaToCoverageState) {
+    
+    /// Disables alpha-to-coverage.
+    MTL4AlphaToCoverageStateDisabled = 0,
+    
+    /// Enables alpha-to-coverage.
+    MTL4AlphaToCoverageStateEnabled  = 1,
+} API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// Enumeration for controlling the blend state of a pipeline state object.
+typedef NS_ENUM(NSInteger, MTL4BlendState) {
+    
+    /// Disables blending.
+    MTL4BlendStateDisabled = 0,
+    
+    /// Enables blending.
+    MTL4BlendStateEnabled  = 1,
+    
+    /// Defers determining the blending stage.
+    ///
+    /// Behaves as ``MTL4BlendStateDisabled`` until you specialize this pipeline value.
+    MTL4BlendStateUnspecialized API_AVAILABLE(macos(26.0), ios(26.0)) = 2,
+} API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// Enumeration for controlling support for ``MTLIndirectCommandBuffer``.
+typedef NS_ENUM(NSInteger, MTL4IndirectCommandBufferSupportState) {
+    
+    /// Disables support for indirect command buffers.
+    MTL4IndirectCommandBufferSupportStateDisabled = 0,
+    
+    /// Enables support for indirect command buffers.
+    MTL4IndirectCommandBufferSupportStateEnabled  = 1,
+} API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// Constant to specify discarding a color attachment's index in a remap operation.
+MTL_EXTERN const NSUInteger MTLRenderTargetRemapIndexDiscard;
+
+/// Provides options controlling how to compile a pipeline state.
+///
+/// You provide these options through the ``MTL4PipelineDescriptor`` class at compilation time.
+MTL_EXPORT
+API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4PipelineOptions : NSObject<NSCopying>
+
+/// Controls whether to enable or disable Metal Shader Validation for the pipeline.
+@property (readwrite, nonatomic) MTLShaderValidation shaderValidation;
+
+/// Controls whether to include Metal shader reflection in this pipeline.
+@property (readwrite, nonatomic) MTL4ShaderReflection shaderReflection;
+@end
+
+/// Base type for descriptors you use for building pipeline state objects.
+MTL_EXPORT
+API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4PipelineDescriptor : NSObject<NSCopying>
+
+/// Assigns an optional string that uniquely identifies a pipeline descriptor.
+///
+/// After you provide this label, you can use it to look up a pipeline state object by name in a binary archive.
+@property (nullable, copy, nonatomic) NSString* label;
+
+/// Provides compile-time options when you build the pipeline.
+@property (readwrite, nonatomic, retain) MTL4PipelineOptions* options;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+#endif // MTL4PipelineState_h
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4RenderCommandEncoder.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4RenderCommandEncoder.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4RenderCommandEncoder.h	1969-12-31 19:00:00
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4RenderCommandEncoder.h	2025-05-28 04:53:30
@@ -0,0 +1,630 @@
+//
+//  MTL4RenderCommandEncoder.h
+//  Metal
+//
+//  Copyright © 2024 Apple, Inc. All rights reserved.
+//
+
+#ifndef MTL4RenderCommandEncoder_h
+#define MTL4RenderCommandEncoder_h
+
+#import <Metal/MTLDefines.h>
+#import <Metal/MTLRenderCommandEncoder.h>
+#import <Metal/MTL4CommandEncoder.h>
+#import <Metal/MTL4Counters.h>
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+@protocol MTL4ArgumentTable;
+@class MTLLogicalToPhysicalColorAttachmentMap;
+@protocol MTL4CounterHeap;
+
+/// Custom render pass options you specify at encoder creation time.
+///
+/// Use these options to implement parallel encoding of render passes across multiple CPU threads by providing these
+/// values to the `options` parameter of ``MTL4CommandBuffer/renderCommandEncoderWithDescriptor:options:`` and
+/// observing these requirements:
+///
+/// 1. Commit all command encoders together in an array you provide to ``MTL4CommandQueue/commit:count:`` or ``MTL4CommandQueue/commit:count:options:``
+/// 2. The first command buffer in the array contains a render pass that you start with option ``MTL4RenderEncoderOptionSuspending``
+/// 2. The last command buffer in the array contains the same render pass that you start with option ``MTL4RenderEncoderOptionResuming``
+/// 3. All intermediate command buffers between the first and last in the array contain the same render pass that you
+/// start with both ``MTL4RenderEncoderOptionResuming`` and ``MTL4RenderEncoderOptionSuspending`` options.
+/// 5. The sequence of render passes, in submission order, doesn't intermix with compute, blit, acceleration structure
+/// or machine learning encoding.
+typedef NS_OPTIONS(NSUInteger, MTL4RenderEncoderOptions)
+{
+    /// Declares that this render pass doesn't suspend nor resume.
+    MTL4RenderEncoderOptionNone       = 0,
+    
+    /// Configures the render pass as *suspending*.
+    ///
+    /// Pass this option to ``MTL4CommandBuffer/renderCommandEncoderWithDescriptor:options:`` to specify that Metal can
+    /// stitch the work a render command encoder encodes with a subsequent "resuming" render command encoder.
+    MTL4RenderEncoderOptionSuspending = (1 << 0),
+    
+    /// Configures the render pass to as *resuming*.
+    ///
+    /// Pass this option to ``MTL4CommandBuffer/renderCommandEncoderWithDescriptor:options:`` to specify that Metal can
+    /// stitch the work a render command encoder encodes with a prior "suspending" render command encoder.
+    MTL4RenderEncoderOptionResuming   = (1 << 1)
+} API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// Encodes a render pass into a command buffer, including all its draw calls and configuration.
+API_AVAILABLE(macos(26.0), ios(26.0))
+@protocol MTL4RenderCommandEncoder <MTL4CommandEncoder>
+
+/// Sets the width of a tile for this render pass.
+@property (readonly) NSUInteger tileWidth;
+
+/// Sets the height of a tile for this render pass.
+@property (readonly) NSUInteger tileHeight;
+
+/// Sets the mapping from logical shader color output to physical render pass color attachments.
+///
+/// Use this method to define how the physical color attachments you specify via ``MTL4RenderPassDescriptor/colorAttachments``
+/// map to the logical color output the fragment shader writes to.
+///
+/// To use this feature, make sure to set ``MTL4RenderPassDescriptor/supportColorAttachmentMapping`` to
+/// <doc://com.apple.documentation/documentation/swift/true>.
+///
+/// - Parameter mapping: Mapping from logical shader outputs to physical outputs.
+- (void)setColorAttachmentMap:(MTLLogicalToPhysicalColorAttachmentMap *)mapping;
+
+/// Configures this encoder with a render pipeline state that applies to your subsequent draw commands.
+///
+/// - Parameter pipelineState: a non-`nil` ``MTLRenderPipelineState`` instance.
+- (void)setRenderPipelineState:(id<MTLRenderPipelineState>)pipelineState;
+
+/// Sets the viewport which that transforms vertices from normalized device coordinates to window coordinates.
+///
+/// Metal clips fragments that lie outside this viewport, and optionally clamps fragments outside of z-near/z-far range
+/// depending on the value you assign to ``setDepthClipMode:``.
+///
+/// - Parameter viewport: ``MTLViewport`` to set.
+- (void)setViewport:(MTLViewport)viewport;
+
+/// Sets an array of viewports to transform vertices from normalized device coordinates to window coordinates.
+///
+/// Metal clips fragments that lie outside of the viewport, and optionally clamps fragments outside of z-near/z-far range,
+/// depending on the value you assign to ``setDepthClipMode:``.
+///
+/// Metal selects the viewport to use from the `[[ viewport_array_index ]]` attribute you specify in the pipeline
+/// state's vertex shader function in the Metal Shading Language.
+///
+/// - Parameters:
+///   - viewports: Array of ``MTLViewport`` instances.
+///   - count: Number of ``MTLViewport`` instances in the array.
+- (void)setViewports:(const MTLViewport [__nonnull])viewports
+               count:(NSUInteger)count;
+
+/// Sets the vertex amplification count and its view mapping for each amplification ID.
+///
+/// Each view mapping element describes how to route the corresponding amplification ID to a specific viewport and
+/// render target array index by using offsets from the base array index provided by the `[[ render_target_array_index ]]`
+/// and/or `[[ viewport_array_index ]]` output attributes in the vertex shader. This allows Metal to route each amplified
+///  vertex to a different `[[ render_target_array_index ]]` and `[[ viewport_array_index ]]`, even though you can't
+///  directly amplify these attributes.
+///
+/// - Parameters:
+///   - count: The number of outputs to create. The maximum value is `2`.
+///   - viewMappings: Array of ``MTLVertexAmplificationViewMapping`` instances. Each instance provides
+///                   per-output offsets to a specific render target and viewport.
+- (void)setVertexAmplificationCount:(NSUInteger)count
+                       viewMappings:(nullable const MTLVertexAmplificationViewMapping *)viewMappings;
+
+/// Controls whether Metal culls front facing primitives, back facing primitives, or culls no primitives at all.
+///
+/// - Parameter cullMode: ``MTLCullMode`` to set.
+- (void)setCullMode:(MTLCullMode)cullMode;
+
+/// Controls the behavior for fragments outside of the near or far planes.
+///
+/// - Parameter depthClipMode: ``MTLDepthClipMode`` to set.
+- (void)setDepthClipMode:(MTLDepthClipMode)depthClipMode;
+
+/// Configures the adjustments a render pass applies to depth values from fragment shader functions
+/// by a scaling factor and bias.
+///
+/// - Parameters:
+///   - depthBias: A constant bias the render pipeline applies to all fragments.
+///   - slopeScale: A bias coefficient that scales with the depth of the primitive relative to the camera.
+///   - clamp: A value that limits the bias value the render pipeline can apply to a fragment.
+///            Pass a positive or negative value to limit the largest magnitude of a positive
+///            or negative bias, respectively. Set this value to `0` to disable bias clamping.
+- (void)setDepthBias:(float)depthBias
+          slopeScale:(float)slopeScale
+               clamp:(float)clamp;
+
+
+/// Sets a scissor rectangle to discard fragments outside a specific area.
+///
+/// Metal performs a scissor test and discards all fragments outside of the scissor rect.
+///
+/// - Parameter rect: ``MTLScissorRect`` rectangle to specify. This rectangle needs to lie completely
+///                   within the current render attachment.
+- (void)setScissorRect:(MTLScissorRect)rect;
+
+/// Sets an array of scissor rectangles for a fragment scissor test.
+///
+/// Metal uses the specific scissor rectangle corresponding to the index you specify via the `[[ viewport_array_index ]]`
+/// output attribute of the vertex shader function in the Metal Shading Language, discarding all fragments outside of
+/// the scissor rect.
+///
+/// - Parameters:
+///   - scissorRects: Array of ``MTLScissorRect`` structures.
+///   - count: Number of ``MTLScissorRect`` structures in the array.
+- (void)setScissorRects:(const MTLScissorRect [__nonnull])scissorRects
+                  count:(NSUInteger)count;
+
+/// Configures how subsequent draw commands rasterize triangle and triangle strip primitives.
+///
+/// - Parameter fillMode:``MTLTriangleFillMode`` the render pass applies to draw commands that
+///                       rasterize triangles or triangle strips.
+- (void)setTriangleFillMode:(MTLTriangleFillMode)fillMode;
+
+/// Configures each pixel component value, including alpha, for the render pipeline’s constant blend color.
+///
+/// - Parameters:
+///   - red: A value for the red component for the blend color constant.
+///   - green: A value for the green component for the blend color constant.
+///   - blue: A value for the blue component for the blend color constant.
+///   - alpha: A value for the alpha component for the blend color constant.
+- (void)setBlendColorRed:(float)red
+                   green:(float)green
+                    blue:(float)blue
+                   alpha:(float)alpha;
+
+/// Configures this encoder with a depth stencil state that applies to your subsequent draw commands.
+///
+/// - Parameter depthStencilState: the ``MTLDepthStencilState`` instance to set.
+- (void)setDepthStencilState:(nullable id <MTLDepthStencilState>)depthStencilState;
+
+/// Configures this encoder with a reference value for stencil testing.
+///
+/// The render pipeline applies this reference value to both front-facing and back-facing primitives.
+///
+/// - Parameter referenceValue: A stencil test comparison value.
+- (void)setStencilReferenceValue:(uint32_t)referenceValue;
+
+/// Configures the encoder with different stencil test reference values for front-facing and back-facing primitives.
+///
+/// The render pipeline applies `frontReferenceValue` to front-facing primitives and `backReferenceValue` to
+/// back-facing primitives.
+///
+/// - Parameters:
+///   - frontReferenceValue: A stencil test comparison value the render pipeline applies
+///                          to front-facing primitives.
+///   - backReferenceValue: A stencil test comparison value the render pipeline applies
+///                         to back-facing primitives.
+- (void)setStencilFrontReferenceValue:(uint32_t)frontReferenceValue
+                   backReferenceValue:(uint32_t)backReferenceValue;
+
+/// Configures a visibility test for Metal to run, and the destination for any results it generates.
+///
+/// You use the `mode` parameter to enable or disable the visibility test, and determine if it produces a boolean
+/// response for passing fragments, or if it counts the number of fragments.
+///
+/// - Parameters:
+///   - mode: A ``MTLVisibilityResultMode`` that configures which visibility test results
+///           the render pass saves to a buffer, or disables visibility testing.
+///   - offset: A location, in bytes, relative to the start of
+///             ``MTL4RenderPassDescriptor/visibilityResultBuffer`` The GPU stores
+///             the result of a visibility test at `offset`, which needs to be a multiple of `8`.
+- (void)setVisibilityResultMode:(MTLVisibilityResultMode)mode
+                         offset:(NSUInteger)offset;
+
+/// Configures the store action for a color attachment.
+///
+/// - Parameters:
+///   - storeAction: A store action for the color attachment that
+///                  can’t be ``MTLStoreAction/MTLStoreActionUnknown``.
+///   - colorAttachmentIndex: The index of a color attachment.
+- (void)setColorStoreAction:(MTLStoreAction)storeAction
+                    atIndex:(NSUInteger)colorAttachmentIndex;
+
+/// Configures the store action for the depth attachment.
+///
+/// - Parameter storeAction: A store action for the depth attachment that
+///                          can’t be ``MTLStoreAction/MTLStoreActionUnknown``.
+- (void)setDepthStoreAction:(MTLStoreAction)storeAction;
+
+/// Configures the store action for the stencil attachment.
+///
+/// - Parameter storeAction: A store action for the stencil attachment that
+///                          can’t be ``MTLStoreAction/MTLStoreActionUnknown``.
+- (void)setStencilStoreAction:(MTLStoreAction)storeAction;
+
+/// Encodes a draw command that renders an instance of a geometric primitive.
+///
+/// This command assigns each vertex a unique `vertex_id` value that increases from `vertexStart` through
+/// `(vertexStart + vertexCount - 1)`.
+///
+/// Your vertex shader function can use this value to uniquely identify each vertex.
+///
+/// - Parameters:
+///   - primitiveType: A ``MTLPrimitiveType`` representing how the command interprets vertex argument data.
+///   - vertexStart: The lowest value the command passes to your vertex shader function’s parameter with the
+///                  `[[vertex_id]]` attribute.
+///   - vertexCount: An integer that represents the number of vertices of `primitiveType` the command draws.
+- (void)drawPrimitives:(MTLPrimitiveType)primitiveType
+           vertexStart:(NSUInteger)vertexStart
+           vertexCount:(NSUInteger)vertexCount;
+
+/// Encodes a draw command that renders multiple instances of a geometric primitive.
+///
+/// The command assigns each vertex a unique `vertex_id` value within its drawing instance
+/// that increases from `vertexStart` through `(vertexStart + vertexCount - 1)`.
+///
+/// Additionally, the command assigns each drawing instance a unique `instance_id` value that increases
+/// from `0` through `(instanceCount - 1)`.
+///
+/// Your vertex shader can use the `vertex_id` value to uniquely identify each vertex in each drawing instance, and the
+/// `instance_id` value to identify which instance that vertex belongs to.
+///
+/// - Parameters:
+///   - primitiveType: A ``MTLPrimitiveType`` represents how the command interprets vertex argument data.
+///   - vertexStart: The lowest value the command passes to your vertex shader function’s parameter with
+///                  the `vertex_id` attribute.
+///   - vertexCount: An integer that represents the number of vertices of `primitiveType` the command draws.
+///   - instanceCount: An integer that represents the number of times the command draws `primitiveType` primitives
+///                    with `vertexCount` vertices.
+- (void)drawPrimitives:(MTLPrimitiveType)primitiveType
+           vertexStart:(NSUInteger)vertexStart
+           vertexCount:(NSUInteger)vertexCount
+         instanceCount:(NSUInteger)instanceCount;
+
+/// Encodes a draw command that renders multiple instances of a geometric primitive,
+/// starting with a custom instance identification number.
+///
+/// The command assigns each vertex a unique `vertex_id` value within its drawing instance
+/// that increases from `vertexStart` through `(vertexStart + vertexCount - 1)`.
+///
+/// Additionally, the command assigns each drawing instance a unique `instance_id` value that increases
+/// from `baseInstance` through `(baseInstance + instanceCount - 1)`.
+///
+/// Your vertex shader can use the `vertex_id` value to uniquely identify each vertex in each drawing instance, and the
+/// `instance_id` value to identify which instance that vertex belongs to.
+///
+/// - Parameters:
+///   - primitiveType: A ``MTLPrimitiveType``  representing how the command interprets vertex argument data.
+///   - vertexStart: The lowest value the command passes to your vertex shader function’s parameter with
+///                  the `vertex_id` attribute.
+///   - vertexCount: An integer that represents the number of vertices of `primitiveType` the command draws.
+///   - instanceCount: An integer that represents the number of times the command draws `primitiveType`
+///                    with `vertexCount` vertices.
+///   - baseInstance: The lowest value the command passes to your vertex shader function’s parameter with
+///                   the `instance_id` attribute.
+- (void)drawPrimitives:(MTLPrimitiveType)primitiveType
+           vertexStart:(NSUInteger)vertexStart
+           vertexCount:(NSUInteger)vertexCount
+         instanceCount:(NSUInteger)instanceCount
+          baseInstance:(NSUInteger)baseInstance;
+
+/// Encodes a draw command that renders an instance of a geometric primitive with indexed vertices.
+///
+/// Use this method to perform indexed drawing, where an index buffer determines how Metal assembles primitives.
+///
+/// Metal imposes some restrictions on the index buffer's address, which needs to be 2- or 4-byte aligned, and its length
+/// in bytes, which needs to be a multiple of 2 or 4, depending on whether the format of the index is
+/// ``MTLIndexType/MTLIndexTypeUInt16`` or ``MTLIndexType/MTLIndexTypeUInt32``.
+///
+/// Use an instance of ``MTLResidencySet`` to mark residency of the index buffer the `indexBuffer` parameter references.
+///
+/// - Parameters:
+///   - primitiveType: A ``MTLPrimitiveType`` representing how the command interprets vertex argument data.
+///   - indexCount: An integer that represents the number of vertices the command reads from `indexBuffer`.
+///   - indexType: A ``MTLIndexType`` instance that represents the index format.
+///   - indexBuffer: GPUAddress of a ``MTLBuffer`` instance that contains `indexCount` indices of `indexType` format.
+///                  You are responsible for ensuring this address is aligned to 2 bytes if the `indexType` format is
+///                  ``MTLIndexType/MTLIndexTypeUInt16``, and aligned to 4 bytes if the format is
+///                  ``MTLIndexType/MTLIndexTypeUInt32``.
+///   - indexBufferLength: An integer that represents the length of `indexBuffer`, in bytes. You are responsible for
+///                     ensuring this this size is a multiple of 2 if the `indexType` format is ``MTLIndexType/MTLIndexTypeUInt16``,
+///                     and a multiple of 4 if the format is ``MTLIndexType/MTLIndexTypeUInt32``.
+///                     If this draw call causes Metal to read indices at or beyond the `indexBufferLength`, Metal
+///                     continues to execute them assigning a value of `0` to the `vertex_id` attribute.
+- (void)drawIndexedPrimitives:(MTLPrimitiveType)primitiveType
+                   indexCount:(NSUInteger)indexCount
+                    indexType:(MTLIndexType)indexType
+                  indexBuffer:(uint64_t)indexBuffer
+            indexBufferLength:(NSUInteger)indexBufferLength;
+
+/// Encodes a draw command that renders multiple instances of a geometric primitive with indexed vertices.
+///
+/// Use this method to perform instanced indexed drawing, where an index buffer determines how Metal assembles primitives.
+///
+/// The command assigns each drawing instance a unique `instance_id` value that increases
+/// from `0` through `(instanceCount - 1)`. Your shader can use this value to identify which
+/// instance the vertex belongs to.
+///
+/// Metal imposes some restrictions on the index buffer's address, which needs to be 2- or 4-byte aligned, and its length
+/// in bytes, which needs to be a multiple of 2 or 4, depending on whether the format of the index is
+/// ``MTLIndexType/MTLIndexTypeUInt16`` or ``MTLIndexType/MTLIndexTypeUInt32``.
+///
+/// Use an instance of ``MTLResidencySet`` to mark residency of the index buffer the `indexBuffer` parameter references.
+///
+/// - Parameters:
+///   - primitiveType: A ``MTLPrimitiveType`` representing how the command interprets vertex argument data.
+///   - indexCount: An integer that represents the number of vertices the command reads from `indexBuffer`.
+///   - indexType: A ``MTLIndexType`` instance that represents the index format.
+///   - indexBuffer: GPUAddress of a ``MTLBuffer`` instance that contains `indexCount` indices of `indexType` format.
+///                  You are responsible for ensuring this address is aligned to 2 bytes if the `indexType` format is
+///                  ``MTLIndexType/MTLIndexTypeUInt16``, and aligned to 4 bytes if the format is
+///                  ``MTLIndexType/MTLIndexTypeUInt32``.
+///   - indexBufferLength: An integer that represents the length of `indexBuffer`, in bytes. You are responsible for
+///                     ensuring this this size is a multiple of 2 if the `indexType` format is ``MTLIndexType/MTLIndexTypeUInt16``,
+///                     and a multiple of 4 if the format is ``MTLIndexType/MTLIndexTypeUInt32``.
+///                     Metal disregards this value and assigns `0` to the `vertex_id` attribute for all primitives that
+///                     require loading indices at a byte offset of `indexBufferLength` or greater.
+///   - instanceCount: An integer that represents the number of times the command draws `primitiveType` with `indexCount`
+///                    vertices.
+- (void)drawIndexedPrimitives:(MTLPrimitiveType)primitiveType
+                   indexCount:(NSUInteger)indexCount
+                    indexType:(MTLIndexType)indexType
+                  indexBuffer:(uint64_t)indexBuffer
+            indexBufferLength:(NSUInteger)indexBufferLength
+                instanceCount:(NSUInteger)instanceCount;
+
+/// Encodes a draw command that renders multiple instances of a geometric primitive with indexed vertices,
+/// starting with a custom vertex and instance.
+///
+/// Use this method to perform instanced indexed drawing, where an index buffer determines how Metal assembles primitives
+/// whilst customizing the base vertex and base instance value Metal passes to the vertex shader function.
+///
+/// The command assigns each drawing instance a unique `instance_id` value that increases
+/// from `baseInstance` through `(baseInstance + instanceCount - 1)`. Your shader can use this value
+/// to identify which instance the vertex belongs to.
+///
+/// Metal imposes some restrictions on the index buffer's address, which needs to be 2- or 4-byte aligned, and its length
+/// in bytes, which needs to be a multiple of 2 or 4, depending on whether the format of the index is
+/// ``MTLIndexType/MTLIndexTypeUInt16`` or ``MTLIndexType/MTLIndexTypeUInt32``.
+///
+/// Use an instance of ``MTLResidencySet`` to mark residency of the index buffer the `indexBuffer` parameter references.
+///
+/// - Parameters:
+///   - primitiveType: A ``MTLPrimitiveType`` representing how the command interprets vertex argument data.
+///   - indexCount: An integer that represents the number of vertices the command reads from `indexBuffer`.
+///   - indexType: A ``MTLIndexType`` instance that represents the index format.
+///   - indexBuffer: GPUAddress of a ``MTLBuffer`` instance that contains `indexCount` indices of `indexType` format.
+///                  You are responsible for ensuring this address is aligned to 2 bytes if the `indexType` format is
+///                  ``MTLIndexType/MTLIndexTypeUInt16``, and aligned to 4 bytes if the format is
+///                  ``MTLIndexType/MTLIndexTypeUInt32``.
+///   - indexBufferLength: An integer that represents the length of `indexBuffer`, in bytes. You are responsible for
+///                     ensuring this this size is a multiple of 2 if the `indexType` format is ``MTLIndexType/MTLIndexTypeUInt16``,
+///                     and a multiple of 4 if the format is ``MTLIndexType/MTLIndexTypeUInt32``.
+///                     If this draw call causes Metal to read indices at or beyond the `indexBufferLength`, Metal
+///                     continues to execute them assigning a value of `0` to the `vertex_id` attribute.
+///   - instanceCount: An integer that represents the number of times the command draws `primitiveType` with `indexCount`
+///                    vertices.
+///   - baseVertex: The lowest value the command passes to your vertex shader functions’s parameter with the `vertex_id`
+///                 attribute. Metal disregards this value and assigns `0` to the `vertex_id` attribute for all
+///                 primitives that require loading indices at a byte offset of `indexBufferLength` or greater.
+///   - baseInstance: The lowest value the command passes to your vertex shader’s parameter with the `instance_id` attribute.
+- (void)drawIndexedPrimitives:(MTLPrimitiveType)primitiveType
+                   indexCount:(NSUInteger)indexCount
+                    indexType:(MTLIndexType)indexType
+                  indexBuffer:(uint64_t)indexBuffer
+            indexBufferLength:(NSUInteger)indexBufferLength
+                instanceCount:(NSUInteger)instanceCount
+                   baseVertex:(NSInteger)baseVertex
+                 baseInstance:(NSUInteger)baseInstance;
+
+/// Encodes a draw command that renders multiple instances of a geometric primitive with indirect arguments.
+///
+/// When you use this function, Metal reads the parameters to the draw command from an ``MTLBuffer`` instance,
+/// allowing you to implement a GPU-driven workflow where a compute pipeline state determines the draw arguments.
+///
+/// You are responsible for ensuring that the address of the indirect buffer you provide to this method has 4-byte
+/// alignment.
+///
+/// Because this is a non-indexed draw call, Metal interprets the contents of the indirect buffer to match the
+/// layout of struct ``MTLDrawPrimitivesIndirectArguments``.
+///
+/// Use an instance of ``MTLResidencySet`` to mark residency of the indirect buffer that the `indirectBuffer` parameter
+/// references.
+///
+/// - Parameters:
+///   - primitiveType: A ``MTLPrimitiveType`` representing how the command interprets vertex argument data.
+///   - indirectBuffer: GPUAddress of a ``MTLBuffer`` instance with data that matches the layout of the
+///                     ``MTLDrawPrimitivesIndirectArguments`` structure. You are responsible for ensuring that the
+///                     alignment of this address is 4 bytes.
+- (void)drawPrimitives:(MTLPrimitiveType)primitiveType
+        indirectBuffer:(uint64_t)indirectBuffer;
+
+/// Encodes a draw command that renders multiple instances of a geometric primitive with indexed vertices
+/// and indirect arguments.
+///
+/// When you use this function, Metal reads the parameters to the draw command from an ``MTLBuffer`` instance,
+/// allowing you to implement a GPU-driven workflow where a compute pipeline state determines the draw arguments.
+///
+/// Because this is an indexed draw call, Metal interprets the contents of the indirect buffer to match the
+/// layout of struct ``MTLDrawIndexedPrimitivesIndirectArguments``, which includes `indexStart` and `indexCount`
+/// members, denoting a range within the index buffer you provide in the `indexBuffer` parameter.
+///
+/// The range of indices within the `indexBuffer` form the primitives Metal draws.
+///
+/// Metal imposes some restrictions on the index buffer's address, which needs to be 2- or 4-byte aligned, and its length
+/// in bytes, which needs to be a multiple of 2 or 4, depending on whether the format of the index is
+/// ``MTLIndexType/MTLIndexTypeUInt16`` or ``MTLIndexType/MTLIndexTypeUInt32``.
+///
+/// Similarly, you are responsible for ensuring the indirect buffer's address has 4-byte alignment.
+///
+/// Use an instance of ``MTLResidencySet`` to mark residency of the indirect buffer that the `indirectBuffer` parameter
+/// references, and of the index buffer the `indexBuffer` parameter references.
+///
+/// - Parameters:
+///   - primitiveType: A ``MTLPrimitiveType`` representing how the command interprets vertex argument data.
+///   - indexType: A ``MTLIndexType`` instance that represents the index format.
+///   - indexBuffer: GPUAddress of a ``MTLBuffer`` instance that contains `indexCount` indices of `indexType` format.
+///                  You are responsible for ensuring this address is aligned to 2 bytes if the `indexType` format is
+///                  ``MTLIndexType/MTLIndexTypeUInt16``, and aligned to 4 bytes if the format is
+///                  ``MTLIndexType/MTLIndexTypeUInt32``.
+///   - indexBufferLength: An integer that represents the length of `indexBuffer`, in bytes. You are responsible for
+///                     ensuring this this size is a multiple of 2 if the `indexType` format is ``MTLIndexType/MTLIndexTypeUInt16``,
+///                     and a multiple of 4 if the format is ``MTLIndexType/MTLIndexTypeUInt32``.
+///                     If this draw call causes Metal to read indices at or beyond the `indexBufferLength`, Metal
+///                     continues to execute them assigning a value of `0` to the `vertex_id` attribute.
+///   - indirectBuffer: GPUAddress of an ``MTLBuffer`` instance with data that matches the layout of the
+///                     ``MTLDrawIndexedPrimitivesIndirectArguments`` structure. This address requires 4-byte alignment.
+- (void)drawIndexedPrimitives:(MTLPrimitiveType)primitiveType
+                    indexType:(MTLIndexType)indexType
+                  indexBuffer:(uint64_t)indexBuffer
+            indexBufferLength:(NSUInteger)indexBufferLength
+               indirectBuffer:(uint64_t)indirectBuffer;
+
+/// Encodes a command that runs a range of commands from an indirect command buffer.
+///
+/// - Parameters:
+///   - indirectCommandBuffer: A ``MTLIndirectCommandBuffer`` instance containing other commands that the current command runs.
+///   - executionRange: A span of integers that represent the command entries in the buffer that the current command runs.
+///                     The number of commands needs to be less than or equal to 16,384.
+- (void)executeCommandsInBuffer:(id<MTLIndirectCommandBuffer>)indirectCommandBuffer
+                      withRange:(NSRange)executionRange;
+
+/// Encodes a command that runs an indirect range of commands from an indirect command buffer.
+///
+/// Use this method to indicate to Metal the span of indices in the command buffer to execute indirectly via an
+/// ``MTLBuffer`` instance you provide in the `indirectRangeBuffer` parameter. This allows you to calculate the
+/// span of commands Metal executes in the GPU timeline, enabling GPU-driven workflows.
+///
+/// Metal requires that the contents of this buffer match the layout of struct ``MTLIndirectCommandBufferExecutionRange``,
+/// which specifies a location and a length within the indirect command buffer. You are responsible for ensuring the
+/// address of this buffer has 4-byte alignment, and that the length member in the buffer contents doesn't exceed
+/// `16,384`.
+///
+/// Use an instance of ``MTLResidencySet`` to mark residency of the indirect buffer that the `indirectRangeBuffer`
+/// parameter references.
+///
+/// - Parameters:
+///   - indirectCommandBuffer: A ``MTLIndirectCommandBuffer`` instance that contains other commands
+///                            the current command runs.
+///   - indirectRangeBuffer: GPUAddress of a ``MTLBuffer`` instance with data that matches the layout of the
+///                          ``MTLIndirectCommandBufferExecutionRange`` structure. You are responsible for ensuring the
+///                          length property of the structure in the contents of this buffer is less than or equal to
+///                          16,384. Additionally, this address requires 4-byte alignment.
+- (void)executeCommandsInBuffer:(id<MTLIndirectCommandBuffer>)indirectCommandBuffer
+                 indirectBuffer:(uint64_t)indirectRangeBuffer;
+
+/// Configures the size of a threadgroup memory buffer for a threadgroup argument in the object shader function.
+///
+/// - Parameters:
+///   - length: The size of the threadgroup memory, in bytes.
+///   - index: An integer that corresponds to the index of the argument you annotate with attribute `[[threadgroup(index)]]`
+///   in the shader function.
+- (void)setObjectThreadgroupMemoryLength:(NSUInteger)length
+                                 atIndex:(NSUInteger)index;
+
+/// Encodes a draw command that invokes a mesh shader and, optionally, an object shader with a grid of threadgroups.
+///
+/// - Parameters:
+///   - threadgroupsPerGrid: A ``MTLSize`` instance that represents the number of threadgroups for each grid dimension.
+///   - threadsPerObjectThreadgroup: A ``MTLSize`` instance that represents the number of threads in an object
+///                                  shader threadgroup, if applicable.
+///   - threadsPerMeshThreadgroup: A ``MTLSize`` instance that represents the number of threads in a mesh shader
+///                                threadgroup.
+- (void)drawMeshThreadgroups:(MTLSize)threadgroupsPerGrid
+ threadsPerObjectThreadgroup:(MTLSize)threadsPerObjectThreadgroup
+   threadsPerMeshThreadgroup:(MTLSize)threadsPerMeshThreadgroup;
+
+/// Encodes a draw command that invokes a mesh shader and, optionally, an object shader with a grid of threads.
+///
+/// - Parameters:
+///   - threadsPerGrid: A ``MTLSize`` instance that represents the number of threads for each grid dimension.
+///                     For mesh shaders, the command rounds the value down to the nearest multiple of
+///                     `threadsPerMeshThreadgroup` for each dimension. For object shaders, the value doesn’t
+///                     need to be a multiple of `threadsPerObjectThreadgroup`.
+///   - threadsPerObjectThreadgroup: A ``MTLSize`` instance that represents the number of threads in an object
+///                                  shader threadgroup, if applicable.
+///   - threadsPerMeshThreadgroup: A ``MTLSize`` instance that represents the number of threads in a mesh shader
+///                                threadgroup.
+- (void)     drawMeshThreads:(MTLSize)threadsPerGrid
+ threadsPerObjectThreadgroup:(MTLSize)threadsPerObjectThreadgroup
+   threadsPerMeshThreadgroup:(MTLSize)threadsPerMeshThreadgroup;
+
+/// Encodes a draw command that invokes a mesh shader and, optionally, an object shader with indirect arguments.
+///
+/// This method enables you to determine the number of threadgroups per grid indirectly, in the GPU timeline.
+/// Metal expects this buffer's contents to match the layout of structure ``MTLDispatchThreadgroupsIndirectArguments``.
+/// You are responsible for ensuring the address of this buffer has 4-byte alignment.
+///
+/// Use an instance of ``MTLResidencySet`` to mark residency of the indirect buffer that the `indirectBuffer` parameter
+/// references.
+///
+/// - Parameters:
+///   - indirectBuffer: GPUAddress of an ``MTLBuffer`` instance with data that matches the layout of the
+///                     ``MTLDispatchThreadgroupsIndirectArguments`` structure. This address requires 4-byte alignment.
+///   - threadsPerObjectThreadgroup: A ``MTLSize`` instance that represents the number of threads in an object
+///                                  shader threadgroup, if applicable.
+///   - threadsPerMeshThreadgroup: A ``MTLSize`` instance that represents the number of threads in a mesh shader
+///                                threadgroup.
+- (void)drawMeshThreadgroupsWithIndirectBuffer:(uint64_t)indirectBuffer
+                   threadsPerObjectThreadgroup:(MTLSize)threadsPerObjectThreadgroup
+                     threadsPerMeshThreadgroup:(MTLSize)threadsPerMeshThreadgroup;
+
+/// Encodes a command that invokes a tile shader function from the encoder’s current tile render pipeline state.
+///
+/// - Parameter threadsPerTile: A ``MTLSize`` instance that represents the number of threads the render pass uses per tile.
+///                             Set the size’s ``MTLSize/width`` and ``MTLSize/height`` properties to values that are less
+///                             than or equal to ``tileWidth`` and ``tileHeight``, respectively. Some GPU families
+///                             only support square tile dispatches and require the same value for width and height.
+///                             Set ``MTLSize/depth`` to `1`.
+- (void)dispatchThreadsPerTile:(MTLSize)threadsPerTile;
+
+
+/// Configures the size of a threadgroup memory buffer for a threadgroup argument in the fragment and tile shader functions.
+///
+/// - Parameters:
+///   - length: The size of the threadgroup memory, in bytes.
+///   - offset: An integer that represents the location, in bytes, from the start of the threadgroup memory buffer
+///             at `index` where the threadgroup memory begins.
+///   - index: An integer that corresponds to the index of the argument you annotate with attribute `[[threadgroup(index)]]`
+///   in the shader function.
+- (void)setThreadgroupMemoryLength:(NSUInteger)length
+                            offset:(NSUInteger)offset
+                           atIndex:(NSUInteger)index;
+
+/// Associates an argument table with a set of render stages.
+///
+/// Metal takes a snapshot of the resources in the argument table when you encode a draw, dispatch, or execute command.
+/// This snapshot becomes available to the `stages` you specify to this method.
+///
+/// - Parameters:
+///   - argumentTable: ``MTL4ArgumentTable`` to set.
+///   - stages: A ``MTLRenderStages`` bitmask that specifies the shader stages with visibility over the table.
+- (void)setArgumentTable:(id<MTL4ArgumentTable>)argumentTable
+                atStages:(MTLRenderStages)stages;
+
+/// Configures the vertex winding order that determines which face of a geometric primitive is the front one.
+///
+/// - Parameter frontFacingWinding: A ``MTLWinding`` value that determines which side of a primitive the render pipeline
+///                                 interprets as front facing.
+- (void)setFrontFacingWinding:(MTLWinding)frontFacingWinding;
+
+/// Writes a GPU timestamp into the given ``MTL4CounterHeap`` at `index` after `stage` completes.
+///
+/// This command only guarantees all draws prior to this command are complete when Metal writes the timestamp into
+/// the counter heap you provide in the `counterHeap` parameter. The timestamp may also include subsequent operations.
+///
+/// If you call this method before any draw calls, Metal writes a timestamp before the stage you specify in the
+///  `stage` parameter begins.
+///
+/// - Parameters:
+///   - granularity: a ``MTL4TimestampGranularity`` hint.
+///   - stage: ``MTLRenderStages`` that need to complete before Metal writes the timestamp. This may also include later
+///                 stages that are related, for example ``MTLRenderStages/MTLRenderStageMesh`` may include
+///                 ``MTLRenderStages/MTLRenderStageVertex``.
+///   - counterHeap: ``MTL4CounterHeap`` into which Metal writes timestamps.
+///   - index: The index value into which Metal writes this timestamp.
+- (void)writeTimestampWithGranularity:(MTL4TimestampGranularity)granularity
+                           afterStage:(MTLRenderStages)stage
+                             intoHeap:(id<MTL4CounterHeap>)counterHeap
+                              atIndex:(NSUInteger)index;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+
+#endif //MTL4RenderCommandEncoder_h
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4RenderPass.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4RenderPass.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4RenderPass.h	1969-12-31 19:00:00
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4RenderPass.h	2025-05-28 02:49:12
@@ -0,0 +1,129 @@
+//
+//  MTL4RenderPass.h
+//  Metal
+//
+//  Copyright © 2024 Apple, Inc. All rights reserved.
+//
+
+#ifndef MTL4RenderPass_h
+#define MTL4RenderPass_h
+
+#import <Foundation/Foundation.h>
+
+#import <Metal/MTLDefines.h>
+#import <Metal/MTLRenderPass.h>
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// Describes a render pass.
+///
+/// You use render pass descriptors to create instances of ``MTL4RenderCommandEncoder`` and encode draw
+/// commands into instances of ``MTL4CommandBuffer``.
+///
+/// To create render command encoders, you typically call ``MTL4CommandBuffer/renderCommandEncoderWithDescriptor:``.
+/// The ``MTL4CommandBuffer/renderCommandEncoderWithDescriptor:options:`` variant of this method allows you to specify
+/// additional options to encode a render pass in parallel from multiple CPU cores by creating *suspending* and *resuming*
+/// render passes.
+MTL_EXPORT
+API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4RenderPassDescriptor : NSObject <NSCopying>
+
+/// Accesses the array of state information for render attachments that store color data.
+@property (readonly) MTLRenderPassColorAttachmentDescriptorArray *colorAttachments;
+
+/// Accesses state information for a render attachment that stores depth data.
+@property (copy, nonatomic, null_resettable) MTLRenderPassDepthAttachmentDescriptor *depthAttachment;
+
+/// Accesses state information for a render attachment that stores stencil data.
+@property (copy, nonatomic, null_resettable) MTLRenderPassStencilAttachmentDescriptor *stencilAttachment;
+
+/// Assigns the number of layers that all attachments this descriptor references have.
+@property (nonatomic) NSUInteger renderTargetArrayLength;
+
+/// Assigns the per-sample size, in bytes, of the largest explicit imageblock layout in the render pass.
+@property (nonatomic) NSUInteger imageblockSampleLength;
+
+/// Assigns the per-tile size, in bytes, of the persistent threadgroup memory allocation of this render pass.
+@property (nonatomic) NSUInteger threadgroupMemoryLength;
+
+/// Sets the width, in pixels, of the tiles into which Metal divides the render attachments for tile-based rendering.
+///
+/// When set to `0`, the default, Metal chooses a width that fits within local memory.
+///
+/// See also: <doc:tailor-your-apps-for-apple-gpus-and-tile-based-deferred-rendering.md>
+@property (nonatomic) NSUInteger tileWidth;
+
+/// Sets the height, in pixels, of the tiles in which Metal divides the render attachments for tile-based rendering.
+///
+/// When set to `0`, the default, Metal chooses a height that fits within memory.
+///
+/// See also: <doc:tailor-your-apps-for-apple-gpus-and-tile-based-deferred-rendering.md>
+@property (nonatomic) NSUInteger tileHeight;
+
+/// Sets the default raster sample count for the render pass when it references no attachments.
+@property (nonatomic) NSUInteger defaultRasterSampleCount;
+
+/// Sets the width, in pixels, to which Metal constrains the render target.
+///
+/// When this value is non-zero, you need to assign it to be smaller than or equal to the minimum width of all attachments.
+///
+/// The default value of this property is `0`.
+///
+@property (nonatomic) NSUInteger renderTargetWidth;
+
+/// Sets the height, in pixels, to which Metal constrains the render target.
+///
+/// When this value is non-zero, you need to assign it to be smaller than or equal to the minimum height of all attachments.
+///
+/// The default value of this property is `0`.
+///
+@property (nonatomic) NSUInteger renderTargetHeight;
+
+/// Assigns an optional variable rasterization rate map that Metal uses in the render pass.
+///
+/// Enabling variable rasterization rate allows Metal to decrease the rasterization rate, typically in unimportant
+/// regions of color attachments, to accelerate processing.
+///
+/// When set to `nil`, the default, Metal doesn't use variable rasterization rate.
+///
+@property (nullable, nonatomic, strong) id<MTLRasterizationRateMap> rasterizationRateMap;
+
+/// Configures a buffer into which Metal writes counts of fragments (pixels) passing the depth and stencil tests.
+@property (nullable, nonatomic, strong) id <MTLBuffer> visibilityResultBuffer;
+
+/// Determines if Metal accumulates visibility results between render encoders or resets them.
+@property (nonatomic) MTLVisibilityResultType visibilityResultType;
+
+/// Configures the custom sample positions to use in MSAA rendering.
+///
+/// - Parameters:
+///   - positions: Array of ``MTLSamplePosition`` instances.
+///   - count:     Number of ``MTLSamplePosition`` instances in the array. This value
+///                needs to be a valid sample count, or `0` to disable custom sample positions.
+- (void)setSamplePositions:(const MTLSamplePosition * _Nullable)positions
+                     count:(NSUInteger)count;
+
+/// Retrieves the previously-configured custom sample positions.
+///
+/// This method stores the app's last set custom sample positions into an output array. Metal only modifies the array
+/// when the `count` parameter consists of a length sufficient to store the number of sample positions.
+///
+/// - Parameters:
+///   - positions: The destination array where Metal stores ``MTLSamplePosition`` instances.
+///   - count:     Number of ``MTLSamplePosition`` instances in the array. This array
+///                needs to be large enough to store all sample positions.
+///
+/// - Returns: The number of previously-configured custom sample positions.
+- (NSUInteger)getSamplePositions:(MTLSamplePosition * _Nullable)positions
+                           count:(NSUInteger)count;
+
+/// Controls if the render pass supports color attachment mapping.
+@property (nonatomic) BOOL supportColorAttachmentMapping;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+
+#endif //MTL4RenderPass_h
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4RenderPipeline.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4RenderPipeline.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4RenderPipeline.h	1969-12-31 19:00:00
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4RenderPipeline.h	2025-05-28 02:01:30
@@ -0,0 +1,252 @@
+//
+//  MTL4RenderPipeline.h
+//  Metal
+//
+//  Copyright © 2024 Apple, Inc. All rights reserved.
+//
+
+#ifndef MTL4RenderPipeline_h
+#define MTL4RenderPipeline_h
+
+#import <Metal/MTLDefines.h>
+
+#import <Foundation/Foundation.h>
+#import <Metal/MTL4PipelineState.h>
+#import <Metal/MTLFunctionHandle.h>
+#import <Metal/MTLRenderPipeline.h>
+#import <Metal/MTLTypes.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class MTL4FunctionDescriptor;
+@class MTL4LinkedFunctions;
+@protocol MTL4BinaryFunction;
+@class MTL4StaticLinkingDescriptor;
+
+/// Enumerates possible behaviors of how a pipeline maps its logical outputs to its color attachments.
+API_AVAILABLE(macos(26.0), ios(26.0))
+typedef NS_ENUM(NSInteger, MTL4LogicalToPhysicalColorAttachmentMappingState) {
+    
+    /// Treats the logical color attachment descriptor array for render and tile render pipelines to match the physical one.
+    ///
+    /// This is the default behavior, which produces an identity mapping.
+    MTL4LogicalToPhysicalColorAttachmentMappingStateIdentity = 0,
+    
+    /// Deduces the color attachment mapping by inheriting it from the color attachment map of the current encoder.
+    ///
+    /// Use this setting to indicate Metal should inherit the mapping from the ``colorAttachmentMap`` property of the current
+    /// ``MTL4RenderCommandEncoder`` or ``MTLRenderCommandEncoder`` in use at draw time.
+    MTL4LogicalToPhysicalColorAttachmentMappingStateInherited = 1,
+};
+
+// Groups together properties of a color attachment for a ``MTL4RenderPipeline``.
+MTL_EXPORT
+API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4RenderPipelineColorAttachmentDescriptor : NSObject <NSCopying>
+
+/// Configures the pixel format.
+///
+/// This property defaults to ``MTLPixelFormatInvalid``.
+@property (nonatomic) MTLPixelFormat pixelFormat;
+
+/// Enables blending.
+///
+/// This property's default value is <doc://com.apple.documentation/documentation/swift/false>.
+@property (nonatomic) MTL4BlendState blendingState;
+
+/// Configures the source RGB blend factor.
+///
+/// This property defaults to ``MTLBlendFactorOne``.
+@property (nonatomic) MTLBlendFactor sourceRGBBlendFactor;
+
+/// Configures the destination RGB blend factor.
+///
+/// This property defaults to ``MTLBlendFactorZero``.
+@property (nonatomic) MTLBlendFactor destinationRGBBlendFactor;
+
+/// Configures the RGB blend operation.
+///
+/// This property defaults to ``MTLBlendOperationAdd``.
+@property (nonatomic) MTLBlendOperation rgbBlendOperation;
+
+/// Configures the source-alpha blend factor.
+///
+/// This property defaults to ``MTLBlendFactorOne``.
+@property (nonatomic) MTLBlendFactor sourceAlphaBlendFactor;
+
+/// Configures the destination-alpha blend factor.
+///
+/// This property defaults to ``MTLBlendFactorZero``.
+@property (nonatomic) MTLBlendFactor destinationAlphaBlendFactor;
+
+/// Configures the alpha blending operation.
+///
+/// This property defaults to ``MTLBlendOperationAdd``.
+@property (nonatomic) MTLBlendOperation alphaBlendOperation;
+
+/// Configures the color write mask.
+///
+/// This property defaults to ``MTLColorWriteMaskAll``.
+@property (nonatomic) MTLColorWriteMask writeMask;
+
+/// Resets this descriptor to its default state.
+- (void)reset;
+@end
+
+/// An array of color attachment descriptions for a render pipeline.
+MTL_EXPORT
+API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4RenderPipelineColorAttachmentDescriptorArray : NSObject <NSCopying>
+
+/// Accesses a color attachment at a specific index.
+///
+/// - Parameter attachmentIndex: Index of the attachment to access.
+- (MTL4RenderPipelineColorAttachmentDescriptor *)objectAtIndexedSubscript:(NSUInteger)attachmentIndex;
+
+/// Sets an attachment at an index.
+///
+/// This function offers 'copy' semantics.
+///
+/// You can safely set the color attachment at any legal index to nil. This has the effect of resetting that attachment
+/// descriptor's state to its default values.
+///
+/// - Parameters:
+///   - attachment: the descriptor of the attachment to set.
+///   - attachmentIndex: the index of the attachment within the array.
+- (void)setObject:(nullable MTL4RenderPipelineColorAttachmentDescriptor *)attachment atIndexedSubscript:(NSUInteger)attachmentIndex;
+
+/// Resets the elements of the descriptor array
+- (void)reset;
+@end
+
+/// Allows you to easily specify color attachment remapping from logical to physical indices.
+MTL_EXPORT
+API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTLLogicalToPhysicalColorAttachmentMap : NSObject<NSCopying>
+
+/// Maps a physical color attachment index to a logical index.
+///
+/// - Parameters:
+///   - physicalIndex: index of the color attachment's physical mapping.
+///   - logicalIndex: index of the color attachment's logical mapping.
+- (void)setPhysicalIndex:(NSUInteger)physicalIndex forLogicalIndex:(NSUInteger)logicalIndex;
+
+/// Queries the physical color attachment index corresponding to a logical index.
+- (NSUInteger)getPhysicalIndexForLogicalIndex:(NSUInteger)logicalIndex;
+
+- (void)reset;
+@end
+
+@protocol MTL4BinaryFunction;
+@class MTLVertexDescriptor;
+
+/// Allows you to specify additional binary functions to link to each stage of a render pipeline.
+MTL_EXPORT
+API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4RenderPipelineBinaryFunctionsDescriptor : NSObject<NSCopying>
+
+/// Provides an array of binary functions representing additional binary vertex shader functions.
+@property (nullable, nonatomic, copy) NSArray<id<MTL4BinaryFunction>>* vertexAdditionalBinaryFunctions;
+
+/// Provides an array of binary functions representing additional binary fragment shader functions.
+@property (nullable, nonatomic, copy) NSArray<id<MTL4BinaryFunction>>* fragmentAdditionalBinaryFunctions;
+
+/// Provides an array of binary functions representing additional binary tile shader functions.
+@property (nullable, nonatomic, copy) NSArray<id<MTL4BinaryFunction>>* tileAdditionalBinaryFunctions;
+
+/// Provides an array of binary functions representing additional binary object shader functions.
+@property (nullable, nonatomic, copy) NSArray<id<MTL4BinaryFunction>>* objectAdditionalBinaryFunctions;
+
+/// Provides an array of binary functions representing additional binary mesh shader functions.
+@property (nullable, nonatomic, copy) NSArray<id<MTL4BinaryFunction>>* meshAdditionalBinaryFunctions;
+
+/// Resets this descriptor to its default state.
+- (void)reset;
+
+@end
+
+/// Groups together properties to create a render pipeline state object.
+///
+/// Compared to ``MTLRenderPipelineDescriptor``, this interface doesn't offer a mechanism to hint to Metal mutability of
+/// vertex and fragment buffers. Additionally, using this descriptor, you don't specify binary archives.
+MTL_EXPORT
+API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4RenderPipelineDescriptor : MTL4PipelineDescriptor
+
+/// Assigns the shader function that this pipeline executes for each vertex.
+@property (nullable, readwrite, nonatomic, copy) MTL4FunctionDescriptor* vertexFunctionDescriptor;
+
+/// Assigns the shader function that this pipeline executes for each fragment.
+///
+/// When you don't specify a fragment function, you need to disable rasterization by setting property
+/// ``rasterizationEnabled`` to false.
+@property (nullable, readwrite, nonatomic, copy) MTL4FunctionDescriptor* fragmentFunctionDescriptor;
+
+/// Configures an optional vertex descriptor for the vertex input.
+///
+/// A vertex descriptor specifies the layout of your vertex data, allowing your vertex shaders to access the content
+/// in your vertex arrays via the `[[stage_in]]` attribute in Metal Shading Language.
+@property (nullable, nonatomic, copy) MTLVertexDescriptor* vertexDescriptor;
+
+/// Controls the number of samples this pipeline applies for each fragment.
+@property (readwrite, nonatomic) NSUInteger rasterSampleCount;
+
+/// Indicates whether to read and use the alpha channel fragment output of color attachments to compute a sample coverage mask.
+@property (readwrite, nonatomic) MTL4AlphaToCoverageState alphaToCoverageState;
+
+/// Indicates whether the pipeline forces alpha channel values of color attachments to the largest representable value.
+@property (readwrite, nonatomic) MTL4AlphaToOneState alphaToOneState;
+
+/// Determines whether the pipeline rasterizes primitives.
+///
+/// By default, this value is <doc://com.apple.documentation/documentation/swift/true>, specifying that this pipeline
+/// rasterizes primitives. Set this property to <doc://com.apple.documentation/documentation/swift/false> when you
+/// don't provide a fragment shader function via function ``fragmentFunctionDescriptor``.
+@property (readwrite, nonatomic, getter=isRasterizationEnabled) BOOL rasterizationEnabled;
+
+/// Determines the maximum value that can you can pass as the pipeline's amplification count.
+///
+/// This property controls the maximum count you pass to ``MTL4RenderCommandEncoder/setVertexAmplificationCount:viewMappings:``
+/// when using vertex amplification with this pipeline.
+@property (readwrite, nonatomic) NSUInteger maxVertexAmplificationCount;
+
+/// Accesses an array containing descriptions of the color attachments this pipeline writes to.
+@property (readonly) MTL4RenderPipelineColorAttachmentDescriptorArray* colorAttachments;
+
+/// Assigns type of primitive topology this pipeline renders.
+@property (readwrite, nonatomic) MTLPrimitiveTopologyClass inputPrimitiveTopology;
+
+/// Provides static linking information for the vertex stage of the render pipeline.
+///
+/// Use this property to link extra shader functions to the vertex stage of the render pipeline.
+@property (null_resettable, copy, nonatomic) MTL4StaticLinkingDescriptor *vertexStaticLinkingDescriptor;
+
+/// Provides static linking information for the fragment stage of the render pipeline.
+///
+/// Use this property to link extra shader functions to the fragment stage of the render pipeline.
+@property (null_resettable, copy, nonatomic) MTL4StaticLinkingDescriptor *fragmentStaticLinkingDescriptor;
+
+/// Indicates whether you can use the render pipeline to create new pipelines by
+/// adding binary functions to the vertex shader function’s callable functions list.
+@property (readwrite, nonatomic) BOOL supportVertexBinaryLinking;
+
+/// Indicates whether you can use the pipeline to create new pipelines by
+/// adding binary functions to the fragment shader function’s callable functions list.
+@property (readwrite, nonatomic) BOOL supportFragmentBinaryLinking;
+
+/// Configures a logical-to-physical rendering remap state.
+///
+/// Use this property to assign how a ``MTL4RenderCommandEncoder`` instance maps the output of your fragment shader to
+/// physical color attachments.
+@property (readwrite, nonatomic) MTL4LogicalToPhysicalColorAttachmentMappingState colorAttachmentMappingState;
+
+/// Indicates whether the pipeline supports indirect command buffers.
+@property (readwrite, nonatomic) MTL4IndirectCommandBufferSupportState supportIndirectCommandBuffers;
+
+/// Resets this descriptor to its default state.
+- (void)reset;
+
+@end
+
+NS_ASSUME_NONNULL_END
+#endif // MTL4RenderPipeline_h
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4SpecializedFunctionDescriptor.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4SpecializedFunctionDescriptor.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4SpecializedFunctionDescriptor.h	1969-12-31 19:00:00
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4SpecializedFunctionDescriptor.h	2025-05-28 02:54:17
@@ -0,0 +1,38 @@
+//
+//  MTL4SpecializedFunction.h
+//  Metal
+//
+//  Copyright © 2024 Apple, Inc. All rights reserved.
+//
+
+#ifndef MTL4SpecializedFunctionDescriptor_h
+#define MTL4SpecializedFunctionDescriptor_h
+
+#import <Metal/MTLDefines.h>
+
+#import <Metal/MTL4FunctionDescriptor.h>
+#import <Metal/MTLFunctionConstantValues.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// Groups together properties to configure and create a specialized function by passing it to a factory method.
+///
+/// You can pass an instance of this class to any methods that accept a ``MTL4FunctionDescriptor`` parameter to
+/// provide extra configuration, such as function constants or a name.
+MTL_EXPORT
+API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4SpecializedFunctionDescriptor : MTL4FunctionDescriptor
+
+/// Provides a descriptor that corresponds to a base function that the specialization applies to.
+@property (nullable, copy, readwrite, nonatomic) MTL4FunctionDescriptor* functionDescriptor;
+
+/// Assigns an optional name to the specialized function.
+@property (nullable, copy, atomic) NSString* specializedName;
+
+/// Configures optional function constant values to associate with the function.
+@property (nullable, copy, nonatomic) MTLFunctionConstantValues* constantValues;
+@end
+
+NS_ASSUME_NONNULL_END
+
+#endif // MTL4SpecializedFunction_h
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4StitchedFunctionDescriptor.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4StitchedFunctionDescriptor.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4StitchedFunctionDescriptor.h	1969-12-31 19:00:00
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4StitchedFunctionDescriptor.h	2025-05-28 02:54:19
@@ -0,0 +1,33 @@
+//
+//  MTL4StitchedFunctionDescriptor.h
+//  Metal
+//
+//  Copyright © 2024 Apple, Inc. All rights reserved.
+//
+
+#ifndef MTL4StitchedFunctionDescriptor_h
+#define MTL4StitchedFunctionDescriptor_h
+
+#import <Metal/MTLDefines.h>
+
+#import <Metal/MTL4FunctionDescriptor.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class MTLFunctionStitchingGraph;
+
+/// Groups together properties that describe a shader function suitable for stitching.
+MTL_EXPORT
+API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4StitchedFunctionDescriptor : MTL4FunctionDescriptor
+
+/// Sets the graph representing how to stitch functions together.
+@property (nullable, copy, nonatomic) MTLFunctionStitchingGraph* functionGraph;
+
+/// Configures an array of function descriptors with references to functions that contribute to the stitching process.
+@property (nullable, copy, nonatomic) NSArray<MTL4FunctionDescriptor*>* functionDescriptors;
+@end
+
+NS_ASSUME_NONNULL_END
+
+#endif // MTL4StitchedFunctionDescriptor_h
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4TileRenderPipeline.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4TileRenderPipeline.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4TileRenderPipeline.h	1969-12-31 19:00:00
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTL4TileRenderPipeline.h	2025-05-28 02:54:19
@@ -0,0 +1,65 @@
+//
+//  MTL4TileRenderPipeline.h
+//  Metal
+//
+//  Copyright © 2024 Apple, Inc. All rights reserved.
+//
+
+#ifndef MTL4TileRenderPipeline_h
+#define MTL4TileRenderPipeline_h
+
+#import <Metal/MTLDefines.h>
+
+#import <Foundation/Foundation.h>
+#import <Metal/MTL4RenderPipeline.h>
+#import <Metal/MTLFunctionHandle.h>
+#import <Metal/MTLRenderPipeline.h>
+#import <Metal/MTLTypes.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// Groups together properties you use to create a tile render pipeline state object.
+MTL_EXPORT
+API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTL4TileRenderPipelineDescriptor : MTL4PipelineDescriptor
+/// Configures the tile function that the render pipeline executes for each tile in the tile shader stage.
+@property (nullable, readwrite, nonatomic, copy) MTL4FunctionDescriptor* tileFunctionDescriptor;
+
+/// Configures the number of samples per pixel used for multisampling.
+@property (readwrite, nonatomic) NSUInteger rasterSampleCount;
+
+/// Access an array of descriptors that configure the properties of each color attachment in the tile render
+/// pipeline.
+@property (readonly) MTLTileRenderPipelineColorAttachmentDescriptorArray* colorAttachments;
+
+/// Indicating whether the size of the threadgroup matches the size of a tile in the render pipeline.
+@property (readwrite, nonatomic) BOOL threadgroupSizeMatchesTileSize;
+
+/// Sets the maximum number of threads that the GPU can execute simultaneously within a single threadgroup in
+/// the tile render pipeline.
+@property (readwrite, nonatomic) NSUInteger maxTotalThreadsPerThreadgroup;
+
+/// Sets the required number of threads per threadgroup for tile dispatches.
+///
+/// This value is typically optional, except in the cases where the tile function that ``tileFunctionDescriptor``
+/// references uses `CooperativeTensors`. In this case, you need to provide a non-zero value to this property.
+///
+/// Additionally, when you set this value, the `threadsPerTile` argument of any tile dispatch needs to match it.
+///
+/// Setting this value to a size of 0 in every dimension disables this property.
+@property(readwrite, nonatomic) MTLSize requiredThreadsPerThreadgroup;
+
+/// Configures an object that contains information about functions to link to the tile render pipeline
+/// when Metal builds it.
+@property (null_resettable, copy, nonatomic) MTL4StaticLinkingDescriptor* staticLinkingDescriptor;
+
+/// Indicates whether the pipeline supports linking binary functions.
+@property (readwrite, nonatomic) BOOL supportBinaryLinking;
+
+/// Resets the descriptor to the default state.
+- (void)reset;
+
+@end
+
+NS_ASSUME_NONNULL_END
+#endif // MTL4TileRenderPipeline_h
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLAccelerationStructure.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLAccelerationStructure.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLAccelerationStructure.h	2025-04-19 05:10:46
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLAccelerationStructure.h	2025-05-28 04:53:28
@@ -17,6 +17,27 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
+/*!
+ @enum MTLAccelerationStructureRefitOptions
+ @abstract Controls the acceleration structure refit operation
+ */
+typedef NS_OPTIONS(NSUInteger, MTLAccelerationStructureRefitOptions) {
+    /**
+     * @brief Refitting shall result in updated vertex data from the provided geometry descriptor.
+     * If not set, vertex buffers shall be ignored on the geometry descriptor and vertex data previously
+     * encoded shall be copied.
+     */
+    MTLAccelerationStructureRefitOptionVertexData = (1 << 0),
+
+    /**
+     * @brief Refitting shall result in updated per primitive data from the provided geometry descriptor.
+     * If not set, per primitive data buffers shall be ignored on the geometry descriptor and per primitive
+     * data previously encoded shall be copied.
+     */
+    MTLAccelerationStructureRefitOptionPerPrimitiveData = (1 << 1),
+} API_AVAILABLE(macos(13.0), ios(16.0));
+
+
 @protocol MTLBuffer;
 @protocol MTLAccelerationStructure;
 
@@ -43,6 +64,17 @@
      * reduced ray tracing performance.
      */
     MTLAccelerationStructureUsageExtendedLimits API_AVAILABLE(macos(12.0), ios(15.0)) = (1 << 2),
+
+    /**
+     * @brief Prioritize intersection performance over acceleration structure build time
+     */
+    MTLAccelerationStructureUsagePreferFastIntersection API_AVAILABLE(macos(26.0), ios(26.0)) = (1 << 4),
+
+    /**
+     * @brief Minimize the size of the acceleration structure in memory, potentially at
+     * the cost of increased build time or reduced intersection performance.
+     */
+    MTLAccelerationStructureUsageMinimizeMemory API_AVAILABLE(macos(26.0), ios(26.0)) = (1 << 5),
 } API_AVAILABLE(macos(11.0), ios(14.0));
 
 typedef NS_OPTIONS(uint32_t, MTLAccelerationStructureInstanceOptions) {
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLAccelerationStructureCommandEncoder.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLAccelerationStructureCommandEncoder.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLAccelerationStructureCommandEncoder.h	2025-04-19 05:10:46
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLAccelerationStructureCommandEncoder.h	2025-05-28 02:48:23
@@ -18,27 +18,6 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
-/*!
- @enum MTLAccelerationStructureRefitOptions
- @abstract Controls the acceleration structure refit operation
- */
-typedef NS_OPTIONS(NSUInteger, MTLAccelerationStructureRefitOptions) {
-    /**
-     * @brief Refitting shall result in updated vertex data from the provided geometry descriptor.
-     * If not set, vertex buffers shall be ignored on the geometry descriptor and vertex data previously
-     * encoded shall be copied.
-     */
-    MTLAccelerationStructureRefitOptionVertexData = (1 << 0),
-
-    /**
-     * @brief Refitting shall result in updated per primitive data from the provided geometry descriptor.
-     * If not set, per primitive data buffers shall be ignored on the geometry descriptor and per primitive
-     * data previously encoded shall be copied.
-     */
-    MTLAccelerationStructureRefitOptionPerPrimitiveData = (1 << 1),
-} API_AVAILABLE(macos(13.0), ios(16.0));
-
-
 API_AVAILABLE(macos(11.0), ios(14.0))
 @protocol MTLAccelerationStructureCommandEncoder <MTLCommandEncoder>
 
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLAccelerationStructureTypes.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLAccelerationStructureTypes.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLAccelerationStructureTypes.h	2025-04-19 04:23:51
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLAccelerationStructureTypes.h	2025-05-28 04:53:26
@@ -5,6 +5,7 @@
 typedef metal::packed_float4 MTLPackedFloatQuaternion;
 #else
 #include <math.h>
+#include <stdint.h>
 #import <Metal/MTLDefines.h>
 
 typedef struct _MTLPackedFloat3 {
@@ -213,4 +214,58 @@
      * the composition of object translation and the inverse of the pivot translation.
      */
     MTLPackedFloat3 translation;
-} MTLComponentTransform;
\ No newline at end of file
+} MTLComponentTransform;
+
+/**
+ * @brief A struct representing a range of a Metal buffer. The offset into the buffer is included in the address.
+ * The length is generally optional, which a value of (uint64_t)-1 representing the range from the given address to
+ * the end of the buffer. However, providing the length can enable more accurate API validation, especially when
+ * sub-allocating ranges of a buffer.
+ */
+typedef struct MTL4BufferRange {
+    /**
+     * @brief Buffer address returned by the gpuAddress property of an MTLBuffer plus any offset into the buffer
+     */
+    uint64_t bufferAddress;
+
+    /**
+     * @brief Length of the region which begins at the given address. If the length is not known, a value of
+     * (uint64_t)-1 represents the range from the given address to the end of the buffer.
+     */
+    uint64_t length;
+
+#ifdef __cplusplus
+    MTL4BufferRange()
+        : bufferAddress(0),
+          length(0)
+    {
+    }
+
+    MTL4BufferRange(uint64_t bufferAddress)
+        : bufferAddress(bufferAddress),
+          length((uint64_t)-1)
+    {
+    }
+
+    MTL4BufferRange(uint64_t bufferAddress, uint64_t length)
+        : bufferAddress(bufferAddress),
+          length(length)
+    {
+    }
+#endif
+} MTL4BufferRange;
+
+#ifndef __METAL_VERSION__
+/**
+ * @brief Create a buffer range from a buffer's GPU address (given by the gpuAddress property) and length. A length of
+ * (uint64_t)-1 represents the the range from the given address to the end of the buffer.
+ */
+MTL_INLINE MTL4BufferRange MTL4BufferRangeMake(uint64_t bufferAddress, uint64_t length) {
+    MTL4BufferRange range;
+
+    range.bufferAddress = bufferAddress;
+    range.length = length;
+    
+    return range;
+}
+#endif
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLAllocation.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLAllocation.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLAllocation.h	2025-04-19 05:10:46
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLAllocation.h	2025-05-28 02:54:18
@@ -9,6 +9,12 @@
 #import <Metal/MTLDefines.h>
 
 
+/// Base class for Metal allocations.
+///
+/// This protocol provides a common interface for adding Metal resources to ``MTLResidencySet`` instances. Call
+/// ``MTLResidencySet/addAllocation:`` to add a Metal resource allocation to a residency set.
+///
+/// <doc:simplifying-gpu-resource-management-with-residency-sets.md>
 API_AVAILABLE(macos(15.0), ios(18.0))
 @protocol MTLAllocation <NSObject>
 @property (readonly) NSUInteger allocatedSize API_AVAILABLE(macos(15.0), ios(18.0));
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLArgument.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLArgument.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLArgument.h	2025-04-19 02:30:02
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLArgument.h	2025-05-28 02:54:18
@@ -9,126 +9,15 @@
 #import <Metal/MTLDefines.h>
 #import <Metal/MTLTexture.h>
 #import <Metal/MTLCommandEncoder.h>
+#import <Metal/MTLDataType.h>
+#import <Metal/MTLTensor.h>
 
 
 NS_ASSUME_NONNULL_BEGIN
-typedef NS_ENUM(NSUInteger, MTLDataType) {
 
-    MTLDataTypeNone = 0,
-
-    MTLDataTypeStruct = 1,
-    MTLDataTypeArray  = 2,
-
-    MTLDataTypeFloat  = 3,
-    MTLDataTypeFloat2 = 4,
-    MTLDataTypeFloat3 = 5,
-    MTLDataTypeFloat4 = 6,
-
-    MTLDataTypeFloat2x2 = 7,
-    MTLDataTypeFloat2x3 = 8,
-    MTLDataTypeFloat2x4 = 9,
-
-    MTLDataTypeFloat3x2 = 10,
-    MTLDataTypeFloat3x3 = 11,
-    MTLDataTypeFloat3x4 = 12,
-
-    MTLDataTypeFloat4x2 = 13,
-    MTLDataTypeFloat4x3 = 14,
-    MTLDataTypeFloat4x4 = 15,
-
-    MTLDataTypeHalf  = 16,
-    MTLDataTypeHalf2 = 17,
-    MTLDataTypeHalf3 = 18,
-    MTLDataTypeHalf4 = 19,
-
-    MTLDataTypeHalf2x2 = 20,
-    MTLDataTypeHalf2x3 = 21,
-    MTLDataTypeHalf2x4 = 22,
-
-    MTLDataTypeHalf3x2 = 23,
-    MTLDataTypeHalf3x3 = 24,
-    MTLDataTypeHalf3x4 = 25,
-
-    MTLDataTypeHalf4x2 = 26,
-    MTLDataTypeHalf4x3 = 27,
-    MTLDataTypeHalf4x4 = 28,
-
-    MTLDataTypeInt  = 29,
-    MTLDataTypeInt2 = 30,
-    MTLDataTypeInt3 = 31,
-    MTLDataTypeInt4 = 32,
-
-    MTLDataTypeUInt  = 33,
-    MTLDataTypeUInt2 = 34,
-    MTLDataTypeUInt3 = 35,
-    MTLDataTypeUInt4 = 36,
-
-    MTLDataTypeShort  = 37,
-    MTLDataTypeShort2 = 38,
-    MTLDataTypeShort3 = 39,
-    MTLDataTypeShort4 = 40,
-
-    MTLDataTypeUShort = 41,
-    MTLDataTypeUShort2 = 42,
-    MTLDataTypeUShort3 = 43,
-    MTLDataTypeUShort4 = 44,
-
-    MTLDataTypeChar  = 45,
-    MTLDataTypeChar2 = 46,
-    MTLDataTypeChar3 = 47,
-    MTLDataTypeChar4 = 48,
-
-    MTLDataTypeUChar  = 49,
-    MTLDataTypeUChar2 = 50,
-    MTLDataTypeUChar3 = 51,
-    MTLDataTypeUChar4 = 52,
-
-    MTLDataTypeBool  = 53,
-    MTLDataTypeBool2 = 54,
-    MTLDataTypeBool3 = 55,
-    MTLDataTypeBool4 = 56,
-
-    MTLDataTypeTexture API_AVAILABLE(macos(10.13), ios(11.0)) = 58,
-    MTLDataTypeSampler API_AVAILABLE(macos(10.13), ios(11.0)) = 59,
-    MTLDataTypePointer API_AVAILABLE(macos(10.13), ios(11.0)) = 60,
-
-    MTLDataTypeR8Unorm         API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(11.0), tvos(14.5)) = 62,
-    MTLDataTypeR8Snorm         API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(11.0), tvos(14.5)) = 63,
-    MTLDataTypeR16Unorm        API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(11.0), tvos(14.5)) = 64,
-    MTLDataTypeR16Snorm        API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(11.0), tvos(14.5)) = 65,
-    MTLDataTypeRG8Unorm        API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(11.0), tvos(14.5)) = 66,
-    MTLDataTypeRG8Snorm        API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(11.0), tvos(14.5)) = 67,
-    MTLDataTypeRG16Unorm       API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(11.0), tvos(14.5)) = 68,
-    MTLDataTypeRG16Snorm       API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(11.0), tvos(14.5)) = 69,
-    MTLDataTypeRGBA8Unorm      API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(11.0), tvos(14.5)) = 70,
-    MTLDataTypeRGBA8Unorm_sRGB API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(11.0), tvos(14.5)) = 71,
-    MTLDataTypeRGBA8Snorm      API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(11.0), tvos(14.5)) = 72,
-    MTLDataTypeRGBA16Unorm     API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(11.0), tvos(14.5)) = 73,
-    MTLDataTypeRGBA16Snorm     API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(11.0), tvos(14.5)) = 74,
-    MTLDataTypeRGB10A2Unorm    API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(11.0), tvos(14.5)) = 75,
-    MTLDataTypeRG11B10Float    API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(11.0), tvos(14.5)) = 76,
-    MTLDataTypeRGB9E5Float     API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(11.0), tvos(14.5)) = 77,
-    MTLDataTypeRenderPipeline  API_AVAILABLE(macos(10.14), ios(13.0)) = 78,
-    MTLDataTypeComputePipeline API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(13.0)) = 79,
-    MTLDataTypeIndirectCommandBuffer   API_AVAILABLE(macos(10.14), ios(12.0)) = 80,
-    MTLDataTypeLong  API_AVAILABLE(macos(12.0), ios(14.0)) = 81,
-    MTLDataTypeLong2 API_AVAILABLE(macos(12.0), ios(14.0)) = 82,
-    MTLDataTypeLong3 API_AVAILABLE(macos(12.0), ios(14.0)) = 83,
-    MTLDataTypeLong4 API_AVAILABLE(macos(12.0), ios(14.0)) = 84,
-
-    MTLDataTypeULong  API_AVAILABLE(macos(12.0), ios(14.0)) = 85,
-    MTLDataTypeULong2 API_AVAILABLE(macos(12.0), ios(14.0)) = 86,
-    MTLDataTypeULong3 API_AVAILABLE(macos(12.0), ios(14.0)) = 87,
-    MTLDataTypeULong4 API_AVAILABLE(macos(12.0), ios(14.0)) = 88,
-    MTLDataTypeVisibleFunctionTable API_AVAILABLE(macos(11.0), ios(14.0)) = 115,
-    MTLDataTypeIntersectionFunctionTable API_AVAILABLE(macos(11.0), ios(14.0)) = 116,
-    MTLDataTypePrimitiveAccelerationStructure API_AVAILABLE(macos(11.0), ios(14.0)) = 117,
-    MTLDataTypeInstanceAccelerationStructure API_AVAILABLE(macos(11.0), ios(14.0)) = 118,
-    MTLDataTypeBFloat  API_AVAILABLE(macos(14.0), ios(17.0)) = 121,
-    MTLDataTypeBFloat2 API_AVAILABLE(macos(14.0), ios(17.0)) = 122,
-    MTLDataTypeBFloat3 API_AVAILABLE(macos(14.0), ios(17.0)) = 123,
-    MTLDataTypeBFloat4 API_AVAILABLE(macos(14.0), ios(17.0)) = 124,
-    
+typedef NS_ENUM(NSUInteger, MTLIndexType) {
+    MTLIndexTypeUInt16 = 0,
+    MTLIndexTypeUInt32 = 1,
 } API_AVAILABLE(macos(10.11), ios(8.0));
 
 @class MTLArgument;
@@ -169,6 +58,9 @@
  
  @constant MTLBindingTypeObjectPayload
  This binding represents an object payload.
+ 
+ @constant MTLBindingTypeTensor
+ This binding represents a tensor object.
 */
 typedef NS_ENUM(NSInteger, MTLBindingType) {
     MTLBindingTypeBuffer = 0,
@@ -182,6 +74,7 @@
     MTLBindingTypeInstanceAccelerationStructure = 26,
     MTLBindingTypeIntersectionFunctionTable = 27,
     MTLBindingTypeObjectPayload = 34,
+    MTLBindingTypeTensor API_AVAILABLE(macos(26.0), ios(26.0)) = 37,
 } API_AVAILABLE(macos(11.0), ios(14.0));
 
 /*!
@@ -232,6 +125,7 @@
 @class MTLArrayType;
 @class MTLTextureReferenceType;
 @class MTLPointerType;
+@class MTLTensorReferenceType;
 
 MTL_EXPORT API_AVAILABLE(macos(10.13), ios(11.0))
 @interface MTLType : NSObject
@@ -251,6 +145,10 @@
 
 - (nullable MTLTextureReferenceType *)textureReferenceType  API_AVAILABLE(macos(10.13), ios(11.0));
 - (nullable MTLPointerType *)pointerType  API_AVAILABLE(macos(10.13), ios(11.0));
+/// Provides a description of the underlying tensor type when this struct member holds a tensor.
+///
+/// - Returns: A description of the tensor type that this struct member holds, or `nil` if this struct member doesn't hold a tensor.
+- (nullable MTLTensorReferenceType *)tensorReferenceType API_AVAILABLE(macos(26.0), ios(26.0));
 
 @property (readonly) NSUInteger argumentIndex API_AVAILABLE(macos(10.13), ios(11.0));
 
@@ -278,6 +176,10 @@
 - (nullable MTLArrayType *)elementArrayType;
 - (nullable MTLTextureReferenceType *)elementTextureReferenceType  API_AVAILABLE(macos(10.13), ios(11.0));
 - (nullable MTLPointerType *)elementPointerType  API_AVAILABLE(macos(10.13), ios(11.0));
+/// Provides a description of the underlying tensor type when this array holds tensors as its elements.
+///
+/// - Returns: A description of the tensor type that this array holds, or `nil` if this struct member doesn't hold a tensor.
+- (nullable MTLTensorReferenceType *)elementTensorReferenceType API_AVAILABLE(macos(26.0), ios(26.0));
 
 
 @end
@@ -307,10 +209,30 @@
 
 @end
 
+/// An object that represents a tensor in the shading language in a struct or array.
+MTL_EXPORT API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTLTensorReferenceType : MTLType
+
+/// The underlying data format of the tensor.
+@property (readonly) MTLTensorDataType tensorDataType;
+
+/// The data format you use for indexing into the tensor.
+@property (readonly) MTLDataType indexType;
+
+/// The array of sizes, in elements, one for each dimension of this tensor.
+///
+/// Because shader-bound tensors have dynamic extents, the ``MTLTensorExtents/rank`` of `dimensions` corresponds to the rank the shader function specifies, and ``MTLTensorExtents/extentsAtDimensionIndex:`` always returns a value of -1.
+@property (nullable, readonly) MTLTensorExtents *dimensions;
+
+/// A value that represents the read/write permissions of the tensor.
+@property (readonly) MTLBindingAccess access;
+
+@end
+
 /*!
  MTLArgument
 */
-MTL_EXPORT
+MTL_EXPORT NS_SWIFT_SENDABLE
 API_DEPRECATED_WITH_REPLACEMENT("MTLBinding", macos(10.11, 13.0), ios(8.0, 16.0))
 @interface MTLArgument : NSObject
 
@@ -340,7 +262,7 @@
 
 @end
 
-MTL_EXPORT API_AVAILABLE(macos(13.0), ios(16.0))
+MTL_EXPORT API_AVAILABLE(macos(13.0), ios(16.0)) NS_SWIFT_SENDABLE
 @protocol MTLBinding<NSObject>
 @property (readonly) NSString *name;
 @property (readonly) MTLBindingType type;
@@ -378,6 +300,24 @@
 @protocol MTLObjectPayloadBinding<MTLBinding>
 @property (readonly) NSUInteger      objectPayloadAlignment;        // min alignment of starting offset in the buffer
 @property (readonly) NSUInteger      objectPayloadDataSize;         // sizeof(T) for T *argName
+@end
+
+/// An object that represents a tensor bound to a graphics or compute function or a machine learning function.
+MTL_EXPORT API_AVAILABLE(macos(26.0), ios(26.0))
+@protocol MTLTensorBinding<MTLBinding>
+
+/// The underlying data format of this tensor.
+@property (readonly) MTLTensorDataType tensorDataType;
+
+/// The data format you use for indexing into the tensor.
+@property (readonly) MTLDataType indexType;
+
+/// The array of sizes, in elements, one for each dimension of this tensor.
+///
+/// Because shader-bound tensors have dynamic extents, if this tensor is shader bound, the ``MTLTensorExtents/rank`` of `dimensions` corresponds to the rank the shader function specifies, and ``MTLTensorExtents/extentsAtDimensionIndex:`` always returns a value of -1.
+/// In the case of functions used with machine learning pipelines, `dimensions` corresponds to the default shape, if you provide one. Otherwise, it's `nil` in the case of an undefined shape.
+@property (nullable, readonly) MTLTensorExtents *dimensions;
+
 @end
 
 NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLBlitCommandEncoder.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLBlitCommandEncoder.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLBlitCommandEncoder.h	2025-04-19 04:47:50
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLBlitCommandEncoder.h	2025-05-28 02:01:29
@@ -219,7 +219,7 @@
 
 /*!
  @method optimizeIndirectCommandBuffer:withRange:
- @abstract Optimizes a subset of the texture data to ensure the best possible performance when accessing content on the CPU at the expense of GPU-access performance.
+ @abstract Encodes a command that can improve the performance of a range of commands within an indirect command buffer.
  */
 - (void)optimizeIndirectCommandBuffer:(id <MTLIndirectCommandBuffer>)indirectCommandBuffer withRange:(NSRange)range API_AVAILABLE(macos(10.14), ios(12.0));
 
@@ -260,5 +260,23 @@
                inRange:(NSRange)range
      destinationBuffer:(id<MTLBuffer>)destinationBuffer
      destinationOffset:(NSUInteger)destinationOffset API_AVAILABLE(macos(10.15), ios(14.0));
+
+/// Encodes a command to copy data from a slice of one tensor into a slice of another tensor.
+///
+/// This command applies reshapes if `sourceTensor` and `destinationTensor` are not aliasable.
+/// - Parameters:
+///    - sourceTensor: A tensor instance that this command copies data from.
+///    - sourceOrigin: An array of offsets, in elements, to the first element of the slice of `sourceTensor` that this command copies data from.
+///    - sourceDimensions: An array of sizes, in elements, of the slice `sourceTensor` that this command copies data from.
+///    - destinationTensor: A tensor instance that this command copies data to.
+///    - destinationOrigin: An array of offsets, in elements, to the first element of the slice of `destinationTensor` that this command copies data to.
+///    - destinationDimensions: An array of sizes, in elements, of the slice of `destinationTensor` that this command copies data to.
+- (void)copyFromTensor:(id<MTLTensor>)sourceTensor
+          sourceOrigin:(MTLTensorExtents *)sourceOrigin
+      sourceDimensions:(MTLTensorExtents *)sourceDimensions
+              toTensor:(id<MTLTensor>)destinationTensor
+     destinationOrigin:(MTLTensorExtents *)destinationOrigin
+ destinationDimensions:(MTLTensorExtents *)destinationDimensions API_AVAILABLE(macos(26.0), ios(26.0));
+
 @end
 NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLBuffer.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLBuffer.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLBuffer.h	2025-04-19 05:10:47
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLBuffer.h	2025-05-28 02:54:19
@@ -9,6 +9,7 @@
 #import <Metal/MTLDefines.h>
 #import <Metal/MTLPixelFormat.h>
 #import <Metal/MTLResource.h>
+#import <Metal/MTLTensor.h>
 
 NS_ASSUME_NONNULL_BEGIN
 
@@ -63,6 +64,23 @@
  */
 - (nullable id <MTLTexture>)newTextureWithDescriptor:(MTLTextureDescriptor*)descriptor offset:(NSUInteger)offset bytesPerRow:(NSUInteger)bytesPerRow API_AVAILABLE(macos(10.13), ios(8.0));
 
+/// Creates a tensor that shares storage with this buffer.
+///
+/// - Parameters:
+///   - descriptor: A description of the properties for the new tensor.
+///   - offset: Offset into the buffer at which the data of the tensor begins.
+///   - error: If an error occurs during creation, Metal populates this parameter to provide you information about it.
+///
+/// If the descriptor specifies `MTLTensorUsageMachineLearning` usage, you need to observe the following restrictions:
+/// * pass in `0` for the `offset` parameter
+/// * set the element stride the descriptor to `1`
+/// * ensure that number of bytes per row is a multiple of `64`
+/// * for dimensions greater than `2`, make sure `strides[dim] = strides[dim -1] * dimensions[dim - 1]`
+///
+- (nullable id <MTLTensor>)newTensorWithDescriptor:(MTLTensorDescriptor *)descriptor
+                                            offset:(NSUInteger)offset
+                                             error:(__autoreleasing NSError * _Nullable * _Nullable)error API_AVAILABLE(macos(26.0), ios(26.0));
+
 /*!
  @method addDebugMarker:range:
  @abstract Adds a marker to a specific range in the buffer.
@@ -85,6 +103,13 @@
  @abstract Represents the GPU virtual address of a buffer resource
  */
 @property (readonly) uint64_t gpuAddress API_AVAILABLE(macos(13.0), ios(16.0));
+
+/*!
+ @property sparseBufferTier
+ @abstract Query support tier for sparse buffers.
+ */
+@property (readonly) MTLBufferSparseTier sparseBufferTier API_AVAILABLE(macos(26.0), ios(26.0));
+
 
 @end
 NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCaptureManager.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCaptureManager.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCaptureManager.h	2025-04-19 02:58:02
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCaptureManager.h	2025-05-28 02:01:29
@@ -8,6 +8,7 @@
 #import <Foundation/Foundation.h>
 #import <Metal/MTLDefines.h>
 
+#import <Metal/MTL4CommandQueue.h>
 
 NS_ASSUME_NONNULL_BEGIN
 
@@ -80,6 +81,8 @@
 - (id<MTLCaptureScope>)newCaptureScopeWithDevice:(id<MTLDevice>)device;
 // Creates a new capture scope for the given command queue
 - (id<MTLCaptureScope>)newCaptureScopeWithCommandQueue:(id<MTLCommandQueue>)commandQueue;
+// Creates a new capture scope for the given Metal 4 command queue
+- (id<MTLCaptureScope>)newCaptureScopeWithMTL4CommandQueue:(id<MTL4CommandQueue>)commandQueue;
 
 // Checks if a given capture destination is supported.
 - (BOOL)supportsDestination:(MTLCaptureDestination)destination API_AVAILABLE(macos(10.15), ios(13.0));
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCaptureScope.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCaptureScope.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCaptureScope.h	2025-04-19 05:10:46
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCaptureScope.h	2025-05-28 02:54:18
@@ -14,6 +14,8 @@
 @protocol MTLDevice;
 @protocol MTLCommandQueue;
 
+@protocol MTL4CommandQueue;
+
 API_AVAILABLE(macos(10.13), ios(11.0))
 @protocol MTLCaptureScope <NSObject>
 
@@ -34,6 +36,10 @@
 /** If set, this scope will only capture Metal commands from the associated command queue. Defaults to nil (all command queues from the associated device are captured).
  */
 @property (nullable, readonly, nonatomic) id<MTLCommandQueue> commandQueue;
+
+/** If set, this scope will only capture Metal commands from the associated Metal 4 command queue. Defaults to nil (all command queues from the associated device are captured).
+ */
+@property (nullable, readonly, nonatomic) id<MTL4CommandQueue> mtl4CommandQueue;
 
 @end
 
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCommandBuffer.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCommandBuffer.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCommandBuffer.h	2025-04-19 03:54:19
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCommandBuffer.h	2025-05-28 02:01:30
@@ -218,7 +218,7 @@
 @end // MTLCommandBufferEncoderInfo
 
 
-typedef void (^MTLCommandBufferHandler)(id <MTLCommandBuffer>);
+typedef void (^ NS_SWIFT_SENDABLE MTLCommandBufferHandler)(id <MTLCommandBuffer>);
 
 /*!
  @enum MTLDispatchType
@@ -339,7 +339,7 @@
  @method waitUntilScheduled
  @abstract Synchronously wait for this command buffer to be scheduled.
  */
-- (void)waitUntilScheduled;
+- (void)waitUntilScheduled NS_SWIFT_UNAVAILABLE_FROM_ASYNC("Use 'await scheduled()' instead.");
 
 /*!
  @method addCompletedHandler:block:
@@ -351,7 +351,7 @@
  @method waitUntilCompleted
  @abstract Synchronously wait for this command buffer to complete.
  */
-- (void)waitUntilCompleted;
+- (void)waitUntilCompleted NS_SWIFT_UNAVAILABLE_FROM_ASYNC("Use 'await completed()' instead.");
 
 /*!
  @property status
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCommandEncoder.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCommandEncoder.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCommandEncoder.h	2025-04-19 05:10:47
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCommandEncoder.h	2025-05-28 04:53:30
@@ -31,6 +31,50 @@
     MTLBarrierScopeRenderTargets API_AVAILABLE(macos(10.14), macCatalyst(13.0)) API_UNAVAILABLE(ios) = 1 << 2,
 } API_AVAILABLE(macos(10.14), ios(12.0));
 
+/// Describes stages of GPU work.
+///
+/// All commands you encoder into command buffers relate to one or more shader stages,
+/// for example, a compute dispatch command from a compute command encoder relates to
+/// stage ``MTLStageDispatch``.
+///
+/// Use these stages to issue barriers between shader stages to ensure Metal correctly
+/// synchronizes GPU commands.
+typedef NS_OPTIONS(NSUInteger, MTLStages)
+{
+    /// Represents all vertex shader stage work in a render pass.
+    MTLStageVertex                = 1 << 0,
+    
+    /// Represents all fragment shader stage work in a render pass.
+    MTLStageFragment              = 1 << 1,
+    
+    /// Represents all tile shading stage work in a render pass.
+    MTLStageTile                  = 1 << 2,
+    
+    /// Represents all object shader stage work in a render pass.
+    MTLStageObject                = 1 << 3,
+    
+    /// Represents all mesh shader stage work work in a render pass.
+    MTLStageMesh                  = 1 << 4,
+    
+    /// Represents all sparse and placement sparse resource mapping updates.
+    MTLStageResourceState         = 1 << 26,
+    
+    /// Represents all compute dispatches in a compute pass.
+    MTLStageDispatch              = 1 << 27,
+    
+    /// Represents all blit operations in a pass.
+    MTLStageBlit                  = 1 << 28,
+    
+    /// Represents all acceleration structure operations.
+    MTLStageAccelerationStructure = 1 << 29,
+    
+    /// Represents all machine learning network dispatch operations.
+    MTLStageMachineLearning       = 1 << 30,
+    
+    /// Convenience mask representing all stages of GPU work.
+    MTLStageAll                   = NSIntegerMax,
+} API_AVAILABLE(macos(26.0), ios(26.0));
+
 /*!
  @protocol MTLCommandEncoder
  @abstract MTLCommandEncoder is the common interface for objects that write commands into MTLCommandBuffers.
@@ -55,6 +99,30 @@
  @abstract Declare that all command generation from this encoder is complete, and detach from the MTLCommandBuffer.
  */
 - (void)endEncoding;
+
+/// Encodes a consumer barrier on work you commit to the same command queue.
+///
+/// Encode a barrier that guarantees that any subsequent work you encode in the current command encoder that corresponds
+/// to the `beforeStages` stages doesn't proceed until Metal completes all work prior to the current command encoder
+/// corresponding to the `afterQueueStages` stages, completes.
+///
+/// Metal can reorder the exact point where it applies the barrier, so use this method for synchronizing between different passes.
+///
+/// If you need to synchronize work within a pass that you encode with an instance of a subclass of ``MTLCommandEncoder``,
+/// use memory barriers instead. For subclasses of ``MTL4CommandEncoder``, use encoder barriers.
+///
+/// You can specify `afterQueueStages` and `beforeStages` that contain ``MTLStages`` unrelated to the current command
+/// encoder.
+///
+/// - Parameters:
+///   - afterQueueStages: ``MTLStages`` mask that represents the stages of work to wait for.
+///                        This argument applies to work corresponding to these stages you
+///                        encode in prior command encoders, and not for the current encoder.
+///   - beforeStages:     ``MTLStages`` mask that represents the stages of work that wait.
+///                        This argument applies to work you encode in the current command encoder.
+- (void)barrierAfterQueueStages:(MTLStages)afterQueueStages
+                   beforeStages:(MTLStages)beforeStages
+API_AVAILABLE(macos(26.0), ios(26.0));
 
 /* Debug Support */
 
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCommandQueue.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCommandQueue.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCommandQueue.h	2025-04-19 05:10:47
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCommandQueue.h	2025-05-28 02:54:19
@@ -17,7 +17,7 @@
  @protocol MTLCommandQueue
  @brief A serial queue of command buffers to be executed by the device.
  */
-API_AVAILABLE(macos(10.11), ios(8.0))
+API_AVAILABLE(macos(10.11), ios(8.0)) NS_SWIFT_SENDABLE
 @protocol MTLCommandQueue <NSObject>
 
 /*! @brief A string to help identify this object */
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLComputeCommandEncoder.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLComputeCommandEncoder.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLComputeCommandEncoder.h	2025-04-19 04:47:50
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLComputeCommandEncoder.h	2025-05-28 03:18:52
@@ -29,6 +29,11 @@
 } MTLDispatchThreadgroupsIndirectArguments;
 
 typedef struct {
+    uint32_t threadsPerGrid[3];
+    uint32_t threadsPerThreadgroup[3];
+} MTLDispatchThreadsIndirectArguments;
+
+typedef struct {
 	uint32_t  stageInOrigin[3];
 	uint32_t  stageInSize[3];
 } MTLStageInRegionIndirectArguments API_AVAILABLE(macos(10.14), ios(12.0));
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLComputePipeline.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLComputePipeline.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLComputePipeline.h	2025-04-19 02:30:03
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLComputePipeline.h	2025-05-28 04:53:30
@@ -10,6 +10,7 @@
 #import <Metal/MTLArgument.h>
 #import <Metal/MTLStageInputOutputDescriptor.h>
 #import <Metal/MTLPipeline.h>
+#import <Metal/MTLAllocation.h>
 
 #import <Metal/MTLLinkedFunctions.h>
 @protocol MTLFunctionHandle;
@@ -18,7 +19,7 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
-MTL_EXPORT API_AVAILABLE(macos(10.11), ios(8.0))
+MTL_EXPORT API_AVAILABLE(macos(10.11), ios(8.0)) NS_SWIFT_SENDABLE
 @interface MTLComputePipelineReflection : NSObject
 
 @property (nonnull, readonly) NSArray<id<MTLBinding>> *bindings API_AVAILABLE(macos(13.0), ios(16.0));
@@ -53,7 +54,6 @@
  */
 @property (readwrite, nonatomic) NSUInteger maxTotalThreadsPerThreadgroup API_AVAILABLE(macos(10.14), ios(12.0));
 
-
 /*!
  @property computeDataDescriptor
  @abstract An MTLStageInputOutputDescriptor to fetch data from buffers
@@ -143,6 +143,14 @@
  */
 @property (readwrite, nonatomic) MTLShaderValidation shaderValidation API_AVAILABLE(macos(15.0), ios(18.0));
 
+/*!
+ @property requiredThreadsPerThreadgroup
+ @abstract Sets the required threads-per-threadgroup during dispatches. The `threadsPerThreadgroup` argument of any dispatch must match this value if it is set.
+           Optional, unless the pipeline is going to use CooperativeTensors in which case this must be set.
+           Setting this to a size of 0 in every dimension disables this property
+*/
+@property(readwrite, nonatomic) MTLSize requiredThreadsPerThreadgroup API_AVAILABLE(macos(26.0), ios(26.0));
+
 @end
 
 /*!
@@ -150,11 +158,44 @@
  @abstract A handle to compiled code for a compute function.
  @discussion MTLComputePipelineState is a single compute function.  It can only be used with the device that it was created against.
 */
-API_AVAILABLE(macos(10.11), ios(8.0))
-@protocol MTLComputePipelineState <NSObject>
+API_AVAILABLE(macos(10.11), ios(8.0)) NS_SWIFT_SENDABLE
+@protocol MTLComputePipelineState <MTLAllocation, NSObject>
 
 @property (nullable, readonly) NSString *label API_AVAILABLE(macos(10.13), ios(11.0));
 
+/// Provides access to this compute pipeline's reflection.
+///
+/// Reflection is `nil` if you create the pipeline state object directly from the ``MTLDevice`` protocol.
+@property (nullable, readonly) MTLComputePipelineReflection* reflection API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// Gets the function handle for a function this pipeline links at the Metal IR level by name.
+///
+/// - Parameters:
+///   - name: A string representing the name of the function.
+///
+/// - Returns: A function handle corresponding to the function if the name matches a function in this pipeline state,
+/// otherwise `nil`.
+- (nullable id<MTLFunctionHandle>)functionHandleWithName:(NSString*)name API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// Gets the function handle for a function this pipeline links at the binary level.
+///
+/// - Parameters:
+///   - function: A binary function object representing the function binary to find.
+///
+/// - Returns: A function handle corresponding to the function if the binary function mathces a function in this
+///            pipeline state, otherwise `nil`.
+- (nullable id<MTLFunctionHandle>)functionHandleWithBinaryFunction:(id<MTL4BinaryFunction>)function API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// Allocates a new compute pipeline state by adding binary functions to this pipeline state.
+///
+/// - Parameters:
+///   - additionalBinaryFunctions: A non-`nil` array containing binary functions to add to this pipeline.
+///   - error: An optional parameter into which Metal stores information in case of an error.
+///
+/// - Returns: A new compute pipeline state upon success, otherwise `nil`.
+- (nullable id<MTLComputePipelineState>)newComputePipelineStateWithBinaryFunctions:(NSArray<id<MTL4BinaryFunction>>*)additionalBinaryFunctions
+                                                                             error:(NSError**)error API_AVAILABLE(macos(26.0), ios(26.0));
+
 /*!
  @property device
  @abstract The device this resource was created against.  This resource can only be used with this device.
@@ -232,6 +273,12 @@
  @abstract Current state of Shader Validation for the pipeline.
  */
 @property (readonly, nonatomic) MTLShaderValidation shaderValidation API_AVAILABLE(macos(15.0), ios(18.0));
+
+/*!
+ @property requiredThreadsPerThreadgroup
+ @abstract The required size of every compute threadgroup.
+*/
+@property (readonly) MTLSize requiredThreadsPerThreadgroup API_AVAILABLE(macos(26.0), ios(26.0));
 @end
 
 NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCounters.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCounters.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCounters.h	2025-04-19 05:10:47
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCounters.h	2025-05-28 02:49:12
@@ -101,7 +101,7 @@
  @protocol MTLCounter
  @abstract A descriptor for a single counter.
  */
-MTL_EXPORT API_AVAILABLE(macos(10.15), ios(14.0))
+MTL_EXPORT API_AVAILABLE(macos(10.15), ios(14.0)) NS_SWIFT_SENDABLE
 @protocol MTLCounter <NSObject>
 @property (readonly, copy) NSString *name API_AVAILABLE(macos(10.15), ios(14.0));
 @end
@@ -111,7 +111,7 @@
  @abstract A collection of MTLCounters that the device can capture in
  a single pass.
  */
-MTL_EXPORT API_AVAILABLE(macos(10.15), ios(14.0))
+MTL_EXPORT API_AVAILABLE(macos(10.15), ios(14.0)) NS_SWIFT_SENDABLE
 @protocol MTLCounterSet <NSObject>
 /*!
  @property name The name of the counter set.
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDataType.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDataType.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDataType.h	1969-12-31 19:00:00
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDataType.h	2025-05-28 02:01:32
@@ -0,0 +1,235 @@
+//
+//  MTLDataType.h
+//  Metal
+//
+//  Created by Vatsin Suchak on 3/20/25.
+//  Copyright © 2025 Apple, Inc. All rights reserved.
+//
+
+#ifndef MTLDataType_h
+#define MTLDataType_h
+
+#import <Foundation/Foundation.h>
+#import <Metal/MTLDefines.h>
+
+/// An enumeration of the different data types in Metal.
+typedef NS_ENUM(NSUInteger, MTLDataType) {
+
+    /// Represents no data type.
+    MTLDataTypeNone = 0,
+
+    /// Represents a struct data type.
+    MTLDataTypeStruct = 1,
+    /// Represents an array data type.
+    MTLDataTypeArray  = 2,
+
+    /// Represents a data type consisting of a single floating-point value.
+    MTLDataTypeFloat  = 3,
+    /// Represents a data type consisting of a vector of two floating-point values.
+    MTLDataTypeFloat2 = 4,
+    /// Represents a data type consisting of a vector of three floating-point values.
+    MTLDataTypeFloat3 = 5,
+    /// Represents a data type consisting of a vector of four floating-point values.
+    MTLDataTypeFloat4 = 6,
+
+    /// Represents a data type consisting of a 2x2 floating-point matrix.
+    MTLDataTypeFloat2x2 = 7,
+    /// Represents a data type consisting of a 2x3 floating-point matrix.
+    MTLDataTypeFloat2x3 = 8,
+    /// Represents a data type consisting of a 2x4 floating-point matrix.
+    MTLDataTypeFloat2x4 = 9,
+
+    /// Represents a data type consisting of a 3x2 floating-point matrix.
+    MTLDataTypeFloat3x2 = 10,
+    /// Represents a data type consisting of a 3x3 floating-point matrix.
+    MTLDataTypeFloat3x3 = 11,
+    /// Represents a data type consisting of a 3x4 floating-point matrix.
+    MTLDataTypeFloat3x4 = 12,
+
+    /// Represents a data type consisting of a 4x2 floating-point matrix.
+    MTLDataTypeFloat4x2 = 13,
+    /// Represents a data type consisting of a 4x3 floating-point matrix.
+    MTLDataTypeFloat4x3 = 14,
+    /// Represents a data type consisting of a 4x4 floating-point matrix.
+    MTLDataTypeFloat4x4 = 15,
+
+    /// Represents a data type consisting of a half-precision floating-point value.
+    MTLDataTypeHalf  = 16,
+    /// Represents a data type consisting of a vector of two half-precision floating-point values.
+    MTLDataTypeHalf2 = 17,
+    /// Represents a data type consisting of a vector of three half-precision floating-point values.
+    MTLDataTypeHalf3 = 18,
+    /// Represents a data type consisting of a vector of four half-precision floating-point values.
+    MTLDataTypeHalf4 = 19,
+
+    /// Represents a data type consisting of a 2x2 half-precision floating-point matrix.
+    MTLDataTypeHalf2x2 = 20,
+    /// Represents a data type consisting of a 2x3 half-precision floating-point matrix.
+    MTLDataTypeHalf2x3 = 21,
+    /// Represents a data type consisting of a 2x4 half-precision floating-point matrix.
+    MTLDataTypeHalf2x4 = 22,
+
+    /// Represents a data type consisting of a 3x2 half-precision floating-point matrix.
+    MTLDataTypeHalf3x2 = 23,
+    /// Represents a data type consisting of a 3x3 half-precision floating-point matrix.
+    MTLDataTypeHalf3x3 = 24,
+    /// Represents a data type consisting of a 3x4 half-precision floating-point matrix.
+    MTLDataTypeHalf3x4 = 25,
+
+    /// Represents a data type consisting of a 4x2 half-precision floating-point matrix.
+    MTLDataTypeHalf4x2 = 26,
+    /// Represents a data type consisting of a 4x3 half-precision floating-point matrix.
+    MTLDataTypeHalf4x3 = 27,
+    /// Represents a data type consisting of a 4x4 half-precision floating-point matrix.
+    MTLDataTypeHalf4x4 = 28,
+
+    /// Represents a data type consisting of a single signed integer value.
+    MTLDataTypeInt  = 29,
+    /// Represents a data type consisting of a vector of two signed integer values.
+    MTLDataTypeInt2 = 30,
+    /// Represents a data type consisting of a vector of three signed integer values.
+    MTLDataTypeInt3 = 31,
+    /// Represents a data type consisting of a vector of four signed integer values.
+    MTLDataTypeInt4 = 32,
+
+    /// Represents a data type consisting of a single unsigned integer value.
+    MTLDataTypeUInt  = 33,
+    /// Represents a data type consisting of a vector of two unsigned integer values.
+    MTLDataTypeUInt2 = 34,
+    /// Represents a data type consisting of a vector of three unsigned integer values.
+    MTLDataTypeUInt3 = 35,
+    /// Represents a data type consisting of a vector of four unsigned integer values.
+    MTLDataTypeUInt4 = 36,
+
+    /// Represents a data type consisting of a single 16-bit signed integer value.
+    MTLDataTypeShort  = 37,
+    /// Represents a data type consisting of a vector of two 16-bit signed integer values.
+    MTLDataTypeShort2 = 38,
+    /// Represents a data type consisting of a vector of three 16-bit signed integer values.
+    MTLDataTypeShort3 = 39,
+    /// Represents a data type consisting of a vector of three 16-bit signed integer values.
+    MTLDataTypeShort4 = 40,
+
+    /// Represents a data type consisting of a single 16-bit unsigned integer value.
+    MTLDataTypeUShort = 41,
+    /// Represents a data type consisting of a vector of two 16-bit unsigned integer values.
+    MTLDataTypeUShort2 = 42,
+    /// Represents a data type consisting of a vector of three 16-bit unsigned integer values.
+    MTLDataTypeUShort3 = 43,
+    /// Represents a data type consisting of a vector of four 16-bit unsigned integer values.
+    MTLDataTypeUShort4 = 44,
+
+    /// Represents a data type consisting of a single signed character value.
+    MTLDataTypeChar  = 45,
+    /// Represents a data type consisting of a vector of two signed character values.
+    MTLDataTypeChar2 = 46,
+    /// Represents a data type consisting of a vector of three signed character values.
+    MTLDataTypeChar3 = 47,
+    /// Represents a data type consisting of a vector of four signed character values.
+    MTLDataTypeChar4 = 48,
+
+    /// Represents a data type consisting of a single unsigned character value.
+    MTLDataTypeUChar  = 49,
+    /// Represents a data type consisting of a vector of two unsigned character values.
+    MTLDataTypeUChar2 = 50,
+    /// Represents a data type consisting of a vector of three unsigned character values.
+    MTLDataTypeUChar3 = 51,
+    /// Represents a data type consisting of a vector of four unsigned character values.
+    MTLDataTypeUChar4 = 52,
+
+    /// Represents a data type consisting of a single boolean value.
+    MTLDataTypeBool  = 53,
+    /// Represents a data type consisting of a vector of two boolean values.
+    MTLDataTypeBool2 = 54,
+    /// Represents a data type consisting of a vector of three boolean values.
+    MTLDataTypeBool3 = 55,
+    /// Represents a data type consisting of a vector of four boolean values.
+    MTLDataTypeBool4 = 56,
+
+    /// Represents a data type corresponding to a texture object.
+    MTLDataTypeTexture API_AVAILABLE(macos(10.13), ios(11.0)) = 58,
+    /// Represents a data type corresponding to a sampler state object.
+    MTLDataTypeSampler API_AVAILABLE(macos(10.13), ios(11.0)) = 59,
+    /// Represents a data type corresponding to a pointer.
+    MTLDataTypePointer API_AVAILABLE(macos(10.13), ios(11.0)) = 60,
+
+    /// Represents an image block data type consisting of an unsigned 8-bit red channel normalized to the [0-1] range.
+    MTLDataTypeR8Unorm         API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(11.0), tvos(14.5)) = 62,
+    /// Represents an image block data type consisting of an signed 8-bit red channel normalized to the [0-1] range.
+    MTLDataTypeR8Snorm         API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(11.0), tvos(14.5)) = 63,
+    /// Represents an image block data type consisting of an unsigned 16-bit red channel normalized to the [0-1] range.
+    MTLDataTypeR16Unorm        API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(11.0), tvos(14.5)) = 64,
+    /// Represents an image block data type consisting of a signed 16-bit red channel normalized to the [0-1] range.
+    MTLDataTypeR16Snorm        API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(11.0), tvos(14.5)) = 65,
+    /// Represents an image block data type consisting of an unsigned 8-bit red channel and a unsigned 8-bit green channel, both normalized to the [0-1] range.
+    MTLDataTypeRG8Unorm        API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(11.0), tvos(14.5)) = 66,
+    /// Represents an image block data type consisting of a signed 8-bit red channel and a signed 8-bit green channel, both normalized to the [0-1] range.
+    MTLDataTypeRG8Snorm        API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(11.0), tvos(14.5)) = 67,
+    /// Represents an image block data type consisting of an unsigned 16-bit red channel and an unsigned 16-bit green channel, both normalized to the [0-1] range.
+    MTLDataTypeRG16Unorm       API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(11.0), tvos(14.5)) = 68,
+    /// Represents an image block data type consisting of a signed 16-bit red channel and a signed 16-bit green channel, both normalized to the [0-1] range.
+    MTLDataTypeRG16Snorm       API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(11.0), tvos(14.5)) = 69,
+    /// Represents an image block data type consisting of four unsigned 8-bit channels normalized to the [0-1] range.
+    MTLDataTypeRGBA8Unorm      API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(11.0), tvos(14.5)) = 70,
+    /// Represents an image block data type consisting of four unsigned 8-bit channels normalized to the [0-1] range and subject to gamma-correction.
+    MTLDataTypeRGBA8Unorm_sRGB API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(11.0), tvos(14.5)) = 71,
+    /// Represents an image block data type consisting of four signed 8-bit channels normalized to the [0-1] range.
+    MTLDataTypeRGBA8Snorm      API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(11.0), tvos(14.5)) = 72,
+    /// Represents an image block data type consisting of four unsigned 16-bit channels normalized to the [0-1] range.
+    MTLDataTypeRGBA16Unorm     API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(11.0), tvos(14.5)) = 73,
+    /// Represents an image block data type consisting of four signed 16-bit channels normalized to the [0-1] range.
+    MTLDataTypeRGBA16Snorm     API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(11.0), tvos(14.5)) = 74,
+    /// Represents an image block data type consisting of three unsigned 10-bit channels and one 2-bit unsigned alpha channel, all normalized to the [0-1] range.
+    MTLDataTypeRGB10A2Unorm    API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(11.0), tvos(14.5)) = 75,
+    /// Represents an image block data type consisting of two 11-bit floating-point channels, and one 10-bit floating-point blue channel.
+    MTLDataTypeRG11B10Float    API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(11.0), tvos(14.5)) = 76,
+    /// Represents an image block data type consisting of three 9-bit floating-point channels, and one 5-bit floating-point exponent.
+    MTLDataTypeRGB9E5Float     API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(11.0), tvos(14.5)) = 77,
+    /// Represents a data type corresponding to a render pipeline state object.
+    MTLDataTypeRenderPipeline  API_AVAILABLE(macos(10.14), ios(13.0)) = 78,
+    /// Represents a data type corresponding to a compute pipeline state object.
+    MTLDataTypeComputePipeline API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(13.0)) = 79,
+    /// Represents a data type corresponding to an indirect command buffer object.
+    MTLDataTypeIndirectCommandBuffer   API_AVAILABLE(macos(10.14), ios(12.0)) = 80,
+    /// Represents a data type consisting of a signed long integer value.
+    MTLDataTypeLong  API_AVAILABLE(macos(12.0), ios(14.0)) = 81,
+    /// Represents a data type consisting of a vector of two signed long integer values.
+    MTLDataTypeLong2 API_AVAILABLE(macos(12.0), ios(14.0)) = 82,
+    /// Represents a data type consisting of a vector of three signed long integer values.
+    MTLDataTypeLong3 API_AVAILABLE(macos(12.0), ios(14.0)) = 83,
+    /// Represents a data type consisting of a vector of four signed long integer values.
+    MTLDataTypeLong4 API_AVAILABLE(macos(12.0), ios(14.0)) = 84,
+
+    /// Represents a data type consisting of an unsigned long integer value.
+    MTLDataTypeULong  API_AVAILABLE(macos(12.0), ios(14.0)) = 85,
+    /// Represents a data type consisting of a vector two unsigned long integer values.
+    MTLDataTypeULong2 API_AVAILABLE(macos(12.0), ios(14.0)) = 86,
+    /// Represents a data type consisting of a vector three unsigned long integer values.
+    MTLDataTypeULong3 API_AVAILABLE(macos(12.0), ios(14.0)) = 87,
+    /// Represents a data type consisting of a vector four unsigned long integer values.
+    MTLDataTypeULong4 API_AVAILABLE(macos(12.0), ios(14.0)) = 88,
+    /// Represents a data type corresponding to a visible function table object.
+    MTLDataTypeVisibleFunctionTable API_AVAILABLE(macos(11.0), ios(14.0)) = 115,
+    /// Represents a data type corresponding to an intersection function table object.
+    MTLDataTypeIntersectionFunctionTable API_AVAILABLE(macos(11.0), ios(14.0)) = 116,
+    /// Represents a data type corresponding to a primitive acceleration structure.
+    MTLDataTypePrimitiveAccelerationStructure API_AVAILABLE(macos(11.0), ios(14.0)) = 117,
+    /// Represents a data type corresponding to an instance acceleration structure.
+    MTLDataTypeInstanceAccelerationStructure API_AVAILABLE(macos(11.0), ios(14.0)) = 118,
+    /// Represents a data type consisting of a single BFloat value.
+    MTLDataTypeBFloat  API_AVAILABLE(macos(14.0), ios(17.0)) = 121,
+    /// Represents a data type consisting of a vector two BFloat values.
+    MTLDataTypeBFloat2 API_AVAILABLE(macos(14.0), ios(17.0)) = 122,
+    /// Represents a data type consisting of a vector three BFloat values.
+    MTLDataTypeBFloat3 API_AVAILABLE(macos(14.0), ios(17.0)) = 123,
+    /// 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 machine learning tensor.
+    MTLDataTypeTensor API_AVAILABLE(macos(26.0), ios(26.0)) = 140,
+    
+} API_AVAILABLE(macos(10.11), ios(8.0));
+
+
+#endif /* MTLDataType_h */
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDepthStencil.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDepthStencil.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDepthStencil.h	2025-04-19 05:10:47
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDepthStencil.h	2025-05-28 02:54:18
@@ -74,7 +74,7 @@
 
 
 /* Device-specific compiled depth/stencil state object */
-API_AVAILABLE(macos(10.11), ios(8.0))
+API_AVAILABLE(macos(10.11), ios(8.0)) NS_SWIFT_SENDABLE
 @protocol MTLDepthStencilState <NSObject>
 
 /*!
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDevice.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDevice.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDevice.h	2025-04-19 05:10:46
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDevice.h	2025-05-28 02:01:29
@@ -11,11 +11,16 @@
 #import <Metal/MTLTypes.h>
 #import <Metal/MTLPixelFormat.h>
 #import <Metal/MTLResource.h>
+#import <Metal/MTLTensor.h>
 #import <Metal/MTLLibrary.h>
 #import <IOSurface/IOSurfaceRef.h>
 #import <Metal/MTLCounters.h>
 
 
+#import <Metal/MTL4Compiler.h>
+#import <Metal/MTL4Counters.h>
+@protocol MTL4BinaryFunction;
+
 NS_ASSUME_NONNULL_BEGIN
 @protocol MTLCommandQueue;
 @protocol MTLDevice;
@@ -75,6 +80,31 @@
 @class MTLResidencySetDescriptor;
 @protocol MTLResidencySet;
 
+
+@class MTL4CommandQueueDescriptor;
+@protocol MTL4CommandQueue;
+
+@protocol MTL4CommandBuffer;
+
+@class MTL4CommandAllocatorDescriptor;
+@protocol MTL4CommandAllocator;
+
+@class MTL4ArgumentTableDescriptor;
+@protocol MTL4ArgumentTable;
+
+@class MTLResourceViewPoolDescriptor;
+@protocol MTLTextureViewPool;
+@class MTL4CompilerDescriptor;
+@protocol MTL4Compiler;
+@protocol MTL4Archive;
+@protocol MTL4PipelineDataSetSerializer;
+@class MTL4PipelineDataSetSerializerDescriptor;
+
+
+@class MTL4CounterHeapDescriptor;
+@protocol MTL4CounterHeap;
+
+
 @protocol MTLIOFileHandle;
 @protocol MTLIOCommandQueue;
 @class MTLIOCommandQueueDescriptor;
@@ -164,7 +194,7 @@
     MTLGPUFamilyApple7  = 1007,
     MTLGPUFamilyApple8  = 1008,
     MTLGPUFamilyApple9  = 1009,
-    
+
     MTLGPUFamilyMac1 API_DEPRECATED_WITH_REPLACEMENT("MTLGPUFamilyMac2", macos(10.15, 13.0), ios(13.0, 16.0)) = 2001,
     MTLGPUFamilyMac2 = 2002,
     
@@ -176,6 +206,7 @@
     MTLGPUFamilyMacCatalyst2 API_DEPRECATED_WITH_REPLACEMENT("MTLGPUFamilyMac2", macos(10.15, 13.0), ios(13.0, 16.0)) = 4002,
     
     MTLGPUFamilyMetal3 API_AVAILABLE(macos(13.0), ios(16.0)) = 5001,
+    MTLGPUFamilyMetal4 API_AVAILABLE(macos(26.0), ios(26.0)) = 5002,
 } API_AVAILABLE(macos(10.15), ios(13.0));
 
 
@@ -223,17 +254,6 @@
     MTLSparseTextureRegionAlignmentModeInward    = 1,
 } API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(13.0));
 
-/*!
- @enum MTLSparsePageSize
- @abstract Physical size of sparse resource page in KBs.
- */
-typedef NS_ENUM(NSInteger, MTLSparsePageSize)
-{
-    MTLSparsePageSize16 = 101,
-    MTLSparsePageSize64 = 102,
-    MTLSparsePageSize256 = 103,
-} API_AVAILABLE(macos(13.0), ios(16.0));
-
 /**
  * @brief Describes the memory requirements for an acceleration structure
  */
@@ -290,19 +310,8 @@
     NSUInteger align;
 } MTLSizeAndAlign;
 
-/* Convenience typedefs that make it easy to declare storage for certain return types. */
-typedef __autoreleasing MTLRenderPipelineReflection * __nullable MTLAutoreleasedRenderPipelineReflection;
-typedef __autoreleasing MTLComputePipelineReflection * __nullable MTLAutoreleasedComputePipelineReflection;
 
-typedef void (^MTLNewLibraryCompletionHandler)(id <MTLLibrary> __nullable library, NSError * __nullable error);
 
-typedef void (^MTLNewRenderPipelineStateCompletionHandler)(id <MTLRenderPipelineState> __nullable renderPipelineState, NSError * __nullable error);
-typedef void (^MTLNewRenderPipelineStateWithReflectionCompletionHandler)(id <MTLRenderPipelineState> __nullable renderPipelineState, MTLRenderPipelineReflection * _Nullable_result reflection, NSError * __nullable error);
-
-typedef void (^MTLNewComputePipelineStateCompletionHandler)(id <MTLComputePipelineState> __nullable computePipelineState, NSError * __nullable error);
-typedef void (^MTLNewComputePipelineStateWithReflectionCompletionHandler)(id <MTLComputePipelineState> __nullable computePipelineState, MTLComputePipelineReflection * _Nullable_result reflection, NSError * __nullable error);
-
-
 /*!
  * @class MTLArgumentDescriptor
  * @abstract Represents a member of an argument buffer
@@ -375,7 +384,7 @@
  @protocol MTLDevice
  @abstract MTLDevice represents a processor capable of data parallel computations
  */
-API_AVAILABLE(macos(10.11), ios(8.0))
+API_AVAILABLE(macos(10.11), ios(8.0)) NS_SWIFT_SENDABLE
 @protocol MTLDevice <NSObject>
 
 /*!
@@ -529,7 +538,7 @@
  @method newLogStateWithDescriptor
  @abstract This method will create a new MTLLogState.
  */
-- (nullable id <MTLLogState>) newLogStateWithDescriptor:(MTLLogStateDescriptor* _Nonnull) descriptor error:(__autoreleasing NSError* _Nullable *)error API_AVAILABLE(macos(15.0), ios(18.0));
+- (nullable id <MTLLogState>) newLogStateWithDescriptor:(MTLLogStateDescriptor* _Nonnull) descriptor error:(NSError** )error API_AVAILABLE(macos(15.0), ios(18.0));
 
 /*!
  @method newCommandQueue
@@ -587,7 +596,7 @@
  @method newBufferWithBytesNoCopy:length:options:deallocator:
  @brief Create a buffer by wrapping an existing part of the address space.
  */
-- (nullable id <MTLBuffer>)newBufferWithBytesNoCopy:(void *)pointer length:(NSUInteger)length options:(MTLResourceOptions)options deallocator:(void (^ __nullable)(void *pointer, NSUInteger length))deallocator;
+- (nullable id <MTLBuffer>)newBufferWithBytesNoCopy:(void *)pointer length:(NSUInteger)length options:(MTLResourceOptions)options deallocator:(void (^ NS_SWIFT_SENDABLE __nullable)(void *pointer, NSUInteger length))deallocator;
 
 /*!
  @method newDepthStencilStateWithDescriptor:
@@ -1189,6 +1198,204 @@
 - (nullable id<MTLResidencySet>) newResidencySetWithDescriptor:(MTLResidencySetDescriptor *)desc
                                             error:(NSError *__nullable*)error
                                             API_AVAILABLE(macos(15.0), ios(18.0));
+
+/// Determines the size and alignment required to hold the data of a tensor you create with a descriptor in a buffer.
+///
+/// - Parameters:
+///    - descriptor: A description of the properties for the new tensor.
+/// - Returns: The size and alignment required to hold the data of a tensor you create with `descriptor` in a buffer.
+- (MTLSizeAndAlign)tensorSizeAndAlignWithDescriptor:(MTLTensorDescriptor *)descriptor API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// Creates a tensor by allocating new memory.
+///
+/// - Parameters:
+///   - descriptor: A description of the properties for the new tensor.
+///   - error: Metal populates this parameter with information in case an error occurs.
+/// - Returns: A new tensor instance that Metal configures using `descriptor` or `nil` if an error occurred.
+- (nullable id <MTLTensor>)newTensorWithDescriptor:(MTLTensorDescriptor *)descriptor
+                                             error:(__autoreleasing NSError * _Nullable * _Nullable)error API_AVAILABLE(macos(26.0), ios(26.0));
+
+/*!
+ @method functionHandleWithFunction:
+ @abstract Returns the function handle for a function that was compiled with MTLFunctionOptionPipelineIndependent and MTLFunctionOptionCompileToBinary.
+ */
+- (nullable id<MTLFunctionHandle>)functionHandleWithFunction:(id<MTLFunction>)function API_AVAILABLE(macos(26.0), ios(26.0));
+
+
+
+/// Creates a new command allocator.
+///
+/// - Returns: A ``MTL4CommandAllocator`` instance, or `nil` if the function failed.
+ - (nullable id<MTL4CommandAllocator>)newCommandAllocator
+API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// Creates a new command allocator from a command allocator descriptor.
+///
+/// - Parameters:
+///   - descriptor: A ``MTL4CommandAllocatorDescriptor`` instance that configures the
+///                 ``MTL4CommandAllocator`` instance.
+///   - error:      Optional pointer to a `NSError` instance that Metal uses to describe the failure
+///                 if this function fails.
+///
+/// - Returns: A ``MTL4CommandAllocator`` instance, or `nil` if the function failed.
+- (nullable id<MTL4CommandAllocator>)newCommandAllocatorWithDescriptor:(MTL4CommandAllocatorDescriptor *)descriptor
+                                                                 error:(NSError**)error
+API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// Creates a new command queue.
+///
+/// - Returns: A ``MTL4CommandQueue`` instance, or `nil` if the function failed.
+- (nullable id<MTL4CommandQueue>)newMTL4CommandQueue
+API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// Creates a new command queue from a queue descriptor.
+///
+/// - Parameters:
+///   - descriptor: A ``MTL4CommandQueueDescriptor`` instance that configures the
+///                 ``MTL4CommandQueue`` instance.
+///   - error:      Optional pointer to a `NSError` instance that Metal uses to describe the failure
+///                 if this function fails.
+///
+/// - Returns: A ``MTL4CommandQueue`` instance, or `nil` if the function failed.
+- (nullable id<MTL4CommandQueue>)newMTL4CommandQueueWithDescriptor:(MTL4CommandQueueDescriptor *)descriptor
+                                                             error:(__autoreleasing NSError * _Nullable * _Nullable)error
+API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// Creates a new command buffer.
+///
+/// - Returns: A ``MTL4CommandBuffer`` instance, or `nil` if the function failed.
+ - (nullable id<MTL4CommandBuffer>)newCommandBuffer
+API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// Creates a new argument table from an argument table descriptor.
+///
+/// - Parameters:
+///   - descriptor: A ``MTL4ArgumentTableDescriptor`` instance that configures the
+///                 ``MTL4ArgumentTable`` instance.
+///   - error:      Optional pointer to a `NSError` instance that Metal uses to describe the failure
+///                 if this function fails.
+///
+/// - Returns: A ``MTL4ArgumentTable`` instance, or `nil` if the function failed.
+- (nullable id<MTL4ArgumentTable>)newArgumentTableWithDescriptor:(MTL4ArgumentTableDescriptor *)descriptor
+                                                           error:(NSError * _Nullable *)error
+API_AVAILABLE(macos(26.0), ios(26.0));
+
+
+
+/// Creates a new texture view pool from a resource view pool descriptor.
+///
+/// - Parameters:
+///   - descriptor: A ``MTLResourceViewPoolDescriptor`` instance that configures the
+///                 ``MTLTextureViewPool`` instance.
+///   - error:      Optional pointer to a `NSError` instance that Metal uses to describe the failure
+///                 if this function fails.
+///
+/// - Returns: A ``MTLTextureViewPool`` instance, or `nil` if the function failed.
+- (nullable id<MTLTextureViewPool>)newTextureViewPoolWithDescriptor:(MTLResourceViewPoolDescriptor *)descriptor
+                                                              error:(NSError * _Nullable *)error
+API_AVAILABLE(macos(26.0), ios(26.0));
+
+
+
+
+/// Creates a new compiler from a compiler descriptor.
+///
+/// - Parameters:
+///   - descriptor: A ``MTL4CompilerDescriptor`` instance that configures the
+///                 ``MTL4Compiler`` instance.
+///   - error:      Optional pointer to a `NSError` instance that Metal uses to describe the failure
+///                 if this function fails.
+///
+/// - Returns: A ``MTL4Compiler`` instance, or `nil` if the function failed.
+- (nullable id<MTL4Compiler>)newCompilerWithDescriptor:(MTL4CompilerDescriptor *)descriptor
+                                                 error:(NSError **)error
+API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// Creates a new archive from data available at an `NSURL` address.
+///
+/// - Parameters:
+///   - url:   An `NSURL` instance that represents the path from which the device loads the ``MTL4Archive``.
+///   - error:      Optional pointer to a `NSError` instance that Metal uses to describe the failure
+///                 if this function fails.
+///
+/// - Returns: A ``MTL4Archive`` instance, or `nil` if the function failed.
+- (nullable id<MTL4Archive>)newArchiveWithURL:(NSURL *)url
+                                        error:(NSError **)error
+API_AVAILABLE(macos(26.0), ios(26.0));
+
+
+/// Creates a new pipeline data set serializer instance from a descriptor.
+///
+/// - Parameter descriptor: A ``MTL4PipelineDataSetSerializerDescriptor`` instance that configures
+///                         the new ``MTL4PipelineDataSetSerializer`` instance.
+///
+/// - Returns: A ``MTL4PipelineDataSetSerializer`` instance, or `nil` if the function failed.
+- (id<MTL4PipelineDataSetSerializer>)newPipelineDataSetSerializerWithDescriptor:
+    (MTL4PipelineDataSetSerializerDescriptor *)descriptor
+API_AVAILABLE(macos(26.0), ios(26.0));
+
+
+/// Creates a new placement sparse buffer of a specific length.
+///
+/// This method creates a new placement sparse ``MTLBuffer`` of a specific length. You assign memory to
+/// placement sparse buffers using a ``MTLHeap`` of type ``MTLHeapType/MTLHeapTypePlacement``.
+///
+/// - Parameters:
+///   - length:                  The size of the ``MTLBuffer``, in bytes.
+///   - options:                 A ``MTLResourceOptions`` instance that establishes the buffer’s storage modes.
+///   - placementSparsePageSize: ``MTLSparsePageSize`` to use for the placement sparse buffer.
+///
+/// - Returns: A ``MTLBuffer`` instance, or `nil` if the function failed.
+- (nullable id<MTLBuffer>)newBufferWithLength:(NSUInteger)length
+                                      options:(MTLResourceOptions)options
+                      placementSparsePageSize:(MTLSparsePageSize)placementSparsePageSize
+API_AVAILABLE(macos(26.0), ios(26.0));
+
+
+/// Creates a new counter heap configured from a counter heap descriptor.
+///
+/// - Parameters:
+///   - descriptor: ``MTL4CounterHeapDescriptor`` instance that configures the ``MTL4CounterHeap`` instance.
+///   - error:      Optional pointer to a `NSError` instance that Metal uses to describe the failure
+///                 if this function fails.
+///
+/// - Returns: A ``MTL4CounterHeap`` instance, or `nil` if the function failed.
+- (nullable id<MTL4CounterHeap>)newCounterHeapWithDescriptor:(MTL4CounterHeapDescriptor *)descriptor
+                                                       error:(NSError *__nullable*)error
+                                            API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// Returns the size, in bytes, of each entry in a counter heap of a specific counter heap type when
+/// your app resolves it into a usable format.
+///
+/// In order to use the data available in a ``MTL4CounterHeap``, your app first resolves it either in the CPU timeline
+/// or in the GPU timeline. When your app calls ``MTL4CommandBuffer/resolveCounterHeap:withRange:intoBuffer:atOffset:waitFence:updateFence:``
+/// to resolve counter data in the GPU timeline, Metal writes the data into a ``MTLBuffer``.
+///
+/// During this process, Metal transform the data in the heap into a format consisting of entries of the size
+/// that this method advertises, based on the ``MTL4CounterHeapType``.
+///
+/// - Parameters:
+///   - type: ``MTL4CounterHeapType`` value that represents the type of the ``MTL4CounterHeap`` to resolve.
+///
+/// - Returns: The size of the post-transformation entry from a ``MTL4CounterHeap`` of type ``MTL4CounterHeapType``.
+- (NSUInteger)sizeOfCounterHeapEntry:(MTL4CounterHeapType)type
+API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// Queries the frequency of the GPU timestamp in ticks per second.
+///
+/// - Returns: The frequency of the GPU timestamp in ticks per second.
+- (uint64_t)queryTimestampFrequency
+API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// Get the function handle for the specified binary-linked function from the pipeline state.
+///
+/// - Parameters:
+///   - function: A ``MTL4BinaryFunction`` instance representing the function binary.
+///
+/// - Returns: A ``MTLFunctionHandle`` instance  for a binary function that was compiled with ``MTLFunctionOptionPipelineIndependent``, otherwise `nil`.
+- (nullable id<MTLFunctionHandle>)functionHandleWithBinaryFunction:(id<MTL4BinaryFunction>)function
+API_AVAILABLE(macos(26.0), ios(26.0));
+
 
 @end
 NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDrawable.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDrawable.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDrawable.h	2025-04-19 05:10:46
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDrawable.h	2025-05-28 02:54:18
@@ -16,7 +16,7 @@
  @abstract The presented callback function protocol
  @discussion Be careful when you use delta between this presentedTime and previous frame's presentedTime to animate next frame. If the frame was presented using presentAfterMinimumDuration or presentAtTime, the presentedTime might includes delays to meet your specified present time. If you want to measure how much frame you can achieve, use GPUStartTime in the first command buffer of your frame rendering and GPUEndTime of your last frame rendering to calculate the frame interval.
 */
-typedef void (^MTLDrawablePresentedHandler)(id<MTLDrawable>);
+typedef void (^ NS_SWIFT_SENDABLE MTLDrawablePresentedHandler)(id<MTLDrawable>);
 
 /*!
  @protocol MTLDrawable
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDynamicLibrary.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDynamicLibrary.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDynamicLibrary.h	2025-04-19 03:54:18
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDynamicLibrary.h	2025-05-28 02:48:23
@@ -43,7 +43,7 @@
  If any unresolved symbols remain after searching the set, the creation of the MTLComputePipelineState fails.
  Otherwise, the MTLComputePipelineState creation succeeds, and the set of MTLDynamicLibraries used are retained by the MTLComputePipelineState.
  */
-API_AVAILABLE(macos(11.0), ios(14.0))
+API_AVAILABLE(macos(11.0), ios(14.0)) NS_SWIFT_SENDABLE
 @protocol MTLDynamicLibrary <NSObject>
 
 /*!
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLEvent.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLEvent.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLEvent.h	2025-04-19 05:10:47
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLEvent.h	2025-05-28 02:54:18
@@ -11,7 +11,7 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
-API_AVAILABLE(macos(10.14), ios(12.0))
+API_AVAILABLE(macos(10.14), ios(12.0)) NS_SWIFT_SENDABLE
 @protocol MTLEvent <NSObject>
 
 /*!
@@ -32,17 +32,21 @@
  @class MTLSharedEventListener
  @abstract This class provides a simple interface for handling the dispatching of MTLSharedEvent notifications from Metal.
 */
-MTL_EXPORT API_AVAILABLE(macos(10.14), ios(12.0))
+MTL_EXPORT API_AVAILABLE(macos(10.14), ios(12.0)) NS_SWIFT_SENDABLE
 @interface MTLSharedEventListener : NSObject
 - (instancetype)init NS_DESIGNATED_INITIALIZER;
 - (instancetype)initWithDispatchQueue:(dispatch_queue_t)dispatchQueue NS_DESIGNATED_INITIALIZER;
 @property (nonnull, readonly) dispatch_queue_t dispatchQueue;
+
+// A shared instance constructed with a standard serial dispatch queue.
+// This instance can be used for short-running notifications without QoS requirements.
++ (MTLSharedEventListener*)sharedListener API_AVAILABLE(macos(26.0), ios(26.0));
 @end
 
 @class MTLSharedEventHandle;
 @protocol MTLSharedEvent;
 
-typedef void (^MTLSharedEventNotificationBlock)(id <MTLSharedEvent>, uint64_t value);
+typedef void (^ NS_SWIFT_SENDABLE MTLSharedEventNotificationBlock)(id <MTLSharedEvent>, uint64_t value);
 
 API_AVAILABLE(macos(10.14), ios(12.0))
 @protocol MTLSharedEvent <MTLEvent>
@@ -55,7 +59,7 @@
 
 // Synchronously wait for the signaledValue to be greater than or equal to 'value', with a timeout
 // specified in milliseconds.   Returns YES if the value was signaled before the timeout, otherwise NO.
-- (BOOL)waitUntilSignaledValue:(uint64_t)value timeoutMS:(uint64_t)milliseconds API_AVAILABLE(macos(12.0), ios(15.0));
+- (BOOL)waitUntilSignaledValue:(uint64_t)value timeoutMS:(uint64_t)milliseconds API_AVAILABLE(macos(12.0), ios(15.0)) NS_SWIFT_UNAVAILABLE_FROM_ASYNC("Use 'await valueSignaled(...)' instead.");
 
 @property (readwrite) uint64_t signaledValue; // Read or set signaled value
 
@@ -64,7 +68,7 @@
 
 // MTLSharedEventHandle objects may be passed between processes via XPC connections and then used to recreate
 // a MTLSharedEvent via an existing MTLDevice.
-MTL_EXPORT API_AVAILABLE(macos(10.14), ios(12.0))
+MTL_EXPORT API_AVAILABLE(macos(10.14), ios(12.0)) NS_SWIFT_SENDABLE
 @interface MTLSharedEventHandle : NSObject <NSSecureCoding>
 {
     struct MTLSharedEventHandlePrivate *_priv;
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLFence.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLFence.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLFence.h	2025-04-19 05:10:47
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLFence.h	2025-05-28 02:54:19
@@ -9,7 +9,7 @@
 #import <Metal/MTLDefines.h>
 #import <Metal/MTLDevice.h>
 
-API_AVAILABLE(macos(10.13), ios(10.0))
+API_AVAILABLE(macos(10.13), ios(10.0)) NS_SWIFT_SENDABLE
 @protocol MTLFence <NSObject>
 @property (nonnull, readonly) id <MTLDevice> device;
 
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLFunctionDescriptor.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLFunctionDescriptor.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLFunctionDescriptor.h	2025-04-19 05:10:46
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLFunctionDescriptor.h	2025-05-28 02:54:18
@@ -38,6 +38,12 @@
          * - The function has not been found in the archive
          */
          MTLFunctionOptionFailOnBinaryArchiveMiss API_AVAILABLE(macos(15.0), ios(18.0)) = 1 << 2,
+    /**
+     * @brief Compiles the function to have its function handles return a constant MTLResourceID across
+     * all pipeline states. The function needs to be linked to the pipeline that will use this function.
+     * This function option can only be used for functions that are compiled with `MTLFunctionOptionCompileToBinary`.
+     */
+    MTLFunctionOptionPipelineIndependent API_AVAILABLE(macos(26.0), ios(26.0)) = 1 << 3,
 } API_AVAILABLE(macos(11.0), ios(14.0));
 
 MTL_EXPORT API_AVAILABLE(macos(11.0), ios(14.0))
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLFunctionHandle.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLFunctionHandle.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLFunctionHandle.h	2025-04-19 05:10:46
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLFunctionHandle.h	2025-05-28 02:54:18
@@ -7,13 +7,22 @@
 
 #import <Foundation/Foundation.h>
 #import <Metal/MTLDefines.h>
+#import <Metal/MTLTypes.h>
 #import <Metal/MTLLibrary.h>
 
-API_AVAILABLE(macos(11.0), ios(14.0))
+API_AVAILABLE(macos(11.0), ios(14.0)) NS_SWIFT_SENDABLE
 @protocol MTLFunctionHandle <NSObject>
 @property (readonly) MTLFunctionType functionType;
 @property (readonly, nonnull) NSString* name;
 @property (readonly, nonnull) id<MTLDevice> device;
+
+/*!
+ @property gpuResourceID
+ @abstract Handle of the GPU resource suitable for storing in an Intersection Function Buffer.
+ @discussion The handle must have been created from an intersection function annotated with the `intersection_function_buffer` tag.
+ */
+@property (readonly) MTLResourceID gpuResourceID API_AVAILABLE(macos(26.0), ios(26.0));
+
 @end
 
 #import <Metal/MTLVisibleFunctionTable.h>
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLHeap.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLHeap.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLHeap.h	2025-04-19 04:47:50
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLHeap.h	2025-05-28 04:53:29
@@ -99,6 +99,19 @@
  */
 @property (readwrite, nonatomic) MTLHeapType type API_AVAILABLE(macos(10.15), ios(13.0));
 
+
+/// Specifies the largest sparse page size that the Metal heap supports.
+///
+/// This parameter only affects the heap if you set the ``type`` property of this descriptor
+/// to ``MTLHeapType/MTLHeapTypePlacement``.
+///
+/// The value you assign to this property determines the compatibility of the Metal heap with with placement sparse
+/// resources, because placement sparse resources require that their sparse page size be less than or equal to the
+/// placement sparse page of the Metal heap that this property controls.
+///
+@property (readwrite, nonatomic) MTLSparsePageSize maxCompatiblePlacementSparsePageSize
+API_AVAILABLE(macos(26.0), ios(26.0));
+
 @end
 
 
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIOCommandBuffer.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIOCommandBuffer.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIOCommandBuffer.h	2025-04-19 02:30:03
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIOCommandBuffer.h	2025-05-28 04:53:31
@@ -23,7 +23,7 @@
     MTLIOStatusComplete = 3,
 } API_AVAILABLE(macos(13.0), ios(16.0));
 
-typedef void (^MTLIOCommandBufferHandler)(id<MTLIOCommandBuffer>);
+typedef void (^ NS_SWIFT_SENDABLE MTLIOCommandBufferHandler)(id<MTLIOCommandBuffer>);
 
 /*!
  @protocol MTLIOCommandBuffer
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIOCommandQueue.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIOCommandQueue.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIOCommandQueue.h	2025-04-19 05:10:47
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIOCommandQueue.h	2025-05-28 02:54:19
@@ -43,7 +43,7 @@
  @abstract Represents a queue that schedules command buffers containing command that
  read from handle objects and write to MTLResource objects.
  */
-API_AVAILABLE(macos(13.0), ios(16.0))
+API_AVAILABLE(macos(13.0), ios(16.0)) NS_SWIFT_SENDABLE
 @protocol MTLIOCommandQueue <NSObject>
 
 
@@ -172,7 +172,7 @@
  @abstract Represents a  file (raw or compressed) that can be used as a source
  for load commands encoded in a MTLIOCommandBuffer.
  */
-MTL_EXPORT API_AVAILABLE(macos(13.0), ios(16.0))
+MTL_EXPORT API_AVAILABLE(macos(13.0), ios(16.0)) NS_SWIFT_SENDABLE
 @protocol MTLIOFileHandle <NSObject>
 
 /*!
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIndirectCommandBuffer.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIndirectCommandBuffer.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIndirectCommandBuffer.h	2025-04-19 04:23:54
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIndirectCommandBuffer.h	2025-05-28 04:53:30
@@ -132,6 +132,9 @@
 */
 @property (readwrite, nonatomic) BOOL supportDynamicAttributeStride API_AVAILABLE(macos(14.0), ios(17.0));
 
+/// Specifies if the indirect command buffer should support color attachment mapping.
+@property (nonatomic) BOOL supportColorAttachmentMapping API_AVAILABLE(macos(26.0), ios(26.0));
+
 @end
 
 
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIntersectionFunctionTable.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIntersectionFunctionTable.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIntersectionFunctionTable.h	2025-04-19 02:58:02
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIntersectionFunctionTable.h	2025-05-28 02:54:17
@@ -12,6 +12,30 @@
 #import <Metal/MTLFunctionHandle.h>
 
 /**
+ * @brief struct containing arguments for intersection function buffers.
+ */
+typedef struct {
+    /**
+     * @brief The GPU resource ID of the buffer containing intersection-function handles.
+     * Required to be aligned to 8 bytes.
+     */
+    uint64_t intersectionFunctionBuffer;
+
+    /**
+     * @brief The maximum range in bytes of intersectionFunctionBuffer that can be used
+     * for ray tracing.
+     */
+    uint64_t intersectionFunctionBufferSize;
+
+    /**
+     * @brief The stride between intersection function entries in intersectionFunctionBuffer.
+     * The stride needs to be either 0 or aligned to 8 bytes. Note that only the first 12
+     * bits of this value are used by Metal.
+     */
+    uint64_t intersectionFunctionStride;
+} MTLIntersectionFunctionBufferArguments;
+
+/**
  * @brief Signature defining what data is provided to an intersection function. The signature
  * must match across the shading language declaration of the intersection function table,
  * intersection functions in the table, and the intersector using the table.
@@ -69,6 +93,16 @@
      * as described in the Metal Shading Language Guide.
      */
     MTLIntersectionFunctionSignatureCurveData API_AVAILABLE(macos(14.0), ios(17.0)) = (1 << 7),
+
+    /**
+     * @brief The intersection function will be used with intersection function buffers
+     */
+    MTLIntersectionFunctionSignatureIntersectionFunctionBuffer API_AVAILABLE(macos(26.0), ios(26.0)) = (1 << 8),
+
+    /**
+     * @brief The intersection function uses the intersection function buffer user_data pointer
+     */
+    MTLIntersectionFunctionSignatureUserData API_AVAILABLE(macos(26.0), ios(26.0)) = (1 << 9),
 } MTL_EXPORT API_AVAILABLE(macos(11.0), ios(14.0));
 
 MTL_EXPORT API_AVAILABLE(macos(11.0), ios(14.0))
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLLibrary.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLLibrary.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLLibrary.h	2025-04-19 02:58:04
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLLibrary.h	2025-05-28 02:01:32
@@ -9,6 +9,7 @@
 #import <Metal/MTLDefines.h>
 #import <Metal/MTLResource.h>
 #import <Metal/MTLArgument.h>
+#import <Metal/MTLTypes.h>
 
 
 #import <Metal/MTLFunctionDescriptor.h>
@@ -22,7 +23,30 @@
 @class MTLIntersectionFunctionDescriptor;
 @protocol MTLDynamicLibrary;
 
+@class MTLRenderPipelineReflection;
+@class MTLComputePipelineReflection;
 
+@protocol MTLLibrary;
+@protocol MTLRenderPipelineState;
+@protocol MTLComputePipelineState;
+
+/* Convenience typedefs that make it easy to declare storage for certain return types. */
+typedef __autoreleasing MTLRenderPipelineReflection * __nullable MTLAutoreleasedRenderPipelineReflection;
+typedef __autoreleasing MTLComputePipelineReflection * __nullable MTLAutoreleasedComputePipelineReflection;
+
+typedef void (^MTLNewLibraryCompletionHandler)(id <MTLLibrary> __nullable library, NSError * __nullable error);
+
+typedef void (^MTLNewRenderPipelineStateCompletionHandler)(id <MTLRenderPipelineState> __nullable renderPipelineState, NSError * __nullable error);
+
+typedef void (^MTLNewRenderPipelineStateWithReflectionCompletionHandler)(id <MTLRenderPipelineState> __nullable renderPipelineState, MTLRenderPipelineReflection * _Nullable_result reflection, NSError * __nullable error);
+
+typedef void (^MTLNewComputePipelineStateCompletionHandler)(id <MTLComputePipelineState> __nullable computePipelineState, NSError * __nullable error);
+
+typedef void (^MTLNewComputePipelineStateWithReflectionCompletionHandler)(id <MTLComputePipelineState> __nullable computePipelineState, MTLComputePipelineReflection * _Nullable_result reflection, NSError * __nullable error);
+
+typedef void (^MTLNewDynamicLibraryCompletionHandler)(id<MTLDynamicLibrary> __nullable library, NSError* __nullable error);
+
+
 @protocol MTLArgumentEncoder;
 
 typedef __autoreleasing MTLArgument *__nullable MTLAutoreleasedArgument API_DEPRECATED("Use MTLBinding and cast to specific Binding (MTLTextureBinding, MTLBufferBinding, .etc) instead", macos(10.11, 13.0), ios(8.0, 16.0));
@@ -101,7 +125,7 @@
  @abstract A handle to intermediate code used as inputs for either a MTLComputePipelineState or a MTLRenderPipelineState.
  @discussion MTLFunction is a single vertex shader, fragment shader, or compute function.  A Function can only be used with the device that it was created against.
 */
-API_AVAILABLE(macos(10.11), ios(8.0))
+API_AVAILABLE(macos(10.11), ios(8.0)) NS_SWIFT_SENDABLE
 @protocol MTLFunction <NSObject>
 
 /*!
@@ -195,6 +219,8 @@
     (3 << 16) + 1,
     MTLLanguageVersion3_2 API_AVAILABLE(macos(15.0), ios(18.0)) =
     (3 << 16) + 2,
+    MTLLanguageVersion4_0 API_AVAILABLE(macos(26.0), ios(26.0)) =
+    (4 << 16) + 0,
 } API_AVAILABLE(macos(10.11), ios(9.0));
 
 typedef NS_ENUM(NSInteger, MTLLibraryType) {
@@ -366,12 +392,30 @@
 @property (readwrite, nonatomic) NSUInteger maxTotalThreadsPerThreadgroup API_AVAILABLE(macos(13.3), ios(16.4));
 
 /*!
+ @property requiredThreadsPerThreadgroup
+ @abstract Sets the required threads-per-threadgroup during dispatches. The `threadsPerThreadgroup` argument of any dispatch must match this value if it is set.
+           Optional, unless the pipeline is going to use CooperativeTensors in which case this must be set.
+           Setting this to a size of 0 in every dimension disables this property
+*/
+@property(readwrite, nonatomic) MTLSize requiredThreadsPerThreadgroup API_AVAILABLE(macos(26.0), ios(26.0));
+
+/*!
  @property enableLogging
  @abstract If YES,  set the compiler to enable any logging in the shader. The default is false.
  */
 @property (readwrite, nonatomic) BOOL enableLogging API_AVAILABLE(macos(15.0), ios(18.0));
 @end
 
+/// Represents a reflection object containing information about a function in a Metal library.
+MTL_EXPORT
+API_AVAILABLE(macos(26.0), ios(26.0)) NS_SWIFT_SENDABLE
+@interface MTLFunctionReflection : NSObject
+
+/// Provides a list of inputs and outputs of the function.
+@property (nonnull, readonly) NSArray<id<MTLBinding>> *bindings;
+
+@end
+
 /*!
  @constant MTLLibraryErrorDomain
  @abstract NSErrors raised when creating a library.
@@ -392,7 +436,7 @@
     MTLLibraryErrorFileNotFound API_AVAILABLE(macos(10.12), ios(10.0)) = 6,
 } API_AVAILABLE(macos(10.11), ios(8.0));
 
-API_AVAILABLE(macos(10.11), ios(8.0))
+API_AVAILABLE(macos(10.11), ios(8.0)) NS_SWIFT_SENDABLE
 @protocol MTLLibrary <NSObject>
 
 /*!
@@ -432,6 +476,16 @@
 			completionHandler:(void (^)(id<MTLFunction> __nullable function, NSError* __nullable error))completionHandler API_AVAILABLE(macos(10.12), ios(10.0));
 
 
+/// Returns a reflection object for a matching function name in this library instance.
+///
+/// - Parameters:
+///   - functionName: The name of the function.
+///
+/// - Returns: An object containing the reflection information, or `nil` if no function in the library matches the name.
+///
+- (nullable MTLFunctionReflection *)reflectionForFunctionWithName:(NSString *)functionName API_AVAILABLE(macos(26.0), ios(26.0));
+
+
 /*!
  @method newFunctionWithDescriptor:completionHandler:
  @abstract Create a new MTLFunction object asynchronously.
@@ -489,5 +543,7 @@
  */
 @property (readonly, nullable) NSString* installName API_AVAILABLE(macos(11.0), ios(14.0));
 
+
 @end
+
 NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLLogState.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLLogState.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLLogState.h	2025-04-19 05:10:47
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLLogState.h	2025-05-28 02:54:18
@@ -28,21 +28,21 @@
 }
 API_AVAILABLE(macos(15.0), ios(18.0));
 
-API_AVAILABLE(macos(15.0), ios(18.0))
+API_AVAILABLE(macos(15.0), ios(18.0)) NS_SWIFT_SENDABLE
 @protocol MTLLogState <NSObject>
 /*!
 @method addLogHandler
 @abstract Add a function block to handle log message output.
 In the absence of any handlers, log messages go through the default handler.
 */
-- (void)addLogHandler:(void(^)(NSString* __nullable subSystem, NSString* __nullable category, MTLLogLevel logLevel, NSString* message))block;
+- (void)addLogHandler:(void(^ NS_SWIFT_SENDABLE)(NSString* __nullable subSystem, NSString* __nullable category, MTLLogLevel logLevel, NSString* message))block;
 @end
 
 MTL_EXPORT API_AVAILABLE(macos(15.0), ios(18.0))
 @interface MTLLogStateDescriptor : NSObject <NSCopying>
 /*!
 @abstract level indicates the minimum level of the logs that will be printed.
-@description All the logs with level less than given level will be skipped on the GPU Side.
+@discussion All the logs with level less than given level will be skipped on the GPU Side.
  */
 @property (assign, readwrite) MTLLogLevel level;
 
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLPixelFormat.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLPixelFormat.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLPixelFormat.h	2025-04-19 02:30:03
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLPixelFormat.h	2025-05-28 02:54:19
@@ -222,6 +222,8 @@
     MTLPixelFormatX32_Stencil8  API_AVAILABLE(macos(10.12), ios(10.0)) = 261,
     MTLPixelFormatX24_Stencil8  API_AVAILABLE(macos(10.12), macCatalyst(13.0)) API_UNAVAILABLE(ios) = 262,
 
+    MTLPixelFormatUnspecialized API_AVAILABLE(macos(26.0), ios(26.0)) = 263,
+    
 } API_AVAILABLE(macos(10.11), ios(8.0));
 
 NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRasterizationRate.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRasterizationRate.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRasterizationRate.h	2025-04-19 05:10:46
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRasterizationRate.h	2025-05-28 04:53:28
@@ -240,7 +240,7 @@
  Because a smaller area of the framebuffer is populated, less fragment shader invocations are required to render content, and less bandwidth is consumed to store the shaded values.
  Use a rasterization rate map to reduce rendering quality in less-important or less-sampled regions of the framebuffer, such as the periphery of a VR/AR display or a far-away cascade of a shadow map.
  */
-API_AVAILABLE(macos(10.15.4), ios(13.0), macCatalyst(13.4))
+API_AVAILABLE(macos(10.15.4), ios(13.0), macCatalyst(13.4)) NS_SWIFT_SENDABLE
 @protocol MTLRasterizationRateMap <NSObject>
 
 /*!
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderCommandEncoder.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderCommandEncoder.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderCommandEncoder.h	2025-04-19 02:58:02
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderCommandEncoder.h	2025-05-28 02:48:23
@@ -278,7 +278,6 @@
  */
 - (void)setViewport:(MTLViewport)viewport;
 
-
 /*!
  @method setViewports:
  @brief Specifies an array of viewports, which are used to transform vertices from normalized device coordinates to window coordinates based on [[ viewport_array_index ]] value specified in the vertex shader.
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderPass.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderPass.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderPass.h	2025-04-19 05:10:47
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderPass.h	2025-05-28 02:01:31
@@ -49,6 +49,20 @@
     MTLStoreActionOptionCustomSamplePositions = 1 << 0,
 } API_AVAILABLE(macos(10.13), ios(11.0));
 
+/// This enumeration controls if Metal accumulates visibility results between render encoders or resets them.
+///
+/// You can specify this property for ``MTLRenderCommandEncoders`` and for ``MTL4RenderCommandEncoders`` through
+/// their descriptors' ``MTLRenderCommandEncoder/visibilityResultType`` and ``MTL4RenderCommandEncoder/visibilityResultType``
+/// methods.
+typedef NS_ENUM(NSInteger, MTLVisibilityResultType)
+{
+    /// Reset visibility result data when you create a render command encoder.
+    MTLVisibilityResultTypeReset = 0,
+    
+    /// Accumulate visibility results data across multiple render passes.
+    MTLVisibilityResultTypeAccumulate = 1,
+} API_AVAILABLE(macos(26.0), ios(26.0));
+
 @protocol MTLTexture;
 @protocol MTLBuffer;
 
@@ -386,6 +400,9 @@
  @abstract An array of sample buffers and associated sample indices.
  */
 @property (readonly) MTLRenderPassSampleBufferAttachmentDescriptorArray * sampleBufferAttachments API_AVAILABLE(macos(11.0), ios(14.0));
+
+/// Specifies if Metal accumulates visibility results between render encoders or resets them.
+@property (nonatomic) MTLVisibilityResultType visibilityResultType API_AVAILABLE(macos(26.0), ios(26.0));
 
 @end
 
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderPipeline.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderPipeline.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderPipeline.h	2025-04-19 02:30:02
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderPipeline.h	2025-05-28 02:54:18
@@ -13,6 +13,7 @@
 #import <Metal/MTLArgument.h>
 #import <Metal/MTLFunctionConstantValues.h>
 #import <Metal/MTLPipeline.h>
+#import <Metal/MTLAllocation.h>
 
 
 #import <Metal/MTLLinkedFunctions.h>
@@ -37,10 +38,16 @@
     MTLBlendFactorOneMinusBlendColor = 12,
     MTLBlendFactorBlendAlpha = 13,
     MTLBlendFactorOneMinusBlendAlpha = 14,
-    MTLBlendFactorSource1Color              API_AVAILABLE(macos(10.12), ios(10.11)) = 15,
-    MTLBlendFactorOneMinusSource1Color      API_AVAILABLE(macos(10.12), ios(10.11)) = 16,
-    MTLBlendFactorSource1Alpha              API_AVAILABLE(macos(10.12), ios(10.11)) = 17,
-    MTLBlendFactorOneMinusSource1Alpha      API_AVAILABLE(macos(10.12), ios(10.11)) = 18,
+    MTLBlendFactorSource1Color              API_AVAILABLE(macos(10.12), ios(11.0)) = 15,
+    MTLBlendFactorOneMinusSource1Color      API_AVAILABLE(macos(10.12), ios(11.0)) = 16,
+    MTLBlendFactorSource1Alpha              API_AVAILABLE(macos(10.12), ios(11.0)) = 17,
+    MTLBlendFactorOneMinusSource1Alpha      API_AVAILABLE(macos(10.12), ios(11.0)) = 18,
+    /// Defers assigning the blend factor.
+    ///
+    /// Until you specialize this value in the pipeline state, it:
+    /// * behaves as `MTLBlendFactorOne` for `sourceRGBBlendFactor` and `sourceAlphaBlendFactor`
+    /// * behaves as `MTLBlendFactorZero` for `destinationRGBBlendFactor` and `destinationAlphaBlendFactor`
+    MTLBlendFactorUnspecialized API_AVAILABLE(macos(26.0), ios(26.0)) = 19,
 } API_AVAILABLE(macos(10.11), ios(8.0));
 
 typedef NS_ENUM(NSUInteger, MTLBlendOperation) {
@@ -49,6 +56,11 @@
     MTLBlendOperationReverseSubtract = 2,
     MTLBlendOperationMin = 3,
     MTLBlendOperationMax = 4,
+    /// Defers assigning the blend operation.
+    ///
+    // Until you specialize this value in the pipeline state, it behaves as `MTLBlendOperationAdd`.
+    MTLBlendOperationUnspecialized API_AVAILABLE(macos(26.0), ios(26.0)) = 5,
+
 } API_AVAILABLE(macos(10.11), ios(8.0));
 
 typedef NS_OPTIONS(NSUInteger, MTLColorWriteMask) {
@@ -57,7 +69,11 @@
     MTLColorWriteMaskGreen = 0x1 << 2,
     MTLColorWriteMaskBlue  = 0x1 << 1,
     MTLColorWriteMaskAlpha = 0x1 << 0,
-    MTLColorWriteMaskAll   = 0xf
+    MTLColorWriteMaskAll   = 0xf,
+    /// Defers assigning the color write mask.
+    ///
+    /// Until you specialize this value in the pipeline state, it behaves as `MTLColorWriteMaskAll`.
+    MTLColorWriteMaskUnspecialized API_AVAILABLE(macos(26.0), ios(26.0)) = 0x10,
 } API_AVAILABLE(macos(10.11), ios(8.0));
 
 typedef NS_ENUM(NSUInteger, MTLPrimitiveTopologyClass) {
@@ -128,7 +144,7 @@
 @end
 
 
-MTL_EXPORT API_AVAILABLE(macos(10.11), ios(8.0))
+MTL_EXPORT API_AVAILABLE(macos(10.11), ios(8.0)) NS_SWIFT_SENDABLE
 @interface MTLRenderPipelineReflection : NSObject
 
 @property (nonnull, readonly) NSArray <id<MTLBinding>> *vertexBindings API_AVAILABLE(macos(13.0), ios(16.0));
@@ -293,18 +309,80 @@
 @property (nullable, nonatomic, copy) NSArray<id<MTLFunction>> *tileAdditionalBinaryFunctions;
 @end
 
+@class MTL4RenderPipelineBinaryFunctionsDescriptor;
+@class MTL4PipelineDescriptor;
+
 /*!
  @protocol MTLRenderPipelineState
  @abstract MTLRenderPipelineState represents a compiled render pipeline
  
  @discussion MTLRenderPipelineState is a compiled render pipeline and can be set on a MTLRenderCommandEncoder.
  */
-API_AVAILABLE(macos(10.11), ios(8.0))
-@protocol MTLRenderPipelineState <NSObject>
+API_AVAILABLE(macos(10.11), ios(8.0)) NS_SWIFT_SENDABLE
+@protocol MTLRenderPipelineState <MTLAllocation, NSObject>
 
 @property (nullable, readonly) NSString *label;
 @property (readonly) id <MTLDevice> device;
 
+/// Obtains a reflection object for this render pipeline.
+///
+/// When you create the pipeline through an ``MTLDevice`` instance, reflection is `nil`.
+@property (nullable, readonly) MTLRenderPipelineReflection* reflection API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// Obtains a function handle for the a specific function this pipeline links at the Metal IR level.
+///
+/// - Parameters:
+///   - name: A string containing the name of the function.
+///   - stage: The shader stage that uses the function.
+///
+/// - Returns: a function handle representing the function if present, otherwise `nil`.
+- (nullable id<MTLFunctionHandle>)functionHandleWithName:(NSString*)name
+                                                   stage:(MTLRenderStages)stage API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// Obtains the function handle for a specific function this pipeline state links at the binary level.
+///
+/// - Parameters:
+///   - function: a binary function to retrieve the handle.
+///   - stage: The shader stage that uses the function.
+///
+/// - Returns: a function handle representing the function if present, otherwise `nil`.
+- (nullable id<MTLFunctionHandle>)functionHandleWithBinaryFunction:(id<MTL4BinaryFunction>)function
+                                                             stage:(MTLRenderStages)stage API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// Creates a new render pipeline state by adding binary functions to each stage of this pipeline
+/// state.
+///
+/// - Parameters:
+///   - binaryFunctionsDescriptor: A non-`nil` dynamic linking descriptor.
+///   - error: An optional pointer that Metal populates with information in case of an error.
+///
+/// - Returns: A new render pipeline state upon success, otherwise `nil`.
+///
+- (nullable id<MTLRenderPipelineState>)newRenderPipelineStateWithBinaryFunctions:(MTL4RenderPipelineBinaryFunctionsDescriptor*)binaryFunctionsDescriptor
+                                                                           error:(NSError**)error API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// Creates a render pipeline descriptor from this pipeline that you can use for pipeline specialization.
+///
+/// Use this method to obtain a new ``MTL4PipelineDescriptor`` instance that you can use to specialize any unspecialized
+/// properties in this pipeline state object.
+///
+/// The returned descriptor contains every unspecialized field in the current pipeline state object, set to unspecialized.
+/// It may, however, not contain valid or accurate properties in any other field.
+///
+/// This descriptor is only valid for the purpose of calling specialization functions on the ``MTL4Compiler`` to
+/// specialize this pipeline, for example: ``MTL4Compiler/newRenderPipelineStateBySpecializationWithDescriptor:pipeline:error:``.
+///
+/// Although this method returns the ``MTL4PipelineDescriptor`` base class, the concrete instance this method returns
+/// corresponds to the specific descriptor type for the creation of this pipeline state, for example if a ``MTL4Compiler``
+/// instance creates this current pipeline form a ``MTLTileRenderPipelineDescriptor``, this method returns a concrete
+/// ``MTLTileRenderPipelineDescriptor`` instance.
+///
+/// - Returns: a new pipeline descriptor that you use for pipeline state specialization.
+///
+- (MTL4PipelineDescriptor*)newRenderPipelineDescriptorForSpecialization
+    API_AVAILABLE(macos(26.0), ios(26.0));
+
+
 /*!
  @property maxTotalThreadsPerThreadgroup
  @abstract The maximum total number of threads that can be in a single tile shader threadgroup.
@@ -406,6 +484,26 @@
  */
 @property (readonly, nonatomic) MTLShaderValidation shaderValidation API_AVAILABLE(macos(15.0), ios(18.0));
 
+/*!
+ @property requiredThreadsPerTileThreadgroup
+ @abstract The required size of every tile shader threadgroup.
+*/
+@property (readonly) MTLSize requiredThreadsPerTileThreadgroup API_AVAILABLE(macos(26.0), ios(26.0));
+
+/*!
+ @property requiredThreadsPerObjectThreadgroup
+ @abstract The required size of every object shader threadgroup.
+ @discussion This value is set in MTLMeshRenderPipelineDescriptor.
+*/
+@property (readonly) MTLSize requiredThreadsPerObjectThreadgroup API_AVAILABLE(macos(26.0), ios(26.0));
+
+/*!
+ @property requiredThreadsPerMeshThreadgroup
+ @abstract The required size of every mesh shader threadgroup.
+ @discussion This value is set in MTLMeshRenderPipelineDescriptor.
+*/
+@property (readonly) MTLSize requiredThreadsPerMeshThreadgroup API_AVAILABLE(macos(26.0), ios(26.0));
+
 @end
 
 MTL_EXPORT API_AVAILABLE(macos(10.11), ios(8.0))
@@ -527,6 +625,14 @@
  */
 @property (readwrite, nonatomic) MTLShaderValidation shaderValidation API_AVAILABLE(macos(15.0), ios(18.0));
 
+/*!
+ @property requiredThreadsPerThreadgroup
+ @abstract Sets the required threads-per-threadgroup during tile dispatches. The `threadsPerTile` argument of any tile dispatch must match to this value if it is set.
+           Optional, unless the pipeline is going to use CooperativeTensors in which case this must be set.
+           Setting this to a size of 0 in every dimension disables this property
+*/
+@property(readwrite, nonatomic) MTLSize requiredThreadsPerThreadgroup API_AVAILABLE(macos(26.0), ios(26.0));
+
 @end
 
 
@@ -744,6 +850,22 @@
  @discussion The value can be overridden using `MTL_SHADER_VALIDATION_ENABLE_PIPELINES` or `MTL_SHADER_VALIDATION_DISABLE_PIPELINES` Environment Variables.
  */
 @property (readwrite, nonatomic) MTLShaderValidation shaderValidation API_AVAILABLE(macos(15.0), ios(18.0));
+
+/*!
+ @property requiredThreadsPerObjectThreadgroup
+ @abstract Sets the required object threads-per-threadgroup during mesh draws. The `threadsPerObjectThreadgroup` argument of any draw must match to this value if it is set.
+           Optional, unless the pipeline is going to use CooperativeTensors in which case this must be set.
+           Setting this to a size of 0 in every dimension disables this property
+*/
+@property (readwrite, nonatomic) MTLSize requiredThreadsPerObjectThreadgroup API_AVAILABLE(macos(26.0), ios(26.0));
+
+/*!
+ @property requiredThreadsPerMeshThreadgroup
+ @abstract Sets the required mesh threads-per-threadgroup during mesh draws. The `threadsPerMeshThreadgroup` argument of any draw must match to this value if it is set.
+           Optional, unless the pipeline is going to use CooperativeTensors in which case this must be set.
+           Setting this to a size of 0 in every dimension disables this property
+*/
+@property (readwrite, nonatomic) MTLSize requiredThreadsPerMeshThreadgroup API_AVAILABLE(macos(26.0), ios(26.0));
 
 @end
 
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLResource.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLResource.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLResource.h	2025-04-19 03:31:07
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLResource.h	2025-05-28 04:53:31
@@ -187,6 +187,68 @@
     MTLResourceOptionCPUCacheModeWriteCombined API_DEPRECATED_WITH_REPLACEMENT("MTLResourceCPUCacheModeWriteCombined", macos(10.11, 13.0), ios(8.0, 16.0)) = MTLResourceCPUCacheModeWriteCombined,
 } API_AVAILABLE(macos(10.11), ios(8.0));
 
+/*!
+ @enum MTLSparsePageSize
+ @abstract Physical size of sparse resource page in KBs.
+ */
+typedef NS_ENUM(NSInteger, MTLSparsePageSize)
+{
+    MTLSparsePageSize16 = 101,
+    MTLSparsePageSize64 = 102,
+    MTLSparsePageSize256 = 103,
+} API_AVAILABLE(macos(13.0), ios(16.0));
+
+
+/// Enumerates the different support levels for sparse buffers.
+typedef NS_ENUM(NSInteger, MTLBufferSparseTier)
+{
+    /// Indicates that the buffer is not sparse.
+    MTLBufferSparseTierNone = 0,
+    
+    /// Indicates support for sparse buffers tier 1.
+    ///
+    /// Tier 1 sparse buffers allow the following:
+    /// * Partial memory backing at sparse page granularity.
+    /// * Defined behavior for accessing an *unbacked* buffer range.
+    ///
+    /// An unbacked buffer range indicates a range within the buffer that doesn't
+    /// have memory backing at a given point in time. Accessing an unbacked buffer
+    /// range of a sparse buffer produces the following results:
+    /// * Reading return zero.
+    /// * Writing produces no result.
+    MTLBufferSparseTier1 = 1,
+} API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// Enumerates the different support levels for sparse textures.
+typedef NS_ENUM(NSInteger, MTLTextureSparseTier)
+{
+    /// Indicates that the texture is not sparse.
+    MTLTextureSparseTierNone = 0,
+    
+    /// Indicates support for sparse textures tier 1.
+    ///
+    /// Tier 1 sparse textures allow the following:
+    /// * Partial memory backing at sparse tile granularity.
+    /// * Defined behavior for accessing an unbacked texture region.
+    /// * Shader feedback on texture access to determine memory backing.
+    ///
+    /// An unbacked texture region indicates a region within the texture that doesn't
+    /// have memory backing at a given point in time. Accessing an unbacked texture
+    /// region produces the following results:
+    /// * Reading returns zero (transparent black) for pixel formats with an alpha (A) channel.
+    /// * Reading return zero in RGB and one in alpha (A) channels (opaque black) otherwise.
+    /// * Writing produces no result.
+    MTLTextureSparseTier1 = 1,
+    
+    /// Indicates support for sparse textures tier 2.
+    ///
+    /// In addition to the guarantees tier 1 sparse textures provide,
+    /// tier 2 sparse textures allow the following:
+    /// * Obtain per-tile activity counters.
+    MTLTextureSparseTier2 = 2,
+} API_AVAILABLE(macos(26.0), ios(26.0));
+
+
 @protocol MTLDevice;
 
 @protocol MTLHeap;
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLResourceViewPool.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLResourceViewPool.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLResourceViewPool.h	1969-12-31 19:00:00
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLResourceViewPool.h	2025-05-28 02:54:17
@@ -0,0 +1,66 @@
+//
+//  MTLResourceViewPool.h
+//  Metal
+//
+//  Copyright © 2024 Apple, Inc. All rights reserved.
+//
+
+#ifndef MTLResourceViewPool_h
+#define MTLResourceViewPool_h
+
+#import <Metal/MTLDefines.h>
+#import <Metal/MTLAllocation.h>
+#import <Metal/MTLDevice.h>
+#import <Metal/MTLTypes.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+
+/// Provides parameters for creating a resource view pool.
+MTL_EXPORT
+API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTLResourceViewPoolDescriptor : NSObject <NSCopying>
+
+/// Configures the number of resource views with which Metal creates the resource view pool.
+@property (readwrite, nonatomic) NSUInteger resourceViewCount;
+
+/// Assigns an optional label you to the resource view pool for debugging purposes.
+@property (nullable, copy, nonatomic) NSString *label;
+
+@end
+
+/// Contains views over resources of a specific type, and allows you to manage those views.
+API_AVAILABLE(macos(26.0), ios(26.0))
+@protocol MTLResourceViewPool <NSObject>
+
+/// Obtains the resource ID corresponding to the resource view at index 0 in this resource view pool.
+@property (readonly, nonatomic) MTLResourceID baseResourceID;
+
+/// Queries the number of resource views that this pool contains.
+@property (readonly, nonatomic) NSUInteger resourceViewCount;
+
+/// Obtains a reference to the GPU device this pool belongs to.
+@property (readonly) id<MTLDevice> device;
+
+/// Queries the optional debug label of this resource view pool.
+@property (nullable, readonly, nonatomic) NSString *label;
+
+/// Copies a range of resource views from a source view pool to a destination location in this view pool.
+///
+/// - Parameters:
+///   - sourcePool: resource view pool from which to copy resource views.
+///   - sourceRange: The range in the source resource view pool to copy.
+///   - destinationIndex: The starting index in this destination view pool into which to copy the source range of resource views.
+///
+/// - Returns: The ``MTLResourceID`` of the resource view corresponding to `destinationIndex` of the copy in this resource view pool.
+- (MTLResourceID)copyResourceViewsFromPool:(id<MTLResourceViewPool>)sourcePool
+                               sourceRange:(NSRange)sourceRange
+                          destinationIndex:(NSUInteger)destinationIndex;
+
+@end
+
+
+NS_ASSUME_NONNULL_END
+
+#endif //MTLResourceViewPool_h
+
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLSampler.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLSampler.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLSampler.h	2025-04-19 03:54:20
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLSampler.h	2025-05-28 03:18:53
@@ -204,7 +204,7 @@
  @protocol MTLSamplerState
  @abstract An immutable collection of sampler state compiled for a single device.
  */
-API_AVAILABLE(macos(10.11), ios(8.0))
+API_AVAILABLE(macos(10.11), ios(8.0)) NS_SWIFT_SENDABLE
 @protocol MTLSamplerState <NSObject>
 
 /*!
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLStageInputOutputDescriptor.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLStageInputOutputDescriptor.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLStageInputOutputDescriptor.h	2025-04-19 04:23:53
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLStageInputOutputDescriptor.h	2025-05-28 02:54:18
@@ -8,6 +8,7 @@
 #import <Metal/MTLDefines.h>
 #import <Metal/MTLDevice.h>
 #import <Metal/MTLVertexDescriptor.h>
+#import <Metal/MTLArgument.h>
 
 
 
@@ -92,13 +93,6 @@
     MTLAttributeFormatFloatRGB9E5 API_AVAILABLE(macos(14.0), ios(17.0)) = 55,
     
 } API_AVAILABLE(macos(10.12), ios(10.0));
-
-
-typedef NS_ENUM(NSUInteger, MTLIndexType) {
-    MTLIndexTypeUInt16 = 0,
-    MTLIndexTypeUInt32 = 1,
-} API_AVAILABLE(macos(10.11), ios(8.0));
-
 
 typedef NS_ENUM(NSUInteger, MTLStepFunction)
 {
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLTensor.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLTensor.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLTensor.h	1969-12-31 19:00:00
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLTensor.h	2025-05-28 02:49:12
@@ -0,0 +1,212 @@
+//
+//  MTLTensor.h
+//  Metal
+//
+//  Created by Vatsin Suchak on 2024/9/17.
+//  Copyright © 2024 Apple, Inc. All rights reserved.
+//
+
+#ifndef MTLTensor_h
+#define MTLTensor_h
+
+#import <Metal/MTLDefines.h>
+#import <Metal/MTLTypes.h>
+#import <Metal/MTLResource.h>
+#import <Metal/MTLDataType.h>
+
+
+/// The possible data types for the elements of a tensor.
+typedef NS_ENUM(NSInteger, MTLTensorDataType)
+{
+    MTLTensorDataTypeNone     = MTLDataTypeNone,
+    MTLTensorDataTypeFloat32  = MTLDataTypeFloat,
+    MTLTensorDataTypeFloat16  = MTLDataTypeHalf,
+    MTLTensorDataTypeBFloat16 = MTLDataTypeBFloat,
+    MTLTensorDataTypeInt8     = MTLDataTypeChar,
+    MTLTensorDataTypeUInt8    = MTLDataTypeUChar,
+    MTLTensorDataTypeInt16    = MTLDataTypeShort,
+    MTLTensorDataTypeUInt16   = MTLDataTypeUShort,
+    MTLTensorDataTypeInt32    = MTLDataTypeInt,
+    MTLTensorDataTypeUInt32   = MTLDataTypeUInt,
+} API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// The largest rank a tensor can have.
+#define MTL_TENSOR_MAX_RANK 16
+
+/// An array of length matching the rank, holding the dimensions of a tensor.
+///
+/// Supports rank up to ``MTL_TENSOR_MAX_RANK``.
+MTL_EXPORT API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTLTensorExtents : NSObject
+
+/// Creates a new tensor extents with the rank and extent values you provide.
+///
+/// Zero rank extents represent scalars. `values` can only be `nil`if `rank` is 0.
+/// - Parameters:
+///   - rank: the number of dimensions.
+///   - values: an array of length `rank` that specifies the size of each dimension. The first dimension is the innermost dimension.
+/// - Returns: Tensor extents with the rank and extent values you provide. Returns `nil` if `rank` exceeds 0 and `values` is nil or if `rank` exceeds ``MTL_TENSOR_MAX_RANK``.
+- (nullable instancetype)initWithRank:(NSUInteger)rank values:(nullable const NSInteger *)values;
+
+
+/// Obtains the rank of the tensor.
+///
+/// The rank represents the number of dimensions.
+@property (readonly) NSUInteger rank;
+
+/// Returns the extent at an index.
+///
+/// - Parameters:
+///   - dimensionIndex: the index of the dimension. The first dimension is the innermost dimension.
+/// - Returns: the extent at `dimensionIndex`. This method returns -1 if `dimensionIndex` is greater than or equal to `rank`.
+- (NSInteger)extentAtDimensionIndex:(NSUInteger)dimensionIndex;
+
+@end
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+@protocol MTLBuffer;
+
+/// An error domain for errors that pertain to creating a tensor.
+MTL_EXTERN NSErrorDomain const MTLTensorDomain API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// The error codes that Metal can raise when you create a tensor.
+typedef NS_ENUM(NSUInteger, MTLTensorError)
+{
+    MTLTensorErrorNone              = 0,
+    MTLTensorErrorInternalError     = 1,
+    MTLTensorErrorInvalidDescriptor = 2,
+} API_AVAILABLE(macos(26.0), ios(26.0));
+
+/// The type that represents the different contexts for a tensor.
+typedef NS_OPTIONS(NSInteger, MTLTensorUsage)
+{
+    /// A tensor context that applies to compute encoders.
+    ///
+    /// You can use tensors with this context in ``MTL4ComputeCommandEncoder`` or ``MTLComputeCommandEncoder`` instances.
+    MTLTensorUsageCompute = 1 << 0,
+    /// A tensor context that applies to render encoders.
+    ///
+    /// You can use tensors with this context in ``MTL4RenderCommandEncoder`` or ``MTLRenderCommandEncoder`` instances.
+    MTLTensorUsageRender  = 1 << 1,
+    /// A tensor context that applies to machine learning encoders.
+    ///
+    /// You can use tensors with this context in ``MTL4MachineLearningCommandEncoder`` instances.
+    MTLTensorUsageMachineLearning      = 1 << 2,
+} API_AVAILABLE(macos(26.0), ios(26.0));
+
+
+/// A configuration type for creating new tensor instances.
+MTL_EXPORT API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTLTensorDescriptor : NSObject <NSCopying>
+
+/// An array of sizes, in elements, one for each dimension of the tensors you create with this descriptor.
+///
+/// The default value of this property is a rank one extents with size one.
+@property (readwrite, nonatomic, copy) MTLTensorExtents *dimensions;
+
+/// An array of strides, in elements, one for each dimension in the tensors you create with this descriptor, if applicable.
+///
+/// This property only applies to tensors you create from a buffer, otherwise it is nil. You are responsible for ensuring `strides` meets the following requirements:
+/// - Elements of `strides`are in monotonically non-decreasing order.
+/// - The first element of `strides` is one.
+/// - For any `i` larger than zero, `strides[i]` is greater than or equal to `strides[i-1] * dimensions[i-1]`.
+/// - If `usage` contains ``MTLTensorUsage/MTLTensorUsageMachineLearning``, the second element of `strides` is aligned to 64 bytes, and for any `i` larger than one, `strides[i]` is equal to `strides[i-1] * dimensions[i-1]`.
+@property (readwrite, nonatomic, copy) MTLTensorExtents *strides;
+
+/// A data format for the tensors you create with this descriptor.
+///
+/// The default value of this property is ``MTLTensorDataType/MTLTensorDataTypeFloat32``.
+@property (readwrite, nonatomic) MTLTensorDataType dataType;
+
+/// A set of contexts in which you can use tensors you create with this descriptor.
+///
+/// The default value for this property is a bitwise `OR` of:
+/// - ``MTLTensorUsage/MTLTensorUsageRender``
+/// - ``MTLTensorUsage/MTLTensorUsageCompute``
+@property (readwrite, nonatomic) MTLTensorUsage usage;
+
+/// A packed set of the `storageMode`, `cpuCacheMode` and `hazardTrackingMode` properties.
+@property (readwrite, nonatomic) MTLResourceOptions resourceOptions;
+
+/// A value that configures the cache mode of CPU mapping of tensors you create with this descriptor.
+///
+/// The default value of this property is ``MTLCPUCacheMode/MTLCPUCacheModeDefaultCache``.
+@property (readwrite, nonatomic) MTLCPUCacheMode cpuCacheMode;
+
+/// A value that configures the memory location and access permissions of tensors you create with this descriptor.
+///
+/// The default value of this property defaults to ``MTLStorageMode/MTLStorageModeShared``.
+@property (readwrite, nonatomic) MTLStorageMode storageMode;
+
+/// A value that configures the hazard tracking of tensors you create with this descriptor.
+///
+/// The default value of this property is ``MTLHazardTrackingMode/MTLHazardTrackingModeDefault``.
+@property (readwrite, nonatomic) MTLHazardTrackingMode hazardTrackingMode;
+
+@end
+
+
+/// A resource representing a multi-dimensional array that you can use with machine learning workloads.
+MTL_EXTERN API_AVAILABLE(macos(26.0), ios(26.0))
+@protocol MTLTensor <MTLResource>
+
+/// A handle that represents the GPU resource, which you can store in an argument buffer.
+@property (readonly) MTLResourceID gpuResourceID;
+
+/// A buffer instance this tensor shares its storage with or nil if this tensor does not wrap an underlying buffer.
+@property (nullable, readonly) id<MTLBuffer> buffer;
+
+/// An offset, in bytes, into the buffer instance this tensor shares its storage with, or zero if this tensor does not wrap an underlying buffer.
+@property (readonly) NSUInteger bufferOffset;
+
+/// An array of strides, in elements, one for each dimension of this tensor.
+///
+/// This property only applies if this tensor shares its storage with a buffer, otherwise it's nil.
+@property (readonly) MTLTensorExtents *strides;
+
+/// An array of sizes, in elements, one for each dimension of this tensor.
+@property (readonly) MTLTensorExtents *dimensions;
+
+/// An underlying data format of this tensor.
+@property (readonly) MTLTensorDataType dataType;
+
+/// A set of contexts in which you can use this tensor.
+@property (readonly) MTLTensorUsage usage;
+
+/// Replaces the contents of a slice of this tensor with data you provide.
+///
+/// - Parameters:
+///   - sliceOrigin: An array of offsets, in elements, to the first element of the slice that this method writes data to.
+///   - sliceDimensions: An array of sizes, in elements, of the slice this method writes data to.
+///   - bytes: A pointer to bytes of data that this method copies into the slice you specify with `sliceOrigin` and `sliceDimensions`.
+///   - strides: An array of strides, in elements, that describes the layout of the data in `bytes`. You are responsible for ensuring `strides` meets the following requirements:
+///     - Elements of `strides`are in monotonically non-decreasing order.
+///     - For any `i` larger than zero, `strides[i]` is greater than or equal to `strides[i-1] * dimensions[i-1]`.
+- (void)replaceSliceOrigin:(MTLTensorExtents *)sliceOrigin
+           sliceDimensions:(MTLTensorExtents *)sliceDimensions
+                 withBytes:(const void *)bytes
+                   strides:(MTLTensorExtents *)strides;
+
+/// Copies the data corresponding to a slice of this tensor into a pointer you provide.
+///
+/// - Parameters:
+///   - bytes: A pointer to bytes of data that this method copies into the slice you specify with `sliceOrigin` and `sliceDimensions`.
+///   - strides: An array of strides, in elements, that describes the layout of the data in `bytes`. You are responsible for ensuring `strides` meets the following requirements:
+///     - Elements of `strides`are in monotonically non-decreasing order.
+///     - For any `i` larger than zero, `strides[i]` is greater than or equal to `strides[i-1] * dimensions[i-1]`.
+///   - sliceOrigin: An array of offsets, in elements, to the first element of the slice that this method reads data from.
+///   - sliceDimensions: An array of sizes, in elements, of the slice this method reads data from.
+- (void)getBytes:(void *)bytes
+         strides:(MTLTensorExtents *)strides
+ fromSliceOrigin:(MTLTensorExtents *)sliceOrigin
+ sliceDimensions:(MTLTensorExtents *)sliceDimensions;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+
+
+#endif // MTLTensor_h
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLTexture.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLTexture.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLTexture.h	2025-04-19 02:30:01
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLTexture.h	2025-05-28 02:01:29
@@ -251,9 +251,57 @@
  */
 @property (readwrite, nonatomic) MTLTextureSwizzleChannels swizzle API_AVAILABLE(macos(10.15), ios(13.0));
 
+/// Determines the page size for a placement sparse texture.
+///
+/// Set this property to a non-zero value to create a *placement sparse texture*.
+///
+/// Placement sparse textures are instances of ``MTLTexture`` that you assign memory to using a ``MTLHeap`` instance
+/// of type ``MTLHeapType/MTLHeapTypePlacement`` and a ``MTLHeapDescriptor/maxCompatiblePlacementSparsePageSize``
+/// at least as large as the ``MTLSparsePageSize`` value you assign to this property.
+///
+/// This value is 0 by default.
+@property (readwrite, nonatomic) MTLSparsePageSize placementSparsePageSize API_AVAILABLE(macos(26.0), ios(26.0));
+
 @end
 
+
+MTL_EXPORT API_AVAILABLE(macos(26.0), ios(26.0))
+@interface MTLTextureViewDescriptor : NSObject <NSCopying>
+
 /*!
+ @property pixelFormat
+ @abstract A desired pixel format of a texture view.
+ */
+@property (readwrite, nonatomic) MTLPixelFormat pixelFormat;
+
+/*!
+ @property textureType
+ @abstract A desired texture view of a texture view.
+ */
+@property (readwrite, nonatomic) MTLTextureType textureType;
+
+/*!
+ @property levelRange
+ @abstract A desired range of mip levels of a texture view.
+ */
+@property (readwrite, nonatomic) NSRange levelRange;
+
+/*!
+ @property sliceRange
+ @abstract A desired range of slices of a texture view.
+ */
+@property (readwrite, nonatomic) NSRange sliceRange;
+
+/*!
+ @property swizzle
+ @abstract A desired swizzle format of a texture view.
+ */
+@property (readwrite, nonatomic) MTLTextureSwizzleChannels swizzle;
+ 
+@end
+
+
+/*!
  @protocol MTLTexture
  @abstract MTLTexture represents a collection of 1D, 2D, or 3D images.
  @discussion
@@ -469,8 +517,14 @@
  */
 - (nullable MTLSharedTextureHandle *)newSharedTextureHandle API_AVAILABLE(macos(10.14), ios(13.0));
 
+/*!
+ @method newTextureViewWithDescriptor:
+ @abstract Create a new texture which shares the same storage as the source texture, but with different (but compatible) properties specified by the descriptor
+ */
+- (nullable id<MTLTexture>)newTextureViewWithDescriptor:(MTLTextureViewDescriptor *)descriptor API_AVAILABLE(macos(26.0), ios(26.0));
 
 
+
 /*!
  @property swizzle
  @abstract The channel swizzle used when reading or sampling from this texture
@@ -482,6 +536,12 @@
  @abstract Create a new texture which shares the same storage as the source texture, but with a different (but compatible) pixel format, texture type, levels, slices and swizzle. 
  */
 - (nullable id<MTLTexture>)newTextureViewWithPixelFormat:(MTLPixelFormat)pixelFormat textureType:(MTLTextureType)textureType levels:(NSRange)levelRange slices:(NSRange)sliceRange swizzle:(MTLTextureSwizzleChannels)swizzle API_AVAILABLE(macos(10.15), ios(13.0));
+
+/*!
+ @property sparseTextureTier
+ @abstract Query support tier for sparse textures.
+ */
+@property (readonly) MTLTextureSparseTier sparseTextureTier API_AVAILABLE(macos(26.0), ios(26.0));
 
 @end
 NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLTextureViewPool.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLTextureViewPool.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLTextureViewPool.h	1969-12-31 19:00:00
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLTextureViewPool.h	2025-05-28 02:54:17
@@ -0,0 +1,72 @@
+//
+//  MTLTextureViewPool.h
+//  Metal
+//
+//  Copyright © 2024 Apple, Inc. All rights reserved.
+//
+
+#ifndef MTLTextureViewPool_h
+#define MTLTextureViewPool_h
+
+#import <Metal/MTLResourceViewPool.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+
+/// A pool of lightweight texture views.
+///
+/// Use texture view pools to create lightweight texture view objects of ``MTLTexture``
+/// and ``MTLBuffer`` instances.
+API_AVAILABLE(macos(26.0), ios(26.0))
+@protocol MTLTextureViewPool <MTLResourceViewPool>
+
+/// Copies a default texture view to a slot in this texture view pool at an index provided.
+///
+/// - Parameters:
+///   - texture: An ``MTLTexture`` instance for which to copy its texture view.
+///   - index: An index of a slot in this texture pool into which this method copies the texture view.
+/// - Returns: The ``MTLResourceID`` of a newly created texture view in this pool.
+- (MTLResourceID)setTextureView:(id<MTLTexture>)texture
+                        atIndex:(NSUInteger)index;
+
+/// Creates a new lightweight texture view.
+///
+/// This method creates a lightweight texture view over a texture according to
+/// a descriptor you provide. It then associates the texture view with a slot
+/// in this texture view pool at the index you specify.
+///
+/// - Parameters:
+///   - texture: An ``MTLTexture`` instance for which to create a new lightweight texture view.
+///   - descriptor: A descriptor specifying properties of the texture view to create.
+///   - index: An index of a slot in the texture pool into which this method writes the new texture view.
+/// - Returns: The ``MTLResourceID`` of a newly created texture view in this pool.
+- (MTLResourceID)setTextureView:(id<MTLTexture>)texture
+                     descriptor:(MTLTextureViewDescriptor *)descriptor
+                        atIndex:(NSUInteger)index;
+
+/// Creates a new lightweight texture view of a buffer.
+///
+/// This method creates a lightweight texture view over a buffer, according to
+/// a descriptor you provide. It then associates the texture view with a slot
+/// in this texture view pool at the index you specify.
+///
+/// - Parameters:
+///   - buffer: An ``MTLBuffer`` instance for which to create a new texture view.
+///   - descriptor: A descriptor specifying properties of the texture view to create.
+///   - offset: A byte offset, within the `buffer` parameter, at which the data for the texture view starts.
+///   - bytesPerRow: The number of bytes between adjacent rows of pixels in the source buffer’s memory.
+///   - index: An index of a slot in the table into which this method writes the new texture view.
+/// - Returns: The ``MTLResourceID`` of a new buffer view in this pool.
+- (MTLResourceID)setTextureViewFromBuffer:(id<MTLBuffer>)buffer
+                               descriptor:(MTLTextureDescriptor *)descriptor
+                                   offset:(NSUInteger)offset
+                              bytesPerRow:(NSUInteger)bytesPerRow
+                                  atIndex:(NSUInteger)index;
+
+
+@end
+
+
+NS_ASSUME_NONNULL_END
+
+#endif //MTLTextureViewPool_h
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLTypes.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLTypes.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLTypes.h	2025-04-19 05:10:47
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLTypes.h	2025-05-28 02:54:18
@@ -105,9 +105,9 @@
 
 /*!
  @typedef MTLResourceID
- @abstract Handle of the GPU resource suitable for storing in an Argument Buffer
+ @abstract Handle of the GPU resource used for binding resources to argument tables, navigating resource view pools and storing resources in an argument buffer
  @discussion
- A MTLResourceID represents a specific GPU resource, mutating this handle is undefined unless the mutation results in the value equalling an already existing handle of the same resource type.
+ MTLResourceID represents a specific GPU resource. This handle can be mutated by modifying textureID or samplerID values to get to individual resource views in a resource view pool.
  */
 typedef struct MTLResourceID
 {
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/Metal.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/Metal.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/Metal.h	2025-04-19 05:10:45
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/Metal.h	2025-05-28 02:54:16
@@ -57,4 +57,37 @@
 #import <Metal/MTLIOCommandBuffer.h>
 #import <Metal/MTLIOCompressor.h>
 #import <Metal/MTLResidencySet.h>
-
+#import <Metal/MTLTensor.h>
+#import <Metal/MTLResourceViewPool.h>
+#import <Metal/MTLTextureViewPool.h>
+#import <Metal/MTLDataType.h>
+#import <Metal/MTL4ArgumentTable.h>
+#import <Metal/MTL4BinaryFunction.h>
+#import <Metal/MTL4CommandAllocator.h>
+#import <Metal/MTL4CommandBuffer.h>
+#import <Metal/MTL4CommandEncoder.h>
+#import <Metal/MTL4CommandQueue.h>
+#import <Metal/MTL4Counters.h>
+#import <Metal/MTL4RenderPass.h>
+#import <Metal/MTL4RenderCommandEncoder.h>
+#import <Metal/MTL4ComputeCommandEncoder.h>
+#import <Metal/MTL4MachineLearningCommandEncoder.h>
+#import <Metal/MTL4Compiler.h>
+#import <Metal/MTL4CompilerTask.h>
+#import <Metal/MTL4LibraryDescriptor.h>
+#import <Metal/MTL4FunctionDescriptor.h>
+#import <Metal/MTL4LinkedFunctions.h>
+#import <Metal/MTL4LibraryFunctionDescriptor.h>
+#import <Metal/MTL4SpecializedFunctionDescriptor.h>
+#import <Metal/MTL4StitchedFunctionDescriptor.h>
+#import <Metal/MTL4PipelineState.h>
+#import <Metal/MTL4ComputePipeline.h>
+#import <Metal/MTL4RenderPipeline.h>
+#import <Metal/MTL4MachineLearningPipeline.h>
+#import <Metal/MTL4TileRenderPipeline.h>
+#import <Metal/MTL4MeshRenderPipeline.h>
+#import <Metal/MTL4PipelineDataSetSerializer.h>
+#import <Metal/MTL4Archive.h>
+#import <Metal/MTL4CommitFeedback.h>
+#import <Metal/MTL4BinaryFunctionDescriptor.h>
+#import <Metal/MTL4LinkingDescriptor.h>
Clone this wiki locally