Skip to content

Metal iOS xcode9 beta3

Vincent Dondain edited this page Jul 10, 2017 · 1 revision

#Metal.framework

diff -ruN /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLArgument.h /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLArgument.h
--- /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLArgument.h	2017-06-09 18:32:56.000000000 -0400
+++ /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLArgument.h	2017-06-29 02:20:17.000000000 -0400
@@ -172,8 +172,6 @@
 - (nullable MTLPointerType *)pointerType  NS_AVAILABLE(10_13, 11_0);
 
 @property (readonly) NSUInteger argumentIndex NS_AVAILABLE(10_13, 11_0);
-// indirectArgumentIndex is deprecated, use argumentIndex instead
-@property (readonly) NSUInteger indirectArgumentIndex NS_AVAILABLE(10_13, 11_0);
 
 
 @end
@@ -195,8 +193,6 @@
 @property (readonly) NSUInteger arrayLength;
 @property (readonly) NSUInteger stride;
 @property (readonly) NSUInteger argumentIndexStride NS_AVAILABLE(10_13, 11_0);
-// indirectArgumentIndexStride is deprecated, use argumentIndexStride instead
-@property (readonly) NSUInteger indirectArgumentIndexStride NS_AVAILABLE(10_13, 11_0);
 - (nullable MTLStructType *)elementStructType;
 - (nullable MTLArrayType *)elementArrayType;
 - (nullable MTLTextureReferenceType *)elementTextureReferenceType  NS_AVAILABLE(10_13, 11_0);
@@ -213,7 +209,6 @@
 @property (readonly) NSUInteger alignment;              // min alignment for the element data
 @property (readonly) NSUInteger dataSize;               // sizeof(T) for T *argName
 
-@property (readonly) BOOL elementIsIndirectArgumentBuffer NS_AVAILABLE(10_13, 11_0);
 @property (readonly) BOOL elementIsArgumentBuffer NS_AVAILABLE(10_13, 11_0);
 
 - (nullable MTLStructType *)elementStructType  NS_AVAILABLE(10_13, 11_0);
@@ -247,10 +242,11 @@
 @property (readonly, getter=isActive) BOOL active;
 
 // for buffer arguments
-@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) MTLStructType *bufferStructType;
+@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) MTLStructType  *bufferStructType;
+@property (readonly, nullable) MTLPointerType *bufferPointerType NS_AVAILABLE(10_13, 11_0);
 
 
 // for threadgroup memory arguments
diff -ruN /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLArgumentEncoder.h /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLArgumentEncoder.h
--- /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLArgumentEncoder.h	2017-06-09 20:26:32.000000000 -0400
+++ /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLArgumentEncoder.h	2017-06-29 02:18:09.000000000 -0400
@@ -104,13 +104,6 @@
 - (void*)constantDataAtIndex:(NSUInteger)index;
 
 
-/*!
- * @method newArgumentEncoderForBufferAtIndex:
- * @brief Returns a pointer to a new MTLArgumentEncoder that can be used to encode the an argument buffer
- * in the buffer associated with a given index.
- * Returns nil if the resource at the given index is not an argument buffer.
- */
-- (nullable id<MTLArgumentEncoder>)newArgumentEncoderForBufferAtIndex:(NSUInteger)index;
 
 @end
 
diff -ruN /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCommandBuffer.h /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCommandBuffer.h
--- /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCommandBuffer.h	2017-06-09 18:32:57.000000000 -0400
+++ /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLCommandBuffer.h	2017-06-29 01:05:21.000000000 -0400
@@ -63,15 +63,33 @@
 /*!
  @enum MTLCommandBufferError
  @abstract Error codes that can be found in MTLCommandBuffer.error
- @constant MTLCommandBufferErrorInternal An internal error that doesn't fit into the other categories. The actual low level error code is encoded in the local description.
- @constant MTLCommandBufferErrorTimeout Execution of this command buffer took too long, execution of this command was interrupted and aborted.
- @constant MTLCommandBufferErrorPageFault Execution of this command buffer generated an unserviceable GPU page fault. This can caused by buffer read write attribute mismatch or out of boundary access.
- @constant MTLCommandBufferErrorBlacklisted Access to this device has been revoked because this client has been responsible for too many timeouts or hangs.
- @constant MTLCommandBufferErrorNotPermitted This process does not have access to use this device.
- @constant MTLCommandBufferErrorOutOfMemory Insufficient memory was available to execute this command buffer.
- @constant MTLCommandBufferErrorInvalidResource The command buffer referenced an invalid resource.  This is most commonly caused when the caller deletes a resource before executing a command buffer that refers to it.
- @constant MTLCommandBufferErrorMemoryless One or more internal resources limits reached that prevent using memoryless render pass attachments. See error string for more detail.
- @constant MTLCommandBufferErrorDeviceRemoved The device was physically removed before the command could finish execution
+ 
+ @constant MTLCommandBufferErrorInternal
+ An internal error that doesn't fit into the other categories. The actual low level error code is encoded in the local description.
+ 
+ @constant MTLCommandBufferErrorTimeout
+ Execution of this command buffer took too long, execution of this command was interrupted and aborted.
+ 
+ @constant MTLCommandBufferErrorPageFault
+ Execution of this command buffer generated an unserviceable GPU page fault. This can caused by buffer read write attribute mismatch or out of boundary access.
+ 
+ @constant MTLCommandBufferErrorBlacklisted
+ Access to this device has been revoked because this client has been responsible for too many timeouts or hangs.
+ 
+ @constant MTLCommandBufferErrorNotPermitted
+ This process does not have access to use this device.
+ 
+ @constant MTLCommandBufferErrorOutOfMemory
+ Insufficient memory was available to execute this command buffer.
+ 
+ @constant MTLCommandBufferErrorInvalidResource
+ The command buffer referenced an invalid resource.  This is most commonly caused when the caller deletes a resource before executing a command buffer that refers to it.
+ 
+ @constant MTLCommandBufferErrorMemoryless
+ One or more internal resources limits reached that prevent using memoryless render pass attachments. See error string for more detail.
+ 
+ @constant MTLCommandBufferErrorDeviceRemoved
+ The device was physically removed before the command could finish execution
  */
 
 typedef NS_ENUM(NSUInteger, MTLCommandBufferError)
