Граф коммитов

64 Коммитов

Автор SHA1 Сообщение Дата
Alexis Beingessner bb09834391 Bug 1547351 - Automatically set content process render root r=kats
This implements the idea of automatically setting a content proc's
render root based on the render root enclosing the iframe that
points to it. There was a bit of cleanup in here that was a bit
tricky to extract from the core patch revolving around how we
use the Api(...) helper. This was to avoid the situation where
we use the Api(...) helper before our render root is initialized,
when we don't actually have to. I.e., when we just want the root
WebRenderAPI in all cases.

An alternative to this approach could be to fully built out the
WebRender transactions and just queue those up to be sent. However,
transaction building has various side effects which are committed
before the transaction is actually sent, so we would have to build
out some scheme for deferring those as well. This seemed simpler.

Patch primarily written by :dthayer

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

--HG--
extra : moz-landing-system : lando
2019-07-24 14:10:56 +00:00
Andreea Pavel 6665820f48 Backed out 3 changesets (bug 1547351) for assertion failures on a CLOSED TREE
Backed out changeset 77ef8e8bc669 (bug 1547351)
Backed out changeset b594f8e47025 (bug 1547351)
Backed out changeset 6e5d426cd313 (bug 1547351)
2019-07-15 17:47:40 +03:00
Alexis Beingessner 81f39dd2b0 Bug 1547351 - Automatically set content process render root r=kats
This implements the idea of automatically setting a content proc's
render root based on the render root enclosing the iframe that
points to it. There was a bit of cleanup in here that was a bit
tricky to extract from the core patch revolving around how we
use the Api(...) helper. This was to avoid the situation where
we use the Api(...) helper before our render root is initialized,
when we don't actually have to. I.e., when we just want the root
WebRenderAPI in all cases.

An alternative to this approach could be to fully built out the
WebRender transactions and just queue those up to be sent. However,
transaction building has various side effects which are committed
before the transaction is actually sent, so we would have to build
out some scheme for deferring those as well. This seemed simpler.

Patch primarily written by :dthayer

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

--HG--
extra : moz-landing-system : lando
2019-07-15 13:18:44 +00:00
Kartikaya Gupta e30a62a33e Bug 1554985 - Dump the render root boundary information when dumping WR scroll data. r=jrmuizel
Depends on D36385

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

--HG--
extra : moz-landing-system : lando
2019-06-30 01:37:22 +00:00
Jean-Yves Avenard 11ac9e9cf8 Bug 1540581 - P6. Tidy some C++ declarations in gfx/. r=gerald,jrmuizel
* Remove redundant virtual keywords
* Mark all destructors of inheriting classes as virtual for clarity
* Mark all classes without virtual destructor as final (exposed errors)
* Make destructor virtual where it needed to be (some were missing)
* Replace empty ({}) code declaration in header with = default
* Remove virtual unused methods

I probably missed some, it quickly became a rabbit hole.

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

--HG--
extra : moz-landing-system : lando
2019-04-11 12:36:51 +00:00
Doug Thayer b172543596 Bug 1441308 - Core renderroot splitting changes r=kats,sotaro
This is a large patch that contains all of the core changes for
renderroot splitting.

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

--HG--
extra : moz-landing-system : lando
2019-03-22 18:28:42 +00:00
Ciure Andrei 3de853018a Backed out 7 changesets (bug 1441308)for causing webrender build bustages CLOSED TREE
Backed out changeset 1764701d11d1 (bug 1441308)
Backed out changeset 32f7793dfd1a (bug 1441308)
Backed out changeset d8b4d6ec9b40 (bug 1441308)
Backed out changeset e2f83e4816dd (bug 1441308)
Backed out changeset baee8ada680f (bug 1441308)
Backed out changeset c09a51622e98 (bug 1441308)
Backed out changeset 737807563dd5 (bug 1441308)
2019-03-22 10:52:44 +02:00
Doug Thayer 5b3a0454a4 Bug 1441308 - Core renderroot splitting changes r=kats,sotaro
This is a large patch that contains all of the core changes for
renderroot splitting.

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

