iOS - Metal - MTLDevice 文档翻译

/*!
 @brief 返回对首选系统默认Metal设备的引用。
 @discussion 在Mac OS X系统上支持自动图形切换,调用这种获得Metal器件的API将使系统切换到高功率GPU。在支持多个GPU的其他系统上,它将返回GPU与主显示相关联。*/
@available(iOS 8.0, *)
public func MTLCreateSystemDefaultDevice() -> MTLDevice?

/*!
 @brief 返回系统中的所有Metal设备。
 @discussion 这个API不会导致系统切换设备,并根据它认为合适的标准来决定使用哪个GPU来使用应用程序。
*/

@available(iOS 8.0, *)
public enum MTLFeatureSet : UInt {


@available(iOS 8.0, *)
case iOS_GPUFamily1_v1

@available(iOS 8.0, *)
case iOS_GPUFamily2_v1


@available(iOS 9.0, *)
case iOS_GPUFamily1_v2

@available(iOS 9.0, *)
case iOS_GPUFamily2_v2

@available(iOS 9.0, *)
case iOS_GPUFamily3_v1


@available(iOS 10.0, *)
case iOS_GPUFamily1_v3

@available(iOS 10.0, *)
case iOS_GPUFamily2_v3

@available(iOS 10.0, *)
case iOS_GPUFamily3_v2
}

/*!
 @enum MTLPipelineOption
 @abstract 控制管道(pipeline)的创建
 */
@available(iOS 8.0, *)
public struct MTLPipelineOption : OptionSet {

public init(rawValue: UInt)


public static var argumentInfo: MTLPipelineOption { get }

public static var bufferTypeInfo: MTLPipelineOption { get }
}

/*!
 @abstract 表示内存大小和字节对齐。
 */
public struct MTLSizeAndAlign {

public var size: Int

public var align: Int

public init()

public init(size: Int, align: Int)
}

/* Convenience typedef,它可以很容易地声明某些返回类型的存储。 */
public typealias MTLAutoreleasedRenderPipelineReflection = MTLRenderPipelineReflection
public typealias MTLAutoreleasedComputePipelineReflection = MTLComputePipelineReflection

public typealias MTLNewLibraryCompletionHandler = (MTLLibrary?, Error?) -> Swift.Void

public typealias MTLNewRenderPipelineStateCompletionHandler = (MTLRenderPipelineState?, Error?) -> Swift.Void
public typealias MTLNewRenderPipelineStateWithReflectionCompletionHandler = (MTLRenderPipelineState?, MTLRenderPipelineReflection?, Error?) -> Swift.Void

public typealias MTLNewComputePipelineStateCompletionHandler = (MTLComputePipelineState?, Error?) -> Swift.Void
public typealias MTLNewComputePipelineStateWithReflectionCompletionHandler = (MTLComputePipelineState?, MTLComputePipelineReflection?, Error?) -> Swift.Void


/*!
 @protocol MTLDevice
 @abstract MTLDevice 表示能够进行数据并行计算的处理器
 */
