[webkit-changes] [WebKit/WebKit] f91524: [WebGPU] GPURenderBundleEncoder.drawIndirect and G...

mwyrzykowski noreply at github.com
Mon Nov 6 22:36:10 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: f915246e31c3594167be28c244e9790100234ecc
      https://github.com/WebKit/WebKit/commit/f915246e31c3594167be28c244e9790100234ecc
  Author: Mike Wyrzykowski <mwyrzykowski at apple.com>
  Date:   2023-11-06 (Mon, 06 Nov 2023)

  Changed paths:
    M LayoutTests/http/tests/webgpu/webgpu/api/operation/command_buffer/programmable/state_tracking-expected.txt
    M LayoutTests/http/tests/webgpu/webgpu/api/operation/memory_sync/buffer/multiple_buffers-expected.txt
    M LayoutTests/http/tests/webgpu/webgpu/api/operation/memory_sync/buffer/single_buffer-expected.txt
    M LayoutTests/http/tests/webgpu/webgpu/api/operation/memory_sync/texture/same_subresource-expected.txt
    M LayoutTests/platform/mac-wk2/TestExpectations
    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

  Log Message:
  -----------
  [WebGPU] GPURenderBundleEncoder.drawIndirect and GPURenderBundleEncoder.drawIndexedIndirect have synchronization issues
https://bugs.webkit.org/show_bug.cgi?id=264213
<radar://117948947>

Reviewed by Dan Glastonbury.

RenderBundleEncoder supports drawIndirect and drawIndexedIndirect but
MTLIndirectRenderCommand does not. Initially this was implemented by directly
reading the contents property of the indirect buffer, however that has synchronization
issues if the buffer is encoded in a copyBufferToBuffer command or similar.

Eventually we would like to build the ICBs via a compute kernel, as noted in
https://bugs.webkit.org/show_bug.cgi?id=264219.

However, until https://bugs.webkit.org/show_bug.cgi?id=264219 is implemented we will
support RenderBundles via command replay to avoid the synchronization issues described.

This also allows all the memory_sync tests to pass, so enable them.

* LayoutTests/http/tests/webgpu/webgpu/api/operation/memory_sync/buffer/multiple_buffers-expected.txt:
* LayoutTests/http/tests/webgpu/webgpu/api/operation/memory_sync/buffer/single_buffer-expected.txt:
* LayoutTests/http/tests/webgpu/webgpu/api/operation/memory_sync/texture/same_subresource-expected.txt:
* LayoutTests/platform/mac-wk2/TestExpectations:
* Source/WebGPU/WebGPU/RenderBundleEncoder.mm:
(WebGPU::RenderBundleEncoder::addResource):
(WebGPU::RenderBundleEncoder::drawIndexedIndirect):
(WebGPU::RenderBundleEncoder::drawIndirect):

* LayoutTests/http/tests/webgpu/webgpu/api/operation/command_buffer/programmable/state_tracking-expected.txt:

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




More information about the webkit-changes mailing list