Changeset 269599 in webkit


Ignore:
Timestamp:
Nov 9, 2020 1:28:52 PM (3 years ago)
Author:
Fujii Hironori
Message:

[TextureMapper] backdrop-filter should use the identity transform to render the root layer
https://bugs.webkit.org/show_bug.cgi?id=218699

Reviewed by Don Olmstead.

Source/WebCore:

Even thouth CSS reflections mirror the content, backdrop-filter in
the reflection doesn't. It sees through the background.
css3/filters/backdrop/backdrop-filter-with-reflection.html is the
test case.

  • platform/graphics/texmap/TextureMapperLayer.cpp:

(WebCore::TextureMapperLayer::paintSelfAndChildrenWithReplica):
(WebCore::TextureMapperLayer::paintIntoSurface):
(WebCore::TextureMapperLayer::paintWithIntermediateSurface):
Removed TextureMapperPaintOptions::isReplica.

LayoutTests:

  • platform/glib/TestExpectations: Unmarked

css3/filters/backdrop/{backdrop-filter-with-reflection-add-backdrop.html,
backdrop-filter-with-reflection-value-change.html,backdrop-filter-with-reflection.html}

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r269594 r269599  
     12020-11-09  Fujii Hironori  <Hironori.Fujii@sony.com>
     2
     3        [TextureMapper] backdrop-filter should use the identity transform to render the root layer
     4        https://bugs.webkit.org/show_bug.cgi?id=218699
     5
     6        Reviewed by Don Olmstead.
     7
     8        * platform/glib/TestExpectations: Unmarked
     9        css3/filters/backdrop/{backdrop-filter-with-reflection-add-backdrop.html,
     10        backdrop-filter-with-reflection-value-change.html,backdrop-filter-with-reflection.html}
     11
    1122020-11-09  Aditya Keerthi  <akeerthi@apple.com>
    213
  • trunk/LayoutTests/platform/glib/TestExpectations

    r269578 r269599  
    279279webkit.org/b/169988 css3/filters/backdrop/backdrop-filter-with-border-radius-value-change.html [ ImageOnlyFailure ]
    280280webkit.org/b/169988 css3/filters/backdrop/backdrop-filter-with-border-radius.html [ ImageOnlyFailure ]
    281 webkit.org/b/169988 css3/filters/backdrop/backdrop-filter-with-reflection-add-backdrop.html [ ImageOnlyFailure ]
    282 webkit.org/b/169988 css3/filters/backdrop/backdrop-filter-with-reflection-value-change.html [ ImageOnlyFailure ]
    283 webkit.org/b/169988 css3/filters/backdrop/backdrop-filter-with-reflection.html [ ImageOnlyFailure ]
    284281webkit.org/b/169988 css3/filters/backdrop/effect-hw.html [ ImageOnlyFailure ]
    285282
  • trunk/Source/WebCore/ChangeLog

    r269593 r269599  
     12020-11-09  Fujii Hironori  <Hironori.Fujii@sony.com>
     2
     3        [TextureMapper] backdrop-filter should use the identity transform to render the root layer
     4        https://bugs.webkit.org/show_bug.cgi?id=218699
     5
     6        Reviewed by Don Olmstead.
     7
     8        Even thouth CSS reflections mirror the content, backdrop-filter in
     9        the reflection doesn't. It sees through the background.
     10        css3/filters/backdrop/backdrop-filter-with-reflection.html is the
     11        test case.
     12
     13        * platform/graphics/texmap/TextureMapperLayer.cpp:
     14        (WebCore::TextureMapperLayer::paintSelfAndChildrenWithReplica):
     15        (WebCore::TextureMapperLayer::paintIntoSurface):
     16        (WebCore::TextureMapperLayer::paintWithIntermediateSurface):
     17        Removed TextureMapperPaintOptions::isReplica.
     18
    1192020-11-09  Per Arne Vollan  <pvollan@apple.com>
    220
  • trunk/Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp

    r269588 r269599  
    4040    IntSize offset;
    4141    TextureMapperLayer* backdropLayer { nullptr };
    42     bool isReplica { false };
    4342};
    4443
     
    300299    if (m_state.replicaLayer) {
    301300        TextureMapperPaintOptions replicaOptions(options);
    302         replicaOptions.isReplica = true;
    303         replicaOptions.transform
    304             .multiply(m_state.replicaLayer->m_layerTransforms.combined)
    305             .multiply(m_layerTransforms.combined.inverse().valueOr(TransformationMatrix()));
     301        replicaOptions.transform.multiply(replicaTransform());
    306302        paintSelfAndChildren(replicaOptions);
    307303    }
     
    438434    if (m_isBackdrop) {
    439435        TextureMapperPaintOptions paintOptions(options);
     436        paintOptions.transform = TransformationMatrix();
    440437        paintOptions.backdropLayer = this;
    441438        rootLayer().paintSelfAndChildren(paintOptions);
     
    463460    paintOptions.opacity = 1;
    464461    if (m_state.replicaLayer) {
    465         paintOptions.isReplica = true;
    466462        paintOptions.transform.multiply(replicaTransform());
    467463        paintIntoSurface(paintOptions);
    468         paintOptions.isReplica = false;
    469464        paintOptions.transform = options.transform;
    470465        if (m_state.replicaLayer->m_state.maskLayer)
    471466            m_state.replicaLayer->m_state.maskLayer->applyMask(paintOptions);
    472467    }
    473 
    474     if (m_isBackdrop && m_effectTarget->m_state.replicaLayer && options.isReplica)
    475         paintOptions.transform = m_effectTarget->replicaTransform();
    476468
    477469    paintIntoSurface(paintOptions);
Note: See TracChangeset for help on using the changeset viewer.