[webkit-changes] [WebKit/WebKit] 202249: [WebGPU] Implement RenderBundleEncoder which appea...
mwyrzykowski
noreply at github.com
Wed Dec 21 18:17:38 PST 2022
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 2022497de7f199c23db76c643ad1935e183d28cc
https://github.com/WebKit/WebKit/commit/2022497de7f199c23db76c643ad1935e183d28cc
Author: Mike Wyrzykowski <mwyrzykowski at apple.com>
Date: 2022-12-21 (Wed, 21 Dec 2022)
Changed paths:
M Source/WebGPU/WebGPU.xcodeproj/project.pbxproj
M Source/WebGPU/WebGPU/BindGroup.h
M Source/WebGPU/WebGPU/BindGroup.mm
A Source/WebGPU/WebGPU/BindableResource.h
M Source/WebGPU/WebGPU/ComputePipeline.mm
M Source/WebGPU/WebGPU/RenderBundle.h
M Source/WebGPU/WebGPU/RenderBundle.mm
M Source/WebGPU/WebGPU/RenderBundleEncoder.h
M Source/WebGPU/WebGPU/RenderBundleEncoder.mm
M Source/WebGPU/WebGPU/RenderPassEncoder.mm
M Source/WebGPU/WebGPU/RenderPipeline.mm
A Websites/webkit.org/demos/webgpu/indirect-command-buffer-textured-cube.html
M Websites/webkit.org/demos/webgpu/scripts/hello-triangle-msaa.js
A Websites/webkit.org/demos/webgpu/scripts/indirect-command-buffer-textured-cube.js
M Websites/webkit.org/demos/webgpu/scripts/instanced-textured-cube.js
Log Message:
-----------
[WebGPU] Implement RenderBundleEncoder which appears to be MTLIndirectCommandBuffer
https://bugs.webkit.org/show_bug.cgi?id=249257
<radar://103318351>
Reviewed by Dean Jackson.
Creation of the MTLIndirectCommandBuffer is deferred as we need to
tell Metal the maximum number of vertex and fragment buffers prior to creating the ICB,
along with the number of draw commands.
* Source/WebGPU/WebGPU.xcodeproj/project.pbxproj:
* Source/WebGPU/WebGPU/BindGroup.h:
(WebGPU::BindGroup::create):
(WebGPU::BindGroup::resources const):
* Source/WebGPU/WebGPU/BindGroup.mm:
(WebGPU::Device::createBindGroup):
(WebGPU::BindGroup::BindGroup):
Renamed struct moved to its own header.
* Source/WebGPU/WebGPU/BindableResource.h: Copied from Source/WebGPU/WebGPU/RenderBundle.mm.
Moved from BindGroup.h
* Source/WebGPU/WebGPU/RenderBundle.h:
(WebGPU::RenderBundle::create):
(WebGPU::RenderBundle::resources const):
* Source/WebGPU/WebGPU/RenderBundle.mm:
(WebGPU::RenderBundle::RenderBundle):
Cache the ICB and required resources.
* Source/WebGPU/WebGPU/RenderBundleEncoder.h:
(WebGPU::RenderBundleEncoder::create):
* Source/WebGPU/WebGPU/RenderBundleEncoder.mm:
(WebGPU::Device::createRenderBundleEncoder):
(WebGPU::RenderBundleEncoder::RenderBundleEncoder):
(WebGPU::RenderBundleEncoder::currentRenderCommand):
(WebGPU::RenderBundleEncoder::draw):
(WebGPU::RenderBundleEncoder::drawIndexed):
(WebGPU::RenderBundleEncoder::drawIndexedIndirect):
(WebGPU::RenderBundleEncoder::drawIndirect):
(WebGPU::RenderBundleEncoder::finish):
(WebGPU::RenderBundleEncoder::setBindGroup):
(WebGPU::RenderBundleEncoder::setIndexBuffer):
(WebGPU::RenderBundleEncoder::setPipeline):
(WebGPU::RenderBundleEncoder::setVertexBuffer):
Implement pipeline functions.
* Source/WebGPU/WebGPU/RenderPassEncoder.mm:
(WebGPU::RenderPassEncoder::executeBundles):
* Source/WebGPU/WebGPU/RenderPipeline.mm:
(WebGPU::Device::createRenderPipeline):
* Websites/webkit.org/demos/webgpu/indirect-command-buffer-textured-cube.html: Added.
* Websites/webkit.org/demos/webgpu/scripts/indirect-command-buffer-textured-cube.js: Added.
(async helloCube.frameUpdate):
(async helloCube):
Add ICB demo test.
* Websites/webkit.org/demos/webgpu/scripts/hello-triangle-msaa.js:
(async helloTriangle):
* Websites/webkit.org/demos/webgpu/scripts/instanced-textured-cube.js:
Miscellaneous test fixes observed running under the debug metal device.
Canonical link: https://commits.webkit.org/258226@main
More information about the webkit-changes
mailing list