Commit Graph

932 Commits

Author SHA1 Message Date
Bobby Holley
585847b17a Bug 1583998 - Implement a pref to obscure images. r=gw
This approach does have some stacking issues. The way to fix this would
be to instrument the brush_image shader rather than adding debug rects.

Something like: #ifdef WR_FEATURE_SFW frag.color = vec4(0,1,1,1); #endif

That's slightly more involved though, so I'm going to leave it for now.

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

--HG--
extra : moz-landing-system : lando
2019-09-25 21:48:35 +00:00
Bobby Holley
d599cb6095 Bug 1583998 - Refactor debug rectangles to allow the outer and inner colors to be explicitly specified. r=gw
The current code doesn't permit fully opaque debug rects.

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

--HG--
extra : moz-landing-system : lando
2019-09-25 21:46:20 +00:00
Glenn Watson
b0ffdb3a87 Bug 1583460 - Refactor picture caching setup to simplify creating multiple slices. r=nical
Differential Revision: https://phabricator.services.mozilla.com/D46907

--HG--
extra : moz-landing-system : lando
2019-09-24 20:09:19 +00:00
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
Nicolas Silva
9b0314ab6a Bug 1582459 - Improve the clipping and segment documentation. r=kvark
Adds a module documentation in segment.rs giving an overview of the role of primitive segments and how they interact with clipping. Also reformatted the clip.rs documentation to play well with rustdoc.

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

--HG--
extra : moz-landing-system : lando
2019-09-24 08:07:13 +00:00
arthur.iakab
5147f9a0ff Backed out changeset 43dbcbd6f57a (bug 1581934) for causing reftest failures on 1081185-1.html. 2019-09-24 06:17:53 +03:00
Timothy Nikkel
3311b640cc Bug 1582273. Pass scrollbar flags from gecko to webrender so it can identify them. r=gw
Differential Revision: https://phabricator.services.mozilla.com/D46587

--HG--
extra : moz-landing-system : lando
2019-09-24 02:40:27 +00:00
Andrew Osmond
c3f9baa23f 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-23 23:58:44 +00:00
arthur.iakab
76632198c8 Backed out changeset da5d5eb153f2 (bug 1582273) for causing tidy bustages. CLOSED TREE 2019-09-24 03:14:33 +03:00
Timothy Nikkel
3c9a0952b5 Bug 1582273. Pass scrollbar flags from gecko to webrender so it can identify them. r=gw
Differential Revision: https://phabricator.services.mozilla.com/D46587

--HG--
extra : moz-landing-system : lando
2019-09-23 23:31:45 +00:00
Noemi Erli
c539b288a4 Backed out changeset 0574bc97e2ac (bug 1582273) for causing wrench build bustages CLOSED TREE 2019-09-24 00:55:58 +03:00
Noemi Erli
c9d5b4e3b5 Backed out changeset 56c82d00c513 (bug 1581934) for reftest failures CLOSED TREE 2019-09-24 00:53:30 +03:00
Timothy Nikkel
75996b49cc Bug 1582273. Pass scrollbar flags from gecko to webrender so it can identify them. r=gw
Differential Revision: https://phabricator.services.mozilla.com/D46587

--HG--
extra : moz-landing-system : lando
2019-09-23 21:41:18 +00:00
Andrew Osmond
32b92fbfc6 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-23 20:18:50 +00:00
Noemi Erli
728928781e Backed out changeset 195e629a7877 (bug 1582459) for causing wrench bustages CLOSED TREE 2019-09-23 21:07:24 +03:00
Nicolas Silva
ff7cdb1b4e Bug 1582459 - Improve the clipping and segment documentation. r=kvark
Adds a module documentation in segment.rs giving an overview of the role of primitive segments and how they interact with clipping. Also reformatted the clip.rs documentation to play well with rustdoc.

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

--HG--
extra : moz-landing-system : lando
2019-09-23 15:04:19 +00:00
Glenn Watson
4f409d7a31 Bug 1581879 - Artifacts when zooming text on webrender on android. r=jnicol,nical
Fix scissor rect being incorrect during pinch zoom due to floating
point inaccuracies.

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

--HG--
extra : moz-landing-system : lando
2019-09-23 08:13:57 +00:00
Cosmin Sabou
db07080d87 Backed out changeset 08f2148de713 (bug 1581757) for causing webrender reftest failures.
--HG--
extra : rebase_source : 6d41ee1b453c7433768f9b77b6f88483a4215f04
2019-09-19 07:40:01 +03:00
Jeff Muizelaar
4db1b2ef19 Bug 1582217. Drop unneeded image dependencies. r=kvark
We only use the png codec so let's save some link time by not including
the other codecs.

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

