Commit 986ed6e9 authored by Chris Harrelson's avatar Chris Harrelson Committed by Commit Bot

Re-land: "Do main-thread layer update even if hidden_by_backface_visibility""

This reverts commit 2b5c4137.

The fix is to wait one more frame. This makes the test pass reliably
on debug builds.

Bug: 977658

Change-Id: Ie8a70e6043e92267f99022cdc78b7ca687370cec
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2161454Reviewed-by: default avatarRobert Flack <flackr@chromium.org>
Commit-Queue: Chris Harrelson <chrishtr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#761978}
parent b5ae2605
......@@ -452,9 +452,24 @@ bool LayerNeedsUpdate(LayerType* layer,
return true;
}
template <typename LayerType>
inline bool LayerShouldBeSkippedForDrawPropertiesComputation(
LayerType* layer,
Layer* layer,
const TransformTree& transform_tree,
const EffectTree& effect_tree) {
const EffectNode* effect_node = effect_tree.Node(layer->effect_tree_index());
if (effect_node->HasRenderSurface() && effect_node->subtree_has_copy_request)
return false;
// If the layer transform is not invertible, it should be skipped. In case the
// transform is animating and singular, we should not skip it.
const TransformNode* transform_node =
transform_tree.Node(layer->transform_tree_index());
return !transform_node->node_and_ancestors_are_animated_or_invertible ||
!effect_node->is_drawn;
}
inline bool LayerShouldBeSkippedForDrawPropertiesComputation(
LayerImpl* layer,
const TransformTree& transform_tree,
const EffectTree& effect_tree) {
const EffectNode* effect_node = effect_tree.Node(layer->effect_tree_index());
......
<!doctype html>
<html>
<link rel="author" title="Chris Harrelson" href="mailto:chrishtr@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-transforms-2/#propdef-backface-visibility">
<style>
#flip {
height: 100px;
width: 100px;
transform: rotateY(180deg);
transform-style: preserve-3d;
}
#back {
background: lightblue;
transform: rotateY(180deg);
position: absolute;
top: 0;
left: 0;
width: 200px;
height: 200px;
backface-visibility: hidden;
}
#posabs {
position: absolute;
bottom: 0;
right: 0;
background: yellow;
}
</style>
<div id="flip">
<div id="back">
<i id="posabs">Text</i>
</div>
</div>
</html>
<!doctype html>
<html class=reftest-wait>
<link rel="author" title="Chris Harrelson" href="mailto:chrishtr@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-transforms-2/#propdef-backface-visibility">
<link rel="match" href="backface-visibility-hidden-animated-ref.html">
<style>
@keyframes show-backface {
0% { transform: rotateY(60deg); }
0.01% { transform: rotateY(180deg); }
100% { transform: rotateY(180deg); }
}
.flip {
animation: 10s linear 0s infinite forwards show-backface;
height: 100px;
width: 100px;
transform: rotateY(60deg);
transform-style: preserve-3d;
}
#back {
background: lightblue;
transform: rotateY(180deg);
position: absolute;
top: 0;
left: 0;
width: 200px;
height: 200px;
backface-visibility: hidden;
}
#posabs {
position: absolute;
bottom: 0;
right: 0;
background: yellow;
}
</style>
<div id="flip">
<div id="back">
<i id="posabs">Text</i>
</div>
</div>
<script>
onload = () => requestAnimationFrame(() => requestAnimationFrame(() => {
flip.classList.add("flip");
requestAnimationFrame(() => requestAnimationFrame(() =>
document.documentElement.classList.remove("reftest-wait")));
}));
</script>
</html>
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