Documentation Archive Developer
Search

Metal Changes for Swift

Metal

Removed MTLColorWriteMask.init(_: UInt)
Removed MTLPipelineOption.init(_: UInt)
Removed MTLResourceOptions.init(_: UInt)
Added MTLBlitOption.init(rawValue: UInt)
Added MTLDispatchThreadgroupsIndirectArguments.init()
Added MTLDispatchThreadgroupsIndirectArguments.init(threadgroupsPerGrid: (UInt32, UInt32, UInt32))
Added MTLDrawIndexedPrimitivesIndirectArguments.init()
Added MTLDrawIndexedPrimitivesIndirectArguments.init(indexCount: UInt32, instanceCount: UInt32, indexStart: UInt32, baseVertex: Int32, baseInstance: UInt32)
Added MTLDrawPrimitivesIndirectArguments.init()
Added MTLDrawPrimitivesIndirectArguments.init(vertexCount: UInt32, instanceCount: UInt32, vertexStart: UInt32, baseInstance: UInt32)
Added MTLTextureUsage.init(rawValue: UInt)
Added MTLResourceCPUCacheModeShift
Added MTLResourceStorageModeShift
Modified MTLArgument
Declaration
From
class MTLArgument : NSObject {
    var name: String { get }
    var type: MTLArgumentType { get }
    var access: MTLArgumentAccess { get }
    var index: Int { get }
    var active: Bool { get }
    var bufferAlignment: Int { get }
    var bufferDataSize: Int { get }
    var bufferDataType: MTLDataType { get }
    var bufferStructType: MTLStructType? { get }
    var threadgroupMemoryAlignment: Int { get }
    var threadgroupMemoryDataSize: Int { get }
    var textureType: MTLTextureType { get }
    var textureDataType: MTLDataType { get }
}
To
class MTLArgument : NSObject {
    var name: String { get }
    var type: MTLArgumentType { get }
    var access: MTLArgumentAccess { get }
    var index: Int { get }
    var active: Bool { get }
    var bufferAlignment: Int { get }
    var bufferDataSize: Int { get }
    var bufferDataType: MTLDataType { get }
    var bufferStructType: MTLStructType { get }
    var threadgroupMemoryAlignment: Int { get }
    var threadgroupMemoryDataSize: Int { get }
    var textureType: MTLTextureType { get }
    var textureDataType: MTLDataType { get }
}

Declaration
From
var bufferStructType: MTLStructType? { get }
To
var bufferStructType: MTLStructType { get }

Raw Value Type
From--
ToUInt

Raw Value Type
From--
ToUInt

Raw Value Type
From--
ToUInt

Raw Value Type
From--
ToUInt

Declaration
From
protocol MTLBlitCommandEncoder : MTLCommandEncoder, NSObjectProtocol {
    func copyFromTexture(_ sourceTexture: MTLTexture, sourceSlice sourceSlice: Int, sourceLevel sourceLevel: Int, sourceOrigin sourceOrigin: MTLOrigin, sourceSize sourceSize: MTLSize, toTexture destinationTexture: MTLTexture, destinationSlice destinationSlice: Int, destinationLevel destinationLevel: Int, destinationOrigin destinationOrigin: MTLOrigin)
    func copyFromBuffer(_ sourceBuffer: MTLBuffer, sourceOffset sourceOffset: Int, sourceBytesPerRow sourceBytesPerRow: Int, sourceBytesPerImage sourceBytesPerImage: Int, sourceSize sourceSize: MTLSize, toTexture destinationTexture: MTLTexture, destinationSlice destinationSlice: Int, destinationLevel destinationLevel: Int, destinationOrigin destinationOrigin: MTLOrigin)
    func copyFromTexture(_ sourceTexture: MTLTexture, sourceSlice sourceSlice: Int, sourceLevel sourceLevel: Int, sourceOrigin sourceOrigin: MTLOrigin, sourceSize sourceSize: MTLSize, toBuffer destinationBuffer: MTLBuffer, destinationOffset destinationOffset: Int, destinationBytesPerRow destinationBytesPerRow: Int, destinationBytesPerImage destinationBytesPerImage: Int)
    func generateMipmapsForTexture(_ texture: MTLTexture)
    func fillBuffer(_ buffer: MTLBuffer, range range: NSRange, value value: UInt8)
    func copyFromBuffer(_ sourceBuffer: MTLBuffer, sourceOffset sourceOffset: Int, toBuffer destinationBuffer: MTLBuffer, destinationOffset destinationOffset: Int, size size: Int)
}
To
protocol MTLBlitCommandEncoder : MTLCommandEncoder, NSObjectProtocol {
    func synchronizeResource(_ resource: MTLResource)
    func synchronizeTexture(_ texture: MTLTexture, slice slice: Int, level level: Int)
    func copyFromTexture(_ sourceTexture: MTLTexture, sourceSlice sourceSlice: Int, sourceLevel sourceLevel: Int, sourceOrigin sourceOrigin: MTLOrigin, sourceSize sourceSize: MTLSize, toTexture destinationTexture: MTLTexture, destinationSlice destinationSlice: Int, destinationLevel destinationLevel: Int, destinationOrigin destinationOrigin: MTLOrigin)
    func copyFromBuffer(_ sourceBuffer: MTLBuffer, sourceOffset sourceOffset: Int, sourceBytesPerRow sourceBytesPerRow: Int, sourceBytesPerImage sourceBytesPerImage: Int, sourceSize sourceSize: MTLSize, toTexture destinationTexture: MTLTexture, destinationSlice destinationSlice: Int, destinationLevel destinationLevel: Int, destinationOrigin destinationOrigin: MTLOrigin)
    func copyFromBuffer(_ sourceBuffer: MTLBuffer, sourceOffset sourceOffset: Int, sourceBytesPerRow sourceBytesPerRow: Int, sourceBytesPerImage sourceBytesPerImage: Int, sourceSize sourceSize: MTLSize, toTexture destinationTexture: MTLTexture, destinationSlice destinationSlice: Int, destinationLevel destinationLevel: Int, destinationOrigin destinationOrigin: MTLOrigin, options options: MTLBlitOption)
    func copyFromTexture(_ sourceTexture: MTLTexture, sourceSlice sourceSlice: Int, sourceLevel sourceLevel: Int, sourceOrigin sourceOrigin: MTLOrigin, sourceSize sourceSize: MTLSize, toBuffer destinationBuffer: MTLBuffer, destinationOffset destinationOffset: Int, destinationBytesPerRow destinationBytesPerRow: Int, destinationBytesPerImage destinationBytesPerImage: Int)
    func copyFromTexture(_ sourceTexture: MTLTexture, sourceSlice sourceSlice: Int, sourceLevel sourceLevel: Int, sourceOrigin sourceOrigin: MTLOrigin, sourceSize sourceSize: MTLSize, toBuffer destinationBuffer: MTLBuffer, destinationOffset destinationOffset: Int, destinationBytesPerRow destinationBytesPerRow: Int, destinationBytesPerImage destinationBytesPerImage: Int, options options: MTLBlitOption)
    func generateMipmapsForTexture(_ texture: MTLTexture)
    func fillBuffer(_ buffer: MTLBuffer, range range: NSRange, value value: UInt8)
    func copyFromBuffer(_ sourceBuffer: MTLBuffer, sourceOffset sourceOffset: Int, toBuffer destinationBuffer: MTLBuffer, destinationOffset destinationOffset: Int, size size: Int)
}

Modified MTLBuffer
Declaration
From
protocol MTLBuffer : MTLResource, NSObjectProtocol {
    var length: Int { get }
    func contents() -> UnsafeMutablePointer<Void>
    func newTextureWithDescriptor(_ descriptor: MTLTextureDescriptor, offset offset: Int, bytesPerRow bytesPerRow: Int) -> MTLTexture?
}
To
protocol MTLBuffer : MTLResource, NSObjectProtocol {
    var length: Int { get }
    func contents() -> UnsafeMutablePointer<Void>
    func didModifyRange(_ range: NSRange)
    func newTextureWithDescriptor(_ descriptor: MTLTextureDescriptor, offset offset: Int, bytesPerRow bytesPerRow: Int) -> MTLTexture
}

Declaration
From
func newTextureWithDescriptor(_ descriptor: MTLTextureDescriptor, offset offset: Int, bytesPerRow bytesPerRow: Int) -> MTLTexture?
To
func newTextureWithDescriptor(_ descriptor: MTLTextureDescriptor, offset offset: Int, bytesPerRow bytesPerRow: Int) -> MTLTexture

DeclarationProtocols
From
struct MTLColorWriteMask : RawOptionSetType {
    init(_ rawValue: UInt)
    init(rawValue rawValue: UInt)
    static var None: MTLColorWriteMask { get }
    static var Red: MTLColorWriteMask { get }
    static var Green: MTLColorWriteMask { get }
    static var Blue: MTLColorWriteMask { get }
    static var Alpha: MTLColorWriteMask { get }
    static var All: MTLColorWriteMask { get }
}
RawOptionSetType
To
struct MTLColorWriteMask : OptionSetType {
    init(rawValue rawValue: UInt)
    static var None: MTLColorWriteMask { get }
    static var Red: MTLColorWriteMask { get }
    static var Green: MTLColorWriteMask { get }
    static var Blue: MTLColorWriteMask { get }
    static var Alpha: MTLColorWriteMask { get }
    static var All: MTLColorWriteMask { get }
}
OptionSetType

