Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: e0a82ddfa60ac8ac327d645c214d092c792d0937
      
https://github.com/WebKit/WebKit/commit/e0a82ddfa60ac8ac327d645c214d092c792d0937
  Author: Mike Wyrzykowski <[email protected]>
  Date:   2025-02-05 (Wed, 05 Feb 2025)

  Changed paths:
    A LayoutTests/fast/webgpu/nocrash/fuzz-286956-expected.txt
    A LayoutTests/fast/webgpu/nocrash/fuzz-286956.html
    M Source/WebGPU/WebGPU/CommandBuffer.h
    M Source/WebGPU/WebGPU/CommandBuffer.mm
    M Source/WebGPU/WebGPU/CommandEncoder.h
    M Source/WebGPU/WebGPU/CommandEncoder.mm
    M Source/WebGPU/WebGPU/Device.h
    M Source/WebGPU/WebGPU/Queue.h
    M Source/WebGPU/WebGPU/Queue.mm
    M Source/WebGPU/WebGPU/RenderPassEncoder.mm

  Log Message:
  -----------
  [WebGPU] MTLCounterTimestamps are not always retained for the lifetime of the 
MTLCommandBuffer
https://bugs.webkit.org/show_bug.cgi?id=286956
rdar://144077005

Reviewed by Tadeu Zagallo.

To workaround rdar://143905417 we must retain MTLCounterSampleBuffer
instances until the MTLCommandBuffer's dealloc method runs.

Prior attempt largely ensured this but missed the case when the MTLCommandBuffer
is retained after CommandEncoder's destructor already ran.

Address this by manually retaining the MTLCounterSampleBuffer from
CommandEncoder's destructor.

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

* Source/WebGPU/WebGPU/CommandBuffer.h:
* Source/WebGPU/WebGPU/CommandBuffer.mm:
(WebGPU::CommandBuffer::retainEncoderForOneUpdateLoop):
(WebGPU::CommandBuffer::~CommandBuffer):
(WebGPU::CommandBuffer::makeInvalid):
(WebGPU::CommandBuffer::makeInvalidDueToCommit):
* Source/WebGPU/WebGPU/CommandEncoder.h:
* Source/WebGPU/WebGPU/CommandEncoder.mm:
(WebGPU::CommandEncoder::retainTimestampsForOneUpdateLoop):
(WebGPU::CommandEncoder::~CommandEncoder):
(WebGPU::CommandEncoder::discardCommandBuffer):
* Source/WebGPU/WebGPU/Queue.h:
* Source/WebGPU/WebGPU/Queue.mm:
(WebGPU::Queue::retainTimestampsForOneUpdate):
Manually retain the MTLCounterSampleBuffer until -[MTLCommandBuffer dealloc] 
runs.

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



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

Reply via email to