Skip to content
/ mozangle Public

Mozilla’s fork of Google ANGLE, repackaged as a Rust crate

License

Notifications You must be signed in to change notification settings

servo/mozangle

Repository files navigation

mozangle

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.

Feature flags

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.

[dependencies]
mozangle = { version = "0.5", features = ["egl"] }

Updating ANGLE

To update:

  • Remove gfx/angle entirely
  • Copy a new version of it from mozilla-central
  • Apply any patches present in the patches directory
  • Run python3 generate_build_data.py
  • In the commit message, include the mozilla-central commit hash