Metal iOS 15.5 to 16.0 API Differences

MTLAccelerationStructure.h
Added MTLAccelerationStructureGeometryDescriptor.primitiveDataBuffer
Added MTLAccelerationStructureGeometryDescriptor.primitiveDataBufferOffset
Added MTLAccelerationStructureGeometryDescriptor.primitiveDataStride
Added MTLAccelerationStructureGeometryDescriptor.primitiveDataElementSize
Added MTLAccelerationStructureTriangleGeometryDescriptor.vertexFormat
Added MTLAccelerationStructureTriangleGeometryDescriptor.transformationMatrixBuffer
Added MTLAccelerationStructureTriangleGeometryDescriptor.transformationMatrixBufferOffset
Added MTLAccelerationStructureMotionTriangleGeometryDescriptor.vertexFormat
Added MTLAccelerationStructureMotionTriangleGeometryDescriptor.transformationMatrixBuffer
Added MTLAccelerationStructureMotionTriangleGeometryDescriptor.transformationMatrixBufferOffset
Added MTLAccelerationStructure.gpuHandle
Added MTLAccelerationStructure.gpuResourceID
MTLAccelerationStructureCommandEncoder.h
Added MTLAccelerationStructureRefitOptions
Added MTLAccelerationStructureRefitOptionVertexData
Added MTLAccelerationStructureRefitOptionPerPrimitiveData
Added -[MTLAccelerationStructureCommandEncoder refitAccelerationStructure:descriptor:destination:scratchBuffer:scratchBufferOffset:options:]
Added MTLAccelerationStructurePassSampleBufferAttachmentDescriptor
Added MTLAccelerationStructurePassSampleBufferAttachmentDescriptor.sampleBuffer
Added MTLAccelerationStructurePassSampleBufferAttachmentDescriptor.startOfEncoderSampleIndex
Added MTLAccelerationStructurePassSampleBufferAttachmentDescriptor.endOfEncoderSampleIndex
Added MTLAccelerationStructurePassSampleBufferAttachmentDescriptorArray
Added -[MTLAccelerationStructurePassSampleBufferAttachmentDescriptorArray objectAtIndexedSubscript:]
Added -[MTLAccelerationStructurePassSampleBufferAttachmentDescriptorArray setObject:atIndexedSubscript:]
Added MTLAccelerationStructurePassDescriptor
Added +[MTLAccelerationStructurePassDescriptor accelerationStructurePassDescriptor]
Added MTLAccelerationStructurePassDescriptor.sampleBufferAttachments
MTLArgument.h
Added MTLBindingType
Added MTLBindingTypeBuffer
Added MTLBindingTypeThreadgroupMemory
Added MTLBindingTypeTexture
Added MTLBindingTypeSampler
Added MTLBindingTypeImageblockData
Added MTLBindingTypeImageblock
Added MTLBindingTypeVisibleFunctionTable
Added MTLBindingTypePrimitiveAccelerationStructure
Added MTLBindingTypeInstanceAccelerationStructure
Added MTLBindingTypeIntersectionFunctionTable
Added MTLBindingTypeObjectPayload
Added MTLArgumentTypeObjectPayload
Added MTLArgument.objectPayloadAlignment
Added MTLArgument.objectPayloadDataSize
Added MTLBinding
Added MTLBinding.name
Added MTLBinding.type
Added MTLBinding.access
Added MTLBinding.index
Added MTLBinding.used
Added MTLBinding.argument
Added MTLBufferBinding
Added MTLBufferBinding.bufferAlignment
Added MTLBufferBinding.bufferDataSize
Added MTLBufferBinding.bufferDataType
Added MTLBufferBinding.bufferStructType
Added MTLBufferBinding.bufferPointerType
Added MTLThreadgroupBinding
Added MTLThreadgroupBinding.threadgroupMemoryAlignment
Added MTLThreadgroupBinding.threadgroupMemoryDataSize
Added MTLTextureBinding
Added MTLTextureBinding.textureType
Added MTLTextureBinding.textureDataType
Added MTLTextureBinding.depthTexture
Added MTLTextureBinding.arrayLength
Added MTLObjectPayloadBinding
Added MTLObjectPayloadBinding.objectPayloadAlignment
Added MTLObjectPayloadBinding.objectPayloadDataSize
Modified MTLArgumentTypeBuffer
AvailabilityReplacement
FromAvailablenone
ToDeprecatedMTLBindingType