--HG--
extra : moz-landing-system : lando
2019-09-18 22:04:47 +00:00
Glenn Watson
8836bc5265 Bug 1581757 - Support slicing the scene into an arbitrary number of picture cache slices r=nical
Previously, the setup_picture_caching function was hard coded
to support only a very specific shape of display list. With this
change, flags are added to PrimitiveCluster that can specify
if a picture cache slice should be created before / after this
cluster when picture caching is set up.

The usage of these flags in this patch matches the old behaviour,
so should not have any functional effect.

However, in future we will make use of this functionality to
create picture slices for a number of different use cases, such as:

 * Creating cache tiles for the UI.
 * Slicing the scene where there are video elements, in order to
   allow these to be composited directly by the OS. This may also
   apply to WebGL and/or canvas elements.
 * Slicing the scene when there is a very large fixed position
   background image or other element, to avoid invalidating the
   entire tile cache each frame.

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

--HG--
extra : moz-landing-system : lando
2019-09-18 23:17:55 +00:00
Dzmitry Malyshau
9c34641992 Bug 1582198 - Remove nix dependency from Wrench r=jrmuizel
https://github.com/servo/webrender/pull/3736

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

--HG--
extra : moz-landing-system : lando
2019-09-18 17:51:27 +00:00
Glenn Watson
1cd0a0e783 Bug 1581677 - Fix consistency bug in WR dirty rect calculation. r=nical
This fixes a case where the is_same_content field was no longer
being reset to true before dependency calculation could occur.

In some cases, this could result in a tile being updated, but
the dirty rect being empty, which meant all primitives in that
tile would fail the visibility culling test.

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

--HG--
extra : moz-landing-system : lando
2019-09-18 08:01:50 +00:00
Glenn Watson
e2052553cc Bug 1581448 - Add support for specifying extra per-primitive flags in WR display lists r=kvark,nical
This patch replaces the is_backface_visible bool in the common
per-primitive data in the display list with a PrimitiveFlags
enumeration. This will allow Gecko to specify extra information
about certain primitive, such as tagging scroll bars.

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

--HG--
extra : moz-landing-system : lando
2019-09-18 07:14:51 +00:00
Andreea Pavel
73383c5230 Backed out changeset af9417bd8105 (bug 1581448) for wrench bustages on a CLOSED TREE 2019-09-18 09:54:23 +03:00
Glenn Watson
83dc27b34b Bug 1581650 - Provide picture cache dirty rects in WR render outputs r=nical
This provides the internal device-space dirty rects calculated
during picture cache updates to the external render() method.

This allows clients to provide these to OS partial present APIs,
to reduce power usage and improve performance.

In this initial implementation, if a scroll or scale of the main
picture cache has occurred, the dirty rect will be the entire
screen. This should ensure correctness. In future, we can handle
this case by supplying the picture cache transforms to the OS
compositor integration.

However, the dirty rects will be valid for any non-scroll cases,
such as animations or video playback. This should result in some
significant power savings and performance improvements for these
use cases.

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

--HG--
extra : moz-landing-system : lando
2019-09-18 06:27:54 +00:00
Glenn Watson
ff53edd4e5 Bug 1581448 - Add support for specifying extra per-primitive flags in WR display lists r=kvark,nical
This patch replaces the is_backface_visible bool in the common
per-primitive data in the display list with a PrimitiveFlags
enumeration. This will allow Gecko to specify extra information
about certain primitive, such as tagging scroll bars.

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

--HG--
extra : moz-landing-system : lando
2019-09-18 06:27:34 +00:00
Dustin J. Mitchell
395fc199f8 Bug 1575648 - update webrender tc.yml to v1; r=jrmuizel
Differential Revision: https://phabricator.services.mozilla.com/D46038

--HG--
extra : moz-landing-system : lando
2019-09-17 13:54:56 +00:00
Nicolas Silva
7b6f30fd89 Bug 1570081 - Wrench rawtest changes. r=jrmuizel
Differential Revision: https://phabricator.services.mozilla.com/D41387

--HG--
extra : moz-landing-system : lando
2019-09-17 09:12:43 +00:00
Nicolas Silva
e9915eb02b Bug 1570081 - Support changing the blob image visible rect in WebRender. r=jrmuizel
Differential Revision: https://phabricator.services.mozilla.com/D39911

--HG--
extra : moz-landing-system : lando
2019-09-17 09:12:26 +00:00
Nicolas Silva
e9850ca2ee Bug 1581058 - Remove remaining use of the term "flattening". r=gw
Differential Revision: https://phabricator.services.mozilla.com/D46018

