Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

Jyby

Suspended
Original poster
May 31, 2011
720
617
I wonder why apple chose not to include Metal (the OpenGL enhancement for iOS in Yosemite).

I thinking gaming on the mac welcomes such a boost in performance.
 
I wonder why apple chose not to include Metal (the OpenGL enhancement for iOS in Yosemite).

I thinking gaming on the mac welcomes such a boost in performance.

Because Mac's don't have an A7 processor probably. It seems closely linked to the bare metal (processor core).
 
I wonder why apple chose not to include Metal (the OpenGL enhancement for iOS in Yosemite).

I thinking gaming on the mac welcomes such a boost in performance.

Because Metal is specific to the design of Apple's chips. Macs have Intel, AMD, or Nvidia graphics chips.
 
"Metal" requires also new APIs, which means that all OpenGL apps are incompatible with "Metal". "Metal" removes the OpenGL overhead.

This makes more sense. I don't think it has much to do with the chips.

But you have a point. I think it would still have been in Apples favor to get the ball rolling sooner than later. Like they did with multithreading back in early WoW days.
 
Because Metal is specific to the design of Apple's chips. Macs have Intel, AMD, or Nvidia graphics chips.

Have you actually looked at the APIs or are you just 'assuming'? From what I see, Metal is very similar to OpenGL with bindless restrictions + some DX11 stuff. It also seems more restricted. No reason why this should not run on OS X, and porting from OpenGL seems fairly straightforward. But not everything can be ported. I found no mention of multiple shader stages which are present in OpenGL...
 
Have you actually looked at the APIs or are you just 'assuming'?

I know for sure. (As in that is not a guess.) And it's also not just my opinion.

Metal removes many of the things required to adapt to different types of GPUs in favor of just assuming an A7 GPU.

It's possible those sorts of things could be added back into Metal in a future release, but likely not. Metal's compute language, for example, is pretty much OpenCL with compatibility for different GPUs removed. So if you want Metal for Mac, you've pretty much already got it in OpenCL.
 
This makes more sense. I don't think it has much to do with the chips.

But you have a point. I think it would still have been in Apples favor to get the ball rolling sooner than later. Like they did with multithreading back in early WoW days.

It actually does have to do with the chips. Since Metal basically replaces the existing OpenGL layer, the GPU manufacturers have to rewrite things for their parts. Apple can do it for iOS devices (since they make their own chips), but Intel, AMD, and nVidia would have to rewrite drivers for their GPUs. Also, game developers will need to rewrite for Metal as well. Apple can do a lot more on the iOS side in terms of making the transition easy than it can on the Mac side of things.
 
The bigger issue is the design of metal is directly linked to the design of the chips. It's not a high level API like DirectX or OpenGL. That's the whole point. It lets developers wring out every bit of speed possible by working as close to the A7 as possible.

The basic problem is writing directly for an A7 is not the same as writing for an NVidia GPU or an AMD GPU.

There is an API that makes speed trade offs in favor of writing for any kind of GPU. That's OpenGL.
 
I know for sure. (As in that is not a guess.) And it's also not just my opinion.

Metal removes many of the things required to adapt to different types of GPUs in favor of just assuming an A7 GPU.

Can you provide some examples? Because I really can't see anything A7-Specific in Metal. For me it looks like a generic low-overhead graphics API.

Metal's compute language, for example, is pretty much OpenCL with compatibility for different GPUs removed.

How is the compatibility for different GPUs removed?
 
It actually does have to do with the chips. Since Metal basically replaces the existing OpenGL layer, the GPU manufacturers have to rewrite things for their parts. Apple can do it for iOS devices (since they make their own chips)

It's true, of course, that Apple does a fair bit of design work in putting the A7 (et al) together, but the GPU isn't their own creation - that comes from PowerVR, thus far. In the A7's case, I believe it's the PowerVR G6430 core they're using.
 
It needs it more than iOS, that's for sure.
Why? Macs still have much better graphics processors and more CPU headroom for OpenGL overhead.

The benefits for iOS devices is definitely more pronounced due to the limitations of their hardware, but also because of its consistency; Macs meanwhile have GPUs with a wide variety of different capabilities, including bad Intel GPUs, the more recent, much better, ones, NVIdia GPUs, AMD GPUs and so-on. Developing Metal for a single GPU platform is definitely going to have been much easier. They could always expand it later I suppose, but personally I don't think Metal, like Mantle, will actually last; IMO they're both intermediate APIs that should spur DirectX and OpenGL into making the same improvements to reduce overhead and let the GPU do more, I just hope Apple will work harder to keep OpenGL at the cutting edge on OS X.
 