diff -ruN /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLComputeCommandEncoder.h /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLComputeCommandEncoder.h
--- /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLComputeCommandEncoder.h	2017-06-09 18:54:17.000000000 -0400
+++ /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLComputeCommandEncoder.h	2017-06-29 01:05:21.000000000 -0400
@@ -59,7 +59,7 @@
  @method setBuffers:offsets:withRange:
  @brief Set an array of global buffers for all compute kernels with the given bind point range.
  */
-- (void)setBuffers:(const id <MTLBuffer> __nullable [__nullable])buffers offsets:(const NSUInteger [__nonnull])offsets withRange:(NSRange)range;
+- (void)setBuffers:(const id <MTLBuffer> __nullable [__nonnull])buffers offsets:(const NSUInteger [__nonnull])offsets withRange:(NSRange)range;
 
 /*!
  @method setTexture:atIndex:
@@ -71,7 +71,7 @@
  @method setTextures:withRange:
  @brief Set an array of global textures for all compute kernels with the given bind point range.
  */
-- (void)setTextures:(const id <MTLTexture> __nullable [__nullable])textures withRange:(NSRange)range;
+- (void)setTextures:(const id <MTLTexture> __nullable [__nonnull])textures withRange:(NSRange)range;
 
 /*!
  @method setSamplerState:atIndex:
@@ -83,7 +83,7 @@
  @method setSamplers:withRange:
  @brief Set an array of global samplers for all compute kernels with the given bind point range.
  */
-- (void)setSamplerStates:(const id <MTLSamplerState> __nullable [__nullable])samplers withRange:(NSRange)range;
+- (void)setSamplerStates:(const id <MTLSamplerState> __nullable [__nonnull])samplers withRange:(NSRange)range;
 
 /*!
  @method setSamplerState:lodMinClamp:lodMaxClamp:atIndex:
@@ -95,7 +95,8 @@
  @method setSamplers:lodMinClamps:lodMaxClamps:withRange:
  @brief Set an array of global samplers for all compute kernels with the given bind point range.
  */
-- (void)setSamplerStates:(const id <MTLSamplerState> __nullable [__nullable])samplers lodMinClamps:(const float [__nullable])lodMinClamps lodMaxClamps:(const float [__nullable])lodMaxClamps withRange:(NSRange)range;
+- (void)setSamplerStates:(const id <MTLSamplerState> __nullable [__nonnull])samplers lodMinClamps:(const float [__nonnull])lodMinClamps lodMaxClamps:(const float [__nonnull])lodMaxClamps withRange:(NSRange)range;
+
 
 /*!
  @method setThreadgroupMemoryLength:atIndex:
@@ -105,6 +106,10 @@
 
 
 
+/*
+ @method setStageInRegion:region:
+ @brief Set the region of the stage_in attributes to apply the compute kernel.
+*/
 - (void)setStageInRegion:(MTLRegion)region NS_AVAILABLE(10_12, 10_0);
 
 /*
@@ -151,8 +156,8 @@
  * @abstract Declare that an array of resources may be accessed through an argument buffer by the command encoder
  * @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 dispatch commands which may access the resources through an argument buffer.
  */
