Commit Graph

860 Commits

Author SHA1 Message Date
Nicolas Silva
40a8a07d2f Bug 1570081 - Fix a number of issues with the tile decomposition code. r=jrmuizel
Differential Revision: https://phabricator.services.mozilla.com/D44689

--HG--
extra : moz-landing-system : lando
2019-09-12 11:49:29 +00:00
Kris Taeleman
553a42bb5e Bug 1571977 - Add wrench test for textureRect. r=gw
Differential Revision: https://phabricator.services.mozilla.com/D44925

--HG--
extra : moz-landing-system : lando
2019-09-11 19:58:02 +00:00
Glenn Watson
dd41a93180 Bug 1580063 - Track dirty rects in WR picture cache tiles, and use them to reduce GPU work. r=nical
This patch adds a simple quadtree structure to each picture cache
tile. This tree is used to track dirty regions of each tile. By
using a tree that can split / merge nodes, the CPU overhead of
tracking dirty areas is minimized, by only splitting nodes where
content is regularly changing.

For now, this patch makes use of the dirty rects to set a single
scissor rect when rendering picture cache tiles. This results in
a significant performance improvement (due to fewer pixels being
drawn) on many pages. In future, the dirty rects will also be
exposed at the API level, allowing clients to leverage partial
present APIs for power saving purposes.

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

--HG--
extra : moz-landing-system : lando
2019-09-11 13:20:08 +00:00
Jeff Muizelaar
b8ad0be101 Bug 1580543. Update to VS 2017 for WebRender appveyor. r=kvark
This should hopefully fix WebRender CI.

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

--HG--
extra : moz-landing-system : lando
2019-09-11 17:30:02 +00:00
Andrew Osmond
90491197ac Bug 1568616 - Include document's scratch buffer in WebRender captures. r=kvark
Differential Revision: https://phabricator.services.mozilla.com/D45188

--HG--
extra : moz-landing-system : lando
2019-09-10 02:34:05 +00:00
Dzmitry Malyshau
c6f647e9c9 Bug 1579318 - Switch mozangle dependency of Wrench to 0.2 r=jrmuizel
Differential Revision: https://phabricator.services.mozilla.com/D44934

--HG--
extra : moz-landing-system : lando
2019-09-10 02:04:32 +00:00
Bogdan Tara
1735c8570e Backed out changeset bde7561bd171 (bug 1571977) for wrench amd tidy failures CLOSED TREE 2019-09-10 04:23:19 +03:00
Kris Taeleman
5af13d7fdd Bug 1571977 - Add wrench test for textureRect. r=gw
Differential Revision: https://phabricator.services.mozilla.com/D44925

--HG--
extra : moz-landing-system : lando
2019-09-10 00:32:33 +00:00
Dzmitry Malyshau
743324c2d2 Bug 1579316 - Automatically select GPU adapter in WR wrench and examples on macOS r=jrmuizel
Differential Revision: https://phabricator.services.mozilla.com/D44933

--HG--
extra : moz-landing-system : lando
2019-09-06 21:07:27 +00:00
Brindusan Cristian
c2bb1572d6 Backed out changeset 5e0ff929002a (bug 1579318) for wrench bustages on Microsoft.Diagnostics.Tracing.EventSource.dll. CLOSED TREE 2019-09-07 02:19:40 +03:00
Dzmitry Malyshau
04b5aea7d1 Bug 1579227 - Switch YUV images to be opaque in WR r=jrmuizel
Differential Revision: https://phabricator.services.mozilla.com/D45030

--HG--
extra : moz-landing-system : lando
2019-09-06 17:38:44 +00:00
Dzmitry Malyshau
4bfcb3fba0 Bug 1579318 - Switch mozangle dependency of Wrench to 0.2 r=jrmuizel
Differential Revision: https://phabricator.services.mozilla.com/D44934

--HG--
extra : moz-landing-system : lando
2019-09-06 16:55:52 +00:00
Cosmin Sabou
90087b3c49 Backed out changeset 1c068477fae2 (bug 1579318) for causing qr tidy bustages. CLOSED TREE
--HG--
extra : rebase_source : eec7dedcf5f1c886e9cc98c1d98fc7d2f3e29183
2019-09-06 18:21:25 +03:00
Dzmitry Malyshau
5d78d59ef4 Bug 1579318 - Switch mozangle dependency of Wrench to 0.2 r=jrmuizel
Differential Revision: https://phabricator.services.mozilla.com/D44934

