[webkit-changes] [WebKit/WebKit] 18019c: Canvas captureStream produces stuttering with WebGL

Kimmo Kinnunen noreply at github.com
Sun Feb 11 23:58:31 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 18019ceed4fbceaa9fcc23b2f36758831b23a155
      https://github.com/WebKit/WebKit/commit/18019ceed4fbceaa9fcc23b2f36758831b23a155
  Author: Kimmo Kinnunen <kkinnunen at apple.com>
  Date:   2024-02-11 (Sun, 11 Feb 2024)

  Changed paths:
    M Source/WebCore/platform/graphics/cocoa/GraphicsContextGLCocoa.mm

  Log Message:
  -----------
  Canvas captureStream produces stuttering with WebGL
https://bugs.webkit.org/show_bug.cgi?id=268613
rdar://122619662

Reviewed by Youenn Fablet.

GraphicsContextGLCocoa::surfaceBufferToVideoFrame() will access the
display buffer IOSurface. The display buffer drawing must be scheduled
to Metal before this happens.

EGL_ReleaseTexImage() in bindNextDrawingBuffer used to ensure this, due
to ReleaseTexImage being specified as inducing a flush.

ANGLE changed flush semantics so that it does not wait until the
commands are scheduled. Thus long running WebGL could be left
unscheduled at the display buffer read for MSE capture track.

Fix by ensuring the display buffer commands are scheduled during
prepare, as is the intention.

* Source/WebCore/platform/graphics/cocoa/GraphicsContextGLCocoa.mm:
(WebCore::GraphicsContextGLCocoa::prepareForDisplayWithFinishedSignal):

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




More information about the webkit-changes mailing list