@available(iOS 8.0, *)
public protocol MTLDevice : NSObjectProtocol {

/*!
 @property name
 @abstract 供应商设备的全名。
 */
public var name: String? { get }


/*!
 @property maxThreadsPerThreadgroup
 @abstract 每个维度上的最大线程数。
 */
@available(iOS 9.0, *)
public var maxThreadsPerThreadgroup: MTLSize { get }


/*!
 @method newCommandQueue
 @brief 创建并返回一个新的命令队列。通过此方法创建的命令队列只允许64个未完成的命令缓冲区。
 @return 新的命令队列对象
 */
public func makeCommandQueue() -> MTLCommandQueue


/*!
 @method newCommandQueueWithMaxCommandBufferCount
 @brief 创建并返回一个包含未完成的命令缓冲区的新命令队列。
 @return 新的命令队列对象
 */
public func makeCommandQueue(maxCommandBufferCount: Int) -> MTLCommandQueue


/*!
 @method heapTextureSizeAndAlignWithDescriptor:
 @abstract 当从堆中分配时,确定纹理的字节大小。
 @discussion 此方法可用于帮助确定所需的堆大小。
 */
@available(iOS 10.0, *)
public func heapTextureSizeAndAlign(descriptor desc: MTLTextureDescriptor) -> MTLSizeAndAlign


/*!
 @method heapBufferSizeAndAlignWithLength:options:
 @abstract 从堆中分配子分配时,确定缓冲区的字节大小。
 @discussion 此方法可用于帮助确定所需的堆大小。
 */
@available(iOS 10.0, *)
public func heapBufferSizeAndAlign(length: Int, options: MTLResourceOptions = []) -> MTLSizeAndAlign


/*!
 @method newHeapWithDescriptor:
 @abstract 创建带有给定描述符的新堆。
 */
@available(iOS 10.0, *)
public func makeHeap(descriptor: MTLHeapDescriptor) -> MTLHeap


/*!
 @method newBufferWithLength:options:
 @brief Create a buffer by allocating new memory.
 */
public func makeBuffer(length: Int, options: MTLResourceOptions = []) -> MTLBuffer


/*!
 @method newBufferWithBytes:length:options:
 @brief 通过分配新的内存创建缓冲区。
 */
public func makeBuffer(bytes pointer: UnsafeRawPointer, length: Int, options: MTLResourceOptions = []) -> MTLBuffer


/*!
 @method newBufferWithBytesNoCopy:length:options:deallocator:
 @brief 通过封装地址空间的现有部分来创建缓冲区。
 */
public func makeBuffer(bytesNoCopy pointer: UnsafeMutableRawPointer, length: Int, options: MTLResourceOptions = [], deallocator: ((UnsafeMutableRawPointer, Int) -> Swift.Void)? = nil) -> MTLBuffer


/*!
 @method newDepthStencilStateWithDescriptor:
 @brief 创建一个深度/模板测试状态对象。
 */
public func makeDepthStencilState(descriptor: MTLDepthStencilDescriptor) -> MTLDepthStencilState


/*!
 @method newTextureWithDescriptor:
 @abstract 使用私有存储分配新纹理。
 */
public func makeTexture(descriptor: MTLTextureDescriptor) -> MTLTexture


/*!
 @method newSamplerStateWithDescriptor:
 @abstract 创建一个新的取样器。
*/
public func makeSamplerState(descriptor: MTLSamplerDescriptor) -> MTLSamplerState


/*!
 @method newDefaultLibrary
 @abstract 返回主包的默认库。
 @discussion 使用newDefaultLibraryWithBundle:错误:得到一个NSError在失败的情况下。
 */
public func newDefaultLibrary() -> MTLLibrary?


/*
 @method newDefaultLibraryWithBundle:error:
 @abstract 返回给定bundle的默认库
 @return 一个指向库的指针,如果出现错误,则为nil。
*/
@available(iOS 10.0, *)
public func makeDefaultLibrary(bundle: Bundle) throws -> MTLLibrary


/*!
 @method newLibraryWithFile:
 @abstract 从一个Metal库文件加载一个MTLLibrary。
 */
public func makeLibrary(filepath: String) throws -> MTLLibrary


/*!
 @method newLibraryWithData:
 @abstract 从dispatch_data_t加载一个MTLLibrary
 @param data 已经以dispatch_data_t的形式加载的Metal库文件。
 @param error 如果我们没有打开Metal库数据,会出现错误。
 */
public func makeLibrary(data: __DispatchData) throws -> MTLLibrary


/*!
 @method newLibraryWithSource:options:error:
 @abstract 从源装载一个MTLLibrary。
 */
public func makeLibrary(source: String, options: MTLCompileOptions?) throws -> MTLLibrary


/*!
 @method newLibraryWithSource:options:completionHandler:
 @abstract 从源装载一个MTLLibrary。
 */
public func makeLibrary(source: String, options: MTLCompileOptions?, completionHandler: @escaping Metal.MTLNewLibraryCompletionHandler)


/*!
 @method newRenderPipelineStateWithDescriptor:error:
 @abstract 同步创建和编译一个新的mtlrender管道对象。
 */
public func makeRenderPipelineState(descriptor: MTLRenderPipelineDescriptor) throws -> MTLRenderPipelineState


/*!
 @method newRenderPipelineStateWithDescriptor:options:reflection:error:
 @abstract 创建并编译一个新的mtlrender管线对象,并返回额外的反射信息。
 */
public func makeRenderPipelineState(descriptor: MTLRenderPipelineDescriptor, options: MTLPipelineOption, reflection: AutoreleasingUnsafeMutablePointer?) throws -> MTLRenderPipelineState


/*!
 @method newRenderPipelineState:completionHandler:
 @abstract 异步创建和编译一个新的mtlrender管线对象。
 */
public func makeRenderPipelineState(descriptor: MTLRenderPipelineDescriptor, completionHandler: @escaping Metal.MTLNewRenderPipelineStateCompletionHandler)


/*!
 @method newRenderPipelineState:options:completionHandler:
 @abstract 创建并编译一个新的mtlrender管线对象,并返回额外的反射信息
 */
public func makeRenderPipelineState(descriptor: MTLRenderPipelineDescriptor, options: MTLPipelineOption, completionHandler: @escaping Metal.MTLNewRenderPipelineStateWithReflectionCompletionHandler)


/*!
 @method newComputePipelineStateWithDescriptor:error:
 @abstract 同步创建和编译一个新的mtlcomputeUNK inestate对象。
 */
public func makeComputePipelineState(function computeFunction: MTLFunction) throws -> MTLComputePipelineState


/*!
 @method newComputePipelineStateWithDescriptor:options:reflection:error:
 @abstract 同步创建和编译一个新的mtlcomputeUNK inestate对象。
 */
public func makeComputePipelineState(function computeFunction: MTLFunction, options: MTLPipelineOption, reflection: AutoreleasingUnsafeMutablePointer?) throws -> MTLComputePipelineState


/*!
 @method newComputePipelineStateWithDescriptor:completionHandler:
 @abstract异步地创建和编译一个新的mtlcomputeUNK inestate对象。
 */
public func makeComputePipelineState(function computeFunction: MTLFunction, completionHandler: @escaping Metal.MTLNewComputePipelineStateCompletionHandler)


/*!
 @method newComputePipelineStateWithDescriptor:options:completionHandler:
 @abstract异步地创建和编译一个新的mtlcomputeUNK inestate对象。
 */
public func makeComputePipelineState(function computeFunction: MTLFunction, options: MTLPipelineOption, completionHandler: @escaping Metal.MTLNewComputePipelineStateWithReflectionCompletionHandler)


/*!
 @method newComputePipelineStateWithDescriptor:options:reflection:error:
 @abstract 同步创建和编译一个新的mtlcomputeUNK inestate对象。
 */
@available(iOS 9.0, *)
public func makeComputePipelineState(descriptor: MTLComputePipelineDescriptor, options: MTLPipelineOption, reflection: AutoreleasingUnsafeMutablePointer?) throws -> MTLComputePipelineState


/*!
 @method newComputePipelineStateWithDescriptor:options:completionHandler:
 @abstract异步地创建和编译一个新的mtlcomputeUNK inestate对象。
 */
@available(iOS 9.0, *)
public func makeComputePipelineState(descriptor: MTLComputePipelineDescriptor, options: MTLPipelineOption, completionHandler: @escaping Metal.MTLNewComputePipelineStateWithReflectionCompletionHandler)


/*!
 @method newFence
 @abstract 创建一个新的MTLFence对象
 */
@available(iOS 10.0, *)
public func makeFence() -> MTLFence


/*!
 @method supportsFeatureSet:
 @abstract Returns TRUE if the feature set is supported by this MTLDevice.
 */
public func supportsFeatureSet(_ featureSet: MTLFeatureSet) -> Bool


/*!
 @method supportsTextureSampleCount:
 @brief 查询设备,如果它支持给定的sampleCount的纹理。
 @return BOOL value. 如果是,设备支持给定的纹理样式。如果没有,设备不支持给定的sampleCount。
 */
@available(iOS 9.0, *)
public func supportsTextureSampleCount(_ sampleCount: Int) -> Bool

}

你可能感兴趣的:(iOS - Metal - MTLDevice 文档翻译)