[webkit-changes] [WebKit/WebKit] df3099: [WebGPU] GPUCanvasContext.surfaceBufferToImageBuff...

mwyrzykowski noreply at github.com
Fri Aug 23 16:59:15 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: df309938f9794af725883822f477336fa36993f0
      https://github.com/WebKit/WebKit/commit/df309938f9794af725883822f477336fa36993f0
  Author: Mike Wyrzykowski <mwyrzykowski at apple.com>
  Date:   2024-08-23 (Fri, 23 Aug 2024)

  Changed paths:
    A LayoutTests/fast/webgpu/nocrash/fuzz-278545-expected.txt
    A LayoutTests/fast/webgpu/nocrash/fuzz-278545.html
    M Source/WebCore/Modules/WebGPU/Implementation/WebGPUCompositorIntegrationImpl.cpp
    M Source/WebCore/Modules/WebGPU/Implementation/WebGPUPresentationContextImpl.cpp
    M Source/WebCore/Modules/WebGPU/Implementation/WebGPUPresentationContextImpl.h
    M Source/WebCore/Modules/WebGPU/InternalAPI/WebGPUPresentationContext.h
    M Source/WebGPU/WebGPU/CommandBuffer.h
    M Source/WebGPU/WebGPU/CommandBuffer.mm
    M Source/WebGPU/WebGPU/CommandEncoder.h
    M Source/WebGPU/WebGPU/CommandEncoder.mm
    M Source/WebGPU/WebGPU/PresentationContext.h
    M Source/WebGPU/WebGPU/PresentationContext.mm
    M Source/WebGPU/WebGPU/PresentationContextIOSurface.h
    M Source/WebGPU/WebGPU/PresentationContextIOSurface.mm
    M Source/WebGPU/WebGPU/Texture.h
    M Source/WebGPU/WebGPU/Texture.mm
    M Source/WebGPU/WebGPU/WebGPUExt.h
    M Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemotePresentationContextProxy.cpp
    M Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemotePresentationContextProxy.h

  Log Message:
  -----------
  [WebGPU] GPUCanvasContext.surfaceBufferToImageBuffer doesn't handle failure when work is not submitted correctly
https://bugs.webkit.org/show_bug.cgi?id=278545
rdar://133539413

Reviewed by Dan Glastonbury.

Removing the semaphore is problematic because we never return to the offscreen canvas call
if the work is never submitted to the WebGPU::Queue. A prior attempt to do that in 281449 at main
was reverted due to causing a regression when work was never submitted.

Instead, if the semaphore times out, we can signal to the offscreen canvas that the call failed.

We were not previously handling the semaphore timeout which seems like the potential cause of
this issue.

* LayoutTests/fast/webgpu/nocrash/fuzz-278545-expected.txt: Added.
* LayoutTests/fast/webgpu/nocrash/fuzz-278545.html: Added.
Add regression test.

* Source/WebCore/Modules/WebGPU/Implementation/WebGPUCompositorIntegrationImpl.cpp:
(WebCore::WebGPU::CompositorIntegrationImpl::withDisplayBufferAsNativeImage):
* Source/WebCore/Modules/WebGPU/Implementation/WebGPUPresentationContextImpl.cpp:
(WebCore::WebGPU::PresentationContextImpl::getMetalTextureAsNativeImage):
* Source/WebCore/Modules/WebGPU/Implementation/WebGPUPresentationContextImpl.h:
* Source/WebCore/Modules/WebGPU/InternalAPI/WebGPUPresentationContext.h:
* Source/WebGPU/WebGPU/CommandBuffer.h:
* Source/WebGPU/WebGPU/CommandBuffer.mm:
(WebGPU::CommandBuffer::waitForCompletion):
* Source/WebGPU/WebGPU/CommandEncoder.h:
* Source/WebGPU/WebGPU/CommandEncoder.mm:
(WebGPU::CommandEncoder::waitForCommandBufferCompletion):
* Source/WebGPU/WebGPU/PresentationContext.h:
(WebGPU::PresentationContext::getTextureAsNativeImage):
* Source/WebGPU/WebGPU/PresentationContext.mm:
(wgpuSwapChainGetTextureAsNativeImage):
* Source/WebGPU/WebGPU/PresentationContextIOSurface.h:
* Source/WebGPU/WebGPU/PresentationContextIOSurface.mm:
(WebGPU::PresentationContextIOSurface::getTextureAsNativeImage):
* Source/WebGPU/WebGPU/Texture.h:
* Source/WebGPU/WebGPU/Texture.mm:
(WebGPU::Texture::waitForCommandBufferCompletion):
* Source/WebGPU/WebGPU/WebGPUExt.h:
* Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemotePresentationContextProxy.cpp:
(WebKit::WebGPU::RemotePresentationContextProxy::getMetalTextureAsNativeImage):
* Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemotePresentationContextProxy.h:

Canonical link: https://commits.webkit.org/282683@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