)]}'
{
  "commit": "f48e51efdbe3a87ee6b2b727436b3c25dfbc9d08",
  "tree": "0d5ef077ba587f455ba2a2d9815af4632019cfb9",
  "parents": [
    "dac92db6ead5eeedcfe976b8338f0f487483b332"
  ],
  "author": {
    "name": "shaoboyan",
    "email": "shaoboyan@microsoft.com",
    "time": "Wed Nov 19 00:11:32 2025 -0800"
  },
  "committer": {
    "name": "Dawn LUCI CQ",
    "email": "dawn-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Wed Nov 19 00:11:32 2025 -0800"
  },
  "message": "tint/hlsl: Implement ArrayLengthFromImmediates support\n\nThis change enables HLSL backend to use immediate data blocks (root\nconstants) for storing buffer size information, eliminating the need\nfor a separate uniform buffer when computing array lengths.\n\nWhy:\n- Reduces descriptor table usage in D3D12 by storing buffer sizes in\n  root constants instead of requiring a dedicated uniform buffer\n- Provides performance benefit by avoiding an extra buffer binding\n- Brings HLSL backend to parity with MSL backend which already supports\n  this optimization\n\nComponents affected:\n- ArrayLengthFromUniformOptions: Added buffer_sizes_offset field to\n  support immediate block storage at a specified offset\n- PopulateBindingRelatedOptions: Fixed to properly copy the new\n  buffer_sizes_offset field from input options\n- HLSL raise pipeline: Added buffer_sizes array creation in immediate\n  data config, packed as array\u003cvec4\u003cu32\u003e\u003e for 16-byte alignment\n- Transform selection: Conditionally uses ArrayLengthFromImmediates\n  when buffer_sizes_offset is set, otherwise falls back to\n  ArrayLengthFromUniform\n\nBug: 366291600\nChange-Id: I42d6dc3e172513d853fe502e60d337c22142be95\nReviewed-on: https://dawn-review.googlesource.com/c/dawn/+/273955\nCommit-Queue: Shaobo Yan \u003cshaoboyan@microsoft.com\u003e\nReviewed-by: James Price \u003cjrprice@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6b4c9ee090a87fd87ddd56c840f9c9d803e0cff6",
      "old_mode": 33188,
      "old_path": "src/tint/lang/hlsl/writer/arraylength_test.cc",
      "new_id": "80694937e809a95575ddc23e656ad229e5fd2687",
      "new_mode": 33188,
      "new_path": "src/tint/lang/hlsl/writer/arraylength_test.cc"
    },
    {
      "type": "modify",
      "old_id": "4479ce3d05a7b089a4c64da19b646f6f219bf389",
      "old_mode": 33188,
      "old_path": "src/tint/lang/hlsl/writer/common/option_helpers.cc",
      "new_id": "de4bb9fa1209240756114e9e2237b85ff11c2303",
      "new_mode": 33188,
      "new_path": "src/tint/lang/hlsl/writer/common/option_helpers.cc"
    },
    {
      "type": "modify",
      "old_id": "fc1ba2936dcbaaf2d50654638d6503f2a13de440",
      "old_mode": 33188,
      "old_path": "src/tint/lang/hlsl/writer/common/options.h",
      "new_id": "1ba87e0d9a3bfb605f9a7fd8896cf734563e4613",
      "new_mode": 33188,
      "new_path": "src/tint/lang/hlsl/writer/common/options.h"
    },
    {
      "type": "modify",
      "old_id": "ac6819f1314ff478bcc443ea36bcf62b752538d2",
      "old_mode": 33188,
      "old_path": "src/tint/lang/hlsl/writer/raise/raise.cc",
      "new_id": "422ce7e66b58b195b88e8be4b297cb37571e7c8e",
      "new_mode": 33188,
      "new_path": "src/tint/lang/hlsl/writer/raise/raise.cc"
    }
  ]
}