--HG--
extra : moz-landing-system : lando
2019-03-22 03:15:14 +00:00
Kartikaya Gupta 919598b555 Bug 1506257 - Make the scrollbar animation id a Maybe. r=botond
Differential Revision: https://phabricator.services.mozilla.com/D18669

--HG--
extra : moz-landing-system : lando
2019-02-06 20:00:08 +00:00
Sylvestre Ledru 265e672179 Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
# ignore-this-changeset

--HG--
extra : amend_source : 4d301d3b0b8711c4692392aa76088ba7fd7d1022
2018-11-30 11:46:48 +01:00
Jeff Muizelaar c80ead4e70 Bug 1508908. Remove mEventRegions from WebRenderLayerScrollData. r=kats
It's unused.

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

--HG--
extra : moz-landing-system : lando
2018-11-21 11:55:46 +00:00
Ryan Hunt d46a2d5c71 Bug 1503655 part 10 - Remove unneeded includes for RenderFrameParent. r=kats
Differential Revision: https://phabricator.services.mozilla.com/D11112

--HG--
extra : rebase_source : 769261eb74f6b01a48f3a20ccb62c5f2f1c33f32
extra : histedit_source : 027cf9d45b82a32d0b73cb468bf9931003a62a02
2018-11-06 15:34:59 -06:00
Ryan Hunt 2226bcc8a3 Bug 1504220 - Move ScrollableLayerGuid, ViewID, ZoomConstraints from FrameMetrics.h r=botond
This commit attempts to lower the pain of modifying FrameMetrics.h.

It looks like most includes really only want ViewID or
ScrollableLayerGuid, so this commit factors them out into a separate
header. In the process FrameMetrics::ViewID is changed to
ScrollableLayerGuid::ViewID, which personally seems like a better
place for it now that we have RepaintRequest. Unfortunately that
requires a lot of places to be updated.

After this commit there are still a couple of major places that
FrameMetrics is included.
 * nsDisplayList.h
 * nsIScrollableFrame.h
 * Layers.h

Those are going to be more tricky or impossible to fix so they're
not in this commit.

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

--HG--
rename : gfx/layers/FrameMetrics.h => gfx/layers/ScrollableLayerGuid.h
rename : gfx/layers/FrameMetrics.h => gfx/layers/ZoomConstraints.h
extra : rebase_source : 29ac79f91460a181bf7437af5c371207e22858e2
extra : source : c2e70e531075493fc6e374dcec862827f0bc6e77
2018-11-01 15:15:46 -05:00
Kartikaya Gupta 2db495b01c Bug 1490393 - Improve documentation regarding the deferred transforms. r=mstange
This code will be expanded a bit in the next few patches, so hopefully
the comments here provide a reasonable explanation of what this code is
about.

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

--HG--
extra : moz-landing-system : lando
2018-11-01 21:12:06 +00:00
Andrew Osmond f608cada7d Bug 1405814 - Avoid crash with WebRender when the scroll metadata is unavailable. r=kats
Similar to bug 1471671, we are seeing missing scroll metadata in cases
we do not expect that, and have been observing low volume crashes in the
wild as a result. It appears that in the non-WR path, it skips such items,
so we should probably do the same thing with WebRender. If it is a real
problem, we will hopefully get a reproducible test case from a user if
scrolling fails for them.

Differential Revision: https://phabricator.services.mozilla.com/D9815
2018-10-25 20:00:35 -04:00
Ryan Hunt 1601a8bb80 Bug 1453425 - Add relative scroll offset updates using nsGkAtoms::relative. r=botond
This commit adds a scroll origin, nsGkAtoms::relative, which can be used to
mark main thread scrolling that can be combined with a concurrent APZ scroll.

The behavior of this is controlled by a pref, apz.relative-update. This pref
is initially activated and is intended as an aid to narrowing down causes
of regressions for users in bug reports.

Relative scroll updates work by tracking the last sent or accepted APZ
scroll offset. This is sent along with every FrameMetrics. Additionally,
a flag is added to FrameMetrics, mIsRelative, indicating whether the
scroll offset can be combined with a potential APZ scroll. When this
flag is set, AsyncPanZoomController will apply the delta between the sent
base scroll offset, and sent new scroll offset.

