RESOLVED FIXED 119772
[Windows] Windows is incorrectly using a LayerTypeTiledBackingLayer
https://bugs.webkit.org/show_bug.cgi?id=119772
Summary [Windows] Windows is incorrectly using a LayerTypeTiledBackingLayer
Brent Fulgham
Reported 2013-08-13 15:01:13 PDT
Windows needs to use tiled layers when rendering elements grow beyond a certain size. However, Windows only knows how to work with LayerTypeWebTiledLayer. Code changes in the CoreGraphics/CoreAnimation logic caused Windows to be given a LayerTypeTiledBackingLayer layer type, which it could not construct. Consequently, rendering of certain large content (specifically captions in full screen mode) were not being drawn. The fix is to protect Windows from being asked to use a LayerTypeTiledBackingLayer (or LayerTypePageTiledBackingLayer), and instead use the LayerTypeWebTiledLayer type.
Attachments
Patch (2.73 KB, patch)
2013-08-13 15:05 PDT, Brent Fulgham
simon.fraser: review+
Brent Fulgham
Comment 1 2013-08-13 15:05:06 PDT
Simon Fraser (smfr)
Comment 2 2013-08-13 15:29:20 PDT
Comment on attachment 208681 [details] Patch r+ but it would be nice to re-enable the tests that should have caught this failure.
Brent Fulgham
Comment 3 2013-08-13 16:31:26 PDT
rfong and I have a separate task to clean up the various skipped tests on Windows. The tiling tests will get picked up as part of that.
Brent Fulgham
Comment 4 2013-08-13 16:35:50 PDT
Darin Adler
Comment 5 2013-08-14 10:22:50 PDT
Comment on attachment 208681 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=208681&action=review > Source/WebCore/platform/graphics/ca/win/PlatformCALayerWin.cpp:119 > + ASSERT((layerType != LayerTypeTiledBackingLayer) && (layerType != LayerTypePageTiledBackingLayer)); These should be two separate assertions. That way you can tell, if the assertion fires, which bad layer type you are dealing with.
Eric Carlson
Comment 6 2013-08-14 11:53:44 PDT
Comment on attachment 208681 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=208681&action=review > Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:2689 > +#if PLATFORM(WIN) > + PlatformCALayer::LayerType layerType = useTiledLayer ? PlatformCALayer::LayerTypeWebTiledLayer : PlatformCALayer::LayerTypeWebLayer; > +#else > + PlatformCALayer::LayerType layerType = useTiledLayer ? PlatformCALayer::LayerTypeTiledBackingLayer : PlatformCALayer::LayerTypeWebLayer; > +#endif > + > + m_layer = PlatformCALayer::create(layerType, this); Finding this would have been much easier if we had an ASSERT() when PlatformCALayer::create() fails (or a Log() it happens frequently).
Note You need to log in before you can comment on or make changes to this bug.