commit | 2e1b35908774ad82ba7c036da8e04383c73c117d | [log] [tgz] |
---|---|---|
author | Loko Kung <lokokung@google.com> | Tue Nov 22 23:19:43 2022 +0000 |
committer | Dawn LUCI CQ <dawn-scoped@luci-project-accounts.iam.gserviceaccount.com> | Tue Nov 22 23:19:43 2022 +0000 |
tree | 897168bab6353d218e1705c2cd4c19143cc0aeb4 | |
parent | c982cd45c48304fae850725feaeec4689dd68157 [diff] |
Add wire serialized command buffer padding. Pads serialized wire command buffers to 8 bytes so that we don't have misaligned write/reads which can cause SIGILL depending on platform and compilation mode, i.e. -c dbg in google3 builds. - Adds helpers for aligning sizeof calls. - Adds constant for wire padding (8u). - Modifies BufferConsumer to allocate according to padding. This guarantees that when we [de]serialize stuff, the padding should be equal on both sides. - Modifies extra byte serialization code (adding CommandExtension struct). This makes it clearer that each extension needs to be padded independently. Otherwise, before in wire/client/Buffer.cpp, since the read/write handle sizes were being passed as a sum, but read out separately from the BufferConsumer, we corrupt our pointers. - Adds some simple unit tests. Bug: dawn:1334 Change-Id: Id80e7c01a34b9f01c3f02b3e6c04c3bb3ad0eff9 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110501 Reviewed-by: Austin Eng <enga@chromium.org> Commit-Queue: Loko Kung <lokokung@google.com> Kokoro: Kokoro <noreply+kokoro@google.com>
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.