This flag is controlled by the last scroll origin on nsGfxScrollFrame. The
new origin, `relative`, is marked as being able to clobber APZ updates,
but can only be set if all scrolls since the last repaint request or
layers transaction have been relative.

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

--HG--
extra : rebase_source : 51351a84c9cda228a0975e22eda3fd3bd8d261c4
extra : histedit_source : 4b564c19b16fe2bd26adc671b62b7cb6106e8163
2018-10-09 23:24:28 -05:00
Kartikaya Gupta a971a37e5f Bug 1485834 - Allow recomputing the cumulative resolution in ComputeScrollMetadata. r=botond
We need to correctly populate the cumulative resolution field in the
ScrollMetadata in order to support zooming. Without this, the cumulative
resolution doesn't include the presShell resolution, and that results in
APZ getting into an inconsistent state.

Currently, the cumulative resolution is populated from the
ContainerLayerParameters object's scale, but in the case of WebRender,
we call ComputeScrollMetadata with an empty ContainerLayerParameters
since don't actually do layer building or rasterization in Gecko.
This patch makes this more explicit by changing the argument to a
Maybe<ContainerLayerParameters> and passing Nothing() from the WebRender
call sites.

In this scenario, we just use the cumulative presShell resolution as
the cumulative resolution, which should be correct for WebRender as
we won't have an "extra" CSS-derived resolution applied on the Gecko
side.

Depends on D9120

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

--HG--
extra : moz-landing-system : lando
2018-10-19 14:24:50 +00:00
Kartikaya Gupta 11b43679d8 Bug 1421825 - Fix crash and re-enable crashtest. r=jrmuizel
In some cases we get a gecko display list that looks like this:

WrapList with asr(<A>, <B>)
  Item with asr (<B>) and clipchain(<something> [A])

In this case, we would initialize the WebRenderLayerScrollData for the
nested item using a stop-at ancestor of A (because that was the leafmost
ASR from the containing WrapList) but the item itself has an ASR of B,
which is an ancestor of A. So when walking up from B we'd never hit the
stop-at ancestor, and so we'd end up duplicating metrics from the
containing WRLSD onto the nested WRLSD. This generated an assertion
failure in the APZ code.

This patch detects this scenario and skips adding metrics on the nested
WRLSD. This produces an APZ tree equivalent to what the non-WebRender
path would produce.

MozReview-Commit-ID: 8eo6pzXXKBd

--HG--
extra : rebase_source : 0581c54c4d9fa6ca08249e42b306c7155022bec7
2018-07-10 09:37:40 -04:00
Kartikaya Gupta d067a7cdae Bug 1452390 - Implement paint-skipping support in WebRender. r=botond
The majority of this patch is just plumbing. The interesting parts are
in WebRenderLayerManager and APZUpdater/WebRenderScrollData. Unlike
ClientLayerManager, which updates the FrameMetrics on the client side
and sends the modified version over to the compositor, this WR version
just sends the update info over to the compositor, which then applies
the update to the metrics saved in APZUpdater before triggering the
hit-testing tree rebuild.

MozReview-Commit-ID: 4latUMa8RFw

--HG--
extra : rebase_source : d0aeaf5a9c8107bbcaf8b0da6d68a0f47f455be5
2018-05-11 21:18:22 -04:00
Kartikaya Gupta 1324d322fd Bug 1452390 - Make WebRenderScrollData::HasMetadataFor work properly on the parent side. r=botond
MozReview-Commit-ID: A2ScgCFVZ8J

--HG--
extra : rebase_source : 981b8ca3e5916397db0db523a044d4e984359e79
2018-05-11 21:18:21 -04:00
Kartikaya Gupta 8cc14c6513 Bug 1451168 - Ensure the transforms from ancestor stacking contexts are combined properly. r=jrmuizel
When passing the transforms from nsDisplayTransform items down to the
descendant display items, we need to make sure they are combined properly
so that the "ancestor transform" on the APZ side is correctly computed.

MozReview-Commit-ID: Di1FBLYGef5

