gecko-dev/gfx
Dzmitry Malyshau d34bbe138b Bug 1519718 - WR mix-blend rewrite r=gw
This is a new implementation of mix-blend compositing that is meant to be more idiomatic to WR and efficient.

Previously, mix-blend mode was composed in the following way:
  1. parent stacking context was forced to isolate
  2. source picture is also isolated
  3. when rendering the isolated context, the framebuffer is read upon reaching the source. Both the readback and the source are placed in the RT cache.
  4. a mix-blend draw call is issued to read from those cache segments and blend on top of the backdrop

The new implementation works by using the picture cutting (intruduced for preserve-3D contexts earlier) and some bits of magic:
  1. backdrop stacking context is isolated with a special composition mode that prevents it from actually rendeing unless the suorce stacking context is invisible.
  2. source stacking context is isolated with mix-blend composition mode that has a pointer to the backdrop picture
  3. the instance of the backdrop picture is placed as a peer of the source picture (not a child)
  4. if the backdrop is invisible, the source is drawn as a simple blit
  5. otherwise, it's a draw call that reads from the isolated backdrop and source textures

Note the differences:
  - parent stacking context is not isolated, but backdrop is
  - no framebuffer readback is involved
  - the source and backdrop pictures are rendered in parallel in a pass, improving the batching
  - we don't blend onto the backdrop while reading from the backdrop copy at the same time
  - the depth of the render pass tree is reduced: previously the parent and the source were isolated, now the source and the backdrop, which are siblings

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

--HG--
rename : gfx/wr/wrench/reftests/blend/multiply-2-ref.yaml => gfx/wr/wrench/reftests/blend/multiply-3-ref.yaml
rename : gfx/wr/wrench/reftests/blend/multiply-3.yaml => gfx/wr/wrench/reftests/blend/multiply-4.yaml
extra : moz-landing-system : lando
2019-02-22 22:22:06 +00:00
..
2d Bug 1528651 - Fix some trivial warnings and re-enable warnings-as-errors on Windows in some directories. r=dmajor 2019-02-19 20:42:11 +09:00
angle Bug 1517055 - Revendor ANGLE mozilla/firefox-66. (1xN texture cherry-pick) r=bholley 2019-01-22 23:44:13 -08:00
cairo Bug 1512504 - Remove support for MSVC. r=froydnj 2019-02-14 21:45:27 +00:00
config Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
docs Bug 1503339 - update frame rate at runtime, r=kats 2018-12-14 20:16:23 +00:00
gl Bug 1528396 - More precise GL symbol loading. r=lsalzman 2019-02-22 21:17:28 +00:00
graphite2 Bug 1515629 - Update Graphite2 to version 1.3.13. r=jfkthame 2018-12-31 15:56:58 +00:00
harfbuzz Bug 1524102 - Update HarfBuzz to version 2.3.1. r=jfkthame 2019-01-31 12:01:26 +00:00
ipc Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan 2019-02-15 08:15:57 +00:00
layers Bug 1528396 - More precise GL symbol loading. r=lsalzman 2019-02-22 21:17:28 +00:00
ots
qcms Bug 1512504 - Remove support for MSVC. r=froydnj 2019-02-14 21:45:27 +00:00
sfntly
skia Bug 1526214 - Get rid of network.cookie.leave-secure-alone, r=Ehsan 2019-02-20 09:42:22 +00:00
src Bug 1528712 - Remove nsFont::featureValueLookup. r=jfkthame 2019-02-19 14:54:04 +01:00
tests Merge inbound to mozilla-central. a=merge 2019-02-21 11:31:00 +02:00
thebes Backed out changeset f5a7724e2c03 for causing crash in Fennec. r=backout 2019-02-21 13:53:22 -08:00
vr Bug 1521879 - Part 2: Fix include-what-you-use bugs triggered by unified compilation. r=kip 2019-02-21 20:25:19 +00:00
webrender_bindings Merge mozilla-central to autoland. CLOSED TREE 2019-02-22 09:23:50 +02:00
wr Bug 1519718 - WR mix-blend rewrite r=gw 2019-02-22 22:22:06 +00:00
ycbcr Bug 1512504 - Remove support for MSVC. r=froydnj 2019-02-14 21:45:27 +00:00
moz.build