Commit Graph

353 Commits

Author SHA1 Message Date
Daniel Zielas
2af458e291 Bug 1420512 - Try unifying data structures for scrollbar container and scrollbar thumb info. r=botond
MozReview-Commit-ID: 9zPkrA3CwsN
2018-03-02 19:00:03 +01:00
Kartikaya Gupta
3815264134 Bug 1449287 - Remove obsolete compositor animation telemetry probes. r=botond
MozReview-Commit-ID: 7zFtemtGIAx
2018-04-05 14:55:32 -04:00
Kartikaya Gupta
2b0c5012cf Bug 1446022 - Guard against dereferencing a null APZC pointer in degenerate cases. r=botond
This rolls back a few of the changes from bug 1443792. Although in
theory a LayerMetricsWrapper having an APZC should be equivalent to it
having a scrollable metrics, this might not always be strictly true. For
example, if there is no GeckoContentController registered for a layer
tree, then there might not be APZCs for that layer tree even though it
has scrollable metrics. More importantly, a malicious child process
might be able to trigger scenarios where the equivalence doesn't hold,
and thereby trigger failures in the UI/GPU process.

MozReview-Commit-ID: 1gfbILx7HWU
2018-03-19 17:11:22 -04:00
Kartikaya Gupta
71988f012c Bug 1443792 - Remove direct access to AsyncPanZoomController from AsyncCompositionManager. r=botond
MozReview-Commit-ID: FA8XFOhy1wk
2018-03-12 16:06:38 -04:00
Kartikaya Gupta
dd4654438b Bug 1443792 - Move ComputeTransformForScrollThumb to APZCTreeManager. r=botond
This makes more sense in APZCTreeManager, but is exposed back to
AsyncCompositionManager via APZSampler. This also makes the APZ code
better encapsulated since the method API exposed on APZSampler doesn't
need to take a AsyncPanZoomController; it can just take the
LayerMetricsWrapper instead.

MozReview-Commit-ID: 9yJJd3x8VhN
2018-03-12 16:06:37 -04:00
Kartikaya Gupta
50b60b6cc9 Bug 1443792 - Move the SampleAPZAnimations function into APZSampler. r=botond
MozReview-Commit-ID: 2KIQ5A2J7m9
2018-03-12 16:06:37 -04:00
Kartikaya Gupta
7a361deefd Bug 1443301 - Stop exposing mApzcTreeManager from CompositorBridgeParent. r=botond
MozReview-Commit-ID: 5Dq0HzLImTz
2018-03-07 17:34:11 -05:00
Botond Ballo
436c9a74eb Bug 1442767 - Rename Box to RectAbsolute (Gecko changes). r=kats
MozReview-Commit-ID: 1wrzwQw8bdx
2018-03-05 18:08:18 -05:00
Kartikaya Gupta
f3a49361f4 Bug 1442627 - Stop exporting APZCTreeManager.h in mozilla/layers/. r=botond
MozReview-Commit-ID: GC5fSWOYtF5
2018-03-06 10:25:39 -05:00
Botond Ballo
09f98979a9 Bug 1434250 - Use a Box, rather than a Rect, representation for position:sticky inner/outer rects in the Layers API. r=kats
MozReview-Commit-ID: 4LDQ3XmWynx
2018-02-09 15:40:13 -05:00
Milan Sreckovic
c77bdb1654 Bug 1423570: Use BaseRect access methods instead of member variables in gfx/ r=bas.schouten
MozReview-Commit-ID: ZGySgc9oP3
2017-12-19 15:48:39 -05:00
Botond Ballo
2ed09fbcd8 Bug 1420516 - Remove ScrollDirection::NONE. r=kats
ScrollDirection variables for which NONE was a valid value are replaced with
Maybe<ScrollDirection>.

I also took the opportunity to change the remaining ScrollDirection
enumerators to eTitleCase as per style guide.

