15/02/2013 The useful functions for modern OpenGL 4.4 programming

If anything, at least Mantle created some discussions about graphics API but it remains that I believe it's a waste of AMD engineering resources that could have benefit their OpenGL drivers for example.

Looking at the published list of Mantle functions, Mantle API looks really thin compared to OpenGL API for example. However, Mantle targets only AMD Southern Islands onward, while OpenGL 4.4 core profile targets all OpenGL 3 / Direct3D 10 and OpenGL 4 / Direct3D 11 GPUs. If we consider OpenGL 4.4 compatibility profile, then the API covers all GPUs even made.

Let's compare what we can compare. What if we want to write a Modern OpenGL program for AMD Southern Islands and NVIDIA Kepler only. Then we only need a tiny subset of the OpenGL API that I have listed below.

It still appears that Mantle requires less functions. With a closer look we see that Mantle use state objects to group rasterizer, viewport, depth test states. State objects are a idea because every hardware vendor would want different packing but also because every single OpenGL program would use different packing. To write an efficient OpenGL renderer we need to consider the update frequencies and move every operations at the lower update rate possible. Packing states is requiring to update more often states that should not have change hence adding CPU overhead. So no thank you but I prefer to have no state object. However, what worked for me in the past (about 2007) was to use display lists to create immutable state objects that matched my program needs. I don't think I want to go this way in 2014.

So OpenGL has evolved, "revolution through evolution". If we really want to write low overhead OpenGL programs, we can. If that's not the case right now, my opinion is that the industry didn't put the effort in it because it has higher priority issues to resolve, essentially production issues which include supporting old consoles (PS3 and XBox, OpenGL 2.1 / Direct3D 9 hardware), cross compiling shaders, the development of mobile and the rise of WebGL.

OpenGL Samples Pack 4.4.1.2 released >
< OpenGL Samples Pack 4.4.1.0, with image templates
Copyright © Christophe Riccio 2002-2016 all rights reserved
Designed for Chrome 9, Firefox 4, Opera 11 and Safari 5