Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: fcd024f84dbb3e26a34b2ecf4d71e34d56b50107
      
https://github.com/WebKit/WebKit/commit/fcd024f84dbb3e26a34b2ecf4d71e34d56b50107
  Author: Devin Rousso <[email protected]>
  Date:   2026-08-05 (Wed, 05 Aug 2026)

  Changed paths:
    M LayoutTests/inspector/canvas/resources/shaderProgram-utilities-webgpu.js
    A LayoutTests/inspector/canvas/updateShader-webgpu-expected.txt
    A LayoutTests/inspector/canvas/updateShader-webgpu.html
    M LayoutTests/inspector/canvas/worker-webgpu-expected.txt
    M LayoutTests/inspector/canvas/worker-webgpu.html
    M LayoutTests/platform/glib/TestExpectations
    M LayoutTests/platform/win/TestExpectations
    M Source/JavaScriptCore/inspector/protocol/Canvas.json
    M Source/WebCore/Modules/WebGPU/GPUComputePassEncoder.cpp
    M Source/WebCore/Modules/WebGPU/GPUComputePipeline.cpp
    M Source/WebCore/Modules/WebGPU/GPUComputePipeline.h
    M Source/WebCore/Modules/WebGPU/GPUDevice.cpp
    M Source/WebCore/Modules/WebGPU/GPURenderBundleEncoder.cpp
    M Source/WebCore/Modules/WebGPU/GPURenderPassEncoder.cpp
    M Source/WebCore/Modules/WebGPU/GPURenderPipeline.cpp
    M Source/WebCore/Modules/WebGPU/GPURenderPipeline.h
    M Source/WebCore/Modules/WebGPU/GPUShaderModule.cpp
    M Source/WebCore/Modules/WebGPU/GPUShaderModule.h
    M Source/WebCore/Modules/WebGPU/Implementation/WebGPUDeviceImpl.cpp
    M Source/WebCore/Modules/WebGPU/Implementation/WebGPUDeviceImpl.h
    M Source/WebCore/Modules/WebGPU/InternalAPI/WebGPUDevice.h
    M Source/WebCore/inspector/InspectorShaderProgram.cpp
    M Source/WebCore/inspector/InspectorShaderProgram.h
    M Source/WebCore/inspector/agents/InspectorCanvasAgent.cpp
    M Source/WebCore/inspector/agents/InspectorCanvasAgent.h
    M Source/WebGPU/WebGPU/ComputePipeline.mm
    M Source/WebGPU/WebGPU/Device.h
    M Source/WebGPU/WebGPU/Device.mm
    M Source/WebGPU/WebGPU/RenderPipeline.mm
    M Source/WebGPU/WebGPU/WebGPUExt.h
    M Source/WebInspectorUI/UserInterface/Views/ShaderProgramContentView.js
    M Source/WebKit/GPUProcess/graphics/WebGPU/RemoteDevice.cpp
    M Source/WebKit/GPUProcess/graphics/WebGPU/RemoteDevice.h
    M Source/WebKit/GPUProcess/graphics/WebGPU/RemoteDevice.messages.in
    M Source/WebKit/Shared/WebGPU/WebGPUComputePipelineDescriptor.cpp
    M Source/WebKit/Shared/WebGPU/WebGPUConvertFromBackingContext.h
    M Source/WebKit/Shared/WebGPU/WebGPUPipelineDescriptorBase.cpp
    M Source/WebKit/Shared/WebGPU/WebGPURenderPipelineDescriptor.cpp
    M Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteDeviceProxy.cpp
    M Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteDeviceProxy.h

  Log Message:
  -----------
  Web Inspector: Canvas: support editing WebGPU shaders
https://bugs.webkit.org/show_bug.cgi?id=320699

Reviewed by Mike Wyrzykowski.

* Source/JavaScriptCore/inspector/protocol/Canvas.json:
* Source/WebCore/inspector/agents/InspectorCanvasAgent.h:
* Source/WebCore/inspector/agents/InspectorCanvasAgent.cpp:
(WebCore::InspectorCanvasAgent::updateShader):
Make `Canvas.updateShader` asynchronous so pipeline compilation can finish 
before replying.