MozReview-Commit-ID: GWejQR2HqH5
2017-11-20 19:00:34 -05:00
Daniel Holbert
bb0a8b6602 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
2017-10-27 16:10:06 -07:00
Boris Chiou
462458b3e6 Bug 1340005 - Part 4: Retrieve transform list from AnimationValue. r=birtles
MozReview-Commit-ID: 82NAOBV2rEl
2017-09-25 14:25:43 +08:00
Boris Chiou
63c95da28b Bug 1340005 - Part 3: Use AnimationValue on the compositor thread. r=birtles
MozReview-Commit-ID: CtnDLsdcr9x
2017-09-21 17:01:48 +08:00
Milan Sreckovic
fe9daf64d1 Bug 1387514: Upgrade BaseRect (derived classes) width and height direct member variable use to instead use Width()/SetWidth() and Height()/SetHeight() in .cpp files in gfx/*. r=milan
MozReview-Commit-ID: 1jESowJKdyp
2017-08-14 08:29:28 -04:00
Sylvestre Ledru
576cac5ec7 Bug 1381253 - Remove redundant control flow declarations rs=ehsan
MozReview-Commit-ID: FFxP4aMCbOL
2017-07-15 19:03:04 +02:00
Kartikaya Gupta
42cf0f4da6 Bug 1382200 - Eliminate LayerMetricsWrapper::IsScrollInfoLayer entirely by inlining it. r=botond
MozReview-Commit-ID: KX35cjOAQw7
2017-07-19 09:24:28 -04:00
Kartikaya Gupta
2800e31568 Bug 1382200 - Rename Layer::IsScrollInfoLayer to better capture what the call sites care about. r=botond
MozReview-Commit-ID: 1vMBMo5zOhK
2017-07-19 09:24:22 -04:00
sotaro
0969fd2d2e Bug 1379033 - Remove CompositorBridgeParentBase::GetAnimationStorage() r=kats
The patch removes CompositorBridgeParentBase::GetAnimationStorage and CrossProcessCompositorBridgeParent::GetAnimationStorage, and remove the "aId" parameter to CompositorBridgeParent::GetAnimationStorage, since it's only ever called with "0" as the argument.
2017-07-10 10:03:12 +09:00
Botond Ballo
0a174e788f Bug 1375949 - Repurpose AsyncPanZoomController::AsyncMode into a more general AsyncTransformConsumer enum. r=kats
The AsyncTransformConsumer enumeration captures the distinction between
the two main categories of consumers of async transforms: those using
it for hit-testing and related purposes, and those using it for
compositing.

MozReview-Commit-ID: 59CICcnPvY6
2017-06-30 14:31:28 -04:00
Nicholas Nethercote
a58025002f Bug 1375392 - Tweak the PROFILER_LABEL* macros. r=mstange.
This patch makes the following changes to the macros.

- Removes PROFILER_LABEL_FUNC. It's only suitable for use in functions outside
  classes, due to PROFILER_FUNCTION_NAME not getting class names, and it was
  mostly misused.

- Removes PROFILER_FUNCTION_NAME. It's no longer used, and __func__ is
  universally available now anyway.

- Combines the first two string literal arguments of PROFILER_LABEL and
  PROFILER_LABEL_DYNAMIC into a single argument. There was no good reason for
  them to be separate, and it forced a '::' in the label, which isn't always
  appropriate. Also, the meaning of the "name_space" argument was interpreted
  in an interesting variety of ways.

- Adds an "AUTO_" prefix to PROFILER_LABEL and PROFILER_LABEL_DYNAMIC, to make
  it clearer they construct RAII objects rather than just being function calls.
  (I myself have screwed up the scoping because of this in the past.)

- Fills in the 'js::ProfileEntry::Category::' qualifier within the macro, so
  the caller doesn't need to. This makes a *lot* more of the uses fit onto a
  single line.

The patch also makes the following changes to the macro uses (beyond those
required by the changes described above).

- Fixes a bunch of labels that had gotten out of sync with the name of the
  class and/or function that encloses them.

- Removes a useless PROFILER_LABEL use within a trivial scope in
  EventStateManager::DispatchMouseOrPointerEvent(). It clearly wasn't serving
  any useful purpose. It also serves as extra evidence that the AUTO_ prefix is
  a good idea.

- Tweaks DecodePool::SyncRunIf{Preferred,Possible} so that the labelling is
  done within them, instead of at their callsites, because that's a more
  standard way of doing things.
2017-06-22 17:08:53 +10:00
Randall Barker
e61f01164e Bug 1365161 - Ensure dynamic toolbar static snapshot visibility stays in sync with the real toolbar chrome r=botond,jchen
There were two issues that prevented the static snapshot toolbar and
real chrome toolbar from staying in sync.

1) When a page would resize such as when going fullscreen, if the
root content document was not scrollable, the animator would not receive
root composition page size updates. The page resize is used by the
animator to hide the static snapshot, so it would remain visible while
the real chrome toolbar would be hidden.

2) Certain places in UI java code would toggle the chrome state directly
instead of going through the animator to change the state.

MozReview-Commit-ID: DCQgRFS0UAO
2017-05-19 10:50:02 -07:00
Botond Ballo
568a934f19 Bug 1364622 - Introduce a helper function for computing the async transform for a scroll thumb layer. r=kats
MozReview-Commit-ID: DFFcmBxzI84
2017-05-15 18:35:16 -04:00
Botond Ballo
50e80233ca Bug 1349750 - Group scroll thumb-related information in Layer into a ScrollThumbData structure. r=kats
The patch also renames Layer::SetScrollbarData() to Layer::SetScrollThumbData()
for clarity.

MozReview-Commit-ID: DVwJ3DMl3Zs
2017-05-10 14:02:15 -04:00
Randall Barker
2690f75319 Bug 1358775 - Fix the dynamic toolbar animator to animate the toolbar in place instead of shifting content with the toolbar r=botond,nical
MozReview-Commit-ID: 85l2d6q7OdL
2017-05-11 13:10:34 -07:00
Kartikaya Gupta
3af8d29cef Merge m-c to graphics
MozReview-Commit-ID: 5zsIClrx1FB
2017-04-21 10:01:47 -04: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
Randall Barker
c955f482b1 Bug 1335895 - Android GeckoView Dynamic Toolbar Version 3 r=botond,dvander,jchen,kats
This version of the Dynamic Toolbar moves the animation of the toolbar
from the Android UI thread to the compositor thread. All animation for
showing and hiding the toolbar are done with the compositor and a static
snapshot of the real toolbar.

MozReview-Commit-ID: BCe8zpbkWQt
2017-04-20 15:15:14 -07:00
Kartikaya Gupta
ff4ffd35eb Bug 1338347 - Record frame throughput ratio for APZ animations r=botond
MozReview-Commit-ID: 7Ljaya9RFeo
2017-03-20 11:41:05 -04:00
Kartikaya Gupta
6b5a47fd52 Bug 1338347 - Record frame throughput ratios for compositor animations r=botond
This augments the AnimationMetricsTracker to also track compositor animations
triggered by chrome and content layers separately. During the animation, the
tracker keeps a count of frames composited, and once the animation ends, it
uses the wall-clock time and vsync interval to compute the expected number of
composited frames. It then submits a ratio of actual/expected to telemetry.
A score of 1000 (because the ratio is scaled up to an integer between 0 and 1000)
indicates a perfect score with no frames dropped. Lower values are worse, and
values significantly above 1000 indicate abnormal behaviour. Values may be slightly
above 1000 due to rounding error or vsync jitter.

MozReview-Commit-ID: 30Vw0j3dm9G
2017-03-20 11:41:05 -04:00
Kartikaya Gupta
7676bc75c5 Bug 1338347 - Have the animation-sampling code track which process the animations are in. r=botond
This allows the AsyncCompositionManager to know whether compositor animations
are coming from chrome layers or content layers (using the rootmost RefLayer
as the boundary). This information is needed to have the compositor animation
telemetry probes separate information by chrome/content.

MozReview-Commit-ID: GqHczgrzXE5
2017-03-20 11:41:05 -04:00
peter chang
dc497a1152 Bug 1337889 - use CompositorAnimationsId to query Opacity/Transform animation, r=hiro,kats
MozReview-Commit-ID: 3s1kzOQAfrd
2017-02-09 17:30:11 -05:00
Ryan Hunt
44fdab0d7e Bug 1344356 - Fix unused lambda capture warnings r=kats 2017-03-06 10:09:47 -06:00
Kartikaya Gupta
cd1c5dc857 Bug 1339220 - Add telemetry probes to measure duration and max-area of animations in the compositor. r=botond,bsmedberg
MozReview-Commit-ID: KyvsNSTcxG8
2017-02-16 14:40:37 -05:00
Hiroyuki Ikezoe
448c234858 Bug 1331704 - Part 1: Store base styles in KeyframeEffectReadOnly instead of EffectSet. r=birtles a=abillings
Now we dropped mNeedsBaseStyleSet bit set.

MozReview-Commit-ID: Gv2rU0jpyk1
2017-02-11 19:11:45 +09:00
Sebastian Hengst
2beaba93bd Backed out changeset e2f6d5054e20 (bug 1331704) for build bustage: unused variable hasProperty at KeyframeEffectReadOnly.h:294. r=backout on a CLOSED TREE 2017-02-11 11:37:54 +01:00
Hiroyuki Ikezoe
00914b9633 Bug 1331704 - Part 1: Store base styles in KeyframeEffectReadOnly instead of EffectSet. r=birtles a=abillings
Now we dropped mNeedsBaseStyleSet bit set.

MozReview-Commit-ID: Gv2rU0jpyk1
2017-02-11 19:11:45 +09:00
peter chang
7969ef699d Bug 1332211 - refactor animation code in AsyncCompositionManager, r=hiro
MozReview-Commit-ID: 5PGYTv1cSeT
2017-01-26 15:04:16 +08:00
peter chang
0ec7b5f26c Bug 1332211 - Move Layer::SetAnimation into AnimationHelper, r=hiro
MozReview-Commit-ID: JQMAJt8lvYo
2017-01-25 10:51:30 +08:00
David Anderson
d46521f0e5 Move ScrollDirection to LayersTypes.h and make it a proper enum. (bug 1332567 part 1, r=kats) 2017-01-24 16:41:17 -08:00
Carsten "Tomcat" Book
c64603aa7e Merge mozilla-central to autoland 2017-01-12 10:39:04 +01:00
peter chang
c49fdee3dd Bug 1328229 - Remove the layer dependency for SampleAnimation, r=birtles
MozReview-Commit-ID: 78D3c7t8tIi
2017-01-10 10:03:47 +08:00
Hiroyuki Ikezoe
9940e0fd49 Bug 1325193 - Get underlying style value in the case where the last segment is missing keyframe for accumulation of iteration composite. r=birtles
Both of tests in this patch fail and cause lots of assertions without this fix.

MozReview-Commit-ID: CFrWSlM0Us5
2017-01-12 10:28:46 +09:00
Hiroyuki Ikezoe
d226a317df Bug 1311620 - Part 2: Don't call StyleAnimationValue::GetUnit() against uninitialized values, use IsNull() instead. r=birtles
MozReview-Commit-ID: JAcHqsgpdDB
2016-12-24 17:26:50 +09:00
Hiroyuki Ikezoe
51dbd0134d Bug 1305325 - Part 14: Compose base values on the compositor. r=birtles
MozReview-Commit-ID: EWumBqQ82RT
2016-12-04 08:07:40 +09:00
Hiroyuki Ikezoe
e6601b6c53 Bug 1305325 - Part 10: Make SampleValue return StyleAnimationValue. r=birtles
MozReview-Commit-ID: Izr6Cvee96Q
2016-12-04 08:07:40 +09:00
Hiroyuki Ikezoe
d8041fa2b6 Bug 1305325 - Part 9: Send animations even if it's paused, finished or zero playback rate. r=birtles.
If all of animations on an element are paused, finished or zero playback rate,
we don't send those animations to the compositor.
Also in this change, we send zero active duration animations to the compositor
in the same way as normail animations.

MozReview-Commit-ID: CHjv6Buy5fa
2016-12-02 15:34:13 +09:00
Bas Schouten
cd0155b68f Bug 1317843 - Split LayerManagerComposite into two classes. r=jrmuizel 2016-11-24 18:11:27 +13:00
Hiroyuki Ikezoe
723ccec4d8 Bug 1304886 - Part 1: Make StyleAnimationValue::Accumulate() infallible. r=birtles
MozReview-Commit-ID: 9ve3k6a3eAg
2016-11-16 20:32:26 +09:00