--HG--
extra : moz-landing-system : lando
2019-09-06 03:19:05 +00:00
Glenn Watson
a33501d4ab Bug 1578986 - Refactor tile comparisons to enable dirty rect checking. r=nical
Previously, primitive sub-dependencies (such as transforms, opacity
bindings etc) were invalidated by comparing the dependency array
only. This means that it's not possible to correlate an area of
a tile that is affected by those sub-dependencies.

Now, comparisons on sub-dependencies are handled as part of the
dependency check for each primitive. This means we have the
affected rectangle of the tile available, which will allow
dirty regions within a tile to be built correctly.

This patch is only preparation work - the actual dirty rect
calculation will be done as a follow up patch.

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

--HG--
extra : moz-landing-system : lando
2019-09-05 20:44:41 +00:00
Glenn Watson
d6bac95db7 Bug 1578641 - Improve how tile clipping works in WR picture caching. r=kvark
Previously, picture caching code would use the viewport of the
scroll root to find a clipping rect for picture cache tiles. This
viewport rect was also used to eliminate fixed position clip rects
on primitives that would otherwise cause unwanted invalidations
due to them moving relative to the scroll root when scrolls occur.

Now, the picture caching code uses a similar technique to Gecko
to find shared clips on primitives in a picture cache. These clips
are filtered out from being applied on a per-primitive basis, and
instead applied once during compositing the tiles into the parent
picture.

This is a potential performance improvement, since less per-item
work is required when building clip chains. More importantly, it
means the picture caching code correctly handles cases where the
scroll root contains fixed position elements (or other scroll
roots). This is a requirement before we can enable picture caching
on multiple slices.

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

--HG--
extra : moz-landing-system : lando
2019-09-04 20:30:12 +00:00
Glenn Watson
0b27e4437e Bug 1578340 - Intern local position + spatial node in WR clips. r=nical
Previously, clip nodes interned the local clip information, but
stored the spatial node and the local position as part of the
instance.

This was required since the local position of clips would change
when a new display was sent after scrolling. However, since we
now handle this via external scroll offsets, the local position
is stable, and we can intern both the position and spatial node.

This greatly simplifies some in-progress work for picture caching,
where we want to be able to quickly identify clip chain nodes that
are shared between elements of a display list. With this change,
comparing the item uid of the interned clip node is enough to
guarantee equality of the shared clips.

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

--HG--
extra : moz-landing-system : lando
2019-09-03 15:15:00 +00:00
Nicolas Silva
5c0955df2d Bug 1577766 - Move render target code into its own file. r=gw
Differential Revision: https://phabricator.services.mozilla.com/D44225

--HG--
extra : moz-landing-system : lando
2019-09-02 11:46:39 +00:00
Nicolas Silva
f730ca72ec Bug 1577766 - Move Frame into frame_builder.rs. r=gw
Differential Revision: https://phabricator.services.mozilla.com/D44224

--HG--
extra : moz-landing-system : lando
2019-09-02 11:47:44 +00:00
Nicolas Silva
c129c7918f Bug 1577766 - Move CompositeOps into display_list_flattener.rs. r=gw
Differential Revision: https://phabricator.services.mozilla.com/D44171

--HG--
extra : moz-landing-system : lando
2019-09-02 11:48:15 +00:00
Nicolas Silva
87c3918219 Bug 1577766 - Rename tiling.rs into render_task_graph.rs and move some code around. r=gw
Differential Revision: https://phabricator.services.mozilla.com/D44165

--HG--
rename : gfx/wr/webrender/src/tiling.rs => gfx/wr/webrender/src/render_task_graph.rs
extra : moz-landing-system : lando
2019-09-02 11:48:15 +00:00
Nicolas Silva
2e3f0733db Bug 1577766 - Rename Renderer::draw_tile_frame into draw_frame. r=gw
Differential Revision: https://phabricator.services.mozilla.com/D44164

--HG--
extra : moz-landing-system : lando
2019-09-02 11:44:20 +00:00
Nicolas Silva
55060079d9 Bug 1562869 - Check for NaNs in project_rect. r=aosmond
Differential Revision: https://phabricator.services.mozilla.com/D44114

--HG--
extra : moz-landing-system : lando
2019-08-30 11:27:40 +00:00
Mike Hommey
6f74a5cc9b Bug 1576034 - Fix bare-trait-objects warnings in direct-composition. r=jrmuizel
Differential Revision: https://phabricator.services.mozilla.com/D43204

--HG--
extra : moz-landing-system : lando
2019-08-26 12:00:56 +00:00
Bastien Orivel
88e5c4b00e Bug 1576361 - Update ipc-channel to 0.12 in webrender. r=emilio
While not used in firefox, this is required to update ipc-channel in
servo

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

