Just sitting here watching the Metal presentation streaming over the net from WWDC and when I first saw Metal being introduced last WWDC I thought it was just an iOS only technology whose primary purpose was for games given that when they did their presentation the demonstration was a gaming scenario. This year I was expecting that maybe Vulkan will step up to the plate and maybe off the two side by side for those developers who are targeting multiple platforms but so far with the announcement by Google in reference Android M there has been no mention of Vulkan coming to the platform. Then add to that pretty much all the conversation at this point has been around Vulkan being geared towards gaming where as OpenGL is still be developed for the traditional productivity software vendors such as Adobe, Quark, Avid, AutoCad and many others. I’m wondering at this stage whether Apple looked at what was happening with Vulkan and realised that it addresses one problem but does address the fundamental problem that OpenGL has when it comes to complexity when compared to DirectX – lots have been written regarding the shader language and the intermediate form with OpenGL which is a giant mess when compared to DirectX. The net result is that any attempt to move the over all framework forward is fraud with difficulty not to mention the fact that when they do a product line refresh with new GPU’s then that introduces a whole new mess and unfortunately OpenGL always ends up lagging behind the hyper optimised versions put out by nVidia and AMD who have the luxury of being able to optimise and tweak the heck out of their implementations to get maximum performance. That being said, even with that being provided by hardware vendors you routinely hear programmers lament the mess of dealing with OpenGL – not necessarily Apple’s implementation (given that Apple are trying to make the best of a bad situation) but rather OpenGL fundamentally is a clusterfuck.
Metal when shown off at WWDC they used an unlikely candidate, Adobe, to show off their own professional software taking advantage of Metal (and the higher level framework called Metal Kit which which makes life easier for developers), which makes me conclude that they wanted something that is not only low level enough for gamers who want to squeeze out maximum performance (Metal) but also able to replace OpenGL in traditional places where OpenGL would be used (Metal and Metal Kit). They’ve moved over the various Core* components that were once using OpenGL to now using Metal for both iOS and OS X so the feeling is that OpenGL will keep hanging around but the resources now will be spent on developing their own ‘in house’ technology than having to deal with the mess that is OpenGL just as OpenGL ES has been upgraded on iOS in the last release but I don’t think there is a great push by Apple to get developers to use OpenGL unless they really have to because of multi-platform concerns (even in multi-platform scenarios there are ways to work around those issues without writing considerably more code than necessary). Where as Apple has to develop according to the schedule put forward by the OpenGL consortium where as with with Metal it gives Apple a lot more control over achieving what they want. Watching the WWDC session relating to Metal the slide noted that Metal compatible machines are Mac’s 2012 onwards so even those computers that fall before 2012 the feedback on Macrumors, Neowin and Reddit have all posted glowingly regarding the improvement in snappiness and smooth animations when compared to Yosemite which makes me wonder whether the efficiencies isn’t just at the framework level but further down in the graphical subsystem itself.
This remind me very much of Direct2D/DirectWrite where there were concerns that bugs in GPU drivers might result in unexpected behaviour but as some of the benchmarks pointed out, even if Direct2D/DirectWrite fall back to software mode (which it is capable of doing) it still ended up outperforming GDI even when it was partially hardware accelerated (which came with WDDM 1.1). In light of that it makes me wonder whether the improvements that users have noticed with their pre-2012 Mac’s because it is the result of a more efficient underpinning in much the same way that even when Direct2D/DirectWrite runs in software mode the performance still out performs the partial hardware acceleration employed with the old API.
Just closing up, I think an interesting post in the comment section that was made on ‘Stream Computing Performance Engineers’ website really is telling – Vulkan is vapourware at this point and all the promises aren’t going to mean anything given that Apple needs something to ship now, today, and now waiting for the specification to be finalised not to mention drivers and frameworks to be created. Apple has been bitten in the past waiting for things to occur only to find that they lose their advantage over the competition because they had the chance to strike when the iron is hot by decided not too. I’ll be excited to see what happens in the world of Adobe particularly how the Mac Pro will perform once we see 10.11 shipping and the Metal optimised software make it out the door. I wonder also how this will result in a cooler running Mac which is of particular importance given the iMac 5K and the scorching hot M295X that is on offer.