)]}'
{
  "log": [
    {
      "commit": "628c41ac1d788cac4310bd62e52323de98b392c9",
      "tree": "53a567342b8ef63c4a4f1f4cd882b907290f9065",
      "parents": [
        "b700ae8ceeed33b876a6e4676ac0f05bbdf9be78"
      ],
      "author": {
        "name": "Trevor David Black",
        "email": "vantablack@google.com",
        "time": "Mon Sep 27 05:07:22 2021 +0000"
      },
      "committer": {
        "name": "Trevor David Black",
        "email": "vantablack@google.com",
        "time": "Mon Jan 24 15:56:02 2022 +0000"
      },
      "message": "Change Vulkan API to 1.3\n\nThe commit changes the platform code to support Vulkan 1.3.\n\nBug: 191881132\nTest: build\nChange-Id: I75ed8a0737ef20ff95e4a27ce39cc855d8a1deeb\n"
    },
    {
      "commit": "fa7af492359030e28391e1a13d7b9749057d3603",
      "tree": "6d3492f58ee74c4285aefdf3d7b39b63025c982e",
      "parents": [
        "9fed2ba5c83d734f4c977c1404b042f210c7063c"
      ],
      "author": {
        "name": "Ian Elliott",
        "email": "ianelliott@google.com",
        "time": "Tue Jul 20 17:40:24 2021 -0600"
      },
      "committer": {
        "name": "Trevor David Black",
        "email": "vantablack@google.com",
        "time": "Mon Jan 24 15:54:20 2022 +0000"
      },
      "message": "Change Vulkan API to 1.2\n\nThe commit changes the platform code to support Vulkan 1.2.\n\nBug: 191881132\nTest: build\nChange-Id: I6e71a84b85874a71031734004b8e44ee0ea7446f\n"
    },
    {
      "commit": "bfb7199b594c705116571744c1504f29d5cfebef",
      "tree": "41e15db36e1632b03f8fa920a07002a6e355c5d9",
      "parents": [
        "38a129962a2c2c93fd5c3b31703ecad1e17ddd4c"
      ],
      "author": {
        "name": "Ian Elliott",
        "email": "ianelliott@google.com",
        "time": "Wed Nov 24 16:32:41 2021 -0700"
      },
      "committer": {
        "name": "Ian Elliott",
        "email": "ianelliott@google.com",
        "time": "Wed Nov 24 16:46:57 2021 -0700"
      },
      "message": "Vulkan: Work-around Android start-up race condition\n\nWork-around a race condition during Android start-up, while the\n`service.sf.present_timestamp` property is asynchronously working its\nway from HWC to other processes (especially render engine).  This can\ncause the two successive calls to EnumerateDeviceExtensionProperties\nto have different numbers of extensions.  That causes the second call\nto return VK_INCOMPLETE, which can cause vkCreateDevice() to fail.\nThe work-around is to add 1 to the \"count\" returned by the first call.\n\nTest: Manual test with additional logging\nBug: b/206733351\nChange-Id: I7b29998d670196d2af772f19be30b2e9498acfe0\n"
    },
    {
      "commit": "9d51468472f2f39fc894dd4fe160428ddf3af04e",
      "tree": "f8c5507870cdf4eb1e84ee1a101fdec296a82f58",
      "parents": [
        "cf9cc70b68fd9ee903c627f33ad9e4133976b2e0",
        "69140e9c9c1960837cb112d0b9dbf6a24b088515"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 24 02:44:25 2021 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Feb 24 02:44:25 2021 +0000"
      },
      "message": "Merge \"Update checking debug.vulkan.layer.* system props\" am: 3fa6396567 am: df476dddf5 am: 69140e9c9c\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1596925\n\nMUST ONLY BE SUBMITTED BY AUTOMERGER\n\nChange-Id: I2e187e756cf202c91debeea8f9bbad76f5463790\n"
    },
    {
      "commit": "a8baab0c852aa88691d3347b53ba573f761084a0",
      "tree": "82fba1561ecbc1cef7a40e94ea2969b6cef03c52",
      "parents": [
        "82a8c40f72529e3e208bed48badee4a26ea7ba4f"
      ],
      "author": {
        "name": "Jason Macnak",
        "email": "natsu@google.com",
        "time": "Fri Feb 19 12:53:47 2021 -0800"
      },
      "committer": {
        "name": "Jason Macnak",
        "email": "natsu@google.com",
        "time": "Mon Feb 22 10:52:22 2021 -0800"
      },
      "message": "Update checking debug.vulkan.layer.* system props\n\n... to scan a fixed range of priorities followed by\nconsecutive priorities instead of scanning all system\nprops (property_list()) which causes sepolicy audits\nwhen Vulkan is loaded in a process with a restrictive\nsepolicy.\n\nThis avoids sepolicy audits in system_server for example\nwhen running on Cuttlefish with SwANGLE (ANGLE GL on top\nof SwiftShader Vulkan).\n\nBug: b/179967574\nTest: boot Cuttlefish with SwANGLE and inspect audit logs\nChange-Id: I63b3f45113fbdd3ab62c22f062150e25b99d7352\n"
    },
    {
      "commit": "901f8ee258dbfff2090dc45badf3446266f0ae16",
      "tree": "cbdcde67e88af8de2a1c104f25885fd117782b7b",
      "parents": [
        "d5dc0406513d1d6a5fde91a0963b2edf9de498ac"
      ],
      "author": {
        "name": "Yiwei Zhang",
        "email": "zzyiwei@google.com",
        "time": "Fri Jul 31 13:18:49 2020 -0700"
      },
      "committer": {
        "name": "Yiwei Zhang",
        "email": "zzyiwei@google.com",
        "time": "Mon Aug 03 08:27:40 2020 -0700"
      },
      "message": "Vulkan: unload builtin driver to reload updated driver if needed\n\nAndroid historically preloads GL driver in Zygote to speed up app launch\ntime and avoid the duplicate extra memory for each process loading the\ngraphics driver. In Android 10, we landed GL driver unloading mechanism\nto ship updatable driver and ANGLE without perf overhead on the rest of\nthe system.\n\nTo get prepared for the HWUI Vulkan backend being turned on as the\ndefault renderer for UI componments, this CL will do the same to the\nVulkan driver to preload it in Zygote and unload so to reload updated\ndriver if needed.\n\nBug: 135536511\nTest: atest CtsUiRenderingTestCases no regression on VK backend\nChange-Id: I2909f6ecc4f011b1f3670aacdf817ed3b6e9a487\n"
    },
    {
      "commit": "c889d3c5763d34ecfff99cff8df1c6e85aac00d0",
      "tree": "d4dd65f8af9cc8a4fb9f42b01fbfadb9dc3b15bf",
      "parents": [
        "8dcf124c0894e90b932ff5501892dacc37f36fad"
      ],
      "author": {
        "name": "Yiwei Zhang",
        "email": "zzyiwei@google.com",
        "time": "Thu Jul 16 13:51:12 2020 -0700"
      },
      "committer": {
        "name": "Yiwei Zhang",
        "email": "zzyiwei@google.com",
        "time": "Thu Jul 16 15:45:36 2020 -0700"
      },
      "message": "libvulkan: make vkEnumerateInstanceVersion trigger driver loading\n\nThis is a globally dispatched api, and it\u0027s the best option to preload\nthe driver in Zygote with minimum overhead.\n\nThis change also updates some return codes according to the spec.\n\nBug: 135536511\nTest: take a trace and verify driver is loaded\nChange-Id: I6fe425ec568b13577d3d9471aa5f181cff44c61c\n"
    },
    {
      "commit": "27800499ab20551a2b2e64d360c5e2130c881dd2",
      "tree": "51c308b9e7ef9786ad87ef6e3fbcfdad01b04a2e",
      "parents": [
        "134a699e8dc8fab48182f8575ca95c49af8428e5"
      ],
      "author": {
        "name": "Peiyong Lin",
        "email": "lpy@google.com",
        "time": "Wed Mar 25 15:44:28 2020 -0700"
      },
      "committer": {
        "name": "Peiyong Lin",
        "email": "lpy@google.com",
        "time": "Wed Mar 25 15:47:19 2020 -0700"
      },
      "message": "[Vulkan] Expose device extensions from implicit layers.\n\nPreviously the vulkan loader only exposes device extensions from the\ndriver implementation when the layer name is not specified. Per\nvkEnumerateDeviceExtensionProperties spec the loader must also advertise\ndevice extensions from implicitly enabled layers.\n\nBug: b/143293104\nTest: atest android.gputools.cts.CtsRootlessGpuDebugHostTest\nChange-Id: Iaf5786ba7e371a290ecd1764af69b5298371cfdd\n"
    },
    {
      "commit": "8f4435a3370ec3a7ad56ecb3721d29a0292c06a9",
      "tree": "fea1fa93888d652c9a1d224e0296776470c46d26",
      "parents": [
        "1032fac2f76b0eb83ddf0f22784e994547824c6a"
      ],
      "author": {
        "name": "Peiyong Lin",
        "email": "lpy@google.com",
        "time": "Wed Mar 11 17:43:28 2020 -0700"
      },
      "committer": {
        "name": "Peiyong Lin",
        "email": "lpy@google.com",
        "time": "Tue Mar 17 20:20:51 2020 -0700"
      },
      "message": "[Vulkan] Expose instance extensions from implicit layers.\n\nPreviously the vulkan loader only exposes instance extensions from the\ndriver implementation. Per vkEnumerateInstanceExtensionProperties spec\nthe loader must also advertise instance extensions from implicitly\nenabled layers.\n\nBug: b/143293104\nTest: vkEnumerateInstanceExtensionProperties returns the instance\nextensions from implicit layers.\n\nChange-Id: I17f4ce370bf5f4bba295165a28836e2b7c03a318\n"
    },
    {
      "commit": "1119f1ec91f32787a7f7e7ede9775b5a1b71b84b",
      "tree": "e594856abaf367e3ae2332fc400c08476243c7a7",
      "parents": [
        "502a77e19b64f23ad862eda83f7d8af877900cbb",
        "4f2cf91f9a8ff02c3ce10f47dc2a10255540b808"
      ],
      "author": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Feb 18 23:57:09 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Feb 18 23:57:09 2020 +0000"
      },
      "message": "Merge \"libvulkan: remove a redundant check debuggable logic\" into qt-qpr1-dev am: eab94c8f45 am: 4f2cf91f9a\n\nChange-Id: Ifb3ca893ba2315167c205897355a49c510dffb58\n"
    },
    {
      "commit": "4f2cf91f9a8ff02c3ce10f47dc2a10255540b808",
      "tree": "0e3b809ce3981e99511ba2b8bb14001d26902b32",
      "parents": [
        "7c2a35dcba965f3846683dc50873ae88c91c64b1",
        "eab94c8f45c5c231cf62467ee0f0be7a99fcc484"
      ],
      "author": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Feb 18 23:39:20 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Feb 18 23:39:20 2020 +0000"
      },
      "message": "Merge \"libvulkan: remove a redundant check debuggable logic\" into qt-qpr1-dev am: eab94c8f45\n\nChange-Id: I28a9939b33926ebf285a93047ab21691c5e81576\n"
    },
    {
      "commit": "279df620b0175bbe5dfe34f73d75450d541792de",
      "tree": "4768ccc5c9a58633e8c483ea58b53f02ee6bee01",
      "parents": [
        "162190933bb1456d48a41b0205f3864170691aa1"
      ],
      "author": {
        "name": "Yiwei Zhang",
        "email": "zzyiwei@google.com",
        "time": "Tue Feb 18 10:45:15 2020 -0800"
      },
      "committer": {
        "name": "Yiwei Zhang",
        "email": "zzyiwei@google.com",
        "time": "Tue Feb 18 19:01:55 2020 +0000"
      },
      "message": "libvulkan: remove a redundant check debuggable logic\n\nThere\u0027re below cases which we can load the debug layers:\n(1) Layer search paths added from Settings global\n    Layers enabled from Settings global\n(2) Layer search paths added from default system debug path\n    Layers enabled from system property\n(3) Layer search paths are from app class loader\u0027s default paths\n    Layers enabled from system property\n\nFor (1), we have done the debuggable check in Java land GraphicsEnvironment.\n\nFor (2), we have a separate check debuggable logic for adding the system\ndebug path to the layers search paths.\n\nFor (3), we should never need to check debuggable.\n\nSo we should just remove the redundant debuggable check when we add implicit\nlayers, which can unblock (3) immediately as well as maintaining the security\nlogic around debug layers.\n\nBug: 147838267\nBug: 149183377\nTest: CtsRootlessGpuDebugHostTest#testSystemPropertyEnableVulkan on userbuild\nChange-Id: I80d9cf3ff6786ce4d4ec5d8afb8da58ba0842ec9\n"
    },
    {
      "commit": "a046c9652a1937ace04734c1b5fcb96b99b564d4",
      "tree": "4714753d665dd9b45375b9ea05bd85488228e169",
      "parents": [
        "bde12ab468028a240d94551b3ea26a4cb72e8537",
        "fe62271bc355a6989a3e093bd39afb7b2e249054"
      ],
      "author": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri Jan 31 18:37:57 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri Jan 31 18:37:57 2020 +0000"
      },
      "message": "GraphicsEnv: refactor to unify the debuggable logic am: fe62271bc3\n\nChange-Id: I2bb295fbf56168beefa5dd26ea21cb85a90a6752\n"
    },
    {
      "commit": "fe62271bc355a6989a3e093bd39afb7b2e249054",
      "tree": "c6cc59c538f42e68c25666fae4551a6fc360b9b2",
      "parents": [
        "876a1960e4a264a364ef14634840d5eebd78f01e"
      ],
      "author": {
        "name": "Yiwei Zhang",
        "email": "zzyiwei@google.com",
        "time": "Fri Nov 08 11:55:36 2019 -0800"
      },
      "committer": {
        "name": "Peiyong Lin",
        "email": "lpy@google.com",
        "time": "Wed Jan 29 21:30:19 2020 -0800"
      },
      "message": "GraphicsEnv: refactor to unify the debuggable logic\n\nBy default, PR_SET_DUMPABLE is 0 for zygote spawned apps, except in the\nfollowing circumstances:\n1. ro.debuggable\u003d1 (global debuggable enabled, i.e., userdebug or eng builds).\n2. android:debuggable\u003d\"true\" in the manifest for an individual application.\n3. An app which explicitly calls prctl(PR_SET_DUMPABLE, 1).\n4. GraphicsEnv calls prctl(PR_SET_DUMPABLE, 1) in the presence of\n   \u003cmeta-data android:name\u003d\"com.android.graphics.injectLayers.enable\"\n              android:value\u003d\"true\"/\u003e\n   in the application manifest.\n\nSo checking both ro.debuggable\u003d1 and PR_GET_DUMPABLE is redundant.\n\nBug: b/144186877, b/148566223\nTest: CtsAngleIntegrationHostTestCases\nTest: CtsRootlessGpuDebugHostTest\nChange-Id: I934f64315b67db77ee2c2a9dff50fb23bc0a546a\nMerged-In: I934f64315b67db77ee2c2a9dff50fb23bc0a546a\n(cherry picked from commit 6a674c9e105bdc5d736c06a4500dcdac1c6c4006)\n"
    },
    {
      "commit": "d64198e6ee5be7da197cce0c8dcf62eddc03ee9c",
      "tree": "456cae9ab3568ae974c773e480d57e68cef63ea2",
      "parents": [
        "6883e545bc3a08097f309ae3caddfbf708dea458",
        "6a674c9e105bdc5d736c06a4500dcdac1c6c4006"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Nov 13 20:21:52 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 13 20:21:52 2019 +0000"
      },
      "message": "Merge \"GraphicsEnv: refactor to unify the debuggable logic\""
    },
    {
      "commit": "6a674c9e105bdc5d736c06a4500dcdac1c6c4006",
      "tree": "56d3b404c4aadb9a1b7b45b10df18e5e35c63067",
      "parents": [
        "0f9d717a7463d833cd460610c97b5854ff18096a"
      ],
      "author": {
        "name": "Yiwei Zhang",
        "email": "zzyiwei@google.com",
        "time": "Fri Nov 08 11:55:36 2019 -0800"
      },
      "committer": {
        "name": "Yiwei Zhang",
        "email": "zzyiwei@google.com",
        "time": "Fri Nov 08 16:00:40 2019 -0800"
      },
      "message": "GraphicsEnv: refactor to unify the debuggable logic\n\nBy default, PR_SET_DUMPABLE is 0 for zygote spawned apps, except in the\nfollowing circumstances:\n1. ro.debuggable\u003d1 (global debuggable enabled, i.e., userdebug or eng builds).\n2. android:debuggable\u003d\"true\" in the manifest for an individual application.\n3. An app which explicitly calls prctl(PR_SET_DUMPABLE, 1).\n4. GraphicsEnv calls prctl(PR_SET_DUMPABLE, 1) in the presence of\n   \u003cmeta-data android:name\u003d\"com.android.graphics.injectLayers.enable\"\n              android:value\u003d\"true\"/\u003e\n   in the application manifest.\n\nSo checking both ro.debuggable\u003d1 and PR_GET_DUMPABLE is redundant.\n\nBug: 144186877\nTest: CtsAngleIntegrationHostTestCases\nTest: CtsRootlessGpuDebugHostTest\nChange-Id: I934f64315b67db77ee2c2a9dff50fb23bc0a546a\n"
    },
    {
      "commit": "94b18d55fa60a9c3a5b135b6237436d44b9ebeb7",
      "tree": "81ab3ab2886dd980383468674489e1a281967b71",
      "parents": [
        "b74b376735adb894eaff02d82fda0fd5aefb49d2"
      ],
      "author": {
        "name": "Yiwei Zhang",
        "email": "zzyiwei@google.com",
        "time": "Thu Nov 07 17:12:11 2019 -0800"
      },
      "committer": {
        "name": "Yiwei Zhang",
        "email": "zzyiwei@google.com",
        "time": "Thu Nov 07 17:12:11 2019 -0800"
      },
      "message": "Vulkan: fix a typo\n\nFixes: 140609421\nTest: build, flash and boot\nChange-Id: I7548bf733b32861c8007cee63df954022c111a1d\n"
    },
    {
      "commit": "a885c06c07e9a0838b185daed58bc7626c2b961e",
      "tree": "625746aa34e4203638ec1f05676d6715609b2fd1",
      "parents": [
        "f8f506c5ad5c51ae95e0675c52017a11be145274"
      ],
      "author": {
        "name": "Yiwei Zhang",
        "email": "zzyiwei@google.com",
        "time": "Thu Oct 24 12:07:57 2019 -0700"
      },
      "committer": {
        "name": "Yiwei Zhang",
        "email": "zzyiwei@google.com",
        "time": "Thu Oct 24 12:07:57 2019 -0700"
      },
      "message": "Vulkan: convert all the TODOs into actual issues to chase against\n\nBug: 134185757\nTest: build\nChange-Id: Ib9a27ba8b8da53707337d3d48e6da502f38670e5\n"
    },
    {
      "commit": "ec6c50539be6311693ec67cd69baa84f56654c78",
      "tree": "ed44ff8f48db8e6b3e90bb8e9809a689821e6163",
      "parents": [
        "95e8de25761a8c5f5bdf7054dfdf0df38d483d65"
      ],
      "author": {
        "name": "Yiwei Zhang",
        "email": "zzyiwei@google.com",
        "time": "Thu Oct 17 15:53:00 2019 -0700"
      },
      "committer": {
        "name": "Yiwei Zhang",
        "email": "zzyiwei@google.com",
        "time": "Thu Oct 17 17:52:37 2019 -0700"
      },
      "message": "Vulkan: correctly expose Vulkan entry points\n\nThis change fixes the advertisement of core Vulkan entry points as below:\n1. GIPA returns a valid checked_proc for 1.1 core device APIs.\n2. GDPA returns NULL for 1.1 core device APIs on a 1.0 physical device.\n\nBug: 134185757\nBug: 142266108\nTest: dEQP-VK.memory.binding on 1.1 loader and 1.0 device ICD\nTest: dEQP-VK.api.info.instance on 1.1 loader and 1.0 instance ICD\nChange-Id: Ieb814516a4019f1a330178bfeb414e1450895c5c\nMerged-In: I0a3e06dc04bade4f36a7e68ee2f53979c656ee4e\n"
    },
    {
      "commit": "7cc36a50e15cc781d9b1260d2cf418780173b2ee",
      "tree": "38a72f26380a5f2d82cfc80923502e16b2679141",
      "parents": [
        "aeaa867b6079f5593e9d94b9bd23eb400320adc0"
      ],
      "author": {
        "name": "Yiwei Zhang",
        "email": "zzyiwei@google.com",
        "time": "Fri Oct 11 19:02:09 2019 -0700"
      },
      "committer": {
        "name": "Yiwei Zhang",
        "email": "zzyiwei@google.com",
        "time": "Thu Oct 17 16:27:44 2019 -0700"
      },
      "message": "Vulkan: correctly expose Vulkan entry points\n\nThis change fixes the advertisement of core Vulkan entry points as below:\n1. GIPA returns a valid checked_proc for 1.1 core device APIs.\n2. GDPA returns NULL for 1.1 core device APIs on a 1.0 physical device.\n\nBug: 134185757\nBug: 142266108\nTest: dEQP-VK.memory.binding on 1.1 loader and 1.0 device ICD\nTest: dEQP-VK.api.info.instance on 1.1 loader and 1.0 instance ICD\nChange-Id: I0a3e06dc04bade4f36a7e68ee2f53979c656ee4e\n"
    },
    {
      "commit": "519b44c8398e1b237f72dbd8106cd0ea0a00d936",
      "tree": "5513ce293b68b4a9a8be7193d9e0eb7483045a05",
      "parents": [
        "b215bf6c80f4ed8c429aa09d83d18325f7369cac"
      ],
      "author": {
        "name": "Yiwei Zhang",
        "email": "zzyiwei@google.com",
        "time": "Wed Aug 14 23:15:02 2019 -0700"
      },
      "committer": {
        "name": "Yiwei Zhang",
        "email": "zzyiwei@google.com",
        "time": "Thu Aug 15 17:42:20 2019 +0000"
      },
      "message": "libvulkan: ensure layer discovery is triggered only once for a new process\n\nAfter decoupling layer discovery from driver loading, the layer discovery is\ntriggered at each call of vkCreateInstance, vkEnumerateInstanceLayerProperties\nand vkEnumerateInstanceExtensionProperties. However, it takes non-trivial time\nto traverse the layer search path for priviledged apps and non-updated system\napps. So this change just makes sure the layer discovery logic is triggered only\nonce for a new process.\n\nBug: 139443653\nBug: 135536511\nTest: preload Vulkan and atest CtsGpuToolsHostTestCases\nChange-Id: Ibe502fd4b089acbbff6f4a2485fa61c736a484b5\n"
    },
    {
      "commit": "9dfc93ace276102af4973b62823454fcc5a653cd",
      "tree": "4a8c2d786e27cf97d0cc11427dfd02739d2af178",
      "parents": [
        "54322025fb451c9e681add11e6d3a38770ff3c64"
      ],
      "author": {
        "name": "Yiwei Zhang",
        "email": "zzyiwei@google.com",
        "time": "Fri Aug 09 17:25:24 2019 -0700"
      },
      "committer": {
        "name": "Yiwei Zhang",
        "email": "zzyiwei@google.com",
        "time": "Tue Aug 13 16:44:49 2019 +0000"
      },
      "message": "libvulkan: refactor the layer discovery logic\n\nPreviously, the layer discovery logic is only executed once along with the\ndriver loading. However, once Vulkan driver is preloaded in Zygote, new layers\npushed to the system or shipped with the App\u0027s apk won\u0027t be discovered at\nruntime. This change refactors the logic of layer discovery. It doesn\u0027t hurt to\nkeep finding new layers available in the layer search path, because the app apk\nitself won\u0027t change at runtime. Even if we push new layers to the system search\npath, that\u0027s only on the debug build of the system.\n\nBug: 135536511\nTest: preload Vulkan and atest CtsGpuToolsHostTestCases\nChange-Id: I915b78dacfd9b637a202f76969d559a31eded686\n"
    },
    {
      "commit": "87edb95cbba91c28fb9c0bc4977b50c5e1c04940",
      "tree": "d007f8e1fde11637c35bf67dea4cdecc45857bc7",
      "parents": [
        "5b57ce520e66ac33417c9fdb8782864eb0c5b829"
      ],
      "author": {
        "name": "Adam Bodnar",
        "email": "abodnar@google.com",
        "time": "Wed Jul 17 12:35:53 2019 -0700"
      },
      "committer": {
        "name": "Adam Bodnar",
        "email": "abodnar@google.com",
        "time": "Thu Jul 18 11:16:42 2019 -0700"
      },
      "message": "Check if Vulkan layers have a valid looking GIPA\n\nBug: 137862180\n\nTest: flash, remove vkGetInstanceProcAddr from layer symbols, run\n\nChange-Id: I4d4d75585623d2c15c57b4d8ad0243a2fc347fce\n"
    },
    {
      "commit": "fdd0c2ad1323babd4eeaa7318d826be1eb90643a",
      "tree": "74e2315d57afc1d9434240c0a623481ab1606651",
      "parents": [
        "44650259c25b14fca17689307bb8d79b4ae77b36"
      ],
      "author": {
        "name": "Yiwei Zhang",
        "email": "zzyiwei@google.com",
        "time": "Wed Jan 30 20:16:37 2019 -0800"
      },
      "committer": {
        "name": "Yiwei Zhang",
        "email": "zzyiwei@google.com",
        "time": "Mon Feb 04 15:39:56 2019 -0800"
      },
      "message": "Vulkan: add atrace support\n\nTest: build, flash and take traces\nChange-Id: Idab6d748519c4f5bc6aac3d51efd26cad28c94ec\n"
    },
    {
      "commit": "d2aa3ab0f37087ab784a0a9246cc6ec5f04a3abe",
      "tree": "f6e25c5ca6518cfa26e87e12a59adcac768a659b",
      "parents": [
        "81be9993fc65414fea8a76c8e8e37122c1542da7"
      ],
      "author": {
        "name": "Cody Northrop",
        "email": "cnorthrop@google.com",
        "time": "Fri Oct 20 09:01:53 2017 -0600"
      },
      "committer": {
        "name": "Cody Northrop",
        "email": "cnorthrop@google.com",
        "time": "Wed Nov 15 20:47:10 2017 -0700"
      },
      "message": "Rootless GPU Debug\n\nAdd the ability to load GPU debug layers from the base\ndirectory of debuggable applications.\n\nThis update concides with changes to framework/base to\ncontrol the enabling logic in GraphicsEnvironment.\n\nThis commit changes the Vulkan loader to:\n* Scan an additional location for debug layers.\n* Use the provided order of layers from GraphicsEnvironment,\n  overriding system properties.\n* Use the first instance of a layer found, in the case of duplicates.\n* Move layers paths and namespace to GraphicsEnv, removing vulkan_loader_data\n\nBug: 63708377\nTest: Manual, CTS tests to follow\n\nChange-Id: I38dc91bbc26671f5093ee1b12454fc024c0b5892\n"
    },
    {
      "commit": "f25f5bb3eb1ee3e7a3c33b5e44143ad296245f3f",
      "tree": "417d2c0aa7f703de6edec51a5be8343268d93c01",
      "parents": [
        "90f669f238cdc750483d0961efc61bbf551ae782"
      ],
      "author": {
        "name": "Daniel Koch",
        "email": "dkoch@nvidia.com",
        "time": "Thu Oct 05 00:26:58 2017 -0400"
      },
      "committer": {
        "name": "Ian Elliott",
        "email": "ianelliott@google.com",
        "time": "Thu Oct 26 13:20:18 2017 -0600"
      },
      "message": "Vulkan api update to 1.1\n\nImport Vulkan 1.1 header from\nkhronos master@5b2d66c0e6906388385ed7adfd015d80ec0d846a\nwith the following modifications:\n- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES 10006300 -\u003e 1000063000\n- remove VK_KHR_get_display_properties2 (which is not ratified)\n- device_group interactions from KHR_surface to KHR_swapchain (per MR 2409)\n\nSummary of changes since 1.0.61:\n* VK_KHR_surface -\u003e v26 (subsumed interactions with VK_KHR_device_group)\n* VK_KHR_swapchain -\u003e v69 (subsumed interactions with VK_KHR_device_group)\n* VK_EXT_debug_report -\u003e v9 (no api changes)\n* VK_KHX_multiview -\u003e VK_KHR_multiview\n* VK_KHX_device_group -\u003e VK_KHR_device_group\n* VK_KHX_device_group_creation -\u003e VK_KHR_device_group_creation\n* VK_KHR_push_descriptor -\u003e v2\n* Added VK_KHR_maintenance3\n* Added 1.1 core enums, structs, and functions (kept KHR suffixed ones too)\n\nImplemented the following in libvulkan:\n* EnumerateInstanceVersion\n* GetDeviceGroupPresentCapabilitiesKHR (minimal support for 1 device)\n* GetDeviceGroupSurfacePresentModesKHR (minimal support for local present modes only)\n* GetPhysicalDevicePresentRectanglesKHR (assumes whole window)\n* AcquireNextImage2KHR (minimal thunk to AcquireNextImageKHR)\n* GetDeviceQueue2\n* added support for VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR\n* support for 1.1 core device_groups functionality (no VK_KHR_device_group_creation)\n  - EnumeratePhysicalDeviceGroups\n* added trampolines for 1.1 core entry points\n* disabled apiVersion \u003e\u003d 1.1 check\n\nImplemented in nulldrv (but largely untested beyond build/link)\n* EnumerateInstanceVersion\n* enough empty thunks for VK 1.1 core functions that it links\n\nTest: Build Android\nChange-Id: I247cd670543867bdf80877156d941cf3bfcf6303\n"
    },
    {
      "commit": "e0ea99cc4ba89452b9b6b1baa33bddcb11f3351a",
      "tree": "1c90d7dda6cbd815a854cd35432d43064d2e1daa",
      "parents": [
        "ba4d92cc90b5d2a902e898211f04311a0ae2493b",
        "a2c2d11f98b692401be56c8f285c570bae47ddda"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Jan 12 08:35:35 2017 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Jan 12 08:36:11 2017 -0800"
      },
      "message": "resolve merge conflicts of a2c2d11f9 to master\n\nTest: compile\nBug: 26552300\nBug: 31289077\nChange-Id: I84d0ffa430df3beca0dcc6ed205ce220d7be1f87\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": "1531bf11e3ea065137562ce29e07ee5e40f3bacc",
      "tree": "d9c406404181df0254027a0292765185ac0aef8b",
      "parents": [
        "02400591d3f61ec73fd959f2977f496124df708e"
      ],
      "author": {
        "name": "Courtney Goeltzenleuchter",
        "email": "courtneygo@google.com",
        "time": "Thu Dec 29 08:46:18 2016 -0700"
      },
      "committer": {
        "name": "Courtney Goeltzenleuchter",
        "email": "courtneygo@google.com",
        "time": "Thu Dec 29 09:34:59 2016 -0700"
      },
      "message": "vulkan: Correct access after free issue\n\nWhile testing argument validation in the loader, I found that\nI got SEGFAULTs trying to access the logger class created in\nLayerChain::CreateDevice. I believe that the logger object\nwas being destroyed at the end of the LayerChain construction\nstatement so that a reference to the logger caused a SEGFAULT.\n\nFix CreateInstance path as well, though the loader doesn\u0027t\ncurrently call the logger in that path, so no way to verify.\n\nTest: run vkCreateDevice_test on Vulkan device.\nSee tests/README.md for details\nBug: 33783620\n\nChange-Id: Ib46023e8a8dfa008510c655c5b216aabaaf2ea83\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": "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": "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": "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": "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": "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": "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": "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": "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"
    }
  ]
}
