The topic of Mantle, DX12 and various other API’s is popping up a lot recently, and just yesterday we’d discussed comments between ICE Team, Naughty Dog and other developers providing insights into their thoughts on the various competing offerings. Today we’ve a little more information as Cort Stratton and other developers have once again taken to Twitter, and there’s certainly a lot of insight to be gleaned from their comments.
@aras_p Many thanks for acknowledging libGCM; I was getting tired of breathless Mantle/DX12/AZDO articles failing to mention that part 🙂
— Cort (@postgoodism) June 2, 2014
@postgoodism @aras_p We can’t see libGCM (or GNM). I can’t point to it and say “hey, like this”. I would if I could. I’ve never seen it.
— Graham Sellers (@grahamsellers) June 2, 2014
if you’re unfamiliar with LibGCM it was an API used back on the Playstation 3, since we’ve seen the ‘next’ version of the API used inside the Playstation 4. The PS3 also had another API, the higher level PSGL, but most developers preferred to use libgcm due to higher levels of performance. The PS4’s also has two API’s for clarification, the first known as GNM which is a low level API, while the second is known as GNMX, which is a higher level API known to function much like say DX11.
Interestingly enough, AMD’s Graham Sellers jumps in and starts Tweeting to Cort, and says “We can’t see libGCM (or GNM). I can’t point to it and say “hey, like this”. I would if I could. I’ve never seen it.”
Cort Stratton points out he’s in the dark with Mantle / DX12 too by responding with “No worries; I can’t see Mantle or D3D12 either, or discuss/compare them intelligently.” He then tweets a second response and says “For the record, I’m not saying GCM/GNM are perfect, or that others are ripoffs. I see lots of great ideas out there!”
Adding to this, if you’d read the post from yesterday you might recall I’d placed a link to a blog entry from developer Aras PranckeviÄŤius where he’d gone into the pros and cons of OpenGL, which has taken a bit of a bashing recently, The interesting part for many is the last paragraph of his response, which he says:
“I’m actually quite happy that Mantle and upcoming DX12 has caused quite a stir of discussions (to be fair PS3’s libGCM was probably the first “modern to the metal” API, but everyone who knows anyting about it can’t say it). Once things shake out, we’ll be left with a better world of graphics APIs. Maybe that will be the world with more than two non-console APIs, who knows. In any case, competition is good!”
There were rumors floating about that Mantle was created as a kind of console like inspired API, and indeed some believe (although this is pure rumor) that AMD were offering it to both Microsoft and Sony. If you do a bit of googling around, other developers had previously discussed the Xbox 360, mentioning that it’s API had issues with it being fairly ‘high level’.
Jim Heji is a senior research Scientist at Electronic Arts, and Tweeted this back in April 2009 “On 360: CPU cmds to GPU -do- have cost. Issue is API. 100% fixable with API refactor – no HW flash needed. Blog, with instructions, coming.” In a conversation with Ivan-Assen Ivanov (who is the Technical Director of Haemimont Games) he’d said “I wrote an api for direct control of the gpu ring. Manual packet submission. Proves low/no cpu cost. Cert would hate it tho” with Ivan’s contribution to the topic being “Sounds good, but needs to be done by MS, right? Let’s hope they do something like that for some late-cycle graphics boost.”
It’s fairly obvious that the part where Jim Heji says that he’d “…wrote an API for direct control…” Microsoft wouldn’t like it, and they’d simply not pass the game through their quality testing. It would mean that the game / console could potentially crash out with dashboard updates in the future. It does however mean that issuing GPU commands (in other words, say getting the Xbox 360’s CPU to draw a scene) was quite a bit hungrier than it could have been, It’s likely that this is from the DX9 roots of the Xbox 360’s hardware.
Starting with the Playstation 3, it is completely and utterly possible to control the consoles command buffers manually and this wasn’t there at that point in the Xbox 360’s API life span.
Make of these exchanges as you will, but it’s fairly clear that Sony were one of the first to go ‘to the metal’ with their API structure, which likely demonstrates why the system improved so much in its life compared to launch. The PS3’s CPU was notoriously difficult to program and develop for too might I add.