Modified MTLArgumentTypeThreadgroupMemory
AvailabilityReplacement
FromAvailablenone
ToDeprecatedMTLBindingType

Modified MTLArgumentTypeTexture
AvailabilityReplacement
FromAvailablenone
ToDeprecatedMTLBindingType

Modified MTLArgumentTypeSampler
AvailabilityReplacement
FromAvailablenone
ToDeprecatedMTLBindingType

Modified MTLArgumentTypeImageblockData
Availability
FromAvailable
ToDeprecated

Modified MTLArgumentTypeImageblock
Availability
FromAvailable
ToDeprecated

Modified MTLArgumentTypeVisibleFunctionTable
Availability
FromAvailable
ToDeprecated

Modified MTLArgumentTypePrimitiveAccelerationStructure
Availability
FromAvailable
ToDeprecated

Modified MTLArgumentTypeInstanceAccelerationStructure
Availability
FromAvailable
ToDeprecated

Modified MTLArgumentTypeIntersectionFunctionTable
Availability
FromAvailable
ToDeprecated

Modified MTLArgument
AvailabilityReplacement
FromAvailablenone
ToDeprecatedMTLBinding

MTLArgumentEncoder.h
Modified MTLArgumentEncoder
AvailabilityDeprecation Message
FromAvailablenone
ToDeprecatedUse 'gpuAddress' or 'gpuHandle' instead

MTLBinaryArchive.h
Added MTLBinaryArchiveErrorInternalError
MTLBuffer.h
Added MTLBuffer.gpuAddress
MTLCommandBuffer.h
Added -[MTLCommandBuffer accelerationStructureCommandEncoderWithDescriptor:]
Modified MTLCommandBufferErrorBlacklisted
AvailabilityReplacement
FromAvailablenone
ToDeprecatedMTLCommandBufferErrorAccessRevoked

MTLCommandEncoder.h
Modified MTLResourceUsageSample
AvailabilityReplacement
FromAvailablenone
ToDeprecatedMTLResourceUsageRead

MTLComputePipeline.h
Added MTLComputePipelineReflection.bindings
Added MTLComputePipelineState.gpuHandle
Added MTLComputePipelineState.gpuResourceID
Modified MTLComputePipelineReflection.arguments
AvailabilityReplacement
FromAvailablenone
ToDeprecatedbindings

MTLDevice.h
Added MTLIOCompressionMethod
Added MTLIOCompressionMethodZlib
Added MTLIOCompressionMethodLZFSE
Added MTLIOCompressionMethodLZ4
Added MTLIOCompressionMethodLZMA
Added MTLIOCompressionMethodLZBitmap
Added MTLGPUFamilyMetal3
Added MTLSparsePageSize
Added MTLSparsePageSize16
Added MTLSparsePageSize64
Added MTLSparsePageSize256
Added -[MTLDevice newRenderPipelineStateWithMeshDescriptor:options:reflection:error:]
Added -[MTLDevice newRenderPipelineStateWithMeshDescriptor:options:completionHandler:]
Added -[MTLDevice newIOHandleWithURL:error:]
Added -[MTLDevice newIOCommandQueueWithDescriptor:error:]
Added -[MTLDevice newIOHandleWithURL:compressionMethod:error:]
Added -[MTLDevice sparseTileSizeInBytesForSparsePageSize:]
Added -[MTLDevice sparseTileSizeWithTextureType:pixelFormat:sampleCount:sparsePageSize:]
Added -[MTLDevice newArgumentEncoderWithBufferBinding:]
Added -[MTLDevice heapAccelerationStructureSizeAndAlignWithSize:]
Added -[MTLDevice heapAccelerationStructureSizeAndAlignWithDescriptor:]
Modified MTLFeatureSet_iOS_GPUFamily1_v1
Availability
FromAvailable
ToDeprecated