-- (void)useResources:(const id <MTLResource> __nullable[__nullable])resources count:(NSUInteger)count usage:(MTLResourceUsage)usage NS_AVAILABLE(10_13, 11_0);
- 
+- (void)useResources:(const id <MTLResource> __nonnull[__nonnull])resources count:(NSUInteger)count usage:(MTLResourceUsage)usage NS_AVAILABLE(10_13, 11_0);
+
 /*!
  * @method useHeap:
  * @abstract Declare that the resources allocated from a heap may be accessed by the render pass through an argument buffer
@@ -165,7 +170,7 @@
  * @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 dispatch 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> __nullable[__nullable])heaps count:(NSUInteger)count NS_AVAILABLE(10_13, 11_0);
+- (void)useHeaps:(const id <MTLHeap> __nonnull[__nonnull])heaps count:(NSUInteger)count NS_AVAILABLE(10_13, 11_0);
 
 @end
 NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDevice.h /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDevice.h
--- /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDevice.h	2017-06-09 18:32:58.000000000 -0400
+++ /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDevice.h	2017-06-29 01:05:22.000000000 -0400
@@ -6,7 +6,6 @@
 //
 
 #import <Availability.h>
-#import <Foundation/NSObjCRuntime.h>
 #import <Foundation/Foundation.h>
 #import <Metal/MTLDefines.h>
 #import <Metal/MTLTypes.h>
@@ -29,7 +28,6 @@
 @protocol MTLHeap;
 @protocol MTLFence;
 @protocol MTLArgumentEncoder;
-@protocol MTLIndirectArgumentEncoder;
 @class MTLSamplerDescriptor;
 @class MTLRenderPipelineColorAttachmentDescriptor;
 @class MTLDepthStencilDescriptor;
@@ -128,15 +126,6 @@
     MTLArgumentBuffersTier2 = 1,
 } NS_ENUM_AVAILABLE(10_13, 11_0);
 
-/*!
- @enum MTLIndirectArgumentBuffersTier
- @abstract MTLIndirectArgumentBuffersTier determines support level for Indirect Argument Buffers format.
- */
-typedef NS_ENUM(NSUInteger, MTLIndirectArgumentBuffersTier)
-{
-    MTLIndirectArgumentBuffersTier1 = 0,
-    MTLIndirectArgumentBuffersTier2 = 1,
-} NS_ENUM_AVAILABLE(10_13, 11_0);
 
 /*!
  @abstract Represent a memory size and alignment in bytes.
@@ -213,59 +202,6 @@
 
 @end
 
-/*!
- * @class MTLIndirectArgumentDescriptor
- * @abstract Represents an indirect shader argument
- */
-NS_CLASS_AVAILABLE(10_13, 11_0)
-@interface MTLIndirectArgumentDescriptor : NSObject <NSCopying>
-
-/*!
- * @method indirectArgumentDescriptor
- * @abstract Create an autoreleased default indirect argument descriptor
- */
-+ (MTLIndirectArgumentDescriptor *)indirectArgumentDescriptor;
-
-/*!
- * @property dataType
- * @abstract For constants, the data type. Otherwise, MTLDataTypeTexture, MTLDataTypeSampler, or
- * MTLDataTypePointer.
- */
-@property (nonatomic) MTLDataType dataType;
-
-/*!
- * @property index
- * @abstract The binding point index of the argument
- */
-@property (nonatomic) NSUInteger index;
-
-/*!
- * @property arrayLength
- * @abstract The length of an array of constants, textures, or samplers, or 0 for non-array arguments
- */
-@property (nonatomic) NSUInteger arrayLength;
-
-/*!
- * @property access
- * @abstract Access flags for the argument
- */
-@property (nonatomic) MTLArgumentAccess access;
-
-/*!
- * @property textureType
- * @abstract For texture arguments, the texture type
- */
-@property (nonatomic) MTLTextureType textureType;
-
-/*!
- @property constantBlockAlignment
- @abstract if set forces the constant block to be aligned to the given alignment
- @discussion Should only be set on the first constant of the block and is only valid if a corresponding
-     explicit "alignas" is applied to the constant in the metal shader language.
- */
-@property (nonatomic) NSUInteger constantBlockAlignment;
-
-@end
 
 
 /*!
@@ -329,7 +265,6 @@
  */
 @property (readonly, getter=isDepth24Stencil8PixelFormatSupported) BOOL depth24Stencil8PixelFormatSupported NS_AVAILABLE_MAC(10_11);
 
-@optional
 /*!
  @property readWriteTextureSupport
  @abstract Query support tier for read-write texture formats.
@@ -344,12 +279,6 @@
  */
 @property (readonly) MTLArgumentBuffersTier argumentBuffersSupport NS_AVAILABLE(10_13, 11_0);
 
-/*!
- @property indirectArgumentBuffersSupport
- @abstract Query support tier for Indirect Argument Buffers.
- @return MTLIndirectArgumentBuffersTier enum value.
- */
-@property (readonly) MTLIndirectArgumentBuffersTier indirectArgumentBuffersSupport NS_AVAILABLE(10_13, 11_0);
 
 /*!
  @property rasterOrderGroupsSupported
@@ -357,7 +286,6 @@
  @return BOOL value. If YES, the device supports raster order groups. If NO, the device does not.
  */
 @property (readonly, getter=areRasterOrderGroupsSupported) BOOL rasterOrderGroupsSupported NS_AVAILABLE(10_13, 11_0);
-@required
 
 
 /*!
@@ -605,11 +533,6 @@
  */
 - (nullable id <MTLArgumentEncoder>)newArgumentEncoderWithArguments:(NSArray <MTLArgumentDescriptor *> *)arguments NS_AVAILABLE(10_13, 11_0);
 
-/*!
- * @method newIndirectArgumentEncoderWithArguments:count:
- * @abstract Creates an indirect argument encoder for an array of indirect argument descriptors which will be encoded sequentially.
- */
-- (nullable id <MTLIndirectArgumentEncoder>)newIndirectArgumentEncoderWithArguments:(NSArray <MTLIndirectArgumentDescriptor *> *)arguments NS_AVAILABLE(10_13, 11_0);
 
 
 
