0

cc/transitions: Ignore occlusion for shared elements.

Render surfaces which correspond to shared elements must render even if
occluded.

R=vmpstr@chromium.org

Bug: 1265700, 1265702
Change-Id: I6a3fe54dc7d6ce32236349be0084633e604a149a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3369641
Reviewed-by: Vladimir Levin <vmpstr@chromium.org>
Commit-Queue: Khushal Sagar <khushalsagar@chromium.org>
Auto-Submit: Khushal Sagar <khushalsagar@chromium.org>
Cr-Commit-Position: refs/heads/main@{#956563}
This commit is contained in:
Khushal
2022-01-07 17:50:11 +00:00
committed by Chromium LUCI CQ
parent 13ef628dc6
commit 1ecbca7430
2 changed files with 3 additions and 4 deletions

@ -170,7 +170,8 @@ bool RenderSurfaceImpl::ShouldCacheRenderSurface() const {
bool RenderSurfaceImpl::CopyOfOutputRequired() const {
return HasCopyRequest() || ShouldCacheRenderSurface() ||
SubtreeCaptureId().is_valid();
SubtreeCaptureId().is_valid() ||
OwningEffectNode()->shared_element_resource_id.IsValid();
}
int RenderSurfaceImpl::TransformTreeIndex() const {

@ -1262,14 +1262,12 @@ DrawResult LayerTreeHostImpl::CalculateRenderPasses(FrameData* frame) {
const size_t surface_index = render_surface_list_size - 1 - i;
RenderSurfaceImpl* render_surface =
(*frame->render_surface_list)[surface_index];
const auto& shared_element_id =
render_surface->GetDocumentTransitionSharedElementId();
const bool is_root_surface =
render_surface->EffectTreeIndex() == EffectTree::kContentsRootNodeId;
const bool should_draw_into_render_pass =
is_root_surface || render_surface->contributes_to_drawn_surface() ||
render_surface->CopyOfOutputRequired() || shared_element_id.valid();
render_surface->CopyOfOutputRequired();
if (should_draw_into_render_pass)
frame->render_passes.push_back(render_surface->CreateRenderPass());
}