Commit Graph

10690 Commits

Author SHA1 Message Date
sotaro
23069babc9 Bug 1401609 - Add UpdateWebRenderCanvasData() to handle CanvasRenderer re-creation r=jrmuizel,mstange 2017-10-28 19:07:27 +09:00
Sebastian Hengst
831f2ed98f merge mozilla-inbound to mozilla-central. r=merge a=merge
MozReview-Commit-ID: oIdBL7fmlE
2017-10-28 10:31:58 +02:00
sotaro
4461b5e90f Bug 1408573 - Change buffer allocation to fallible r=nical 2017-10-28 07:30:13 +09:00
Jeff Muizelaar
ed62b1d4a1 Bug 1380014. Share fonts with WebRender. r=lsalzman
This changes the serialization format a little bit.
We now have an index at the end of the blob. This
is currently used to store a list of the used font keys.
In the future we'll add rects and can use it for invalidation.
2017-10-27 18:21:27 -04:00
Jeff Muizelaar
2922532654 Bug 1380014. Expose GetFontKeyForUnscaledFont. r=lsalzman
We'll use this to share fonts with BlobImages
2017-10-27 18:21:25 -04:00
sotaro
9ddfb11820 Bug 1412246 - Fix memory leak with WebRenderLayerManager::EndEmptyTransaction() r=nical 2017-10-28 06:54:56 +09:00
Kartikaya Gupta
e7b42ecace Bug 1411249 - Handle yet more clipping cases. r=mstange
This extends the fix in bug 1373802 to account for extra levels of
display item nesting. If those extra intermediate display items don't
push any clips we still want to pick up the ClipAndScroll from the
enclosing ancestor that has it.

MozReview-Commit-ID: AmxRz4fBKnX

--HG--
extra : rebase_source : ae12a9f797ab201169ff199d0d42a29df51ee1cb
2017-10-27 13:22:16 -04:00
Kartikaya Gupta
3d6ab7288b Bug 1373802 - Handle more clipping cases. r=mstange
We already support cases where we have scrolling clips applied to fixed
items. However if we had to build nested clips inside those items, then
those nested clips would not properly inherit from the scrolling clips.
This patch addresses that case.

MozReview-Commit-ID: CWp1x0EsyaP

--HG--
extra : rebase_source : f8c80ace2da39edebaabd5339670a68038a18489
2017-10-27 11:41:37 -04:00
Kartikaya Gupta
b7e231bc45 Bug 1410777 - Force a full transaction for WR when the window overlay changes. r=mstange
The window buttons are drawn as part of the AddWindowOverlayWebRenderCommands
function which is invoked in the full-transaction codepath. It should be possible
to have the empty transaction codepath simply update the image (without building
a full WR display list) and do a recomposite. That would be more performant but
it requires some plumbing to build and ship across a IpcResourceUpdateQueue on
empty transactions.

MozReview-Commit-ID: 2Mrb0wELD6E

--HG--
extra : rebase_source : 9a94c32f94403050835bf3445176f4fe2c1579fa
2017-10-26 14:17:19 -04:00
Kartikaya Gupta
75717cb048 Bug 1410777 - Remove unused function and dead code left over from the layers-full WR days. r=mstange
This is functionally unrelated to the bug but I noticed it while fiddling with
the code, and the lines affected are kind of intertwined with the next patch so
I'm just doing the code removal as part of this bug.

MozReview-Commit-ID: CwmluhyCdbR

--HG--
extra : rebase_source : 0a86ba7299f63587b77c44fadc804e34ada5a474
2017-10-26 14:17:18 -04:00
Boris Chiou
0576efed8c Bug 1340005 - Part 7: Switch compositor animations to Servo backend for desktop. r=birtles,hiro,nical
We want to always use Servo animation backend on the compositor.
However, Android doesn't support Stylo now, so add a defined flag for it.

MozReview-Commit-ID: 63MnTBnq6yv

--HG--
extra : rebase_source : dce46737f81e4e217e9fd67b6bec722994dca6a2
2017-10-27 21:13:27 +02:00
Boris Chiou
3788926119 Bug 1340005 - Part 6: Move AppendTransformFunction into AnimationValue struct. r=birtles
MozReview-Commit-ID: KhjKXxkllEF

--HG--
extra : rebase_source : 6f22a5f0a90f3f3d160f64c67e6fd6d04a2c1441
2017-10-17 13:11:19 +08:00
Boris Chiou
387cd4d8a1 Bug 1340005 - Part 5: Implement SampleValue for Servo backend. r=birtles
Use the new added FFI, Servo_ComposeAnimationSegment, to compose an
animation segment from Servo backend on the compositor.

MozReview-Commit-ID: LNgpCSIlDl9

