| commit | b3b28f2246a958a512c3ec95ac1a2435dd15c242 | [log] [tgz] |
|---|---|---|
| author | Le Hoang Quyen <lehoangquyen@chromium.org> | Tue May 06 17:14:42 2025 -0700 |
| committer | Dawn LUCI CQ <dawn-scoped@luci-project-accounts.iam.gserviceaccount.com> | Tue May 06 17:14:42 2025 -0700 |
| tree | 8308bb89f6151543b0264ee65ce9fbb1df54e0e2 | |
| parent | 4e7195f98950575b2edf9819ab1c854655399c12 [diff] |
D3D11: fix SystemEventQueue's incorrect tracking of completed serials
SystemEventQueue currently recycles events in 2 places:
- CheckAndUpdateCompletedSerials().
- WaitForQueueSerial().
This leads to incorrect update of the completed serial in
CheckAndUpdateCompletedSerials().
Considering the following scenario:
- Queue.Submit() is called 2 times.
- SystemEventQueue will store a pending list of event 1 & 2 associated
with serial 1 & 2.
- WaitQueueSerials(serial=1, timeout=inf) is called.
- WaitForQueueSerial() is called.
- This waits until serial=1 is completed.
- Event 1 will be removed from the pending list.
- CheckAndUpdateCompletedSerials() is called.
- This function attempts to check the status of all pending events.
- Event 2 is the only one in the pending list at this point.
- If the event 2 was not signaled yet, the function would return
GetCompletedCommandSerial() which is zero. Because the actual
completed serial=1 has not been notified to the parent Queue class
yet.
This CL fixes the bug by removing the recycling from
WaitForQueueSerial(). Only CheckAndUpdateCompletedSerials() should
recycle the events. Because it's the place supposed to update the
completed serial.
Bug: 415561579
Change-Id: Ifb9fca831a5ccb7bfc165641179966a6bc4a6203
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/240374
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
Auto-Submit: Quyen Le <lehoangquyen@chromium.org>
Commit-Queue: Loko Kung <lokokung@google.com>
Reviewed-by: Loko Kung <lokokung@google.com>
Dawn is an open-source and cross-platform implementation of the WebGPU standard. More precisely it implements webgpu.h that is a one-to-one mapping with the WebGPU IDL. Dawn is meant to be integrated as part of a larger system and is the underlying implementation of WebGPU in Chromium.
Dawn provides several WebGPU building blocks:
webgpu.h version that Dawn implements.webgpu.h.Helpful links:
Developer documentation:
User documentation: (TODO, figure out what overlaps with the webgpu.h docs)
BSD 3-Clause License, please see LICENSE.
This is not an officially supported Google product.