Skip to content

Metal tvOS xcode14.0 beta1

Alex Soto edited this page Jun 7, 2022 · 1 revision

#Metal.framework

diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLArgument.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLArgument.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLArgument.h	2022-02-23 07:14:18.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLArgument.h	2022-06-03 18:08:06.000000000 -0400
@@ -8,6 +8,7 @@
 #import <Foundation/Foundation.h>
 #import <Metal/MTLDefines.h>
 #import <Metal/MTLTexture.h>
+#import <Metal/MTLCommandEncoder.h>
 
 
 NS_ASSUME_NONNULL_BEGIN
@@ -124,6 +125,57 @@
 @class MTLArgument;
 
 /*!
+ @enum MTLBindingsType
+ @abstract The type of a resource binding.
+ 
+ @constant MTLBindingTypeBuffer
+ This binding represents a buffer.
+ 
+ @constant MTLBindingTypeThreadgroupMemory
+ This binding represents threadgroup memory.
+ 
+ @constant MTLBindingTypeTexture
+ This binding represents a texture.
+ 
+ @constant MTLBindingTypeSampler
+ This binding represents a sampler.
+ 
+ @constant MTLBindingTypeImageblockData
+ This binding represents an image block data.
+ 
+ @constant MTLBindingTypeImageblock
+ This binding represents an image block.
+  
+ @constant MTLBindingTypeVisibleFunctionTable
+ This binding represents a visible function table object.
+ 
+ @constant MTLBindingTypePrimitiveAccelerationStructure
+ This binding represents a primitive acceleration structure object.
+ 
+ @constant MTLBindingTypeInstanceAccelerationStructure
+ This binding represents an instance acceleration structure object.
+ 
+ @constant MTLBinidngTypeIntersectionFunctionTable
+ This binding represents an intersection function table object.
+ 
+ @constant MTLBindingTypeObjectPayload
+ This binding represents an object payload.
+*/
+typedef NS_ENUM(NSInteger, MTLBindingType) {
+    MTLBindingTypeBuffer = 0,
+    MTLBindingTypeThreadgroupMemory = 1,
+    MTLBindingTypeTexture = 2,
+    MTLBindingTypeSampler = 3,
+    MTLBindingTypeImageblockData = 16,
+    MTLBindingTypeImageblock = 17,
+    MTLBindingTypeVisibleFunctionTable = 24,
+    MTLBindingTypePrimitiveAccelerationStructure = 25,
+    MTLBindingTypeInstanceAccelerationStructure = 26,
+    MTLBindingTypeIntersectionFunctionTable = 27,
+    MTLBindingTypeObjectPayload = 34,
+} API_AVAILABLE(macos(11.0), ios(14.0));
+
+/*!
  @enum MTLArgumentType
  @abstract The type for an input to a MTLRenderPipelineState or a MTLComputePipelineState
  
@@ -148,7 +200,7 @@
 
     MTLArgumentTypeImageblockData API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(11.0), tvos(14.5))     = 16,
     MTLArgumentTypeImageblock API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(11.0), tvos(14.5))         = 17,
-} API_AVAILABLE(macos(10.11), ios(8.0));
+} API_DEPRECATED_WITH_REPLACEMENT("MTLBindingType", macos(10.11, API_TO_BE_DEPRECATED), ios(8.0, API_TO_BE_DEPRECATED));
 
 /*!
  @enum MTLArgumentAccess
@@ -241,7 +293,8 @@
 /*!
  MTLArgument
 */
-MTL_EXPORT API_AVAILABLE(macos(10.11), ios(8.0))
+MTL_EXPORT
+API_DEPRECATED_WITH_REPLACEMENT("MTLBinding", macos(10.11, API_TO_BE_DEPRECATED), ios(8.0, API_TO_BE_DEPRECATED))
 @interface MTLArgument : NSObject
 
 @property (readonly) NSString *name;
@@ -268,6 +321,50 @@
 @property (readonly) BOOL           isDepthTexture API_AVAILABLE(macos(10.12), ios(10.0)); // true for depth textures
 @property (readonly) NSUInteger     arrayLength API_AVAILABLE(macos(10.13), ios(10.0));
 
+// for object payload arguments
+@property (readonly) NSUInteger     objectPayloadAlignment;
+@property (readonly) NSUInteger     objectPayloadDataSize;
+@end
+
+MTL_EXPORT API_AVAILABLE(macos(13.0), ios(16.0))
+@protocol MTLBinding<NSObject>
+@property (readonly) NSString *name;
+@property (readonly) MTLBindingType type;
+@property (readonly) MTLArgumentAccess access;
+@property (readonly) NSUInteger index;
+
+@property (readonly, getter=isUsed) BOOL used;
+@property (readonly, getter=isArgument) BOOL argument;
+@end
+
+MTL_EXPORT API_AVAILABLE(macos(13.0), ios(16.0))
+@protocol MTLBufferBinding<MTLBinding>
+@property (readonly) NSUInteger      bufferAlignment;        // min alignment of starting offset in the buffer
+@property (readonly) NSUInteger      bufferDataSize;         // sizeof(T) for T *argName
+@property (readonly) MTLDataType     bufferDataType;         // MTLDataTypeFloat, MTLDataTypeFloat4, MTLDataTypeStruct, ...
+@property (readonly, nullable) MTLStructType  *bufferStructType;
+@property (readonly, nullable) MTLPointerType *bufferPointerType;
+@end
+
+MTL_EXPORT API_AVAILABLE(macos(13.0), ios(16.0))
+@protocol MTLThreadgroupBinding<MTLBinding>
+@property (readonly) NSUInteger     threadgroupMemoryAlignment;
+@property (readonly) NSUInteger     threadgroupMemoryDataSize; // sizeof(T) for T *argName
+@end
+
+MTL_EXPORT API_AVAILABLE(macos(13.0), ios(16.0))
+@protocol MTLTextureBinding<MTLBinding>
+@property (readonly) MTLTextureType textureType; // texture1D, texture2D...
+@property (readonly) MTLDataType    textureDataType; // half, float, int, or uint.
+@property (readonly, getter=isDepthTexture) BOOL           depthTexture; // true for depth textures
+@property (readonly) NSUInteger     arrayLength;
+@end
+
+MTL_EXPORT API_AVAILABLE(macos(13.0), ios(16.0))
+@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
 
 NS_ASSUME_NONNULL_END
+
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLArgumentEncoder.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLArgumentEncoder.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLArgumentEncoder.h	2022-02-23 07:14:19.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLArgumentEncoder.h	2022-06-03 18:08:07.000000000 -0400
@@ -21,7 +21,7 @@
  * @protocol MTLArgumentEncoder
  * @discussion MTLArgumentEncoder encodes buffer, texture, sampler, and constant data into a buffer.
  */
-API_AVAILABLE(macos(10.13), ios(11.0))
+API_DEPRECATED("Use 'gpuAddress' or 'gpuHandle' instead", macos(10.13, API_TO_BE_DEPRECATED), ios(11.0, API_TO_BE_DEPRECATED))
 @protocol MTLArgumentEncoder <NSObject>
 
 /*!
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLBinaryArchive.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLBinaryArchive.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLBinaryArchive.h	2022-02-23 10:58:35.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLBinaryArchive.h	2022-05-31 14:53:16.000000000 -0400
@@ -22,6 +22,7 @@
     MTLBinaryArchiveErrorInvalidFile = 1,
     MTLBinaryArchiveErrorUnexpectedElement = 2,
     MTLBinaryArchiveErrorCompilationFailure = 3,
+    MTLBinaryArchiveErrorInternalError = 4,
 } API_AVAILABLE(macos(11.0), ios(14.0));
 
 /*!
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLBlitCommandEncoder.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLBlitCommandEncoder.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLBlitCommandEncoder.h	2022-02-23 07:14:17.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLBlitCommandEncoder.h	2022-06-03 18:10:23.000000000 -0400
@@ -14,12 +14,9 @@
 #import <Metal/MTLFence.h>
 #import <Metal/MTLRenderPass.h>
 #import <Metal/MTLBlitPass.h>
+#import <Metal/MTLCounters.h>
 
 NS_ASSUME_NONNULL_BEGIN
-/*!
- @header MTLBlitCommandEncoder.h
- @discussion Header file for MTLBlitCommandEncoder
- */
 
 /*!
  @enum MTLBlitOption
@@ -152,7 +149,7 @@
 /*!
  @method waitForFence:
  @abstract Prevent further GPU work until the fence is reached.
- @discussion The fence is evaluated at kernel submision to maintain global order and prevent deadlock.
+ @discussion The fence is evaluated at kernel submission to maintain global order and prevent deadlock.
  Drivers may delay fence updates until the end of the encoder. Drivers may also wait on fences at the beginning of an encoder. It is therefore illegal to wait on a fence after it has been updated in the same encoder.
  */
 - (void)waitForFence:(id <MTLFence>)fence API_AVAILABLE(macos(10.13), ios(10.0));
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLBlitPass.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLBlitPass.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLBlitPass.h	2022-02-23 07:11:28.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLBlitPass.h	2022-06-03 18:08:08.000000000 -0400
@@ -52,7 +52,7 @@
 /* Individual attachment state access */
 - (MTLBlitPassSampleBufferAttachmentDescriptor *)objectAtIndexedSubscript:(NSUInteger)attachmentIndex;
 
