Closed yshui closed 7 months ago
ABIs for other platforms are defined by the platform vendor and TBH, this document is no longer relevant - it is nearly two decades old. De-facto the OpenGL ABI for Linux is defined by Mesa, who provides the libraries that link with open source drivers. This is kept around only for historical purposes and I will tag it accordingly.
In the past, Microsoft's OpenGL ICD client library only provided OpenGL interfaces up through OpenGL 1.2 and a few extensions. I don't know if that's still the case in modern Windows OS, though. For Android you use OpenGL ES as supplied by Google.
@oddhack Thanks for the answer.
De-facto the OpenGL ABI for Linux is defined by Mesa.
Nowadays it's probably defined by libglvnd? Since most applications are linked against that instead of mesa. And libglvnd does export a different set of symbols.
Best to ask the Mesa folks directly. I'm not really educated on the current state of the Linux OpenGL stack.
Catching up on email: Yes, the ABI is effectively defined by GLVND (the OpenGL Vendor-Neutral Dispatch Library) these days. It serves as the equivalent of the Vulkan loader for OpenGL and OpenGL ES, as well as the GLX and EGL window system bindings on Linux. Some good references for GLVND in case Google lands anyone here in the future:
Official GLVND repository, with quite a bit of relevant documentation in its Readme.md:
https://gitlab.freedesktop.org/glvnd/libglvnd
GLVND is based on roughly the design outlined by Andy Ritger's new Linux OpenGL ABI proposal document:
https://github.com/aritger/linux-opengl-abi-proposal/blob/master/linux-opengl-abi-proposal.txt
The ABI defined here specifically say it's "OpenGL Application Binary Interface for Linux". I would like to know:
(Some context, I was trying to find what symbols are guaranteed to be exported by libGL when I found this ABI specification, which is helpful. Since my code runs on more than just Linux, I'd like to know if this info is available for other platforms as well.)