Huddy: "Make the API go away" [Edit: He wants a lower level API available too.]

fellix

Veteran
Farewell to DirectX?
Despite what delusional forum chimps might tell you, we all know that the graphics hardware inside today's consoles looks like a meek albino gerbil compared with the healthy tiger you can get in a PC. Compare the GeForce GTX 580's count of 512 stream processors with the weedy 48 units found in the Xbox 360's Xenos GPU, not to mention the ageing GeForce 7-series architecture found inside the PS3.

It seems pretty amazing, then, that while PC games often look better than their console equivalents, they still don't beat console graphics into the ground. A part of this is undoubtedly down to the fact that many games are primarily developed for consoles and then ported over to the PC. However, according to AMD, this could potentially change if PC games developers were able to program PC hardware directly at a low-level, rather than having to go through an API, such as DirectX.
 
What a great, insightful article and very relevant to several ongoing discussions here ...
 
It's probably in AMD's best interest that API's like Direct3D and OpenGL/OpenCL stay around.
 
Not really. AMD already offers a complete platform (CPU+GPU) and has been for years. Customizing apps to their platform without having to go through generic API layers would be incredibly beneficial. Nvidia has already subverted the transparency an API was supposed to bring by paying cash to developers/publishers to tailor apps to their hardware. Why are people suddenly offended when AMD thinks of taking the next logical step? I even recall many people say AMD should at least do the same as Nvidia's TWIMTBP, why the about face now?
 
Not really. AMD already offers a complete platform (CPU+GPU) and has been for years. Customizing apps to their platform without having to go through generic API layers would be incredibly beneficial. Nvidia has already subverted the transparency an API was supposed to bring by paying cash to developers/publishers to tailor apps to their hardware. Why are people suddenly offended when AMD thinks of taking the next logical step? I even recall many people say AMD should at least do the same as Nvidia's TWIMTBP, why the about face now?

I remember the early days of hell dude. when 3dfx had glide , nvidia had something , there were software renderers , power vr had something else . It was nuts and so many things didn't work.

I will take a single api with nvidia and amd both playing fair for the most part
 
Why are people suddenly offended when AMD thinks of taking the next logical step?

I'm not offended, but what makes you think AMD will suddenly release a competitive environment for software developers (compared to Intel or Nvidia)? I think one of AMD's major weaknesses is their development tools. API's like Direct3D and OpenGL/OpenCL mitigate that weakness.

To better illustrate what I mean, what's essentially the only reason to use OpenCL over CUDA? The reason is clearly to reach a larger audience (i.e. not be limited with one vendor's hardware). But if your target audience only has Nvidia hardware, you'd be crazy to pick OpenCL (even with the extensions Nvidia has released for it) over CUDA. Do you think that AMD could realistically create and maintain an API competitive to CUDA? In my opinion, "OpenCL with extensions" hasn't been a great answer from AMD (at least for the time being).

I also want to make clear that this doesn't mean I think OpenCL is useless (quite the opposite). It just means that if things become a war of vendor-specific API's, I'm not betting on AMD.
 
I've been pushing for this for years in discussions with all the IHVs; to get lower and lower level control over the GPU resources, to get rid of the serial & intrinsic driver bottleneck, enable the GPU to setup work for itself as well as tear down both the logic CPU/GPU latency barrier in WDDM and the physical PCI-E latency barrier to enable true heterogeneous low-latency computing. This needs to be done through both proprietary and standard means over many years going forward.

I'm glad Huddy goes out and in public talks about it as well, he get's it! And about time that an IHV talks about this.

This is the inevitable, and not too far, future and it will be the true paradigm shift on the PC that will see entire new SW ecosystems being built up with tools, middleware, engines and games themselves differentiating in a way not possible at all now.

- Will benefit consumers with more interesting experiences & cheaper hardware (more performance/buck).

- Will benefit developers by empowering unique creative & technical visions and with higher performance (more of everything).

- Will benefit hardware vendors with being able to focus on good core hardware instead of differentiating through software as well as finally releasing them and us from the shackles of the Microsoft 3 year OS release schedule where new driver/SW/HW functionality "may" get in.


