commit | a07430f8768af9060936a03872c612b54911ace0 | [log] [tgz] |
---|---|---|
author | Albin Bernhardsson <albin.bernhardsson@arm.com> | Mon Apr 22 15:25:44 2024 +0000 |
committer | Dawn LUCI CQ <dawn-scoped@luci-project-accounts.iam.gserviceaccount.com> | Mon Apr 22 15:25:44 2024 +0000 |
tree | 7fcf5038e6bbec324e2ac968e23582aa544ee56c | |
parent | b7c1a98e50cdfd4c7adc67fb5584c5f182b69c9a [diff] |
Vulkan: Implement fast path for writeBuffer Implement a fast path for writeBuffer in Vulkan where, instead of writing data to a scratch buffer and then copying the data into the destination buffer, the data is written directly into the destination buffer. This reduces bandwidth by avoiding the extra copy and removes the need to synchronize the transfer command, improving synchronization. To take the fast path: 1. The buffer's memory needs to be host visible. In practice this means this optimization is for integrated GPUs where memory is shared. 2. The buffer must not currently be in use. In practice this means the application needs to double buffer its uniform buffers. 3. There must not be any pending GPU writes to the buffer. If the fast path can't be taken we will fall back to the current implementation (writing to a scratch buffer and copying the data to the destination buffer). In a test Sponza scene, where the application does not manually suballocate buffers, this reduces frame times by 11% on a Mali-G78 device. Bug: dawn:774 dawn:851 Change-Id: Ib5f770297d5729df374d0f847a47ade6b0bf24ef Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/162780 Reviewed-by: Austin Eng <enga@chromium.org> Commit-Queue: Austin Eng <enga@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.