I just read “Google Continues Working On “Magma” For Mesa Cross-Platform System Call Interface” on Phoronix and didn’t get it. That made me realise my knowledge and understanding of these things is barely existent. I did write an MS paint clone on linux in C++ a really long time ago and the entire thing was with opengl (it looked like crap), but since then… nothing.
So my understanding is that the graphics card (or CPU if there’s no graphics card), writes to a component which is connected to a screen and every cycle (every 1/60 seconds if 60Hz) the contents are sent or read by the screen. OpenGL provided a common interface to do so, but has been outdated since… a while and replaced by Vulkan. Then there are libraries either built on top of are parallel to OpenGL. Vulkan can be parallel or use OpenGL if that’s the only one supported IIRC.
However, I’m not sure if OpenGL is implemented at the hardware level (on the graphics card), software level, or both.
Furthermore, I don’t understand where Magma, Meta, and MESA come in.
Maybe my core understanding is wrong or just outdated. I can’t tell. Can anybody eplain?
Thank you. I’ll ask questions here, but might find out more while reading the other answers.
So, SDL provides a window with an OpenGL surface. What is OpenGL? Is it an API spec that can have multiple implementations like the opensource implementation that is Mesa? Is DirectX 3D the same just with a proprietary implementation?@[email protected] answered this.And when you say “Vulkan is multi-threaded”, does that mean that the implementation uses instructions for drivers that target a multiple GPU cores? I would have expected the multi-threaded or parallelism aspect to be handled by the driver, not the driver client (in this case Vulkan or Mesa/OpenGL).
Anti Commercial-AI license
Yes, OpenGL is an open specification, it has multiple proprietary implementations, and an open-source implementation (MESA). DirectX 3D is a proprietary specification with proprietary implementations (and one open-source implementation in Wine), but it’s essentially the same graphics driver API as OpenGL.
OpenGL uses multiple GPU cores, but GPU is controlled by a single CPU core. GPU does most of the work of course, but for some operations, like uploading a lot of textures when loading a level, or drawing a dynamic geometry with a lot of triangles, CPU becomes a bottleneck.