This is something I've been thinking about and discussing with all parties (& some fellow gamedevs) on different levels & aspects of over a long period of time, should really write together a more proper blog post going into details soon. This is just a quick half-rant reply (sorry)

The best graphics driver is no graphics driver.
 
I remember the early days of hell dude. when 3dfx had glide , nvidia had something , there were software renderers , power vr had something else . It was nuts and so many things didn't work.

I will take a single api with nvidia and amd both playing fair for the most part
I remember quite well.
The issue is there is no playing fair anymore when all an IHV has to do is pay a developer or publisher to subvert the supposed transparency an API brings to tailor the app to their hardware. Things were a lot more messy back then because no one offered a complete platform to consumers. In fact one of the more successful players SGI made it work by offering complete platforms. Incidentally out of them (a complete platform vendor) came one of the most popular APIs of all time: OpenGL.
 
Devs and IHVs here might work together for a common goal but they might be doing it for *very* different reasons :cool:
 
I agree with the need for such an API and have been hearing the same request from other developers as well.

It's not totally clear though what level of forwards/backwards compatibility is required in practice by game developers. Obviously having every SKU require a custom path isn't going to be acceptable, but maybe each hardware generation? Sucks a bit for gamers who upgrade their GPUs though and now the game doesn't run... Fundamentally the "legacy" cost has to be paid somewhere. This-generation consoles have simply ignored the problem (somewhat laughably and to a significant amount of complaint), but it's not clear that's acceptable on PCs.
 
I guess they could've just grab linux kernel and tailor it to let games access the hardware via ultra thin API.
Developers could then ship their games on a bootable medium containing both the OS and the game.

Boot & play! :smile:
 
In terms of performance its the right answer, however in terms of development cost and resources its a different matter. Abstraction are designed to trade performance for ease, its why we don't code everything in ASM and why we have OS and drivers.

But different hardware paths is something most games and engines are used to, we already have 3 or more so adding a few more isn't that much more work *assuming* their is the backup from the IHVs themselves. Its also something we have dealt with through the game development era, its has not been uncommon to have had to support many more hardware platforms than the 2 or 3 we would be talking about now.

Legacy issues are a 'solved' problem, as used on all the consoles and indeed on PC for older games; emulation. Already PS2, Xbox, DOS, Glide, N64, etc. are all supported using emulation tech and with the open specification required for low level implementations this would be considerably easier.

We currently have 3 paths in our PC renderer (OpenGL), Intel, AMD and NVIDIA. Currently the majority of that code is shared, with perhaps 20% (numbers out my arse so rely on them as such), we also have two completely custom render paths for PS3 and 360, if there was the potential (and appropriate cost/benefits) we could add two paths for high end AMD and NVIDIA parts (say AMD 5x00 6x00 and Fermi based NV).
As each chip family share a lot of register level similarities, its not hard to follow the small differences that appears.

To make that work, we would want a micro-code compiler for shaders (takes some high-level language and produce microcode). Spec level descriptions or a low level API for the base platform with descriptions of the changes over the lifetime including access to changes well before new variants appear (we would need seeds of new cards and specs at the same time as the internal driver teams, to produce patches before a new chip is released).

Its often said to be similar to writing your own driver, but this just isn't true. Drivers are hard because they have to support lots of apps they can't change. When your in control of the app as well, you only need to support the bits you use, which is often quite a small subset.

Its hopefully obvious that it will cost more than supporting higher level API and if it doesn't increase income, thats less profit from the PC side of the game.
So how would we recoup the cost?
  • Make PC games the same price as Console titles (they typically sell for $10-20 cheaper), but this could be argued as a high end game tax on the lower end gamers.
  • It perhaps could be offset by more sales, would more gamers buy PC titles if they were noticeable better than now and the console editions? Without hard facts its hard to know, it brings in the questions of DRM, piracy, how many PC gamers etc. We know some PC titles do brilliantly well (BF2 and 3 do/will do amazing numbers on PC) whats harder to tell is whether they do well on PC because they show the love they do for it or vice versa.
  • Paid DLC is another options - would high end gamers pay $10 for a high end pack?
  • IHV subsidy?
  • Loss leader- contrary to many forumites beliefs PC is a loved platform among many developers, PC version often exist as loss leaders for the consoles. Higher res etc. make nicer screen shots and generate a lot of hype (BF3 videos are the perfect examples at this time), the PR benefits are often able to recoup the costs of investing in the high end PC version.