Declaration
From
protocol MTLCommandBuffer : NSObjectProtocol {
    var device: MTLDevice { get }
    var commandQueue: MTLCommandQueue { get }
    var retainedReferences: Bool { get }
    var label: String? { get set }
    func enqueue()
    func commit()
    func addScheduledHandler(_ block: MTLCommandBufferHandler)
    func presentDrawable(_ drawable: MTLDrawable)
    func presentDrawable(_ drawable: MTLDrawable, atTime presentationTime: CFTimeInterval)
    func waitUntilScheduled()
    func addCompletedHandler(_ block: MTLCommandBufferHandler)
    func waitUntilCompleted()
    var status: MTLCommandBufferStatus { get }
    var error: NSError? { get }
    func blitCommandEncoder() -> MTLBlitCommandEncoder
    func renderCommandEncoderWithDescriptor(_ renderPassDescriptor: MTLRenderPassDescriptor) -> MTLRenderCommandEncoder?
    func computeCommandEncoder() -> MTLComputeCommandEncoder
    func parallelRenderCommandEncoderWithDescriptor(_ renderPassDescriptor: MTLRenderPassDescriptor) -> MTLParallelRenderCommandEncoder?
}
To
protocol MTLCommandBuffer : NSObjectProtocol {
    var device: MTLDevice { get }
    var commandQueue: MTLCommandQueue { get }
    var retainedReferences: Bool { get }
    var label: String? { get set }
    func enqueue()
    func commit()
    func addScheduledHandler(_ block: MTLCommandBufferHandler)
    func presentDrawable(_ drawable: MTLDrawable)
    func presentDrawable(_ drawable: MTLDrawable, atTime presentationTime: CFTimeInterval)
    func waitUntilScheduled()
    func addCompletedHandler(_ block: MTLCommandBufferHandler)
    func waitUntilCompleted()
    var status: MTLCommandBufferStatus { get }
    var error: NSError? { get }
    func blitCommandEncoder() -> MTLBlitCommandEncoder
    func renderCommandEncoderWithDescriptor(_ renderPassDescriptor: MTLRenderPassDescriptor) -> MTLRenderCommandEncoder
    func computeCommandEncoder() -> MTLComputeCommandEncoder
    func parallelRenderCommandEncoderWithDescriptor(_ renderPassDescriptor: MTLRenderPassDescriptor) -> MTLParallelRenderCommandEncoder
}

Declaration
From
func parallelRenderCommandEncoderWithDescriptor(_ renderPassDescriptor: MTLRenderPassDescriptor) -> MTLParallelRenderCommandEncoder?
To
func parallelRenderCommandEncoderWithDescriptor(_ renderPassDescriptor: MTLRenderPassDescriptor) -> MTLParallelRenderCommandEncoder

Declaration
From
func renderCommandEncoderWithDescriptor(_ renderPassDescriptor: MTLRenderPassDescriptor) -> MTLRenderCommandEncoder?
To
func renderCommandEncoderWithDescriptor(_ renderPassDescriptor: MTLRenderPassDescriptor) -> MTLRenderCommandEncoder

Raw Value Type
From--
ToUInt

Raw Value Type
From--
ToUInt

Declaration
From
protocol MTLCommandQueue : NSObjectProtocol {
    var label: String? { get set }
    var device: MTLDevice { get }
    func commandBuffer() -> MTLCommandBuffer!
    func commandBufferWithUnretainedReferences() -> MTLCommandBuffer
    func insertDebugCaptureBoundary()
}
To
protocol MTLCommandQueue : NSObjectProtocol {
    var label: String? { get set }
    var device: MTLDevice { get }
    func commandBuffer() -> MTLCommandBuffer
    func commandBufferWithUnretainedReferences() -> MTLCommandBuffer
    func insertDebugCaptureBoundary()
}

Declaration
From
func commandBuffer() -> MTLCommandBuffer!
To
func commandBuffer() -> MTLCommandBuffer

Raw Value Type
From--
ToUInt

Declaration
From
class MTLCompileOptions : NSObject, NSCopying {
    var preprocessorMacros: [NSObject : AnyObject]!
    var fastMathEnabled: Bool
}
To
class MTLCompileOptions : NSObject, NSCopying {
    var preprocessorMacros: [String : NSObject]?
    var fastMathEnabled: Bool
    var languageVersion: MTLLanguageVersion
}

Declaration
From
var preprocessorMacros: [NSObject : AnyObject]!
To
var preprocessorMacros: [String : NSObject]?

Declaration
From
protocol MTLComputeCommandEncoder : MTLCommandEncoder, NSObjectProtocol {
    func setComputePipelineState(_ state: MTLComputePipelineState)
    func setBytes(_ bytes: UnsafePointer<Void>, length length: Int, atIndex index: Int)
    func setBuffer(_ buffer: MTLBuffer?, offset offset: Int, atIndex index: Int)
    func setBufferOffset(_ offset: Int, atIndex index: Int)
    func setBuffers(_ buffers: UnsafePointer<MTLBuffer?>, offsets offsets: UnsafePointer<Int>, withRange range: NSRange)
    func setTexture(_ texture: MTLTexture?, atIndex index: Int)
    func setTextures(_ textures: UnsafePointer<MTLTexture?>, withRange range: NSRange)
    func setSamplerState(_ sampler: MTLSamplerState!, atIndex index: Int)
    func setSamplerStates(_ samplers: UnsafePointer<MTLSamplerState?>, withRange range: NSRange)
    func setSamplerState(_ sampler: MTLSamplerState!, lodMinClamp lodMinClamp: Float, lodMaxClamp lodMaxClamp: Float, atIndex index: Int)
    func setSamplerStates(_ samplers: UnsafePointer<MTLSamplerState?>, lodMinClamps lodMinClamps: UnsafePointer<Float>, lodMaxClamps lodMaxClamps: UnsafePointer<Float>, withRange range: NSRange)
    func setThreadgroupMemoryLength(_ length: Int, atIndex index: Int)
    func dispatchThreadgroups(_ threadgroupsPerGrid: MTLSize, threadsPerThreadgroup threadsPerThreadgroup: MTLSize)
}
To
protocol MTLComputeCommandEncoder : MTLCommandEncoder, NSObjectProtocol {
    func setComputePipelineState(_ state: MTLComputePipelineState)
    func setBytes(_ bytes: UnsafePointer<Void>, length length: Int, atIndex index: Int)
    func setBuffer(_ buffer: MTLBuffer?, offset offset: Int, atIndex index: Int)
    func setBufferOffset(_ offset: Int, atIndex index: Int)
    func setBuffers(_ buffers: UnsafePointer<MTLBuffer?>, offsets offsets: UnsafePointer<Int>, withRange range: NSRange)
    func setTexture(_ texture: MTLTexture?, atIndex index: Int)
    func setTextures(_ textures: UnsafePointer<MTLTexture?>, withRange range: NSRange)
    func setSamplerState(_ sampler: MTLSamplerState?, atIndex index: Int)
    func setSamplerStates(_ samplers: UnsafePointer<MTLSamplerState?>, withRange range: NSRange)
    func setSamplerState(_ sampler: MTLSamplerState?, lodMinClamp lodMinClamp: Float, lodMaxClamp lodMaxClamp: Float, atIndex index: Int)
    func setSamplerStates(_ samplers: UnsafePointer<MTLSamplerState?>, lodMinClamps lodMinClamps: UnsafePointer<Float>, lodMaxClamps lodMaxClamps: UnsafePointer<Float>, withRange range: NSRange)
    func setThreadgroupMemoryLength(_ length: Int, atIndex index: Int)
    func dispatchThreadgroups(_ threadgroupsPerGrid: MTLSize, threadsPerThreadgroup threadsPerThreadgroup: MTLSize)
    func dispatchThreadgroupsWithIndirectBuffer(_ indirectBuffer: MTLBuffer, indirectBufferOffset indirectBufferOffset: Int, threadsPerThreadgroup threadsPerThreadgroup: MTLSize)
}

Declaration
From
func setSamplerState(_ sampler: MTLSamplerState!, atIndex index: Int)
To
func setSamplerState(_ sampler: MTLSamplerState?, atIndex index: Int)

Declaration
From
func setSamplerState(_ sampler: MTLSamplerState!, lodMinClamp lodMinClamp: Float, lodMaxClamp lodMaxClamp: Float, atIndex index: Int)
To
func setSamplerState(_ sampler: MTLSamplerState?, lodMinClamp lodMinClamp: Float, lodMaxClamp lodMaxClamp: Float, atIndex index: Int)

Declaration
From
class MTLComputePipelineReflection : NSObject {
    var arguments: [AnyObject]! { get }
}
To
class MTLComputePipelineReflection : NSObject {
    var arguments: [MTLArgument] { get }
}