* Source/WebCore/Modules/WebGPU/GPUShaderModule.h:
(WebCore::GPUShaderModule::create):
(WebCore::GPUShaderModule::source const): Deleted.
(WebCore::GPUShaderModule::descriptor const): Added.
* Source/WebCore/Modules/WebGPU/GPUShaderModule.cpp:
(WebCore::GPUShaderModule::GPUShaderModule):
(WebCore::GPUShaderModule::setLabel):
* Source/WebCore/Modules/WebGPU/GPUDevice.cpp:
(WebCore::GPUDevice::createShaderModule):
(WebCore::GPUDevice::createComputePipeline):
(WebCore::GPUDevice::createRenderPipeline):
(WebCore::GPUDevice::createComputePipelineAsync):
(WebCore::GPUDevice::createRenderPipelineAsync):
* Source/WebCore/Modules/WebGPU/GPUComputePipeline.h:
(WebCore::GPUComputePipeline::shaderSource const):
* Source/WebCore/Modules/WebGPU/GPUComputePipeline.cpp:
(WebCore::GPUComputePipeline::create):
(WebCore::GPUComputePipeline::GPUComputePipeline):
(WebCore::GPUComputePipeline::setLabel):
(WebCore::GPUComputePipeline::getBindGroupLayout):
(WebCore::GPUComputePipeline::updateShader): Added.
* Source/WebCore/Modules/WebGPU/GPUComputePassEncoder.cpp:
(WebCore::GPUComputePassEncoder::setPipeline):
* Source/WebCore/Modules/WebGPU/GPURenderPipeline.h:
(WebCore::GPURenderPipeline::vertexShaderSource const):
(WebCore::GPURenderPipeline::fragmentShaderSource const):
* Source/WebCore/Modules/WebGPU/GPURenderPipeline.cpp:
(WebCore::GPURenderPipeline::create):
(WebCore::GPURenderPipeline::GPURenderPipeline):
(WebCore::GPURenderPipeline::setLabel):
(WebCore::GPURenderPipeline::getBindGroupLayout):
(WebCore::GPURenderPipeline::updateVertexShader): Added.
(WebCore::GPURenderPipeline::updateFragmentShader): Added.
(WebCore::GPURenderPipeline::updateShader): Added.
* Source/WebCore/Modules/WebGPU/GPURenderBundleEncoder.cpp:
(WebCore::GPURenderBundleEncoder::setPipeline):
* Source/WebCore/Modules/WebGPU/GPURenderPassEncoder.cpp:
(WebCore::GPURenderPassEncoder::setPipeline):
* Source/WebCore/inspector/InspectorShaderProgram.h:
* Source/WebCore/inspector/InspectorShaderProgram.cpp:
(WebCore::InspectorShaderProgram::updateShader):
Retain the descriptors needed to recreate pipelines with their original layouts.
Preserve invalid editor source while continuing to use the last valid pipeline.
Clear compilation hints whose weak layouts may expire, and use weak captures 
while replacement is pending.
Use `pauseAllErrorReporting` while compiling replacement shader modules.
Protect pipeline arguments before passing their backings to encoder 
implementations.

* Source/WebCore/Modules/WebGPU/InternalAPI/WebGPUDevice.h:
(WebCore::WebGPU::Device::createComputePipelineWithPipelineLayoutFromPipelineAsync):
 Added.
(WebCore::WebGPU::Device::createRenderPipelineWithPipelineLayoutFromPipelineAsync):
 Added.
* Source/WebCore/Modules/WebGPU/Implementation/WebGPUDeviceImpl.h:
* Source/WebCore/Modules/WebGPU/Implementation/WebGPUDeviceImpl.cpp:
(WebCore::WebGPU::DeviceImpl::createComputePipelineWithPipelineLayoutFromPipelineAsync):
 Added.
(WebCore::WebGPU::DeviceImpl::createRenderPipelineWithPipelineLayoutFromPipelineAsync):
 Added.
* Source/WebGPU/WebGPU/WebGPUExt.h:
* Source/WebGPU/WebGPU/Device.h:
* Source/WebGPU/WebGPU/Device.mm:
(WebGPU::Device::pauseErrorReporting):
(WebGPU::wgpuDeviceCreateComputePipelineWithPipelineLayoutFromPipelineAsync): 
Added.
(WebGPU::wgpuDeviceCreateRenderPipelineWithPipelineLayoutFromPipelineAsync): 
Added.
* Source/WebGPU/WebGPU/ComputePipeline.mm:
(WebGPU::Device::createComputePipeline):
(WebGPU::Device::createComputePipelineWithPipelineLayoutFromPipelineAsync): 
Added.
* Source/WebGPU/WebGPU/RenderPipeline.mm:
(WebGPU::Device::createRenderPipeline):
(WebGPU::Device::createRenderPipelineWithPipelineLayoutFromPipelineAsync): 
Added.
Add inspector-only pipeline creation that reuses the replaced pipeline's layout 
and suppresses page-visible validation errors.

* Source/WebKit/Shared/WebGPU/WebGPUConvertFromBackingContext.h:
* Source/WebKit/Shared/WebGPU/WebGPUPipelineDescriptorBase.cpp:
* Source/WebKit/Shared/WebGPU/WebGPUComputePipelineDescriptor.cpp:
* Source/WebKit/Shared/WebGPU/WebGPURenderPipelineDescriptor.cpp:
(WebKit::WebGPU::ConvertFromBackingContext::convertFromBacking):
* Source/WebKit/GPUProcess/graphics/WebGPU/RemoteDevice.messages.in:
* Source/WebKit/GPUProcess/graphics/WebGPU/RemoteDevice.h:
* Source/WebKit/GPUProcess/graphics/WebGPU/RemoteDevice.cpp:
(WebKit::RemoteDevice::createComputePipelineWithPipelineLayoutFromPipeline): 
Added.
(WebKit::RemoteDevice::createRenderPipelineWithPipelineLayoutFromPipeline): 
Added.
* Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteDeviceProxy.h:
* Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteDeviceProxy.cpp:
(WebKit::RemoteDeviceProxy::createComputePipelineWithPipelineLayoutFromPipelineAsync):
 Added.
(WebKit::RemoteDeviceProxy::createRenderPipelineWithPipelineLayoutFromPipelineAsync):
 Added.
Allow layoutless replacement descriptors across IPC and wait for GPU-process 
compilation before creating replacement proxies.

* Source/WebInspectorUI/UserInterface/Views/ShaderProgramContentView.js:
(WI.ShaderProgramContentView.prototype.constructor):
Make WebGPU shader editors writable and debounce WGSL edits.

* LayoutTests/inspector/canvas/resources/shaderProgram-utilities-webgpu.js:
* LayoutTests/inspector/canvas/updateShader-webgpu.html: Added.
* LayoutTests/inspector/canvas/updateShader-webgpu-expected.txt: Added.
* LayoutTests/inspector/canvas/worker-webgpu.html:
* LayoutTests/inspector/canvas/worker-webgpu-expected.txt:
* LayoutTests/platform/glib/TestExpectations:
* LayoutTests/platform/win/TestExpectations:

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to