)]}'
{
  "commit": "8f8b41e308e1daa823a2e433211325a1193622be",
  "tree": "008e584f6da144b9b80bdae0069cdb21ec42d2ab",
  "parents": [
    "c96844d9ec55d9537ab8bc524ebde071addfdc52"
  ],
  "author": {
    "name": "Charlie Lao",
    "email": "cclao@google.com",
    "time": "Fri Feb 14 17:54:51 2025 -0800"
  },
  "committer": {
    "name": "Angle LUCI CQ",
    "email": "angle-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Thu Feb 20 12:48:57 2025 -0800"
  },
  "message": "Vulkan: Optimize for multiple TexSubImage calls in the same level\n\nBased on app traces, some apps make glTexSubImage call for the same\nlevel multiple times in a row. One extreme example is lumino_city, which\nit creates a 2D texture with nullptr data, and then calls\nglTexSubImage2D many times back to back for each row of the texture to\nupdate the data.  Because we uses std::vector to store the per level\nupdate struct (SubresourceUpdate), it means we copy these data\nstructures every time it grows 2x, until it hit the max size 1081. The\nother common case we get into is app update some area of the texture\n(like google map and gacha_life)  which also end up with a few\ntexSubImage calls back to back. The other more common case is we staged\na clear first and then glTexSubImage which end up with vector size of 2.\nThis CL changes to use std::deque instead of std::vector to store the\nstaged update for a given level, which allows it to grow without extra\npenalty.\n\nBug: b/293297177\nChange-Id: Iabbc143074ad9d6fcf47abbddee09ecf7f78d1a7\nReviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6271964\nReviewed-by: Shahbaz Youssefi \u003csyoussefi@chromium.org\u003e\nReviewed-by: Yuxin Hu \u003cyuxinhu@google.com\u003e\nCommit-Queue: Charlie Lao \u003ccclao@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ea264b6decd284b192d49b73faaf6d4cea895565",
      "old_mode": 33188,
      "old_path": "src/libANGLE/renderer/vulkan/vk_helpers.cpp",
      "new_id": "c9789173971f740f130ad58807c9ba7da8298646",
      "new_mode": 33188,
      "new_path": "src/libANGLE/renderer/vulkan/vk_helpers.cpp"
    },
    {
      "type": "modify",
      "old_id": "f7b17e95a217566c777ecb7060e4d5abf3134291",
      "old_mode": 33188,
      "old_path": "src/libANGLE/renderer/vulkan/vk_helpers.h",
      "new_id": "36f49421f4c0eea20d199a0c83d1a0d113ea1e55",
      "new_mode": 33188,
      "new_path": "src/libANGLE/renderer/vulkan/vk_helpers.h"
    }
  ]
}
