Thanks to Andon M. Coleman for the quick and clear answers.
First of all, I was wrong to assume my hardware supported thousands of bindings. Rookie mistakes, I took the defined value instead of the runtime one.
On my machine :
- GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS = 96
- GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS = 8
- GL_MAX_UNIFORM_BUFFER_BINDINGS = 84
Which is far from what I based my question on.
However, there is a mean to define multiple buffers in the shader :
A
{
B b[];
}
layout (std430, binding = 0) buffer A a[32];
The amount of maximum bindings must be known in advance but those buffers will occupy the bindings from 0 to 31.