Low Level GPU Programming: the Future of Game Development on PC?


Low level and API-free programming seems to be the future of game development and graphics programming on the PC.

Do you know that graphic hardware on PC is limited to few thousand of draw calls per frame (around 2,000 to 3,000) while the number of draw calls on a console can be 10,000 up to 20,000?

According to Richard Huddy (AMD’s head of GPU developer relations), the limiting factor on PC is the performance overhead of the 3D API (mainly DirectX) while on consoles, game developers can use low level code to process more triangles than on PC. More render calls allow more creativity freedom for game designers. The solution would be to have a low level access to PC graphics hardware (direct-to-metal programming).

Either way, it looks as though DirectX’s future as the primary gateway to PC graphics hardware is no longer 100 per cent assured, especially when it comes to cutting edge graphics.

Maybe there’s an opportunity for an API like OpenGL: thanks to extensions, hardware vendors could offer new OpenGL extensions to have low level access to the GPU…

The best graphics driver is no graphics driver.

[source] | [via]

25 thoughts on “Low Level GPU Programming: the Future of Game Development on PC?”

  1. JeGX Post Author

    Another thought: imagine a console powered by recent PC graphic hardware… 100K draw calls per frame?

  2. fmoreira

    @JeGX good point!
    IMHO I think the right way for the API in the future is to provide easier ways to let developers distribute their code trough multiple GPUs/CPUs.
    I believe in a future where developers will target a compute farm full of powerful GPUs and CPUs that users can access trough a web interface.
    Image a Crysis2-like game running on your IPhone, Adroid or WP 🙂

    In such environment developers would then only need to target one architecture (several could be provided by the farm) and not multiple ones.

  3. jarik

    Masive scenes (>2000 objs) can gain huge boost (5x ?) just with proper API extensions running on current hardwer. Looks promissing.

  4. fastpathguru

    NDA/license fees required, I assume? You know, for the detailed documentation that would be needed to best the performance of the proprietary DirectX & OpenGL drivers…

  5. Psolord

    So why don’t they just do a Direct X that can accept more draw calls?

    How many draw calls was 3DFx’s Glide capable of?

    Also good luch on that direct to metal programming. Game developers do not even do a decent job PORTING games to PC, let alone writing specific code for it.

  6. Zibri

    Every middleware causes a huge performance hit (ask Android!)

    It’s obvious that direct low level calls are faster. Drivers and APIs came to life for the need of a standardization. Otherwise we would have NVIDIA or ATI games only (which I’m not sure it would be bad)

  7. Reavenk

    That’s rubbish. The whole point of the graphics API was to make sure that your logic didn’t need to be programmed for every metal by hand, and instead by the hardware vendor. Any graphics hardware in the future, even if a new architecture, could also interact with past built programs because they had to go through an interface.

    If you throw away framework and consistency, time and money budgets suffer, and then let’s see how great products turn out. Let’s not forget developers still use DirectX when programming for the XBox, so it sounds like he’s not addressing the right target.

  8. MaNiAc

    @Reavenk: Exactly. That’s why i mentioned the ’90s before!

    Do you guys remember when some games included drivers, setup.exe/config.exe and such? Do you remember those times we were praying like “omg i hope that new game will support my Tseng ET 4000 and my SB16!”

    APIs spare us, developers all that shit. Even middle-class hardware currently really IS more powerful than what most of the developers can optimally utilize – stripping away APIs/drivers won’t really change the world: unoptimized code will remain crap.

  9. Promilus

    It’s the same as languages… ASM is hard and you get hw specific binaries. With C++ you can get good speed (but still less than asm) and portable code so you can from one source code create binaries for many different processors. But pure C++ still isn’t enough… so we get Visual C++ and C# and many others. But more complex it becomes, less efficient code it generates. Why? Because it’s harder to compiler to interpret what programmers want with those arrays and variables and not always uses CPU in top efficiency. Ten years back drivers were rather small, APIs rather simple… it was easier to get max. out of hardware. Now you might do beautiful job on current gen GPUs, more pretty than anything on consoles. But that would require direct access to hw (ctm) and a lot of skill. Well… coders are lazy nowadays so low level programming isn’t going to bloom anytime soon.

  10. FattSlice

    Regardless of how many “draw calls” consoles are “capable” of, it doesn’t matter, they are far to hardware limited to actually handle that much processing, I mean has anyone compared cross platform graphics lately? Console graphics are HORRIBLE by comparison, trilinear filtering and 2x AA anyone?

  11. Mars_999

    I been saying DX is a dog for years, all the DX nut jobs, no its fast your doing something wrong… Bah eat crow…

    Anyway I am for whatever gets us the best IQ and FPS on the hardware gamers spend their hard earned money for.

  12. jK

    Another point of view:
    Somehow it doesn’t wonder me to hear such thoughts by ATi …
    First they spend less work in their OpenGL drivers and now they come with such attempts. IMO they just want to save money.
    Or anyone else asked himself why they favored to drop the 3d APIs as a whole instead of recommend better ones (like OpenGL is)?

  13. Promilus

    @jK – I think you missed the point here. As Huddy said there’s a lot of API overhead and CPU involvement in PC games. That is true. But… the solution is totally different from what he claims. Low level API or no API isn’t golden path. The best way to deal with the situation is to create API and HW that allows as much GPU only scene setup as possible. I guess that’ll requite some pretty good coherent cache and large memory, but hey – isn’t that what they (gpu vendors) do to bring better gpgpu solutions?

  14. jK

    You are correct with moving as much as possible scene setup to the GPU is the future (e.g. already possible via render to buffer & conditional render).
    Still I don’t think Huddy mentioned this topic without any hidden agenda.
    Something he wants can (and is) done on long living video consoles (programmers for those even have to live with more exotic hardware setups), but on PCs drastically changing interfaces with each gpu generation are just impossible to handle. You would have to write 4-10 different render implementations for your engine.
    And Huddy knows this, still he mentioned it.
    To me it sounds like ATi _dreams_ to move work (and costs) from their team to the developers.

  15. c00ler

    Limitation on PCs not on consoles ? Why ??? I think that’s really simple :

    If you take, just, life cycle of a PC card vs a console the answer is quite logic, we change graphic cards on pc every 2 years (more or less for others), for a console, it’s 5 years at least, for example (Xbox360 since 2k6 = 5 years) and new consoles are for around 2015.

    nVidia or AMD can’t buy cards every 5 years, this is why in PCs there’s such limitations (Drivers) and such amount of models (460/450/580/590/550….)

    There’s no hope that one day they really unify drivers/architectures so that game developers can write a same code for all platforms and the big looser in the end is the consumer as usually 😀

    This is why now a days, we prefer a console at 400$ for 5 years than a pc at 700$ for 2 years.

  16. DrBalthar

    Sorry to see that Huddy is talking crap like that, he was such a knowledgable guy in the past what happened to him I don’t know he turned too much into a marketing guy. It is not the API where time is lost it is the driver (or driver model). On a console there is no phat OS running in the background so the driver doesn’t need to care up other processes and applicatoins running at the same time (stability and context switching is of no concern). So switching to OpenGL will not help at all since you will end up in the same situation. Actually OpenGL is even further behind since its state management is utterly shit!

  17. mamdxl

    most console operating systems are just custom variants of Linux Operating system. Because it is free and free from any licensing fee.

    Consoles use modified OpenGL API with other helper libraries. A very old console can run fairly new game effiently. because they use Linux + OpenGL combined software system.

    Direct3D is actually bull brain washed Windows shit. Which skips feature check by stubing functions to make games perform better.

    Most Windows implemented shits do not have any standards. They are made for money making purposes.

    In reality OpenGL performs better with proper hardware and software combination becuase it is designed just like the way hardware works, while on the other hand Direct3D is disigned in a way which has moved way from how hardware works, which causes overhead.

    The truth is what, you do not know about.

  18. DrBalthar

    @mamdxl Blah, blah, blah on which planet are you living. XBox360 is using XNA (which is DirectX9c + some extra). And most Xbox360 perform and look better than PS3. Even PS3 is not really OpenGL it is more a variant of OpenGL|ES (a finally cleaned up version with all the crap removed). Dreamcast was a variant of WinCE. Better get your facts right dude. And Linux don’t make me laugh Linux and 3D graphics it the worst of all worlds half of the time it is not working! Or drivers are shit and every time you upgrade X11 gets brokken again!

  19. jK

    just for the facts:

    PS3 has 3 interfaces:
    * OpenGL|ES 1.0 + a few 2.0 extensions
    * PSGL (~OpenGL|ES + custom NV extensions)
    * libGCM (extreme low level API ~= no driver; DirectX-like)
    On the other consoles it is similar.

    You have to know that libGCM is the most used one, and it is what Huddy meant with “no driver”.
    The OpenGL|ES interfaces are preferable for cross-platform games and/or `casual ones`. Games with high-end graphics use the low level APIs.

    And yeah, no video console uses linux. Just old PS3 _supported_ it (support != using it as default OS for running games etc.). If they would, they would have to publish the source code of their drivers (PS3-linux had NO 3D support!).

  20. Promilus

    @jK – I am unsure if I get it right, but I always thought there’s basically only one API for PS3.
    It’s OpenGL ES 1.0 (and 1.1 ext) + nv cg tools + library named LibGCM which gives programmer direct access to RSX. What I mean… PS3 uses light version of OGL (and fast) plus fancy shaders through cg plus close to hw solution so you can power hungry fragments of code in asm like (for graphics) environment – on the most basic hw functions.
    That’s how I see it.

  21. mamdxl

    we can’t judge other systems sitting in front of a computer. we do not know what is going on in the production stage.

    Most console developers did not use propriety Operating Systems developed by others for their systems just because it is costly to them and OS developers do not tend give you the code and degree of freedom to adjust the code to match the actual console hardware.
    That’s why console developers tend to use free unix family (At the moment Linux is the supreme unix system) of Operating Systems and modify it and make it their own for their consoles.

    Do not call OpenGL ES as not OpenGL, it is OpenGL but lightweight. Console developers do not need full blown OpenGL for their systems because console graphics processing units are not that capable like normal computer graphic hardware ( console graphic hardware designed to be power efficient by cutting shader looping and variability in the shaders ). The mobile phone you use to talk to others as well as to play games all uses OpenGL (ES, that means embedded version).

    if you install Computer Linux OS on a console then you do not get all the features, because underlying hardware is different ( you need to develop driver for it)

    Windows and other computer Operating Systems all have mess related to 3D (if you do not know what you doing and if you do not install driver properly then system is screwed up).

    In Windows world everything is rigid, you do not update your graphics server software, so there is no reason to get your 3D broken.

    In Linux world everything keeps flying, you updating every part of you system ( you are not waiting for the next Windows release)

Comments are closed.