Changeset 245207 in webkit
- Timestamp:
- May 11, 2019 3:05:37 PM (5 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r245206 r245207 1 2019-05-11 Simon Fraser <simon.fraser@apple.com> 2 3 Translucent gradient rendering bug due to will-change transform 4 https://bugs.webkit.org/show_bug.cgi?id=197654 5 <rdar://problem/50547664> 6 7 Reviewed by Dean Jackson. 8 9 * compositing/contents-opaque/background-change-to-transparent-expected.txt: Added. 10 * compositing/contents-opaque/background-change-to-transparent.html: Added. 11 1 12 2019-05-11 Simon Fraser <simon.fraser@apple.com> 2 13 -
trunk/Source/WebCore/ChangeLog
r245206 r245207 1 2019-05-11 Simon Fraser <simon.fraser@apple.com> 2 3 Translucent gradient rendering bug due to will-change transform 4 https://bugs.webkit.org/show_bug.cgi?id=197654 5 <rdar://problem/50547664> 6 7 Reviewed by Dean Jackson. 8 9 We failed to re-evaluate 'contentsOpaque' when a background changed, because this 10 happened in updateGeometry() and that doesn't run for background changes. 11 12 However, 'contentsOpaque' also requires knowing about geometry because we have to 13 turn it off when there's subpixel positioning, and updateConfiguration() 14 runs before updateGeometry(). 15 16 So compute m_hasSubpixelRounding in updateGeometry() and set contentsOpaque in 17 updateAfterDescendants(). 18 19 Test: compositing/contents-opaque/background-change-to-transparent.html 20 21 * rendering/RenderLayerBacking.cpp: 22 (WebCore::RenderLayerBacking::updateConfiguration): 23 (WebCore::RenderLayerBacking::updateGeometry): 24 (WebCore::RenderLayerBacking::updateAfterDescendants): 25 * rendering/RenderLayerBacking.h: 26 1 27 2019-05-11 Simon Fraser <simon.fraser@apple.com> 2 28 -
trunk/Source/WebCore/rendering/RenderLayerBacking.cpp
r245205 r245207 820 820 821 821 updateEventRegion(); 822 822 823 823 // Requires layout. 824 824 if (contentsInfo.isDirectlyCompositedImage()) … … 1113 1113 primaryGraphicsLayerOffsetFromRenderer = computeOffsetFromRenderer(-rendererOffset.fromPrimaryGraphicsLayer(), deviceScaleFactor()); 1114 1114 m_subpixelOffsetFromRenderer = primaryGraphicsLayerOffsetFromRenderer.m_subpixelOffset; 1115 m_hasSubpixelRounding = !m_subpixelOffsetFromRenderer.isZero() || compositedBounds().size() != primaryGraphicsLayerRect.size(); 1115 1116 1116 1117 if (primaryGraphicsLayerOffsetFromRenderer.m_devicePixelOffset != m_graphicsLayer->offsetFromRenderer()) { 1117 1118 m_graphicsLayer->setOffsetFromRenderer(primaryGraphicsLayerOffsetFromRenderer.m_devicePixelOffset); 1118 1119 positionOverflowControlsLayers(); 1119 }1120 1121 if (!m_isMainFrameRenderViewLayer && !m_isFrameLayerWithTiledBacking && !m_requiresBackgroundLayer) {1122 // For non-root layers, background is always painted by the primary graphics layer.1123 ASSERT(!m_backgroundLayer);1124 // Subpixel offset from graphics layer or size changed.1125 bool hadSubpixelRounding = !m_subpixelOffsetFromRenderer.isZero() || compositedBounds().size() != primaryGraphicsLayerRect.size();1126 m_graphicsLayer->setContentsOpaque(!hadSubpixelRounding && m_owningLayer.backgroundIsKnownToBeOpaqueInRect(compositedBounds()));1127 1120 } 1128 1121 … … 1326 1319 1327 1320 updateDrawsContent(contentsInfo); 1321 1322 if (!m_isMainFrameRenderViewLayer && !m_isFrameLayerWithTiledBacking && !m_requiresBackgroundLayer) { 1323 // For non-root layers, background is always painted by the primary graphics layer. 1324 ASSERT(!m_backgroundLayer); 1325 m_graphicsLayer->setContentsOpaque(!m_hasSubpixelRounding && m_owningLayer.backgroundIsKnownToBeOpaqueInRect(compositedBounds())); 1326 } 1328 1327 1329 1328 m_graphicsLayer->setContentsVisible(m_owningLayer.hasVisibleContent() || hasVisibleNonCompositedDescendants()); -
trunk/Source/WebCore/rendering/RenderLayerBacking.h
r245170 r245207 435 435 bool m_backgroundLayerPaintsFixedRootBackground { false }; 436 436 bool m_requiresBackgroundLayer { false }; 437 bool m_hasSubpixelRounding { false }; 437 438 bool m_paintsSubpixelAntialiasedText { false }; // This is for logging only. 438 439 };
Note: See TracChangeset
for help on using the changeset viewer.