)]}'
{
  "commit": "11784009dbbfcbca5f321e2c7ce28b15eabcb151",
  "tree": "3d7cbc2e06166c72c3dfab0bc3f7ac39e74b9395",
  "parents": [
    "a10fbeac3c40b94771587c093c5b2999836c49c8"
  ],
  "author": {
    "name": "Kai Ninomiya",
    "email": "kainino@chromium.org",
    "time": "Wed Jul 03 19:46:03 2024 +0000"
  },
  "committer": {
    "name": "Dawn LUCI CQ",
    "email": "dawn-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Wed Jul 03 19:46:03 2024 +0000"
  },
  "message": "Generate files to use Emscripten bindings from outside Emscripten\n\nWe are stabilizing webgpu.h, and that process requires many (mostly\nsmall) breaking changes to the header. Right now, some projects are\nrelying on Emscripten\u0027s and Dawn\u0027s implementations of webgpu.h to be in\nsync, but this creates challenges because we need to make many separate\nbreaking changes.\n\nThis change forks Emscripten\u0027s WebGPU bindings into Dawn (in\n//third_party) in such a way that they don\u0027t have to be checked into the\nEmscripten repository. This way we can keep Dawn\u0027s bindings and Dawn\u0027s\nfork of the Emscripten bindings in sync (approximately) in the Dawn\nrepository.\n\nProjects depending on Emscripten and Dawn to be in sync should use this\nfork instead, until we\u0027ve finished the webgpu.h changes and contributed\nthe bindings back up to Emscripten in one big breaking release that\nshould have minimal to no breakage afterward.\n\nFor ease of diffing this commit overwrites the verbatim copies of\nlibrary_{,html5_}webgpu.js added in the previous commit, with a few\nupdates to bring it in sync with Dawn (though it may not be fully in\nsync - it has only been minimally tested so far).\n\nExample of using the resulting generated files from outside GN:\nhttps://github.com/kainino0x/webgpu-cross-platform-demo/compare/dawnwasm\n\nThe generated files can only be generated using the GN build; CMake\nrules haven\u0027t been implemented, and the existing Emscripten build rules\nfor CMake have been removed.\n\nNote, since these bindings were designed to live inside Emscripten, they\nrely on some Emscripten internals.\n\nSymbols in rough order from less stable to more stable:\n\n- `$stackSave` - changed recently\n- `$stackRestore` - changed recently\n- `$callUserCallback`\n- `$stringToUTF8OnStack`\n- `$stringToNewUTF8`\n- `$stringToUTF8`\n- `$lengthBytesUTF8`\n- `$readI53FromI64`\n- `$findCanvasEventTarget`\n- `$warnOnce`\n\nGenerator internals, these seem stable:\n\n- `mergeInto`\n- `C_STRUCTS`\n- `LibraryManager.library`\n\nThe build rules also depend on:\n\n- the location of `gen_struct_info.py` (which recently changed from\n  `tools/` to `tools/maint/`)\n\nBug: 346806934\nChange-Id: I6ca10ea37bc7307d4d9571dcdc696e7d025663d3\nReviewed-on: https://dawn-review.googlesource.com/c/dawn/+/193722\nReviewed-by: Loko Kung \u003clokokung@google.com\u003e\nAuto-Submit: Kai Ninomiya \u003ckainino@chromium.org\u003e\nReviewed-by: dan sinclair \u003cdsinclair@chromium.org\u003e\nCommit-Queue: dan sinclair \u003cdsinclair@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ea6ebced7ec169a33c8c8c156f7f72702a10c352",
      "old_mode": 33188,
      "old_path": "BUILD.gn",
      "new_id": "6d4fe0166eaec0e87cdcd29bf8813b2f4be11e5d",
      "new_mode": 33188,
      "new_path": "BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "74109adb6195f3bd45f04ca160763941eca3156b",
      "old_mode": 33188,
      "old_path": "build_overrides/dawn.gni",
      "new_id": "bbe1f6784c53252d33e5291a895d37387510f5ef",
      "new_mode": 33188,
      "new_path": "build_overrides/dawn.gni"
    },
    {
      "type": "modify",
      "old_id": "a81ce9f84128f7ff678a89090156ebfdce77a540",
      "old_mode": 33188,
      "old_path": "docs/dawn/codegen.md",
      "new_id": "d41eb9a7935c716a251ecb6866b6b67b56531f20",
      "new_mode": 33188,
      "new_path": "docs/dawn/codegen.md"
    },
    {
      "type": "modify",
      "old_id": "6bcda79562a96c6ee9c85d92b7b3f8961b2f25d0",
      "old_mode": 33188,
      "old_path": "generator/CMakeLists.txt",
      "new_id": "38d39a87e147203f33287f171b0f428566ece974",
      "new_mode": 33188,
      "new_path": "generator/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "5f344d3be89841f44d4b8cc77b6d436e8ab4a57c",
      "old_mode": 33188,
      "old_path": "generator/dawn_json_generator.py",
      "new_id": "b1a1b59ac6b85d615fce5fc76f6dabd07df4c43b",
      "new_mode": 33188,
      "new_path": "generator/dawn_json_generator.py"
    },
    {
      "type": "modify",
      "old_id": "7c3f85dc9342d0b59990caf9b3cf5be47a10553d",
      "old_mode": 33188,
      "old_path": "generator/templates/api_cpp.h",
      "new_id": "dd585acfa9afad7be9787f4c8b7274ffd2cf6b95",
      "new_mode": 33188,
      "new_path": "generator/templates/api_cpp.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "26f7988ded7c180b4ab89a93a94dd7b7dfa8c95a",
      "new_mode": 33188,
      "new_path": "generator/templates/emdawnwebgpu/library_webgpu_enum_tables.js"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "98abf085ce22cb3d4d1c08383f30d9f387fdb542",
      "new_mode": 33188,
      "new_path": "generator/templates/emdawnwebgpu/library_webgpu_generated_sig_info.js"
    },
    {
      "type": "rename",
      "old_id": "e9cb6163a3a8f7514c779f569dd58cf458cfa60c",
      "old_mode": 33188,
      "old_path": "generator/templates/api_struct_info.json",
      "new_id": "5ab80952dca36081388b708d538b153d06161a63",
      "new_mode": 33188,
      "new_path": "generator/templates/emdawnwebgpu/webgpu_struct_info.json",
      "score": 82
    },
    {
      "type": "delete",
      "old_id": "8d0e8b9fd3195235bdcf212ef8f49ee01ea18e9d",
      "old_mode": 33188,
      "old_path": "generator/templates/library_api_enum_tables.js",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "e6b98371ce309a031cca3a8cc90164a31b492e9d",
      "old_mode": 33188,
      "old_path": "scripts/dawn_overrides_with_defaults.gni",
      "new_id": "2c6e43e3e68e250f733a69d663c39cd858ff5768",
      "new_mode": 33188,
      "new_path": "scripts/dawn_overrides_with_defaults.gni"
    },
    {
      "type": "modify",
      "old_id": "ee5355b1529662dd6c512fb3a8f179a0b0e28311",
      "old_mode": 33188,
      "old_path": "src/dawn/BUILD.gn",
      "new_id": "9ccd66ff3656c67d65a459254cac99fd9ecef633",
      "new_mode": 33188,
      "new_path": "src/dawn/BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "6c1d5163694c363472468bdd31032024aabe2258",
      "old_mode": 33188,
      "old_path": "src/dawn/CMakeLists.txt",
      "new_id": "51560addb2e9ee0102e26407163421e8c856f147",
      "new_mode": 33188,
      "new_path": "src/dawn/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "b6749912238a52225902ce2efd8eac28d24d7447",
      "old_mode": 33188,
      "old_path": "src/dawn/dawn.json",
      "new_id": "2728a1c0ecc5352a3a13032504b51d0c82735ba3",
      "new_mode": 33188,
      "new_path": "src/dawn/dawn.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "205297cc8d321c54ff641484537472919f5be03c",
      "new_mode": 33188,
      "new_path": "src/emdawnwebgpu/BUILD.gn"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "00e8f84ea8294da56a36b5d03fa1401e37257e37",
      "new_mode": 33188,
      "new_path": "src/emdawnwebgpu/README.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b3f5a9715049fcfb330396946c9d575eabf66f8a",
      "new_mode": 33188,
      "new_path": "src/emdawnwebgpu/concat.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "64420015b37c1cc9b7b81dbbfb152e7c0edc885c",
      "new_mode": 33188,
      "new_path": "src/emdawnwebgpu/snippets/library_webgpu_struct_info_part1.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a6a4451a153a5e12f0e4a1cda937c11508cd966e",
      "new_mode": 33188,
      "new_path": "src/emdawnwebgpu/snippets/library_webgpu_struct_info_part2.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f7dcc6e7e59fc21c116747024f9a342380789319",
      "new_mode": 33188,
      "new_path": "src/emdawnwebgpu/snippets/library_webgpu_struct_info_part3.txt"
    },
    {
      "type": "modify",
      "old_id": "b7359799dce70750e552f3117593d805bb714713",
      "old_mode": 33188,
      "old_path": "third_party/emdawnwebgpu/library_html5_webgpu.js",
      "new_id": "bfd55a40bffa4aa1d99594c04a970f01b0b1198a",
      "new_mode": 33188,
      "new_path": "third_party/emdawnwebgpu/library_html5_webgpu.js"
    },
    {
      "type": "modify",
      "old_id": "f67f81f389aff780a38df34adfc61a787af526d4",
      "old_mode": 33188,
      "old_path": "third_party/emdawnwebgpu/library_webgpu.js",
      "new_id": "8ae23366a975dd11191c40e6b0f05b9e9a0a5657",
      "new_mode": 33188,
      "new_path": "third_party/emdawnwebgpu/library_webgpu.js"
    },
    {
      "type": "modify",
      "old_id": "e65fbe2d5bbce891ec9c161040d046c3e0b51347",
      "old_mode": 33188,
      "old_path": "third_party/emdawnwebgpu/webgpu.cpp",
      "new_id": "797e629f8788059a0b1eeb23d9ae180dd6c91f3d",
      "new_mode": 33188,
      "new_path": "third_party/emdawnwebgpu/webgpu.cpp"
    }
  ]
}