--HG--
extra : moz-landing-system : lando
2019-09-17 09:20:04 +00:00
Nicolas Silva
3a51eac38e Bug 1581058 - Rename a lot of scene building related structures. r=gw
Differential Revision: https://phabricator.services.mozilla.com/D45853

--HG--
rename : gfx/wr/webrender/src/display_list_flattener.rs => gfx/wr/webrender/src/scene_building.rs
extra : moz-landing-system : lando
2019-09-17 09:20:03 +00:00
Nicolas Silva
823e2e6a75 Bug 1581058 - Rename scene_builder::SceneBuilder into scene_builder_thread::SceneBuilderThread. r=gw
Differential Revision: https://phabricator.services.mozilla.com/D45854

--HG--
rename : gfx/wr/webrender/src/scene_builder.rs => gfx/wr/webrender/src/scene_builder_thread.rs
extra : moz-landing-system : lando
2019-09-17 09:19:36 +00:00
Nicolas Silva
50c27ced3f Bug 1581058 - Move RenderTaskCache into its own module. r=gw
Differential Revision: https://phabricator.services.mozilla.com/D45855

--HG--
extra : moz-landing-system : lando
2019-09-17 09:18:03 +00:00
Lee Salzman
44eb8379af Bug 1547063 - Use FreeType metrics directly instead of querying Cairo. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D44497

--HG--
extra : moz-landing-system : lando
2019-09-16 17:15:10 +00:00
Jeff Muizelaar
55f24d593c Bug 1581549. Update to mozangle 0.3.1 to solve build time issues. r=kvark
Differential Revision: https://phabricator.services.mozilla.com/D46031

--HG--
extra : source : 5fe4ede89388a6d193c9ab482d6e98eeb50fce52
2019-09-16 15:30:32 +00:00
Cosmin Sabou
514c7c5e05 Backed out changeset 5fe4ede89388 (bug 1581549) for causing SM bustages. CLOSED TREE 2019-09-16 19:28:08 +03:00
Jeff Muizelaar
7389ffb35c Bug 1581549. Update to mozangle 0.3.1 to solve build time issues. r=kvark
Differential Revision: https://phabricator.services.mozilla.com/D46031

--HG--
extra : moz-landing-system : lando
2019-09-16 15:30:32 +00:00
Cosmin Sabou
7ed8e2d3d1 Merge autoland to mozilla-central. a=merge 2019-09-16 11:16:05 +03:00
Cosmin Sabou
8113720646 Backed out 8 changesets (bug 1547063) for causing bug 1581466. a=backout
Backed out changeset c969a93b0ca7 (bug 1547063)
Backed out changeset 003f5a79c6a7 (bug 1547063)
Backed out changeset 2c7032b4d022 (bug 1547063)
Backed out changeset 23892ecc6ef8 (bug 1547063)
Backed out changeset af6e6807ece7 (bug 1547063)
Backed out changeset ebc71e607938 (bug 1547063)
Backed out changeset 772c3427c791 (bug 1547063)
Backed out changeset e74a67e2afe3 (bug 1547063)
2019-09-16 10:44:20 +03:00
Glenn Watson
804a9e983e Bug 1580711 - Refactor storage of primitive instances into primitive clusters. r=nical
Previously, primitive lists were stored as:

  PicturePrimitive
    PrimitiveList
      [PrimitiveInstance]
      [PrimitiveCluster]
      [PictureIndices]

Each primitive instance contained a spatial node index and an
index into the primitive cluster it belongs to.

Now, the instances in a primitive list are stored as:

  PicturePrimitive
    PrimitiveList
      [PrimitiveCluster]
        [PrimitiveInstance]

This provides a number of advantages:
 * Size of the PrimitiveInstance struct is smaller.
 * No need to maintain a separate PictureIndices list.
 * Easy and fast to skip the array, finding pictures or scroll root changes.
 * Much faster to split and reorder PrimitiveList structures.

This patch is refactoring only, it doesn't contain any functional
changes. As we enable multiple picture caching slices, we need to
be able to split and reorder PrimitiveLists. Storing the primitive
instances in this way makes that process much more efficient than
it currently is.

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

--HG--
extra : moz-landing-system : lando
2019-09-15 22:35:54 +00:00
Lee Salzman
0d6ebe2503 Bug 1547063 - Use FreeType metrics directly instead of querying Cairo. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D44497

