Commit Graph

60 Commits

Author SHA1 Message Date
Kartikaya Gupta
c4fd192cd9 Bug 1376215 - Stop exposing the WrClipRegionToken in WebRenderAPI.h APIs. r=jrmuizel
No functional changes intended in this patch. It merely simplifies the
additional patch that we'll need to update gecko past WR cset 0bf6655,
and saves some potential manual rebasing work.

MozReview-Commit-ID: Km8dBotP3NQ
2017-06-26 07:49:52 -04:00
Carsten "Tomcat" Book
050bc3b644 Backed out changeset 504e5b1de987 (bug 1376215) for bustage 2017-06-26 13:07:09 +02:00
Kartikaya Gupta
44a6c1a913 Bug 1376215 - Stop exposing the WrClipRegionToken in WebRenderAPI.h APIs. r=jrmuizel
No functional changes intended in this patch. It merely simplifies the
additional patch that we'll need to update gecko past WR cset 0bf6655,
and saves some potential manual rebasing work.

MozReview-Commit-ID: AgMyNapY2Og
2017-06-25 14:45:54 -04:00
Kartikaya Gupta
23022b68fb Bug 1372603 - Remove unnecessary clip from container layers. r=jrmuizel
MozReview-Commit-ID: F6VnThG5QFI
2017-06-14 15:43:17 -04:00
Kartikaya Gupta
9ad40e6fb9 Bug 1372603 - Push the layer's local clip rect outside the stacking context. r=jrmuizel
For various reasons, we want to be pushing the layer's local clip rect
outside of the stacking context rather than inside it. Not only is this
more correct with respect to the semantics of the layer tree, we also
need it in order to properly handle fixed-positioning of layers with
async scrolling.

This patch does the bulk of the work to make this happen. Most of the code
in the individual layer classes to process the layer's local clip rect
is removed, and instead a function in ScrollingLayersHelper is added to
deal with it. There are a couple of places that individual layer classes
still handle this but those will be removed in future patches. Note that
the individual layer classes still need to provide a clip rect of some
sort in order to push their display items, and now they simply use their
visible region bounds for this purpose.

MozReview-Commit-ID: IBmfUdJwYx1
2017-06-14 15:43:16 -04:00
Martin Robinson
c3c1ed22cd Bug 1365972 - Add initial WebRender support for nsDisplayFilter. r=rhunt, r=mattwoodrow 2017-06-06 06:28:00 -04:00
Kartikaya Gupta
a46130d11c Bug 1368551 - Don't send transforms to WR in push_stacking_context if they are identity. r=pchang
If we set a transform in push_stacking_context, it changes the internal
WebRender behaviour to make that stacking context a reference frame, and
things inside it are positioned differently. This is true even if the
transform is an identity transform.

In most cases we are hitting this and sending an identity transform
through, when in fact we want to be sending a None value to WebRender so
that it doesn't create reference frames. This is a partial fix, a proper
fix will be done in bug 1345577 by separating the CSS transform from the
other transforms that FrameLayerBuilder invents.

MozReview-Commit-ID: ElSs3hFMD2D
2017-06-01 09:17:17 -04:00
Kartikaya Gupta
b71424ac7c Bug 1364525 - Ensure all scroll thumbs have an animations id. r=pchang
In order to have the scrollbar thumbs reflect the async scroll position, we're
going to re-use the API for OMTA. That is, we set an animation id on the
stacking context for the scroll thumb, and we'll update the transform on the
stacking context at composite time based on the async scroll position. For this
to work we need to ensure that the scroll thumb does in fact have an
animation id set on it.

MozReview-Commit-ID: 6TvRemxRUrR
2017-05-23 10:50:41 -04:00
Kartikaya Gupta
cc1457011b Bug 1361497 - Push scrolling clips for scrollable layers in the layer tree. r=jrmuizel
This adds an RAII helper and uses it in RenderLayer functions. When APZ
is enabled, the RAII helper pushes a scrolling clip for each scrollable
metrics on the layer. It also pops off the scrolling clips on
destruction. Note that this should happen before any other things are
pushed into the WR display list for the rendering of a layer, since
those things should be subjected to the enclosing scrolling clips.
If APZ is disabled, this skips pushing the scrolling clips.

