Changeset 244612 in webkit


Ignore:
Timestamp:
Apr 24, 2019 2:26:52 PM (5 years ago)
Author:
Simon Fraser
Message:

REGRESSION (iOS 12.2): CSS perspective property value can only be set correctly once
https://bugs.webkit.org/show_bug.cgi?id=197105
Source/WebCore:

rdar://problem/50068230

Reviewed by Zalan Bujtas.

Make sure we trigger a geometry update when style properties change that
result in a StyleDifference::RecompositeLayer, and which are updated on layers
via RenderLayerBacking::updateGeometry().

Tests: compositing/style-change/backface-visibility-change.html

compositing/style-change/perspective-change.html
compositing/style-change/perspective-origin-change.html
compositing/style-change/transform-origin-change.html
compositing/style-change/transform-style-change.html

  • rendering/RenderLayerCompositor.cpp:

(WebCore::recompositeChangeRequiresGeometryUpdate):
(WebCore::RenderLayerCompositor::layerStyleChanged):

LayoutTests:

Reviewed by Zalan Bujtas.

  • compositing/style-change/backface-visibility-change-expected.html: Added.
  • compositing/style-change/backface-visibility-change.html: Added.
  • compositing/style-change/perspective-change-expected.html: Added.
  • compositing/style-change/perspective-change.html: Added.
  • compositing/style-change/perspective-origin-change-expected.html: Added.
  • compositing/style-change/perspective-origin-change.html: Added.
  • compositing/style-change/transform-origin-change-expected.html: Added.
  • compositing/style-change/transform-origin-change.html: Added.
  • compositing/style-change/transform-style-change-expected.html: Added.
  • compositing/style-change/transform-style-change.html: Added.
Location:
trunk
Files:
11 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r244599 r244612  
     12019-04-24  Simon Fraser  <simon.fraser@apple.com>
     2
     3        REGRESSION (iOS 12.2): CSS perspective property value can only be set correctly once
     4        https://bugs.webkit.org/show_bug.cgi?id=197105
     5
     6        Reviewed by Zalan Bujtas.
     7
     8        * compositing/style-change/backface-visibility-change-expected.html: Added.
     9        * compositing/style-change/backface-visibility-change.html: Added.
     10        * compositing/style-change/perspective-change-expected.html: Added.
     11        * compositing/style-change/perspective-change.html: Added.
     12        * compositing/style-change/perspective-origin-change-expected.html: Added.
     13        * compositing/style-change/perspective-origin-change.html: Added.
     14        * compositing/style-change/transform-origin-change-expected.html: Added.
     15        * compositing/style-change/transform-origin-change.html: Added.
     16        * compositing/style-change/transform-style-change-expected.html: Added.
     17        * compositing/style-change/transform-style-change.html: Added.
     18
    1192019-04-24  Simon Fraser  <simon.fraser@apple.com>
    220
  • trunk/Source/WebCore/ChangeLog

    r244599 r244612  
     12019-04-24  Simon Fraser  <simon.fraser@apple.com>
     2
     3        REGRESSION (iOS 12.2): CSS perspective property value can only be set correctly once
     4        https://bugs.webkit.org/show_bug.cgi?id=197105
     5        rdar://problem/50068230
     6
     7        Reviewed by Zalan Bujtas.
     8
     9        Make sure we trigger a geometry update when style properties change that
     10        result in a StyleDifference::RecompositeLayer, and which are updated on layers
     11        via RenderLayerBacking::updateGeometry().
     12
     13        Tests: compositing/style-change/backface-visibility-change.html
     14               compositing/style-change/perspective-change.html
     15               compositing/style-change/perspective-origin-change.html
     16               compositing/style-change/transform-origin-change.html
     17               compositing/style-change/transform-style-change.html
     18
     19        * rendering/RenderLayerCompositor.cpp:
     20        (WebCore::recompositeChangeRequiresGeometryUpdate):
     21        (WebCore::RenderLayerCompositor::layerStyleChanged):
     22
    1232019-04-24  Simon Fraser  <simon.fraser@apple.com>
    224
  • trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp

    r244440 r244612  
    14151415}
    14161416
     1417static bool recompositeChangeRequiresGeometryUpdate(const RenderStyle& oldStyle, const RenderStyle& newStyle)
     1418{
     1419    return oldStyle.transform() != newStyle.transform()
     1420        || oldStyle.transformOriginX() != newStyle.transformOriginX()
     1421        || oldStyle.transformOriginY() != newStyle.transformOriginY()
     1422        || oldStyle.transformOriginZ() != newStyle.transformOriginZ()
     1423        || oldStyle.transformStyle3D() != newStyle.transformStyle3D()
     1424        || oldStyle.perspective() != newStyle.perspective()
     1425        || oldStyle.perspectiveOriginX() != newStyle.perspectiveOriginX()
     1426        || oldStyle.perspectiveOriginY() != newStyle.perspectiveOriginY()
     1427        || oldStyle.backfaceVisibility() != newStyle.backfaceVisibility();
     1428}
     1429
    14171430void RenderLayerCompositor::layerStyleChanged(StyleDifference diff, RenderLayer& layer, const RenderStyle* oldStyle)
    14181431{
     
    14681481        layer.setNeedsCompositingConfigurationUpdate();
    14691482
    1470     if (diff >= StyleDifference::RecompositeLayer && oldStyle) {
    1471         if (oldStyle->transform() != newStyle.transform()) {
    1472             // FIXME: transform changes really need to trigger layout. See RenderElement::adjustStyleDifference().
    1473             layer.setNeedsPostLayoutCompositingUpdate();
    1474             layer.setNeedsCompositingGeometryUpdate();
    1475         }
     1483    if (diff >= StyleDifference::RecompositeLayer && oldStyle && recompositeChangeRequiresGeometryUpdate(*oldStyle, newStyle)) {
     1484        // FIXME: transform changes really need to trigger layout. See RenderElement::adjustStyleDifference().
     1485        layer.setNeedsPostLayoutCompositingUpdate();
     1486        layer.setNeedsCompositingGeometryUpdate();
    14761487    }
    14771488
Note: See TracChangeset for help on using the changeset viewer.