Commit 027ae1d4 authored by Sunny Sachanandani's avatar Sunny Sachanandani Committed by Commit Bot

Process all render passes for direct composition overlays

Even if the non root overlays feature is disabled, we want to process
all render passes so that we can record UMA for video overlay candidates
in non root passes. The number of render passes is usually very small
with almost all frames having less than 5 render passes.

Bug: 843814
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel
Change-Id: I83688391857bdfe40cd2e55e686d0daa0914f3b8
Reviewed-on: https://chromium-review.googlesource.com/1087801
Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org>
Reviewed-by: default avatarZhenyao Mo <zmo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#565765}
parent ffaf1e2b
...@@ -137,23 +137,15 @@ void DCLayerOverlayProcessor::Process( ...@@ -137,23 +137,15 @@ void DCLayerOverlayProcessor::Process(
gfx::Rect* overlay_damage_rect, gfx::Rect* overlay_damage_rect,
gfx::Rect* damage_rect, gfx::Rect* damage_rect,
DCLayerOverlayList* dc_layer_overlays) { DCLayerOverlayList* dc_layer_overlays) {
DCHECK(pass_info_.empty());
processed_overlay_in_frame_ = false; processed_overlay_in_frame_ = false;
if (base::FeatureList::IsEnabled(
features::kDirectCompositionNonrootOverlays)) {
for (auto& pass : *render_passes) {
bool is_root = (pass == render_passes->back());
ProcessRenderPass(resource_provider, display_rect, pass.get(), is_root,
overlay_damage_rect,
is_root ? damage_rect : &pass->damage_rect,
dc_layer_overlays);
}
} else {
ProcessRenderPass(resource_provider, display_rect,
render_passes->back().get(), true, overlay_damage_rect,
damage_rect, dc_layer_overlays);
}
pass_info_.clear(); pass_info_.clear();
for (auto& pass : *render_passes) {
bool is_root = (pass == render_passes->back());
ProcessRenderPass(resource_provider, display_rect, pass.get(), is_root,
overlay_damage_rect,
is_root ? damage_rect : &pass->damage_rect,
dc_layer_overlays);
}
} }
QuadList::Iterator DCLayerOverlayProcessor::ProcessRenderPassDrawQuad( QuadList::Iterator DCLayerOverlayProcessor::ProcessRenderPassDrawQuad(
...@@ -288,11 +280,7 @@ void DCLayerOverlayProcessor::ProcessRenderPass( ...@@ -288,11 +280,7 @@ void DCLayerOverlayProcessor::ProcessRenderPass(
RecordDCLayerResult(DC_LAYER_SUCCESS); RecordDCLayerResult(DC_LAYER_SUCCESS);
dc_layer_overlays->push_back(dc_layer); dc_layer_overlays->push_back(dc_layer);
if (!base::FeatureList::IsEnabled(
features::kDirectCompositionNonrootOverlays)) {
// Only allow one overlay for now.
break;
}
processed_overlay_in_frame_ = true; processed_overlay_in_frame_ = true;
} }
} }
...@@ -335,15 +323,17 @@ bool DCLayerOverlayProcessor::ProcessForUnderlay( ...@@ -335,15 +323,17 @@ bool DCLayerOverlayProcessor::ProcessForUnderlay(
gfx::Rect* damage_rect, gfx::Rect* damage_rect,
gfx::Rect* this_frame_underlay_rect, gfx::Rect* this_frame_underlay_rect,
DCLayerOverlay* dc_layer) { DCLayerOverlay* dc_layer) {
// TODO(sunnyps): Remove this restriction for |require_overlay| quads.
if (!is_root && !base::FeatureList::IsEnabled(
features::kDirectCompositionNonrootOverlays)) {
RecordDCLayerResult(DC_LAYER_FAILED_NON_ROOT);
return false;
}
if (!dc_layer->require_overlay) { if (!dc_layer->require_overlay) {
if (!base::FeatureList::IsEnabled(features::kDirectCompositionUnderlays)) { if (!base::FeatureList::IsEnabled(features::kDirectCompositionUnderlays)) {
RecordDCLayerResult(DC_LAYER_FAILED_OCCLUDED); RecordDCLayerResult(DC_LAYER_FAILED_OCCLUDED);
return false; return false;
} }
if (!is_root) {
RecordDCLayerResult(DC_LAYER_FAILED_NON_ROOT);
return false;
}
if (processed_overlay_in_frame_) { if (processed_overlay_in_frame_) {
RecordDCLayerResult(DC_LAYER_FAILED_TOO_MANY_OVERLAYS); RecordDCLayerResult(DC_LAYER_FAILED_TOO_MANY_OVERLAYS);
return false; return false;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment