[osg-users] [build] How to properly use the OSG_GL3_AVAILABLE CMake option?

Robert Osfield robert.osfield at gmail.com
Thu Nov 26 01:35:41 PST 2009

Hi John,

On Wed, Nov 25, 2009 at 9:02 PM, John Price <john.price00 at gmail.com> wrote:

> My project is still in development and has a long term objective. My view is forward looking, so I am interested in embracing gl3 as development progresses. I am primarily developing for nVidia hardware, and am particularly interested in nVidia extensions to gl3 that they refer to as "Bindness Graphics".
> nVidia states:
>        Bindless Graphics refers to changes to OpenGL that can enable close to an order of magnitude improvement in the CPU-limitedness         of graphics applications.
>        Bindless Graphics has the following desirable properties:
> •       The driver need not dereference a vertex buffer or constant buffer on the CPU in order for the GPU to use it.
> •       Relieves the limits on how many buffer objects can be accessed at once by shaders
> •       Buffer objects are accessed as C-style pointer dereferences in the shading language
> •       Allows for dependent pointer fetches, enabling more complex scene graph structures to be built into buffer objects providing significant new flexibility in the use of shaders.
> Measurements have shown that bindless graphics can result in more than 7x speedup!

I'm pretty curious about the bindless graphics extension, it would be
great to reduce the CPU overhead of making lots of fine grained OpenGL
calls.  The 7x speed up is very very unlikely to be something you'll
see though, my guess is that they probably had to really squeeze out a
contrived example to produce that type of bottleneck with the old
calls, with real world usage the speed up will far less and often will
result in no speed up at all as the bottleneck is more often fill rate
rather getting data to the GPU.  For you own app I'd aks the simple
question - is your bottleneck draw dispatch, if not then bindless
graphics won't make any difference for you.

Bindless graphics will complicate trying to manage code that works on
both bindless and non bindless as the extensions not only affect the
the GL calls doing dispatch of the data but also shaders, so you'd
need to keep multiple sets of shaders to handle the different
hardware/driver capabilities.

So I'm keen to see bindless graphics make it's way into the OSG to
help reduce the draw dispatch overhead, more important for GL3 now
that display lists are no longer supported, but we should be realistic
about the potential benefits/pitfalls.


More information about the osg-users mailing list