Changeset 245471 in webkit


Ignore:
Timestamp:
May 17, 2019 11:28:34 AM (5 years ago)
Author:
Simon Fraser
Message:

REGRESSION (r245170): gmail.com header flickers when hovering over the animating buttons
https://bugs.webkit.org/show_bug.cgi?id=197975
<rdar://problem/50865946>

Reviewed by Antti Koivisto.

Source/WebCore:

When computeCompositingRequirements() determined that a layer could paint into shared backing, it
pushed an overlap container. If that layer then converted to normal composting, we'd push a second
overlap container, which left the overlap map in a bad state for the rest of the compositing
traversal, causing layers to not get composited when necessary.

Test: compositing/shared-backing/overlap-after-shared-to-composited.html

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::computeCompositingRequirements):

LayoutTests:

  • compositing/shared-backing/overlap-after-shared-to-composited-expected.html: Added.
  • compositing/shared-backing/overlap-after-shared-to-composited.html: Added.
Location:
trunk
Files:
2 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r245469 r245471  
     12019-05-17  Simon Fraser  <simon.fraser@apple.com>
     2
     3        REGRESSION (r245170): gmail.com header flickers when hovering over the animating buttons
     4        https://bugs.webkit.org/show_bug.cgi?id=197975
     5        <rdar://problem/50865946>
     6
     7        Reviewed by Antti Koivisto.
     8
     9        * compositing/shared-backing/overlap-after-shared-to-composited-expected.html: Added.
     10        * compositing/shared-backing/overlap-after-shared-to-composited.html: Added.
     11
    1122019-05-16  Said Abou-Hallawa  <sabouhallawa@apple.com>
    213
  • trunk/Source/WebCore/ChangeLog

    r245470 r245471  
     12019-05-17  Simon Fraser  <simon.fraser@apple.com>
     2
     3        REGRESSION (r245170): gmail.com header flickers when hovering over the animating buttons
     4        https://bugs.webkit.org/show_bug.cgi?id=197975
     5        <rdar://problem/50865946>
     6
     7        Reviewed by Antti Koivisto.
     8
     9        When computeCompositingRequirements() determined that a layer could paint into shared backing, it
     10        pushed an overlap container. If that layer then converted to normal composting, we'd push a second
     11        overlap container, which left the overlap map in a bad state for the rest of the compositing
     12        traversal, causing layers to not get composited when necessary.
     13
     14        Test: compositing/shared-backing/overlap-after-shared-to-composited.html
     15
     16        * rendering/RenderLayerCompositor.cpp:
     17        (WebCore::RenderLayerCompositor::computeCompositingRequirements):
     18
    1192019-05-17  Commit Queue  <commit-queue@webkit.org>
    220
  • trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp

    r245375 r245471  
    911911
    912912    // Check if the computed indirect reason will force the layer to become composited.
    913     if (!willBeComposited && layer.mustCompositeForIndirectReasons() && canBeComposited(layer))
     913    if (!willBeComposited && layer.mustCompositeForIndirectReasons() && canBeComposited(layer)) {
    914914        willBeComposited = true;
     915        layerPaintsIntoProvidedBacking = false;
     916    }
    915917
    916918    // The children of this layer don't need to composite, unless there is
     
    925927        // This layer now acts as the ancestor for kids.
    926928        currentState.compositingAncestor = &layer;
    927         overlapMap.pushCompositingContainer();
    928         LOG_WITH_STREAM(CompositingOverlap, stream << "layer " << &layer << " will composite, pushed container " << overlapMap);
     929       
     930        if (!layerPaintsIntoProvidedBacking) {
     931            overlapMap.pushCompositingContainer();
     932            LOG_WITH_STREAM(CompositingOverlap, stream << "layer " << &layer << " will composite, pushed container " << overlapMap);
     933        }
    929934
    930935        willBeComposited = true;
Note: See TracChangeset for help on using the changeset viewer.