gecko-dev/gfx/wr/wrench
Andrew Osmond 9793f08b9b Bug 1581934 - Restore the calculation for a more precise picture local rect. r=kvark,gw
As it turns out, the difference between the snapped local rect and the
unsnapped local rect was not just that the former contained snapped
primitives and the latter contained unsnapped primitives, but also that
the former took into account surface inflation for primitives, the
entire clip chain instead of just the primitive's local clip, and
removal of culled primitives. As such, the picture's rects can be wildly
different, even if snapping has been taken care of earlier, and parts of
WebRender have come to rely upon this more accurate representation of a
picture.

Differential Revision: https://phabricator.services.mozilla.com/D46605

--HG--
extra : moz-landing-system : lando
2019-09-24 10:34:00 +00:00
..
benchmarks Bug 1528157 - Optimize GPU time for clip mask generation. r=kvark 2019-02-19 20:52:27 +00:00
examples Bug 1525741 - Support animating yaml files in wrench. r=kvark 2019-02-07 18:03:59 +00:00
reftests Bug 1581934 - Restore the calculation for a more precise picture local rect. r=kvark,gw 2019-09-24 10:34:00 +00:00
res
script Bug 1559975: Fix python2/3 compat in gfx/ r=ahal 2019-07-05 14:28:55 +00:00
src Bug 1582273. Pass scrollbar flags from gecko to webrender so it can identify them. r=gw 2019-09-24 02:40:27 +00:00
.gitignore
android.txt Bug 1555479 - Update wrench mozharness script to support running on a device as well. r=gbrown 2019-06-08 08:59:06 +00:00
build.rs
Cargo.toml Bug 1582217. Drop unneeded image dependencies. r=kvark 2019-09-18 22:04:47 +00:00
README.md

wrench

wrench is a tool for debugging webrender outside of a browser engine.

headless

wrench has an optional headless mode for use in continuous integration. To run in headless mode, instead of using cargo run -- args, use ./headless.py args.

replay and show

Binary recordings can be generated by webrender and replayed with wrench replay. Enable binary recording in RendererOptions.

RendererOptions {
    ...
    recorder: Some(Box::new(BinaryRecorder::new("wr-frame.bin"))),
    ...
}

If you are working on gecko integration you can enable recording in webrender_bindings/src/bindings.rs by setting

static ENABLE_RECORDING: bool = true;

wrench replay --save yaml will convert the recording into frames described in yaml. Frames can then be replayed with wrench show.

reftest

Wrench also has a reftest system for catching regressions.

  • To run all reftests, run script/headless.py reftest
  • To run specific reftests, run script/headless.py reftest path/to/test/or/dir
  • To examine test failures, use the reftest analyzer
  • To add a new reftest, create an example frame and a reference frame in reftests/ and then add an entry to reftests/reftest.list