[go: nahoru, domu]

blob: 2af9107d248b7be1b2daa032a9b99c7e95243e51 [file] [log] [blame]
<!--
Copyright 2020 The Chromium Authors
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->
<!--
This file is used to generate a comprehensive list of Compositing histograms
along with a detailed description for each histogram.
For best practices on writing histogram descriptions, see
https://chromium.googlesource.com/chromium/src.git/+/HEAD/tools/metrics/histograms/README.md
Please follow the instructions in the OWNERS file in this directory to find a
reviewer. If no OWNERS file exists, please consider signing up at
go/reviewing-metrics (Googlers only), as all subdirectories are expected to
have an OWNERS file. As a last resort you can send the CL to
chromium-metrics-reviews@google.com.
-->
<histogram-configuration>
<histograms>
<variants name="LCDTextDisallowedReasonDPI">
<variant name="HighDPI"
summary="In web pages where device scale factor is greater than or
equal to 1.5."/>
<variant name="LowDPI"
summary="In web pages where device scale factor is less than 1.5."/>
</variants>
<variants name="SmoothnessSequence">
<variant name="AllAnimations"
summary="its animations (e.g. comositor-driven animations, main-thread
driven animations, and raf-driven animations, etc.)"/>
<variant name="AllInteractions"
summary="its supported combinations of interaction types (e.g.
scrolling, pinching, etc.) and input device types (e.g.
touchscreen, touchpad, mousewheel, etc.)"/>
<variant name="CanvasAnimation" summary="canvas animations"/>
<variant name="CompositorAnimation"
summary="compositor thread driven animations"/>
<variant name="JSAnimation" summary="JS driven animations"/>
<variant name="MainThreadAnimation" summary="main thread driven animations"/>
<variant name="PinchZoom" summary="pinch to zoom interctions"/>
<variant name="RAF" summary="raf driven animations"/>
<variant name="ScrollbarScroll" summary="scrollbar scrolling"/>
<variant name="SETCompositorAnimation"
summary="compositor animations during a view transition"/>
<variant name="SETMainThreadAnimation"
summary="main thread animations during a view transition"/>
<variant name="TouchScroll" summary="touch scrolling"/>
<variant name="Video" summary="video playback"/>
<variant name="WheelScroll" summary="wheel scrolling"/>
</variants>
<variants name="SmoothnessThread">
<variant name=""/>
<variant name="CompositorThread."/>
<variant name="MainThread."/>
</variants>
<histogram name="Compositing.Browser.LayersUpdateTime" units="microseconds"
expires_after="2024-06-30">
<owner>pdr@chromium.org</owner>
<owner>animations-dev@chromium.org</owner>
<summary>
Time spent updating layers, in microseconds. Recorded when layers are
updated (in a browser process).
Warning: This metric may include reports from clients with low-resolution
clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
will cause this metric to have an abnormal distribution. When considering
revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
solution.
</summary>
</histogram>
<histogram name="Compositing.Browser.LayerTreeImpl.CalculateDrawPropertiesUs"
units="microseconds" expires_after="2023-03-19">
<owner>pdr@chromium.org</owner>
<owner>paint-dev@chromium.org</owner>
<summary>
Time spent updating layer draw properties, in microseconds. Recorded when a
LayerTreeImpl's draw properties are updated (in a browser process).
Warning: This metric may include reports from clients with low-resolution
clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
will cause this metric to have an abnormal distribution. When considering
revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
solution.
</summary>
</histogram>
<histogram name="Compositing.BufferQueue.TimeUntilBuffersRecreatedMs"
units="ms" expires_after="2024-06-16">
<owner>khaslett@chromium.org</owner>
<owner>petermcneeley@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
The time since a BufferQueue's buffers were destroyed until they were
recreated. If this time is commonly very small, that is a problem. Recorded
when the buffer recreates buffers that were previously destroyed. For a
single BufferQueue this should be once per frame at worst.
</summary>
</histogram>
<histogram name="Compositing.ColorGamut" enum="ColorGamut"
expires_after="2024-04-16">
<owner>vasilyt@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Every time a frame is presented, record the generalized color gamut of that
frame. Note: this metric was expired from 2022-02-06 to 2023-11-17.
</summary>
</histogram>
<histogram name="Compositing.DecodeLCPCandidateImage.{DecodeMethod}"
enum="Boolean" expires_after="2024-12-01">
<owner>mmocny@chromium.org</owner>
<owner>paint-dev@chromium.org</owner>
<summary>
Reports whether an image decode was for an image that might be used as the
Largest Contentful Image, and then whether a missing tile at raster time
includes such an image. The goal is to get an approximate idea of how many
LCP candidate images miss their frame deadline, and hence how often we may
report LCP too soon.
Recorded on every {DecodeMethod}
Note: this metric was expired from 2023-01-31 to 2023-12-20.
</summary>
<token key="DecodeMethod">
<variant name="Hardware" summary="hardware image decode task completion."/>
<variant name="MissedDeadline"
summary="call to PrepareTiles() in which there was a missing tile.
True if any missing tile contains an LCP candidate decode
that has not completed."/>
<variant name="Software" summary="software image decode task completion."/>
</token>
</histogram>
<histogram name="Compositing.DidMainThreadBlockDuringCommit" enum="Boolean"
expires_after="2024-06-30">
<owner>szager@chromium.org</owner>
<owner>paint-dev@chromium.org</owner>
<owner>sky@chromium.org</owner>
<summary>
Recorded on every commit. Indicates whether the renderer's main thread was
blocked waiting for the impl thread to commit. True indicates the main
thread did block.
</summary>
</histogram>
<histogram name="Compositing.DirectRenderer.OverlayProcessingUs"
units="microseconds" expires_after="2024-06-30">
<owner>khaslett@chromium.org</owner>
<owner>kylechar@chromium.org</owner>
<summary>
Time spent processing quads to see which can be replaced with overlays. This
is logged once per frame, when a frame should be drawn. Only reported for
platforms supporting high resolution clocks.
</summary>
</histogram>
<histogram name="Compositing.DirectRenderer.PartialSwap.ExtraDamage" units="%"
expires_after="2024-03-16">
<owner>vasilyt@chromium.org</owner>
<owner>petermcneeley@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
The area of the display damage that was added to current frame damage after
all adjustments, including FrameBufferDamage from buffer queue and render
pass filters.
This metric is reported once per frame only on platforms/devices that
support partial swap and does not include &quot;empty swap&quot; (no frame
damage) case
Note: this metric was expired from 2022-10-16 to 2023-06-09.
</summary>
</histogram>
<histogram name="Compositing.DirectRenderer.PartialSwap.FrameBufferDamage"
units="%" expires_after="2024-03-16">
<owner>vasilyt@chromium.org</owner>
<owner>petermcneeley@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
The area of the display that was damaged since previous draw to this frame
buffer.
This metric is reported once per frame only on platforms/devices that
support partial swap and does not include &quot;empty swap&quot; (no frame
damage) case.
Note: this metric was expired from 2022-10-23 to 2023-06-09.
</summary>
</histogram>
<histogram name="Compositing.DirectRenderer.PartialSwap.RootDamage" units="%"
expires_after="2024-07-21">
<owner>vasilyt@chromium.org</owner>
<owner>petermcneeley@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
The area of the display that was damaged in current frame.
This metric is reported only on platforms/devices that support partial swap
and does not include &quot;empty swap&quot; (no frame damage) case.
</summary>
</histogram>
<histogram name="Compositing.DirectRenderer.PartialSwap.TotalDamage" units="%"
expires_after="2024-05-19">
<owner>vasilyt@chromium.org</owner>
<owner>petermcneeley@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
The total area of the display that will be redrawn this frame.
This metric is reported only on platforms/devices that support partial swap
and does not include &quot;empty swap&quot; (no frame damage) case
Note: this metric was expired from 2023-04-30 to 2023-06-09.
</summary>
</histogram>
<histogram name="Compositing.DirectRenderer.SkipAllNonRootRenderPassesPerFrame"
enum="BooleanSkipped" expires_after="2024-06-30">
<owner>magchen@chromium.org</owner>
<owner>ccameron@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Whether all non-root render passes in a frame are skipped. Logged once per
frame during DrawFrame for the frames with non-root render passes.
</summary>
</histogram>
<histogram name="Compositing.DirectRenderer.SkipNonRootRenderPass"
enum="BooleanSkipped" expires_after="2024-06-30">
<owner>magchen@chromium.org</owner>
<owner>ccameron@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Logged for every non-root render pass in DrawRenderPass during DrawFrame.
True if there is no damages to the render pass and the rendering is skipped.
</summary>
</histogram>
<histogram name="Compositing.DirectRenderer.SkippedNonRootRenderPassOutputSize"
units="pixels" expires_after="2024-06-30">
<owner>magchen@chromium.org</owner>
<owner>ccameron@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Pixel size for a skipped nonroot render pass output surface. Recorded in Viz
DirectRenderer draw frame.
</summary>
</histogram>
<histogram name="Compositing.Display.AdpfHintUs" units="microseconds"
expires_after="2024-06-30">
<owner>boliu@chromium.org</owner>
<owner>vasilyt@chromium.org</owner>
<summary>
This is logged once for every ADPF performance hint report, which is
generally once every frame on Android device that supports ADPF and ADPF is
enabled. It's the interval reported to ADPF, which is currently implemented
as the wall clock time from vsync frame time to swap_start. Only reported
for platforms supporting high resolution clocks.
</summary>
</histogram>
<histogram name="Compositing.Display.Draw.Occlusion.Calculation.Time"
units="microseconds" expires_after="2024-06-30">
<owner>yiyix@chromium.org</owner>
<owner>chromeos-gfx@chromium.org</owner>
<summary>
Time spent to remove invisible quads from the quad_list in CompositorFrame.
Warning: This metric may include reports from clients with low-resolution
clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
will cause this metric to have an abnormal distribution. When considering
revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
solution.
</summary>
</histogram>
<histogram name="Compositing.Display.DrawToSwapUs" units="microseconds"
expires_after="2024-06-30">
<owner>jonross@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
This is logged once per frame, if the output surface provides timing
information. It measures the time from the display compositor starting a
draw on the Viz Compositor thread to issuing all related draw calls to the
driver on the Gpu Main thread. Only reported for platforms supporting high
resolution clocks.
</summary>
</histogram>
<histogram name="Compositing.Display.DrmOverlayManager.FirstTestPageFlipPassed"
enum="Boolean" expires_after="2023-08-20">
<owner>khaslett@chromium.org</owner>
<owner>kylechar@chromium.org</owner>
<summary>
Logged zero or more times per frame, whether the first call to
HardwareDisplayController.TestPageFlip succeeded.
</summary>
</histogram>
<histogram name="Compositing.Display.DrmOverlayManager.TestPageFlipCount"
units="units" expires_after="2024-06-30">
<owner>khaslett@chromium.org</owner>
<owner>kylechar@chromium.org</owner>
<summary>
Logged zero or more times per frame, the number of times TestPageFlip is
called on the HardwareDisplayController.
</summary>
</histogram>
<histogram name="Compositing.Display.DrmOverlayManager.TestPageFlipUs"
units="microseconds" expires_after="2024-06-30">
<owner>khaslett@chromium.org</owner>
<owner>kylechar@chromium.org</owner>
<summary>
Logged zero or more times per frame, the duration of calling TestPageFlip on
the HardwareDisplayController. Only reported for platforms supporting high
resolution clocks.
</summary>
</histogram>
<histogram name="Compositing.Display.DrmThread.CheckOverlayCapabilitiesSyncUs"
units="microseconds" expires_after="2023-06-18">
<owner>khaslett@chromium.org</owner>
<owner>kylechar@chromium.org</owner>
<summary>
Logged zero or more times per frame, the duration of
DrmThread::CheckOverlayCapabilitiesSync(). This is the total time spent on
the DRM thread to check a set of overlay candidates. Only reported for
platforms supporting high resolution clocks.
</summary>
</histogram>
<histogram name="Compositing.Display.FlattenedRenderPassCount" units="units"
expires_after="2024-06-30">
<owner>jonross@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
This is logged once per frame. It is the number of renderer passes after
flattening all possible render passes. If the value is more than one, then
an intermediate rendering target must be used during the rendering of the
frame for each render pass greater than one.
</summary>
</histogram>
<histogram
name="Compositing.Display.HardwareDisplayController.SchedulePageFlipResult"
enum="PageFlipResult" expires_after="2024-03-02">
<owner>seanpaul@chromium.org</owner>
<owner>chromeos-gfx-compositor@chromium.org</owner>
<summary>
Logged once per frame, represents whether we could successfully schedule a
page flip, or what error we encountered along the way. Note: this metric was
expired from 2023-03-02 to 2023-04-13.
</summary>
</histogram>
<histogram name="Compositing.Display.OverlayCombinationCache.NumIdsEvicted"
units="units" expires_after="2023-06-04">
<owner>khaslett@chromium.org</owner>
<owner>kylechar@chromium.org</owner>
<summary>
Logged zero or one times per frame, the number of stale candidate ids we are
evicting from the OverlayCombinationCache this frame. If this number is high
the CandidateIds or the candidates proposed are likely less stable than they
should be.
</summary>
</histogram>
<histogram name="Compositing.Display.OverlayProcessorOzone.MaxPlanesSupported"
units="units" expires_after="2023-08-20">
<owner>khaslett@chromium.org</owner>
<owner>kylechar@chromium.org</owner>
<summary>
This is logged every time a valid HardwareCapabilities is received from DRM
when display configuration may have changed. It records the number of
overlay planes we have available on this device including the primary plane.
</summary>
</histogram>
<histogram
name="Compositing.Display.OverlayProcessorUsingStrategy.CandidateCombinationPreviouslySucceeded"
enum="Boolean" expires_after="2023-08-20">
<owner>khaslett@chromium.org</owner>
<owner>kylechar@chromium.org</owner>
<summary>
Logged zero or one times per frame, whether or not the candidate combination
being tested this frame was successfully promoted to overlays on the
previous frame.
</summary>
</histogram>
<histogram
name="Compositing.Display.OverlayProcessorUsingStrategy.CheckOverlaySupportCallCount"
units="units" expires_after="2024-06-30">
<owner>khaslett@chromium.org</owner>
<owner>kylechar@chromium.org</owner>
<summary>
This is logged once per frame, the number of times CheckOverlaySupport is
called this frame.
</summary>
</histogram>
<histogram
name="Compositing.Display.OverlayProcessorUsingStrategy.CheckOverlaySupportUs"
units="microseconds" expires_after="2024-06-30">
<owner>khaslett@chromium.org</owner>
<owner>kylechar@chromium.org</owner>
<summary>
Logged zero or more times per frame, the time spent checking if a set of
candidates can be promoted to overlay. Only reported for platforms
supporting high resolution clocks.
</summary>
</histogram>
<histogram
name="Compositing.Display.OverlayProcessorUsingStrategy.FramesAttemptingRequiredOverlays"
enum="Boolean" expires_after="2024-05-26">
<owner>zoraiznaeem@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Records once per frame, whether we will attempt to promote any required
overlay or not in that frame.
</summary>
</histogram>
<histogram
name="Compositing.Display.OverlayProcessorUsingStrategy.FramesScalingRequiredOverlays"
enum="Boolean" expires_after="2024-06-30">
<owner>zoraiznaeem@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Records zero or once per frame, whether we attempted scaling any required
overlay.
</summary>
</histogram>
<histogram
name="Compositing.Display.OverlayProcessorUsingStrategy.NumOverlays{Counted}"
units="overlay candidates" expires_after="2024-06-30">
<owner>khaslett@chromium.org</owner>
<owner>kylechar@chromium.org</owner>
<owner>chromeos-gfx-compositor@chromium.org</owner>
<summary>
Logged once per frame, the number of overlays {Counted}. Note: this metric
was expired from 2022-11-30 to 2023-04-13.
</summary>
<token key="Counted">
<variant name="Attempted"
summary="attempted. This is only logged when using the
AttemptMultipleOverlays path."/>
<variant name="Failed"
summary="failed. This is only logged when using the
AttemptMultipleOverlays path."/>
<variant name="Promoted" summary="promoted."/>
</token>
</histogram>
<histogram
name="Compositing.Display.OverlayProcessorUsingStrategy.NumQuadsConsidered"
units="units" expires_after="2023-06-18">
<owner>khaslett@chromium.org</owner>
<owner>kylechar@chromium.org</owner>
<summary>
Logged once per frame, the number of quads considered for promotion to
overlay.
</summary>
</histogram>
<histogram
name="Compositing.Display.OverlayProcessorUsingStrategy.ShouldAttemptMultipleOverlays"
enum="AttemptingMultipleOverlays" expires_after="2024-02-25">
<owner>khaslett@chromium.org</owner>
<owner>kylechar@chromium.org</owner>
<summary>
Logged zero or one times per frame, whether we're using the
AttemptingMultipleOverlays codepath this frame or why we arent.
</summary>
</histogram>
<histogram
name="Compositing.Display.OverlayProcessorUsingStrategy.WorkingScaleFactorForRequiredOverlays"
units="scale_factor" expires_after="2024-06-30">
<owner>zoraiznaeem@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Records the scale factor that is used to downscale successfully promoted
required candidates. It is only logged once per frame if a required overlay
is promoted. Note: The scale factor value is logged as `scale_factor * 100`.
</summary>
</histogram>
<histogram name="Compositing.Display.PendingSwaps" units="swaps"
expires_after="2024-06-16">
<owner>sashamcintosh@chromium.org</owner>
<owner>chromeos-gfx@chromium.org</owner>
<summary>
Records the count of pending swaps in the display scheduler. Length of the
swap chain can be used as a rough approximation for input latency. Recorded
before the swap executes. Refer to Display::DrawAndSwap for details.
</summary>
</histogram>
<histogram name="Compositing.Display.VizDependencyResolvedToGpuStartedDrawUs"
units="microseconds" expires_after="2024-06-16">
<owner>vasilyt@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
This is logged once per frame, if the output surface provides timing
information. It measures delta between the time when display compositor draw
task's dependencies have been solved and the time when the Gpu Thread
started processing it. Only reported for platforms supporting high
resolution clocks. Note: this metric was expired from 2022-12-18 to
2023-11-17.
</summary>
</histogram>
<histogram name="Compositing.Display.VizScheduledDrawToDependencyResolvedUs"
units="microseconds" expires_after="2024-06-16">
<owner>vasilyt@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
This is logged once per frame if the output surface provides timing
information. It measures delta between the time when display compositor
scheduled first draw task for the current frame on Viz Compositor thread and
the time when the task's dependencies have been resolved and the task is
ready for the Gpu Thread to start processing it. Recorded when swap
completes. Only reported for platforms supporting high resolution clocks.
Note: this metric was expired from 2023-08-27 to 2023-11-17.
</summary>
</histogram>
<histogram name="Compositing.Display.VizScheduledDrawToGpuStartedDrawUs"
units="microseconds" expires_after="2024-06-16">
<owner>vasilyt@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
This is logged once per frame if the output surface provides timing
information. It measures delta between the time when display compositor
scheduled first draw task for the current frame on Viz Compositor thread and
the time when Gpu Thread started processing it. Recorded when swap
completes. Only reported for platforms supporting high resolution clocks.
Note: this metric was expired from 2022-12-18 to 2023-11-17.
</summary>
</histogram>
<histogram name="Compositing.FrameRateDecider.ToggleFrameRateCase"
enum="ToggleFrameRateCase" expires_after="2024-03-30">
<owner>jonross@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
The count of cases to decide whether we should toggle framerate or not in
FrameRateDecider. This is logged at 1/1000 probability of frames with
video(s) on screen. This aims to determine how frequently Chormium is
rendering single video with perfect cadence to the supported frame rates.
</summary>
</histogram>
<histogram name="Compositing.MainThreadBlockedDuringCommitTime"
units="microseconds" expires_after="2024-06-30">
<owner>szager@chromium.org</owner>
<owner>paint-dev@chromium.org</owner>
<owner>sky@chromium.org</owner>
<summary>
The time that the renderer's main thread blocked waiting for the impl thread
to commit. This is only reported if the main thread blocked.
Drops reports on clients with low-resolution clocks, biasing to a portion of
the population on Windows. See Windows.HasHighResolutionTimeTicks for the
affected sample.
</summary>
</histogram>
<histogram
name="Compositing.MainThreadBlockedDuringCommitTime.ApplyCompositorChanges"
units="microseconds" expires_after="2023-10-08">
<owner>szager@chromium.org</owner>
<owner>pdr@chromium.org</owner>
<owner>paint-dev@chromium.org</owner>
<summary>
The time that ApplyCompositorChanges is blocked waiting for the impl thread
to commit. This is a subset of the total time spent in
Compositing.MainThreadBlockedDuringCommitTime.
Drops reports on clients with low-resolution clocks, biasing to a portion of
the population on Windows. See Windows.HasHighResolutionTimeTicks for the
affected sample.
</summary>
</histogram>
<histogram name="Compositing.Renderer.AnimationUpdateOnMissingPropertyNode"
enum="Boolean" expires_after="2024-12-02">
<owner>awogbemila@chromium.org</owner>
<owner>input-dev@chromium.org</owner>
<summary>
Records when we attempt to update an animation with a missing property node.
See crbug.com/1307498. We safely handle this case but until we find and fix
the root cause, this histogram allows us to keep track of the frequency at
this occurs.
</summary>
</histogram>
<histogram name="Compositing.Renderer.CALayerResult" enum="CALayerResult"
expires_after="2024-06-30">
<owner>ccameron@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
The outcome of attempting to replace all renderer tiles with CALayers.
Either success, or the first reason why a DrawQuad couldn't be replaced by a
CALayer.
</summary>
</histogram>
<histogram name="Compositing.Renderer.LayersUpdateTime" units="microseconds"
expires_after="2024-06-30">
<owner>pdr@chromium.org</owner>
<owner>paint-dev@chromium.org</owner>
<summary>
Time spent updating layers, in microseconds. Recorded when layers are
updated (in a renderer process).
Warning: This metric may include reports from clients with low-resolution
clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
will cause this metric to have an abnormal distribution. When considering
revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
solution.
</summary>
</histogram>
<histogram name="Compositing.Renderer.LCDTextDisallowedReasonKPixels2.{DPI}"
enum="LCDTextDisallowedReason" expires_after="2024-06-30">
<owner>wangxianzhu@chromium.org</owner>
<owner>paint-dev@chromium.org</owner>
<summary>
Records the approximate kilo-pixels covered by text drawing operations by
LCD-text disallowed reasons. Hence the histogram value for each reason is
the approximate number of non-LCD kilo-pixels resulting from that reason.
Recorded when the renderer is idle, at minimum interval of the longer of 1
minute and 500 begin frames for each local frame tree.
</summary>
<token key="DPI" variants="LCDTextDisallowedReasonDPI"/>
</histogram>
<histogram name="Compositing.Renderer.LCDTextDisallowedReasonLayers2.{DPI}"
enum="LCDTextDisallowedReason" expires_after="2024-06-30">
<owner>wangxianzhu@chromium.org</owner>
<owner>paint-dev@chromium.org</owner>
<summary>
Records the number of layers containing text by LCD-text disallowed reasons.
Recorded along with Compositing.Renderer.LCDTextDisallowedReasonKPixels.
</summary>
<token key="DPI" variants="LCDTextDisallowedReasonDPI"/>
</histogram>
<histogram name="Compositing.Renderer.NumActiveLayers" units="layers"
expires_after="2024-07-21">
<owner>pdr@chromium.org</owner>
<owner>paint-dev@chromium.org</owner>
<summary>
The number of layers in the active tree for each compositor frame. This is
logged once per frame, before the frame is drawn (in a renderer process).
</summary>
</histogram>
<histogram name="Compositing.Renderer.NumActivePictureLayers" units="layers"
expires_after="2024-07-21">
<owner>pdr@chromium.org</owner>
<owner>paint-dev@chromium.org</owner>
<summary>
The number of PictureLayers in the active tree for each compositor frame.
This is logged once per frame, before the frame is drawn (in a renderer
process).
</summary>
</histogram>
<histogram name="Compositing.Renderer.NumRenderSurfaces" units="surfaces"
expires_after="2024-07-21">
<owner>pdr@chromium.org</owner>
<owner>paint-dev@chromium.org</owner>
<summary>
The number of render surfaces in the render surface layer list. Recorded
each time the render surface layer list is constructed (in a renderer
process).
</summary>
</histogram>
<histogram name="Compositing.SkiaRenderer.DirectlyDrawableRenderPassWithRPDQ"
enum="Boolean" expires_after="2024-06-30">
<owner>khushalsagar@chromium.org</owner>
<owner>vmpstr@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Logged for every nested RenderPass to indicate whether it could have been
drawn directly because it has a single RPDQ and no other effect which would
require producing a render pass.
</summary>
</histogram>
<histogram name="Compositing.SkiaRenderer.DrawTileDrawQuad.UsingRawDraw"
enum="Boolean" expires_after="2023-06-11">
<owner>penghuang@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>Records if the TileDrawQuad is rendered with RawDraw.</summary>
</histogram>
<histogram name="Compositing.SkiaRenderer.SkipOverlayRenderPassDrawQuad"
enum="BooleanSkipped" expires_after="2024-06-30">
<owner>magchen@chromium.org</owner>
<owner>ccameron@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Logged for every RenderPassDrawQuad in the overlay list during
ScheduleOverlays. An Overlay RenderPassDrawQuad is skipped if there is no
damages to the render pass and the RenderPassDrawQuad settings are the same.
</summary>
</histogram>
<histogram name="Compositing.SkiaRenderer.SkippedOverlayRenderPassDrawQuadSize"
units="pixels" expires_after="2024-06-30">
<owner>magchen@chromium.org</owner>
<owner>ccameron@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Pixel size for a skipped overlay render pass draw quad. Recorded in
SkiaRenderer ScheduleOverlays.
</summary>
</histogram>
<histogram name="Compositing.SkiaRenderer.VertexOpacityUsage"
units="VertexOpacityUsage" expires_after="2024-06-28">
<owner>petermcneeley@chromium.org</owner>
<owner>kyle@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Vertex usage is logged cumulatively for every 1000 TextureDrawQuads drawn.
</summary>
</histogram>
<histogram name="Compositing.SurfaceAggregator.AggregateUs"
units="microseconds" expires_after="2024-06-30">
<owner>kylechar@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Time spent aggregating compositor frames from different surfaces in
microseconds. This is logged once per frame.
Warning: This metric may include reports from clients with low-resolution
clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
will cause this metric to have an abnormal distribution. When considering
revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
solution.
</summary>
</histogram>
<histogram name="Compositing.SurfaceAggregator.CopiedSurfaceCount"
units="surfaces" expires_after="2024-06-30">
<owner>kylechar@chromium.org</owner>
<owner>jonross@chromium.org</owner>
<summary>
The number of surfaces where the active CompositorFrame was copied into the
AggregateFrame during surface aggregation. This is logged once per frame.
</summary>
</histogram>
<histogram name="Compositing.SurfaceAggregator.CopyUs" units="microseconds"
expires_after="2024-06-30">
<owner>kylechar@chromium.org</owner>
<owner>jonross@chromium.org</owner>
<summary>
Time spent copying quads during surface aggregation. This is a subset of the
time recorded for Compositing.SurfaceAggregator.AggregateUs and is logged
once per frame.
Warning: This metric does not include reports from clients with
low-resolution clocks.
</summary>
</histogram>
<histogram name="Compositing.SurfaceAggregator.DeclareResourcesUs"
units="microseconds" expires_after="2024-02-01">
<owner>kylechar@chromium.org</owner>
<owner>jonross@chromium.org</owner>
<summary>
Time spent declaring resources as used during surface aggregation. This is a
subset of the time recorded for Compositing.SurfaceAggregator.AggregateUs
and is logged once per frame.
Warning: This metric does not include reports from clients with
low-resolution clocks.
</summary>
</histogram>
<histogram name="Compositing.SurfaceAggregator.Has{Type}PerFrame"
enum="Boolean" expires_after="2024-06-30">
<owner>magchen@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Record whether a frame has a specific type of render pass. This is logged
once per frame.
</summary>
<token key="Type">
<variant name="CopyRequests"/>
<variant name="PixelMovingBackdropFilters"/>
<variant name="PixelMovingFilters"/>
<variant name="UnembeddedRenderPasses"/>
</token>
</histogram>
<histogram name="Compositing.SurfaceAggregator.OrphanedRenderPassCount"
units="render passes" expires_after="2024-07-14">
<owner>kylechar@chromium.org</owner>
<owner>khaslett@chromium.org</owner>
<summary>
The number of render passes that are drawn but are not contributing pixels
to either the framebuffer or a CopyOutputRequest. These render passes can
likely be skipped. This is logged once per frame.
</summary>
</histogram>
<histogram name="Compositing.SurfaceAggregator.PrewalkedSurfaceCount"
units="surfaces" expires_after="2024-06-30">
<owner>kylechar@chromium.org</owner>
<owner>jonross@chromium.org</owner>
<summary>
The number of surfaces that were looked at during the prewalk phase of
surface aggregation. This is logged once per frame.
</summary>
</histogram>
<histogram name="Compositing.SurfaceAggregator.PrewalkUs" units="microseconds"
expires_after="2024-07-07">
<owner>kylechar@chromium.org</owner>
<owner>jonross@chromium.org</owner>
<summary>
Time spent doing prewalk during surface aggregation. This is a subset of the
time recorded for Compositing.SurfaceAggregator.AggregateUs and is logged
once per frame.
Warning: This metric does not include reports from clients with
low-resolution clocks.
</summary>
</histogram>
<histogram name="Compositing.SurfaceManager.MarkForDestructionToDestroy"
units="ms" expires_after="2024-10-20">
<owner>jonross@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
The time between when a Surface has been Marked for Destruction, to when it
is actually Destroyed.
This time denotes how long the Surface remains referenced by other Surfaces,
preventing deletion. This does not include the following time until the
associated resources are released, and their memory is freed. This is logged
once per destroyed Surface.
</summary>
</histogram>
<histogram name="Compositing.TileManager.EnoughMemory" enum="Boolean"
expires_after="2024-06-30">
<owner>lizeb@chromium.org</owner>
<owner>chrome-gpu-memory@google.com</owner>
<summary>
When memory is assigned to tiles, whether there was enough memory for all
required tiles.
</summary>
</histogram>
<histogram name="Compositing.TileManager.LimitWhenNotEnoughMemory" units="MB"
expires_after="2024-06-30">
<owner>lizeb@chromium.org</owner>
<owner>chrome-gpu-memory@google.com</owner>
<summary>
When memory is assigned to tiles and there is not enough memory, the memory
limit that the tile assignment was breaching..
</summary>
</histogram>
<histogram
name="CompositorLatency.CompositorOnlyFrame{InteractionType}.{StageType}"
units="microseconds" expires_after="2024-07-07">
<owner>jonross@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Tracks the duration of various stages in the pipeline as a single frame goes
through the various stages in the compositor in the cases that there is no
damage from main thread.
This metric uses base::Histogram::FactoryMicrosecondsTimeGet so only users
with high resolution clocks will report this metric.
Note: This metric was expired from 2023-03-01 to 2023-05-05.
</summary>
<token key="InteractionType">
<variant name=""/>
<variant name=".CanvasAnimation"/>
<variant name=".CompositorAnimation"/>
<variant name=".JSAnimation"/>
<variant name=".MainThreadAnimation"/>
<variant name=".PinchZoom"/>
<variant name=".RAF"/>
<variant name=".ScrollbarScroll"/>
<variant name=".SETCompositorAnimation"/>
<variant name=".SETMainThreadAnimation"/>
<variant name=".TouchScroll"/>
<variant name=".WheelScroll"/>
</token>
<token key="StageType">
<variant name="BeginImplFrameToFinishImpl"/>
<variant name="ImplFrameDoneToSubmitCompositorFrame"/>
<variant name="SendBeginMainFrameToBeginMainAbort"/>
<variant name="SubmitCompositorFrameToPresentationCompositorFrame"/>
<variant
name="SubmitCompositorFrameToPresentationCompositorFrame.BufferAvailableToBufferReady"/>
<variant
name="SubmitCompositorFrameToPresentationCompositorFrame.BufferReadyToLatch"/>
<variant
name="SubmitCompositorFrameToPresentationCompositorFrame.LatchToSwapEnd"/>
<variant
name="SubmitCompositorFrameToPresentationCompositorFrame.ReceivedCompositorFrameToStartDraw"/>
<variant
name="SubmitCompositorFrameToPresentationCompositorFrame.StartDrawToSwapStart"/>
<variant
name="SubmitCompositorFrameToPresentationCompositorFrame.SubmitToReceiveCompositorFrame"/>
<variant
name="SubmitCompositorFrameToPresentationCompositorFrame.SwapEndToPresentationCompositorFrame"/>
<variant
name="SubmitCompositorFrameToPresentationCompositorFrame.SwapStartToBufferAvailable"/>
<variant
name="SubmitCompositorFrameToPresentationCompositorFrame.SwapStartToSwapEnd"/>
<variant name="TotalLatency"/>
</token>
</histogram>
<histogram name="CompositorLatency.IpcThread.{LatencyType}"
units="microseconds" expires_after="2024-06-12">
<owner>jonross@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Reports the overhead of IPC's and thread hops during the production of a
single frame. Measures {LatencyType}
This is reported by the Renderer, at a subsampled rate of effectively once
per 1000 frames. Non-Renderer clients do not report this. This metric drops
reports on low-resolution clocks, which will bias the Windows population.
</summary>
<token key="LatencyType">
<variant name="BeginMainFrameQueuing"
summary="the time from when the Compositor thread posts
BeginMainFrame to when the task actually begins on the Main
thread. This is a subset of
CompositorLatency.*.SendBeginMainFrameToCommit."/>
<variant name="DispatchToRenderer"
summary="the time from when Viz dispatched the BeginFrameArgs to when
it is received by the client."/>
<variant name="FrameTimeToDispatch"
summary="the time from the targeted frame start time to when Viz
dispatches it to the client."/>
<variant name="ImplThreadTotalLatency"
summary="the total latency overhead for Compositor-only frames. Which
excludes BeginMainFrameQueuing."/>
<variant name="MainThreadTotalLatency"
summary="the total latency overhead for frames which had Main-thread
work."/>
</token>
</histogram>
<histogram name="CompositorLatency.Type{Sequence}" enum="FrameReportType"
expires_after="2024-07-21">
<owner>jonross@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Whether frame is dropped or presented meeting or missing the deadline or is
a compositor only frame.
</summary>
<token key="Sequence">
<variant name="" summary="All Sequences"/>
<variant name=".AnyInteraction" summary="At least one active interaction"/>
<variant name=".CanvasAnimation" summary="Main-thread canvas animation"/>
<variant name=".CompositorAnimation" summary="Compositor-driven animation"/>
<variant name=".JSAnimation" summary="JS-driven animation"/>
<variant name=".MainThreadAnimation"
summary="Main-thread driven animation"/>
<variant name=".NoInteraction" summary="No active interaction"/>
<variant name=".PinchZoom" summary="Pinch-to-zoom interaction"/>
<variant name=".RAF" summary="rAF callback driven animation"/>
<variant name=".ScrollbarScroll" summary="Scrollbar driven scrolls"/>
<variant name=".TouchScroll" summary="Touchscreen driven interaction"/>
<variant name=".Video" summary="Video playback"/>
<variant name=".WheelScroll" summary="Mousewheel driven interaction"/>
</token>
</histogram>
<histogram name="CompositorLatency{ReportType}{InteractionType}.{StageType}"
units="microseconds" expires_after="2024-07-24">
<owner>jonross@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Tracks the duration of various stages in the pipeline as a single frame goes
through the various stages in the compositor {ReportType}.
This metric uses base::Histogram::FactoryMicrosecondsTimeGet so only users
with high resolution clocks will report this metric.
</summary>
<token key="ReportType">
<variant name=""
summary="reported for frames that went through all the compositor
stages in chromium, and was presented to the user"/>
<variant name=".DroppedFrame"
summary="reported for frames that the user did not see: this includes
frames that are dropped in various stages inside chromium,
or even frames that went through all stages in chromium, but
ultimately was not presented to the user"/>
<variant name=".MissedDeadlineFrame"
summary="reported for frames that went through all the compositor
stages in chromium, and was presented to the user, but were
delayed and missed their deadline"/>
</token>
<token key="InteractionType">
<variant name=""/>
<variant name=".CanvasAnimation"/>
<variant name=".CompositorAnimation"/>
<variant name=".JSAnimation"/>
<variant name=".MainThreadAnimation"/>
<variant name=".PinchZoom"/>
<variant name=".RAF"/>
<variant name=".ScrollbarScroll"/>
<variant name=".SETCompositorAnimation"/>
<variant name=".SETMainThreadAnimation"/>
<variant name=".TouchScroll"/>
<variant name=".WheelScroll"/>
</token>
<token key="StageType">
<variant name="Activation"/>
<variant name="BeginImplFrameToSendBeginMainFrame"/>
<variant name="Commit"/>
<variant name="EndActivateToSubmitCompositorFrame"/>
<variant name="EndCommitToActivation"/>
<variant name="SendBeginMainFrameToCommit"/>
<variant name="SendBeginMainFrameToCommit.Animate"/>
<variant name="SendBeginMainFrameToCommit.BeginMainSentToStarted"/>
<variant name="SendBeginMainFrameToCommit.CompositeCommit"/>
<variant name="SendBeginMainFrameToCommit.CompositingInputs"/>
<variant name="SendBeginMainFrameToCommit.HandleInputEvents"/>
<variant name="SendBeginMainFrameToCommit.LayoutUpdate"/>
<variant name="SendBeginMainFrameToCommit.Paint"/>
<variant name="SendBeginMainFrameToCommit.Prepaint"/>
<variant name="SendBeginMainFrameToCommit.StyleUpdate"/>
<variant name="SendBeginMainFrameToCommit.UpdateLayers"/>
<variant name="SubmitCompositorFrameToPresentationCompositorFrame"/>
<variant
name="SubmitCompositorFrameToPresentationCompositorFrame.BufferAvailableToBufferReady"/>
<variant
name="SubmitCompositorFrameToPresentationCompositorFrame.BufferReadyToLatch"/>
<variant
name="SubmitCompositorFrameToPresentationCompositorFrame.LatchToSwapEnd"/>
<variant
name="SubmitCompositorFrameToPresentationCompositorFrame.ReceivedCompositorFrameToStartDraw"/>
<variant
name="SubmitCompositorFrameToPresentationCompositorFrame.StartDrawToSwapStart"/>
<variant
name="SubmitCompositorFrameToPresentationCompositorFrame.SubmitToReceiveCompositorFrame"/>
<variant
name="SubmitCompositorFrameToPresentationCompositorFrame.SwapEndToPresentationCompositorFrame"/>
<variant
name="SubmitCompositorFrameToPresentationCompositorFrame.SwapStartToBufferAvailable"/>
<variant
name="SubmitCompositorFrameToPresentationCompositorFrame.SwapStartToSwapEnd"/>
<variant name="TotalLatency"/>
</token>
</histogram>
<histogram name="Graphics.Exo.Smoothness.DidNotProduceToFrameArrival"
units="microseconds" expires_after="2024-05-05">
<owner>jonross@chromium.org</owner>
<owner>yzshen@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Measures the time duration between Exo sending a DidNotProduceFrame response
and the next frame arrival, if the next frame arrives before a new
BeginFrame request. Reported for clients with high-resolution clocks.
This metric is used to measure whether the deadline Exo uses to wait for
frames is reasonable. Please note that a value is reported for each
DidNotProduceFrame. If (1) DidNotProduceFrame is issued when there are
already queued BeginFrame requests; or (2) a new BeginFrame request arrives
before the next frame; or (3) BeginFrame requests are paused, then the value
reported is 0.
</summary>
</histogram>
<histogram name="Graphics.Exo.Smoothness.PercentDidNotProduceFrame" units="%"
expires_after="2024-07-07">
<owner>jonross@chromium.org</owner>
<owner>yzshen@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Tracks the percent of BeginFrame requests that Exo receives and responds
with DidNotProduceFrame.
A new value is reported for every 100 BeginFrame requests that a shell
surface receives. Note that this metric is reported only when there are
sufficient number of BeginFrame requests (&gt;= 100).
</summary>
</histogram>
<histogram name="Graphics.Exo.Smoothness.PercentFrameDiscarded" units="%"
expires_after="2024-12-31">
<owner>jonross@chromium.org</owner>
<owner>yzshen@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Tracks the percent of compositor frames that are submitted from Exo clients
and directly discarded without being sent to the GPU process.
A new value is reported for every 100 frames that a shell surface submits.
Note that this metric is reported only when there are sufficient number of
frames (&gt;= 100).
</summary>
</histogram>
<histogram name="Graphics.Smoothness.95pctPercentDroppedFrames_1sWindow"
units="%" expires_after="2024-07-21">
<owner>jonross@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
The percent dropped frame is calculated for each sliding window of 1 second
length and added to a histogram, and then the 95 percentile of that
histogram is reported as 95pctPercentDroppedFrames_1sWindow.
The sliding windows cover the duration of page-load (From start of page-load
until user navigates away, or closes the tab/chrome, or when app goes to
background). Note that this means that this metric will bias toward tabs
that are closed more quickly, and might underreport tabs that remain open
for a long duration.
PercentDroppedFrames is measured by tracking the number of frames which were
not displayed on screen out of the total number of frames expected to be
produced and displayed. In other words, the lower this number is, the
smoother experience.
</summary>
</histogram>
<histogram name="Graphics.Smoothness.Checkerboarding3.AllSequences" units="%"
expires_after="2024-07-07">
<owner>jonross@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Tracks the percent of checkerboarded frames for a sequence by aggregating
all its animations and interactions, where a sequence is a series of frames
produced which contain at least one of the animations/interactions. Such
animations and interactions encompass: Compositor-thread animations;
Main-thread animations; JS animations; scrolling; and pinch-gestures.
Checkerboarding is measured by tracking the number of times checkerboard
frames are displayed (as opposed to the number of checkerboard frames
produced), since the same checkerboard frame can be displayed more than
once.
Note that this metric is reported only when there are a sufficient number of
frames (&gt;= 100). If there are sequences with fewer frames, then these are
aggregated until an additional sequence completes where there are (&gt;=
100) frames available in total.
</summary>
</histogram>
<histogram name="Graphics.Smoothness.Checkerboarding3.{Thread}{Sequence}"
units="%" expires_after="2024-07-07">
<owner>jonross@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Tracks the percent of checkerboarded frames for a sequence by aggregating
all {Sequence}, where a sequence is a series of frames produced which
contain at least one of the aforementioned effects.
Checkerboarding is measured by tracking the number of times checkerboard
frames are displayed (as opposed to the number of checkerboard frames
produced), since the same checkerboard frame can be displayed more than
once.
Note that this metric is reported only when there are a sufficient number of
frames (&gt;= 100). If there are sequences with fewer frames, then these are
aggregated until an additional sequence completes where there are (&gt;=
100) frames available in total.
</summary>
<token key="Thread" variants="SmoothnessThread"/>
<token key="Sequence" variants="SmoothnessSequence"/>
</histogram>
<histogram name="Graphics.Smoothness.Jank3.All{Type}" units="%"
expires_after="2024-06-05">
<owner>jonross@chromium.org</owner>
<owner>mjzhang@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Tracks the percent of janks for a sequence by aggregating all its {Type}
Jank is measured by tracking the number of abrupt increases in frame
presentation interval, divided by the total number of frames expected to be
produced and displayed. The lower this number is, the less the smoothness
varies over time.
Note that this metric is reported only when there are sufficient number of
frames (&gt;= 100). If there are sequences with fewer frames, then these are
aggregated until there are enough frames to produce the metric.
</summary>
<token key="Type">
<variant name="Sequences"
summary="animations and interactions, where a sequence is a series of
frames produced which contain at least one of the
animations/interactions. Such animations and interactions
encompass: Compositor-thread animations; Main-thread
animations; JS animations; scrolling; and pinch-gestures."/>
</token>
</histogram>
<histogram name="Graphics.Smoothness.Jank3.{Thread}{Sequence}" units="%"
expires_after="2024-06-05">
<owner>jonross@chromium.org</owner>
<owner>mjzhang@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Tracks the percent of janks for a sequence by aggregating all {Sequence},
where a sequence is a series of frames produced which contain at least one
of the aforementioned effects.
Jank is measured by tracking the number of abrupt increases in frame
presentation interval, divided by the total number of frames expected to be
produced and displayed. The lower this number is, the less the smoothness
varies over time.
Note that this metric is reported only when there are sufficient number of
frames (&gt;= 100). If there are sequences with fewer frames, then these are
aggregated until there are enough frames to produce the metric.
</summary>
<token key="Thread" variants="SmoothnessThread"/>
<token key="Sequence" variants="SmoothnessSequence"/>
</histogram>
<histogram name="Graphics.Smoothness.MaxPercentDroppedFrames_1sWindow"
units="%" expires_after="2024-06-30">
<owner>jonross@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Tracks the percent of dropped frames for in a 1 second sliding window.
PercentDroppedFrames is measured by tracking the number of frames which were
not displayed on screen out of the total number of frames expected to be
produced and displayed. In other words, the lower this number is, the
smoother experience.
</summary>
</histogram>
<histogram name="Graphics.Smoothness.MaxStale" units="ms"
expires_after="2024-07-21">
<owner>jonross@chromium.org</owner>
<owner>mjzhang@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Tracks the maximum staleness value for all presentations for a particular
sequence of frames (e.g. during scroll, animation, etc.). This is reported
in various sub-metrics with suffixes describing the type of the sequence
(e.g. TouchScroll etc.).
Typically, a frame presentation is expected to last at least one vsync
cycle, plus any number of additional vsync cycles if no updates are expected
duration that time. If the presentation interval is prolonged due to reasons
other than listed above, then that prolonged portion will be considered
staleness for that frame.
Note that this metric is reported only when there are sufficient number of
frames (&gt;= 100). If there are sequences with fewer frames, then these are
aggregated until there are enough frames to produce the metric.
</summary>
</histogram>
<histogram name="Graphics.Smoothness.PercentDroppedFrames3.AllSequences"
units="%" expires_after="never">
<!-- expires-never: guiding metric (internal: go/chrome-browser-guiding-metrics) -->
<owner>jonross@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<owner>chrome-analysis-team@google.com</owner>
<summary>
Tracks the percent of dropped frames for a sequence by aggregating all its
animations and interactions, where a sequence is a series of frames produced
which contain at least one of the animations/interactions. Such animations
and interactions encompass: Compositor-thread animations; Main-thread
animations; JS animations; scrolling; and pinch-gestures.
PercentDroppedFrames is measured by tracking the number of frames which were
not displayed on screen out of the total number of frames expected to be
produced and displayed. In other words, the lower this number is, the
smoother the experience.
Note that this metric is reported only when there are a sufficient number of
frames (&gt;= 100). If there are sequences with fewer frames, then these are
aggregated until an additional sequence completes where there are (&gt;=
100) frames available in total.
This is a new implementation of the older
Graphics.Smoothness.PercentDroppedFrames.AllInteractions metric.
See http://shortn/_ItBDdHoyCf (internal only) for more details.
This histogram is of special interest to the chrome-analysis-team@. Do not
change its semantics or retire it without talking to them first.
</summary>
</histogram>
<histogram name="Graphics.Smoothness.PercentDroppedFrames3.{Thread}{Sequence}"
units="%" expires_after="2024-07-14">
<owner>jonross@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Tracks the percent of dropped frames for a sequence by aggregating all
{Sequence}, where a sequence is a series of frames produced which contain at
least one of the aforementioned effects.
PercentDroppedFrames is measured by tracking the number of frames which were
not displayed on screen out of the total number of frames expected to be
produced and displayed. In other words, the lower this number is, the
smoother the experience.
Note that this metric is reported only when there are a sufficient number of
frames (&gt;= 100). If there are sequences with fewer frames, then these are
aggregated until an additional sequence completes where there are (&gt;=
100) frames available in total.
This is a new implementation of the older
Graphics.Smoothness.PercentDroppedFrames.AllInteractions metric.
</summary>
<token key="Thread" variants="SmoothnessThread"/>
<token key="Sequence" variants="SmoothnessSequence"/>
</histogram>
<histogram name="Graphics.Smoothness.Stale" units="ms"
expires_after="2024-07-21">
<owner>jonross@chromium.org</owner>
<owner>mjzhang@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Tracks the staleness value for each frame presentation for a particular
sequence of frames (e.g. during scroll, animation, etc.). This is reported
in various sub-metrics with suffixes describing the type of the sequence
(e.g. TouchScroll etc.).
Typically, a frame presentation is expected to last at least one vsync
cycle, plus any number of additional vsync cycles if no updates are expected
duration that time. If the presentation interval is prolonged due to reasons
other than listed above, then that prolonged portion will be considered
staleness.
Note that the reporting of this metric occurs as soon as a frame is
presented, and is not affected by the length of the frame sequence.
</summary>
</histogram>
</histograms>
</histogram-configuration>