MozReview-Commit-ID: 1qv9egKbbok
2017-05-12 13:58:15 -04:00
Alexis Beingessner
6ec49a9792 Bug 1361751 - Update gecko bindings to webrender to reflect changes in PR 1181. r=kats
MozReview-Commit-ID: Fxt4sNm4vxa
2017-05-08 13:52:16 -04:00
Kartikaya Gupta
41854dac48 Bug 1361356 - Properly unapply the stacking context transform and origin translation when building mask layers. r=ethlin
MozReview-Commit-ID: B5XzX6Tq4PZ
2017-05-05 11:44:49 -04:00
Kartikaya Gupta
7fa865dac2 Bug 1361807 - Use the transformed bounds for WebRenderRefLayer, as it doesn't push a stacking context. r=nical
MozReview-Commit-ID: B2LlHENCMm8
2017-05-04 10:08:23 -04:00
Kartikaya Gupta
f26d6d162e Bug 1360246 - Remove the RelativeToParent functions by propagating StackingContextHelper chains. r=nical
The only remaining callers of RelativeToParent() are in
StackingContextHelper itself, which we can remove now by having the SCH
take a parent SCH and use it instead of RelativeToParent(). This patch
implements this change.

This makes a failing test pass, because of how preserve-3d container
layers work. Specifically, preserve-3d container layers render their
descendants in z-order, not in tree order. If those children were assuming
that their parent had already pushed a stacking context, that assumption
may have been false because the parent might have not yet been rendered
because of z-ordering. By using the StackingContextHelper chain instead
of the layer tree ancestry, we fix the stacking-context-relative coordinates
being used in the descendant subtree of preserve-3d container layers.

MozReview-Commit-ID: HzZvBuAlMdB
2017-05-03 08:48:08 -04:00
Kartikaya Gupta
f84c30f853 Bug 1360246 - Clean up WebRenderRefLayer::RenderLayer. r=nical
This cleans up WebRenderRefLayer::RenderLayer to use typed coordinate
systems and the StackingContextHelper. Note that this patch contains a
functional change, because the clip rect pushed no longer includes the
transform on the ref layer itself. It's not clear to me why we were doing
that, and didn't seem correct.

MozReview-Commit-ID: K7FoeLnXc56
2017-05-03 08:48:07 -04:00
Kartikaya Gupta
b87a58caed Bug 1360246 - Propagate a StackingContextHelper all the way through the RenderLayer traversal. r=nical
This is needed in part 3 to update WebRenderTextLayer::RenderLayer, so
that it no longer assumes the parent container layer has pushed a
stacking context, and instead explicitly uses the StackingContextHelper.

MozReview-Commit-ID: 9twUmDgUipX
2017-05-03 08:48:06 -04:00
peter chang
62b88be50c Bug 1358437 - fix compiler error, r=me
MozReview-Commit-ID: H2VAWFiONAf
2017-05-02 10:56:52 +08:00
peter chang
ab262ee631 Bug 1358437 - pass layer's transform/opacity to compositor, r?kats
Need to pass the default transform/opacity to compositor if animations
exist because it is possible that gecko fails to get animated value
after animation sampling, like an animation with delay.

MozReview-Commit-ID: IK06hWvaSPf
2017-05-02 10:38:22 +08:00
peter chang
fcfea67107 Bug 1358437 - Setup correct opacity/transform in stacking context when there exists opacity/transform aniamtions. r?kats
Pass empty opacity(transform) in stacking context when there exists opacity(transform) animations and
the final opacity(transform) value will be resolved on the compositor after animation sampling