Modified MTLFeatureSet_iOS_GPUFamily2_v1
Availability
FromAvailable
ToDeprecated

Modified MTLFeatureSet_iOS_GPUFamily1_v2
Availability
FromAvailable
ToDeprecated

Modified MTLFeatureSet_iOS_GPUFamily2_v2
Availability
FromAvailable
ToDeprecated

Modified MTLFeatureSet_iOS_GPUFamily3_v1
Availability
FromAvailable
ToDeprecated

Modified MTLFeatureSet_iOS_GPUFamily1_v3
Availability
FromAvailable
ToDeprecated

Modified MTLFeatureSet_iOS_GPUFamily2_v3
Availability
FromAvailable
ToDeprecated

Modified MTLFeatureSet_iOS_GPUFamily3_v2
Availability
FromAvailable
ToDeprecated

Modified MTLFeatureSet_iOS_GPUFamily1_v4
Availability
FromAvailable
ToDeprecated

Modified MTLFeatureSet_iOS_GPUFamily2_v4
Availability
FromAvailable
ToDeprecated

Modified MTLFeatureSet_iOS_GPUFamily3_v3
Availability
FromAvailable
ToDeprecated

Modified MTLFeatureSet_iOS_GPUFamily4_v1
Availability
FromAvailable
ToDeprecated

Modified MTLFeatureSet_iOS_GPUFamily1_v5
Availability
FromAvailable
ToDeprecated

Modified MTLFeatureSet_iOS_GPUFamily2_v5
Availability
FromAvailable
ToDeprecated

Modified MTLFeatureSet_iOS_GPUFamily3_v4
Availability
FromAvailable
ToDeprecated

Modified MTLFeatureSet_iOS_GPUFamily4_v2
Availability
FromAvailable
ToDeprecated

Modified MTLFeatureSet_iOS_GPUFamily5_v1
Availability
FromAvailable
ToDeprecated

Modified MTLGPUFamilyMac1
AvailabilityReplacement
FromAvailablenone
ToDeprecatedMTLGPUFamilyMac2

Modified MTLGPUFamilyMacCatalyst1
AvailabilityReplacement
FromAvailablenone
ToDeprecatedMTLGPUFamilyMac2

Modified MTLGPUFamilyMacCatalyst2
AvailabilityReplacement
FromAvailablenone
ToDeprecatedMTLGPUFamilyMac2

Modified MTLDevice.barycentricCoordsSupported
AvailabilityReplacement
FromAvailablenone
ToDeprecatedsupportsShaderBarycentricCoordinates

Modified -[MTLDevice newLibraryWithFile:error:]
AvailabilityDeprecation Message
FromAvailablenone
ToDeprecatedUse -newLibraryWithURL:error: instead

Modified -[MTLDevice supportsFeatureSet:]
AvailabilityDeprecation Message
FromAvailablenone
ToDeprecatedUse supportsFamily instead