diff -ruN /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIndirectArgumentEncoder.h /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIndirectArgumentEncoder.h
--- /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIndirectArgumentEncoder.h	2017-06-09 20:26:32.000000000 -0400
+++ /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLIndirectArgumentEncoder.h	1969-12-31 19:00:00.000000000 -0500
@@ -1,115 +0,0 @@
-//
-//  MTLIndirectArgumentEncoder.h
-//  Metal
-//
-//  Copyright (c) 2016 Apple Inc. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-#import <Metal/MTLDefines.h>
-
-NS_ASSUME_NONNULL_BEGIN
-@protocol MTLDevice;
-@protocol MTLBuffer;
-@protocol MTLTexture;
-@protocol MTLSamplerState;
-@protocol MTLRenderPipelineState;
-
-/*!
- * @protocol MTLIndirectArgumentEncoder
- * @discussion MTLIndirectArgumentEncoder is deprecated, use MTLArgumentEncoder instead
- */
-NS_AVAILABLE(10_13, 11_0)
-@protocol MTLIndirectArgumentEncoder <NSObject>
-
-/*!
- @property device
- @abstract The device this indirect argument encoder was created against.
- */
-@property (readonly) id <MTLDevice> device;
-
-/*!
- @property label
- @abstract A string to help identify this object.
- */
-@property (nullable, copy, atomic) NSString *label;
-
-/*!
- * @property encodedLength
- * @abstract The number of bytes required to store the encoded resource bindings.
- */
-@property (readonly) NSUInteger encodedLength;
-
-/*!
- * @property alignment
- * @abstract The alignment in bytes required to store the encoded resource bindings.
- */
-@property (readonly) NSUInteger alignment;
-
-/*!
- * @method setIndirectArgumentBuffer:offset:
- * @brief Sets the destination buffer and offset indirect arguments will be encoded into.
- */
-- (void)setIndirectArgumentBuffer:(id <MTLBuffer>)indirectArgumentBuffer offset:(NSUInteger)offset;
-
-/*!
- * @method setIndirectArgumentBuffer:offset:arrayElement:
- * @brief Sets the destination buffer, starting offset and specific array element indirect arguments will be encoded into. arrayElement represents
-          the desired element of IAB array targetted by encoding
- */
-- (void)setIndirectArgumentBuffer:(id <MTLBuffer>)indirectArgumentBuffer startOffset:(NSUInteger)startOffset arrayElement:(NSUInteger)arrayElement;
-
-/*!
- * @method setBuffer:offset:atIndex:
- * @brief Set a buffer at the given bind point index.
- */
-- (void)setBuffer:(id <MTLBuffer>)buffer offset:(NSUInteger)offset atIndex:(NSUInteger)index;
-
-/*!
- * @method setBuffers:offsets:withRange:
- * @brief Set an array of buffers at the given bind point index range.
- */
-- (void)setBuffers:(const id <MTLBuffer> __nullable [__nonnull])buffers offsets:(const NSUInteger [__nonnull])offsets withRange:(NSRange)range;
-
-/*!
- * @method setTexture:atIndex:
- * @brief Set a texture at the given bind point index.
- */
-- (void)setTexture:(id <MTLTexture>)texture atIndex:(NSUInteger)index;
-
-/*!
- * @method setTextures:withRange:
- * @brief Set an array of textures at the given bind point index range.
- */
-- (void)setTextures:(const id <MTLTexture> __nullable [__nonnull])textures withRange:(NSRange)range;
-
-/*!
- * @method setSamplerState:atIndex:
- * @brief Set a sampler at the given bind point index.
- */
-- (void)setSamplerState:(id <MTLSamplerState>)sampler atIndex:(NSUInteger)index;
-
-/*!
- * @method setSamplerStates:withRange:
- * @brief Set an array of samplers at the given bind point index range.
- */
-- (void)setSamplerStates:(const id <MTLSamplerState> __nullable [__nonnull])samplers withRange:(NSRange)range;
-
-/*!
- * @method constantDataAtIndex:
- * @brief Returns a pointer to the constant data at the given bind point index.
- */
-- (void*)constantDataAtIndex:(NSUInteger)index;
-
-
-/*!
- * @method newIndirectArgumentEncoderForBufferAtIndex:
- * @brief Returns a pointer to a new MTLIndirectArgumentEncoder that can be used to encode the an indirect argument buffer
- * in the buffer associated with a given index.
- * Returns nil if the resource at the given index is not an indirect argument buffer.
- */
-- (nullable id<MTLIndirectArgumentEncoder>)newIndirectArgumentEncoderForBufferAtIndex:(NSUInteger)index;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLLibrary.h /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLLibrary.h
--- /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLLibrary.h	2017-06-09 18:32:58.000000000 -0400
+++ /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLLibrary.h	2017-06-29 00:41:50.000000000 -0400
@@ -20,7 +20,6 @@
 
 
 @protocol MTLArgumentEncoder;
-@protocol MTLIndirectArgumentEncoder;
 
 typedef __autoreleasing MTLArgument *__nullable MTLAutoreleasedArgument;
 
@@ -162,18 +161,6 @@
 - (id <MTLArgumentEncoder>)newArgumentEncoderWithBufferIndex:(NSUInteger)bufferIndex
                                                                   reflection:(MTLAutoreleasedArgument * __nullable)reflection NS_AVAILABLE(10_13, 11_0);
 
-/*!
- * @method newIndirectArgumentEncoderWithBufferIndex:
- * @abstract Creates an indirect argument encoder which will encode arguments matching the layout of the indirect argument buffer at the given bind point index.
- */
-- (id <MTLIndirectArgumentEncoder>)newIndirectArgumentEncoderWithBufferIndex:(NSUInteger)bufferIndex NS_AVAILABLE(10_13, 11_0);
-
-/*!
- * @method newIndirectArgumentEncoderWithBufferIndex:
- * @abstract Creates an indirect argument encoder which will encode arguments matching the layout of the indirect argument buffer at the given bind point index.
- */
-- (id <MTLIndirectArgumentEncoder>)newIndirectArgumentEncoderWithBufferIndex:(NSUInteger)bufferIndex
-                                                                  reflection:(MTLAutoreleasedArgument * __nullable)reflection NS_AVAILABLE(10_13, 11_0);
 
 @end
 
