Metal & SceneKit: Potential/Promise vs Reality

We've had what... 2 and a half years of Metal talk?


A7, A8 & now the A9.


Yet it appears to be slower than OpenGL, and render blending differently in Scene Kit.


Which I thought might be to do with the implementation and beta-ness (alpha-ness?) of SceneKit.


Today, I see the last 3 graphs on this site, demonstrating OpenGL on an iPhone 6S is faster than Metal.

http://arstechnica.com/apple/2015/10/metal-performance-in-os-x-el-capitan-sometimes-great-often-mixed/


So speed might not be Metal's strength, after all.


What else is it good/better at than OpenGL?


Why, at this point in time, should someone invest their energies into Scene Kit, Metal & Sprite Kit?


When will Apple engage in actively commumicating its progress (and lack thereof) with its game and rendering engines and technologies?

Replies

Metal was announced at WWDC 2014. That's not one and a half years ago.


Have you written in Metal? I don't think you could have, and still ask why you'd use it.

Try re-reading the 3rd sentence.

I don't know if Metal is slower than the alternatives or not. I'd like it not to be, but after using it, and the alternatives, it doesn't matter. If you can't say the same, then it's not for you.

Ok. Well done. Now try re-reading the last part of the 3rd sentence.


Then, if you're up to it, respond to one of the actual questions. This, to me, is the more pressing question:


"What else is it good/better at than OpenGL?"


Why?


Because it would appear that many of the claims for Metal don't hold up when it's used (and it is the default setting) within SceneKit.

It isn't a question of "Is Metal > OpenGL?"


rather, Metal has a few features which offer flexibility that isn't available with OpenGL, especially on mobile.


The framework you should compare for reference is Vulkan, not OpenGL.

Vulkan is not a choice on iOS, and is unlikely to ever be.


Metal has been pitched, promoted, promised and endorsed as superior to OpenGL ES on iOS.


Yet, within SceneKIt, choosing Metal is not without consequences that lead to inferior performance and quality of rendering when compared to using OpenGL ES.


Hence the question.

First, In your linked article, the plots show that metal on iOS9 is faster than OpenGLES in every test except fill-rate so your assertion that it is slower is questionable.


Secondly, the total performance of an app is usually a combination of CPU and GPU. Apple has always claimed Metal reduces CPU overhead and in that respect it seems to be a massive success on iOS9 (per the plots in the linked article).


Metal seems to fare less well all-around on OSX but that has only existed since WWDC 2015 so I think it's fair to chalk that up to it's "beta-ness".

Ok looking at the last 3 charts (the only ones showing iOS9 results):


Chart 1:

Manhattan - 40.1 OpenGL, 40.3 Metal. Winner: Metal

T-Rex - 80.4 OpenGL, 83.5 Metal. Winner: Metal

ALU - 212.0 OpenGL, 212.1 Metal. Winner: Metal

Driver Overhead - 201.6 OpenGL, 631.2 Metal. Winner: Metal

Chart 2:

Alpha Blending - 12986.0 OpenGL, 13060.0 Metal. Winner: Metal

Chart 3:

Fill - 7134.0 OpenGL, 6347.0 Metal. Winner: OpenGL


So yes, all iOS9 tests except the last one show Metal winning.

You mentioned OpenGL without specifying OpenGLES so I assumed you were talking about both OSX and iOS.

I did not comment on the blending issue because I don't know anything about it. If that was the main issue perhaps you should start a thread about that specifically.

Your first 3 are margins so slim as to be ties, surely you can see that!?


Driver Overhead is a theoretical win.


Chart 2 is also a tie.


Chart 3 is the only clear winner, and... most interestingly, the area in which all iOS devices suffer the most when pushing game art around (generally speaking).

Apple claims Metal is faster than OpenGL ES.

That does not appear to be true.



As to a separate question for blending differences between Metal and OpenGL, take a moment to read the entire series of questions and context. Right at the start I make the claim it's slower, and that it blends differently.


One of the reasons it's close to the performance of OpenGL (yes, I'm talking about ES!) is that I think it looks to be cheating on the blending.


If it weren't for the fact it's not doing the same blending it would likely be even slower, and likely suffer even more in a direct fillrate comparison, where it's already losing by nearly 10%.


Again, the context of this question is Scene Kit's use of Metal. In my experience Metal is not only slower in Scene Kit, it's also got issues with framerate locks, and uses a different blending approach. That's 3 strikes against it.


However... from these direct comparisons between Metal and OpenGL ES it's apparent that even outside of Scene Kit there's something blatantly at odds with the claims made by Apple. It's not faster.


The questions are about what Metal is good for, and why should it be chosen... you can contend the data all you like... you're just dodging all the questions.

I am pretty sure that Metal does not, and cannot make the hardware go faster.

The fill-rate and transformation rates are bound by the performance of the GPU.


The switch to Metal does two things.


1) The API places fewer demands on the CPU, so in some circumstances, this will improve performance. This is typically when the number of individual draw calls is so large it is overwhelming the CPU. Apple's claims of improved performance have always been qualified by this.


2) It means Apple and not Khronos is in charge of how the API is advanced.

While true, I don't think we can place we can place a number on what an API and language change permits. There is a human element to all of this, extreme in some cases, and in the case of deeeds, seemingly nonexistent.


Look at how people have adopted Swift, and how people feel about it. Metal is the same for some of us. The reason you don't see this is that the amount of people to whom Metal appeals in a similar fashion to Swift are very few. For example, the person who makes the only OS X-only 3D content creation app doesn't even care to use Apple-specific technology anymore.

let me know when you port a real library like lapack/plasma/openblas to that gpu