MTLHeap.h
Added MTLHeapDescriptor.sparsePageSize
Added -[MTLHeap newAccelerationStructureWithSize:]
Added -[MTLHeap newAccelerationStructureWithDescriptor:]
Added -[MTLHeap newAccelerationStructureWithSize:offset:]
Added -[MTLHeap newAccelerationStructureWithDescriptor:offset:]
MTLIndirectCommandBuffer.h
Added MTLIndirectCommandBufferDescriptor.supportRayTracing
Added MTLIndirectCommandBuffer.gpuHandle
Added MTLIndirectCommandBuffer.gpuResourceID
MTLIntersectionFunctionTable.h
Added MTLIntersectionFunctionTable.gpuHandle
Added MTLIntersectionFunctionTable.gpuResourceID
MTLIOCommandBuffer.h
Added MTLIOStatus
Added MTLIOStatusPending
Added MTLIOStatusCancelled
Added MTLIOStatusError
Added MTLIOStatusComplete
Added MTLIOCommandBufferHandler
Added MTLIOCommandBuffer
Added -[MTLIOCommandBuffer addCompletedHandler:]
Added -[MTLIOCommandBuffer loadBytes:size:sourceHandle:sourceHandleOffset:]
Added -[MTLIOCommandBuffer loadBuffer:offset:size:sourceHandle:sourceHandleOffset:]
Added -[MTLIOCommandBuffer loadTexture:slice:level:size:sourceBytesPerRow:sourceBytesPerImage:destinationOrigin:sourceHandle:sourceHandleOffset:]
Added -[MTLIOCommandBuffer copyStatusToBuffer:offset:]
Added -[MTLIOCommandBuffer commit]
Added -[MTLIOCommandBuffer waitUntilCompleted]
Added -[MTLIOCommandBuffer tryCancel]
Added -[MTLIOCommandBuffer addBarrier]
Added -[MTLIOCommandBuffer pushDebugGroup:]
Added -[MTLIOCommandBuffer popDebugGroup]
Added -[MTLIOCommandBuffer enqueue]
Added -[MTLIOCommandBuffer waitForEvent:value:]
Added -[MTLIOCommandBuffer signalEvent:value:]
Added MTLIOCommandBuffer.label
Added MTLIOCommandBuffer.status
Added MTLIOCommandBuffer.error
MTLIOCommandQueue.h
Added MTLIOPriority
Added MTLIOPriorityHigh
Added MTLIOPriorityNormal
Added MTLIOPriorityLow
Added MTLIOCommandQueueType
Added MTLIOCommandQueueTypeConcurrent
Added MTLIOCommandQueueTypeSerial
Added MTLIOErrorDomain
Added MTLIOError
Added MTLIOErrorURLInvalid
Added MTLIOErrorInternal
Added MTLIOCommandQueue
Added -[MTLIOCommandQueue enqueueBarrier]
Added -[MTLIOCommandQueue commandBuffer]
Added -[MTLIOCommandQueue commandBufferWithUnretainedReferences]
Added MTLIOCommandQueue.label
Added MTLIOScratchBuffer
Added MTLIOScratchBuffer.buffer
Added MTLIOScratchBufferAllocator
Added -[MTLIOScratchBufferAllocator newScratchBufferWithMinimumSize:]
Added -[MTLIOScratchBufferAllocator allocateScratchBufferWithMinimumSize:]
Added MTLIOCommandQueueDescriptor
Added MTLIOCommandQueueDescriptor.maxCommandBufferCount
Added MTLIOCommandQueueDescriptor.priority
Added MTLIOCommandQueueDescriptor.type
Added MTLIOCommandQueueDescriptor.maxCommandsInFlight
Added MTLIOCommandQueueDescriptor.scratchBufferAllocator
Added MTLIOFileHandle
Added MTLIOFileHandle.label
MTLIOCompressor.h
Added MTLIOCompressionStatus
Added MTLIOCompressionStatusComplete
Added MTLIOCompressionStatusError
Added kMTLIOCompressionContextDefaultChunkSize
Added MTLIOCreateCompressionContext()
Added MTLIOCompressionContextAppendData()
Added MTLIOFlushAndDestroyCompressionContext()
MTLLibrary.h
Added MTLFunctionTypeMesh
Added MTLFunctionTypeObject
Added MTLLanguageVersion3_0
Added MTLLibraryOptimizationLevel
Added MTLLibraryOptimizationLevelDefault
Added MTLLibraryOptimizationLevelSize
Added MTLCompileOptions.optimizationLevel
Modified MTLLanguageVersion1_0
AvailabilityDeprecation Message
FromAvailablenone
ToDeprecatedUse a newer language standard

