Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: df6c49376568899ed290c6477d068d1f9e3fff58
      
https://github.com/WebKit/WebKit/commit/df6c49376568899ed290c6477d068d1f9e3fff58
  Author: Mike Wyrzykowski <[email protected]>
  Date:   2025-12-04 (Thu, 04 Dec 2025)

  Changed paths:
    M Source/WebGPU/WebGPU/BindableResource.h
    M Source/WebGPU/WebGPU/Buffer.h
    M Source/WebGPU/WebGPU/Buffer.mm
    M Source/WebGPU/WebGPU/CommandEncoder.h
    M Source/WebGPU/WebGPU/CommandEncoder.mm
    M Source/WebGPU/WebGPU/Queue.h
    M Source/WebGPU/WebGPU/RenderBundleEncoder.mm
    M Source/WebGPU/WebGPU/RenderPassEncoder.h
    M Source/WebGPU/WebGPU/RenderPassEncoder.mm

  Log Message:
  -----------
  WebGPU Crash on iOS with Time-Varying Mesh Access using instancing vertex 
buffers
https://bugs.webkit.org/show_bug.cgi?id=302711
rdar://165023230

Reviewed by Tadeu Zagallo.

The repro from 
https://bug-302711-attachments.webkit.org/attachment.cgi?id=477420
ended up generating 4000+ memory barriers which consumes ~1.5+ GB of memory, 
easily
causing any iOS device to jetsam.

The problem was the cache would compare values in ways which unintentionally led
to cache misses. Correct this by comparing the necessary values.

* Source/WebGPU/WebGPU/BindableResource.h:
(WebGPU::add):
(WebGPU::DrawIndexCacheContainerValue::DrawIndexCacheContainerValue):
* Source/WebGPU/WebGPU/Buffer.h:
* Source/WebGPU/WebGPU/Buffer.mm:
(WebGPU::makeKey):
(WebGPU::Buffer::canSkipDrawIndexedValidation const):

(WebGPU::Buffer::drawIndexedValidated):
Limit the cache size to something reasonable.

(WebGPU::verifyIndexBufferData):
(WebGPU::Buffer::takeSlowIndexValidationPath):
(WebGPU::Buffer::takeSlowIndirectIndexValidationPath):
(WebGPU::Buffer::skippedDrawIndirectIndexedValidation):
* Source/WebGPU/WebGPU/CommandEncoder.h:
* Source/WebGPU/WebGPU/CommandEncoder.mm:
(WebGPU::CommandEncoder::CommandEncoder):
(WebGPU::CommandEncoder::skippedDrawIndexedValidation):
* Source/WebGPU/WebGPU/Queue.h:
* Source/WebGPU/WebGPU/RenderBundleEncoder.mm:
(WebGPU::RenderBundleEncoder::drawIndexed):
* Source/WebGPU/WebGPU/RenderPassEncoder.h:
* Source/WebGPU/WebGPU/RenderPassEncoder.mm:
(WebGPU::typedCast):
(WebGPU::RenderPassEncoder::clampIndexBufferToValidValues):
(WebGPU::RenderPassEncoder::drawIndexed):
(WebGPU::RenderPassEncoder::executeBundles):

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



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

Reply via email to