Declaration
From
var arguments: [AnyObject]! { get }
To
var arguments: [MTLArgument] { get }

Raw Value Type
From--
ToUInt

Raw Value Type
From--
ToUInt

Raw Value Type
From--
ToUInt

Modified MTLDevice
Declaration
From
protocol MTLDevice : NSObjectProtocol {
    var name: String { get }
    func newCommandQueue() -> MTLCommandQueue
    func newCommandQueueWithMaxCommandBufferCount(_ maxCommandBufferCount: Int) -> MTLCommandQueue
    func newBufferWithLength(_ length: Int, options options: MTLResourceOptions) -> MTLBuffer!
    func newBufferWithBytes(_ pointer: UnsafePointer<Void>, length length: Int, options options: MTLResourceOptions) -> MTLBuffer!
    func newBufferWithBytesNoCopy(_ pointer: UnsafeMutablePointer<Void>, length length: Int, options options: MTLResourceOptions, deallocator deallocator: ((UnsafeMutablePointer<Void>, Int) -> Void)?) -> MTLBuffer!
    func newDepthStencilStateWithDescriptor(_ descriptor: MTLDepthStencilDescriptor) -> MTLDepthStencilState
    func newTextureWithDescriptor(_ descriptor: MTLTextureDescriptor) -> MTLTexture!
    func newSamplerStateWithDescriptor(_ descriptor: MTLSamplerDescriptor) -> MTLSamplerState
    func newDefaultLibrary() -> MTLLibrary?
    func newLibraryWithFile(_ filepath: String, error error: NSErrorPointer) -> MTLLibrary?
    func newLibraryWithData(_ data: dispatch_data_t, error error: NSErrorPointer) -> MTLLibrary?
    func newLibraryWithSource(_ source: String, options options: MTLCompileOptions?, error error: NSErrorPointer) -> MTLLibrary?
    func newLibraryWithSource(_ source: String, options options: MTLCompileOptions?, completionHandler completionHandler: ((MTLLibrary!, NSError!) -> Void)!)
    func newRenderPipelineStateWithDescriptor(_ descriptor: MTLRenderPipelineDescriptor, error error: NSErrorPointer) -> MTLRenderPipelineState?
    func newRenderPipelineStateWithDescriptor(_ descriptor: MTLRenderPipelineDescriptor, options options: MTLPipelineOption, reflection reflection: AutoreleasingUnsafeMutablePointer<MTLRenderPipelineReflection?>, error error: NSErrorPointer) -> MTLRenderPipelineState?
    func newRenderPipelineStateWithDescriptor(_ descriptor: MTLRenderPipelineDescriptor, completionHandler completionHandler: ((MTLRenderPipelineState!, NSError!) -> Void)!)
    func newRenderPipelineStateWithDescriptor(_ descriptor: MTLRenderPipelineDescriptor, options options: MTLPipelineOption, completionHandler completionHandler: ((MTLRenderPipelineState!, MTLRenderPipelineReflection!, NSError!) -> Void)!)
    func newComputePipelineStateWithFunction(_ computeFunction: MTLFunction, error error: NSErrorPointer) -> MTLComputePipelineState?
    func newComputePipelineStateWithFunction(_ computeFunction: MTLFunction, options options: MTLPipelineOption, reflection reflection: AutoreleasingUnsafeMutablePointer<MTLComputePipelineReflection?>, error error: NSErrorPointer) -> MTLComputePipelineState?
    func newComputePipelineStateWithFunction(_ computeFunction: MTLFunction, completionHandler completionHandler: ((MTLComputePipelineState!, NSError!) -> Void)!)
    func newComputePipelineStateWithFunction(_ computeFunction: MTLFunction, options options: MTLPipelineOption, completionHandler completionHandler: ((MTLComputePipelineState!, MTLComputePipelineReflection!, NSError!) -> Void)!)
    func supportsFeatureSet(_ featureSet: MTLFeatureSet) -> Bool
}
To
protocol MTLDevice : NSObjectProtocol {
    var name: String? { get }
    var maxThreadsPerThreadgroup: MTLSize { get }
    var lowPower: Bool { get }
    var headless: Bool { get }
    var depth24Stencil8PixelFormatSupported: Bool { get }
    func newCommandQueue() -> MTLCommandQueue
    func newCommandQueueWithMaxCommandBufferCount(_ maxCommandBufferCount: Int) -> MTLCommandQueue
    func newBufferWithLength(_ length: Int, options options: MTLResourceOptions) -> MTLBuffer
    func newBufferWithBytes(_ pointer: UnsafePointer<Void>, length length: Int, options options: MTLResourceOptions) -> MTLBuffer
    func newBufferWithBytesNoCopy(_ pointer: UnsafeMutablePointer<Void>, length length: Int, options options: MTLResourceOptions, deallocator deallocator: ((UnsafeMutablePointer<Void>, Int) -> Void)?) -> MTLBuffer
    func newDepthStencilStateWithDescriptor(_ descriptor: MTLDepthStencilDescriptor) -> MTLDepthStencilState
    func newTextureWithDescriptor(_ descriptor: MTLTextureDescriptor) -> MTLTexture
    func newSamplerStateWithDescriptor(_ descriptor: MTLSamplerDescriptor) -> MTLSamplerState
    func newDefaultLibrary() -> MTLLibrary?
    func newLibraryWithFile(_ filepath: String) throws -> MTLLibrary
    func newLibraryWithData(_ data: dispatch_data_t) throws -> MTLLibrary
    func newLibraryWithSource(_ source: String, options options: MTLCompileOptions?) throws -> MTLLibrary
    func newLibraryWithSource(_ source: String, options options: MTLCompileOptions?, completionHandler completionHandler: MTLNewLibraryCompletionHandler)
    func newRenderPipelineStateWithDescriptor(_ descriptor: MTLRenderPipelineDescriptor) throws -> MTLRenderPipelineState
    func newRenderPipelineStateWithDescriptor(_ descriptor: MTLRenderPipelineDescriptor, options options: MTLPipelineOption, reflection reflection: AutoreleasingUnsafeMutablePointer<MTLAutoreleasedRenderPipelineReflection?>) throws -> MTLRenderPipelineState
    func newRenderPipelineStateWithDescriptor(_ descriptor: MTLRenderPipelineDescriptor, completionHandler completionHandler: MTLNewRenderPipelineStateCompletionHandler)
    func newRenderPipelineStateWithDescriptor(_ descriptor: MTLRenderPipelineDescriptor, options options: MTLPipelineOption, completionHandler completionHandler: MTLNewRenderPipelineStateWithReflectionCompletionHandler)
    func newComputePipelineStateWithFunction(_ computeFunction: MTLFunction) throws -> MTLComputePipelineState
    func newComputePipelineStateWithFunction(_ computeFunction: MTLFunction, options options: MTLPipelineOption, reflection reflection: AutoreleasingUnsafeMutablePointer<MTLAutoreleasedComputePipelineReflection?>) throws -> MTLComputePipelineState
    func newComputePipelineStateWithFunction(_ computeFunction: MTLFunction, completionHandler completionHandler: MTLNewComputePipelineStateCompletionHandler)
    func newComputePipelineStateWithFunction(_ computeFunction: MTLFunction, options options: MTLPipelineOption, completionHandler completionHandler: MTLNewComputePipelineStateWithReflectionCompletionHandler)
    func newComputePipelineStateWithDescriptor(_ descriptor: MTLComputePipelineDescriptor, options options: MTLPipelineOption, reflection reflection: AutoreleasingUnsafeMutablePointer<MTLAutoreleasedComputePipelineReflection?>) throws -> MTLComputePipelineState
    func newComputePipelineStateWithDescriptor(_ descriptor: MTLComputePipelineDescriptor, options options: MTLPipelineOption, completionHandler completionHandler: MTLNewComputePipelineStateWithReflectionCompletionHandler)
    func supportsFeatureSet(_ featureSet: MTLFeatureSet) -> Bool
    func supportsTextureSampleCount(_ sampleCount: Int) -> Bool
}

Declaration
From
var name: String { get }
To
var name: String? { get }

Declaration
From
func newBufferWithBytes(_ pointer: UnsafePointer<Void>, length length: Int, options options: MTLResourceOptions) -> MTLBuffer!
To
func newBufferWithBytes(_ pointer: UnsafePointer<Void>, length length: Int, options options: MTLResourceOptions) -> MTLBuffer

Declaration
From
func newBufferWithBytesNoCopy(_ pointer: UnsafeMutablePointer<Void>, length length: Int, options options: MTLResourceOptions, deallocator deallocator: ((UnsafeMutablePointer<Void>, Int) -> Void)?) -> MTLBuffer!
To
func newBufferWithBytesNoCopy(_ pointer: UnsafeMutablePointer<Void>, length length: Int, options options: MTLResourceOptions, deallocator deallocator: ((UnsafeMutablePointer<Void>, Int) -> Void)?) -> MTLBuffer

Declaration
From
func newBufferWithLength(_ length: Int, options options: MTLResourceOptions) -> MTLBuffer!
To
func newBufferWithLength(_ length: Int, options options: MTLResourceOptions) -> MTLBuffer