MTLRenderCommandEncoder.h
Added MTLRenderStageObject
Added MTLRenderStageMesh
Added -[MTLRenderCommandEncoder setObjectBytes:length:atIndex:]
Added -[MTLRenderCommandEncoder setObjectBuffer:offset:atIndex:]
Added -[MTLRenderCommandEncoder setObjectBufferOffset:atIndex:]
Added -[MTLRenderCommandEncoder setObjectBuffers:offsets:withRange:]
Added -[MTLRenderCommandEncoder setObjectTexture:atIndex:]
Added -[MTLRenderCommandEncoder setObjectTextures:withRange:]
Added -[MTLRenderCommandEncoder setObjectSamplerState:atIndex:]
Added -[MTLRenderCommandEncoder setObjectSamplerStates:withRange:]
Added -[MTLRenderCommandEncoder setObjectSamplerState:lodMinClamp:lodMaxClamp:atIndex:]
Added -[MTLRenderCommandEncoder setObjectSamplerStates:lodMinClamps:lodMaxClamps:withRange:]
Added -[MTLRenderCommandEncoder setObjectThreadgroupMemoryLength:atIndex:]
Added -[MTLRenderCommandEncoder setMeshBytes:length:atIndex:]
Added -[MTLRenderCommandEncoder setMeshBuffer:offset:atIndex:]
Added -[MTLRenderCommandEncoder setMeshBufferOffset:atIndex:]
Added -[MTLRenderCommandEncoder setMeshBuffers:offsets:withRange:]
Added -[MTLRenderCommandEncoder setMeshTexture:atIndex:]
Added -[MTLRenderCommandEncoder setMeshTextures:withRange:]
Added -[MTLRenderCommandEncoder setMeshSamplerState:atIndex:]
Added -[MTLRenderCommandEncoder setMeshSamplerStates:withRange:]
Added -[MTLRenderCommandEncoder setMeshSamplerState:lodMinClamp:lodMaxClamp:atIndex:]
Added -[MTLRenderCommandEncoder setMeshSamplerStates:lodMinClamps:lodMaxClamps:withRange:]
Added -[MTLRenderCommandEncoder drawMeshThreadgroups:threadsPerObjectThreadgroup:threadsPerMeshThreadgroup:]
Added -[MTLRenderCommandEncoder drawMeshThreads:threadsPerObjectThreadgroup:threadsPerMeshThreadgroup:]
Added -[MTLRenderCommandEncoder drawMeshThreadgroupsWithIndirectBuffer:indirectBufferOffset:threadsPerObjectThreadgroup:threadsPerMeshThreadgroup:]
Added -[MTLRenderCommandEncoder memoryBarrierWithScope:afterStages:beforeStages:]
Added -[MTLRenderCommandEncoder memoryBarrierWithResources:count:afterStages:beforeStages:]
Modified -[MTLRenderCommandEncoder useResource:usage:]
AvailabilityReplacement
FromAvailablenone
ToDeprecatedUse useResource:usage:stages: instead

Modified -[MTLRenderCommandEncoder useResources:count:usage:]
AvailabilityReplacement
FromAvailablenone
ToDeprecatedUse useResources:count:usage:stages: instead

Modified -[MTLRenderCommandEncoder useHeap:]
AvailabilityReplacement
FromAvailablenone
ToDeprecatedUse useHeap:stages: instead

Modified -[MTLRenderCommandEncoder useHeaps:count:]
AvailabilityReplacement
FromAvailablenone
ToDeprecatedUse useHeaps:count:stages: instead

