blob: 6b86054d9bb15510cf25236832bdf80cbd7e7d9f [file] [log] [blame]
<!--
Copyright 2020 The Chromium Authors
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->
<!--
This file is used to generate a comprehensive list of 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="2023-05-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="2023-05-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">
<obsolete>
Replaced by ConfigureDisplays.External.Modeset.Success.RefreshRate in M103.
</obsolete>
<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">
<obsolete>
Split into ConfigureDisplays.External.Modeset.OriginalRequest.Resolution and
ConfigureDisplays.External.Modeset.Success.Resolution in M103.
</obsolete>
<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="2023-05-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="2023-05-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">
<obsolete>
Replaced by ConfigureDisplays.Internal.Modeset.Success.RefreshRate in M103.
</obsolete>
<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">
<obsolete>
Split into ConfigureDisplays.Internal.Modeset.OriginalRequest.Resolution and
ConfigureDisplays.Internal.Modeset.Success.Resolution in M103.
</obsolete>
<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="2023-05-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="2023-05-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="2023-05-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="ConfigureDisplays.{Connection}.Modeset.Success.RefreshRate"
units="Hz" expires_after="2023-05-01">
<owner>gildekel@chromium.org</owner>
<owner>seanpaul@chromium.org</owner>
<owner>chromeos-gfx-display@chromium.org</owner>
<summary>
Tracks an {Connection} display's resulting refresh rate after a successful
display configuration.
</summary>
<token key="Connection">
<variant name="External" summary="external"/>
<variant name="Internal" summary="internal"/>
</token>
</histogram>
<histogram name="ConfigureDisplays.{Connection}.Modeset.{Report}.Resolution"
enum="DisplayResolution" expires_after="2023-05-01">
<owner>gildekel@chromium.org</owner>
<owner>seanpaul@chromium.org</owner>
<owner>chromeos-gfx-display@chromium.org</owner>
<summary>{Connection} {Report}</summary>
<token key="Connection">
<variant name="External" summary="Tracks an external display's"/>
<variant name="Internal" summary="Tracks an internal display's"/>
</token>
<token key="Report">
<variant name="OriginalRequest"
summary="original resolution request during display configuration."/>
<variant name="Success"
summary="resulting resolution after a successful display
configuration."/>
</token>
</histogram>
<histogram name="Display.External.BlockZeroSerialNumberType"
enum="BlockZeroSerialNumberType" expires_after="2023-05-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="2023-05-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="2023-05-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="2023-05-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="2023-05-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="2023-05-14">
<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="2023-05-07">
<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="2023-03-05">
<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="2023-05-07">
<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.SupportsDXGI1_2" enum="BooleanSupported"
expires_after="2023-01-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.AppHelpIsLoaded" enum="Boolean" expires_after="2023-04-23">
<owner>zmo@chromium.org</owner>
<owner>spvw@chromium.org</owner>
<owner>chrome-catan@google.com</owner>
<summary>
Records whether AppHelp.dll is loaded at GPU initialization. Only recorded
on Windows platform at GPU process launch time.
It is not yet known what exactly is triggering the load of AppHelp.dll, and
so we can't be sure that AppHelp.dll won't be loaded after this is
collected, even if this metric is false.
A bug tracking metric collection related to the application compatibility
layer can be found at crbug.com/1357617.
Part of a performance investigation that Catan is doing into GPU startup
time.
</summary>
</histogram>
<histogram name="GPU.BlocklistFeatureTestResults"
enum="GPUBlocklistFeatureTestResults" expires_after="2023-03-05">
<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="2023-05-07">
<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.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="2023-04-23">
<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="2023-04-16">
<owner>zmo@chromium.org</owner>
<owner>graphics-dev@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="2023-04-16">
<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.D3D12HighestShaderModel2" enum="D3DShaderModel"
expires_after="2023-04-16">
<owner>magchen@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<owner>amaiorano@google.com</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. Note
that the &quot;2&quot; suffix was added when a fix was made in how this stat
is collected: the previous unsuffixed version would store
&quot;unknown/unsupported&quot; on systems that supported shader model 5.1
to 6.5, but were unaware of 6.6. The suffixed version correctly stores the
highest supported shader model.
</summary>
</histogram>
<histogram name="GPU.D3DShaderModel" enum="ShaderModel"
expires_after="2023-05-07">
<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.VideoOrCanvas"
enum="DxgiFramePresentationMode" expires_after="2023-05-22">
<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. NOTE:
This metric was expired and not collecting data between 2021-12-31 and
crrev.com/c/4041850 (M110).
</summary>
</histogram>
<histogram name="GPU.DirectComposition.CreateSwapChainForComposition"
enum="Hresult" expires_after="2023-04-01">
<owner>magchen@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
HRESULT return value of IDXGIFactory2::CreateSwapChainForComposition.
</summary>
</histogram>
<histogram name="GPU.DirectComposition.DCLayer.YUVOverlayCount"
units="overlays" expires_after="2023-05-07">
<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="2023-06-15">
<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. (This metric might be lack of coverage between
2022-05-01 and 2022-06-24 due to metric expiration.)
</summary>
</histogram>
<histogram base="true" name="GPU.DirectComposition.DCLayerResult.Video"
enum="DCLayerResult" expires_after="2023-03-26">
<!-- 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="2023-04-01">
<owner>magchen@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
HRESULT return value of IDCompositionDevice2::CreateSurface.
</summary>
</histogram>
<histogram name="GPU.DirectComposition.HardwareOverlaysSupported"
enum="BooleanOverlaySupported" expires_after="2023-04-16">
<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="2023-06-15">
<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="2023-06-15">
<owner>sunnyps@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<owner>magchen@chromium.org</owner>
<summary>
Which overlay format was chosen for YUV overlays. Recorded once per GPU
process launch only if hardware overlays are supported. (Might be lack of
metrics coverage between 2022-05-01 and 2022-06-24 due to metric
expiration.)
</summary>
</histogram>
<histogram name="GPU.DirectComposition.OverlaysSupported"
enum="BooleanOverlaySupported" expires_after="2023-06-15">
<owner>sunnyps@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<owner>magchen@chromium.org</owner>
<summary>
True if Chrome will try to use DirectComposition overlays. (Might be lack of
metrics coverage between 2021-10-04 and 2022-06-24 due to metric
expiration.)
</summary>
</histogram>
<histogram base="true" name="GPU.DirectComposition.SwapChainCreationResult3"
enum="Hresult" expires_after="2023-04-16">
<!-- 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="2023-06-15">
<owner>sunnyps@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<owner>magchen@chromium.org</owner>
<summary>
What format was used for each overlay swap chain on each swap buffers.
(Might be lack of metrics coverage between 2020-12-31 and 2022-06-24 due to
metric expiration.)
</summary>
</histogram>
<histogram name="GPU.DirectComposition.VideoPresentationMode"
enum="DirectCompositionVideoPresentationMode" expires_after="2023-06-15">
<owner>sunnyps@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<owner>magchen@chromium.org</owner>
<summary>
What code path was used to present a video frame. Recorded on each present.
(Might be lack of metrics coverage between 2022-03-06 and 2022-06-24 due to
metric expiration.)
</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="2023-04-23">
<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="2023-02-12">
<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="2023-02-12">
<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="2023-03-26">
<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.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.GLES2DecoderImplLazyBindingCheck.WasBindNecessary"
units="Boolean" expires_after="2023-03-19">
<owner>blundell@chromium.org</owner>
<owner>vasilyt@chromium.org</owner>
<summary>
For each lazy binding check of GLImage performed by GLES2DecoderImpl,
records whether binding was actually necessary or not. Used in the effort to
eliminate these lazy binding checks (crbug.com/1323341).
</summary>
</histogram>
<histogram
name="GPU.GLES2DecoderPassthroughImplLazyBindingCheck.WasBindNecessary"
units="Boolean" expires_after="2023-03-19">
<owner>blundell@chromium.org</owner>
<owner>vasilyt@chromium.org</owner>
<summary>
For each lazy binding check of GLImage performed by
GLES2DecoderPassthroughImpl, records whether binding was actually necessary
or not. Used in the effort to eliminate these lazy binding checks
(crbug.com/1323341).
</summary>
</histogram>
<histogram name="GPU.GLImplementation" enum="GLImplementation"
expires_after="2023-05-07">
<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="2023-04-16">
<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="2023-03-19">
<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.GPUInitializationTime.V4" units="ms"
expires_after="2023-04-09">
<owner>zmo@chromium.org</owner>
<owner>spvw@chromium.org</owner>
<summary>
The time between the GPU process start and the collection of GPU info during
the process's startup phase. The time range is between 5ms and 90s. Emitted
after the collection of GPU info. Reported for all clients.
This metric is similar to GPU.GPUInitializationTime.V3, but there are two
main differences. First, the range for GPU.GPUInitializationTime.V4 is
capped at 90s while the range of the other metric is capped at 5s. Second,
this metric is emitted earlier in the execution because this metric is
recorded at the same time as trace events which require the timestamp
marking the start and end of the GPU initialization to be in scope, whereas
V3 only requires the time spent.
The purpose of this metric is to investigate the long tail of GPU startup
time. See crbug/1350257.
</summary>
</histogram>
<histogram name="GPU.GPUProcessExitCode" enum="GPUProcessExitCode"
expires_after="2023-05-07">
<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="2023-05-07">
<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="2023-05-07">
<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="2023-04-09">
<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.
Warning: this histogram was expired from 2022-01-30 to 2022-04-29; data may
be missing.
</summary>
</histogram>
<histogram name="GPU.HasDiscreteGpu" enum="HasDiscreteGpu"
expires_after="2023-04-24">
<owner>zmo@chromium.org</owner>
<owner>graphics-dev@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.
Warning: this histogram was expired from 2020-04-24 to 2022-04-29; data may
be missing.
</summary>
</histogram>
<histogram name="GPU.InitializeOneOffMediumTime" units="ms"
expires_after="2023-05-07">
<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="2023-04-23">
<owner>zmo@chromium.org</owner>
<owner>graphics-dev@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="2023-04-23">
<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.CATransactionTimeUs" units="microseconds"
expires_after="2023-04-16">
<owner>magchen@chromium.org</owner>
<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. This metric is only collected on
Mac, which only has high-resolution clocks.
</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.BackpressureUs" units="microseconds"
expires_after="2023-04-16">
<owner>magchen@chromium.org</owner>
<owner>ccameron@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. This metric is only collected
on Mac, which only has high-resolution clocks.
</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.ReadWriteTextureSupport"
enum="MetalReadWriteTextureSupportTier" expires_after="2023-04-16">
<owner>cwallez@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Read-write textures are not always supported on Metal. This histograms is
meant to gather information so that the WebGPU W3C group can decide whether
to require support for this feature. The reported tier is the best tier that
was found on the system. Meaning that if only one of the GPUs support
read-write textures, a non-zero tier will be reported. The histogram is
recorded at GPU process startup time.
</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="2023-01-01">
<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="2023-04-16">
<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="2023-03-19">
<owner>jonross@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="2023-04-23">
<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="2023-04-24">
<owner>hubbe@chromium.org</owner>
<owner>cassew@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.OutputSurface.ScheduleOverlaysUs" units="microseconds"
expires_after="2023-04-16">
<owner>magchen@chromium.org</owner>
<owner>ccameron@chromium.org</owner>
<summary>
The time that the GPU's main CPU thread spends producing pending CALayer
tree on Mac. Recorded when Skia output surface schedules overlays at every
frame. This metric is only collected on Mac, which only has high-resolution
clocks.
</summary>
</histogram>
<histogram name="GPU.PaintOpReader.DeserializationError"
enum="PaintOpDeserializationError" expires_after="2023-01-22">
<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="2023-04-09">
<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. Expired in June
2022, and revived in M106. Data may be incomplete for the period during
which the histogram was expired.
</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="2023-04-30">
<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="2023-04-30">
<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.CacheHit" enum="BooleanSuccess"
expires_after="2023-01-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. Expired in June 2022, and revived in M106. Data may be
incomplete for the period during which the histogram was expired.
</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.Rasterization.Raster.MSAASampleCountLog2" units="count"
expires_after="2023-03-26">
<owner>penghuang@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
log2() of MSAA sample count of a raster task. Value is in [log2(1),log2(64)]
or [0,6] range. If log2() of the MSAA sample count is 0 (MSAA sample count
is 1), it means MSAA is disabled.
</summary>
</histogram>
<histogram name="Gpu.Rasterization.Raster.NumPaintOps" units="count"
expires_after="2023-03-26">
<owner>penghuang@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>Number of paint ops in a raster task.</summary>
</histogram>
<histogram name="Gpu.Rasterization.Raster.NumSlowPathsUpToMinForMSAA"
units="count" expires_after="2022-11-20">
<owner>penghuang@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Number of slow paths in a raster task. (Only counts up to the minimum
required for MSAA)
</summary>
</histogram>
<histogram name="GPU.ReportOnlyModeStatusAtHang" enum="BooleanEnabled"
expires_after="2023-04-23">
<owner>spvw@chromium.org</owner>
<owner>chrome-catan@google.com</owner>
<summary>
Records whether report only mode is enabled at GPU process watchdog hang
time. Currently, we are not seeing any of the hangs/crashes reported by
report-only mode, despite the experiment rolling out.
General Catan investigation: https://crbug.com/1350257
Report only feature: https://crbug.com/1356196
Part of a performance investigation that Catan is doing into GPU startup
time.
</summary>
</histogram>
<histogram name="GPU.Scheduler.TaskDependencyTime" units="microseconds"
expires_after="2022-08-07">
<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-12-11">
<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-12-11">
<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.SharedImage.ContentConsumed" enum="BooleanMatched"
expires_after="2023-02-01">
<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.SoftwareRendering" enum="BooleanSoftwareRendering"
expires_after="2023-05-07">
<owner>zmo@chromium.org</owner>
<owner>graphics-dev@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.SupportsDisableMsaa" enum="BooleanSupported"
expires_after="2023-03-19">
<owner>vasilyt@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
This metric records if we had support for non-aa draws with hardware MSAA
via GL_EXT_multisample_compatibility. Recorded once for each raster task
that had non-aa draw.
</summary>
</histogram>
<histogram name="GPU.SupportsDX12" enum="BooleanSupported"
expires_after="2023-04-23">
<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-12-11">
<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.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="2023-01-22">
<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{ThreadType}"
enum="GpuWatchdogThreadEvent" expires_after="2023-04-01">
<owner>magchen@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Recorded for each time the GPU watchdog thread starts, crashes and ends.
</summary>
<token key="ThreadType">
<variant name=""/>
<variant name=".compositor"/>
<variant name=".main"/>
</token>
</histogram>
<histogram name="GPU.WatchdogThread.Timeout{WatchdogStage}{ThreadType}"
enum="GpuWatchdogTimeoutEvent" expires_after="2023-04-01">
<owner>magchen@chromium.org</owner>
<owner>zmo@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Recorded timeout events when the GPU watchdog enters OnWatchdogTimeout.
</summary>
<token key="WatchdogStage">
<variant name=""/>
<variant name=".Foregrounded"/>
<variant name=".Init"/>
<variant name=".Normal"/>
<variant name=".PowerResume"/>
</token>
<token key="ThreadType">
<variant name=""/>
<variant name=".compositor"/>
<variant name=".main"/>
</token>
</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="2023-06-09">
<owner>petermcneeley@chromium.org</owner>
<owner>rjkroege@chromium.org</owner>
<owner>graphics-dev@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="2023-06-09">
<owner>petermcneeley@chromium.org</owner>
<owner>khaslett@chromium.org</owner>
<owner>graphics-dev@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="2023-06-09">
<owner>petermcneeley@chromium.org</owner>
<owner>khaslett@chromium.org</owner>
<owner>graphics-dev@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="2023-06-09">
<owner>khaslett@chromium.org</owner>
<owner>kylechar@chromium.org</owner>
<owner>graphics-dev@chromium.org</owner>
<summary>
Overlay strategies used to promote Hardware Overlays, once or more per
frame. Recorded every time a frame is rendered by the display compositor, or
once per overlay promoted if multiple were promoted.
</summary>
</histogram>
<histogram name="Viz.DisplayCompositor.OverlaySwitchInterval" units="ms"
expires_after="2023-06-09">
<owner>petermcneeley@chromium.org</owner>
<owner>khaslett@chromium.org</owner>
<owner>graphics-dev@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="2023-04-30">
<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="2023-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="2023-06-09">
<owner>petermcneeley@chromium.org</owner>
<owner>rjkroege@chromium.org</owner>
<owner>graphics-dev@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="2023-06-09">
<owner>petermcneeley@chromium.org</owner>
<owner>rjkroege@chromium.org</owner>
<owner>graphics-dev@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.CaptureDuration" units="ms"
expires_after="2023-03-01">
<owner>bialpio@chromium.org</owner>
<owner>media-capture-dev@chromium.org</owner>
<summary>
The time it took from when FrameSinkVideoCapturerImpl sent a request for
frame capture until the result becomes available to the capturer.
Format-agnostic version of
`Viz.FrameSinkVideoCapturer.[NV12/I420].CaptureDuration` histograms.
</summary>
</histogram>
<histogram name="Viz.FrameSinkVideoCapturer.CaptureSucceeded"
enum="BooleanSuccess" expires_after="2023-03-01">
<owner>bialpio@chromium.org</owner>
<owner>media-capture-dev@chromium.org</owner>
<summary>
Whether a capture initiated by FrameSinkVideoCapturerImpl succeeded.
Format-agnostic version of
`Viz.FrameSinkVideoCapturer.[NV12/I420].CaptureSucceeded` histograms.
</summary>
</histogram>
<histogram name="Viz.FrameSinkVideoCapturer.FrameResurrected" enum="Boolean"
expires_after="2023-03-01">
<owner>bialpio@chromium.org</owner>
<owner>media-capture-dev@chromium.org</owner>
<summary>
True if the capturer has used a resurrected video frame, thus avoiding
having to reserve it from a frame pool, false otherwise.
</summary>
</histogram>
<histogram name="Viz.FrameSinkVideoCapturer.I420.CaptureDuration" units="ms"
expires_after="2023-04-30">
<owner>bialpio@chromium.org</owner>
<owner>media-capture-dev@chromium.org</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.
Warning: this histogram was expired from 2021-03-07 to 2022-03-10; data may
be missing.
</summary>
</histogram>
<histogram name="Viz.FrameSinkVideoCapturer.I420.CaptureSucceeded"
enum="BooleanSuccess" expires_after="2023-04-30">
<owner>bialpio@chromium.org</owner>
<owner>media-capture-dev@chromium.org</owner>
<summary>
Whether an I420 readback initiated by FrameSinkVideoCapturerImpl succeeded.
Warning: this histogram was expired from 2020-12-31 to 2022-03-10; data may
be missing.
</summary>
</histogram>
<histogram name="Viz.FrameSinkVideoCapturer.I420.TotalDuration" units="ms"
expires_after="2023-04-30">
<owner>bialpio@chromium.org</owner>
<owner>media-capture-dev@chromium.org</owner>
<summary>
The time it took from when FrameSinkVideoCapturerImpl decided that a new
I420 frame needs to be produced to the moment when it was ready to deliver
it. This encompasses the `Viz.FrameSinkVideoCapturer.I420.CaptureDuration`
time, but also includes time taken to render video capture overlays.
</summary>
</histogram>
<histogram name="Viz.FrameSinkVideoCapturer.NV12.CaptureDuration" units="ms"
expires_after="2023-04-30">
<owner>bialpio@chromium.org</owner>
<owner>media-capture-dev@chromium.org</owner>
<summary>
The time it took from when FrameSinkVideoCapturerImpl sent a request for an
NV12 copy until the result comes back.
Note: The histogram logging was adjusted in M102 to align with how
`Viz.FrameSinkVideoCapturer.[RGBA/I420].CaptureDuration` histograms behave.
After the change, this histogram also started including the time taken to
set the color space on a video frame.
</summary>
</histogram>
<histogram name="Viz.FrameSinkVideoCapturer.NV12.CaptureSucceeded"
enum="BooleanSuccess" expires_after="2023-03-01">
<owner>bialpio@chromium.org</owner>
<owner>media-capture-dev@chromium.org</owner>
<summary>
Whether an NV12 capture initiated by FrameSinkVideoCapturerImpl succeeded.
</summary>
</histogram>
<histogram name="Viz.FrameSinkVideoCapturer.NV12.TotalDuration" units="ms"
expires_after="2023-04-30">
<owner>bialpio@chromium.org</owner>
<owner>media-capture-dev@chromium.org</owner>
<summary>
The time it took from when FrameSinkVideoCapturerImpl decided that a new
NV12 frame needs to be produced to the moment when it was ready to deliver
it. This encompasses the `Viz.FrameSinkVideoCapturer.NV12.CaptureDuration`
time.
</summary>
</histogram>
<histogram name="Viz.FrameSinkVideoCapturer.ReserveFrameDuration" units="ms"
expires_after="2023-04-30">
<owner>bialpio@chromium.org</owner>
<owner>media-capture-dev@chromium.org</owner>
<summary>
The time it took for a frame pool to reserve a video frame that would then
have its contents populated by the capturer. Will be logged only when
`Viz.FrameSinkVideoCapturer.FrameResurrected` is false.
</summary>
</histogram>
<histogram name="Viz.FrameSinkVideoCapturer.RGBA.CaptureDuration" units="ms"
expires_after="2023-01-15">
<owner>jonross@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.TotalDuration" units="ms"
expires_after="2023-04-30">
<owner>bialpio@chromium.org</owner>
<owner>media-capture-dev@chromium.org</owner>
<summary>
The time it took from when FrameSinkVideoCapturerImpl decided that a new
frame needs to be produced to the moment when it was ready to deliver it.
This encompasses the `Viz.FrameSinkVideoCapturer.CaptureDuration` time, but
also includes time taken to render video capture overlays.
Format-agnostic version of
`Viz.FrameSinkVideoCapturer.[NV12/I420].TotalDuration` histograms.
</summary>
</histogram>
</histograms>
</histogram-configuration>