Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 87399235b55a2f1bc93cdd06c68bc72d5642f9a7
https://github.com/WebKit/WebKit/commit/87399235b55a2f1bc93cdd06c68bc72d5642f9a7
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/setShaderProgramHighlighted-webgpu-expected.txt
A LayoutTests/inspector/canvas/setShaderProgramHighlighted-webgpu.html
M LayoutTests/inspector/canvas/shaderProgram-add-remove-webgpu-expected.txt
M LayoutTests/inspector/canvas/shaderProgram-add-remove-webgpu.html
M LayoutTests/platform/glib/TestExpectations
M LayoutTests/platform/win/TestExpectations
M Source/JavaScriptCore/inspector/protocol/Canvas.json
M Source/WebCore/Modules/WebGPU/GPUCommandEncoder.cpp
M Source/WebCore/Modules/WebGPU/GPUPresentationContext.cpp
M Source/WebCore/Modules/WebGPU/GPURenderPassEncoder.cpp
M Source/WebCore/Modules/WebGPU/GPURenderPassEncoder.h
M Source/WebCore/Modules/WebGPU/GPURenderPipeline.cpp
M Source/WebCore/Modules/WebGPU/GPURenderPipeline.h
M Source/WebCore/Modules/WebGPU/GPUTexture.cpp
M Source/WebCore/Modules/WebGPU/GPUTexture.h
M Source/WebCore/Modules/WebGPU/GPUTextureView.cpp
M Source/WebCore/Modules/WebGPU/GPUTextureView.h
M Source/WebCore/inspector/InspectorInstrumentation.cpp
M Source/WebCore/inspector/InspectorInstrumentation.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/WebInspectorUI/UserInterface/Models/ShaderProgram.js
M Source/WebInspectorUI/UserInterface/Views/ShaderProgramTreeElement.js
Log Message:
-----------
Web Inspector: Canvas: support highlighting WebGPU render pipelines
https://bugs.webkit.org/show_bug.cgi?id=320701
Reviewed by Mike Wyrzykowski.
* Source/WebCore/Modules/WebGPU/GPUTexture.h:
(WebCore::GPUTexture::create):
(WebCore::GPUTexture::isCanvasBacking const): Added.
(WebCore::GPUTexture::GPUTexture):
* Source/WebCore/Modules/WebGPU/GPUTexture.cpp:
(WebCore::GPUTexture::GPUTexture):
(WebCore::GPUTexture::createView):
* Source/WebCore/Modules/WebGPU/GPUTextureView.h:
(WebCore::GPUTextureView::create):
(WebCore::GPUTextureView::isCanvasBacking const): Added.
(WebCore::GPUTextureView::GPUTextureView):
* Source/WebCore/Modules/WebGPU/GPUTextureView.cpp:
(WebCore::GPUTextureView::GPUTextureView):
* Source/WebCore/Modules/WebGPU/GPUPresentationContext.cpp:
(WebCore::GPUPresentationContext::getCurrentTexture):
Mark presentation textures and their views as canvas-backed.
* Source/WebCore/Modules/WebGPU/GPUCommandEncoder.cpp:
(WebCore::isCanvasBacking): Added.
(WebCore::canvasColorAttachmentMaskForDescriptor): Added.
(WebCore::GPUCommandEncoder::beginRenderPass):
Only highlight a multisample source when its store operation discards the
modified source.
* Source/WebCore/Modules/WebGPU/GPURenderPipeline.h:
(WebCore::GPURenderPipeline::createPipelineForInspectorHighlight const): Added.
* Source/WebCore/Modules/WebGPU/GPURenderPipeline.cpp:
(WebCore::isInspectorHighlightableCanvasFormat): Added.
(WebCore::usesBlendConstant): Added.
(WebCore::GPURenderPipeline::createPipelineForInspectorHighlight const): Added.
Create inspector-only pipeline variants asynchronously using the page
pipeline's original layout.
Blend the inspector highlight color into supported canvas attachments without
changing non-canvas-backed targets that depend on the render pass's shared
blend constant.
* Source/WebCore/Modules/WebGPU/GPURenderPassEncoder.h:
(WebCore::GPURenderPassEncoder::create):
(WebCore::GPURenderPassEncoder::GPURenderPassEncoder):
* Source/WebCore/Modules/WebGPU/GPURenderPassEncoder.cpp:
(WebCore::applyInspectorPipelineHighlight): Added.
(WebCore::restorePipelineAfterInspectorHighlight): Added.
(WebCore::GPURenderPassEncoder::GPURenderPassEncoder):
(WebCore::GPURenderPassEncoder::setPipeline):
(WebCore::GPURenderPassEncoder::draw):
(WebCore::GPURenderPassEncoder::drawIndexed):
(WebCore::GPURenderPassEncoder::drawIndirect):
(WebCore::GPURenderPassEncoder::drawIndexedIndirect):
(WebCore::GPURenderPassEncoder::setBlendConstant):
(WebCore::GPURenderPassEncoder::executeBundles):
(WebCore::GPURenderPassEncoder::end):
Record canvas attachment masks to temporarily apply a cached highlighted
replacement for direct draws.
* Source/WebCore/inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::renderPipelineForWebGPUHighlighting): Added.
(WebCore::InspectorInstrumentation::renderPipelineForWebGPUHighlightingImpl):
Added.
* Source/WebCore/inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::renderPipelineForWebGPUHighlightingImpl):
Added.
Request highlighted pipeline variants without doing any work when no inspector
frontend is attached.
* Source/WebCore/inspector/InspectorShaderProgram.h:
(WebCore::InspectorShaderProgram::setHighlighted):
(WebCore::InspectorShaderProgram::invalidateRenderPipelinesForHighlighting):
Added.
(WebCore::InspectorShaderProgram::prepareRenderPipelinesForHighlighting): Added.
(WebCore::InspectorShaderProgram::requestRenderPipelineForHighlighting): Added.
(WebCore::InspectorShaderProgram::renderPipelineForHighlighting): Added.
* Source/WebCore/inspector/InspectorShaderProgram.cpp:
(WebCore::InspectorShaderProgram::updateShader):
(WebCore::InspectorShaderProgram::setHighlighted):
(WebCore::InspectorShaderProgram::invalidateRenderPipelinesForHighlighting):
Added.
(WebCore::InspectorShaderProgram::prepareRenderPipelinesForHighlighting): Added.
(WebCore::InspectorShaderProgram::requestRenderPipelineForHighlighting): Added.
(WebCore::InspectorShaderProgram::renderPipelineForHighlighting): Added.
Allow WebGL programs and WebGPU render pipelines with fragment stages to be
highlighted.
* Source/JavaScriptCore/inspector/protocol/Canvas.json:
* Source/WebCore/inspector/agents/InspectorCanvasAgent.h:
(WebCore::InspectorCanvasAgent::setShaderProgramHighlighted):
(WebCore::InspectorCanvasAgent::renderPipelineForWebGPUHighlighting): Added.
* Source/WebCore/inspector/agents/InspectorCanvasAgent.cpp:
(WebCore::InspectorCanvasAgent::setShaderProgramHighlighted):
(WebCore::InspectorCanvasAgent::renderPipelineForWebGPUHighlighting): Added.
Expose asynchronous highlighting for supported WebGPU render pipelines.
* Source/WebInspectorUI/UserInterface/Models/ShaderProgram.js:
(WI.ShaderProgram.prototype.get supportsHighlighting): Added.
(WI.ShaderProgram.prototype.showHighlight):
(WI.ShaderProgram.prototype.hideHighlight):
* Source/WebInspectorUI/UserInterface/Views/ShaderProgramTreeElement.js:
(WI.ShaderProgramTreeElement.prototype.onattach):
Enable hover highlighting for WebGPU render pipelines.
* LayoutTests/inspector/canvas/resources/shaderProgram-utilities-webgpu.js:
(renderAndReadPixel):
(renderWithPipeline):
(renderWithRenderBundle):
(renderWithBoundPipeline):
(releaseDeviceKeepingPipelines):
* LayoutTests/inspector/canvas/setShaderProgramHighlighted-webgpu.html: Added.
* LayoutTests/inspector/canvas/setShaderProgramHighlighted-webgpu-expected.txt:
Added.
* LayoutTests/inspector/canvas/shaderProgram-add-remove-webgpu.html:
* LayoutTests/inspector/canvas/shaderProgram-add-remove-webgpu-expected.txt:
* LayoutTests/platform/glib/TestExpectations:
* LayoutTests/platform/win/TestExpectations:
Canonical link: https://commits.webkit.org/318668@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications