[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