)]}'
{
  "commit": "aed5951e3b928d537042895226f435f968330b9c",
  "tree": "e15bf4479fd448650164630a66dd261ea7e80a36",
  "parents": [
    "797e627e641cf15515660d4636ba6e7c904c94b4"
  ],
  "author": {
    "name": "Shahbaz Youssefi",
    "email": "syoussefi@chromium.org",
    "time": "Tue Mar 29 20:29:58 2022"
  },
  "committer": {
    "name": "Angle LUCI CQ",
    "email": "angle-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Tue Apr 12 06:03:38 2022"
  },
  "message": "Reland \"Vulkan: Fix texture-after-framebuffer sync issues\"\n\nThis is a reland of commit 535cd538f3585b44855647339f04bae1c1acf63a\n\nOriginal change\u0027s description:\n\u003e Vulkan: Fix texture-after-framebuffer sync issues\n\u003e\n\u003e In TextureVk::syncState, for various reasons, the underlying image may\n\u003e need to be respecified.  For example because base/max level changed,\n\u003e usage/create flags have changed, the format needs modification to become\n\u003e renderable, generate mipmap is adding levels, etc.\n\u003e\n\u003e Currently, ANGLE syncs FramebufferVk before TextureVk for the sake of\n\u003e the deferred clear optimization.  This means that if the texture needs\n\u003e to recreate its underlying image, it needs to do so earlier than its own\n\u003e syncState, and do so in FramebufferVk::syncState through the\n\u003e TextureVk::getAttachmentRenderTarget function.\n\u003e\n\u003e Over time, TextureVk::getAttachmentRenderTarget was modified to do parts\n\u003e of what TextureVk::syncState did for this matter as bugs were\n\u003e discovered, and more continue to be discovered.  The bug that prompted\n\u003e this change is missing image recreation when usage/create flags change.\n\u003e\n\u003e In this change, the relevant code in TextureVk::syncState is refactored\n\u003e in a helper that\u0027s called by TextureVk::getAttachmentRenderTarget.  This\n\u003e way, the two functions should always be in agreement, avoiding\n\u003e TextureVk::syncState recreating the image after\n\u003e FramebufferVk::syncState, leading to use-after-free bugs.\n\u003e\n\u003e Bug: angleproject:4418\n\u003e Bug: angleproject:6909\n\u003e Bug: chromium:1266094\n\u003e Bug: chromium:1296866\n\u003e Change-Id: I856a34ca5cf573578c771f5adbeb9208420a3f62\n\u003e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3557817\n\u003e Reviewed-by: Jamie Madill \u003cjmadill@chromium.org\u003e\n\u003e Reviewed-by: Charlie Lao \u003ccclao@google.com\u003e\n\u003e Commit-Queue: Shahbaz Youssefi \u003csyoussefi@chromium.org\u003e\n\nBug: angleproject:4418\nBug: angleproject:6909\nBug: chromium:1266094\nBug: chromium:1296866\nChange-Id: I0110eab88eb9d8f77e204b84a6e90308e2384fd7\nReviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3572715\nReviewed-by: Jamie Madill \u003cjmadill@chromium.org\u003e\nReviewed-by: Yuxin Hu \u003cyuxinhu@google.com\u003e\nCommit-Queue: Shahbaz Youssefi \u003csyoussefi@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5ab12c241eca1498e99cc4221622652ed93fbdc4",
      "old_mode": 33188,
      "old_path": "src/libANGLE/renderer/vulkan/ImageVk.cpp",
      "new_id": "a7054b241ea6d5eda2fd3eff17f05e780a50c944",
      "new_mode": 33188,
      "new_path": "src/libANGLE/renderer/vulkan/ImageVk.cpp"
    },
    {
      "type": "modify",
      "old_id": "2098f5162be79999705f6c0f5d5eec2c2e02b5d6",
      "old_mode": 33188,
      "old_path": "src/libANGLE/renderer/vulkan/TextureVk.cpp",
      "new_id": "d116fed110c4e6a942ae5bc3a9d07ca1e3e1cb14",
      "new_mode": 33188,
      "new_path": "src/libANGLE/renderer/vulkan/TextureVk.cpp"
    },
    {
      "type": "modify",
      "old_id": "4bee49101c15a2c4eeeb37d537b50df3fe6ddafa",
      "old_mode": 33188,
      "old_path": "src/libANGLE/renderer/vulkan/TextureVk.h",
      "new_id": "f23332030523a45b623ca4261304cfd35d34c095",
      "new_mode": 33188,
      "new_path": "src/libANGLE/renderer/vulkan/TextureVk.h"
    },
    {
      "type": "modify",
      "old_id": "fe9823e5fed05b0d7d8d4f76be656424324deb66",
      "old_mode": 33188,
      "old_path": "src/tests/deqp_support/deqp_gles31_test_expectations.txt",
      "new_id": "27d846dd56a3e92e5e6218be66a83aa54b48244f",
      "new_mode": 33188,
      "new_path": "src/tests/deqp_support/deqp_gles31_test_expectations.txt"
    },
    {
      "type": "modify",
      "old_id": "5b0d35f15d258e5e901f1a8e125e8612fa4f7f69",
      "old_mode": 33188,
      "old_path": "src/tests/deqp_support/deqp_gles3_test_expectations.txt",
      "new_id": "92ffb29c5570d185c81f42e5a7428504c802eeab",
      "new_mode": 33188,
      "new_path": "src/tests/deqp_support/deqp_gles3_test_expectations.txt"
    }
  ]
}