-/* This always uses 'copy' semantics.  It is safe to set the attachment state at any legal index to nil, which resets that attachment descriptor state to default vaules. */
+/* This always uses 'copy' semantics.  It is safe to set the attachment state at any legal index to nil, which resets that attachment descriptor state to default values. */
 - (void)setObject:(nullable MTLBlitPassSampleBufferAttachmentDescriptor *)attachment atIndexedSubscript:(NSUInteger)attachmentIndex;
 
 @end
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLBuffer.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLBuffer.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLBuffer.h	2022-02-23 07:11:27.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLBuffer.h	2022-06-03 18:08:07.000000000 -0400
@@ -11,10 +11,6 @@
 #import <Metal/MTLResource.h>
 
 NS_ASSUME_NONNULL_BEGIN
-/*!
- @header MTLBuffer.h
- @discussion Header file for MTLBuffer
- */
 
 @class MTLTextureDescriptor;
 @protocol MTLTexture;
@@ -83,5 +79,12 @@
 - (void)removeAllDebugMarkers API_AVAILABLE(macos(10.12), ios(10.0));
 
 
+
+/*!
+ @property gpuAddress
+ @abstract Represents the GPU virtual address of a buffer resource
+ */
+@property (readonly) uint64_t gpuAddress API_AVAILABLE(macos(13.0), ios(16.0));
+
 @end
 NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCommandBuffer.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCommandBuffer.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCommandBuffer.h	2022-02-23 07:11:26.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCommandBuffer.h	2022-06-03 18:08:06.000000000 -0400
@@ -23,6 +23,7 @@
 @class MTLRenderPassDescriptor;
 @class MTLComputePassDescriptor;
 @class MTLBlitPassDescriptor;
+
 /*!
  @enum MTLCommandBufferStatus
  
@@ -103,7 +104,7 @@
     MTLCommandBufferErrorInternal = 1,
     MTLCommandBufferErrorTimeout = 2,
     MTLCommandBufferErrorPageFault = 3,
-    MTLCommandBufferErrorBlacklisted = 4, // Deprecated. Please use MTLCommandBufferErrorAccessRevoked.
+    MTLCommandBufferErrorBlacklisted API_DEPRECATED_WITH_REPLACEMENT("MTLCommandBufferErrorAccessRevoked", macos(10.11, 13.0), ios(8.0, 16.0)) = 4, 
     MTLCommandBufferErrorAccessRevoked = 4,
     MTLCommandBufferErrorNotPermitted = 7,
     MTLCommandBufferErrorOutOfMemory = 8,
@@ -409,6 +410,7 @@
 
 
 
+
 /*!
  @method pushDebugGroup:
  @abstract Push a new named string onto a stack of string labels.
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCommandEncoder.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCommandEncoder.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCommandEncoder.h	2022-02-23 07:11:27.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCommandEncoder.h	2022-06-03 18:08:07.000000000 -0400
@@ -18,7 +18,7 @@
 {
 	MTLResourceUsageRead   = 1 << 0,
 	MTLResourceUsageWrite  = 1 << 1,
-	MTLResourceUsageSample = 1 << 2
+	MTLResourceUsageSample API_DEPRECATED_WITH_REPLACEMENT("MTLResourceUsageRead", macos(10.13, 13.0), ios(11.0, 16.0)) = 1 << 2
 } API_AVAILABLE(macos(10.13), ios(11.0));
 
 /*!
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLComputeCommandEncoder.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLComputeCommandEncoder.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLComputeCommandEncoder.h	2022-02-23 07:14:17.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLComputeCommandEncoder.h	2022-06-03 18:10:23.000000000 -0400
@@ -175,7 +175,7 @@
 /*!
  @method waitForFence:
  @abstract Prevent further GPU work until the fence is reached.
- @discussion The fence is evaluated at kernel submision to maintain global order and prevent deadlock.
+ @discussion The fence is evaluated at kernel submission to maintain global order and prevent deadlock.
  Drivers may delay fence updates until the end of the encoder. Drivers may also wait on fences at the beginning of an encoder. It is therefore illegal to wait on a fence after it has been updated in the same encoder.
  */
 - (void)waitForFence:(id <MTLFence>)fence API_AVAILABLE(macos(10.13), ios(10.0));
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLComputePass.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLComputePass.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLComputePass.h	2022-02-23 07:11:28.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLComputePass.h	2022-06-03 18:08:07.000000000 -0400
@@ -54,7 +54,7 @@
 /* Individual attachment state access */
 - (MTLComputePassSampleBufferAttachmentDescriptor *)objectAtIndexedSubscript:(NSUInteger)attachmentIndex;
 
-/* This always uses 'copy' semantics.  It is safe to set the attachment state at any legal index to nil, which resets that attachment descriptor state to default vaules. */
+/* This always uses 'copy' semantics.  It is safe to set the attachment state at any legal index to nil, which resets that attachment descriptor state to default values. */
 - (void)setObject:(nullable MTLComputePassSampleBufferAttachmentDescriptor *)attachment atIndexedSubscript:(NSUInteger)attachmentIndex;
 
 @end
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLComputePipeline.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLComputePipeline.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLComputePipeline.h	2022-02-23 07:14:20.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLComputePipeline.h	2022-06-03 18:08:07.000000000 -0400
@@ -21,8 +21,8 @@
 MTL_EXPORT API_AVAILABLE(macos(10.11), ios(8.0))
 @interface MTLComputePipelineReflection : NSObject
 
-@property (readonly) NSArray <MTLArgument *> *arguments;
-
+@property (nonnull, readonly) NSArray<id<MTLBinding>> *bindings API_AVAILABLE(macos(13.0), ios(16.0));
+@property (readonly) NSArray <MTLArgument *> *arguments API_DEPRECATED_WITH_REPLACEMENT("bindings", macos(10.11, API_TO_BE_DEPRECATED), ios(8.0, API_TO_BE_DEPRECATED));
 
 @end
 
@@ -101,6 +101,7 @@
 @property (readwrite, nullable, nonatomic, copy) NSArray<id<MTLBinaryArchive>> *binaryArchives API_AVAILABLE(macos(11.0), ios(14.0));
 
 
+
 /*!
  @method reset
  @abstract Restore all compute pipeline descriptor properties to their default values.
@@ -169,6 +170,18 @@
  */
 @property (readonly) BOOL supportIndirectCommandBuffers API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(13.0));
 