--HG--
extra : rebase_source : 736e7cd375681f84ca2db8e6b98bf1a7525431d4
2018-05-01 16:31:23 -04:00
Jamie Nicol e8077ba4d8 Bug 1449608 - Avoid calling ComputeScrollMetadata repeatedly for same scroll frame and clip. r=mstange
Currently in ContainerState::SetupScrollingMetadata we call
ComputeScrollMetadata for every layer and for each ASR in the layer's
clip chain. If there are many sibling layers with the same clip then
this is largely wasted work.

This change makes us cache the most recently calculated result, and
only recalculate if the ASR or clip is different.

There was a small portion of ComputeScrollMetadata that must actually
be executed for every layer and ASR in its clip chain. This has been moved
to a separate function, ClipLayerToDisplayPort, that is still called
every time.

MozReview-Commit-ID: 7Zzblmimtc5

--HG--
extra : rebase_source : 85ee310ceaaff5fa8a1ccb513ffaf90904ace19d
2018-04-19 14:48:04 +01:00
Narcis Beleuzu cf9dd5bc32 Backed out changeset 544e2832e783 (bug 1449608) for bustages "xul.dll : fatal error LNK112". CLOSED TREE 2018-04-24 21:06:41 +03:00
Jamie Nicol bc72f195fb Bug 1449608 - Avoid calling ComputeScrollMetadata repeatedly for same scroll frame and clip. r=mstange
Currently in ContainerState::SetupScrollingMetadata we call
ComputeScrollMetadata for every layer and for each ASR in the layer's
clip chain. If there are many sibling layers with the same clip then
this is largely wasted work.

This change makes us cache the most recently calculated result, and
only recalculate if the ASR or clip is different.

There was a small portion of ComputeScrollMetadata that must actually
be executed for every layer and ASR in its clip chain. This has been moved
to a separate function, ClipLayerToDisplayPort, that is still called
every time.

MozReview-Commit-ID: 7Zzblmimtc5

--HG--
extra : rebase_source : 4554f908f42f761ddb2fca9be6bbe688c194c756
2018-04-19 14:48:04 +01:00
Andreea Pavel 14cb4908a0 Backed out changeset b443e56d2f62 (bug 1449608) for build bustages on a CLOSED TREE 2018-04-24 00:16:58 +03:00
Jamie Nicol d361ce7995 Bug 1449608 - Avoid calling ComputeScrollMetadata repeatedly for same scroll frame and clip. r=mstange
Currently in ContainerState::SetupScrollingMetadata we call
ComputeScrollMetadata for every layer and for each ASR in the layer's
clip chain. If there are many sibling layers with the same clip then
this is largely wasted work.

This change makes us cache the most recently calculated result, and
only recalculate if the ASR or clip is different.

There was a small portion of ComputeScrollMetadata that must actually
be executed for every layer and ASR in its clip chain. This has been moved
to a separate function, ClipLayerToDisplayPort, that is still called
every time.

MozReview-Commit-ID: 7Zzblmimtc5

--HG--
extra : rebase_source : d39908b2be2565d22079b3e5e8df56316159a918
2018-04-19 14:48:04 +01:00
Kartikaya Gupta 878b4beba1 Bug 1454485 - Remove redundant fields from WebRenderLayerScrollData and ensure the ScrollbarData is always correctly populated instead. r=botond
MozReview-Commit-ID: JQ9ooeiEIox
2018-04-17 15:04:25 -04:00
Kartikaya Gupta 1ad07c54db Bug 1449478 - Avoid clobbering transforms in the WebRenderScrollData. r=jrmuizel
Due to an oversight in bug 1423370, the code I added was setting the
transform on a WebRenderLayerScrollData after initializing it, but the
initialization might have populated the transform. Thus the
transform-set that I added would have clobbered the transform. This
updates the code to combine the two transforms instead which avoids
the clobber.

MozReview-Commit-ID: 4mKJTLSMD9J

--HG--
extra : rebase_source : c486c5866739ab040d81f9f9a43b2b8a04c2d383
2018-03-28 06:32:06 -04:00
Kartikaya Gupta 395eaf8c66 Bug 1448490 - Make the layers id a struct instead of a uint64_t. r=mattwoodrow
The new struct is in LayersTypes.h, all the rest of the changes are just
replacing existing uint64_t instances with the new LayersId struct.

