Changeset 205999 in webkit


Ignore:
Timestamp:
Sep 15, 2016 3:13:11 PM (8 years ago)
Author:
Alan Bujtas
Message:

ASSERTION FAILED: willBeComposited == needsToBeComposited(layer) in WebCore::RenderLayerCompositor::computeCompositingRequirements
https://bugs.webkit.org/show_bug.cgi?id=151097
<rdar://problem/27711678>

Reviewed by Simon Fraser.

Source/WebCore:

This patch ensures that when will-change property triggers stacking context, we make the associated layer a non-normal flow layer.
(This is similar to what any other stacking context-triggering CSS property does.)

Test: compositing/assert-on-will-change-transform-with-composited-descendant.html

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::calculateClipRects):

LayoutTests:

  • compositing/assert-on-will-change-transform-with-composited-descendant-expected.txt: Added.
  • compositing/assert-on-will-change-transform-with-composited-descendant.html: Added.
Location:
trunk
Files:
2 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r205996 r205999  
     12016-09-15  Zalan Bujtas  <zalan@apple.com>
     2
     3        ASSERTION FAILED: willBeComposited == needsToBeComposited(layer) in WebCore::RenderLayerCompositor::computeCompositingRequirements
     4        https://bugs.webkit.org/show_bug.cgi?id=151097
     5        <rdar://problem/27711678>
     6
     7        Reviewed by Simon Fraser.
     8
     9        * compositing/assert-on-will-change-transform-with-composited-descendant-expected.txt: Added.
     10        * compositing/assert-on-will-change-transform-with-composited-descendant.html: Added.
     11
    1122016-09-15  Ryan Haddad  <ryanhaddad@apple.com>
    213
  • trunk/Source/WebCore/ChangeLog

    r205997 r205999  
     12016-09-15  Zalan Bujtas  <zalan@apple.com>
     2
     3        ASSERTION FAILED: willBeComposited == needsToBeComposited(layer) in WebCore::RenderLayerCompositor::computeCompositingRequirements
     4        https://bugs.webkit.org/show_bug.cgi?id=151097
     5        <rdar://problem/27711678>
     6
     7        Reviewed by Simon Fraser.
     8
     9        This patch ensures that when will-change property triggers stacking context, we make the associated layer a non-normal flow layer.
     10        (This is similar to what any other stacking context-triggering CSS property does.) 
     11
     12        Test: compositing/assert-on-will-change-transform-with-composited-descendant.html
     13
     14        * rendering/RenderLayer.cpp:
     15        (WebCore::RenderLayer::calculateClipRects):
     16
    1172016-09-15  Zalan Bujtas  <zalan@apple.com>
    218
  • trunk/Source/WebCore/rendering/RenderLayer.cpp

    r205970 r205999  
    64656465}
    64666466
    6467 static bool mayCreateGraphicalGroup(const RenderElement& renderer)
    6468 {
    6469     bool createsGraphicalGroup = renderer.hasClipPath()
     6467static bool createsStackingContext(const RenderLayer& layer)
     6468{
     6469    auto& renderer = layer.renderer();
     6470    return renderer.hasTransformRelatedProperty()
     6471        || renderer.hasClipPath()
    64706472        || renderer.hasFilter()
     6473        || renderer.hasMask()
    64716474        || renderer.hasBackdropFilter()
    64726475#if ENABLE(CSS_COMPOSITING)
     
    64746477#endif
    64756478        || renderer.isTransparent()
    6476         || renderer.hasMask();
    6477     return createsGraphicalGroup || (renderer.style().willChange() && renderer.style().willChange()->canCreateGraphicalGroup());
    6478 }
    6479 
    6480 static bool createsStackingContext(const RenderLayer& layer)
    6481 {
    6482     auto& renderer = layer.renderer();
    6483     return renderer.hasTransformRelatedProperty()
    64846479        || renderer.isPositioned()
    6485         || layer.needsCompositedScrolling()
    64866480        || renderer.style().hasFlowFrom()
    64876481        || renderer.hasReflection()
    64886482        || renderer.style().hasIsolation()
     6483        || layer.needsCompositedScrolling()
    64896484#if PLATFORM(IOS)
    64906485        || layer.hasAcceleratedTouchScrolling()
    64916486#endif
    6492         // FIXME: Check if willChange()->canCreateStackingContext() is more accurate here.
    6493         || mayCreateGraphicalGroup(renderer);
     6487        || (renderer.style().willChange() && renderer.style().willChange()->canCreateStackingContext());
    64946488}
    64956489
  • trunk/Source/WebCore/rendering/style/WillChangeData.cpp

    r205277 r205999  
    100100}
    101101
    102 static bool propertyCreatesGraphicalGroup(CSSPropertyID property)
    103 {
    104     switch (property) {
    105     case CSSPropertyClipPath:
    106     case CSSPropertyWebkitClipPath:
    107     case CSSPropertyMask:
    108     case CSSPropertyOpacity:
    109 #if ENABLE(CSS_COMPOSITING)
    110     case CSSPropertyMixBlendMode:
    111     case CSSPropertyIsolation:
    112 #endif
    113     case CSSPropertyFilter:
    114 #if ENABLE(FILTERS_LEVEL_2)
    115     case CSSPropertyWebkitBackdropFilter:
    116 #endif
    117     case CSSPropertyWebkitMask:
    118     case CSSPropertyWebkitMaskImage:
    119     case CSSPropertyWebkitMaskBoxImage:
    120         return true;
    121     default:
    122         return false;
    123     }
    124 }
    125 
    126102static bool propertyTriggersCompositing(CSSPropertyID property)
    127103{
     
    162138    m_canTriggerCompositingOnInline |= propertyTriggersCompositing(propertyID);
    163139    m_canTriggerCompositing |= m_canTriggerCompositingOnInline | propertyTriggersCompositingOnBoxesOnly(propertyID);
    164 
    165     m_canCreateGraphicalGroup |= propertyCreatesGraphicalGroup(propertyID);
    166140}
    167141
  • trunk/Source/WebCore/rendering/style/WillChangeData.h

    r205277 r205999  
    5858    bool canTriggerCompositing() const { return m_canTriggerCompositing; }
    5959    bool canTriggerCompositingOnInline() const { return m_canTriggerCompositingOnInline; }
    60     bool canCreateGraphicalGroup() const { return m_canCreateGraphicalGroup; }
    6160
    6261    enum Feature {
     
    126125    bool m_canTriggerCompositing { false };
    127126    bool m_canTriggerCompositingOnInline { false };
    128     bool m_canCreateGraphicalGroup { false };
    129127};
    130128
Note: See TracChangeset for help on using the changeset viewer.