Bug 211883

Summary: [WinCairo][WK2] Use GraphicsLayerTextureMapper for Accelerated Compositing mode
Product: WebKit Reporter: Fujii Hironori <Hironori.Fujii>
Component: WebKit2Assignee: Fujii Hironori <Hironori.Fujii>
Status: RESOLVED FIXED    
Severity: Normal CC: annulen, cmarcelo, don.olmstead, ews-watchlist, gyuyoung.kim, luiz, noam, ross.kirsling, ryuan.choi, sergio, webkit-bug-importer, zeno
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
See Also: https://bugs.webkit.org/show_bug.cgi?id=186364
Attachments:
Description Flags
WIP patch
none
WIP patch
none
WIP patch
none
WIP patch
none
WIP patch
none
WIP patch
none
Patch don.olmstead: review+

Description Fujii Hironori 2020-05-13 23:17:22 PDT
[WinCairo][WK2] Use GraphicsLayerTextureMapper for Accelerated Compositing mode

WinCairo WK1 is also using GraphicsLayerTextureMapper for AC mode.

I experimented CoordinatedGraphicsLayer for WinCairo WK2. But, it has a problem (Bug 186364 Comment 45).
Comment 1 Fujii Hironori 2020-05-13 23:18:13 PDT
Created attachment 399337 [details]
WIP patch
Comment 2 Fujii Hironori 2020-05-14 00:42:56 PDT
Created attachment 399339 [details]
WIP patch
Comment 3 Fujii Hironori 2020-05-14 14:28:23 PDT
Created attachment 399409 [details]
WIP patch
Comment 4 Fujii Hironori 2020-05-14 22:08:19 PDT
Created attachment 399455 [details]
WIP patch
Comment 5 Fujii Hironori 2020-05-18 22:20:33 PDT
Created attachment 399710 [details]
WIP patch
Comment 6 Fujii Hironori 2020-05-21 01:15:55 PDT
Created attachment 399942 [details]
WIP patch
Comment 7 Fujii Hironori 2020-05-21 14:07:58 PDT
* createDisplayRefreshMonitor should be implemented
* Use DisplayRefreshMonitor instead of Timer for layer flushing
* WebKitTestRunner can't capture the window for pixel dump
* Resizing the browser window cuases rendering gliches
Comment 8 Fujii Hironori 2020-05-24 14:07:26 PDT
Created attachment 400178 [details]
Patch
Comment 9 Fujii Hironori 2020-05-26 13:31:24 PDT
Committed r262158: <https://trac.webkit.org/changeset/262158>
Comment 10 Radar WebKit Bug Importer 2020-05-26 13:32:20 PDT
<rdar://problem/63638725>
Comment 11 Fujii Hironori 2020-05-26 18:34:55 PDT
Oops, clang-cl can't compile.

