)]}'
{
  "log": [
    {
      "commit": "08e2f482e4c16e97ec88dd034aa88fa6569a04cf",
      "tree": "3f1f7620fa577b24f051052f1f5d03731cad59f7",
      "parents": [
        "09ab378326b64459b81ad1e326be9478e46dd3d9"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Mon Mar 06 15:22:17 2017 -0800"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Sat Mar 11 08:39:51 2017 -0800"
      },
      "message": "vulkan: update Vulkan headers to 1.0.39\n\nTest: make ; mmm frameworks/native/vulkan\nMerged-In: Ic787ce171633dce0d17b3ba838d0c3441ac728c3\nChange-Id: I803bf9f4cd0ca4db8579a5c28495e8a66088bae2\n"
    },
    {
      "commit": "eb02c479aad0bc442520fe63f7ffa4d77fe2fa24",
      "tree": "30e32035fbce5c317a732d4fa66231ff6b1843c7",
      "parents": [
        "3f5499b9f54f2cddde69a03258ac49baaea68ff5"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Fri Feb 24 15:13:45 2017 -0800"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Sat Feb 25 18:38:11 2017 -0800"
      },
      "message": "vulkan: update Vulkan headers to 1.0.38\n\nTest: make ; mmm frameworks/native/vulkan\nChange-Id: I6437dc951bd694cb848f75d0de7eb7dbe8a4d1fe\n"
    },
    {
      "commit": "3f5499b9f54f2cddde69a03258ac49baaea68ff5",
      "tree": "c2237b229bbf1bdf78518a4e1f77891be4358f3b",
      "parents": [
        "057e74631b8b1c658ec9b67684bf486e1ec3e7e5"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Tue Jul 26 15:20:40 2016 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Sat Feb 25 18:37:32 2017 -0800"
      },
      "message": "vulkan: Update Vulkan headers to 1.0.22\n\nMeaningful changes to platform code:\n* VKAPI_ATTR is now defined properly when building for 32-bit ARMv8a.\n* The pData parameter to vkCmdUpdateBuffer changed from uint32_t* to\n  void*. Alignment is still required to be four bytes (by spec), and\n  the size parameter was always supposed to be bytes, not words.\n\nBug: 29460769\nTest: make ; mmm frameworks/native/vulkan\nChange-Id: I77261381e5702a3b2bc1d1ea4c0606151547be47\n(cherry picked from commit 56d386a7a46c8ac36df8820c3ccf3da048ef1970)\n"
    },
    {
      "commit": "7823e124e00576e20e47ec717cbe8bc89f0f2bf2",
      "tree": "b0d7ec03dfc3d58408a9616b7125a77a4ca4439c",
      "parents": [
        "5cfc1c0546d797ebca9bdc3645585e33cc0c1193"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Sep 29 08:08:05 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Jan 11 15:07:17 2017 -0800"
      },
      "message": "Replace cutils/log.h and rationalize log/log.h and android/log.h\n\n- cutils/log.h treat as deprecated and lead by example\n- android/log.h to be used instead of log/log.h if possible\n- add system includes that are assumed as side effects\n- define LOG_TAG first\n\nTest: compile\nBug: 31289077\nBug: 30465923\nChange-Id: I8d99b24c333578c9b5aa9f2a01324bd0bba268dd\n"
    },
    {
      "commit": "b9c62a6950ef6550d7a0293386677a38f62d7e59",
      "tree": "64c95e60f74e53f89e31e1660afc26c16f64e3c4",
      "parents": [
        "a422103c907abc6c5f8b9c271e24f144f189d5b9"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Jan 05 15:58:50 2017 -0800"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Jan 06 11:04:15 2017 -0800"
      },
      "message": "Unversion NDK stub libraries.\n\nThe system versions of these libraries aren\u0027t versioned yet.\n\nBug: https://github.com/android-ndk/ndk/issues/278\nTest: make ndk\nChange-Id: I73e4ebcac151c4039df6261aa6674accb0204706\n"
    },
    {
      "commit": "a5e161b1207ef447a51e99856097d69d4a6111e1",
      "tree": "d733d77cbafe352fd20935eab60435a365beb8af",
      "parents": [
        "c47aa53c84cc7ac0194057c3afac005437d5ae2b"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Sep 29 08:08:05 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Dec 22 13:55:11 2016 -0800"
      },
      "message": "Replace cutils/log.h and rationalize log/log.h and android/log.h\n\n- cutils/log.h treat as deprecated and lead by example\n- android/log.h to be used instead of log/log.h if required\n- add system includes that are assumed as side effects of log.h\n- modules that use SLOG should use SLOG for all logging (installd)\n- define LOG_TAG first\n- remove logging infrastructure if not used\n\nTest: build\nBug: 31289077\nChange-Id: Iea147a0104c7ab7f12451304131d6500f42141e7\n"
    },
    {
      "commit": "d78c2e8a0807ff45db4cb643cc2ef38eafd22551",
      "tree": "0afec51317e37b6b28432aa203cc13abd0872168",
      "parents": [
        "a2a7195e232e90a99b88263f2be5b791b03f1c7f"
      ],
      "author": {
        "name": "Daniel Koch",
        "email": "dkoch@nvidia.com",
        "time": "Tue Dec 13 18:45:13 2016 -0500"
      },
      "committer": {
        "name": "Daniel Koch",
        "email": "dkoch@nvidia.com",
        "time": "Thu Dec 15 10:57:54 2016 -0500"
      },
      "message": "libvulkan: add NULL check to DestroySwapchainKHR\n\nvkDestroySwapchainKHR is required to silently ignore NULL handles\nthat are provided to it to destroy.\nThis adds an early return if swapchain_handle is NULL.\n\nTest: dEQP-VK.wsi.android.swapchain.destroy.null_handle (VK 1.0.2 CTS)\n\nChange-Id: Ic230f114a680210cb0e0de931b17e4d70fb27f44\n"
    },
    {
      "commit": "7884c19cb9dc040b71fa0dad5b7cd6a68b804919",
      "tree": "170e1476ba35fa48378fc7b92266f303457d2abb",
      "parents": [
        "a09202e9ac41f109000c9750498864a284265186"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Dec 05 13:26:22 2016 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Dec 05 16:22:48 2016 -0800"
      },
      "message": "Convert vulkan to Android.bp\n\nSee build/soong/README.md for more information.\n\nTest: mma -j\nChange-Id: Ic7f0af683a5ef093df718ed746a73a7fa2a9ce0b\n"
    },
    {
      "commit": "96b5509dcdfeaa7bf529ea720fdf9022e07ed5a5",
      "tree": "86e04213b0d802ae5585c0f7fb026ff3caafa75e",
      "parents": [
        "af2fbb0ccce60dedecdf9f622dc5d2828eeeadbb"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Oct 20 10:14:30 2016 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Oct 20 10:14:30 2016 -0700"
      },
      "message": "Add licenses to ndk_headers.\n\nTest: make ndk\nBug: None\nChange-Id: Ia113ea42b1d62d87dfbb2fc456428c7db50a98f1\n"
    },
    {
      "commit": "0fbb5321ae86a48917b0a24748af3349cbc08eee",
      "tree": "bdba2e7977f69616bd3bb4ba6eb12eef72846986",
      "parents": [
        "c43908821c03d8ade0a2d412c97a366a46326c5e"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Oct 04 17:49:33 2016 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Oct 06 09:55:17 2016 -0700"
      },
      "message": "Migrate libvulkan to ndk_library.\n\nTest: make native\nBug: http://b/30465923\nChange-Id: I97199a600b71447fd14181e06be3f9221c2529f3\n"
    },
    {
      "commit": "7331e228f5089a619a517630351353e88d04c9b5",
      "tree": "7acc60b9985c4f1e1522b75b260e2aa02ea508ad",
      "parents": [
        "8b2d3da4c491c00fb469affc74df5031604a96ea"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Thu Sep 15 21:26:01 2016 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Fri Sep 16 15:28:08 2016 -0700"
      },
      "message": "libvulkan: Fix count returned for incomplete wsi queries\n\nWhen vkGetPhysicalDeviceSurfaceFormatsKHR,\nvkGetPhysicalDevicePresentModesKHR, and vkGetSwapchainImagesKHR\nreturned VK_INCOMPLETE, they would overwrite the count parameter with\nthe number of available items, rather than the number of returned\nitems.\n\nChange-Id: I6a736770f90b95ad15bfcfbe5afb4d2886817dcb\nFixes: 31490492\nTest: https://gerrit.khronos.org/#/c/158/\n"
    },
    {
      "commit": "d56988d1fc3a42f5728f2ae707cc8faf73860745",
      "tree": "fb7fb33a5a188e66b122bb0f33598499b962481c",
      "parents": [
        "0322a7176f4c432cae50c72657ad31a8c3b43016"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Sep 01 11:37:47 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Sep 01 11:37:47 2016 -0700"
      },
      "message": "Fix google-explicit-constructor warnings in vulkan.\n\n* Add explicit keyword to conversion constructors.\nBug: 28341362\nTest: build with WITH_TIDY\u003d1\n\nChange-Id: I13c32bd5bc53fe897df58eda331ff70ebcf0b349\n"
    },
    {
      "commit": "359d801bbda3b7ed96e23bd6ff8a633e98197746",
      "tree": "fee8d001d12db991ef28665b13e4bad6ab1e404d",
      "parents": [
        "fde0beac8fa8c9a76732756424a298ae6e2c7498"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Fri Jul 22 10:36:33 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Fri Jul 22 06:55:29 2016 +0000"
      },
      "message": "libvulkan: Fix for -Wcast-calling-convention\n\nIt should be harmless, as NoOp does not use any argument and should never\nbe reached.\n\nBug: 30290462\nChange-Id: I0592c3ce10c510713525b5aa0bd38a2f9adc5898\n"
    },
    {
      "commit": "d2c942f42a6fdee882bf1a9d7e0835c4c51d094e",
      "tree": "fa0c9745f36b2039a3735f94921c534509da1ca3",
      "parents": [
        "0079a59c43db8d001c9e2174ec10984a108fef03"
      ],
      "author": {
        "name": "Pirama Arumuga Nainar",
        "email": "pirama@google.com",
        "time": "Tue Jun 28 14:45:29 2016 -0700"
      },
      "committer": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Wed Jul 20 00:29:00 2016 +0000"
      },
      "message": "Disable -Wcast-calling-convention for vulkan\n\nThe following warning is triggered by the upcoming Clang update to\nr271374:\n\nframeworks/native/vulkan/libvulkan/stubhal.cpp:114:12: error: cast\nbetween incompatible calling conventions \u0027cdecl\u0027 and \u0027aapcs-vfp\u0027; calls\nthrough thispointer may abort at runtime\n[-Werror,-Wcast-calling-convention]\n    return reinterpret_cast\u003cPFN_vkVoidFunction\u003e(NoOp);\n\nChange-Id: I8de75fd6a3b579a91598aebbdd23bf74b57c3593\n(cherry picked from commit b4c0eb1d203f88f0ef9ef9c360c03bcbb3e90efc)\n"
    },
    {
      "commit": "c2f184d9d8e1a29a8468fc73d991056468562aa2",
      "tree": "5709f684acfaa80c45ee79465a39c0fe87c6ca65",
      "parents": [
        "ea1aa91a25f28fb44f36b394e002ede56302eb30"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Fri Jun 17 13:54:53 2016 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Fri Jun 17 13:54:53 2016 -0700"
      },
      "message": "vulkan: Updated IHV documentation\n\nAlso deleted DevelopersGuide.pdf, which was very out of date and has\nbeen superceded by public documentation on developer.android.com.\n\nChange-Id: I7e47177191a773eea6db3ee2af0a287877cb8532\n"
    },
    {
      "commit": "42a9eecb23c0b72bbee1eb2ef6b0d6586159d1c3",
      "tree": "f6196eef8c88af47867267866b44eede05c20963",
      "parents": [
        "b2dcc3a1220ea5ef6acb5a63659da3c34b1a295a"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Fri Jun 03 12:39:49 2016 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Fri Jun 03 13:41:44 2016 -0700"
      },
      "message": "libvulkan: reduce log level for swapchain usage errors\n\nBug: 26927424\nChange-Id: Id9346356436663db83a2d6fa8fefc4ea24d7854b\n"
    },
    {
      "commit": "b2dcc3a1220ea5ef6acb5a63659da3c34b1a295a",
      "tree": "e72b33c72096e268eb98da50138618395ef5dc04",
      "parents": [
        "691fcb96033db2f09030e8c71e86dad7e2fbfd43",
        "dc22507e6fd6659c886aa1218f7681fd43b74598"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Thu Jun 02 23:57:02 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 02 23:57:03 2016 +0000"
      },
      "message": "Merge \"libvulkan: Slightly better handling of swapchain re-creation\" into nyc-dev"
    },
    {
      "commit": "dc22507e6fd6659c886aa1218f7681fd43b74598",
      "tree": "06b81076339fd893ed7b314e441437ef1bfe86a8",
      "parents": [
        "a101f6a446722697e0ed6afb128829937b90d60a"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Mon May 30 22:40:14 2016 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Thu Jun 02 10:47:04 2016 -0700"
      },
      "message": "libvulkan: Slightly better handling of swapchain re-creation\n\nPreviously we would fail vkCreateSwapchainKHR if\nVkSwapchainCreateInfo::oldSwapchain was used, because we were unable\nto dequeue all buffers for the new swapchain from an already-used\nnative window.\n\nNow we disconnect and re-connect to the native window in order to\nfully reset state, and allow us to dequeue all buffers. Additionally,\nwe tag the old swapchain as out-of-date, so future image acquires and\npresents will fail with VK_ERROR_OUT_OF_DATE_KHR on that swapchain.\nThis is less than ideal, but better than what we had, and the best we\nhave time to do for N.\n\nBug: 26927424\nChange-Id: Ifaa5048376f72a63ecb1dca3d1ff85dbee2c24d0\n"
    },
    {
      "commit": "dbd33bcca26a38d24a1ae25d894175ea9ad1033a",
      "tree": "69154cd10c9f33f9481196493936b0fd93fc8643",
      "parents": [
        "6727c2d0bfc876c62d6ee60d8a05d26bef1d56ef"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Jun 02 11:25:47 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Jun 02 11:41:53 2016 +0800"
      },
      "message": "vulkan: remove EnumerateDeviceLayerProperties internally\n\nWe never use it.  Since it is also deprecated, we will never need it.\n\nBug: 27910383\nChange-Id: If4e556bb69890153be2987b165482e43ab06a890\n"
    },
    {
      "commit": "61b25fdffc360ab70e1f33be0bb43c911150277b",
      "tree": "90b69526c875fef02ca6dc12c7f49d9a4cbe3978",
      "parents": [
        "b9be0cf397eb6053fb5b472d91cf2d6a22c6693f"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Fri May 27 10:18:25 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Fri May 27 10:37:48 2016 +0800"
      },
      "message": "vulkan: fix crash when only non-global layers are enabled\n\nWe fail to set up get_instance_proc_addr_ and get_device_proc_addr_ when\nthere are layers but only non-global ones.\n\nBug: 28990561\nChange-Id: I82704f946deb5a76640f9dfb792e6fd118c78aa7\n"
    },
    {
      "commit": "319382517afe913285df5bbf76a8a484e6adfbd0",
      "tree": "9d14ec5b241174a9c513559db26b01c6c1afd1df",
      "parents": [
        "31b2e4f01d31aae107340cbc4221b8d49fb42767"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Mon May 23 15:31:02 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Tue May 24 07:53:18 2016 +0800"
      },
      "message": "vulkan: advertise VK_EXT_debug_report\n\nWe use VK_EXT_debug_report to report most messages and we should always\nadvertise the extension.  This is complicated however because the HAL may\nalso advertise the extension.\n\nDo the minimal and cache whether the HAL supports VK_EXT_debug_report in\nclass Hal.  More refactorings will be required if we want to be more\nflexible.\n\nBug: 28753291\nChange-Id: I0298b2c3024e2ed059411128dbbe264c0b289a4b\n"
    },
    {
      "commit": "31b2e4f01d31aae107340cbc4221b8d49fb42767",
      "tree": "f514178d0196f29030b0604b9c434ae0a5612e98",
      "parents": [
        "e6759c3d886491f01dd2295f71d22609b3b9b259"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Mon May 23 10:47:57 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Tue May 24 07:53:16 2016 +0800"
      },
      "message": "vulkan: add a wrapper for hwvulkan_device_t\n\nAdd class Hal as a wrapper for hwvulkan_device_t.\n\nBug: 28753291\nChange-Id: I9612ee5515c7f2266cfc1ef0c8583fa98c82dd86\n"
    },
    {
      "commit": "e6759c3d886491f01dd2295f71d22609b3b9b259",
      "tree": "5c886ccbbb6f0ded422690d33c795780f79a60f7",
      "parents": [
        "6108f5d4004d2a3397c22d22025b8e0eb79b8467",
        "3e654dc68a954b150c141c4a2e96418883bd7c9b"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Mon May 23 23:36:52 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon May 23 23:36:52 2016 +0000"
      },
      "message": "Merge \"vulkan: do not use exported functions internally\" into nyc-dev"
    },
    {
      "commit": "3e654dc68a954b150c141c4a2e96418883bd7c9b",
      "tree": "7ad6d3b182e400e1ce702e763e90ed0d0c9ddba4",
      "parents": [
        "79994146e18fefe37550111c5703c6a6859644d6"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Fri May 20 16:15:06 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Mon May 23 09:28:30 2016 +0800"
      },
      "message": "vulkan: do not use exported functions internally\n\nOur vkGet*ProcAddr uses the exported functions.  They will break when any\nof the exported functions are overridden (e.g., through LD_PRELOAD).\n\nUnexport and move all exported functions to vulkan::api namespace.\nRe-export them by having vkFoo as a wrapper to vulkan::api::Foo.\n\nAnother option is to re-export vulkan::api::Foo by having vkFoo as an\nalias using __attribute__((alias)).  That results in smaller binaries.\nBut we will not be able to catch mismatches between vulkan.h and\nvulkan.api.\n\nTo avoid future breakage, define VK_NO_PROTOTYPES for all files except\napi_gen.cpp.\n\nBug: 28886971\nChange-Id: I08fde7ebb247f8c7e040ccf812b40b02094d3c7f\n"
    },
    {
      "commit": "2676338dd692b7d1e1c276d82e6b0492db53ab2e",
      "tree": "647db481a6ac06d78c214bbcfa115fac65364e2e",
      "parents": [
        "b59de7fa32b0bcaf52d00290d075d8e9c8f2dd2b"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Fri May 20 07:13:52 2016 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Fri May 20 09:11:14 2016 -0700"
      },
      "message": "vulkan: Update vulkan.h to 1.0.13\n\nvulkan.h and vk_platform.h imported from\ngithub.com:KhronosGroup/Vulkan-Docs @ 2656f459333b3a1dc63619a9ebd83490eea22e93\n\nUpdated vulkan.api to reflect the changes in vulkan.h. There were no\nchanges to any of the code we generate. I didn\u0027t update the\nvulkan_h.tmpl, since we\u0027re not currently using it and it was already\nout of date.\n\nBug: 28878216\nChange-Id: I71676683148fae7ad8799bd39386a931319aa395\n"
    },
    {
      "commit": "8c6c10e20d40066468bf4350b64703e11d5bff10",
      "tree": "9ff792bbf944e8846b186f5b5817be0bcfbcde70",
      "parents": [
        "79994146e18fefe37550111c5703c6a6859644d6"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Thu May 19 10:58:35 2016 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Thu May 19 16:40:34 2016 -0700"
      },
      "message": "libvulkan: Don\u0027t try to load compressed/unaligned libraries from APK\n\nBug: 28825642\nChange-Id: I46ea3a54010cccf9e23696a4aff52a42a31d92b1\n"
    },
    {
      "commit": "ed93ea39891341b4396ad9eb59cd98aa74e5d6c3",
      "tree": "c751df9293942813477dee5213c15b0b5673d6fc",
      "parents": [
        "853f8f9c0b95120731459c1f7567af69ce457fe0"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Wed May 18 08:50:15 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Wed May 18 09:02:33 2016 +0800"
      },
      "message": "vulkan: fix double dlopen for layer libraries\n\nBug: 28826014\nChange-Id: I10693426f987e63bb490ac8d1f4445ce2d195d8d\n"
    },
    {
      "commit": "ede02ac245b5f2aa1139d6cb0e2dc7c0f8f290d2",
      "tree": "87846dda36a3f572d8f589fe7b1f7997f8aaa120",
      "parents": [
        "40c07a1d002561fc8db987ec30d890b041fb6336"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Fri May 13 10:45:59 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Fri May 13 12:20:18 2016 +0800"
      },
      "message": "vulkan: check flags for early debug report callbacks\n\nWe have a different path to invoke early (that is, vkCreateInstance) debug\nreport callbacks.  Check for \"flags\" in this path as well.\n\nBug: 28753666\nChange-Id: I49b5f2920b38ffdf69036f352166ae3b0aca62c5\n"
    },
    {
      "commit": "40c07a1d002561fc8db987ec30d890b041fb6336",
      "tree": "444e26c3090a07c3141e075c073890602aca6a5c",
      "parents": [
        "1a7eb59c2a7907ea4c4925c6d13d66e53fb60339"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Wed May 11 22:56:29 2016 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Thu May 12 09:56:17 2016 -0700"
      },
      "message": "libvulkan: Load layer libraries into the app namespace\n\nBug: 28213888\nChange-Id: I79901693c30f0e69730643b424e504a8d3628624\n"
    },
    {
      "commit": "1a7eb59c2a7907ea4c4925c6d13d66e53fb60339",
      "tree": "18b8526485802544564d79591befadb87f2ce348",
      "parents": [
        "12cb94a840f40b35c0dcd8580366a76e768585c5"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Sun May 01 21:04:40 2016 +0200"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Thu May 12 09:56:17 2016 -0700"
      },
      "message": "libvulkan: Discover layer libraries in entire search path\n\nPreviously we only searched the unpacked native library path for layer\nlibraries. Now we search all directories in the dynamic linker\u0027s\nsearch path, including unpacked libraries in the APK itself.\n\nBug: 28213888\nChange-Id: I37772fd90f705592ae1725c7c8603b0174e6b133\n"
    },
    {
      "commit": "e201c3f782f0d3e2ec508fb8093e506145614c06",
      "tree": "ab914c1d868daebeb2506994c9aa2676c0fbdb9a",
      "parents": [
        "a4a0555a168efd2e93f6d8b63de7cdc7aeb61a11"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Tue May 03 13:26:08 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Fri May 06 09:46:47 2016 +0800"
      },
      "message": "vulkan: improve vulkan::driver logcat messages\n\nMake it clear the errors are generated from internal vkGet*ProcAddr calls.\nLog a message whenever stubhal is used.\n\nBug: 28120066\nChange-Id: Iabf88757c3cb20b7ddcbe3c1d201f3d23dd3ed0b\n"
    },
    {
      "commit": "a4a0555a168efd2e93f6d8b63de7cdc7aeb61a11",
      "tree": "f73368f95d9f01cd08bb03bc42bbb8afb7a2aa3d",
      "parents": [
        "5beb2ac5e0b676e55be9f0b768ba3fd3697f3216"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu May 05 11:57:23 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Fri May 06 09:46:03 2016 +0800"
      },
      "message": "vulkan: use Logger in vulkan::api\n\nUse debug report logger for actionable application errors (but not other\nerrors).\n\nBug: 28120066\nChange-Id: Ia9a3b568e415555bf42c8a76d1df6279835a710c\n"
    },
    {
      "commit": "5beb2ac5e0b676e55be9f0b768ba3fd3697f3216",
      "tree": "7ed8e70dc429d24b23e14ff49dbbfd00dd9c3eff",
      "parents": [
        "bc011fc4d78442d1f0167b04aea3484c62e0a92b"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Wed May 04 16:37:23 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Fri May 06 09:43:58 2016 +0800"
      },
      "message": "vulkan: use Logger in the generated code\n\nExcept for INIT_PROC, where ALOGE is still used for layer/HAL bugs.\n\nBug: 28120066\nChange-Id: Icd9ce99b6bfb77816b11c05f6c8b197a6782b7cd\n"
    },
    {
      "commit": "bc011fc4d78442d1f0167b04aea3484c62e0a92b",
      "tree": "a7f406b226ab265b7ab7d31ce653e334337ab0b8",
      "parents": [
        "950d6e1102077d6a3905eb77268800002e792fb0"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Tue May 03 12:19:55 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Fri May 06 09:31:36 2016 +0800"
      },
      "message": "vulkan: add DebugReportLogger\n\nAdd DebugReportLogger that can be used during vkCreateInstance and other\ncommands.  Add vulkan::driver::Logger to create a temporary\nDebugReportLogger from a dispatchable object.  With them, we can log to\ndebug report by, for example,\n\n  Logger(instance).Warn(obj, \"failed with %s\", err);\n\nBug: 28120066\nChange-Id: If059d38d3cfcfe591031ca135695d08cad42e0a4\n"
    },
    {
      "commit": "950d6e1102077d6a3905eb77268800002e792fb0",
      "tree": "6fde059d983b1168f38ffce4903926ee2d6ba7f3",
      "parents": [
        "2e6736699471dbe7ec185667240089dcbccdd9bd"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Tue May 03 09:12:35 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Fri May 06 09:31:36 2016 +0800"
      },
      "message": "vulkan: make debug report callbacks available in DeviceData\n\nThis allows device commands to send messages to debug report.\n\nBug: 28120066\nChange-Id: I43d217fc23799b06fd3fda73e1876d8773c723fc\n"
    },
    {
      "commit": "2e6736699471dbe7ec185667240089dcbccdd9bd",
      "tree": "c23dbba95a16e7ec2eeed3144dd8c3efa13bdf54",
      "parents": [
        "b3055f34650cd066a349e1e8cba294b05513ef2e"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Tue May 03 12:06:21 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Fri May 06 09:31:36 2016 +0800"
      },
      "message": "vulkan: avoid duplicated app messages\n\nWhen vkDebugReportMessageEXT is called, every component (layer,\nvulkan::driver, or hal) supporting the extension knows how to handle it.\nBut only one of them should handle it.\n\nBug: 28120066\nChange-Id: I4e746b80e0920c2c63f0aceceba1601536c6236d\n"
    },
    {
      "commit": "b3055f34650cd066a349e1e8cba294b05513ef2e",
      "tree": "200a240db969b3fe0d5d632d7b29f5d6d571611a",
      "parents": [
        "a0d40aaf12435fe82bc9c1612dbe97ea2a60da31"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Tue May 03 12:04:47 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Fri May 06 09:31:36 2016 +0800"
      },
      "message": "vulkan: constify DebugReportCallbackList::Message\n\nSending a message should not modify the state of DebugReportCallbackList,\nconceptually.\n\nBug: 28120066\nChange-Id: I7b30b4a41492b4e670408f34a6bffe8b56295afd\n"
    },
    {
      "commit": "a0d40aaf12435fe82bc9c1612dbe97ea2a60da31",
      "tree": "ab48de5539223a95090209c06175920c57be90b5",
      "parents": [
        "0b546c408686e4353dfe4b3a12be1048b966944d"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu May 05 12:43:03 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Fri May 06 09:31:36 2016 +0800"
      },
      "message": "vulkan: refactor DebugReportCallbackList\n\nSimplify DebugReportCallbackList to be a thread-safe list with three\nmethods:\n\n - AddCallback adds a node to the list\n - RemoveCallback removes a node from the list\n - Message invokes each of the nodes on the list\n\nAdd some static methods for Node* and VkDebugReportCallbackEXT\nconversions.\n\nBug: 28120066\nChange-Id: I109c6eff368cacb37508e2549dbd0b5dfa23bcb3\n"
    },
    {
      "commit": "c3a28913b6a95d2faee0db537c48557e04267511",
      "tree": "b4fe634dc23909434836804cd1a698a3f56389a0",
      "parents": [
        "6184b20d8e2301ecc21f815e1f9c2676c43878d1"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Apr 14 11:55:51 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Fri Apr 29 18:31:18 2016 +0800"
      },
      "message": "vulkan: deprecate device layers\n\nAllow instance layers to intercept all commands and enumerate device\nextensions.  Ignore application device layers.  Enumerate all enabled\ninstance layers in vkEnumerateDeviceLayerProperties.\n\nBug: 27911856\nChange-Id: I6e89439ab10835dd1a43732c2333a92201e52550\n"
    },
    {
      "commit": "6184b20d8e2301ecc21f815e1f9c2676c43878d1",
      "tree": "ba54a6b817b207b4164df9702659778c5e1076a1",
      "parents": [
        "dab25658fb17ec76569b8e91dfed801855027f08"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Wed Apr 27 11:57:53 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Apr 28 08:52:42 2016 +0800"
      },
      "message": "vulkan: detect errors in VkEnumerate*ExtensionProperties\n\nReturn VK_ERROR_LAYER_NOT_PRESENT when the layer is not available.\n\nChange-Id: I9d9aafe6e40c2ca49e58bc7c70114d0f11de2f81\n"
    },
    {
      "commit": "dab25658fb17ec76569b8e91dfed801855027f08",
      "tree": "cab6052d7f02a5e3725639362944788d855eba55",
      "parents": [
        "d6e6f51426c566cd67ed765e5c4b206a063aaa30"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Apr 28 07:15:51 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Apr 28 08:52:42 2016 +0800"
      },
      "message": "vulkan: do not distinguish instance or device LayerRef\n\nMerge Get*LayerRef into GetLayerRef and remove LayerRef::is_instance_.\nWith the removal, LayerRef::SupportsExtension becomes ambiguous.  Replace\nit with FindLayer*Extension.  Remove unused LayerRef::GetName and\nLayerRef::GetSpecName while at it.\n\nThere should be no user-visible change.\n\nBug: 27911856\nChange-Id: I38340654b52338e9ed46d1c4462a6b254b0cab64\n"
    },
    {
      "commit": "d6e6f51426c566cd67ed765e5c4b206a063aaa30",
      "tree": "4a8ebd6d0aa78a2e005fe48eb95cff25eac09d3a",
      "parents": [
        "04c6551eb812a7efe38fa74e6ac67c17aab3df2d"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Apr 28 07:39:32 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Apr 28 08:52:42 2016 +0800"
      },
      "message": "vulkan: make Get*LayerRef take a Layer\n\nThe only user-visible change should be improved error messages.\n\nBug: 27911856\nChange-Id: Ie50a9d37f07b590026176642f2c67270225f9280\n"
    },
    {
      "commit": "04c6551eb812a7efe38fa74e6ac67c17aab3df2d",
      "tree": "22366643413b2fe84c740bbff99981671a9b53ce",
      "parents": [
        "25700b452535ce7ae838bfe832392b46ed555ed2"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Wed Apr 27 09:54:02 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Apr 28 08:52:42 2016 +0800"
      },
      "message": "vulkan: refactor layer extension enumeration\n\nReplace Get*LayerExtensions by a set of new functions that do not\ndistinguish instance and device layers.\n\nThere should be no user-visible change.\n\nBug: 27911856\nChange-Id: Icd98abf51a936769f8f2f218794043b5e2611c5c\n"
    },
    {
      "commit": "25700b452535ce7ae838bfe832392b46ed555ed2",
      "tree": "0971ec44d2461cc073186422e7a3aab9a06a1c69",
      "parents": [
        "6cfb89c0bfe11c2ee513fe4df339ad753d4ad4ff"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Apr 28 06:36:09 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Apr 28 08:52:40 2016 +0800"
      },
      "message": "vulkan: refactor layer enumeration\n\nReplace Enumerate*Layers by a set of new functions that do not distinguish\ninstance and device layers.  The new functions are also careful not to\npollute the rest of the loader with std containers.\n\nThere should be no user-visible change.\n\nBug: 27911856\nChange-Id: I4790fadc1aa2ea934a4628bce55dd45892f15e0b\n"
    },
    {
      "commit": "6cfb89c0bfe11c2ee513fe4df339ad753d4ad4ff",
      "tree": "23d3d8538bef83061e26356ba6204656a98b3b3a",
      "parents": [
        "5882a267d0bee5e9505fe4e714f50378f5ef70d0",
        "bea09db9c2165f06771f3a3da423f4f85ac6347e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Apr 26 23:42:26 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 26 23:42:26 2016 +0000"
      },
      "message": "Merge changes I97efd6c9,I6460f8f0,Ic67e4290,I16214514,Ieaa4e463, ... into nyc-dev\n\n* changes:\n  vulkan: remove g_device_layers\n  vulkan: ignore device-only layers\n  vulkan: ignore layer libraries without instance layers\n  vulkan: add FindLayer helper\n  vulkan: constify LayerRef members\n  vulkan: make g_library_mutex per-LayerLibrary\n  vulkan: make LayerLibrary a class\n  vulkan: refactor GetLayerGetProcAddr\n  vulkan: refactor AddLayerLibrary\n  vulkan: refactor LayerRef::~LayerRef\n  vulkan: refactor GetLayerRef\n  vulkan: add a constructor for LayerLibrary\n"
    },
    {
      "commit": "bea09db9c2165f06771f3a3da423f4f85ac6347e",
      "tree": "151cd0f8d52789409f1514333db7b65f609706d0",
      "parents": [
        "279ccc0048d5bc7105af02538e33946814c68dc7"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Fri Apr 22 09:42:41 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Tue Apr 26 07:45:23 2016 +0800"
      },
      "message": "vulkan: remove g_device_layers\n\nAll device layers are now instance layers.  We do not need to maintain two\nvectors.\n\nChange-Id: I97efd6c92395f00ac41aae6862e5607dfa678156\n"
    },
    {
      "commit": "279ccc0048d5bc7105af02538e33946814c68dc7",
      "tree": "0abad01db1d07897f91fae26e911ba6f26dfa1e9",
      "parents": [
        "5f093bf18120a5cbf18d0f3e255b2178f524e438"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Mon Apr 18 16:45:15 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Tue Apr 26 07:43:46 2016 +0800"
      },
      "message": "vulkan: ignore device-only layers\n\nIgnore device layers that have no matching instance layers.\n\nChange-Id: I6460f8f0c3c1288c23843e0875fa6a90f7f6cb8d\n"
    },
    {
      "commit": "5f093bf18120a5cbf18d0f3e255b2178f524e438",
      "tree": "bcc913f8fddb811d64ded3846541b3b55aa2b223",
      "parents": [
        "50db9035b034385a27fb557e4da3c48b51a0e3eb"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Tue Apr 19 12:22:52 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Tue Apr 26 07:43:35 2016 +0800"
      },
      "message": "vulkan: ignore layer libraries without instance layers\n\nMake vkEnumerateInstanceLayerProperties and\nvkEnumerateInstanceExtensionProperties mandatory for layer libraries.  If\nvkEnumerateInstanceLayerProperties enumerates no instance layer, ignore\nthe layer library.\n\nChange-Id: Ic67e4290f0cd5f9098bd02d9d01cc0194398424a\n"
    },
    {
      "commit": "50db9035b034385a27fb557e4da3c48b51a0e3eb",
      "tree": "7fcde165b5a4eddf9eea84d1545b300701b506db",
      "parents": [
        "83506d84d00bbb35ecebb44261b2139bc40ef3e2"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Fri Apr 22 10:10:04 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Tue Apr 26 07:43:32 2016 +0800"
      },
      "message": "vulkan: add FindLayer helper\n\nIt finds a Layer using the layer name.\n\nChange-Id: I16214514fcdef09f9016dc2c71fcd5c1f3d0fa6b\n"
    },
    {
      "commit": "83506d84d00bbb35ecebb44261b2139bc40ef3e2",
      "tree": "90165425823e453a5d14f2fd969807094ad9f4c3",
      "parents": [
        "a6229749aeef225803c6a5411be9e8a40637454d"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Tue Apr 19 11:45:57 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Tue Apr 26 07:41:46 2016 +0800"
      },
      "message": "vulkan: constify LayerRef members\n\nConsitfy GetSpecVersion and layer_.\n\nChange-Id: Ieaa4e463ca4666fc9f81b9904fe0783c55e98d03\n"
    },
    {
      "commit": "a6229749aeef225803c6a5411be9e8a40637454d",
      "tree": "a93dcc1e93e07ff1d4cbc5a1fdfa3058f8dbc2bc",
      "parents": [
        "6693f5cd2238fe08b382bf762e33b701312c7038"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Tue Apr 26 07:37:44 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Tue Apr 26 07:40:46 2016 +0800"
      },
      "message": "vulkan: make g_library_mutex per-LayerLibrary\n\nAll that need to be protected are LayerLibrary::Open and\nLayerLibrary::Close.\n\nChange-Id: I81b2e7cc36d8c260ddcba69074c71a5244f5b443\n"
    },
    {
      "commit": "3d1c82a750046f055951242bf27909ad7d9cdf52",
      "tree": "041d4dec8f291a86398e7fe52f4642a002d30788",
      "parents": [
        "2ee735c97c760cec76c1385f1896b822ff45cba5"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Fri Apr 22 15:28:29 2016 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Fri Apr 22 15:38:00 2016 -0700"
      },
      "message": "libvulkan: Reset window before creating swapchain\n\nWhen using one window for two consecutive swapchains, some of the\nsettings from the first swapchain were affecting how many buffers we\nthought we needed for the second, eventually leading us to attempt to\ndequeue more buffers than we actually could.\n\nBug: 28075694\nChange-Id: I7d2cabc2365986dfcfe8a03d16bb71ca1616f144\n"
    },
    {
      "commit": "6693f5cd2238fe08b382bf762e33b701312c7038",
      "tree": "9b7fd8fc8b29df01e9e33f0411b122481548847d",
      "parents": [
        "ba113275287a2293136d8737bf364651ea0b576d"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Mon Apr 18 12:20:02 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Fri Apr 22 10:41:03 2016 +0800"
      },
      "message": "vulkan: make LayerLibrary a class\n\nMake all data members private and suffix them with an underscore.\nConstify path_ while at it.  There is no functional change.\n\nChange-Id: I98db9bfb1cfa9a15a501a5d3c6037fe08cff5717\n"
    },
    {
      "commit": "ba113275287a2293136d8737bf364651ea0b576d",
      "tree": "398f0471520b92e7ee7faff17a6cc88337cb319c",
      "parents": [
        "50174ee4ff2f6537c4aa4e8aa475f0dc8d910870"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Mon Apr 18 16:38:39 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Fri Apr 22 10:40:59 2016 +0800"
      },
      "message": "vulkan: refactor GetLayerGetProcAddr\n\nAdd and call LayerLibrary::GetGPA from GetLayerGetProcAddr.  There is no\nfunctional change.\n\nChange-Id: Ie0ec8c16633239bd8d8e634fac7525401d73343a\n"
    },
    {
      "commit": "50174ee4ff2f6537c4aa4e8aa475f0dc8d910870",
      "tree": "8dfde1b98e45e198d578580b85f5cc50ab4a37ff",
      "parents": [
        "d91c74f917b603d8d1dec7d27da03e580919e0a6"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Mon Apr 18 16:33:20 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Fri Apr 22 10:40:57 2016 +0800"
      },
      "message": "vulkan: refactor AddLayerLibrary\n\nAdd and call LayerLibrary::EnumerateLayers from AddLayerLibrary.  There is\nno functional change.\n\nChange-Id: I6bb2a6fd6f78299c179c0c7af7c60b388e109734\n"
    },
    {
      "commit": "d91c74f917b603d8d1dec7d27da03e580919e0a6",
      "tree": "c1965d6898185cac05c89efd4f0061b5819072c2",
      "parents": [
        "fd0389fb67298e530142566e7a5f6fb16741caba"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Mon Apr 18 12:12:36 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Fri Apr 22 10:40:54 2016 +0800"
      },
      "message": "vulkan: refactor LayerRef::~LayerRef\n\nAdd and call LayerLibrary::Close from LayerRef::~LayerRef.  There is no\nfunctional change.\n\nChange-Id: I514a1631204f104293a2b75f0a6d34d8625e68b1\n"
    },
    {
      "commit": "fd0389fb67298e530142566e7a5f6fb16741caba",
      "tree": "13a683320e9fe60dd753854f165dc8866824450c",
      "parents": [
        "743495943b1a0b6d81ac70df524f67041f116ba6"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Mon Apr 18 12:11:00 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Fri Apr 22 10:40:52 2016 +0800"
      },
      "message": "vulkan: refactor GetLayerRef\n\nAdd and call LayerLibrary::Open from GetLayerRef.  There is no functional\nchange.\n\nChange-Id: I00cff2bbc7984bb3d861eb88aea423c36b0d806f\n"
    },
    {
      "commit": "743495943b1a0b6d81ac70df524f67041f116ba6",
      "tree": "aa9ba8aa5a3815d863f5ea81f517aba7acc5f0ca",
      "parents": [
        "9461b93f7e46e71dd43b021084012ec337a5cee3"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Mon Apr 18 12:08:39 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Fri Apr 22 10:40:29 2016 +0800"
      },
      "message": "vulkan: add a constructor for LayerLibrary\n\nThere is no functional change.\n\nChange-Id: I77b6c7c6a697cb25cee42cda3b5683885186545a\n"
    },
    {
      "commit": "109f8985ceaf746fd04b6fe81be238b3865062b7",
      "tree": "2d88eb6c6f9a731a9c9e5abbbbc1c879f84e9da6",
      "parents": [
        "dcad39536dda5fc88aa3ae588f535fb3edee8c62"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Fri Apr 22 06:40:40 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Fri Apr 22 06:44:28 2016 +0800"
      },
      "message": "vulkan: silence a warning when layers are enabled\n\nLayers always do\n\n  vkGetInstanceProcAddr(VK_NULL_HANDLE, \"vkCreateDevice\")\n\nand we should not log an error.\n\nChange-Id: Ifeba21da73d982775edc4e6a91ce0f0f5eab191d\n"
    },
    {
      "commit": "dcad39536dda5fc88aa3ae588f535fb3edee8c62",
      "tree": "0c9d7280be163e4f51cfe923d133cd6d1bab3a8d",
      "parents": [
        "8955f3f76dbe7d9dace2db48627672ff0d83c1f4"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Fri Apr 22 06:26:37 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Fri Apr 22 06:44:13 2016 +0800"
      },
      "message": "vulkan: fix \"vkinfo -validate\"\n\nSome layers were renamed/merged.\n\nBug: 28317797\nChange-Id: Ie7982790502ad1bed3234b26129cff9e06667365\n"
    },
    {
      "commit": "8955f3f76dbe7d9dace2db48627672ff0d83c1f4",
      "tree": "f2f0249b05a784bc6f90883a2186a2bdaabea2b1",
      "parents": [
        "d3b1450e6606cacff0d2c6e0ff6e45f1420ad5ee"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Fri Apr 22 06:06:04 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Fri Apr 22 06:09:28 2016 +0800"
      },
      "message": "vulkan: fix vkinfo with layer extensions\n\nvkinfo enable layers only when options.validate is true.  We should use\nlayer extensions, such as VK_EXT_debug_report, only when layers are\nenabled.\n\nBug: 28317797\nChange-Id: I02bb34b728f3f3072111444194ee97065e38e401\n"
    },
    {
      "commit": "d3b1450e6606cacff0d2c6e0ff6e45f1420ad5ee",
      "tree": "ca1968b541fe5a5c6a35bef943d9b6bd14ac433f",
      "parents": [
        "151cc4a91a92447a78a964bf1164b50ac8921f65"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Wed Apr 20 16:58:11 2016 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Wed Apr 20 16:58:11 2016 -0700"
      },
      "message": "vknulldrv: Use a default allocator when none provided\n\nThe loader used to always provide an allocator, even if the app\ndidn\u0027t. It no longer does that, so the null driver must be prepared to\nprovide its own default allocator.\n\nFixes bug 28303142\n\nChange-Id: I6ab946913dc4edaf2a0b07ab9ae8c43be69b3ed6\n"
    },
    {
      "commit": "e8e689f1190a936ebd6bf6cbe28ab8625e94c6c7",
      "tree": "e2f400a57bcbd8b60309a965bd470b8810b87208",
      "parents": [
        "47babb84bcd2dcf4943687e33595ba58dc0dbe28"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Mon Apr 18 08:21:31 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Tue Apr 19 14:41:18 2016 +0800"
      },
      "message": "vulkan: replace std::shared_ptr by android::sp\n\nWith the change, we do not handle exceptions anymore.  Remove\n-fexceptions.\n\nBug: 26732452\nChange-Id: I2782f9b522cb25f158515fcf90312013e672225b\n"
    },
    {
      "commit": "36cc00a1739f7d926cc20671ae9900a5460dd6ae",
      "tree": "ab92d7849bd5bb5b1a21b974c5a9f3b659a0fa15",
      "parents": [
        "8925efd0a87d96885834a00f3bdef220edf6d8ea"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Wed Apr 13 16:52:06 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Apr 14 08:43:04 2016 +0800"
      },
      "message": "vulkan: fix vkGet*ProcAddr for un-enabled extensions\n\nvulkan::api::InitDispatchTable no longer queries for non-enabled WSI\nfunctions.  We could now return NULL instead of ProcHook::disabled_proc.\nThis also matches what the spec says.\n\nBug: 28173232\nChange-Id: I05c45303025d25e49f75c18a912fc4cc2b13979f\n"
    },
    {
      "commit": "8925efd0a87d96885834a00f3bdef220edf6d8ea",
      "tree": "5693eb842070953680813f56cf0f8dfd217612ec",
      "parents": [
        "cbe07ef239121dc99a31a19b9593d76d76abb08b"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Wed Apr 13 15:13:21 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Apr 14 08:43:04 2016 +0800"
      },
      "message": "vulkan: do not query non-enabled WSI functions\n\nInitialize dispatch table entries for non-enabled WSI functions to stubs.\nWe do not want to initialize them to NULL because they may still be\ninvoked through the exported WSI entrypoints.\n\nBug: 25850852\nChange-Id: I25b715700990ad7432740f031764d70396024d32\n"
    },
    {
      "commit": "cbe07ef239121dc99a31a19b9593d76d76abb08b",
      "tree": "5d029198e2b436fe883d3b441cdec3721f26a410",
      "parents": [
        "a0a4e0ee2c4e4c2b186c180ba0970931e24c1d66"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Wed Apr 13 15:01:00 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Apr 14 08:43:04 2016 +0800"
      },
      "message": "vulkan: pass hal_extensions to InitDriverTable\n\nWe only need hal_extensions to initialize the driver tables.  There is no\nneed to save it in driver::{Instance,Device}Data.\n\nChange-Id: I56ebc0ee9c5bc5e543e7a84412b03b842bd8ced5\n"
    },
    {
      "commit": "94a2c0ecd4537c52e6b4a3ef9d119dce44627ca8",
      "tree": "b4428370b3b06abf650f19fc305f7fd17d008420",
      "parents": [
        "7fcd744c42c91eab5210df2080b0a7a6b5838f68"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Wed Apr 13 10:20:59 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Apr 14 04:48:45 2016 +0800"
      },
      "message": "vulkan: pass VK_LAYER_FUNCTION_DATA_CALLBACK to layers\n\nVK_LAYER_FUNCTION_DATA_CALLBACK effectively allows us to pass\ndriver::SetDataInternal to layers.  It will be called on handles of\npotentially unknown types.  Add two internal types\n\n  VK_DEFINE_HANDLE(InstanceDispatchable)\n  VK_DEFINE_HANDLE(DeviceDispatchable)\n\nin driver namespace for type safety.\n\nBug: 28015368\nChange-Id: I7389829a7d8c374197cd7046973777b49e436961\n"
    },
    {
      "commit": "7fcd744c42c91eab5210df2080b0a7a6b5838f68",
      "tree": "b057309224c52a5c30b12daa37c6cbeae02e1ea9",
      "parents": [
        "a1d53fa7c98db0f830782960e48736a3ea2d8da4"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Wed Apr 13 09:32:24 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Wed Apr 13 11:30:57 2016 +0800"
      },
      "message": "vulkan: update vk_layer_interface.h\n\nUpdate to match vk_layer.h in Vulkan-LoaderAndValidationLayers.\nSpecifically,\n\n - VK_LAYER_FUNCTION_DEVICE is removed\n - VK_LAYER_FUNCTION_INSTANCE is removed\n - VK_LAYER_FUNCTION_DATA_CALLBACK is added\n\nWe do not use VK_LAYER_FUNCTION_DEVICE and VK_LAYER_FUNCTION_INSTANCE\nanymore.  They were internal to the desktop loader as well.  Hopefully no\nlayer ever uses them.\n\nBug: 28015368\nChange-Id: I4f3f91e8224eb943caca4792d74b63aef0b23ad2\n"
    },
    {
      "commit": "c56603e0b35e31c5f1cd134d6b916a16ff710504",
      "tree": "b3b0fa4e2f93264d3a7d9441f21701c414603a46",
      "parents": [
        "1600e269dbf9f2cd818886c55b3e0933dfec7a86"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Tue Apr 12 11:16:17 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Wed Apr 13 07:20:09 2016 +0800"
      },
      "message": "vulkan: fix vkGetDeviceProcAddr for intercepted commands\n\nThis allows vulkan::api::DestroyDevice to properly unreference layers.\n\nBug: 28077754\nChange-Id: I194925d29dee3489b63f4a44669c791d378afa39\n"
    },
    {
      "commit": "1600e269dbf9f2cd818886c55b3e0933dfec7a86",
      "tree": "d9d40214fbe92390c6260f9eacfd548859a2d975",
      "parents": [
        "9ffa1a4da16edc23067070f5605917ddd57739e8"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Tue Apr 12 09:40:06 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Tue Apr 12 10:07:21 2016 +0800"
      },
      "message": "vulkan: fix support for unknown extensions\n\nNever set the bit ProcHook::EXTENSION_UNKNOWN, otherwise std::out_of_range\nwill be thrown.\n\nChange-Id: I0a1343079647162bf17494acaaa69f1fa26b72f8\n"
    },
    {
      "commit": "b7c4e3b7c97c952ba26f061d74d2038e6c94e689",
      "tree": "fdb4b94bda45b6243580ffec972dbe179e212abc",
      "parents": [
        "2b97c063bae8446f2b539e663590399ff0251de8"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Mon Apr 11 13:51:38 2016 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Mon Apr 11 15:51:57 2016 -0700"
      },
      "message": "libvulkan: Use a stub HAL when no real Vulkan HAL is present\n\nThis stub HAL enumerates zero VkPhysicalDevices. This allows a\nVkInstane to be created and queried for physical devices successfully\neven on devices without a Vulkan driver. Handling this with a stub HAL\navoids the need for NULL HAL and NULL driver function pointer checks\nin many places throughout the loader, which would be more error-prone.\n\nFixes bug: 28100673\nChange-Id: I76bea975929a85eda354730d6c815567b412b160\n"
    },
    {
      "commit": "3e6c2d6889d9c1bc7eb4dbd9774d861c18a21a80",
      "tree": "5b56742eb12a7484aabe47ec9314a84e71e392ae",
      "parents": [
        "eef27fa3a0c7d153603b7fd69849fee73a07af5b"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Mon Apr 11 13:55:56 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Mon Apr 11 13:59:38 2016 +0800"
      },
      "message": "vulkan: use CamelCase() for CreateInfoWrapper\n\nChange-Id: I33360e15dd0bfb038235d7600587d39d50cea0a8\n"
    },
    {
      "commit": "eef27fa3a0c7d153603b7fd69849fee73a07af5b",
      "tree": "5fa7492faca6a0fef664550561c702e4f6ece6a7",
      "parents": [
        "c3fa20cee7156f9393ff319e0f884705483d3bf8"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Mon Apr 11 13:52:39 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Mon Apr 11 13:52:39 2016 +0800"
      },
      "message": "vulkan: use CamelCase() for LayerChain\n\nChange-Id: I2f102fa97e3c976fa411b4e6bdc83dacfa243af7\n"
    },
    {
      "commit": "c3fa20cee7156f9393ff319e0f884705483d3bf8",
      "tree": "dbad84ecd2918787349b192e73caafe13df00d91",
      "parents": [
        "026b8facd53e2db16bb73f6dccb064f00d8e9b00"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Mon Apr 11 13:47:31 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Mon Apr 11 13:47:31 2016 +0800"
      },
      "message": "vulkan: use CamelCase() for OverrideExtensionNames\n\nChange-Id: If44c40f87b1e3e2eb69d12543a7f3b3036291c88\n"
    },
    {
      "commit": "026b8facd53e2db16bb73f6dccb064f00d8e9b00",
      "tree": "d8624a754e3947a1e10da827cd04d5b911474862",
      "parents": [
        "4ad5c1414b3cfcbe5b3c3b9f21b42f23d99bafba"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Mon Apr 11 13:44:13 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Mon Apr 11 13:44:42 2016 +0800"
      },
      "message": "vulkan: use CamelCase() for OverrideLayerNames\n\nChange-Id: Ic7bc29efc1ae5b734ebfc692c441b9537134ccb2\n"
    },
    {
      "commit": "4ad5c1414b3cfcbe5b3c3b9f21b42f23d99bafba",
      "tree": "528a265225a30d9dc2aff5984120820fc6aae8cd",
      "parents": [
        "a70a4214d85dec0d27e918c977dabd488a5c20e5",
        "3b6b5adbddf7415bff3c3d0bc11efd5df9cc132f"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Mon Apr 11 02:43:44 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 11 02:43:45 2016 +0000"
      },
      "message": "Merge changes I21f07545,I73c39cbe,I47b1639c,I4a6268d7,I06be9898, ... into nyc-dev\n\n* changes:\n  vulkan: remove unused loader.{cpp.h}\n  vulkan: use driver::GetData everywhere\n  vulkan: move all _Bottom functions\n  vulkan: add swapchain.h\n  vulkan: add layers_extensions.h\n  vulkan: rework CreateInstance_Bottom and related ones\n  vulkan: rework EnumerateDeviceExtensionProperties_Bottom\n  vulkan: rework {Create,Destroy}Device_Bottom\n  vulkan: move AllocateCommandBuffers_Bottom\n  vulkan: move GetDeviceQueue_Bottom\n  vulkan: rework DriverDispatchTable\n  vulkan: rework driver::Get*ProcAddr\n  vulkan: add VK_ANDROID_native_buffer to vulkan.api\n  vulkan: move driver::GetDefaultAllocator\n  vulkan: move driver::OpenHAL\n  vulkan: move driver::Debuggable\n"
    },
    {
      "commit": "3b6b5adbddf7415bff3c3d0bc11efd5df9cc132f",
      "tree": "eb34f3d7cbf3c93c8c16064dd6cf783563b9e4b8",
      "parents": [
        "4a6a91647c57abb5c06cde57c57afe944f8cefa4"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Sat Mar 26 07:18:53 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Mon Apr 11 07:37:20 2016 +0800"
      },
      "message": "vulkan: remove unused loader.{cpp.h}\n\nChange-Id: I21f07545cf286f7e5796d9a6c9642cfdd3001f17\n"
    },
    {
      "commit": "4a6a91647c57abb5c06cde57c57afe944f8cefa4",
      "tree": "83a5631087f183cdf732a2f609f3d7fa922bf592",
      "parents": [
        "622622377a1ac71a81a88e335f170c4a08835f06"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Sat Mar 26 07:17:34 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Mon Apr 11 07:37:20 2016 +0800"
      },
      "message": "vulkan: use driver::GetData everywhere\n\nMove away from the one-liners defined in loader.cpp.\n\nChange-Id: I73c39cbe21aa3b2079f67590bb40f0cd55563f84\n"
    },
    {
      "commit": "622622377a1ac71a81a88e335f170c4a08835f06",
      "tree": "6a3cc1f16206c18a12253aec0e7a0ec3ced7a44e",
      "parents": [
        "de82e27e2010b48e72103e98ba3fe6eba5152b54"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Sat Mar 26 07:06:44 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Mon Apr 11 07:37:20 2016 +0800"
      },
      "message": "vulkan: move all _Bottom functions\n\nMove them to vulkan::driver namespace and drop the _Bottom suffix.\n\nChange-Id: I47b1639c4074adb9c0658816f5f1e126df7f685b\n"
    },
    {
      "commit": "de82e27e2010b48e72103e98ba3fe6eba5152b54",
      "tree": "c8e8c2c9d357a4b19c7263c35e2c7d5b13397c72",
      "parents": [
        "c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Sat Mar 26 07:01:55 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Mon Apr 11 07:37:19 2016 +0800"
      },
      "message": "vulkan: add swapchain.h\n\nMove everything belongs to swapchain.cpp out of loader.h to swapchain.h.\n\nChange-Id: I4a6268d703b60e5661b09917eed129d2d227a63c\n"
    },
    {
      "commit": "c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8",
      "tree": "f4c44ad9566ecc6ccb2ff57914c5d17160154cd1",
      "parents": [
        "ff4a6c772aaf3ff0b71348647330031a059b1f51"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Sat Mar 26 06:56:45 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Mon Apr 11 07:37:19 2016 +0800"
      },
      "message": "vulkan: add layers_extensions.h\n\nMove everything for layers_extensions.cpp out of loader.h to\nlayers_extensions.h, and into vulkan::api namespace.\n\nRemove now unused InstanceExtensionFromName and DeviceExtensionFromName.\n\nChange-Id: I06be98986f40de35e9dffb5499bc1423e9eb3d48\n"
    },
    {
      "commit": "ff4a6c772aaf3ff0b71348647330031a059b1f51",
      "tree": "103d1d941d6b7a8141e38a5775d5255263b5dfd6",
      "parents": [
        "01cf305325f3789c573d7eff435e409f04677c66"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Mar 24 16:05:56 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Mon Apr 11 07:37:19 2016 +0800"
      },
      "message": "vulkan: rework CreateInstance_Bottom and related ones\n\nThe reworked driver::CreateInstance will\n\n - call HAL\u0027s EnumerateInstanceExtensionProperties and filter out\n   extensions unknown to HAL, if there is any extension enabled.\n\nWe do not expect or enumerate any HAL layer yet as that requires some\nworks to layers_extensions.cpp.\n\nThe reworked driver::EnumerateInstanceExtensionProperties instead will\nreturn all extensions enumerated by HAL, after prepending VK_KHR_surface\nand VK_KHR_android_surface to them.  This allows extensions unknown to the\nloader to be enumerated.\n\nChange-Id: I73b496582a773e06c7b79f0c5c166700737f2953\n"
    },
    {
      "commit": "01cf305325f3789c573d7eff435e409f04677c66",
      "tree": "c7aa635840bffb8096791a2e838cd6cf1e888d42",
      "parents": [
        "4901db70b12801cf1966937a58eb7566bfdeb4ce"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Mar 24 16:16:21 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Mon Apr 11 07:37:19 2016 +0800"
      },
      "message": "vulkan: rework EnumerateDeviceExtensionProperties_Bottom\n\nThe reworked driver::EnumerateDeviceExtensionProperties will simply return\nall extensions enumerated by HAL, with VK_ANDROID_native_buffer replaced\nby VK_KHR_swapchain.  This allows extensions unknown to the loader to be\nenumerated.\n\nChange-Id: Iceed8ee3f16a968d005ae3ba42f1bd1839c2ab9f\n"
    },
    {
      "commit": "4901db70b12801cf1966937a58eb7566bfdeb4ce",
      "tree": "e3d9e89722db03ee8a97f5ec536edeac74ff973b",
      "parents": [
        "6a58a8a7813450038cb15575e3333b83f268c972"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Mar 24 16:38:58 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Mon Apr 11 07:37:19 2016 +0800"
      },
      "message": "vulkan: rework {Create,Destroy}Device_Bottom\n\nThe reworked driver::CreateDevice will\n\n - use the providied pAllocator,\n - call HAL\u0027s EnumerateDeviceExtensionProperties and filter out extensions\n   unknown to HAL, if there is any extension enabled.\n\nWe do not expect or enumerate any HAL layer yet as that requires some\nworks to layers_extensions.cpp.\n\nChange-Id: I3ba4019d18dfed994d7037d95825bf54096f2a5d\n"
    },
    {
      "commit": "a70a4214d85dec0d27e918c977dabd488a5c20e5",
      "tree": "c92bdc44e737fdbc9b1a113d16de1f2df6cd46c9",
      "parents": [
        "8391efaf4d43da899a5183f03d4fc3a683125612",
        "1f8f46bbccce0f1aabe7f12a6a26d772cd17b5b7"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Sun Apr 10 22:38:53 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Apr 10 22:38:53 2016 +0000"
      },
      "message": "Merge \"vulkan: check for unsupported extensions\" into nyc-dev"
    },
    {
      "commit": "c684560d96df39570c66b2b3e0035859bb4b25a5",
      "tree": "ece8823eff0d8cd67781676d2c3d5ec0398f7272",
      "parents": [
        "79632ee48a8cddf31a1ec15c0c5217b3d3608622"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Apr 07 15:01:55 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Mon Apr 11 06:35:49 2016 +0800"
      },
      "message": "vulkan: avoid double-free in InitSharedPtr\n\nWhen std::shared_ptr fails to allocate its internal data, it deletes the\nmanaged object automatically.  We should not call obj-\u003ecommon.decRef on\nstd::bad_alloc.\n\nBug: 28039233\nChange-Id: I1fe00c16e83e426602eac96d8b86afb4fd4830e6\n"
    },
    {
      "commit": "6a58a8a7813450038cb15575e3333b83f268c972",
      "tree": "ad6fadd874b389606f387d76e4b845997af2bedc",
      "parents": [
        "ba0be41afe39dcbed0a712a32d1ab6c341797007"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Mar 24 16:29:51 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Apr 07 21:15:04 2016 +0800"
      },
      "message": "vulkan: move AllocateCommandBuffers_Bottom\n\nMove it from loader.cpp to driver.cpp and rename it to\ndriver::AllocateCommandBuffers.  No functional change.\n\nChange-Id: I0abdca7dea128df0b313b90cfb5d5825566fc790\n"
    },
    {
      "commit": "ba0be41afe39dcbed0a712a32d1ab6c341797007",
      "tree": "d47694e68fda562e143727f811734f95d8c93412",
      "parents": [
        "cc5e2765a9d56b03b69d0c3f25b94721f82d034e"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Mar 24 16:24:40 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Apr 07 21:15:03 2016 +0800"
      },
      "message": "vulkan: move GetDeviceQueue_Bottom\n\nMove it from loader.cpp to driver.cpp and rename it to\ndriver::GetDeviceQueue.  No functional change.\n\nChange-Id: Ide8ebe044e62b8ef6fc64ac03dcc1d920f5bf9a6\n"
    },
    {
      "commit": "cc5e2765a9d56b03b69d0c3f25b94721f82d034e",
      "tree": "27a163cd7cb9480ea30872616a9f1044799932e7",
      "parents": [
        "eb7db124e46da9a9210cf868353f5ea79502ffec"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Mar 24 13:01:16 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Apr 07 21:15:03 2016 +0800"
      },
      "message": "vulkan: rework DriverDispatchTable\n\nGenerate {Instance,Device}DriverTable from code-generator.tmpl to replace\ndispatch.tmpl entirely.  The new code avoids initializing\nVK_ANDROID_native_buffer entries when the extension is not enabled.  The\nseparation of instance and device driver tables also allows us to\ninitialize the device driver table with vkGetDeviceProcAddr, which is\nexpected to return more efficient function pointers on properly\nimplemented HALs.\n\nCreateInstance_Bottom always has a potential resource leak when the\nHAL-created instance does not contain HWVULKAN_DISPATCH_MAGIC.\nCreateDevice_Bottom now has the same issue.  Both of them will be fixed in\nfollowing commits.\n\nChange-Id: If7800ef23098121f1fff643a2c5224c2c9be0711\n"
    },
    {
      "commit": "eb7db124e46da9a9210cf868353f5ea79502ffec",
      "tree": "58801422f306957db776bcaa000e648ce7b6bd82",
      "parents": [
        "b262ddcfaba592ca153beddb120aeb68b64e6e63"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Mar 24 09:11:06 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Apr 07 21:15:03 2016 +0800"
      },
      "message": "vulkan: rework driver::Get*ProcAddr\n\nIntroduce driver::ProcHook which is a struct to describe an intercepted\nfunction.  Given a function name, GetProcHook returns a ProcHook if the\nfunction is intercepted.  NULL otherwise.\n\nA ProcHook has three function pointers.  ProcHook::proc points to the real\nintercepting function.  ProcHook::disabled_proc points to a no-op function\nthat logs an error.  ProcHook::checked_proc points to a trampoline that\ncalls either ProcHook::proc or ProcHook::disabled_proc.\n\nFor core functions, driver::Get*ProcAddr simply return ProcHook::proc.\nFor extension functions, driver::Get*ProcAddr return ProcHook::proc when\nthe extension is known to be enabled.  They return ProcHook::disabled_proc\nwhen the extension is known to be disabled.  Finally, they return\nProcHook::checked_proc when they do not know if the extension is enabled\nor not.\n\nAll ProcHooks as well as their disabled_proc/checked_proc are generated in\ndriver_gen.cpp.  This allows us to get rid of all hand-written \"_Disabled\"\nfunctions, all no-op \"_Bottom\" functions, and special cases for\nVK_ANDROID_native_buffer.  The reworked driver::Get*ProcAddr also detects\nmore applications\u0027 errors and logs them.\n\nChange-Id: I8e6f476f450688b5547fd75243c66cb603c516b5\n"
    },
    {
      "commit": "b262ddcfaba592ca153beddb120aeb68b64e6e63",
      "tree": "cb40d0891a4a173575bc05f2f625afddf887d902",
      "parents": [
        "dbb7e9c8f950ad344eee22cc50acc67253f9f4b1"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Tue Mar 22 07:38:20 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Apr 07 21:15:03 2016 +0800"
      },
      "message": "vulkan: add VK_ANDROID_native_buffer to vulkan.api\n\nChange-Id: I5d90918b10264b9d2cf8b73dc7a7c983b6721862\n"
    },
    {
      "commit": "dbb7e9c8f950ad344eee22cc50acc67253f9f4b1",
      "tree": "250d04c0dae89732161139b83a0f9ba8c07dc389",
      "parents": [
        "136b8eb38e98d96009799eee59d4ea0088544b54"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Mar 24 15:09:38 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Apr 07 21:15:03 2016 +0800"
      },
      "message": "vulkan: move driver::GetDefaultAllocator\n\nMove it from loader.cpp to driver.cpp.  No functional change.\n\nChange-Id: I8c9bb5315c29ff69bfd971ac8e1264fb8329a811\n"
    },
    {
      "commit": "136b8eb38e98d96009799eee59d4ea0088544b54",
      "tree": "7fc308d253205213d5df8610a713189274ddc4b6",
      "parents": [
        "9d51816145b008b7b4b091a8c90faf30ba0394e4"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Mar 24 15:01:52 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Apr 07 21:15:03 2016 +0800"
      },
      "message": "vulkan: move driver::OpenHAL\n\nMove it from loader.cpp to driver.cpp.  HAL loading is now done in\ndriver.cpp while HAL extension queries are still done in loader.cpp.\n\nChange-Id: I15d7ead98497adacb1bd798522f057ff6bf16909\n"
    },
    {
      "commit": "9d51816145b008b7b4b091a8c90faf30ba0394e4",
      "tree": "070798bd5a6d795c8c9d948e5478be2871c5f0a6",
      "parents": [
        "79632ee48a8cddf31a1ec15c0c5217b3d3608622"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Mar 24 14:55:27 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Apr 07 21:15:03 2016 +0800"
      },
      "message": "vulkan: move driver::Debuggable\n\nMove it from loader.cpp to driver.cpp.  No functional change.\n\nChange-Id: I455e798d6001f9719d378ae0295f2b4b181b0c09\n"
    },
    {
      "commit": "1f8f46bbccce0f1aabe7f12a6a26d772cd17b5b7",
      "tree": "480bc708d325350a82b51fec2be00ba162329d9e",
      "parents": [
        "79632ee48a8cddf31a1ec15c0c5217b3d3608622"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Wed Apr 06 14:17:48 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Apr 07 13:54:08 2016 +0800"
      },
      "message": "vulkan: check for unsupported extensions\n\nReturn VK_ERROR_EXTENSION_NOT_PRESENT when an app attempts to enable an\nunsupported extension.  This fixes a regression introduced by my top\nrewrite (commit 0c20324: vulkan: rewrite top of loader).\n\nSince we do not cache HAL extensions, each vkCreateInstance or\nvkCreateDevice call is preceded by two extension enumeration calls\ninternally.\n\nChange-Id: I5342c1a5c9a5452dd2bc52933a5ee558db174048\n"
    },
    {
      "commit": "0c2032490b80178ec823bf22a7f5d08398851cc3",
      "tree": "9675ef1e494d8593698063c5160cda6351883c30",
      "parents": [
        "baa85bd893665a48aee73d7ca7b73cd39b48f998"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Tue Mar 15 13:44:51 2016 +0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Wed Mar 30 09:42:47 2016 +0800"
      },
      "message": "vulkan: rewrite top of loader\n\nThe top is responsible for layer discovery and chaining, and the bottom is\nlike a regular layer that is always enabled and is inserted just before\nthe driver.  Make the separation clear by rewriting the top and stripping\nthe layer managment code from loader.cpp.\n\nChange-Id: I64e525e27bd4c297bccd94a1eb9b88e28088e85d\n"
    },
    {
      "commit": "a76e8ff83811a0f4b98278a3d518d191991d2582",
      "tree": "fdb580ff40420d0d7e44b509c5c4ff77c6290731",
      "parents": [
        "b49576d5241859a3cf03c9f34b8030ad25d3806b"
      ],
      "author": {
        "name": "Courtney Goeltzenleuchter",
        "email": "courtneygo@google.com",
        "time": "Tue Mar 22 08:09:58 2016 -0600"
      },
      "committer": {
        "name": "Courtney Goeltzenleuchter",
        "email": "courtneygo@google.com",
        "time": "Tue Mar 22 09:10:07 2016 -0600"
      },
      "message": "Install non-working WSI functions if not enabled\n\nb/27537020\nThese changes make it so that WSI calls dead end if the\napplication hasn\u0027t explicitly enabled them.\n\nChange-Id: I44f95244ec7fd17855daf1c46e9cb6ab4932840f\n"
    },
    {
      "commit": "84cd4c29b9da12c4cd72a72946524b83d44f8a03",
      "tree": "4a5f4de1328977f79a77820f9bf647d0a9e2e10e",
      "parents": [
        "49380be2cfbc43adb79ef559b7bd8578040948cc"
      ],
      "author": {
        "name": "Courtney Goeltzenleuchter",
        "email": "courtneygo@google.com",
        "time": "Wed Mar 16 12:20:13 2016 -0600"
      },
      "committer": {
        "name": "Courtney Goeltzenleuchter",
        "email": "courtneygo@google.com",
        "time": "Thu Mar 17 08:48:34 2016 -0600"
      },
      "message": "loader: cache top-of-chain PhysicalDevice\n\nBug: 27615575\nIf a layer wraps the VkPhysicalDevice object the\nloader would be unable to figure out what VkInstance\nit was associated with since it no longer matches\nthe VkPhysicalDevice queried from the driver.\nNow cache the VkPhysicalDevice\u0027s from the top of\nthe chain as well to resolve this.\n\nChange-Id: I7d04884dc3aa8623ce2f67e4f6575f74b82e2834\n"
    },
    {
      "commit": "e177d0619608d3700c9c978c362dbc804a327c46",
      "tree": "42b63fdbe54d3d063b63e5d68121fa0579e97176",
      "parents": [
        "322d9cd77523560026bfe2bd1c56ab37d5b370f2",
        "4fe2d928aff6bd721cfb576ca1a39f678dba3bcd"
      ],
      "author": {
        "name": "Courtney Goeltzenleuchter",
        "email": "courtneygo@google.com",
        "time": "Thu Mar 10 23:49:32 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 10 23:49:32 2016 +0000"
      },
      "message": "Merge \"loader: Include instance where required for GIPA\" into nyc-dev"
    },
    {
      "commit": "4fe2d928aff6bd721cfb576ca1a39f678dba3bcd",
      "tree": "e1ff550db0b67ab8ef5f64c435d19f9829b0c80d",
      "parents": [
        "c334549ae303be666a9008d7364cd388e18ea448"
      ],
      "author": {
        "name": "Courtney Goeltzenleuchter",
        "email": "courtneygo@google.com",
        "time": "Thu Mar 10 13:28:52 2016 -0700"
      },
      "committer": {
        "name": "Courtney Goeltzenleuchter",
        "email": "courtneygo@google.com",
        "time": "Thu Mar 10 16:43:58 2016 -0700"
      },
      "message": "loader: Include instance where required for GIPA\n\nBug: 27579008\nGetInstanceProcAddr is only speced to allow VK_NULL_HANDLE\nfor the instance for a few calls.\n\nChange-Id: If350e23edc336bff3b499631ba9a68b2921c6969\n"
    }
  ],
  "next": "5703683fb645a7e31ac25aaf7136013a6a9b9fbc"
}
