[dawn][vulkan] Removes queue serial assertion. - The assertion is currently causing flakes after the changes in https://dawn-review.googlesource.com/c/dawn/+/242714. The change in that CL is necessary to implement spontaneous callbacks, but by moving the `CheckPassedSerial` call which is the call responsible for actually updating the `mCompletedSerial` member in `ExecutionQueue` outside of the scope of the global Device lock, the assertion can fail when: Thread A: - Successfully waited for serial 3 in the critical section of `WaitQueueSerials`. - Calls `CheckPassedSerial`->`CheckAndUpdateCompletedSerial` and gets 3. Note that in the Vulkan implementation of `CheckAndUpdateCompletedSerial`, this updates the internal fences that are tracked, so all serials < 3 are now no longer in `mFencesInFlight`. Begins to try calling `UpdateCompletedSerial(3)` but is interrupted by Thread B. Thread B: - `WaitForQueueSerial` is called for a serial of 2. Since the backend implementation, i.e. Vulkan's `CheckAndUpdateCompletedSerial` has already been called, in `QueueVk::CheckAndUpdateCompletedSerial` we don't find a wait fence, so we enter the code block with the DAWN_ASSERT. Unfortunately, since Thread A did not complete `UpdateCompletedSerial(3)` yet, the actual value of `mCompletedSerial == 1`. As a result, the assertion fails. - This temporary change should fix the crashes we are seeing in the bugs, but a follow up more extensive change will be done to make sure that serials in `ExecutionQueue` are a bit more consistent in a multithreaded environment. Bug: 419598089, 420681969 Change-Id: I8c3002379cec1ce0ab10e314cf3cd9d3a3512314 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/244035 Commit-Queue: Kai Ninomiya <kainino@chromium.org> Auto-Submit: Loko Kung <lokokung@google.com> Reviewed-by: Kai Ninomiya <kainino@chromium.org>
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.