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:

committed by
Chromium LUCI CQ

parent
13ef628dc6
commit
1ecbca7430
cc
@ -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());
|
||||
}
|
||||
|
Reference in New Issue
Block a user