[webkit-changes] [WebKit/WebKit] 0e48ee: [GTK] Use three buffers for DMA-BUF renderer

Carlos Garcia Campos noreply at github.com
Thu Jun 15 04:02:09 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 0e48ee99a1fc29e246900829c7e241587e59d22d
      https://github.com/WebKit/WebKit/commit/0e48ee99a1fc29e246900829c7e241587e59d22d
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2023-06-15 (Thu, 15 Jun 2023)

  Changed paths:
    M Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.cpp
    M Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.h
    M Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.messages.in
    M Source/WebKit/WebProcess/WebPage/gtk/AcceleratedSurfaceDMABuf.cpp
    M Source/WebKit/WebProcess/WebPage/gtk/AcceleratedSurfaceDMABuf.h

  Log Message:
  -----------
  [GTK] Use three buffers for DMA-BUF renderer
https://bugs.webkit.org/show_bug.cgi?id=257475

Reviewed by Alejandro G. Castro.

Two buffers is not enough, because we might be rendering in the UI
process with the buffer that is being used by the web process. The first
time we render a frame in the UI process we notify the web process that
the buffer has been painted and web process does a swap and starts
rendering the next frame. If there's a web view redraw before the next
frame message is received in the UI process we would be using the
current web process back buffer to repaint.

This patch adds a third buffer, the display buffer, that is the one
always used by the UI process for rendering and ensured that is never
used by the web process as the back buffer until a new display buffer
is set in the UI process.

* Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.cpp:
(WebKit::AcceleratedBackingStoreDMABuf::Texture::Texture):
(WebKit::AcceleratedBackingStoreDMABuf::Texture::~Texture):
(WebKit::AcceleratedBackingStoreDMABuf::Texture::frame):
(WebKit::AcceleratedBackingStoreDMABuf::Texture::willDisplayFrame):
(WebKit::AcceleratedBackingStoreDMABuf::Texture::prepareForRendering):
(WebKit::AcceleratedBackingStoreDMABuf::Surface::Surface):
(WebKit::AcceleratedBackingStoreDMABuf::Surface::~Surface):
(WebKit::AcceleratedBackingStoreDMABuf::Surface::frame):
(WebKit::AcceleratedBackingStoreDMABuf::Surface::willDisplayFrame):
(WebKit::AcceleratedBackingStoreDMABuf::Surface::prepareForRendering):
(WebKit::AcceleratedBackingStoreDMABuf::configure):
(WebKit::AcceleratedBackingStoreDMABuf::configureSHM):
(WebKit::AcceleratedBackingStoreDMABuf::createSource):
(WebKit::AcceleratedBackingStoreDMABuf::frame):
(WebKit::AcceleratedBackingStoreDMABuf::willDisplayFrame):
(WebKit::AcceleratedBackingStoreDMABuf::snapshot):
(WebKit::AcceleratedBackingStoreDMABuf::paint):
(WebKit::AcceleratedBackingStoreDMABuf::Texture::swap): Deleted.
(WebKit::AcceleratedBackingStoreDMABuf::Surface::swap): Deleted.
* Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.h:
* Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.messages.in:
* Source/WebKit/WebProcess/WebPage/gtk/AcceleratedSurfaceDMABuf.cpp:
(WebKit::AcceleratedSurfaceDMABuf::RenderTarget::RenderTarget):
(WebKit::AcceleratedSurfaceDMABuf::RenderTarget::~RenderTarget):
(WebKit::AcceleratedSurfaceDMABuf::RenderTarget::didRenderFrame):
(WebKit::AcceleratedSurfaceDMABuf::RenderTarget::didDisplayFrame):
(WebKit::AcceleratedSurfaceDMABuf::RenderTargetEGLImage::create):
(WebKit::AcceleratedSurfaceDMABuf::RenderTargetEGLImage::RenderTargetEGLImage):
(WebKit::AcceleratedSurfaceDMABuf::RenderTargetEGLImage::~RenderTargetEGLImage):
(WebKit::AcceleratedSurfaceDMABuf::RenderTargetEGLImage::didRenderFrame):
(WebKit::AcceleratedSurfaceDMABuf::RenderTargetEGLImage::didDisplayFrame):
(WebKit::AcceleratedSurfaceDMABuf::RenderTargetSHMImage::create):
(WebKit::AcceleratedSurfaceDMABuf::RenderTargetSHMImage::RenderTargetSHMImage):
(WebKit::AcceleratedSurfaceDMABuf::RenderTargetSHMImage::didRenderFrame):
(WebKit::AcceleratedSurfaceDMABuf::RenderTargetSHMImage::didDisplayFrame):
(WebKit::AcceleratedSurfaceDMABuf::frameDone):
(WebKit::AcceleratedSurfaceDMABuf::RenderTarget::swap): Deleted.
(WebKit::AcceleratedSurfaceDMABuf::RenderTargetEGLImage::swap): Deleted.
(WebKit::AcceleratedSurfaceDMABuf::RenderTargetSHMImage::didRenderFrame const): Deleted.
(WebKit::AcceleratedSurfaceDMABuf::RenderTargetSHMImage::swap): Deleted.
* Source/WebKit/WebProcess/WebPage/gtk/AcceleratedSurfaceDMABuf.h:

Canonical link: https://commits.webkit.org/265192@main




More information about the webkit-changes mailing list