CMake-only fork of https://dawn.googlesource.com/dawn with cleaned, vendored dependencies
Go to file
Rafael Cintron 69c68d01b2 Improve Memory Management of Result class
The way in which the Result class is used in Dawn can be fragile
with respect to memory management because the caller of AcquireError
must know they need to delete the returned pointer or a memory leak
will occur. We've had a couple of instances where developers have
accidentally left out the delete call and managed to get past code
review.

This CL changes the Result class so that it assumes the error is
allocated on the heap and forces the caller to use unique_ptr when
calling AcquireError.

Bug:dawn:320
Change-Id: I13ec953b0c37eaafbd6ce93c2f719b4743676acb
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/14960
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
2020-01-10 17:58:28 +00:00
build_overrides perf_tests: Manually serialize JSON and remove dependency on jsoncpp 2019-12-20 19:39:10 +00:00
docs Reland "fuzzing: Add supportsErrorInjection option to DawnWireServerFuzzer" 2020-01-06 19:56:17 +00:00
examples Add WGPUAdapterProperties and expose it in DawnNative 2020-01-10 13:28:18 +00:00
generator Add Instance and CreateInstance to webgpu.h 2020-01-10 13:06:48 +00:00
infra/config [infra/config] Bump OS X SDK version for dawn. 2019-08-09 01:19:04 +00:00
scripts Reland "Use Swiftshader by default when fuzzing" 2020-01-08 22:59:47 +00:00
src Improve Memory Management of Result class 2020-01-10 17:58:28 +00:00
third_party Fix BUILD.gn issues for Android & Fuschia 2019-11-28 19:48:45 +00:00
.clang-format Add .clang-format 2017-11-28 16:18:39 -05:00
.gitattributes Add .gitattributes to normalize EOL 2019-07-15 12:23:18 +00:00
.gitignore Allow using swiftshader with the Vulkan backend 2019-11-26 18:21:51 +00:00
.gn Re-enable -Wunguarded-availability in Dawn standalone builds 2019-12-11 16:54:51 +00:00
AUTHORS Rename NXT -> Dawn in the comments 2018-07-18 22:54:06 +02:00
BUILD.gn Improve Memory Management of Result class 2020-01-10 17:58:28 +00:00
CONTRIBUTING.md docs: write an overview of Dawn and split README.md 2019-12-05 11:01:41 +00:00
DEPS Rolling 4 dependencies 2020-01-09 16:09:37 +00:00
LICENSE Initial commit of all the NXT integration. 2017-04-20 14:38:20 -04:00
OWNERS Add component to OWNERS and fixup repo URL in README.chromium 2018-09-25 20:53:37 +00:00
PRESUBMIT.py PRESUBMIT.py: Add formatting checks. 2018-09-11 08:06:36 -04:00
README.chromium Add component to OWNERS and fixup repo URL in README.chromium 2018-09-25 20:53:37 +00:00
README.md docs: write an overview of Dawn and split README.md 2019-12-05 11:01:41 +00:00
codereview.settings Initial CQ configuration 2018-08-23 08:33:35 -04:00
dawn.json Add WGPUAdapterProperties and expose it in DawnNative 2020-01-10 13:28:18 +00:00
dawn_wire.json Add DeviceLostCallback to dawn.json and dawn_wire 2019-12-18 18:59:20 +00:00

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.
  • A "native" implementation of WebGPU using platforms' GPU APIs:
    • D3D12 on Windows 10
    • Metal on macOS and iOS
    • Vulkan on Windows, Linux, ChromeOS, Android and Fuchsia
    • OpenGL as best effort where available
  • A client-server implementation of WebGPU for applications that are in a sandbox without access to native drivers

Helpful links:

Documentation table of content

Developer documentation:

User documentation: (TODO, figure out what overlaps with webgpu.h docs)

Status

(TODO)

License

Apache 2.0 Public License, please see LICENSE.

Disclaimer

This is not an officially supported Google product.