RESOLVED FIXED88906
Tiled drawing means some elements can disappear behind the page
https://bugs.webkit.org/show_bug.cgi?id=88906
Summary Tiled drawing means some elements can disappear behind the page
Dean Jackson
Reported 2012-06-12 13:28:32 PDT
When tiled drawing (TileCache) is enabled on a page, and the page has preserve-3d, then elements can potentially disappear behind the tiles.
Attachments
Test case (424 bytes, text/html)
2012-06-12 13:39 PDT, Dean Jackson
no flags
Patch (9.63 KB, patch)
2012-06-14 17:10 PDT, Dean Jackson
no flags
Patch (17.34 KB, patch)
2012-07-06 15:42 PDT, Dean Jackson
no flags
Patch (16.77 KB, patch)
2012-07-08 17:04 PDT, Dean Jackson
simon.fraser: review+
Dean Jackson
Comment 1 2012-06-12 13:29:51 PDT
Radar WebKit Bug Importer
Comment 2 2012-06-12 13:30:52 PDT
Dean Jackson
Comment 3 2012-06-12 13:39:06 PDT
Created attachment 147146 [details] Test case
Dean Jackson
Comment 4 2012-06-14 17:10:51 PDT
Dean Jackson
Comment 5 2012-07-06 15:42:13 PDT
Simon Fraser (smfr)
Comment 6 2012-07-06 15:52:46 PDT
Comment on attachment 151121 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=151121&action=review > Source/WebCore/platform/graphics/ca/mac/TileCache.mm:67 > + [m_tileContainerLayer.get() setName:@"TileCache Container Layer"]; We normally only set layer names in debug. > Source/WebCore/rendering/RenderLayerBacking.cpp:145 > + m_creatingPrimaryGraphicsLayer = true; I think m_creatingPrimaryGraphicsLayer could just be a static. > Source/WebCore/rendering/RenderLayerBacking.cpp:176 > + m_graphicsLayer = createGraphicsLayer(layerName, true); Not a big fan of the 'true' here. > Source/WebCore/rendering/RenderLayerBacking.cpp:570 > + if (m_containmentLayer && !m_usingTiledCacheLayer) { I think the m_containmentLayer && !m_usingTiledCacheLayer thing everywhere is confusing. Maybe add: GraphicsLayer* tileCacheFlatteningLayer() const { return m_usingTiledCacheLayer ? m_containmentLayer : 0; } GraphicsLayer* clippingLayer() const { return !m_usingTiledCacheLayer ? m_containmentLayer : 0; } and use them like: if (GraphicsLayer* clippingLayer = clippingLayer()) clippingLayer->....
Dean Jackson
Comment 7 2012-07-08 16:54:23 PDT
(In reply to comment #6) > (From update of attachment 151121 [details]) > View in context: https://bugs.webkit.org/attachment.cgi?id=151121&action=review > > > Source/WebCore/platform/graphics/ca/mac/TileCache.mm:67 > > + [m_tileContainerLayer.get() setName:@"TileCache Container Layer"]; > > We normally only set layer names in debug. Done. > > > Source/WebCore/rendering/RenderLayerBacking.cpp:145 > > + m_creatingPrimaryGraphicsLayer = true; > > I think m_creatingPrimaryGraphicsLayer could just be a static. Done. > > > Source/WebCore/rendering/RenderLayerBacking.cpp:176 > > + m_graphicsLayer = createGraphicsLayer(layerName, true); > > Not a big fan of the 'true' here. I removed the default parameter, and had createPrimaryGraphicsLayer just wrap its call to createGraphicsLayer in the yucky setting of the static bool. > > Source/WebCore/rendering/RenderLayerBacking.cpp:570 > > + if (m_containmentLayer && !m_usingTiledCacheLayer) { > > I think the m_containmentLayer && !m_usingTiledCacheLayer thing everywhere is confusing. > > ... I did this where I could. There are still come cases where we need to check m_usingTileCacheLayer directly, such as when we create the layers, but it's better now.
Dean Jackson
Comment 8 2012-07-08 17:04:18 PDT
Simon Fraser (smfr)
Comment 9 2012-07-09 10:30:15 PDT
Comment on attachment 151167 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=151167&action=review > Source/WebCore/ChangeLog:11 > + some 3d transforms, the elements could disappear behind the > + page background (which is rendered into the tile cache). Fix ... and could intersect with the tile cache tiles.
Dean Jackson
Comment 10 2012-07-09 13:39:27 PDT
Note You need to log in before you can comment on or make changes to this bug.