)]}'
{
  "commit": "3f0c4a56e7b6eaef22cc9f36c90ea2ee4063c587",
  "tree": "b064a979769ac917c0e2b85f86d02ebf50d67683",
  "parents": [
    "80766cfa26566de48142708e1d158ecbf4129cc2"
  ],
  "author": {
    "name": "Jamie Madill",
    "email": "jmadill@chromium.org",
    "time": "Thu Jan 10 10:20:35 2019 -0500"
  },
  "committer": {
    "name": "Commit Bot",
    "email": "commit-bot@chromium.org",
    "time": "Thu Jan 10 19:46:59 2019 +0000"
  },
  "message": "Vulkan: Faster state transitions.\n\nImplements a transition table from Pipeline Cache entry to\nstate change neighbouring Pipeline Cache entries. We use\na 64-bit mask to do a quick scan over the pipeline desc.\nThis ends up being a lot faster than doing a full hash\nand memcmp over the pipeline description.\n\nNote that there could be future optimizations to this design.\nWe might keep a hash map of the pipeline transitions instead\nof a list. Or use a sorted list. This could speed up the search\nwhen there are many transitions for cache entries. Also we could\nskip the transition table and opt to do a full hash when there\nare more than a configurable number of dirty states. This might\nbe a bit faster in some cases. Likely this will be something we\ncan add performance tests for in the future.\n\nDocumentation is also added in a README file for the Vulkan back\nend. This will be extended over time.\n\nImproves performance about 30-35% on the VBO state change test.\n\nBug: angleproject:3013\nChange-Id: I793f9e3efd8887acf00ad60e4ac2502a54c95dee\nReviewed-on: https://chromium-review.googlesource.com/c/1369287\nCommit-Queue: Jamie Madill \u003cjmadill@chromium.org\u003e\nReviewed-by: Yuly Novikov \u003cynovikov@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3dbf65831f325462ca932e5266d10622335e2e76",
      "old_mode": 33188,
      "old_path": "src/common/mathutil.h",
      "new_id": "edf63dd15af897c70ab654944ff80cb04d2194a8",
      "new_mode": 33188,
      "new_path": "src/common/mathutil.h"
    },
    {
      "type": "modify",
      "old_id": "e0e361a2fff524ea220b719c9cfa64d2855ebfae",
      "old_mode": 33188,
      "old_path": "src/libANGLE/formatutils.cpp",
      "new_id": "1cbca8c68190ace4c60c12bb4917d329c54190d1",
      "new_mode": 33188,
      "new_path": "src/libANGLE/formatutils.cpp"
    },
    {
      "type": "modify",
      "old_id": "bfd3b182be12f87f3b43171d54903724cc3993f6",
      "old_mode": 33188,
      "old_path": "src/libANGLE/renderer/vulkan/ContextVk.cpp",
      "new_id": "2f3899c5c46ec09c81efa997ba25d8ba3a0e3426",
      "new_mode": 33188,
      "new_path": "src/libANGLE/renderer/vulkan/ContextVk.cpp"
    },
    {
      "type": "modify",
      "old_id": "453e5d242438cf6eeb5a9905a17fda0260324d85",
      "old_mode": 33188,
      "old_path": "src/libANGLE/renderer/vulkan/ContextVk.h",
      "new_id": "ac350fdf5a9ebc58e8cbdb8e3e8d6f2faecb01d7",
      "new_mode": 33188,
      "new_path": "src/libANGLE/renderer/vulkan/ContextVk.h"
    },
    {
      "type": "modify",
      "old_id": "5b6147f92325268aee25c18dde25c0c3d21a530d",
      "old_mode": 33188,
      "old_path": "src/libANGLE/renderer/vulkan/ProgramVk.h",
      "new_id": "70b6ad046b0f061a69bbd7e9f43c06a6e170c630",
      "new_mode": 33188,
      "new_path": "src/libANGLE/renderer/vulkan/ProgramVk.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "dba3eec81bca1a9820bcc2cd5cfef360e048530a",
      "new_mode": 33188,
      "new_path": "src/libANGLE/renderer/vulkan/README.md"
    },
    {
      "type": "modify",
      "old_id": "a59c2cf5adb5c5b1f23cffa35b593f41341d2cb4",
      "old_mode": 33188,
      "old_path": "src/libANGLE/renderer/vulkan/UtilsVk.cpp",
      "new_id": "7c2ba26561c762561768a82571ab2e9790b25e90",
      "new_mode": 33188,
      "new_path": "src/libANGLE/renderer/vulkan/UtilsVk.cpp"
    },
    {
      "type": "modify",
      "old_id": "ac0d7f7a0a5827f234a94b4ad77064d0c2f74678",
      "old_mode": 33188,
      "old_path": "src/libANGLE/renderer/vulkan/vk_cache_utils.cpp",
      "new_id": "f33829e55e5a80710d4d90bd50bd654272287b0c",
      "new_mode": 33188,
      "new_path": "src/libANGLE/renderer/vulkan/vk_cache_utils.cpp"
    },
    {
      "type": "modify",
      "old_id": "110268fea6e66b661f66c26df69130ea855377f2",
      "old_mode": 33188,
      "old_path": "src/libANGLE/renderer/vulkan/vk_cache_utils.h",
      "new_id": "5c497a0a5c1117f672e3023168cd03bafae8e185",
      "new_mode": 33188,
      "new_path": "src/libANGLE/renderer/vulkan/vk_cache_utils.h"
    },
    {
      "type": "modify",
      "old_id": "389b386106751a55500b50e2ec18bf2cb4ebc621",
      "old_mode": 33188,
      "old_path": "src/libANGLE/renderer/vulkan/vk_helpers.h",
      "new_id": "e6228a1101f5c67e35034d4004642770a0534e73",
      "new_mode": 33188,
      "new_path": "src/libANGLE/renderer/vulkan/vk_helpers.h"
    },
    {
      "type": "modify",
      "old_id": "10c60a0b9df03dc731a5e272d2eb72f0998cfdf9",
      "old_mode": 33188,
      "old_path": "src/tests/perf_tests/VulkanPipelineCachePerf.cpp",
      "new_id": "2ca98a64443f6637712975c3e034445001dcb3c9",
      "new_mode": 33188,
      "new_path": "src/tests/perf_tests/VulkanPipelineCachePerf.cpp"
    }
  ]
}