--HG--
extra : rebase_source : 5b5c145fae877b4f4b01ea54259737dc9dad2951
2017-10-27 21:09:11 +02:00
Boris Chiou
0129bb4f52 Bug 1340005 - Part 4: Retrieve transform list from AnimationValue. r=birtles
MozReview-Commit-ID: 82NAOBV2rEl

--HG--
extra : rebase_source : 073ff742dcea4573febeec3b57c60b0f1f5736e2
2017-09-25 14:25:43 +08:00
Boris Chiou
743614effe Bug 1340005 - Part 3: Use AnimationValue on the compositor thread. r=birtles
MozReview-Commit-ID: CtnDLsdcr9x

--HG--
extra : rebase_source : 3d4a0f40e2f522471555c04c88474cb08e082851
2017-09-21 17:01:48 +08:00
Boris Chiou
7086921688 Bug 1340005 - Part 2: Implement AnimationValue::Transform. r=birtles
MozReview-Commit-ID: BDKcpDIM9nb

--HG--
extra : rebase_source : 43a5e7f053d746198f422487f7e19f535ccd9dc5
2017-10-27 21:06:30 +02:00
Boris Chiou
701609334e Bug 1340005 - Part 1: Implement AnimationValue::Opacity. r=birtles
We will use Servo backend on the compositor, so implement this for opacity.

MozReview-Commit-ID: BeWR2nBSbjb

--HG--
extra : rebase_source : eb5db3cf04640a83f13857984e792a949f26bcc7
2017-10-27 21:04:52 +02:00
Sebastian Hengst
443416f881 Merge mozilla-central to autoland. r=merge a=merge 2017-10-26 00:39:55 +02:00
Kartikaya Gupta
cf3b87c06e Bug 1410527 - Update how we tell WR about position:sticky elements. r=mstange
My original understanding of the API was flawed, and so while I had
position:sticky working in some cases it didn't work properly in a lot
of other cases. This patch corrects the usage of the API to match what
WR is expecting and fixes a lot of test cases.

MozReview-Commit-ID: AdMux19Fk9U

--HG--
extra : rebase_source : e7f970a710b2079501a91eeeac8c292b603210dc
2017-10-25 15:21:32 -04: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
4c7c7873e4 Bug 1411238 - Make OMTA queries work with layers-free webrender. r=mtseng
MozReview-Commit-ID: Jq57GtjNO3E

--HG--
extra : rebase_source : 15c2e3a4acbc61c60827bf1748ef691f2275fb66
2017-10-25 11:14:41 -04:00
Attila Craciun
7bcf901c3b Merge inbound to mozilla-central r=merge a=merge 2017-10-25 12:30:28 +03:00
Jeff Muizelaar
faa4cd1783 Bug 1410550. Allow updating a dirty rect of a blob image. r=kats 2017-10-24 18:11:04 -04:00
Kartikaya Gupta
d37fe26642 Bug 1405359 - Add some logging code in ScrollingLayersHelper. r=jrmuizel
MozReview-Commit-ID: Lb4UeUxO5HL

--HG--
extra : rebase_source : e5e8c58380055693664bb1a5241bab4d803dfdab
2017-10-24 18:47:24 -04:00
Kartikaya Gupta
4891a7a56f Bug 1405359 - Avoid pushing and popping identical clip stacks for adjacent display items. r=jrmuizel
Instead of unconditionally pushing and popping clips per display item,
this patch changes things so that for each recursive display list, we
create an ItemClips struct. We push this onto the stack when we enter
the display list, and pop it off at the end. For each display item, we
check to see if the clips would actually change compared to the previous
display item, and only do the pop/repush in that case.

MozReview-Commit-ID: J0MCc2V9hWT

--HG--
extra : rebase_source : 8617cfaa7391457867f01c1b619cb871a21bf3f5
2017-10-24 18:47:17 -04:00
Kartikaya Gupta
746bb09454 Bug 1405359 - Make ScrollingLayersHelper a more stateful class. r=jrmuizel
This makes ScrollingLayersHelper a non-RAII type class, and instead adds
methods to notify it of when we start processing a new transaction or a
new display item within the transaction. This patch has no functional
changes, it's non-obvious refactoring.

MozReview-Commit-ID: GEZzCGbVqB1

--HG--
extra : rebase_source : dd4fab7f34da7c5465ba474db670cf583e8dadf4
2017-10-24 18:46:44 -04:00
Kartikaya Gupta
4aa9c4885f Bug 1405359 - Replace the mPushed* variables with a more encapsulated struct. r=jrmuizel
Storing the per-item clip state in a struct like this will allow us to
easily compare the desired clip state across items, so we can avoid
doing unnecessary work when going from one item to the next. This patch
has no functional changes, it's just refactoring.

