)]}'
{
  "commit": "25eeaa3d39afcc82fe9d384949d4e9c99e6e7903",
  "tree": "010e11279f12a1103a1a92be3c2dd5b7fb102a14",
  "parents": [
    "41c24933da1e6c5ec111f824bfc5977be244d3e4"
  ],
  "author": {
    "name": "Corentin Wallez",
    "email": "cwallez@chromium.org",
    "time": "Tue Oct 27 11:31:26 2020 +0000"
  },
  "committer": {
    "name": "Commit Bot service account",
    "email": "commit-bot@chromium.org",
    "time": "Tue Oct 27 11:31:26 2020 +0000"
  },
  "message": "Make Surface reference its attached SwapChain\n\nThis solves an issues where when switching swapchains the previous\none was destroyed before the new one was created, doing so detached\nitself from the Surface, which in turn made the new swapchain not do\na graceful transition via vkSwapchainCreateInfoKHR::oldSwapchain.\n\nKeeping the reference on the surface makes sure we always have\nknowledge of the previous swapchain when replacing it. It requires\nre-working the lifetime model of NewSwapChainBase to not require a\ncall to DetachFromSurface in the destructor, and having the Device\nexplicitly tell a swapchain it got attached on creation (otherwise\nthere are ASSERTs firing when swapchain creation fails).\n\nIn addition, backends are changed to use a SwapChain::Create method\nand fail with a validation error (for now) when the previous swapchain\ndidn\u0027t use the same API.\n\nvulkan::SwapChain is updated to use the previous swapchain\u0027s device\u0027s\nfenced deleter to destroy it which is important in the device\nswitching tests.\n\nThe SwapChainValidationTests are updated because with the lifetime\nchanges the texture view can be kept alive after the application has\nlost the last reference to the wgpu::SwapChain.\n\nTBRing since it was reviewed in a different CL (but for the wrong\nbranch).\n\nTBR\u003denga@chromium.org\nTBR\u003dsenorblanco@chromium.org\n\nBug: dawn:269\nChange-Id: Ie4374b5685af990d68969ab9cd7767e53c287ace\nReviewed-on: https://dawn-review.googlesource.com/c/dawn/+/31041\nReviewed-by: Corentin Wallez \u003ccwallez@chromium.org\u003e\nCommit-Queue: Corentin Wallez \u003ccwallez@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "84210db9b91d41386f4f68d24b086ff7764de143",
      "old_mode": 33188,
      "old_path": "src/dawn_native/Device.cpp",
      "new_id": "e5454f8f686daf42a81cbba07231119f32b429b3",
      "new_mode": 33188,
      "new_path": "src/dawn_native/Device.cpp"
    },
    {
      "type": "modify",
      "old_id": "ccd240c9dfc0641007be907c4ae6cf604ad437d7",
      "old_mode": 33188,
      "old_path": "src/dawn_native/Surface.cpp",
      "new_id": "4afe05ed4549673d6363f68adeb8e9fa182cb04e",
      "new_mode": 33188,
      "new_path": "src/dawn_native/Surface.cpp"
    },
    {
      "type": "modify",
      "old_id": "048298b00bcdb0a704fa27ed78db32679cf91298",
      "old_mode": 33188,
      "old_path": "src/dawn_native/Surface.h",
      "new_id": "5863109024c712e7df39c1598f5505d1bcbec932",
      "new_mode": 33188,
      "new_path": "src/dawn_native/Surface.h"
    },
    {
      "type": "modify",
      "old_id": "6358567f4f2c7c557f9130b6a636e74d87c16728",
      "old_mode": 33188,
      "old_path": "src/dawn_native/SwapChain.cpp",
      "new_id": "965b4cbf47b7dcce6896daa487382acb4787252b",
      "new_mode": 33188,
      "new_path": "src/dawn_native/SwapChain.cpp"
    },
    {
      "type": "modify",
      "old_id": "6e32e5340481dfe997d153589d2fd89c0857d3d7",
      "old_mode": 33188,
      "old_path": "src/dawn_native/SwapChain.h",
      "new_id": "efa8a5411f06cb224fefcf695ef398330c54f77d",
      "new_mode": 33188,
      "new_path": "src/dawn_native/SwapChain.h"
    },
    {
      "type": "modify",
      "old_id": "d449ab50c59572aad27221b2db7301ece0f33858",
      "old_mode": 33188,
      "old_path": "src/dawn_native/metal/DeviceMTL.mm",
      "new_id": "a9a1d1eaf51a385ed649f69afe5f82a9b63ba0a3",
      "new_mode": 33188,
      "new_path": "src/dawn_native/metal/DeviceMTL.mm"
    },
    {
      "type": "modify",
      "old_id": "19abc7facdfb7cfbfd38400fb6367472af676b7c",
      "old_mode": 33188,
      "old_path": "src/dawn_native/metal/SwapChainMTL.h",
      "new_id": "6f15c4b3cdff3f1f9f7db1a97729dfe8eb42737b",
      "new_mode": 33188,
      "new_path": "src/dawn_native/metal/SwapChainMTL.h"
    },
    {
      "type": "modify",
      "old_id": "f581da983542d558fbfa019ed2b2185648b4f12d",
      "old_mode": 33188,
      "old_path": "src/dawn_native/metal/SwapChainMTL.mm",
      "new_id": "7b0cbe26f7f16fd098a2eb864ff048663bc927e5",
      "new_mode": 33188,
      "new_path": "src/dawn_native/metal/SwapChainMTL.mm"
    },
    {
      "type": "modify",
      "old_id": "fc8d86946137267afb207eb9b1b9994b1a76d662",
      "old_mode": 33188,
      "old_path": "src/dawn_native/null/DeviceNull.cpp",
      "new_id": "d8ddfffa36ae24543c7793d73d49ff4fa08866f2",
      "new_mode": 33188,
      "new_path": "src/dawn_native/null/DeviceNull.cpp"
    },
    {
      "type": "modify",
      "old_id": "08f84a03d77734a3a411bab71454db522a4bd303",
      "old_mode": 33188,
      "old_path": "src/dawn_native/null/DeviceNull.h",
      "new_id": "2ffadbe87be1028c4057c6098b1af0850501f93a",
      "new_mode": 33188,
      "new_path": "src/dawn_native/null/DeviceNull.h"
    },
    {
      "type": "modify",
      "old_id": "8d0804b013819f3e7fe8f6ebaf6695ab9b1f8232",
      "old_mode": 33188,
      "old_path": "src/dawn_native/vulkan/SwapChainVk.cpp",
      "new_id": "d56c4306e42bad7961a6a4bb62a8275fa4289343",
      "new_mode": 33188,
      "new_path": "src/dawn_native/vulkan/SwapChainVk.cpp"
    },
    {
      "type": "modify",
      "old_id": "f329f0851e99041c186485d9c5ca35898e6dedcc",
      "old_mode": 33188,
      "old_path": "src/dawn_native/vulkan/VulkanError.cpp",
      "new_id": "e0655b959fedf2c87dd954e7b21476f7ee2a46d7",
      "new_mode": 33188,
      "new_path": "src/dawn_native/vulkan/VulkanError.cpp"
    },
    {
      "type": "modify",
      "old_id": "c81307a03a0a0e3c93f32b9b4f26e4e54724e975",
      "old_mode": 33188,
      "old_path": "src/tests/end2end/SwapChainTests.cpp",
      "new_id": "2a4cd93442adbc54fa1570442177630ebc809580",
      "new_mode": 33188,
      "new_path": "src/tests/end2end/SwapChainTests.cpp"
    },
    {
      "type": "modify",
      "old_id": "e92bf847e96e8fe64e54f761737a98af4fffcbff",
      "old_mode": 33188,
      "old_path": "src/tests/end2end/SwapChainValidationTests.cpp",
      "new_id": "e5c6cc205a08d8fc99d73d386472d1da74e7118e",
      "new_mode": 33188,
      "new_path": "src/tests/end2end/SwapChainValidationTests.cpp"
    }
  ]
}