diff -ruN /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLParallelRenderCommandEncoder.h /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLParallelRenderCommandEncoder.h
--- /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLParallelRenderCommandEncoder.h	2017-06-09 20:26:33.000000000 -0400
+++ /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLParallelRenderCommandEncoder.h	2017-06-29 02:18:10.000000000 -0400
@@ -50,5 +50,28 @@
 */
 - (void)setStencilStoreAction:(MTLStoreAction)storeAction NS_AVAILABLE(10_12, 10_0);
 
+/*!
+ @method setColorStoreActionOptions:atIndex:
+ @brief If the the store action for a given color attachment was set to MTLStoreActionUnknown when the render command encoder was created,
+ setColorStoreActionOptions:atIndex: may be used to finalize the store action options before endEncoding is called.
+ @param storeActionOptions The desired store action options for the given color attachment.
+ @param colorAttachmentIndex The index of the color attachment
+ */
+- (void)setColorStoreActionOptions:(MTLStoreActionOptions)storeActionOptions atIndex:(NSUInteger)colorAttachmentIndex NS_AVAILABLE(10_13, 11_0);
+
+/*!
+ @method setDepthStoreActionOptions:
+ @brief If the the store action for the depth attachment was set to MTLStoreActionUnknown when the render command encoder was created,
+ setDepthStoreActionOptions: may be used to finalize the store action options before endEncoding is called.
+ */
+- (void)setDepthStoreActionOptions:(MTLStoreActionOptions)storeActionOptions NS_AVAILABLE(10_13, 11_0);
+
+/*!
+ @method setStencilStoreActionOptions:
+ @brief If the the store action for the stencil attachment was set to MTLStoreActionUnknown when the render command encoder was created,
+ setStencilStoreActionOptions: may be used to finalize the store action options before endEncoding is called.
+ */
+- (void)setStencilStoreActionOptions:(MTLStoreActionOptions)storeActionOptions NS_AVAILABLE(10_13, 11_0);
+
 @end
 NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLPixelFormat.h /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLPixelFormat.h
--- /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLPixelFormat.h	2017-06-09 20:51:04.000000000 -0400
+++ /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLPixelFormat.h	2017-06-29 02:20:18.000000000 -0400
@@ -75,6 +75,7 @@
     MTLPixelFormatRG11B10Float = 92,
     MTLPixelFormatRGB9E5Float = 93,
 
+    MTLPixelFormatBGR10A2Unorm  NS_AVAILABLE(10_13, 11_0) = 94,
 
     MTLPixelFormatBGR10_XR      NS_AVAILABLE_IOS(10_0) = 554,
     MTLPixelFormatBGR10_XR_sRGB NS_AVAILABLE_IOS(10_0) = 555,
diff -ruN /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderCommandEncoder.h /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderCommandEncoder.h
--- /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderCommandEncoder.h	2017-06-09 20:26:33.000000000 -0400
+++ /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderCommandEncoder.h	2017-06-29 00:41:50.000000000 -0400
@@ -151,7 +151,7 @@
  @method setVertexBuffers:offsets:withRange:
  @brief Set an array of global buffers for all vertex shaders with the given bind point range.
  */
-- (void)setVertexBuffers:(const id <MTLBuffer> __nullable [__nullable])buffers offsets:(const NSUInteger [__nullable])offsets withRange:(NSRange)range;
+- (void)setVertexBuffers:(const id <MTLBuffer> __nullable [__nonnull])buffers offsets:(const NSUInteger [__nonnull])offsets withRange:(NSRange)range;
 
 /*!
  @method setVertexTexture:atIndex:
@@ -163,7 +163,7 @@
  @method setVertexTextures:withRange:
  @brief Set an array of global textures for all vertex shaders with the given bind point range.
  */
-- (void)setVertexTextures:(const id <MTLTexture> __nullable [__nullable])textures withRange:(NSRange)range;
+- (void)setVertexTextures:(const id <MTLTexture> __nullable [__nonnull])textures withRange:(NSRange)range;
 
 /*!
  @method setVertexSamplerState:atIndex:
@@ -175,7 +175,7 @@
  @method setVertexSamplerStates:withRange:
  @brief Set an array of global samplers for all vertex shaders with the given bind point range.
  */
-- (void)setVertexSamplerStates:(const id <MTLSamplerState> __nullable [__nullable])samplers withRange:(NSRange)range;
+- (void)setVertexSamplerStates:(const id <MTLSamplerState> __nullable [__nonnull])samplers withRange:(NSRange)range;
 
 /*!
  @method setVertexSamplerState:lodMinClamp:lodMaxClamp:atIndex:
@@ -187,7 +187,7 @@
  @method setVertexSamplerStates:lodMinClamps:lodMaxClamps:withRange:
  @brief Set an array of global samplers for all vertex shaders with the given bind point range.
  */
-- (void)setVertexSamplerStates:(const id <MTLSamplerState> __nullable [__nullable])samplers lodMinClamps:(const float [__nullable])lodMinClamps lodMaxClamps:(const float [__nullable])lodMaxClamps withRange:(NSRange)range;
+- (void)setVertexSamplerStates:(const id <MTLSamplerState> __nullable [__nonnull])samplers lodMinClamps:(const float [__nonnull])lodMinClamps lodMaxClamps:(const float [__nonnull])lodMaxClamps withRange:(NSRange)range;
 
 /*!
  @method setViewport:
@@ -258,7 +258,7 @@
  @method setFragmentBuffers:offsets:withRange:
  @brief Set an array of global buffers for all fragment shaders with the given bind point range.
  */
