|
Fix CSS reference filters with negative transformed children.
[M54 cherry-pick of 5941ecb0aea741b27fea283065b25428588dbe43.]
The software raster path for filters had always used the
bounds top-left corner as the origin for filters. This
doesn't work if the filtered primitive contains a
negative-transformed child, since the saveLayer() bounds
should be negative (non-zero) with respect to the
primitive.
The solution is to pass through the origin explicitly, and
translate to that rather than the bounds origin before
applying the filter. This will determine the origin for
crop rects, lighting positions, etc.
It turns out that there are certain CSS properties (e.g., "outline") which affect the size of the layer, but are not
supposed to affect layout. In cc, we had previously been
using the layer's src_rect origin to offset filter
parameters in order to compensate for clipping, etc, but
this is insufficient to handle "outset", which shows up
in the layer position but shouldn't affect filter origin.
The offset that we want was already being computed
for us in GraphicsLayer::setOffsetFromLayoutObject()),
but not forwarded to cc. I've done so, with the
attendant changes to WebLayer, WebLayerImpl, mojo bindings, struct_traits, cc::Layer, cc::LayerImpl, EffectNode,
RenderSurfaceImpl, and RenderPassDrawQuad. (I wish I
was kidding.)
BUG= 638091
TRR=ajuma@chromium.org, chrishtr@chromium.org, mbarbella@chromium.org, sky@chromium.org, wkorman@chromium.org
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel
Committed: https://chromium.googlesource.com/chromium/src/+/df20db6b63fb755924ee7540b9b4e0671ebe550b
|
Unified diffs |
Side-by-side diffs |
Delta from patch set |
Stats (+330 lines, -206 lines) |
Patch |
 |
M |
cc/blink/web_display_item_list_impl.h
|
View
|
|
2 chunks |
+3 lines, -1 line |
0 comments
|
Download
|
 |
M |
cc/blink/web_display_item_list_impl.cc
|
View
|
|
1 chunk |
+3 lines, -2 lines |
0 comments
|
Download
|
 |
M |
cc/blink/web_layer_impl.h
|
View
|
|
2 chunks |
+2 lines, -0 lines |
0 comments
|
Download
|
 |
M |
cc/blink/web_layer_impl.cc
|
View
|
|
1 chunk |
+4 lines, -0 lines |
0 comments
|
Download
|
 |
M |
cc/ipc/cc_param_traits_macros.h
|
View
|
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
 |
M |
cc/ipc/cc_param_traits_unittest.cc
|
View
|
|
2 chunks |
+3 lines, -1 line |
0 comments
|
Download
|
 |
M |
cc/ipc/quads.mojom
|
View
|
|
1 chunk |
+5 lines, -0 lines |
0 comments
|
Download
|
 |
M |
cc/ipc/quads_struct_traits.h
|
View
|
|
1 chunk |
+6 lines, -0 lines |
0 comments
|
Download
|
 |
M |
cc/ipc/quads_struct_traits.cc
|
View
|
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
 |
M |
cc/ipc/struct_traits_unittest.cc
|
View
|
|
2 chunks |
+2 lines, -1 line |
0 comments
|
Download
|
 |
M |
cc/layers/layer.h
|
View
|
|
2 chunks |
+4 lines, -0 lines |
0 comments
|
Download
|
 |
M |
cc/layers/layer.cc
|
View
|
|
1 chunk |
+9 lines, -0 lines |
0 comments
|
Download
|
 |
M |
cc/layers/layer_impl_test_properties.h
|
View
|
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
 |
M |
cc/layers/render_surface_impl.h
|
View
|
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
 |
M |
cc/layers/render_surface_impl.cc
|
View
|
|
2 chunks |
+5 lines, -1 line |
0 comments
|
Download
|
 |
M |
cc/output/gl_renderer.cc
|
View
|
|
4 chunks |
+10 lines, -6 lines |
0 comments
|
Download
|
 |
M |
cc/output/overlay_unittest.cc
|
View
|
|
8 chunks |
+16 lines, -8 lines |
0 comments
|
Download
|
 |
M |
cc/output/renderer_pixeltest.cc
|
View
|
|
8 chunks |
+17 lines, -40 lines |
0 comments
|
Download
|
 |
M |
cc/output/software_renderer.cc
|
View
|
|
1 chunk |
+2 lines, -1 line |
0 comments
|
Download
|
 |
