Metal 系列二:GPU Devices

版权声明:转载请标注原文地址。邮箱[email protected] https://blog.csdn.net/Xoxo_x/article/details/83515350

获取设备默认的GPU设备:

代码:

guard let device = MTLCreateSystemDefaultDevice() else { 
    fatalError( "Failed to get the system's default Metal device." ) 
}

为了使用Metal framework,首先应该获取GPU设备,app中所有和Metal有联系的对象,都来自获取的GPU设备。并且,只需要获取一次即可。

MTLDevice protocol

它定义了GPU的接口:
1.可以在GPU设备中查询是否对APP的Metal提供特殊功能。
2.使用GPU设备发出所有Metal commend(命令)
3.不要自己实现此协议,相反,要从上文我们介绍的MTLCreateSystemDefaultDevice()方法中获取Device
4.使用MTLCopyAllDevicesWithObserver,可以获取可用的GPU设备
5.有关选择正确的GPU设备的讨论,请查考:Getting the Default GPU

GPU 设备是我们在Metal中做任何操作的首要对象,因此,所有的app中涉及到的Metal对象都是来自运行时获得的MTLDevice实例。
Device被创建,代价十分昂贵,同事也是持久的,大多数被设计为只初始化一次 only once,并且真个生命周期都在重用。
但是,GPU设备创建的对象特定于发布它们的GPU,因此如果您将中间运行切换为使用不同的GPU,那么您也可以从新的GPU设备创建一组新的命令对象。

主题:

获取设备

查询属性

查询特性

创建命令队列

同步命令集合

获取 shader 方法

创建渲染管线

创建计算管道

查询内存可用性

创建缓冲

创建纹理和取样

创建参数缓冲区

创建间接命令缓冲区

创建资源堆和围栏

创建深度和模板状态

查询可编程样品位置

查询光栅订单组支持

猜你喜欢

转载自blog.csdn.net/Xoxo_x/article/details/83515350