> [4732/5247] Building CXX object Source\WebKit\CMakeFiles\WebKit.dir\WebProcess\WebPage\CoordinatedGraphics\DrawingAreaCoordinatedGraphics.cpp.obj
> FAILED: Source/WebKit/CMakeFiles/WebKit.dir/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp.obj 
> C:\PROGRA~1\LLVM\bin\clang-cl.exe  /nologo -TP -DANGLE_ENABLE_D3D11 -DANGLE_ENABLE_D3D9 -DANGLE_ENABLE_ESSL -DANGLE_ENABLE_HLSL -DBUILDING_WEBKIT -DBUILDING_WITH_CMAKE=1 -DBUILDING_WebKit -DEGL_EGLEXT_PROTOTYPES -DEGL_EGL_PROTOTYPES=1 -DGL_API="" -DGL_APICALL="" -DGL_GLES_PROTOTYPES=1 -DGL_GLEXT_PROTOTYPES -DHAVE_CONFIG_H=1 -DNOCRYPT -DNOMINMAX -DSTATICALLY_LINKED_WITH_PAL -DSTATICALLY_LINKED_WITH_PAL=1 -DSTATICALLY_LINKED_WITH_WebCore -DUNICODE -DUSE_CAIRO=1 -DUSE_CURL=1 -DWINVER=0x601 -DWTF_PLATFORM_WIN_CAIRO=1 -DWebKit_EXPORTS -D_CRT_SECURE_NO_WARNINGS -D_HAS_EXCEPTIONS=0 -D_UNICODE -D_WIN32_WINNT=0x601 -D_WINDOWS -D_WINSOCKAPI_="" -IWebCore\PrivateHeaders -IWebKit\Headers -IWebKit\DerivedSources -IWebKit\DerivedSources\include -I..\..\Source\WebKit -I..\..\Source\WebKit\GPUProcess -I..\..\Source\WebKit\GPUProcess\graphics -I..\..\Source\WebKit\GPUProcess\media -I..\..\Source\WebKit\GPUProcess\webrtc -I..\..\Source\WebKit\NetworkProcess -I..\..\Source\WebKit\NetworkProcess\Classifier -I..\..\Source\WebKit\NetworkProcess\Cookies -I..\..\Source\WebKit\NetworkProcess\CustomProtocols -I..\..\Source\WebKit\NetworkProcess\Downloads -I..\..\Source\WebKit\NetworkProcess\FileAPI -I..\..\Source\WebKit\NetworkProcess\IndexedDB -I..\..\Source\WebKit\NetworkProcess\ServiceWorker -I..\..\Source\WebKit\NetworkProcess\WebStorage -I..\..\Source\WebKit\NetworkProcess\cache -I..\..\Source\WebKit\NetworkProcess\watchos -I..\..\Source\WebKit\NetworkProcess\webrtc -I..\..\Source\WebKit\Platform -I..\..\Source\WebKit\Platform\IPC -I..\..\Source\WebKit\PluginProcess -I..\..\Source\WebKit\Shared -I..\..\Source\WebKit\Shared\API -I..\..\Source\WebKit\Shared\API\c -I..\..\Source\WebKit\Shared\ApplePay -I..\..\Source\WebKit\Shared\Authentication -I..\..\Source\WebKit\Shared\CoreIPCSupport -I..\..\Source\WebKit\Shared\Databases -I..\..\Source\WebKit\Shared\Databases\IndexedDB -I..\..\Source\WebKit\Shared\FileAPI -I..\..\Source\WebKit\Shared\Gamepad -I..\..\Source\WebKit\Shared\Plugins -I..\..\Source\WebKit\Shared\Plugins\Netscape -I..\..\Source\WebKit\Shared\Plugins\Netscape\x11 -I..\..\Source\WebKit\Shared\RemoteLayerTree -I..\..\Source\WebKit\Shared\WebsiteData -I..\..\Source\WebKit\UIProcess -I..\..\Source\WebKit\UIProcess\API -I..\..\Source\WebKit\UIProcess\API\C -I..\..\Source\WebKit\UIProcess\API\cpp -I..\..\Source\WebKit\UIProcess\Authentication -I..\..\Source\WebKit\UIProcess\Automation -I..\..\Source\WebKit\UIProcess\Downloads -I..\..\Source\WebKit\UIProcess\Gamepad -I..\..\Source\WebKit\UIProcess\GPU -I..\..\Source\WebKit\UIProcess\Inspector -I..\..\Source\WebKit\UIProcess\Inspector\Agents -I..\..\Source\WebKit\UIProcess\Launcher -I..\..\Source\WebKit\UIProcess\Network -I..\..\Source\WebKit\UIProcess\Network\CustomProtocols -I..\..\Source\WebKit\UIProcess\Notifications -I..\..\Source\WebKit\UIProcess\Plugins -I..\..\Source\WebKit\UIProcess\RemoteLayerTree -I..\..\Source\WebKit\UIProcess\UserContent -I..\..\Source\WebKit\UIProcess\WebAuthentication -I..\..\Source\WebKit\UIProcess\WebAuthentication\Mock -I..\..\Source\WebKit\UIProcess\WebsiteData -I..\..\Source\WebKit\WebProcess -I..\..\Source\WebKit\WebProcess\ApplePay -I..\..\Source\WebKit\WebProcess\ApplicationCache -I..\..\Source\WebKit\WebProcess\Automation -I..\..\Source\WebKit\WebProcess\Cache -I..\..\Source\WebKit\WebProcess\Databases -I..\..\Source\WebKit\WebProcess\Databases\IndexedDB -I..\..\Source\WebKit\WebProcess\FileAPI -I..\..\Source\WebKit\WebProcess\FullScreen -I..\..\Source\WebKit\WebProcess\Gamepad -I..\..\Source\WebKit\WebProcess\Geolocation -I..\..\Source\WebKit\WebProcess\GPU -I..\..\Source\WebKit\WebProcess\GPU\graphics -I..\..\Source\WebKit\WebProcess\GPU\media -I..\..\Source\WebKit\WebProcess\GPU\webrtc -I..\..\Source\WebKit\WebProcess\IconDatabase -I..\..\Source\WebKit\WebProcess\InjectedBundle -I..\..\Source\WebKit\WebProcess\InjectedBundle\API -I..\..\Source\WebKit\WebProcess\InjectedBundle\API\c -I..\..\Source\WebKit\WebProcess\InjectedBundle\DOM -I..\..\Source\WebKit\WebProcess\Inspector -I..\..\Source\WebKit\WebProcess\Launching -I..\..\Source\WebKit\WebProcess\MediaCache -I..\..\Source\WebKit\WebProcess\MediaStream -I..\..\Source\WebKit\WebProcess\Network -I..\..\Source\WebKit\WebProcess\Network\webrtc -I..\..\Source\WebKit\WebProcess\Notifications -I..\..\Source\WebKit\WebProcess\OriginData -I..\..\Source\WebKit\WebProcess\Plugins -I..\..\Source\WebKit\WebProcess\Plugins\Netscape -I..\..\Source\WebKit\WebProcess\ResourceCache -I..\..\Source\WebKit\WebProcess\Storage -I..\..\Source\WebKit\WebProcess\UserContent -I..\..\Source\WebKit\WebProcess\WebCoreSupport -I..\..\Source\WebKit\WebProcess\WebPage -I..\..\Source\WebKit\WebProcess\WebPage\RemoteLayerTree -I..\..\Source\WebKit\WebProcess\WebStorage -I..\..\Source -I..\..\WebKitLibraries -I..\..\Source\WebKit\Platform\classifier -I..\..\Source\WebKit\Platform\generic -I..\..\Source\WebKit\PluginProcess\win -I..\..\Source\WebKit\Shared\API\c\win -I..\..\Source\WebKit\Shared\CoordinatedGraphics -I..\..\Source\WebKit\Shared\CoordinatedGraphics\threadedcompositor -I..\..\Source\WebKit\Shared\Plugins\win -I..\..\Source\WebKit\Shared\win -I..\..\Source\WebKit\UIProcess\API\C\cairo -I..\..\Source\WebKit\UIProcess\API\C\curl -I..\..\Source\WebKit\UIProcess\API\C\win -I..\..\Source\WebKit\UIProcess\API\cpp\win -I..\..\Source\WebKit\UIProcess\API\win -I..\..\Source\WebKit\UIProcess\CoordinatedGraphics -I..\..\Source\WebKit\UIProcess\Inspector\socket -I..\..\Source\WebKit\UIProcess\Inspector\win -I..\..\Source\WebKit\UIProcess\Plugins\win -I..\..\Source\WebKit\UIProcess\win -I..\..\Source\WebKit\WebProcess\InjectedBundle\API\win -I..\..\Source\WebKit\WebProcess\InjectedBundle\API\win\DOM -I..\..\Source\WebKit\WebProcess\Inspector\win -I..\..\Source\WebKit\WebProcess\WebCoreSupport\win -I..\..\Source\WebKit\WebProcess\WebPage\CoordinatedGraphics -I..\..\Source\WebKit\WebProcess\WebPage\win -I..\..\Source\WebKit\win -I..\..\Source\WebKit\NetworkProcess\curl -I..\..\Source\WebKit\WebProcess\WebCoreSupport\curl -I..\..\Source\WebKit\UIProcess\socket -I. -IDerivedSources\ForwardingHeaders -IJavaScriptCore\Headers -IJavaScriptCore\PrivateHeaders -IWTF\Headers -IPAL\Headers -I..\include\private -IANGLE\Headers -I..\..\WebKitLibraries\win\include -I..\..\WebKitLibraries\win\include\cairo /W4 -fdiagnostics-color=always -fcolor-diagnostics -Wno-noexcept-type -Wno-parentheses-equality -Qunused-arguments -Wwrite-strings -Wundef -Wpointer-arith -Wmissing-format-attribute -Wformat-security -Wcast-align -Wno-unknown-argument -Wno-nonportable-include-path -Wno-unknown-pragmas -Wno-macro-redefined -Wno-undef /DWIN32 /D_WINDOWS  /GR- /EHsc- -fno-strict-aliasing /MD /O2 /Ob2 /DNDEBUG   /wd4018 /wd4068 /wd4099 /wd4100 /wd4127 /wd4138 /wd4146 /wd4180 /wd4189 /wd4201 /wd4206 /wd4244 /wd4251 /wd4267 /wd4275 /wd4288 /wd4291 /wd4305 /wd4309 /wd4344 /wd4355 /wd4389 /wd4396 /wd4456 /wd4457 /wd4458 /wd4459 /wd4481 /wd4503 /wd4505 /wd4510 /wd4512 /wd4530 /wd4610 /wd4611 /wd4646 /wd4702 /wd4706 /wd4722 /wd4800 /wd4819 /wd4951 /wd4952 /wd4996 /wd6011 /wd6031 /wd6211 /wd6246 /wd6255 /wd6387 /wd4091 /Zi /GS /EHa- /EHc- /EHs- /fp:except- /analyze- /bigobj /utf-8 /validate-charset /Oy- -fmsc-version=1911 -Wno-unused-parameter -std:c++17 /showIncludes /FoSource\WebKit\CMakeFiles\WebKit.dir\WebProcess\WebPage\CoordinatedGraphics\DrawingAreaCoordinatedGraphics.cpp.obj /FdSource\WebKit\CMakeFiles\WebKit.dir\ -c ..\..\Source\WebKit\WebProcess\WebPage\CoordinatedGraphics\DrawingAreaCoordinatedGraphics.cpp
> In file included from ..\..\Source\WebKit\WebProcess\WebPage\CoordinatedGraphics\DrawingAreaCoordinatedGraphics.cpp:28:
> In file included from ..\..\Source\WebKit\config.h:42:
> In file included from WTF\Headers\wtf/FastMalloc.h:26:
> In file included from WTF\Headers\wtf/StdLibExtras.h:30:
> C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.25.28610\include\memory(1757,27): error: invalid application of 'sizeof' to an incomplete type 'WebCore::TextureMapper'
>         static_assert(0 < sizeof(_Ty), "can't delete an incomplete type");
>                           ^~~~~~~~~~~
> C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.25.28610\include\memory(1873,13): note: in instantiation of member function 'std::default_delete<WebCore::TextureMapper>::operator()' requested here
>             _Mypair._Get_first()(_Mypair._Myval2);
>             ^
> ..\..\Source\WebKit\WebProcess\WebPage\CoordinatedGraphics/LayerTreeHostTextureMapper.h(54,7): note: in instantiation of member function 'std::unique_ptr<WebCore::TextureMapper, std::default_delete<WebCore::TextureMapper> >::~unique_ptr' requested here
> class LayerTreeHost : public WebCore::GraphicsLayerClient {
>       ^
> C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.25.28610\include\memory(1873,13): note: in instantiation of member function 'std::default_delete<WebKit::LayerTreeHost>::operator()' requested here
>             _Mypair._Get_first()(_Mypair._Myval2);
>             ^
> ..\..\Source\WebKit\WebProcess\WebPage\CoordinatedGraphics\DrawingAreaCoordinatedGraphics.cpp(59,33): note: in instantiation of member function 'std::unique_ptr<WebKit::LayerTreeHost, std::default_delete<WebKit::LayerTreeHost> >::~unique_ptr' requested here
> DrawingAreaCoordinatedGraphics::DrawingAreaCoordinatedGraphics(WebPage& webPage, const WebPageCreationParameters& parameters)
>                                 ^
> WebCore\PrivateHeaders\WebCore/TextureMapperFPSCounter.h(31,7): note: forward declaration of 'WebCore::TextureMapper'
> class TextureMapper;
>       ^
> 1 error generated.
Comment 12 Fujii Hironori 2020-05-26 19:10:20 PDT
Committed r262172: <https://trac.webkit.org/changeset/262172>