--HG--
extra : moz-landing-system : lando
2019-09-15 03:01:19 +00:00
Andrew Osmond
ab39496ccc Bug 1574493 - Part 6. Add reftest annotations for newly failing/passing tests. r=jrmuizel,kvark
Differential Revision: https://phabricator.services.mozilla.com/D45539

--HG--
extra : moz-landing-system : lando
2019-09-14 16:16:59 +00:00
Andrew Osmond
f59d309602 Bug 1574493 - Part 5. Snap scroll offsets and pictures during frame building. r=kvark
The snapping during scene building is unable to take into account scroll
offsets. Since we have already snapped the primitive rects in the raster
space, we know that this can only result in a translation rather than a
size change, and thus is safe to do during frame building.

When we update the transform tree, we now snap the scroll offset in
device space to ensure that scroll offsets should primarily be integer
offsets and not have snapping implications.

The local rect of a picture is calculated during the first picture
traversel. It is composed of already snapped primitives, however the
picture itself may inflate itself, and thus is now snapped again as part
of inflation.

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

--HG--
extra : moz-landing-system : lando
2019-09-14 16:17:08 +00:00
Andrew Osmond
1c671c3838 Bug 1574493 - Part 4. Snap primitives during scene building. r=kvark
Now that rounding has been removed from Gecko, we need to start snapping
properly in WebRender. Snapping can change the size of a primitive, and
thus it is problematic to do any later than scene building due to the
GPU caching and sharing of data between clips and such that only differ
in their positioning.

This patch produces a snapping transform which allows any primitive to
snap using information known during scene building. This excludes
animated tranforms which are assumed to be the identity. This allows for
primitives that are marked as will-change: transform but given no
initial transform to render the same as primitives that are not. This
also excludes scroll positioning because that is not known until frame
building. A follow up patch will deal with that.

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

--HG--
extra : moz-landing-system : lando
2019-09-14 16:17:06 +00:00
Andrew Osmond
13d6122e89 Bug 1574493 - Part 2. Remove snapping in frame building. r=kvark
This will be rewritten in a later patch in the series. The shaders will
be provided the correct information and will no longer need to concern
themselves with snapping.

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

--HG--
extra : moz-landing-system : lando
2019-09-14 16:17:02 +00:00
Andrew Osmond
811b2b59fa Bug 1574493 - Part 1. Split out repeating and non-repeating images in the display list. r=jrmuizel
Repeating/background images may have extra parameters such the stretch
size and tile spacing, that non-repeating images do not require. By
splitting these apart, we can make it easier to infer what we should do
if snapping changes the size of an image primitive, in addition to
reducing the display list size for non-repeating images.

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

--HG--
extra : moz-landing-system : lando
2019-09-14 16:17:00 +00:00
Kris Taeleman
2969981f24 Bug 1571976 - Adding profiling for rasterized blob pixels. r=gw
Differential Revision: https://phabricator.services.mozilla.com/D45559

--HG--
extra : moz-landing-system : lando
2019-09-11 23:36:23 +00:00
Ciure Andrei
a4046ec458 Backed out 6 changesets (bug 1574493) for causing nested-sticky-2.html to perma fail CLOSED TREE
Backed out changeset 358746636448 (bug 1574493)
Backed out changeset 34aef5498237 (bug 1574493)
Backed out changeset 1f88e2031c76 (bug 1574493)
Backed out changeset 07c588b5ea10 (bug 1574493)
Backed out changeset 0685e8d3510e (bug 1574493)
Backed out changeset 15d4390220c4 (bug 1574493)
2019-09-13 19:26:50 +03:00
Andrew Osmond
35a0f13ba2 Bug 1574493 - Part 6. Add reftest annotations for newly failing/passing tests. r=jrmuizel,kvark
Differential Revision: https://phabricator.services.mozilla.com/D45539

--HG--
extra : moz-landing-system : lando
2019-09-13 14:03:28 +00:00
Andrew Osmond
d34a1ebd32 Bug 1574493 - Part 5. Snap scroll offsets and pictures during frame building. r=kvark
The snapping during scene building is unable to take into account scroll
offsets. Since we have already snapped the primitive rects in the raster
space, we know that this can only result in a translation rather than a
size change, and thus is safe to do during frame building.

When we update the transform tree, we now snap the scroll offset in
device space to ensure that scroll offsets should primarily be integer
offsets and not have snapping implications.

The local rect of a picture is calculated during the first picture
traversel. It is composed of already snapped primitives, however the
picture itself may inflate itself, and thus is now snapped again as part
of inflation.

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

--HG--
extra : moz-landing-system : lando
2019-09-13 14:03:26 +00:00