<!--
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
[email protected].
-->
<histogram-configuration>
<histograms>
<variants name="AccumulatedSequences">
<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.)"/>
</variants>
<variants name="CheckerboardingVersion">
<variant name="3"
summary="A frame is counted as checkerboarded if any visible tile is
not fully rastered."/>
<variant name="4"
summary="A frame is counted as checkerboarded if any visible tile is
not fully rastered or recorded."/>
</variants>
<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="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="CompositorThread."/>
<variant name="MainThread."/>
</variants>
<variants name="TileManagerProcessType">
<variant name="Browser"/>
<variant name="Renderer"/>
</variants>
<histogram name="Compositing.Browser.LayersUpdateTime" units="microseconds"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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>[email protected]</owner>
<owner>[email protected]</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-10-20">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</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>[email protected]</owner>
<owner>[email protected]</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="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</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.DrawnRectAssignmentType"
enum="RenderPassDrawRectAssign" expires_after="2025-03-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records update type to the drawn rect for every draw to each non root
renderpass.
</summary>
</histogram>
<histogram name="Compositing.DirectRenderer.OverlayProcessingUs"
units="microseconds" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</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 "empty swap" (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>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</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 "empty swap" (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="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</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 "empty swap" (no frame damage) case.
</summary>
</histogram>
<histogram name="Compositing.DirectRenderer.PartialSwap.TotalDamage" units="%"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</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 "empty swap" (no frame damage) case
Note: this metric was expired from 2023-04-30 to 2023-06-09.
</summary>
</histogram>
<histogram name="Compositing.DirectRenderer.RenderPassDrawnRectMatch"
enum="Boolean" expires_after="2025-06-09">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether a render pass drawn rect matches the expected output rect. Record
for each non-root render pass every time it is drawn.
</summary>
</histogram>
<histogram name="Compositing.DirectRenderer.SkipAllNonRootRenderPassesPerFrame"
enum="BooleanSkipped" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</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.{FocusType}" units="pixels"
expires_after="2025-06-09">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Record every frame the sum of all rendered pixels from all render passes.
The buckets are {FocusType}
</summary>
<token key="FocusType">
<variant name="TotalPixelsRendered" summary="Full Linear view of count."/>
<variant name="TotalPixelsRenderedNarrow"
summary="Narrowed bucket sampling selected based on common screen
resolutions"/>
</token>
</histogram>
<histogram name="Compositing.Display.AdpfHintUs" units="microseconds"
expires_after="2025-09-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</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.AverageOverdraw" units="units"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The average overdraw of the aggregated compositor frame. It is logged once
per frame. Overdraw is expected to range is [1.0, 6.0]. An overdraw of 2.0
means that on average each pixel of the display is drawn twice. Note: The
overdraw value is logged as `overdraw * 100000`.
</summary>
</histogram>
<histogram name="Compositing.Display.Draw.LastPass.Quads" units="quads"
expires_after="2025-05-13">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This is logged once per n frames, when the frame is drawn and feature is
enabled. The total number of quads in the last render passes in the
CompositorFrame that is produced by surface aggregation.
</summary>
</histogram>
<histogram name="Compositing.Display.Draw.LastPass.Quads.BufferFormat"
enum="BufferFormat" expires_after="2025-05-13">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This is logged once per n frames, when the frame is drawn and feature is
enabled. The buffer format underlying each quads in the last render pass in
the CompositorFrame that is produced by surface aggregation.
</summary>
</histogram>
<histogram name="Compositing.Display.Draw.LastPass.Quads.ColorSpacePrimaryID"
enum="ColorSpacePrimaryID" expires_after="2025-05-13">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This is logged once per n frames, when the frame is drawn and feature is
enabled. The primary id for the color space of each quad in the last render
pass in the CompositorFrame that is produced by surface aggregation.
</summary>
</histogram>
<histogram name="Compositing.Display.Draw.LastPass.Quads.ColorSpaceTransferID"
enum="ColorSpaceTransferID" expires_after="2025-05-13">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This is logged once per n frames, when the frame is drawn and feature is
enabled. The transfer id for the color space of each quad in the last render
pass in the CompositorFrame that is produced by surface aggregation.
</summary>
</histogram>
<histogram name="Compositing.Display.Draw.LastPass.Quads.LoggingTimeUs"
units="microseconds" expires_after="2025-05-13">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This is logged once per n frames, when the frame is drawn and feature is
enabled. The amount of time spent collecting information relevant to all
quads in the last render pass. Only reported for platforms supporting high
resolution clocks.
</summary>
</histogram>
<histogram name="Compositing.Display.Draw.LastPass.Quads.{IdType}"
units="quads" expires_after="2025-05-13">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This is logged once per n frames, when the frame is drawn and feature is
enabled. The total number of quads that resulted in {IdType} during overlay
promotion attempt in the last render pass in the CompositorFrame is produced
by surface aggregation.
</summary>
<token key="IdType">
<variant name="FailedCandidate" summary="failed candidates"/>
<variant name="NonAligned" summary="non-aligned candidates"/>
<variant name="NonOpaque" summary="non-opaque candidates"/>
<variant name="NonPixelAligned" summary="non-pixel aligned candidates"/>
<variant name="RoundedCorners" summary="candidates with rounded corner"/>
<variant name="Scaled" summary="scaled candidates"/>
<variant name="SolidColor" summary="solid color quad"/>
<variant name="Transformations" summary="candidates with transformations"/>
</token>
</histogram>
<histogram name="Compositing.Display.Draw.Occlusion.Calculation.Time"
units="microseconds" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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.Draw.Quads" units="quads"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This is logged once per frame, when the frame is drawn. The total number of
quads in all render passes in the CompositorFrame that is produced by
surface aggregation. Histogram was previously expired from 2019-06 to
2024-03.
</summary>
</histogram>
<histogram name="Compositing.Display.DrawToSwapUs" units="microseconds"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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.FullscreenOverlayFailed"
enum="Boolean" expires_after="2024-12-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
If kHandleOverlaysSwapFailure is enabled, this is logged once per frame that
has a fullscreen overlay. Helps to measure how many times fullscreen
overlays succeeded or failed while DRM test was allowed to be skipped.
</summary>
</histogram>
<histogram name="Compositing.Display.FlattenedRenderPassCount" units="units"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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>[email protected]</owner>
<owner>[email protected]</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.OverlayProcessorUsingStrategy.FramesAttemptingRequiredOverlays"
enum="Boolean" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records zero or once per frame, whether we attempted scaling any required
overlay.
</summary>
</histogram>
<histogram
name="Compositing.Display.OverlayProcessorUsingStrategy.FramesWith{Catcher}"
enum="Boolean" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records zero or once per frame, wether a frame has a {Catcher}.
</summary>
<token key="Catcher">
<variant name="MaskCandidates" summary="mask candidates."/>
<variant name="MaskCandidatesRequireOverlays"
summary="a mask candidate that should be promoted to overlay."/>
</token>
</histogram>
<histogram
name="Compositing.Display.OverlayProcessorUsingStrategy.NumOverlays{Counted}"
units="overlay candidates" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Logged once per frame, the number of quads considered for promotion to
overlay. Note: this metric was expired from 2023-06-18 to 2024-02-05.
</summary>
</histogram>
<histogram
name="Compositing.Display.OverlayProcessorUsingStrategy.ShouldPromoteCandidatesWithMasks"
enum="PromotingMaskCandidates" expires_after="2025-02-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Logged for each mask candidate whether it was promoted or why it was not
promoted.
</summary>
</histogram>
<histogram
name="Compositing.Display.OverlayProcessorUsingStrategy.WorkingScaleFactorForRequiredOverlays"
units="scale_factor" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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-08-18">
<owner>[email protected]</owner>
<owner>[email protected]</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-10-20">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-23">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-23">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</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>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</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>[email protected]</owner>
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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-11-03">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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-09-22">
<owner>[email protected]</owner>
<owner>[email protected]</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.DrawTileDrawQuad.UsingRawDraw"
enum="Boolean" expires_after="2023-06-11">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Records if the TileDrawQuad is rendered with RawDraw.</summary>
</histogram>
<histogram name="Compositing.SkiaRenderer.SkipOverlayRenderPassDrawQuad"
enum="BooleanSkipped" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</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-11-03">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</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-11-03">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Vertex usage is logged cumulatively for every 1000 TextureDrawQuads drawn.
</summary>
</histogram>
<histogram name="Compositing.SurfaceAggregator.AggregateUs"
units="microseconds" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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.ExcessPixelsClipped"
units="pixels" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Record the number of excess pixels for the output rect that would not be
visible due to the parent root clip. This is logged once per frame.
</summary>
</histogram>
<histogram name="Compositing.SurfaceAggregator.Has{Type}PerFrame"
enum="Boolean" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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.PrewalkedSurfaceCount"
units="surfaces" expires_after="2024-11-03">
<owner>[email protected]</owner>
<owner>[email protected]</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-09-15">
<owner>[email protected]</owner>
<owner>[email protected]</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.SurfaceAggregator.RenderPassDamageType"
enum="RenderPassDamage" expires_after="2025-03-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Record the damage type for an aggregate render pass based on clipping by the
root. This is logged once per frame.
</summary>
</histogram>
<histogram name="Compositing.SurfaceManager.MarkForDestructionToDestroy"
units="ms" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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.{ProcessType}"
enum="Boolean" expires_after="2024-06-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
When memory is assigned to tiles, whether there was enough memory for all
required tiles.
</summary>
<token key="ProcessType" variants="TileManagerProcessType"/>
</histogram>
<histogram
name="Compositing.TileManager.LimitWhenNotEnoughMemory.{ProcessType}"
units="MB" expires_after="2024-06-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
When memory is assigned to tiles and there is not enough memory, the memory
limit that the tile assignment was breaching.
</summary>
<token key="ProcessType" variants="TileManagerProcessType"/>
</histogram>
<histogram name="Compositing.TileManager.TileInvalidationArea" units="%"
expires_after="2025-06-09">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
When resource is assigned to tile for rasterization, records the percentage
area of invalidation of said resource. This will only be recorded for
partially rasterized tiles.
</summary>
</histogram>
<histogram name="Compositing.VizBreakdownToPresentationUnexpected"
enum="VizBreakdown" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded when an unexpected viz stage ends after the presentation time.
</summary>
</histogram>
<histogram name="Compositing.{Process}.CompositorFrame.Quads" units="quads"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The total number of quads in all render passes in a CompositorFrame. This is
logged as the CompositorFrame is submitted to its surface. Histogram was
previously expired from 2019-06 to 2024-03.
</summary>
<token key="Process">
<variant name="Browser"/>
<variant name="Renderer"/>
</token>
</histogram>
<histogram
name="CompositorLatency.CompositorOnlyFrame{InteractionType}.{StageType}"
units="microseconds" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-16">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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.BeginFrameArrivalToSubmission"
units="microseconds" expires_after="2024-12-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Measures the time duration between Exo receiving a BeginFrame and submitting
a frame for it. Reported for clients with high-resolution clocks.
Please note that no value is reported if a BeginFrame is responded with
DidNotProduceFrame.
</summary>
</histogram>
<histogram name="Graphics.Exo.Smoothness.FrameArrivalToSubmission"
units="microseconds" expires_after="2024-12-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Measures the time duration between Exo receiving a frame and submitting it.
Reported for clients with high-resolution clocks.
Please note that no value is reported if a frame is discarded by Exo.
</summary>
</histogram>
<histogram name="Graphics.Smoothness.95pctPercentDroppedFrames_1sWindow"
units="%" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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.CheckerboardingNeedRaster4.AllSequences"
units="%" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tracks the percent of checkerboarded frames that contain any not fully
rastered visible tiles, 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 (>= 100). If there are sequences with fewer frames, then these are
aggregated until an additional sequence completes where there are (>=
100) frames available in total.
</summary>
</histogram>
<histogram name="Graphics.Smoothness.CheckerboardingNeedRecord4.AllSequences"
units="%" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tracks the percent of checkerboarded frames that contain any not fully
recorded visible tiles, 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 (>= 100). If there are sequences with fewer frames, then these are
aggregated until an additional sequence completes where there are (>=
100) frames available in total.
</summary>
</histogram>
<histogram name="Graphics.Smoothness.Checkerboarding{Version}.AllSequences"
units="%" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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 (>= 100). If there are sequences with fewer frames, then these are
aggregated until an additional sequence completes where there are (>=
100) frames available in total.
</summary>
<token key="Version" variants="CheckerboardingVersion"/>
</histogram>
<histogram name="Graphics.Smoothness.Checkerboarding{Version}.{Sequence}"
units="%" expires_after="2025-01-19">
<owner>[email protected]</owner>
<owner>[email protected]</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 (>= 100). If there are sequences with fewer frames, then these are
aggregated until an additional sequence completes where there are (>=
100) frames available in total.
</summary>
<token key="Version" variants="CheckerboardingVersion"/>
<token key="Sequence" variants="AccumulatedSequences"/>
</histogram>
<histogram
name="Graphics.Smoothness.Checkerboarding{Version}.{Thread}{Sequence}"
units="%" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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 (>= 100). If there are sequences with fewer frames, then these are
aggregated until an additional sequence completes where there are (>=
100) frames available in total.
</summary>
<token key="Version" variants="CheckerboardingVersion"/>
<token key="Thread" variants="SmoothnessThread"/>
<token key="Sequence" variants="SmoothnessSequence"/>
</histogram>
<histogram name="Graphics.Smoothness.Jank3.AllSequences" units="%"
expires_after="2025-02-09">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tracks the percent of janks 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.
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 (>= 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.Jank3.{Sequence}" units="%"
expires_after="2025-02-09">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</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 (>= 100). If there are sequences with fewer frames, then these are
aggregated until there are enough frames to produce the metric.
</summary>
<token key="Sequence" variants="AccumulatedSequences"/>
</histogram>
<histogram name="Graphics.Smoothness.Jank3.{Thread}{Sequence}" units="%"
expires_after="2025-02-09">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</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 (>= 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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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.PercentDroppedFrames3.AllSequences"
units="%" expires_after="never">
<!-- expires-never: guiding metric (internal: go/chrome-browser-guiding-metrics) -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</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 (>= 100). If there are sequences with fewer frames, then these are
aggregated until an additional sequence completes where there are (>=
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.{Sequence}"
units="%" expires_after="2025-01-19">
<owner>[email protected]</owner>
<owner>[email protected]</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 (>= 100). If there are sequences with fewer frames, then these are
aggregated until an additional sequence completes where there are (>=
100) frames available in total.
This is a new implementation of the older
Graphics.Smoothness.PercentDroppedFrames.AllInteractions metric.
</summary>
<token key="Sequence" variants="AccumulatedSequences"/>
</histogram>
<histogram
name="Graphics.Smoothness.PercentDroppedFrames3.{Sequence}.1MinAfterResume"
units="%" expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</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 (>= 100). If there are sequences with fewer frames, then these are
aggregated until an additional sequence completes where there are (>=
100) frames available in total.
This metric is only recorded for 1 minute after the device is resumed.
This is supported by ChromeOS only.
</summary>
<token key="Sequence" variants="AccumulatedSequences"/>
</histogram>
<histogram name="Graphics.Smoothness.PercentDroppedFrames3.{Thread}{Sequence}"
units="%" expires_after="2025-01-19">
<owner>[email protected]</owner>
<owner>[email protected]</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 (>= 100). If there are sequences with fewer frames, then these are
aggregated until an additional sequence completes where there are (>=
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>
</histograms>
</histogram-configuration>