)]}'
{
  "commit": "38fa643702d04f096fbccdaba3d19f24c1b29ffa",
  "tree": "e01b24ffe5b76b7c2666539b539f265853200934",
  "parents": [
    "a660b510acb84175fdacc7f9c8033e5f666e6aa2"
  ],
  "author": {
    "name": "Austin Eng",
    "email": "enga@chromium.org",
    "time": "Fri Nov 19 04:11:33 2021 +0000"
  },
  "committer": {
    "name": "Tint LUCI CQ",
    "email": "tint-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Fri Nov 19 04:11:33 2021 +0000"
  },
  "message": "Add HLSL/MSL generator options for ArrayLengthFromUniform\n\nArrayLengthFromUniform is needed for correct bounds checks on\ndynamic storage buffers on D3D12. The intrinsic GetDimensions does\nnot return the actual size of the buffer binding.\n\nArrayLengthFromUniform is updated to output the indices of the\nuniform buffer that are statically used. This allows Dawn to minimize\nthe amount of data needed to upload into the uniform buffer.\nThese output indices are returned on the HLSL/MSL generator result.\n\nArrayLengthFromUniform is also updated to allow only some of the\narrayLength calls to be replaced with uniform buffer loads. For HLSL\noutput, the remaining arrayLength computations will continue to use\nGetDimensions(). For MSL, it is invalid to not specify an index into\nthe uniform buffer for all storage buffers.\n\nAfter Dawn is updated to use the array_length_from_uniform option in the\nMetal backend, the buffer_size_ubo_index member for MSL output may be\nremoved.\n\nBug: dawn:429\nChange-Id: I9da4ec4a20882e9f1bfa5bb026725d72529eff26\nReviewed-on: https://dawn-review.googlesource.com/c/tint/+/69301\nKokoro: Kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: James Price \u003cjrprice@google.com\u003e\nCommit-Queue: Austin Eng \u003cenga@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d6c95c82748239cfb8d3a179d93b475d63ef5df6",
      "old_mode": 33188,
      "old_path": "src/BUILD.gn",
      "new_id": "fb1bcfe66767345f691f90c7b0c3c4fb583aaebd",
      "new_mode": 33188,
      "new_path": "src/BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "b86cb98da68d7a5b27bdfbda7099f1cfee7abcd8",
      "old_mode": 33188,
      "old_path": "src/CMakeLists.txt",
      "new_id": "9b746da875ee7362c60d75289418606989e856b8",
      "new_mode": 33188,
      "new_path": "src/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "65f8f0ad3eb13e4dae52d308d0dd7645431995d2",
      "old_mode": 33188,
      "old_path": "src/transform/array_length_from_uniform.cc",
      "new_id": "a30e550ca033998ae44572bef7ea6b14b5fc9ebc",
      "new_mode": 33188,
      "new_path": "src/transform/array_length_from_uniform.cc"
    },
    {
      "type": "modify",
      "old_id": "306ed8a2310245ed85b6331bab620a602ddd1d3c",
      "old_mode": 33188,
      "old_path": "src/transform/array_length_from_uniform.h",
      "new_id": "7063a27f5d3c370e93c31198c79708af7696a527",
      "new_mode": 33188,
      "new_path": "src/transform/array_length_from_uniform.h"
    },
    {
      "type": "modify",
      "old_id": "c41ba2e9326a9bbf04ad88c5a3f3442a926c49fb",
      "old_mode": 33188,
      "old_path": "src/transform/array_length_from_uniform_test.cc",
      "new_id": "fd4eef922b85f23b6860c3bbe19e3949c1ddc220",
      "new_mode": 33188,
      "new_path": "src/transform/array_length_from_uniform_test.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b848a484e3d5b60bd91f40d9fdff0371077f81ed",
      "new_mode": 33188,
      "new_path": "src/writer/array_length_from_uniform_options.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ae92d4f028826fc823f8c5ce9a5b359a4dbdb156",
      "new_mode": 33188,
      "new_path": "src/writer/array_length_from_uniform_options.h"
    },
    {
      "type": "modify",
      "old_id": "ce172f9a99158f0b9da0470b524f21b173a4e913",
      "old_mode": 33188,
      "old_path": "src/writer/hlsl/generator.cc",
      "new_id": "727b5d5525919633cf79226e255813f973bcc616",
      "new_mode": 33188,
      "new_path": "src/writer/hlsl/generator.cc"
    },
    {
      "type": "modify",
      "old_id": "693002980c63de12f99403505967b0513a56749e",
      "old_mode": 33188,
      "old_path": "src/writer/hlsl/generator.h",
      "new_id": "4dacbd4cdaaeb9f8a2530f470818e0bea5fd608f",
      "new_mode": 33188,
      "new_path": "src/writer/hlsl/generator.h"
    },
    {
      "type": "modify",
      "old_id": "3d3895a56e480fece3cf05fb4c255ee2a21f6f0b",
      "old_mode": 33188,
      "old_path": "src/writer/hlsl/generator_impl.cc",
      "new_id": "c60be696188a7e2b77c19aacc3125336b5b3890f",
      "new_mode": 33188,
      "new_path": "src/writer/hlsl/generator_impl.cc"
    },
    {
      "type": "modify",
      "old_id": "7c56b10aa90dc31dcafb0f944ececf9922bb4a56",
      "old_mode": 33188,
      "old_path": "src/writer/hlsl/generator_impl.h",
      "new_id": "b23897d6efe018eb4d14835accd681ebf3cd5de0",
      "new_mode": 33188,
      "new_path": "src/writer/hlsl/generator_impl.h"
    },
    {
      "type": "modify",
      "old_id": "c3692a7683450dbc0054b2b286bdfe2d3632826f",
      "old_mode": 33188,
      "old_path": "src/writer/hlsl/generator_impl_sanitizer_test.cc",
      "new_id": "fa6d00bc311d7c44853a356699a9e11457ba88f5",
      "new_mode": 33188,
      "new_path": "src/writer/hlsl/generator_impl_sanitizer_test.cc"
    },
    {
      "type": "modify",
      "old_id": "7523c82cbb3e89872a14ebbe5acd458d8bd0ae4f",
      "old_mode": 33188,
      "old_path": "src/writer/hlsl/test_helper.h",
      "new_id": "e55b9c1e950e4d1fc3434d4c256a36e9531b3113",
      "new_mode": 33188,
      "new_path": "src/writer/hlsl/test_helper.h"
    },
    {
      "type": "modify",
      "old_id": "cc1aa5c4a3584391a9856e6b6917a33c1082a200",
      "old_mode": 33188,
      "old_path": "src/writer/msl/generator.cc",
      "new_id": "92741e8d751fe9ef5565a2058dbf78b534b847b8",
      "new_mode": 33188,
      "new_path": "src/writer/msl/generator.cc"
    },
    {
      "type": "modify",
      "old_id": "af812d71611595b04d442591534d4bbc935c9db5",
      "old_mode": 33188,
      "old_path": "src/writer/msl/generator.h",
      "new_id": "63d793957c3bce3d7b4be0deb8357a0ac4af80eb",
      "new_mode": 33188,
      "new_path": "src/writer/msl/generator.h"
    },
    {
      "type": "modify",
      "old_id": "f7ec04f41408acdb9802818ddfdd230c7f4806dd",
      "old_mode": 33188,
      "old_path": "src/writer/msl/generator_impl.cc",
      "new_id": "4cfc22e9fae815198a833b320a5bdf61c888a83b",
      "new_mode": 33188,
      "new_path": "src/writer/msl/generator_impl.cc"
    },
    {
      "type": "modify",
      "old_id": "8b73a31c5c1abc0c7b237dd308ed231f8c680169",
      "old_mode": 33188,
      "old_path": "src/writer/msl/generator_impl.h",
      "new_id": "710b8e2375094690353f24d047f3d023cba541d6",
      "new_mode": 33188,
      "new_path": "src/writer/msl/generator_impl.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c8fb11653e7f478d89157a449889c92100c59abe",
      "new_mode": 33188,
      "new_path": "src/writer/msl/generator_impl_sanitizer_test.cc"
    },
    {
      "type": "modify",
      "old_id": "762b2b6528643cfb60d689087b754daff68819ad",
      "old_mode": 33188,
      "old_path": "src/writer/msl/test_helper.h",
      "new_id": "8b4cf3b2f24a074b53c02ab4cf7ee03f65164344",
      "new_mode": 33188,
      "new_path": "src/writer/msl/test_helper.h"
    },
    {
      "type": "modify",
      "old_id": "907018a0c18e00da759aad5f5a8e5119f3c7eff6",
      "old_mode": 33188,
      "old_path": "test/BUILD.gn",
      "new_id": "099765a8834a2ac157cf08c3be3c287e0c77116e",
      "new_mode": 33188,
      "new_path": "test/BUILD.gn"
    }
  ]
}
