Commit 84204a02 authored by Mason Freed's avatar Mason Freed Committed by Commit Bot

Properly set the mask type to SINGLE_TEXTURE_MASK in UpdateMaskLayer

Prior to this CL, and after [1], the mask_type() field of the
PictureLayer created by UpdateMaskLayer was not properly set. This
meant that for large masks, the standard tiling logic kicked in and
tiled the mask, which (after [1]) was not supported and resulted in
a DCHECK and/or the mask not properly being applied. This fixes that
bug. I also added a backdrop-filter/mask test with a large mask
to ensure this works.

[1] https://chromium.googlesource.com/chromium/src/+/310cae44aff889a75fc85ce5ec89d9341eccc665

Bug: 992782
Change-Id: Ibc461638abdeedd8ff9f4730a1e81f6442400bd8
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1764679
Commit-Queue: Mason Freed <masonfreed@chromium.org>
Auto-Submit: Mason Freed <masonfreed@chromium.org>
Reviewed-by: default avatarenne <enne@chromium.org>
Cr-Commit-Position: refs/heads/master@{#689978}
parent ef39617c
......@@ -1768,6 +1768,8 @@ bool CompositedLayerMapping::UpdateMaskLayer(bool needs_mask_layer) {
owning_layer_.GetLayoutObject().UniqueId(),
CompositorElementIdNamespace::kEffectMask);
mask_layer_->SetElementId(element_id);
mask_layer_->CcLayer()->SetLayerMaskType(
cc::Layer::LayerMaskType::SINGLE_TEXTURE_MASK);
layer_changed = true;
}
} else if (mask_layer_) {
......
......@@ -401,6 +401,7 @@ crbug.com/923429 css3/filters/backdrop-filter-transform.html [ Failure ]
crbug.com/923429 css3/filters/backdrop-filter-edge-pixels.html [ Failure ]
crbug.com/923429 css3/filters/backdrop-filter-clip-radius-zoom.html [ Failure ]
crbug.com/923429 css3/filters/backdrop-filter-plus-mask.html [ Failure ]
crbug.com/923429 css3/filters/backdrop-filter-plus-mask-large.html [ Failure ]
crbug.com/923429 external/wpt/css/filter-effects/backdrop-filter-basic-background-color.html [ Failure ]
crbug.com/923429 external/wpt/css/filter-effects/backdrop-filter-basic-opacity-2.html [ Failure ]
crbug.com/923429 external/wpt/css/filter-effects/backdrop-filter-basic.html [ Failure ]
......@@ -430,6 +431,7 @@ crbug.com/923429 virtual/scalefactor200/css3/filters/backdrop-filter-rendering.h
crbug.com/923429 virtual/scalefactor200/css3/filters/backdrop-filter-transform.html [ Failure ]
crbug.com/923429 virtual/scalefactor200/css3/filters/backdrop-filter-clip-radius-zoom.html [ Failure ]
crbug.com/923429 virtual/scalefactor200/css3/filters/backdrop-filter-plus-mask.html [ Failure ]
crbug.com/923429 virtual/scalefactor200/css3/filters/backdrop-filter-plus-mask-large.html [ Failure ]
crbug.com/923429 virtual/scalefactor200/external/wpt/css/filter-effects/backdrop-filter-basic-background-color.html [ Failure ]
crbug.com/923429 virtual/scalefactor200/external/wpt/css/filter-effects/backdrop-filter-basic-opacity-2.html [ Failure ]
crbug.com/923429 virtual/scalefactor200/external/wpt/css/filter-effects/backdrop-filter-basic.html [ Failure ]
......@@ -559,4 +561,4 @@ crbug.com/981749 virtual/threaded/fast/scrolling/scroll-chaining-from-position-f
crbug.com/989673 svg/foreignObject/mask.html [ Failure ]
# These tests are failing due to subpixel differences but can't be rebaselined.
Bug(none) virtual/controls-refresh/fast/forms/controls-new-ui/select/select-multiple-appearance-basic.html [ Failure ]
\ No newline at end of file
Bug(none) virtual/controls-refresh/fast/forms/controls-new-ui/select/select-multiple-appearance-basic.html [ Failure ]
<!DOCTYPE html>
<meta charset="utf-8">
<title>backdrop-filter: Correctly apply masks/clips to backdrop-filter content</title>
<link rel="author" title="Mason Freed" href="mailto:masonfreed@chromium.org">
<link rel="help" href="https://drafts.fxtf.org/filter-effects-2/#BackdropFilterProperty">
<link rel="match" href="backdrop-filter-plus-mask-ref.html">
<!--Expected: A large black circle.-->
<!-- TODO(978481): Convert this back to WPT test. See crbug.com/978481 for
an implementation in WPT that is waiting for the WPT Fuzzy Matching feature.
-->
<div></div>
<style>
div {
position: absolute;
top: 100px;
left: 50px;
width: 2000px;
height: 2000px;
backdrop-filter: invert(1);
clip-path: circle(1000px at center);
}
</style>
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