Declaration
From
func newComputePipelineStateWithFunction(_ computeFunction: MTLFunction, error error: NSErrorPointer) -> MTLComputePipelineState?
To
func newComputePipelineStateWithFunction(_ computeFunction: MTLFunction) throws -> MTLComputePipelineState

Declaration
From
func newComputePipelineStateWithFunction(_ computeFunction: MTLFunction, completionHandler completionHandler: ((MTLComputePipelineState!, NSError!) -> Void)!)
To
func newComputePipelineStateWithFunction(_ computeFunction: MTLFunction, completionHandler completionHandler: MTLNewComputePipelineStateCompletionHandler)

Declaration
From
func newComputePipelineStateWithFunction(_ computeFunction: MTLFunction, options options: MTLPipelineOption, completionHandler completionHandler: ((MTLComputePipelineState!, MTLComputePipelineReflection!, NSError!) -> Void)!)
To
func newComputePipelineStateWithFunction(_ computeFunction: MTLFunction, options options: MTLPipelineOption, completionHandler completionHandler: MTLNewComputePipelineStateWithReflectionCompletionHandler)

Declaration
From
func newComputePipelineStateWithFunction(_ computeFunction: MTLFunction, options options: MTLPipelineOption, reflection reflection: AutoreleasingUnsafeMutablePointer<MTLComputePipelineReflection?>, error error: NSErrorPointer) -> MTLComputePipelineState?
To
func newComputePipelineStateWithFunction(_ computeFunction: MTLFunction, options options: MTLPipelineOption, reflection reflection: AutoreleasingUnsafeMutablePointer<MTLAutoreleasedComputePipelineReflection?>) throws -> MTLComputePipelineState

Declaration
From
func newLibraryWithData(_ data: dispatch_data_t, error error: NSErrorPointer) -> MTLLibrary?
To
func newLibraryWithData(_ data: dispatch_data_t) throws -> MTLLibrary

Declaration
From
func newLibraryWithFile(_ filepath: String, error error: NSErrorPointer) -> MTLLibrary?
To
func newLibraryWithFile(_ filepath: String) throws -> MTLLibrary

Declaration
From
func newLibraryWithSource(_ source: String, options options: MTLCompileOptions?, error error: NSErrorPointer) -> MTLLibrary?
To
func newLibraryWithSource(_ source: String, options options: MTLCompileOptions?) throws -> MTLLibrary

Declaration
From
func newLibraryWithSource(_ source: String, options options: MTLCompileOptions?, completionHandler completionHandler: ((MTLLibrary!, NSError!) -> Void)!)
To
func newLibraryWithSource(_ source: String, options options: MTLCompileOptions?, completionHandler completionHandler: MTLNewLibraryCompletionHandler)

Declaration
From
func newRenderPipelineStateWithDescriptor(_ descriptor: MTLRenderPipelineDescriptor, error error: NSErrorPointer) -> MTLRenderPipelineState?
To
func newRenderPipelineStateWithDescriptor(_ descriptor: MTLRenderPipelineDescriptor) throws -> MTLRenderPipelineState

Declaration
From
func newRenderPipelineStateWithDescriptor(_ descriptor: MTLRenderPipelineDescriptor, completionHandler completionHandler: ((MTLRenderPipelineState!, NSError!) -> Void)!)
To
func newRenderPipelineStateWithDescriptor(_ descriptor: MTLRenderPipelineDescriptor, completionHandler completionHandler: MTLNewRenderPipelineStateCompletionHandler)

Declaration
From
func newRenderPipelineStateWithDescriptor(_ descriptor: MTLRenderPipelineDescriptor, options options: MTLPipelineOption, completionHandler completionHandler: ((MTLRenderPipelineState!, MTLRenderPipelineReflection!, NSError!) -> Void)!)
To
func newRenderPipelineStateWithDescriptor(_ descriptor: MTLRenderPipelineDescriptor, options options: MTLPipelineOption, completionHandler completionHandler: MTLNewRenderPipelineStateWithReflectionCompletionHandler)

Declaration
From
func newRenderPipelineStateWithDescriptor(_ descriptor: MTLRenderPipelineDescriptor, options options: MTLPipelineOption, reflection reflection: AutoreleasingUnsafeMutablePointer<MTLRenderPipelineReflection?>, error error: NSErrorPointer) -> MTLRenderPipelineState?
To
func newRenderPipelineStateWithDescriptor(_ descriptor: MTLRenderPipelineDescriptor, options options: MTLPipelineOption, reflection reflection: AutoreleasingUnsafeMutablePointer<MTLAutoreleasedRenderPipelineReflection?>) throws -> MTLRenderPipelineState

Declaration
From
func newTextureWithDescriptor(_ descriptor: MTLTextureDescriptor) -> MTLTexture!
To
func newTextureWithDescriptor(_ descriptor: MTLTextureDescriptor) -> MTLTexture

DeclarationRaw Value Type
From
enum MTLFeatureSet : UInt {
    case _iOS_GPUFamily1_v1
    case _iOS_GPUFamily2_v1
}
--
To
enum MTLFeatureSet : UInt {
    case iOS_GPUFamily1_v1
    case iOS_GPUFamily2_v1
    case iOS_GPUFamily1_v2
    case iOS_GPUFamily2_v2
    case iOS_GPUFamily3_v1
    case OSX_GPUFamily1_v1
}
UInt

Modified MTLFunction
Declaration
From
protocol MTLFunction : NSObjectProtocol {
    var device: MTLDevice { get }
    var functionType: MTLFunctionType { get }
    var vertexAttributes: [AnyObject]! { get }
    var name: String { get }
}
To
protocol MTLFunction : NSObjectProtocol {
    var device: MTLDevice { get }
    var functionType: MTLFunctionType { get }
    var vertexAttributes: [MTLVertexAttribute]? { get }
    var name: String { get }
}

Declaration
From
var vertexAttributes: [AnyObject]! { get }
To
var vertexAttributes: [MTLVertexAttribute]? { get }

Raw Value Type
From--
ToUInt

Raw Value Type
From--
ToUInt

Modified MTLLibrary
Declaration
From
protocol MTLLibrary : NSObjectProtocol {
    var label: String! { get set }
    var device: MTLDevice! { get }
    func newFunctionWithName(_ functionName: String!) -> MTLFunction?
    var functionNames: [AnyObject]! { get }
}
To
protocol MTLLibrary : NSObjectProtocol {
    var label: String? { get set }
    var device: MTLDevice { get }
    func newFunctionWithName(_ functionName: String) -> MTLFunction?
    var functionNames: [String] { get }
}

Declaration
From
var device: MTLDevice! { get }
To
var device: MTLDevice { get }

Declaration
From
var functionNames: [AnyObject]! { get }
To
var functionNames: [String] { get }

Declaration
From
var label: String! { get set }
To
var label: String? { get set }

Declaration
From
func newFunctionWithName(_ functionName: String!) -> MTLFunction?
To
func newFunctionWithName(_ functionName: String) -> MTLFunction?

Raw Value Type
From--
ToUInt

Raw Value Type
From--
ToUInt

DeclarationProtocols
From
struct MTLPipelineOption : RawOptionSetType {
    init(_ rawValue: UInt)
    init(rawValue rawValue: UInt)
    static var None: MTLPipelineOption { get }
    static var ArgumentInfo: MTLPipelineOption { get }
    static var BufferTypeInfo: MTLPipelineOption { get }
}
RawOptionSetType
To
struct MTLPipelineOption : OptionSetType {
    init(rawValue rawValue: UInt)
    static var None: MTLPipelineOption { get }
    static var ArgumentInfo: MTLPipelineOption { get }
    static var BufferTypeInfo: MTLPipelineOption { get }
}
OptionSetType