+/*!
+ @property gpuHandle
+ @abstract accessible by the CPU, and used to get the device handle of a resource/object that could be normally passed to the GPU within an argument buffer
+ this will be deleted as the gpuResourceID will replace it
+ */
+@property (readonly) MTLGPUHandle gpuHandle;
+/*!
+ @property gpuResourceID
+ @abstract Accessible by the CPU, it is used to get the handle of a GPU resource that could be normally passed to the GPU
+ */
+@property (readonly) MTLResourceID gpuResourceID API_AVAILABLE(macos(13.0), ios(16.0));
+
 
 @end
 
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCounters.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCounters.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCounters.h	2022-02-23 07:57:46.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCounters.h	2022-06-03 18:08:08.000000000 -0400
@@ -16,7 +16,7 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
-#define MTLCounterErrorValue ((uint64_t)-1)
+#define MTLCounterErrorValue ((uint64_t)~0ULL)
 #define MTLCounterDontSample ((NSUInteger)-1)
 
 /*!
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDevice.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDevice.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDevice.h	2022-02-23 07:11:25.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDevice.h	2022-06-03 18:08:06.000000000 -0400
@@ -15,6 +15,7 @@
 #import <IOSurface/IOSurfaceRef.h>
 #import <Metal/MTLCounters.h>
 
+
 NS_ASSUME_NONNULL_BEGIN
 @protocol MTLCommandQueue;
 @protocol MTLDevice;
@@ -57,6 +58,22 @@
 @protocol MTLBinaryArchive;
 @class MTLBinaryArchiveDescriptor;
 @class MTLStitchedLibraryDescriptor;
+@protocol MTLArgumentEncoder;
+
+@protocol MTLIOFileHandle;
+@protocol MTLIOCommandQueue;
+@class MTLIOCommandQueueDescriptor;
+
+
+typedef NS_ENUM(NSInteger, MTLIOCompressionMethod) {
+    MTLIOCompressionMethodZlib = 0,
+    MTLIOCompressionMethodLZFSE = 1,
+    MTLIOCompressionMethodLZ4 = 2,
+    MTLIOCompressionMethodLZMA = 3,
+    MTLIOCompressionMethodLZBitmap = 4,
+};
+
+
 
 /*!
  @brief Returns a reference to the preferred system default Metal device.
@@ -97,6 +114,7 @@
     MTLFeatureSet_iOS_GPUFamily2_v5 API_AVAILABLE(ios(12.0)) API_UNAVAILABLE(macos, macCatalyst, tvos) = 13,
     MTLFeatureSet_iOS_GPUFamily3_v4 API_AVAILABLE(ios(12.0)) API_UNAVAILABLE(macos, macCatalyst, tvos) = 14,
     MTLFeatureSet_iOS_GPUFamily4_v2 API_AVAILABLE(ios(12.0)) API_UNAVAILABLE(macos, macCatalyst, tvos) = 15,
+    MTLFeatureSet_iOS_GPUFamily5_v1 API_AVAILABLE(ios(12.0)) API_UNAVAILABLE(macos, macCatalyst, tvos) = 16,
 
     MTLFeatureSet_macOS_GPUFamily1_v1 API_AVAILABLE(macos(10.11)) API_UNAVAILABLE(ios) API_UNAVAILABLE(macCatalyst) = 10000,
     MTLFeatureSet_OSX_GPUFamily1_v1 API_AVAILABLE(macos(10.11)) API_UNAVAILABLE(ios) = MTLFeatureSet_macOS_GPUFamily1_v1, // deprecated
@@ -122,25 +140,27 @@
     
     MTLFeatureSet_tvOS_GPUFamily1_v4 API_AVAILABLE(tvos(12.0)) API_UNAVAILABLE(macos, ios) = 30004,
     MTLFeatureSet_tvOS_GPUFamily2_v2 API_AVAILABLE(tvos(12.0)) API_UNAVAILABLE(macos, ios) = 30005,
-} API_AVAILABLE(macos(10.11), ios(8.0), tvos(9.0));
+} API_DEPRECATED("Use MTLGPUFamily instead", macos(10.11, 13.0), ios(8.0, 16.0), tvos(9.0, 16.0));
 
 typedef NS_ENUM(NSInteger, MTLGPUFamily)
 {
-    MTLGPUFamilyApple1 = 1001,
-    MTLGPUFamilyApple2 = 1002,
-    MTLGPUFamilyApple3 = 1003,
-    MTLGPUFamilyApple4 = 1004,
-    MTLGPUFamilyApple5 = 1005,
+    MTLGPUFamilyApple1  = 1001,
+    MTLGPUFamilyApple2  = 1002,
+    MTLGPUFamilyApple3  = 1003,
+    MTLGPUFamilyApple4  = 1004,
+    MTLGPUFamilyApple5  = 1005,
     
-    MTLGPUFamilyMac1 = 2001,
+    MTLGPUFamilyMac1 API_DEPRECATED_WITH_REPLACEMENT("MTLGPUFamilyMac2", macos(10.15, 13.0), ios(13.0, 16.0)) = 2001,
     MTLGPUFamilyMac2 = 2002,
     
     MTLGPUFamilyCommon1 = 3001,
     MTLGPUFamilyCommon2 = 3002,
     MTLGPUFamilyCommon3 = 3003,
     
-    MTLGPUFamilyMacCatalyst1 = 4001,
-    MTLGPUFamilyMacCatalyst2 = 4002,
+    MTLGPUFamilyMacCatalyst1 API_DEPRECATED_WITH_REPLACEMENT("MTLGPUFamilyMac2", macos(10.15, 13.0), ios(13.0, 16.0)) = 4001,
+    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,
 } API_AVAILABLE(macos(10.15), ios(13.0));
 
 
@@ -179,6 +199,7 @@
 
 
 
+
 /*!
  @enum MTLCounterSamplingPoint
  @abstract MTLCounterSamplingPoint determines type of sampling points that are supported on given device.
@@ -283,7 +304,6 @@
 @end
 
 
-
 /*!
  @protocol MTLDevice
  @abstract MTLDevice represents a processor capable of data parallel computations
@@ -305,6 +325,7 @@
 */
 @property (readonly) uint64_t registryID API_AVAILABLE(macos(10.13), ios(11.0)) ;
 
+
 /*!
  @property maxThreadsPerThreadgroup
  @abstract The maximum number of threads along each dimension.
@@ -534,7 +555,8 @@
  @method newLibraryWithFile:
  @abstract Load a MTLLibrary from a metallib file.
  */
-- (nullable id <MTLLibrary>)newLibraryWithFile:(NSString *)filepath error:(__autoreleasing NSError **)error;
+- (nullable id <MTLLibrary>)newLibraryWithFile:(NSString *)filepath error:(__autoreleasing NSError **)error
+API_DEPRECATED("Use -newLibraryWithURL:error: instead", macos(10.11, 13.0), ios(8.0, 16.0));
 
 /*!
  @method newLibraryWithURL:
@@ -644,7 +666,7 @@
  @method supportsFeatureSet:
  @abstract Returns TRUE if the feature set is supported by this MTLDevice.
  */
-- (BOOL)supportsFeatureSet:(MTLFeatureSet)featureSet;
+- (BOOL)supportsFeatureSet:(MTLFeatureSet)featureSet API_DEPRECATED("Use supportsFamily instead", macos(10.11, 13.0), ios(8.0, 16.0), tvos(9.0, 16.0));
 
 /*!
  @method supportsFamily:
@@ -757,6 +779,42 @@
 //Keep around to keep building
 
 
+/*!
+ * @method newIOHandleWithURL:url:error:
+ * @abstract Create and return a handle that points to a raw file on disk. This object can be used by
+ * MTLIOCommandBuffer load commands to source data for MTLResources. If the creation
+ * of the handle fails the return value will be nil and the optional error if passed in will be non-nil
+ * with details of the error.
+ */
+-(nullable id<MTLIOFileHandle>) newIOHandleWithURL:(NSURL *)url
+                                error:(NSError **)error API_AVAILABLE(macos(13.0), ios(16.0));
+
+
+/*!
+ * @method newIOCommandQueueWithDescriptor:descriptor:error:
+ * @abstract Create and return an IO queue. If the creation
+ * of the queue fails the return value will be nil and the optional error if passed in will be non-nil
+ * with details of the error.
+ */
+-(nullable id<MTLIOCommandQueue>) newIOCommandQueueWithDescriptor:(MTLIOCommandQueueDescriptor*)descriptor
+                                            error:(NSError **)error API_AVAILABLE(macos(13.0), ios(16.0));
+
+
+/*!
+ * @method newIOHandleWithURL:url:compressionMethod:error:
+ * @abstract Create and return a handle that points to a compressed file on disk (a file that was
+ * created with MTLIOCompressionContext). This object can be used by
+ * MTLIOCommandBuffer load commands to source data for MTLResources. If the creation
+ * of the handle fails the return value will be nil and the optional error if passed in will be non-nil
+ * with details of the error.
+ */
+-(nullable id<MTLIOFileHandle>) newIOHandleWithURL:(NSURL *)url
+                    compressionMethod:(MTLIOCompressionMethod)compressionMethod
+                                error:(NSError **)error API_AVAILABLE(macos(13.0), ios(16.0));
+
+
+
+
 
 
 
@@ -797,6 +855,9 @@
            gpuTimestamp:(MTLTimestamp *)gpuTimestamp
     API_AVAILABLE(macos(10.15), ios(14.0));
 
+
+-(id<MTLArgumentEncoder>)newArgumentEncoderWithBufferBinding:(id<MTLBufferBinding>)bufferBinding API_AVAILABLE(macos(13.0), ios(16.0));
+
 /*!
  @method supportsCounterSampling:
  @abstract Query device for counter sampling points support.
@@ -854,5 +915,7 @@
 
 
 
+
+
 @end
 NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDrawable.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDrawable.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDrawable.h	2022-02-23 07:11:26.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDrawable.h	2022-06-03 18:08:06.000000000 -0400
@@ -14,7 +14,7 @@
 /*!
  @typedef MTLDrawablePresentedHandler
  @abstract The presented callback function protocol
- @disucssion 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.
+ @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>);
 
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLFunctionHandle.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLFunctionHandle.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLFunctionHandle.h	2022-02-12 07:31:28.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLFunctionHandle.h	2022-05-25 21:20:37.000000000 -0400
@@ -5,3 +5,5 @@
 //  Copyright © 2020 Apple, Inc. All rights reserved.
 //
 
+#import <Foundation/Foundation.h>
+#import <Metal/MTLDefines.h>
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLHeap.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLHeap.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLHeap.h	2022-02-23 07:11:26.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLHeap.h	2022-06-03 18:10:24.000000000 -0400
@@ -61,6 +61,8 @@
  */
 @property (readwrite, nonatomic) MTLCPUCacheMode cpuCacheMode;
 
+
+
 /*!
  @property hazardTrackingMode
  @abstract Set hazard tracking mode for the heap. The default value is MTLHazardTrackingModeDefault.
@@ -223,6 +225,8 @@
  */
 - (nullable id<MTLTexture>)newTextureWithDescriptor:(MTLTextureDescriptor *)descriptor
                                              offset:(NSUInteger)offset API_AVAILABLE(macos(10.15), ios(13.0));
