These files, and several snippets of other files, are generated by Dawn
(Chromium's WebGPU library):
- [Generator](https://source.chromium.org/chromium/chromium/src/+/main:third_party/dawn/generator/)
- [Generator input](https://source.chromium.org/chromium/chromium/src/+/main:third_party/dawn/dawn.json)
- [Generator output](https://source.chromium.org/chromium/chromium/src/+/main:out/Debug/gen/third_party/dawn/emscripten-bits/)

The C header is mostly the same as the "upstream"
[`webgpu.h`](https://github.com/webgpu-native/webgpu-headers/blob/main/webgpu.h),
but native-specific elements are not included.

The C++ files are **currently** Dawn-specific, but included in Emscripten for
better compatibility with Dawn: it has roughly the same API as Dawn's copy, but
is included here because it is strongly tied to an exact `webgpu.h` revision.

Dawn additionally autogenerates two "snippets" that are used in Emscripten:
- `library_webgpu_enum_tables.js`, which is pasted into [`library_webgpu.js`](../../../src/library_webgpu.js)
- `webgpu_struct_info.json`, which is pasted into [`struct_info.json`](../../../src/struct_info.json).

Once that's done, the following file also needs to be rebaselined:
- [`reference_struct_info.json`](../../../tests/reference_struct_info.json): can be updated by running `tests/runner other.test_gen_struct_info --rebaseline`