DeclarationRaw Value Type
From
enum MTLPixelFormat : UInt {
    case Invalid
    case A8Unorm
    case R8Unorm
    case R8Unorm_sRGB
    case R8Snorm
    case R8Uint
    case R8Sint
    case R16Unorm
    case R16Snorm
    case R16Uint
    case R16Sint
    case R16Float
    case RG8Unorm
    case RG8Unorm_sRGB
    case RG8Snorm
    case RG8Uint
    case RG8Sint
    case B5G6R5Unorm
    case A1BGR5Unorm
    case ABGR4Unorm
    case R32Uint
    case R32Sint
    case R32Float
    case RG16Unorm
    case RG16Snorm
    case RG16Uint
    case RG16Sint
    case RG16Float
    case RGBA8Unorm
    case RGBA8Unorm_sRGB
    case RGBA8Snorm
    case RGBA8Uint
    case RGBA8Sint
    case BGRA8Unorm
    case BGRA8Unorm_sRGB
    case RGB10A2Unorm
    case RGB10A2Uint
    case RG11B10Float
    case RGB9E5Float
    case RG32Uint
    case RG32Sint
    case RG32Float
    case RGBA16Unorm
    case RGBA16Snorm
    case RGBA16Uint
    case RGBA16Sint
    case RGBA16Float
    case RGBA32Uint
    case RGBA32Sint
    case RGBA32Float
    case PVRTC_RGB_2BPP
    case PVRTC_RGB_2BPP_sRGB
    case PVRTC_RGB_4BPP
    case PVRTC_RGB_4BPP_sRGB
    case PVRTC_RGBA_2BPP
    case PVRTC_RGBA_2BPP_sRGB
    case PVRTC_RGBA_4BPP
    case PVRTC_RGBA_4BPP_sRGB
    case EAC_R11Unorm
    case EAC_R11Snorm
    case EAC_RG11Unorm
    case EAC_RG11Snorm
    case EAC_RGBA8
    case EAC_RGBA8_sRGB
    case ETC2_RGB8
    case ETC2_RGB8_sRGB
    case ETC2_RGB8A1
    case ETC2_RGB8A1_sRGB
    case ASTC_4x4_sRGB
    case ASTC_5x4_sRGB
    case ASTC_5x5_sRGB
    case ASTC_6x5_sRGB
    case ASTC_6x6_sRGB
    case ASTC_8x5_sRGB
    case ASTC_8x6_sRGB
    case ASTC_8x8_sRGB
    case ASTC_10x5_sRGB
    case ASTC_10x6_sRGB
    case ASTC_10x8_sRGB
    case ASTC_10x10_sRGB
    case ASTC_12x10_sRGB
    case ASTC_12x12_sRGB
    case ASTC_4x4_LDR
    case ASTC_5x4_LDR
    case ASTC_5x5_LDR
    case ASTC_6x5_LDR
    case ASTC_6x6_LDR
    case ASTC_8x5_LDR
    case ASTC_8x6_LDR
    case ASTC_8x8_LDR
    case ASTC_10x5_LDR
    case ASTC_10x6_LDR
    case ASTC_10x8_LDR
    case ASTC_10x10_LDR
    case ASTC_12x10_LDR
    case ASTC_12x12_LDR
    case GBGR422
    case BGRG422
    case Depth32Float
    case Stencil8
}
--
To
enum MTLPixelFormat : UInt {
    case Invalid
    case A8Unorm
    case R8Unorm
    case R8Unorm_sRGB
    case R8Snorm
    case R8Uint
    case R8Sint
    case R16Unorm
    case R16Snorm
    case R16Uint
    case R16Sint
    case R16Float
    case RG8Unorm
    case RG8Unorm_sRGB
    case RG8Snorm
    case RG8Uint
    case RG8Sint
    case B5G6R5Unorm
    case A1BGR5Unorm
    case ABGR4Unorm
    case BGR5A1Unorm
    case R32Uint
    case R32Sint
    case R32Float
    case RG16Unorm
    case RG16Snorm
    case RG16Uint
    case RG16Sint
    case RG16Float
    case RGBA8Unorm
    case RGBA8Unorm_sRGB
    case RGBA8Snorm
    case RGBA8Uint
    case RGBA8Sint
    case BGRA8Unorm
    case BGRA8Unorm_sRGB
    case RGB10A2Unorm
    case RGB10A2Uint
    case RG11B10Float
    case RGB9E5Float
    case RG32Uint
    case RG32Sint
    case RG32Float
    case RGBA16Unorm
    case RGBA16Snorm
    case RGBA16Uint
    case RGBA16Sint
    case RGBA16Float
    case RGBA32Uint
    case RGBA32Sint
    case RGBA32Float
    case BC1_RGBA
    case BC1_RGBA_sRGB
    case BC2_RGBA
    case BC2_RGBA_sRGB
    case BC3_RGBA
    case BC3_RGBA_sRGB
    case BC4_RUnorm
    case BC4_RSnorm
    case BC5_RGUnorm
    case BC5_RGSnorm
    case BC6H_RGBFloat
    case BC6H_RGBUfloat
    case BC7_RGBAUnorm
    case BC7_RGBAUnorm_sRGB
    case PVRTC_RGB_2BPP
    case PVRTC_RGB_2BPP_sRGB
    case PVRTC_RGB_4BPP
    case PVRTC_RGB_4BPP_sRGB
    case PVRTC_RGBA_2BPP
    case PVRTC_RGBA_2BPP_sRGB
    case PVRTC_RGBA_4BPP
    case PVRTC_RGBA_4BPP_sRGB
    case EAC_R11Unorm
    case EAC_R11Snorm
    case EAC_RG11Unorm
    case EAC_RG11Snorm
    case EAC_RGBA8
    case EAC_RGBA8_sRGB
    case ETC2_RGB8
    case ETC2_RGB8_sRGB
    case ETC2_RGB8A1
    case ETC2_RGB8A1_sRGB
    case ASTC_4x4_sRGB
    case ASTC_5x4_sRGB
    case ASTC_5x5_sRGB
    case ASTC_6x5_sRGB
    case ASTC_6x6_sRGB
    case ASTC_8x5_sRGB
    case ASTC_8x6_sRGB
    case ASTC_8x8_sRGB
    case ASTC_10x5_sRGB
    case ASTC_10x6_sRGB
    case ASTC_10x8_sRGB
    case ASTC_10x10_sRGB
    case ASTC_12x10_sRGB
    case ASTC_12x12_sRGB
    case ASTC_4x4_LDR
    case ASTC_5x4_LDR
    case ASTC_5x5_LDR
    case ASTC_6x5_LDR
    case ASTC_6x6_LDR
    case ASTC_8x5_LDR
    case ASTC_8x6_LDR
    case ASTC_8x8_LDR
    case ASTC_10x5_LDR
    case ASTC_10x6_LDR
    case ASTC_10x8_LDR
    case ASTC_10x10_LDR
    case ASTC_12x10_LDR
    case ASTC_12x12_LDR
    case GBGR422
    case BGRG422
    case Depth32Float
    case Stencil8
    case Depth24Unorm_Stencil8
    case Depth32Float_Stencil8
}
UInt

Raw Value Type
From--
ToUInt

Raw Value Type
From--
ToUInt

