Nvidia Extension Shader Buffer Load


I’m new to this forum and english isn’t my first language so pls excuse mistakes :wink:

I study computer science and i have to give a presentation about Nvidias Bindless Extension.

see here: http://developer.download.nvidia.com/opengl/tutorials/bindless_graphics.pdf

I had no problem understanding Vertex Buffer Unified Memory and it’s benefit.

But i’ve got no clue what the advantage of using shader buffer load is. At the moment i think it’s something like this:
When you have used bindable uniform in your shaders you now can use this extension to fill the data of your shader with a pointer (which is also new to the Shading Language). This will improve the performance. Furthermore you can switch data faster.

I have to admit that i heard of OpenGl Shading Language the first time a week ago and i’m not an experienced opengl programmer.

I would be really thankful for any help :wink:

Been a while since I’ve read the NV_shader_buffer_load spec, and I haven’t used it near like NV_vertex_buffer_unified_memory, but IIRC one of the “big deals” was that you now had pointers, and could build/traverse pointers to linked data structures in the shading language.

Thank you, this already helps a lot.

Bindless graphics consists of two extensions: NV_shader_buffer_load and NV_vertex_buffer_unified_memory.

NV_shader_buffer_load provides a mechanism to read from a flat, 64-bit GPU address space from programs/shaders, to query GPU addresses of buffer objects at the API level, and to bind buffer objects to the context in such a way that they can be accessed via their GPU addresses in any shader stage.

The main benefits are:

  • avoiding CPU L2 cache pollution,
  • faster access/dereferencing,
  • ability to access arbitrary VBO from the shader in a CPU-like manner.

The last feature I used extensively in one of my applications. It enables “emulating” computational shaders in OpenGL even with SM4 hardware.

So this means when you use NV_vertx_buffer_unified_memory you also use NV_shader_buffer_load because this is where the mechanism to use the GPU address is defined?

and to summarize, I get:
-pointers in shading language -> linked data structures
-some kind of computational shaders (which means I can use the GPU as CPU?)
-better performance by avoiding L2 cache pollution

Can someone pls give an example of computational shaders? I found something like this: http://igoro.com/archive/how-gpu-came-to-be-used-for-general-computation/

Thanks =)

It is a question for you. :slight_smile:
Try to define in just one sentence what the main function of each extension is. Only if you can define something you understand it.

Shader Buffer Load does not introduce compute shaders in OpenGL, but alleviate their emulation along with transform feedback. In fact, that was what I used to access different vertex buffers from within the vertex shaders.

Compute shaders are part of D3D11 rendering pipeline. I used Shader Buffer Load (SBL) to change geometry in VS. Without SBL, you could access only textures as external sources of data. SBL enables using other buffers as well. Although you could use OpenCL or CUDA to do the same, the inter-API communication imposes additional (coarse) synchronization that yields lower performance for high number of small buffers.

It is a question for you. :slight_smile:
Try to define in just one sentence what the main function of each extension is.[/QUOTE]

Okay :slight_smile:
NV_shader_buffer_load provdides a mechanism to read from 64-Bit GPU address space. This enables the shader/programm to access data via the GPU address (which avoids L2 cache pollution).

NV_vertex_buffer_unified_memory provides a mechanism to specify the location of vertex data via GPU address. So you don’t need to bind buffers to the context anymore.

Your example really helped me to understand what advantage you get. I’ts my first contact with shaders and I wasn’t sure what was there before and what is really something new. :o

Thanks to all, now I feel well prepared for Tuesday :smiley:
In my first language german this will become a lot easier :wink:

Really nice people. I think I will browse here oftener, when I have questions about OpenGL.

Greetings Angelnoir

This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.