MTLRenderPipeline.h
Added MTLRenderPipelineReflection.vertexBindings
Added MTLRenderPipelineReflection.fragmentBindings
Added MTLRenderPipelineReflection.tileBindings
Added MTLRenderPipelineReflection.objectBindings
Added MTLRenderPipelineReflection.meshBindings
Added MTLRenderPipelineReflection.objectArguments
Added MTLRenderPipelineReflection.meshArguments
Added MTLRenderPipelineState.maxTotalThreadsPerObjectThreadgroup
Added MTLRenderPipelineState.maxTotalThreadsPerMeshThreadgroup
Added MTLRenderPipelineState.objectThreadExecutionWidth
Added MTLRenderPipelineState.meshThreadExecutionWidth
Added MTLRenderPipelineState.maxTotalThreadgroupsPerMeshGrid
Added MTLRenderPipelineState.gpuHandle
Added MTLRenderPipelineState.gpuResourceID
Added MTLMeshRenderPipelineDescriptor
Added MTLMeshRenderPipelineDescriptor.label
Added MTLMeshRenderPipelineDescriptor.objectFunction
Added MTLMeshRenderPipelineDescriptor.meshFunction
Added MTLMeshRenderPipelineDescriptor.fragmentFunction
Added MTLMeshRenderPipelineDescriptor.maxTotalThreadsPerObjectThreadgroup
Added MTLMeshRenderPipelineDescriptor.maxTotalThreadsPerMeshThreadgroup
Added MTLMeshRenderPipelineDescriptor.objectThreadgroupSizeIsMultipleOfThreadExecutionWidth
Added MTLMeshRenderPipelineDescriptor.meshThreadgroupSizeIsMultipleOfThreadExecutionWidth
Added MTLMeshRenderPipelineDescriptor.payloadMemoryLength
Added MTLMeshRenderPipelineDescriptor.maxTotalThreadgroupsPerMeshGrid
Added MTLMeshRenderPipelineDescriptor.objectBuffers
Added MTLMeshRenderPipelineDescriptor.meshBuffers
Added MTLMeshRenderPipelineDescriptor.fragmentBuffers
Added MTLMeshRenderPipelineDescriptor.rasterSampleCount
Added MTLMeshRenderPipelineDescriptor.alphaToCoverageEnabled
Added MTLMeshRenderPipelineDescriptor.alphaToOneEnabled
Added MTLMeshRenderPipelineDescriptor.rasterizationEnabled
Added MTLMeshRenderPipelineDescriptor.maxVertexAmplificationCount
Added MTLMeshRenderPipelineDescriptor.colorAttachments
Added MTLMeshRenderPipelineDescriptor.depthAttachmentPixelFormat
Added MTLMeshRenderPipelineDescriptor.stencilAttachmentPixelFormat
Added -[MTLMeshRenderPipelineDescriptor reset]
Modified MTLRenderPipelineReflection.vertexArguments
AvailabilityReplacement
FromAvailablenone
ToDeprecatedvertexBindings

Modified MTLRenderPipelineReflection.fragmentArguments
AvailabilityReplacement
FromAvailablenone
ToDeprecatedfragmentBindings

Modified MTLRenderPipelineDescriptor.sampleCount
AvailabilityReplacement
FromAvailablenone
ToDeprecatedrasterSampleCount

MTLResource.h
Modified MTLResourceOptionCPUCacheModeDefault
AvailabilityReplacement
FromAvailablenone
ToDeprecatedMTLResourceCPUCacheModeDefaultCache

Modified MTLResourceOptionCPUCacheModeWriteCombined
AvailabilityReplacement
FromAvailablenone
ToDeprecatedMTLResourceCPUCacheModeWriteCombined

MTLSampler.h
Added MTLSamplerState.gpuHandle
Added MTLSamplerState.gpuResourceID
MTLTexture.h
Added MTLTexture.gpuHandle
Added MTLTexture.gpuResourceID
MTLTypes.h
Added MTLGPUHandle
Added MTLResourceID
MTLVisibleFunctionTable.h
Added MTLVisibleFunctionTable.gpuHandle
Added MTLVisibleFunctionTable.gpuResourceID