Linked by Thom Holwerda on Fri 27th Jun 2014 17:42 UTC

Metal. If the name sounds hardcore, it's because it's a hardcore improvement to the way games will be able to perform on iOS 8. Metal represents a much more no-nonsense approach to getting the most out of the Apple A7's gaming performance, assuring users of the iPhone 5S, iPad Air and iPad mini with Retina display that their devices will continue to be top-notch game systems come this fall.

Right now in iOS 7 software called OpenGL ES sits in between the game and the core hardware that runs it, translating function calls into graphics commands that are sent to the hardware. It's a lot of overhead. And iOS 8 is getting rid of a lot of it.

A nice overview of Apple's Metal.

Permalink for comment 591495
To read all comments associated with this story, please click here.
RE: Simple question
by CaptainN- on Fri 27th Jun 2014 20:18 UTC in reply to "Simple question"
Member since:

OpenGL and D3D have a lot of overhead in their own abstractions.

Basically, you spend your time in those APIs putting data into formats that those APIs require, then the platform drivers convert that into something the GPU can use.

Then shaders (which also have to be compiled and messed with by drivers) operate on that data in batches. Because GPUs are massively parallel, they operate on a bunch of data at once, but you can't do 3 things to half the data and another three things to another set of data, etc. You have to do one kind of operation for all the data in the current buffer, then switch to a new buffer and do another type of operation. 3D engines will often do all the flat surfaces in one pass, switch the mode (shaders, etc.) then render all the shiny surfaces, etc.

The drivers do their best to optimize, but OpenGL and D3D are platform agnostic - not hardware specific APIs. This means the abstractions they deal with don't match the hardware directly, which causes overhead. Those drivers are also filled with a lot of ancient cruft that's hard to change without breaking things (this is more true for AMD). This means that developers have to jump through hoops to optimize (or fix bugs) on specific hardware - although it mostly means is they won't bother.

AMD's Mantle and Apple's Metal are ways to open the lower level of the actual GPU hardware to developers so they can better optimize their own work, and avoid the overhead of a generic API, freeing the CPU which normally would have to do a bunch of extra translation work to do other things. It should also open the door for some new kinds of operations that aren't feasible now - which is far more exciting than just the performance boost.

nVidia on the other hand often will optimize developers' games themselves and ship those optimizations in their own drivers to override whatever shipped in a particular game. They are so secretive I wonder if they'll ever release a similar low level API.

I'd guess the low level API coming for D3D has a very very long lead time because of how difficult it will be to create a low level API that works on many different GPU platforms (not just nVidia and AMD, but all the mobile GPUs). I wouldn't hold my breath for an OpenGL equivalent any time soon.

BTW, it's fun to watch the cycles here - we had early proprietary 3D hardware "accelerators" like 3DFX, with their own custom APIs like Glide, and then everyone clamored for a standard (OpenGL and D3D). And now here we are 20 years cheering the return of proprietary APIs. :-)

Reply Parent Score: 7