dawn-cmake/generator/templates/dawn/wire
Loko Kung 2e1b359087 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>
2022-11-22 23:19:43 +00:00
..
client dawn: Fix GCC build 2022-06-20 13:45:21 +00:00
server dawn::wire validate that the generation must be strictly increasing 2022-11-04 15:29:23 +00:00
ObjectType.h tint->dawn: Move src/dawn_wire -> src/dawn/wire 2022-02-04 12:51:25 +00:00
WireCmd.cpp Add wire serialized command buffer padding. 2022-11-22 23:19:43 +00:00
WireCmd.h dawn::wire: Separate ObjectHandle to its own header. 2022-06-14 13:22:16 +00:00