diff options
author | vollick@chromium.org <vollick@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-16 21:22:51 +0000 |
---|---|---|
committer | vollick@chromium.org <vollick@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-16 21:22:51 +0000 |
commit | 05ba53c15fe575acc97b880c76c8848bb293a3d7 (patch) | |
tree | 85509b4612c2ab2e479e6f125c177c0c6af54073 /tools/metrics | |
parent | ef7e5d6977942d65fad34407eca0ef9fabb9fbef (diff) | |
download | chromium_src-05ba53c15fe575acc97b880c76c8848bb293a3d7.zip chromium_src-05ba53c15fe575acc97b880c76c8848bb293a3d7.tar.gz chromium_src-05ba53c15fe575acc97b880c76c8848bb293a3d7.tar.bz2 |
Scroll on main if impl-hit testing isn't guaranteed to be correct
It often happens that we have composited layers with
holes. Sometimes we'll try and interact through the
hole (we might, say, want to scroll something back
there). The cc machinery isn't currently smart enough to
figure out exactly what got hit, so when we detect that
our hit testing result might be inaccurate we fall back
to main thread scrolling.
Here are the specifics on how I determine if me might
have hit a "holey" occluder.
I find two starting layers:
1) The first layer below the viewport point.
2) The first scrolling layer below the viewport point.
If we haven't hit an interfering occluder, the first
scrolling layer we should reach when we walk up from 1)
is 2). If we find some other layer, things have likely
gone wonky, so we bail.
I've also added stats so that we can track how often we
fall back to main thread scrolling because we couldn't
figure out what was going on.
R=enne@chromium.org
BUG=364090
Review URL: https://codereview.chromium.org/238803005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@264306 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'tools/metrics')
-rw-r--r-- | tools/metrics/histograms/histograms.xml | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml index edaef6f..dc1d908 100644 --- a/tools/metrics/histograms/histograms.xml +++ b/tools/metrics/histograms/histograms.xml @@ -20948,6 +20948,17 @@ Therefore, the affected-histogram name has to have at least one dot in it. </summary> </histogram> +<histogram name="Renderer4.CompositorScrollHitTestResult" + enum="CompositorScrollResult"> + <owner>vollick@chromium.org</owner> + <summary> + It's possible for compositor hit testing to determine conclusively that + compositor thread scrolling can or cannot be done. It's also possible that + the hit testing result is inconclusive. We would like to see the I-don't- + know result as little as possible. This histogram tracks the ratios. + </summary> +</histogram> + <histogram name="Renderer4.CompositorThreadImplDrawDelay" units="milliseconds"> <owner>wiltzius@chromium.org</owner> <summary> @@ -31212,6 +31223,13 @@ Therefore, the affected-histogram name has to have at least one dot in it. <int value="2" label="Will use composited scrolling"/> </enum> +<enum name="CompositorScrollResult" type="int"> + <int value="0" label="ScrollOnMainThread"/> + <int value="1" label="ScrollStarted"/> + <int value="2" label="ScrollIgnored"/> + <int value="3" label="ScrollUnknown"/> +</enum> + <enum name="CompositorType" type="int"> <int value="0" label="Software compositor"/> <int value="1" label="GPU compositor"/> |