blob: 6399dcec046da1f60572ec77ac836e480100133c [file] [log] [blame]
<!--
Copyright 2020 The Chromium Authors. All rights reserved.
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 GPU 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>
<histogram name="ConfigureDisplays.External.Modeset.AttemptSucceeded"
enum="BooleanSuccess" expires_after="2022-09-01">
<owner>gildekel@chromium.org</owner>
<owner>seanpaul@chromium.org</owner>
<owner>chromeos-gfx-display@chromium.org</owner>
<summary>
Modeset attempt result of an external display. Every time an external
display is connected/disconnected, or when the display mode of the external
screen is changed by the user, Chrome attempts to modeset the display. This
metric tracks the result of those attempts. Resolution and RefreshRate
metrics will be recorded for each attempt.
</summary>
</histogram>
<histogram name="ConfigureDisplays.External.Modeset.FinalStatus"
enum="BooleanSuccess" expires_after="2022-09-01">
<owner>gildekel@chromium.org</owner>
<owner>seanpaul@chromium.org</owner>
<owner>chromeos-gfx-display@chromium.org</owner>
<summary>
Modeset attempt result of an internal display. This is recorded after Chrome
attempted all the available modes and finally modeset the display. All the
previously attempted modes and refreshes, including the successful one will
be recorded.
</summary>
</histogram>
<histogram name="ConfigureDisplays.External.Modeset.RefreshRate" units="Hz"
expires_after="2022-09-01">
<owner>gildekel@chromium.org</owner>
<owner>seanpaul@chromium.org</owner>
<owner>chromeos-gfx-display@chromium.org</owner>
<summary>
Refresh rate of the mode for the display we're about to modeset. This is
recorded every time an external display is connected/disconnected, or when
the display mode of the external screen is about to change.
</summary>
</histogram>
<histogram name="ConfigureDisplays.External.Modeset.Resolution"
enum="DisplayResolution" expires_after="2022-09-01">
<owner>gildekel@chromium.org</owner>
<owner>seanpaul@chromium.org</owner>
<owner>chromeos-gfx-display@chromium.org</owner>
<summary>
DisplayResolution of the mode for the external display we're about to
modeset. 0 means the display was powered off. This is recorded every time an
external display is connected/disconnected, or when the display mode of the
external screen is about to change.
</summary>
</histogram>
<histogram name="ConfigureDisplays.Internal.Modeset.AttemptSucceeded"
enum="BooleanSuccess" expires_after="2022-09-01">
<owner>gildekel@chromium.org</owner>
<owner>seanpaul@chromium.org</owner>
<owner>chromeos-gfx-display@chromium.org</owner>
<summary>
Modeset attempt result of an internal display. Chrome might try additional
modes after a failed attempt. Every time an external display is
connected/disconnected, or when the display mode of the external screen is
changed by the user, Chrome attempts to modeset the display. This metric
tracks the result of those attempts. Resolution and RefreshRate metrics will
be recorded for each attempt.
</summary>
</histogram>
<histogram name="ConfigureDisplays.Internal.Modeset.FinalStatus"
enum="BooleanSuccess" expires_after="2022-09-01">
<owner>gildekel@chromium.org</owner>
<owner>seanpaul@chromium.org</owner>
<owner>chromeos-gfx-display@chromium.org</owner>
<summary>
Modeset attempt result of an internal display. This is recorded after Chrome
attempted all the available modes and finally modeset the display. All the
previously attempted modes and refreshes, including the successful one will
be recorded.
</summary>
</histogram>
<histogram name="ConfigureDisplays.Internal.Modeset.RefreshRate" units="Hz"
expires_after="2022-09-01">
<owner>gildekel@chromium.org</owner>
<owner>seanpaul@chromium.org</owner>
<owner>chromeos-gfx-display@chromium.org</owner>
<summary>
Refresh rate of the mode for the display we're about to modeset. This is
recorded every time the internal display is powered on/off, or when an
external monitor is plugged in.
</summary>
</histogram>
<histogram name="ConfigureDisplays.Internal.Modeset.Resolution"
enum="DisplayResolution" expires_after="2022-09-01">
<owner>gildekel@chromium.org</owner>
<owner>seanpaul@chromium.org</owner>
<owner>chromeos-gfx-display@chromium.org</owner>
<summary>
DisplayResolution of the mode for the internal display we're about to
modeset. 0 means the display was powered off. This is recorded every time
the internal display is powered on/off, or when an external monitor is
plugged in.
</summary>
</histogram>
<histogram name="ConfigureDisplays.Modeset.MstExternalDisplaysCount"
units="count" expires_after="2022-09-01">
<owner>gildekel@chromium.org</owner>
<owner>seanpaul@chromium.org</owner>
<owner>chromeos-gfx-display@chromium.org</owner>
<summary>
Total number of external displays connected via MST and being configured.
This is recorded every time an external display is connected/disconnected,
or when the display mode of a screen is about to change.
</summary>
</histogram>
<histogram name="ConfigureDisplays.Modeset.MstExternalDisplaysPercentage"
units="%" expires_after="2022-09-01">
<owner>gildekel@chromium.org</owner>
<owner>seanpaul@chromium.org</owner>
<owner>chromeos-gfx-display@chromium.org</owner>
<summary>
Percentage of external displays connected via MST and being configured. This
is recorded every time an external display is connected/disconnected, or
when the display mode of a screen is about to change.
</summary>
</histogram>
<histogram name="ConfigureDisplays.Modeset.TotalExternalDisplaysCount"
units="count" expires_after="2022-09-01">
<owner>gildekel@chromium.org</owner>
<owner>seanpaul@chromium.org</owner>
<owner>chromeos-gfx-display@chromium.org</owner>
<summary>
Total number of external displays being configured. This is recorded every
time an external display is connected/disconnected, or when the display mode
of a screen is about to change.
</summary>
</histogram>
<histogram name="Display.External.BlockZeroSerialNumberType"
enum="BlockZeroSerialNumberType" expires_after="2022-09-01">
<owner>gildekel@chromium.org</owner>
<owner>seanpaul@chromium.org</owner>
<owner>chromeos-gfx-display@google.com</owner>
<summary>
The type of serial number retrieved from block zero of a display's EDID
during EDID parsing.
</summary>
</histogram>
<histogram name="Display.External.NumOfSerialNumbersProvided" units="count"
expires_after="2022-09-01">
<owner>gildekel@chromium.org</owner>
<owner>seanpaul@chromium.org</owner>
<owner>chromeos-gfx-display@google.com</owner>
<summary>
The number of serial numbers provided in an EDID (i.e. via block zero and/or
the serial number descriptor block). Values should be in the range of 0-2.
</summary>
</histogram>
<histogram name="Display.External.ParseEdidOptionals" enum="ParseEdidOptionals"
expires_after="2022-09-01">
<owner>gildekel@chromium.org</owner>
<owner>seanpaul@chromium.org</owner>
<owner>chromeos-gfx-display@google.com</owner>
<summary>
The availability (or lack thereof) of tracked optional fields during EDID
parsing of external.
</summary>
</histogram>
<histogram name="Display.MultipleDisplays.GenerateId.CollisionDetection"
enum="BooleanDisplayIdCollision" expires_after="2022-09-01">
<owner>gildekel@chromium.org</owner>
<owner>seanpaul@chromium.org</owner>
<owner>chromeos-gfx-display@google.com</owner>
<summary>
Whether or not multiple connected displays produced identical display IDs
due to incomplete EDIDs. This may occur when identical displays (same make
and model) lack serial numbers in both the EDID's block zero or S/N
descriptor block. Recorded every time Chrome OS detects a change in display
configuration and attempts to get an updated list of available displays.
</summary>
</histogram>
<histogram name="Display.ParseEdidFailure" enum="ParseEdidFailure"
expires_after="2022-09-01">
<owner>gildekel@chromium.org</owner>
<owner>sashamcintosh@chromium.org</owner>
<owner>seanpaul@chromium.org</owner>
<owner>chromeos-gfx-display@google.com</owner>
<summary>
Type of failure that occurs during EDID parsing. Typically the failure is
caused by a mismatch between the EDID size and the expected offset of the
data component.
</summary>
</histogram>
<histogram name="GPU.AcceleratedSurfaceRefreshRate" units="hz"
expires_after="M97">
<owner>vmiura@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Refresh rate of the display in Hz. This is recorded every time we present a
frame.
</summary>
</histogram>
<histogram name="GPU.ANGLE.Buffer11CPUMemoryMB" units="MB"
expires_after="2020-05-10">
<owner>cwallez@chromium.org</owner>
<summary>
The sum of the size of the CPU-side memory allocations of Buffer11's copies
(vs. GPU memory allocations). These allocations are used when modifying the
buffer data on the CPU or when transfering to GPU memory via DMA.
</summary>
</histogram>
<histogram name="GPU.ANGLE.D3D11CreateDeviceError" enum="Hresult"
expires_after="2022-06-01">
<owner>jonahr@google.com</owner>
<owner>angle-team@google.com</owner>
<summary>
An extended Windows error code returned from D3D11CreateDevice on error when
ANGLE's D3D backend is in use. Can be almost any valid HRESULT or DXGI error
code, which are listed at
https://msdn.microsoft.com/en-us/library/windows/desktop/bb509553.aspx.
</summary>
</histogram>
<histogram name="GPU.ANGLE.D3D11FeatureLevel" enum="D3DFeatureLevel"
expires_after="2022-06-01">
<owner>jonahr@google.com</owner>
<owner>angle-team@google.com</owner>
<summary>
The maxmium supported (or currently requested) Direct3D feature level in
D3D11 ANGLE. We support as low as 9.3, and as high as 11.1, though Chrome
should only use 10.0+ for D3D11. Gives an indication of how new a user's
video card is, what features it supports, and it's general speed tier.
Recorded on D3D device initialization, loss, or reset when ANGLE's D3D
backend is in use.
</summary>
</histogram>
<histogram name="GPU.ANGLE.D3D11InitializeResult" enum="D3D11InitializeResult"
expires_after="2022-06-01">
<owner>jonahr@google.com</owner>
<owner>angle-team@google.com</owner>
<summary>
The result from initializing a D3D11 device in ANGLE. Can be success, or one
of several error codes which indicate different reasons for failing.
Recorded on D3D11 device initialization when ANGLE's D3D backend is in use.
</summary>
</histogram>
<histogram name="GPU.ANGLE.D3D9InitializeResult" enum="D3D9InitializeResult"
expires_after="2022-06-01">
<owner>jonahr@google.com</owner>
<owner>angle-team@google.com</owner>
<summary>
The result from initializing a D3D9 device in ANGLE. Can be success, or one
of several error codes which indicate different reasons for failing.
Recorded on D3D9 device initialization when ANGLE's D3D backend is in use.
</summary>
</histogram>
<histogram name="GPU.ANGLE.D3DCompileMS" units="ms" expires_after="2022-06-01">
<owner>jonahr@google.com</owner>
<owner>angle-team@google.com</owner>
<summary>
The time ANGLE spends calling the D3D shader compiler. Tracks total time we
spend compiling shaders on startup and during Chrome's lifetime. Recorded on
D3D shader compilation when ANGLE's D3D backend is in use.
</summary>
</histogram>
<histogram name="GPU.ANGLE.DisplayInitializeMS" units="ms"
expires_after="2022-06-01">
<owner>jonahr@google.com</owner>
<owner>angle-team@google.com</owner>
<summary>
Time ANGLE spends in eglInitialize, where it spins up a Renderer. This can
gives us insight into how much time we're spending initializing the GPU.
</summary>
</histogram>
<histogram name="GPU.ANGLE.ProgramCache.BinaryCacheHitTimeUS"
units="microseconds" expires_after="M85">
<owner>jmadill@chromium.org</owner>
<summary>
The time to load a gpu program from the program cache.
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="GPU.ANGLE.ProgramCache.BinaryCacheMissTimeUS"
units="microseconds" expires_after="M85">
<owner>jmadill@chromium.org</owner>
<summary>
The time to link a gpu program.
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="GPU.ANGLE.ProgramCache.CacheResult"
enum="ANGLEProgramCacheResult" expires_after="M85">
<owner>jmadill@chromium.org</owner>
<summary>
If a successfully linked program was found in the GPU program cache during a
program link call, and if the hit was originally loaded from disk.
</summary>
</histogram>
<histogram name="GPU.ANGLE.ProgramCache.LoadBinarySuccess"
enum="BooleanSuccess" expires_after="2022-06-01">
<owner>jonahr@google.com</owner>
<owner>angle-team@google.com</owner>
<summary>
Records if the call to load a cached binary was successful. Calls are made
on shader creation and linking. This can legitimately fail if the driver
wants chrome to re-link and re-cache the gpu program.
</summary>
</histogram>
<histogram name="GPU.ANGLE.ProgramCache.ProgramBinarySizeBytes" units="bytes"
expires_after="2022-06-01">
<owner>jonahr@google.com</owner>
<owner>angle-team@google.com</owner>
<summary>
Records the size of program binaries loaded into the gpu program cache.
Programs are loaded into the cache upon use in draw and dispatch calls.
</summary>
</histogram>
<histogram name="GPU.ANGLE.SupportsDXGI1_2" enum="BooleanSupported"
expires_after="2022-06-01">
<owner>jonahr@google.com</owner>
<owner>angle-team@google.com</owner>
<summary>
Windows computers running Windows 8+, or running Windows 7 with a platform
update, support the newer version of DXGI. This update also indicates the
computer is capable of running Direct3D 11.1 if the hardware supports it.
Recorded on D3D11 device initialization when ANGLE's D3D backend is in use.
</summary>
</histogram>
<histogram name="GPU.AppContainer.EnableState"
enum="GPUAppContainerEnableState" expires_after="2020-07-31">
<owner>forshaw@chromium.org</owner>
<owner>wfh@chromium.org</owner>
<summary>
On Windows 10 version RS1 and above the GPU can be sandboxed using an
AppContainer. This is recorded every time the GPU sandbox is initialized and
enabling the AppContainer is requested, such as through a command line
option. The recorded value can indicate that the AppContainer was disabled
due to an incompatible configuration or the GPU process had previously
crashed resulting in the AppContainer being forcefully disabled.
</summary>
</histogram>
<histogram name="GPU.AppContainer.Status" enum="LaunchErrorCodes"
expires_after="2020-10-11">
<owner>forshaw@chromium.org</owner>
<owner>wfh@chromium.org</owner>
<summary>
On Windows 10 version RS1 and above the GPU can be sandboxed using an
AppContainer. This indicates the status when initializing the sandbox
profile during process creation.
</summary>
</histogram>
<histogram name="GPU.AtExitSurfaceCount" units="units" expires_after="M77">
<owner>vmiura@chromium.org</owner>
<summary>
The number of surfaces that the GPU process was rendering to right before
exiting. This should be equal to the number of tabs (both visible and
hidden) rendering via the compositor.
</summary>
</histogram>
<histogram name="GPU.BlocklistFeatureTestResults"
enum="GPUBlocklistFeatureTestResults" expires_after="2022-06-26">
<owner>vmiura@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Counts number of browser invocations for which a GPU feature is
allowed/blocklisted/disabled.
</summary>
</histogram>
<histogram name="GPU.BlocklistTestResultsPerEntry"
enum="GPUBlocklistTestResultPerEntry" expires_after="2022-07-03">
<owner>vmiura@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Counts number of browser invocations for which the GPU process is blocked
due to a blocklist entry match.
</summary>
</histogram>
<histogram name="GPU.CanvasOopRaster.OopRasterAndGpuAcceleration"
enum="CanvasOopRasterAndGpuAcceleration" expires_after="2022-11-01">
<owner>vasilyt@chromium.org</owner>
<owner>nazabris@microsoft.com</owner>
<owner>jochin@microsoft.com</owner>
<summary>
Records, during GPU process initialization, the combination of the following
two features being enabled/disabled: 1) Accelerated 2D Canvas 2) OOP
Rasterization of Canvas.
</summary>
</histogram>
<histogram name="GPU.CollectContextGraphicsInfo" units="microseconds"
expires_after="M77">
<owner>vmiura@chromium.org</owner>
<summary>
The time that the GPU process spends collecting driver information during
startup.
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="GPU.CompositingMode" enum="CompositingMode"
expires_after="never">
<owner>kylechar@chromium.org</owner>
<summary>
Records what compositing mode (software, GL, etc.) Chrome is using every
five minutes. This is the default compositing mode that most windows will
use. There are some window types (eg. menus on some platforms) that always
use software compositing and ignore the default.
</summary>
</histogram>
<histogram name="GPU.ContextLost" enum="ContextLostReason"
expires_after="2022-06-12">
<owner>sievers@chromium.org</owner>
<summary>
The reason a GPU command buffer context of a given type was lost.
</summary>
</histogram>
<histogram name="GPU.D3D11_B8G8R8A8_RenderTargetSupport" enum="BooleanSuccess"
expires_after="M85">
<owner>vmiura@chromium.org</owner>
<summary>Whether D3D11 supports B8G8R8A8 format for render targets.</summary>
</histogram>
<histogram name="GPU.D3D11_B8G8R8A8_Texture2DSupport" enum="BooleanSuccess"
expires_after="M85">
<owner>vmiura@chromium.org</owner>
<summary>Whether D3D11 supports B8G8R8A8 format for 2D textures.</summary>
</histogram>
<histogram name="GPU.D3D11FeatureLevel" enum="D3D11FeatureLevel"
expires_after="2022-06-05">
<owner>sadrul@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<summary>
Records the highest D3D_FEATURE_LEVEL available, collected in the info
collection GPU process, once per UMA ping. This is Windows platform only.
</summary>
</histogram>
<histogram name="GPU.D3D12FeatureLevel" enum="D3D12FeatureLevel"
expires_after="2022-06-05">
<owner>magchen@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<summary>
The maximum D3D12 feature level supported in the gpu drivers. It is recorded
in the browser process 120 seconds after the browser launch.
</summary>
</histogram>
<histogram name="GPU.D3D12HighestShaderModel" enum="D3DShaderModel"
expires_after="2022-06-05">
<owner>magchen@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<summary>
The maximum supported D3D shader model version on a D3D12 device. It is
recorded in the browser process 120 seconds after the browser launch.
</summary>
</histogram>
<histogram name="GPU.D3DShaderModel" enum="ShaderModel"
expires_after="2022-06-01">
<owner>jonahr@google.com</owner>
<owner>angle-team@google.com</owner>
<summary>
ANGLE's currently active D3D shader model version. Logged once every startup
of the GPU process, on Windows only. Note that Shader Models 2 and 3 map to
D3D9 with ANGLE, and 4+ map to D3D11 ANGLE.
</summary>
</histogram>
<histogram name="GPU.DirectComposition.ApprovedPresentDuration" units="ms"
expires_after="2022-01-03">
<owner>sunnyps@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<summary>
If the system approves a swap chain's custom present duration request, this
is the approved custom present duration. If the swap chain's custom present
duration request is not approved, this is zero.
</summary>
</histogram>
<histogram name="GPU.DirectComposition.CompositionMode2.MainBuffer.{Damage}"
enum="DxgiFramePresentationMode" expires_after="2021-12-31">
<owner>zmo@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
How the Desktop Window Manager presented Chrome's main DirectComposition
layer to the screen using {Damage}. Only recorded on Windows.
</summary>
<token key="Damage">
<variant name="FullDamage" summary="full damage"/>
<variant name="PartialDamage" summary="partial damage"/>
</token>
</histogram>
<histogram name="GPU.DirectComposition.CompositionMode2.VideoOrCanvas"
enum="DxgiFramePresentationMode" expires_after="2021-12-31">
<owner>sunnyps@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
How the Desktop Window Manager presented Chrome's DirectComposition layers
of video or canvas elements to the screen. Only recorded on Windows.
</summary>
</histogram>
<histogram name="GPU.DirectComposition.CreateSwapChainForComposition"
enum="Hresult" expires_after="2022-10-01">
<owner>magchen@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<summary>
HRESULT return value of IDXGIFactory2::CreateSwapChainForComposition.
</summary>
</histogram>
<histogram name="GPU.DirectComposition.DCLayer.YUVOverlayCount"
units="overlays" expires_after="2022-06-26">
<owner>magchen@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<summary>
The number of YUV overlays we are going to present in each frame if the
number is not 0. Recorded when the overlay processor is called for drawing a
frame.
</summary>
</histogram>
<histogram name="GPU.DirectComposition.DCLayerResult.StreamVideo"
enum="DCLayerResult" expires_after="2021-12-12">
<owner>sunnyps@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<summary>
Recorded for each stream video quad (on overlay processing) the reason it
was or wasn't put in an overlay.
</summary>
</histogram>
<histogram name="GPU.DirectComposition.DCLayerResult.Texture"
enum="DCLayerResult" expires_after="2022-05-01">
<owner>sunnyps@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<summary>
Recorded for each texture quad (on overlay processing) the reason it was or
wasn't put in an overlay.
</summary>
</histogram>
<histogram base="true" name="GPU.DirectComposition.DCLayerResult.Video"
enum="DCLayerResult" expires_after="2022-06-19">
<!-- Name completed by histogram_suffixes name="GPU.ProtectedVideoType" -->
<owner>magchen@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<summary>
Recorded for each quad (on overlay processing) with protected video type the
reason it was or wasn't put in an overlay.
</summary>
</histogram>
<histogram name="GPU.DirectComposition.DcompDeviceCreateSurface" enum="Hresult"
expires_after="2022-10-01">
<owner>magchen@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<summary>
HRESULT return value of IDCompositionDevice2::CreateSurface.
</summary>
</histogram>
<histogram name="GPU.DirectComposition.DecodeSwapChainCreationResult"
enum="Hresult" expires_after="M76">
<owner>sunnyps@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<summary>
Result of calling CreateDecodeSwapChainForCompositionSurfaceHandle. Recorded
when decode swap chain is created.
</summary>
</histogram>
<histogram name="GPU.DirectComposition.DecodeSwapChainNotUsedReason"
enum="DecodeSwapChainNotUsedReason" expires_after="M76">
<owner>sunnyps@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<summary>
The reason decode swap chain wasn't used to present a video frame. Recorded
on each present. See also GPU.DirectComposition.VideoPresentationMode.
</summary>
</histogram>
<histogram name="GPU.DirectComposition.HardwareOverlaysSupported"
enum="BooleanOverlaySupported" expires_after="2022-10-01">
<owner>magchen@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
True if the GPU driver supports hardware overlays. Recorded during Chrome
GPU initialization and each time the overlay caps change.
</summary>
</histogram>
<histogram name="GPU.DirectComposition.IsUnderlay" enum="BooleanUnderlay"
expires_after="2022-07-03">
<owner>magchen@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<summary>
Recorded for each video quad during the video playback whether it is an
underlay or an overlay
</summary>
</histogram>
<histogram name="GPU.DirectComposition.NumPendingFrames" units="frames"
expires_after="2020-10-11">
<owner>sunnyps@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<summary>
Number of presented frames for which presentation queries haven't completed.
Recorded on each vblank.
</summary>
</histogram>
<histogram name="GPU.DirectComposition.OverlayFormatUsed3" enum="DXGI_FORMAT"
expires_after="2022-05-01">
<owner>sunnyps@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<summary>
Which overlay format was chosen for YUV overlays. Recorded once per GPU
process launch only if hardware overlays are supported.
</summary>
</histogram>
<histogram name="GPU.DirectComposition.OverlaysSupported"
enum="BooleanOverlaySupported" expires_after="2021-10-04">
<owner>sunnyps@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<summary>True if Chrome will try to use DirectComposition overlays.</summary>
</histogram>
<histogram base="true" name="GPU.DirectComposition.SwapChainCreationResult2"
enum="Hresult" expires_after="2019-05-31">
<!-- Name completed by histogram_suffixes name="GPU.DirectComposition.OverlayFormat" -->
<owner>sunnyps@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<summary>
Whether creating swap chain for overlay format succeeded. Recorded once per
swap chain creation.
</summary>
</histogram>
<histogram base="true" name="GPU.DirectComposition.SwapChainCreationResult3"
enum="Hresult" expires_after="2022-10-01">
<!-- Name completed by histogram_suffixes name="GPU.ProtectedVideoType" -->
<owner>magchen@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<summary>
Whether creating swap chain for protected video succeeded. Recorded once per
swap chain creation.
</summary>
</histogram>
<histogram name="GPU.DirectComposition.SwapChainFormat3" enum="DXGI_FORMAT"
expires_after="2020-12-31">
<owner>sunnyps@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<summary>
What format was used for each overlay swap chain on each swap buffers.
</summary>
</histogram>
<histogram name="GPU.DirectComposition.VideoPresentationMode"
enum="DirectCompositionVideoPresentationMode" expires_after="2022-03-06">
<owner>sunnyps@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<summary>
What code path was used to present a video frame. Recorded on each present.
</summary>
</histogram>
<histogram name="GPU.DoLinkProgramTime" units="ms" expires_after="2022-06-01">
<owner>jonahr@google.com</owner>
<owner>angle-team@google.com</owner>
<summary>
The time we spend in GLES2DecoderImpl::DoLinkProgram. Related to how much
time we spend compiling shaders during startup.
</summary>
</histogram>
<histogram name="GPU.DriverBugTestResultsPerEntry"
enum="GpuDriverBugWorkaroundEntry" expires_after="never">
<!-- expires-never: For monitoring new driver bugs. -->
<owner>vmiura@chromium.org</owner>
<owner>kbr@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<summary>
For every entry in the gpu driver bug list that is hit on a machine, this
records the id. Entry 0 is the total number of times that data is recorded.
It should be recorded whenever new GPU information is received: on startup,
whenever a GPU process launches, and whenever the active GPU changes.
</summary>
</histogram>
<histogram name="GPU.EGLDisplayType" enum="EGLDisplayType"
expires_after="2022-06-12">
<owner>zmo@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>The display type used to ask for an EGLDisplay.</summary>
</histogram>
<histogram name="GPU.EnsureWorkVisibleDuration" units="microseconds"
expires_after="2022-06-05">
<owner>alemate@chromium.org</owner>
<owner>magchen@chromium.org</owner>
<owner>oshima@chromium.org</owner>
<summary>
Records the duration of EnsureWorkVisible GPU call. Since it's blocking UI
thread we want to measure it, and this histogram must be active as long as
this call is still blocking.
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.
</summary>
</histogram>
<histogram name="GPU.EnsureWorkVisibleDurationLowRes" units="ms"
expires_after="2022-06-05">
<owner>alemate@chromium.org</owner>
<owner>magchen@chromium.org</owner>
<owner>oshima@chromium.org</owner>
<summary>
Records the duration of EnsureWorkVisible GPU call. Since it's blocking UI
thread we want to measure it, and this histogram must be active as long as
this call is still blocking.
This is a sister histogram to GPU.EnsureWorkVisibleDuration. The former is
our target goal. However it's custom buckets do not have enough granularity
to measure improvement steps. This metric will instead cap at 5s, and allow
the buckets to give us better visibility into the 15ms-250ms interval
ranges. We will use this one until we improve the blocking call.
</summary>
</histogram>
<histogram name="GPU.Error" enum="GLError" expires_after="2020-06-28">
<owner>zmo@chromium.org</owner>
<owner>vmiura@chromium.org</owner>
<summary>The error states generated by OpenGL calls.</summary>
</histogram>
<histogram name="GPU.EstablishGpuChannelSyncTime" units="ms"
expires_after="2022-05-13">
<owner>cduvall@chromium.org</owner>
<owner>jam@chromium.org</owner>
<summary>
Measures the time it takes to synchronously establish the GPU channel.
Logged every time a sync call to EstableGpuChannelSync is made and a channel
is not already available.
</summary>
</histogram>
<histogram name="GPU.FenceSupport" enum="BooleanAvailable" expires_after="M77">
<owner>reveman@chromium.org</owner>
<summary>
Whether GLFence support is available. Recorded each time a new context group
is initialized and extensions are detected.
</summary>
</histogram>
<histogram name="Gpu.GL.GetErrorDuration.GLImageEGL.BindTexImage"
units="microseconds" expires_after="2022-03-31">
<owner>berlu@chromium.org</owner>
<owner>chromeos-gfx-compositor@google.com</owner>
<summary>
The time that elapsed for a call to glGetError to complete while trying to
bind a GLImageEGL to a texture. The goal is to measure the impact of the
potential sync barrier that glGetError represents. Only reported for
platforms supporting high resolution clocks.
</summary>
</histogram>
<histogram name="Gpu.GL.GetErrorResult.GLImageEGL.BindTexImage"
enum="BooleanError" expires_after="2022-03-31">
<owner>berlu@chromium.org</owner>
<owner>chromeos-gfx-compositor@google.com</owner>
<summary>
Whether glGetError actually returned an error while trying to bind a
GLImageEGL to a texture. The goal is to evaluate how often the call to
glGetError might actually serve its purpose.
</summary>
</histogram>
<histogram name="Gpu.GL.ProgramBuildTime" units="ms" expires_after="M82">
<owner>ccameron@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
The time that elapsed between a call to glCreateProgram and the call to
query GL_LINK_STATUS via glGetProgramiv in Skia's GrGLInterface. This
encompasses the creation of the vertex, fragment, and geometry shaders,
their compilation, and their linking. This is called for every program
created by Skia via the GrGLInterface.
</summary>
</histogram>
<histogram name="GPU.GLImplementation" enum="GLImplementation"
expires_after="2022-06-26">
<owner>magchen@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<summary>
Records the OpenGL implementation mode. Recorded during GPU process
initilization.
</summary>
</histogram>
<histogram name="GPU.GpuCount" units="gpus" expires_after="2022-06-05">
<owner>zmo@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
The number of GPUs a device has, excluding software renderers. Recorded when
GPU process launches and sends GPUInfo to browser process.
</summary>
</histogram>
<histogram name="GPU.GPUInitializationTime.V3" units="ms"
expires_after="2022-06-12">
<owner>magchen@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<summary>
The time between the GPU process starts and the GPU Info is collected at GPU
process startup and recorded in browser process when this piece info is sent
back to browser process. The range is between 5ms and 5s.
</summary>
</histogram>
<histogram name="GPU.GPUProcessDetailedExitStatus"
enum="ProcessDetailedExitStatus" expires_after="2020-05-03">
<owner>wnwen@chromium.org</owner>
<summary>
Breakdown of exit status for gpu processes. Only recorded on Android.
</summary>
</histogram>
<histogram name="GPU.GPUProcessExitCode" enum="GPUProcessExitCode"
expires_after="2022-06-26">
<owner>zmo@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Counts for the exit codes returned by the GPU process when it terminated.
</summary>
</histogram>
<histogram name="GPU.GPUProcessInitialized" enum="BooleanSuccess"
expires_after="2021-01-03">
<owner>vmiura@chromium.org</owner>
<summary>
Whether the GPU process successfully initialized or failed and then exitted
normally.
</summary>
</histogram>
<histogram name="GPU.GPUProcessLaunchTime" units="ms"
expires_after="2022-06-12">
<owner>vmiura@chromium.org</owner>
<summary>
Startup time of the GPU process as measured by the GPU process host.
</summary>
</histogram>
<histogram name="GPU.GPUProcessTerminationOrigin" enum="GpuTerminationOrigin"
expires_after="2019-08-14">
<owner>rjkroege@chromium.org</owner>
<owner>msisov@igalia.com</owner>
<summary>
The reason a GPU process is terminated. It works only when
TERMINATION_STATUS_PROCESS_WAS_KILLED TerminationStatus is set. The goal of
this histogram is to get spikes of the above mentioned case when
Ozone/Wayland terminates the GPU process due to invalid data it received if
any.
</summary>
</histogram>
<histogram name="GPU.GPUProcessTerminationStatus2" enum="GpuTerminationStatus"
expires_after="2022-06-26">
<owner>vmiura@chromium.org</owner>
<summary>
Counts for each time the GPU Process Host detects the process dies.
</summary>
</histogram>
<histogram name="GPU.HardwareAccelerationModeEnabled" enum="BooleanEnabled"
expires_after="2022-01-30">
<owner>zmo@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Records if GPU hardware acceleration is explicitly disabled by the user.
Recorded when the browser process launches.
</summary>
</histogram>
<histogram name="GPU.HasDiscreteGpu" enum="HasDiscreteGpu"
expires_after="2022-04-24">
<owner>sadrul@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<summary>
Records whether the system has a discrete GPU, collected in the info
collection GPU process, once per UMA ping. This is Windows platform only.
</summary>
</histogram>
<histogram name="GPU.InitializeOneOffMediumTime" units="ms"
expires_after="2022-06-01">
<owner>jonahr@google.com</owner>
<owner>angle-team@google.com</owner>
<summary>
The time that the GPU process spends in initializing the GL surface, and
collecting graphics information. Records times up to three minutes.
</summary>
</histogram>
<histogram name="GPU.IntelGpuGeneration" enum="IntelGpuGeneration"
expires_after="2022-06-12">
<owner>sadrul@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<summary>
Records the highest Intel GPU generation of the system using the GPU info
collected at GPU process startup time, once per UMA ping.
</summary>
</histogram>
<histogram name="GPU.IntelGpuSeriesType" enum="IntelGpuSeriesType"
expires_after="2022-06-12">
<owner>sunnyps@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<summary>
Records user device's GPU series type. Only recorded on Windows platform at
GPU process launch time. Only meaningful with Intel GPUs.
</summary>
</histogram>
<histogram name="GPU.IOSurface.CATransactionTime" units="ms"
expires_after="2020-08-23">
<owner>ccameron@chromium.org</owner>
<summary>
The time that it took to update the CALayer tree and commit the transaction.
This is often affected by IOSurface paging.
</summary>
</histogram>
<histogram name="GPU.IOSurface.CreateTime" units="ms"
expires_after="2022-07-03">
<owner>ccameron@chromium.org</owner>
<summary>
The time that it took for a call to IOSurfaceCreate to complete.
</summary>
</histogram>
<histogram name="GPU.IOSurface.GLFlushTime" units="ms" expires_after="M85">
<owner>ccameron@chromium.org</owner>
<summary>
The time that it took for a call to glFlush to complete. This is often
affected by IOSurface paging.
</summary>
</histogram>
<histogram name="GPU.IOSurface.TexImageTime" units="ms"
expires_after="2022-07-03">
<owner>ccameron@chromium.org</owner>
<summary>
The time that it took for a call to CGLTexImageIOSurface2D to complete.
</summary>
</histogram>
<histogram name="Gpu.Mac.Backpressure" units="ms" expires_after="M80">
<owner>ccameron@chromium.org</owner>
<owner>khushalsagar@chromium.org</owner>
<summary>
The time that the GPU's main CPU thread spends waiting for previous frames'
GPU work to complete. Recorded at every frame.
</summary>
</histogram>
<histogram name="GPU.MaxMSAASampleCount" units="samples"
expires_after="2020-07-06">
<owner>senorblanco@chromium.org</owner>
<summary>
The maximum number of multisampled anti-aliasing (MSAA) samples per pixel
that the user's GPU can render.
</summary>
</histogram>
<histogram name="Gpu.Metal.TestShaderCompileTime" units="ms"
expires_after="M85">
<owner>ccameron@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Compiling a MTLLibrary will sometimes hang forever. When initializing the
gpu process, a test shader is compiled to see if the MTLCompilerService is
responding or not. This records the time that it took for the compile to
succeeded, up to 1 minute. After 1 minute, a timeout sentinel value of 3
minutes is reported.
</summary>
</histogram>
<histogram name="Gpu.Metal.TestShaderLinkTime" units="ms" expires_after="M85">
<owner>ccameron@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Linking a MTLRenderPipelineState will sometimes hang forever. When
initializing the GPU process, a test shader is compiled to see if the
MTLCompilerService is responding or not. This records the time that it took
for the compile to succeeded, up to 1 minute. After 1 minute, a timeout
sentinel value of 3 minutes is reported.
</summary>
</histogram>
<histogram name="Gpu.MetalProxy.NewLibraryTime" units="ms" expires_after="M82">
<owner>ccameron@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
The time that it takes to create a new MTLLibrary, including all retries.
Recorded after every call to -[MTLDeviceProxy newLibraryWithSource:]
completes.
</summary>
</histogram>
<histogram name="Gpu.MetalProxy.NewRenderPipelineStateTime" units="ms"
expires_after="M82">
<owner>ccameron@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
The time that it takes to create a new MTLRenderPipelineState, including all
retries. Recorded after every call to -[MTLDeviceProxy
newRenderPipelineStateWithDescriptor:] completes.
</summary>
</histogram>
<histogram name="GPU.MultiGpu.AMD" enum="AMDDeviceId"
expires_after="2022-06-05">
<owner>zmo@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
AMD device IDs from multi-gpu devices. Recorded when GPU process launches
and sends GPUInfo to browser process.
</summary>
</histogram>
<histogram name="GPU.MultiGpu.Nvidia" enum="NvidiaDeviceId"
expires_after="2022-06-05">
<owner>zmo@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Nvidia device IDs from multi-gpu devices. Recorded when GPU process launches
and sends GPUInfo to browser process.
</summary>
</histogram>
<histogram name="GPU.MultipleSwapsDelta" units="%" expires_after="2022-11-15">
<owner>behdadb@chromium.org</owner>
<owner>chrome-gpu-metrics@google.com</owner>
<summary>
Time delta between swaps, when there are multiple successful swaps in the
same vsync. The delta is reported as a percentage of vsync interval. This
can be recorded every time we present a frame.
</summary>
</histogram>
<histogram name="GPU.OopRaster.GlyphCacheMiss"
enum="OopRasterGlyphCacheMissType" expires_after="M110">
<owner>khushalsagar@chromium.org</owner>
<owner>penghuang@chromium.org</owner>
<summary>
During OutOfProcess(Oop) raster, the renderer generates and sends the
requisite glyph data for rasterizing a tile with the serialized paint
commands. If the data for any glyph is missing, the GPU process attempts to
use a fallback glyph from the cache. This records each time we encounter a
cache miss on the GPU and whether we could use a fallback.
</summary>
</histogram>
<histogram name="GPU.Output.HDR" enum="Boolean" expires_after="2022-04-24">
<owner>hubbe@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Records if any connected monitor is HDR capable. Recorded when the gpu
process starts. Only recorded on Windows as of M-61. If monitor enumeration
fails, this metric will not be provided.
</summary>
</histogram>
<histogram name="GPU.PaintOpReader.DeserializationError"
enum="PaintOpDeserializationError" expires_after="2022-09-15">
<owner>junov@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Records the reason why the deserialization of a PaintOp failed. Recorded in
PaintOpReader::Read* methods when the decoding a paint op fails. These
failures are typically caused by an invalid or unexpected state or invalid
serialized data.
</summary>
</histogram>
<histogram name="GPU.PassthroughDoLinkProgramTime" units="ms"
expires_after="2022-06-01">
<owner>jonahr@google.com</owner>
<owner>angle-team@google.com</owner>
<summary>
The time we spend in GLES2DecoderPassthroughImpl::DoLinkProgram. Related to
how much time we spend compiling shaders during startup.
</summary>
</histogram>
<histogram name="GPU.ProcessIntegrityResult" enum="ProcessIntegrityResult"
expires_after="2021-12-12">
<owner>zmo@chromium.org</owner>
<owner>ssmole@microsoft.com</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Summarize the configurations for the integrity level of GPU process, logged
by the Browser process before launching GPU process, used for configuring
the GPU sandbox.
</summary>
</histogram>
<histogram name="GPU.ProcessLifetimeEvents.DisplayCompositor"
enum="GPUProcessLifetimeEvent" expires_after="M85">
<owner>vmiura@chromium.org</owner>
<summary>
Recorded once for every GPU process launch and crash when GPU process is
started for the display compositor with software compositing. Crash buckets
are based on crash count for disabling features. No hardware acceleration
and no SwiftShader WebGL will be run.
</summary>
</histogram>
<histogram name="GPU.ProcessLifetimeEvents.HardwareAccelerated"
enum="GPUProcessLifetimeEvent" expires_after="2022-06-26">
<owner>vmiura@chromium.org</owner>
<summary>
Recorded once for every GPU process launch and crash when GPU process is
started for hardware accelerated GPU compositing and/or WebGL. Crash buckets
are based on crash count for disabling features. With OOP-D enabled the
display compositor also runs in the GPU process.
</summary>
</histogram>
<histogram name="GPU.ProcessLifetimeEvents.SwiftShader"
enum="GPUProcessLifetimeEvent" expires_after="2022-06-26">
<owner>vmiura@chromium.org</owner>
<summary>
Recorded once for every GPU process launch and crash when GPU process is
started for SwiftShader WebGL. Crash buckets are based on crash count for
disabling features. With OOP-D enabled the display compositor with software
compositing will also run as part of the GPU process.
</summary>
</histogram>
<histogram name="GPU.ProgramCache.BinaryCacheHitTime" units="microseconds"
expires_after="M77">
<owner>vmiura@chromium.org</owner>
<summary>
The time to load a gpu program from the program cache.
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="GPU.ProgramCache.BinaryCacheMissTime" units="microseconds"
expires_after="M77">
<owner>vmiura@chromium.org</owner>
<summary>
The time to link a gpu program.
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="GPU.ProgramCache.CacheHit" enum="BooleanSuccess"
expires_after="2022-06-01">
<owner>jonahr@google.com</owner>
<owner>angle-team@google.com</owner>
<summary>
If a successfully linked program was found in the GPU program cache during a
program link call.
</summary>
</histogram>
<histogram name="GPU.ProgramCache.CompilationCacheHitTime" units="microseconds"
expires_after="M85">
<owner>vmiura@chromium.org</owner>
<summary>
The time to check the program cache that we've already compiled the shader.
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="GPU.ProgramCache.CompilationCacheMissTime"
units="microseconds" expires_after="M85">
<owner>vmiura@chromium.org</owner>
<summary>
The time to compile a shader.
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="GPU.RenderableFormat.{FORMAT_TYPE}" enum="Boolean"
expires_after="2021-09-15">
<owner>zmo@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Whether or not a {FORMAT_TYPE} fbo is complete and renderable.
</summary>
<token key="FORMAT_TYPE">
<variant name="R11F_G11F_B10F.FLOAT" summary="R11F_G11F_B10F/FLOAT"/>
<variant name="R16F.FLOAT" summary="R16F/FLOAT"/>
<variant name="R32F.FLOAT" summary="R32F/FLOAT"/>
<variant name="RG16F.FLOAT" summary="RG16F/FLOAT"/>
<variant name="RG32F.FLOAT" summary="RG32F/FLOAT"/>
<variant name="RGB32F.FLOAT" summary="RGB32F/FLOAT"/>
<variant name="RGBA16F.FLOAT" summary="RGBA16F/FLOAT"/>
<variant name="RGBA16F.HALF_FLOAT" summary="RGBA16F/HALF_FLOAT"/>
<variant name="RGBA32F.FLOAT" summary="RGBA32F/FLOAT"/>
</token>
</histogram>
<histogram name="GPU.Sandbox.InitializedSuccessfully" enum="BooleanSuccess"
expires_after="2020-08-30">
<owner>vmiura@chromium.org</owner>
<owner>wfh@chromium.org</owner>
<summary>
Whether or not the GPU sandbox properly initialized. Failures are typically
platform- and driver-specific (e.g. driver creating threads on Linux).
</summary>
</histogram>
<histogram name="GPU.Scheduler.RunTaskTime" units="microseconds"
expires_after="2022-06-26">
<owner>kylechar@chromium.org</owner>
<owner>chrome-gpu-metrics@google.com</owner>
<summary>
Records the wall time taken for each GPU scheduler task to run. The time
delta starts when the GPU scheduler pops the task off the task queue and
finishes when the task has completed. Only recorded for clients with high
resolution clocks.
</summary>
</histogram>
<histogram name="GPU.Scheduler.TaskDependencyTime" units="microseconds"
expires_after="2022-06-05">
<owner>berlu@chromium.org</owner>
<owner>chrome-gpu-metrics@google.com</owner>
<summary>
Records the wall time taken spent by each GPU scheduler task waiting on it's
dependencies to resolve. The time delta starts when the waiting fence is
added and finishes when the last fence is removed. Only recorded for clients
with high resolution clocks.
</summary>
</histogram>
<histogram name="GPU.Scheduler.TaskSchedulingDelayTime" units="microseconds"
expires_after="2022-06-05">
<owner>berlu@chromium.org</owner>
<owner>chrome-gpu-metrics@google.com</owner>
<summary>
Records the wall time taken spent by each GPU scheduler task waiting on to
be scheduled once all its dependencies have been resolved. The time delta
starts when the last waiting fence is passed and stops when the tasks starts
running. If the schedulers is working properly, for a high priority task,
this metric should be minimal. Only recorded for clients with high
resolution clocks.
</summary>
</histogram>
<histogram name="GPU.Scheduler.ThreadSuspendedTime" units="microseconds"
expires_after="2022-06-05">
<owner>berlu@chromium.org</owner>
<owner>chrome-gpu-metrics@google.com</owner>
<summary>
Records the wall time taken between calls to schedule the task run and the
actual run of the task. Ideally this should always be as close to 0 as
possible. Only recorded for clients with high resolution clocks.
</summary>
</histogram>
<histogram name="GPU.setIsAcceleratedCompositingActive"
enum="GPUsetIsAcceleratedCompositingActive" expires_after="M85">
<owner>vmiura@chromium.org</owner>
<summary>
Counts activation and deactivation of accelerated compositing.
</summary>
</histogram>
<histogram name="GPU.ShaderLoadPrefixOK" enum="BooleanMatched"
expires_after="M77">
<owner>ericrk@chromium.org</owner>
<summary>
Whether or not the shader prefix loaded from disk matched the expected
prefix for the data and system configuration. False indicates either disk
corruption or a system configuration change, and should be rare.
</summary>
</histogram>
<histogram name="GPU.SharedImage.ContentConsumed" enum="BooleanMatched"
expires_after="2022-06-19">
<owner>penghuang@chromium.org</owner>
<owner>backer@chromium.org</owner>
<summary>
Whether or not the content of a SharedImage is consumed. False indicates the
content of a SharedImage is never used due to destroying the SharedImage or
writing new content to it before using it.
</summary>
</histogram>
<histogram name="GPU.SharedImageManager.TimeToAcquireLock" units="microseconds"
expires_after="2020-08-12">
<owner>samans@chromium.org</owner>
<owner>viz-team-wat@google.com</owner>
<summary>
Time it took to acquire the lock in SharedImageManager. Recorded only when
the manager is thread-safe. Ignores clients with no high-resolution clock.
</summary>
</histogram>
<histogram name="GPU.SoftwareRendering" enum="BooleanSoftwareRendering"
expires_after="2022-06-26">
<owner>sadrul@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<summary>
Collects whether Chrome uses software renderer or hardware GPU 20 seconds
after Chrome starts, and records this value once per UMA ping. This value is
not re-collected at each recording time because GPU process could crash for
various reasons and fall back to software rendering. This value is intended
to reflect device capabilities rather than the current state.
</summary>
</histogram>
<histogram name="GPU.Stage3DFieldTrial" enum="BooleanEnabled"
expires_after="M85">
<owner>vmiura@chromium.org</owner>
<summary>
Records whether a client was selected for the Stage3D on XP field trial or
not.
</summary>
</histogram>
<histogram name="GPU.SupportsDX12" enum="BooleanSupported"
expires_after="2022-06-12">
<owner>magchen@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<summary>
This metric shows whether the GPU supports D3D12. It is recorded in the
browser process 120 seconds after the browser launch.
</summary>
</histogram>
<histogram name="GPU.SurfaceOwner.AImageReader.AcquireImageResult"
enum="MediaStatus" expires_after="2018-11-25">
<owner>vikassoni@chromium.org</owner>
<summary>
Counts the error code which is returned when AImageReader api call
acquireLatestImageAsync fails.
</summary>
</histogram>
<histogram name="GPU.SwapTimeUs" units="microseconds"
expires_after="2022-06-05">
<owner>vasilyt@chromium.org</owner>
<owner>backer@chromium.org</owner>
<summary>
This is logged once per frame if the output surface provides timing
information. It measures the time of SwapBuffers call. Only reported when
there is single surface swap in the same vsync interval. Only reported for
platforms supporting high resolution clocks.
</summary>
</histogram>
<histogram name="GPU.TextureRG" enum="BooleanAvailable" expires_after="M77">
<owner>reveman@chromium.org</owner>
<summary>
Whether RG texture support is available. Recorded each time a new context
group is initialized and extensions are detected.
</summary>
</histogram>
<histogram name="GPU.Vulkan.PipelineCache.LoadCacheHit" enum="BooleanCacheHit"
expires_after="2022-05-08">
<owner>backer@chromium.org</owner>
<owner>penghuang@chromium.org</owner>
<owner>vasilyt@chromium.org</owner>
<summary>
Shows if we had a vkPipelineCache entry in cache when skia requested it.
Recorded each time skia loads vkPipelineCache entry from the GrShaderCache.
</summary>
</histogram>
<histogram name="GPU.Vulkan.PipelineCache.PopulatedCacheUsage"
enum="VkPipelinePopulatedCacheEntryUsage" expires_after="2021-10-31">
<owner>backer@chromium.org</owner>
<owner>penghuang@chromium.org</owner>
<owner>vasilyt@chromium.org</owner>
<summary>
Shows if the populated from disk cache entry was used by skia or discarded
and why. Recorded when cache entry that was read from disk is either loaded
by skia, overwriten by skia or discarded by GrShaderCache.
</summary>
</histogram>
<histogram name="GPU.Vulkan.PipelineCache.Size" units="KB"
expires_after="2022-05-08">
<owner>backer@chromium.org</owner>
<owner>penghuang@chromium.org</owner>
<owner>vasilyt@chromium.org</owner>
<summary>
Size of stored VkPipelineCache in kb. Recorded every time we store a
pipeline cache item. Currently happens when gpu goes idle after we stored or
loaded new shader.
</summary>
</histogram>
<histogram name="GPU.Vulkan.PipelineCache.StoreDuration" units="microseconds"
expires_after="2022-05-08">
<owner>backer@chromium.org</owner>
<owner>penghuang@chromium.org</owner>
<owner>vasilyt@chromium.org</owner>
<summary>
Duration of storeVkPipelineCacheData in Skia, this includes chromium side
GrShaderCache::store. Recorded even if data didn't fit into the cache. Only
reported for platforms supporting high resolution clocks.
</summary>
</histogram>
<histogram name="GPU.Vulkan.PipelineCache.vkCreateGraphicsPipelines"
units="microseconds" expires_after="2022-05-08">
<owner>backer@chromium.org</owner>
<owner>penghuang@chromium.org</owner>
<owner>vasilyt@chromium.org</owner>
<summary>
Duration of vkCreateGraphicsPipelines call. Recorded every time Skia creates
graphics pipeline. Only reported for platforms supporting high resolution
clocks.
</summary>
</histogram>
<histogram name="GPU.WaitForVBlankErrorCode" enum="WaitForVBlankErrorCode"
expires_after="M85">
<owner>stanisc@chromium.org</owner>
<summary>
Whether WaitForVBlank operation has been successful or failed with one of
the errors prompting a backup delay based v-sync mechanism. Recorded each
time a new GPU v-sync signal is generated.
</summary>
</histogram>
<histogram name="GPU.WatchdogThread.Event" enum="GpuWatchdogThreadEvent"
expires_after="2022-06-12">
<owner>magchen@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<summary>
Recorded for each time the GPU watchdog thread starts, crashes and ends.
This includes data from both watchdog V1 and V2.
</summary>
</histogram>
<histogram name="GPU.WatchdogThread.Timeout" enum="GpuWatchdogTimeoutEvent"
expires_after="2022-06-19">
<!-- Name completed by histogram_suffixes name="GPU.WatchdogStage" -->
<owner>magchen@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<summary>
Recorded timeout events when the GPU watchdog V2 enters OnWatchdogTimeout.
</summary>
</histogram>
<histogram name="GPU.WebGraphicsContext3D_Init_CanLoseContext"
enum="GPUWebGraphicsContext3D_Init_CanLoseContext" expires_after="M85">
<owner>vmiura@chromium.org</owner>
<summary>
Counts of context initialization that succeed or fail based on combinations
of attributes requiring canRecoverFromContextLoss and devices that report
can_lose_context. Failing Init is desired when a device can not guarantee it
won't fail for a user that can not handle failures, e.g. DX9 on WinXP used
by Canvas2D'
</summary>
</histogram>
<histogram name="GPU.WinSAT.GamingScore" units="units" expires_after="M85">
<owner>vmiura@chromium.org</owner>
<summary>
The WinSAT (Windows System Assessment Tool) gaming graphics score. It is in
the range 1.0-5.9 on Vista, 1.0-7.9 on Win7 and 1.0-9.9 on Win8. 0
represents a failure to get the score. This is collected each time Chrome is
launched.
</summary>
</histogram>
<histogram name="GPU.WinSAT.GamingScore2" units="units" expires_after="M85">
<owner>vmiura@chromium.org</owner>
<summary>
The WinSAT (Windows System Assessment Tool) gaming graphics score, scaled by
10x. It is in the range 10-59 on Vista, 10-79 on Win7 and 10-99 on Win8. 0
represents a failure to get the score. This is collected each time Chrome is
launched.
</summary>
</histogram>
<histogram name="GPU.WinSAT.GraphicsScore" units="units" expires_after="M85">
<owner>vmiura@chromium.org</owner>
<summary>
The WinSAT (Windows System Assessment Tool) graphics score. It is in the
range 1.0-5.9 on Vista, 1.0-7.9 on Win7 and 1.0-9.9 on Win8. 0 represents a
failure to get the score. This is collected each time Chrome is launched.
</summary>
</histogram>
<histogram name="GPU.WinSAT.GraphicsScore2" units="units" expires_after="M85">
<owner>vmiura@chromium.org</owner>
<summary>
The WinSAT (Windows System Assessment Tool) graphics score, scaled by 10x.
It is in the range 10-59 on Vista, 10-79 on Win7 and 10-99 on Win8. 0
represents a failure to get the score. This is collected each time Chrome is
launched.
</summary>
</histogram>
<histogram name="GPU.WinSAT.HasResults" enum="BooleanSuccess"
expires_after="M85">
<owner>vmiura@chromium.org</owner>
<summary>
A boolean representing whether or not we succeeded in getting the system's
WinSAT scores. This is collected each time Chrome is launched.
</summary>
</histogram>
<histogram name="GPU.WinSAT.OverallScore" units="units" expires_after="M85">
<owner>vmiura@chromium.org</owner>
<summary>
The WinSAT (Windows System Assessment Tool) overall system score. This is
the minimum of all the individual subscores. It is in the range 1.0-5.9 on
Vista, 1.0-7.9 on Win7 and 1.0-9.9 on Win8. 0 represents a failure to get
the score. This is collected each time Chrome is launched.
</summary>
</histogram>
<histogram name="GPU.WinSAT.OverallScore2" units="units" expires_after="M85">
<owner>vmiura@chromium.org</owner>
<summary>
The WinSAT (Windows System Assessment Tool) overall system score, scaled by
10x. This is the minimum of all the individual subscores. It is in the range
10-59 on Vista, 10-79 on Win7 and 10-99 on Win8. 0 represents a failure to
get the score. This is collected each time Chrome is launched.
</summary>
</histogram>
<histogram name="GPU.WinSAT.ReadResultsFileTime" units="microseconds"
expires_after="M85">
<owner>vmiura@chromium.org</owner>
<summary>
The amount of time it takes to read the WinSAT results. This is collected
each time Chrome is launched.
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="Viz.DelegatedCompositing.Status" enum="DelegatedStatus"
expires_after="2022-07-15">
<owner>petermcneeley@chromium.org</owner>
<owner>rjkroege@chromium.org</owner>
<summary>
An enum status result for attempted delegated compositing (success or
failure reason) recorded every drawn frame. Currently only recorded for
LaCros delegated compositing.
</summary>
</histogram>
<histogram name="Viz.DisplayCompositor.OverlayNumProposedCandidates"
units="units" expires_after="2022-06-19">
<owner>petermcneeley@chromium.org</owner>
<owner>dcastagna@chromium.org</owner>
<summary>
A count of the number of proposed overlay candidates available for overlay
selection. Recorded every time a frame is rendered by the display
compositor.
</summary>
</histogram>
<histogram name="Viz.DisplayCompositor.OverlayQuadMaterial"
enum="OverlayQuadMaterial" expires_after="2022-06-19">
<owner>petermcneeley@chromium.org</owner>
<owner>dcastagna@chromium.org</owner>
<summary>
Quad material for current promoted overlay, per frame. Recorded every time a
frame is rendered by the display compositor.
</summary>
</histogram>
<histogram name="Viz.DisplayCompositor.OverlayStrategy"
enum="OverlayStrategies" expires_after="2022-05-15">
<owner>dcastagna@chromium.org</owner>
<owner>hoegsberg@chromium.org</owner>
<summary>
Overlay strategies used to promote Hardware Overlays, per frame. Recorded
every time a frame is rendered by the display compositor.
</summary>
</histogram>
<histogram name="Viz.DisplayCompositor.OverlaySwitchInterval" units="ms"
expires_after="2022-07-03">
<owner>petermcneeley@chromium.org</owner>
<owner>dcastagna@chromium.org</owner>
<summary>
The time, in milliseconds, since the change in overlay selection. Recorded
every time a frame is rendered by the display compositor.
</summary>
</histogram>
<histogram name="Viz.DisplayCompositor.RootDamageRect.Overlay"
enum="BooleanOverlayDamageRect" expires_after="2022-06-19">
<owner>magchen@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<summary>
Any root damage excluding overlay damage in the current frame?
</summary>
</histogram>
<histogram name="Viz.DisplayCompositor.RootDamageRect.Underlay"
enum="UnderlayDamageRect" expires_after="2022-04-17">
<owner>magchen@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<summary>
The root damage type excluding underlay damage in the current frame.
</summary>
</histogram>
<histogram name="Viz.FileDescriptorTracking.TimeToCompute" units="microseconds"
expires_after="2022-07-09">
<owner>petermcneeley@chromium.org</owner>
<owner>rjkroege@chromium.org</owner>
<summary>
Time spent computing the number of active File Descriptors. This is logged
once every 5 minutes as the cost of this computation is estimated to be at
least 1ms. Currently only recorded for LaCros delegated compositing.
Warning: This metric does not include reports from clients with
low-resolution clocks.
</summary>
</histogram>
<histogram name="Viz.FileDescriptorTracking.{FdStat}" units="units"
expires_after="2022-07-09">
<owner>petermcneeley@chromium.org</owner>
<owner>rjkroege@chromium.org</owner>
<summary>
{FdStat} File Descriptors for the GPU process. This is logged once every 5
minutes as the cost of this computation is estimated to be at least 1ms.
Currently only recorded for LaCros delegated compositing.
</summary>
<token key="FdStat">
<variant name="NumActive" summary="Current number of active"/>
<variant name="NumSoftMax" summary="Maximum number of"/>
<variant name="PercentageUsed" summary="Percentage of in use"/>
</token>
</histogram>
<histogram name="Viz.FrameSinkVideoCapturer.I420.CaptureDuration" units="ms"
expires_after="2021-03-07">
<owner>samans@chromium.org</owner>
<owner>sadrul@chromium.org</owner>
<owner>viz-team-wat@google.com</owner>
<summary>
The time it took from when FrameSinkVideoCapturerImpl sent a request for an
I420 readback until the result comes back and ReadI420Planes successfully
finishes.
</summary>
</histogram>
<histogram name="Viz.FrameSinkVideoCapturer.I420.CaptureSucceeded"
enum="BooleanSuccess" expires_after="2020-12-31">
<owner>samans@chromium.org</owner>
<owner>sadrul@chromium.org</owner>
<owner>viz-team-wat@google.com</owner>
<summary>
Whether an I420 readback initiated by FrameSinkVideoCapturerImpl succeeded.
</summary>
</histogram>
<histogram name="Viz.FrameSinkVideoCapturer.RGBA.CaptureDuration" units="ms"
expires_after="2022-05-01">
<owner>samans@chromium.org</owner>
<owner>sadrul@chromium.org</owner>
<owner>viz-team-wat@google.com</owner>
<summary>
The time it took from when FrameSinkVideoCapturerImpl sent a request for an
RGBA readback until the result comes back and ReadRGBAPlane successfully
finishes.
</summary>
</histogram>
<histogram name="Viz.FrameSinkVideoCapturer.RGBA.CaptureSucceeded"
enum="BooleanSuccess" expires_after="2020-12-31">
<owner>samans@chromium.org</owner>
<owner>sadrul@chromium.org</owner>
<owner>viz-team-wat@google.com</owner>
<summary>
Whether an RGBA readback initiated by FrameSinkVideoCapturerImpl succeeded.
</summary>
</histogram>
</histograms>
</histogram-configuration>