+
+
 @end
 
 NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIOCommandBuffer.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIOCommandBuffer.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIOCommandBuffer.h	1969-12-31 19:00:00.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIOCommandBuffer.h	2022-05-27 23:53:07.000000000 -0400
@@ -0,0 +1,162 @@
+//
+//  MTLIOCommandBuffer.h
+//  Metal
+//
+//  Copyright © 2022 Apple, Inc. All rights reserved.
+//
+
+#import <Metal/MTLDefines.h>
+#import <Metal/MTLDevice.h>
+
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+@protocol MTLIOCommandBuffer;
+@protocol MTLIOFileHandle;
+
+/* Used by MTLIOCommandBuffer to indicate completion status. */
+typedef NS_ENUM(NSInteger, MTLIOStatus) {
+    MTLIOStatusPending = 0,
+    MTLIOStatusCancelled = 1,
+    MTLIOStatusError = 2,
+    MTLIOStatusComplete = 3,
+};
+
+typedef void (^MTLIOCommandBufferHandler)(id<MTLIOCommandBuffer>);
+
+/*!
+ @protocol MTLIOCommandBuffer
+ @abstract represents a list of IO commands for a queue to execute
+*/
+@protocol MTLIOCommandBuffer <NSObject>
+
+/*!
+ @method addCompletedHandler:block:
+ @abstract Add a block to be called when this command buffer has completed execution.
+ */
+- (void) addCompletedHandler:(MTLIOCommandBufferHandler)block;
+
+/*!
+ @method loadBytes:size:sourceHandle:sourceHandleOffset
+ @abstract Encodes a command that loads from a handle
+ and offset into a memory location.
+ */
+- (void) loadBytes:(void *)pointer
+            size:(NSUInteger)size
+            sourceHandle:(id<MTLIOFileHandle>)sourceHandle
+            sourceHandleOffset:(NSUInteger)sourceHandleOffset;
+
+/*!
+ @method loadBuffer:buffer:offset:size:sourceHandle:sourceHandleOffset
+ @abstract Encodes a command that loads from a handle
+ and offset into a buffer and an offset.
+ */
+- (void) loadBuffer:(id<MTLBuffer>)buffer
+            offset:(NSUInteger)offset
+            size:(NSUInteger)size
+            sourceHandle:(id<MTLIOFileHandle>)sourceHandle
+            sourceHandleOffset:(NSUInteger)sourceHandleOffset;
+
+/*!
+ @method loadTexture:texture:slice:level:size:sourceBytesPerRow:sourceBytesPerImage:destinationOrigin:sourceHandle:sourceHandleOffset:
+ @abstract Encodes a command that loads a region from a handle
+ and offset into a texture at a given slice, level and origin.
+ */
+- (void) loadTexture:(id<MTLTexture>)texture
+            slice:(NSUInteger)slice
+            level:(NSUInteger)level
+            size:(MTLSize)size
+            sourceBytesPerRow:(NSUInteger)sourceBytesPerRow
+            sourceBytesPerImage:(NSUInteger)sourceBytesPerImage
+            destinationOrigin:(MTLOrigin)destinationOrigin
+            sourceHandle:(id<MTLIOFileHandle>)sourceHandle
+            sourceHandleOffset:(NSUInteger)sourceHandleOffset;
+/*!
+ @method copyStatusToBuffer:buffer:offset
+ @abstract Encodes a command that writes the status of this commandBuffer upon completion
+ to a buffer at a given offset
+ */
+- (void) copyStatusToBuffer:(id<MTLBuffer>)buffer
+                       offset:(NSUInteger)offset;
+
+/*!
+ @method commit
+ @abstract Commit a command buffer so it can be executed as soon as possible.
+ */
+- (void) commit;
+
+/*!
+ @method waitUntilCompleted
+ @abstract Synchronously wait for this command buffer to complete.
+ */
+- (void) waitUntilCompleted;
+
+/*!
+ @method tryCancel
+ @abstract request a cancellation of an in-flight command buffer.
+ */
+- (void) tryCancel;
+
+/*!
+ @method addBarrier
+ @abstract add a barrier that starts subsequent commands after all
+ the previously encoded commands have completed.
+ */
+- (void) addBarrier;
+
+/*!
+ @method pushDebugGroup:
+ @abstract Push a new named string onto a stack of string labels.
+ */
+- (void)pushDebugGroup:(NSString *)string;
+
+/*!
+ @method popDebugGroup
+ @abstract Pop the latest named string off of the stack.
+ */
+- (void)popDebugGroup;
+
+
+
+/*!
+ @method enqueue
+ @abstract Append this command buffer to the end of its MTLCommandQueue.
+*/
+- (void) enqueue;
+
+/*!
+@method waitForEvent:value:
+@abstract Encodes a command that pauses execution of this command buffer until the specified event reaches a given value.
+*/
+- (void) waitForEvent:(id<MTLSharedEvent>)event value:(uint64_t)value;
+
+/*!
+ @method signalEvent:value:
+ @abstract Encodes a command that signals an event with a given value.
+ */
+- (void) signalEvent:(id<MTLSharedEvent>)event value:(uint64_t)value;
+
+/*!
+ @property label
+ @abstract An optional label for this handle.
+*/
+@property (nullable, copy, atomic) NSString *label;
+
+/*!
+ @property status
+ @abstract status reports the completion status of the MTLIOCommandBuffer, pending, cancelled, error or complete.
+ */
+@property (readonly) MTLIOStatus status;
+
+/*!
+ @property error
+ @abstract If an error occurred during execution, the NSError may contain more details about the problem.
+ */
+@property (nullable, readonly) NSError *error;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIOCommandQueue.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIOCommandQueue.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIOCommandQueue.h	1969-12-31 19:00:00.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIOCommandQueue.h	2022-06-03 18:10:25.000000000 -0400
@@ -0,0 +1,188 @@
+//
+//  MTLIOCommandQueue.h
+//  Metal
+//
+//  Copyright © 2022 Apple, Inc. All rights reserved.
+//
+
+#import <Metal/MTLDefines.h>
+#import <Metal/MTLDevice.h>
+
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+@protocol MTLBuffer;
+@protocol MTLIOCommandBuffer;
+
+
+/* Used in MTLIOCommandQueueDescriptor to set the MTLIOQueue priority at creation time. */
+typedef NS_ENUM(NSInteger, MTLIOPriority) {
+    MTLIOPriorityHigh = 0,
+    MTLIOPriorityNormal = 1,
+    MTLIOPriorityLow = 2,
+};
+
+/* Used in MTLIOCommandQueueDescriptor to set the MTLIOQueue type at creation time. */
+typedef NS_ENUM(NSInteger, MTLIOCommandQueueType) {
+    MTLIOCommandQueueTypeConcurrent = 0,
+    MTLIOCommandQueueTypeSerial = 1,
+};
+
+
+API_AVAILABLE(macos(13.0), ios(16.0))
+MTL_EXTERN NSErrorDomain const MTLIOErrorDomain;
+
+/* Used by MTLIOFileHandle creation functions to indicate an error. */
+typedef NS_ERROR_ENUM(MTLIOErrorDomain, MTLIOError) {
+    MTLIOErrorURLInvalid       = 1,
+    MTLIOErrorInternal         = 2,
+};
+
+/*!
+ @protocol MTLIOCommandQueue
+ @abstract Represents a queue that schedules command buffers containing command that
+ read from handle objects and write to MTLResource objects.
+ */
+@protocol MTLIOCommandQueue <NSObject>
+
+
+/*!
+ @method enqueueBarrier
+ @abstract Inserts a barrier that ensures that all commandBuffers commited
+ prior are completed before any commandBuffers after start execution.
+ @discussion A serial commandQueue has implicit barriers between
+ each commandBuffer.
+ */
+- (void) enqueueBarrier;
+
+
+/*!
+ @method commandBuffer
+ @abstract Vends an autoreleased commandBuffer that can be used to
+ encode  commands that read from handle objects and write to MTLResource objects.
+ */
+- (id<MTLIOCommandBuffer>)commandBuffer;
+
+
+/*!
+ @method commandBufferWithUnretainedReferences
+ @abstract Vends an autoreleased commandBuffer that can be used to
+ encode  commands that read from handle objects and write to MTLResource objects.
+ This commandBuffer does not retain objects referenced by the commandBuffer
+ as an optimization.
+ @discussion For correct execution its the application's responsibility to retain
+ objects referenced by commands within the commandBuffer.
+ */
+- (id<MTLIOCommandBuffer>)commandBufferWithUnretainedReferences;
+
+/*!
+ @property label
+ @abstract An optional label for this handle.
+*/
+@property (nullable, copy, atomic) NSString *label;
+
+
+@end
+
+/*!
+ @protocol MTLIOScratchBuffer
+ @abstract An extendible protocol that can be used to wrap the buffers vended by
+ a custom allocator. The underlying buffer is used as scratch space for IO commands
+ that need it.
+ */
+@protocol MTLIOScratchBuffer<NSObject>
+
+@property (readonly) id<MTLBuffer> buffer;
+
+@end
+
+/*!
+ @protocol MTLIOScratchBufferAllocator
+ @abstract An extendible protocol that can implement a custom allocator passed
+ to the queue descriptor.
+ @discussion If provided, the queue will call newScratchBufferWithMinimumSize
+ when it needs scratch storage for IO commands. When the commands that use the memory
+ complete they return the storage by dealloc'ing the MTLIOScratchBuffer objects (where
+ the application can optionally pool the memory for use by future commands.
+ */
+@protocol MTLIOScratchBufferAllocator <NSObject>
+
+/*!
+ @method newScratchBufferWithMinimumSize:minimumSize
+ @abstract This method is called when additional scratch memory is required by a load command.
+ @discussion  Scratch memory is needed for cases where a texture is being copied to. minimumSize
+ is the smallest buffer that will allow the command to execute, however a larger buffer can be provided and
+ susequent commands will be able to use it, thus avoiding the need for an additional callback. Returning nil
+ from the function will result in the load command being skipped and the commandBuffer getting cancelled.
+ */
+
+- (__nullable id<MTLIOScratchBuffer>) newScratchBufferWithMinimumSize:(NSUInteger)minimumSize;
+
+
+- (__nullable id<MTLIOScratchBuffer>) allocateScratchBufferWithMinimumSize:(NSUInteger)minimumSize; // DEPRECATED, remove with rdar://88998213 ([Fast Storage] remove allocateScratchBufferWithMinimumSize from MTLIOCommandQueue.h)
+
+@end
+
+/*!
+ @interface MTLIOCommandQueueDescriptor
+ @abstract Represents a descriptor to create a MTLIOCommandQueue.
+ */
+MTL_EXPORT API_AVAILABLE(macos(13.0), ios(16.0))
+@interface MTLIOCommandQueueDescriptor :  NSObject <NSCopying>
+
+/*!
+ @property maxCommandBufferCount
+ @abstract The maximum number of commandBuffers that can be in flight at a given time for the queue.
+*/
+@property (nonatomic, readwrite) NSUInteger maxCommandBufferCount;
+
+/*!
+ @property priority
+ @abstract The priority of the commands executed by this queue.
+*/
+@property (nonatomic, readwrite) MTLIOPriority priority;
+
+/*!
+ @property type
+ @abstract The type (serial or concurrent) of the queue.
+*/
+@property (nonatomic, readwrite) MTLIOCommandQueueType type;
+
+/*!
+ @property maxCommandsInFlight
+ @abstract The maximum number of IO commands that can be in flight at a given time for the queue.
+ @discussion A zero value defaults to the system dependent maximum value, a smaller number can be
+ provided to bound the utilization of the storage device.
+*/
+@property (nonatomic, readwrite) NSUInteger maxCommandsInFlight;
+
+/*!
+ @property scratchBufferAllocator
+ @abstract An optional property that allows setting a custom allocator for scratch buffers by the queue.
+ @discussion An application can manage scratch buffers manually by implemeting a class  conforming
+ to the MTLIOScratchBufferAllocator protocol and creating an instance that is passed in here.
+*/
+@property (nullable, readwrite, retain) id<MTLIOScratchBufferAllocator> scratchBufferAllocator;
+
+@end
+
+/*!
+ @protocol MTLIOFileHandle
+ @abstract Represents a  file (raw or compressed) that can be used as a source
+ for load commands encoded in a MTLIOCommandBuffer.
+ */
+@protocol MTLIOFileHandle <NSObject>
+
+/*!
+ @property label
+ @abstract An optional label for this handle.
+*/
+@property (nullable, copy, atomic) NSString *label;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+
+
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIOCompressor.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIOCompressor.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIOCompressor.h	1969-12-31 19:00:00.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIOCompressor.h	2022-05-25 21:20:37.000000000 -0400
@@ -0,0 +1,44 @@
+//
+//  MTLIOCompression.h
+//  Metal
+//
+//  Copyright © 2022 Apple, Inc. All rights reserved.
+//
+
+#import <Metal/MTLDefines.h>
+#import <Metal/MTLDevice.h>
+
+
+
+typedef NS_ENUM(NSInteger, MTLIOCompressionStatus) {
+    MTLIOCompressionStatusComplete = 0,
+    MTLIOCompressionStatusError = 1
+};
+
+MTL_EXTERN const size_t kMTLIOCompressionContextDefaultChunkSize;
+
+/*
+ These methods are expected to be used by offline tools that
+ process and generate assets.
+ */
+
+/*
+ @function MTLIOCreateCompressionContext
+ @abstract used to create a context that writes a stream of data to
+ a path using a given codec and chunk size.
+ */
+MTL_EXTERN void* MTLIOCreateCompressionContext(const char* path, MTLIOCompressionMethod type, size_t chunkSize);
+
+/*
+ @function MTLIOCompressionContextAppendData
+ @abstract append data to a compression context.
+ */
+MTL_EXTERN void MTLIOCompressionContextAppendData(void* context, const void* data, size_t size);
+
+/*
+ @function MTLIOFlushAndDestroyCompressionContext
+ @abstract close the compression context and write the pack file.
+ */
+MTL_EXTERN MTLIOCompressionStatus MTLIOFlushAndDestroyCompressionContext(void* context);
+
+
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIndirectCommandBuffer.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIndirectCommandBuffer.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIndirectCommandBuffer.h	2022-02-23 07:11:27.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIndirectCommandBuffer.h	2022-06-03 18:08:07.000000000 -0400
@@ -77,17 +77,18 @@
 @property (readwrite, nonatomic) NSUInteger maxVertexBufferBindCount;
 
 /*!
- @absract
+ @abstract
  The maximum bind index of fragment argument buffers that can be set per command.
  */
 @property (readwrite, nonatomic) NSUInteger maxFragmentBufferBindCount;
 
 /*!
- @absract
+ @abstract
  The maximum bind index of kernel (or tile) argument buffers that can be set per command.
  */
 @property (readwrite, nonatomic) NSUInteger maxKernelBufferBindCount API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(13.0));
 