-- (void)setFragmentBuffers:(const id <MTLBuffer> __nullable [__nullable])buffers offsets:(const NSUInteger [__nullable])offsets withRange:(NSRange)range;
+- (void)setFragmentBuffers:(const id <MTLBuffer> __nullable [__nonnull])buffers offsets:(const NSUInteger [__nonnull])offsets withRange:(NSRange)range;
 
 /*!
  @method setFragmentTexture:atIndex:
@@ -270,7 +270,7 @@
  @method setFragmentTextures:withRange:
  @brief Set an array of global textures for all fragment shaders with the given bind point range.
  */
-- (void)setFragmentTextures:(const id <MTLTexture> __nullable [__nullable])textures withRange:(NSRange)range;
+- (void)setFragmentTextures:(const id <MTLTexture> __nullable [__nonnull])textures withRange:(NSRange)range;
 
 /*!
  @method setFragmentSamplerState:atIndex:
@@ -282,7 +282,7 @@
  @method setFragmentSamplerStates:withRange:
  @brief Set an array of global samplers for all fragment shaders with the given bind point range.
  */
-- (void)setFragmentSamplerStates:(const id <MTLSamplerState> __nullable [__nullable])samplers withRange:(NSRange)range;
+- (void)setFragmentSamplerStates:(const id <MTLSamplerState> __nullable [__nonnull])samplers withRange:(NSRange)range;
 
 /*!
  @method setFragmentSamplerState:lodMinClamp:lodMaxClamp:atIndex:
@@ -294,7 +294,8 @@
  @method setFragmentSamplerStates:lodMinClamps:lodMaxClamps:withRange:
  @brief Set an array of global samplers for all fragment shaders with the given bind point range.
  */
-- (void)setFragmentSamplerStates:(const id <MTLSamplerState> __nullable [__nullable])samplers lodMinClamps:(const float [__nullable])lodMinClamps lodMaxClamps:(const float [__nullable])lodMaxClamps withRange:(NSRange)range;
+- (void)setFragmentSamplerStates:(const id <MTLSamplerState> __nullable [__nonnull])samplers lodMinClamps:(const float [__nonnull])lodMinClamps lodMaxClamps:(const float [__nonnull])lodMaxClamps withRange:(NSRange)range;
+
 
 /* Constant Blend Color */
 /*!
@@ -352,6 +353,29 @@
 */
 - (void)setStencilStoreAction:(MTLStoreAction)storeAction NS_AVAILABLE(10_12, 10_0);
 
+/*!
+ @method setColorStoreActionOptions:atIndex:
+ @brief If the the store action for a given color attachment was set to MTLStoreActionUnknown when the render command encoder was created,
+ setColorStoreActionOptions:atIndex: may be used to finalize the store action options before endEncoding is called.
+ @param storeActionOptions The desired store action options for the given color attachment.
+ @param colorAttachmentIndex The index of the color attachment
+ */
+- (void)setColorStoreActionOptions:(MTLStoreActionOptions)storeActionOptions atIndex:(NSUInteger)colorAttachmentIndex NS_AVAILABLE(10_13, 11_0);
+
+/*!
+ @method setDepthStoreActionOptions:
+ @brief If the the store action for the depth attachment was set to MTLStoreActionUnknown when the render command encoder was created,
+ setDepthStoreActionOptions: may be used to finalize the store action options before endEncoding is called.
+ */
+- (void)setDepthStoreActionOptions:(MTLStoreActionOptions)storeActionOptions NS_AVAILABLE(10_13, 11_0);
+
+/*!
+ @method setStencilStoreActionOptions:
+ @brief If the the store action for the stencil attachment was set to MTLStoreActionUnknown when the render command encoder was created,
+ setStencilStoreActionOptions: may be used to finalize the store action options before endEncoding is called.
+ */
+- (void)setStencilStoreActionOptions:(MTLStoreActionOptions)storeActionOptions NS_AVAILABLE(10_13, 11_0);
+
 /* Drawing */
 
 /*!
@@ -495,8 +519,8 @@
    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> __nullable[__nullable])resources count:(NSUInteger)count usage:(MTLResourceUsage)usage NS_AVAILABLE(10_13, 11_0);
- 
+- (void)useResources:(const id <MTLResource> __nonnull[__nonnull])resources count:(NSUInteger)count usage:(MTLResourceUsage)usage NS_AVAILABLE(10_13, 11_0);
+
 /*!
  * @method useHeap:
  * @abstract Declare that the resources allocated from a heap may be accessed by the render pass through an argument buffer
@@ -509,7 +533,7 @@
  * @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> __nullable[__nullable])heaps count:(NSUInteger)count NS_AVAILABLE(10_13, 11_0);
+- (void)useHeaps:(const id <MTLHeap> __nonnull[__nonnull])heaps count:(NSUInteger)count NS_AVAILABLE(10_13, 11_0);
 
 
 @end
diff -ruN /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderPass.h /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderPass.h
--- /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderPass.h	2017-06-09 20:26:33.000000000 -0400
+++ /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderPass.h	2017-06-29 01:05:22.000000000 -0400
@@ -31,6 +31,11 @@
     MTLStoreActionCustomSampleDepthStore NS_ENUM_AVAILABLE(10_13, 11_0) = 5,
 } NS_ENUM_AVAILABLE(10_11, 8_0);
 
+typedef NS_OPTIONS(NSUInteger, MTLStoreActionOptions) {
+    MTLStoreActionOptionNone                  = 0,
+    MTLStoreActionOptionCustomSamplePositions = 1 << 0,
+} NS_ENUM_AVAILABLE(10_13, 11_0);
+
 typedef struct
 {
     double red;
@@ -111,6 +116,13 @@
  */
 @property (nonatomic) MTLStoreAction storeAction;
 
