Commit b5764c17 authored by Xiyuan Xia's avatar Xiyuan Xia Committed by Commit Bot

Fix flicker on Dru when capturing

A display transform pass could be added during capturing when
devices are not in their default orientation. Making the display
transform pass to copy |has_transparent_background| flag from
root renderer pass fixed the problem on Dru. Without the flag
copied, Dru (ARM/Mali) somehow shows the display transform pass
as a black frame and causes the flicker.

Bug: 1041901
Change-Id: I9651073cf8f9ab75ae5aaf6bfcd20a25fd4349d0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2089957
Commit-Queue: Xiyuan Xia <xiyuan@chromium.org>
Reviewed-by: default avatarKhushal <khushalsagar@chromium.org>
Cr-Commit-Position: refs/heads/master@{#747465}
parent b419398e
...@@ -864,15 +864,21 @@ void SurfaceAggregator::AddDisplayTransformPass() { ...@@ -864,15 +864,21 @@ void SurfaceAggregator::AddDisplayTransformPass() {
display_transform_render_pass_id_ = next_render_pass_id_++; display_transform_render_pass_id_ = next_render_pass_id_++;
auto display_transform_pass = RenderPass::Create(1, 1); auto display_transform_pass = RenderPass::Create(1, 1);
display_transform_pass->SetNew( display_transform_pass->SetAll(
display_transform_render_pass_id_, display_transform_render_pass_id_,
cc::MathUtil::MapEnclosedRectWith2dAxisAlignedTransform( cc::MathUtil::MapEnclosedRectWith2dAxisAlignedTransform(
root_surface_transform_, root_render_pass->output_rect), root_surface_transform_, root_render_pass->output_rect),
cc::MathUtil::MapEnclosedRectWith2dAxisAlignedTransform( cc::MathUtil::MapEnclosedRectWith2dAxisAlignedTransform(
root_surface_transform_, root_render_pass->damage_rect), root_surface_transform_, root_render_pass->damage_rect),
gfx::Transform()); gfx::Transform(),
display_transform_pass->content_color_usage = /*filters=*/cc::FilterOperations(),
root_render_pass->content_color_usage; /*backdrop_filters=*/cc::FilterOperations(),
/*backdrop_filter_bounds=*/gfx::RRectF(),
root_render_pass->content_color_usage,
root_render_pass->has_transparent_background,
/*cache_render_pass=*/false,
/*has_damage_from_contributing_content=*/false,
/*generate_mipmap=*/false);
bool are_contents_opaque = true; bool are_contents_opaque = true;
for (const auto* sqs : root_render_pass->shared_quad_state_list) { for (const auto* sqs : root_render_pass->shared_quad_state_list) {
......
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