MozReview-Commit-ID: 6pF9Oe8Ks2I
2017-05-02 10:29:54 +08:00
peter chang
1b7e955401 Bug 1358437 - pass layer's transform attributes for transform animation, r?kats
MozReview-Commit-ID: J7JHuwvWuet
2017-05-02 10:29:42 +08:00
peter chang
da7e930e78 Bug 1357320 - Deal with the lifetime of compositor animations, r?kats
First, hook the Layer's ClearAnimation API to delete unnecessary
animations in next layer transaction. Second, add another async
DeleteCompositorAnimations API to delete animations on the compositor,
especially calling this API before WebRenderLayerManager got destroyed.

MozReview-Commit-ID: 4mbj5IgsXYa
2017-05-02 10:26:13 +08:00
Kartikaya Gupta
3928dd684f Bug 1359842 - Use the StackingContextHelper for WebRenderContainerLayer as well. r=nical
MozReview-Commit-ID: DXhhBB3qdzX
2017-04-27 12:04:25 -04:00
Kartikaya Gupta
84a2895fe0 Bug 1359842 - Remove if/else branch in WebRenderContainerLayer so it goes through a single PushStackingContext call. r=nical
This is functionally equivalent since one variant of the
PushStackingContext was already delegating to the other (in
DisplayListBuilder).

MozReview-Commit-ID: 8PfMm3bHeSZ
2017-04-27 12:04:25 -04:00
Kartikaya Gupta
52f3a8a0d9 Bug 1359842 - Convert RelativeToParent to deal with typed units. r=nical
As we are often converting from LayoutDevicePixel to LayerPixel types
in WebRenderDisplayItem code, I added a convenience overload of
RelativeToParent that takes a LayoutDeviceRect and returns a LayerRect,
even though this is a potential footgun if abused.

MozReview-Commit-ID: DABAWdOBsbV
2017-04-27 12:04:13 -04:00
Kartikaya Gupta
7257f000ad Bug 1357065 - Add a PushClip/PopClip API to WebRenderAPI to more easily distinguish between scrolling clips and non-scrolling clips. r=jrmuizel
Note that in upstream WR the push_scroll_layer API has already been
renamed to push_clip_node, so conceptually the same API covers both
"scrolling clips" (aka scroll layers) and non-scrolling clips. So using
the same underlying API for two different WebRenderAPI.h functions makes
sense.

MozReview-Commit-ID: He7jBVqZuLn
2017-04-18 11:09:39 -04:00
peter chang
cd7a66ce9a Bug 1345017 - Disable OMTA with webrender by default, r=kats
MozReview-Commit-ID: 4cA8n8XYall
2017-04-17 22:22:47 +08:00
peter chang
6a13a09f50 Bug 1345017 - Discard compositor animations on the next layer transaction, r=kats
Animations in content side could be removed easily by changing CSS, but the
CompositorAnimationStorage in parent side doesn't get updated. Therefore,
we store the layer's CompositorAnimationsId before layer is destroyed in
WebRenderLayerManager and then send out these discarded ids to parent on
the next layer transaction.

MozReview-Commit-ID: D4kbYsgLl4P
2017-04-14 11:58:42 +08:00
peter chang
f11c1bde12 Bug 1345017 - Add animation sampling for WR, r=kats
MozReview-Commit-ID: AR2vajUf2o0
2017-04-12 16:40:48 +08:00
peter chang
1e962dcfad Bug 1345017 - pass animation data from content to WebRenderBridgeParent, r=kats
MozReview-Commit-ID: 7p5ocyr1ywV
2017-03-28 17:11:03 +08:00
Ethan Lin
637a373447 Bug 1355012 - Add mask layer support for WebRenderDisplayItemLayer. r=kats 2017-04-13 15:13:51 +08:00
Kartikaya Gupta
3cd9ae859b Bug 1355602 - Decouple pushing scroll layers from pushing stacking contexts. r=jrmuizel
This removes the call to push_scroll_layer in wr_push_stacking_context, so that
it's now possible to push a stacking context without necessarily pushing a
scroll layer. There is already a separate function to push a scroll layer so the
call sites can do that. This patch just changes all the call sites that were
pushing a stacking context to also push a scroll layer, so there should be no
functional change. Future patches can remove the spurious scroll layers.