M |
cc/playback/display_item_list_unittest.cc
|
View
|
|
3 chunks |
+6 lines, -4 lines |
0 comments
|
Download
|
 |
M |
cc/playback/filter_display_item.h
|
View
|
|
2 chunks |
+7 lines, -2 lines |
0 comments
|
Download
|
 |
M |
cc/playback/filter_display_item.cc
|
View
|
|
3 chunks |
+12 lines, -8 lines |
0 comments
|
Download
|
 |
M |
cc/playback/largest_display_item.cc
|
View
|
|
1 chunk |
+4 lines, -4 lines |
0 comments
|
Download
|
 |
M |
cc/quads/draw_quad_unittest.cc
|
View
|
|
8 chunks |
+27 lines, -50 lines |
0 comments
|
Download
|
 |
M |
cc/quads/render_pass_draw_quad.h
|
View
|
|
4 chunks |
+8 lines, -0 lines |
0 comments
|
Download
|
 |
M |
cc/quads/render_pass_draw_quad.cc
|
View
|
|
3 chunks |
+6 lines, -12 lines |
0 comments
|
Download
|
 |
M |
cc/quads/render_pass_unittest.cc
|
View
|
|
1 chunk |
+4 lines, -10 lines |
0 comments
|
Download
|
 |
M |
cc/surfaces/surface_aggregator.cc
|
View
|
|
1 chunk |
+4 lines, -10 lines |
0 comments
|
Download
|
 |
M |
cc/test/render_pass_test_utils.cc
|
View
|
|
3 chunks |
+11 lines, -24 lines |
0 comments
|
Download
|
 |
M |
cc/test/surface_aggregator_test_helpers.cc
|
View
|
|
1 chunk |
+1 line, -1 line |
0 comments
|
Download
|
 |
M |
cc/test/surface_hittest_test_helpers.cc
|
View
|
|
1 chunk |
+1 line, -1 line |
0 comments
|
Download
|
 |
M |
cc/trees/effect_node.h
|
View
|
|
2 chunks |
+2 lines, -0 lines |
0 comments
|
Download
|
 |
M |
cc/trees/effect_node.cc
|
View
|
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
 |
M |
cc/trees/layer_tree_host_pixeltest_filters.cc
|
View
|
|
1 chunk |
+44 lines, -0 lines |
0 comments
|
Download
|
 |
M |
cc/trees/property_tree_builder.cc
|
View
|
|
2 chunks |
+9 lines, -0 lines |
0 comments
|
Download
|
 |
M |
services/ui/ws/frame_generator.cc
|
View
|
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
 |
M |
third_party/WebKit/LayoutTests/TestExpectations
|
View
|
|
1 chunk |
+3 lines, -0 lines |
0 comments
|
Download
|
 |
A |
third_party/WebKit/LayoutTests/css3/filters/filter-region-negative-transformed-child.html
|
View
|
|
1 chunk |
+33 lines, -0 lines |
0 comments
|
Download
|
 |
A |
third_party/WebKit/LayoutTests/css3/filters/filter-region-negative-transformed-child-expected.html
|
View
|
|
1 chunk |
+32 lines, -0 lines |
0 comments
|
Download
|
 |
M |
third_party/WebKit/Source/core/paint/BoxReflectionUtils.cpp
|
View
|
|
1 chunk |
+0 lines, -10 lines |
0 comments
|
Download
|
 |
M |
third_party/WebKit/Source/core/paint/FilterPainter.cpp
|
View
|
|
1 chunk |
+2 lines, -1 line |
0 comments
|
Download
|
 |
M |
third_party/WebKit/Source/platform/graphics/GraphicsLayer.cpp
|
View
|
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
 |
M |
third_party/WebKit/Source/platform/graphics/paint/FilterDisplayItem.h
|
View
|
|
3 chunks |
+6 lines, -3 lines |
0 comments
|
Download
|
 |
M |
third_party/WebKit/Source/platform/graphics/paint/FilterDisplayItem.cpp
|
View
|
|
1 chunk |
+5 lines, -4 lines |
0 comments
|
Download
|
 |
M |
third_party/WebKit/public/platform/WebDisplayItemList.h
|
View
|
|
1 chunk |
+1 line, -1 line |
0 comments
|
Download
|
 |
M |
third_party/WebKit/public/platform/WebLayer.h
|
View
|
|
2 chunks |
+4 lines, -0 lines |
0 comments
|
Download
|
Total messages: 8 (5 generated)
|