mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-02 18:08:58 +00:00
715ea35965
Differential Revision: https://phabricator.services.mozilla.com/D191282 |
||
---|---|---|
.. | ||
src | ||
.cargo-checksum.json | ||
Cargo.toml | ||
LICENSE | ||
README.md |
This is a port of the WPF hardware rasterizer code to Rust. That rasterizer is predecessor to the Direct2D rasterizer. Direct2D still uses a similar technique when run on hardware that does not support Target Independent Rasterization.
Design
The general algorithm used for rasterization is a vertical sweep of the shape that maintains an active edge list. The sweep is done at a sub-scanline resolution and results in either:
- Sub-scanlines being combined in the coverage buffer and output as "complex scans". These are emitted as lines constructed out of triangle strips.
- Simple trapezoids being recognized in the active edge list and output using a faster simple trapezoid path.
Bezier flattening is done using an approach that uses forward differencing of the error metric to compute a flattened version that would match a traditional adaptive recursive flattening.