Apple Pro Apps & Metal

Apple Pro Apps & Metal

metal icon


Disclaimer: Nothing in this article is a stolen secret. All information is well documented public information. The purpose here is to clarify a highly technical issue, to help common end users to grasp how the Metal API relates specifically to the Apple pro apps.

There is question about when, or even if Apple’s pro apps will be re-written to take advantage of Metal. Specifically Final Cut Pro X and Motion 5. As a retired UNIX Advanced Certified Engineer, and long time IT consultant and technician, I’ve done a lot of research, double checking my facts. My sources include the Metal online documentation, several third party plugin developers, and others. So, nothing here is highly secretive from Apple or anyone else. Just public information, deciphered for the lay-person, in my own words, no one else is responsible for this blog post or its contents but me. No NDA or confidential information has been breached here, so let's chill on that.

I am relying on a common and long held speculation that Apple's pro app development team can work directly with the GPU driver development team, to get things fixed, added, modified in the drivers. There is no documentation for this directly, but it seems to be very common knowledge in the third party development community, and sort of obvious because Apple's own apps can be more efficient then third party apps, who's developers depend on the Apple supplied APIs to work with.

Before I go further, the term "framework" i
n this context doesn’t mean much. You can call Metal a framework or an API or a graphics driver model, they all mean the same thing.


What Is The Metal API

Metal is a low-level API for third party developers to access and control GPU resources, inside iOS and OS X, more efficiently, and more directly, and with less overhead (extra power to run itself). High-level APIs such as Open/CL come with fancy bells and whistles, but also with some overhead that effects performance. Low-level APIs are more efficient and operate faster. Metal is low level. Take that at face value for now.

Just for fun, let me quote the Metal Programming Guide;
“Metal provides a single, unified programming interface and language for both graphics and data-parallel computation workloads. Metal enables you to integrate graphics and computation tasks much more efficiently without needing to use separate APIs and shader languages.”

Yes, that’s pretty technical, but it simply means, Metal is an API framework for third-party developers. And it helps a developer use the GPU for more than just graphics data processing, but processing data normally handled by the CPU, to a degree.

Let’s go backwards for a moment; For many years Apple has used OpenGL (for GPU use) and OpenCL (for CPU and GPU use) API’s as the way for developers to access and manage CPU and GPU power for dealing with graphics. The Graphics Processing Unit is the thing that does all the heavy lifting and calculating inside your graphic card. They work very differently from a CPU, which is what the rest of your computer uses. It is specifically geared toward graphics generation and manipulation.

Using standard OpenGL, Core Image or OpenCL has some performance penalty over the absolute fastest processing the graphics card is capable of. Metal is like Apple's version of Vulkan. Metal and Vulkan both aim to reduce that performance penalty as much as possible to give developers access to the full potential of the graphics hardware. Metal replaces, in effect, OpenGL and OpenCL, as a way to access data processing on the GPU.


Does “Metal” Have Anything To Offer The Pro Apps?

Since Apple’s pro app developers have access directly to the GPU driver developers, they don’t have a need for Metal, immediately. They’re already getting the most power out of the GPU they can.

I was told by a very close source that there is a theoretical possibility that something in the Metal API framework could offer a new trick or coding technique to a pro app in the future. In which case that will be incorporated into that pro app’s coding. But us end users would most likely never notice anything, aside from some new fancy function or slight performance increase.

It is widely assumed that Apple's own
Pro App Developers have direct access to the GPU Driver Developers, so anything they need is done by the folks writing the GPU drivers. And thus Metal may not even figure in to the equation of making the pro apps as fast and GPU efficient as possible. As far as anyone can tell, they already are.


Why You May Never See A “Metal Upgrade” Of A Pro App

Adobe just recently released and update of their video software. In the PPro and AE Project Settings is a place you can select which method it uses to render video. The three choices are OpenCL, Metal or Mercury Software Only. This shows us that an application doesn’t have to be strictly OpenCL or Metal only. So maybe these two GPU access methods can co-exist. Or so it seems at this time.


PPro Rendering In Metal


IMPORTANT; if a plugin or app does use Metal, it can only run in OS X 10.11 and higher.

A test done by a friend showed when using Premiere Pro, which uses Metal now, that placing a Metal written plugin, along with an Open/CL based plugin, on the same clip, it renders and works just fine. And Adobe never made a huge deal about using Metal in their recent release. And even with PPro using Metal, Apple’s own NLE, Final Cut Pro X, is still more efficient at those tasks on a Mac than PPro is. Because Adobe's developers don't get direct access to Apple's GPU driver developers, one would imagine.

FCPX, as of this writing, from what we can decipher, still uses the OpenGL drivers and OpenCL at the moment. But that doesn't matter. Why not? Because, as previously stated, Apple's own developers are all working together. If the FCPX team finds that something runs slowly because of a problem in the OpenGL drivers, they can work directly with the OS X driver team to fix that, or find a work around.  Or the Driver team can implement specific functions that the FCPX team asks for to speed up certain tasks.
 

It’s not public knowledge to what level this has been done and Apple isn’t saying, but comparing the render performance of FCPX to PPro on the same hardware, it’s obvious Apple has done lots of work here.


Third Party Plugins

Third party plugins already written with Metal work just fine in FCPX and Motion right now (according to test run by a knowledgable colleague), so a huge "FCPX With Metal" update is not required. Several developers have told me the
will be looking to optimize their plugins with Metal in the near future. Thus we can anticipate some performance increases in that area of our workflows.


Conclusion

So as you can see, Metal will make
third party plugins and apps that work with Final Cut Pro X and Motion become more powerful and increase in performance. But you probably won’t see any upgrade branded as a full on Metal upgrade. Unless that developer wants to generate some marketing buzz. And there’s nothing wrong with that! Remember, Apple makes their own GPU drivers, they know the secret formulas no one else does. So you most probably won’t see a full on “Metal-ization” of Apple’s own software applications. And if/when it does happen to, it would be done behind the scenes, gradually over time, and not advertised blatantly, IMHO.