Improving graphics performance on OS X: Is Metal the answer?

Improving graphics performance on OS X: Is Metal the answer?

I've previously discussed Metal in iOS 8 and why it's so important: Because reducing overhead imposed by OpenGL ES means games (and other apps) can run faster and more efficiently on the right iOS hardware. Can the same happen for OS X?

Metal and the problem it solves

First, let's do a quick recap on what Metal is. Metal is a forthcoming iOS 8 technology that will enable dramatically faster graphics performance on devices that use Apple's A7 processor: Right now, that includes the iPhone 5S, iPad Air and iPad mini with Retina display. (We can safely presume that future iOS devices that use new generations of Apple processors will retain this ability.)

Macs don't use A7 processors. They rely on Intel CPU technology, instead. Most of the new ones use Haswell processors that were first introduced on Mac models in 2013. And because of that, the short answer is no: Metal won't be coming to OS X.

But the story doesn't end there.

Macs and iOS devices share an important heritage. Both depend on software code called OpenGL to produce graphics on the screen. iOS's version is a little different: It's OpenGL ES, a special variant made for smartphones, tablets and other systems.

The kind of processors that OpenGL ES was made to run on have changed a lot since it was first introduced. Apple's A7 processor is a lot more capable than older systems, and the problem that Apple's trying to solve with Metal is how to most efficiently use that hardware.

Macs face different challenges

And it's worth reiterating that Metal works on a very specific subset of iOS hardware: Right now, that's only the A7 chip.

Compare the Macintosh. Macs use a lot of different hardware under the hood. Apple's newest Macs use Intel CPUs; most new models use Haswell processors, which were first introduced in 2013, but the Mac Pro uses a Xeon chip, while the "standard" $1199 MacBook Pro and Mac mini still rely on an Ivy Bridge processor that came out in 2012.

Many Macs use integrated graphics — everything from Intel HD 4000 to Intel Iris Pro — while some (like the 15-inch Retina MacBook Pro and the higher-end iMacs and Mac Pro) rely on discrete graphics subsystems made by Nvidia and AMD.

And that's just current systems. Mavericks and Yosemite run on Mac hardware that's been around for years. It's a constantly changing target. All this adds up to a hardware mishmosh that makes the whole Metal thing, focusing on A7, to be impractical.

It's a double-edged sword: this diversity and maturity of hardware enables the Mac to handle overhead from OpenGL more effectively than a mobile device. But it also makes the Mac much less predictable and consistent for overall graphics performance.

If a game runs slow, is OpenGL to blame? Is it the GPU or the integrated graphics system, or some related technology, like main system RAM vs dedicated video RAM? Is it the porting technique that's used?

The point is that on a Mac, a lot of different factors can affect the performance of games and other graphics-heavy software.

Getting closer to the metal

Getting back to Metal for a moment, the "Metal" moniker itself is a reference to a programmer's term, close to the metal, working deep in the guts of the system to get the best performance possible. And while implementing Metal may not be feasible in OS X, getting closer to the metal is certainly achievable.

It's actually something that the makers of these graphics subsystems have worked on for years, in different ways. Nvidia has a technology called CUDA, for example. It's not aimed at game developers but rather scientific, engineering, enterprise and other app developers looking to tap into the parallel-processing power of Nvidia graphics processors. While CUDA works on the Mac, Apple emphasizes developer support for OpenCL, an open standard that provides similar functionality — Apple VP Phil Schiller mentioned OpenCL by name when he introduced the Mac Pro, with massive parallel-processing workstation graphics processors, at WWDC in 2013.

AMD has made a lot of noise with Mantle, a technology designed for its own graphics processors that use its GCN architecture — and this one is aimed at improving game performance. Mantle is aimed at reducing driver overhead on PCs much in the same way that Metal is aimed at reducing driver overhead on iPhones and iPads running iOS 8. Unfortunately, Mantle in its initial implementation is designed specifically for Windows, though AMD is leaving the door open to future development for OS X and Linux.

Closer to the metal graphics APIs have gotten a lot of attention in the PC graphics market in recent months. OpenGL is moving in that direction, AMD has Mantle, and Microsoft is emphasizing closer to the metal improvements in DirectX, its own 3D graphics API used in Windows.

The Mac needs help

Hopefully some of these improvements will eventually trickle down to OS X. Because frankly, the Mac could certainly use help in the graphics performance department.

It's no secret that a game will often run slower on OS X than the same game will on the same hardware running Windows (using Boot Camp).

As I said before, there are a lot of factors that can contribute to a Mac game's performance that aren't driver specific, such as the method used to convert a game's code to run on the Mac in the first place.

But there are significant foundational differences in the way drivers are managed on OS X that contribute to the problem. Apple controls OpenGL drivers for its operating systems. Vendors like AMD and Nvidia can work with Apple to make improvements that yield better performance, but Apple is the gatekeeper. Those changes get rolled out incrementally with new versions of OS X.

Apple is consistently several steps behind the working group that manages OpenGL, so the latest and greatest innovations to the technology Apple depends on are not in the latest versions of OS X. And sadly, that hasn't changed with Yosemite.

Ultimately, I hope that Metal is a sea change for Apple: That it yields such impressive performance improvements for iOS 8 gaming that it will force Apple to rethink the way it handles graphics drivers on OS X as well.

Ultimately, I'd like to see OS X get closer to the metal too. Because in its current state, OS X is a second-rate gaming system. Macs and Mac gamers deserve better.

Peter Cohen

Managing Editor of iMore, Mac and gaming specialist and all-around technologist. Follow him on Twitter @flargh

More Posts

 

11
loading...
0
loading...
56
loading...
0
loading...

← Previously

Structure Sensor review - a Project Tango competitor for iOS

Next up →

How to set an alarm with Siri

Reader comments

Improving graphics performance on OS X: Is Metal the answer?

5 Comments

Does anyone know how many simultaneous parallel-data compute processes are possible on the A7? I can't seem to find this info anywhere in the docs.

To answer your question, I think implementing Metal for the Mac would be awesome but that would likely mean transitioning the Mac to use Apple's custom A-series processors. I know many think this will never happen but knowing Apple, I wouldn't be surprised if they did.

I'm not saying it won't happen, I'm saying that I hope it doesn't happen. There is still a reason to run bootcamp and I don't think using an A7 would allow for dual booting windows.

Mac does need some help in the graphics department. A lot of times it comes down to weak graphics cards with no way to upgrade them. At times it is the games themselves. Still at other times it is the drivers for the video cards. Still, drivers can be fixed, games can start being more optimized, but none of that matters in the end if you are still using weak graphics cards.

Great article Peter and thanks for expanding on why things are the way they are on OSX. I put as much money as I could into my MacBook Pro last fall with the intent of gaming along side work but unfortunately time has not allowed me to play much. That is starting to change and I want to get back to WoW and maybe STO down the line as well as some console ports from Steam. I use Parallels daily for work purposes so I can have the best of Windows and Mac at the same time. I am going to see how my gaming goes and though I've never used it, I may start using Boot Camp to get that improved performance.