Declaration
From
protocol MTLRenderCommandEncoder : MTLCommandEncoder, NSObjectProtocol {
    func setRenderPipelineState(_ pipelineState: MTLRenderPipelineState)
    func setVertexBytes(_ bytes: UnsafePointer<Void>, length length: Int, atIndex index: Int)
    func setVertexBuffer(_ buffer: MTLBuffer?, offset offset: Int, atIndex index: Int)
    func setVertexBufferOffset(_ offset: Int, atIndex index: Int)
    func setVertexBuffers(_ buffers: UnsafePointer<MTLBuffer?>, offsets offsets: UnsafePointer<Int>, withRange range: NSRange)
    func setVertexTexture(_ texture: MTLTexture?, atIndex index: Int)
    func setVertexTextures(_ textures: UnsafePointer<MTLTexture?>, withRange range: NSRange)
    func setVertexSamplerState(_ sampler: MTLSamplerState, atIndex index: Int)
    func setVertexSamplerStates(_ samplers: UnsafePointer<MTLSamplerState?>, withRange range: NSRange)
    func setVertexSamplerState(_ sampler: MTLSamplerState, lodMinClamp lodMinClamp: Float, lodMaxClamp lodMaxClamp: Float, atIndex index: Int)
    func setVertexSamplerStates(_ samplers: UnsafePointer<MTLSamplerState?>, lodMinClamps lodMinClamps: UnsafePointer<Float>, lodMaxClamps lodMaxClamps: UnsafePointer<Float>, withRange range: NSRange)
    func setViewport(_ viewport: MTLViewport)
    func setFrontFacingWinding(_ frontFacingWinding: MTLWinding)
    func setCullMode(_ cullMode: MTLCullMode)
    func setDepthBias(_ depthBias: Float, slopeScale slopeScale: Float, clamp clamp: Float)
    func setScissorRect(_ rect: MTLScissorRect)
    func setTriangleFillMode(_ fillMode: MTLTriangleFillMode)
    func setFragmentBytes(_ bytes: UnsafePointer<Void>, length length: Int, atIndex index: Int)
    func setFragmentBuffer(_ buffer: MTLBuffer?, offset offset: Int, atIndex index: Int)
    func setFragmentBufferOffset(_ offset: Int, atIndex index: Int)
    func setFragmentBuffers(_ buffers: UnsafePointer<MTLBuffer?>, offsets offset: UnsafePointer<Int>, withRange range: NSRange)
    func setFragmentTexture(_ texture: MTLTexture?, atIndex index: Int)
    func setFragmentTextures(_ textures: UnsafePointer<MTLTexture?>, withRange range: NSRange)
    func setFragmentSamplerState(_ sampler: MTLSamplerState, atIndex index: Int)
    func setFragmentSamplerStates(_ samplers: UnsafePointer<MTLSamplerState?>, withRange range: NSRange)
    func setFragmentSamplerState(_ sampler: MTLSamplerState, lodMinClamp lodMinClamp: Float, lodMaxClamp lodMaxClamp: Float, atIndex index: Int)
    func setFragmentSamplerStates(_ samplers: UnsafePointer<MTLSamplerState?>, lodMinClamps lodMinClamps: UnsafePointer<Float>, lodMaxClamps lodMaxClamps: UnsafePointer<Float>, withRange range: NSRange)
    func setBlendColorRed(_ red: Float, green green: Float, blue blue: Float, alpha alpha: Float)
    func setDepthStencilState(_ depthStencilState: MTLDepthStencilState)
    func setStencilReferenceValue(_ referenceValue: UInt32)
    func setVisibilityResultMode(_ mode: MTLVisibilityResultMode, offset offset: Int)
    func drawPrimitives(_ primitiveType: MTLPrimitiveType, vertexStart vertexStart: Int, vertexCount vertexCount: Int, instanceCount instanceCount: Int)
    func drawPrimitives(_ primitiveType: MTLPrimitiveType, vertexStart vertexStart: Int, vertexCount vertexCount: Int)
    func drawIndexedPrimitives(_ primitiveType: MTLPrimitiveType, indexCount indexCount: Int, indexType indexType: MTLIndexType, indexBuffer indexBuffer: MTLBuffer, indexBufferOffset indexBufferOffset: Int, instanceCount instanceCount: Int)
    func drawIndexedPrimitives(_ primitiveType: MTLPrimitiveType, indexCount indexCount: Int, indexType indexType: MTLIndexType, indexBuffer indexBuffer: MTLBuffer, indexBufferOffset indexBufferOffset: Int)
}
To
protocol MTLRenderCommandEncoder : MTLCommandEncoder, NSObjectProtocol {
    func setRenderPipelineState(_ pipelineState: MTLRenderPipelineState)
    func setVertexBytes(_ bytes: UnsafePointer<Void>, length length: Int, atIndex index: Int)
    func setVertexBuffer(_ buffer: MTLBuffer?, offset offset: Int, atIndex index: Int)
    func setVertexBufferOffset(_ offset: Int, atIndex index: Int)
    func setVertexBuffers(_ buffers: UnsafePointer<MTLBuffer?>, offsets offsets: UnsafePointer<Int>, withRange range: NSRange)
    func setVertexTexture(_ texture: MTLTexture?, atIndex index: Int)
    func setVertexTextures(_ textures: UnsafePointer<MTLTexture?>, withRange range: NSRange)
    func setVertexSamplerState(_ sampler: MTLSamplerState?, atIndex index: Int)
    func setVertexSamplerStates(_ samplers: UnsafePointer<MTLSamplerState?>, withRange range: NSRange)
    func setVertexSamplerState(_ sampler: MTLSamplerState?, lodMinClamp lodMinClamp: Float, lodMaxClamp lodMaxClamp: Float, atIndex index: Int)
    func setVertexSamplerStates(_ samplers: UnsafePointer<MTLSamplerState?>, lodMinClamps lodMinClamps: UnsafePointer<Float>, lodMaxClamps lodMaxClamps: UnsafePointer<Float>, withRange range: NSRange)
    func setViewport(_ viewport: MTLViewport)
    func setFrontFacingWinding(_ frontFacingWinding: MTLWinding)
    func setCullMode(_ cullMode: MTLCullMode)
    func setDepthClipMode(_ depthClipMode: MTLDepthClipMode)
    func setDepthBias(_ depthBias: Float, slopeScale slopeScale: Float, clamp clamp: Float)
    func setScissorRect(_ rect: MTLScissorRect)
    func setTriangleFillMode(_ fillMode: MTLTriangleFillMode)
    func setFragmentBytes(_ bytes: UnsafePointer<Void>, length length: Int, atIndex index: Int)
    func setFragmentBuffer(_ buffer: MTLBuffer?, offset offset: Int, atIndex index: Int)
    func setFragmentBufferOffset(_ offset: Int, atIndex index: Int)
    func setFragmentBuffers(_ buffers: UnsafePointer<MTLBuffer?>, offsets offset: UnsafePointer<Int>, withRange range: NSRange)
    func setFragmentTexture(_ texture: MTLTexture?, atIndex index: Int)
    func setFragmentTextures(_ textures: UnsafePointer<MTLTexture?>, withRange range: NSRange)
    func setFragmentSamplerState(_ sampler: MTLSamplerState?, atIndex index: Int)
    func setFragmentSamplerStates(_ samplers: UnsafePointer<MTLSamplerState?>, withRange range: NSRange)
    func setFragmentSamplerState(_ sampler: MTLSamplerState?, lodMinClamp lodMinClamp: Float, lodMaxClamp lodMaxClamp: Float, atIndex index: Int)
    func setFragmentSamplerStates(_ samplers: UnsafePointer<MTLSamplerState?>, lodMinClamps lodMinClamps: UnsafePointer<Float>, lodMaxClamps lodMaxClamps: UnsafePointer<Float>, withRange range: NSRange)
    func setBlendColorRed(_ red: Float, green green: Float, blue blue: Float, alpha alpha: Float)
    func setDepthStencilState(_ depthStencilState: MTLDepthStencilState?)
    func setStencilReferenceValue(_ referenceValue: UInt32)
    func setStencilFrontReferenceValue(_ frontReferenceValue: UInt32, backReferenceValue backReferenceValue: UInt32)
    func setVisibilityResultMode(_ mode: MTLVisibilityResultMode, offset offset: Int)
    func drawPrimitives(_ primitiveType: MTLPrimitiveType, vertexStart vertexStart: Int, vertexCount vertexCount: Int, instanceCount instanceCount: Int)
    func drawPrimitives(_ primitiveType: MTLPrimitiveType, vertexStart vertexStart: Int, vertexCount vertexCount: Int)
    func drawIndexedPrimitives(_ primitiveType: MTLPrimitiveType, indexCount indexCount: Int, indexType indexType: MTLIndexType, indexBuffer indexBuffer: MTLBuffer, indexBufferOffset indexBufferOffset: Int, instanceCount instanceCount: Int)
    func drawIndexedPrimitives(_ primitiveType: MTLPrimitiveType, indexCount indexCount: Int, indexType indexType: MTLIndexType, indexBuffer indexBuffer: MTLBuffer, indexBufferOffset indexBufferOffset: Int)
    func drawPrimitives(_ primitiveType: MTLPrimitiveType, vertexStart vertexStart: Int, vertexCount vertexCount: Int, instanceCount instanceCount: Int, baseInstance baseInstance: Int)
    func drawIndexedPrimitives(_ primitiveType: MTLPrimitiveType, indexCount indexCount: Int, indexType indexType: MTLIndexType, indexBuffer indexBuffer: MTLBuffer, indexBufferOffset indexBufferOffset: Int, instanceCount instanceCount: Int, baseVertex baseVertex: Int, baseInstance baseInstance: Int)
    func drawPrimitives(_ primitiveType: MTLPrimitiveType, indirectBuffer indirectBuffer: MTLBuffer, indirectBufferOffset indirectBufferOffset: Int)
    func drawIndexedPrimitives(_ primitiveType: MTLPrimitiveType, indexType indexType: MTLIndexType, indexBuffer indexBuffer: MTLBuffer, indexBufferOffset indexBufferOffset: Int, indirectBuffer indirectBuffer: MTLBuffer, indirectBufferOffset indirectBufferOffset: Int)
}

Declaration
From
func setDepthStencilState(_ depthStencilState: MTLDepthStencilState)
To
func setDepthStencilState(_ depthStencilState: MTLDepthStencilState?)

Declaration
From
func setFragmentSamplerState(_ sampler: MTLSamplerState, atIndex index: Int)
To
func setFragmentSamplerState(_ sampler: MTLSamplerState?, atIndex index: Int)

Declaration
From
func setFragmentSamplerState(_ sampler: MTLSamplerState, lodMinClamp lodMinClamp: Float, lodMaxClamp lodMaxClamp: Float, atIndex index: Int)
To
func setFragmentSamplerState(_ sampler: MTLSamplerState?, lodMinClamp lodMinClamp: Float, lodMaxClamp lodMaxClamp: Float, atIndex index: Int)

Declaration
From
func setVertexSamplerState(_ sampler: MTLSamplerState, atIndex index: Int)
To
func setVertexSamplerState(_ sampler: MTLSamplerState?, atIndex index: Int)

Declaration
From
func setVertexSamplerState(_ sampler: MTLSamplerState, lodMinClamp lodMinClamp: Float, lodMaxClamp lodMaxClamp: Float, atIndex index: Int)
To
func setVertexSamplerState(_ sampler: MTLSamplerState?, lodMinClamp lodMinClamp: Float, lodMaxClamp lodMaxClamp: Float, atIndex index: Int)

Declaration
From
class MTLRenderPassColorAttachmentDescriptorArray : NSObject {
    subscript (attachmentIndex: Int) -> MTLRenderPassColorAttachmentDescriptor!
    func objectAtIndexedSubscript(_ attachmentIndex: Int) -> MTLRenderPassColorAttachmentDescriptor!
    func setObject(_ attachment: MTLRenderPassColorAttachmentDescriptor!, atIndexedSubscript attachmentIndex: Int)
}
To
class MTLRenderPassColorAttachmentDescriptorArray : NSObject {
    subscript (_ attachmentIndex: Int) -> MTLRenderPassColorAttachmentDescriptor!
    func objectAtIndexedSubscript(_ attachmentIndex: Int) -> MTLRenderPassColorAttachmentDescriptor
    func setObject(_ attachment: MTLRenderPassColorAttachmentDescriptor?, atIndexedSubscript attachmentIndex: Int)
}

