Current development documentation | Source snapshot: 2026-10-31 (dev)
MobileGL is an open-source desktop OpenGL implementation. It exposes desktop OpenGL through EGL, GLX, WGL and the macOS context APIs, tracks GL and EGL state, translates shaders and resources, and executes them through an OpenGL ES or Vulkan backend.
This documentation follows the MobileGL-cpp development tree. It describes a build-from-source project, not a stable release: the current core version is 26.10.0-dev, both backends report OpenGL 4.6 Core Profile, and compatibility is still being validated. The source repository also carries an end-user guide (userguide/) for installing and running MobileGL on Android, Linux and Windows.
| Goal | Page |
|---|---|
| Build the library | Getting Started |
| Understand the layers and the frontend/backend contract | Architecture |
| Choose DirectGLES or DirectVulkan | Backends |
| Run MobileGL on Linux, Windows, macOS, iOS or Android | Platforms |
| Select a backend, topology or driver workaround | Configuration |
| Check the implementation surface and known limits | Capabilities |
| Run unit tests, CTS, Piglit, POST or trace replay | Validation & Diagnostics |
| Read the development history | Development Updates |
MG_Implexposes the desktop API and host-context frontends such as EGL, GLX, CGL/NSOpenGL and WGL.MG_Stateowns context-local GL and EGL objects, bindings, validation and error semantics.MG_Pipeis the interface between frontend and backend: the frontend pushes the state it has accumulated as records, and the backend never reads frontend objects.MG_Backendrealizes those records on independent DirectGLES (Espryt) and DirectVulkan (Magma) implementations.MG_Remoteoptionally carries the records between threads, processes or machines, so the backend can run in a separate server.MG_Utilprovides shader processing, format and readback conversion, logging, loaders and self-tests.- Tools and Android integration provide driver POST reports, trace replay, Piglit and VK-GL-CTS harnesses.
The normal flow is application -> host frontend -> MG_State -> MG_Pipe records -> selected backend -> GLES/Vulkan driver. See Architecture for the layers and their ownership rules.
| Topology | Shape |
|---|---|
monolith (default) |
Frontend and backend on the application's GL thread. |
inproc |
Backend on a second thread of the same process. |
spawn |
Backend in a separate server process, on the same machine or another one. |
The two split topologies need a build with the split layer, which is on by default in the development tree. See Configuration and MG_Remote.
The project is still a development build. Both backends report OpenGL 4.6 Core; the remaining work is closing the last 4.6 gaps, conformance, performance, and the multi-client server mode. Reporting a version is not a conformance claim: use the validation tools and the backend-specific notes before treating a result as portable.
MobileGL is distributed under the GNU LGPL v3.0. Bundled third-party components retain their upstream licenses.