Why? Macs still have much better graphics processors and more CPU headroom for OpenGL overhead.

.

Because the performance gap between windows and Mac gaming is still significant, unfortunately. Also, from a purely self-centered point of view, OS X is where I do most of my gaming, so that's where I want to see speed improvements.

Macs may have better graphics processors, but the games are also much more demanding, and Apple loves to put weak graphics in their Macs. Any attention given to graphics performance on OS X would be much welcome, especially now during the slow transition to all-Retina.
 
Can you provide some examples? Because I really can't see anything A7-Specific in Metal. For me it looks like a generic low-overhead graphics API. How is the compatibility for different GPUs removed?

The pipeline is basically designed around the A7. It's also not designed to work with dedicated VRAM (there is no support for copying things to VRAM.) That's one reason it's so fast (it can skip the copy step), but that also means, at the very least it'll never work with discrete cards.

Apple could add those things back in, but it would negate the speed gains of Metal. At that point, you might as well use OpenGL or OpenCL.
 
Or maybe nvidia making nvapi available for OSX.

Super duper speed talking directly to the drivers, not all these wrappers ;)
 
Macs may have better graphics processors, but the games are also much more demanding, and Apple loves to put weak graphics in their Macs. Any attention given to graphics performance on OS X would be much welcome, especially now during the slow transition to all-Retina.
Apple haven't really shown much interest in positioning Macs for gaming though; they're happy to point to better performance when they can, but it's never been much of a priority, but for iOS gaming is a very big part of it.

Don't get me wrong, I'd love to see Macs actually compete on a level playing field vs rebooting into Windows or whatever, I just don't see Metal playing a part in it; it would take a lot more effort to port it for all the various configurations of Macs (or specifically, their GPUs), whereas OpenGL is likely going to do Apple's work for them on that front. Metal makes sense for iOS for now as it will give Apple another advantage over competing products, whereas if OS X did support Metal then it would most likely only bring them level with Windows.

Of course we're stuck hoping that OpenGL will get better, which has been an infuriating experience for the past decade as the API gets messier and messier while playing catch up to DirectX. I still hope they'll get their act together and do something major, and maybe technologies like Mantle and Metal will encourage that to happen at last.

Anyway, I just think that Metal isn't a long-term thing; it's a stepping stone until other technologies are ready to take over, as I doubt Apple really wants to be maintaining their own graphics API long-term.
 
Apple haven't really shown much interest in positioning Macs for gaming though; they're happy to point to better performance when they can, but it's never been much of a priority, but for iOS gaming is a very big part of it.

Oh believe me, I know. They couldn't care less. I understand completely why Metal is iOS-only, but as a frustrated Mac gamer I remain...frustrated. :)
 
Oh believe me, I know. They couldn't care less. I understand completely why Metal is iOS-only, but as a frustrated Mac gamer I remain...frustrated. :)

Metal wouldn't do anything for Mac gaming anyway in since games on Mac are discrete card oriented. :)

I don't think the read of "Apple didn't port it to Mac because Apple doesn't care about Mac gaming" is right at all. I think Apple would like to see it on the Mac. After all, if Metal could make things faster, that would be great for pro apps like Final Cut.

The reality is that Metal in it's current form doesn't make any technical sense on the Mac.
 
The pipeline is basically designed around the A7.

The Metal pipeline:

https://developer.apple.com/library...x.html#//apple_ref/doc/uid/TP40014221-CH7-SW1

The OpenGL pipeline: http://www.opengl.org/wiki/Rendering_Pipeline_Overview

As far as I can see, they are basically identical except metal lacking tesselation/geometry stages.


It's also not designed to work with dedicated VRAM (there is no support for copying things to VRAM.) That's one reason it's so fast (it can skip the copy step), but that also means, at the very least it'll never work with discrete cards.

I don't see how this is even remotely true. The MTLBuffer in Metal is basically the same thing as the OpenGL buffers, only with less bloat. It represents a region of GPU memory which can be mapped to the CPU memory by the driver. The only difference is that OpenGL has explicit buffer locking semantics (with glMapBuffer /glUnmapBuffer) while Metal's locking is implicit. On the other hand, Metal does not need explicit locking because the CPU/GPU synchronisation is clearly defined, see last section of the docs: https://developer.apple.com/library...j.html#//apple_ref/doc/uid/TP40014221-CH4-SW1

Also note that Metal is obviously designed with support for multiple graphical devices in mind.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.