For each ANGLE-produced WebGL frame, we'd want to retrieve a dmabuf buffer via GBMBufferSwapchain, impose it as the backing for the texture that's being used as the default framebuffer color attachment, and finally push it into the rendering pipeline once the frame is complete. Upon the next frame the swapchain would provide a different buffer, and the cycle repeats.
Created attachment 454692 [details] WIP patch Early, but functions on the most basic WebGL content. It still needs cleanup, proper understanding of what's used in different configurations sharing this code, and how other things like preserved-drawing-buffer affect this.
Created attachment 455475 [details] WIP patch
Created attachment 455633 [details] WIP patch
Created attachment 455901 [details] WIP patch
Created attachment 455914 [details] Patch
Comment on attachment 455914 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=455914&action=review LGTM! Just check the unguarded line to make sure we do not break other compilations. > Source/WebCore/platform/graphics/texmap/GraphicsContextGLTextureMapperANGLE.cpp:476 > + m_swapchain.displayBO = WTFMove(m_swapchain.drawBO); This needs to be guarded with the TEXTURE_MAPPER_DMABUF. It is causing the wincairo failure.
Created attachment 455994 [details] Patch for landing
Committed r292025 (248968@main): <https://commits.webkit.org/248968@main> All reviewed patches have been landed. Closing bug and clearing flags on attachment 455994 [details].
<rdar://problem/90969336>