)]}'
{
  "commit": "c21533477e7b97ea3d969ded786d4a57e1d3defe",
  "tree": "a8ecaa395ba0e15d984dc62278f6bbc53f5efaa4",
  "parents": [
    "1f0363e84316ea5b9f07fdc23d1cd4fa19d2ba5c"
  ],
  "author": {
    "name": "Le Hoang Quyen",
    "email": "lehoangquyen@chromium.org",
    "time": "Mon Aug 03 09:45:43 2026 -0700"
  },
  "committer": {
    "name": "dawn-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "email": "dawn-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Mon Aug 03 09:45:43 2026 -0700"
  },
  "message": "d3d11: Cache view/binding pointer identity instead of ComPtr\n\nBindGroupTracker previously cached ComPtr\u003cT\u003e per binding slot to detect\nredundant Set* calls, requiring an atomic COM AddRef/Release on every\nbind even when the underlying view was unchanged. Command recording is\nalready serialized under the device lock, so the atomicity bought\nnothing but cost an interlocked op per binding per draw/dispatch.\n\nInstead, track only the bound resource\u0027s pointer identity, compared\nbut never dereferenced, so a stale/reused value can at worst cause a\nmissed rebind, never a use-after-free. In practice this shouldn\u0027t even\nhappen, since D3D11 holds its own reference on a bound resource for as\nlong as it stays bound.\n\nBuffer::UseAsSRV/UseAsUAV public methods now take a lambda, scoping the\nraw view pointer\u0027s validity to the callback.\n\nBug: 505330398\nChange-Id: I5adade914b006eb05ea4530c6e5ec61526402c6a\nReviewed-on: https://dawn-review.googlesource.com/c/dawn/+/304397\nCommit-Queue: Quyen Le \u003clehoangquyen@google.com\u003e\nReviewed-by: Quyen Le \u003clehoangquyen@google.com\u003e\nReviewed-by: Geoff Lang \u003cgeofflang@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "551962df339a1ea4d5d00ca48c2b43566646eea2",
      "old_mode": 33188,
      "old_path": "src/dawn/native/d3d11/BindGroupTrackerD3D11.cpp",
      "new_id": "1c470477aec63c3b637397bad6136d198e3f6b3f",
      "new_mode": 33188,
      "new_path": "src/dawn/native/d3d11/BindGroupTrackerD3D11.cpp"
    },
    {
      "type": "modify",
      "old_id": "38a8b0563144c48bdbf9e00b9d1068635036c604",
      "old_mode": 33188,
      "old_path": "src/dawn/native/d3d11/BindGroupTrackerD3D11.h",
      "new_id": "e13f2ddceaa3ce728ea590888ac977f1e96cec40",
      "new_mode": 33188,
      "new_path": "src/dawn/native/d3d11/BindGroupTrackerD3D11.h"
    },
    {
      "type": "modify",
      "old_id": "9d1df955226636dbafcf7867637f2329956f2965",
      "old_mode": 33188,
      "old_path": "src/dawn/native/d3d11/BufferD3D11.cpp",
      "new_id": "692a9b3f7776971c2c8a5b853f93e9de83b3da4a",
      "new_mode": 33188,
      "new_path": "src/dawn/native/d3d11/BufferD3D11.cpp"
    },
    {
      "type": "modify",
      "old_id": "4f91aceb4948933d17b11f966ade419f385a7b9c",
      "old_mode": 33188,
      "old_path": "src/dawn/native/d3d11/BufferD3D11.h",
      "new_id": "8ea054877f76543027fb39e71abdfc4e08b8a6a7",
      "new_mode": 33188,
      "new_path": "src/dawn/native/d3d11/BufferD3D11.h"
    }
  ]
}
