<!--
Copyright 2023 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 describes the enumerations referenced by entries in histograms.xml for
this directory. Some enums may instead be listed in the central enums.xml file
at src/tools/metrics/histograms/enums.xml when multiple files use them.

For best practices on writing enumerations descriptions, see
https://chromium.googlesource.com/chromium/src.git/+/HEAD/tools/metrics/histograms/README.md#Enum-Histograms

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>

<!-- Enum types -->

<enums>

<!--LINT.IfChange(BeginImplFrameDeadlineMode) -->

<enum name="BeginImplFrameDeadlineMode">
  <int value="0" label="None"/>
  <int value="1" label="Immediate"/>
  <int value="2" label="Wait for scroll"/>
  <int value="3" label="Regular"/>
  <int value="4" label="Late"/>
  <int value="5" label="Blocked"/>
</enum>

<!--LINT.ThenChange(//cc/scheduler/scheduler_state_machine.cc:BeginImplFrameDeadlineMode) -->

<!--LINT.IfChange(CommitEarlyOutReason) -->

<enum name="BeginMainFrameMainResult">
  <int value="0" label="AbortedNotVisible"/>
  <int value="1" label="AbortedDeferredMainFrameUpdate"/>
  <int value="2" label="AbortedDeferredCommit"/>
  <int value="3" label="FinishedNoUpdates"/>
  <int value="4" label="NoEarlyOut"/>
</enum>

<!--LINT.ThenChange(//cc/scheduler/commit_earlyout_reason.h:CommitEarlyOutReason) -->

<enum name="CALayerResult">
  <int value="0" label="Success"/>
  <int value="1" label="Unknown failure"/>
  <int value="2" label="IOSurface resource not overlay candidate"/>
  <int value="3" label="StreamVideo resource not overlay candidate"/>
  <int value="4" label="StreamVideo texture not identity"/>
  <int value="5" label="Texture resource not overlay candidate"/>
  <int value="6" label="Texture resource Y flipping not supported"/>
  <int value="7" label="Tile resource not overlay candidate"/>
  <int value="8" label="Unsupported quad blend mode"/>
  <int value="9" label="Unsupported quad transform"/>
  <int value="10" label="Unsupported quad clipping"/>
  <int value="11" label="DebugBorder quads not supported"/>
  <int value="12" label="PictureContent quads not supported"/>
  <int value="13" label="RenderPass quads not supported"/>
  <int value="14" label="SurfaceContent quads not supported"/>
  <int value="15" label="YUVVideo quads not supported"/>
  <int value="16"
      label="Different clip settings in a sorting context is not supported"/>
  <int value="17"
      label="Different vertex opacities for a single texture is not supported"/>
  <int value="18" label="RenderPassDrawQuad has a filter scale"/>
  <int value="19" label="RenderPassDrawQuad has background filters"/>
  <int value="20" label="RenderPassDrawQuad has a mask"/>
  <int value="21" label="RenderPassDrawQuad has unconvertable filters"/>
  <int value="22" label="RenderPassDrawQuad has a sorting context id"/>
  <int value="23" label="Too many RenderPassDrawQuads"/>
  <int value="24" label="Unsupported rounded corner rect"/>
  <int value="25" label="Rounded rect doesn't match clip rect"/>
  <int value="26" label="Rounded rect doesn't have uniform corner radii"/>
  <int value="27" label="Too many quads"/>
  <int value="28" label="YUVVideoDrawQuad not overlay candidate"/>
  <int value="29" label="YUVVideoDrawQuad Y/UV coordinates mismatch"/>
  <int value="30" label="YUVVideoDrawQuad has invalid planes"/>
  <int value="31" label="Has copy requests"/>
  <int value="32" label="Overlay disabled"/>
  <int value="33" label="Video capture enabled"/>
  <int value="34" label="Did not swap (Not for histogram)"/>
  <int value="35" label="No widget (Not for histogram)"/>
</enum>

<enum name="PropertyMutation">
  <int value="0" label="Transform"/>
  <int value="1" label="Opacity"/>
  <int value="2" label="Filter"/>
  <int value="3" label="Backdrop Filter"/>
</enum>

<enum name="RenderPassDamage">
  <int value="0" label="Output rect">
    Clipping at the root does not make the damage smaller than the output rect.
  </int>
  <int value="1" label="Clipped by root">
    Clipping at the root will clip the render pass and make it smaller than
    output rect.
  </int>
  <int value="2" label="Force full output rect">
    Full output rect damage was forced for this render pass.
  </int>
</enum>

<enum name="RenderPassDrawRectAssign">
  <int value="0" label="New Output rect">
    Initializing a drawn rect with an output rect for the first time.
  </int>
  <int value="1" label="Reassignment">
    Reassigning a different output rect to an existing non empty drawn rect.
  </int>
  <int value="2" label="No Assignment">No changes to drawn rect.</int>
  <int value="3" label="Full Damage">
    Assignment to drawn rect is equal to the damage.
  </int>
</enum>

<enum name="SlimBeginFrameResult">
  <int value="0" label="EarlyOutNoDraw"/>
  <int value="1" label="EarlyOutProcessed"/>
  <int value="2" label="FrameProduced"/>
</enum>

<enum name="SrcRectConstraintUMA">
  <int value="0" label="Strict"/>
  <int value="1" label="Fast"/>
</enum>

</enums>

</histogram-configuration>