MozReview-Commit-ID: FtCkc9JQd8l
2017-04-11 17:04:59 -04:00
Ryan Hunt
6ecc4704b8 Bug 1345975 - Clean up WebRenderLayer code r=kats
MozReview-Commit-ID: DWlAaJwuxlD
2017-03-09 12:35:33 -05:00
Ryan Hunt
d7f00f1fa2 Bug 1345907 - Use clip region instead of clip rect r=kats 2017-03-09 11:57:06 -05:00
Mason Chang
01aeb6725a Bug 1345523 - Clean up duplicated WebRenderLayer code. r=kats 2017-03-08 10:32:53 -08:00
Jeff Muizelaar
677ccdea94 Bug 1344396. Build the display lists directly. r=kats
This is a largely uninteresting patch that just uses the DisplayListBuilder
directly. A wonderful cleanup patch will come after this. One of the more
interesting pieces is the use of PushBuiltDisplayList. This is needed for
handling empty transactions. See https://github.com/servo/webrender/pull/934
for more info.
2017-03-06 23:16:30 -05:00
Ryan Hunt
2c877fa601 Bug 1340908 - Include LayersLogging.h not WebRenderLayersLogging.h r=kats 2017-02-19 14:00:41 -05:00
Kartikaya Gupta
4979fd659f Merge m-c to graphics
MozReview-Commit-ID: IN2hMCjMHLL
2017-02-17 23:33:24 -05:00
Ethan Lin
63ff68e219 Bug 1332688 - Pass transform to webrender stacking context. r=jrmuizel 2017-02-17 14:57:43 +08:00
Nicolas Silva
1819922f47 Bug 1335799 - Update WR layers and FFI/bindings code for the webrender update. r=jrmuizel
MozReview-Commit-ID: Hv3MwSr97Op
2017-02-14 13:34:15 -05:00
Ethan Lin
9f2cf9d3c3 Bug 1330945 - Part1. Apply opacity to webrender stacking context as an opacity filter. r=jrmuizel 2017-02-02 15:09:09 +08:00
Ryan Hunt
b41e456e1e Bug 1335123 - Clean up layers logging for WebRenderLayers. r=kats 2017-01-30 12:48:01 -06:00
Ryan Hunt
e7c01364c4 Bug 1329739 - Specify a WrMixBlendMode for WebRenderLayer r=kats 2017-01-19 17:57:18 -06:00
peter chang
241bc68f10 Bug 1325022 - Pass layers::Animation data to WebRenderBridgeParent, r=gfx?
MozReview-Commit-ID: 7M3aXiEGCfL
2017-01-19 10:38:14 +08:00
Nicolas Silva
2a11b5310c Bug 1328602 - Make it possible to enable the work-in-progress render thread code using MOZ_USE_RENDER_THREAD and ugly branching, hopefully temporarily. r=gfx? 2017-01-18 18:46:21 -05:00
Nicolas Silva
67c7d94680 Bug 1331515 - More WR to Wr prefix conversion. r=gfx? 2017-01-17 10:17:38 -05:00
Nicolas Silva
71ce50e60a Bug 1331515 - WR to Wr prefix conversion for more ffi types. r=gfx? 2017-01-17 09:53:57 -05:00
Nicolas Silva
171a41b90f Bug 1331515 - Rename WRRect into WrRect. r=gfx? 2017-01-17 09:32:16 -05:00
Nicolas Silva
e9678a4d84 Bug 1331515 - Move some types to the mozilla::wr namespace. r=gfx? 2017-01-16 19:22:09 -05:00
Jeff Muizelaar
87f69cec24 Bug 1313735. Add mask layer support. r=gfx? 2017-01-13 22:12:15 -05:00
Ethan Lin
4afe96d0db Bug 1330574 - Part1. Correct WebRenderContainerLayer overflow rect. r=kats 2017-01-13 17:28:00 +08:00
Ryan Hunt
2cdc43e1ab Bug 1330511 - Don't draw WebRenderLayers with IsBackfaceHidden r=gfx? 2017-01-11 22:13:55 -06:00