Another point, maybe that we have no choice?
The wheel of reincarnation is spinning and what was once SW then HW is swinging back to SW, we might have no choice but to write everything again in SW and then the GPU just becomes another supported platform as it compiler, OS, CPU etc. at the moment.

Obviously this is just a discussion... we don't have the option at the moment but its an interesting thought if we did.
 
Last edited by a moderator:
The question is rather why do they need performance when thats the easyest way to increase with next generation graphics cards and procesors. :?: (Imagine 6850 or gtx460 on 28nm. ;))
PC was always about brute force with all the hardware around it. On top of that hardware vendors dont care about piracy as software developers.
 
The question is rather why do they need performance when thats the easyest way to increase with next generation graphics cards and procesors. :?: (Imagine 6850 or gtx460 on 28nm. ;))
PC was always about brute force with all the hardware around it. On top of that hardware vendors dont care about piracy as software developers.

Perhaps, but having a hot, power hungry PC with a blood-thirsty, noisy graphics card only to see it being used at about 10% efficiency versus consoles is kind of, well, pathetic. Note that my PC is not power-hungry by any means: I have a quad core PC with 4Gb of RAM and 5570 with 1GB of RAM, but I have yet to find a game that runs better than on a console even with the same resolutions. Sure, sometimes I can run at a higher resolution and/or higher textures, but the framerates keep sucking.

So yeah, this topic has me interested, as it explains a lot.
 
Perhaps, but having a hot, power hungry PC with a blood-thirsty, noisy graphics card only to see it being used at about 10% efficiency versus consoles is kind of, well, pathetic. Note that my PC is not power-hungry by any means: I have a quad core PC with 4Gb of RAM and 5570 with 1GB of RAM, but I have yet to find a game that runs better than on a console even with the same resolutions. Sure, sometimes I can run at a higher resolution and/or higher textures, but the framerates keep sucking.

So yeah, this topic has me interested, as it explains a lot.

I think no low level voodoo magic will help your 5570 to turn into console killer. :p
 
PC was always about brute force with all the hardware around it.

No it wasn't, most consider the golden age of PC development, between Doom and say Quake 3. And in the era that code extracted massive performance out of the hardware, from software tricks (like perspective division every 16 pixels) to driving 3DFX via glide or mini-GL and other via custom APIs.

Indeed in some-ways this suggestion that Richard has brought up, is just going BACK to the golden days of PC gaming. Multiple HW specific APIs, to the metal level coding (can you imagine anybody on PC today, hand pipelining as the Pentium required?)

The question is why that level of care for PC has reduced?
Is its simply to the metal access or is it financial?
 
Seriously, is it April 1st already?

The DirectX API has its limitations, but AMD/ATI owes a great deal of their recent success to its prevalence.

If this was ever to happen then NVIDIA and quite possibly Intel will be all over AMD. NVIDIA has the track record with API development and support and as underhand as NVIDIA can be they have brought TWIMTBP, PhysX/APEX, CUDA and OptiX, SceniX, CompleX related technologies to the market and provided many developers an extraordinary amount of support where required. Look at the latest Unreal tech demo of evidence of what they achieve. AMD would also need to be very careful of Intel as it has significant resources and could quite easily reignite Larrabee development any time it chooses and come up with their own competing system.

From recent experience AMD struggle to bring anything to the table in regards to OpenCL or anything quite as substantial as CUDA, they are all mouth and no action. They design beautiful hardware though, no criticism there. How about AMD backup their claims and release a tech demo showing what can be achieved on current hardware?... but please nothing like the last one, that was just embarrassing.
 
Back
Top