[webkit-changes] [WebKit/WebKit] ff5072: WebGPU should be exposed in DedicatedWorkers

mwyrzykowski noreply at github.com
Fri Sep 29 23:12:45 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: ff507241e7dd8c7bc6d01f11027c09e8e3f0dc1b
      https://github.com/WebKit/WebKit/commit/ff507241e7dd8c7bc6d01f11027c09e8e3f0dc1b
  Author: Mike Wyrzykowski <mwyrzykowski at apple.com>
  Date:   2023-09-29 (Fri, 29 Sep 2023)

  Changed paths:
    M Source/JavaScriptCore/inspector/protocol/Canvas.json
    M Source/WebCore/Modules/WebGPU/GPU.idl
    M Source/WebCore/Modules/WebGPU/GPUAdapter.idl
    M Source/WebCore/Modules/WebGPU/GPUAdapterInfo.idl
    M Source/WebCore/Modules/WebGPU/GPUBindGroup.idl
    M Source/WebCore/Modules/WebGPU/GPUBindGroupLayout.idl
    M Source/WebCore/Modules/WebGPU/GPUBuffer.idl
    M Source/WebCore/Modules/WebGPU/GPUBufferUsage.idl
    M Source/WebCore/Modules/WebGPU/GPUColorWrite.idl
    M Source/WebCore/Modules/WebGPU/GPUCommandBuffer.idl
    M Source/WebCore/Modules/WebGPU/GPUCommandEncoder.idl
    M Source/WebCore/Modules/WebGPU/GPUCompilationInfo.idl
    M Source/WebCore/Modules/WebGPU/GPUCompilationMessage.idl
    M Source/WebCore/Modules/WebGPU/GPUComputePassEncoder.idl
    M Source/WebCore/Modules/WebGPU/GPUComputePipeline.idl
    M Source/WebCore/Modules/WebGPU/GPUDevice.idl
    M Source/WebCore/Modules/WebGPU/GPUDeviceLostInfo.idl
    M Source/WebCore/Modules/WebGPU/GPUExternalTexture.idl
    M Source/WebCore/Modules/WebGPU/GPUInternalError.idl
    M Source/WebCore/Modules/WebGPU/GPUMapMode.idl
    M Source/WebCore/Modules/WebGPU/GPUOutOfMemoryError.idl
    M Source/WebCore/Modules/WebGPU/GPUPipelineLayout.idl
    M Source/WebCore/Modules/WebGPU/GPUQuerySet.idl
    M Source/WebCore/Modules/WebGPU/GPUQueue.idl
    M Source/WebCore/Modules/WebGPU/GPURenderBundle.idl
    M Source/WebCore/Modules/WebGPU/GPURenderBundleEncoder.idl
    M Source/WebCore/Modules/WebGPU/GPURenderPassEncoder.idl
    M Source/WebCore/Modules/WebGPU/GPURenderPipeline.idl
    M Source/WebCore/Modules/WebGPU/GPUSampler.idl
    M Source/WebCore/Modules/WebGPU/GPUShaderModule.idl
    M Source/WebCore/Modules/WebGPU/GPUShaderStage.idl
    M Source/WebCore/Modules/WebGPU/GPUSupportedFeatures.idl
    M Source/WebCore/Modules/WebGPU/GPUSupportedLimits.idl
    M Source/WebCore/Modules/WebGPU/GPUTexture.idl
    M Source/WebCore/Modules/WebGPU/GPUTextureUsage.idl
    M Source/WebCore/Modules/WebGPU/GPUTextureView.idl
    M Source/WebCore/Modules/WebGPU/GPUUncapturedErrorEvent.idl
    M Source/WebCore/Modules/WebGPU/GPUValidationError.idl
    M Source/WebCore/html/OffscreenCanvas.cpp
    M Source/WebCore/html/OffscreenCanvas.h
    M Source/WebCore/html/OffscreenCanvas.idl
    M Source/WebCore/html/canvas/GPUCanvasContext.idl
    M Source/WebCore/html/canvas/GPUCanvasContextCocoa.h
    M Source/WebCore/html/canvas/GPUCanvasContextCocoa.mm
    M Source/WebCore/inspector/InspectorCanvas.cpp
    M Source/WebCore/page/Chrome.cpp
    M Source/WebCore/page/Chrome.h
    M Source/WebCore/page/ChromeClient.h
    M Source/WebCore/page/Navigator.cpp
    M Source/WebCore/page/WorkerNavigator.cpp
    M Source/WebCore/page/WorkerNavigator.h
    M Source/WebCore/platform/GraphicsClient.h
    M Source/WebKit/Shared/WTFArgumentCoders.serialization.in
    M Source/WebKit/Shared/WebGPU/WebGPUIdentifier.h
    M Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp
    M Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h
    M Source/WebKit/WebProcess/WebCoreSupport/WebWorkerClient.cpp
    M Source/WebKit/WebProcess/WebCoreSupport/WebWorkerClient.h
    M Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.h
    M Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.mm

  Log Message:
  -----------
  WebGPU should be exposed in DedicatedWorkers
https://bugs.webkit.org/show_bug.cgi?id=232542>
<radar://85108397>

Reviewed by Tadeu Zagallo.

Allow WebGPU to render in a web worker.

