RESOLVED WONTFIX Bug 186364
[WinCairo] Enable coordinated graphics
https://bugs.webkit.org/show_bug.cgi?id=186364
Summary [WinCairo] Enable coordinated graphics
Don Olmstead
Reported 2018-06-06 15:37:13 PDT
WinCairo should use USE(COORDINATED_GRAPHICS).
Attachments
WIP patch (32.22 KB, patch)
2019-02-18 02:10 PST, Fujii Hironori
no flags
WIP patch (33.71 KB, patch)
2019-02-19 01:40 PST, Fujii Hironori
no flags
WIP patch (28.69 KB, patch)
2019-02-21 02:25 PST, Fujii Hironori
no flags
WIP patch (27.89 KB, patch)
2019-02-21 02:29 PST, Fujii Hironori
no flags
WIP patch (30.21 KB, patch)
2019-02-26 01:47 PST, Fujii Hironori
no flags
WIP patch (27.40 KB, patch)
2019-03-03 18:53 PST, Fujii Hironori
no flags
WIP patch (25.58 KB, patch)
2019-03-04 17:52 PST, Fujii Hironori
no flags
WIP patch (31.47 KB, patch)
2019-03-06 01:30 PST, Fujii Hironori
no flags
WIP patch (30.78 KB, patch)
2019-03-11 02:23 PDT, Fujii Hironori
no flags
Synchronous RunLoop::TimerBase::stop patch (2.24 KB, patch)
2019-03-25 23:00 PDT, Fujii Hironori
no flags
WIP patch (31.60 KB, patch)
2019-03-26 00:14 PDT, Fujii Hironori
no flags
WIP patch (27.95 KB, patch)
2019-05-12 19:58 PDT, Fujii Hironori
no flags
WIP patch (30.75 KB, patch)
2019-05-13 21:55 PDT, Fujii Hironori
no flags
WIP patch (28.51 KB, patch)
2019-05-14 01:28 PDT, Fujii Hironori
no flags
WIP patch (27.68 KB, patch)
2019-05-15 00:38 PDT, Fujii Hironori
no flags
WIP patch (27.68 KB, patch)
2019-05-19 22:59 PDT, Fujii Hironori
no flags
WIP patch (27.75 KB, patch)
2019-05-29 23:04 PDT, Fujii Hironori
no flags
WIP patch (27.85 KB, patch)
2020-02-20 21:10 PST, Fujii Hironori
no flags
WIP patch (28.74 KB, patch)
2020-04-22 00:45 PDT, Fujii Hironori
no flags
WIP patch (23.73 KB, patch)
2021-01-26 18:34 PST, Fujii Hironori
no flags
Yoshiaki Jitsukawa
Comment 1 2018-11-13 16:31:57 PST
Fujii Hironori
Comment 2 2019-02-18 02:10:43 PST
Created attachment 362273 [details] WIP patch * Rebased onto ToT
Fujii Hironori
Comment 3 2019-02-19 01:40:13 PST
Created attachment 362377 [details] WIP patch * Fix crash of shutting down * Fix crash of reentering AC mode
Fujii Hironori
Comment 4 2019-02-21 02:25:38 PST
Created attachment 362600 [details] WIP patch * Call SetProcessDPIAware in web process
Fujii Hironori
Comment 5 2019-02-21 02:29:29 PST
Created attachment 362601 [details] WIP patch * Use AcceleratedSurfaceWin::window instead of setNativeSurfaceHandleForCompositing
Fujii Hironori
Comment 6 2019-02-21 02:30:58 PST
ToDo * Sometimes animation does't start. https://webkit.org/blog-files/3d-transforms/morphing-cubes.html * Crashes occasionally. * Nothing is drawn after some web surfing. Needs to restart.
Fujii Hironori
Comment 7 2019-02-26 01:47:26 PST
Created attachment 362971 [details] WIP patch * Added ThreadedCompositor::pauseCompositing to stop CompositingRunLoop when exit AC mode. * Implement CompositingRunLoop with WorkQueue ToDo: * Sometimes animation does't start. https://webkit.org/blog-files/3d-transforms/morphing-cubes.html * Crashes or freezes occasionally.
Fujii Hironori
Comment 8 2019-02-26 02:29:21 PST
(In reply to Fujii Hironori from comment #7) > * Sometimes animation does't start. > https://webkit.org/blog-files/3d-transforms/morphing-cubes.html I confirmed this issue happens in GTK port, too.
Fujii Hironori
Comment 9 2019-02-26 20:41:58 PST
The crash occured in eglMakeCurrent. It seems that the previous context was already destructed. > libGLESv2.dll!gl::ResourceMap<gl::Framebuffer>::assign(unsigned int handle, gl::Framebuffer * resource) Line 169 C++ > libGLESv2.dll!gl::FramebufferManager::setDefaultFramebuffer(gl::Framebuffer * framebuffer) Line 443 C++ > libGLESv2.dll!gl::Context::releaseSurface(const egl::Display * display) Line 574 C++ > libGLESv2.dll!egl::MakeCurrent(void * dpy, void * draw, void * read, void * ctx) Line 518 C++ > libEGL.dll!eglMakeCurrent(void * dpy, void * draw, void * read, void * ctx) Line 93 C++ > WebKit2.dll!WebCore::GLContextEGL::makeContextCurrent() Line 424 C++ > WebKit2.dll!WebKit::ThreadedCompositor::createGLContext() Line 94 C++ > WebKit2.dll!WebKit::ThreadedCompositor::{ctor}::__l2::<lambda>() Line 77 C++ > WebKit2.dll!WTF::Function<void __cdecl(void)>::CallableWrapper<void <lambda>(void) >::call() Line 102 C++ > WebKit2.dll!WTF::Function<void __cdecl(void)>::operator()() Line 58 C++ > WebKit2.dll!WebKit::CompositingRunLoop::performTaskSync::__l2::<lambda>() Line 126 C++ > WebKit2.dll!WTF::Function<void __cdecl(void)>::CallableWrapper<void <lambda>(void) >::call() Line 102 C++ > WTF.dll!WTF::Function<void __cdecl(void)>::operator()() Line 58 C++ > WTF.dll!WTF::WorkQueue::performWorkOnRegisteredWorkThread() Line 62 C++ > WTF.dll!WTF::WorkQueue::workThreadCallback(void * context) Line 44 C++ > [External Code] Windows port WorkQueue is using CreateTimerQueueTimer with WT_EXECUTEINTIMERTHREAD. So, WorkQueue jobs are dispatched in random timer threads. There are two possible solutions. 1. Execute all CompositingRunLoop jobs in a single thread 2. Clear current context by invoking eglMakeCurrent(display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT) every time the end of jobs.
Fujii Hironori
Comment 10 2019-03-03 18:53:25 PST
Created attachment 363475 [details] WIP patch * Rebased onto ToT * Morphing Power Cubes animation works better than before * No crash in eglMakeCurrent ToDo: * Nothing is drawn after some web surfing. Needs to restart.
Fujii Hironori
Comment 11 2019-03-03 22:34:30 PST
Remaining Issues: * ~CompositingRunLoop() calls RunLoop::stop. Windows port's RunLoop::stop terminates the current thread's RunLoop, and WebProcess exits. * After respawning WebProcess, WebPage has 0x0 size. Nothing drawn. * It seems ThreadedCompositor::pauseCompositing, which is added by me, doesn't work as expected.
Fujii Hironori
Comment 12 2019-03-04 17:52:10 PST
Created attachment 363575 [details] WIP patch * Rebased onto ToT. It works nicely. Remaining Issues: * After respawning WebProcess, WebPage has 0x0 size. Nothing drawn.
Carlos Garcia Campos
Comment 13 2019-03-05 02:03:22 PST
Comment on attachment 363575 [details] WIP patch View in context: https://bugs.webkit.org/attachment.cgi?id=363575&action=review > Source/WebKit/Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:70 > // Make sure the RunLoop is stopped after the CompositingRunLoop, because m_updateTimer has a reference. You should remove this comment too. > Source/WebKit/Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:72 > - RunLoop::main().dispatch([runLoop = makeRef(*m_runLoop)] { > - runLoop->stop(); > - runLoop->dispatch([] { > - RunLoop::current().stop(); > - }); > + m_runLoop->dispatch([] { > + RunLoop::current().stop(); Please, file a new bug report for this change.
Fujii Hironori
Comment 14 2019-03-05 02:53:28 PST
(In reply to Carlos Garcia Campos from comment #13) > Please, file a new bug report for this change. Thank you for the comment. Will do. However, I should fix Windows port's RunLoop::stop issue before it. I found there is Yusuke's WIP patch in Bug 181151.
Fujii Hironori
Comment 15 2019-03-06 01:30:04 PST
Created attachment 363736 [details] WIP patch * Almost all WebAnimation tests were timing out. Added dummy DisplayRefreshMonitorWin to fix them. Remaining Issues: * After respawning WebProcess, WebPage has 0x0 size. Nothing drawn. * Some tests are failing due to an assertion failure in Nicosia::Scene::accessState ASSERTION FAILED: state.id == m_nicosia.state.id * Needs to check other new test failures
Fujii Hironori
Comment 16 2019-03-11 02:23:47 PDT
Created attachment 364241 [details] WIP patch * Rebased onto ToT
Fujii Hironori
Comment 17 2019-03-13 02:55:56 PDT
* Some compositing LayoutTests are randomly failing with "ASSERTION FAILED: state.id == m_nicosia.state.id" * Some compositing LayoutTests are randomly timing out
Fujii Hironori
Comment 18 2019-03-24 18:50:42 PDT
(In reply to Fujii Hironori from comment #17) > * Some compositing LayoutTests are randomly failing with "ASSERTION FAILED: > state.id == m_nicosia.state.id" Filed it in Bug 196190.
Fujii Hironori
Comment 19 2019-03-25 03:48:32 PDT
(In reply to Fujii Hironori from comment #17) > * Some compositing LayoutTests are randomly timing out ref tests and pixel tests are randomly timing out because output pixel images aren't generated. Nothing drawn in WKTR WebView in such cases.
Fujii Hironori
Comment 20 2019-03-25 23:00:03 PDT
Created attachment 365947 [details] Synchronous RunLoop::TimerBase::stop patch This patch makes RunLoop::TimerBase::stop synchronous as well as GTK port. RunLoop::TimerBase::stop blocks while the timer callback is being called back. Unfortunately, this patch doesn't address the timing out issue. I don't know why GTK port does'n have the timing out issue.
Fujii Hironori
Comment 21 2019-03-25 23:59:37 PDT
It's just a simple bug. It is blocked in TestInvocation::dumpResults. WKPageForceRepaint doesn't work as expected becasue ThreadedCompositor::forceRepaint is not implemented yet.
Fujii Hironori
Comment 22 2019-03-26 00:14:05 PDT
Created attachment 365949 [details] WIP patch * Fixed ThreadedCompositor::forceRepaint for the timing out issues
Carlos Garcia Campos
Comment 23 2019-03-26 02:50:10 PDT
Comment on attachment 365949 [details] WIP patch View in context: https://bugs.webkit.org/attachment.cgi?id=365949&action=review > Source/WebKit/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:191 > -#if PLATFORM(GTK) > +#if !PLATFORM(WPE) This is exactly what I was going to suggest you to do :-) > Source/WebKit/WebProcess/WebPage/WebPage.h:960 > -#if PLATFORM(GTK) && USE(TEXTURE_MAPPER_GL) > +#if PLATFORM(WIN) && USE(TEXTURE_MAPPER_GL) Why do you remove GTK? > Source/WebKit/WebProcess/WebPage/WebPage.h:1640 > -#if PLATFORM(GTK) && USE(TEXTURE_MAPPER_GL) > +#if PLATFORM(WIN) && USE(TEXTURE_MAPPER_GL) Ditto. > Source/WebKit/WebProcess/WebPage/win/AcceleratedSurfaceWin.cpp:56 > +void AcceleratedSurfaceWin::initialize() > +{ > +} > + > +void AcceleratedSurfaceWin::finalize() > +{ > +} These are not pure virtual, you don't need to override them. > Source/WebKit/WebProcess/WebPage/win/AcceleratedSurfaceWin.cpp:70 > +void AcceleratedSurfaceWin::willRenderFrame() > +{ > +} Ditto.
Fujii Hironori
Comment 24 2019-03-26 02:59:19 PDT
Comment on attachment 365949 [details] WIP patch View in context: https://bugs.webkit.org/attachment.cgi?id=365949&action=review >> Source/WebKit/WebProcess/WebPage/WebPage.h:960 >> +#if PLATFORM(WIN) && USE(TEXTURE_MAPPER_GL) > > Why do you remove GTK? m_nativeWindowHandle is simply an unused member variable in GTK port. >> Source/WebKit/WebProcess/WebPage/win/AcceleratedSurfaceWin.cpp:56 >> +} > > These are not pure virtual, you don't need to override them. Good point. Will fix.
Fujii Hironori
Comment 25 2019-05-12 19:58:39 PDT
Created attachment 369688 [details] WIP patch * Rebased onto ToT * Addressed review feedbacks * A new assertion failure has been introduced, which occurs at WebProcess termination. setDefaultFramebuffer(8196): ! Assert failed in setDefaultFramebuffer(8196): mCurrentSurface == nullptrException thrown at 0x00007FFE6A1B40C4 (libGLESv2.dll) in WebKitWebProcess.exe: 0xC000001D: Illegal Instruction. Unhandled exception at 0x00007FFE6A1B40C4 (libGLESv2.dll) in WebKitWebProcess.exe: 0xC000001D: Illegal Instruction. > libGLESv2.dll!gl::LogMessage::~LogMessage() Line 171 C++ > libGLESv2.dll!gl::Context::setDefaultFramebuffer(egl::Surface * surface) Line 8198 C++ > libGLESv2.dll!gl::Context::makeCurrent(egl::Display * display, egl::Surface * surface) Line 608 C++ > libGLESv2.dll!egl::Display::makeCurrent(const egl::Thread * thread, egl::Surface * drawSurface, egl::Surface * readSurface, gl::Context * context) Line 945 C++ > libGLESv2.dll!egl::Display::destroyContext(const egl::Thread * thread, gl::Context * context) Line 1018 C++ > libGLESv2.dll!egl::Display::terminate(const egl::Thread * thread) Line 600 C++ > libGLESv2.dll!EGL_Terminate(void * dpy) Line 111 C++ > libEGL.dll!eglTerminate(void * dpy) Line 209 C++ > WebKit2.dll!WebCore::PlatformDisplay::terminateEGLDisplay() Line 235 C++ > WebKit2.dll!WebCore::PlatformDisplay::shutDownEglDisplays() Line 241 C++ > [External Code] > WebKit2.dll!WebKit::callExit(IPC::Connection *) Line 168 C++ > WebKit2.dll!IPC::Connection::connectionDidClose() Line 841 C++ > WebKit2.dll!IPC::Connection::readEventHandler() Line 156 C++ > WebKit2.dll!IPC::Connection::invokeReadEventHandler::<unnamed-tag>::operator()() Line 235 C++ > WebKit2.dll!WTF::Detail::CallableWrapper<`lambda at ..\..\Source\WebKit\Platform\IPC\win\ConnectionWin.cpp:233:33',void>::call() Line 52 C++ > WTF.dll!WTF::Function<void ()>::operator()() Line 79 C++ > WTF.dll!WTF::WorkQueue::performWorkOnRegisteredWorkThread() Line 61 C++ > WTF.dll!WTF::WorkQueue::workThreadCallback(void * context) Line 44 C++ > [External Code]
Fujii Hironori
Comment 26 2019-05-13 00:50:57 PDT
(In reply to Fujii Hironori from comment #25) > * A new assertion failure has been introduced, which occurs at WebProcess > termination. This issue? https://bugs.chromium.org/p/angleproject/issues/detail?id=3414
Fujii Hironori
Comment 27 2019-05-13 21:55:50 PDT
Created attachment 369820 [details] WIP patch (In reply to Fujii Hironori from comment #26) > (In reply to Fujii Hironori from comment #25) > > * A new assertion failure has been introduced, which occurs at WebProcess > > termination. > > This issue? > https://bugs.chromium.org/p/angleproject/issues/detail?id=3414 Not relevant. This is a similar issue with comment 9. It seems that ANGLE need to unbind the context explicitly by doing eglMakeCurrent(display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT). * Added GLContextEGL::unmakeContextCurrent I'm going to file a new bug ticket for the part.
Fujii Hironori
Comment 28 2019-05-13 23:45:53 PDT
(In reply to Fujii Hironori from comment #27) > It seems that ANGLE need to unbind the context explicitly by doing > eglMakeCurrent(display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT). > > * Added GLContextEGL::unmakeContextCurrent Oh, no. It turns out this patch doesn't solve the problem. It just reduces the probability. It is inevitable WebKit::callExit is called during the rendering.
Fujii Hironori
Comment 29 2019-05-14 01:28:10 PDT
Created attachment 369827 [details] WIP patch * Quick ANGLE hack to avoid the assertion failure (Needs to consult upstream ANGLE.)
Fujii Hironori
Comment 30 2019-05-15 00:36:50 PDT
EGL eglTerminate spec says: > If contexts or surfaces created with respect to dpy are current (see section 3.7.3) to any thread, then they are not actually destroyed while they remain current. https://www.khronos.org/registry/EGL/specs/eglspec.1.4.pdf This seems ANGLE bug.
Fujii Hironori
Comment 31 2019-05-15 00:38:39 PDT
Created attachment 369934 [details] WIP patch * Removed the ANGLE hack * Do not register an atexit handler to cleanup EGL display for Windows * Condition out an assertion in ~PlatformDisplay for Windows
Don Olmstead
Comment 32 2019-05-15 09:27:55 PDT
Comment on attachment 369934 [details] WIP patch View in context: https://bugs.webkit.org/attachment.cgi?id=369934&action=review Looks good. In the final patch you should do if (ENABLE_WEBKIT) around the USE and ENABLE flags until we completely turn off legacy > Source/WebKit/WebProcess/WebPage/WebPage.h:969 > +#if PLATFORM(WIN) && USE(TEXTURE_MAPPER_GL) Good catch that this was dead code in GTK.
Don Olmstead
Comment 33 2019-05-15 10:24:01 PDT
I see Web Inspector crashing at startup with this patch. We're doing some work with remote inspector on WinCairo so we can still land this but its something to note. WebGL demos seemed to work fine but it was reporting 30 fps as the framerate.
Fujii Hironori
Comment 34 2019-05-15 18:53:12 PDT
(In reply to Don Olmstead from comment #32) > Looks good. In the final patch you should do if (ENABLE_WEBKIT) around the > USE and ENABLE flags until we completely turn off legacy I plan to take more aggressive approach. I'm going to disable AC in WinCairo WK1 and remove GraphicsLayerTextureMapper. If someone want to use AC in WK1 in the future and aims to maintain, s/he should port CoordinatedGraphicsLayer to WinCairo WK1.
Fujii Hironori
Comment 35 2019-05-15 18:57:35 PDT
(In reply to Don Olmstead from comment #33) > I see Web Inspector crashing at startup with this patch. Thanks for testing, but I don't see any crash.
Fujii Hironori
Comment 36 2019-05-15 19:00:24 PDT
(In reply to Don Olmstead from comment #33) > WebGL demos seemed to work fine but it was reporting 30 > fps as the framerate. I don't know the reason, but my DisplayRefreshMonitorWin implementation is supper sloppy at the moment.
Fujii Hironori
Comment 37 2019-05-19 22:59:39 PDT
Created attachment 370239 [details] WIP patch * Rebased onto ToT
Fujii Hironori
Comment 38 2019-05-29 23:04:59 PDT
Created attachment 370924 [details] WIP patch * Rebased onto ToT
Fujii Hironori
Comment 39 2020-02-20 21:10:23 PST
Created attachment 391378 [details] WIP patch * Rebased onto ToT
Fujii Hironori
Comment 40 2020-02-20 21:18:57 PST
Crashed in ANGLE while visiting https://webkit.org/. But, this crash isn't reproducible. > libGLESv2.dll!rx::Framebuffer11::markAttachmentsDirty(const gl::Context * context=0x000001804a86d5c0) Line 68 C++ > libGLESv2.dll!rx::StateManager11::updateState(const gl::Context * context=0x000001804a86d5c0, gl::PrimitiveMode mode=TriangleFan, int firstVertex=0, int vertexOrIndexCount=4, gl::DrawElementsType indexTypeOrInvalid=InvalidEnum, const void * indices=0x0000000000000000, int instanceCount=0, int baseVertex=0) Line 2178 C++ > libGLESv2.dll!rx::Context11::drawArrays(const gl::Context * context=0x000001804a86d5c0, gl::PrimitiveMode mode=TriangleFan, int first=0, int count=4) Line 271 C++ > libGLESv2.dll!gl::Context::drawArrays(gl::PrimitiveMode mode=TriangleFan, int first=0, int count=4) Line 112 C++ > libGLESv2.dll!gl::DrawArrays(unsigned int mode=6, int first=0, int count=4) Line 929 C++ > libGLESv2.dll!glDrawArrays(unsigned int mode=6, int first=0, int count=4) Line 261 C++ > WebKit2.dll!WebCore::TextureMapperGL::drawUnitRect(WebCore::TextureMapperShaderProgram & program={...}, unsigned int drawingMode=6) Line 738 C++ > WebKit2.dll!WebCore::TextureMapperGL::draw(const WebCore::FloatRect & rect={...}, const WebCore::TransformationMatrix & modelViewMatrix={...}, WebCore::TextureMapperShaderProgram & program={...}, unsigned int drawingMode=6, int flags=128) Line 766 C++ > WebKit2.dll!WebCore::TextureMapperGL::drawTexturedQuadWithProgram(WebCore::TextureMapperShaderProgram & program={...}, const WTF::Vector<std::pair<unsigned int,unsigned int>,0,WTF::CrashOnOverflow,16,WTF::FastMalloc> & texturesAndSamplers={...}, int flags=128, const WebCore::IntSize & size={...}, const WebCore::FloatRect & rect={...}, const WebCore::TransformationMatrix & modelViewMatrix={...}, float opacity=1.00000000) Line 802 C++ > WebKit2.dll!WebCore::TextureMapperGL::drawTexturedQuadWithProgram(WebCore::TextureMapperShaderProgram & program={...}, unsigned int texture=10, int flags=128, const WebCore::IntSize & size={...}, const WebCore::FloatRect & rect={...}, const WebCore::TransformationMatrix & modelViewMatrix={...}, float opacity=1.00000000) Line 813 C++ > WebKit2.dll!WebCore::TextureMapperGL::drawTexture(unsigned int texture=10, int flags=128, const WebCore::IntSize & textureSize={...}, const WebCore::FloatRect & targetRect={...}, const WebCore::TransformationMatrix & modelViewMatrix={...}, float opacity=1.00000000, unsigned int exposedEdges=0) Line 505 C++ > WebKit2.dll!WebCore::TextureMapperGL::drawTexture(const WebCore::BitmapTexture & texture={...}, const WebCore::FloatRect & targetRect={...}, const WebCore::TransformationMatrix & matrix={...}, float opacity=1.00000000, unsigned int exposedEdges=0) Line 464 C++ > WebKit2.dll!WebCore::TextureMapperTile::paint(WebCore::TextureMapper & textureMapper={...}, const WebCore::TransformationMatrix & transform={...}, float opacity=1.00000000, const unsigned int exposedEdges=0) Line 73 C++ > WebKit2.dll!WebCore::CoordinatedBackingStore::paintTilesToTextureMapper(WTF::Vector<WebCore::TextureMapperTile *,0,WTF::CrashOnOverflow,16,WTF::FastMalloc> & tiles={...}, WebCore::TextureMapper & textureMapper={...}, const WebCore::TransformationMatrix & transform={...}, float opacity=1.00000000, const WebCore::FloatRect & rect={...}) Line 95 C++ > WebKit2.dll!WebCore::CoordinatedBackingStore::paintToTextureMapper(WebCore::TextureMapper & textureMapper={...}, const WebCore::FloatRect & targetRect={...}, const WebCore::TransformationMatrix & transform={...}, float opacity=1.00000000) Line 138 C++ > WebKit2.dll!WebCore::TextureMapperLayer::paintSelf(const WebCore::TextureMapperPaintOptions & options={...}) Line 173 C++ > WebKit2.dll!WebCore::TextureMapperLayer::paintSelfAndChildren(const WebCore::TextureMapperPaintOptions & options={...}) Line 209 C++ > WebKit2.dll!WebCore::TextureMapperLayer::paintSelfAndChildrenWithReplica(const WebCore::TextureMapperPaintOptions & options={...}) Line 271 C++ > WebKit2.dll!WebCore::TextureMapperLayer::paintRecursive(const WebCore::TextureMapperPaintOptions & options={...}) Line 471 C++ > WebKit2.dll!WebCore::TextureMapperLayer::paintSelfAndChildren(const WebCore::TextureMapperPaintOptions & options={...}) Line 230 C++ > WebKit2.dll!WebCore::TextureMapperLayer::paintSelfAndChildrenWithReplica(const WebCore::TextureMapperPaintOptions & options={...}) Line 271 C++ > WebKit2.dll!WebCore::TextureMapperLayer::paintRecursive(const WebCore::TextureMapperPaintOptions & options={...}) Line 471 C++ > WebKit2.dll!WebCore::TextureMapperLayer::paintSelfAndChildren(const WebCore::TextureMapperPaintOptions & options={...}) Line 230 C++ > WebKit2.dll!WebCore::TextureMapperLayer::paintSelfAndChildrenWithReplica(const WebCore::TextureMapperPaintOptions & options={...}) Line 271 C++ > WebKit2.dll!WebCore::TextureMapperLayer::paintRecursive(const WebCore::TextureMapperPaintOptions & options={...}) Line 471 C++ > WebKit2.dll!WebCore::TextureMapperLayer::paintSelfAndChildren(const WebCore::TextureMapperPaintOptions & options={...}) Line 230 C++ > WebKit2.dll!WebCore::TextureMapperLayer::paintSelfAndChildrenWithReplica(const WebCore::TextureMapperPaintOptions & options={...}) Line 271 C++ > WebKit2.dll!WebCore::TextureMapperLayer::paintRecursive(const WebCore::TextureMapperPaintOptions & options={...}) Line 471 C++ > WebKit2.dll!WebCore::TextureMapperLayer::paintSelfAndChildren(const WebCore::TextureMapperPaintOptions & options={...}) Line 230 C++ > WebKit2.dll!WebCore::TextureMapperLayer::paintSelfAndChildrenWithReplica(const WebCore::TextureMapperPaintOptions & options={...}) Line 271 C++ > WebKit2.dll!WebCore::TextureMapperLayer::paintRecursive(const WebCore::TextureMapperPaintOptions & options={...}) Line 471 C++ > WebKit2.dll!WebCore::TextureMapperLayer::paintSelfAndChildren(const WebCore::TextureMapperPaintOptions & options={...}) Line 230 C++ > WebKit2.dll!WebCore::TextureMapperLayer::paintSelfAndChildrenWithReplica(const WebCore::TextureMapperPaintOptions & options={...}) Line 271 C++ > WebKit2.dll!WebCore::TextureMapperLayer::paintRecursive(const WebCore::TextureMapperPaintOptions & options={...}) Line 471 C++ > WebKit2.dll!WebCore::TextureMapperLayer::paintSelfAndChildren(const WebCore::TextureMapperPaintOptions & options={...}) Line 230 C++ > WebKit2.dll!WebCore::TextureMapperLayer::paintSelfAndChildrenWithReplica(const WebCore::TextureMapperPaintOptions & options={...}) Line 271 C++ > WebKit2.dll!WebCore::TextureMapperLayer::paintRecursive(const WebCore::TextureMapperPaintOptions & options={...}) Line 471 C++ > WebKit2.dll!WebCore::TextureMapperLayer::paint() Line 138 C++ > WebKit2.dll!WebKit::CoordinatedGraphicsScene::paintToCurrentGLContext(const WebCore::TransformationMatrix & matrix={...}, const WebCore::FloatRect & clipRect={...}, unsigned int PaintFlags=0) Line 80 C++ > WebKit2.dll!WebKit::ThreadedCompositor::renderLayerTree() Line 227 C++ > WebKit2.dll!`WebKit::ThreadedCompositor::ThreadedCompositor'::`1'::<lambda_1_>::operator()() Line 56 C++ > WebKit2.dll!WTF::Detail::CallableWrapper<`WebKit::ThreadedCompositor::ThreadedCompositor'::`1'::<lambda_1_>,void>::call() Line 52 C++ > WebKit2.dll!WTF::Function<void __cdecl(void)>::operator()() Line 85 C++ > WebKit2.dll!WebKit::CompositingRunLoop::updateTimerFired() Line 189 C++ > WebKit2.dll!WTF::RunLoop::Timer<WebKit::CompositingRunLoop>::fired() Line 168 C++ > WTF.dll!WTF::RunLoop::TimerBase::timerFired() Line 153 C++ > WTF.dll!WTF::RunLoop::wndProc(HWND__ * hWnd=0x00000000004a050a, unsigned int message=275, unsigned __int64 wParam=1650515590360, __int64 lParam=0) Line 60 C++ > WTF.dll!WTF::RunLoop::RunLoopWndProc(HWND__ * hWnd=0x00000000004a050a, unsigned int message=275, unsigned __int64 wParam=1650515590360, __int64 lParam=0) Line 39 C++ > [External Code] > WTF.dll!WTF::RunLoop::run() Line 74 C++ > WebKit2.dll!`WebKit::createRunLoop'::`2'::<lambda_1>::operator()() Line 50 C++ > WebKit2.dll!WTF::Detail::CallableWrapper<`WebKit::createRunLoop'::`2'::<lambda_1>,void>::call() Line 52 C++ > WTF.dll!WTF::Function<void __cdecl(void)>::operator()() Line 85 C++ > WTF.dll!WTF::Thread::entryPoint(WTF::Thread::NewThreadContext * newThreadContext=0x000001804a5e0c00) Line 149 C++ > WTF.dll!WTF::wtfThreadEntryPoint(void * data=0x000001804a5e0c00) Line 153 C++ > [External Code]
Fujii Hironori
Comment 41 2020-02-20 22:30:18 PST
* It's easy to crash in glDrawArrays of ANGLE by visiting web sites or opening Layers tab of web inspector * video play back performs badly I guess unimplemented DisplayRefreshMonitorWin is the cause * Resising WebView window shows visual glitches Once streching the current content to the new window size, then repainted with the corrent new window size * animation hiccup happens by reloading https://webkit.org/
Fujii Hironori
Comment 42 2020-02-20 22:36:12 PST
* WebInspector Element hilight starts working, but it hilights the different node mouse cursor is pointing in high DPI I think this is a high DPI issue (Bug 196339) Suprisingly, 100% DPI still has another wrong position issue
Fujii Hironori
Comment 43 2020-04-22 00:45:01 PDT
Created attachment 397177 [details] WIP patch
Fujii Hironori
Comment 44 2020-04-28 22:40:25 PDT
One more issue. * ANGEL crashes by openning AC-mode pages (for example, https://webkit.org/) in two windows.
Fujii Hironori
Comment 45 2020-05-07 00:01:29 PDT
Comment on attachment 391378 [details] WIP patch Unfortunately, it turned out that ANGLE DirectX backend doesn't support multithreading. 2464 - Vulkan: Support running GL commands from multiple threads simultaneously - angleproject https://bugs.chromium.org/p/angleproject/issues/detail?id=2464
Fujii Hironori
Comment 46 2021-01-26 18:34:16 PST
Created attachment 418496 [details] WIP patch
Fujii Hironori
Comment 47 2021-02-02 20:57:45 PST
ANGLE D3D11 renderer supports multithreading. https://chromium.googlesource.com/angle/angle/+/192a0147c3fe465650b3a3ef45ea61c02b2de5a1 https://chromium.googlesource.com/angle/angle/+/e7ca0aa289b0d9a9df8f4099d7630c652c570a0e A build flag ANGLE_FORCE_CONTEXT_CHECK_EVERY_CALL needs to be defined.
Fujii Hironori
Comment 48 2021-02-03 13:36:41 PST
Which thread to run WebGL context? 1. Running WebGL context in the main thread Needs to transfer the WebGL output texture from the main thread to the compositor threads. Coordinated Graphics is using multiple textures. 2. Running WebGL context in the compositor thread(s) Needs to transfer WebGL commands from the main thread to the compositor thread(s).
Fujii Hironori
Comment 49 2021-02-07 23:24:32 PST
I'm facing problems of Coordinated Graphics * Doesn't support compositing in GPU process at the moment * Its architecture has been significantly changed since Multi-Process Coordinated Graphics was removed * Doesn't outperform GraphicsLayerTextureMapper (I don't know why) * Which thread to run WebGL context? (Comment 48)
Fujii Hironori
Comment 50 2021-07-26 16:53:42 PDT
(In reply to Fujii Hironori from comment #49) > * Doesn't support compositing in GPU process at the moment > * Its architecture has been significantly changed since Multi-Process > Coordinated Graphics was removed Filed : Bug 228308 – [WinCairo] New GraphicsLayer for GPU process mode
Fujii Hironori
Comment 51 2021-11-01 19:23:43 PDT
Won't fix. Bug 228308 – [WinCairo] New GraphicsLayer for GPU process mode Bug 232555 – [WinCairo] Enable gpu_process_canvas_rendering and gpu_process_webgl by default
Note You need to log in before you can comment on or make changes to this bug.