根据苹果的文档,当将键"NSSupportsAutomaticGraphicsSwitching“的值"YES”(或true)添加到OSX应用程序的Info.plist文件中时,集成的GPU将在双GPU系统(而不是离散GPU)上调用。这是有用的,因为集成的GPU --虽然性能不高--足以满足我的应用程序的需求,消耗的能量也更少。
不幸的是,正如上面所述,构建并随后检查Activity (Energy选项卡:"Requires“列)显示,尽管请求集成GPU,但支持金属API的应用程序仍然使用离散GPU。
有什么方法可以提示金属系统本身使用集成GPU吗?
发布于 2017-01-16 05:20:21
问题是Metal默认使用离散GPU。使用以下代码以及上面详细说明的正确的Info.plist配置,将导致使用集成的GPU:
NSArray<id<MTLDevice>> *devices = MTLCopyAllDevices();
gpu_ = nil;
// Low power device is sufficient - try to use it!
for (id<MTLDevice> device in devices) {
if (device.isLowPower) {
gpu_ = device;
break;
}
}
// below: probably not necessary since there is always
// integrated GPU, but doesn't hurt.
if (gpu_ == nil)
gpu_ = MTLCreateSystemDefaultDevice();
如果使用的是MTKView,请记住将gpu_
传递给其initWithFrame:device:
方法。
https://stackoverflow.com/questions/41675193
复制