CMake-only fork of https://dawn.googlesource.com/dawn with cleaned, vendored dependencies
5881e735f9
To support concurrent readers on multiple command queues/devices, Dawn must support importing via wait multiple fences and also export a signal fence. The previous implementation of using a single fence for waiting and signaling doesn't work for concurrent reads across queues. This CL adds support for specifying multiple wait fences for ExternalImageDXGI via a BeginAccess method that's meant to replace ProduceTexture. There's also an EndAccess method that returns a signal fence for the client. For performance reasons, we use the same fence as the signal fence that the Device uses internally, and record its value on the texture after ExecuteCommandLists. Therefore, the CL also makes the Device's internal fence a shared fence so that we can export it to the client. This CL also expands the ConcurrentExternalImageReadAccess test so that it tests fence synchronization across multiple devices. A number of test helpers also now take an optional device parameter so that we can use pixel value expectations with secondary devices. Bug: dawn:576 Change-Id: I6bc86808ede9b5aacf87667106cbd16731a12516 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/99746 Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org> Reviewed-by: Austin Eng <enga@chromium.org> Kokoro: Kokoro <noreply+kokoro@google.com> |
||
---|---|---|
.vscode | ||
build_overrides | ||
docs | ||
generator | ||
include | ||
infra | ||
scripts | ||
src | ||
test | ||
third_party | ||
tools | ||
webgpu-cts | ||
.clang-format | ||
.clang-tidy | ||
.gitattributes | ||
.gitignore | ||
.gn | ||
AUTHORS | ||
BUILD.gn | ||
CMakeLists.txt | ||
CMakeSettings.json | ||
CODE_OF_CONDUCT.md | ||
CONTRIBUTING.md | ||
CPPLINT.cfg | ||
DEPS | ||
DIR_METADATA | ||
Doxyfile | ||
LICENSE | ||
OWNERS | ||
PRESUBMIT.py | ||
README.chromium | ||
README.md | ||
codereview.settings | ||
dawn.json | ||
dawn_wire.json | ||
go.mod | ||
go.sum | ||
go_presubmit_support.py | ||
tint_overrides_with_defaults.gni |
README.md
Dawn, a WebGPU implementation
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 C/C++ headers that applications and other building blocks use.
- The
webgpu.h
version that Dawn implements. - A C++ wrapper for the
webgpu.h
.
- The
- A "native" implementation of WebGPU using platforms' GPU APIs: D3D12, Metal, Vulkan and OpenGL. See per API support for more details.
- A client-server implementation of WebGPU for applications that are in a sandbox without access to native drivers
- Tint is a compiler for the WebGPU Shader Language (WGSL) that can be used in standalone to convert shaders from and to WGSL.
Helpful links:
- Dawn bug tracker if you find issues with Dawn.
- Tint bug tracker if you find issues with Tint.
- Dawn's mailing list for other discussions related to Dawn.
- Dawn's source code
- Dawn's Matrix chatroom for live discussion around contributing or using Dawn.
- WebGPU's Matrix chatroom
- Tint mirror for standalone usage.
Documentation table of content
Developer documentation:
- Dawn overview
- Building
- Contributing
- Code of Conduct
- Testing Dawn
- Debugging Dawn
- Dawn's infrastructure
- Dawn errors
- Tint experimental extensions
User documentation: (TODO, figure out what overlaps with the webgpu.h docs)
Status
(TODO)
License
Apache 2.0 Public License, please see LICENSE.
Disclaimer
This is not an officially supported Google product.