+/*!
+ @property storeActionOptions
+ @abstract Optional configuration for the store action performed with this attachment at the end of a render pass.  Default is
+ MTLStoreActionOptionNone.
+ */
+@property (nonatomic) MTLStoreActionOptions storeActionOptions NS_AVAILABLE(10_13, 11_0);
+
 @end
 
 NS_CLASS_AVAILABLE(10_11, 8_0)
@@ -212,8 +224,6 @@
 @property (nonatomic) NSUInteger renderTargetArrayLength NS_AVAILABLE(10_11, NA);
 
 
-//cleanup
-
 
 /*!
  @method setSamplePositions:count:
diff -ruN /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderPipeline.h /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderPipeline.h
--- /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderPipeline.h	2017-06-09 18:54:19.000000000 -0400
+++ /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLRenderPipeline.h	2017-06-29 02:20:19.000000000 -0400
@@ -62,7 +62,7 @@
     MTLPrimitiveTopologyClassPoint = 1,
     MTLPrimitiveTopologyClassLine = 2,
     MTLPrimitiveTopologyClassTriangle = 3,
-} NS_ENUM_AVAILABLE(10_11, 10_0);
+} NS_ENUM_AVAILABLE(10_11, NA);
 
 typedef NS_ENUM(NSUInteger, MTLTessellationPartitionMode) {
     MTLTessellationPartitionModePow2 = 0,
@@ -156,7 +156,7 @@
 @property (nonatomic) MTLPixelFormat depthAttachmentPixelFormat;
 @property (nonatomic) MTLPixelFormat stencilAttachmentPixelFormat;
 
-@property (readwrite, nonatomic) MTLPrimitiveTopologyClass inputPrimitiveTopology NS_AVAILABLE(10_11, 10_0);
+@property (readwrite, nonatomic) MTLPrimitiveTopologyClass inputPrimitiveTopology NS_AVAILABLE(10_11, NA);
 
 @property (readwrite, nonatomic) MTLTessellationPartitionMode tessellationPartitionMode NS_AVAILABLE(10_12, 10_0);
 @property (readwrite, nonatomic) NSUInteger maxTessellationFactor NS_AVAILABLE(10_12, 10_0);
diff -ruN /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLSampler.h /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLSampler.h
--- /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLSampler.h	2017-06-09 18:32:58.000000000 -0400
+++ /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLSampler.h	2017-06-29 01:05:22.000000000 -0400
@@ -184,6 +184,12 @@
 @property (nonatomic) MTLCompareFunction compareFunction NS_AVAILABLE(10_11, 9_0);
 
 /*!
+ @property supportArgumentBuffers
+ @abstract true if the sampler can be used inside an argument buffer
+*/
+@property (nonatomic) BOOL supportArgumentBuffers NS_AVAILABLE(10_13, 11_0);
+
+/*!
  @property label
  @abstract A string to help identify the created object.
  */
diff -ruN /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLTexture.h /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLTexture.h
--- /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLTexture.h	2017-06-09 18:54:20.000000000 -0400
+++ /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLTexture.h	2017-06-29 01:05:23.000000000 -0400
@@ -12,6 +12,8 @@
 #import <Metal/MTLTypes.h>
 
 
+#import <IOSurface/IOSurfaceRef.h>
+
 NS_ASSUME_NONNULL_BEGIN
 /*!
  @enum MTLTextureType
@@ -192,6 +194,18 @@
 
 
 /*!
+ @property iosurface
+ @abstract If this texture was created from an IOSurface, this returns a reference to that IOSurface. iosurface is nil if this texture was not created from an IOSurface.
+ */
+@property (nullable, readonly) IOSurfaceRef iosurface NS_AVAILABLE(10_11, 11_0);
+
+/*!
+ @property iosurfacePlane
+ @abstract If this texture was created from an IOSurface, this returns the plane of the IOSurface from which the texture was created. iosurfacePlane is 0 if this texture was not created from an IOSurface.
+ */
+@property (readonly) NSUInteger iosurfacePlane NS_AVAILABLE(10_11, 11_0);
+
+/*!
  @property type
  @abstract The type of this texture.
  */
diff -ruN /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/Metal.apinotes /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/Metal.apinotes
--- /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/Metal.apinotes	2017-06-10 19:41:48.000000000 -0400
+++ /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers/Metal.apinotes	2017-06-29 02:18:07.000000000 -0400
@@ -5,6 +5,13 @@
   NSErrorDomain: MTLCommandBufferErrorDomain
 - Name: MTLLibraryError
   NSErrorDomain: MTLLibraryErrorDomain
+Globals:
+- Name: MTLDeviceWasAddedNotification
+  SwiftName: wasAdded
+- Name: MTLDeviceRemovalRequestedNotification
+  SwiftName: removalRequested
+- Name: MTLDeviceWasRemovedNotification
+  SwiftName: wasRemoved
 Enumerators:
 - Name: MTLResourceStorageModeShared
   SwiftName: storageModeShared