Note that there is one functional change, in
CompositorBridgeParent::DeallocPWebRenderBridgeParent, where we now
correctly convert the PipelineId to a LayersId before using it to index
into sIndirectLayerTrees, whereas before we were incorrectly just using
the mHandle part of the PipelineId.

MozReview-Commit-ID: GFHZSZiwMrP

--HG--
extra : rebase_source : d2b274f63aaee2ee9bba030297e0a37a19af0d6c
2018-03-24 19:06:01 -04:00
Kartikaya Gupta 26139682b6 Bug 1441324 - Introduce an empty APZInputBridge protocol managed by PGPU. r=rhunt
This just adds the boilerplate that goes with the new protocol, without
adding any of the actual messages. The protocol is managed by PGPU, and
there will be one instance per compositor. The parent side lives on the
main thread of the GPU process, and the child side lives on the main
thread of the UI process. The protocol is only instantiated if the GPU
process is active.

MozReview-Commit-ID: J4VzwmEfYTa

--HG--
extra : rebase_source : 397ddda8b0e76e5ed5f63783b1220ed7b4414d99
2018-03-16 16:28:19 -04:00
Kartikaya Gupta 0d32b18eda Bug 1376044 - Remove dead code left over from layers-full WR implementation. r=jrmuizel
MozReview-Commit-ID: FBTm1EgJ70T

--HG--
extra : rebase_source : 752694c857e76bb479eabacbfa134644f57fb3de
2017-11-30 13:09:06 -05:00
Kartikaya Gupta 0fab36e756 Bug 1418387 - Propagate scrollbar direction for scrollbar containers to APZ. r=botond
Most of this patch is just mechanical changes, but note that this patch
now makes the mFlags in scrollbar-container nsDisplayOwnLayer instances
have one of the direction bits set. As a result, this requires changing
the implementation of nsDisplayOwnLayer::IsScrollThumbLayer().

MozReview-Commit-ID: 2BLdbpz5Sa8

--HG--
extra : rebase_source : 27e7d90ce60c7f702fe77d8a3a0f7e3ae3e4a4ff
2017-11-24 16:23:05 -05:00
Kartikaya Gupta 86ac46d3f7 Bug 1412112 - Cache the view id on the ASR to speed up the ViewIDForASR operation. r=mstange
This also moves the function from nsLayoutUtils to be a function on the
ASR itself, which seems more appropriate.

MozReview-Commit-ID: 88lUmYi80P0

--HG--
extra : rebase_source : 3f7e4f875c3267f9f4c5c67e720912ceedb25719
2017-11-23 12:22:22 -05:00
Kartikaya Gupta 9d9fb92aed Bug 1417519 - Log layers id as a hex value. r=botond
These days (at least with webrender enabled), the layers id is created
by mashing together two uint32 values into the uint64. Printing it as in
base 10 produces some large number near the 32-bit boundary, and it's
much more legible/easier to compare when printed in hex.

MozReview-Commit-ID: JsGhqyLtDBv

--HG--
extra : rebase_source : ed60d26d8223d968f37e8d933e60b1ee6552d1e9
2017-11-17 10:54:23 -05:00
Kartikaya Gupta 0b55cc54f3 Bug 1416073 - Avoid calling the expensive ComputeScrollMetadata function if we already computed that metadata before. r=jrmuizel
MozReview-Commit-ID: 5SwAEA4Wpqw

--HG--
extra : rebase_source : 1c717c3f0cfb1c5a94970d5d7cc267ee9570c0ad
2017-11-09 23:18:39 -05:00
Kartikaya Gupta d5cf7941e2 Bug 1415225 - Remove dead code. r=jrmuizel
This code has been unused since the removal of layers-full WR codepaths.

MozReview-Commit-ID: JQn55Kbz5rr

--HG--
extra : rebase_source : af6995265c02a1ddfccbc37adb633bc2b240ec8b
2017-11-09 09:03:51 -05:00
Sebastian Hengst 8916884b22 Backed out 6 changesets (bug 1415225) for frequently failing own gfx/layers/apz/test/mochitest/test_group_overrides.html on Windows. r=backout
Backed out changeset 27403a9dec13 (bug 1415225)
Backed out changeset 9e6710586531 (bug 1415225)
Backed out changeset 8cfef302b710 (bug 1415225)
Backed out changeset 8ae80d7421d5 (bug 1415225)
Backed out changeset 5f14fc545115 (bug 1415225)
Backed out changeset 4704645d4e81 (bug 1415225)
2017-11-09 11:59:04 +02:00
Kartikaya Gupta 7b31712d93 Bug 1415225 - Remove dead code. r=jrmuizel
This code has been unused since the removal of layers-full WR codepaths.

