commit | d3d226df6678f05d463354f02a95cfaeb33e6af0 | [log] [tgz] |
---|---|---|
author | Sunny Sachanandani <sunnyps@chromium.org> | Tue Jul 25 03:17:24 2023 +0000 |
committer | Dawn LUCI CQ <dawn-scoped@luci-project-accounts.iam.gserviceaccount.com> | Tue Jul 25 03:17:24 2023 +0000 |
tree | aa982776c6f1cf12c9e85b4eba2ec6d057096d95 | |
parent | 0b643a101034e9dd54ce21a356df66a49f536289 [diff] |
d3d11: Use D3D11 multithread protection With Graphite on Dawn D3D11 backend, Chrome's media stack uses the same D3D11 device as Graphite and has no way of synchronizing access to the immediate context which is otherwise protected internally in Dawn using a device scoped mutex. Using ID3D11Multithread::SetMultithreadProtected(TRUE) enables locking in D3D11 which helps with this, but it has significant overhead since it acquires/releases a mutex for every API call. However, ID3D11Multithread provides Enter/Leave methods which allow putting entire sequences of calls in a critical section minimizing the overhead of using the mutex. This CL does the following: 1) Call SetMultithreadProtected(TRUE) if D3D11MultithreadProtected feature is enabled. 2) Provide a ScopedCriticalSection helper for CommandRecordingContext that calls Enter/Leave. This is used by d3d11 CommandBuffer::Execute to mark the entire command processing loop as a critical section. 3) In TickImpl, add the debug layer error collection call to before NextSerial so it's not skipped if NextSerial fails. Bug: dawn:1927, chromium:1464550 Change-Id: Ic0a3185d9e3d623a82058142fef4e010da054125 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/142540 Auto-Submit: Sunny Sachanandani <sunnyps@chromium.org> Reviewed-by: Austin Eng <enga@chromium.org> Kokoro: Kokoro <noreply+kokoro@google.com> Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org>
Dawn is an open-source and cross-platform implementation of the work-in-progress 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)
(TODO)
Apache 2.0 Public License, please see LICENSE.
This is not an officially supported Google product.