Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(320)

Issue 2297213003: Fix CSS reference filters with negative transformed children. (Closed)

Created:
4 years, 3 months ago by Stephen White
Modified:
4 years, 3 months ago
Reviewers:
CC:
chromium-reviews, qsr+mojo_chromium.org, viettrungluu+watch_chromium.org, blink-reviews-platform-graphics_chromium.org, dshwang, yzshen+watch_chromium.org, Stephen Chennney, rwlbuis, darin (slow to review), krit, drott+blinkwatch_chromium.org, Justin Novosad, abarth-chromium, dglazkov+blink, Rik, blink-reviews-paint_chromium.org, blink-reviews, ajuma+watch_chromium.org, blink-reviews-api_chromium.org, jbroman, pdr+graphicswatchlist_chromium.org, cc-bugs_chromium.org, rjkroege, slimming-paint-reviews_chromium.org, blink-layers+watch_chromium.org, Aaron Boodman, f(malita), danakj+watch_chromium.org
Target Ref:
refs/pending/branch-heads/2840
Project:
chromium
Visibility:
Public.

Description

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

Patch Set 1 #

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

Messages

Total messages: 8 (5 generated)
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.org/2297213003/1
4 years, 3 months ago (2016-08-31 21:51:11 UTC) #4
commit-bot: I haz the power
No L-G-T-M from a valid reviewer yet. CQ run can only be started by full ...
4 years, 3 months ago (2016-08-31 21:51:13 UTC) #6
Stephen White
4 years, 3 months ago (2016-08-31 22:00:41 UTC) #8
Message was sent while issue was closed.
Committed patchset #1 (id:1) manually as
df20db6b63fb755924ee7540b9b4e0671ebe550b.

Powered by Google App Engine
This is Rietveld 408576698