[webkit-changes] [WebKit/WebKit] 17f80e: [WebGPU] A RenderBundle with several calls to setP...

mwyrzykowski noreply at github.com
Thu Oct 26 14:23:08 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 17f80e19eb23c6d2878e2dacbb67a5f3cf4a42f0
      https://github.com/WebKit/WebKit/commit/17f80e19eb23c6d2878e2dacbb67a5f3cf4a42f0
  Author: Mike Wyrzykowski <mwyrzykowski at apple.com>
  Date:   2023-10-26 (Thu, 26 Oct 2023)

  Changed paths:
    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.h

  Log Message:
  -----------
  [WebGPU] A RenderBundle with several calls to setPipeline may not be built correctly
https://bugs.webkit.org/show_bug.cgi?id=263099
<radar://116893300>

Reviewed by Dan Glastonbury.

In WebGPU, the render pipeline state also constains depth stencil state,
cull mode, front facing, etc, but this is not possible to set on the ICB
commands.

So if a render bundle is encoding with varying state which can not be
encoded into the ICB, then we need to create several ICBs.

* Source/WebGPU/WebGPU/RenderBundle.h:
(WebGPU::RenderBundle::create):
(WebGPU::RenderBundle::isValid const):
(WebGPU::RenderBundle:: const):
(WebGPU::RenderBundle::indirectCommandBuffer const): Deleted.
(WebGPU::RenderBundle::resources const): Deleted.
(): Deleted.
* Source/WebGPU/WebGPU/RenderBundle.mm:
(WebGPU::RenderBundle::RenderBundle):
(WebGPU::RenderBundle::setLabel):
(WebGPU::RenderBundle::currentPipelineState const): Deleted.
(WebGPU::RenderBundle::depthStencilState const): Deleted.
(WebGPU::RenderBundle::cullMode const): Deleted.
(WebGPU::RenderBundle::frontFace const): Deleted.
(WebGPU::RenderBundle::depthClipMode const): Deleted.
* Source/WebGPU/WebGPU/RenderBundleEncoder.h:
* Source/WebGPU/WebGPU/RenderBundleEncoder.mm:
(-[RenderBundleICBWithResources initWithICB:pipelineState:depthStencilState:cullMode:frontFace:depthClipMode:]):
(-[RenderBundleICBWithResources resources]):
(WebGPU::makeRenderBundleICBWithResources):
(WebGPU::Device::createRenderBundleEncoder):
(WebGPU::RenderBundleEncoder::RenderBundleEncoder):
(WebGPU::RenderBundleEncoder::executePreDrawCommands):
(WebGPU::RenderBundleEncoder::draw):
(WebGPU::RenderBundleEncoder::drawIndexed):
(WebGPU::RenderBundleEncoder::drawIndexedIndirect):
(WebGPU::RenderBundleEncoder::drawIndirect):
(WebGPU::RenderBundleEncoder::endCurrentICB):
(WebGPU::RenderBundleEncoder::finish):
(WebGPU::RenderBundleEncoder::setBindGroup):
(WebGPU::RenderBundleEncoder::setIndexBuffer):
(WebGPU::icbNeedsToBeSplit):
(WebGPU::RenderBundleEncoder::setPipeline):
(WebGPU::RenderBundleEncoder::setVertexBuffer):
* Source/WebGPU/WebGPU/RenderPassEncoder.mm:
(WebGPU::RenderPassEncoder::executeBundles):
* Source/WebGPU/WebGPU/RenderPipeline.h:
(WebGPU::RenderPipeline::depthStencilDescriptor const):

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




More information about the webkit-changes mailing list