MozReview-Commit-ID: EAhRrZXLKKr

--HG--
extra : rebase_source : c33f915461c724c61b11804a9cecb960728fd6df
2017-11-08 20:47:18 -05:00
Daniel Holbert 126bd9e1a4 Bug 1412427 part 8: (automated patch) Switch a bunch of C++ files in gfx to use our standard mode lines. r=jrmuizel
This patch was generated automatically by the "modeline.py" script, available
here: https://github.com/amccreight/moz-source-tools/blob/master/modeline.py

For every file that is modified in this patch, the changes are as follows:
 (1) The patch changes the file to use the exact C++ mode lines from the
     Mozilla coding style guide, available here:
https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Coding_Style#Mode_Line

 (2) The patch deletes any blank lines between the mode line & the MPL
     boilerplate comment.

 (3) If the file previously had the mode lines and MPL boilerplate in a
     single contiguous C++ comment, then the patch splits them into
     separate C++ comments, to match the boilerplate in the coding style.

MozReview-Commit-ID: 77D61xpSmIl

--HG--
extra : rebase_source : c6162fa3cf539a07177a19838324bf368faa162b
2017-10-27 16:10:06 -07:00
Kartikaya Gupta bec5f23434 Bug 1411238 - Make APZ test logging work in layers-free WR mode. r=botond
Most of this change is just fiddling with function signatures so that they take
a LayerManager* instead of a Layer* (or in some cases, both). This allows
the WebRender codepaths to pass a WebRenderLayerManager* instead of having to
produce a Layer* which it doesn't have.

MozReview-Commit-ID: Fb0C8OUVDin

--HG--
extra : rebase_source : e4c3324cfa20c295db85d5c09df8d8d77865bb6a
2017-10-25 13:22:04 -04:00
Kartikaya Gupta f397e9054a Bug 1395670 - In webrender layers-free mode, don't add a root scroll metadata if we already have it elsewhere in the tree. r=mstange
MozReview-Commit-ID: B9LY4v9t11Y

--HG--
extra : rebase_source : e6ffb4c7a54e0584a3a4939a3bca34276b69478b
2017-08-31 17:07:41 -04:00
Morris Tseng c956c9f91d Bug 1379920 - Fix unified build error. r=nical
MozReview-Commit-ID: Dx50fOh737p
2017-08-03 13:55:13 +08:00
Kartikaya Gupta 89f405f2be Bug 1384616 - Allow building a tree structure in WebRenderScrollData for layers-free transactions. r=jrmuizel
The three main changes in this patch are:
(1) Move the code to emplace_back a new WebRenderLayerScrollData to
after the display list recursion. This is necessary so that when we
empty the temporary mLayerScrollData stack into the final mScrollData
structure things end up in the right order.
(2) Maintain a stack of ASRs as we recurse so that when we are building
a given WebRenderLayerScrollData, we don't add scroll metadatas that
are already present on its ancestors.
(3) Compute the number of descendants created for each layer scroll
data item and record it, so that we can properly reconstruct the
shape of the tree.

MozReview-Commit-ID: BSdX78AqBNZ

--HG--
extra : rebase_source : 0bb4133572d74fb756476e1c5954b17f114fe7d0
2017-07-31 15:27:29 -04:00
Kartikaya Gupta 3b8aaa896a Bug 1384616 - Change how display items put their APZ-relevant info into the WebRenderScrollData. r=jrmuizel
Instead of the WebRenderLayerScrollData code knowing about all the
different display item types, it makes more sense to move this logic
into the display items.