MozReview-Commit-ID: GX2FX4YDusO

--HG--
extra : rebase_source : 06d7bae5cbae99d2987881f26f7ebd26965c1799
2017-10-24 18:45:28 -04:00
Kartikaya Gupta
ead1f0c769 Bug 1405359 - Stop passing around the clip id cache in all the functions. r=jrmuizel
Instead just keep a ref to it as a member variable. No functional
change.

MozReview-Commit-ID: 9jSBdZRIGuV

--HG--
extra : rebase_source : cd1b2f500e9a833f7d42bce53bdaec2118e0d4c3
2017-10-24 18:45:04 -04:00
Sebastian Hengst
6231274042 Backed out changeset cb49e178390c (bug 1405359) for Windows build bustage in ScrollingLayersHelper.h. r=backout on a CLOSED TREE
--HG--
extra : amend_source : 81b0a5bd94ad8e5d83e455e5a226a578b7060dc4
2017-10-25 00:17:01 +02:00
Sebastian Hengst
1d775e1d29 Backed out changeset f6ce05f8e699 (bug 1405359) 2017-10-25 00:16:55 +02:00
Sebastian Hengst
c10fc4a634 Backed out changeset 154c415885b8 (bug 1405359) 2017-10-25 00:16:49 +02:00
Sebastian Hengst
eecd8d4a11 Backed out changeset 988d6a397ea8 (bug 1405359) 2017-10-25 00:16:43 +02:00
Sebastian Hengst
5a6323a88c Backed out changeset 1593dfc4cf04 (bug 1405359) 2017-10-25 00:16:37 +02:00
Kartikaya Gupta
0950c9499b Bug 1405359 - Add some logging code in ScrollingLayersHelper. r=jrmuizel
MozReview-Commit-ID: 3OLNPHlkO9M

--HG--
extra : rebase_source : dcfbae96dc8de0a5d726140a05b5807e2b03412d
2017-10-24 16:15:00 -04:00
Kartikaya Gupta
3bc78496af Bug 1405359 - Avoid pushing and popping identical clip stacks for adjacent display items. r=jrmuizel
Instead of unconditionally pushing and popping clips per display item,
this patch changes things so that for each recursive display list, we
create an ItemClips struct. We push this onto the stack when we enter
the display list, and pop it off at the end. For each display item, we
check to see if the clips would actually change compared to the previous
display item, and only do the pop/repush in that case.

MozReview-Commit-ID: GadIp2J8TrA

--HG--
extra : rebase_source : ba64c6b4659b8e51cab19b807088b9a50d71b85a
2017-10-24 16:15:00 -04:00
Kartikaya Gupta
1ef110fd03 Bug 1405359 - Make ScrollingLayersHelper a more stateful class. r=jrmuizel
This makes ScrollingLayersHelper a non-RAII type class, and instead adds
methods to notify it of when we start processing a new transaction or a
new display item within the transaction. This patch has no functional
changes, it's non-obvious refactoring.

MozReview-Commit-ID: 3yq9sPiHMge

--HG--
extra : rebase_source : 286423f56de59211e320f015cb1004a1e98332b8
2017-10-24 16:15:00 -04:00
Kartikaya Gupta
7feb6820bd Bug 1405359 - Replace the mPushed* variables with a more encapsulated struct. r=jrmuizel
Storing the per-item clip state in a struct like this will allow us to
easily compare the desired clip state across items, so we can avoid
doing unnecessary work when going from one item to the next. This patch
has no functional changes, it's just refactoring.

MozReview-Commit-ID: 49B6hmsWZ4V

--HG--
extra : rebase_source : 8ac4bbf039f81bc2d26e92924ed041fa3d18e5ba
2017-10-24 16:15:00 -04:00
Kartikaya Gupta
b43a3f46dc Bug 1405359 - Stop passing around the clip id cache in all the functions. r=jrmuizel
Instead just keep a ref to it as a member variable. No functional
change.

MozReview-Commit-ID: 5fccUlSifsA

--HG--
extra : rebase_source : a14672f926c383354db76e553ae23613fe4a432a
2017-10-24 16:14:59 -04:00
Kartikaya Gupta
54a6b4655a Bug 1409446 - Remove old code that is now unused. r=mstange
MozReview-Commit-ID: KEtcbIGTrn3

--HG--
extra : rebase_source : dd2a435cab15930b7d5277d1764eddefd4cca298
2017-10-24 15:46:00 -04:00
Kartikaya Gupta
1dc275308d Bug 1409446 - Switch over to the new code. r=mstange
One of the sticky-pos tests was only passing because of two wrongs that
cancelled each other out in the old code. Specifically, instead of
defining a nested clip with the sticky clip as an ancestor, the clip was being
defined with the root ASR as an ancestor. Both resulted in the nested
clip not scrolling with the actual scrolling scrollframe and so the test
was passing.