@@ -604,6 +611,9 @@
   - Selector: 'setColorStoreAction:atIndex:'
     SwiftName: setColorStoreAction(_:index:)
     MethodKind: Instance
+  - Selector: 'setColorStoreActionOptions:atIndex:'
+    SwiftName: setColorStoreActionOptions(_:index:)
+    MethodKind: Instance
 - Name: MTLRenderCommandEncoder
   Methods:
   - Selector: 'setVertexBytes:length:atIndex:'
@@ -645,6 +655,9 @@
   - Selector: 'setColorStoreAction:atIndex:'
     SwiftName: setColorStoreAction(_:index:)
     MethodKind: Instance
+  - Selector: 'setColorStoreActionOptions:atIndex:'
+    SwiftName: setColorStoreActionOptions(_:index:)
+    MethodKind: Instance
   - Selector: 'setTileBytes:length:atIndex:'
     SwiftName: setTileBytes(_:length:index:)
     MethodKind: Instance
@@ -881,6 +894,34 @@
     - Selector: 'setThreadgroupMemoryLength:atIndex:'
       SwiftName: setThreadgroupMemoryLength(_:at:)
       MethodKind: Instance
+    - Selector: 'setSamplerStates:lodMinClamps:lodMaxClamps:withRange:'
+      SwiftName: setSamplerStates(_:lodMinClamps:lodMaxClamps:with:)
+      MethodKind: Instance
+      Parameters:
+      - Position: 0
+        Nullability: O
+      - Position: 1
+        Nullability: O
+      - Position: 2
+        Nullability: O
+      - Position: 3
+        Nullability: U
+    - Selector: 'setTextures:withRange:'
+      SwiftName: setTextures(_:with:)
+      MethodKind: Instance
+      Parameters:
+      - Position: 0
+        Nullability: O
+      - Position: 1
+        Nullability: U
+    - Selector: 'setSamplerStates:withRange:'
+      SwiftName: setSamplerStates(_:with:)
+      MethodKind: Instance
+      Parameters:
+      - Position: 0
+        Nullability: O
+      - Position: 1
+        Nullability: U
   - Name: MTLIndirectArgumentEncoder
     Methods:
     - Selector: 'newIndirectArgumentEncoderForBufferAtIndex:'
@@ -918,6 +959,9 @@
     - Selector: 'setColorStoreAction:atIndex:'
       SwiftName: setColorStoreAction(_:at:)
       MethodKind: Instance
+    - Selector: 'setColorStoreActionOptions:atIndex:'
+      SwiftName: setColorStoreActionOptions(_:at:)
+      MethodKind: Instance
   - Name: MTLRenderCommandEncoder
     Methods:
     - Selector: 'setVertexBytes:length:atIndex:'
@@ -973,6 +1017,9 @@
     - Selector: 'setColorStoreAction:atIndex:'
       SwiftName: setColorStoreAction(_:at:)
       MethodKind: Instance
+    - Selector: 'setColorStoreActionOptions:atIndex:'
+      SwiftName: setColorStoreActionOptions(_:at:)
+      MethodKind: Instance
     - Selector: 'setTileBytes:length:atIndex:'
       SwiftName: setTileBytes(_:length:at:)
       MethodKind: Instance
@@ -994,6 +1041,62 @@
     - Selector: 'setThreadgroupMemoryLength:offset:atIndex:'
       SwiftName: setThreadgroupMemoryLength(_:offset:at:)
       MethodKind: Instance
+    - Selector: 'setFragmentSamplerStates:lodMinClamps:lodMaxClamps:withRange:'
+      SwiftName: setFragmentSamplerStates(_:lodMinClamps:lodMaxClamps:with:)
+      MethodKind: Instance
+      Parameters:
+      - Position: 0
+        Nullability: O
+      - Position: 1
+        Nullability: O
+      - Position: 2
+        Nullability: O
+      - Position: 3
+        Nullability: U
+    - Selector: 'setVertexSamplerStates:lodMinClamps:lodMaxClamps:withRange:'
+      SwiftName: setVertexSamplerStates(_:lodMinClamps:lodMaxClamps:with:)
+      MethodKind: Instance
+      Parameters:
+      - Position: 0
+        Nullability: O
+      - Position: 1
+        Nullability: O
+      - Position: 2
+        Nullability: O
+      - Position: 3
+        Nullability: U
+    - Selector: 'setFragmentSamplerStates:withRange:'
+      SwiftName: setFragmentSamplerStates(_:with:)
+      MethodKind: Instance
+      Parameters:
+      - Position: 0
+        Nullability: O
+      - Position: 1
+        Nullability: U
+    - Selector: 'setFragmentTextures:withRange:'
+      SwiftName: setFragmentTextures(_:with:)
+      MethodKind: Instance
+      Parameters:
+      - Position: 0
+        Nullability: O
+      - Position: 1
+        Nullability: U
+    - Selector: 'setVertexSamplerStates:withRange:'
+      SwiftName: setVertexSamplerStates(_:with:)
+      MethodKind: Instance
+      Parameters:
+      - Position: 0
+        Nullability: O
+      - Position: 1
+        Nullability: U
+    - Selector: 'setVertexTextures:withRange:'
+      SwiftName: setVertexTextures(_:with:)
+      MethodKind: Instance
+      Parameters:
+      - Position: 0
+        Nullability: O
+      - Position: 1
+        Nullability: U
   - Name: MTLTexture
     Methods:
     - Selector: 'newTextureViewWithPixelFormat:'
Clone this wiki locally