+
 @end
 
 
@@ -96,6 +97,18 @@
 
 @property (readonly) NSUInteger size;
 
+/*!
+ @property gpuHandle
+ @abstract accessible by the CPU, and used to get the device handle of a resource/object that could be normally passed to the GPU within an argument buffer
+ this will be deleted as the gpuResourceID will replace it
+ */
+@property (readonly) MTLGPUHandle gpuHandle;
+/*!
+ @property gpuResourceID
+ @abstract Accessible by the CPU, it is used to get the handle of a GPU resource that could be normally passed to the GPU
+ */
+@property (readonly) MTLResourceID gpuResourceID API_AVAILABLE(macos(13.0), ios(16.0));
+
 -(void)resetWithRange:(NSRange)range;
 
 - (id <MTLIndirectRenderCommand>)indirectRenderCommandAtIndex:(NSUInteger)commandIndex;
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIndirectCommandEncoder.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIndirectCommandEncoder.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIndirectCommandEncoder.h	2022-02-23 07:11:27.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIndirectCommandEncoder.h	2022-06-03 18:08:07.000000000 -0400
@@ -5,7 +5,7 @@
 //  Copyright © 2017 Apple, Inc. All rights reserved.
 //
 
-
+#import <Metal/MTLDefines.h>
 #import <Metal/MTLStageInputOutputDescriptor.h>
 #import <Metal/MTLRenderPipeline.h>
 
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLLibrary.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLLibrary.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLLibrary.h	2022-02-23 07:14:20.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLLibrary.h	2022-06-03 18:10:25.000000000 -0400
@@ -170,7 +170,7 @@
 @end
 
 typedef NS_ENUM(NSUInteger, MTLLanguageVersion) {
-    MTLLanguageVersion1_0 API_AVAILABLE(ios(9.0)) API_UNAVAILABLE(macos, macCatalyst) = (1 << 16),
+    MTLLanguageVersion1_0 API_DEPRECATED("Use a newer language standard", ios(16.0, API_TO_BE_DEPRECATED)) = (1 << 16),
     MTLLanguageVersion1_1 API_AVAILABLE(macos(10.11), ios(9.0)) = (1 << 16) + 1,
     MTLLanguageVersion1_2 API_AVAILABLE(macos(10.12), ios(10.0)) = (1 << 16) + 2,
     MTLLanguageVersion2_0 API_AVAILABLE(macos(10.13), ios(11.0)) = (2 << 16),
@@ -178,6 +178,8 @@
     MTLLanguageVersion2_2 API_AVAILABLE(macos(10.15), ios(13.0)) = (2 << 16) + 2,
     MTLLanguageVersion2_3 API_AVAILABLE(macos(11.0), ios(14.0)) = (2 << 16) + 3,
     MTLLanguageVersion2_4 API_AVAILABLE(macos(12.0), ios(15.0)) = (2 << 16) + 4,
+    MTLLanguageVersion3_0 API_AVAILABLE(macos(13.0), ios(16.0)) =
+    (3 << 16) + 0,
 } API_AVAILABLE(macos(10.11), ios(9.0));
 
 typedef NS_ENUM(NSInteger, MTLLibraryType) {
@@ -185,6 +187,22 @@
     MTLLibraryTypeDynamic = 1,
 } API_AVAILABLE(macos(11.0), ios(14.0));
 
