Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 1623111a075f7d416a24f31c74da76388b5129ed
      
https://github.com/WebKit/WebKit/commit/1623111a075f7d416a24f31c74da76388b5129ed
  Author: Mike Wyrzykowski <mwyrzykow...@apple.com>
  Date:   2024-05-20 (Mon, 20 May 2024)

  Changed paths:
    M LayoutTests/TestExpectations
    A LayoutTests/fast/webgpu/fuzz-274290-expected.txt
    A LayoutTests/fast/webgpu/fuzz-274290.html
    M Source/WebGPU/WebGPU/CommandEncoder.h
    M Source/WebGPU/WebGPU/CommandEncoder.mm
    M Source/WebGPU/WebGPU/ComputePassEncoder.h
    M Source/WebGPU/WebGPU/ComputePassEncoder.mm
    M Source/WebGPU/WebGPU/RenderPassEncoder.mm

  Log Message:
  -----------
  [WebGPU] Render / compute commands should be no-ops when the command buffer 
will be discarded
https://bugs.webkit.org/show_bug.cgi?id=274290
<radar://128202440>

Reviewed by Dan Glastonbury.

There was validation logic however it did not take into account
destroyed render targets, which are still valid to call commands
on.

A destroyed render target will result in the command buffer being
discarded when it is submitted, so we can make all the encoding
operations no-ops.

* LayoutTests/TestExpectations:
* LayoutTests/fast/webgpu/fuzz-274290-expected.txt: Added.
* LayoutTests/fast/webgpu/fuzz-274290.html: Added.
Add regression test.

* Source/WebGPU/WebGPU/CommandEncoder.h:
* Source/WebGPU/WebGPU/CommandEncoder.mm:
(WebGPU::CommandEncoder::submitWillBeInvalid const):
* Source/WebGPU/WebGPU/ComputePassEncoder.h:
(WebGPU::ComputePassEncoder::isValid const): Deleted.
* Source/WebGPU/WebGPU/ComputePassEncoder.mm:
(WebGPU::ComputePassEncoder::executePreDispatchCommands):
(WebGPU::ComputePassEncoder::dispatch):
(WebGPU::ComputePassEncoder::runPredispatchIndirectCallValidation):
(WebGPU::ComputePassEncoder::dispatchIndirect):
(WebGPU::ComputePassEncoder::setBindGroup):
(WebGPU::ComputePassEncoder::isValid const):
(WebGPU::ComputePassEncoder::computeCommandEncoder const):
* Source/WebGPU/WebGPU/RenderPassEncoder.mm:
(WebGPU::RenderPassEncoder::beginOcclusionQuery):
(WebGPU::RenderPassEncoder::endOcclusionQuery):
(WebGPU::RenderPassEncoder::errorValidatingAndBindingBuffers):
(WebGPU::RenderPassEncoder::executePreDrawCommands):
(WebGPU::RenderPassEncoder::draw):
(WebGPU::RenderPassEncoder::drawIndexed):
(WebGPU::RenderPassEncoder::drawIndexedIndirect):
(WebGPU::RenderPassEncoder::drawIndirect):
(WebGPU::RenderPassEncoder::executeBundles):
(WebGPU::RenderPassEncoder::renderCommandEncoder const):
(WebGPU::RenderPassEncoder::setBindGroup):
(WebGPU::RenderPassEncoder::setBlendConstant):
(WebGPU::RenderPassEncoder::setScissorRect):
(WebGPU::RenderPassEncoder::setStencilReference):
Call helper function so command recording becomes no-ops for
command buffers which will be discarded.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to