--HG--
extra : moz-landing-system : lando
2019-08-24 12:22:26 +00:00
Timothy Nikkel
9126f41ac8 Bug 1575119. In brush_blend.glsl shader don't unpremultiply the alpha, only the colors. r=gw
Differential Revision: https://phabricator.services.mozilla.com/D42970

--HG--
extra : moz-landing-system : lando
2019-08-23 00:09:30 +00:00
Glenn Watson
0239393a23 Bug 1574838 - Allow generating dirty regions from picture caching dependency lists. r=kvark
Previously, additional dependencies (such as opacity bindings and
transforms) were stored in a simple hash set, which meant they
could not be correlated with primitive bounding rects (and thus
could not be used to derive dirty rects of a tile).

Now, by scanning the primitive list which contains the bounding
rect, we can also find additional dependencies for that primitive.
This will be used in future to create exact dirty rects (for
debugging / regression testing) and allow us to generate a
dependency descriptor for a split or merged tile from an existing
descriptor.

This patch also fixes a case where opacity bindings could result
in unnecessary invalidations, by retaining the opacity bindings
state across display lists.

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

--HG--
extra : moz-landing-system : lando
2019-08-19 21:16:53 +00:00
Simon Sapin
c9af673766 Bug 1568540 - Upgrade to ws 0.9 in WebRender r=emilio
[import_pr] From https://github.com/servo/webrender/pull/3720

MozReview-Commit-ID: AsI4hT0cFGJ

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

--HG--
extra : moz-landing-system : lando
2019-08-17 16:26:25 +00:00
Connor Brewster
75aedaa2f5 Bug 1573719 - Implement composite SVG filter primitive in WebRender r=nical
Differential Revision: https://phabricator.services.mozilla.com/D42057

--HG--
extra : moz-landing-system : lando
2019-08-16 16:17:01 +00:00
Connor Brewster
97f0a1af4b Bug 1561447 - Include picture shadow in local rect when building clip chain r=nical
Differential Revision: https://phabricator.services.mozilla.com/D42244

--HG--
extra : moz-landing-system : lando
2019-08-16 16:15:53 +00:00
Connor Brewster
7658b3e68d Bug 1573914 - Fix backdrop-filter jitter during animation due to snap offsets r=gw
Since the filtered-backdrop is 1:1 with the backdrop, we don't want any snap offsets to shift the contents

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

--HG--
extra : moz-landing-system : lando
2019-08-15 00:09:40 +00:00
Connor Brewster
1a77c310c4 Bug 1573649 - Implement feOffset SVG filter primitive in WebRender r=nical
Differential Revision: https://phabricator.services.mozilla.com/D41840

--HG--
extra : moz-landing-system : lando
2019-08-14 20:14:25 +00:00
Connor Brewster
6b1bbb5465 Bug 1573886 - Fix backdrop-filter blur errors due to incorrect scaling r=kvark
Differential Revision: https://phabricator.services.mozilla.com/D42013

--HG--
extra : moz-landing-system : lando
2019-08-14 20:13:06 +00:00
arthur.iakab
3e0e0472e5 Backed out changeset 71b7ef6e0ed8 (bug 1573649) for causing wrench build bustages on svg-filter-offset-ref.yaml.
--HG--
extra : rebase_source : 30f299066d80f51169d6ef3faba107db3c01fb1f
2019-08-14 22:34:12 +03:00
Connor Brewster
32a649a30a Bug 1573649 - Implement feOffset SVG filter primitive in WebRender r=nical
Differential Revision: https://phabricator.services.mozilla.com/D41840

--HG--
extra : moz-landing-system : lando
2019-08-14 14:37:05 +00:00
Connor Brewster
b5f999f5ff Bug 1178765 - Part 5: Add optimization to render task depth assignment r=gw,nical
Fixes an issue when backdrop-filter is used many time on a page where we would
spend a large amount of time reevaluating render tasks when assigning task depths.

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

--HG--
extra : moz-landing-system : lando
2019-08-13 22:03:16 +00:00
Connor Brewster
dbce0f3810 Bug 1178765 - Part 2: Implement backdrop-filter in WebRender r=gw
Differential Revision: https://phabricator.services.mozilla.com/D39098

--HG--
extra : moz-landing-system : lando
2019-08-13 22:02:44 +00:00
Connor Brewster
afa1fcbaed Bug 1178765 - Part 1: Add backdrop-filter WebRender display items r=gw
Differential Revision: https://phabricator.services.mozilla.com/D39097

--HG--
extra : moz-landing-system : lando
2019-08-13 22:02:37 +00:00
Glenn Watson
d34d735320 Bug 1572646 - Detect and optimize picture cache tiles that are solid colors. r=kvark
With this patch, tiles that are covered only by the opaque backdrop
primitive are detected and noted as solid colors.

