)]}'
{
  "commit": "20a6dba166b17dfd4a026c0f3acb98cd77a6825b",
  "tree": "e302f00339edfb483e279b18da612c0b9f2bf0cd",
  "parents": [
    "2b7b0fbad233485f3c5f8e4c97781d02ca563ded"
  ],
  "author": {
    "name": "Le Hoang Quyen",
    "email": "lehoangquyen@chromium.org",
    "time": "Thu Jan 22 04:53:59 2026 -0800"
  },
  "committer": {
    "name": "Dawn LUCI CQ",
    "email": "dawn-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Thu Jan 22 04:53:59 2026 -0800"
  },
  "message": "D3D11: Fix bugs in Queue::WriteBuffer for mappable buffers.\n\nPreviously when Queue::WriteBuffer was called on a mappable buffer,\nD3D11\u0027s GPUUsableBuffer would:\n1. Mark the buffer as being used by the GPU.\n2. Map the mappable storage.\n3. Call WriteInternal().\n  - WriteInternal() checks if the buffer\u0027s last usage serial is less\n    than the completed serial to decide whether to map.\n  - This check would always fail due to step 1, causing WriteInternal()\n    to use a non-mappable storage instead of the mapped one.\n  - This resulted in both mappable and non-mappable storages being\n    modified in the same function, causing an assertion failure.\n\nFix by deferring MarkUsedInPendingCommands() to the end of Write(). This\nensures WriteInternal() can successfully map the buffer. Also remove\nredundant mapping code from the base class\u0027 Write() \u0026 Clear() since\nWriteInternal() already handles mapping.\n\nAdditionally, fix a bug where WriteBuffer with a full buffer\noverwrite would skip storage sync but fail to update the revision\nnumber, leaving the storage in an inconsistent state.\n\nFinally, fix a bug in Queue::ForceEventualFlushOfCommands() where it\npreviously did nothing.\n\nBug: 345471009\nChange-Id: I20d5dbbc386960853783dd1e75ed0cab24fd33d3\nReviewed-on: https://dawn-review.googlesource.com/c/dawn/+/285235\nCommit-Queue: Quyen Le \u003clehoangquyen@chromium.org\u003e\nReviewed-by: Corentin Wallez \u003ccwallez@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "642aea1eeadd04ca3df463448348676caf959d51",
      "old_mode": 33188,
      "old_path": "src/dawn/native/d3d11/BufferD3D11.cpp",
      "new_id": "3bbc8df19e788b2ada358b1aefb134b301978e69",
      "new_mode": 33188,
      "new_path": "src/dawn/native/d3d11/BufferD3D11.cpp"
    },
    {
      "type": "modify",
      "old_id": "2b298e9a8e43ec9db8ff238acdc0d5acd0bf26d4",
      "old_mode": 33188,
      "old_path": "src/dawn/native/d3d11/QueueD3D11.cpp",
      "new_id": "a6a9769f44cc9cf2a7ddcb41cc765115a83113f4",
      "new_mode": 33188,
      "new_path": "src/dawn/native/d3d11/QueueD3D11.cpp"
    },
    {
      "type": "modify",
      "old_id": "8318b8c7d9da58bae1adc4d3281acebb177f3f21",
      "old_mode": 33188,
      "old_path": "src/dawn/tests/end2end/BufferTests.cpp",
      "new_id": "f05e45c1aca136763ac6e741ffa82bd3f8a67268",
      "new_mode": 33188,
      "new_path": "src/dawn/tests/end2end/BufferTests.cpp"
    }
  ]
}
