Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 59b6d9a2d0273c0aa2fd270cf726ea3b5c011c98
      
https://github.com/WebKit/WebKit/commit/59b6d9a2d0273c0aa2fd270cf726ea3b5c011c98
  Author: Mike Wyrzykowski <[email protected]>
  Date:   2026-08-04 (Tue, 04 Aug 2026)

  Changed paths:
    A 
LayoutTests/fast/webgpu/render-bundle-draw-indexed-indirect-clamped-expected.txt
    A LayoutTests/fast/webgpu/render-bundle-draw-indexed-indirect-clamped.html
    A LayoutTests/fast/webgpu/render-bundle-draw-indexed-indirect-expected.txt
    A 
LayoutTests/fast/webgpu/render-bundle-draw-indexed-indirect-invalidation-expected.txt
    A 
LayoutTests/fast/webgpu/render-bundle-draw-indexed-indirect-invalidation.html
    A LayoutTests/fast/webgpu/render-bundle-draw-indexed-indirect.html
    A LayoutTests/fast/webgpu/render-bundle-draw-indirect-clamped-expected.txt
    A LayoutTests/fast/webgpu/render-bundle-draw-indirect-clamped.html
    A LayoutTests/fast/webgpu/render-bundle-draw-indirect-expected.txt
    A LayoutTests/fast/webgpu/render-bundle-draw-indirect.html
    M 
LayoutTests/http/tests/webgpu/webgpu/api/operation/memory_sync/buffer/single_buffer-expected.txt
    M Source/WebGPU/WebGPU/BindableResource.h
    M Source/WebGPU/WebGPU/Buffer.h
    M Source/WebGPU/WebGPU/Buffer.mm
    M Source/WebGPU/WebGPU/CommandEncoder.mm
    M Source/WebGPU/WebGPU/Device.h
    M Source/WebGPU/WebGPU/Device.mm
    M Source/WebGPU/WebGPU/Queue.mm
    M Source/WebGPU/WebGPU/RenderBundleEncoder.h
    M Source/WebGPU/WebGPU/RenderBundleEncoder.mm
    M Source/WebGPU/WebGPU/RenderPassEncoder.h
    M Source/WebGPU/WebGPU/RenderPassEncoder.mm

  Log Message:
  -----------
  executeBundles re-replays bundles containing indirect draws and reconstructs 
ICBs every call — 30× frame-rate collapse vs direct encoding
https://bugs.webkit.org/show_bug.cgi?id=320490
rdar://183458069

Reviewed by Dan Glastonbury.

Fix performance issue from drawIndirect and drawIndexedIndirect into 
RenderBundles,
which WebKit strongly suggests using, but previously encountered a severe 
performance
cliff.

With this change, we are able to maintain 60 fps with 2000 indirect draws in a 
bundle
whereas previously we would drop under 1 fps.

Tests: fast/webgpu/render-bundle-draw-indexed-indirect.html
       fast/webgpu/render-bundle-draw-indirect.html

* LayoutTests/fast/webgpu/render-bundle-draw-indexed-indirect-expected.txt: 
Added.
* LayoutTests/fast/webgpu/render-bundle-draw-indexed-indirect.html: Added.
* LayoutTests/fast/webgpu/render-bundle-draw-indirect-expected.txt: Added.
* LayoutTests/fast/webgpu/render-bundle-draw-indirect.html: Added.
* Source/WebGPU/WebGPU/BindableResource.h:
* Source/WebGPU/WebGPU/Buffer.h:
(WebGPU::Buffer::contentsGeneration const):
* Source/WebGPU/WebGPU/Buffer.mm:
(WebGPU::Buffer::indirectBufferInvalidated):
* Source/WebGPU/WebGPU/Device.h:
* Source/WebGPU/WebGPU/Device.mm:
* Source/WebGPU/WebGPU/RenderBundleEncoder.h:
* Source/WebGPU/WebGPU/RenderBundleEncoder.mm:
(-[RenderBundleICBWithResources 
initWithICB:containerBuffer:pipelineState:depthStencilState:cullMode:frontFace:depthClipMode:depthBias:depthBiasSlopeScale:depthBiasClamp:fragmentDynamicOffsetsBuffer:pipeline:minVertexCounts:indirectDraws:outOfBoundsReadFlag:]):
(-[RenderBundleICBWithResources indirectDrawsForSlot]):
(WebGPU::makeRenderBundleICBWithResources):
(WebGPU::RenderBundleEncoder::drawIndexedIndirect):
(WebGPU::RenderBundleEncoder::drawIndirect):
(WebGPU::RenderBundleEncoder::cleanup):
(WebGPU::RenderBundleEncoder::splitICB):
(-[RenderBundleICBWithResources 
initWithICB:containerBuffer:pipelineState:depthStencilState:cullMode:frontFace:depthClipMode:depthBias:depthBiasSlopeScale:depthBiasClamp:fragmentDynamicOffsetsBuffer:pipeline:minVertexCounts:outOfBoundsReadFlag:]):
 Deleted.
* Source/WebGPU/WebGPU/RenderPassEncoder.h:
* Source/WebGPU/WebGPU/RenderPassEncoder.mm:
(WebGPU::checkForIndirectDrawDeviceLost):
(WebGPU::RenderPassEncoder::newZeroedIndirectScratch):
(WebGPU::RenderPassEncoder::clampIndirectBufferDispatchBatched):
(WebGPU::RenderPassEncoder::clampIndirectIndexBufferDispatch1Batched):
(WebGPU::RenderPassEncoder::clampIndirectIndexBufferDispatch2Batched):
(WebGPU::RenderPassEncoder::executeBundles):

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to