Changeset 224078 in webkit
- Timestamp:
- Oct 26, 2017, 6:57:42 PM (7 years ago)
- Location:
- trunk
- Files:
-
- 3 added
- 17 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r224073 r224078 1 2017-10-25 Simon Fraser <simon.fraser@apple.com> 2 3 When navigating back to a page, compositing layers may not use accelerated drawing 4 https://bugs.webkit.org/show_bug.cgi?id=178749 5 rdar://problem/35158946 6 7 Reviewed by Dean Jackson. 8 9 Moved iframes/resources/page-cache-helper.html up to compositing/resources/go-back.html. 10 11 * compositing/accelerated-layers-after-back-expected.txt: Added. 12 * compositing/accelerated-layers-after-back.html: Added. 13 * compositing/iframes/page-cache-layer-tree.html: 14 * compositing/page-cache-back-crash.html: 15 * compositing/resources/go-back.html: Renamed from LayoutTests/compositing/iframes/resources/page-cache-helper.html. 16 * platform/ios/compositing/accelerated-layers-after-back-expected.txt: Added. 17 1 18 2017-10-26 Myles C. Maxfield <mmaxfield@apple.com> 2 19 -
trunk/LayoutTests/compositing/iframes/page-cache-layer-tree.html
r224032 r224078 74 74 window.addEventListener("load", function(event) { 75 75 setTimeout(function() { 76 window.location.href = " resources/page-cache-helper.html";76 window.location.href = "../resources/go-back.html"; 77 77 }, 0); 78 78 }, false); -
trunk/LayoutTests/compositing/page-cache-back-crash.html
r224032 r224078 20 20 setTimeout(function() { 21 21 // Navigate to a helper page that will immediately navigate back here after loading. 22 window.location.href = " iframes/resources/page-cache-helper.html";22 window.location.href = "resources/go-back.html"; 23 23 }, 0); 24 24 }); -
trunk/LayoutTests/compositing/tiling/tiled-drawing-async-frame-scrolling.html
r221615 r224078 10 10 testRunner.dumpAsText(); 11 11 testRunner.waitUntilDone(); 12 12 } 13 13 14 14 function doTest() -
trunk/Source/WebCore/ChangeLog
r224075 r224078 1 2017-10-25 Simon Fraser <simon.fraser@apple.com> 2 3 When navigating back to a page, compositing layers may not use accelerated drawing 4 https://bugs.webkit.org/show_bug.cgi?id=178749 5 rdar://problem/35158946 6 7 Reviewed by Dean Jackson. 8 9 There were two issues with setting GraphicsLayerCA's "acceleratesDrawing" state which 10 occurred on back navigation, related to the ordering of style recalcs and layout. 11 12 First, at style recalc time, we created a RenderLayerCompositor but hadn't yet called 13 its cacheAcceleratedCompositingFlags(), so any layers created during style update 14 didn't get accelerated drawing. Fix by making cacheAcceleratedCompositingFlags() internal 15 to RenderLayerCompositor and calling it from willRecalcStyle() and updateCompositingLayers(). 16 17 Secondly, GraphicsLayerCA::commitLayerChangesBeforeSublayers() needs to updateAcceleratesDrawing() 18 before updating tiles, so that new tiles fetch the right acceleratesDrawing state from 19 the TileController. 20 21 Test: compositing/accelerated-layers-after-back.html 22 23 * page/FrameView.cpp: 24 (WebCore::FrameView::updateCompositingLayersAfterLayout): 25 * platform/graphics/ca/GraphicsLayerCA.cpp: 26 (WebCore::GraphicsLayerCA::commitLayerChangesBeforeSublayers): 27 * rendering/RenderLayerCompositor.cpp: 28 (WebCore::RenderLayerCompositor::willRecalcStyle): 29 (WebCore::RenderLayerCompositor::didRecalcStyleWithNoPendingLayout): 30 (WebCore::RenderLayerCompositor::updateCompositingLayers): 31 * rendering/RenderLayerCompositor.h: 32 1 33 2017-10-26 Alex Christensen <achristensen@webkit.org> 2 34 -
trunk/Source/WebCore/page/FrameView.cpp
r224045 r224078 893 893 return; 894 894 895 // This call will make sure the cached hasAcceleratedCompositing is updated from the pref896 renderView->compositor().cacheAcceleratedCompositingFlags();897 895 renderView->compositor().updateCompositingLayers(CompositingUpdateType::AfterLayout); 898 896 } -
trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp
r224032 r224078 1754 1754 updateCoverage(commitState); 1755 1755 1756 if (m_uncommittedChanges & AcceleratesDrawingChanged) // Needs to happen before TilingAreaChanged. 1757 updateAcceleratesDrawing(); 1758 1756 1759 if (m_uncommittedChanges & TilingAreaChanged) // Needs to happen after CoverageRectChanged, ContentsScaleChanged 1757 1760 updateTiles(); … … 1776 1779 updateContentsNeedsDisplay(); 1777 1780 1778 if (m_uncommittedChanges & AcceleratesDrawingChanged)1779 updateAcceleratesDrawing();1780 1781 1781 if (m_uncommittedChanges & SupportsSubpixelAntialiasedTextChanged) 1782 1782 updateSupportsSubpixelAntialiasedText(); -
trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp
r224032 r224078 300 300 void RenderLayerCompositor::cacheAcceleratedCompositingFlags() 301 301 { 302 bool hasAcceleratedCompositing = false;303 bool showDebugBorders = false;304 bool showRepaintCounter = false;305 bool forceCompositingMode = false;306 bool acceleratedDrawingEnabled = false;307 bool displayListDrawingEnabled = false;308 309 302 auto& settings = m_renderView.settings(); 310 hasAcceleratedCompositing = settings.acceleratedCompositingEnabled();303 bool hasAcceleratedCompositing = settings.acceleratedCompositingEnabled(); 311 304 312 305 // We allow the chrome to override the settings, in case the page is rendered … … 317 310 } 318 311 319 showDebugBorders = settings.showDebugBorders(); 320 showRepaintCounter = settings.showRepaintCounter(); 321 forceCompositingMode = settings.forceCompositingMode() && hasAcceleratedCompositing; 322 323 if (forceCompositingMode && !isMainFrameCompositor()) 324 forceCompositingMode = requiresCompositingForScrollableFrame(); 325 326 acceleratedDrawingEnabled = settings.acceleratedDrawingEnabled(); 327 displayListDrawingEnabled = settings.displayListDrawingEnabled(); 312 bool showDebugBorders = settings.showDebugBorders(); 313 bool showRepaintCounter = settings.showRepaintCounter(); 314 bool forceCompositingMode = settings.forceCompositingMode() && hasAcceleratedCompositing; 315 bool acceleratedDrawingEnabled = settings.acceleratedDrawingEnabled(); 316 bool displayListDrawingEnabled = settings.displayListDrawingEnabled(); 328 317 329 318 if (hasAcceleratedCompositing != m_hasAcceleratedCompositing || showDebugBorders != m_showDebugBorders || showRepaintCounter != m_showRepaintCounter || forceCompositingMode != m_forceCompositingMode) … … 350 339 } 351 340 341 void RenderLayerCompositor::cacheAcceleratedCompositingFlagsAfterLayout() 342 { 343 cacheAcceleratedCompositingFlags(); 344 if (isMainFrameCompositor() || !m_forceCompositingMode) 345 return; 346 347 if (!requiresCompositingForScrollableFrame()) { 348 m_forceCompositingMode = false; 349 setCompositingLayersNeedRebuild(); 350 } 351 } 352 352 353 bool RenderLayerCompositor::canRender3DTransforms() const 353 354 { … … 364 365 { 365 366 m_layerNeedsCompositingUpdate = false; 367 cacheAcceleratedCompositingFlags(); 366 368 } 367 369 … … 371 373 return false; 372 374 373 cacheAcceleratedCompositingFlags();374 375 return updateCompositingLayers(CompositingUpdateType::AfterStyleChange); 375 376 } … … 634 635 { 635 636 LOG_WITH_STREAM(Compositing, stream << "RenderLayerCompositor " << this << " updateCompositingLayers " << updateType << " root " << updateRoot); 637 638 if (updateType == CompositingUpdateType::AfterStyleChange || updateType == CompositingUpdateType::AfterLayout) 639 cacheAcceleratedCompositingFlagsAfterLayout(); // Some flags (e.g. forceCompositingMode) depend on layout. 636 640 637 641 m_updateCompositingLayersTimer.stop(); -
trunk/Source/WebCore/rendering/RenderLayerCompositor.h
r224032 r224078 111 111 bool canRender3DTransforms() const; 112 112 113 // Copy the accelerated compositing related flags from Settings114 void cacheAcceleratedCompositingFlags();115 116 113 // Called when the layer hierarchy needs to be updated (compositing layers have been 117 114 // created, destroyed or re-parented). … … 346 343 // GraphicsLayerUpdaterClient implementation 347 344 void flushLayersSoon(GraphicsLayerUpdater&) override; 345 346 // Copy the accelerated compositing related flags from Settings 347 void cacheAcceleratedCompositingFlags(); 348 void cacheAcceleratedCompositingFlagsAfterLayout(); 348 349 349 350 // Whether the given RL needs a compositing layer. -
trunk/Source/WebKit/ChangeLog
r224077 r224078 1 2017-10-25 Simon Fraser <simon.fraser@apple.com> 2 3 When navigating back to a page, compositing layers may not use accelerated drawing 4 https://bugs.webkit.org/show_bug.cgi?id=178749 5 rdar://problem/35158946 6 7 Reviewed by Dean Jackson. 8 9 Avoid assertions when a test enables accelerated drawing (which we can't support 10 in the iOS simulator). 11 12 * Shared/RemoteLayerTree/RemoteLayerBackingStore.mm: 13 (WebKit::RemoteLayerBackingStore::ensureBackingStore): 14 1 15 2017-10-26 Sam Weinig <sam@webkit.org> 2 16 -
trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm
r224032 r224078 73 73 void RemoteLayerBackingStore::ensureBackingStore(FloatSize size, float scale, bool acceleratesDrawing, bool deepColor, bool isOpaque) 74 74 { 75 #if !USE(IOSURFACE) 76 acceleratesDrawing = false; 77 #endif 75 78 if (m_size == size && m_scale == scale && m_deepColor == deepColor && m_acceleratesDrawing == acceleratesDrawing && m_isOpaque == isOpaque) 76 79 return; -
trunk/Tools/ChangeLog
r224071 r224078 1 2017-10-25 Simon Fraser <simon.fraser@apple.com> 2 3 When navigating back to a page, compositing layers may not use accelerated drawing 4 https://bugs.webkit.org/show_bug.cgi?id=178749 5 rdar://problem/35158946 6 7 Reviewed by Dean Jackson. 8 9 Fix WTR and DRT to parse "useAcceleratedDrawing" out of "webkit-test-runner" options 10 and use it to set the state of the web view. 11 12 * DumpRenderTree/TestOptions.h: 13 * DumpRenderTree/TestOptions.mm: 14 (TestOptions::TestOptions): 15 * DumpRenderTree/mac/DumpRenderTree.mm: 16 (setWebPreferencesForTestOptions): 17 * WebKitTestRunner/TestController.cpp: 18 (WTR::TestController::resetPreferencesToConsistentValues): 19 (WTR::updateTestOptionsFromTestHeader): 20 * WebKitTestRunner/TestOptions.h: 21 (WTR::TestOptions::hasSameInitializationOptions const): 22 1 23 2017-10-26 Alex Christensen <achristensen@webkit.org> 2 24 -
trunk/Tools/DumpRenderTree/TestOptions.h
r224032 r224078 31 31 struct TestOptions { 32 32 bool enableAttachmentElement { false }; 33 bool useAcceleratedDrawing { false }; 33 34 bool enableIntersectionObserver { false }; 34 35 bool enableModernMediaControls { true }; -
trunk/Tools/DumpRenderTree/TestOptions.mm
r224032 r224078 81 81 if (key == "enableAttachmentElement") 82 82 this->enableAttachmentElement = parseBooleanTestHeaderValue(value); 83 if (key == "useAcceleratedDrawing") 84 this->useAcceleratedDrawing = parseBooleanTestHeaderValue(value); 83 85 else if (key == "enableIntersectionObserver") 84 86 this->enableIntersectionObserver = parseBooleanTestHeaderValue(value); -
trunk/Tools/DumpRenderTree/mac/DumpRenderTree.mm
r224032 r224078 983 983 984 984 preferences.attachmentElementEnabled = options.enableAttachmentElement; 985 preferences.acceleratedDrawingEnabled = options.useAcceleratedDrawing; 985 986 preferences.intersectionObserverEnabled = options.enableIntersectionObserver; 986 987 preferences.modernMediaControlsEnabled = options.enableModernMediaControls; -
trunk/Tools/WebKitTestRunner/TestController.cpp
r224043 r224078 720 720 WKPreferencesSetHiddenPageCSSAnimationSuspensionEnabled(preferences, false); 721 721 722 WKPreferencesSetAcceleratedDrawingEnabled(preferences, m_shouldUseAcceleratedDrawing );722 WKPreferencesSetAcceleratedDrawingEnabled(preferences, m_shouldUseAcceleratedDrawing || options.useAcceleratedDrawing); 723 723 // FIXME: We should be testing the default. 724 724 WKPreferencesSetStorageBlockingPolicy(preferences, kWKAllowAllStorage); … … 1022 1022 if (key == "useThreadedScrolling") 1023 1023 testOptions.useThreadedScrolling = parseBooleanTestHeaderValue(value); 1024 if (key == "useAcceleratedDrawing") 1025 testOptions.useAcceleratedDrawing = parseBooleanTestHeaderValue(value); 1024 1026 if (key == "useFlexibleViewport") 1025 1027 testOptions.useFlexibleViewport = parseBooleanTestHeaderValue(value); -
trunk/Tools/WebKitTestRunner/TestOptions.h
r224032 r224078 34 34 struct TestOptions { 35 35 bool useThreadedScrolling { false }; 36 bool useAcceleratedDrawing { false }; 36 37 bool useRemoteLayerTree { false }; 37 38 bool shouldShowWebView { false }; … … 66 67 { 67 68 if (useThreadedScrolling != options.useThreadedScrolling 69 || useAcceleratedDrawing != options.useAcceleratedDrawing 68 70 || overrideLanguages != options.overrideLanguages 69 71 || useMockScrollbars != options.useMockScrollbars
Note:
See TracChangeset
for help on using the changeset viewer.