Bug 184367 - GraphicsLayerCA::createPlatformCALayer always disables extended color in its backing store
Summary: GraphicsLayerCA::createPlatformCALayer always disables extended color in its ...
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Layout and Rendering (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Brent Fulgham
URL:
Keywords: InRadar
Depends on: 184364
Blocks:
  Show dependency treegraph
 
Reported: 2018-04-06 14:21 PDT by Brent Fulgham
Modified: 2018-04-11 12:52 PDT (History)
7 users (show)

See Also:


Attachments
Patch (1.58 KB, patch)
2018-04-10 09:15 PDT, Brent Fulgham
simon.fraser: review+
bfulgham: commit-queue+
Details | Formatted Diff | Diff
Archive of layout-test-results from ews206 for win-future (12.61 MB, application/zip)
2018-04-11 03:12 PDT, EWS Watchlist
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Brent Fulgham 2018-04-06 14:21:33 PDT
While working on Bug 184364, I noticed that this callstack, which leads me to believe that improper backing store is being created:

#0	0x00000002d0b42bb7 in WebCore::screenSupportsExtendedColor(WebCore::Widget*) at /Users/bfulgham/Projects/WebKit/OpenSource/Source/WebCore/platform/mac/PlatformScreenMac.mm:231
#1	0x00000002d2afc300 in WebCore::GraphicsLayerCA::createPlatformCALayer(WebCore::PlatformCALayer::LayerType, WebCore::PlatformCALayerClient*) at /Users/bfulgham/Projects/WebKit/OpenSource/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:370
#2	0x00000002d2afce1c in WebCore::GraphicsLayerCA::initialize(WebCore::GraphicsLayer::Type) at /Users/bfulgham/Projects/WebKit/OpenSource/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:426
#3	0x00000002d2afc132 in WebCore::GraphicsLayer::create(WebCore::GraphicsLayerFactory*, WebCore::GraphicsLayerClient&, WebCore::GraphicsLayer::Type) at /Users/bfulgham/Projects/WebKit/OpenSource/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:350
#4	0x00000002d2f818cb in WebCore::RenderLayerCompositor::ensureRootLayer() at /Users/bfulgham/Projects/WebKit/OpenSource/Source/WebCore/rendering/RenderLayerCompositor.cpp:3260
#5	0x00000002d2f817e3 in WebCore::RenderLayerCompositor::enableCompositingMode(bool) at /Users/bfulgham/Projects/WebKit/OpenSource/Source/WebCore/rendering/RenderLayerCompositor.cpp:292
#6	0x00000002d2f46ee8 in WebCore::RenderLayerCompositor::updateCompositingLayers(WebCore::CompositingUpdateType, WebCore::RenderLayer*) at /Users/bfulgham/Projects/WebKit/OpenSource/Source/WebCore/rendering/RenderLayerCompositor.cpp:658
#7	0x00000002d2f845f9 in WebCore::RenderLayerCompositor::didRecalcStyleWithNoPendingLayout() at /Users/bfulgham/Projects/WebKit/OpenSource/Source/WebCore/rendering/RenderLayerCompositor.cpp:382
#8	0x00000002d27b8334 in WebCore::FrameView::updateCompositingLayersAfterStyleChange() at /Users/bfulgham/Projects/WebKit/OpenSource/Source/WebCore/page/FrameView.cpp:806
#9	0x00000002d1e0d769 in WebCore::Document::resolveStyle(WebCore::Document::ResolveStyleType) at /Users/bfulgham/Projects/WebKit/OpenSource/Source/WebCore/dom/Document.cpp:1871
#10	0x00000002d1e114ae in WebCore::Document::createRenderTree() at /Users/bfulgham/Projects/WebKit/OpenSource/Source/WebCore/dom/Document.cpp:2232
#11	0x00000002d1e11665 in WebCore::Document::didBecomeCurrentDocumentInFrame() at /Users/bfulgham/Projects/WebKit/OpenSource/Source/WebCore/dom/Document.cpp:2243
#12	0x00000002d2799d6f in WebCore::Frame::setDocument(WTF::RefPtr<WebCore::Document, WTF::DumbPtrTraits<WebCore::Document> >&&) at /Users/bfulgham/Projects/WebKit/OpenSource/Source/WebCore/page/Frame.cpp:303
#13	0x00000002d25e1dcd in WebCore::DocumentWriter::begin(WebCore::URL const&, bool, WebCore::Document*) at /Users/bfulgham/Projects/WebKit/OpenSource/Source/WebCore/loader/DocumentWriter.cpp:173
#14	0x00000002d25a591e in WebCore::DocumentLoader::commitData(char const*, unsigned long) at /Users/bfulgham/Projects/WebKit/OpenSource/Source/WebCore/loader/DocumentLoader.cpp:978
#15	0x00000002d25a53a5 in WebCore::DocumentLoader::finishedLoading() at /Users/bfulgham/Projects/WebKit/OpenSource/Source/WebCore/loader/DocumentLoader.cpp:426
#16	0x00000002d25af1e9 in WebCore::DocumentLoader::maybeLoadEmpty() at /Users/bfulgham/Projects/WebKit/OpenSource/Source/WebCore/loader/DocumentLoader.cpp:1645
#17	0x00000002d25af35e in WebCore::DocumentLoader::startLoadingMainResource() at /Users/bfulgham/Projects/WebKit/OpenSource/Source/WebCore/loader/DocumentLoader.cpp:1657
#18	0x00000002d25eed7c in WebCore::FrameLoader::init() at /Users/bfulgham/Projects/WebKit/OpenSource/Source/WebCore/loader/FrameLoader.cpp:309
#19	0x00000002d2798ef4 in WebCore::Frame::init() at /Users/bfulgham/Projects/WebKit/OpenSource/Source/WebCore/page/Frame.cpp:202
#20	0x00000001017320d4 in WebKit::WebFrame::createWithCoreMainFrame(WebKit::WebPage*, WebCore::Frame*) at /Users/bfulgham/Projects/WebKit/OpenSource/Source/WebKit/WebProcess/WebPage/WebFrame.cpp:119
#21	0x000000010185812a in WebKit::WebPage::WebPage(unsigned long long, WebKit::WebPageCreationParameters&&) at /Users/bfulgham/Projects/WebKit/OpenSource/Source/WebKit/WebProcess/WebPage/WebPage.cpp:455
#22	0x0000000101854de5 in WebKit::WebPage::WebPage(unsigned long long, WebKit::WebPageCreationParameters&&) at /Users/bfulgham/Projects/WebKit/OpenSource/Source/WebKit/WebProcess/WebPage/WebPage.cpp:384
#23	0x0000000101854cc4 in WebKit::WebPage::create(unsigned long long, WebKit::WebPageCreationParameters&&) at /Users/bfulgham/Projects/WebKit/OpenSource/Source/WebKit/WebProcess/WebPage/WebPage.cpp:325
#24	0x0000000101abcc66 in WebKit::WebProcess::createWebPage(unsigned long long, WebKit::WebPageCreationParameters&&) at /Users/bfulgham/Projects/WebKit/OpenSource/Source/WebKit/WebProcess/WebProcess.cpp:600
#25	0x0000000101b14f30 in void IPC::callMemberFunctionImpl<WebKit::WebProcess, void (WebKit::WebProcess::*)(unsigned long long, WebKit::WebPageCreationParameters&&), std::__1::tuple<unsigned long long, WebKit::WebPageCreationParameters>, 0ul, 1ul>(WebKit::WebProcess*, void (WebKit::WebProcess::*)(unsigned long long, WebKit::WebPageCreationParameters&&), std::__1::tuple<unsigned long long, WebKit::WebPageCreationParameters>&&, std::__1::integer_sequence<unsigned long, 0ul, 1ul>) at /Users/bfulgham/Projects/WebKit/OpenSource/Source/WebKit/Platform/IPC/HandleMessage.h:40
#26	0x0000000101b14c90 in void IPC::callMemberFunction<WebKit::WebProcess, void (WebKit::WebProcess::*)(unsigned long long, WebKit::WebPageCreationParameters&&), std::__1::tuple<unsigned long long, WebKit::WebPageCreationParameters>, std::__1::integer_sequence<unsigned long, 0ul, 1ul> >(std::__1::tuple<unsigned long long, WebKit::WebPageCreationParameters>&&, WebKit::WebProcess*, void (WebKit::WebProcess::*)(unsigned long long, WebKit::WebPageCreationParameters&&)) at /Users/bfulgham/Projects/WebKit/OpenSource/Source/WebKit/Platform/IPC/HandleMessage.h:46
#27	0x0000000101b0ee85 in void IPC::handleMessage<Messages::WebProcess::CreateWebPage, WebKit::WebProcess, void (WebKit::WebProcess::*)(unsigned long long, WebKit::WebPageCreationParameters&&)>(IPC::Decoder&, WebKit::WebProcess*, void (WebKit::WebProcess::*)(unsigned long long, WebKit::WebPageCreationParameters&&)) at /Users/bfulgham/Projects/WebKit/OpenSource/Source/WebKit/Platform/IPC/HandleMessage.h:126
#28	0x0000000101b0cbad in WebKit::WebProcess::didReceiveWebProcessMessage(IPC::Connection&, IPC::Decoder&) at /Users/bfulgham/Projects/WebKit/OpenSource/WebKitBuild/Debug/DerivedSources/WebKit2/WebProcessMessageReceiver.cpp:74
#29	0x0000000101abdb2b in WebKit::WebProcess::didReceiveMessage(IPC::Connection&, IPC::Decoder&) at /Users/bfulgham/Projects/WebKit/OpenSource/Source/WebKit/WebProcess/WebProcess.cpp:665
#30	0x0000000100f23163 in IPC::Connection::dispatchMessage(IPC::Decoder&) at /Users/bfulgham/Projects/WebKit/OpenSource/Source/WebKit/Platform/IPC/Connection.cpp:906
#31	0x0000000100f18718 in IPC::Connection::dispatchMessage(std::__1::unique_ptr<IPC::Decoder, std::__1::default_delete<IPC::Decoder> >) at /Users/bfulgham/Projects/WebKit/OpenSource/Source/WebKit/Platform/IPC/Connection.cpp:933
#32	0x0000000100f2376a in IPC::Connection::dispatchOneMessage() at /Users/bfulgham/Projects/WebKit/OpenSource/Source/WebKit/Platform/IPC/Connection.cpp:964
#33	0x0000000100f3ba2d in IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr<IPC::Decoder, std::__1::default_delete<IPC::Decoder> >)::$_14::operator()() at /Users/bfulgham/Projects/WebKit/OpenSource/Source/WebKit/Platform/IPC/Connection.cpp:900
#34	0x0000000100f3b989 in WTF::Function<void ()>::CallableWrapper<IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr<IPC::Decoder, std::__1::default_delete<IPC::Decoder> >)::$_14>::call() at /Users/bfulgham/Projects/WebKit/OpenSource/WebKitBuild/Debug/usr/local/include/wtf/Function.h:101
#35	0x00000002df94cbfb in WTF::Function<void ()>::operator()() const at /Users/bfulgham/Projects/WebKit/OpenSource/WebKitBuild/Debug/usr/local/include/wtf/Function.h:56
#36	0x00000002df99e99d in WTF::RunLoop::performWork() at /Users/bfulgham/Projects/WebKit/OpenSource/Source/WTF/wtf/RunLoop.cpp:123
#37	0x00000002df99f1b4 in WTF::RunLoop::performWork(void*) at /Users/bfulgham/Projects/WebKit/OpenSource/Source/WTF/wtf/cf/RunLoopCF.cpp:38

While the Media Query is done properly, it looks like the creation of the main view backing store is always done without extended color support on macOS.

The following locations will create non-extended backing stores:

GraphicsLayerCA::createPlatformCALayer()
GraphicsLayerCARemote::createPlatformCALayer
LegacyTileGridTile::LegacyTileGridTile
WKWebView _takeViewSnapshot
Comment 1 Radar WebKit Bug Importer 2018-04-06 14:22:11 PDT
<rdar://problem/39249074>
Comment 2 Simon Fraser (smfr) 2018-04-09 06:50:23 PDT
Are you saying that screenSupportsExtendedColor() always returns false here?
Comment 3 Brent Fulgham 2018-04-09 11:36:13 PDT
(In reply to Simon Fraser (smfr) from comment #2)
> Are you saying that screenSupportsExtendedColor() always returns false here?

Yes. I think all instances of ‘GraphicsLayerCA::initialize result in a backing store that lacks extended color support.

I talked with Dino about this on Friday, and he thinks it is unlikely to create visible problems,  it that the backing store is technically wrong in these devices.
Comment 4 Brent Fulgham 2018-04-10 09:15:09 PDT
Created attachment 337610 [details]
Patch
Comment 5 EWS Watchlist 2018-04-11 03:12:28 PDT
Comment on attachment 337610 [details]
Patch

Attachment 337610 [details] did not pass win-ews (win):
Output: http://webkit-queues.webkit.org/results/7281146

New failing tests:
http/tests/security/canvas-remote-read-remote-video-localhost.html
Comment 6 EWS Watchlist 2018-04-11 03:12:40 PDT
Created attachment 337689 [details]
Archive of layout-test-results from ews206 for win-future

The attached test failures were seen while running run-webkit-tests on the win-ews.
Bot: ews206  Port: win-future  Platform: CYGWIN_NT-6.1-2.9.0-0.318-5-3-x86_64-64bit
Comment 7 Simon Fraser (smfr) 2018-04-11 03:21:38 PDT
Comment on attachment 337610 [details]
Patch

I wish we could test this.
Comment 8 Brent Fulgham 2018-04-11 12:52:55 PDT
Comment on attachment 337689 [details]
Archive of layout-test-results from ews206 for win-future

There is no way a change in a Mac-specific file would cause these Windows failures.
Comment 9 Brent Fulgham 2018-04-11 12:52:58 PDT
Committed r230542: <https://trac.webkit.org/changeset/230542>