Changeset 167582 in webkit


Ignore:
Timestamp:
Apr 20, 2014 10:21:45 PM (10 years ago)
Author:
Alan Bujtas
Message:

Subpixel rendering: RenderLayer's size is set using enclosingRect() which can result in cruft.
https://bugs.webkit.org/show_bug.cgi?id=131468

Reviewed by Darin Adler.

Layers marked opaque may not paint edge pixels, when RenderLayer bounds are non-integral and
get device pixel snapped.
For details see this: https://trac.webkit.org/r159463

Source/WebCore:
Test: compositing/hidpi-non-simple-compositing-layer-with-fractional-size-and-background.html

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::updateGraphicsLayerGeometry):

LayoutTests:

  • compositing/hidpi-non-simple-compositing-layer-with-fractional-size-and-background-expected.html: Added.
  • compositing/hidpi-non-simple-compositing-layer-with-fractional-size-and-background.html: Added.
Location:
trunk
Files:
2 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r167580 r167582  
     12014-04-20  Zalan Bujtas  <zalan@apple.com>
     2
     3        Subpixel rendering: RenderLayer's size is set using enclosingRect() which can result in cruft.
     4        https://bugs.webkit.org/show_bug.cgi?id=131468
     5
     6        Reviewed by Darin Adler.
     7
     8        Layers marked opaque may not paint edge pixels, when RenderLayer bounds are non-integral and
     9        get device pixel snapped.
     10        For details see this: https://trac.webkit.org/r159463
     11
     12        * compositing/hidpi-non-simple-compositing-layer-with-fractional-size-and-background-expected.html: Added.
     13        * compositing/hidpi-non-simple-compositing-layer-with-fractional-size-and-background.html: Added.
     14
    1152014-04-19  Darin Adler  <darin@apple.com>
    216
  • trunk/Source/WebCore/ChangeLog

    r167581 r167582  
     12014-04-20  Zalan Bujtas  <zalan@apple.com>
     2
     3        Subpixel rendering: RenderLayer's size is set using enclosingRect() which can result in cruft.
     4        https://bugs.webkit.org/show_bug.cgi?id=131468
     5
     6        Reviewed by Darin Adler.
     7
     8        Layers marked opaque may not paint edge pixels, when RenderLayer bounds are non-integral and
     9        get device pixel snapped.
     10        For details see this: https://trac.webkit.org/r159463
     11
     12        Test: compositing/hidpi-non-simple-compositing-layer-with-fractional-size-and-background.html
     13
     14        * rendering/RenderLayerBacking.cpp:
     15        (WebCore::RenderLayerBacking::updateGraphicsLayerGeometry):
     16
    1172014-04-19  Darin Adler  <darin@apple.com>
    218
  • trunk/Source/WebCore/rendering/RenderLayerBacking.cpp

    r167529 r167582  
    713713
    714714    /*
    715     * GraphicsLayer: device pixel positioned. Floored, enclosing rect.
     715    * GraphicsLayer: device pixel positioned, enclosing rect.
    716716    * RenderLayer: subpixel positioned.
    717717    * Offset from renderer (GraphicsLayer <-> RenderLayer::renderer()): subpixel based offset.
     
    731731    * localCompositingBounds: this RenderLayer relative to its renderer().
    732732    * relativeCompositingBounds: this RenderLayer relative to its parent compositing layer.
    733     * enclosingRelativeCompositingBounds: this RenderLayer relative to its parent but floored to device pixel position.
     733    * enclosingRelativeCompositingBounds: this RenderLayer relative to its parent, device pixel enclosing.
    734734    * rendererOffsetFromGraphicsLayer: RenderLayer::renderer()'s offset from its enclosing GraphicsLayer.
    735735    * devicePixelOffsetFromRenderer: rendererOffsetFromGraphicsLayer's device pixel part. (6.9px -> 6.5px in case of 2x display)
     
    824824        // For non-root layers, background is always painted by the primary graphics layer.
    825825        ASSERT(!m_backgroundLayer);
    826         bool hadSubpixelRounding = !m_devicePixelFractionFromRenderer.isZero();
     826        bool hadSubpixelRounding = enclosingRelativeCompositingBounds != relativeCompositingBounds;
    827827        m_graphicsLayer->setContentsOpaque(!hadSubpixelRounding && m_owningLayer.backgroundIsKnownToBeOpaqueInRect(localCompositingBounds));
    828828    }
Note: See TracChangeset for help on using the changeset viewer.