The new code changes things so that the nested clip is defined with the
actual scrolling scrollframe as the ancestor, causing the reftest to fail.
Fixing the clip ancestry is not hard but it reveals other problems so
so I'm deferring that to a follow-up bug.

MozReview-Commit-ID: DldAKi1AP4l

--HG--
extra : rebase_source : a448e06fd26fff21bbc4a6f50e04dbbdb427298c
2017-10-24 15:46:00 -04:00
Kartikaya Gupta
83ac5fdb91 Bug 1409446 - Handle nested display item scenarios. r=mstange
This handles some cases where a nested display item's clip chain
implicitly extends from the wrapper item's clip chain.

MozReview-Commit-ID: DmghxOWi81K

--HG--
extra : rebase_source : 8ec95df64fed247650baf8f5e0c868d1934aa6bc
2017-10-24 15:46:00 -04:00
Kartikaya Gupta
4fcc51960c Bug 1409446 - Work around the dual-ancestor case that WR doesn't handle yet. r=mstange
Bug 1409442 is tracking a change that will allow scroll layers to have
multiple ancestors. Without that, there are cases we cannot properly
handle, and so we need to ignore a clip in those scenarios. This patch
makes sure we do that instead of crashing.

MozReview-Commit-ID: 7AU4uyzT6if

--HG--
extra : rebase_source : d483c2a7ecff5cd488a53fa5e6b6da55cc3a1e29
2017-10-24 15:45:59 -04:00
Kartikaya Gupta
9b3a9d0d62 Bug 1409446 - Deal with scenario of two interchangeable DisplayItemClipChain objects causing a cache miss. r=mstange
MozReview-Commit-ID: 4FQvOmMUUKH

--HG--
extra : rebase_source : 9b497dc5f97345aee55f8dbf25d1db926c93c68f
2017-10-24 15:45:59 -04:00
Kartikaya Gupta
fdefb982b7 Bug 1409446 - Properly handle out-of-band clips in the new ScrollingLayersHelper code. r=mstange
When display items (such as mask items) push an out-of-band clip, we
can't use clip ids from, or update clip ids into, the cache. We also
need to ensure we take these out-of-band clips into account when
determining the parent for a new clip we are going to define.

MozReview-Commit-ID: GcUI2Hf6SLB

--HG--
extra : rebase_source : 512be5a6998b9c1d6db9d8c550231f0883d721c9
2017-10-24 15:45:59 -04:00
Kartikaya Gupta
54e570d116 Bug 1409446 - Write the new recursive method to define clip chains. r=mstange
This code is more straightforward in its recursion than the old code,
and provides a relatively clean way to explicitly pass the desired
parent when defining a new clip or scroll layer.

Refer to the documentation in the patch for more details.

Note that this patch provides the basic recursive algorithm to define
the clips and scroll layers, although it omits some of the complicating
edge cases which will be added in later patches. The new code is not
invoked from anywhere until all the edge case handling has been done.

MozReview-Commit-ID: 7z51Kd7LlPU

--HG--
extra : rebase_source : 491efac9282a7379f7977a1bc0205ac70e356c3c
2017-10-24 15:45:58 -04:00
Kartikaya Gupta
2878061467 Bug 1409446 - Wire up the DefineClip and DefineScrollLayer APIs to allow specifying ancestry. r=jrmuizel
The APIs now allow providing the parent clip or scroll info explicitly
instead of having to push it on the stack. For now we just pass
Nothing() to preserve the existing behaviour, so this change is a
functinoal no-op.

MozReview-Commit-ID: dtNamN595

--HG--
extra : rebase_source : 3b6bd03b919bd31cd89e3f82283cb962f8f6abc5
2017-10-24 15:45:57 -04:00
Sebastian Hengst
31bf3a1a42 merge mozilla-inbound to mozilla-central. r=merge a=merge
MozReview-Commit-ID: 4Lk5P5UYmTe
2017-10-24 11:52:35 +02:00
Sebastian Hengst
b550a1e851 Backed out changeset 45596e6d2e2f (bug 1409871) on request from rhunt for causing black context menus on Windows. r=backout
--HG--
extra : amend_source : 4258791f4f66808f5faa888b5f5cb4a20ce1ce38
2017-10-23 23:44:15 +02:00
Sebastian Hengst
6eaee8e36d Backed out changeset 0c763c30594d (bug 1409871) 2017-10-23 23:44:09 +02:00
Sebastian Hengst
66bc17f938 Backed out changeset a9f8832adcb4 (bug 1409871) 2017-10-23 23:44:04 +02:00