Declaration
From
subscript (attachmentIndex: Int) -> MTLRenderPassColorAttachmentDescriptor!
To
subscript (_ attachmentIndex: Int) -> MTLRenderPassColorAttachmentDescriptor!

Declaration
From
class MTLRenderPassDepthAttachmentDescriptor : MTLRenderPassAttachmentDescriptor {
    var clearDepth: Double
}
To
class MTLRenderPassDepthAttachmentDescriptor : MTLRenderPassAttachmentDescriptor {
    var clearDepth: Double
    var depthResolveFilter: MTLMultisampleDepthResolveFilter
}

Declaration
From
class MTLRenderPassDescriptor : NSObject, NSCopying {
    init!() -> MTLRenderPassDescriptor
    class func renderPassDescriptor() -> MTLRenderPassDescriptor!
    var colorAttachments: MTLRenderPassColorAttachmentDescriptorArray { get }
    @NSCopying var depthAttachment: MTLRenderPassDepthAttachmentDescriptor!
    @NSCopying var stencilAttachment: MTLRenderPassStencilAttachmentDescriptor!
    var visibilityResultBuffer: MTLBuffer?
}
To
class MTLRenderPassDescriptor : NSObject, NSCopying {
     init()
    class func renderPassDescriptor() -> MTLRenderPassDescriptor
    var colorAttachments: MTLRenderPassColorAttachmentDescriptorArray { get }
    @NSCopying var depthAttachment: MTLRenderPassDepthAttachmentDescriptor!
    @NSCopying var stencilAttachment: MTLRenderPassStencilAttachmentDescriptor!
    var visibilityResultBuffer: MTLBuffer?
}

Declaration
From
class MTLRenderPipelineColorAttachmentDescriptorArray : NSObject {
    subscript (attachmentIndex: Int) -> MTLRenderPipelineColorAttachmentDescriptor!
    func objectAtIndexedSubscript(_ attachmentIndex: Int) -> MTLRenderPipelineColorAttachmentDescriptor!
    func setObject(_ attachment: MTLRenderPipelineColorAttachmentDescriptor!, atIndexedSubscript attachmentIndex: Int)
}
To
class MTLRenderPipelineColorAttachmentDescriptorArray : NSObject {
    subscript (_ attachmentIndex: Int) -> MTLRenderPipelineColorAttachmentDescriptor!
    func objectAtIndexedSubscript(_ attachmentIndex: Int) -> MTLRenderPipelineColorAttachmentDescriptor
    func setObject(_ attachment: MTLRenderPipelineColorAttachmentDescriptor?, atIndexedSubscript attachmentIndex: Int)
}

Declaration
From
subscript (attachmentIndex: Int) -> MTLRenderPipelineColorAttachmentDescriptor!
To
subscript (_ attachmentIndex: Int) -> MTLRenderPipelineColorAttachmentDescriptor!

Modified MTLRenderPipelineError [enum]
Raw Value Type
From--
ToUInt

Declaration
From
class MTLRenderPipelineReflection : NSObject {
    var vertexArguments: [AnyObject]! { get }
    var fragmentArguments: [AnyObject]! { get }
}
To
class MTLRenderPipelineReflection : NSObject {
    var vertexArguments: [MTLArgument]? { get }
    var fragmentArguments: [MTLArgument]? { get }
}

Declaration
From
var fragmentArguments: [AnyObject]! { get }
To
var fragmentArguments: [MTLArgument]? { get }

Declaration
From
var vertexArguments: [AnyObject]! { get }
To
var vertexArguments: [MTLArgument]? { get }

Modified MTLResource
Declaration
From
protocol MTLResource : NSObjectProtocol {
    var label: String? { get set }
    var device: MTLDevice { get }
    var cpuCacheMode: MTLCPUCacheMode { get }
    func setPurgeableState(_ state: MTLPurgeableState) -> MTLPurgeableState
}
To
protocol MTLResource : NSObjectProtocol {
    var label: String? { get set }
    var device: MTLDevice { get }
    var cpuCacheMode: MTLCPUCacheMode { get }
    var storageMode: MTLStorageMode { get }
    func setPurgeableState(_ state: MTLPurgeableState) -> MTLPurgeableState
}

DeclarationProtocols
From
struct MTLResourceOptions : RawOptionSetType {
    init(_ rawValue: UInt)
    init(rawValue rawValue: UInt)
    static var OptionCPUCacheModeDefault: MTLResourceOptions { get }
    static var OptionCPUCacheModeWriteCombined: MTLResourceOptions { get }
}
RawOptionSetType
To
struct MTLResourceOptions : OptionSetType {
    init(rawValue rawValue: UInt)
    static var CPUCacheModeDefaultCache: MTLResourceOptions { get }
    static var CPUCacheModeWriteCombined: MTLResourceOptions { get }
    static var StorageModeShared: MTLResourceOptions { get }
    static var StorageModeManaged: MTLResourceOptions { get }
    static var StorageModePrivate: MTLResourceOptions { get }
    static var OptionCPUCacheModeDefault: MTLResourceOptions { get }
    static var OptionCPUCacheModeWriteCombined: MTLResourceOptions { get }
}
OptionSetType

DeclarationRaw Value Type
From
enum MTLSamplerAddressMode : UInt {
    case ClampToEdge
    case Repeat
    case MirrorRepeat
    case ClampToZero
}
--
To
enum MTLSamplerAddressMode : UInt {
    case ClampToEdge
    case MirrorClampToEdge
    case Repeat
    case MirrorRepeat
    case ClampToZero
}
UInt

Declaration
From
class MTLSamplerDescriptor : NSObject, NSCopying {
    var minFilter: MTLSamplerMinMagFilter
    var magFilter: MTLSamplerMinMagFilter
    var mipFilter: MTLSamplerMipFilter
    var maxAnisotropy: Int
    var sAddressMode: MTLSamplerAddressMode
    var tAddressMode: MTLSamplerAddressMode
    var rAddressMode: MTLSamplerAddressMode
    var normalizedCoordinates: Bool
    var lodMinClamp: Float
    var lodMaxClamp: Float
    var label: String!
}
To
class MTLSamplerDescriptor : NSObject, NSCopying {
    var minFilter: MTLSamplerMinMagFilter
    var magFilter: MTLSamplerMinMagFilter
    var mipFilter: MTLSamplerMipFilter
    var maxAnisotropy: Int
    var sAddressMode: MTLSamplerAddressMode
    var tAddressMode: MTLSamplerAddressMode
    var rAddressMode: MTLSamplerAddressMode
    var normalizedCoordinates: Bool
    var lodMinClamp: Float
    var lodMaxClamp: Float
    var lodAverage: Bool
    var compareFunction: MTLCompareFunction
    var label: String?
}

Declaration
From
var label: String!
To
var label: String?

Raw Value Type
From--
ToUInt

Raw Value Type
From--
ToUInt

Declaration
From
protocol MTLSamplerState : NSObjectProtocol {
    var label: String! { get }
    var device: MTLDevice! { get }
}
To
protocol MTLSamplerState : NSObjectProtocol {
    var label: String? { get }
    var device: MTLDevice { get }
}

Declaration
From
var device: MTLDevice! { get }
To
var device: MTLDevice { get }

Declaration
From
var label: String! { get }
To
var label: String? { get }

Raw Value Type
From--
ToUInt

Raw Value Type
From--
ToUInt

Declaration
From
class MTLStructMember : NSObject {
    var name: String! { get }
    var offset: Int { get }
    var dataType: MTLDataType { get }
    func structType() -> MTLStructType!
    func arrayType() -> MTLArrayType!
}
To
class MTLStructMember : NSObject {
    var name: String { get }
    var offset: Int { get }
    var dataType: MTLDataType { get }
    func structType() -> MTLStructType?
    func arrayType() -> MTLArrayType?
}

Declaration
From
func arrayType() -> MTLArrayType!
To
func arrayType() -> MTLArrayType?

Declaration
From
var name: String! { get }
To
var name: String { get }

Declaration
From
func structType() -> MTLStructType!
To
func structType() -> MTLStructType?

Modified MTLStructType
Declaration
From
class MTLStructType : NSObject {
    var members: [AnyObject]! { get }
    func memberByName(_ name: String!) -> MTLStructMember!
}
To
class MTLStructType : NSObject {
    var members: [MTLStructMember] { get }
    func memberByName(_ name: String) -> MTLStructMember?
}

Declaration
From
func memberByName(_ name: String!) -> MTLStructMember!
To
func memberByName(_ name: String) -> MTLStructMember?

Declaration
From
var members: [AnyObject]! { get }
To
var members: [MTLStructMember] { get }