+/*!
+ @enum MTLLibraryOptimizationLevel
+ @abstract Optimization level for the Metal compiler.
+ 
+ @constant MTLLibraryOptimizationLevelDefault
+ Optimize for program performance.
+ 
+ @constant MTLLibraryOptimizationLevelSize
+ Like default, with extra optimizations to reduce code size.
+ */
+typedef NS_ENUM(NSInteger, MTLLibraryOptimizationLevel)
+{
+    MTLLibraryOptimizationLevelDefault = 0,
+    MTLLibraryOptimizationLevelSize = 1,
+} API_AVAILABLE(macos(13.0), ios(16.0));
+
 MTL_EXPORT API_AVAILABLE(macos(10.11), ios(8.0))
 @interface MTLCompileOptions : NSObject <NSCopying>
 
@@ -228,8 +246,8 @@
  This property should be set such that the dynamic library can be found in the file system at the time a pipeline state is created.
  Specify one of:
  - an absolute path to a file from which the dynamic library can be loaded, or
- - a path relative to @executable_path, where @executable_path is substituted with the directory name from which the MTLLibrary containing the MTLFunction entrypoint used to create the pipeline state is loaded, or
- - a path relative to @loader_path, where @loader_path is substituted with the directory name from which the MTLLibrary with the reference to this installName embedded is loaded.
+ - a path relative to \@executable_path, where \@executable_path is substituted with the directory name from which the MTLLibrary containing the MTLFunction entrypoint used to create the pipeline state is loaded, or
+ - a path relative to \@loader_path, where \@loader_path is substituted with the directory name from which the MTLLibrary with the reference to this installName embedded is loaded.
  The first is appropriate for MTLDynamicLibrary written to the file-system using its serializeToURL:error: method on the current device.
  The others are appropriate when the MTLDynamicLibrary is installed as part of a bundle or app, where the absolute path is not known.
  This property is ignored when the type property is not set to MTLLibraryTypeDynamic.
@@ -252,6 +270,13 @@
  @abstract If YES,  set the compiler to compile shaders to preserve invariance.  The default is false.
  */
 @property (readwrite, nonatomic) BOOL preserveInvariance API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(13.0));
+
+/*!
+ @property optimizationLevel
+ @abstract Sets the compiler optimization level.
+ */
+@property (readwrite, nonatomic) MTLLibraryOptimizationLevel optimizationLevel API_AVAILABLE(macos(13.0), ios(16.0));
+
 @end
 
 /*!
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLPipeline.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLPipeline.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLPipeline.h	2022-02-23 07:11:26.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLPipeline.h	2022-06-03 18:08:07.000000000 -0400
@@ -36,7 +36,7 @@
 /* Individual buffer descriptor access */
 - (MTLPipelineBufferDescriptor *)objectAtIndexedSubscript:(NSUInteger)bufferIndex;
 
-/* This always uses 'copy' semantics. It is safe to set the buffer descriptor at any legal index to nil, which resets that buffer descriptor to default vaules. */
+/* This always uses 'copy' semantics. It is safe to set the buffer descriptor at any legal index to nil, which resets that buffer descriptor to default values. */
 - (void)setObject:(nullable MTLPipelineBufferDescriptor *)buffer atIndexedSubscript:(NSUInteger)bufferIndex;
 
 @end
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderCommandEncoder.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderCommandEncoder.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderCommandEncoder.h	2022-02-23 07:11:26.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderCommandEncoder.h	2022-06-03 18:10:23.000000000 -0400
@@ -614,7 +614,7 @@
      Note that calling useResource does not retain the resource. It is the responsiblity of the user to retain the resource until
      the command buffer has been executed.
  */
-- (void)useResource:(id <MTLResource>)resource usage:(MTLResourceUsage)usage API_AVAILABLE(macos(10.13), ios(11.0));
+- (void)useResource:(id <MTLResource>)resource usage:(MTLResourceUsage)usage API_DEPRECATED_WITH_REPLACEMENT("Use useResource:usage:stages: instead", macos(10.13, 13.0), ios(11.0, 16.0));
 
 /*!
  * @method useResources:count:usage:
@@ -624,12 +624,12 @@
    Note that calling useResources does not retain the resources. It is the responsiblity of the user to retain the resources until
    the command buffer has been executed.
 */
-- (void)useResources:(const id <MTLResource> __nonnull[__nonnull])resources count:(NSUInteger)count usage:(MTLResourceUsage)usage API_AVAILABLE(macos(10.13), ios(11.0));
+- (void)useResources:(const id <MTLResource> __nonnull[__nonnull])resources count:(NSUInteger)count usage:(MTLResourceUsage)usage API_DEPRECATED_WITH_REPLACEMENT("Use useResources:count:usage:stages: instead", macos(10.13, 13.0), ios(11.0, 16.0));
 
 /*!
  * @method useResources:usage:stage
  * @abstract Declare that a resource may be accessed by the render pass through an argument buffer
- * @For hazard tracked resources, this method protects against data hazards. This method must be called before encoding any draw commands which may access the resource through an argument buffer. However, this method may cause color attachments to become decompressed. Therefore, this method should be called until as late as possible within a render command encoder. Declaring a minimal usage (i.e. read-only) may prevent color attachments from becoming decompressed on some devices.
+ * @discussion For hazard tracked resources, this method protects against data hazards. This method must be called before encoding any draw commands which may access the resource through an argument buffer. However, this method may cause color attachments to become decompressed. Therefore, this method should be called until as late as possible within a render command encoder. Declaring a minimal usage (i.e. read-only) may prevent color attachments from becoming decompressed on some devices.
  
     Note that calling useResource does not retain the resource. It is the responsiblity of the user to retain the resource until
     the command buffer has been executed.
@@ -651,24 +651,24 @@
  * @abstract Declare that the resources allocated from a heap may be accessed by the render pass through an argument buffer
  * @discussion This method does not protect against data hazards; these hazards must be addressed using an MTLFence. This method must be called before encoding any draw commands which may access the resources allocated from the heap through an argument buffer. This method may cause all of the color attachments allocated from the heap to become decompressed. Therefore, it is recommended that the useResource:usage: or useResources:count:usage: methods be used for color attachments instead, with a minimal (i.e. read-only) usage.
  */
-- (void)useHeap:(id <MTLHeap>)heap API_AVAILABLE(macos(10.13), ios(11.0));
+- (void)useHeap:(id <MTLHeap>)heap API_DEPRECATED_WITH_REPLACEMENT("Use useHeap:stages: instead", macos(10.13, 13.0), ios(11.0, 16.0));
 
 /*!
  * @method useHeaps:count:
  * @abstract Declare that the resources allocated from an array of heaps may be accessed by the render pass through an argument buffer
  * @discussion This method does not protect against data hazards; these hazards must be addressed using an MTLFence. This method must be called before encoding any draw commands which may access the resources allocated from the heaps through an argument buffer. This method may cause all of the color attachments allocated from the heaps to become decompressed. Therefore, it is recommended that the useResource:usage: or useResources:count:usage: methods be used for color attachments instead, with a minimal (i.e. read-only) usage.
  */
-- (void)useHeaps:(const id <MTLHeap> __nonnull[__nonnull])heaps count:(NSUInteger)count API_AVAILABLE(macos(10.13), ios(11.0));
+- (void)useHeaps:(const id <MTLHeap> __nonnull[__nonnull])heaps count:(NSUInteger)count API_DEPRECATED_WITH_REPLACEMENT("Use useHeaps:count:stages: instead", macos(10.13, 13.0), ios(11.0, 16.0));
 
 /*!
- * @method useHeap:stages
+ * @method useHeap:stages:
  * @abstract Declare that the resources allocated from a heap may be accessed by the render pass through an argument buffer
  * @discussion If the heap is tracked, this method protects against hazard tracking; these hazards must be addressed using an MTLFence. This method must be called before encoding any draw commands which may access the resources allocated from the heap through an argument buffer. This method may cause all of the color attachments allocated from the heap to become decompressed. Therefore, it is recommended that the useResource:usage: or useResources:count:usage: methods be used for color attachments instead, with a minimal (i.e. read-only) usage.
  */
 - (void)useHeap:(id <MTLHeap>)heap stages:(MTLRenderStages)stages API_AVAILABLE(macos(10.15), ios(13.0));
 
 /*!
- * @method useHeaps:count:stages
+ * @method useHeaps:count:stages:
  * @abstract Declare that the resources allocated from an array of heaps may be accessed by the render pass through an argument buffer
  * @discussion This method does not protect against data hazards; these hazards must be addressed using an MTLFence. This method must be called before encoding any draw commands which may access the resources allocated from the heaps through an argument buffer. This method may cause all of the color attachments allocated from the heaps to become decompressed. Therefore, it is recommended that the useResource:usage: or useResources:count:usage: methods be used for color attachments instead, with a minimal (i.e. read-only) usage.
  */
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderPass.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderPass.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderPass.h	2022-02-23 07:11:27.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderPass.h	2022-06-03 18:10:24.000000000 -0400
@@ -9,6 +9,16 @@
 #import <Metal/MTLDefines.h>
 
 
