)]}'
{
  "commit": "33d20bef34be43be79d2e6961e636b074df4aa85",
  "tree": "24b5e3216dbc8dcde1bdc4203d7083ae3cf835c4",
  "parents": [
    "d64f1fdd35a3fab0a0d46f658fd8ab17a43ac4af"
  ],
  "author": {
    "name": "Lokbondo Kung",
    "email": "lokokung@google.com",
    "time": "Tue Jun 10 11:44:08 2025 -0700"
  },
  "committer": {
    "name": "Dawn LUCI CQ",
    "email": "dawn-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Tue Jun 10 11:44:08 2025 -0700"
  },
  "message": "[dawn][native] Adds a way to fake an error after Device creation.\n\n- This is a follow up to:\n  https://dawn-review.googlesource.com/c/dawn/+/245734 where the\n  issues in the bugs below should be fixed.\n- The fuzz tests linked below were a result of an error happening\n  after a Device was successfully allocated, but failed to initialize.\n  This is possible in the fuzz tests because we allow Vulkan failure\n  fuzzing.\n- Updates the device lost event to be updated appropriately when the\n  device failed to create. Otherwise, when a device was created but\n  initialize failed, the device lost would actually look like the\n  device was destroyed. Now only the first |SetLost| on the event\n  will be reflected, and hence users will see |FailedCreation|.\n- In order to better protect against this, this change adds a way to\n  fake a failure in the frontend and adds relevant regression tests.\n- Note that as I was making this change, I also filed\n  https://github.com/webgpu-native/webgpu-headers/issues/546 upstream\n  because of the interaction between RequestDevice and the\n  DeviceLostCallback when we have different callback modes for them.\n\nBug: 421746158, 415350701\nChange-Id: I3f2943c66d435b4bbbdca5fbb26c6c2ac388e160\nReviewed-on: https://dawn-review.googlesource.com/c/dawn/+/245777\nCommit-Queue: Brandon Jones \u003cbajones@chromium.org\u003e\nAuto-Submit: Loko Kung \u003clokokung@google.com\u003e\nReviewed-by: Brandon Jones \u003cbajones@chromium.org\u003e\nReviewed-by: Corentin Wallez \u003ccwallez@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6a80502ac9be1320df8899a258509fbb4c002886",
      "old_mode": 33188,
      "old_path": "src/dawn/dawn.json",
      "new_id": "a5443995f28773a50c4e0d464e86ede8f993337b",
      "new_mode": 33188,
      "new_path": "src/dawn/dawn.json"
    },
    {
      "type": "modify",
      "old_id": "6ebd897aa44e756889fc584526b7307b01295b99",
      "old_mode": 33188,
      "old_path": "src/dawn/native/Adapter.cpp",
      "new_id": "a6ad007a1d030eaa880164cc61320bfede76a498",
      "new_mode": 33188,
      "new_path": "src/dawn/native/Adapter.cpp"
    },
    {
      "type": "modify",
      "old_id": "4530de94ed744ed8d72e4876a9e3d81d7c013d3e",
      "old_mode": 33188,
      "old_path": "src/dawn/native/Device.cpp",
      "new_id": "aa2b382f35cd65fe24074cdd17ce37012a823103",
      "new_mode": 33188,
      "new_path": "src/dawn/native/Device.cpp"
    },
    {
      "type": "modify",
      "old_id": "c286bf8e73bc67da7ef9823d7275e9cd3e6840b8",
      "old_mode": 33188,
      "old_path": "src/dawn/native/Device.h",
      "new_id": "5e09a965be22617c43bcf52365d721b761361273",
      "new_mode": 33188,
      "new_path": "src/dawn/native/Device.h"
    },
    {
      "type": "modify",
      "old_id": "1a743d159b61421c1cc96e0ee1388d83248167e4",
      "old_mode": 33188,
      "old_path": "src/dawn/native/d3d11/DeviceD3D11.cpp",
      "new_id": "163192e03565bdb836719571301a8b39239d3536",
      "new_mode": 33188,
      "new_path": "src/dawn/native/d3d11/DeviceD3D11.cpp"
    },
    {
      "type": "modify",
      "old_id": "4396c0fcb372f5d7cac66c1b9c7c8d95ede30a6b",
      "old_mode": 33188,
      "old_path": "src/dawn/native/d3d12/DeviceD3D12.cpp",
      "new_id": "2247e3c8034bc281f268c27f7d12871c8bb22654",
      "new_mode": 33188,
      "new_path": "src/dawn/native/d3d12/DeviceD3D12.cpp"
    },
    {
      "type": "modify",
      "old_id": "935ac5858e4f3d1f55ed6bb0f986b24a738d12e5",
      "old_mode": 33188,
      "old_path": "src/dawn/native/metal/DeviceMTL.mm",
      "new_id": "40db656ae4b3873c0983e4edddc6abca0104cb21",
      "new_mode": 33188,
      "new_path": "src/dawn/native/metal/DeviceMTL.mm"
    },
    {
      "type": "modify",
      "old_id": "e089c8fc9f9997fda5011af802c28cb999bb2e6e",
      "old_mode": 33188,
      "old_path": "src/dawn/native/null/DeviceNull.cpp",
      "new_id": "80d19462480bb0e52178893ae40ab9b1fe02a225",
      "new_mode": 33188,
      "new_path": "src/dawn/native/null/DeviceNull.cpp"
    },
    {
      "type": "modify",
      "old_id": "86e46ab517139adaf1ebdae38f2f0ab9638b500b",
      "old_mode": 33188,
      "old_path": "src/dawn/native/opengl/DeviceGL.cpp",
      "new_id": "696175a232fecd95477011895b1a4a5d28387d2c",
      "new_mode": 33188,
      "new_path": "src/dawn/native/opengl/DeviceGL.cpp"
    },
    {
      "type": "modify",
      "old_id": "299a4e40cb0a109ac2623770d889724621aad943",
      "old_mode": 33188,
      "old_path": "src/dawn/native/vulkan/DeviceVk.cpp",
      "new_id": "ca8429435bb2bf8dd64189602f7e01c57f4db53d",
      "new_mode": 33188,
      "new_path": "src/dawn/native/vulkan/DeviceVk.cpp"
    },
    {
      "type": "modify",
      "old_id": "259592cec0487aa6ecba98504d737cfdc8cd9fff",
      "old_mode": 33188,
      "old_path": "src/dawn/native/webgpu/DeviceWGPU.cpp",
      "new_id": "30dd2bb3635398b600af5ec34ba78a016b9558db",
      "new_mode": 33188,
      "new_path": "src/dawn/native/webgpu/DeviceWGPU.cpp"
    },
    {
      "type": "modify",
      "old_id": "bf24b7386d9e2f1b8b2e2f0549e333851712e4e4",
      "old_mode": 33188,
      "old_path": "src/dawn/tests/unittests/native/mocks/DeviceMock.cpp",
      "new_id": "09f25edb4399915ad9e089f11761320973b6a98b",
      "new_mode": 33188,
      "new_path": "src/dawn/tests/unittests/native/mocks/DeviceMock.cpp"
    },
    {
      "type": "modify",
      "old_id": "2b0ff80052ca7e3f95d4f48d7d6045853582e08a",
      "old_mode": 33188,
      "old_path": "src/dawn/tests/unittests/validation/DeviceValidationTests.cpp",
      "new_id": "36577610a5ca18dbf3a837d12e4fd92ae2c0ce92",
      "new_mode": 33188,
      "new_path": "src/dawn/tests/unittests/validation/DeviceValidationTests.cpp"
    }
  ]
}
