Hello,
On macOS, I noticed devices taken from MTLCopyAllDevices perform very, very differently from MTLCreateSystemDefaultDevice. In fact, grabbing the very same device from MTLCopyAllDevices that's produced by MTLCreateSystemDefaultDevice (literally the same id and everything) I get about half the peformance.
This can be easily reproduced by simply downloading Apple's Hello Triangle demo and replace the MTLCreateSystemDefaultDevice() function call with MTLCopyAllDevices()[1] (or something similar. Just make sure you find the same device). The demo will now perform at roughly half the framerate compared to using the system's default device. This becomes more apparent once you increase the window's size.
This has been tested on a MacBook Pro 2016.
I can understand the major difference in performance when selecting the integrated graphics device (i.e. the low power device) from MTLCopyAllDevices. But why would the dedicated graphics device (in my case the Radeon Pro 460) differ from MTLCreateSystemDefaultDevice, despite being the exact same?
Cheers in advance for any information! 🙂