OpenGL extension NV.shader_buffer_store
This module customises the behaviour of the OpenGL.raw.GL.NV.shader_buffer_store to provide a more Python-friendly API
Overview (from the spec)
This extension builds upon the mechanisms added by the NV_shader_buffer_load extension to allow shaders to perform random-access reads to buffer object memory without using dedicated buffer object binding points. Instead, it allowed an application to make a buffer object resident, query a GPU address (pointer) for the buffer object, and then use that address as a pointer in shader code. This approach allows shaders to access a large number of buffer objects without needing to repeatedly bind buffers to a limited number of fixed-functionality binding points.
This extension lifts the restriction from NV_shader_buffer_load that disallows writes. In particular, the MakeBufferResidentNV function now allows READ_WRITE and WRITE_ONLY access modes, and the shading language is extended to allow shaders to write through (GPU address) pointers. Additionally, the extension provides built-in functions to perform atomic memory transactions to buffer object memory.
As with the shader writes provided by the EXT_shader_image_load_store extension, writes to buffer object memory using this extension are weakly ordered to allow for parallel or distributed shader execution. The EXT_shader_image_load_store extension provides mechanisms allowing for finer control of memory transaction order, and those mechanisms apply equally to buffer object stores using this extension.
The official definition of this extension is available here: