| Index: cc/output/dc_layer_overlay.cc
|
| diff --git a/cc/output/dc_layer_overlay.cc b/cc/output/dc_layer_overlay.cc
|
| index eda508e6e13243b6787f3c841565d0d0f0aa788c..7cf68722011ea0e867f074a2174929bcc9259672 100644
|
| --- a/cc/output/dc_layer_overlay.cc
|
| +++ b/cc/output/dc_layer_overlay.cc
|
| @@ -4,6 +4,7 @@
|
|
|
| #include "cc/output/dc_layer_overlay.h"
|
|
|
| +#include "base/metrics/histogram_macros.h"
|
| #include "cc/base/math_util.h"
|
| #include "cc/quads/solid_color_draw_quad.h"
|
| #include "cc/quads/yuv_video_draw_quad.h"
|
| @@ -68,6 +69,11 @@ gfx::RectF GetOcclusionBounds(const gfx::RectF& target_quad,
|
| return occlusion_bounding_box;
|
| }
|
|
|
| +void RecordDCLayerResult(DCLayerOverlayProcessor::DCLayerResult result) {
|
| + UMA_HISTOGRAM_ENUMERATION("GPU.DirectComposition.DCLayerResult", result,
|
| + DCLayerOverlayProcessor::DC_LAYER_FAILED_MAX);
|
| +}
|
| +
|
| } // namespace
|
|
|
| DCLayerOverlay::DCLayerOverlay() : filter(GL_LINEAR) {}
|
| @@ -85,7 +91,7 @@ DCLayerOverlayProcessor::DCLayerResult DCLayerOverlayProcessor::FromDrawQuad(
|
| if (quad->shared_quad_state->blend_mode != SkBlendMode::kSrcOver)
|
| return DC_LAYER_FAILED_QUAD_BLEND_MODE;
|
|
|
| - DCLayerResult result = DC_LAYER_FAILED_UNKNOWN;
|
| + DCLayerResult result;
|
| switch (quad->material) {
|
| case DrawQuad::YUV_VIDEO_CONTENT:
|
| result =
|
| @@ -93,7 +99,7 @@ DCLayerOverlayProcessor::DCLayerResult DCLayerOverlayProcessor::FromDrawQuad(
|
| ca_layer_overlay);
|
| break;
|
| default:
|
| - return DC_LAYER_FAILED_UNKNOWN;
|
| + return DC_LAYER_FAILED_UNSUPPORTED_QUAD;
|
| }
|
| if (result != DC_LAYER_SUCCESS)
|
| return result;
|
| @@ -128,13 +134,16 @@ void DCLayerOverlayProcessor::Process(ResourceProvider* resource_provider,
|
| DCLayerOverlay ca_layer;
|
| DCLayerResult result = FromDrawQuad(resource_provider, display_rect,
|
| quad_list->begin(), it, &ca_layer);
|
| - if (result != DC_LAYER_SUCCESS)
|
| + if (result != DC_LAYER_SUCCESS) {
|
| + RecordDCLayerResult(result);
|
| continue;
|
| + }
|
|
|
| if (!it->shared_quad_state->quad_to_target_transform
|
| .Preserves2dAxisAlignment() &&
|
| !base::FeatureList::IsEnabled(
|
| features::kDirectCompositionComplexOverlays)) {
|
| + RecordDCLayerResult(DC_LAYER_FAILED_COMPLEX_TRANSFORM);
|
| continue;
|
| }
|
|
|
| @@ -152,6 +161,7 @@ void DCLayerOverlayProcessor::Process(ResourceProvider* resource_provider,
|
| quad_list->EraseAndInvalidateAllPointers(it);
|
| } else if (!base::FeatureList::IsEnabled(
|
| features::kDirectCompositionUnderlays)) {
|
| + RecordDCLayerResult(DC_LAYER_FAILED_OCCLUDED);
|
| continue;
|
| } else {
|
| // The quad is occluded, so replace it with a black solid color quad and
|
|
|