+typedef struct
+{
+    double red;
+    double green;
+    double blue;
+    double alpha;
+} MTLClearColor;
+
+MTL_INLINE MTLClearColor MTLClearColorMake(double red, double green, double blue, double alpha);
+
 
 
 #import <Metal/MTLTypes.h>
@@ -38,16 +48,6 @@
     MTLStoreActionOptionCustomSamplePositions = 1 << 0,
 } API_AVAILABLE(macos(10.13), ios(11.0));
 
-typedef struct
-{
-    double red;
-    double green;
-    double blue;
-    double alpha;
-} MTLClearColor;
-
-MTL_INLINE MTLClearColor MTLClearColorMake(double red, double green, double blue, double alpha);
-
 @protocol MTLTexture;
 @protocol MTLBuffer;
 
@@ -212,7 +212,7 @@
 /* Individual attachment state access */
 - (MTLRenderPassColorAttachmentDescriptor *)objectAtIndexedSubscript:(NSUInteger)attachmentIndex;
 
-/* This always uses 'copy' semantics.  It is safe to set the attachment state at any legal index to nil, which resets that attachment descriptor state to default vaules. */
+/* This always uses 'copy' semantics.  It is safe to set the attachment state at any legal index to nil, which resets that attachment descriptor state to default values. */
 - (void)setObject:(nullable MTLRenderPassColorAttachmentDescriptor *)attachment atIndexedSubscript:(NSUInteger)attachmentIndex;
 
 @end
@@ -272,7 +272,7 @@
 /* Individual attachment state access */
 - (MTLRenderPassSampleBufferAttachmentDescriptor *)objectAtIndexedSubscript:(NSUInteger)attachmentIndex;
 
-/* This always uses 'copy' semantics.  It is safe to set the attachment state at any legal index to nil, which resets that attachment descriptor state to default vaules. */
+/* This always uses 'copy' semantics.  It is safe to set the attachment state at any legal index to nil, which resets that attachment descriptor state to default values. */
 - (void)setObject:(nullable MTLRenderPassSampleBufferAttachmentDescriptor *)attachment atIndexedSubscript:(NSUInteger)attachmentIndex;
 
 @end
@@ -324,14 +324,14 @@
 /*!
  @property tileWidth:
  @abstract The width in pixels of the tile.
- @discssion Defaults to 0. Zero means Metal chooses a width that fits within the local memory.
+ @discussion Defaults to 0. Zero means Metal chooses a width that fits within the local memory.
  */
 @property (nonatomic) NSUInteger tileWidth API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(11.0), tvos(14.5));
 
 /*!
  @property tileHeight:
  @abstract The height in pixels of the tile.
- @discssion Defaults to 0. Zero means Metal chooses a height that fits within the local memory.
+ @discussion Defaults to 0. Zero means Metal chooses a height that fits within the local memory.
  */
 @property (nonatomic) NSUInteger tileHeight API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(11.0), tvos(14.5));
 
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderPipeline.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderPipeline.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderPipeline.h	2022-02-23 07:14:18.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderPipeline.h	2022-06-03 18:08:06.000000000 -0400
@@ -130,9 +130,12 @@
 MTL_EXPORT API_AVAILABLE(macos(10.11), ios(8.0))
 @interface MTLRenderPipelineReflection : NSObject
 
-@property (nullable, readonly) NSArray <MTLArgument *> *vertexArguments;
-@property (nullable, readonly) NSArray <MTLArgument *> *fragmentArguments;
-@property (nullable, readonly) NSArray <MTLArgument *> *tileArguments API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(11.0), tvos(14.5));
+@property (nonnull, readonly) NSArray <id<MTLBinding>> *vertexBindings API_AVAILABLE(macos(13.0), ios(16.0));
+@property (nonnull, readonly) NSArray <id<MTLBinding>> *fragmentBindings API_AVAILABLE(macos(13.0), ios(16.0));
+@property (nonnull, readonly) NSArray <id<MTLBinding>> *tileBindings API_AVAILABLE(macos(13.0), ios(16.0));
+@property (nullable, readonly) NSArray <MTLArgument *> *vertexArguments API_DEPRECATED_WITH_REPLACEMENT("vertexBindings", macos(10.11, API_TO_BE_DEPRECATED), ios(8.0, API_TO_BE_DEPRECATED));
+@property (nullable, readonly) NSArray <MTLArgument *> *fragmentArguments API_DEPRECATED_WITH_REPLACEMENT("fragmentBindings", macos(10.11, API_TO_BE_DEPRECATED), ios(8.0, API_TO_BE_DEPRECATED));
+@property (nullable, readonly) NSArray <MTLArgument *> *tileArguments API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(11.0), tvos(14.5)) API_DEPRECATED_WITH_REPLACEMENT("tileBindings", macos(11.0, API_TO_BE_DEPRECATED), ios(11.0, API_TO_BE_DEPRECATED));
 @end
 
 MTL_EXPORT API_AVAILABLE(macos(10.11), ios(8.0))
@@ -146,7 +149,7 @@
 @property (nullable, copy, nonatomic) MTLVertexDescriptor *vertexDescriptor;
 
 /* Rasterization and visibility state */
-@property (readwrite, nonatomic) NSUInteger sampleCount; //DEPRECATED - aliases rasterSampleCount property
+@property (readwrite, nonatomic) NSUInteger sampleCount API_DEPRECATED_WITH_REPLACEMENT("rasterSampleCount", macos(10.11, 13.0), ios(8.0, 16.0));
 @property (readwrite, nonatomic) NSUInteger rasterSampleCount;
 @property (readwrite, nonatomic, getter = isAlphaToCoverageEnabled) BOOL alphaToCoverageEnabled;
 @property (readwrite, nonatomic, getter = isAlphaToOneEnabled) BOOL alphaToOneEnabled;
@@ -220,6 +223,7 @@
     API_AVAILABLE(macos(12.0), ios(15.0));
 
 
+
 /*!
  @method reset
  @abstract Restore all pipeline descriptor properties to their default values.
@@ -271,6 +275,18 @@
 @property (readonly) BOOL supportIndirectCommandBuffers API_AVAILABLE(macos(10.14), ios(12.0));
 
 
+/*!
+ @property gpuHandle
+ @abstract accessible by the CPU, and used to get the device handle of a resource/object that could be normally passed to the GPU within an argument buffer
+ this will be deleted as the gpuResourceID will replace it
+ */
+@property (readonly) MTLGPUHandle gpuHandle;
+/*!
+ @property gpuResourceID
+ @abstract Accessible by the CPU, it is used to get the handle of a GPU resource that could be normally passed to the GPU
+ */
+@property (readonly) MTLResourceID gpuResourceID API_AVAILABLE(macos(13.0), ios(16.0));
+
 
 @end
 
@@ -280,7 +296,7 @@
 /* Individual attachment state access */
 - (MTLRenderPipelineColorAttachmentDescriptor *)objectAtIndexedSubscript:(NSUInteger)attachmentIndex;
 
-/* This always uses 'copy' semantics.  It is safe to set the attachment state at any legal index to nil, which resets that attachment descriptor state to default vaules. */
+/* This always uses 'copy' semantics.  It is safe to set the attachment state at any legal index to nil, which resets that attachment descriptor state to default values. */
 - (void)setObject:(nullable MTLRenderPipelineColorAttachmentDescriptor *)attachment atIndexedSubscript:(NSUInteger)attachmentIndex;
 
 @end
@@ -300,7 +316,7 @@
 /* Individual tile attachment state access */
 - (MTLTileRenderPipelineColorAttachmentDescriptor*)objectAtIndexedSubscript:(NSUInteger)attachmentIndex;
 
-/* This always uses 'copy' semantics.  It is safe to set the attachment state at any legal index to nil, which resets that attachment descriptor state to default vaules. */
+/* This always uses 'copy' semantics.  It is safe to set the attachment state at any legal index to nil, which resets that attachment descriptor state to default values. */
 - (void)setObject:(MTLTileRenderPipelineColorAttachmentDescriptor*)attachment atIndexedSubscript:(NSUInteger)attachmentIndex;
 
 @end
@@ -370,9 +386,11 @@
     API_AVAILABLE(macos(12.0), ios(15.0));
 
 
+
 - (void)reset;
 
 @end
 
 
+
 NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLResource.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLResource.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLResource.h	2022-02-23 07:11:28.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLResource.h	2022-05-31 14:50:45.000000000 -0400
@@ -181,8 +181,8 @@
     MTLResourceHazardTrackingModeTracked API_AVAILABLE(macos(10.15), ios(13.0)) = MTLHazardTrackingModeTracked << MTLResourceHazardTrackingModeShift,
     
     // Deprecated spellings