This patch is mostly mechanical and doesn't implement copying
the buffer from OffscreenCavnas, so nothing is visible, but
GPU frame capture indicates the expected results are rendered.

* Source/JavaScriptCore/inspector/protocol/Canvas.json:
* Source/WebCore/Modules/WebGPU/GPU.idl:
* Source/WebCore/Modules/WebGPU/GPUAdapter.idl:
* Source/WebCore/Modules/WebGPU/GPUAdapterInfo.idl:
* Source/WebCore/Modules/WebGPU/GPUBindGroup.idl:
* Source/WebCore/Modules/WebGPU/GPUBindGroupLayout.idl:
* Source/WebCore/Modules/WebGPU/GPUBuffer.idl:
* Source/WebCore/Modules/WebGPU/GPUBufferUsage.idl:
* Source/WebCore/Modules/WebGPU/GPUColorWrite.idl:
* Source/WebCore/Modules/WebGPU/GPUCommandBuffer.idl:
* Source/WebCore/Modules/WebGPU/GPUCommandEncoder.idl:
* Source/WebCore/Modules/WebGPU/GPUCompilationInfo.idl:
* Source/WebCore/Modules/WebGPU/GPUCompilationMessage.idl:
* Source/WebCore/Modules/WebGPU/GPUComputePassEncoder.idl:
* Source/WebCore/Modules/WebGPU/GPUComputePipeline.idl:
* Source/WebCore/Modules/WebGPU/GPUDevice.idl:
* Source/WebCore/Modules/WebGPU/GPUDeviceLostInfo.idl:
* Source/WebCore/Modules/WebGPU/GPUExternalTexture.idl:
* Source/WebCore/Modules/WebGPU/GPUInternalError.idl:
* Source/WebCore/Modules/WebGPU/GPUMapMode.idl:
* Source/WebCore/Modules/WebGPU/GPUOutOfMemoryError.idl:
* Source/WebCore/Modules/WebGPU/GPUPipelineLayout.idl:
* Source/WebCore/Modules/WebGPU/GPUQuerySet.idl:
* Source/WebCore/Modules/WebGPU/GPUQueue.idl:
* Source/WebCore/Modules/WebGPU/GPURenderBundle.idl:
* Source/WebCore/Modules/WebGPU/GPURenderBundleEncoder.idl:
* Source/WebCore/Modules/WebGPU/GPURenderPassEncoder.idl:
* Source/WebCore/Modules/WebGPU/GPURenderPipeline.idl:
* Source/WebCore/Modules/WebGPU/GPUSampler.idl:
* Source/WebCore/Modules/WebGPU/GPUShaderModule.idl:
* Source/WebCore/Modules/WebGPU/GPUShaderStage.idl:
* Source/WebCore/Modules/WebGPU/GPUSupportedFeatures.idl:
* Source/WebCore/Modules/WebGPU/GPUSupportedLimits.idl:
* Source/WebCore/Modules/WebGPU/GPUTexture.idl:
* Source/WebCore/Modules/WebGPU/GPUTextureUsage.idl:
* Source/WebCore/Modules/WebGPU/GPUTextureView.idl:
* Source/WebCore/Modules/WebGPU/GPUUncapturedErrorEvent.idl:
* Source/WebCore/Modules/WebGPU/GPUValidationError.idl:
* Source/WebCore/html/OffscreenCanvas.cpp:
(WebCore::OffscreenCanvas::createContextWebGPU):
(WebCore::OffscreenCanvas::getContext):
* Source/WebCore/html/OffscreenCanvas.h:
* Source/WebCore/html/OffscreenCanvas.idl:
* Source/WebCore/html/canvas/GPUCanvasContext.idl:
* Source/WebCore/html/canvas/GPUCanvasContextCocoa.h:
* Source/WebCore/html/canvas/GPUCanvasContextCocoa.mm:
(WebCore::GPUCanvasContextCocoa::htmlOrOffscreenCanvas const):
(WebCore::GPUCanvasContextCocoa::GPUCanvasContextCocoa):
(WebCore::GPUCanvasContextCocoa::prepareForDisplayWithPaint):
(WebCore::GPUCanvasContextCocoa::paintRenderingResultsToCanvas):
(WebCore::GPUCanvasContextCocoa::canvas):
(WebCore::GPUCanvasContextCocoa::markContextChangedAndNotifyCanvasObservers):
* Source/WebCore/inspector/InspectorCanvas.cpp:
(WebCore::InspectorCanvas::buildObjectForCanvas):
* Source/WebCore/page/Chrome.h:
* Source/WebCore/page/WorkerNavigator.cpp:
(WebCore::WorkerNavigator::gpu):

* Source/WebCore/page/WorkerNavigator.h:
* Source/WebCore/platform/GraphicsClient.h:
* Source/WebKit/Shared/WebGPU/WebGPUIdentifier.h:
Changed to AtomicObjectIdentifier as workers will render off the main thread.

* Source/WebKit/WebProcess/WebCoreSupport/WebWorkerClient.cpp:
(WebKit::WebWorkerClient::WebWorkerClient):
(WebKit::WebWorkerClient::clone):
(WebKit::WebWorkerClient::createGraphicsContextGL const):
(WebKit::WebWorkerClient::createGPUForWebGPU const):
* Source/WebKit/WebProcess/WebCoreSupport/WebWorkerClient.h:

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




More information about the webkit-changes mailing list