Skip to content

Repository files navigation

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.

Start here

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

What MobileGL contains

  1. MG_Impl exposes the desktop API and host-context frontends such as EGL, GLX, CGL/NSOpenGL and WGL.
  2. MG_State owns context-local GL and EGL objects, bindings, validation and error semantics.
  3. MG_Pipe is the interface between frontend and backend: the frontend pushes the state it has accumulated as records, and the backend never reads frontend objects.
  4. MG_Backend realizes those records on independent DirectGLES (Espryt) and DirectVulkan (Magma) implementations.
  5. MG_Remote optionally carries the records between threads, processes or machines, so the backend can run in a separate server.
  6. MG_Util provides shader processing, format and readback conversion, logging, loaders and self-tests.
  7. 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.

Where the backend runs

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.

Project status

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.

License

MobileGL is distributed under the GNU LGPL v3.0. Bundled third-party components retain their upstream licenses.

Releases

Packages

Contributors

Languages