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