I tried to use glShaderStorageBlockBinding with llvmpipe, but the function does not seem to exist.
nm /usr/local/lib/libGL.1.dylib | grep ShaderStorageBlockBinding
0000000000641800 t __mesa_ShaderStorageBlockBinding
0000000000641780 t __mesa_ShaderStorageBlockBinding_no_error
000000000042c480 t __mesa_marshal_ShaderStorageBlockBinding
000000000042c450 t __mesa_unmarshal_ShaderStorageBlockBinding
Did I miss something?
System: SDL2+glad gl loader on macos, custom mesa installation with brew with the following adjustments:
On Linux, libGL often exports the entire API directly. On other platforms, only a “core” API is exported from the DSO and you need to use the platform-specific *GetProcAddress function to obtain pointers to functions which were added in later OpenGL versions or in extensions. You can do this explicitly or use a loader such as GLEW, GL3W or GLAD to do this for you.
The fact that the MacOS libGL has a function __mesa_ShaderStorageBlockBinding but not glShaderStorageBlockBinding indicates that the function is implemented but you need to use a loader to access it.