Modified MTLTexture
Declaration
From
protocol MTLTexture : MTLResource, NSObjectProtocol {
    var rootResource: MTLResource? { get }
    var textureType: MTLTextureType { get }
    var pixelFormat: MTLPixelFormat { get }
    var width: Int { get }
    var height: Int { get }
    var depth: Int { get }
    var mipmapLevelCount: Int { get }
    var sampleCount: Int { get }
    var arrayLength: Int { get }
    var framebufferOnly: Bool { get }
    func getBytes(_ pixelBytes: UnsafeMutablePointer<Void>, bytesPerRow bytesPerRow: Int, bytesPerImage bytesPerImage: Int, fromRegion region: MTLRegion, mipmapLevel level: Int, slice slice: Int)
    func replaceRegion(_ region: MTLRegion, mipmapLevel level: Int, slice slice: Int, withBytes pixelBytes: UnsafePointer<Void>, bytesPerRow bytesPerRow: Int, bytesPerImage bytesPerImage: Int)
    func getBytes(_ pixelBytes: UnsafeMutablePointer<Void>, bytesPerRow bytesPerRow: Int, fromRegion region: MTLRegion, mipmapLevel level: Int)
    func replaceRegion(_ region: MTLRegion, mipmapLevel level: Int, withBytes pixelBytes: UnsafePointer<Void>, bytesPerRow bytesPerRow: Int)
    func newTextureViewWithPixelFormat(_ pixelFormat: MTLPixelFormat) -> MTLTexture?
}
To
protocol MTLTexture : MTLResource, NSObjectProtocol {
    var rootResource: MTLResource? { get }
    var parentTexture: MTLTexture? { get }
    var parentRelativeLevel: Int { get }
    var parentRelativeSlice: Int { get }
    var buffer: MTLBuffer? { get }
    var bufferOffset: Int { get }
    var bufferBytesPerRow: Int { get }
    var textureType: MTLTextureType { get }
    var pixelFormat: MTLPixelFormat { get }
    var width: Int { get }
    var height: Int { get }
    var depth: Int { get }
    var mipmapLevelCount: Int { get }
    var sampleCount: Int { get }
    var arrayLength: Int { get }
    var usage: MTLTextureUsage { get }
    var framebufferOnly: Bool { get }
    func getBytes(_ pixelBytes: UnsafeMutablePointer<Void>, bytesPerRow bytesPerRow: Int, bytesPerImage bytesPerImage: Int, fromRegion region: MTLRegion, mipmapLevel level: Int, slice slice: Int)
    func replaceRegion(_ region: MTLRegion, mipmapLevel level: Int, slice slice: Int, withBytes pixelBytes: UnsafePointer<Void>, bytesPerRow bytesPerRow: Int, bytesPerImage bytesPerImage: Int)
    func getBytes(_ pixelBytes: UnsafeMutablePointer<Void>, bytesPerRow bytesPerRow: Int, fromRegion region: MTLRegion, mipmapLevel level: Int)
    func replaceRegion(_ region: MTLRegion, mipmapLevel level: Int, withBytes pixelBytes: UnsafePointer<Void>, bytesPerRow bytesPerRow: Int)
    func newTextureViewWithPixelFormat(_ pixelFormat: MTLPixelFormat) -> MTLTexture
    func newTextureViewWithPixelFormat(_ pixelFormat: MTLPixelFormat, textureType textureType: MTLTextureType, levels levelRange: NSRange, slices sliceRange: NSRange) -> MTLTexture
}

Declaration
From
func newTextureViewWithPixelFormat(_ pixelFormat: MTLPixelFormat) -> MTLTexture?
To
func newTextureViewWithPixelFormat(_ pixelFormat: MTLPixelFormat) -> MTLTexture

Declaration
From
class MTLTextureDescriptor : NSObject, NSCopying {
    class func texture2DDescriptorWithPixelFormat(_ pixelFormat: MTLPixelFormat, width width: Int, height height: Int, mipmapped mipmapped: Bool) -> MTLTextureDescriptor
    class func textureCubeDescriptorWithPixelFormat(_ pixelFormat: MTLPixelFormat, size size: Int, mipmapped mipmapped: Bool) -> MTLTextureDescriptor
    var textureType: MTLTextureType
    var pixelFormat: MTLPixelFormat
    var width: Int
    var height: Int
    var depth: Int
    var mipmapLevelCount: Int
    var sampleCount: Int
    var arrayLength: Int
    var resourceOptions: MTLResourceOptions
}
To
class MTLTextureDescriptor : NSObject, NSCopying {
    class func texture2DDescriptorWithPixelFormat(_ pixelFormat: MTLPixelFormat, width width: Int, height height: Int, mipmapped mipmapped: Bool) -> MTLTextureDescriptor
    class func textureCubeDescriptorWithPixelFormat(_ pixelFormat: MTLPixelFormat, size size: Int, mipmapped mipmapped: Bool) -> MTLTextureDescriptor
    var textureType: MTLTextureType
    var pixelFormat: MTLPixelFormat
    var width: Int
    var height: Int
    var depth: Int
    var mipmapLevelCount: Int
    var sampleCount: Int
    var arrayLength: Int
    var resourceOptions: MTLResourceOptions
    var cpuCacheMode: MTLCPUCacheMode
    var storageMode: MTLStorageMode
    var usage: MTLTextureUsage
}

DeclarationRaw Value Type
From
enum MTLTextureType : UInt {
    case Type1D
    case Type1DArray
    case Type2D
    case Type2DArray
    case Type2DMultisample
    case TypeCube
    case Type3D
}
--
To
enum MTLTextureType : UInt {
    case Type1D
    case Type1DArray
    case Type2D
    case Type2DArray
    case Type2DMultisample
    case TypeCube
    case TypeCubeArray
    case Type3D
}
UInt

Raw Value Type
From--
ToUInt

Declaration
From
class MTLVertexAttribute : NSObject {
    var name: String! { get }
    var attributeIndex: Int { get }
    var attributeType: MTLDataType { get }
    var active: Bool { get }
}
To
class MTLVertexAttribute : NSObject {
    var name: String? { get }
    var attributeIndex: Int { get }
    var attributeType: MTLDataType { get }
    var active: Bool { get }
}

Declaration
From
var name: String! { get }
To
var name: String? { get }

Declaration
From
class MTLVertexAttributeDescriptorArray : NSObject {
    subscript (index: Int) -> MTLVertexAttributeDescriptor!
    func objectAtIndexedSubscript(_ index: Int) -> MTLVertexAttributeDescriptor!
    func setObject(_ attributeDesc: MTLVertexAttributeDescriptor!, atIndexedSubscript index: Int)
}
To
class MTLVertexAttributeDescriptorArray : NSObject {
    subscript (_ index: Int) -> MTLVertexAttributeDescriptor!
    func objectAtIndexedSubscript(_ index: Int) -> MTLVertexAttributeDescriptor
    func setObject(_ attributeDesc: MTLVertexAttributeDescriptor?, atIndexedSubscript index: Int)
}

Declaration
From
subscript (index: Int) -> MTLVertexAttributeDescriptor!
To
subscript (_ index: Int) -> MTLVertexAttributeDescriptor!

Declaration
From
class MTLVertexBufferLayoutDescriptorArray : NSObject {
    subscript (index: Int) -> MTLVertexBufferLayoutDescriptor!
    func objectAtIndexedSubscript(_ index: Int) -> MTLVertexBufferLayoutDescriptor!
    func setObject(_ bufferDesc: MTLVertexBufferLayoutDescriptor!, atIndexedSubscript index: Int)
}
To
class MTLVertexBufferLayoutDescriptorArray : NSObject {
    subscript (_ index: Int) -> MTLVertexBufferLayoutDescriptor!
    func objectAtIndexedSubscript(_ index: Int) -> MTLVertexBufferLayoutDescriptor
    func setObject(_ bufferDesc: MTLVertexBufferLayoutDescriptor?, atIndexedSubscript index: Int)
}

Declaration
From
subscript (index: Int) -> MTLVertexBufferLayoutDescriptor!
To
subscript (_ index: Int) -> MTLVertexBufferLayoutDescriptor!

Declaration
From
class MTLVertexDescriptor : NSObject, NSCopying {
    init!() -> MTLVertexDescriptor
    class func vertexDescriptor() -> MTLVertexDescriptor!
    var layouts: MTLVertexBufferLayoutDescriptorArray { get }
    var attributes: MTLVertexAttributeDescriptorArray { get }
    func reset()
}
To
class MTLVertexDescriptor : NSObject, NSCopying {
     init()
    class func vertexDescriptor() -> MTLVertexDescriptor
    var layouts: MTLVertexBufferLayoutDescriptorArray { get }
    var attributes: MTLVertexAttributeDescriptorArray { get }
    func reset()
}

Raw Value Type
From--
ToUInt

Raw Value Type
From--
ToUInt

DeclarationRaw Value Type
From
enum MTLVisibilityResultMode : UInt {
    case Disabled
    case Boolean
}
--
To
enum MTLVisibilityResultMode : UInt {
    case Disabled
    case Boolean
    case Counting
}
UInt

Raw Value Type
From--
ToUInt

Declaration
From
typealias MTLCommandBufferHandler = (MTLCommandBuffer!) -> Void
To
typealias MTLCommandBufferHandler = (MTLCommandBuffer) -> Void

Declaration
From
func MTLCreateSystemDefaultDevice() -> MTLDevice!
To
func MTLCreateSystemDefaultDevice() -> MTLDevice?