gecko-dev/gfx/wr/wrench
Glenn Watson 90a55d388c Bug 1608741 - Part 2 - Disable dithering on gradient primitives. r=sotaro,nical
There are a number of issues with the current gradient dithering
implementation, that cause many test failures and also fuzziness
rendering when enabling DirectComposition virtual surfaces. In
particular, the dither result is dependent on the offset of the
update rect within a render target.

For now, this patch disables gradient dithering by default. This
gives us:

 - A heap of new test PASS results (or reduced fuzziness).
 - Fixes a number of non-deterministic fuzziness bugs with DC.
 - Improves performance of gradient rendering by a reasonable amount.

We can fix gradient dithering as a follow up, and re-enable if/when
we find content that would benefit from it significantly (we may
be able to improve gradients in other ways than dithering too).

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

--HG--
extra : moz-landing-system : lando
2020-01-22 01:24:14 +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 1608741 - Part 2 - Disable dithering on gradient primitives. r=sotaro,nical 2020-01-22 01:24:14 +00:00
res
script Bug 1559975: Fix python2/3 compat in gfx/ r=ahal 2019-07-05 14:28:55 +00:00
src Bug 1610626 - Fix wrench reftest mode incorrectly printing unexpected in some cases. r=Bert 2020-01-22 02:22:42 +00:00
.gitignore
android.txt Bug 1581628 - Update wrench jobs to work with NDK r20. r=jrmuizel 2019-09-27 13:50:43 +00:00
build.rs
Cargo.toml Bug 1599671 - Remove lazy_static dependency from wrench. r=kvark,jrmuizel 2019-11-27 20:47:54 +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