Mozilla’s fork of Google ANGLE, repackaged as a Rust crate.
[ANGLE] is an implementation of OpenGL ES.
Its official build system is gn
, from Chromium’s [depot_tools].
[mozilla/angle] on GitHub is a fork with some Gecko-specific patches.
[gfx/angle
] in mozilla-central is generated from that.
[update-angle.py
] runs gn desc
to extract information from the official build system,
copies relevant source files,
and creates moz.build
files for Gecko’s build system.
This repository imports a copy of the gfx/angle
directory.
The generate_build_data.py
script turns data from moz.build
files into a Rust source file.
(This script supports just enough of the moz.build
format for this specific purpose.)
Finally, a Cargo build script drives the C++ compilation with the [cc] crate based on that data.
By default, this crate only compiles the shader translator.
In Windows, the egl
Cargo feature enables the EGL and OpenGL ES implementations.
Although upstream ANGLE supports more platforms,
this crate only configures the Direct3D 11 rendering backend.
toml
[dependencies]
mozangle = { version = "0.1", features = ["egl"] }
To update:
gfx/angle
entirelypython3 generate_build_data.py