Changeset 223984 in webkit
- Timestamp:
- Oct 25, 2017, 2:32:08 PM (7 years ago)
- Location:
- trunk
- Files:
-
- 3 added
- 16 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r223982 r223984 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-25 Alex Christensen <achristensen@webkit.org> 2 19 -
trunk/LayoutTests/compositing/iframes/page-cache-layer-tree.html
r130689 r223984 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
r210142 r223984 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/Source/WebCore/ChangeLog
r223981 r223984 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-25 Youenn Fablet <youenn@apple.com> 2 34 -
trunk/Source/WebCore/page/FrameView.cpp
r223853 r223984 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
r222898 r223984 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
r223749 r223984 363 363 void RenderLayerCompositor::willRecalcStyle() 364 364 { 365 cacheAcceleratedCompositingFlags(); 365 366 m_layerNeedsCompositingUpdate = false; 366 367 } … … 371 372 return false; 372 373 373 cacheAcceleratedCompositingFlags();374 374 return updateCompositingLayers(CompositingUpdateType::AfterStyleChange); 375 375 } … … 634 634 { 635 635 LOG_WITH_STREAM(Compositing, stream << "RenderLayerCompositor " << this << " updateCompositingLayers " << updateType << " root " << updateRoot); 636 637 if (updateType == CompositingUpdateType::AfterLayout) 638 cacheAcceleratedCompositingFlags(); // Some flags (e.g. forceCompositingMode) depend on layout. 636 639 637 640 m_updateCompositingLayersTimer.stop(); -
trunk/Source/WebCore/rendering/RenderLayerCompositor.h
r223749 r223984 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). … … 361 358 void clearBackingForLayerIncludingDescendants(RenderLayer&); 362 359 363 // Repaint this and its child layers. 360 void cacheAcceleratedCompositingFlags(); 361 362 // Repaint the given layer and its descendants. 364 363 void recursiveRepaintLayer(RenderLayer&); 365 364 -
trunk/Source/WebKit/ChangeLog
r223981 r223984 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-25 Youenn Fablet <youenn@apple.com> 2 16 -
trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm
r221554 r223984 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
r223956 r223984 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-25 Robin Morisset <rmorisset@apple.com> 2 24 -
trunk/Tools/DumpRenderTree/TestOptions.h
r223929 r223984 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
r223929 r223984 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
r223929 r223984 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
r223929 r223984 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); … … 1026 1026 if (key == "useThreadedScrolling") 1027 1027 testOptions.useThreadedScrolling = parseBooleanTestHeaderValue(value); 1028 if (key == "useAcceleratedDrawing") 1029 testOptions.useAcceleratedDrawing = parseBooleanTestHeaderValue(value); 1028 1030 if (key == "useFlexibleViewport") 1029 1031 testOptions.useFlexibleViewport = parseBooleanTestHeaderValue(value); -
trunk/Tools/WebKitTestRunner/TestOptions.h
r223929 r223984 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.