In addition to avoiding dis-encapsulating the data from nsDisplayItem subclasses,
this makes it easier to handle two specific scenarios:
(1) the case where an nsDisplayItem A subclasses another nsDisplayItem B, but A
and B have different types returned by GetType(). Previously A and B would have
to be handled explicitly in the WebRenderLayerScrollData switch statements,
which doesn't scale well if new types are added. With the new approach the
virtual function is shared down from A to B and so takes care of it. This is
particularly relevant for types like nsDisplayOwnLayer which have a number of
subclasses.

(2) the case where a display item *might* have APZ-relevant information.
In this case the type of the item alone is not sufficient to determine
if we need to create a new WebRenderLayerScrollData for it. Instead, we
need to access specific state inside the display item. This is now
handled by the UpdateScrollData function returning true when passed
nullptr arguments, and replaces the switch statement in
WebRenderLayerManager that updated forceNewLayerData.

MozReview-Commit-ID: FlfHlgSccSn

--HG--
extra : rebase_source : d1fe841724cc6020433aea31ffb5214d8a44d0a9
2017-07-31 15:27:29 -04:00
Kartikaya Gupta 1220276afe Bug 1384181 - Add utility dump functions for debugging. r=jrmuizel
MozReview-Commit-ID: 5YJLGhnMkwG

--HG--
extra : rebase_source : b705d1db828b14d5829ee88aa3b0cebfef0e0b6f
2017-07-26 14:47:49 -04:00
Kartikaya Gupta 5da102e5d4 Bug 1384181 - Build WebRenderLayerScrollData instances for remote layer trees. r=jrmuizel
This adds handling for nsDisplayRemote frames, so that we create a
WebRenderLayerScrollData item for each nsDisplayRemote frame that we
encounter. This is the equivalent of a "ref layer" in a normal layer
tree, and allows the APZ side to glue together the scroll data from
different processes into a full tree.

MozReview-Commit-ID: 3lgsqtCKQya

--HG--
extra : rebase_source : eb93be1ef415349e00c09d7274d49fcf7992d197
2017-07-26 14:47:48 -04:00
Kartikaya Gupta 7a6592bf98 Bug 1384181 - Ensure that the WebRenderScrollData has a single root layer node. r=jrmuizel
The semantics of the WebRenderScrollData structure is that the per-layer
structures form a tree with a single root node. When we build the data
structure from the display list, we are generating (for now) a flat
list. Therefore we need to synthesize a root node in order to make stuff
work as intended.

MozReview-Commit-ID: IDXyziBO7pk

--HG--
extra : rebase_source : 99486a4c5b5e9938c4b7bbaa3f710d25e73d4401
2017-07-26 14:47:48 -04:00
Kartikaya Gupta 1766bdd4ab Bug 1384181 - Reorganize the WebRenderScrollData code to work with layers-free transactions. r=jrmuizel
Until now WebRenderScrollData was only used with "layers" WR
transactions, but we want to use it with layers-free transactions as
well. As such, we need to allow collecting information from display items
instead of layers. This restructures the code a little bit to allow
that. This patch should not have any functional effect on the "layers"
codepath, but on the "layers-free" codepath it is now actually
populating some rudimentary data into the WebRenderScrollData before
sending it across. This will be fleshed out in future patches.

MozReview-Commit-ID: BROqpsHPRND

--HG--
extra : rebase_source : 8510c52895e6be5cb546b42b02d56ec067de0623
2017-07-26 14:47:48 -04:00
Kartikaya Gupta 4dfe8eadc0 Bug 1382200 - Change implementation of the LayerMetricsWrapper IsScrollInfoLayer to use the metrics flag. r=botond
This also updates the WebRenderScrollDataWrapper function as it is meant
to be semantically equivalent to the LayerMetricsWrapper one, which
allows removal of a flag propagation.

MozReview-Commit-ID: 9DBx4qbhq5A

--HG--
extra : rebase_source : 3201d8a4bb7192ecdbe95983b605ac53b1a28c50
2017-07-19 09:24:24 -04:00
Ryan Hunt 0785b2f849 Bug 1351783 part 11 - Sync FocusTarget with WebRenderLayerManager. r=kats
MozReview-Commit-ID: LxWt22XY5IE

--HG--
extra : rebase_source : c8eb965d1737d4f6791d96d4f975a31365790632
2017-06-13 02:43:59 -04:00