-    MTLResourceOptionCPUCacheModeDefault       = MTLResourceCPUCacheModeDefaultCache,
-    MTLResourceOptionCPUCacheModeWriteCombined = MTLResourceCPUCacheModeWriteCombined,
+    MTLResourceOptionCPUCacheModeDefault       API_DEPRECATED_WITH_REPLACEMENT("MTLResourceCPUCacheModeDefaultCache", macos(10.11, 13.0), ios(8.0, 16.0)) = MTLResourceCPUCacheModeDefaultCache,
+    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));
 
 @protocol MTLDevice;
@@ -258,7 +258,7 @@
 
 /*!
  @property allocatedSize
- @abstrace The size in bytes occupied by this resource
+ @abstract The size in bytes occupied by this resource
 */
 @property (readonly) NSUInteger allocatedSize API_AVAILABLE(macos(10.13), ios(11.0));
 
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLSampler.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLSampler.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLSampler.h	2022-02-23 07:14:20.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLSampler.h	2022-06-03 18:10:25.000000000 -0400
@@ -215,5 +215,17 @@
  */
 @property (readonly) id <MTLDevice> device;
 
+/*!
+ @property gpuHandle
+ @abstract accessible by the CPU, and used to get the device handle of a resource/object that could be normally passed to the GPU within an argument buffer
+ this will be deleted as the gpuResourceID will replace it
+ */
+@property (readonly) MTLGPUHandle gpuHandle;
+/*!
+ @property gpuResourceID
+ @abstract Accessible by the CPU, it is used to get the handle of a GPU resource that could be normally passed to the GPU
+ */
+@property (readonly) MTLResourceID gpuResourceID API_AVAILABLE(macos(13.0), ios(16.0));
+
 @end
 NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLStageInputOutputDescriptor.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLStageInputOutputDescriptor.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLStageInputOutputDescriptor.h	2022-02-23 07:11:26.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLStageInputOutputDescriptor.h	2022-05-31 14:50:44.000000000 -0400
@@ -86,6 +86,7 @@
     MTLAttributeFormatShortNormalized API_AVAILABLE(macos(10.13), ios(11.0)) = 52,
     
     MTLAttributeFormatHalf API_AVAILABLE(macos(10.13), ios(11.0)) = 53,
+
     
 } API_AVAILABLE(macos(10.12), ios(10.0));
 
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLTexture.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLTexture.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLTexture.h	2022-02-23 07:11:25.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLTexture.h	2022-06-03 18:08:06.000000000 -0400
@@ -380,6 +380,19 @@
  */
 @property (readonly) BOOL allowGPUOptimizedContents API_AVAILABLE(macos(10.14), ios(12.0));
 
+
+/*!
+ @property gpuHandle
+ @abstract accessible by the CPU, and used to get the device handle of a resource/object that could be normally passed to the GPU within an argument buffer
+ this will be deleted as the gpuResourceID will replace it
+ */
+@property (readonly) MTLGPUHandle gpuHandle;
+/*!
+ @property gpuResourceID
+ @abstract Accessible by the CPU, it is used to get the handle of a GPU resource that could be normally passed to the GPU
+ */
+@property (readonly) MTLResourceID gpuResourceID API_AVAILABLE(macos(13.0), ios(16.0));
+
 /*!
  @method getBytes:bytesPerRow:bytesPerImage:fromRegion:mipmapLevel:slice:
  @abstract Copies a block of pixels from a texture slice into the application's memory.
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLTypes.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLTypes.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLTypes.h	2022-02-23 07:11:27.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLTypes.h	2022-06-03 18:08:07.000000000 -0400
@@ -86,3 +86,23 @@
     return position;
 }
 
+
+/*!
+ @typedef MTLGPUHandle
+ @abstract Accessbile by the CPU, it is used to get the handle of a GPU resource that could be normally passed to the GPU
+ 
+ @discussion
+ A MTLGPUHandle 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.
+ */
+typedef uint64_t MTLGPUHandle;
+
+/*!
+ @typedef MTLResourceID
+ @abstract Accessible by the CPU, it is used to get the handle of a GPU resource that could be normally passed to the GPU
+ @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.
+ */
+typedef struct MTLResourceID
+{
+    uint64_t _impl;
+} MTLResourceID;
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLVertexDescriptor.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLVertexDescriptor.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLVertexDescriptor.h	2022-02-23 07:14:18.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLVertexDescriptor.h	2022-05-31 15:04:34.000000000 -0400
@@ -86,6 +86,7 @@
     MTLVertexFormatShortNormalized API_AVAILABLE(macos(10.13), ios(11.0)) = 52,
     
     MTLVertexFormatHalf API_AVAILABLE(macos(10.13), ios(11.0)) = 53,
+
     
 } API_AVAILABLE(macos(10.11), ios(8.0));
 
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/Metal.apinotes /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/Metal.apinotes
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/Metal.apinotes	2022-02-12 07:15:31.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/Metal.apinotes	2022-05-13 20:51:40.000000000 -0400
@@ -326,7 +326,16 @@
   SwiftName: ushort
 - Name: MTLVertexFormatUShortNormalized
   SwiftName: ushortNormalized
-
+- Name: MTLIOCompressionMethodZlib
+  SwiftName: zlib
+- Name: MTLIOCompressionMethodLZFSE
+  SwiftName: lzfse
+- Name: MTLIOCompressionMethodLZ4
+  SwiftName: lz4
+- Name: MTLIOCompressionMethodLZMA
+  SwiftName: lzma
+- Name: MTLIOCompressionMethodLZBitmap
+  SwiftName: lzBitmap
 Classes:
 - Name: MTLCaptureManager
   Methods:
@@ -381,6 +390,19 @@
     SwiftPrivate: true
 
 Protocols:
+- Name: MTLIOScratchBufferAllocator
+  Methods:
+  - Selector: 'newScratchBufferWithMinimumSize:'
+    SwiftName: makeScratchBuffer(minimumSize:)
+    MethodKind: Instance
+- Name: MTLIOCommandBuffer
+  Methods:
+  - Selector: 'waitForEvent:value:'
+    SwiftName: waitForEvent(_:value:)
+    MethodKind: Instance
+  - Selector: 'signalEvent:value:'
+    SwiftName: signalEvent(_:value:)
+    MethodKind: Instance
 - Name: MTLBlitCommandEncoder
   Methods:
   - Selector: 'synchronizeResource:'
@@ -482,6 +504,14 @@
   - Selector: 'commandBufferWithDescriptor:'
     SwiftName: makeCommandBuffer(descriptor:)
     MethodKind: Instance
+- Name: MTLIOCommandQueue
+  Methods:
+  - Selector: 'commandBuffer'
+    SwiftName: makeCommandBuffer()
+    MethodKind: Instance
+  - Selector: 'commandBufferWithUnretainedReferences'
+    SwiftName: makeCommandBufferWithUnretainedReferences()
+    MethodKind: Instance
 - Name: MTLComputeCommandEncoder
   Methods:
   - Selector: 'setBytes:length:atIndex:'
@@ -707,6 +737,15 @@
   - Selector: 'newBinaryArchiveWithDescriptor:error:'
     SwiftName: makeBinaryArchive(descriptor:)
     MethodKind: Instance
+  - Selector: 'newIOHandleWithURL:error:'
+    SwiftName: makeIOHandle(url:)
+    MethodKind: Instance
+  - Selector: 'newIOHandleWithURL:compressionMethod:error:'
+    SwiftName: makeIOHandle(url:compressionMethod:)
+    MethodKind: Instance
+  - Selector: 'newIOCommandQueueWithDescriptor:error:'
+    SwiftName: makeIOCommandQueue(descriptor:)
+    MethodKind: Instance
 - Name: MTLDrawable
   Methods:
   - Selector: 'presentAtTime:'
@@ -988,6 +1027,18 @@
   - Selector: 'useHeaps:count:'
     MethodKind: Instance
     SwiftPrivate: true
+  - Selector: 'useResource:usage:stages:'
+    SwiftName: useResource(_:usage:stages:)
+    MethodKind: Instance
+  - Selector: 'useResources:count:usage:stages:'
+    MethodKind: Instance
+    SwiftPrivate: true
+  - Selector: 'useHeap:stages:'
+    SwiftName: useHeap(_:stages:)
+    MethodKind: Instance
+  - Selector: 'useHeaps:count:stages:'
+    MethodKind: Instance
+    SwiftPrivate: true
   - Selector: 'memoryBarrierWithScope:afterStages:beforeStages:'
     MethodKind: Instance
     SwiftName: memoryBarrier(scope:after:before:)
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/Metal.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/Metal.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/Metal.h	2022-02-12 07:31:29.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Metal.framework/Headers/Metal.h	2022-05-25 21:20:37.000000000 -0400
@@ -46,3 +46,6 @@
 #import <Metal/MTLBinaryArchive.h>
 #import <Metal/MTLIntersectionFunctionTable.h>
 #import <Metal/MTLFunctionStitching.h>
+#import <Metal/MTLIOCommandQueue.h>
+#import <Metal/MTLIOCommandBuffer.h>
+#import <Metal/MTLIOCompressor.h>
Clone this wiki locally