[webkit-changes] [WebKit/WebKit] 41096f: OffscreenCanvas fails to render to placeholder wit...
Kimmo Kinnunen
noreply at github.com
Wed Apr 10 15:19:25 PDT 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 41096f3920bd4eaf1cfd4c9e1217b51955305ce1
https://github.com/WebKit/WebKit/commit/41096f3920bd4eaf1cfd4c9e1217b51955305ce1
Author: Kimmo Kinnunen <kkinnunen at apple.com>
Date: 2024-04-10 (Wed, 10 Apr 2024)
Changed paths:
M LayoutTests/TestExpectations
A LayoutTests/fast/canvas/offscreen-nested-worker-serialization-expected.html
A LayoutTests/fast/canvas/offscreen-nested-worker-serialization.html
A LayoutTests/fast/canvas/resources/offscreen-nested-worker.js
A LayoutTests/fast/canvas/resources/offscreen-worker.js
M LayoutTests/webgl/resources/webgl_test_files/conformance2/offscreencanvas/offscreencanvas-sync.html
M Source/WebCore/html/OffscreenCanvas.cpp
M Source/WebCore/html/OffscreenCanvas.h
Log Message:
-----------
OffscreenCanvas fails to render to placeholder with nested workers
https://bugs.webkit.org/show_bug.cgi?id=272320
rdar://126069375
Reviewed by Matt Woodrow.
Upon constructing OffscreenCanvas from a detached OffscreenCanvas,
the OffscreenCanvas::create() function would post a main thread task
to populate the placeholder data (pipe and weak ptr to the placeholder).
If the OffscreenCanvas would be then detached and sent to a nested worker
before this main thread task would run, the detached OffscreenCanvas would
not have the placeholder data at all. This would cause failure to send
frames to the placeholder.
Fix by populating the placeholder data during transferControlToOffscreen(),
e.g. when creating the initial main thread OffscreenCanvas.
* LayoutTests/webgl/resources/webgl_test_files/conformance2/offscreencanvas/offscreencanvas-sync.html:
Fix the test to flush the offscreen canvas context after inserting the fence.
https://github.com/KhronosGroup/WebGL/issues/3639
* LayoutTests/fast/canvas/offscreen-nested-worker-serialization-expected.html: Added.
* LayoutTests/fast/canvas/offscreen-nested-worker-serialization.html: Added.
* LayoutTests/fast/canvas/resources/offscreen-nested-worker.js: Added.
(onmessage):
* LayoutTests/fast/canvas/resources/offscreen-worker.js: Added.
(onmessage):
* Source/WebCore/html/OffscreenCanvas.cpp:
(WebCore::OffscreenCanvasPlaceholderData::create):
(WebCore::OffscreenCanvasPlaceholderData::placeholder const):
(WebCore::OffscreenCanvasPlaceholderData::pipeSource const):
(WebCore::OffscreenCanvasPlaceholderData::OffscreenCanvasPlaceholderData):
(WebCore::DetachedOffscreenCanvas::DetachedOffscreenCanvas):
(WebCore::DetachedOffscreenCanvas::takePlaceholderData):
(WebCore::OffscreenCanvas::create):
(WebCore::OffscreenCanvas::OffscreenCanvas):
(WebCore::OffscreenCanvas::detach):
(WebCore::OffscreenCanvas::commitToPlaceholderCanvas):
(WebCore::OffscreenCanvas::scheduleCommitToPlaceholderCanvas):
(WebCore::DetachedOffscreenCanvas::takePlaceholderCanvas): Deleted.
(WebCore::OffscreenCanvas::setPlaceholderCanvas): Deleted.
(WebCore::OffscreenCanvas::pushBufferToPlaceholder): Deleted.
* Source/WebCore/html/OffscreenCanvas.h:
Canonical link: https://commits.webkit.org/277328@main
To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications
More information about the webkit-changes
mailing list