Solid color tiles save memory and performance, because:
 - No texture slice is allocated as a render target for them.
 - No need to rasterize this tile.
 - Drawing the tile is done with the faster rectangle shader.

This already saves performance and GPU memory on quite a few
real world sites (esp. when running at 4k). However, the main
benefit of this will be once we enable picture caching on
multiple content slices and the UI layer. When this occurs, it's
important to avoid allocating tile buffers for all the solid
rectangle tiles that the UI layer typically contains.

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

--HG--
extra : moz-landing-system : lando
2019-08-12 21:59:58 +00:00
Bastien Orivel
4665febab6 Bug 1573039 - Part 1: Update image to 0.22. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D41488

--HG--
extra : moz-landing-system : lando
2019-08-12 20:22:06 +00:00
Barret Rennie
ad5f1aae78 Bug 1570442 - Flip upside down recorded frames right side up on non-ANGLE configurations r=kvark
Frames captured by the composition recorder on non-ANGLE configurations were
previously written upside down to disk. We now flip them right side up when
mapping them into memory.

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

--HG--
extra : moz-landing-system : lando
2019-08-12 18:54:55 +00:00
Dzmitry Malyshau
0aa1247a1e Bug 1572843 - WR swizzling part-2 r=gw
This is a medium-size follow-up to D21965.

Refactors the use of swizzling by the texture cache. Adds a device
capability flag that is checked at run-time. Also makes the texture
cache to communicate with the texture uploader if there is a format
conversion needed, which fixes the case on platforms that don't
support swizzling.

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

--HG--
extra : moz-landing-system : lando
2019-08-12 15:39:23 +00:00
Glenn Watson
1dff77fb01 Bug 1559979 - Restructure the WR picture caching code into Tile methods. r=kvark
Differential Revision: https://phabricator.services.mozilla.com/D40916

--HG--
extra : moz-landing-system : lando
2019-08-11 23:52:35 +00:00
Noemi Erli
574227704c Backed out 2 changesets (bug 1573039) for wrench bustages CLOSED TREE
Backed out changeset 97601fb2425d (bug 1573039)
Backed out changeset 2b68d7bddbb6 (bug 1573039)

--HG--
rename : third_party/rust/image/src/hdr/decoder.rs => third_party/rust/image/src/hdr/hdr_decoder.rs
rename : third_party/rust/image/src/hdr/encoder.rs => third_party/rust/image/src/hdr/hdr_encoder.rs
2019-08-12 00:47:12 +03:00
Bastien Orivel
e8d58bb4c6 Bug 1573039 - Part 1: Update image to 0.22. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D41488

--HG--
extra : moz-landing-system : lando
2019-08-11 20:41:20 +00:00
Glenn Watson
be3904b49e Bug 1572197 - Fix world clip region for preserve-3d items with picture caching. r=emilio
When adding planes to the plane splitter, we supply a world clip
rect to the polygon clipper. Generally this is used to help with
float accuracy issues, but it also clips polygons to the visible
region.

The previous code supplied the visible world rect, but this is
not always correct. When drawing picture cache tiles, we may
be rendering to a tile that is partially off-screen. In this case
we need to pass the combined world dirty rect, which is inflated
to include the off-screen tile parts that are being drawn. This
ensures that preserve-3d items are correctly clipped to the tile
boundaries rather than the currently visible screen rect.

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

--HG--
extra : moz-landing-system : lando
2019-08-08 04:49:09 +00:00
Dzmitry Malyshau
bfc2204e14 Bug 1572197 - Plane split dependency update
updates for https://github.com/servo/plane-split/pull/33

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

--HG--
extra : moz-landing-system : lando
2019-08-09 14:41:49 +00:00
Nicolas Silva
01481c8d58 Bug 1570543 - Fix incorrect batch index after merging batches. r=gw
Differential Revision: https://phabricator.services.mozilla.com/D41166

--HG--
extra : moz-landing-system : lando
2019-08-09 03:50:47 +00:00
Dzmitry Malyshau
36fe1b9594 Bug 1567577 - Make WR to have multiple array textures for the shared cache r=gw
have texture cache to manage potentially multiple array textures of each type.

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

--HG--
extra : moz-landing-system : lando
2019-08-06 22:48:27 +00:00
sotaro
6abb9c3532 Bug 1570593 - Do not use ResourceCache::is_image_active() with multiple documents r=gw
Differential Revision: https://phabricator.services.mozilla.com/D40169

--HG--
extra : moz-landing-system : lando
2019-08-04 21:40:13 +00:00