vulkan: remove patches/frameworks_native-sdk_0.10

Change-Id: I60597847ca8c8a006f20e474320ac872d9ea12b0
(cherry picked from commit dd45da17053d5140fa0e201ef1039ffd25643e02)
diff --git a/vulkan/patches/README b/vulkan/patches/README
index a458d94..d424dd8 100644
--- a/vulkan/patches/README
+++ b/vulkan/patches/README
@@ -12,12 +12,6 @@
 
 frameworks_base-apk_library_dir
 -------------------------------
-This branch is for frameworks/native. It changes all the Vulkan components to
-use the SDK 0.10 version of the API and extensions.
-
-
-frameworks_base-apk_library_dir
--------------------------------
 This branch is for $TOP/frameworks/base. It modifies the framework to
 inform the Vulkan loader, during activity startup, where the
 activity's native library directory. The loader will search this
diff --git a/vulkan/patches/frameworks_native-sdk_0.10/0001-vulkan-Update-from-version-0.172.2-to-0.174.0.patch b/vulkan/patches/frameworks_native-sdk_0.10/0001-vulkan-Update-from-version-0.172.2-to-0.174.0.patch
deleted file mode 100644
index 94d3e85..0000000
--- a/vulkan/patches/frameworks_native-sdk_0.10/0001-vulkan-Update-from-version-0.172.2-to-0.174.0.patch
+++ /dev/null
@@ -1,505 +0,0 @@
-From 18896311f868ab1b2b8a9a6ca34de4c0de6cf0d7 Mon Sep 17 00:00:00 2001
-From: Jesse Hall <jessehall@google.com>
-Date: Thu, 19 Nov 2015 21:32:50 -0800
-Subject: [PATCH] vulkan: Update from version 0.172.2 to 0.174.0
-
-Change-Id: If89614476735e5fb83cbeb4cf473e32e6f0cc386
----
- vulkan/api/vulkan.api              | 92 ++++++++++++++++----------------------
- vulkan/include/vulkan/vulkan.h     | 92 ++++++++++++++++++--------------------
- vulkan/libvulkan/entry.cpp         |  9 +---
- vulkan/libvulkan/get_proc_addr.cpp | 17 +++----
- vulkan/libvulkan/loader.h          |  3 +-
- vulkan/nulldrv/null_driver.cpp     |  5 +--
- vulkan/nulldrv/null_driver.h       |  3 +-
- vulkan/nulldrv/null_driver_gen.cpp |  3 +-
- 8 files changed, 94 insertions(+), 130 deletions(-)
-
-diff --git a/vulkan/api/vulkan.api b/vulkan/api/vulkan.api
-index 7616740..7ab0e86 100644
---- a/vulkan/api/vulkan.api
-+++ b/vulkan/api/vulkan.api
-@@ -27,8 +27,8 @@ import platform "platform.api"
- 
- // API version (major.minor.patch)
- define VERSION_MAJOR 0
--define VERSION_MINOR 170
--define VERSION_PATCH 2
-+define VERSION_MINOR 174
-+define VERSION_PATCH 0
- 
- // API limits
- define VK_MAX_PHYSICAL_DEVICE_NAME 256
-@@ -538,8 +538,8 @@ enum VkFormat {
- /// Shader stage enumerant
- enum VkShaderStage {
-     VK_SHADER_STAGE_VERTEX                                  = 0x00000000,
--    VK_SHADER_STAGE_TESS_CONTROL                            = 0x00000001,
--    VK_SHADER_STAGE_TESS_EVALUATION                         = 0x00000002,
-+    VK_SHADER_STAGE_TESSELLATION_CONTROL                    = 0x00000001,
-+    VK_SHADER_STAGE_TESSELLATION_EVALUATION                 = 0x00000002,
-     VK_SHADER_STAGE_GEOMETRY                                = 0x00000003,
-     VK_SHADER_STAGE_FRAGMENT                                = 0x00000004,
-     VK_SHADER_STAGE_COMPUTE                                 = 0x00000005,
-@@ -750,8 +750,8 @@ bitfield VkBufferCreateFlags {
- /// Shader stage flags
- bitfield VkShaderStageFlags {
-     VK_SHADER_STAGE_VERTEX_BIT                              = 0x00000001,
--    VK_SHADER_STAGE_TESS_CONTROL_BIT                        = 0x00000002,
--    VK_SHADER_STAGE_TESS_EVALUATION_BIT                     = 0x00000004,
-+    VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT                = 0x00000002,
-+    VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT             = 0x00000004,
-     VK_SHADER_STAGE_GEOMETRY_BIT                            = 0x00000008,
-     VK_SHADER_STAGE_FRAGMENT_BIT                            = 0x00000010,
-     VK_SHADER_STAGE_COMPUTE_BIT                             = 0x00000020,
-@@ -867,17 +867,17 @@ bitfield VkCmdBufferOptimizeFlags {
- 
- /// Pipeline statistics flags
- bitfield VkQueryPipelineStatisticFlags {
--    VK_QUERY_PIPELINE_STATISTIC_IA_VERTICES_BIT             = 0x00000001,  /// Optional
--    VK_QUERY_PIPELINE_STATISTIC_IA_PRIMITIVES_BIT           = 0x00000002,  /// Optional
--    VK_QUERY_PIPELINE_STATISTIC_VS_INVOCATIONS_BIT          = 0x00000004,  /// Optional
--    VK_QUERY_PIPELINE_STATISTIC_GS_INVOCATIONS_BIT          = 0x00000008,  /// Optional
--    VK_QUERY_PIPELINE_STATISTIC_GS_PRIMITIVES_BIT           = 0x00000010,  /// Optional
--    VK_QUERY_PIPELINE_STATISTIC_C_INVOCATIONS_BIT           = 0x00000020,  /// Optional
--    VK_QUERY_PIPELINE_STATISTIC_C_PRIMITIVES_BIT            = 0x00000040,  /// Optional
--    VK_QUERY_PIPELINE_STATISTIC_FS_INVOCATIONS_BIT          = 0x00000080,  /// Optional
--    VK_QUERY_PIPELINE_STATISTIC_TCS_PATCHES_BIT             = 0x00000100,  /// Optional
--    VK_QUERY_PIPELINE_STATISTIC_TES_INVOCATIONS_BIT         = 0x00000200,  /// Optional
--    VK_QUERY_PIPELINE_STATISTIC_CS_INVOCATIONS_BIT          = 0x00000400,  /// Optional
-+    VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT                     = 0x00000001,  /// Optional
-+    VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT                   = 0x00000002,  /// Optional
-+    VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT                   = 0x00000004,  /// Optional
-+    VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT                 = 0x00000008,  /// Optional
-+    VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT                  = 0x00000010,  /// Optional
-+    VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT                        = 0x00000020,  /// Optional
-+    VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT                         = 0x00000040,  /// Optional
-+    VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT                 = 0x00000080,  /// Optional
-+    VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT         = 0x00000100,  /// Optional
-+    VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT  = 0x00000200,  /// Optional
-+    VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT                  = 0x00000400,  /// Optional
- }
- 
- /// Memory mapping flags
-@@ -910,8 +910,8 @@ bitfield VkPipelineStageFlags {
-     VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT                     = 0x00000002,  /// Draw/DispatchIndirect command fetch
-     VK_PIPELINE_STAGE_VERTEX_INPUT_BIT                      = 0x00000004,  /// Vertex/index fetch
-     VK_PIPELINE_STAGE_VERTEX_SHADER_BIT                     = 0x00000008,  /// Vertex shading
--    VK_PIPELINE_STAGE_TESS_CONTROL_SHADER_BIT               = 0x00000010,  /// Tessellation control shading
--    VK_PIPELINE_STAGE_TESS_EVALUATION_SHADER_BIT            = 0x00000020,  /// Tessellation evaluation shading
-+    VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT       = 0x00000010,  /// Tessellation control shading
-+    VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT    = 0x00000020,  /// Tessellation evaluation shading
-     VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT                   = 0x00000040,  /// Geometry shading
-     VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT                   = 0x00000080,  /// Fragment shading
-     VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT              = 0x00000100,  /// Early fragment (depth/stencil) tests
-@@ -1085,7 +1085,7 @@ class VkDeviceQueueCreateInfo {
- class VkDeviceCreateInfo {
-     VkStructureType                             sType                      /// Should be VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO
-     const void*                                 pNext                      /// Pointer to next structure
--    u32                                         queueRecordCount
-+    u32                                         requestedQueueRecordCount
-     const VkDeviceQueueCreateInfo*              pRequestedQueues
-     u32                                         layerCount
-     const char* const*                          ppEnabledLayerNames        /// Ordered list of layer names to be enabled
-@@ -1503,7 +1503,7 @@ class VkPipelineViewportStateCreateInfo {
- class VkPipelineRasterStateCreateInfo {
-     VkStructureType                             sType      /// Must be VK_STRUCTURE_TYPE_PIPELINE_RASTER_STATE_CREATE_INFO
-     const void*                                 pNext      /// Pointer to next structure
--    VkBool32                                    depthClipEnable
-+    VkBool32                                    depthClampEnable
-     VkBool32                                    rasterizerDiscardEnable
-     VkFillMode                                  fillMode                   /// optional (GL45)
-     VkCullMode                                  cullMode
-@@ -1696,6 +1696,12 @@ class VkClearValue {
-     VkClearDepthStencilValue                    depthStencil
- }
- 
-+class VkClearAttachment {
-+    VkImageAspectFlags                          aspectMask
-+    u32                                         colorAttachment
-+    VkClearValue                                clearValue
-+}
-+
- class VkAttachmentDescription {
-     VkStructureType                             sType           /// Must be VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION
-     const void*                                 pNext           /// Pointer to next structure
-@@ -1776,7 +1782,7 @@ class VkPhysicalDeviceFeatures {
-     VkBool32                                    dualSourceBlend                           /// blend operations which take two sources
-     VkBool32                                    logicOp                                   /// logic operations
-     VkBool32                                    multiDrawIndirect                         /// multi draw indirect
--    VkBool32                                    depthClip                                 /// depth clipping
-+    VkBool32                                    depthClamp                                /// depth clamping
-     VkBool32                                    depthBiasClamp                            /// depth bias clamping
-     VkBool32                                    fillModeNonSolid                          /// point and wireframe fill modes
-     VkBool32                                    depthBounds                               /// depth bounds test
-@@ -1857,14 +1863,14 @@ class VkPhysicalDeviceLimits {
-     u32                                         maxVertexInputBindingStride               /// max vertex input binding stride
-     u32                                         maxVertexOutputComponents                 /// max num of output components written by vertex shader
-     /// tessellation control stage limits
--    u32                                         maxTessGenLevel                           /// max level supported by tess primitive generator
--    u32                                         maxTessPatchSize                          /// max patch size (vertices)
--    u32                                         maxTessControlPerVertexInputComponents    /// max num of input components per-vertex in TCS
--    u32                                         maxTessControlPerVertexOutputComponents   /// max num of output components per-vertex in TCS
--    u32                                         maxTessControlPerPatchOutputComponents    /// max num of output components per-patch in TCS
--    u32                                         maxTessControlTotalOutputComponents       /// max total num of per-vertex and per-patch output components in TCS
--    u32                                         maxTessEvaluationInputComponents          /// max num of input components per vertex in TES
--    u32                                         maxTessEvaluationOutputComponents         /// max num of output components per vertex in TES
-+    u32                                         maxTessellationGenLevel                         /// max level supported by tess primitive generator
-+    u32                                         maxTessellationPatchSize                        /// max patch size (vertices)
-+    u32                                         maxTessellationControlPerVertexInputComponents  /// max num of input components per-vertex in TCS
-+    u32                                         maxTessellationControlPerVertexOutputComponents /// max num of output components per-vertex in TCS
-+    u32                                         maxTessellationControlPerPatchOutputComponents  /// max num of output components per-patch in TCS
-+    u32                                         maxTessellationControlTotalOutputComponents     /// max total num of per-vertex and per-patch output components in TCS
-+    u32                                         maxTessellationEvaluationInputComponents        /// max num of input components per vertex in TES
-+    u32                                         maxTessellationEvaluationOutputComponents       /// max num of output components per vertex in TES
-     /// geometry stage limits
-     u32                                         maxGeometryShaderInvocations              /// max invocation count supported in geometry shader
-     u32                                         maxGeometryInputComponents                /// max num of input components read in geometry stage
-@@ -4063,30 +4069,10 @@ cmd void vkCmdClearDepthStencilImage(
- }
- 
- @threadSafety("app")
--cmd void vkCmdClearColorAttachment(
--        VkCmdBuffer                                 cmdBuffer,
--        u32                                         colorAttachment,
--        VkImageLayout                               imageLayout,
--        const VkClearColorValue*                    pColor,
--        u32                                         rectCount,
--        const VkRect3D*                             pRects) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
--
--    rects := pRects[0:rectCount]
--    for i in (0 .. rectCount) {
--        rect := rects[i]
--    }
--
--    queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_GRAPHICS_BIT
--    cmdBufferObject.queueFlags = queueFlags
--}
--
--@threadSafety("app")
--cmd void vkCmdClearDepthStencilAttachment(
-+cmd void vkCmdClearAttachments(
-         VkCmdBuffer                                 cmdBuffer,
--        VkImageAspectFlags                          aspectMask,
--        VkImageLayout                               imageLayout,
--        const VkClearDepthStencilValue*             pDepthStencil,
-+        u32                                         attachmentCount,
-+        const VkClearAttachment*                    pAttachments,
-         u32                                         rectCount,
-         const VkRect3D*                             pRects) {
-     cmdBufferObject := GetCmdBuffer(cmdBuffer)
-diff --git a/vulkan/include/vulkan/vulkan.h b/vulkan/include/vulkan/vulkan.h
-index 03bcefe..5d884cd 100644
---- a/vulkan/include/vulkan/vulkan.h
-+++ b/vulkan/include/vulkan/vulkan.h
-@@ -41,7 +41,7 @@ extern "C" {
-     ((major << 22) | (minor << 12) | patch)
- 
- // Vulkan API version supported by this file
--#define VK_API_VERSION VK_MAKE_VERSION(0, 170, 2)
-+#define VK_API_VERSION VK_MAKE_VERSION(0, 174, 0)
- 
- 
- #if defined(__cplusplus) && (_MSC_VER >= 1800 || __cplusplus >= 201103L)
-@@ -511,8 +511,8 @@ typedef enum {
- 
- typedef enum {
-     VK_SHADER_STAGE_VERTEX = 0,
--    VK_SHADER_STAGE_TESS_CONTROL = 1,
--    VK_SHADER_STAGE_TESS_EVALUATION = 2,
-+    VK_SHADER_STAGE_TESSELLATION_CONTROL = 1,
-+    VK_SHADER_STAGE_TESSELLATION_EVALUATION = 2,
-     VK_SHADER_STAGE_GEOMETRY = 3,
-     VK_SHADER_STAGE_FRAGMENT = 4,
-     VK_SHADER_STAGE_COMPUTE = 5,
-@@ -924,17 +924,17 @@ typedef VkFlags VkSemaphoreCreateFlags;
- typedef VkFlags VkEventCreateFlags;
- 
- typedef enum {
--    VK_QUERY_PIPELINE_STATISTIC_IA_VERTICES_BIT = 0x00000001,
--    VK_QUERY_PIPELINE_STATISTIC_IA_PRIMITIVES_BIT = 0x00000002,
--    VK_QUERY_PIPELINE_STATISTIC_VS_INVOCATIONS_BIT = 0x00000004,
--    VK_QUERY_PIPELINE_STATISTIC_GS_INVOCATIONS_BIT = 0x00000008,
--    VK_QUERY_PIPELINE_STATISTIC_GS_PRIMITIVES_BIT = 0x00000010,
--    VK_QUERY_PIPELINE_STATISTIC_C_INVOCATIONS_BIT = 0x00000020,
--    VK_QUERY_PIPELINE_STATISTIC_C_PRIMITIVES_BIT = 0x00000040,
--    VK_QUERY_PIPELINE_STATISTIC_FS_INVOCATIONS_BIT = 0x00000080,
--    VK_QUERY_PIPELINE_STATISTIC_TCS_PATCHES_BIT = 0x00000100,
--    VK_QUERY_PIPELINE_STATISTIC_TES_INVOCATIONS_BIT = 0x00000200,
--    VK_QUERY_PIPELINE_STATISTIC_CS_INVOCATIONS_BIT = 0x00000400,
-+    VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 0x00000001,
-+    VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 0x00000002,
-+    VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 0x00000004,
-+    VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 0x00000008,
-+    VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 0x00000010,
-+    VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 0x00000020,
-+    VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 0x00000040,
-+    VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 0x00000080,
-+    VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 0x00000100,
-+    VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 0x00000200,
-+    VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 0x00000400,
- } VkQueryPipelineStatisticFlagBits;
- typedef VkFlags VkQueryPipelineStatisticFlags;
- 
-@@ -1000,8 +1000,8 @@ typedef VkFlags VkPipelineCreateFlags;
- 
- typedef enum {
-     VK_SHADER_STAGE_VERTEX_BIT = 0x00000001,
--    VK_SHADER_STAGE_TESS_CONTROL_BIT = 0x00000002,
--    VK_SHADER_STAGE_TESS_EVALUATION_BIT = 0x00000004,
-+    VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 0x00000002,
-+    VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 0x00000004,
-     VK_SHADER_STAGE_GEOMETRY_BIT = 0x00000008,
-     VK_SHADER_STAGE_FRAGMENT_BIT = 0x00000010,
-     VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020,
-@@ -1024,8 +1024,8 @@ typedef enum {
-     VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 0x00000002,
-     VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 0x00000004,
-     VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 0x00000008,
--    VK_PIPELINE_STAGE_TESS_CONTROL_SHADER_BIT = 0x00000010,
--    VK_PIPELINE_STAGE_TESS_EVALUATION_SHADER_BIT = 0x00000020,
-+    VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010,
-+    VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020,
-     VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 0x00000040,
-     VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 0x00000080,
-     VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 0x00000100,
-@@ -1150,7 +1150,7 @@ typedef struct {
-     VkBool32                                    dualSourceBlend;
-     VkBool32                                    logicOp;
-     VkBool32                                    multiDrawIndirect;
--    VkBool32                                    depthClip;
-+    VkBool32                                    depthClamp;
-     VkBool32                                    depthBiasClamp;
-     VkBool32                                    fillModeNonSolid;
-     VkBool32                                    depthBounds;
-@@ -1246,14 +1246,14 @@ typedef struct {
-     uint32_t                                    maxVertexInputAttributeOffset;
-     uint32_t                                    maxVertexInputBindingStride;
-     uint32_t                                    maxVertexOutputComponents;
--    uint32_t                                    maxTessGenLevel;
--    uint32_t                                    maxTessPatchSize;
--    uint32_t                                    maxTessControlPerVertexInputComponents;
--    uint32_t                                    maxTessControlPerVertexOutputComponents;
--    uint32_t                                    maxTessControlPerPatchOutputComponents;
--    uint32_t                                    maxTessControlTotalOutputComponents;
--    uint32_t                                    maxTessEvaluationInputComponents;
--    uint32_t                                    maxTessEvaluationOutputComponents;
-+    uint32_t                                    maxTessellationGenLevel;
-+    uint32_t                                    maxTessellationPatchSize;
-+    uint32_t                                    maxTessellationControlPerVertexInputComponents;
-+    uint32_t                                    maxTessellationControlPerVertexOutputComponents;
-+    uint32_t                                    maxTessellationControlPerPatchOutputComponents;
-+    uint32_t                                    maxTessellationControlTotalOutputComponents;
-+    uint32_t                                    maxTessellationEvaluationInputComponents;
-+    uint32_t                                    maxTessellationEvaluationOutputComponents;
-     uint32_t                                    maxGeometryShaderInvocations;
-     uint32_t                                    maxGeometryInputComponents;
-     uint32_t                                    maxGeometryOutputComponents;
-@@ -1366,7 +1366,7 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
--    uint32_t                                    queueRecordCount;
-+    uint32_t                                    requestedQueueCount;
-     const VkDeviceQueueCreateInfo*              pRequestedQueues;
-     uint32_t                                    layerCount;
-     const char*const*                           ppEnabledLayerNames;
-@@ -1665,7 +1665,7 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
--    VkBool32                                    depthClipEnable;
-+    VkBool32                                    depthClampEnable;
-     VkBool32                                    rasterizerDiscardEnable;
-     VkFillMode                                  fillMode;
-     VkCullMode                                  cullMode;
-@@ -2013,6 +2013,17 @@ typedef struct {
-     uint32_t                                    stencil;
- } VkClearDepthStencilValue;
- 
-+typedef union {
-+    VkClearColorValue                           color;
-+    VkClearDepthStencilValue                    depthStencil;
-+} VkClearValue;
-+
-+typedef struct {
-+    VkImageAspectFlags                          aspectMask;
-+    uint32_t                                    colorAttachment;
-+    VkClearValue                                clearValue;
-+} VkClearAttachment;
-+
- typedef struct {
-     VkOffset3D                                  offset;
-     VkExtent3D                                  extent;
-@@ -2026,11 +2037,6 @@ typedef struct {
-     VkExtent3D                                  extent;
- } VkImageResolve;
- 
--typedef union {
--    VkClearColorValue                           color;
--    VkClearDepthStencilValue                    depthStencil;
--} VkClearValue;
--
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-@@ -2223,8 +2229,7 @@ typedef void (VKAPI *PFN_vkCmdUpdateBuffer)(VkCmdBuffer cmdBuffer, VkBuffer dest
- typedef void (VKAPI *PFN_vkCmdFillBuffer)(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize fillSize, uint32_t data);
- typedef void (VKAPI *PFN_vkCmdClearColorImage)(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
- typedef void (VKAPI *PFN_vkCmdClearDepthStencilImage)(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
--typedef void (VKAPI *PFN_vkCmdClearColorAttachment)(VkCmdBuffer cmdBuffer, uint32_t colorAttachment, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rectCount, const VkRect3D* pRects);
--typedef void (VKAPI *PFN_vkCmdClearDepthStencilAttachment)(VkCmdBuffer cmdBuffer, VkImageAspectFlags aspectMask, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rectCount, const VkRect3D* pRects);
-+typedef void (VKAPI *PFN_vkCmdClearAttachments)(VkCmdBuffer cmdBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkRect3D* pRects);
- typedef void (VKAPI *PFN_vkCmdResolveImage)(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageResolve* pRegions);
- typedef void (VKAPI *PFN_vkCmdSetEvent)(VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask);
- typedef void (VKAPI *PFN_vkCmdResetEvent)(VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask);
-@@ -2916,19 +2921,10 @@ void VKAPI vkCmdClearDepthStencilImage(
-     uint32_t                                    rangeCount,
-     const VkImageSubresourceRange*              pRanges);
- 
--void VKAPI vkCmdClearColorAttachment(
--    VkCmdBuffer                                 cmdBuffer,
--    uint32_t                                    colorAttachment,
--    VkImageLayout                               imageLayout,
--    const VkClearColorValue*                    pColor,
--    uint32_t                                    rectCount,
--    const VkRect3D*                             pRects);
--
--void VKAPI vkCmdClearDepthStencilAttachment(
-+void VKAPI vkCmdClearAttachments(
-     VkCmdBuffer                                 cmdBuffer,
--    VkImageAspectFlags                          aspectMask,
--    VkImageLayout                               imageLayout,
--    const VkClearDepthStencilValue*             pDepthStencil,
-+    uint32_t                                    attachmentCount,
-+    const VkClearAttachment*                    pAttachments,
-     uint32_t                                    rectCount,
-     const VkRect3D*                             pRects);
- 
-diff --git a/vulkan/libvulkan/entry.cpp b/vulkan/libvulkan/entry.cpp
-index 2f7583d..4027f9a 100644
---- a/vulkan/libvulkan/entry.cpp
-+++ b/vulkan/libvulkan/entry.cpp
-@@ -682,13 +682,8 @@ void vkCmdClearDepthStencilImage(VkCmdBuffer cmdBuffer, VkImage image, VkImageLa
- }
- 
- __attribute__((visibility("default")))
--void vkCmdClearColorAttachment(VkCmdBuffer cmdBuffer, uint32_t colorAttachment, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rectCount, const VkRect3D* pRects) {
--    GetVtbl(cmdBuffer).CmdClearColorAttachment(cmdBuffer, colorAttachment, imageLayout, pColor, rectCount, pRects);
--}
--
--__attribute__((visibility("default")))
--void vkCmdClearDepthStencilAttachment(VkCmdBuffer cmdBuffer, VkImageAspectFlags aspectMask, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rectCount, const VkRect3D* pRects) {
--    GetVtbl(cmdBuffer).CmdClearDepthStencilAttachment(cmdBuffer, aspectMask, imageLayout, pDepthStencil, rectCount, pRects);
-+void vkCmdClearAttachments(VkCmdBuffer cmdBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkRect3D* pRects) {
-+    GetVtbl(cmdBuffer).CmdClearAttachments(cmdBuffer, attachmentCount, pAttachments, rectCount, pRects);
- }
- 
- __attribute__((visibility("default")))
-diff --git a/vulkan/libvulkan/get_proc_addr.cpp b/vulkan/libvulkan/get_proc_addr.cpp
-index 4f37c9c..bd16ac5 100644
---- a/vulkan/libvulkan/get_proc_addr.cpp
-+++ b/vulkan/libvulkan/get_proc_addr.cpp
-@@ -81,9 +81,8 @@ const NameProcEntry kDeviceProcTbl[] = {
-     {"vkCmdBindPipeline", reinterpret_cast<PFN_vkVoidFunction>(vkCmdBindPipeline)},
-     {"vkCmdBindVertexBuffers", reinterpret_cast<PFN_vkVoidFunction>(vkCmdBindVertexBuffers)},
-     {"vkCmdBlitImage", reinterpret_cast<PFN_vkVoidFunction>(vkCmdBlitImage)},
--    {"vkCmdClearColorAttachment", reinterpret_cast<PFN_vkVoidFunction>(vkCmdClearColorAttachment)},
-+    {"vkCmdClearAttachments", reinterpret_cast<PFN_vkVoidFunction>(vkCmdClearAttachments)},
-     {"vkCmdClearColorImage", reinterpret_cast<PFN_vkVoidFunction>(vkCmdClearColorImage)},
--    {"vkCmdClearDepthStencilAttachment", reinterpret_cast<PFN_vkVoidFunction>(vkCmdClearDepthStencilAttachment)},
-     {"vkCmdClearDepthStencilImage", reinterpret_cast<PFN_vkVoidFunction>(vkCmdClearDepthStencilImage)},
-     {"vkCmdCopyBuffer", reinterpret_cast<PFN_vkVoidFunction>(vkCmdCopyBuffer)},
-     {"vkCmdCopyBufferToImage", reinterpret_cast<PFN_vkVoidFunction>(vkCmdCopyBufferToImage)},
-@@ -242,9 +241,8 @@ const NameOffsetEntry kDeviceOffsetTbl[] = {
-     {"vkCmdBindPipeline", offsetof(DeviceVtbl, CmdBindPipeline)},
-     {"vkCmdBindVertexBuffers", offsetof(DeviceVtbl, CmdBindVertexBuffers)},
-     {"vkCmdBlitImage", offsetof(DeviceVtbl, CmdBlitImage)},
--    {"vkCmdClearColorAttachment", offsetof(DeviceVtbl, CmdClearColorAttachment)},
-+    {"vkCmdClearAttachments", offsetof(DeviceVtbl, CmdClearAttachments)},
-     {"vkCmdClearColorImage", offsetof(DeviceVtbl, CmdClearColorImage)},
--    {"vkCmdClearDepthStencilAttachment", offsetof(DeviceVtbl, CmdClearDepthStencilAttachment)},
-     {"vkCmdClearDepthStencilImage", offsetof(DeviceVtbl, CmdClearDepthStencilImage)},
-     {"vkCmdCopyBuffer", offsetof(DeviceVtbl, CmdCopyBuffer)},
-     {"vkCmdCopyBufferToImage", offsetof(DeviceVtbl, CmdCopyBufferToImage)},
-@@ -1063,14 +1061,9 @@ bool LoadDeviceVtbl(VkDevice device,
-         ALOGE("missing device proc: %s", "vkCmdClearDepthStencilImage");
-         success = false;
-     }
--    vtbl.CmdClearColorAttachment = reinterpret_cast<PFN_vkCmdClearColorAttachment>(get_proc_addr(device, "vkCmdClearColorAttachment"));
--    if (UNLIKELY(!vtbl.CmdClearColorAttachment)) {
--        ALOGE("missing device proc: %s", "vkCmdClearColorAttachment");
--        success = false;
--    }
--    vtbl.CmdClearDepthStencilAttachment = reinterpret_cast<PFN_vkCmdClearDepthStencilAttachment>(get_proc_addr(device, "vkCmdClearDepthStencilAttachment"));
--    if (UNLIKELY(!vtbl.CmdClearDepthStencilAttachment)) {
--        ALOGE("missing device proc: %s", "vkCmdClearDepthStencilAttachment");
-+    vtbl.CmdClearAttachments = reinterpret_cast<PFN_vkCmdClearAttachments>(get_proc_addr(device, "vkCmdClearAttachments"));
-+    if (UNLIKELY(!vtbl.CmdClearAttachments)) {
-+        ALOGE("missing device proc: %s", "vkCmdClearAttachments");
-         success = false;
-     }
-     vtbl.CmdResolveImage = reinterpret_cast<PFN_vkCmdResolveImage>(get_proc_addr(device, "vkCmdResolveImage"));
-diff --git a/vulkan/libvulkan/loader.h b/vulkan/libvulkan/loader.h
-index 6999e1e..1ffbdd5 100644
---- a/vulkan/libvulkan/loader.h
-+++ b/vulkan/libvulkan/loader.h
-@@ -173,8 +173,7 @@ struct DeviceVtbl {
-     PFN_vkCmdFillBuffer CmdFillBuffer;
-     PFN_vkCmdClearColorImage CmdClearColorImage;
-     PFN_vkCmdClearDepthStencilImage CmdClearDepthStencilImage;
--    PFN_vkCmdClearColorAttachment CmdClearColorAttachment;
--    PFN_vkCmdClearDepthStencilAttachment CmdClearDepthStencilAttachment;
-+    PFN_vkCmdClearAttachments CmdClearAttachments;
-     PFN_vkCmdResolveImage CmdResolveImage;
-     PFN_vkCmdSetEvent CmdSetEvent;
-     PFN_vkCmdResetEvent CmdResetEvent;
-diff --git a/vulkan/nulldrv/null_driver.cpp b/vulkan/nulldrv/null_driver.cpp
-index 053e403..9d028eb 100644
---- a/vulkan/nulldrv/null_driver.cpp
-+++ b/vulkan/nulldrv/null_driver.cpp
-@@ -1019,10 +1019,7 @@ void CmdClearColorImage(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imag
- void CmdClearDepthStencilImage(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges) {
- }
- 
--void CmdClearColorAttachment(VkCmdBuffer cmdBuffer, uint32_t colorAttachment, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rectCount, const VkRect3D* pRects) {
--}
--
--void CmdClearDepthStencilAttachment(VkCmdBuffer cmdBuffer, VkImageAspectFlags aspectMask, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rectCount, const VkRect3D* pRects) {
-+void CmdClearAttachments(VkCmdBuffer cmdBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkRect3D* pRects) {
- }
- 
- void CmdResolveImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageResolve* pRegions) {
-diff --git a/vulkan/nulldrv/null_driver.h b/vulkan/nulldrv/null_driver.h
-index 808673a..4940148 100644
---- a/vulkan/nulldrv/null_driver.h
-+++ b/vulkan/nulldrv/null_driver.h
-@@ -154,8 +154,7 @@ void CmdUpdateBuffer(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize de
- void CmdFillBuffer(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize fillSize, uint32_t data);
- void CmdClearColorImage(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
- void CmdClearDepthStencilImage(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
--void CmdClearColorAttachment(VkCmdBuffer cmdBuffer, uint32_t colorAttachment, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rectCount, const VkRect3D* pRects);
--void CmdClearDepthStencilAttachment(VkCmdBuffer cmdBuffer, VkImageAspectFlags aspectMask, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rectCount, const VkRect3D* pRects);
-+void CmdClearAttachments(VkCmdBuffer cmdBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkRect3D* pRects);
- void CmdResolveImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageResolve* pRegions);
- void CmdSetEvent(VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask);
- void CmdResetEvent(VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask);
-diff --git a/vulkan/nulldrv/null_driver_gen.cpp b/vulkan/nulldrv/null_driver_gen.cpp
-index ac6d50f..7f6ae8e 100644
---- a/vulkan/nulldrv/null_driver_gen.cpp
-+++ b/vulkan/nulldrv/null_driver_gen.cpp
-@@ -79,9 +79,8 @@ const NameProcEntry kDeviceProcTbl[] = {
-     {"vkCmdBindPipeline", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkCmdBindPipeline>(CmdBindPipeline))},
-     {"vkCmdBindVertexBuffers", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkCmdBindVertexBuffers>(CmdBindVertexBuffers))},
-     {"vkCmdBlitImage", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkCmdBlitImage>(CmdBlitImage))},
--    {"vkCmdClearColorAttachment", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkCmdClearColorAttachment>(CmdClearColorAttachment))},
-+    {"vkCmdClearAttachments", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkCmdClearAttachments>(CmdClearAttachments))},
-     {"vkCmdClearColorImage", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkCmdClearColorImage>(CmdClearColorImage))},
--    {"vkCmdClearDepthStencilAttachment", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkCmdClearDepthStencilAttachment>(CmdClearDepthStencilAttachment))},
-     {"vkCmdClearDepthStencilImage", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkCmdClearDepthStencilImage>(CmdClearDepthStencilImage))},
-     {"vkCmdCopyBuffer", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkCmdCopyBuffer>(CmdCopyBuffer))},
-     {"vkCmdCopyBufferToImage", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkCmdCopyBufferToImage>(CmdCopyBufferToImage))},
--- 
-2.6.0.rc2.230.g3dd15c0
-
diff --git a/vulkan/patches/frameworks_native-sdk_0.10/0002-vulkan-Update-from-version-0.174.0-to-0.177.0.patch b/vulkan/patches/frameworks_native-sdk_0.10/0002-vulkan-Update-from-version-0.174.0-to-0.177.0.patch
deleted file mode 100644
index 8530c9e..0000000
--- a/vulkan/patches/frameworks_native-sdk_0.10/0002-vulkan-Update-from-version-0.174.0-to-0.177.0.patch
+++ /dev/null
@@ -1,206 +0,0 @@
-From 5804cbcdb3c6444c7bb6904578ed339d9339de83 Mon Sep 17 00:00:00 2001
-From: Jesse Hall <jessehall@google.com>
-Date: Thu, 19 Nov 2015 21:51:33 -0800
-Subject: [PATCH] vulkan: Update from version 0.174.0 to 0.177.0
-
-Change-Id: I4b837c0bdb4fd6120688e8389ab8591178d370fb
----
- vulkan/api/templates/vulkan_h.tmpl |  2 +-
- vulkan/api/vulkan.api              | 12 +++++-------
- vulkan/include/vulkan/vulkan.h     | 25 ++++++++++---------------
- vulkan/nulldrv/null_driver.cpp     |  2 +-
- vulkan/tools/vkinfo.cpp            |  6 ++----
- 5 files changed, 19 insertions(+), 28 deletions(-)
-
-diff --git a/vulkan/api/templates/vulkan_h.tmpl b/vulkan/api/templates/vulkan_h.tmpl
-index 2dee541..c55107d 100644
---- a/vulkan/api/templates/vulkan_h.tmpl
-+++ b/vulkan/api/templates/vulkan_h.tmpl
-@@ -53,7 +53,7 @@ extern "C" {
- #define VK_API_VERSION \
-     VK_MAKE_VERSION({{Global "VERSION_MAJOR"}}, {{Global "VERSION_MINOR"}}, {{Global "VERSION_PATCH"}})
- ¶
--#if defined(__cplusplus) && (_MSC_VER >= 1800 || __cplusplus >= 201103L)
-+#if defined(__cplusplus) && ((defined(_MSC_VER) && _MSC_VER >= 1800 || __cplusplus >= 201103L)
-     #define VK_NULL_HANDLE nullptr
- #else
-     #define VK_NULL_HANDLE 0
-diff --git a/vulkan/api/vulkan.api b/vulkan/api/vulkan.api
-index 7ab0e86..2b499fd 100644
---- a/vulkan/api/vulkan.api
-+++ b/vulkan/api/vulkan.api
-@@ -27,7 +27,7 @@ import platform "platform.api"
- 
- // API version (major.minor.patch)
- define VERSION_MAJOR 0
--define VERSION_MINOR 174
-+define VERSION_MINOR 177
- define VERSION_PATCH 0
- 
- // API limits
-@@ -695,8 +695,7 @@ bitfield VkMemoryPropertyFlags {
-     VK_MEMORY_PROPERTY_HOST_NON_COHERENT_BIT                = 0x00000002,    /// Memory may not have i/o coherency so vkFlushMappedMemoryRanges and vkInvalidateMappedMemoryRanges must be used flush/invalidate host cache
-                                                                              /// vkInvalidateMappedMemoryRanges must be used flush/invalidate host cache
-     VK_MEMORY_PROPERTY_HOST_UNCACHED_BIT                    = 0x00000004,    /// Memory should not be cached by the host
--    VK_MEMORY_PROPERTY_HOST_WRITE_COMBINED_BIT              = 0x00000008,    /// Memory should support host write combining
--    VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT                 = 0x00000010,    /// Memory may be allocated by the driver when it is required
-+    VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT                 = 0x00000008,    /// Memory may be allocated by the driver when it is required
- }
- 
- /// Memory heap flags
-@@ -932,7 +931,6 @@ bitfield VkAttachmentDescriptionFlags {
- 
- /// Subpass description flags
- bitfield VkSubpassDescriptionFlags {
--    VK_SUBPASS_DESCRIPTION_NO_OVERDRAW_BIT                  = 0x00000001,
- }
- 
- /// Command pool creation flags
-@@ -1108,7 +1106,7 @@ class VkInstanceCreateInfo {
- class VkQueueFamilyProperties {
-     VkQueueFlags                                queueFlags                 /// Queue flags
-     u32                                         queueCount
--    VkBool32                                    supportsTimestamps
-+    u32                                         timestampValidBits
- }
- 
- class VkPhysicalDeviceMemoryProperties {
-@@ -1522,6 +1520,8 @@ class VkPipelineMultisampleStateCreateInfo {
-     VkBool32                                    sampleShadingEnable        /// optional (GL45)
-     f32                                         minSampleShading           /// optional (GL45)
-     const VkSampleMask*                         pSampleMask
-+    VkBool32                                    alphaToCoverageEnable
-+    VkBool32                                    alphaToOneEnable
- }
- 
- class VkPipelineColorBlendAttachmentState {
-@@ -1538,8 +1538,6 @@ class VkPipelineColorBlendAttachmentState {
- class VkPipelineColorBlendStateCreateInfo {
-     VkStructureType                             sType      /// Must be VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO
-     const void*                                 pNext      /// Pointer to next structure
--    VkBool32                                    alphaToCoverageEnable
--    VkBool32                                    alphaToOneEnable
-     VkBool32                                    logicOpEnable
-     VkLogicOp                                   logicOp
-     u32                                         attachmentCount    /// # of pAttachments
-diff --git a/vulkan/include/vulkan/vulkan.h b/vulkan/include/vulkan/vulkan.h
-index 5d884cd..124d088 100644
---- a/vulkan/include/vulkan/vulkan.h
-+++ b/vulkan/include/vulkan/vulkan.h
-@@ -41,10 +41,10 @@ extern "C" {
-     ((major << 22) | (minor << 12) | patch)
- 
- // Vulkan API version supported by this file
--#define VK_API_VERSION VK_MAKE_VERSION(0, 174, 0)
-+#define VK_API_VERSION VK_MAKE_VERSION(0, 177, 0)
- 
- 
--#if defined(__cplusplus) && (_MSC_VER >= 1800 || __cplusplus >= 201103L)
-+#if defined(__cplusplus) && ((defined(_MSC_VER) && _MSC_VER >= 1800) || __cplusplus >= 201103L)
-     #define VK_NULL_HANDLE nullptr
- #else
-     #define VK_NULL_HANDLE 0
-@@ -711,10 +711,10 @@ typedef enum {
-     VK_TEX_ADDRESS_MODE_CLAMP = 2,
-     VK_TEX_ADDRESS_MODE_MIRROR_ONCE = 3,
-     VK_TEX_ADDRESS_MODE_CLAMP_BORDER = 4,
--    VK_TEX_ADDRESS_BEGIN_RANGE = VK_TEX_ADDRESS_MODE_WRAP,
--    VK_TEX_ADDRESS_END_RANGE = VK_TEX_ADDRESS_MODE_CLAMP_BORDER,
--    VK_TEX_ADDRESS_NUM = (VK_TEX_ADDRESS_MODE_CLAMP_BORDER - VK_TEX_ADDRESS_MODE_WRAP + 1),
--    VK_TEX_ADDRESS_MAX_ENUM = 0x7FFFFFFF
-+    VK_TEX_ADDRESS_MODE_BEGIN_RANGE = VK_TEX_ADDRESS_MODE_WRAP,
-+    VK_TEX_ADDRESS_MODE_END_RANGE = VK_TEX_ADDRESS_MODE_CLAMP_BORDER,
-+    VK_TEX_ADDRESS_MODE_NUM = (VK_TEX_ADDRESS_MODE_CLAMP_BORDER - VK_TEX_ADDRESS_MODE_WRAP + 1),
-+    VK_TEX_ADDRESS_MODE_MAX_ENUM = 0x7FFFFFFF
- } VkTexAddressMode;
- 
- typedef enum {
-@@ -893,8 +893,7 @@ typedef enum {
-     VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000001,
-     VK_MEMORY_PROPERTY_HOST_NON_COHERENT_BIT = 0x00000002,
-     VK_MEMORY_PROPERTY_HOST_UNCACHED_BIT = 0x00000004,
--    VK_MEMORY_PROPERTY_HOST_WRITE_COMBINED_BIT = 0x00000008,
--    VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010,
-+    VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000008,
- } VkMemoryPropertyFlagBits;
- typedef VkFlags VkMemoryPropertyFlags;
- 
-@@ -1013,10 +1012,6 @@ typedef enum {
-     VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 0x00000001,
- } VkAttachmentDescriptionFlagBits;
- typedef VkFlags VkAttachmentDescriptionFlags;
--
--typedef enum {
--    VK_SUBPASS_DESCRIPTION_NO_OVERDRAW_BIT = 0x00000001,
--} VkSubpassDescriptionFlagBits;
- typedef VkFlags VkSubpassDescriptionFlags;
- 
- typedef enum {
-@@ -1336,7 +1331,7 @@ typedef struct {
- typedef struct {
-     VkQueueFlags                                queueFlags;
-     uint32_t                                    queueCount;
--    VkBool32                                    supportsTimestamps;
-+    uint32_t                                    timestampValidBits;
- } VkQueueFamilyProperties;
- 
- typedef struct {
-@@ -1684,6 +1679,8 @@ typedef struct {
-     VkBool32                                    sampleShadingEnable;
-     float                                       minSampleShading;
-     const VkSampleMask*                         pSampleMask;
-+    VkBool32                                    alphaToCoverageEnable;
-+    VkBool32                                    alphaToOneEnable;
- } VkPipelineMultisampleStateCreateInfo;
- 
- typedef struct {
-@@ -1724,8 +1721,6 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
--    VkBool32                                    alphaToCoverageEnable;
--    VkBool32                                    alphaToOneEnable;
-     VkBool32                                    logicOpEnable;
-     VkLogicOp                                   logicOp;
-     uint32_t                                    attachmentCount;
-diff --git a/vulkan/nulldrv/null_driver.cpp b/vulkan/nulldrv/null_driver.cpp
-index 9d028eb..8992db4 100644
---- a/vulkan/nulldrv/null_driver.cpp
-+++ b/vulkan/nulldrv/null_driver.cpp
-@@ -288,7 +288,7 @@ VkResult GetPhysicalDeviceQueueFamilyProperties(
-         properties->queueFlags =
-             VK_QUEUE_GRAPHICS_BIT | VK_QUEUE_COMPUTE_BIT | VK_QUEUE_DMA_BIT;
-         properties->queueCount = 1;
--        properties->supportsTimestamps = VK_FALSE;
-+        properties->timestampValidBits = 64;
-     }
-     *count = 1;
-     return VK_SUCCESS;
-diff --git a/vulkan/tools/vkinfo.cpp b/vulkan/tools/vkinfo.cpp
-index 583e607..2af04ad 100644
---- a/vulkan/tools/vkinfo.cpp
-+++ b/vulkan/tools/vkinfo.cpp
-@@ -124,8 +124,6 @@ void DumpPhysicalDevice(uint32_t idx, VkPhysicalDevice pdev) {
-                 strbuf << " NON_COHERENT";
-             if ((flags & VK_MEMORY_PROPERTY_HOST_UNCACHED_BIT) != 0)
-                 strbuf << " UNCACHED";
--            if ((flags & VK_MEMORY_PROPERTY_HOST_WRITE_COMBINED_BIT) != 0)
--                strbuf << " WRITE_COMBINED";
-             if ((flags & VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT) != 0)
-                 strbuf << " LAZILY_ALLOCATED";
-             printf("       Type %u: %s\n", type, strbuf.str().c_str());
-@@ -154,9 +152,9 @@ void DumpPhysicalDevice(uint32_t idx, VkPhysicalDevice pdev) {
-             queue_flags &= ~flag;
-             sep = "+";
-         }
--        printf("     Queue Family %u: %2ux %s timestamps:%s\n", family,
-+        printf("     Queue Family %u: %2ux %s timestamps:%ub\n", family,
-                qprops.queueCount, strbuf.str().c_str(),
--               qprops.supportsTimestamps ? "YES" : "NO");
-+               qprops.timestampValidBits);
-         strbuf.str(std::string());
-     }
- }
--- 
-2.6.0.rc2.230.g3dd15c0
-
diff --git a/vulkan/patches/frameworks_native-sdk_0.10/0003-vulkan-Update-from-version-0.177.0-to-0.179.0.patch b/vulkan/patches/frameworks_native-sdk_0.10/0003-vulkan-Update-from-version-0.177.0-to-0.179.0.patch
deleted file mode 100644
index acc549c..0000000
--- a/vulkan/patches/frameworks_native-sdk_0.10/0003-vulkan-Update-from-version-0.177.0-to-0.179.0.patch
+++ /dev/null
@@ -1,1092 +0,0 @@
-From daf915168b0aea3a47401a838448d737e955c154 Mon Sep 17 00:00:00 2001
-From: Jesse Hall <jessehall@google.com>
-Date: Thu, 19 Nov 2015 22:17:28 -0800
-Subject: [PATCH] vulkan: Update from version 0.177.0 to 0.179.0
-
-Change-Id: I4d596efec04a712d7b38323e012282fe9f98192b
----
- vulkan/api/vulkan.api              | 61 +++++++++++-------------------------
- vulkan/include/vulkan/vulkan.h     | 64 ++++++++++++++++++++------------------
- vulkan/libvulkan/entry.cpp         | 60 +++++++++++++++++------------------
- vulkan/libvulkan/loader.cpp        | 62 ++++++++++++++++--------------------
- vulkan/libvulkan/loader.h          |  8 ++---
- vulkan/libvulkan/swapchain.cpp     |  3 +-
- vulkan/nulldrv/null_driver.cpp     | 56 ++++++++++++---------------------
- vulkan/nulldrv/null_driver.h       | 30 +++++++++---------
- vulkan/nulldrv/null_driver_gen.cpp |  2 +-
- vulkan/tools/vkinfo.cpp            | 20 ++++--------
- 10 files changed, 154 insertions(+), 212 deletions(-)
-
-diff --git a/vulkan/api/vulkan.api b/vulkan/api/vulkan.api
-index 2b499fd..7844f63 100644
---- a/vulkan/api/vulkan.api
-+++ b/vulkan/api/vulkan.api
-@@ -27,7 +27,7 @@ import platform "platform.api"
- 
- // API version (major.minor.patch)
- define VERSION_MAJOR 0
--define VERSION_MINOR 177
-+define VERSION_MINOR 179
- define VERSION_PATCH 0
- 
- // API limits
-@@ -621,7 +621,8 @@ enum VkResult {
-     VK_ERROR_MEMORY_MAP_FAILED                              = 0xFFFFFFFB,
-     VK_ERROR_LAYER_NOT_PRESENT                              = 0xFFFFFFFA,
-     VK_ERROR_EXTENSION_NOT_PRESENT                          = 0xFFFFFFF9,
--    VK_ERROR_INCOMPATIBLE_DRIVER                            = 0xFFFFFFF8,
-+    VK_ERROR_FEATURE_NOT_PRESENT                            = 0xFFFFFFF8,
-+    VK_ERROR_INCOMPATIBLE_DRIVER                            = 0xFFFFFFF7,
- }
- 
- enum VkDynamicState {
-@@ -2157,18 +2158,16 @@ cmd PFN_vkVoidFunction vkGetInstanceProcAddr(
-     return ?
- }
- 
--cmd VkResult vkGetPhysicalDeviceProperties(
-+cmd void vkGetPhysicalDeviceProperties(
-         VkPhysicalDevice                            physicalDevice,
-         VkPhysicalDeviceProperties*                 pProperties) {
-     physicalDeviceObject := GetPhysicalDevice(physicalDevice)
- 
-     properties := ?
-     pProperties[0] = properties
--
--    return ?
- }
- 
--cmd VkResult vkGetPhysicalDeviceQueueFamilyProperties(
-+cmd void vkGetPhysicalDeviceQueueFamilyProperties(
-         VkPhysicalDevice                            physicalDevice,
-         u32*                                        pCount,
-         VkQueueFamilyProperties*                    pQueueFamilyProperties) {
-@@ -2187,32 +2186,27 @@ cmd VkResult vkGetPhysicalDeviceQueueFamilyProperties(
-     //     count := ?
-     //     pCount[0] = count
-     // }
--    return ?
- }
- 
--cmd VkResult vkGetPhysicalDeviceMemoryProperties(
-+cmd void vkGetPhysicalDeviceMemoryProperties(
-         VkPhysicalDevice                            physicalDevice,
-         VkPhysicalDeviceMemoryProperties*           pMemoryProperties) {
-     physicalDeviceObject := GetPhysicalDevice(physicalDevice)
- 
-     memoryProperties := ?
-     pMemoryProperties[0] = memoryProperties
--
--    return ?
- }
- 
--cmd VkResult vkGetPhysicalDeviceFeatures(
-+cmd void vkGetPhysicalDeviceFeatures(
-         VkPhysicalDevice                            physicalDevice,
-         VkPhysicalDeviceFeatures*                   pFeatures) {
-     physicalDeviceObject := GetPhysicalDevice(physicalDevice)
- 
-     features := ?
-     pFeatures[0] = features
--
--    return ?
- }
- 
--cmd VkResult vkGetPhysicalDeviceFormatProperties(
-+cmd void vkGetPhysicalDeviceFormatProperties(
-         VkPhysicalDevice                            physicalDevice,
-         VkFormat                                    format,
-         VkFormatProperties*                         pFormatProperties) {
-@@ -2220,11 +2214,9 @@ cmd VkResult vkGetPhysicalDeviceFormatProperties(
- 
-     formatProperties := ?
-     pFormatProperties[0] = formatProperties
--
--    return ?
- }
- 
--cmd VkResult vkGetPhysicalDeviceImageFormatProperties(
-+cmd void vkGetPhysicalDeviceImageFormatProperties(
-         VkPhysicalDevice                            physicalDevice,
-         VkFormat                                    format,
-         VkImageType                                 type,
-@@ -2236,8 +2228,6 @@ cmd VkResult vkGetPhysicalDeviceImageFormatProperties(
- 
-     imageFormatProperties := ?
-     pImageFormatProperties[0] = imageFormatProperties
--
--    return ?
- }
- 
- 
-@@ -2340,7 +2330,7 @@ cmd VkResult vkEnumerateDeviceExtensionProperties(
- // Queue functions
- 
- @threadSafety("system")
--cmd VkResult vkGetDeviceQueue(
-+cmd void vkGetDeviceQueue(
-         VkDevice                                    device,
-         u32                                         queueFamilyIndex,
-         u32                                         queueIndex,
-@@ -2353,8 +2343,6 @@ cmd VkResult vkGetDeviceQueue(
-     if !(queue in State.Queues) {
-         State.Queues[queue] = new!QueueObject(device: device)
-     }
--
--    return ?
- }
- 
- @threadSafety("app")
-@@ -2499,7 +2487,7 @@ cmd VkResult vkInvalidateMappedMemoryRanges(
- 
- // Memory management API functions
- 
--cmd VkResult vkGetDeviceMemoryCommitment(
-+cmd void vkGetDeviceMemoryCommitment(
-         VkDevice                                    device,
-         VkDeviceMemory                              memory,
-         VkDeviceSize*                               pCommittedMemoryInBytes) {
-@@ -2512,19 +2500,15 @@ cmd VkResult vkGetDeviceMemoryCommitment(
- 
-     committedMemoryInBytes := ?
-     pCommittedMemoryInBytes[0] = committedMemoryInBytes
--
--    return ?
- }
- 
--cmd VkResult vkGetBufferMemoryRequirements(
-+cmd void vkGetBufferMemoryRequirements(
-         VkDevice                                    device,
-         VkBuffer                                    buffer,
-         VkMemoryRequirements*                       pMemoryRequirements) {
-     deviceObject := GetDevice(device)
-     bufferObject := GetBuffer(buffer)
-     assert(bufferObject.device == device)
--
--    return ?
- }
- 
- cmd VkResult vkBindBufferMemory(
-@@ -2554,15 +2538,13 @@ cmd VkResult vkBindBufferMemory(
-     return ?
- }
- 
--cmd VkResult vkGetImageMemoryRequirements(
-+cmd void vkGetImageMemoryRequirements(
-         VkDevice                                    device,
-         VkImage                                     image,
-         VkMemoryRequirements*                       pMemoryRequirements) {
-     deviceObject := GetDevice(device)
-     imageObject := GetImage(image)
-     assert(imageObject.device == device)
--
--    return ?
- }
- 
- cmd VkResult vkBindImageMemory(
-@@ -2592,7 +2574,7 @@ cmd VkResult vkBindImageMemory(
-     return ?
- }
- 
--cmd VkResult vkGetImageSparseMemoryRequirements(
-+cmd void vkGetImageSparseMemoryRequirements(
-         VkDevice                                    device,
-         VkImage                                     image,
-         u32*                                        pNumRequirements,
-@@ -2600,11 +2582,9 @@ cmd VkResult vkGetImageSparseMemoryRequirements(
-     deviceObject := GetDevice(device)
-     imageObject := GetImage(image)
-     assert(imageObject.device == device)
--
--    return ?
- }
- 
--cmd VkResult vkGetPhysicalDeviceSparseImageFormatProperties(
-+cmd void vkGetPhysicalDeviceSparseImageFormatProperties(
-         VkPhysicalDevice                            physicalDevice,
-         VkFormat                                    format,
-         VkImageType                                 type,
-@@ -2614,8 +2594,6 @@ cmd VkResult vkGetPhysicalDeviceSparseImageFormatProperties(
-         u32*                                        pNumProperties,
-         VkSparseImageFormatProperties*              pProperties) {
-     physicalDeviceObject := GetPhysicalDevice(physicalDevice)
--
--    return ?
- }
- 
- cmd VkResult vkQueueBindSparseBufferMemory(
-@@ -2985,7 +2963,7 @@ cmd void vkDestroyImage(
-     State.Images[image] = null
- }
- 
--cmd VkResult vkGetImageSubresourceLayout(
-+cmd void vkGetImageSubresourceLayout(
-         VkDevice                                    device,
-         VkImage                                     image,
-         const VkImageSubresource*                   pSubresource,
-@@ -2993,8 +2971,6 @@ cmd VkResult vkGetImageSubresourceLayout(
-     deviceObject := GetDevice(device)
-     imageObject := GetImage(image)
-     assert(imageObject.device == device)
--
--    return ?
- }
- 
- 
-@@ -3122,6 +3098,7 @@ cmd platform.size_t vkGetPipelineCacheSize(
- cmd VkResult vkGetPipelineCacheData(
-         VkDevice                                    device,
-         VkPipelineCache                             pipelineCache,
-+        platform.size_t                             dataSize,
-         void*                                       pData) {
-     deviceObject := GetDevice(device)
-     pipelineCacheObject := GetPipelineCache(pipelineCache)
-@@ -3458,7 +3435,7 @@ cmd void vkDestroyRenderPass(
-     State.RenderPasses[renderPass] = null
- }
- 
--cmd VkResult vkGetRenderAreaGranularity(
-+cmd void vkGetRenderAreaGranularity(
-         VkDevice                                    device,
-         VkRenderPass                                renderPass,
-         VkExtent2D*                                 pGranularity) {
-@@ -3467,8 +3444,6 @@ cmd VkResult vkGetRenderAreaGranularity(
- 
-     granularity := ?
-     pGranularity[0] = granularity
--
--    return ?
- }
- 
- // Command pool functions
-diff --git a/vulkan/include/vulkan/vulkan.h b/vulkan/include/vulkan/vulkan.h
-index 124d088..eb427f8 100644
---- a/vulkan/include/vulkan/vulkan.h
-+++ b/vulkan/include/vulkan/vulkan.h
-@@ -41,7 +41,7 @@ extern "C" {
-     ((major << 22) | (minor << 12) | patch)
- 
- // Vulkan API version supported by this file
--#define VK_API_VERSION VK_MAKE_VERSION(0, 177, 0)
-+#define VK_API_VERSION VK_MAKE_VERSION(0, 179, 0)
- 
- 
- #if defined(__cplusplus) && ((defined(_MSC_VER) && _MSC_VER >= 1800) || __cplusplus >= 201103L)
-@@ -152,7 +152,8 @@ typedef enum {
-     VK_ERROR_MEMORY_MAP_FAILED = -5,
-     VK_ERROR_LAYER_NOT_PRESENT = -6,
-     VK_ERROR_EXTENSION_NOT_PRESENT = -7,
--    VK_ERROR_INCOMPATIBLE_DRIVER = -8,
-+    VK_ERROR_FEATURE_NOT_PRESENT = -8,
-+    VK_ERROR_INCOMPATIBLE_DRIVER = -9,
-     VK_RESULT_BEGIN_RANGE = VK_ERROR_INCOMPATIBLE_DRIVER,
-     VK_RESULT_END_RANGE = VK_INCOMPLETE,
-     VK_RESULT_NUM = (VK_INCOMPLETE - VK_ERROR_INCOMPATIBLE_DRIVER + 1),
-@@ -2099,12 +2100,12 @@ typedef struct {
- typedef VkResult (VKAPI *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, VkInstance* pInstance);
- typedef void (VKAPI *PFN_vkDestroyInstance)(VkInstance instance);
- typedef VkResult (VKAPI *PFN_vkEnumeratePhysicalDevices)(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);
--typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceFeatures)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures);
--typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties);
--typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties);
--typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties);
--typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceQueueFamilyProperties)(VkPhysicalDevice physicalDevice, uint32_t* pCount, VkQueueFamilyProperties* pQueueFamilyProperties);
--typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceMemoryProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties);
-+typedef void (VKAPI *PFN_vkGetPhysicalDeviceFeatures)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures);
-+typedef void (VKAPI *PFN_vkGetPhysicalDeviceFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties);
-+typedef void (VKAPI *PFN_vkGetPhysicalDeviceImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties);
-+typedef void (VKAPI *PFN_vkGetPhysicalDeviceProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties);
-+typedef void (VKAPI *PFN_vkGetPhysicalDeviceQueueFamilyProperties)(VkPhysicalDevice physicalDevice, uint32_t* pCount, VkQueueFamilyProperties* pQueueFamilyProperties);
-+typedef void (VKAPI *PFN_vkGetPhysicalDeviceMemoryProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties);
- typedef PFN_vkVoidFunction (VKAPI *PFN_vkGetInstanceProcAddr)(VkInstance instance, const char* pName);
- typedef PFN_vkVoidFunction (VKAPI *PFN_vkGetDeviceProcAddr)(VkDevice device, const char* pName);
- typedef VkResult (VKAPI *PFN_vkCreateDevice)(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, VkDevice* pDevice);
-@@ -2113,7 +2114,7 @@ typedef VkResult (VKAPI *PFN_vkEnumerateInstanceExtensionProperties)(const char*
- typedef VkResult (VKAPI *PFN_vkEnumerateDeviceExtensionProperties)(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pCount, VkExtensionProperties* pProperties);
- typedef VkResult (VKAPI *PFN_vkEnumerateInstanceLayerProperties)(uint32_t* pCount, VkLayerProperties* pProperties);
- typedef VkResult (VKAPI *PFN_vkEnumerateDeviceLayerProperties)(VkPhysicalDevice physicalDevice, uint32_t* pCount, VkLayerProperties* pProperties);
--typedef VkResult (VKAPI *PFN_vkGetDeviceQueue)(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue);
-+typedef void (VKAPI *PFN_vkGetDeviceQueue)(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue);
- typedef VkResult (VKAPI *PFN_vkQueueSubmit)(VkQueue queue, uint32_t cmdBufferCount, const VkCmdBuffer* pCmdBuffers, VkFence fence);
- typedef VkResult (VKAPI *PFN_vkQueueWaitIdle)(VkQueue queue);
- typedef VkResult (VKAPI *PFN_vkDeviceWaitIdle)(VkDevice device);
-@@ -2123,13 +2124,13 @@ typedef VkResult (VKAPI *PFN_vkMapMemory)(VkDevice device, VkDeviceMemory mem, V
- typedef void (VKAPI *PFN_vkUnmapMemory)(VkDevice device, VkDeviceMemory mem);
- typedef VkResult (VKAPI *PFN_vkFlushMappedMemoryRanges)(VkDevice device, uint32_t memRangeCount, const VkMappedMemoryRange* pMemRanges);
- typedef VkResult (VKAPI *PFN_vkInvalidateMappedMemoryRanges)(VkDevice device, uint32_t memRangeCount, const VkMappedMemoryRange* pMemRanges);
--typedef VkResult (VKAPI *PFN_vkGetDeviceMemoryCommitment)(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes);
-+typedef void (VKAPI *PFN_vkGetDeviceMemoryCommitment)(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes);
- typedef VkResult (VKAPI *PFN_vkBindBufferMemory)(VkDevice device, VkBuffer buffer, VkDeviceMemory mem, VkDeviceSize memOffset);
- typedef VkResult (VKAPI *PFN_vkBindImageMemory)(VkDevice device, VkImage image, VkDeviceMemory mem, VkDeviceSize memOffset);
--typedef VkResult (VKAPI *PFN_vkGetBufferMemoryRequirements)(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements);
--typedef VkResult (VKAPI *PFN_vkGetImageMemoryRequirements)(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements);
--typedef VkResult (VKAPI *PFN_vkGetImageSparseMemoryRequirements)(VkDevice device, VkImage image, uint32_t* pNumRequirements, VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
--typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceSparseImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, uint32_t samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pNumProperties, VkSparseImageFormatProperties* pProperties);
-+typedef void (VKAPI *PFN_vkGetBufferMemoryRequirements)(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements);
-+typedef void (VKAPI *PFN_vkGetImageMemoryRequirements)(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements);
-+typedef void (VKAPI *PFN_vkGetImageSparseMemoryRequirements)(VkDevice device, VkImage image, uint32_t* pNumRequirements, VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
-+typedef void (VKAPI *PFN_vkGetPhysicalDeviceSparseImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, uint32_t samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pNumProperties, VkSparseImageFormatProperties* pProperties);
- typedef VkResult (VKAPI *PFN_vkQueueBindSparseBufferMemory)(VkQueue queue, VkBuffer buffer, uint32_t numBindings, const VkSparseMemoryBindInfo* pBindInfo);
- typedef VkResult (VKAPI *PFN_vkQueueBindSparseImageOpaqueMemory)(VkQueue queue, VkImage image, uint32_t numBindings, const VkSparseMemoryBindInfo* pBindInfo);
- typedef VkResult (VKAPI *PFN_vkQueueBindSparseImageMemory)(VkQueue queue, VkImage image, uint32_t numBindings, const VkSparseImageMemoryBindInfo* pBindInfo);
-@@ -2156,7 +2157,7 @@ typedef VkResult (VKAPI *PFN_vkCreateBufferView)(VkDevice device, const VkBuffer
- typedef void (VKAPI *PFN_vkDestroyBufferView)(VkDevice device, VkBufferView bufferView);
- typedef VkResult (VKAPI *PFN_vkCreateImage)(VkDevice device, const VkImageCreateInfo* pCreateInfo, VkImage* pImage);
- typedef void (VKAPI *PFN_vkDestroyImage)(VkDevice device, VkImage image);
--typedef VkResult (VKAPI *PFN_vkGetImageSubresourceLayout)(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout);
-+typedef void (VKAPI *PFN_vkGetImageSubresourceLayout)(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout);
- typedef VkResult (VKAPI *PFN_vkCreateImageView)(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, VkImageView* pView);
- typedef void (VKAPI *PFN_vkDestroyImageView)(VkDevice device, VkImageView imageView);
- typedef VkResult (VKAPI *PFN_vkCreateShaderModule)(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, VkShaderModule* pShaderModule);
-@@ -2166,7 +2167,7 @@ typedef void (VKAPI *PFN_vkDestroyShader)(VkDevice device, VkShader shader);
- typedef VkResult (VKAPI *PFN_vkCreatePipelineCache)(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, VkPipelineCache* pPipelineCache);
- typedef void (VKAPI *PFN_vkDestroyPipelineCache)(VkDevice device, VkPipelineCache pipelineCache);
- typedef size_t (VKAPI *PFN_vkGetPipelineCacheSize)(VkDevice device, VkPipelineCache pipelineCache);
--typedef VkResult (VKAPI *PFN_vkGetPipelineCacheData)(VkDevice device, VkPipelineCache pipelineCache, void* pData);
-+typedef VkResult (VKAPI *PFN_vkGetPipelineCacheData)(VkDevice device, VkPipelineCache pipelineCache, size_t dataSize, void* pData);
- typedef VkResult (VKAPI *PFN_vkMergePipelineCaches)(VkDevice device, VkPipelineCache destCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches);
- typedef VkResult (VKAPI *PFN_vkCreateGraphicsPipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t count, const VkGraphicsPipelineCreateInfo* pCreateInfos, VkPipeline* pPipelines);
- typedef VkResult (VKAPI *PFN_vkCreateComputePipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t count, const VkComputePipelineCreateInfo* pCreateInfos, VkPipeline* pPipelines);
-@@ -2187,7 +2188,7 @@ typedef VkResult (VKAPI *PFN_vkCreateFramebuffer)(VkDevice device, const VkFrame
- typedef void (VKAPI *PFN_vkDestroyFramebuffer)(VkDevice device, VkFramebuffer framebuffer);
- typedef VkResult (VKAPI *PFN_vkCreateRenderPass)(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, VkRenderPass* pRenderPass);
- typedef void (VKAPI *PFN_vkDestroyRenderPass)(VkDevice device, VkRenderPass renderPass);
--typedef VkResult (VKAPI *PFN_vkGetRenderAreaGranularity)(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity);
-+typedef void (VKAPI *PFN_vkGetRenderAreaGranularity)(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity);
- typedef VkResult (VKAPI *PFN_vkCreateCommandPool)(VkDevice device, const VkCmdPoolCreateInfo* pCreateInfo, VkCmdPool* pCmdPool);
- typedef void (VKAPI *PFN_vkDestroyCommandPool)(VkDevice device, VkCmdPool cmdPool);
- typedef VkResult (VKAPI *PFN_vkResetCommandPool)(VkDevice device, VkCmdPool cmdPool, VkCmdPoolResetFlags flags);
-@@ -2254,16 +2255,16 @@ VkResult VKAPI vkEnumeratePhysicalDevices(
-     uint32_t*                                   pPhysicalDeviceCount,
-     VkPhysicalDevice*                           pPhysicalDevices);
- 
--VkResult VKAPI vkGetPhysicalDeviceFeatures(
-+void VKAPI vkGetPhysicalDeviceFeatures(
-     VkPhysicalDevice                            physicalDevice,
-     VkPhysicalDeviceFeatures*                   pFeatures);
- 
--VkResult VKAPI vkGetPhysicalDeviceFormatProperties(
-+void VKAPI vkGetPhysicalDeviceFormatProperties(
-     VkPhysicalDevice                            physicalDevice,
-     VkFormat                                    format,
-     VkFormatProperties*                         pFormatProperties);
- 
--VkResult VKAPI vkGetPhysicalDeviceImageFormatProperties(
-+void VKAPI vkGetPhysicalDeviceImageFormatProperties(
-     VkPhysicalDevice                            physicalDevice,
-     VkFormat                                    format,
-     VkImageType                                 type,
-@@ -2272,16 +2273,16 @@ VkResult VKAPI vkGetPhysicalDeviceImageFormatProperties(
-     VkImageCreateFlags                          flags,
-     VkImageFormatProperties*                    pImageFormatProperties);
- 
--VkResult VKAPI vkGetPhysicalDeviceProperties(
-+void VKAPI vkGetPhysicalDeviceProperties(
-     VkPhysicalDevice                            physicalDevice,
-     VkPhysicalDeviceProperties*                 pProperties);
- 
--VkResult VKAPI vkGetPhysicalDeviceQueueFamilyProperties(
-+void VKAPI vkGetPhysicalDeviceQueueFamilyProperties(
-     VkPhysicalDevice                            physicalDevice,
-     uint32_t*                                   pCount,
-     VkQueueFamilyProperties*                    pQueueFamilyProperties);
- 
--VkResult VKAPI vkGetPhysicalDeviceMemoryProperties(
-+void VKAPI vkGetPhysicalDeviceMemoryProperties(
-     VkPhysicalDevice                            physicalDevice,
-     VkPhysicalDeviceMemoryProperties*           pMemoryProperties);
- 
-@@ -2321,7 +2322,7 @@ VkResult VKAPI vkEnumerateDeviceLayerProperties(
-     uint32_t*                                   pCount,
-     VkLayerProperties*                          pProperties);
- 
--VkResult VKAPI vkGetDeviceQueue(
-+void VKAPI vkGetDeviceQueue(
-     VkDevice                                    device,
-     uint32_t                                    queueFamilyIndex,
-     uint32_t                                    queueIndex,
-@@ -2370,7 +2371,7 @@ VkResult VKAPI vkInvalidateMappedMemoryRanges(
-     uint32_t                                    memRangeCount,
-     const VkMappedMemoryRange*                  pMemRanges);
- 
--VkResult VKAPI vkGetDeviceMemoryCommitment(
-+void VKAPI vkGetDeviceMemoryCommitment(
-     VkDevice                                    device,
-     VkDeviceMemory                              memory,
-     VkDeviceSize*                               pCommittedMemoryInBytes);
-@@ -2387,23 +2388,23 @@ VkResult VKAPI vkBindImageMemory(
-     VkDeviceMemory                              mem,
-     VkDeviceSize                                memOffset);
- 
--VkResult VKAPI vkGetBufferMemoryRequirements(
-+void VKAPI vkGetBufferMemoryRequirements(
-     VkDevice                                    device,
-     VkBuffer                                    buffer,
-     VkMemoryRequirements*                       pMemoryRequirements);
- 
--VkResult VKAPI vkGetImageMemoryRequirements(
-+void VKAPI vkGetImageMemoryRequirements(
-     VkDevice                                    device,
-     VkImage                                     image,
-     VkMemoryRequirements*                       pMemoryRequirements);
- 
--VkResult VKAPI vkGetImageSparseMemoryRequirements(
-+void VKAPI vkGetImageSparseMemoryRequirements(
-     VkDevice                                    device,
-     VkImage                                     image,
-     uint32_t*                                   pNumRequirements,
-     VkSparseImageMemoryRequirements*            pSparseMemoryRequirements);
- 
--VkResult VKAPI vkGetPhysicalDeviceSparseImageFormatProperties(
-+void VKAPI vkGetPhysicalDeviceSparseImageFormatProperties(
-     VkPhysicalDevice                            physicalDevice,
-     VkFormat                                    format,
-     VkImageType                                 type,
-@@ -2539,7 +2540,7 @@ void VKAPI vkDestroyImage(
-     VkDevice                                    device,
-     VkImage                                     image);
- 
--VkResult VKAPI vkGetImageSubresourceLayout(
-+void VKAPI vkGetImageSubresourceLayout(
-     VkDevice                                    device,
-     VkImage                                     image,
-     const VkImageSubresource*                   pSubresource,
-@@ -2588,6 +2589,7 @@ size_t VKAPI vkGetPipelineCacheSize(
- VkResult VKAPI vkGetPipelineCacheData(
-     VkDevice                                    device,
-     VkPipelineCache                             pipelineCache,
-+    size_t                                      dataSize,
-     void*                                       pData);
- 
- VkResult VKAPI vkMergePipelineCaches(
-@@ -2693,7 +2695,7 @@ void VKAPI vkDestroyRenderPass(
-     VkDevice                                    device,
-     VkRenderPass                                renderPass);
- 
--VkResult VKAPI vkGetRenderAreaGranularity(
-+void VKAPI vkGetRenderAreaGranularity(
-     VkDevice                                    device,
-     VkRenderPass                                renderPass,
-     VkExtent2D*                                 pGranularity);
-diff --git a/vulkan/libvulkan/entry.cpp b/vulkan/libvulkan/entry.cpp
-index 4027f9a..b7c4848 100644
---- a/vulkan/libvulkan/entry.cpp
-+++ b/vulkan/libvulkan/entry.cpp
-@@ -67,33 +67,33 @@ PFN_vkVoidFunction vkGetInstanceProcAddr(VkInstance instance, const char* pName)
- }
- 
- __attribute__((visibility("default")))
--VkResult vkGetPhysicalDeviceProperties(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties) {
--    return GetVtbl(physicalDevice).GetPhysicalDeviceProperties(physicalDevice, pProperties);
-+void vkGetPhysicalDeviceProperties(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties) {
-+    GetVtbl(physicalDevice).GetPhysicalDeviceProperties(physicalDevice, pProperties);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkGetPhysicalDeviceQueueFamilyProperties(VkPhysicalDevice physicalDevice, uint32_t* pCount, VkQueueFamilyProperties* pQueueFamilyProperties) {
--    return GetVtbl(physicalDevice).GetPhysicalDeviceQueueFamilyProperties(physicalDevice, pCount, pQueueFamilyProperties);
-+void vkGetPhysicalDeviceQueueFamilyProperties(VkPhysicalDevice physicalDevice, uint32_t* pCount, VkQueueFamilyProperties* pQueueFamilyProperties) {
-+    GetVtbl(physicalDevice).GetPhysicalDeviceQueueFamilyProperties(physicalDevice, pCount, pQueueFamilyProperties);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkGetPhysicalDeviceMemoryProperties(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties) {
--    return GetVtbl(physicalDevice).GetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties);
-+void vkGetPhysicalDeviceMemoryProperties(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties) {
-+    GetVtbl(physicalDevice).GetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkGetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures) {
--    return GetVtbl(physicalDevice).GetPhysicalDeviceFeatures(physicalDevice, pFeatures);
-+void vkGetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures) {
-+    GetVtbl(physicalDevice).GetPhysicalDeviceFeatures(physicalDevice, pFeatures);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkGetPhysicalDeviceFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties) {
--    return GetVtbl(physicalDevice).GetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties);
-+void vkGetPhysicalDeviceFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties) {
-+    GetVtbl(physicalDevice).GetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkGetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties) {
--    return GetVtbl(physicalDevice).GetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties);
-+void vkGetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties) {
-+    GetVtbl(physicalDevice).GetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties);
- }
- 
- __attribute__((visibility("default")))
-@@ -127,8 +127,8 @@ VkResult vkEnumerateDeviceExtensionProperties(VkPhysicalDevice physicalDevice, c
- }
- 
- __attribute__((visibility("default")))
--VkResult vkGetDeviceQueue(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue) {
--    return vulkan::GetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue);
-+void vkGetDeviceQueue(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue) {
-+    vulkan::GetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue);
- }
- 
- __attribute__((visibility("default")))
-@@ -177,13 +177,13 @@ VkResult vkInvalidateMappedMemoryRanges(VkDevice device, uint32_t memRangeCount,
- }
- 
- __attribute__((visibility("default")))
--VkResult vkGetDeviceMemoryCommitment(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes) {
--    return GetVtbl(device).GetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes);
-+void vkGetDeviceMemoryCommitment(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes) {
-+    GetVtbl(device).GetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkGetBufferMemoryRequirements(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements) {
--    return GetVtbl(device).GetBufferMemoryRequirements(device, buffer, pMemoryRequirements);
-+void vkGetBufferMemoryRequirements(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements) {
-+    GetVtbl(device).GetBufferMemoryRequirements(device, buffer, pMemoryRequirements);
- }
- 
- __attribute__((visibility("default")))
-@@ -192,8 +192,8 @@ VkResult vkBindBufferMemory(VkDevice device, VkBuffer buffer, VkDeviceMemory mem
- }
- 
- __attribute__((visibility("default")))
--VkResult vkGetImageMemoryRequirements(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements) {
--    return GetVtbl(device).GetImageMemoryRequirements(device, image, pMemoryRequirements);
-+void vkGetImageMemoryRequirements(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements) {
-+    GetVtbl(device).GetImageMemoryRequirements(device, image, pMemoryRequirements);
- }
- 
- __attribute__((visibility("default")))
-@@ -202,13 +202,13 @@ VkResult vkBindImageMemory(VkDevice device, VkImage image, VkDeviceMemory mem, V
- }
- 
- __attribute__((visibility("default")))
--VkResult vkGetImageSparseMemoryRequirements(VkDevice device, VkImage image, uint32_t* pNumRequirements, VkSparseImageMemoryRequirements* pSparseMemoryRequirements) {
--    return GetVtbl(device).GetImageSparseMemoryRequirements(device, image, pNumRequirements, pSparseMemoryRequirements);
-+void vkGetImageSparseMemoryRequirements(VkDevice device, VkImage image, uint32_t* pNumRequirements, VkSparseImageMemoryRequirements* pSparseMemoryRequirements) {
-+    GetVtbl(device).GetImageSparseMemoryRequirements(device, image, pNumRequirements, pSparseMemoryRequirements);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkGetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, uint32_t samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pNumProperties, VkSparseImageFormatProperties* pProperties) {
--    return GetVtbl(physicalDevice).GetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pNumProperties, pProperties);
-+void vkGetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, uint32_t samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pNumProperties, VkSparseImageFormatProperties* pProperties) {
-+    GetVtbl(physicalDevice).GetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pNumProperties, pProperties);
- }
- 
- __attribute__((visibility("default")))
-@@ -342,8 +342,8 @@ void vkDestroyImage(VkDevice device, VkImage image) {
- }
- 
- __attribute__((visibility("default")))
--VkResult vkGetImageSubresourceLayout(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout) {
--    return GetVtbl(device).GetImageSubresourceLayout(device, image, pSubresource, pLayout);
-+void vkGetImageSubresourceLayout(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout) {
-+    GetVtbl(device).GetImageSubresourceLayout(device, image, pSubresource, pLayout);
- }
- 
- __attribute__((visibility("default")))
-@@ -392,8 +392,8 @@ size_t vkGetPipelineCacheSize(VkDevice device, VkPipelineCache pipelineCache) {
- }
- 
- __attribute__((visibility("default")))
--VkResult vkGetPipelineCacheData(VkDevice device, VkPipelineCache pipelineCache, void* pData) {
--    return GetVtbl(device).GetPipelineCacheData(device, pipelineCache, pData);
-+VkResult vkGetPipelineCacheData(VkDevice device, VkPipelineCache pipelineCache, size_t dataSize, void* pData) {
-+    return GetVtbl(device).GetPipelineCacheData(device, pipelineCache, dataSize, pData);
- }
- 
- __attribute__((visibility("default")))
-@@ -497,8 +497,8 @@ void vkDestroyRenderPass(VkDevice device, VkRenderPass renderPass) {
- }
- 
- __attribute__((visibility("default")))
--VkResult vkGetRenderAreaGranularity(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity) {
--    return GetVtbl(device).GetRenderAreaGranularity(device, renderPass, pGranularity);
-+void vkGetRenderAreaGranularity(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity) {
-+    GetVtbl(device).GetRenderAreaGranularity(device, renderPass, pGranularity);
- }
- 
- __attribute__((visibility("default")))
-diff --git a/vulkan/libvulkan/loader.cpp b/vulkan/libvulkan/loader.cpp
-index fe33114..ba2f5cf 100644
---- a/vulkan/libvulkan/loader.cpp
-+++ b/vulkan/libvulkan/loader.cpp
-@@ -649,21 +649,19 @@ VkResult EnumeratePhysicalDevicesBottom(VkInstance instance,
-     return VK_SUCCESS;
- }
- 
--VkResult GetPhysicalDeviceFeaturesBottom(VkPhysicalDevice pdev,
--                                         VkPhysicalDeviceFeatures* features) {
--    return GetVtbl(pdev)
--        ->instance->drv.vtbl.GetPhysicalDeviceFeatures(pdev, features);
-+void GetPhysicalDeviceFeaturesBottom(VkPhysicalDevice pdev,
-+                                     VkPhysicalDeviceFeatures* features) {
-+    GetVtbl(pdev)->instance->drv.vtbl.GetPhysicalDeviceFeatures(pdev, features);
- }
- 
--VkResult GetPhysicalDeviceFormatPropertiesBottom(
--    VkPhysicalDevice pdev,
--    VkFormat format,
--    VkFormatProperties* properties) {
--    return GetVtbl(pdev)->instance->drv.vtbl.GetPhysicalDeviceFormatProperties(
-+void GetPhysicalDeviceFormatPropertiesBottom(VkPhysicalDevice pdev,
-+                                             VkFormat format,
-+                                             VkFormatProperties* properties) {
-+    GetVtbl(pdev)->instance->drv.vtbl.GetPhysicalDeviceFormatProperties(
-         pdev, format, properties);
- }
- 
--VkResult GetPhysicalDeviceImageFormatPropertiesBottom(
-+void GetPhysicalDeviceImageFormatPropertiesBottom(
-     VkPhysicalDevice pdev,
-     VkFormat format,
-     VkImageType type,
-@@ -671,31 +669,28 @@ VkResult GetPhysicalDeviceImageFormatPropertiesBottom(
-     VkImageUsageFlags usage,
-     VkImageCreateFlags flags,
-     VkImageFormatProperties* properties) {
--    return GetVtbl(pdev)
--        ->instance->drv.vtbl.GetPhysicalDeviceImageFormatProperties(
--            pdev, format, type, tiling, usage, flags, properties);
-+    GetVtbl(pdev)->instance->drv.vtbl.GetPhysicalDeviceImageFormatProperties(
-+        pdev, format, type, tiling, usage, flags, properties);
- }
- 
--VkResult GetPhysicalDevicePropertiesBottom(
--    VkPhysicalDevice pdev,
--    VkPhysicalDeviceProperties* properties) {
--    return GetVtbl(pdev)
-+void GetPhysicalDevicePropertiesBottom(VkPhysicalDevice pdev,
-+                                       VkPhysicalDeviceProperties* properties) {
-+    GetVtbl(pdev)
-         ->instance->drv.vtbl.GetPhysicalDeviceProperties(pdev, properties);
- }
- 
--VkResult GetPhysicalDeviceQueueFamilyPropertiesBottom(
-+void GetPhysicalDeviceQueueFamilyPropertiesBottom(
-     VkPhysicalDevice pdev,
-     uint32_t* pCount,
-     VkQueueFamilyProperties* properties) {
--    return GetVtbl(pdev)
--        ->instance->drv.vtbl.GetPhysicalDeviceQueueFamilyProperties(
--            pdev, pCount, properties);
-+    GetVtbl(pdev)->instance->drv.vtbl.GetPhysicalDeviceQueueFamilyProperties(
-+        pdev, pCount, properties);
- }
- 
--VkResult GetPhysicalDeviceMemoryPropertiesBottom(
-+void GetPhysicalDeviceMemoryPropertiesBottom(
-     VkPhysicalDevice pdev,
-     VkPhysicalDeviceMemoryProperties* properties) {
--    return GetVtbl(pdev)->instance->drv.vtbl.GetPhysicalDeviceMemoryProperties(
-+    GetVtbl(pdev)->instance->drv.vtbl.GetPhysicalDeviceMemoryProperties(
-         pdev, properties);
- }
- 
-@@ -815,7 +810,7 @@ VkResult EnumerateDeviceLayerPropertiesBottom(VkPhysicalDevice pdev,
-         pdev, properties_count, properties);
- }
- 
--VkResult GetPhysicalDeviceSparseImageFormatPropertiesBottom(
-+void GetPhysicalDeviceSparseImageFormatPropertiesBottom(
-     VkPhysicalDevice pdev,
-     VkFormat format,
-     VkImageType type,
-@@ -824,7 +819,7 @@ VkResult GetPhysicalDeviceSparseImageFormatPropertiesBottom(
-     VkImageTiling tiling,
-     uint32_t* properties_count,
-     VkSparseImageFormatProperties* properties) {
--    return GetVtbl(pdev)
-+    GetVtbl(pdev)
-         ->instance->drv.vtbl.GetPhysicalDeviceSparseImageFormatProperties(
-             pdev, format, type, samples, usage, tiling, properties_count,
-             properties);
-@@ -1061,25 +1056,20 @@ PFN_vkVoidFunction GetDeviceProcAddr(VkDevice device, const char* name) {
-     return GetSpecificDeviceProcAddr(GetVtbl(device), name);
- }
- 
--VkResult GetDeviceQueue(VkDevice drv_device,
--                        uint32_t family,
--                        uint32_t index,
--                        VkQueue* out_queue) {
-+void GetDeviceQueue(VkDevice drv_device,
-+                    uint32_t family,
-+                    uint32_t index,
-+                    VkQueue* out_queue) {
-     VkResult result;
-     VkQueue queue;
-     const DeviceVtbl* vtbl = GetVtbl(drv_device);
--    result = vtbl->GetDeviceQueue(drv_device, family, index, &queue);
--    if (result != VK_SUCCESS)
--        return result;
-+    vtbl->GetDeviceQueue(drv_device, family, index, &queue);
-     hwvulkan_dispatch_t* dispatch =
-         reinterpret_cast<hwvulkan_dispatch_t*>(queue);
--    if (dispatch->magic != HWVULKAN_DISPATCH_MAGIC && dispatch->vtbl != vtbl) {
-+    if (dispatch->magic != HWVULKAN_DISPATCH_MAGIC && dispatch->vtbl != vtbl)
-         ALOGE("invalid VkQueue dispatch magic: 0x%" PRIxPTR, dispatch->magic);
--        return VK_ERROR_INITIALIZATION_FAILED;
--    }
-     dispatch->vtbl = vtbl;
-     *out_queue = queue;
--    return VK_SUCCESS;
- }
- 
- VkResult CreateCommandBuffer(VkDevice drv_device,
-diff --git a/vulkan/libvulkan/loader.h b/vulkan/libvulkan/loader.h
-index 1ffbdd5..fcaec61 100644
---- a/vulkan/libvulkan/loader.h
-+++ b/vulkan/libvulkan/loader.h
-@@ -221,10 +221,10 @@ VkResult CreateInstance(const VkInstanceCreateInfo* create_info,
-                         VkInstance* instance);
- PFN_vkVoidFunction GetInstanceProcAddr(VkInstance instance, const char* name);
- PFN_vkVoidFunction GetDeviceProcAddr(VkDevice drv_device, const char* name);
--VkResult GetDeviceQueue(VkDevice drv_device,
--                        uint32_t family,
--                        uint32_t index,
--                        VkQueue* out_queue);
-+void GetDeviceQueue(VkDevice drv_device,
-+                    uint32_t family,
-+                    uint32_t index,
-+                    VkQueue* out_queue);
- VkResult CreateCommandBuffer(VkDevice device,
-                              const VkCmdBufferCreateInfo* create_info,
-                              VkCmdBuffer* out_cmdbuf);
-diff --git a/vulkan/libvulkan/swapchain.cpp b/vulkan/libvulkan/swapchain.cpp
-index 53c13a9..02d9515 100644
---- a/vulkan/libvulkan/swapchain.cpp
-+++ b/vulkan/libvulkan/swapchain.cpp
-@@ -311,8 +311,7 @@ VkResult CreateSwapchainKHR(VkDevice device,
-     std::shared_ptr<ANativeWindow> window = InitSharedPtr(
-         device, static_cast<ANativeWindow*>(
-                     reinterpret_cast<const VkSurfaceDescriptionWindowKHR*>(
--                        create_info->pSurfaceDescription)
--                        ->pPlatformWindow));
-+                        create_info->pSurfaceDescription)->pPlatformWindow));
- 
-     // TODO(jessehall): Create and use NATIVE_WINDOW_API_VULKAN.
-     err = native_window_api_connect(window.get(), NATIVE_WINDOW_API_EGL);
-diff --git a/vulkan/nulldrv/null_driver.cpp b/vulkan/nulldrv/null_driver.cpp
-index 8992db4..0d1b468 100644
---- a/vulkan/nulldrv/null_driver.cpp
-+++ b/vulkan/nulldrv/null_driver.cpp
-@@ -265,8 +265,8 @@ VkResult EnumeratePhysicalDevices(VkInstance instance,
-     return VK_SUCCESS;
- }
- 
--VkResult GetPhysicalDeviceProperties(VkPhysicalDevice,
--                                     VkPhysicalDeviceProperties* properties) {
-+void GetPhysicalDeviceProperties(VkPhysicalDevice,
-+                                 VkPhysicalDeviceProperties* properties) {
-     properties->apiVersion = VK_API_VERSION;
-     properties->driverVersion = VK_MAKE_VERSION(0, 0, 1);
-     properties->vendorId = 0;
-@@ -275,26 +275,22 @@ VkResult GetPhysicalDeviceProperties(VkPhysicalDevice,
-     strcpy(properties->deviceName, "Android Vulkan Null Driver");
-     memset(properties->pipelineCacheUUID, 0,
-            sizeof(properties->pipelineCacheUUID));
--    return VK_SUCCESS;
- }
- 
--VkResult GetPhysicalDeviceQueueFamilyProperties(
-+void GetPhysicalDeviceQueueFamilyProperties(
-     VkPhysicalDevice,
-     uint32_t* count,
-     VkQueueFamilyProperties* properties) {
-     if (properties) {
--        if (*count < 1)
--            return VK_INCOMPLETE;
-         properties->queueFlags =
-             VK_QUEUE_GRAPHICS_BIT | VK_QUEUE_COMPUTE_BIT | VK_QUEUE_DMA_BIT;
-         properties->queueCount = 1;
-         properties->timestampValidBits = 64;
-     }
-     *count = 1;
--    return VK_SUCCESS;
- }
- 
--VkResult GetPhysicalDeviceMemoryProperties(
-+void GetPhysicalDeviceMemoryProperties(
-     VkPhysicalDevice,
-     VkPhysicalDeviceMemoryProperties* properties) {
-     properties->memoryTypeCount = 1;
-@@ -304,7 +300,6 @@ VkResult GetPhysicalDeviceMemoryProperties(
-     properties->memoryHeapCount = 1;
-     properties->memoryHeaps[0].size = kMaxDeviceMemory;
-     properties->memoryHeaps[0].flags = VK_MEMORY_HEAP_HOST_LOCAL_BIT;
--    return VK_SUCCESS;
- }
- 
- // -----------------------------------------------------------------------------
-@@ -337,9 +332,8 @@ void DestroyDevice(VkDevice device) {
-     alloc->pfnFree(alloc->pUserData, device);
- }
- 
--VkResult GetDeviceQueue(VkDevice device, uint32_t, uint32_t, VkQueue* queue) {
-+void GetDeviceQueue(VkDevice device, uint32_t, uint32_t, VkQueue* queue) {
-     *queue = &device->queue;
--    return VK_SUCCESS;
- }
- 
- // -----------------------------------------------------------------------------
-@@ -443,14 +437,13 @@ VkResult CreateBuffer(VkDevice device,
-     return VK_SUCCESS;
- }
- 
--VkResult GetBufferMemoryRequirements(VkDevice,
--                                     VkBuffer buffer_handle,
--                                     VkMemoryRequirements* requirements) {
-+void GetBufferMemoryRequirements(VkDevice,
-+                                 VkBuffer buffer_handle,
-+                                 VkMemoryRequirements* requirements) {
-     Buffer* buffer = GetObjectFromHandle(buffer_handle);
-     requirements->size = buffer->size;
-     requirements->alignment = 16;  // allow fast Neon/SSE memcpy
-     requirements->memoryTypeBits = 0x1;
--    return VK_SUCCESS;
- }
- 
- void DestroyBuffer(VkDevice device, VkBuffer buffer_handle) {
-@@ -502,14 +495,13 @@ VkResult CreateImage(VkDevice device,
-     return VK_SUCCESS;
- }
- 
--VkResult GetImageMemoryRequirements(VkDevice,
--                                    VkImage image_handle,
--                                    VkMemoryRequirements* requirements) {
-+void GetImageMemoryRequirements(VkDevice,
-+                                VkImage image_handle,
-+                                VkMemoryRequirements* requirements) {
-     Image* image = GetObjectFromHandle(image_handle);
-     requirements->size = image->size;
-     requirements->alignment = 16;  // allow fast Neon/SSE memcpy
-     requirements->memoryTypeBits = 0x1;
--    return VK_SUCCESS;
- }
- 
- void DestroyImage(VkDevice device, VkImage image_handle) {
-@@ -690,19 +682,16 @@ VkResult QueueSignalReleaseImageANDROID(VkQueue, VkImage, int* fence) {
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wunused-parameter"
- 
--VkResult GetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures) {
-+void GetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures) {
-     ALOGV("TODO: vk%s", __FUNCTION__);
--    return VK_SUCCESS;
- }
- 
--VkResult GetPhysicalDeviceFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties) {
-+void GetPhysicalDeviceFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties) {
-     ALOGV("TODO: vk%s", __FUNCTION__);
--    return VK_SUCCESS;
- }
- 
--VkResult GetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties) {
-+void GetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties) {
-     ALOGV("TODO: vk%s", __FUNCTION__);
--    return VK_SUCCESS;
- }
- 
- VkResult EnumerateInstanceLayerProperties(uint32_t* pCount, VkLayerProperties* pProperties) {
-@@ -747,9 +736,8 @@ VkResult InvalidateMappedMemoryRanges(VkDevice device, uint32_t memRangeCount, c
-     return VK_SUCCESS;
- }
- 
--VkResult GetDeviceMemoryCommitment(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes) {
-+void GetDeviceMemoryCommitment(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes) {
-     ALOGV("TODO: vk%s", __FUNCTION__);
--    return VK_SUCCESS;
- }
- 
- VkResult BindBufferMemory(VkDevice device, VkBuffer buffer, VkDeviceMemory mem, VkDeviceSize memOffset) {
-@@ -760,14 +748,12 @@ VkResult BindImageMemory(VkDevice device, VkImage image, VkDeviceMemory mem, VkD
-     return VK_SUCCESS;
- }
- 
--VkResult GetImageSparseMemoryRequirements(VkDevice device, VkImage image, uint32_t* pNumRequirements, VkSparseImageMemoryRequirements* pSparseMemoryRequirements) {
-+void GetImageSparseMemoryRequirements(VkDevice device, VkImage image, uint32_t* pNumRequirements, VkSparseImageMemoryRequirements* pSparseMemoryRequirements) {
-     ALOGV("TODO: vk%s", __FUNCTION__);
--    return VK_SUCCESS;
- }
- 
--VkResult GetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, uint32_t samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pNumProperties, VkSparseImageFormatProperties* pProperties) {
-+void GetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, uint32_t samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pNumProperties, VkSparseImageFormatProperties* pProperties) {
-     ALOGV("TODO: vk%s", __FUNCTION__);
--    return VK_SUCCESS;
- }
- 
- VkResult QueueBindSparseBufferMemory(VkQueue queue, VkBuffer buffer, uint32_t numBindings, const VkSparseMemoryBindInfo* pBindInfo) {
-@@ -842,9 +828,8 @@ VkResult GetQueryPoolResults(VkDevice device, VkQueryPool queryPool, uint32_t st
- void DestroyBufferView(VkDevice device, VkBufferView bufferView) {
- }
- 
--VkResult GetImageSubresourceLayout(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout) {
-+void GetImageSubresourceLayout(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout) {
-     ALOGV("TODO: vk%s", __FUNCTION__);
--    return VK_SUCCESS;
- }
- 
- void DestroyImageView(VkDevice device, VkImageView imageView) {
-@@ -864,7 +849,7 @@ size_t GetPipelineCacheSize(VkDevice device, VkPipelineCache pipelineCache) {
-     return VK_SUCCESS;
- }
- 
--VkResult GetPipelineCacheData(VkDevice device, VkPipelineCache pipelineCache, void* pData) {
-+VkResult GetPipelineCacheData(VkDevice device, VkPipelineCache pipelineCache, size_t dataSize, void* pData) {
-     ALOGV("TODO: vk%s", __FUNCTION__);
-     return VK_SUCCESS;
- }
-@@ -909,9 +894,8 @@ void DestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer) {
- void DestroyRenderPass(VkDevice device, VkRenderPass renderPass) {
- }
- 
--VkResult GetRenderAreaGranularity(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity) {
-+void GetRenderAreaGranularity(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity) {
-     ALOGV("TODO: vk%s", __FUNCTION__);
--    return VK_SUCCESS;
- }
- 
- void DestroyCommandPool(VkDevice device, VkCmdPool cmdPool) {
-diff --git a/vulkan/nulldrv/null_driver.h b/vulkan/nulldrv/null_driver.h
-index 4940148..2679777 100644
---- a/vulkan/nulldrv/null_driver.h
-+++ b/vulkan/nulldrv/null_driver.h
-@@ -29,12 +29,12 @@ PFN_vkVoidFunction LookupDeviceProcAddr(const char* name);
- // clang-format off
- void DestroyInstance(VkInstance instance);
- VkResult EnumeratePhysicalDevices(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);
--VkResult GetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures);
--VkResult GetPhysicalDeviceFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties);
--VkResult GetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties);
--VkResult GetPhysicalDeviceProperties(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties);
--VkResult GetPhysicalDeviceQueueFamilyProperties(VkPhysicalDevice physicalDevice, uint32_t* pCount, VkQueueFamilyProperties* pQueueFamilyProperties);
--VkResult GetPhysicalDeviceMemoryProperties(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties);
-+void GetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures);
-+void GetPhysicalDeviceFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties);
-+void GetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties);
-+void GetPhysicalDeviceProperties(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties);
-+void GetPhysicalDeviceQueueFamilyProperties(VkPhysicalDevice physicalDevice, uint32_t* pCount, VkQueueFamilyProperties* pQueueFamilyProperties);
-+void GetPhysicalDeviceMemoryProperties(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties);
- PFN_vkVoidFunction GetInstanceProcAddr(VkInstance instance, const char* pName);
- PFN_vkVoidFunction GetDeviceProcAddr(VkDevice device, const char* pName);
- VkResult CreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, VkDevice* pDevice);
-@@ -43,7 +43,7 @@ VkResult EnumerateInstanceExtensionProperties(const char* pLayerName, uint32_t*
- VkResult EnumerateDeviceExtensionProperties(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pCount, VkExtensionProperties* pProperties);
- VkResult EnumerateInstanceLayerProperties(uint32_t* pCount, VkLayerProperties* pProperties);
- VkResult EnumerateDeviceLayerProperties(VkPhysicalDevice physicalDevice, uint32_t* pCount, VkLayerProperties* pProperties);
--VkResult GetDeviceQueue(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue);
-+void GetDeviceQueue(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue);
- VkResult QueueSubmit(VkQueue queue, uint32_t cmdBufferCount, const VkCmdBuffer* pCmdBuffers, VkFence fence);
- VkResult QueueWaitIdle(VkQueue queue);
- VkResult DeviceWaitIdle(VkDevice device);
-@@ -53,13 +53,13 @@ VkResult MapMemory(VkDevice device, VkDeviceMemory mem, VkDeviceSize offset, VkD
- void UnmapMemory(VkDevice device, VkDeviceMemory mem);
- VkResult FlushMappedMemoryRanges(VkDevice device, uint32_t memRangeCount, const VkMappedMemoryRange* pMemRanges);
- VkResult InvalidateMappedMemoryRanges(VkDevice device, uint32_t memRangeCount, const VkMappedMemoryRange* pMemRanges);
--VkResult GetDeviceMemoryCommitment(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes);
-+void GetDeviceMemoryCommitment(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes);
- VkResult BindBufferMemory(VkDevice device, VkBuffer buffer, VkDeviceMemory mem, VkDeviceSize memOffset);
- VkResult BindImageMemory(VkDevice device, VkImage image, VkDeviceMemory mem, VkDeviceSize memOffset);
--VkResult GetBufferMemoryRequirements(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements);
--VkResult GetImageMemoryRequirements(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements);
--VkResult GetImageSparseMemoryRequirements(VkDevice device, VkImage image, uint32_t* pNumRequirements, VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
--VkResult GetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, uint32_t samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pNumProperties, VkSparseImageFormatProperties* pProperties);
-+void GetBufferMemoryRequirements(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements);
-+void GetImageMemoryRequirements(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements);
-+void GetImageSparseMemoryRequirements(VkDevice device, VkImage image, uint32_t* pNumRequirements, VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
-+void GetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, uint32_t samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pNumProperties, VkSparseImageFormatProperties* pProperties);
- VkResult QueueBindSparseBufferMemory(VkQueue queue, VkBuffer buffer, uint32_t numBindings, const VkSparseMemoryBindInfo* pBindInfo);
- VkResult QueueBindSparseImageOpaqueMemory(VkQueue queue, VkImage image, uint32_t numBindings, const VkSparseMemoryBindInfo* pBindInfo);
- VkResult QueueBindSparseImageMemory(VkQueue queue, VkImage image, uint32_t numBindings, const VkSparseImageMemoryBindInfo* pBindInfo);
-@@ -86,7 +86,7 @@ VkResult CreateBufferView(VkDevice device, const VkBufferViewCreateInfo* pCreate
- void DestroyBufferView(VkDevice device, VkBufferView bufferView);
- VkResult CreateImage(VkDevice device, const VkImageCreateInfo* pCreateInfo, VkImage* pImage);
- void DestroyImage(VkDevice device, VkImage image);
--VkResult GetImageSubresourceLayout(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout);
-+void GetImageSubresourceLayout(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout);
- VkResult CreateImageView(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, VkImageView* pView);
- void DestroyImageView(VkDevice device, VkImageView imageView);
- VkResult CreateShaderModule(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, VkShaderModule* pShaderModule);
-@@ -96,7 +96,7 @@ void DestroyShader(VkDevice device, VkShader shader);
- VkResult CreatePipelineCache(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, VkPipelineCache* pPipelineCache);
- void DestroyPipelineCache(VkDevice device, VkPipelineCache pipelineCache);
- size_t GetPipelineCacheSize(VkDevice device, VkPipelineCache pipelineCache);
--VkResult GetPipelineCacheData(VkDevice device, VkPipelineCache pipelineCache, void* pData);
-+VkResult GetPipelineCacheData(VkDevice device, VkPipelineCache pipelineCache, size_t dataSize, void* pData);
- VkResult MergePipelineCaches(VkDevice device, VkPipelineCache destCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches);
- VkResult CreateGraphicsPipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t count, const VkGraphicsPipelineCreateInfo* pCreateInfos, VkPipeline* pPipelines);
- VkResult CreateComputePipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t count, const VkComputePipelineCreateInfo* pCreateInfos, VkPipeline* pPipelines);
-@@ -117,7 +117,7 @@ VkResult CreateFramebuffer(VkDevice device, const VkFramebufferCreateInfo* pCrea
- void DestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer);
- VkResult CreateRenderPass(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, VkRenderPass* pRenderPass);
- void DestroyRenderPass(VkDevice device, VkRenderPass renderPass);
--VkResult GetRenderAreaGranularity(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity);
-+void GetRenderAreaGranularity(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity);
- VkResult CreateCommandPool(VkDevice device, const VkCmdPoolCreateInfo* pCreateInfo, VkCmdPool* pCmdPool);
- void DestroyCommandPool(VkDevice device, VkCmdPool cmdPool);
- VkResult ResetCommandPool(VkDevice device, VkCmdPool cmdPool, VkCmdPoolResetFlags flags);
-diff --git a/vulkan/nulldrv/null_driver_gen.cpp b/vulkan/nulldrv/null_driver_gen.cpp
-index 7f6ae8e..e86a795 100644
---- a/vulkan/nulldrv/null_driver_gen.cpp
-+++ b/vulkan/nulldrv/null_driver_gen.cpp
-@@ -31,7 +31,7 @@ struct NameProcEntry {
- };
- 
- template <size_t N>
--PFN_vkVoidFunction LookupProcAddr(const NameProcEntry (&table)[N],
-+PFN_vkVoidFunction LookupProcAddr(const NameProcEntry(&table)[N],
-                                   const char* name) {
-     auto entry = std::lower_bound(table, table + N, name,
-                                   [](const NameProcEntry& e, const char* n) {
-diff --git a/vulkan/tools/vkinfo.cpp b/vulkan/tools/vkinfo.cpp
-index 2af04ad..50c3789 100644
---- a/vulkan/tools/vkinfo.cpp
-+++ b/vulkan/tools/vkinfo.cpp
-@@ -90,9 +90,7 @@ void DumpPhysicalDevice(uint32_t idx, VkPhysicalDevice pdev) {
-     std::ostringstream strbuf;
- 
-     VkPhysicalDeviceProperties props;
--    result = vkGetPhysicalDeviceProperties(pdev, &props);
--    if (result != VK_SUCCESS)
--        die("vkGetPhysicalDeviceProperties", result);
-+    vkGetPhysicalDeviceProperties(pdev, &props);
-     printf("  %u: \"%s\" (%s) %u.%u.%u/%#x [%04x:%04x]\n", idx,
-            props.deviceName, VkPhysicalDeviceTypeStr(props.deviceType),
-            (props.apiVersion >> 22) & 0x3FF, (props.apiVersion >> 12) & 0x3FF,
-@@ -100,9 +98,7 @@ void DumpPhysicalDevice(uint32_t idx, VkPhysicalDevice pdev) {
-            props.deviceId);
- 
-     VkPhysicalDeviceMemoryProperties mem_props;
--    result = vkGetPhysicalDeviceMemoryProperties(pdev, &mem_props);
--    if (result != VK_SUCCESS)
--        die("vkGetPhysicalDeviceMemoryProperties", result);
-+    vkGetPhysicalDeviceMemoryProperties(pdev, &mem_props);
-     for (uint32_t heap = 0; heap < mem_props.memoryHeapCount; heap++) {
-         if ((mem_props.memoryHeaps[heap].flags &
-              VK_MEMORY_HEAP_HOST_LOCAL_BIT) != 0)
-@@ -132,16 +128,12 @@ void DumpPhysicalDevice(uint32_t idx, VkPhysicalDevice pdev) {
-     }
- 
-     uint32_t num_queue_families;
--    result = vkGetPhysicalDeviceQueueFamilyProperties(pdev, &num_queue_families,
--                                                      nullptr);
--    if (result != VK_SUCCESS)
--        die("vkGetPhysicalDeviceQueueFamilyProperties (count)", result);
-+    vkGetPhysicalDeviceQueueFamilyProperties(pdev, &num_queue_families,
-+                                             nullptr);
-     std::vector<VkQueueFamilyProperties> queue_family_properties(
-         num_queue_families);
--    result = vkGetPhysicalDeviceQueueFamilyProperties(
--        pdev, &num_queue_families, queue_family_properties.data());
--    if (result != VK_SUCCESS)
--        die("vkGetPhysicalDeviceQueueFamilyProperties (values)", result);
-+    vkGetPhysicalDeviceQueueFamilyProperties(pdev, &num_queue_families,
-+                                             queue_family_properties.data());
-     for (uint32_t family = 0; family < num_queue_families; family++) {
-         const VkQueueFamilyProperties& qprops = queue_family_properties[family];
-         const char* sep = "";
--- 
-2.6.0.rc2.230.g3dd15c0
-
diff --git a/vulkan/patches/frameworks_native-sdk_0.10/0004-vulkan-Update-from-version-0.179.0-to-0.180.0.patch b/vulkan/patches/frameworks_native-sdk_0.10/0004-vulkan-Update-from-version-0.179.0-to-0.180.0.patch
deleted file mode 100644
index 59256d2..0000000
--- a/vulkan/patches/frameworks_native-sdk_0.10/0004-vulkan-Update-from-version-0.179.0-to-0.180.0.patch
+++ /dev/null
@@ -1,186 +0,0 @@
-From 2b2221bd4c5cbc2580bf7b4e487bffe36fd25c4a Mon Sep 17 00:00:00 2001
-From: Jesse Hall <jessehall@google.com>
-Date: Thu, 19 Nov 2015 22:30:07 -0800
-Subject: [PATCH] vulkan: Update from version 0.179.0 to 0.180.0
-
-Change-Id: I2cbf4a8b065e8150734d76d614ab0850bc8324dc
----
- vulkan/api/vulkan.api          | 33 +++++++++++++++++++++------------
- vulkan/include/vulkan/vulkan.h | 19 ++++++++++++++-----
- vulkan/libvulkan/entry.cpp     |  4 ++--
- vulkan/nulldrv/null_driver.cpp |  2 +-
- vulkan/nulldrv/null_driver.h   |  2 +-
- 5 files changed, 39 insertions(+), 21 deletions(-)
-
-diff --git a/vulkan/api/vulkan.api b/vulkan/api/vulkan.api
-index 7844f63..669a64e 100644
---- a/vulkan/api/vulkan.api
-+++ b/vulkan/api/vulkan.api
-@@ -27,7 +27,7 @@ import platform "platform.api"
- 
- // API version (major.minor.patch)
- define VERSION_MAJOR 0
--define VERSION_MINOR 179
-+define VERSION_MINOR 180
- define VERSION_PATCH 0
- 
- // API limits
-@@ -1058,6 +1058,15 @@ class VkLayerProperties {
-     char[VK_MAX_DESCRIPTION]                    description        /// Free-form description of the layer
- }
- 
-+class VkSubmitInfo {
-+    u32                                         waitSemCount
-+    const VkSemaphore*                          pWaitSemaphores
-+    u32                                         cmdBufferCount
-+    const VkCmdBuffer*                          pCommandBuffers
-+    u32                                         signalSemCount
-+    const VkSemaphore*                          pSignalSemaphores
-+}
-+
- class VkApplicationInfo {
-     VkStructureType                             sType              /// Type of structure. Should be VK_STRUCTURE_TYPE_APPLICATION_INFO
-     const void*                                 pNext              /// Next structure in chain
-@@ -2348,8 +2357,8 @@ cmd void vkGetDeviceQueue(
- @threadSafety("app")
- cmd VkResult vkQueueSubmit(
-         VkQueue                                     queue,
--        u32                                         cmdBufferCount,
--        const VkCmdBuffer*                          pCmdBuffers,
-+        u32                                         submitCount,
-+        const VkSubmitInfo*                         pSubmitInfo,
-         VkFence                                     fence) {
-     queueObject := GetQueue(queue)
- 
-@@ -2358,15 +2367,15 @@ cmd VkResult vkQueueSubmit(
-         assert(fenceObject.device == queueObject.device)
-     }
- 
--    cmdBuffers := pCmdBuffers[0:cmdBufferCount]
--    for i in (0 .. cmdBufferCount) {
--        cmdBuffer := cmdBuffers[i]
--        cmdBufferObject := GetCmdBuffer(cmdBuffer)
--        assert(cmdBufferObject.device == queueObject.device)
--
--        validate("QueueCheck", cmdBufferObject.queueFlags in queueObject.flags,
--            "vkQueueSubmit: enqueued cmdBuffer requires missing queue capabilities.")
--    }
-+    // cmdBuffers := pCmdBuffers[0:cmdBufferCount]
-+    // for i in (0 .. cmdBufferCount) {
-+    //    cmdBuffer := cmdBuffers[i]
-+    //    cmdBufferObject := GetCmdBuffer(cmdBuffer)
-+    //    assert(cmdBufferObject.device == queueObject.device)
-+    //
-+    //    validate("QueueCheck", cmdBufferObject.queueFlags in queueObject.flags,
-+    //        "vkQueueSubmit: enqueued cmdBuffer requires missing queue capabilities.")
-+    // }
- 
-     return ?
- }
-diff --git a/vulkan/include/vulkan/vulkan.h b/vulkan/include/vulkan/vulkan.h
-index eb427f8..3706b34 100644
---- a/vulkan/include/vulkan/vulkan.h
-+++ b/vulkan/include/vulkan/vulkan.h
-@@ -41,7 +41,7 @@ extern "C" {
-     ((major << 22) | (minor << 12) | patch)
- 
- // Vulkan API version supported by this file
--#define VK_API_VERSION VK_MAKE_VERSION(0, 179, 0)
-+#define VK_API_VERSION VK_MAKE_VERSION(0, 180, 0)
- 
- 
- #if defined(__cplusplus) && ((defined(_MSC_VER) && _MSC_VER >= 1800) || __cplusplus >= 201103L)
-@@ -97,12 +97,12 @@ VK_DEFINE_HANDLE(VkInstance)
- VK_DEFINE_HANDLE(VkPhysicalDevice)
- VK_DEFINE_HANDLE(VkDevice)
- VK_DEFINE_HANDLE(VkQueue)
-+VK_DEFINE_NONDISP_HANDLE(VkSemaphore)
- VK_DEFINE_HANDLE(VkCmdBuffer)
- VK_DEFINE_NONDISP_HANDLE(VkFence)
- VK_DEFINE_NONDISP_HANDLE(VkDeviceMemory)
- VK_DEFINE_NONDISP_HANDLE(VkBuffer)
- VK_DEFINE_NONDISP_HANDLE(VkImage)
--VK_DEFINE_NONDISP_HANDLE(VkSemaphore)
- VK_DEFINE_NONDISP_HANDLE(VkEvent)
- VK_DEFINE_NONDISP_HANDLE(VkQueryPool)
- VK_DEFINE_NONDISP_HANDLE(VkBufferView)
-@@ -1384,6 +1384,15 @@ typedef struct {
- } VkLayerProperties;
- 
- typedef struct {
-+    uint32_t                                    waitSemCount;
-+    const VkSemaphore*                          pWaitSemaphores;
-+    uint32_t                                    cmdBufferCount;
-+    const VkCmdBuffer*                          pCommandBuffers;
-+    uint32_t                                    signalSemCount;
-+    const VkSemaphore*                          pSignalSemaphores;
-+} VkSubmitInfo;
-+
-+typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkDeviceSize                                allocationSize;
-@@ -2115,7 +2124,7 @@ typedef VkResult (VKAPI *PFN_vkEnumerateDeviceExtensionProperties)(VkPhysicalDev
- typedef VkResult (VKAPI *PFN_vkEnumerateInstanceLayerProperties)(uint32_t* pCount, VkLayerProperties* pProperties);
- typedef VkResult (VKAPI *PFN_vkEnumerateDeviceLayerProperties)(VkPhysicalDevice physicalDevice, uint32_t* pCount, VkLayerProperties* pProperties);
- typedef void (VKAPI *PFN_vkGetDeviceQueue)(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue);
--typedef VkResult (VKAPI *PFN_vkQueueSubmit)(VkQueue queue, uint32_t cmdBufferCount, const VkCmdBuffer* pCmdBuffers, VkFence fence);
-+typedef VkResult (VKAPI *PFN_vkQueueSubmit)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmitInfo, VkFence fence);
- typedef VkResult (VKAPI *PFN_vkQueueWaitIdle)(VkQueue queue);
- typedef VkResult (VKAPI *PFN_vkDeviceWaitIdle)(VkDevice device);
- typedef VkResult (VKAPI *PFN_vkAllocMemory)(VkDevice device, const VkMemoryAllocInfo* pAllocInfo, VkDeviceMemory* pMem);
-@@ -2330,8 +2339,8 @@ void VKAPI vkGetDeviceQueue(
- 
- VkResult VKAPI vkQueueSubmit(
-     VkQueue                                     queue,
--    uint32_t                                    cmdBufferCount,
--    const VkCmdBuffer*                          pCmdBuffers,
-+    uint32_t                                    submitCount,
-+    const VkSubmitInfo*                         pSubmitInfo,
-     VkFence                                     fence);
- 
- VkResult VKAPI vkQueueWaitIdle(
-diff --git a/vulkan/libvulkan/entry.cpp b/vulkan/libvulkan/entry.cpp
-index b7c4848..2bf6aae 100644
---- a/vulkan/libvulkan/entry.cpp
-+++ b/vulkan/libvulkan/entry.cpp
-@@ -132,8 +132,8 @@ void vkGetDeviceQueue(VkDevice device, uint32_t queueFamilyIndex, uint32_t queue
- }
- 
- __attribute__((visibility("default")))
--VkResult vkQueueSubmit(VkQueue queue, uint32_t cmdBufferCount, const VkCmdBuffer* pCmdBuffers, VkFence fence) {
--    return GetVtbl(queue).QueueSubmit(queue, cmdBufferCount, pCmdBuffers, fence);
-+VkResult vkQueueSubmit(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmitInfo, VkFence fence) {
-+    return GetVtbl(queue).QueueSubmit(queue, submitCount, pSubmitInfo, fence);
- }
- 
- __attribute__((visibility("default")))
-diff --git a/vulkan/nulldrv/null_driver.cpp b/vulkan/nulldrv/null_driver.cpp
-index 0d1b468..2bef297 100644
---- a/vulkan/nulldrv/null_driver.cpp
-+++ b/vulkan/nulldrv/null_driver.cpp
-@@ -709,7 +709,7 @@ VkResult EnumerateDeviceExtensionProperties(VkPhysicalDevice physicalDevice, con
-     return VK_SUCCESS;
- }
- 
--VkResult QueueSubmit(VkQueue queue, uint32_t cmdBufferCount, const VkCmdBuffer* pCmdBuffers, VkFence fence) {
-+VkResult QueueSubmit(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmitInfo, VkFence fence) {
-     return VK_SUCCESS;
- }
- 
-diff --git a/vulkan/nulldrv/null_driver.h b/vulkan/nulldrv/null_driver.h
-index 2679777..a1d1e05 100644
---- a/vulkan/nulldrv/null_driver.h
-+++ b/vulkan/nulldrv/null_driver.h
-@@ -44,7 +44,7 @@ VkResult EnumerateDeviceExtensionProperties(VkPhysicalDevice physicalDevice, con
- VkResult EnumerateInstanceLayerProperties(uint32_t* pCount, VkLayerProperties* pProperties);
- VkResult EnumerateDeviceLayerProperties(VkPhysicalDevice physicalDevice, uint32_t* pCount, VkLayerProperties* pProperties);
- void GetDeviceQueue(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue);
--VkResult QueueSubmit(VkQueue queue, uint32_t cmdBufferCount, const VkCmdBuffer* pCmdBuffers, VkFence fence);
-+VkResult QueueSubmit(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmitInfo, VkFence fence);
- VkResult QueueWaitIdle(VkQueue queue);
- VkResult DeviceWaitIdle(VkDevice device);
- VkResult AllocMemory(VkDevice device, const VkMemoryAllocInfo* pAllocInfo, VkDeviceMemory* pMem);
--- 
-2.6.0.rc2.230.g3dd15c0
-
diff --git a/vulkan/patches/frameworks_native-sdk_0.10/0005-vulkan-Update-from-version-0.180.0-to-0.181.0.patch b/vulkan/patches/frameworks_native-sdk_0.10/0005-vulkan-Update-from-version-0.180.0-to-0.181.0.patch
deleted file mode 100644
index 0f07bb6..0000000
--- a/vulkan/patches/frameworks_native-sdk_0.10/0005-vulkan-Update-from-version-0.180.0-to-0.181.0.patch
+++ /dev/null
@@ -1,614 +0,0 @@
-From 2c3539bab4b81b6e55d690c5e113d3421cc15021 Mon Sep 17 00:00:00 2001
-From: Jesse Hall <jessehall@google.com>
-Date: Thu, 19 Nov 2015 22:48:02 -0800
-Subject: [PATCH] vulkan: Update from version 0.180.0 to 0.181.0
-
-Change-Id: I4a7e216d9966f2dcf873bcb952472463dfb59f95
----
- vulkan/api/vulkan.api          |  88 ++++++++++++---------------
- vulkan/include/vulkan/vulkan.h | 132 +++++++++++++++++------------------------
- vulkan/libvulkan/entry.cpp     |   2 +-
- vulkan/libvulkan/swapchain.cpp |   2 +-
- vulkan/nulldrv/null_driver.cpp |   6 +-
- vulkan/nulldrv/null_driver.h   |   2 +-
- vulkan/tools/vkinfo.cpp        |   1 -
- 7 files changed, 98 insertions(+), 135 deletions(-)
-
-diff --git a/vulkan/api/vulkan.api b/vulkan/api/vulkan.api
-index 669a64e..fbd1d9d 100644
---- a/vulkan/api/vulkan.api
-+++ b/vulkan/api/vulkan.api
-@@ -27,7 +27,7 @@ import platform "platform.api"
- 
- // API version (major.minor.patch)
- define VERSION_MAJOR 0
--define VERSION_MINOR 180
-+define VERSION_MINOR 181
- define VERSION_PATCH 0
- 
- // API limits
-@@ -135,13 +135,6 @@ enum VkImageViewType {
-     VK_IMAGE_VIEW_TYPE_CUBE_ARRAY                           = 0x00000006,
- }
- 
--enum VkImageAspect {
--    VK_IMAGE_ASPECT_COLOR                                   = 0x00000000,
--    VK_IMAGE_ASPECT_DEPTH                                   = 0x00000001,
--    VK_IMAGE_ASPECT_STENCIL                                 = 0x00000002,
--    VK_IMAGE_ASPECT_METADATA                                = 0x00000003,
--}
--
- enum VkCmdBufferLevel {
-     VK_CMD_BUFFER_LEVEL_PRIMARY                             = 0x00000000,
-     VK_CMD_BUFFER_LEVEL_SECONDARY                           = 0x00000001,
-@@ -535,16 +528,6 @@ enum VkFormat {
-     VK_FORMAT_B10G10R10A2_SINT                              = 0x000000AD,
- }
- 
--/// Shader stage enumerant
--enum VkShaderStage {
--    VK_SHADER_STAGE_VERTEX                                  = 0x00000000,
--    VK_SHADER_STAGE_TESSELLATION_CONTROL                    = 0x00000001,
--    VK_SHADER_STAGE_TESSELLATION_EVALUATION                 = 0x00000002,
--    VK_SHADER_STAGE_GEOMETRY                                = 0x00000003,
--    VK_SHADER_STAGE_FRAGMENT                                = 0x00000004,
--    VK_SHADER_STAGE_COMPUTE                                 = 0x00000005,
--}
--
- /// Structure type enumerant
- enum VkStructureType {
-     VK_STRUCTURE_TYPE_APPLICATION_INFO                          = 0,
-@@ -606,12 +589,11 @@ enum VkRenderPassContents {
- enum VkResult {
-     // Return codes for successful operation execution (positive values)
-     VK_SUCCESS                                              = 0x00000000,
--    VK_UNSUPPORTED                                          = 0x00000001,
--    VK_NOT_READY                                            = 0x00000002,
--    VK_TIMEOUT                                              = 0x00000003,
--    VK_EVENT_SET                                            = 0x00000004,
--    VK_EVENT_RESET                                          = 0x00000005,
--    VK_INCOMPLETE                                           = 0x00000006,
-+    VK_NOT_READY                                            = 0x00000001,
-+    VK_TIMEOUT                                              = 0x00000002,
-+    VK_EVENT_SET                                            = 0x00000003,
-+    VK_EVENT_RESET                                          = 0x00000004,
-+    VK_INCOMPLETE                                           = 0x00000005,
- 
-     // Error codes (negative values)
-     VK_ERROR_OUT_OF_HOST_MEMORY                             = 0xFFFFFFFF,
-@@ -856,13 +838,11 @@ bitfield VkEventCreateFlags {
- bitfield VkCmdBufferCreateFlags {
- }
- 
--/// Command buffer optimization flags
--bitfield VkCmdBufferOptimizeFlags {
--    VK_CMD_BUFFER_OPTIMIZE_SMALL_BATCH_BIT                  = 0x00000001,
--    VK_CMD_BUFFER_OPTIMIZE_PIPELINE_SWITCH_BIT              = 0x00000002,
--    VK_CMD_BUFFER_OPTIMIZE_ONE_TIME_SUBMIT_BIT              = 0x00000004,
--    VK_CMD_BUFFER_OPTIMIZE_DESCRIPTOR_SET_SWITCH_BIT        = 0x00000008,
--    VK_CMD_BUFFER_OPTIMIZE_NO_SIMULTANEOUS_USE_BIT          = 0x00000010,  /// Only one call to the secondary command buffer will exist at any given time
-+/// Command buffer usage flags
-+bitfield VkCmdBufferUsageFlags {
-+    VK_CMD_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT                 = 0x00000001,
-+    VK_CMD_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT            = 0x00000002,
-+    VK_CMD_BUFFER_USAGE_SIMULTANEOUS_USE_BIT                = 0x00000004,
- }
- 
- /// Pipeline statistics flags
-@@ -1022,9 +1002,10 @@ class VkRect2D {
-     VkExtent2D                                  extent
- }
- 
--class VkRect3D {
--    VkOffset3D                                  offset
--    VkExtent3D                                  extent
-+class VkClearRect {
-+    VkRect2D                                    rect
-+    u32                                         baseArrayLayer
-+    u32                                         numLayers
- }
- 
- class VkChannelMapping {
-@@ -1140,7 +1121,7 @@ class VkMemoryRequirements {
- }
- 
- class VkSparseImageFormatProperties {
--    VkImageAspect                               aspect
-+    VkImageAspectFlags                          aspect
-     VkExtent3D                                  imageGranularity
-     VkSparseImageFormatFlags                    flags
- }
-@@ -1180,23 +1161,28 @@ class VkFormatProperties {
- class VkImageFormatProperties {
-     VkExtent3D                                  maxExtent                  /// max image dimensions for this resource type
-     u32                                         maxMipLevels               /// max number of mipmap levels for this resource type
--    u32                                         maxArraySize               /// max array size for this resource type
-+    u32                                         maxArrayLayers             /// max array layers for this resource type
-     VkSampleCountFlags                          sampleCounts               /// supported sample counts for this resource type
-     VkDeviceSize                                maxResourceSize            /// max size (in bytes) of this resource type
- }
- 
-+class VkDescriptorImageInfo {
-+    VkSampler                                   sampler
-+    VkImageView                                 imageView
-+    VkImageLayout                               imageLayout
-+}
-+
- class VkDescriptorBufferInfo {
-     VkBuffer                                    buffer                     /// Buffer used for this descriptor when the descriptor is UNIFORM_BUFFER[_DYNAMIC]
-     VkDeviceSize                                offset                     /// Base offset from buffer start in bytes to update in the descriptor set.
-     VkDeviceSize                                range                      /// Size in bytes of the buffer resource for this descriptor update.
- }
- 
-+@union
- class VkDescriptorInfo {
--    VkBufferView                                bufferView                 /// Buffer view to write to the descriptor (in case it's a buffer descriptor, otherwise should be VK_NULL_HANDLE)
--    VkSampler                                   sampler                    /// Sampler to write to the descriptor (in case it's a SAMPLER or COMBINED_IMAGE_SAMPLER descriptor, otherwise should be VK_NULL_HANDLE)
--    VkImageView                                 imageView                  /// Image view to write to the descriptor (in case it's a SAMPLED_IMAGE, STORAGE_IMAGE, COMBINED_IMAGE_SAMPLER, or INPUT_ATTACHMENT descriptor, otherwise should be VK_NULL_HANDLE)
--    VkImageLayout                               imageLayout                /// Layout the image is expected to be in when accessed using this descriptor (only used if imageView is not VK_NULL_HANDLE)
-+    VkDescriptorImageInfo                       imageInfo
-     VkDescriptorBufferInfo                      bufferInfo                 /// Raw buffer, size and offset for UNIFORM_BUFFER[_DYNAMIC] or STORAGE_BUFFER[_DYNAMIC] descriptor types. Ignored otherwise.
-+    VkBufferView                                texelBufferView
- }
- 
- class VkWriteDescriptorSet {
-@@ -1243,7 +1229,7 @@ class VkBufferViewCreateInfo {
- }
- 
- class VkImageSubresource {
--    VkImageAspect                               aspect
-+    VkImageAspectFlags                          aspect
-     u32                                         mipLevel
-     u32                                         arrayLayer
- }
-@@ -1251,9 +1237,9 @@ class VkImageSubresource {
- class VkImageSubresourceRange {
-     VkImageAspectFlags                          aspectMask
-     u32                                         baseMipLevel
--    u32                                         mipLevels
-+    u32                                         numLevels
-     u32                                         baseArrayLayer
--    u32                                         arraySize
-+    u32                                         numLayers
- }
- 
- class VkMemoryBarrier {
-@@ -1295,7 +1281,7 @@ class VkImageCreateInfo {
-     VkFormat                                    format
-     VkExtent3D                                  extent
-     u32                                         mipLevels
--    u32                                         arraySize
-+    u32                                         arrayLayers
-     u32                                         samples
-     VkImageTiling                               tiling
-     VkImageUsageFlags                           usage                      /// Image usage flags
-@@ -1348,10 +1334,10 @@ class VkSparseImageMemoryBindInfo {
- }
- 
- class VkImageSubresourceCopy {
--    VkImageAspect                               aspect
-+    VkImageAspectFlags                          aspect
-     u32                                         mipLevel
--    u32                                         arrayLayer
--    u32                                         arraySize
-+    u32                                         baseArrayLayer
-+    u32                                         numLayers
- }
- 
- class VkImageCopy {
-@@ -1402,7 +1388,7 @@ class VkShaderCreateInfo {
-     VkShaderModule                              module             /// Module containing entry point
-     const char*                                 pName              /// Null-terminated entry point name
-     VkShaderCreateFlags                         flags              /// Reserved
--    VkShaderStage                               stage
-+    VkShaderStageFlags                          stage
- }
- 
- class VkDescriptorSetLayoutBinding {
-@@ -1449,7 +1435,7 @@ class VkSpecializationInfo {
- class VkPipelineShaderStageCreateInfo {
-     VkStructureType                             sType              /// Must be VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO
-     const void*                                 pNext              /// Pointer to next structure
--    VkShaderStage                               stage
-+    VkShaderStageFlags                          stage
-     VkShader                                    shader
-     const VkSpecializationInfo*                 pSpecializationInfo
- }
-@@ -1668,7 +1654,7 @@ class VkCmdBufferCreateInfo {
- class VkCmdBufferBeginInfo {
-     VkStructureType                             sType       /// Must be VK_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO
-     const void*                                 pNext       /// Pointer to next structure
--    VkCmdBufferOptimizeFlags                    flags       /// Command buffer optimization flags
-+    VkCmdBufferUsageFlags                       flags       /// Command buffer usage flags
-     VkRenderPass                                renderPass  /// Render pass for secondary command buffers
-     u32                                         subpass
-     VkFramebuffer                               framebuffer /// Framebuffer for secondary command buffers
-@@ -4056,7 +4042,7 @@ cmd void vkCmdClearAttachments(
-         u32                                         attachmentCount,
-         const VkClearAttachment*                    pAttachments,
-         u32                                         rectCount,
--        const VkRect3D*                             pRects) {
-+        const VkClearRect*                          pRects) {
-     cmdBufferObject := GetCmdBuffer(cmdBuffer)
- 
-     rects := pRects[0:rectCount]
-diff --git a/vulkan/include/vulkan/vulkan.h b/vulkan/include/vulkan/vulkan.h
-index 3706b34..475ebec 100644
---- a/vulkan/include/vulkan/vulkan.h
-+++ b/vulkan/include/vulkan/vulkan.h
-@@ -41,7 +41,7 @@ extern "C" {
-     ((major << 22) | (minor << 12) | patch)
- 
- // Vulkan API version supported by this file
--#define VK_API_VERSION VK_MAKE_VERSION(0, 180, 0)
-+#define VK_API_VERSION VK_MAKE_VERSION(0, 181, 0)
- 
- 
- #if defined(__cplusplus) && ((defined(_MSC_VER) && _MSC_VER >= 1800) || __cplusplus >= 201103L)
-@@ -139,12 +139,11 @@ VK_DEFINE_NONDISP_HANDLE(VkCmdPool)
- 
- typedef enum {
-     VK_SUCCESS = 0,
--    VK_UNSUPPORTED = 1,
--    VK_NOT_READY = 2,
--    VK_TIMEOUT = 3,
--    VK_EVENT_SET = 4,
--    VK_EVENT_RESET = 5,
--    VK_INCOMPLETE = 6,
-+    VK_NOT_READY = 1,
-+    VK_TIMEOUT = 2,
-+    VK_EVENT_SET = 3,
-+    VK_EVENT_RESET = 4,
-+    VK_INCOMPLETE = 5,
-     VK_ERROR_OUT_OF_HOST_MEMORY = -1,
-     VK_ERROR_OUT_OF_DEVICE_MEMORY = -2,
-     VK_ERROR_INITIALIZATION_FAILED = -3,
-@@ -439,17 +438,6 @@ typedef enum {
- } VkPhysicalDeviceType;
- 
- typedef enum {
--    VK_IMAGE_ASPECT_COLOR = 0,
--    VK_IMAGE_ASPECT_DEPTH = 1,
--    VK_IMAGE_ASPECT_STENCIL = 2,
--    VK_IMAGE_ASPECT_METADATA = 3,
--    VK_IMAGE_ASPECT_BEGIN_RANGE = VK_IMAGE_ASPECT_COLOR,
--    VK_IMAGE_ASPECT_END_RANGE = VK_IMAGE_ASPECT_METADATA,
--    VK_IMAGE_ASPECT_NUM = (VK_IMAGE_ASPECT_METADATA - VK_IMAGE_ASPECT_COLOR + 1),
--    VK_IMAGE_ASPECT_MAX_ENUM = 0x7FFFFFFF
--} VkImageAspect;
--
--typedef enum {
-     VK_QUERY_TYPE_OCCLUSION = 0,
-     VK_QUERY_TYPE_PIPELINE_STATISTICS = 1,
-     VK_QUERY_TYPE_BEGIN_RANGE = VK_QUERY_TYPE_OCCLUSION,
-@@ -511,19 +499,6 @@ typedef enum {
- } VkChannelSwizzle;
- 
- typedef enum {
--    VK_SHADER_STAGE_VERTEX = 0,
--    VK_SHADER_STAGE_TESSELLATION_CONTROL = 1,
--    VK_SHADER_STAGE_TESSELLATION_EVALUATION = 2,
--    VK_SHADER_STAGE_GEOMETRY = 3,
--    VK_SHADER_STAGE_FRAGMENT = 4,
--    VK_SHADER_STAGE_COMPUTE = 5,
--    VK_SHADER_STAGE_BEGIN_RANGE = VK_SHADER_STAGE_VERTEX,
--    VK_SHADER_STAGE_END_RANGE = VK_SHADER_STAGE_COMPUTE,
--    VK_SHADER_STAGE_NUM = (VK_SHADER_STAGE_COMPUTE - VK_SHADER_STAGE_VERTEX + 1),
--    VK_SHADER_STAGE_MAX_ENUM = 0x7FFFFFFF
--} VkShaderStage;
--
--typedef enum {
-     VK_VERTEX_INPUT_STEP_RATE_VERTEX = 0,
-     VK_VERTEX_INPUT_STEP_RATE_INSTANCE = 1,
-     VK_VERTEX_INPUT_STEP_RATE_BEGIN_RANGE = VK_VERTEX_INPUT_STEP_RATE_VERTEX,
-@@ -905,6 +880,13 @@ typedef VkFlags VkMemoryHeapFlags;
- typedef VkFlags VkMemoryMapFlags;
- 
- typedef enum {
-+    VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001,
-+    VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002,
-+    VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004,
-+    VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008,
-+} VkImageAspectFlagBits;
-+
-+typedef enum {
-     VK_SPARSE_IMAGE_FMT_SINGLE_MIPTAIL_BIT = 0x00000001,
-     VK_SPARSE_IMAGE_FMT_ALIGNED_MIP_SIZE_BIT = 0x00000002,
-     VK_SPARSE_IMAGE_FMT_NONSTD_BLOCK_SIZE_BIT = 0x00000004,
-@@ -966,13 +948,6 @@ typedef enum {
-     VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
- } VkBufferCreateFlagBits;
- typedef VkFlags VkBufferCreateFlags;
--
--typedef enum {
--    VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001,
--    VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002,
--    VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004,
--    VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008,
--} VkImageAspectFlagBits;
- typedef VkFlags VkImageAspectFlags;
- 
- typedef enum {
-@@ -984,6 +959,16 @@ typedef VkFlags VkShaderModuleCreateFlags;
- typedef VkFlags VkShaderCreateFlags;
- 
- typedef enum {
-+    VK_SHADER_STAGE_VERTEX_BIT = 0x00000001,
-+    VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 0x00000002,
-+    VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 0x00000004,
-+    VK_SHADER_STAGE_GEOMETRY_BIT = 0x00000008,
-+    VK_SHADER_STAGE_FRAGMENT_BIT = 0x00000010,
-+    VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020,
-+    VK_SHADER_STAGE_ALL = 0x7FFFFFFF,
-+} VkShaderStageFlagBits;
-+
-+typedef enum {
-     VK_CHANNEL_R_BIT = 0x00000001,
-     VK_CHANNEL_G_BIT = 0x00000002,
-     VK_CHANNEL_B_BIT = 0x00000004,
-@@ -997,16 +982,6 @@ typedef enum {
-     VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004,
- } VkPipelineCreateFlagBits;
- typedef VkFlags VkPipelineCreateFlags;
--
--typedef enum {
--    VK_SHADER_STAGE_VERTEX_BIT = 0x00000001,
--    VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 0x00000002,
--    VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 0x00000004,
--    VK_SHADER_STAGE_GEOMETRY_BIT = 0x00000008,
--    VK_SHADER_STAGE_FRAGMENT_BIT = 0x00000010,
--    VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020,
--    VK_SHADER_STAGE_ALL = 0x7FFFFFFF,
--} VkShaderStageFlagBits;
- typedef VkFlags VkShaderStageFlags;
- 
- typedef enum {
-@@ -1071,13 +1046,11 @@ typedef VkFlags VkCmdPoolResetFlags;
- typedef VkFlags VkCmdBufferCreateFlags;
- 
- typedef enum {
--    VK_CMD_BUFFER_OPTIMIZE_SMALL_BATCH_BIT = 0x00000001,
--    VK_CMD_BUFFER_OPTIMIZE_PIPELINE_SWITCH_BIT = 0x00000002,
--    VK_CMD_BUFFER_OPTIMIZE_ONE_TIME_SUBMIT_BIT = 0x00000004,
--    VK_CMD_BUFFER_OPTIMIZE_DESCRIPTOR_SET_SWITCH_BIT = 0x00000008,
--    VK_CMD_BUFFER_OPTIMIZE_NO_SIMULTANEOUS_USE_BIT = 0x00000010,
--} VkCmdBufferOptimizeFlagBits;
--typedef VkFlags VkCmdBufferOptimizeFlags;
-+    VK_CMD_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0x00000001,
-+    VK_CMD_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 0x00000002,
-+    VK_CMD_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 0x00000004,
-+} VkCmdBufferUsageFlagBits;
-+typedef VkFlags VkCmdBufferUsageFlags;
- 
- typedef enum {
-     VK_CMD_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
-@@ -1204,7 +1177,7 @@ typedef struct {
- typedef struct {
-     VkExtent3D                                  maxExtent;
-     uint32_t                                    maxMipLevels;
--    uint32_t                                    maxArraySize;
-+    uint32_t                                    maxArrayLayers;
-     VkSampleCountFlags                          sampleCounts;
-     VkDeviceSize                                maxResourceSize;
- } VkImageFormatProperties;
-@@ -1414,7 +1387,7 @@ typedef struct {
- } VkMemoryRequirements;
- 
- typedef struct {
--    VkImageAspect                               aspect;
-+    VkImageAspectFlagBits                       aspect;
-     VkExtent3D                                  imageGranularity;
-     VkSparseImageFormatFlags                    flags;
- } VkSparseImageFormatProperties;
-@@ -1436,7 +1409,7 @@ typedef struct {
- } VkSparseMemoryBindInfo;
- 
- typedef struct {
--    VkImageAspect                               aspect;
-+    VkImageAspectFlagBits                       aspect;
-     uint32_t                                    mipLevel;
-     uint32_t                                    arrayLayer;
- } VkImageSubresource;
-@@ -1509,7 +1482,7 @@ typedef struct {
-     VkFormat                                    format;
-     VkExtent3D                                  extent;
-     uint32_t                                    mipLevels;
--    uint32_t                                    arraySize;
-+    uint32_t                                    arrayLayers;
-     uint32_t                                    samples;
-     VkImageTiling                               tiling;
-     VkImageUsageFlags                           usage;
-@@ -1537,9 +1510,9 @@ typedef struct {
- typedef struct {
-     VkImageAspectFlags                          aspectMask;
-     uint32_t                                    baseMipLevel;
--    uint32_t                                    mipLevels;
-+    uint32_t                                    numLevels;
-     uint32_t                                    baseArrayLayer;
--    uint32_t                                    arraySize;
-+    uint32_t                                    numLayers;
- } VkImageSubresourceRange;
- 
- typedef struct {
-@@ -1567,7 +1540,7 @@ typedef struct {
-     VkShaderModule                              module;
-     const char*                                 pName;
-     VkShaderCreateFlags                         flags;
--    VkShaderStage                               stage;
-+    VkShaderStageFlagBits                       stage;
- } VkShaderCreateInfo;
- 
- typedef struct {
-@@ -1594,7 +1567,7 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
--    VkShaderStage                               stage;
-+    VkShaderStageFlagBits                       stage;
-     VkShader                                    shader;
-     const VkSpecializationInfo*                 pSpecializationInfo;
- } VkPipelineShaderStageCreateInfo;
-@@ -1840,17 +1813,21 @@ typedef struct {
- } VkDescriptorPoolCreateInfo;
- 
- typedef struct {
-+    VkSampler                                   sampler;
-+    VkImageView                                 imageView;
-+    VkImageLayout                               imageLayout;
-+} VkDescriptorImageInfo;
-+
-+typedef struct {
-     VkBuffer                                    buffer;
-     VkDeviceSize                                offset;
-     VkDeviceSize                                range;
- } VkDescriptorBufferInfo;
- 
--typedef struct {
--    VkBufferView                                bufferView;
--    VkSampler                                   sampler;
--    VkImageView                                 imageView;
--    VkImageLayout                               imageLayout;
-+typedef union {
-+    VkDescriptorImageInfo                       imageInfo;
-     VkDescriptorBufferInfo                      bufferInfo;
-+    VkBufferView                                texelBufferView;
- } VkDescriptorInfo;
- 
- typedef struct {
-@@ -1962,7 +1939,7 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
--    VkCmdBufferOptimizeFlags                    flags;
-+    VkCmdBufferUsageFlags                       flags;
-     VkRenderPass                                renderPass;
-     uint32_t                                    subpass;
-     VkFramebuffer                               framebuffer;
-@@ -1975,10 +1952,10 @@ typedef struct {
- } VkBufferCopy;
- 
- typedef struct {
--    VkImageAspect                               aspect;
-+    VkImageAspectFlags                          aspect;
-     uint32_t                                    mipLevel;
--    uint32_t                                    arrayLayer;
--    uint32_t                                    arraySize;
-+    uint32_t                                    baseArrayLayer;
-+    uint32_t                                    numLayers;
- } VkImageSubresourceCopy;
- 
- typedef struct {
-@@ -2030,9 +2007,10 @@ typedef struct {
- } VkClearAttachment;
- 
- typedef struct {
--    VkOffset3D                                  offset;
--    VkExtent3D                                  extent;
--} VkRect3D;
-+    VkRect2D                                    rect;
-+    uint32_t                                    baseArrayLayer;
-+    uint32_t                                    numLayers;
-+} VkClearRect;
- 
- typedef struct {
-     VkImageSubresourceCopy                      srcSubresource;
-@@ -2234,7 +2212,7 @@ typedef void (VKAPI *PFN_vkCmdUpdateBuffer)(VkCmdBuffer cmdBuffer, VkBuffer dest
- typedef void (VKAPI *PFN_vkCmdFillBuffer)(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize fillSize, uint32_t data);
- typedef void (VKAPI *PFN_vkCmdClearColorImage)(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
- typedef void (VKAPI *PFN_vkCmdClearDepthStencilImage)(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
--typedef void (VKAPI *PFN_vkCmdClearAttachments)(VkCmdBuffer cmdBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkRect3D* pRects);
-+typedef void (VKAPI *PFN_vkCmdClearAttachments)(VkCmdBuffer cmdBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects);
- typedef void (VKAPI *PFN_vkCmdResolveImage)(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageResolve* pRegions);
- typedef void (VKAPI *PFN_vkCmdSetEvent)(VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask);
- typedef void (VKAPI *PFN_vkCmdResetEvent)(VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask);
-@@ -2932,7 +2910,7 @@ void VKAPI vkCmdClearAttachments(
-     uint32_t                                    attachmentCount,
-     const VkClearAttachment*                    pAttachments,
-     uint32_t                                    rectCount,
--    const VkRect3D*                             pRects);
-+    const VkClearRect*                          pRects);
- 
- void VKAPI vkCmdResolveImage(
-     VkCmdBuffer                                 cmdBuffer,
-diff --git a/vulkan/libvulkan/entry.cpp b/vulkan/libvulkan/entry.cpp
-index 2bf6aae..da3837e 100644
---- a/vulkan/libvulkan/entry.cpp
-+++ b/vulkan/libvulkan/entry.cpp
-@@ -682,7 +682,7 @@ void vkCmdClearDepthStencilImage(VkCmdBuffer cmdBuffer, VkImage image, VkImageLa
- }
- 
- __attribute__((visibility("default")))
--void vkCmdClearAttachments(VkCmdBuffer cmdBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkRect3D* pRects) {
-+void vkCmdClearAttachments(VkCmdBuffer cmdBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects) {
-     GetVtbl(cmdBuffer).CmdClearAttachments(cmdBuffer, attachmentCount, pAttachments, rectCount, pRects);
- }
- 
-diff --git a/vulkan/libvulkan/swapchain.cpp b/vulkan/libvulkan/swapchain.cpp
-index 02d9515..70c0e33 100644
---- a/vulkan/libvulkan/swapchain.cpp
-+++ b/vulkan/libvulkan/swapchain.cpp
-@@ -421,7 +421,7 @@ VkResult CreateSwapchainKHR(VkDevice device,
-         .format = VK_FORMAT_R8G8B8A8_UNORM,  // TODO(jessehall)
-         .extent = {0, 0, 1},
-         .mipLevels = 1,
--        .arraySize = 1,
-+        .arrayLayers = 1,
-         .samples = 1,
-         .tiling = VK_IMAGE_TILING_OPTIMAL,
-         .usage = create_info->imageUsageFlags,
-diff --git a/vulkan/nulldrv/null_driver.cpp b/vulkan/nulldrv/null_driver.cpp
-index 2bef297..f07dfa7 100644
---- a/vulkan/nulldrv/null_driver.cpp
-+++ b/vulkan/nulldrv/null_driver.cpp
-@@ -473,12 +473,12 @@ VkResult CreateImage(VkDevice device,
-         ALOGE("CreateImage: not yet implemented: type=%d format=%d mips=%u",
-               create_info->imageType, create_info->format,
-               create_info->mipLevels);
--        return VK_UNSUPPORTED;
-+        return VK_ERROR_OUT_OF_HOST_MEMORY;
-     }
- 
-     VkDeviceSize size =
-         VkDeviceSize(create_info->extent.width * create_info->extent.height) *
--        create_info->arraySize * create_info->samples * 4u;
-+        create_info->arrayLayers * create_info->samples * 4u;
-     ALOGW_IF(size > kMaxDeviceMemory,
-              "CreateImage: image size 0x%" PRIx64
-              " exceeds max device memory size 0x%" PRIx64,
-@@ -1003,7 +1003,7 @@ void CmdClearColorImage(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imag
- void CmdClearDepthStencilImage(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges) {
- }
- 
--void CmdClearAttachments(VkCmdBuffer cmdBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkRect3D* pRects) {
-+void CmdClearAttachments(VkCmdBuffer cmdBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects) {
- }
- 
- void CmdResolveImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageResolve* pRegions) {
-diff --git a/vulkan/nulldrv/null_driver.h b/vulkan/nulldrv/null_driver.h
-index a1d1e05..655a414 100644
---- a/vulkan/nulldrv/null_driver.h
-+++ b/vulkan/nulldrv/null_driver.h
-@@ -154,7 +154,7 @@ void CmdUpdateBuffer(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize de
- void CmdFillBuffer(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize fillSize, uint32_t data);
- void CmdClearColorImage(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
- void CmdClearDepthStencilImage(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
--void CmdClearAttachments(VkCmdBuffer cmdBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkRect3D* pRects);
-+void CmdClearAttachments(VkCmdBuffer cmdBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects);
- void CmdResolveImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageResolve* pRegions);
- void CmdSetEvent(VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask);
- void CmdResetEvent(VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask);
-diff --git a/vulkan/tools/vkinfo.cpp b/vulkan/tools/vkinfo.cpp
-index 50c3789..918df47 100644
---- a/vulkan/tools/vkinfo.cpp
-+++ b/vulkan/tools/vkinfo.cpp
-@@ -32,7 +32,6 @@ namespace {
-     switch (result) {
-         // clang-format off
-         case VK_SUCCESS: result_str = "VK_SUCCESS"; break;
--        case VK_UNSUPPORTED: result_str = "VK_UNSUPPORTED"; break;
-         case VK_NOT_READY: result_str = "VK_NOT_READY"; break;
-         case VK_TIMEOUT: result_str = "VK_TIMEOUT"; break;
-         case VK_EVENT_SET: result_str = "VK_EVENT_SET"; break;
--- 
-2.6.0.rc2.230.g3dd15c0
-
diff --git a/vulkan/patches/frameworks_native-sdk_0.10/0006-vulkan-Update-from-version-0.181.0-to-0.183.0.patch b/vulkan/patches/frameworks_native-sdk_0.10/0006-vulkan-Update-from-version-0.181.0-to-0.183.0.patch
deleted file mode 100644
index 6e10b49..0000000
--- a/vulkan/patches/frameworks_native-sdk_0.10/0006-vulkan-Update-from-version-0.181.0-to-0.183.0.patch
+++ /dev/null
@@ -1,960 +0,0 @@
-From 85009ebe92a71d3c707efad6387118b186cca0c9 Mon Sep 17 00:00:00 2001
-From: Jesse Hall <jessehall@google.com>
-Date: Fri, 20 Nov 2015 14:17:03 -0800
-Subject: [PATCH] vulkan: Update from version 0.181.0 to 0.183.0
-
-Change-Id: I721bfc6891974e2bab7dce7e92e7884de360412a
----
- vulkan/api/vulkan.api              | 129 ++++++++++++++++++++-----------------
- vulkan/include/vulkan/vulkan.h     | 105 ++++++++++++++----------------
- vulkan/libvulkan/entry.cpp         |  16 ++---
- vulkan/libvulkan/get_proc_addr.cpp |  20 +++---
- vulkan/libvulkan/loader.cpp        |  31 ++++-----
- vulkan/libvulkan/loader.h          |  10 +--
- vulkan/nulldrv/null_driver.cpp     |  57 ++++++++++------
- vulkan/nulldrv/null_driver.h       |   8 +--
- vulkan/nulldrv/null_driver_gen.cpp |   4 +-
- 9 files changed, 199 insertions(+), 181 deletions(-)
-
-diff --git a/vulkan/api/vulkan.api b/vulkan/api/vulkan.api
-index fbd1d9d..175e353 100644
---- a/vulkan/api/vulkan.api
-+++ b/vulkan/api/vulkan.api
-@@ -27,7 +27,7 @@ import platform "platform.api"
- 
- // API version (major.minor.patch)
- define VERSION_MAJOR 0
--define VERSION_MINOR 181
-+define VERSION_MINOR 183
- define VERSION_PATCH 0
- 
- // API limits
-@@ -163,16 +163,6 @@ enum VkDescriptorType {
-     VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT                     = 0x0000000a,
- }
- 
--enum VkDescriptorPoolUsage {
--    VK_DESCRIPTOR_POOL_USAGE_ONE_SHOT                       = 0x00000000,
--    VK_DESCRIPTOR_POOL_USAGE_DYNAMIC                        = 0x00000001,
--}
--
--enum VkDescriptorSetUsage {
--    VK_DESCRIPTOR_SET_USAGE_ONE_SHOT                        = 0x00000000,
--    VK_DESCRIPTOR_SET_USAGE_STATIC                          = 0x00000001,
--}
--
- enum VkQueryType {
-     VK_QUERY_TYPE_OCCLUSION                                 = 0x00000000,
-     VK_QUERY_TYPE_PIPELINE_STATISTICS                       = 0x00000001, /// Optional
-@@ -539,7 +529,7 @@ enum VkStructureType {
-     VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO              = 6,
-     VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO                       = 7,
-     VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO         = 8,
--    VK_STRUCTURE_TYPE_CMD_BUFFER_CREATE_INFO                    = 9,
-+    VK_STRUCTURE_TYPE_CMD_BUFFER_ALLOC_INFO                     = 9,
-     VK_STRUCTURE_TYPE_EVENT_CREATE_INFO                         = 10,
-     VK_STRUCTURE_TYPE_FENCE_CREATE_INFO                         = 11,
-     VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO                     = 12,
-@@ -577,6 +567,7 @@ enum VkStructureType {
-     VK_STRUCTURE_TYPE_CMD_POOL_CREATE_INFO                      = 44,
-     VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO                  = 45,
-     VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO        = 46,
-+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOC_INFO                 = 47,
- }
- 
- enum VkRenderPassContents {
-@@ -741,6 +732,15 @@ bitfield VkShaderStageFlags {
-     VK_SHADER_STAGE_ALL                                     = 0x7FFFFFFF,
- }
- 
-+/// Descriptor pool create flags
-+bitfield VkDescriptorPoolCreateFlags {
-+    VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT       = 0x00000001,
-+}
-+
-+/// Descriptor pool reset flags
-+bitfield VkDescriptorPoolResetFlags {
-+}
-+
- /// Image usage flags
- bitfield VkImageUsageFlags {
-     VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT                      = 0x00000001,    /// Can be used as a source of transfer operations
-@@ -834,10 +834,6 @@ bitfield VkShaderCreateFlags {
- bitfield VkEventCreateFlags {
- }
- 
--/// Command buffer creation flags
--bitfield VkCmdBufferCreateFlags {
--}
--
- /// Command buffer usage flags
- bitfield VkCmdBufferUsageFlags {
-     VK_CMD_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT                 = 0x00000001,
-@@ -1069,6 +1065,7 @@ class VkDeviceQueueCreateInfo {
-     const void*                                 pNext                     /// Pointer to next structure
-     u32                                         queueFamilyIndex
-     u32                                         queueCount
-+    const f32*                                  pQueuePriorities
- }
- 
- class VkDeviceCreateInfo {
-@@ -1178,13 +1175,6 @@ class VkDescriptorBufferInfo {
-     VkDeviceSize                                range                      /// Size in bytes of the buffer resource for this descriptor update.
- }
- 
--@union
--class VkDescriptorInfo {
--    VkDescriptorImageInfo                       imageInfo
--    VkDescriptorBufferInfo                      bufferInfo                 /// Raw buffer, size and offset for UNIFORM_BUFFER[_DYNAMIC] or STORAGE_BUFFER[_DYNAMIC] descriptor types. Ignored otherwise.
--    VkBufferView                                texelBufferView
--}
--
- class VkWriteDescriptorSet {
-     VkStructureType                             sType                      /// Must be VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET
-     const void*                                 pNext                      /// Pointer to next structure
-@@ -1193,7 +1183,9 @@ class VkWriteDescriptorSet {
-     u32                                         destArrayElement           /// Array element within the destination binding to write
-     u32                                         count                      /// Number of descriptors to write (determines the size of the array pointed by <pDescriptors>)
-     VkDescriptorType                            descriptorType             /// Descriptor type to write (determines which fields of the array pointed by <pDescriptors> are going to be used)
--    const VkDescriptorInfo*                     pDescriptors               /// Array of info structures describing the descriptors to write
-+    const VkDescriptorImageInfo*                pImageInfo
-+    const VkDescriptorBufferInfo*               pBufferInfo
-+    const VkBufferView*                         pTexelBufferView
- }
- 
- class VkCopyDescriptorSet {
-@@ -1413,12 +1405,20 @@ class VkDescriptorTypeCount {
- class VkDescriptorPoolCreateInfo {
-     VkStructureType                             sType              /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO
-     const void*                                 pNext              /// Pointer to next structure
--    VkDescriptorPoolUsage                       poolUsage
-+    VkDescriptorPoolCreateFlags                 flags
-     u32                                         maxSets
-     u32                                         count
-     const VkDescriptorTypeCount*                pTypeCount
- }
- 
-+class VkDescriptorSetAllocInfo {
-+    VkStructureType                             sType              /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOC_INFO
-+    const void*                                 pNext              /// Pointer to next structure
-+    VkDescriptorPool                            descriptorPool
-+    u32                                         count
-+    const VkDescriptorSetLayout*                pSetLayouts
-+}
-+
- class VkSpecializationMapEntry {
-     u32                                         constantId         /// The SpecConstant ID specified in the BIL
-     platform.size_t                             size               /// Size in bytes of the SpecConstant
-@@ -1643,12 +1643,12 @@ class VkCmdPoolCreateInfo {
-     VkCmdPoolCreateFlags                        flags            /// Command pool creation flags
- }
- 
--class VkCmdBufferCreateInfo {
--    VkStructureType                             sType      /// Must be VK_STRUCTURE_TYPE_CMD_BUFFER_CREATE_INFO
-+class VkCmdBufferAllocInfo {
-+    VkStructureType                             sType      /// Must be VK_STRUCTURE_TYPE_CMD_BUFFER_ALLOC_INFO
-     const void*                                 pNext      /// Pointer to next structure
-     VkCmdPool                                   cmdPool
-     VkCmdBufferLevel                            level
--    VkCmdBufferCreateFlags                      flags      /// Command buffer creation flags
-+    u32                                         count
- }
- 
- class VkCmdBufferBeginInfo {
-@@ -1782,6 +1782,9 @@ class VkPhysicalDeviceFeatures {
-     VkBool32                                    depthBounds                               /// depth bounds test
-     VkBool32                                    wideLines                                 /// lines with width greater than 1
-     VkBool32                                    largePoints                               /// points with size greater than 1
-+    VkBool32                                    alphaToOne                                /// The fragment alpha channel can be forced to maximum representable alpha value
-+    VkBool32                                    multiViewport
-+    VkBool32                                    samplerAnisotropy
-     VkBool32                                    textureCompressionETC2                    /// ETC texture compression formats
-     VkBool32                                    textureCompressionASTC_LDR                /// ASTC LDR texture compression formats
-     VkBool32                                    textureCompressionBC                      /// BC1-7 texture compressed formats
-@@ -1807,7 +1810,6 @@ class VkPhysicalDeviceFeatures {
-     VkBool32                                    shaderInt16                               /// 16-bit integers in shaders
-     VkBool32                                    shaderResourceResidency                   /// shader can use texture operations that return resource residency information (requires sparseNonResident support)
-     VkBool32                                    shaderResourceMinLOD                      /// shader can use texture operations that specify minimum resource LOD
--    VkBool32                                    alphaToOne                                /// The fragment alpha channel can be forced to maximum representable alpha value
-     VkBool32                                    sparseBinding                             /// Sparse resources support: Resource memory can be managed at opaque page level rather than object level
-     VkBool32                                    sparseResidencyBuffer                     /// Sparse resources support: GPU can access partially resident buffers
-     VkBool32                                    sparseResidencyImage2D                    /// Sparse resources support: GPU can access partially resident 2D (non-MSAA non-DepthStencil) images
-@@ -1828,8 +1830,8 @@ class VkPhysicalDeviceLimits {
-     u32                                         maxImageArrayLayers                       /// max layers for image arrays
-     VkSampleCountFlags                          sampleCounts                              /// sample counts supported for all images supporting rendering and sampling
-     u32                                         maxTexelBufferSize                        /// max texel buffer size (bytes)
--    u32                                         maxUniformBufferSize                      /// max uniform buffer size (bytes)
--    u32                                         maxStorageBufferSize                      /// max storage buffer size (bytes)
-+    u32                                         maxUniformBufferRange                     /// max uniform buffer size (bytes)
-+    u32                                         maxStorageBufferRange                     /// max storage buffer size (bytes)
-     u32                                         maxPushConstantsSize                      /// max size of the push constants pool (bytes)
-     /// memory limits
-     u32                                         maxMemoryAllocationCount                  /// max number of device memory allocations supported
-@@ -1837,7 +1839,6 @@ class VkPhysicalDeviceLimits {
-     VkDeviceSize                                sparseAddressSpaceSize                    /// Total address space available for sparse allocations (bytes)
-     /// descriptor set limits
-     u32                                         maxBoundDescriptorSets                    /// max number of descriptors sets that can be bound to a pipeline
--    u32                                         maxDescriptorSets                         /// max number of allocated descriptor sets
-     u32                                         maxPerStageDescriptorSamplers             /// max num of samplers allowed per-stage in a descriptor set
-     u32                                         maxPerStageDescriptorUniformBuffers       /// max num of uniform buffers allowed per-stage in a descriptor set
-     u32                                         maxPerStageDescriptorStorageBuffers       /// max num of storage buffers allowed per-stage in a descriptor set
-@@ -1873,8 +1874,8 @@ class VkPhysicalDeviceLimits {
-     u32                                         maxGeometryTotalOutputComponents          /// max total num of components (all vertices) written in geometry stage
-     /// fragment stage limits
-     u32                                         maxFragmentInputComponents                /// max num of input compontents read in fragment stage
--    u32                                         maxFragmentOutputBuffers                  /// max num of output buffers written in fragment stage
--    u32                                         maxFragmentDualSourceBuffers              /// max num of output buffers written when using dual source blending
-+    u32                                         maxFragmentOutputAttachments              /// max num of output attachments written in fragment stage
-+    u32                                         maxFragmentDualSourceAttachments          /// max num of output attachments written when using dual source blending
-     u32                                         maxFragmentCombinedOutputResources        /// max total num of storage buffers, storage images and output buffers
-     /// compute stage limits
-     u32                                         maxComputeSharedMemorySize                /// max total storage size of work group local storage (bytes)
-@@ -1903,9 +1904,9 @@ class VkPhysicalDeviceLimits {
-     u32                                         minUniformBufferOffsetAlignment           /// min required alignment for uniform buffer sizes and offsets (bytes)
-     u32                                         minStorageBufferOffsetAlignment           /// min required alignment for storage buffer offsets (bytes)
- 
--    u32                                         minTexelOffset                            /// min texel offset for OpTextureSampleOffset
-+    s32                                         minTexelOffset                            /// min texel offset for OpTextureSampleOffset
-     u32                                         maxTexelOffset                            /// max texel offset for OpTextureSampleOffset
--    u32                                         minTexelGatherOffset                      /// min texel offset for OpTextureGatherOffset
-+    s32                                         minTexelGatherOffset                      /// min texel offset for OpTextureGatherOffset
-     u32                                         maxTexelGatherOffset                      /// max texel offset for OpTextureGatherOffset
-     f32                                         minInterpolationOffset                    /// furthest negative offset for interpolateAtOffset
-     f32                                         maxInterpolationOffset                    /// furthest positive offset for interpolateAtOffset
-@@ -1931,6 +1932,8 @@ class VkPhysicalDeviceLimits {
-     u32                                         maxCullDistances                          /// max number of cull distances
-     u32                                         maxCombinedClipAndCullDistances           /// max combined number of user clipping
- 
-+    u32                                         discreteQueuePriorities
-+
-     f32[2]                                      pointSizeRange                            /// range (min,max) of supported point sizes
-     f32[2]                                      lineWidthRange                            /// range (min,max) of supported line widths
-     f32                                         pointSizeGranularity                      /// granularity of supported point sizes
-@@ -3294,7 +3297,8 @@ cmd void vkDestroyDescriptorPool(
- @threadSafety("app")
- cmd VkResult vkResetDescriptorPool(
-         VkDevice                                    device,
--        VkDescriptorPool                            descriptorPool) {
-+        VkDescriptorPool                            descriptorPool,
-+        VkDescriptorPoolResetFlags                  flags) {
-     deviceObject := GetDevice(device)
-     descriptorPoolObject := GetDescriptorPool(descriptorPool)
-     assert(descriptorPoolObject.device == device)
-@@ -3305,23 +3309,21 @@ cmd VkResult vkResetDescriptorPool(
- @threadSafety("app")
- cmd VkResult vkAllocDescriptorSets(
-         VkDevice                                    device,
--        VkDescriptorPool                            descriptorPool,
--        VkDescriptorSetUsage                        setUsage,
--        u32                                         count,
--        const VkDescriptorSetLayout*                pSetLayouts,
-+        const VkDescriptorSetAllocInfo*             pAllocInfo,
-         VkDescriptorSet*                            pDescriptorSets) {
-     deviceObject := GetDevice(device)
--    descriptorPoolObject := GetDescriptorPool(descriptorPool)
-+    allocInfo := pAllocInfo[0]
-+    descriptorPoolObject := GetDescriptorPool(allocInfo.descriptorPool)
- 
--    setLayouts := pSetLayouts[0:count]
--    for i in (0 .. count) {
-+    setLayouts := allocInfo.pSetLayouts[0:allocInfo.count]
-+    for i in (0 .. allocInfo.count) {
-         setLayout := setLayouts[i]
-         setLayoutObject := GetDescriptorSetLayout(setLayout)
-         assert(setLayoutObject.device == device)
-     }
- 
--    descriptorSets := pDescriptorSets[0:count]
--    for i in (0 .. count) {
-+    descriptorSets := pDescriptorSets[0:allocInfo.count]
-+    for i in (0 .. allocInfo.count) {
-         descriptorSet := ?
-         descriptorSets[i] = descriptorSet
-         State.DescriptorSets[descriptorSet] = new!DescriptorSetObject(device: device)
-@@ -3497,29 +3499,38 @@ macro void unbindCmdBuffer(VkCmdBuffer cmdBuffer, any obj, VkDeviceMemory mem) {
- }
- 
- @threadSafety("system")
--cmd VkResult vkCreateCommandBuffer(
-+cmd VkResult vkAllocCommandBuffers(
-         VkDevice                                    device,
--        const VkCmdBufferCreateInfo*                pCreateInfo,
--        VkCmdBuffer*                                pCmdBuffer) {
--    assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_CMD_BUFFER_CREATE_INFO)
-+        const VkCmdBufferAllocInfo*                 pAllocInfo,
-+        VkCmdBuffer*                                pCmdBuffers) {
-+    assert(pAllocInfo[0].sType == VK_STRUCTURE_TYPE_CMD_BUFFER_ALLOC_INFO)
- 
--    cmdBuffer := ?
--    pCmdBuffer[0] = cmdBuffer
--    State.CmdBuffers[cmdBuffer] = new!CmdBufferObject(device: device)
-+    count := pAllocInfo[0].count
-+    cmdBuffers := pCmdBuffers[0:count]
-+    for i in (0 .. count) {
-+        cmdBuffer := ?
-+        cmdBuffers[i] = cmdBuffer
-+        State.CmdBuffers[cmdBuffer] = new!CmdBufferObject(device: device)
-+    }
- 
-     return ?
- }
- 
- @threadSafety("system")
--cmd void vkDestroyCommandBuffer(
-+cmd void vkFreeCommandBuffers(
-         VkDevice                                    device,
--        VkCmdBuffer                                 commandBuffer) {
-+        VkCmdPool                                   cmdPool,
-+        u32                                         count,
-+        const VkCmdBuffer*                          pCommandBuffers) {
-     deviceObject := GetDevice(device)
--    cmdBufferObject := GetCmdBuffer(commandBuffer)
--    assert(cmdBufferObject.device == device)
- 
--    // TODO: iterate over boundObjects and clear memory bindings
--    State.CmdBuffers[commandBuffer] = null
-+    cmdBuffers := pCommandBuffers[0:count]
-+    for i in (0 .. count) {
-+        cmdBufferObject := GetCmdBuffer(cmdBuffers[i])
-+        assert(cmdBufferObject.device == device)
-+        // TODO: iterate over boundObjects and clear memory bindings
-+        State.CmdBuffers[cmdBuffers[i]] = null
-+    }
- }
- 
- @threadSafety("app")
-diff --git a/vulkan/include/vulkan/vulkan.h b/vulkan/include/vulkan/vulkan.h
-index 475ebec..d6eb918 100644
---- a/vulkan/include/vulkan/vulkan.h
-+++ b/vulkan/include/vulkan/vulkan.h
-@@ -41,7 +41,7 @@ extern "C" {
-     ((major << 22) | (minor << 12) | patch)
- 
- // Vulkan API version supported by this file
--#define VK_API_VERSION VK_MAKE_VERSION(0, 181, 0)
-+#define VK_API_VERSION VK_MAKE_VERSION(0, 183, 0)
- 
- 
- #if defined(__cplusplus) && ((defined(_MSC_VER) && _MSC_VER >= 1800) || __cplusplus >= 201103L)
-@@ -169,7 +169,7 @@ typedef enum {
-     VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 6,
-     VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 7,
-     VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 8,
--    VK_STRUCTURE_TYPE_CMD_BUFFER_CREATE_INFO = 9,
-+    VK_STRUCTURE_TYPE_CMD_BUFFER_ALLOC_INFO = 9,
-     VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10,
-     VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 11,
-     VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 12,
-@@ -207,9 +207,10 @@ typedef enum {
-     VK_STRUCTURE_TYPE_CMD_POOL_CREATE_INFO = 44,
-     VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 45,
-     VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 46,
-+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOC_INFO = 47,
-     VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO,
--    VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO,
--    VK_STRUCTURE_TYPE_NUM = (VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1),
-+    VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOC_INFO,
-+    VK_STRUCTURE_TYPE_NUM = (VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOC_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1),
-     VK_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF
- } VkStructureType;
- 
-@@ -725,24 +726,6 @@ typedef enum {
- } VkDescriptorType;
- 
- typedef enum {
--    VK_DESCRIPTOR_POOL_USAGE_ONE_SHOT = 0,
--    VK_DESCRIPTOR_POOL_USAGE_DYNAMIC = 1,
--    VK_DESCRIPTOR_POOL_USAGE_BEGIN_RANGE = VK_DESCRIPTOR_POOL_USAGE_ONE_SHOT,
--    VK_DESCRIPTOR_POOL_USAGE_END_RANGE = VK_DESCRIPTOR_POOL_USAGE_DYNAMIC,
--    VK_DESCRIPTOR_POOL_USAGE_NUM = (VK_DESCRIPTOR_POOL_USAGE_DYNAMIC - VK_DESCRIPTOR_POOL_USAGE_ONE_SHOT + 1),
--    VK_DESCRIPTOR_POOL_USAGE_MAX_ENUM = 0x7FFFFFFF
--} VkDescriptorPoolUsage;
--
--typedef enum {
--    VK_DESCRIPTOR_SET_USAGE_ONE_SHOT = 0,
--    VK_DESCRIPTOR_SET_USAGE_STATIC = 1,
--    VK_DESCRIPTOR_SET_USAGE_BEGIN_RANGE = VK_DESCRIPTOR_SET_USAGE_ONE_SHOT,
--    VK_DESCRIPTOR_SET_USAGE_END_RANGE = VK_DESCRIPTOR_SET_USAGE_STATIC,
--    VK_DESCRIPTOR_SET_USAGE_NUM = (VK_DESCRIPTOR_SET_USAGE_STATIC - VK_DESCRIPTOR_SET_USAGE_ONE_SHOT + 1),
--    VK_DESCRIPTOR_SET_USAGE_MAX_ENUM = 0x7FFFFFFF
--} VkDescriptorSetUsage;
--
--typedef enum {
-     VK_ATTACHMENT_LOAD_OP_LOAD = 0,
-     VK_ATTACHMENT_LOAD_OP_CLEAR = 1,
-     VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2,
-@@ -985,6 +968,12 @@ typedef VkFlags VkPipelineCreateFlags;
- typedef VkFlags VkShaderStageFlags;
- 
- typedef enum {
-+    VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001,
-+} VkDescriptorPoolCreateFlagBits;
-+typedef VkFlags VkDescriptorPoolCreateFlags;
-+typedef VkFlags VkDescriptorPoolResetFlags;
-+
-+typedef enum {
-     VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 0x00000001,
- } VkAttachmentDescriptionFlagBits;
- typedef VkFlags VkAttachmentDescriptionFlags;
-@@ -1043,7 +1032,6 @@ typedef enum {
-     VK_CMD_POOL_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
- } VkCmdPoolResetFlagBits;
- typedef VkFlags VkCmdPoolResetFlags;
--typedef VkFlags VkCmdBufferCreateFlags;
- 
- typedef enum {
-     VK_CMD_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0x00000001,
-@@ -1125,6 +1113,9 @@ typedef struct {
-     VkBool32                                    depthBounds;
-     VkBool32                                    wideLines;
-     VkBool32                                    largePoints;
-+    VkBool32                                    alphaToOne;
-+    VkBool32                                    multiViewport;
-+    VkBool32                                    samplerAnisotropy;
-     VkBool32                                    textureCompressionETC2;
-     VkBool32                                    textureCompressionASTC_LDR;
-     VkBool32                                    textureCompressionBC;
-@@ -1150,7 +1141,6 @@ typedef struct {
-     VkBool32                                    shaderInt16;
-     VkBool32                                    shaderResourceResidency;
-     VkBool32                                    shaderResourceMinLOD;
--    VkBool32                                    alphaToOne;
-     VkBool32                                    sparseBinding;
-     VkBool32                                    sparseResidencyBuffer;
-     VkBool32                                    sparseResidencyImage2D;
-@@ -1190,14 +1180,13 @@ typedef struct {
-     uint32_t                                    maxImageArrayLayers;
-     VkSampleCountFlags                          sampleCounts;
-     uint32_t                                    maxTexelBufferSize;
--    uint32_t                                    maxUniformBufferSize;
--    uint32_t                                    maxStorageBufferSize;
-+    uint32_t                                    maxUniformBufferRange;
-+    uint32_t                                    maxStorageBufferRange;
-     uint32_t                                    maxPushConstantsSize;
-     uint32_t                                    maxMemoryAllocationCount;
-     VkDeviceSize                                bufferImageGranularity;
-     VkDeviceSize                                sparseAddressSpaceSize;
-     uint32_t                                    maxBoundDescriptorSets;
--    uint32_t                                    maxDescriptorSets;
-     uint32_t                                    maxPerStageDescriptorSamplers;
-     uint32_t                                    maxPerStageDescriptorUniformBuffers;
-     uint32_t                                    maxPerStageDescriptorStorageBuffers;
-@@ -1229,8 +1218,8 @@ typedef struct {
-     uint32_t                                    maxGeometryOutputVertices;
-     uint32_t                                    maxGeometryTotalOutputComponents;
-     uint32_t                                    maxFragmentInputComponents;
--    uint32_t                                    maxFragmentOutputBuffers;
--    uint32_t                                    maxFragmentDualSourceBuffers;
-+    uint32_t                                    maxFragmentOutputAttachments;
-+    uint32_t                                    maxFragmentDualSourceAttachments;
-     uint32_t                                    maxFragmentCombinedOutputResources;
-     uint32_t                                    maxComputeSharedMemorySize;
-     uint32_t                                    maxComputeWorkGroupCount[3];
-@@ -1252,9 +1241,9 @@ typedef struct {
-     uint32_t                                    minTexelBufferOffsetAlignment;
-     uint32_t                                    minUniformBufferOffsetAlignment;
-     uint32_t                                    minStorageBufferOffsetAlignment;
--    uint32_t                                    minTexelOffset;
-+    int32_t                                     minTexelOffset;
-     uint32_t                                    maxTexelOffset;
--    uint32_t                                    minTexelGatherOffset;
-+    int32_t                                     minTexelGatherOffset;
-     uint32_t                                    maxTexelGatherOffset;
-     float                                       minInterpolationOffset;
-     float                                       maxInterpolationOffset;
-@@ -1275,6 +1264,7 @@ typedef struct {
-     uint32_t                                    maxClipDistances;
-     uint32_t                                    maxCullDistances;
-     uint32_t                                    maxCombinedClipAndCullDistances;
-+    uint32_t                                    discreteQueuePriorities;
-     float                                       pointSizeRange[2];
-     float                                       lineWidthRange[2];
-     float                                       pointSizeGranularity;
-@@ -1330,6 +1320,7 @@ typedef struct {
-     const void*                                 pNext;
-     uint32_t                                    queueFamilyIndex;
-     uint32_t                                    queueCount;
-+    const float*                                pQueuePriorities;
- } VkDeviceQueueCreateInfo;
- 
- typedef struct {
-@@ -1806,13 +1797,21 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
--    VkDescriptorPoolUsage                       poolUsage;
-+    VkDescriptorPoolCreateFlags                 flags;
-     uint32_t                                    maxSets;
-     uint32_t                                    count;
-     const VkDescriptorTypeCount*                pTypeCount;
- } VkDescriptorPoolCreateInfo;
- 
- typedef struct {
-+    VkStructureType                             sType;
-+    const void*                                 pNext;
-+    VkDescriptorPool                            descriptorPool;
-+    uint32_t                                    count;
-+    const VkDescriptorSetLayout*                pSetLayouts;
-+} VkDescriptorSetAllocInfo;
-+
-+typedef struct {
-     VkSampler                                   sampler;
-     VkImageView                                 imageView;
-     VkImageLayout                               imageLayout;
-@@ -1824,12 +1823,6 @@ typedef struct {
-     VkDeviceSize                                range;
- } VkDescriptorBufferInfo;
- 
--typedef union {
--    VkDescriptorImageInfo                       imageInfo;
--    VkDescriptorBufferInfo                      bufferInfo;
--    VkBufferView                                texelBufferView;
--} VkDescriptorInfo;
--
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-@@ -1838,7 +1831,9 @@ typedef struct {
-     uint32_t                                    destArrayElement;
-     uint32_t                                    count;
-     VkDescriptorType                            descriptorType;
--    const VkDescriptorInfo*                     pDescriptors;
-+    const VkDescriptorImageInfo*                pImageInfo;
-+    const VkDescriptorBufferInfo*               pBufferInfo;
-+    const VkBufferView*                         pTexelBufferView;
- } VkWriteDescriptorSet;
- 
- typedef struct {
-@@ -1933,8 +1928,8 @@ typedef struct {
-     const void*                                 pNext;
-     VkCmdPool                                   cmdPool;
-     VkCmdBufferLevel                            level;
--    VkCmdBufferCreateFlags                      flags;
--} VkCmdBufferCreateInfo;
-+    uint32_t                                    count;
-+} VkCmdBufferAllocInfo;
- 
- typedef struct {
-     VkStructureType                             sType;
-@@ -2167,8 +2162,8 @@ typedef VkResult (VKAPI *PFN_vkCreateDescriptorSetLayout)(VkDevice device, const
- typedef void (VKAPI *PFN_vkDestroyDescriptorSetLayout)(VkDevice device, VkDescriptorSetLayout descriptorSetLayout);
- typedef VkResult (VKAPI *PFN_vkCreateDescriptorPool)(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool);
- typedef void (VKAPI *PFN_vkDestroyDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool);
--typedef VkResult (VKAPI *PFN_vkResetDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool);
--typedef VkResult (VKAPI *PFN_vkAllocDescriptorSets)(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorSetUsage setUsage, uint32_t count, const VkDescriptorSetLayout* pSetLayouts, VkDescriptorSet* pDescriptorSets);
-+typedef VkResult (VKAPI *PFN_vkResetDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags);
-+typedef VkResult (VKAPI *PFN_vkAllocDescriptorSets)(VkDevice device, const VkDescriptorSetAllocInfo* pAllocInfo, VkDescriptorSet* pDescriptorSets);
- typedef VkResult (VKAPI *PFN_vkFreeDescriptorSets)(VkDevice device, VkDescriptorPool descriptorPool, uint32_t count, const VkDescriptorSet* pDescriptorSets);
- typedef void (VKAPI *PFN_vkUpdateDescriptorSets)(VkDevice device, uint32_t writeCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t copyCount, const VkCopyDescriptorSet* pDescriptorCopies);
- typedef VkResult (VKAPI *PFN_vkCreateFramebuffer)(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, VkFramebuffer* pFramebuffer);
-@@ -2179,8 +2174,8 @@ typedef void (VKAPI *PFN_vkGetRenderAreaGranularity)(VkDevice device, VkRenderPa
- typedef VkResult (VKAPI *PFN_vkCreateCommandPool)(VkDevice device, const VkCmdPoolCreateInfo* pCreateInfo, VkCmdPool* pCmdPool);
- typedef void (VKAPI *PFN_vkDestroyCommandPool)(VkDevice device, VkCmdPool cmdPool);
- typedef VkResult (VKAPI *PFN_vkResetCommandPool)(VkDevice device, VkCmdPool cmdPool, VkCmdPoolResetFlags flags);
--typedef VkResult (VKAPI *PFN_vkCreateCommandBuffer)(VkDevice device, const VkCmdBufferCreateInfo* pCreateInfo, VkCmdBuffer* pCmdBuffer);
--typedef void (VKAPI *PFN_vkDestroyCommandBuffer)(VkDevice device, VkCmdBuffer commandBuffer);
-+typedef VkResult (VKAPI *PFN_vkAllocCommandBuffers)(VkDevice device, const VkCmdBufferAllocInfo* pAllocInfo, VkCmdBuffer* pCmdBuffers);
-+typedef void (VKAPI *PFN_vkFreeCommandBuffers)(VkDevice device, VkCmdPool cmdPool, uint32_t count, const VkCmdBuffer* pCommandBuffers);
- typedef VkResult (VKAPI *PFN_vkBeginCommandBuffer)(VkCmdBuffer cmdBuffer, const VkCmdBufferBeginInfo* pBeginInfo);
- typedef VkResult (VKAPI *PFN_vkEndCommandBuffer)(VkCmdBuffer cmdBuffer);
- typedef VkResult (VKAPI *PFN_vkResetCommandBuffer)(VkCmdBuffer cmdBuffer, VkCmdBufferResetFlags flags);
-@@ -2641,14 +2636,12 @@ void VKAPI vkDestroyDescriptorPool(
- 
- VkResult VKAPI vkResetDescriptorPool(
-     VkDevice                                    device,
--    VkDescriptorPool                            descriptorPool);
-+    VkDescriptorPool                            descriptorPool,
-+    VkDescriptorPoolResetFlags                  flags);
- 
- VkResult VKAPI vkAllocDescriptorSets(
-     VkDevice                                    device,
--    VkDescriptorPool                            descriptorPool,
--    VkDescriptorSetUsage                        setUsage,
--    uint32_t                                    count,
--    const VkDescriptorSetLayout*                pSetLayouts,
-+    const VkDescriptorSetAllocInfo*             pAllocInfo,
-     VkDescriptorSet*                            pDescriptorSets);
- 
- VkResult VKAPI vkFreeDescriptorSets(
-@@ -2701,14 +2694,16 @@ VkResult VKAPI vkResetCommandPool(
-     VkCmdPool                                   cmdPool,
-     VkCmdPoolResetFlags                         flags);
- 
--VkResult VKAPI vkCreateCommandBuffer(
-+VkResult VKAPI vkAllocCommandBuffers(
-     VkDevice                                    device,
--    const VkCmdBufferCreateInfo*                pCreateInfo,
--    VkCmdBuffer*                                pCmdBuffer);
-+    const VkCmdBufferAllocInfo*                 pAllocInfo,
-+    VkCmdBuffer*                                pCmdBuffers);
- 
--void VKAPI vkDestroyCommandBuffer(
-+void VKAPI vkFreeCommandBuffers(
-     VkDevice                                    device,
--    VkCmdBuffer                                 commandBuffer);
-+    VkCmdPool                                   cmdPool,
-+    uint32_t                                    count,
-+    const VkCmdBuffer*                          pCommandBuffers);
- 
- VkResult VKAPI vkBeginCommandBuffer(
-     VkCmdBuffer                                 cmdBuffer,
-diff --git a/vulkan/libvulkan/entry.cpp b/vulkan/libvulkan/entry.cpp
-index da3837e..0af3bc8 100644
---- a/vulkan/libvulkan/entry.cpp
-+++ b/vulkan/libvulkan/entry.cpp
-@@ -457,13 +457,13 @@ void vkDestroyDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool) {
- }
- 
- __attribute__((visibility("default")))
--VkResult vkResetDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool) {
--    return GetVtbl(device).ResetDescriptorPool(device, descriptorPool);
-+VkResult vkResetDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags) {
-+    return GetVtbl(device).ResetDescriptorPool(device, descriptorPool, flags);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkAllocDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorSetUsage setUsage, uint32_t count, const VkDescriptorSetLayout* pSetLayouts, VkDescriptorSet* pDescriptorSets) {
--    return GetVtbl(device).AllocDescriptorSets(device, descriptorPool, setUsage, count, pSetLayouts, pDescriptorSets);
-+VkResult vkAllocDescriptorSets(VkDevice device, const VkDescriptorSetAllocInfo* pAllocInfo, VkDescriptorSet* pDescriptorSets) {
-+    return GetVtbl(device).AllocDescriptorSets(device, pAllocInfo, pDescriptorSets);
- }
- 
- __attribute__((visibility("default")))
-@@ -517,13 +517,13 @@ VkResult vkResetCommandPool(VkDevice device, VkCmdPool cmdPool, VkCmdPoolResetFl
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateCommandBuffer(VkDevice device, const VkCmdBufferCreateInfo* pCreateInfo, VkCmdBuffer* pCmdBuffer) {
--    return vulkan::CreateCommandBuffer(device, pCreateInfo, pCmdBuffer);
-+VkResult vkAllocCommandBuffers(VkDevice device, const VkCmdBufferAllocInfo* pAllocInfo, VkCmdBuffer* pCmdBuffers) {
-+    return GetVtbl(device).AllocCommandBuffers(device, pAllocInfo, pCmdBuffers);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyCommandBuffer(VkDevice device, VkCmdBuffer commandBuffer) {
--    GetVtbl(device).DestroyCommandBuffer(device, commandBuffer);
-+void vkFreeCommandBuffers(VkDevice device, VkCmdPool cmdPool, uint32_t count, const VkCmdBuffer* pCommandBuffers) {
-+    GetVtbl(device).FreeCommandBuffers(device, cmdPool, count, pCommandBuffers);
- }
- 
- __attribute__((visibility("default")))
-diff --git a/vulkan/libvulkan/get_proc_addr.cpp b/vulkan/libvulkan/get_proc_addr.cpp
-index bd16ac5..b9bd689 100644
---- a/vulkan/libvulkan/get_proc_addr.cpp
-+++ b/vulkan/libvulkan/get_proc_addr.cpp
-@@ -69,6 +69,7 @@ const NameProcEntry kInstanceProcTbl[] = {
- const NameProcEntry kDeviceProcTbl[] = {
-     // clang-format off
-     {"vkAcquireNextImageKHR", reinterpret_cast<PFN_vkVoidFunction>(vkAcquireNextImageKHR)},
-+    {"vkAllocCommandBuffers", reinterpret_cast<PFN_vkVoidFunction>(vkAllocCommandBuffers)},
-     {"vkAllocDescriptorSets", reinterpret_cast<PFN_vkVoidFunction>(vkAllocDescriptorSets)},
-     {"vkAllocMemory", reinterpret_cast<PFN_vkVoidFunction>(vkAllocMemory)},
-     {"vkBeginCommandBuffer", reinterpret_cast<PFN_vkVoidFunction>(vkBeginCommandBuffer)},
-@@ -120,7 +121,6 @@ const NameProcEntry kDeviceProcTbl[] = {
-     {"vkCmdWriteTimestamp", reinterpret_cast<PFN_vkVoidFunction>(vkCmdWriteTimestamp)},
-     {"vkCreateBuffer", reinterpret_cast<PFN_vkVoidFunction>(vkCreateBuffer)},
-     {"vkCreateBufferView", reinterpret_cast<PFN_vkVoidFunction>(vkCreateBufferView)},
--    {"vkCreateCommandBuffer", reinterpret_cast<PFN_vkVoidFunction>(vkCreateCommandBuffer)},
-     {"vkCreateCommandPool", reinterpret_cast<PFN_vkVoidFunction>(vkCreateCommandPool)},
-     {"vkCreateComputePipelines", reinterpret_cast<PFN_vkVoidFunction>(vkCreateComputePipelines)},
-     {"vkCreateDescriptorPool", reinterpret_cast<PFN_vkVoidFunction>(vkCreateDescriptorPool)},
-@@ -142,7 +142,6 @@ const NameProcEntry kDeviceProcTbl[] = {
-     {"vkCreateSwapchainKHR", reinterpret_cast<PFN_vkVoidFunction>(vkCreateSwapchainKHR)},
-     {"vkDestroyBuffer", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyBuffer)},
-     {"vkDestroyBufferView", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyBufferView)},
--    {"vkDestroyCommandBuffer", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyCommandBuffer)},
-     {"vkDestroyCommandPool", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyCommandPool)},
-     {"vkDestroyDescriptorPool", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyDescriptorPool)},
-     {"vkDestroyDescriptorSetLayout", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyDescriptorSetLayout)},
-@@ -165,6 +164,7 @@ const NameProcEntry kDeviceProcTbl[] = {
-     {"vkDeviceWaitIdle", reinterpret_cast<PFN_vkVoidFunction>(vkDeviceWaitIdle)},
-     {"vkEndCommandBuffer", reinterpret_cast<PFN_vkVoidFunction>(vkEndCommandBuffer)},
-     {"vkFlushMappedMemoryRanges", reinterpret_cast<PFN_vkVoidFunction>(vkFlushMappedMemoryRanges)},
-+    {"vkFreeCommandBuffers", reinterpret_cast<PFN_vkVoidFunction>(vkFreeCommandBuffers)},
-     {"vkFreeDescriptorSets", reinterpret_cast<PFN_vkVoidFunction>(vkFreeDescriptorSets)},
-     {"vkFreeMemory", reinterpret_cast<PFN_vkVoidFunction>(vkFreeMemory)},
-     {"vkGetBufferMemoryRequirements", reinterpret_cast<PFN_vkVoidFunction>(vkGetBufferMemoryRequirements)},
-@@ -229,6 +229,7 @@ const NameOffsetEntry kInstanceOffsetTbl[] = {
- const NameOffsetEntry kDeviceOffsetTbl[] = {
-     // clang-format off
-     {"vkAcquireNextImageKHR", offsetof(DeviceVtbl, AcquireNextImageKHR)},
-+    {"vkAllocCommandBuffers", offsetof(DeviceVtbl, AllocCommandBuffers)},
-     {"vkAllocDescriptorSets", offsetof(DeviceVtbl, AllocDescriptorSets)},
-     {"vkAllocMemory", offsetof(DeviceVtbl, AllocMemory)},
-     {"vkBeginCommandBuffer", offsetof(DeviceVtbl, BeginCommandBuffer)},
-@@ -280,7 +281,6 @@ const NameOffsetEntry kDeviceOffsetTbl[] = {
-     {"vkCmdWriteTimestamp", offsetof(DeviceVtbl, CmdWriteTimestamp)},
-     {"vkCreateBuffer", offsetof(DeviceVtbl, CreateBuffer)},
-     {"vkCreateBufferView", offsetof(DeviceVtbl, CreateBufferView)},
--    {"vkCreateCommandBuffer", offsetof(DeviceVtbl, CreateCommandBuffer)},
-     {"vkCreateCommandPool", offsetof(DeviceVtbl, CreateCommandPool)},
-     {"vkCreateComputePipelines", offsetof(DeviceVtbl, CreateComputePipelines)},
-     {"vkCreateDescriptorPool", offsetof(DeviceVtbl, CreateDescriptorPool)},
-@@ -302,7 +302,6 @@ const NameOffsetEntry kDeviceOffsetTbl[] = {
-     {"vkCreateSwapchainKHR", offsetof(DeviceVtbl, CreateSwapchainKHR)},
-     {"vkDestroyBuffer", offsetof(DeviceVtbl, DestroyBuffer)},
-     {"vkDestroyBufferView", offsetof(DeviceVtbl, DestroyBufferView)},
--    {"vkDestroyCommandBuffer", offsetof(DeviceVtbl, DestroyCommandBuffer)},
-     {"vkDestroyCommandPool", offsetof(DeviceVtbl, DestroyCommandPool)},
-     {"vkDestroyDescriptorPool", offsetof(DeviceVtbl, DestroyDescriptorPool)},
-     {"vkDestroyDescriptorSetLayout", offsetof(DeviceVtbl, DestroyDescriptorSetLayout)},
-@@ -325,6 +324,7 @@ const NameOffsetEntry kDeviceOffsetTbl[] = {
-     {"vkDeviceWaitIdle", offsetof(DeviceVtbl, DeviceWaitIdle)},
-     {"vkEndCommandBuffer", offsetof(DeviceVtbl, EndCommandBuffer)},
-     {"vkFlushMappedMemoryRanges", offsetof(DeviceVtbl, FlushMappedMemoryRanges)},
-+    {"vkFreeCommandBuffers", offsetof(DeviceVtbl, FreeCommandBuffers)},
-     {"vkFreeDescriptorSets", offsetof(DeviceVtbl, FreeDescriptorSets)},
-     {"vkFreeMemory", offsetof(DeviceVtbl, FreeMemory)},
-     {"vkGetBufferMemoryRequirements", offsetof(DeviceVtbl, GetBufferMemoryRequirements)},
-@@ -896,14 +896,14 @@ bool LoadDeviceVtbl(VkDevice device,
-         ALOGE("missing device proc: %s", "vkResetCommandPool");
-         success = false;
-     }
--    vtbl.CreateCommandBuffer = reinterpret_cast<PFN_vkCreateCommandBuffer>(get_proc_addr(device, "vkCreateCommandBuffer"));
--    if (UNLIKELY(!vtbl.CreateCommandBuffer)) {
--        ALOGE("missing device proc: %s", "vkCreateCommandBuffer");
-+    vtbl.AllocCommandBuffers = reinterpret_cast<PFN_vkAllocCommandBuffers>(get_proc_addr(device, "vkAllocCommandBuffers"));
-+    if (UNLIKELY(!vtbl.AllocCommandBuffers)) {
-+        ALOGE("missing device proc: %s", "vkAllocCommandBuffers");
-         success = false;
-     }
--    vtbl.DestroyCommandBuffer = reinterpret_cast<PFN_vkDestroyCommandBuffer>(get_proc_addr(device, "vkDestroyCommandBuffer"));
--    if (UNLIKELY(!vtbl.DestroyCommandBuffer)) {
--        ALOGE("missing device proc: %s", "vkDestroyCommandBuffer");
-+    vtbl.FreeCommandBuffers = reinterpret_cast<PFN_vkFreeCommandBuffers>(get_proc_addr(device, "vkFreeCommandBuffers"));
-+    if (UNLIKELY(!vtbl.FreeCommandBuffers)) {
-+        ALOGE("missing device proc: %s", "vkFreeCommandBuffers");
-         success = false;
-     }
-     vtbl.BeginCommandBuffer = reinterpret_cast<PFN_vkBeginCommandBuffer>(get_proc_addr(device, "vkBeginCommandBuffer"));
-diff --git a/vulkan/libvulkan/loader.cpp b/vulkan/libvulkan/loader.cpp
-index ba2f5cf..c427918 100644
---- a/vulkan/libvulkan/loader.cpp
-+++ b/vulkan/libvulkan/loader.cpp
-@@ -1047,8 +1047,8 @@ PFN_vkVoidFunction GetDeviceProcAddr(VkDevice device, const char* name) {
-     if (strcmp(name, "vkGetDeviceQueue") == 0) {
-         return reinterpret_cast<PFN_vkVoidFunction>(GetDeviceQueue);
-     }
--    if (strcmp(name, "vkCreateCommandBuffer") == 0) {
--        return reinterpret_cast<PFN_vkVoidFunction>(CreateCommandBuffer);
-+    if (strcmp(name, "vkAllocCommandBuffers") == 0) {
-+        return reinterpret_cast<PFN_vkVoidFunction>(AllocCommandBuffers);
-     }
-     if (strcmp(name, "vkDestroyDevice") == 0) {
-         return reinterpret_cast<PFN_vkVoidFunction>(DestroyDevice);
-@@ -1072,24 +1072,21 @@ void GetDeviceQueue(VkDevice drv_device,
-     *out_queue = queue;
- }
- 
--VkResult CreateCommandBuffer(VkDevice drv_device,
--                             const VkCmdBufferCreateInfo* create_info,
--                             VkCmdBuffer* out_cmdbuf) {
--    const DeviceVtbl* vtbl = GetVtbl(drv_device);
--    VkCmdBuffer cmdbuf;
--    VkResult result =
--        vtbl->CreateCommandBuffer(drv_device, create_info, &cmdbuf);
-+VkResult AllocCommandBuffers(VkDevice device,
-+                             const VkCmdBufferAllocInfo* alloc_info,
-+                             VkCmdBuffer* cmdbuffers) {
-+    const DeviceVtbl* vtbl = GetVtbl(device);
-+    VkResult result = vtbl->AllocCommandBuffers(device, alloc_info, cmdbuffers);
-     if (result != VK_SUCCESS)
-         return result;
--    hwvulkan_dispatch_t* dispatch =
--        reinterpret_cast<hwvulkan_dispatch_t*>(cmdbuf);
--    if (dispatch->magic != HWVULKAN_DISPATCH_MAGIC) {
--        ALOGE("invalid VkCmdBuffer dispatch magic: 0x%" PRIxPTR,
--              dispatch->magic);
--        return VK_ERROR_INITIALIZATION_FAILED;
-+    for (uint32_t i = 0; i < alloc_info->count; i++) {
-+        hwvulkan_dispatch_t* dispatch =
-+            reinterpret_cast<hwvulkan_dispatch_t*>(cmdbuffers[i]);
-+        ALOGE_IF(dispatch->magic != HWVULKAN_DISPATCH_MAGIC,
-+                 "invalid VkCmdBuffer dispatch magic: 0x%" PRIxPTR,
-+                 dispatch->magic);
-+        dispatch->vtbl = vtbl;
-     }
--    dispatch->vtbl = vtbl;
--    *out_cmdbuf = cmdbuf;
-     return VK_SUCCESS;
- }
- 
-diff --git a/vulkan/libvulkan/loader.h b/vulkan/libvulkan/loader.h
-index fcaec61..5e0a6c9 100644
---- a/vulkan/libvulkan/loader.h
-+++ b/vulkan/libvulkan/loader.h
-@@ -131,8 +131,8 @@ struct DeviceVtbl {
-     PFN_vkCreateCommandPool CreateCommandPool;
-     PFN_vkDestroyCommandPool DestroyCommandPool;
-     PFN_vkResetCommandPool ResetCommandPool;
--    PFN_vkCreateCommandBuffer CreateCommandBuffer;
--    PFN_vkDestroyCommandBuffer DestroyCommandBuffer;
-+    PFN_vkAllocCommandBuffers AllocCommandBuffers;
-+    PFN_vkFreeCommandBuffers FreeCommandBuffers;
- 
-     PFN_vkQueueSubmit QueueSubmit;
-     PFN_vkQueueWaitIdle QueueWaitIdle;
-@@ -225,9 +225,9 @@ void GetDeviceQueue(VkDevice drv_device,
-                     uint32_t family,
-                     uint32_t index,
-                     VkQueue* out_queue);
--VkResult CreateCommandBuffer(VkDevice device,
--                             const VkCmdBufferCreateInfo* create_info,
--                             VkCmdBuffer* out_cmdbuf);
-+VkResult AllocCommandBuffers(VkDevice device,
-+                             const VkCmdBufferAllocInfo* alloc_info,
-+                             VkCmdBuffer* cmdbuffers);
- VkResult DestroyDevice(VkDevice drv_device);
- 
- void* AllocDeviceMem(VkDevice device,
-diff --git a/vulkan/nulldrv/null_driver.cpp b/vulkan/nulldrv/null_driver.cpp
-index f07dfa7..7e890be 100644
---- a/vulkan/nulldrv/null_driver.cpp
-+++ b/vulkan/nulldrv/null_driver.cpp
-@@ -339,23 +339,41 @@ void GetDeviceQueue(VkDevice device, uint32_t, uint32_t, VkQueue* queue) {
- // -----------------------------------------------------------------------------
- // CmdBuffer
- 
--VkResult CreateCommandBuffer(VkDevice device,
--                             const VkCmdBufferCreateInfo*,
--                             VkCmdBuffer* out_cmdbuf) {
-+VkResult AllocCommandBuffers(VkDevice device,
-+                             const VkCmdBufferAllocInfo* alloc_info,
-+                             VkCmdBuffer* cmdbufs) {
-+    VkResult result = VK_SUCCESS;
-     const VkAllocCallbacks* alloc = device->instance->alloc;
--    VkCmdBuffer_T* cmdbuf = static_cast<VkCmdBuffer_T*>(alloc->pfnAlloc(
--        alloc->pUserData, sizeof(VkCmdBuffer_T), alignof(VkCmdBuffer_T),
--        VK_SYSTEM_ALLOC_TYPE_API_OBJECT));
--    if (!cmdbuf)
--        return VK_ERROR_OUT_OF_HOST_MEMORY;
--    cmdbuf->dispatch.magic = HWVULKAN_DISPATCH_MAGIC;
--    *out_cmdbuf = cmdbuf;
--    return VK_SUCCESS;
-+
-+    std::fill(cmdbufs, cmdbufs + alloc_info->count, nullptr);
-+    for (uint32_t i = 0; i < alloc_info->count; i++) {
-+        cmdbufs[i] = static_cast<VkCmdBuffer_T*>(alloc->pfnAlloc(
-+            alloc->pUserData, sizeof(VkCmdBuffer_T), alignof(VkCmdBuffer_T),
-+            VK_SYSTEM_ALLOC_TYPE_API_OBJECT));
-+        if (!cmdbufs[i]) {
-+            result = VK_ERROR_OUT_OF_HOST_MEMORY;
-+            break;
-+        }
-+        cmdbufs[i]->dispatch.magic = HWVULKAN_DISPATCH_MAGIC;
-+    }
-+    if (result != VK_SUCCESS) {
-+        for (uint32_t i = 0; i < alloc_info->count; i++) {
-+            if (!cmdbufs[i])
-+                break;
-+            alloc->pfnFree(alloc->pUserData, cmdbufs[i]);
-+        }
-+    }
-+
-+    return result;
- }
- 
--void DestroyCommandBuffer(VkDevice device, VkCmdBuffer cmdbuf) {
-+void FreeCommandBuffers(VkDevice device,
-+                        VkCmdPool,
-+                        uint32_t count,
-+                        const VkCmdBuffer* cmdbufs) {
-     const VkAllocCallbacks* alloc = device->instance->alloc;
--    alloc->pfnFree(alloc->pUserData, cmdbuf);
-+    for (uint32_t i = 0; i < count; i++)
-+        alloc->pfnFree(alloc->pUserData, cmdbufs[i]);
- }
- 
- // -----------------------------------------------------------------------------
-@@ -535,13 +553,10 @@ VkResult CreateDescriptorPool(VkDevice device,
- }
- 
- VkResult AllocDescriptorSets(VkDevice device,
--                             VkDescriptorPool,
--                             VkDescriptorSetUsage,
--                             uint32_t count,
--                             const VkDescriptorSetLayout*,
--                             VkDescriptorSet* sets) {
--    for (uint32_t i = 0; i < count; i++)
--        sets[i] = AllocHandle(device, HandleType::kDescriptorSet);
-+                             const VkDescriptorSetAllocInfo* alloc_info,
-+                             VkDescriptorSet* descriptor_sets) {
-+    for (uint32_t i = 0; i < alloc_info->count; i++)
-+        descriptor_sets[i] = AllocHandle(device, HandleType::kDescriptorSet);
-     return VK_SUCCESS;
- }
- 
-@@ -874,7 +889,7 @@ void DestroyDescriptorSetLayout(VkDevice device, VkDescriptorSetLayout descripto
- void DestroyDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool) {
- }
- 
--VkResult ResetDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool) {
-+VkResult ResetDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags) {
-     ALOGV("TODO: vk%s", __FUNCTION__);
-     return VK_SUCCESS;
- }
-diff --git a/vulkan/nulldrv/null_driver.h b/vulkan/nulldrv/null_driver.h
-index 655a414..c35df18 100644
---- a/vulkan/nulldrv/null_driver.h
-+++ b/vulkan/nulldrv/null_driver.h
-@@ -109,8 +109,8 @@ VkResult CreateDescriptorSetLayout(VkDevice device, const VkDescriptorSetLayoutC
- void DestroyDescriptorSetLayout(VkDevice device, VkDescriptorSetLayout descriptorSetLayout);
- VkResult CreateDescriptorPool(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool);
- void DestroyDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool);
--VkResult ResetDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool);
--VkResult AllocDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorSetUsage setUsage, uint32_t count, const VkDescriptorSetLayout* pSetLayouts, VkDescriptorSet* pDescriptorSets);
-+VkResult ResetDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags);
-+VkResult AllocDescriptorSets(VkDevice device, const VkDescriptorSetAllocInfo* pAllocInfo, VkDescriptorSet* pDescriptorSets);
- VkResult FreeDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool, uint32_t count, const VkDescriptorSet* pDescriptorSets);
- void UpdateDescriptorSets(VkDevice device, uint32_t writeCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t copyCount, const VkCopyDescriptorSet* pDescriptorCopies);
- VkResult CreateFramebuffer(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, VkFramebuffer* pFramebuffer);
-@@ -121,8 +121,8 @@ void GetRenderAreaGranularity(VkDevice device, VkRenderPass renderPass, VkExtent
- VkResult CreateCommandPool(VkDevice device, const VkCmdPoolCreateInfo* pCreateInfo, VkCmdPool* pCmdPool);
- void DestroyCommandPool(VkDevice device, VkCmdPool cmdPool);
- VkResult ResetCommandPool(VkDevice device, VkCmdPool cmdPool, VkCmdPoolResetFlags flags);
--VkResult CreateCommandBuffer(VkDevice device, const VkCmdBufferCreateInfo* pCreateInfo, VkCmdBuffer* pCmdBuffer);
--void DestroyCommandBuffer(VkDevice device, VkCmdBuffer commandBuffer);
-+VkResult AllocCommandBuffers(VkDevice device, const VkCmdBufferAllocInfo* pAllocInfo, VkCmdBuffer* pCmdBuffers);
-+void FreeCommandBuffers(VkDevice device, VkCmdPool cmdPool, uint32_t count, const VkCmdBuffer* pCommandBuffers);
- VkResult BeginCommandBuffer(VkCmdBuffer cmdBuffer, const VkCmdBufferBeginInfo* pBeginInfo);
- VkResult EndCommandBuffer(VkCmdBuffer cmdBuffer);
- VkResult ResetCommandBuffer(VkCmdBuffer cmdBuffer, VkCmdBufferResetFlags flags);
-diff --git a/vulkan/nulldrv/null_driver_gen.cpp b/vulkan/nulldrv/null_driver_gen.cpp
-index e86a795..431977d 100644
---- a/vulkan/nulldrv/null_driver_gen.cpp
-+++ b/vulkan/nulldrv/null_driver_gen.cpp
-@@ -67,6 +67,7 @@ const NameProcEntry kInstanceProcTbl[] = {
- 
- const NameProcEntry kDeviceProcTbl[] = {
-     // clang-format off
-+    {"vkAllocCommandBuffers", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkAllocCommandBuffers>(AllocCommandBuffers))},
-     {"vkAllocDescriptorSets", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkAllocDescriptorSets>(AllocDescriptorSets))},
-     {"vkAllocMemory", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkAllocMemory>(AllocMemory))},
-     {"vkBeginCommandBuffer", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkBeginCommandBuffer>(BeginCommandBuffer))},
-@@ -118,7 +119,6 @@ const NameProcEntry kDeviceProcTbl[] = {
-     {"vkCmdWriteTimestamp", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkCmdWriteTimestamp>(CmdWriteTimestamp))},
-     {"vkCreateBuffer", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkCreateBuffer>(CreateBuffer))},
-     {"vkCreateBufferView", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkCreateBufferView>(CreateBufferView))},
--    {"vkCreateCommandBuffer", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkCreateCommandBuffer>(CreateCommandBuffer))},
-     {"vkCreateCommandPool", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkCreateCommandPool>(CreateCommandPool))},
-     {"vkCreateComputePipelines", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkCreateComputePipelines>(CreateComputePipelines))},
-     {"vkCreateDescriptorPool", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkCreateDescriptorPool>(CreateDescriptorPool))},
-@@ -139,7 +139,6 @@ const NameProcEntry kDeviceProcTbl[] = {
-     {"vkCreateShaderModule", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkCreateShaderModule>(CreateShaderModule))},
-     {"vkDestroyBuffer", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkDestroyBuffer>(DestroyBuffer))},
-     {"vkDestroyBufferView", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkDestroyBufferView>(DestroyBufferView))},
--    {"vkDestroyCommandBuffer", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkDestroyCommandBuffer>(DestroyCommandBuffer))},
-     {"vkDestroyCommandPool", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkDestroyCommandPool>(DestroyCommandPool))},
-     {"vkDestroyDescriptorPool", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkDestroyDescriptorPool>(DestroyDescriptorPool))},
-     {"vkDestroyDescriptorSetLayout", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkDestroyDescriptorSetLayout>(DestroyDescriptorSetLayout))},
-@@ -161,6 +160,7 @@ const NameProcEntry kDeviceProcTbl[] = {
-     {"vkDeviceWaitIdle", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkDeviceWaitIdle>(DeviceWaitIdle))},
-     {"vkEndCommandBuffer", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkEndCommandBuffer>(EndCommandBuffer))},
-     {"vkFlushMappedMemoryRanges", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkFlushMappedMemoryRanges>(FlushMappedMemoryRanges))},
-+    {"vkFreeCommandBuffers", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkFreeCommandBuffers>(FreeCommandBuffers))},
-     {"vkFreeDescriptorSets", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkFreeDescriptorSets>(FreeDescriptorSets))},
-     {"vkFreeMemory", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkFreeMemory>(FreeMemory))},
-     {"vkGetBufferMemoryRequirements", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkGetBufferMemoryRequirements>(GetBufferMemoryRequirements))},
--- 
-2.6.0.rc2.230.g3dd15c0
-
diff --git a/vulkan/patches/frameworks_native-sdk_0.10/0007-vulkan-Implement-VkSurfaceKHR-and-use-vulkanext.h.patch b/vulkan/patches/frameworks_native-sdk_0.10/0007-vulkan-Implement-VkSurfaceKHR-and-use-vulkanext.h.patch
deleted file mode 100644
index caf577b..0000000
--- a/vulkan/patches/frameworks_native-sdk_0.10/0007-vulkan-Implement-VkSurfaceKHR-and-use-vulkanext.h.patch
+++ /dev/null
@@ -1,2418 +0,0 @@
-From 957a59a48a8d2e81ca3bb52aacd8d08b1b43dc74 Mon Sep 17 00:00:00 2001
-From: Jesse Hall <jessehall@google.com>
-Date: Mon, 23 Nov 2015 17:24:58 -0800
-Subject: [PATCH] vulkan: Implement VkSurfaceKHR and use vulkanext.h
-
-Between header version 0.183.0 and 0.184.0, a copy of vulkan.h which
-includes extensions was added to the registry, called vulkanext.h. The
-vulkan.h included here is actually the registry's vulkanext.h.
-(In a later upstream change, the no-extensions version was removed
-from the registry, and vulkanext.h was renamed vulkan.h, matching what
-we're doing here.)
-
-The version of the extensions picked up in the header file is later
-than the ones used in the previous SDK, so this change also updates
-our implementation to the extension versions included in the header.
-The main change is replacing the VkSurfaceDescriptionKHR structure
-with a VkSurfaceKHR object.
-
-Change-Id: I18fa5a269db0fcdbdbde3e9304167bc15e456f85
----
- vulkan/api/platform.api                            |  23 +
- vulkan/api/vulkan.api                              | 469 ++++++++++++++++-----
- .../include/vulkan/vk_ext_khr_device_swapchain.h   | 210 ---------
- vulkan/include/vulkan/vk_ext_khr_swapchain.h       | 153 -------
- vulkan/include/vulkan/vk_platform.h                |  28 ++
- vulkan/include/vulkan/vulkan.h                     | 432 +++++++++++++++++++
- vulkan/libvulkan/entry.cpp                         |  34 +-
- vulkan/libvulkan/entry.cpp.tmpl                    |  22 +-
- vulkan/libvulkan/get_proc_addr.cpp                 |   6 +
- vulkan/libvulkan/get_proc_addr.cpp.tmpl            |  39 +-
- vulkan/libvulkan/loader.cpp                        |  23 +-
- vulkan/libvulkan/loader.h                          |  38 +-
- vulkan/libvulkan/swapchain.cpp                     | 239 +++++------
- 13 files changed, 1062 insertions(+), 654 deletions(-)
- delete mode 100644 vulkan/include/vulkan/vk_ext_khr_device_swapchain.h
- delete mode 100644 vulkan/include/vulkan/vk_ext_khr_swapchain.h
-
-diff --git a/vulkan/api/platform.api b/vulkan/api/platform.api
-index 23f649d..889ac2c 100644
---- a/vulkan/api/platform.api
-+++ b/vulkan/api/platform.api
-@@ -22,3 +22,26 @@
- // Platform types, as defined or included in vk_platform.h
- 
- type u64 size_t
-+
-+// VK_USE_PLATFORM_X11_KHR
-+@internal class Display {}
-+@internal class Window {}
-+
-+// VK_USE_PLATFORM_XCB_KHR
-+@internal class xcb_connection_t {}
-+@internal type u32 xcb_window_t
-+
-+// VK_USE_PLATFORM_WAYLAND_KHR
-+@internal class wl_display {}
-+@internal class wl_surface {}
-+
-+// VK_USE_PLATFORM_MIR_KHR
-+@internal class MirConnection {}
-+@internal class MirSurface {}
-+
-+// VK_USE_PLATFORM_ANDROID_KHR
-+@internal class ANativeWindow {}
-+
-+// VK_USE_PLATFORM_WIN32_KHR
-+@internal type void* HINSTANCE
-+@internal type void* HWND
-diff --git a/vulkan/api/vulkan.api b/vulkan/api/vulkan.api
-index 175e353..878cf44 100644
---- a/vulkan/api/vulkan.api
-+++ b/vulkan/api/vulkan.api
-@@ -45,6 +45,46 @@ define VK_FALSE       0
- // API keyword, but needs special handling by some templates
- define NULL_HANDLE 0
- 
-+@extension("VK_EXT_KHR_surface") define VK_EXT_KHR_SURFACE_REVISION                     19
-+@extension("VK_EXT_KHR_surface") define VK_EXT_KHR_SURFACE_EXTENSION_NUMBER             1
-+@extension("VK_EXT_KHR_surface") define VK_EXT_KHR_SURFACE_EXTENSION_NAME               "VK_EXT_KHR_surface"
-+
-+@extension("VK_EXT_KHR_swapchain") define VK_EXT_KHR_SWAPCHAIN_REVISION                 59
-+@extension("VK_EXT_KHR_swapchain") define VK_EXT_KHR_SWAPCHAIN_EXTENSION_NUMBER         2
-+@extension("VK_EXT_KHR_swapchain") define VK_EXT_KHR_SWAPCHAIN_EXTENSION_NAME           "VK_EXT_KHR_swapchain"
-+
-+@extension("VK_EXT_KHR_display") define VK_EXT_KHR_DISPLAY_REVISION                     16
-+@extension("VK_EXT_KHR_display") define VK_EXT_KHR_DISPLAY_EXTENSION_NUMBER             3
-+@extension("VK_EXT_KHR_display") define VK_EXT_KHR_DISPLAY_EXTENSION_NAME               "VK_EXT_KHR_display"
-+
-+@extension("VK_EXT_KHR_display_swapchain") define VK_EXT_KHR_DISPLAY_REVISION           14
-+@extension("VK_EXT_KHR_display_swapchain") define VK_EXT_KHR_DISPLAY_EXTENSION_NUMBER   4
-+@extension("VK_EXT_KHR_display_swapchain") define VK_EXT_KHR_DISPLAY_EXTENSION_NAME     "VK_EXT_KHR_display_swapchain"
-+
-+@extension("VK_EXT_KHR_x11_surface") define VK_EXT_KHR_X11_SURFACE_REVISION             1
-+@extension("VK_EXT_KHR_x11_surface") define VK_EXT_KHR_X11_SURFACE_NUMBER               4
-+@extension("VK_EXT_KHR_x11_surface") define VK_EXT_KHR_X11_SURFACE_NAME                 "VK_EXT_KHR_x11_surface"
-+
-+@extension("VK_EXT_KHR_xcb_surface") define VK_EXT_KHR_XCB_SURFACE_REVISION             1
-+@extension("VK_EXT_KHR_xcb_surface") define VK_EXT_KHR_XCB_SURFACE_NUMBER               6
-+@extension("VK_EXT_KHR_xcb_surface") define VK_EXT_KHR_XCB_SURFACE_NAME                 "VK_EXT_KHR_xcb_surface"
-+
-+@extension("VK_EXT_KHR_wayland_surface") define VK_EXT_KHR_WAYLAND_SURFACE_REVISION     1
-+@extension("VK_EXT_KHR_wayland_surface") define VK_EXT_KHR_WAYLAND_SURFACE_NUMBER       7
-+@extension("VK_EXT_KHR_wayland_surface") define VK_EXT_KHR_WAYLAND_SURFACE_NAME         "VK_EXT_KHR_wayland_surface"
-+
-+@extension("VK_EXT_KHR_mir_surface") define VK_EXT_KHR_MIR_SURFACE_REVISION             1
-+@extension("VK_EXT_KHR_mir_surface") define VK_EXT_KHR_MIR_SURFACE_NUMBER               8
-+@extension("VK_EXT_KHR_mir_surface") define VK_EXT_KHR_MIR_SURFACE_NAME                 "VK_EXT_KHR_mir_surface"
-+
-+@extension("VK_EXT_KHR_android_surface") define VK_EXT_KHR_ANDROID_SURFACE_REVISION     1
-+@extension("VK_EXT_KHR_android_surface") define VK_EXT_KHR_ANDROID_SURFACE_NUMBER       8
-+@extension("VK_EXT_KHR_android_surface") define VK_EXT_KHR_ANDROID_SURFACE_NAME         "VK_EXT_KHR_android_surface"
-+
-+@extension("VK_EXT_KHR_win32_surface") define VK_EXT_KHR_WIN32_SURFACE_REVISION         1
-+@extension("VK_EXT_KHR_win32_surface") define VK_EXT_KHR_WIN32_SURFACE_NUMBER           9
-+@extension("VK_EXT_KHR_win32_surface") define VK_EXT_KHR_WIN32_SURFACE_NAME             "VK_EXT_KHR_win32_surface"
-+
- 
- /////////////
- //  Types  //
-@@ -84,7 +124,13 @@ type u32 VkSampleMask
- @nonDispatchHandle type u64 VkFramebuffer
- @nonDispatchHandle type u64 VkRenderPass
- @nonDispatchHandle type u64 VkPipelineCache
--@nonDispatchHandle type u64 VkSwapchainKHR
-+
-+@extension("VK_EXT_KHR_surface")    @nonDispatchHandle type u64 VkSurfaceKHR
-+
-+@extension("VK_EXT_KHR_swapchain")  @nonDispatchHandle type u64 VkSwapchainKHR
-+
-+@extension("VK_EXT_KHR_display")    @nonDispatchHandle type u64 VkDisplayKHR
-+@extension("VK_EXT_KHR_display")    @nonDispatchHandle type u64 VkDisplayModeKHR
- 
- 
- /////////////
-@@ -101,6 +147,9 @@ enum VkImageLayout {
-     VK_IMAGE_LAYOUT_TRANSFER_SOURCE_OPTIMAL                 = 0x00000006,   /// Optimal layout when image is used only as source of transfer operations
-     VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL            = 0x00000007,   /// Optimal layout when image is used only as destination of transfer operations
-     VK_IMAGE_LAYOUT_PREINITIALIZED                          = 0x00000008,   /// Initial layout used when the data is populated by the CPU
-+
-+    //@extension("VK_EXT_KHR_swapchain")
-+    VK_IMAGE_LAYOUT_PRESENT_SOURCE_KHR                      = 0xc0000802,
- }
- 
- enum VkAttachmentLoadOp {
-@@ -568,6 +617,17 @@ enum VkStructureType {
-     VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO                  = 45,
-     VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO        = 46,
-     VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOC_INFO                 = 47,
-+
-+    //@extension("VK_EXT_KHR_swapchain")
-+    VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR                 = 0xc0000801,
-+
-+    //@extension("VK_EXT_KHR_display")
-+    VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR              = 0xc0000c00,
-+    VK_STRUCTURE_TYPE_SURFACE_DESCRIPTION_DISPLAY_PLAN_KHR      = 0xc0000c01,
-+
-+    //@extension("VK_EXT_KHR_display_swapchain")
-+    VK_STRUCTURE_TYPE_DISPLAY_SWAPCHAIN_CREATE_INFO_KHR         = 0xc0001000,
-+    VK_STRUCTURE_TYPE_DISPLAY_DISPLAY_PRESENT_INFO_KHR          = 0xc0001001,
- }
- 
- enum VkRenderPassContents {
-@@ -586,6 +646,9 @@ enum VkResult {
-     VK_EVENT_RESET                                          = 0x00000004,
-     VK_INCOMPLETE                                           = 0x00000005,
- 
-+    //@extension("VK_EXT_KHR_swapchain")
-+    VK_SUBOPTIMAL_KHR                                       = 0x40000403,
-+
-     // Error codes (negative values)
-     VK_ERROR_OUT_OF_HOST_MEMORY                             = 0xFFFFFFFF,
-     VK_ERROR_OUT_OF_DEVICE_MEMORY                           = 0xFFFFFFFE,
-@@ -596,6 +659,16 @@ enum VkResult {
-     VK_ERROR_EXTENSION_NOT_PRESENT                          = 0xFFFFFFF9,
-     VK_ERROR_FEATURE_NOT_PRESENT                            = 0xFFFFFFF8,
-     VK_ERROR_INCOMPATIBLE_DRIVER                            = 0xFFFFFFF7,
-+
-+    //@extension("VK_EXT_KHR_swapchain")
-+    VK_ERROR_OUT_OF_DATE_KHR                                = 0xC0000804,
-+
-+    //@extension("VK_EXT_KHR_display_swapchain")
-+    VK_ERROR_INCOMPATIBLE_DISPLAY_KHR                       = 0xC0001002,
-+
-+    //@extension("VK_EXT_KHR_android_surface")
-+    VK_ERROR_INVALID_ANDROID_WINDOW_KHR                     = 0xC002400,
-+    VK_ERROR_ANDROID_WINDOW_IN_USE_KHR                      = 0xC002401,
- }
- 
- enum VkDynamicState {
-@@ -610,11 +683,7 @@ enum VkDynamicState {
-     VK_DYNAMIC_STATE_STENCIL_REFERENCE                      = 0x00000008,
- }
- 
--//////////////////
--//  Extensions  //
--//////////////////
--
--@extension("VK_EXT_KHR_swapchain")
-+@extension("VK_EXT_KHR_surface")
- enum VkSurfaceTransformKHR {
-     VK_SURFACE_TRANSFORM_NONE_KHR                           = 0x00000000,
-     VK_SURFACE_TRANSFORM_ROT90_KHR                          = 0x00000001,
-@@ -628,23 +697,13 @@ enum VkSurfaceTransformKHR {
- }
- 
- @extension("VK_EXT_KHR_swapchain")
--enum VkPlatformKHR {
--    VK_PLATFORM_WIN32_KHR                                   = 0x00000000,
--    VK_PLATFORM_X11_KHR                                     = 0x00000001,
--    VK_PLATFORM_XCB_KHR                                     = 0x00000002,
--    VK_PLATFORM_ANDROID_KHR                                 = 0x00000003,
--    VK_PLATFORM_WAYLAND_KHR                                 = 0x00000004,
--    VK_PLATFORM_MIR_KHR                                     = 0x00000005,
--}
--
--@extension("VK_EXT_KHR_device_swapchain")
- enum VkPresentModeKHR {
-     VK_PRESENT_MODE_IMMEDIATE_KHR                           = 0x00000000,
-     VK_PRESENT_MODE_MAILBOX_KHR                             = 0x00000001,
-     VK_PRESENT_MODE_FIFO_KHR                                = 0x00000002,
- }
- 
--@extension("VK_EXT_KHR_device_swapchain")
-+@extension("VK_EXT_KHR_swapchain")
- enum VkColorSpaceKHR {
-     VK_COLORSPACE_SRGB_NONLINEAR_KHR                        = 0x00000000,
- }
-@@ -941,10 +1000,6 @@ bitfield VkStencilFaceFlags {
-     VK_STENCIL_FACE_BACK_BIT                                = 0x00000002,   /// Back face
- }
- 
--//////////////////
--//  Extensions  //
--//////////////////
--
- @extension("VK_EXT_KHR_swapchain")
- bitfield VkSurfaceTransformFlagsKHR {
-     VK_SURFACE_TRANSFORM_NONE_BIT_KHR                       = 0x00000001,
-@@ -958,6 +1013,14 @@ bitfield VkSurfaceTransformFlagsKHR {
-     VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR                    = 0x00000100,
- }
- 
-+@extension("VK_EXT_KHR_display")
-+bitfield VkDisplayPlaneAlphaFlagsKHR {
-+    VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR                   = 0x00000001,
-+    VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR                = 0x00000002,
-+    VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR  = 0x00000004,
-+}
-+
-+
- //////////////////
- //  Structures  //
- //////////////////
-@@ -1995,73 +2058,136 @@ class VkDispatchIndirectCmd {
-     u32                                         z
- }
- 
--//////////////////
--//  Extensions  //
--//////////////////
--
--@extension("VK_EXT_KHR_device_swapchain")
-+@extension("VK_EXT_KHR_swapchain")
- class VkSurfacePropertiesKHR {
--    u32                                     minImageCount
--    u32                                     maxImageCount
--    VkExtent2D                              currentExtent
--    VkExtent2D                              minImageExtent
--    VkExtent2D                              maxImageExtent
--    VkSurfaceTransformFlagsKHR              supportedTransforms
--    VkSurfaceTransformKHR                   currentTransform
--    u32                                     maxImageArraySize
--    VkImageUsageFlags                       supportedUsageFlags
--}
--
--@extension("VK_EXT_KHR_device_swapchain")
--class VkSurfaceFormatKHR {
--    VkFormat                                format
--    VkColorSpaceKHR                         colorSpace
-+    u32                                         minImageCount
-+    u32                                         maxImageCount
-+    VkExtent2D                                  currentExtent
-+    VkExtent2D                                  minImageExtent
-+    VkExtent2D                                  maxImageExtent
-+    VkSurfaceTransformFlagsKHR                  supportedTransforms
-+    VkSurfaceTransformKHR                       currentTransform
-+    u32                                         maxImageArraySize
-+    VkImageUsageFlags                           supportedUsageFlags
- }
- 
--@extension("VK_EXT_KHR_device_swapchain")
--class VkSwapchainCreateInfoKHR {
--    VkStructureType                          sType
--    const void*                              pNext
--    const VkSurfaceDescriptionKHR*           pSurfaceDescription
--    u32                                      minImageCount
--    VkFormat                                 imageFormat
--    VkColorSpaceKHR                          imageColorSpace
--    VkExtent2D                               imageExtent
--    VkImageUsageFlags                        imageUsageFlags
--    VkSurfaceTransformKHR                    preTransform
--    u32                                      imageArraySize
--    VkSharingMode                            sharingMode
--    u32                                      queueFamilyCount
--    const u32*                               pQueueFamilyIndices
--    VkPresentModeKHR                         presentMode
--    VkSwapchainKHR                           oldSwapchain
--    VkBool32                                 clipped
--}
--
--@extension("VK_EXT_KHR_device_swapchain")
--class VkPresentInfoKHR {
--    VkStructureType                          sType
--    const void*                              pNext
--    u32                                      swapchainCount
--    const VkSwapchainKHR*                    swapchains
--    const u32*                               imageIndices
-+@extension("VK_EXT_KHR_swapchain")
-+class VkSurfaceFormatKHR {
-+    VkFormat                                    format
-+    VkColorSpaceKHR                             colorSpace
- }
- 
- @extension("VK_EXT_KHR_swapchain")
--class VkSurfaceDescriptionKHR {
--    VkStructureType                          sType
--    const void*                              pNext
-+class VkSwapchainCreateInfoKHR {
-+    VkStructureType                             sType
-+    const void*                                 pNext
-+    VkSurfaceKHR                                surface
-+    u32                                         minImageCount
-+    VkFormat                                    imageFormat
-+    VkColorSpaceKHR                             imageColorSpace
-+    VkExtent2D                                  imageExtent
-+    VkImageUsageFlags                           imageUsageFlags
-+    VkSurfaceTransformKHR                       preTransform
-+    u32                                         imageArraySize
-+    VkSharingMode                               sharingMode
-+    u32                                         queueFamilyCount
-+    const u32*                                  pQueueFamilyIndices
-+    VkPresentModeKHR                            presentMode
-+    VkSwapchainKHR                              oldSwapchain
-+    VkBool32                                    clipped
- }
- 
- @extension("VK_EXT_KHR_swapchain")
--class VkSurfaceDescriptionWindowKHR {
--    VkStructureType                         sType
--    const void*                             pNext
--    VkPlatformKHR                           platform
--    void*                                   pPlatformHandle
--    void*                                   pPlatformWindow
-+class VkPresentInfoKHR {
-+    VkStructureType                             sType
-+    const void*                                 pNext
-+    u32                                         swapchainCount
-+    const VkSwapchainKHR*                       swapchains
-+    const u32*                                  imageIndices
-+}
-+
-+@extension("VK_EXT_KHR_display")
-+class VkDisplayPropertiesKHR {
-+    VkDisplayKHR                                display
-+    const char*                                 displayName
-+    VkExtent2D                                  physicalDimensions
-+    VkExtent2D                                  physicalResolution
-+    VkSurfaceTransformFlagsKHR                  supportedTransforms
-+    u32                                         planeCount
-+    VkBool32                                    planeReorderPossible
-+}
-+
-+@extension("VK_EXT_KHR_display")
-+class VkDisplayTimingKHR {
-+    u32                                         pixelClock
-+    VkExtent2D                                  visibleRegion
-+    VkExtent2D                                  totalRegion
-+    VkExtent2D                                  physicalDimensions
-+    u32                                         hSyncStart
-+    u32                                         hSyncEnd
-+    u32                                         vSyncStart
-+    u32                                         vSyncEnd
-+    VkBool32                                    interlaced
-+    VkBool32                                    doublescan
-+    VkBool32                                    hSyncPos
-+    VkBool32                                    vSyncPos
-+}
-+
-+@extension("VK_EXT_KHR_display")
-+class VkDisplayModePropertiesKHR {
-+    VkDisplayModeKHR                            displayMode
-+    VkDisplayTimingKHR                          timing
-+}
-+
-+@extension("VK_EXT_KHR_display")
-+class VkDisplayModeCreateInfoKHR {
-+    VkStructureType                             sType
-+    const void*                                 pNext
-+    VkDisplayTimingKHR                          timing
-+}
-+
-+@extension("VK_EXT_KHR_display")
-+class VkDisplayPlanePropertiesKHR {
-+    VkDisplayPlaneAlphaFlagsKHR                 supportedAlpha
-+    VkOffset2D                                  minSrcPosition
-+    VkOffset2D                                  maxSrcPosition
-+    VkExtent2D                                  minSrcExtent
-+    VkExtent2D                                  maxSrcExtent
-+    VkOffset2D                                  minDstPosition
-+    VkOffset2D                                  maxDstPosition
-+    VkExtent2D                                  minDstExtent
-+    VkExtent2D                                  maxDstExtent
-+}
-+
-+@extension("VK_EXT_KHR_display")
-+class VkSurfaceDescriptionDisplayPlaneKHR {
-+    VkStructureType                             sType
-+    const void*                                 pNext
-+    VkDisplayModeKHR                            displayMode
-+    u32                                         planeIndex
-+    u32                                         planeStackIndex
-+    VkSurfaceTransformKHR                       transform
-+    f32                                         globalAlpha
-+    VkDisplayPlaneAlphaFlagsKHR                 alphaMode
-+    VkExtent2D                                  imageSize
-+}
-+
-+@extension("VK_EXT_KHR_display_swapchain")
-+class VkDisplaySwapchainCreateInfoKHR {
-+    VkStructureType                             sType
-+    const void*                                 pNext
-+    const VkSwapchainCreateInfoKHR*             pNextSwapchainCreateInfo
-+}
-+
-+@extension("VK_EXT_KHR_display_swapchain")
-+class VkDisplayPresentInfoKHR {
-+    VkStructureType                             sType
-+    const void*                                 pNext
-+    VkRect2D                                    srcRect
-+    VkRect2D                                    dstRect
- }
- 
-+
- ////////////////
- //  Commands  //
- ////////////////
-@@ -4296,29 +4422,34 @@ cmd void vkCmdExecuteCommands(
-     }
- }
- 
--////////////////
--// Extensions //
--////////////////
-+@extension("VK_EXT_KHR_surface")
-+cmd void vkDestroySurfaceKHR(
-+        VkInstance                                  instance,
-+        VkSurfaceKHR                                surface) {
-+    instanceObject := GetInstance(instance)
-+    surfaceObject := GetSurface(surface)
-+    assert(surfaceObject.instance == instance)
- 
--@extension("VK_EXT_KHR_swapchain")
--cmd VkResult vkGetPhysicalDeviceSurfaceSupportKHR(
--        VkPhysicalDevice                        physicalDevice,
--        u32                                     queueFamilyIndex,
--        const VkSurfaceDescriptionKHR*          pSurfaceDescription,
--        VkBool32*                               pSupported) {
-+    State.Surfaces[surface] = null
-+}
-+
-+@extension("VK_EXT_KHR_surface")
-+cmd VkBool32 vkGetPhysicalDeviceSurfaceSupportKHR(
-+        VkPhysicalDevice                            physicalDevice,
-+        u32                                         queueFamilyIndex,
-+        VkSurfaceKHR                                surface) {
-     physicalDeviceObject := GetPhysicalDevice(physicalDevice)
- 
--    supported := ?
--    pSupported[0] = supported
-+    //supported := ?
- 
--    return ?
-+    return ?//supported
- }
- 
--@extension("VK_EXT_KHR_device_swapchain")
-+@extension("VK_EXT_KHR_swapchain")
- cmd VkResult vkGetSurfacePropertiesKHR(
--        VkDevice                                 device,
--        const VkSurfaceDescriptionKHR*           pSurfaceDescription,
--        VkSurfacePropertiesKHR*                  pSurfaceProperties) {
-+        VkDevice                                    device,
-+        VkSurfaceKHR                                surface,
-+        VkSurfacePropertiesKHR*                     pSurfaceProperties) {
-     deviceObject := GetDevice(device)
- 
-     surfaceProperties := ?
-@@ -4327,12 +4458,12 @@ cmd VkResult vkGetSurfacePropertiesKHR(
-     return ?
- }
- 
--@extension("VK_EXT_KHR_device_swapchain")
-+@extension("VK_EXT_KHR_swapchain")
- cmd VkResult vkGetSurfaceFormatsKHR(
--        VkDevice                                 device,
--        const VkSurfaceDescriptionKHR*           pSurfaceDescription,
--        u32*                                     pCount,
--        VkSurfaceFormatKHR*                      pSurfaceFormats) {
-+        VkDevice                                    device,
-+        VkSurfaceKHR                                surface,
-+        u32*                                        pCount,
-+        VkSurfaceFormatKHR*                         pSurfaceFormats) {
-     deviceObject := GetDevice(device)
- 
-     count := as!u32(?)
-@@ -4347,12 +4478,12 @@ cmd VkResult vkGetSurfaceFormatsKHR(
-     return ?
- }
- 
--@extension("VK_EXT_KHR_device_swapchain")
-+@extension("VK_EXT_KHR_swapchain")
- cmd VkResult vkGetSurfacePresentModesKHR(
--        VkDevice                                 device,
--        const VkSurfaceDescriptionKHR*           pSurfaceDescription,
--        u32*                                     pCount,
--        VkPresentModeKHR*                        pPresentModes) {
-+        VkDevice                                    device,
-+        VkSurfaceKHR                                surface,
-+        u32*                                        pCount,
-+        VkPresentModeKHR*                           pPresentModes) {
-     deviceObject := GetDevice(device)
- 
-     count := as!u32(?)
-@@ -4367,12 +4498,12 @@ cmd VkResult vkGetSurfacePresentModesKHR(
-     return ?
- }
- 
--@extension("VK_EXT_KHR_device_swapchain")
-+@extension("VK_EXT_KHR_swapchain")
- cmd VkResult vkCreateSwapchainKHR(
-         VkDevice                                 device,
-         const VkSwapchainCreateInfoKHR*          pCreateInfo,
-         VkSwapchainKHR*                          pSwapchain) {
--    //assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR)
-+    assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR)
-     deviceObject := GetDevice(device)
- 
-     swapchain := ?
-@@ -4382,8 +4513,8 @@ cmd VkResult vkCreateSwapchainKHR(
-     return ?
- }
- 
--@extension("VK_EXT_KHR_device_swapchain")
--cmd VkResult vkDestroySwapchainKHR(
-+@extension("VK_EXT_KHR_swapchain")
-+cmd void vkDestroySwapchainKHR(
-         VkDevice                                 device,
-         VkSwapchainKHR                           swapchain) {
-     deviceObject := GetDevice(device)
-@@ -4391,11 +4522,9 @@ cmd VkResult vkDestroySwapchainKHR(
-     assert(swapchainObject.device == device)
- 
-     State.Swapchains[swapchain] = null
--
--    return ?
- }
- 
--@extension("VK_EXT_KHR_device_swapchain")
-+@extension("VK_EXT_KHR_swapchain")
- cmd VkResult vkGetSwapchainImagesKHR(
-         VkDevice                                 device,
-         VkSwapchainKHR                           swapchain,
-@@ -4410,20 +4539,19 @@ cmd VkResult vkGetSwapchainImagesKHR(
-     for i in (0 .. count) {
-         swapchainImage := ?
-         swapchainImages[i] = swapchainImage
--        if !(swapchainImage in State.Images) {
--            State.Images[swapchainImage] = new!ImageObject(device: device)
--        }
-+        State.Images[swapchainImage] = new!ImageObject(device: device)
-     }
- 
-     return ?
- }
- 
--@extension("VK_EXT_KHR_device_swapchain")
-+@extension("VK_EXT_KHR_swapchain")
- cmd VkResult vkAcquireNextImageKHR(
-         VkDevice                                 device,
-         VkSwapchainKHR                           swapchain,
-         u64                                      timeout,
-         VkSemaphore                              semaphore,
-+        VkFence                                  fence,
-         u32*                                     pImageIndex) {
-     deviceObject := GetDevice(device)
-     swapchainObject := GetSwapchain(swapchain)
-@@ -4434,7 +4562,7 @@ cmd VkResult vkAcquireNextImageKHR(
-     return ?
- }
- 
--@extension("VK_EXT_KHR_device_swapchain")
-+@extension("VK_EXT_KHR_swapchain")
- cmd VkResult vkQueuePresentKHR(
-         VkQueue                                  queue,
-         VkPresentInfoKHR*                        pPresentInfo) {
-@@ -4446,6 +4574,107 @@ cmd VkResult vkQueuePresentKHR(
-     return ?
- }
- 
-+@extension("VK_EXT_KHR_display")
-+cmd VkResult vkGetPhysicalDeviceDisplayPropertiesKHR(
-+        VkPhysicalDevice                        physicalDevice,
-+        u32*                                    count,
-+        VkDisplayPropertiesKHR*                 pProperties) {
-+    physicalDeviceObject := GetPhysicalDevice(physicalDevice)
-+    return ?
-+}
-+
-+@extension("VK_EXT_KHR_display")
-+cmd VkResult vkGetDisplayModePropertiesKHR(
-+        VkPhysicalDevice                        physicalDevice,
-+        VkDisplayKHR                            display,
-+        u32*                                    pCount,
-+        VkDisplayModePropertiesKHR*             pModeProperties) {
-+    physicalDeviceObject := GetPhysicalDevice(physicalDevice)
-+    return ?
-+}
-+
-+@extension("VK_EXT_KHR_display")
-+cmd VkResult vkCreateDisplayModeKHR(
-+        VkPhysicalDevice                        physicalDevice,
-+        VkDisplayKHR                            display,
-+        const VkDisplayModeCreateInfoKHR*       pCreateInfo,
-+        VkDisplayModeKHR*                       pMode) {
-+    physicalDeviceObject := GetPhysicalDevice(physicalDevice)
-+    return ?
-+}
-+
-+@extension("VK_EXT_KHR_display")
-+cmd VkResult vkGetDisplayPlanePropertiesKHR(
-+        VkPhysicalDevice                        physicalDevice,
-+        VkDisplayKHR                            display,
-+        VkDisplayModeKHR                        mode,
-+        u32                                     planeIndex,
-+        VkDisplayPlanePropertiesKHR*            pProperties) {
-+    physicalDeviceObject := GetPhysicalDevice(physicalDevice)
-+    return ?
-+}
-+
-+@extension("VK_EXT_KHR_x11_surface")
-+cmd VkResult vkCreateX11SurfaceKHR(
-+        VkInstance                              instance,
-+        platform.Display*                       dpy,
-+        platform.Window                         root,
-+        platform.Window                         window,
-+        VkSurfaceKHR*                           pSurface) {
-+    instanceObject := GetInstance(instance)
-+    return ?
-+}
-+
-+@extension("VK_EXT_KHR_xcb_surface")
-+cmd VkResult vkCreateXCBSurfaceKHR(
-+        VkInstance                              instance,
-+        platform.xcb_connection_t*              connection,
-+        platform.xcb_window_t                   root,
-+        platform.xcb_window_t                   window,
-+        VkSurfaceKHR*                           pSurface) {
-+    instanceObject := GetInstance(instance)
-+    return ?
-+}
-+
-+@extension("VK_EXT_KHR_wayland_surface")
-+cmd VkResult vkCreateWaylandSurfaceKHR(
-+        VkInstance                              instance,
-+        platform.wl_display*                    display,
-+        platform.wl_surface*                    surface,
-+        VkSurfaceKHR*                           pSurface) {
-+    instanceObject := GetInstance(instance)
-+    return ?
-+}
-+
-+@extension("VK_EXT_KHR_mir_surface")
-+cmd VkResult vkCreateMirSurfaceKHR(
-+        VkInstance                              instance,
-+        platform.MirConnection*                 connection,
-+        platform.MirSurface*                    mirSurface,
-+        VkSurfaceKHR*                           pSurface) {
-+    instanceObject := GetInstance(instance)
-+    return ?
-+}
-+
-+@extension("VK_EXT_KHR_android_surface")
-+cmd VkResult vkCreateAndroidSurfaceKHR(
-+        VkInstance                              instance,
-+        platform.ANativeWindow*                 window
-+        VkSurfaceKHR*                           pSurface) {
-+    instanceObject := GetInstance(instance)
-+    return ?
-+}
-+
-+@extension("VK_EXT_KHR_win32_surface")
-+cmd VkResult vkCreateWin32SurfaceKHR(
-+        VkInstance                              instance,
-+        platform.HINSTANCE                      hinstance,
-+        platform.HWND                           hwnd,
-+        VkSurfaceKHR*                           pSurface) {
-+    instanceObject := GetInstance(instance)
-+    return ?
-+}
-+
- 
- ////////////////
- // Validation //
-@@ -4490,6 +4719,7 @@ StateObject State
-     map!(VkRenderPass,               ref!RenderPassObject)               RenderPasses
-     map!(VkPipelineCache,            ref!PipelineCacheObject)            PipelineCaches
-     map!(VkCmdPool,                  ref!CmdPoolObject)                  CmdPools
-+    map!(VkSurfaceKHR,               ref!SurfaceObject)                  Surfaces
-     map!(VkSwapchainKHR,             ref!SwapchainObject)                Swapchains
- }
- 
-@@ -4609,6 +4839,10 @@ StateObject State
-     VkDevice      device
- }
- 
-+@internal class SurfaceObject {
-+    VkInstance    instance
-+}
-+
- @internal class SwapchainObject {
-     VkDevice      device
- }
-@@ -4743,6 +4977,11 @@ macro ref!CmdPoolObject GetCmdPool(VkCmdPool cmdPool) {
-     return State.CmdPools[cmdPool]
- }
- 
-+macro ref!SurfaceObject GetSurface(VkSurfaceKHR surface) {
-+    assert(surface in State.Surfaces)
-+    return State.Surfaces[surface]
-+}
-+
- macro ref!SwapchainObject GetSwapchain(VkSwapchainKHR swapchain) {
-     assert(swapchain in State.Swapchains)
-     return State.Swapchains[swapchain]
-diff --git a/vulkan/include/vulkan/vk_ext_khr_device_swapchain.h b/vulkan/include/vulkan/vk_ext_khr_device_swapchain.h
-deleted file mode 100644
-index 3bf73c8..0000000
---- a/vulkan/include/vulkan/vk_ext_khr_device_swapchain.h
-+++ /dev/null
-@@ -1,210 +0,0 @@
--//
--// File: vk_ext_khr_device_swapchain.h
--//
--/*
--** Copyright (c) 2015 The Khronos Group Inc.
--**
--** Permission is hereby granted, free of charge, to any person obtaining a
--** copy of this software and/or associated documentation files (the
--** "Materials"), to deal in the Materials without restriction, including
--** without limitation the rights to use, copy, modify, merge, publish,
--** distribute, sublicense, and/or sell copies of the Materials, and to
--** permit persons to whom the Materials are furnished to do so, subject to
--** the following conditions:
--**
--** The above copyright notice and this permission notice shall be included
--** in all copies or substantial portions of the Materials.
--**
--** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
--** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
--** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
--** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
--** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
--** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
--** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
--*/
--
--#ifndef __VK_EXT_KHR_DEVICE_SWAPCHAIN_H__
--#define __VK_EXT_KHR_DEVICE_SWAPCHAIN_H__
--
--#include "vulkan.h"
--
--#define VK_EXT_KHR_DEVICE_SWAPCHAIN_REVISION         53
--#define VK_EXT_KHR_DEVICE_SWAPCHAIN_EXTENSION_NUMBER 2
--#define VK_EXT_KHR_DEVICE_SWAPCHAIN_EXTENSION_NAME   "VK_EXT_KHR_device_swapchain"
--
--#ifdef __cplusplus
--extern "C"
--{
--#endif // __cplusplus
--
--// ------------------------------------------------------------------------------------------------
--// Objects
--
--VK_DEFINE_NONDISP_HANDLE(VkSwapchainKHR);
--
--// ------------------------------------------------------------------------------------------------
--// Enumeration constants
--
--#define VK_EXT_KHR_DEVICE_SWAPCHAIN_ENUM(type,id)    ((type)((int)0xc0000000 - VK_EXT_KHR_DEVICE_SWAPCHAIN_EXTENSION_NUMBER * -1024 + (id)))
--#define VK_EXT_KHR_DEVICE_SWAPCHAIN_ENUM_POSITIVE(type,id)    ((type)((int)0x40000000 + (VK_EXT_KHR_DEVICE_SWAPCHAIN_EXTENSION_NUMBER - 1) * 1024 + (id)))
--
--// Extend VkStructureType enum with extension specific constants
--#define VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR VK_EXT_KHR_DEVICE_SWAPCHAIN_ENUM(VkStructureType, 0)
--#define VK_STRUCTURE_TYPE_PRESENT_INFO_KHR VK_EXT_KHR_DEVICE_SWAPCHAIN_ENUM(VkStructureType, 1)
--
--// Extend VkImageLayout enum with extension specific constants
--#define VK_IMAGE_LAYOUT_PRESENT_SOURCE_KHR VK_EXT_KHR_DEVICE_SWAPCHAIN_ENUM(VkImageLayout, 2)
--
--// Extend VkResult enum with extension specific constants
--//  Return codes for successful operation execution
--#define VK_SUBOPTIMAL_KHR           VK_EXT_KHR_DEVICE_SWAPCHAIN_ENUM_POSITIVE(VkResult, 3)
--//  Error codes
--#define VK_ERROR_OUT_OF_DATE_KHR    VK_EXT_KHR_DEVICE_SWAPCHAIN_ENUM(VkResult, 4)
--
--// ------------------------------------------------------------------------------------------------
--// Enumerations
--
--typedef enum {
--    VK_PRESENT_MODE_IMMEDIATE_KHR = 0,
--    VK_PRESENT_MODE_MAILBOX_KHR = 1,
--    VK_PRESENT_MODE_FIFO_KHR = 2,
--    VK_PRESENT_MODE_BEGIN_RANGE_KHR = VK_PRESENT_MODE_IMMEDIATE_KHR,
--    VK_PRESENT_MODE_END_RANGE_KHR = VK_PRESENT_MODE_FIFO_KHR,
--    VK_PRESENT_MODE_NUM = (VK_PRESENT_MODE_FIFO_KHR - VK_PRESENT_MODE_IMMEDIATE_KHR + 1),
--    VK_PRESENT_MODE_MAX_ENUM_KHR = 0x7FFFFFFF
--} VkPresentModeKHR;
--
--typedef enum {
--    VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0x00000000,
--    VK_COLORSPACE_NUM = (VK_COLORSPACE_SRGB_NONLINEAR_KHR - VK_COLORSPACE_SRGB_NONLINEAR_KHR + 1),
--    VK_COLORSPACE_MAX_ENUM_KHR = 0x7FFFFFFF
--} VkColorSpaceKHR;
--
--// ------------------------------------------------------------------------------------------------
--// Flags
--
--// ------------------------------------------------------------------------------------------------
--// Structures
--
--typedef struct {
--    uint32_t                                minImageCount;      // Supported minimum number of images for the surface
--    uint32_t                                maxImageCount;      // Supported maximum number of images for the surface, 0 for unlimited
--
--    VkExtent2D                              currentExtent;      // Current image width and height for the surface, (-1, -1) if undefined
--    VkExtent2D                              minImageExtent;     // Supported minimum image width and height for the surface
--    VkExtent2D                              maxImageExtent;     // Supported maximum image width and height for the surface
--
--    VkSurfaceTransformFlagsKHR              supportedTransforms;// 1 or more bits representing the transforms supported
--    VkSurfaceTransformKHR                   currentTransform;   // The surface's current transform relative to the device's natural orientation
--
--    uint32_t                                maxImageArraySize;  // Supported maximum number of image layers for the surface
--
--    VkImageUsageFlags                       supportedUsageFlags;// Supported image usage flags for the surface
--} VkSurfacePropertiesKHR;
--
--typedef struct {
--    VkFormat                                format;             // Supported pair of rendering format
--    VkColorSpaceKHR                         colorSpace;         // and colorspace for the surface
--} VkSurfaceFormatKHR;
--
--typedef struct {
--    VkStructureType                          sType;             // Must be VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR
--    const void*                              pNext;             // Pointer to next structure
--
--    const VkSurfaceDescriptionKHR*           pSurfaceDescription;// describes the swap chain's target surface
--
--    uint32_t                                 minImageCount;     // Minimum number of presentation images the application needs
--    VkFormat                                 imageFormat;       // Format of the presentation images
--    VkColorSpaceKHR                          imageColorSpace;   // Colorspace of the presentation images
--    VkExtent2D                               imageExtent;       // Dimensions of the presentation images
--    VkImageUsageFlags                        imageUsageFlags;   // Bits indicating how the presentation images will be used
--    VkSurfaceTransformKHR                    preTransform;      // The transform, relative to the device's natural orientation, applied to the image content prior to presentation
--    uint32_t                                 imageArraySize;    // Determines the number of views for multiview/stereo presentation
--
--    VkSharingMode                            sharingMode;       // Sharing mode used for the presentation images
--    uint32_t                                 queueFamilyCount;  // Number of queue families having access to the images in case of concurrent sharing mode
--    const uint32_t*                          pQueueFamilyIndices; // Array of queue family indices having access to the images in case of concurrent sharing mode
--
--    VkPresentModeKHR                         presentMode;       // Which presentation mode to use for presents on this swap chain
--
--    VkSwapchainKHR                           oldSwapchain;      // Existing swap chain to replace, if any
--
--    VkBool32                                 clipped;           // Specifies whether presentable images may be affected by window clip regions
--} VkSwapchainCreateInfoKHR;
--
--typedef struct {
--    VkStructureType                          sType;             // Must be VK_STRUCTURE_TYPE_PRESENT_INFO_KHR
--    const void*                              pNext;             // Pointer to next structure
--    uint32_t                                 swapchainCount;    // Number of swap chains to present in this call
--    const VkSwapchainKHR*                    swapchains;        // Swap chains to present an image from
--    const uint32_t*                          imageIndices;      // Indices of which swapchain images to present
--} VkPresentInfoKHR;
--
--// ------------------------------------------------------------------------------------------------
--// Function types
--
--typedef VkResult (VKAPI *PFN_vkGetSurfacePropertiesKHR)(VkDevice device, const VkSurfaceDescriptionKHR* pSurfaceDescription, VkSurfacePropertiesKHR* pSurfaceProperties);
--typedef VkResult (VKAPI *PFN_vkGetSurfaceFormatsKHR)(VkDevice device, const VkSurfaceDescriptionKHR* pSurfaceDescription, uint32_t* pCount, VkSurfaceFormatKHR* pSurfaceFormats);
--typedef VkResult (VKAPI *PFN_vkGetSurfacePresentModesKHR)(VkDevice device, const VkSurfaceDescriptionKHR* pSurfaceDescription, uint32_t* pCount, VkPresentModeKHR* pPresentModes);
--typedef VkResult (VKAPI *PFN_vkCreateSwapchainKHR)(VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, VkSwapchainKHR* pSwapchain);
--typedef VkResult (VKAPI *PFN_vkDestroySwapchainKHR)(VkDevice device, VkSwapchainKHR swapchain);
--typedef VkResult (VKAPI *PFN_vkGetSwapchainImagesKHR)(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pCount, VkImage* pSwapchainImages);
--typedef VkResult (VKAPI *PFN_vkAcquireNextImageKHR)(VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, uint32_t* pImageIndex);
--typedef VkResult (VKAPI *PFN_vkQueuePresentKHR)(VkQueue queue, VkPresentInfoKHR* pPresentInfo);
--
--// ------------------------------------------------------------------------------------------------
--// Function prototypes
--
--#ifdef VK_PROTOTYPES
--
--VkResult VKAPI vkGetSurfacePropertiesKHR(
--    VkDevice                                 device,
--    const VkSurfaceDescriptionKHR*           pSurfaceDescription,
--    VkSurfacePropertiesKHR*                  pSurfaceProperties);
--
--VkResult VKAPI vkGetSurfaceFormatsKHR(
--    VkDevice                                 device,
--    const VkSurfaceDescriptionKHR*           pSurfaceDescription,
--    uint32_t*                                pCount,
--    VkSurfaceFormatKHR*                      pSurfaceFormats);
--
--VkResult VKAPI vkGetSurfacePresentModesKHR(
--    VkDevice                                 device,
--    const VkSurfaceDescriptionKHR*           pSurfaceDescription,
--    uint32_t*                                pCount,
--    VkPresentModeKHR*                        pPresentModes);
--
--VkResult VKAPI vkCreateSwapchainKHR(
--    VkDevice                                 device,
--    const VkSwapchainCreateInfoKHR*          pCreateInfo,
--    VkSwapchainKHR*                          pSwapchain);
--
--VkResult VKAPI vkDestroySwapchainKHR(
--    VkDevice                                 device,
--    VkSwapchainKHR                           swapchain);
--
--VkResult VKAPI vkGetSwapchainImagesKHR(
--    VkDevice                                 device,
--    VkSwapchainKHR                           swapchain,
--    uint32_t*                                pCount,
--    VkImage*                                 pSwapchainImages);
--
--VkResult VKAPI vkAcquireNextImageKHR(
--    VkDevice                                 device,
--    VkSwapchainKHR                           swapchain,
--    uint64_t                                 timeout,
--    VkSemaphore                              semaphore,
--    uint32_t*                                pImageIndex);
--
--VkResult VKAPI vkQueuePresentKHR(
--    VkQueue                                  queue,
--    VkPresentInfoKHR*                        pPresentInfo);
--
--#endif // VK_PROTOTYPES
--
--#ifdef __cplusplus
--} // extern "C"
--#endif // __cplusplus
--
--#endif // __VK_EXT_KHR_SWAPCHAIN_H__
-diff --git a/vulkan/include/vulkan/vk_ext_khr_swapchain.h b/vulkan/include/vulkan/vk_ext_khr_swapchain.h
-deleted file mode 100644
-index 862b4d5..0000000
---- a/vulkan/include/vulkan/vk_ext_khr_swapchain.h
-+++ /dev/null
-@@ -1,153 +0,0 @@
--//
--// File: vk_ext_khr_swapchain.h
--//
--/*
--** Copyright (c) 2015 The Khronos Group Inc.
--**
--** Permission is hereby granted, free of charge, to any person obtaining a
--** copy of this software and/or associated documentation files (the
--** "Materials"), to deal in the Materials without restriction, including
--** without limitation the rights to use, copy, modify, merge, publish,
--** distribute, sublicense, and/or sell copies of the Materials, and to
--** permit persons to whom the Materials are furnished to do so, subject to
--** the following conditions:
--**
--** The above copyright notice and this permission notice shall be included
--** in all copies or substantial portions of the Materials.
--**
--** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
--** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
--** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
--** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
--** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
--** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
--** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
--*/
--
--#ifndef __VK_EXT_KHR_SWAPCHAIN_H__
--#define __VK_EXT_KHR_SWAPCHAIN_H__
--
--#include "vulkan.h"
--
--#define VK_EXT_KHR_SWAPCHAIN_REVISION         17
--#define VK_EXT_KHR_SWAPCHAIN_EXTENSION_NUMBER 1
--#define VK_EXT_KHR_SWAPCHAIN_EXTENSION_NAME   "VK_EXT_KHR_swapchain"
--
--#ifdef __cplusplus
--extern "C"
--{
--#endif // __cplusplus
--
--// ------------------------------------------------------------------------------------------------
--// Objects
--
--// ------------------------------------------------------------------------------------------------
--// Enumeration constants
--
--#define VK_EXT_KHR_SWAPCHAIN_ENUM(type,id)    ((type)((int)0xc0000000 - VK_EXT_KHR_SWAPCHAIN_EXTENSION_NUMBER * -1024 + (id)))
--#define VK_EXT_KHR_SWAPCHAIN_ENUM_POSITIVE(type,id)    ((type)((int)0x40000000 + (VK_EXT_KHR_SWAPCHAIN_EXTENSION_NUMBER - 1) * 1024 + (id)))
--
--// Extend VkStructureType enum with extension specific constants
--#define VK_STRUCTURE_TYPE_SURFACE_DESCRIPTION_WINDOW_KHR            VK_EXT_KHR_SWAPCHAIN_ENUM(VkStructureType, 0)
--
--// ------------------------------------------------------------------------------------------------
--// Enumerations
--
--typedef enum {
--    VK_SURFACE_TRANSFORM_NONE_KHR = 0,
--    VK_SURFACE_TRANSFORM_ROT90_KHR = 1,
--    VK_SURFACE_TRANSFORM_ROT180_KHR = 2,
--    VK_SURFACE_TRANSFORM_ROT270_KHR = 3,
--    VK_SURFACE_TRANSFORM_HMIRROR_KHR = 4,
--    VK_SURFACE_TRANSFORM_HMIRROR_ROT90_KHR = 5,
--    VK_SURFACE_TRANSFORM_HMIRROR_ROT180_KHR = 6,
--    VK_SURFACE_TRANSFORM_HMIRROR_ROT270_KHR = 7,
--    VK_SURFACE_TRANSFORM_INHERIT_KHR = 8,
--} VkSurfaceTransformKHR;
--
--typedef enum {
--    VK_SURFACE_TRANSFORM_NONE_BIT_KHR = 0x00000001,
--    VK_SURFACE_TRANSFORM_ROT90_BIT_KHR = 0x00000002,
--    VK_SURFACE_TRANSFORM_ROT180_BIT_KHR = 0x00000004,
--    VK_SURFACE_TRANSFORM_ROT270_BIT_KHR = 0x00000008,
--    VK_SURFACE_TRANSFORM_HMIRROR_BIT_KHR = 0x00000010,
--    VK_SURFACE_TRANSFORM_HMIRROR_ROT90_BIT_KHR = 0x00000020,
--    VK_SURFACE_TRANSFORM_HMIRROR_ROT180_BIT_KHR = 0x00000040,
--    VK_SURFACE_TRANSFORM_HMIRROR_ROT270_BIT_KHR = 0x00000080,
--    VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 0x00000100,
--} VkSurfaceTransformFlagBitsKHR;
--typedef VkFlags VkSurfaceTransformFlagsKHR;
--
--typedef enum {
--    VK_PLATFORM_WIN32_KHR = 0,
--    VK_PLATFORM_X11_KHR = 1,
--    VK_PLATFORM_XCB_KHR = 2,
--    VK_PLATFORM_ANDROID_KHR = 3,
--    VK_PLATFORM_WAYLAND_KHR = 4,
--    VK_PLATFORM_MIR_KHR = 5,
--    VK_PLATFORM_BEGIN_RANGE_KHR = VK_PLATFORM_WIN32_KHR,
--    VK_PLATFORM_END_RANGE_KHR = VK_PLATFORM_MIR_KHR,
--    VK_PLATFORM_NUM_KHR = (VK_PLATFORM_MIR_KHR - VK_PLATFORM_WIN32_KHR + 1),
--    VK_PLATFORM_MAX_ENUM_KHR = 0x7FFFFFFF
--} VkPlatformKHR;
--
--// ------------------------------------------------------------------------------------------------
--// Flags
--
--// ------------------------------------------------------------------------------------------------
--// Structures
--
--// Placeholder structure header for the different types of surface description structures
--typedef struct {
--    VkStructureType                          sType;             // Can be any of the VK_STRUCTURE_TYPE_SURFACE_DESCRIPTION_XXX_KHR constants
--    const void*                              pNext;             // Pointer to next structure
--} VkSurfaceDescriptionKHR;
--
--// Surface description structure for a native platform window surface
--typedef struct {
--    VkStructureType                         sType;              // Must be VK_STRUCTURE_TYPE_SURFACE_DESCRIPTION_WINDOW_KHR
--    const void*                             pNext;              // Pointer to next structure
--    VkPlatformKHR                           platform;           // e.g. VK_PLATFORM_*_KHR
--    void*                                   pPlatformHandle;
--    void*                                   pPlatformWindow;
--} VkSurfaceDescriptionWindowKHR;
--
--// pPlatformHandle points to this struct when platform is VK_PLATFORM_X11_KHR
--#ifdef _X11_XLIB_H_
--typedef struct {
--    Display*                                 dpy;               // Display connection to an X server
--    Window                                   root;              // To identify the X screen
--} VkPlatformHandleX11KHR;
--#endif /* _X11_XLIB_H_ */
--
--// pPlatformHandle points to this struct when platform is VK_PLATFORM_XCB_KHR
--#ifdef __XCB_H__
--typedef struct {
--    xcb_connection_t*                        connection;        // XCB connection to an X server
--    xcb_window_t                             root;              // To identify the X screen
--} VkPlatformHandleXcbKHR;
--#endif /* __XCB_H__ */
--
--// ------------------------------------------------------------------------------------------------
--// Function types
--
--typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceSurfaceSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, const VkSurfaceDescriptionKHR* pSurfaceDescription, VkBool32* pSupported);
--
--// ------------------------------------------------------------------------------------------------
--// Function prototypes
--
--#ifdef VK_PROTOTYPES
--
--VkResult VKAPI vkGetPhysicalDeviceSurfaceSupportKHR(
--    VkPhysicalDevice                        physicalDevice,
--    uint32_t                                queueFamilyIndex,
--    const VkSurfaceDescriptionKHR*          pSurfaceDescription,
--    VkBool32*                               pSupported);
--
--#endif // VK_PROTOTYPES
--
--#ifdef __cplusplus
--} // extern "C"
--#endif // __cplusplus
--
--#endif // __VK_EXT_KHR_SWAPCHAIN_H__
-diff --git a/vulkan/include/vulkan/vk_platform.h b/vulkan/include/vulkan/vk_platform.h
-index 969e532..14dc553 100644
---- a/vulkan/include/vulkan/vk_platform.h
-+++ b/vulkan/include/vulkan/vk_platform.h
-@@ -71,4 +71,32 @@ extern "C"
- } // extern "C"
- #endif // __cplusplus
- 
-+// Platform-specific headers required by platform window system extensions.
-+// These are enabled prior to #including "vulkan.h". The same enable then
-+// controls inclusion of the extension interfaces in vulkan.h.
-+
-+#ifdef VK_USE_PLATFORM_ANDROID_KHR
-+#include <android/native_window.h>
-+#endif
-+
-+#ifdef VK_USE_PLATFORM_MIR_KHR
-+#include <mir_toolkit/client_types.h>
-+#endif
-+
-+#ifdef VK_USE_PLATFORM_WAYLAND_KHR
-+#include <wayland-client.h>
-+#endif
-+
-+#ifdef VK_USE_PLATFORM_WIN32_KHR
-+#include <windows.h>
-+#endif
-+
-+#ifdef VK_USE_PLATFORM_X11_KHR
-+#include <X11/Xlib.h>
-+#endif
-+
-+#ifdef VK_USE_PLATFORM_XCB_KHR
-+#include <xcb/xcb.h>
-+#endif
-+
- #endif // __VK_PLATFORM_H__
-diff --git a/vulkan/include/vulkan/vulkan.h b/vulkan/include/vulkan/vulkan.h
-index d6eb918..ee921bf 100644
---- a/vulkan/include/vulkan/vulkan.h
-+++ b/vulkan/include/vulkan/vulkan.h
-@@ -3002,6 +3002,438 @@ void VKAPI vkCmdExecuteCommands(
-     const VkCmdBuffer*                          pCmdBuffers);
- #endif
- 
-+#define vk_ext_khr_surface 1
-+VK_DEFINE_NONDISP_HANDLE(VkSurfaceKHR)
-+
-+#define VK_EXT_KHR_SURFACE_REVISION       19
-+#define VK_EXT_KHR_SURFACE_EXTENSION_NUMBER 1
-+#define VK_EXT_KHR_SURFACE_EXTENSION_NAME "VK_EXT_KHR_surface"
-+
-+typedef void (VKAPI *PFN_vkDestroySurfaceKHR)(VkInstance  instance, VkSurfaceKHR  surface);
-+typedef VkBool32 (VKAPI *PFN_vkGetPhysicalDeviceSurfaceSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface);
-+
-+#ifdef VK_PROTOTYPES
-+void VKAPI vkDestroySurfaceKHR(
-+    VkInstance                                   instance,
-+    VkSurfaceKHR                                 surface);
-+
-+VkBool32 VKAPI vkGetPhysicalDeviceSurfaceSupportKHR(
-+    VkPhysicalDevice                            physicalDevice,
-+    uint32_t                                    queueFamilyIndex,
-+    VkSurfaceKHR                                surface);
-+#endif
-+
-+#define vk_ext_khr_swapchain 1
-+VK_DEFINE_NONDISP_HANDLE(VkSwapchainKHR)
-+
-+#define VK_EXT_KHR_SWAPCHAIN_REVISION     59
-+#define VK_EXT_KHR_SWAPCHAIN_EXTENSION_NUMBER 2
-+#define VK_EXT_KHR_SWAPCHAIN_EXTENSION_NAME "VK_EXT_KHR_swapchain"
-+#define VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR ((VkStructureType)(int)0xc0000800)
-+#define VK_STRUCTURE_TYPE_PRESENT_INFO_KHR ((VkStructureType)(int)0xc0000801)
-+#define VK_IMAGE_LAYOUT_PRESENT_SOURCE_KHR ((VkImageLayout)(int)0xc0000802)
-+#define VK_SUBOPTIMAL_KHR                 ((VkResult)(int)0x40000403)
-+#define VK_ERROR_OUT_OF_DATE_KHR          ((VkResult)(int)0xc0000804)
-+
-+
-+typedef enum {
-+    VK_SURFACE_TRANSFORM_NONE_KHR = 0,
-+    VK_SURFACE_TRANSFORM_ROT90_KHR = 1,
-+    VK_SURFACE_TRANSFORM_ROT180_KHR = 2,
-+    VK_SURFACE_TRANSFORM_ROT270_KHR = 3,
-+    VK_SURFACE_TRANSFORM_HMIRROR_KHR = 4,
-+    VK_SURFACE_TRANSFORM_HMIRROR_ROT90_KHR = 5,
-+    VK_SURFACE_TRANSFORM_HMIRROR_ROT180_KHR = 6,
-+    VK_SURFACE_TRANSFORM_HMIRROR_ROT270_KHR = 7,
-+    VK_SURFACE_TRANSFORM_INHERIT_KHR = 8,
-+    VK_SURFACE_TRANSFORM_BEGIN_RANGE = VK_SURFACE_TRANSFORM_NONE_KHR,
-+    VK_SURFACE_TRANSFORM_END_RANGE = VK_SURFACE_TRANSFORM_INHERIT_KHR,
-+    VK_SURFACE_TRANSFORM_NUM = (VK_SURFACE_TRANSFORM_INHERIT_KHR - VK_SURFACE_TRANSFORM_NONE_KHR + 1),
-+    VK_SURFACE_TRANSFORM_MAX_ENUM = 0x7FFFFFFF
-+} VkSurfaceTransformKHR;
-+
-+typedef enum {
-+    VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0,
-+    VK_COLORSPACE_BEGIN_RANGE = VK_COLORSPACE_SRGB_NONLINEAR_KHR,
-+    VK_COLORSPACE_END_RANGE = VK_COLORSPACE_SRGB_NONLINEAR_KHR,
-+    VK_COLORSPACE_NUM = (VK_COLORSPACE_SRGB_NONLINEAR_KHR - VK_COLORSPACE_SRGB_NONLINEAR_KHR + 1),
-+    VK_COLORSPACE_MAX_ENUM = 0x7FFFFFFF
-+} VkColorSpaceKHR;
-+
-+typedef enum {
-+    VK_PRESENT_MODE_IMMEDIATE_KHR = 0,
-+    VK_PRESENT_MODE_MAILBOX_KHR = 1,
-+    VK_PRESENT_MODE_FIFO_KHR = 2,
-+    VK_PRESENT_MODE_BEGIN_RANGE = VK_PRESENT_MODE_IMMEDIATE_KHR,
-+    VK_PRESENT_MODE_END_RANGE = VK_PRESENT_MODE_FIFO_KHR,
-+    VK_PRESENT_MODE_NUM = (VK_PRESENT_MODE_FIFO_KHR - VK_PRESENT_MODE_IMMEDIATE_KHR + 1),
-+    VK_PRESENT_MODE_MAX_ENUM = 0x7FFFFFFF
-+} VkPresentModeKHR;
-+
-+
-+typedef enum {
-+    VK_SURFACE_TRANSFORM_NONE_BIT_KHR = 0x00000001,
-+    VK_SURFACE_TRANSFORM_ROT90_BIT_KHR = 0x00000002,
-+    VK_SURFACE_TRANSFORM_ROT180_BIT_KHR = 0x00000004,
-+    VK_SURFACE_TRANSFORM_ROT270_BIT_KHR = 0x00000008,
-+    VK_SURFACE_TRANSFORM_HMIRROR_BIT_KHR = 0x00000010,
-+    VK_SURFACE_TRANSFORM_HMIRROR_ROT90_BIT_KHR = 0x00000020,
-+    VK_SURFACE_TRANSFORM_HMIRROR_ROT180_BIT_KHR = 0x00000040,
-+    VK_SURFACE_TRANSFORM_HMIRROR_ROT270_BIT_KHR = 0x00000080,
-+    VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 0x00000100,
-+} VkSurfaceTransformFlagBitsKHR;
-+typedef VkFlags VkSurfaceTransformFlagsKHR;
-+
-+typedef struct {
-+    uint32_t                                    minImageCount;
-+    uint32_t                                    maxImageCount;
-+    VkExtent2D                                  currentExtent;
-+    VkExtent2D                                  minImageExtent;
-+    VkExtent2D                                  maxImageExtent;
-+    VkSurfaceTransformFlagsKHR                  supportedTransforms;
-+    VkSurfaceTransformKHR                       currentTransform;
-+    uint32_t                                    maxImageArraySize;
-+    VkImageUsageFlags                           supportedUsageFlags;
-+} VkSurfacePropertiesKHR;
-+
-+typedef struct {
-+    VkFormat                                    format;
-+    VkColorSpaceKHR                             colorSpace;
-+} VkSurfaceFormatKHR;
-+
-+typedef struct {
-+    VkStructureType                             sType;
-+    const void*                                   pNext;
-+    VkSurfaceKHR                                surface;
-+    uint32_t                                    minImageCount;
-+    VkFormat                                    imageFormat;
-+    VkColorSpaceKHR                             imageColorSpace;
-+    VkExtent2D                                  imageExtent;
-+    VkImageUsageFlags                           imageUsageFlags;
-+    VkSurfaceTransformKHR                       preTransform;
-+    uint32_t                                    imageArraySize;
-+    VkSharingMode                               sharingMode;
-+    uint32_t                                    queueFamilyCount;
-+    const uint32_t*                             pQueueFamilyIndices;
-+    VkPresentModeKHR                            presentMode;
-+    VkSwapchainKHR                              oldSwapchain;
-+    VkBool32                                    clipped;
-+} VkSwapchainCreateInfoKHR;
-+
-+typedef struct {
-+    VkStructureType                             sType;
-+    const void*                                   pNext;
-+    uint32_t                                    swapchainCount;
-+    const VkSwapchainKHR*                       swapchains;
-+    const uint32_t*                             imageIndices;
-+} VkPresentInfoKHR;
-+
-+
-+typedef VkResult (VKAPI *PFN_vkGetSurfacePropertiesKHR)(VkDevice  device, VkSurfaceKHR  surface, VkSurfacePropertiesKHR*  pSurfaceProperties);
-+typedef VkResult (VKAPI *PFN_vkGetSurfaceFormatsKHR)(VkDevice  device, VkSurfaceKHR  surface, uint32_t*  pCount, VkSurfaceFormatKHR*  pSurfaceFormats);
-+typedef VkResult (VKAPI *PFN_vkGetSurfacePresentModesKHR)(VkDevice  device, VkSurfaceKHR  surface, uint32_t*  pCount, VkPresentModeKHR*  pPresentModes);
-+typedef VkResult (VKAPI *PFN_vkCreateSwapchainKHR)(VkDevice  device, const VkSwapchainCreateInfoKHR*  pCreateInfo, VkSwapchainKHR*  pSwapchain);
-+typedef void (VKAPI *PFN_vkDestroySwapchainKHR)(VkDevice  device, VkSwapchainKHR  swapchain);
-+typedef VkResult (VKAPI *PFN_vkGetSwapchainImagesKHR)(VkDevice  device, VkSwapchainKHR  swapchain, uint32_t*  pCount, VkImage*  pSwapchainImages);
-+typedef VkResult (VKAPI *PFN_vkAcquireNextImageKHR)(VkDevice  device, VkSwapchainKHR  swapchain, uint64_t  timeout, VkSemaphore  semaphore, VkFence  fence, uint32_t*  pImageIndex);
-+typedef VkResult (VKAPI *PFN_vkQueuePresentKHR)(VkQueue  queue, VkPresentInfoKHR*  pPresentInfo);
-+
-+#ifdef VK_PROTOTYPES
-+VkResult VKAPI vkGetSurfacePropertiesKHR(
-+    VkDevice                                     device,
-+    VkSurfaceKHR                                 surface,
-+    VkSurfacePropertiesKHR*                      pSurfaceProperties);
-+
-+VkResult VKAPI vkGetSurfaceFormatsKHR(
-+    VkDevice                                     device,
-+    VkSurfaceKHR                                 surface,
-+    uint32_t*                                    pCount,
-+    VkSurfaceFormatKHR*                          pSurfaceFormats);
-+
-+VkResult VKAPI vkGetSurfacePresentModesKHR(
-+    VkDevice                                     device,
-+    VkSurfaceKHR                                 surface,
-+    uint32_t*                                    pCount,
-+    VkPresentModeKHR*                            pPresentModes);
-+
-+VkResult VKAPI vkCreateSwapchainKHR(
-+    VkDevice                                     device,
-+    const VkSwapchainCreateInfoKHR*              pCreateInfo,
-+    VkSwapchainKHR*                              pSwapchain);
-+
-+void VKAPI vkDestroySwapchainKHR(
-+    VkDevice                                     device,
-+    VkSwapchainKHR                               swapchain);
-+
-+VkResult VKAPI vkGetSwapchainImagesKHR(
-+    VkDevice                                     device,
-+    VkSwapchainKHR                               swapchain,
-+    uint32_t*                                    pCount,
-+    VkImage*                                     pSwapchainImages);
-+
-+VkResult VKAPI vkAcquireNextImageKHR(
-+    VkDevice                                     device,
-+    VkSwapchainKHR                               swapchain,
-+    uint64_t                                     timeout,
-+    VkSemaphore                                  semaphore,
-+    VkFence                                      fence,
-+    uint32_t*                                    pImageIndex);
-+
-+VkResult VKAPI vkQueuePresentKHR(
-+    VkQueue                                      queue,
-+    VkPresentInfoKHR*                            pPresentInfo);
-+#endif
-+
-+#define vk_ext_khr_display 1
-+VK_DEFINE_NONDISP_HANDLE(VkDisplayKHR)
-+VK_DEFINE_NONDISP_HANDLE(VkDisplayModeKHR)
-+
-+#define VK_EXT_KHR_DISPLAY_REVISION       16
-+#define VK_EXT_KHR_DISPLAY_EXTENSION_NUMBER 3
-+#define VK_EXT_KHR_DISPLAY_EXTENSION_NAME "VK_EXT_KHR_display"
-+#define VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR ((VkStructureType)(int)0xc0000c00)
-+#define VK_STRUCTURE_TYPE_SURFACE_DESCRIPTION_DISPLAY_PLANE_KHR ((VkStructureType)(int)0xc0000c01)
-+
-+
-+typedef enum {
-+    VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 0x00000001,
-+    VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0x00000002,
-+    VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0x00000004,
-+} VkDisplayPlaneAlphaFlagBitsKHR;
-+typedef VkFlags VkDisplayPlaneAlphaFlagsKHR;
-+
-+typedef struct {
-+    VkDisplayKHR                                display;
-+    const char*                                   displayName;
-+    VkExtent2D                                  physicalDimensions;
-+    VkExtent2D                                  physicalResolution;
-+    VkSurfaceTransformFlagsKHR                  supportedTransforms;
-+    uint32_t                                    planeCount;
-+    VkBool32                                    planeReorderPossible;
-+} VkDisplayPropertiesKHR;
-+
-+typedef struct {
-+    uint32_t                                    pixelClock;
-+    VkExtent2D                                  visibleRegion;
-+    VkExtent2D                                  totalRegion;
-+    VkExtent2D                                  physicalDimensions;
-+    uint32_t                                    hSyncStart;
-+    uint32_t                                    hSyncEnd;
-+    uint32_t                                    vSyncStart;
-+    uint32_t                                    vSyncEnd;
-+    VkBool32                                    interlaced;
-+    VkBool32                                    doublescan;
-+    VkBool32                                    hSyncPos;
-+    VkBool32                                    vSyncPos;
-+} VkDisplayTimingKHR;
-+
-+typedef struct {
-+    VkDisplayModeKHR                            displayMode;
-+    VkDisplayTimingKHR                          timing;
-+} VkDisplayModePropertiesKHR;
-+
-+typedef struct {
-+    VkStructureType                             sType;
-+    const void*                                   pNext;
-+    VkDisplayTimingKHR                          timing;
-+} VkDisplayModeCreateInfoKHR;
-+
-+typedef struct {
-+    VkDisplayPlaneAlphaFlagsKHR                 supportedAlpha;
-+    VkOffset2D                                  minSrcPosition;
-+    VkOffset2D                                  maxSrcPosition;
-+    VkExtent2D                                  minSrcExtent;
-+    VkExtent2D                                  maxSrcExtent;
-+    VkOffset2D                                  minDstPosition;
-+    VkOffset2D                                  maxDstPosition;
-+    VkExtent2D                                  minDstExtent;
-+    VkExtent2D                                  maxDstExtent;
-+} VkDisplayPlanePropertiesKHR;
-+
-+typedef struct {
-+    VkStructureType                             sType;
-+    const void*                                   pNext;
-+    VkDisplayModeKHR                            displayMode;
-+    uint32_t                                    planeIndex;
-+    uint32_t                                    planeStackIndex;
-+    VkSurfaceTransformKHR                       transform;
-+    float                                       globalAlpha;
-+    VkDisplayPlaneAlphaFlagsKHR                 alphaMode;
-+    VkExtent2D                                  imageSize;
-+} VkSurfaceDescriptionDisplayPlaneKHR;
-+
-+
-+typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pCount, VkDisplayPropertiesKHR* pProperties);
-+typedef VkResult (VKAPI *PFN_vkGetDisplayModePropertiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pCount, VkDisplayModePropertiesKHR* pModeProperties);
-+typedef VkResult (VKAPI *PFN_vkCreateDisplayModeKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR*pCreateInfo, VkDisplayModeKHR* pMode);
-+typedef VkResult (VKAPI *PFN_vkGetDisplayPlanePropertiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, VkDisplayModeKHR mode, uint32_t planeIndex, VkDisplayPlanePropertiesKHR* pProperties);
-+
-+#ifdef VK_PROTOTYPES
-+VkResult VKAPI vkGetPhysicalDeviceDisplayPropertiesKHR(
-+    VkPhysicalDevice                            physicalDevice,
-+    uint32_t*                                   pCount,
-+    VkDisplayPropertiesKHR*                     pProperties);
-+
-+VkResult VKAPI vkGetDisplayModePropertiesKHR(
-+    VkPhysicalDevice                            physicalDevice,
-+    VkDisplayKHR                                display,
-+    uint32_t*                                   pCount,
-+    VkDisplayModePropertiesKHR*                 pModeProperties);
-+
-+VkResult VKAPI vkCreateDisplayModeKHR(
-+    VkPhysicalDevice                            physicalDevice,
-+    VkDisplayKHR                                display,
-+    const VkDisplayModeCreateInfoKHR*           pCreateInfo,
-+    VkDisplayModeKHR*                           pMode);
-+
-+VkResult VKAPI vkGetDisplayPlanePropertiesKHR(
-+    VkPhysicalDevice                            physicalDevice,
-+    VkDisplayKHR                                display,
-+    VkDisplayModeKHR                            mode,
-+    uint32_t                                    planeIndex,
-+    VkDisplayPlanePropertiesKHR*                pProperties);
-+#endif
-+
-+#define vk_ext_khr_display_swapchain 1
-+#define VK_EXT_KHR_DISPLAY_SWAPCHAIN_REVISION 4
-+#define VK_EXT_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NUMBER 4
-+#define VK_EXT_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME "VK_EXT_KHR_display_swapchain"
-+#define VK_STRUCTURE_TYPE_DISPLAY_SWAPCHAIN_CREATE_INFO_KHR ((VkStructureType)(int)0xc0001000)
-+#define VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR ((VkStructureType)(int)0xc0001001)
-+#define VK_ERROR_INCOMPATIBLE_DISPLAY_KHR ((VkResult)(int)0xc0001002)
-+
-+typedef struct {
-+    VkStructureType                             sType;
-+    const void*                                   pNext;
-+    const VkSwapchainCreateInfoKHR*             pNextSwapchainCreateInfo;
-+} VkDisplaySwapchainCreateInfoKHR;
-+
-+typedef struct {
-+    VkStructureType                             sType;
-+    const void*                                   pNext;
-+    VkRect2D                                    srcRect;
-+    VkRect2D                                    dstRect;
-+} VkDisplayPresentInfoKHR;
-+
-+
-+
-+#define vk_ext_khr_x11_surface 1
-+#ifdef VK_USE_PLATFORM_X11_KHR
-+#include <X11/Xlib.h>
-+
-+#define VK_EXT_KHR_X11_SURFACE_REVISION   1
-+#define VK_EXT_KHR_X11_SURFACE_EXTENSION_NUMBER 5
-+#define VK_EXT_KHR_X11_SURFACE_EXTENSION_NAME "VK_EXT_KHR_x11_surface"
-+
-+typedef VkResult (VKAPI *PFN_vkCreateX11SurfaceKHR)(VkInstance instance, Display* dpy, Window root, Window window, VkSurfaceKHR* pSurface);
-+
-+#ifdef VK_PROTOTYPES
-+VkResult VKAPI vkCreateX11SurfaceKHR(
-+    VkInstance                                  instance,
-+    Display*                                    dpy,
-+    Window                                      root,
-+    Window                                      window,
-+    VkSurfaceKHR*                               pSurface);
-+#endif
-+#endif /* VK_USE_PLATFORM_X11_KHR */
-+
-+#define vk_ext_khr_xcb_surface 1
-+#ifdef VK_USE_PLATFORM_XCB_KHR
-+#include <xcb/xcb.h>
-+
-+#define VK_EXT_KHR_XCB_SURFACE_REVISION   1
-+#define VK_EXT_KHR_XCB_SURFACE_EXTENSION_NUMBER 6
-+#define VK_EXT_KHR_XCB_SURFACE_EXTENSION_NAME "VK_EXT_KHR_xcb_surface"
-+
-+typedef VkResult (VKAPI *PFN_vkCreateXcbSurfaceKHR)(VkInstance instance, xcb_connection_t* connection, xcb_window_t root, xcb_window_t window, VkSurfaceKHR* pSurface);
-+
-+#ifdef VK_PROTOTYPES
-+VkResult VKAPI vkCreateXcbSurfaceKHR(
-+    VkInstance                                  instance,
-+    xcb_connection_t*                           connection,
-+    xcb_window_t                                root,
-+    xcb_window_t                                window,
-+    VkSurfaceKHR*                               pSurface);
-+#endif
-+#endif /* VK_USE_PLATFORM_XCB_KHR */
-+
-+#define vk_ext_khr_wayland_surface 1
-+#ifdef VK_USE_PLATFORM_WAYLAND_KHR
-+#include <wayland-client.h>
-+
-+#define VK_EXT_KHR_WAYLAND_SURFACE_REVISION 1
-+#define VK_EXT_KHR_WAYLAND_SURFACE_EXTENSION_NUMBER 7
-+#define VK_EXT_KHR_WAYLAND_SURFACE_EXTENSION_NAME "VK_EXT_KHR_wayland_surface"
-+
-+typedef VkResult (VKAPI *PFN_vkCreateWaylandSurfaceKHR)(VkInstance instance, struct wl_display* display, struct wl_surface* surface, VkSurfaceKHR* pSurface);
-+
-+#ifdef VK_PROTOTYPES
-+VkResult VKAPI vkCreateWaylandSurfaceKHR(
-+    VkInstance                                  instance,
-+    struct wl_display*                          display,
-+    struct wl_surface*                          surface,
-+    VkSurfaceKHR*                               pSurface);
-+#endif
-+#endif /* VK_USE_PLATFORM_WAYLAND_KHR */
-+
-+#define vk_ext_khr_mir_surface 1
-+#ifdef VK_USE_PLATFORM_MIR_KHR
-+#include <mir_toolkit/client_types.h>
-+
-+#define VK_EXT_KHR_MIR_SURFACE_REVISION   1
-+#define VK_EXT_KHR_MIR_SURFACE_EXTENSION_NUMBER 8
-+#define VK_EXT_KHR_MIR_SURFACE_EXTENSION_NAME "VK_EXT_KHR_mir_surface"
-+
-+typedef VkResult (VKAPI *PFN_vkCreateMirSurfaceKHR)(VkInstance instance, MirConnection* connection, MirSurface* mirSurface, VkSurfaceKHR* pSurface);
-+
-+#ifdef VK_PROTOTYPES
-+VkResult VKAPI vkCreateMirSurfaceKHR(
-+    VkInstance                                  instance,
-+    MirConnection*                              connection,
-+    MirSurface*                                 mirSurface,
-+    VkSurfaceKHR*                               pSurface);
-+#endif
-+#endif /* VK_USE_PLATFORM_MIR_KHR */
-+
-+#define vk_ext_khr_android_surface 1
-+#ifdef VK_USE_PLATFORM_ANDROID_KHR
-+#include <android/native_window.h>
-+
-+#define VK_EXT_KHR_ANDROID_SURFACE_REVISION 1
-+#define VK_EXT_KHR_ANDROID_SURFACE_EXTENSION_NUMBER 9
-+#define VK_EXT_KHR_ANDROID_SURFACE_EXTENSION_NAME "VK_EXT_KHR_android_surface"
-+#define VK_ERROR_INVALID_ANDROID_WINDOW_KHR ((VkResult)(int)0xc0002400)
-+#define VK_ERROR_ANDROID_WINDOW_IN_USE_KHR ((VkResult)(int)0xc0002401)
-+
-+typedef VkResult (VKAPI *PFN_vkCreateAndroidSurfaceKHR)(VkInstance instance, ANativeWindow* window, VkSurfaceKHR* pSurface);
-+
-+#ifdef VK_PROTOTYPES
-+VkResult VKAPI vkCreateAndroidSurfaceKHR(
-+    VkInstance                                  instance,
-+    ANativeWindow*                              window,
-+    VkSurfaceKHR*                               pSurface);
-+#endif
-+#endif /* VK_USE_PLATFORM_ANDROID_KHR */
-+
-+#define vk_ext_khr_win32_surface 1
-+#ifdef VK_USE_PLATFORM_WIN32_KHR
-+#include <windows.h>
-+
-+#define VK_EXT_KHR_WIN32_SURFACE_REVISION 1
-+#define VK_EXT_KHR_WIN32_SURFACE_EXTENSION_NUMBER 10
-+#define VK_EXT_KHR_WIN32_SURFACE_EXTENSION_NAME "VK_EXT_KHR_win32_surface"
-+
-+typedef VkResult (VKAPI *PFN_vkCreateWin32SurfaceKHR)(VkInstance instance, HINSTANCE hinstance, HWND hwnd, VkSurfaceKHR* pSurface);
-+
-+#ifdef VK_PROTOTYPES
-+VkResult VKAPI vkCreateWin32SurfaceKHR(
-+    VkInstance                                  instance,
-+    HINSTANCE                                   hinstance,
-+    HWND                                        hwnd,
-+    VkSurfaceKHR*                               pSurface);
-+#endif
-+#endif /* VK_USE_PLATFORM_WIN32_KHR */
-+
- #ifdef __cplusplus
- }
- #endif
-diff --git a/vulkan/libvulkan/entry.cpp b/vulkan/libvulkan/entry.cpp
-index 0af3bc8..339101f 100644
---- a/vulkan/libvulkan/entry.cpp
-+++ b/vulkan/libvulkan/entry.cpp
-@@ -762,23 +762,28 @@ void vkCmdExecuteCommands(VkCmdBuffer cmdBuffer, uint32_t cmdBuffersCount, const
- }
- 
- __attribute__((visibility("default")))
--VkResult vkGetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, const VkSurfaceDescriptionKHR* pSurfaceDescription, VkBool32* pSupported) {
--    return GetVtbl(physicalDevice).GetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, pSurfaceDescription, pSupported);
-+void vkDestroySurfaceKHR(VkInstance instance, VkSurfaceKHR surface) {
-+    GetVtbl(instance).DestroySurfaceKHR(instance, surface);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkGetSurfacePropertiesKHR(VkDevice device, const VkSurfaceDescriptionKHR* pSurfaceDescription, VkSurfacePropertiesKHR* pSurfaceProperties) {
--    return GetVtbl(device).GetSurfacePropertiesKHR(device, pSurfaceDescription, pSurfaceProperties);
-+VkBool32 vkGetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface) {
-+    return GetVtbl(physicalDevice).GetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkGetSurfaceFormatsKHR(VkDevice device, const VkSurfaceDescriptionKHR* pSurfaceDescription, uint32_t* pCount, VkSurfaceFormatKHR* pSurfaceFormats) {
--    return GetVtbl(device).GetSurfaceFormatsKHR(device, pSurfaceDescription, pCount, pSurfaceFormats);
-+VkResult vkGetSurfacePropertiesKHR(VkDevice device, VkSurfaceKHR surface, VkSurfacePropertiesKHR* pSurfaceProperties) {
-+    return GetVtbl(device).GetSurfacePropertiesKHR(device, surface, pSurfaceProperties);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkGetSurfacePresentModesKHR(VkDevice device, const VkSurfaceDescriptionKHR* pSurfaceDescription, uint32_t* pCount, VkPresentModeKHR* pPresentModes) {
--    return GetVtbl(device).GetSurfacePresentModesKHR(device, pSurfaceDescription, pCount, pPresentModes);
-+VkResult vkGetSurfaceFormatsKHR(VkDevice device, VkSurfaceKHR surface, uint32_t* pCount, VkSurfaceFormatKHR* pSurfaceFormats) {
-+    return GetVtbl(device).GetSurfaceFormatsKHR(device, surface, pCount, pSurfaceFormats);
-+}
-+
-+__attribute__((visibility("default")))
-+VkResult vkGetSurfacePresentModesKHR(VkDevice device, VkSurfaceKHR surface, uint32_t* pCount, VkPresentModeKHR* pPresentModes) {
-+    return GetVtbl(device).GetSurfacePresentModesKHR(device, surface, pCount, pPresentModes);
- }
- 
- __attribute__((visibility("default")))
-@@ -787,8 +792,8 @@ VkResult vkCreateSwapchainKHR(VkDevice device, const VkSwapchainCreateInfoKHR* p
- }
- 
- __attribute__((visibility("default")))
--VkResult vkDestroySwapchainKHR(VkDevice device, VkSwapchainKHR swapchain) {
--    return GetVtbl(device).DestroySwapchainKHR(device, swapchain);
-+void vkDestroySwapchainKHR(VkDevice device, VkSwapchainKHR swapchain) {
-+    GetVtbl(device).DestroySwapchainKHR(device, swapchain);
- }
- 
- __attribute__((visibility("default")))
-@@ -797,11 +802,16 @@ VkResult vkGetSwapchainImagesKHR(VkDevice device, VkSwapchainKHR swapchain, uint
- }
- 
- __attribute__((visibility("default")))
--VkResult vkAcquireNextImageKHR(VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, uint32_t* pImageIndex) {
--    return GetVtbl(device).AcquireNextImageKHR(device, swapchain, timeout, semaphore, pImageIndex);
-+VkResult vkAcquireNextImageKHR(VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t* pImageIndex) {
-+    return GetVtbl(device).AcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex);
- }
- 
- __attribute__((visibility("default")))
- VkResult vkQueuePresentKHR(VkQueue queue, VkPresentInfoKHR* pPresentInfo) {
-     return GetVtbl(queue).QueuePresentKHR(queue, pPresentInfo);
- }
-+
-+__attribute__((visibility("default")))
-+VkResult vkCreateAndroidSurfaceKHR(VkInstance instance, struct ANativeWindow* window, VkSurfaceKHR* pSurface) {
-+    return GetVtbl(instance).CreateAndroidSurfaceKHR(instance, window, pSurface);
-+}
-diff --git a/vulkan/libvulkan/entry.cpp.tmpl b/vulkan/libvulkan/entry.cpp.tmpl
-index 72185e7..d0e665f 100644
---- a/vulkan/libvulkan/entry.cpp.tmpl
-+++ b/vulkan/libvulkan/entry.cpp.tmpl
-@@ -69,7 +69,7 @@ namespace {
- } // namespace
- ¶
-   {{range $f := AllCommands $}}
--    {{if not (GetAnnotation $f "pfn")}}
-+    {{if and (not (GetAnnotation $f "pfn")) (Macro "IsExportedEntry" $f)}}
-       __attribute__((visibility("default")))
-       {{if eq (Macro "IsSpecialEntry" $f.Name) "true"}}
-         {{Macro "EmitSpecialEntry" $f}}
-@@ -84,6 +84,25 @@ namespace {
- 
- {{/*
- -------------------------------------------------------------------------------
-+  Decides whether an entrypoint should be exported from the Android Vulkan
-+  library. Entrypoints in the core API and in mandatory extensions are
-+  exported.
-+-------------------------------------------------------------------------------
-+*/}}
-+{{define "IsExportedEntry"}}
-+  {{AssertType $ "Function"}}
-+  {{$ext := GetAnnotation $ "extension"}}
-+  {{if $ext}}
-+    {{$extval := index $ext.Arguments 0}}
-+    {{if      eq $extval "VK_EXT_KHR_surface"}}true
-+    {{else if eq $extval "VK_EXT_KHR_swapchain"}}true
-+    {{else if eq $extval "VK_EXT_KHR_android_surface"}}true{{end}}
-+  {{else}}true{{end}}
-+{{end}}
-+
-+
-+{{/*
-+-------------------------------------------------------------------------------
-   Decides whether an entrypoint needs special-case handling. Emits the string
-   "true" if so, nothing otherwise.
- -------------------------------------------------------------------------------
-@@ -95,6 +114,7 @@ namespace {
-   {{end}}
- {{end}}
- 
-+
- {{/*
- -------------------------------------------------------------------------------
-   Emits the entrypoint definition for the specified command, which always
-diff --git a/vulkan/libvulkan/get_proc_addr.cpp b/vulkan/libvulkan/get_proc_addr.cpp
-index b9bd689..f1ad5f3 100644
---- a/vulkan/libvulkan/get_proc_addr.cpp
-+++ b/vulkan/libvulkan/get_proc_addr.cpp
-@@ -49,8 +49,10 @@ const TEntry* FindProcEntry(const TEntry (&table)[N], const char* name) {
- 
- const NameProcEntry kInstanceProcTbl[] = {
-     // clang-format off
-+    {"vkCreateAndroidSurfaceKHR", reinterpret_cast<PFN_vkVoidFunction>(vkCreateAndroidSurfaceKHR)},
-     {"vkCreateDevice", reinterpret_cast<PFN_vkVoidFunction>(vkCreateDevice)},
-     {"vkDestroyInstance", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyInstance)},
-+    {"vkDestroySurfaceKHR", reinterpret_cast<PFN_vkVoidFunction>(vkDestroySurfaceKHR)},
-     {"vkEnumerateDeviceExtensionProperties", reinterpret_cast<PFN_vkVoidFunction>(vkEnumerateDeviceExtensionProperties)},
-     {"vkEnumerateDeviceLayerProperties", reinterpret_cast<PFN_vkVoidFunction>(vkEnumerateDeviceLayerProperties)},
-     {"vkEnumeratePhysicalDevices", reinterpret_cast<PFN_vkVoidFunction>(vkEnumeratePhysicalDevices)},
-@@ -209,8 +211,10 @@ const NameProcEntry kDeviceProcTbl[] = {
- 
- const NameOffsetEntry kInstanceOffsetTbl[] = {
-     // clang-format off
-+    {"vkCreateAndroidSurfaceKHR", offsetof(InstanceVtbl, CreateAndroidSurfaceKHR)},
-     {"vkCreateDevice", offsetof(InstanceVtbl, CreateDevice)},
-     {"vkDestroyInstance", offsetof(InstanceVtbl, DestroyInstance)},
-+    {"vkDestroySurfaceKHR", offsetof(InstanceVtbl, DestroySurfaceKHR)},
-     {"vkEnumerateDeviceExtensionProperties", offsetof(InstanceVtbl, EnumerateDeviceExtensionProperties)},
-     {"vkEnumerateDeviceLayerProperties", offsetof(InstanceVtbl, EnumerateDeviceLayerProperties)},
-     {"vkEnumeratePhysicalDevices", offsetof(InstanceVtbl, EnumeratePhysicalDevices)},
-@@ -490,7 +494,9 @@ bool LoadInstanceVtbl(VkInstance instance,
-         ALOGE("missing instance proc: %s", "vkGetPhysicalDeviceSparseImageFormatProperties");
-         success = false;
-     }
-+    vtbl.DestroySurfaceKHR = reinterpret_cast<PFN_vkDestroySurfaceKHR>(get_proc_addr(instance, "vkDestroySurfaceKHR"));
-     vtbl.GetPhysicalDeviceSurfaceSupportKHR = reinterpret_cast<PFN_vkGetPhysicalDeviceSurfaceSupportKHR>(get_proc_addr(instance, "vkGetPhysicalDeviceSurfaceSupportKHR"));
-+    vtbl.CreateAndroidSurfaceKHR = reinterpret_cast<PFN_vkCreateAndroidSurfaceKHR>(get_proc_addr(instance, "vkCreateAndroidSurfaceKHR"));
-     // clang-format on
-     return success;
- }
-diff --git a/vulkan/libvulkan/get_proc_addr.cpp.tmpl b/vulkan/libvulkan/get_proc_addr.cpp.tmpl
-index 6d5f618..c6ec0d1 100644
---- a/vulkan/libvulkan/get_proc_addr.cpp.tmpl
-+++ b/vulkan/libvulkan/get_proc_addr.cpp.tmpl
-@@ -78,7 +78,7 @@ const TEntry* FindProcEntry(const TEntry (&table)[N], const char* name) {
- const NameProcEntry kInstanceProcTbl[] = {«
-   // clang-format off
-   {{range $f := SortBy (AllCommands $) "FunctionName"}}
--    {{if eq (Macro "Vtbl" $f) "Instance"}}
-+    {{if and (Macro "IsDispatched" $f) (eq (Macro "Vtbl" $f) "Instance")}}
-       {"{{Macro "FunctionName" $f}}", reinterpret_cast<PFN_vkVoidFunction>({{Macro "FunctionName" $f}})},
-     {{end}}
-   {{end}}
-@@ -88,7 +88,7 @@ const NameProcEntry kInstanceProcTbl[] = {«
- const NameProcEntry kDeviceProcTbl[] = {«
-   // clang-format off
-   {{range $f := SortBy (AllCommands $) "FunctionName"}}
--    {{if eq (Macro "Vtbl" $f) "Device"}}
-+    {{if and (Macro "IsDispatched" $f) (eq (Macro "Vtbl" $f) "Device")}}
-       {"{{Macro "FunctionName" $f}}", reinterpret_cast<PFN_vkVoidFunction>({{Macro "FunctionName" $f}})},
-     {{end}}
-   {{end}}
-@@ -98,7 +98,7 @@ const NameProcEntry kDeviceProcTbl[] = {«
- const NameOffsetEntry kInstanceOffsetTbl[] = {«
-   // clang-format off
-   {{range $f := SortBy (AllCommands $) "FunctionName"}}
--    {{if eq (Macro "Vtbl" $f) "Instance"}}
-+    {{if and (Macro "IsDispatched" $f) (eq (Macro "Vtbl" $f) "Instance")}}
-       {"{{Macro "FunctionName" $f}}", offsetof(InstanceVtbl, {{TrimPrefix "vk" (Macro "FunctionName" $f)}})},
-     {{end}}
-   {{end}}
-@@ -108,7 +108,7 @@ const NameOffsetEntry kInstanceOffsetTbl[] = {«
- const NameOffsetEntry kDeviceOffsetTbl[] = {«
-   // clang-format off
-   {{range $f := SortBy (AllCommands $) "FunctionName"}}
--    {{if eq (Macro "Vtbl" $f) "Device"}}
-+    {{if and (Macro "IsDispatched" $f) (eq (Macro "Vtbl" $f) "Device")}}
-       {"{{Macro "FunctionName" $f}}", offsetof(DeviceVtbl, {{TrimPrefix "vk" (Macro "FunctionName" $f)}})},
-     {{end}}
-   {{end}}
-@@ -194,7 +194,7 @@ bool LoadInstanceVtbl(VkInstance instance,
-     {{end}}
-     {{range $f := AllCommands $}}
-       {{if eq (Macro "Vtbl" $f) "Instance"}}
--        {{if (GetAnnotation $f "extension")}}
-+        {{if and (GetAnnotation $f "extension") (Macro "IsDispatched" $f)}}
-     vtbl.{{TrimPrefix "vk" (Macro "FunctionName" $f)}} = §
-         reinterpret_cast<{{Macro "FunctionPtrName" $f}}>(§
-             get_proc_addr(instance, "{{Macro "FunctionName" $f}}"));
-@@ -265,3 +265,32 @@ bool LoadDeviceVtbl(VkDevice device,
- } // namespace vulkan
- ¶
- {{end}}
-+
-+
-+{{/*
-+-------------------------------------------------------------------------------
-+  This function emits nil for extension entrypoints that should not be
-+  included in dispatch tables, "true" otherwise. Extensions that are ony used
-+  directly between the loader and driver, or that aren't supported on Android
-+  at all, should be excluded from dispatch.
-+-------------------------------------------------------------------------------
-+*/}}
-+{{define "IsUnsupportedExtension"}}
-+  {{$ext := index $.Arguments 0}}
-+  {{     if eq $ext "VK_EXT_KHR_display"}}true
-+  {{else if eq $ext "VK_EXT_KHR_display_swapchain"}}true
-+  {{else if eq $ext "VK_EXT_KHR_x11_surface"}}true
-+  {{else if eq $ext "VK_EXT_KHR_xcb_surface"}}true
-+  {{else if eq $ext "VK_EXT_KHR_wayland_surface"}}true
-+  {{else if eq $ext "VK_EXT_KHR_mir_surface"}}true
-+  {{else if eq $ext "VK_EXT_KHR_win32_surface"}}true
-+  {{end}}
-+{{end}}
-+
-+{{define "IsDispatched"}}
-+  {{AssertType $ "Function"}}
-+  {{$ext := GetAnnotation $ "extension"}}
-+  {{if not $ext}}true
-+  {{else if not (Macro "IsUnsupportedExtension" $ext)}}true
-+  {{end}}
-+{{end}}
-diff --git a/vulkan/libvulkan/loader.cpp b/vulkan/libvulkan/loader.cpp
-index c427918..a44026f 100644
---- a/vulkan/libvulkan/loader.cpp
-+++ b/vulkan/libvulkan/loader.cpp
-@@ -1102,16 +1102,29 @@ VkResult DestroyDevice(VkDevice drv_device) {
-     return VK_SUCCESS;
- }
- 
--void* AllocDeviceMem(VkDevice device,
--                     size_t size,
--                     size_t align,
--                     VkSystemAllocType type) {
-+void* AllocMem(VkInstance instance,
-+               size_t size,
-+               size_t align,
-+               VkSystemAllocType type) {
-+    const VkAllocCallbacks* alloc_cb = instance->alloc;
-+    return alloc_cb->pfnAlloc(alloc_cb->pUserData, size, align, type);
-+}
-+
-+void FreeMem(VkInstance instance, void* ptr) {
-+    const VkAllocCallbacks* alloc_cb = instance->alloc;
-+    alloc_cb->pfnFree(alloc_cb->pUserData, ptr);
-+}
-+
-+void* AllocMem(VkDevice device,
-+               size_t size,
-+               size_t align,
-+               VkSystemAllocType type) {
-     const VkAllocCallbacks* alloc_cb =
-         static_cast<Device*>(GetVtbl(device)->device)->instance->alloc;
-     return alloc_cb->pfnAlloc(alloc_cb->pUserData, size, align, type);
- }
- 
--void FreeDeviceMem(VkDevice device, void* ptr) {
-+void FreeMem(VkDevice device, void* ptr) {
-     const VkAllocCallbacks* alloc_cb =
-         static_cast<Device*>(GetVtbl(device)->device)->instance->alloc;
-     alloc_cb->pfnFree(alloc_cb->pUserData, ptr);
-diff --git a/vulkan/libvulkan/loader.h b/vulkan/libvulkan/loader.h
-index 5e0a6c9..3e34e75 100644
---- a/vulkan/libvulkan/loader.h
-+++ b/vulkan/libvulkan/loader.h
-@@ -18,9 +18,8 @@
- #define LIBVULKAN_LOADER_H 1
- 
- #define VK_PROTOTYPES
-+#define VK_USE_PLATFORM_ANDROID_KHR
- #include <vulkan/vulkan.h>
--#include <vulkan/vk_ext_khr_swapchain.h>
--#include <vulkan/vk_ext_khr_device_swapchain.h>
- #include <vulkan/vk_ext_android_native_buffer.h>
- 
- namespace vulkan {
-@@ -52,6 +51,8 @@ struct InstanceVtbl {
-     PFN_vkGetPhysicalDeviceSparseImageFormatProperties GetPhysicalDeviceSparseImageFormatProperties;
- 
-     // Layers and loader only, not implemented by drivers
-+    PFN_vkCreateAndroidSurfaceKHR CreateAndroidSurfaceKHR;
-+    PFN_vkDestroySurfaceKHR DestroySurfaceKHR;
-     PFN_vkGetPhysicalDeviceSurfaceSupportKHR GetPhysicalDeviceSurfaceSupportKHR;
-     // clang-format on
- };
-@@ -230,11 +231,16 @@ VkResult AllocCommandBuffers(VkDevice device,
-                              VkCmdBuffer* cmdbuffers);
- VkResult DestroyDevice(VkDevice drv_device);
- 
--void* AllocDeviceMem(VkDevice device,
--                     size_t size,
--                     size_t align,
--                     VkSystemAllocType type);
--void FreeDeviceMem(VkDevice device, void* ptr);
-+void* AllocMem(VkInstance instance,
-+               size_t size,
-+               size_t align,
-+               VkSystemAllocType type);
-+void FreeMem(VkInstance instance, void* ptr);
-+void* AllocMem(VkDevice device,
-+               size_t size,
-+               size_t align,
-+               VkSystemAllocType type);
-+void FreeMem(VkDevice device, void* ptr);
- const DeviceVtbl& GetDriverVtbl(VkDevice device);
- const DeviceVtbl& GetDriverVtbl(VkQueue queue);
- 
-@@ -260,20 +266,22 @@ bool LoadDeviceVtbl(VkDevice device,
- // -----------------------------------------------------------------------------
- // swapchain.cpp
- 
--VkResult GetPhysicalDeviceSurfaceSupportKHR(
--    VkPhysicalDevice pdev,
--    uint32_t queue_family,
--    const VkSurfaceDescriptionKHR* surface_desc,
--    VkBool32* supported);
-+VkResult CreateAndroidSurfaceKHR(VkInstance instance,
-+                                 ANativeWindow* window,
-+                                 VkSurfaceKHR* surface);
-+void DestroySurfaceKHR(VkInstance instance, VkSurfaceKHR surface);
-+VkBool32 GetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice pdev,
-+                                            uint32_t queue_family,
-+                                            VkSurfaceKHR surface);
- VkResult GetSurfacePropertiesKHR(VkDevice device,
--                                 const VkSurfaceDescriptionKHR* surface_desc,
-+                                 VkSurfaceKHR surface,
-                                  VkSurfacePropertiesKHR* properties);
- VkResult GetSurfaceFormatsKHR(VkDevice device,
--                              const VkSurfaceDescriptionKHR* surface_desc,
-+                              VkSurfaceKHR surface,
-                               uint32_t* count,
-                               VkSurfaceFormatKHR* formats);
- VkResult GetSurfacePresentModesKHR(VkDevice device,
--                                   const VkSurfaceDescriptionKHR* surface_desc,
-+                                   VkSurfaceKHR surface,
-                                    uint32_t* count,
-                                    VkPresentModeKHR* modes);
- VkResult CreateSwapchainKHR(VkDevice device,
-diff --git a/vulkan/libvulkan/swapchain.cpp b/vulkan/libvulkan/swapchain.cpp
-index 70c0e33..6813680 100644
---- a/vulkan/libvulkan/swapchain.cpp
-+++ b/vulkan/libvulkan/swapchain.cpp
-@@ -49,43 +49,55 @@ struct NativeBaseDeleter {
-     void operator()(T* obj) { obj->common.decRef(&obj->common); }
- };
- 
--template <typename T>
-+template <typename T, typename Host>
- class VulkanAllocator {
-    public:
-     typedef T value_type;
- 
--    explicit VulkanAllocator(VkDevice device) : device_(device) {}
-+    explicit VulkanAllocator(Host host) : host_(host) {}
- 
-     template <typename U>
--    explicit VulkanAllocator(const VulkanAllocator<U>& other)
--        : device_(other.device_) {}
-+    explicit VulkanAllocator(const VulkanAllocator<U, Host>& other)
-+        : host_(other.host_) {}
- 
-     T* allocate(size_t n) const {
--        return static_cast<T*>(AllocDeviceMem(
--            device_, n * sizeof(T), alignof(T), VK_SYSTEM_ALLOC_TYPE_INTERNAL));
-+        return static_cast<T*>(AllocMem(host_, n * sizeof(T), alignof(T),
-+                                        VK_SYSTEM_ALLOC_TYPE_INTERNAL));
-     }
--    void deallocate(T* p, size_t) const { return FreeDeviceMem(device_, p); }
-+    void deallocate(T* p, size_t) const { return FreeMem(host_, p); }
- 
-    private:
--    template <typename U>
-+    template <typename U, typename H>
-     friend class VulkanAllocator;
--    VkDevice device_;
-+    Host host_;
- };
- 
--template <typename T>
--std::shared_ptr<T> InitSharedPtr(VkDevice device, T* obj) {
-+template <typename T, typename Host>
-+std::shared_ptr<T> InitSharedPtr(Host host, T* obj) {
-     obj->common.incRef(&obj->common);
-     return std::shared_ptr<T>(obj, NativeBaseDeleter<T>(),
--                              VulkanAllocator<T>(device));
-+                              VulkanAllocator<T, Host>(host));
- }
- 
- // ----------------------------------------------------------------------------
- 
-+struct Surface {
-+    std::shared_ptr<ANativeWindow> window;
-+};
-+
-+VkSurfaceKHR HandleFromSurface(Surface* surface) {
-+    return VkSurfaceKHR(reinterpret_cast<uint64_t>(surface));
-+}
-+
-+Surface* SurfaceFromHandle(VkSurfaceKHR handle) {
-+    return reinterpret_cast<Surface*>(handle.handle);
-+}
-+
- struct Swapchain {
--    Swapchain(std::shared_ptr<ANativeWindow> window_, uint32_t num_images_)
--        : window(window_), num_images(num_images_) {}
-+    Swapchain(Surface& surface_, uint32_t num_images_)
-+        : surface(surface_), num_images(num_images_) {}
- 
--    std::shared_ptr<ANativeWindow> window;
-+    Surface& surface;
-     uint32_t num_images;
- 
-     struct Image {
-@@ -113,95 +125,69 @@ Swapchain* SwapchainFromHandle(VkSwapchainKHR handle) {
- 
- namespace vulkan {
- 
--VkResult GetPhysicalDeviceSurfaceSupportKHR(
--    VkPhysicalDevice /*pdev*/,
--    uint32_t /*queue_family*/,
--    const VkSurfaceDescriptionKHR* surface_desc,
--    VkBool32* supported) {
--// TODO(jessehall): Fix the header, preferrably upstream, so values added to
--// existing enums don't trigger warnings like this.
--#pragma clang diagnostic push
--#pragma clang diagnostic ignored "-Wold-style-cast"
--#pragma clang diagnostic ignored "-Wsign-conversion"
--    ALOGE_IF(
--        surface_desc->sType != VK_STRUCTURE_TYPE_SURFACE_DESCRIPTION_WINDOW_KHR,
--        "vkGetPhysicalDeviceSurfaceSupportKHR: pSurfaceDescription->sType=%#x "
--        "not supported",
--        surface_desc->sType);
--#pragma clang diagnostic pop
-+VkResult CreateAndroidSurfaceKHR(VkInstance instance,
-+                                 ANativeWindow* window,
-+                                 VkSurfaceKHR* out_surface) {
-+    void* mem = AllocMem(instance, sizeof(Surface), alignof(Surface),
-+                         VK_SYSTEM_ALLOC_TYPE_API_OBJECT);
-+    if (!mem)
-+        return VK_ERROR_OUT_OF_HOST_MEMORY;
-+    Surface* surface = new (mem) Surface;
- 
--    const VkSurfaceDescriptionWindowKHR* window_desc =
--        reinterpret_cast<const VkSurfaceDescriptionWindowKHR*>(surface_desc);
-+    surface->window = InitSharedPtr(instance, window);
- 
--    // TODO(jessehall): Also check whether the physical device exports the
--    // VK_EXT_ANDROID_native_buffer extension. For now, assume it does.
--    *supported = (window_desc->platform == VK_PLATFORM_ANDROID_KHR &&
--                  !window_desc->pPlatformHandle &&
--                  static_cast<ANativeWindow*>(window_desc->pPlatformWindow)
--                          ->common.magic == ANDROID_NATIVE_WINDOW_MAGIC);
-+    // TODO(jessehall): Create and use NATIVE_WINDOW_API_VULKAN.
-+    int err =
-+        native_window_api_connect(surface->window.get(), NATIVE_WINDOW_API_EGL);
-+    if (err != 0) {
-+        // TODO(jessehall): Improve error reporting. Can we enumerate possible
-+        // errors and translate them to valid Vulkan result codes?
-+        ALOGE("native_window_api_connect() failed: %s (%d)", strerror(-err),
-+              err);
-+        surface->~Surface();
-+        FreeMem(instance, surface);
-+        return VK_ERROR_INITIALIZATION_FAILED;
-+    }
- 
-+    *out_surface = HandleFromSurface(surface);
-     return VK_SUCCESS;
- }
- 
-+void DestroySurfaceKHR(VkInstance instance, VkSurfaceKHR surface_handle) {
-+    Surface* surface = SurfaceFromHandle(surface_handle);
-+    if (!surface)
-+        return;
-+    native_window_api_disconnect(surface->window.get(), NATIVE_WINDOW_API_EGL);
-+    surface->~Surface();
-+    FreeMem(instance, surface);
-+}
-+
-+VkBool32 GetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice /*pdev*/,
-+                                            uint32_t /*queue_family*/,
-+                                            VkSurfaceKHR /*surface*/) {
-+    return VK_TRUE;
-+}
-+
- VkResult GetSurfacePropertiesKHR(VkDevice /*device*/,
--                                 const VkSurfaceDescriptionKHR* surface_desc,
-+                                 VkSurfaceKHR surface,
-                                  VkSurfacePropertiesKHR* properties) {
--    const VkSurfaceDescriptionWindowKHR* window_desc =
--        reinterpret_cast<const VkSurfaceDescriptionWindowKHR*>(surface_desc);
--    ANativeWindow* window =
--        static_cast<ANativeWindow*>(window_desc->pPlatformWindow);
--
-     int err;
--
--    // TODO(jessehall): Currently the window must be connected for several
--    // queries -- including default dimensions -- to work, since Surface caches
--    // the queried values at connect() and queueBuffer(), and query() returns
--    // those cached values.
--    //
--    // The proposed refactoring to create a VkSurface object (bug 14596) will
--    // give us a place to connect once per window. If that doesn't end up
--    // happening, we'll probably need to maintain an internal list of windows
--    // that have swapchains created for them, search that list here, and
--    // only temporarily connect if the window doesn't have a swapchain.
--
--    bool disconnect = true;
--    err = native_window_api_connect(window, NATIVE_WINDOW_API_EGL);
--    if (err == -EINVAL) {
--        // This is returned if the window is already connected, among other
--        // things. We'll just assume we're already connected and charge ahead.
--        // See TODO above, this is not cool.
--        ALOGW(
--            "vkGetSurfacePropertiesKHR: native_window_api_connect returned "
--            "-EINVAL, assuming already connected");
--        err = 0;
--        disconnect = false;
--    } else if (err != 0) {
--        // TODO(jessehall): Improve error reporting. Can we enumerate possible
--        // errors and translate them to valid Vulkan result codes?
--        return VK_ERROR_INITIALIZATION_FAILED;
--    }
-+    ANativeWindow* window = SurfaceFromHandle(surface)->window.get();
- 
-     int width, height;
-     err = window->query(window, NATIVE_WINDOW_DEFAULT_WIDTH, &width);
-     if (err != 0) {
-         ALOGE("NATIVE_WINDOW_DEFAULT_WIDTH query failed: %s (%d)",
-               strerror(-err), err);
--        if (disconnect)
--            native_window_api_disconnect(window, NATIVE_WINDOW_API_EGL);
-         return VK_ERROR_INITIALIZATION_FAILED;
-     }
-     err = window->query(window, NATIVE_WINDOW_DEFAULT_HEIGHT, &height);
-     if (err != 0) {
-         ALOGE("NATIVE_WINDOW_DEFAULT_WIDTH query failed: %s (%d)",
-               strerror(-err), err);
--        if (disconnect)
--            native_window_api_disconnect(window, NATIVE_WINDOW_API_EGL);
-         return VK_ERROR_INITIALIZATION_FAILED;
-     }
- 
--    if (disconnect)
--        native_window_api_disconnect(window, NATIVE_WINDOW_API_EGL);
--
-     properties->currentExtent = VkExtent2D{width, height};
- 
-     // TODO(jessehall): Figure out what the min/max values should be.
-@@ -238,13 +224,14 @@ VkResult GetSurfacePropertiesKHR(VkDevice /*device*/,
- }
- 
- VkResult GetSurfaceFormatsKHR(VkDevice /*device*/,
--                              const VkSurfaceDescriptionKHR* /*surface_desc*/,
-+                              VkSurfaceKHR /*surface*/,
-                               uint32_t* count,
-                               VkSurfaceFormatKHR* formats) {
--    // TODO(jessehall): Fill out the set of supported formats. Open question
--    // whether we should query the driver for support -- how does it know what
--    // the consumer can support? Should we support formats that don't
--    // correspond to gralloc formats?
-+    // TODO(jessehall): Fill out the set of supported formats. Longer term, add
-+    // a new gralloc method to query whether a (format, usage) pair is
-+    // supported, and check that for each gralloc format that corresponds to a
-+    // Vulkan format. Shorter term, just add a few more formats to the ones
-+    // hardcoded below.
- 
-     const VkSurfaceFormatKHR kFormats[] = {
-         {VK_FORMAT_R8G8B8A8_UNORM, VK_COLORSPACE_SRGB_NONLINEAR_KHR},
-@@ -262,11 +249,10 @@ VkResult GetSurfaceFormatsKHR(VkDevice /*device*/,
-     return result;
- }
- 
--VkResult GetSurfacePresentModesKHR(
--    VkDevice /*device*/,
--    const VkSurfaceDescriptionKHR* /*surface_desc*/,
--    uint32_t* count,
--    VkPresentModeKHR* modes) {
-+VkResult GetSurfacePresentModesKHR(VkDevice /*device*/,
-+                                   VkSurfaceKHR /*surface*/,
-+                                   uint32_t* count,
-+                                   VkPresentModeKHR* modes) {
-     const VkPresentModeKHR kModes[] = {
-         VK_PRESENT_MODE_MAILBOX_KHR, VK_PRESENT_MODE_FIFO_KHR,
-     };
-@@ -304,26 +290,11 @@ VkResult CreateSwapchainKHR(VkDevice device,
-              "present modes other than FIFO are not yet implemented");
- 
-     // -- Configure the native window --
--    // Failure paths from here on need to disconnect the window.
- 
-+    Surface& surface = *SurfaceFromHandle(create_info->surface);
-     const DeviceVtbl& driver_vtbl = GetDriverVtbl(device);
- 
--    std::shared_ptr<ANativeWindow> window = InitSharedPtr(
--        device, static_cast<ANativeWindow*>(
--                    reinterpret_cast<const VkSurfaceDescriptionWindowKHR*>(
--                        create_info->pSurfaceDescription)->pPlatformWindow));
--
--    // TODO(jessehall): Create and use NATIVE_WINDOW_API_VULKAN.
--    err = native_window_api_connect(window.get(), NATIVE_WINDOW_API_EGL);
--    if (err != 0) {
--        // TODO(jessehall): Improve error reporting. Can we enumerate possible
--        // errors and translate them to valid Vulkan result codes?
--        ALOGE("native_window_api_connect() failed: %s (%d)", strerror(-err),
--              err);
--        return VK_ERROR_INITIALIZATION_FAILED;
--    }
--
--    err = native_window_set_buffers_dimensions(window.get(),
-+    err = native_window_set_buffers_dimensions(surface.window.get(),
-                                                create_info->imageExtent.width,
-                                                create_info->imageExtent.height);
-     if (err != 0) {
-@@ -332,40 +303,37 @@ VkResult CreateSwapchainKHR(VkDevice device,
-         ALOGE("native_window_set_buffers_dimensions(%d,%d) failed: %s (%d)",
-               create_info->imageExtent.width, create_info->imageExtent.height,
-               strerror(-err), err);
--        native_window_api_disconnect(window.get(), NATIVE_WINDOW_API_EGL);
-         return VK_ERROR_INITIALIZATION_FAILED;
-     }
- 
-     err = native_window_set_scaling_mode(
--        window.get(), NATIVE_WINDOW_SCALING_MODE_SCALE_TO_WINDOW);
-+        surface.window.get(), NATIVE_WINDOW_SCALING_MODE_SCALE_TO_WINDOW);
-     if (err != 0) {
-         // TODO(jessehall): Improve error reporting. Can we enumerate possible
-         // errors and translate them to valid Vulkan result codes?
-         ALOGE("native_window_set_scaling_mode(SCALE_TO_WINDOW) failed: %s (%d)",
-               strerror(-err), err);
--        native_window_api_disconnect(window.get(), NATIVE_WINDOW_API_EGL);
-         return VK_ERROR_INITIALIZATION_FAILED;
-     }
- 
-     uint32_t min_undequeued_buffers;
--    err = window->query(window.get(), NATIVE_WINDOW_MIN_UNDEQUEUED_BUFFERS,
--                        reinterpret_cast<int*>(&min_undequeued_buffers));
-+    err = surface.window->query(
-+        surface.window.get(), NATIVE_WINDOW_MIN_UNDEQUEUED_BUFFERS,
-+        reinterpret_cast<int*>(&min_undequeued_buffers));
-     if (err != 0) {
-         // TODO(jessehall): Improve error reporting. Can we enumerate possible
-         // errors and translate them to valid Vulkan result codes?
-         ALOGE("window->query failed: %s (%d)", strerror(-err), err);
--        native_window_api_disconnect(window.get(), NATIVE_WINDOW_API_EGL);
-         return VK_ERROR_INITIALIZATION_FAILED;
-     }
-     uint32_t num_images =
-         (create_info->minImageCount - 1) + min_undequeued_buffers;
--    err = native_window_set_buffer_count(window.get(), num_images);
-+    err = native_window_set_buffer_count(surface.window.get(), num_images);
-     if (err != 0) {
-         // TODO(jessehall): Improve error reporting. Can we enumerate possible
-         // errors and translate them to valid Vulkan result codes?
-         ALOGE("native_window_set_buffer_count failed: %s (%d)", strerror(-err),
-               err);
--        native_window_api_disconnect(window.get(), NATIVE_WINDOW_API_EGL);
-         return VK_ERROR_INITIALIZATION_FAILED;
-     }
- 
-@@ -377,31 +345,27 @@ VkResult CreateSwapchainKHR(VkDevice device,
-             &gralloc_usage);
-         if (result != VK_SUCCESS) {
-             ALOGE("vkGetSwapchainGrallocUsageANDROID failed: %d", result);
--            native_window_api_disconnect(window.get(), NATIVE_WINDOW_API_EGL);
-             return VK_ERROR_INITIALIZATION_FAILED;
-         }
-     } else {
-         gralloc_usage = GRALLOC_USAGE_HW_RENDER | GRALLOC_USAGE_HW_TEXTURE;
-     }
--    err = native_window_set_usage(window.get(), gralloc_usage);
-+    err = native_window_set_usage(surface.window.get(), gralloc_usage);
-     if (err != 0) {
-         // TODO(jessehall): Improve error reporting. Can we enumerate possible
-         // errors and translate them to valid Vulkan result codes?
-         ALOGE("native_window_set_usage failed: %s (%d)", strerror(-err), err);
--        native_window_api_disconnect(window.get(), NATIVE_WINDOW_API_EGL);
-         return VK_ERROR_INITIALIZATION_FAILED;
-     }
- 
-     // -- Allocate our Swapchain object --
-     // After this point, we must deallocate the swapchain on error.
- 
--    void* mem = AllocDeviceMem(device, sizeof(Swapchain), alignof(Swapchain),
--                               VK_SYSTEM_ALLOC_TYPE_API_OBJECT);
--    if (!mem) {
--        native_window_api_disconnect(window.get(), NATIVE_WINDOW_API_EGL);
-+    void* mem = AllocMem(device, sizeof(Swapchain), alignof(Swapchain),
-+                         VK_SYSTEM_ALLOC_TYPE_API_OBJECT);
-+    if (!mem)
-         return VK_ERROR_OUT_OF_HOST_MEMORY;
--    }
--    Swapchain* swapchain = new (mem) Swapchain(window, num_images);
-+    Swapchain* swapchain = new (mem) Swapchain(surface, num_images);
- 
-     // -- Dequeue all buffers and create a VkImage for each --
-     // Any failures during or after this must cancel the dequeued buffers.
-@@ -435,7 +399,8 @@ VkResult CreateSwapchainKHR(VkDevice device,
-         Swapchain::Image& img = swapchain->images[i];
- 
-         ANativeWindowBuffer* buffer;
--        err = window->dequeueBuffer(window.get(), &buffer, &img.dequeue_fence);
-+        err = surface.window->dequeueBuffer(surface.window.get(), &buffer,
-+                                            &img.dequeue_fence);
-         if (err != 0) {
-             // TODO(jessehall): Improve error reporting. Can we enumerate
-             // possible errors and translate them to valid Vulkan result codes?
-@@ -469,8 +434,8 @@ VkResult CreateSwapchainKHR(VkDevice device,
-     for (uint32_t i = 0; i < num_images; i++) {
-         Swapchain::Image& img = swapchain->images[i];
-         if (img.dequeued) {
--            window->cancelBuffer(window.get(), img.buffer.get(),
--                                 img.dequeue_fence);
-+            surface.window->cancelBuffer(surface.window.get(), img.buffer.get(),
-+                                         img.dequeue_fence);
-             img.dequeue_fence = -1;
-             img.dequeued = false;
-         }
-@@ -481,9 +446,8 @@ VkResult CreateSwapchainKHR(VkDevice device,
-     }
- 
-     if (result != VK_SUCCESS) {
--        native_window_api_disconnect(window.get(), NATIVE_WINDOW_API_EGL);
-         swapchain->~Swapchain();
--        FreeDeviceMem(device, swapchain);
-+        FreeMem(device, swapchain);
-         return result;
-     }
- 
-@@ -494,7 +458,7 @@ VkResult CreateSwapchainKHR(VkDevice device,
- VkResult DestroySwapchainKHR(VkDevice device, VkSwapchainKHR swapchain_handle) {
-     const DeviceVtbl& driver_vtbl = GetDriverVtbl(device);
-     Swapchain* swapchain = SwapchainFromHandle(swapchain_handle);
--    const std::shared_ptr<ANativeWindow>& window = swapchain->window;
-+    const std::shared_ptr<ANativeWindow>& window = swapchain->surface.window;
- 
-     for (uint32_t i = 0; i < swapchain->num_images; i++) {
-         Swapchain::Image& img = swapchain->images[i];
-@@ -509,9 +473,8 @@ VkResult DestroySwapchainKHR(VkDevice device, VkSwapchainKHR swapchain_handle) {
-         }
-     }
- 
--    native_window_api_disconnect(window.get(), NATIVE_WINDOW_API_EGL);
-     swapchain->~Swapchain();
--    FreeDeviceMem(device, swapchain);
-+    FreeMem(device, swapchain);
- 
-     return VK_SUCCESS;
- }
-@@ -541,6 +504,7 @@ VkResult AcquireNextImageKHR(VkDevice device,
-                              VkSemaphore semaphore,
-                              uint32_t* image_index) {
-     Swapchain& swapchain = *SwapchainFromHandle(swapchain_handle);
-+    ANativeWindow* window = swapchain.surface.window.get();
-     VkResult result;
-     int err;
- 
-@@ -550,8 +514,7 @@ VkResult AcquireNextImageKHR(VkDevice device,
- 
-     ANativeWindowBuffer* buffer;
-     int fence;
--    err = swapchain.window->dequeueBuffer(swapchain.window.get(), &buffer,
--                                          &fence);
-+    err = window->dequeueBuffer(window, &buffer, &fence);
-     if (err != 0) {
-         // TODO(jessehall): Improve error reporting. Can we enumerate possible
-         // errors and translate them to valid Vulkan result codes?
-@@ -569,7 +532,7 @@ VkResult AcquireNextImageKHR(VkDevice device,
-     }
-     if (idx == swapchain.num_images) {
-         ALOGE("dequeueBuffer returned unrecognized buffer");
--        swapchain.window->cancelBuffer(swapchain.window.get(), buffer, fence);
-+        window->cancelBuffer(window, buffer, fence);
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wold-style-cast"
-         return VK_ERROR_OUT_OF_DATE_KHR;
-@@ -605,7 +568,7 @@ VkResult AcquireNextImageKHR(VkDevice device,
-         // number between the time the driver closes it and the time we close
-         // it. We must assume one of: the driver *always* closes it even on
-         // failure, or *never* closes it on failure.
--        swapchain.window->cancelBuffer(swapchain.window.get(), buffer, fence);
-+        window->cancelBuffer(window, buffer, fence);
-         swapchain.images[idx].dequeued = false;
-         swapchain.images[idx].dequeue_fence = -1;
-         return result;
-@@ -630,6 +593,7 @@ VkResult QueuePresentKHR(VkQueue queue, VkPresentInfoKHR* present_info) {
-     for (uint32_t sc = 0; sc < present_info->swapchainCount; sc++) {
-         Swapchain& swapchain =
-             *SwapchainFromHandle(present_info->swapchains[sc]);
-+        ANativeWindow* window = swapchain.surface.window.get();
-         uint32_t image_idx = present_info->imageIndices[sc];
-         Swapchain::Image& img = swapchain.images[image_idx];
-         VkResult result;
-@@ -656,8 +620,7 @@ VkResult QueuePresentKHR(VkQueue queue, VkPresentInfoKHR* present_info) {
-             continue;
-         }
- 
--        err = swapchain.window->queueBuffer(swapchain.window.get(),
--                                            img.buffer.get(), fence);
-+        err = window->queueBuffer(window, img.buffer.get(), fence);
-         if (err != 0) {
-             // TODO(jessehall): What now? We should probably cancel the buffer,
-             // I guess?
--- 
-2.6.0.rc2.230.g3dd15c0
-
diff --git a/vulkan/patches/frameworks_native-sdk_0.10/0008-vulkan-Update-from-version-0.183.0-to-0.184.0.patch b/vulkan/patches/frameworks_native-sdk_0.10/0008-vulkan-Update-from-version-0.183.0-to-0.184.0.patch
deleted file mode 100644
index 39d8a60..0000000
--- a/vulkan/patches/frameworks_native-sdk_0.10/0008-vulkan-Update-from-version-0.183.0-to-0.184.0.patch
+++ /dev/null
@@ -1,533 +0,0 @@
-From 821c3aebdbac594a9b977e8183a863bed7419132 Mon Sep 17 00:00:00 2001
-From: Jesse Hall <jessehall@google.com>
-Date: Sat, 21 Nov 2015 19:31:56 -0800
-Subject: [PATCH] vulkan: Update from version 0.183.0 to 0.184.0
-
-Change-Id: I11802010d9171877e3fc8cc6e0931f8c746660c4
----
- vulkan/api/vulkan.api              | 39 ++++++++++++----------------
- vulkan/include/vulkan/vulkan.h     | 53 +++++++++++++++++++-------------------
- vulkan/libvulkan/entry.cpp         | 21 ++++++---------
- vulkan/libvulkan/get_proc_addr.cpp |  7 -----
- vulkan/libvulkan/loader.h          |  1 -
- vulkan/nulldrv/null_driver.cpp     |  9 ++-----
- vulkan/nulldrv/null_driver.h       |  5 ++--
- vulkan/nulldrv/null_driver_gen.cpp |  1 -
- 8 files changed, 54 insertions(+), 82 deletions(-)
-
-diff --git a/vulkan/api/vulkan.api b/vulkan/api/vulkan.api
-index 878cf44..ab1fb1b 100644
---- a/vulkan/api/vulkan.api
-+++ b/vulkan/api/vulkan.api
-@@ -27,7 +27,7 @@ import platform "platform.api"
- 
- // API version (major.minor.patch)
- define VERSION_MAJOR 0
--define VERSION_MINOR 183
-+define VERSION_MINOR 184
- define VERSION_PATCH 0
- 
- // API limits
-@@ -929,7 +929,7 @@ bitfield VkImageAspectFlags {
- 
- /// Sparse memory bind flags
- bitfield VkSparseMemoryBindFlags {
--    VK_SPARSE_MEMORY_BIND_REPLICATE_64KIB_BLOCK_BIT         = 0x00000001,  /// Replicate the first 64 KiB memory block to the entire bind rage
-+    VK_SPARSE_MEMORY_BIND_REPLICATE_BLOCK_BIT               = 0x00000001,
- }
- 
- /// Sparse image memory requirements flags
-@@ -1433,7 +1433,7 @@ class VkShaderModuleCreateInfo {
-     VkStructureType                             sType                  /// Must be VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO
-     const void*                                 pNext                  /// Pointer to next structure
-     platform.size_t                             codeSize               /// Specified in bytes
--    const void*                                 pCode                  /// Binary code of size codeSize
-+    const u32*                                  pCode                  /// Binary code of size codeSize
-     VkShaderModuleCreateFlags                   flags                  /// Reserved
- }
- 
-@@ -1566,9 +1566,9 @@ class VkPipelineRasterStateCreateInfo {
-     VkCullMode                                  cullMode
-     VkFrontFace                                 frontFace
-     VkBool32                                    depthBiasEnable
--    f32                                         depthBias
-+    f32                                         depthBiasConstantFactor
-     f32                                         depthBiasClamp
--    f32                                         slopeScaledDepthBias
-+    f32                                         depthBiasSlopeFactor
-     f32                                         lineWidth
- }
- 
-@@ -1844,6 +1844,7 @@ class VkPhysicalDeviceFeatures {
-     VkBool32                                    fillModeNonSolid                          /// point and wireframe fill modes
-     VkBool32                                    depthBounds                               /// depth bounds test
-     VkBool32                                    wideLines                                 /// lines with width greater than 1
-+    VkBool32                                    strictLines
-     VkBool32                                    largePoints                               /// points with size greater than 1
-     VkBool32                                    alphaToOne                                /// The fragment alpha channel can be forced to maximum representable alpha value
-     VkBool32                                    multiViewport
-@@ -1989,7 +1990,7 @@ class VkPhysicalDeviceLimits {
-     u32                                         maxStorageImageSamples                    /// max num of samples for a storage image
-     u32                                         maxSampleMaskWords                        /// max num of sample mask words
- 
--    u64                                         timestampFrequency                        /// 1/clock_tick_granularity for timestamp queries
-+    f32                                         timestampPeriod
- 
-     u32                                         maxClipDistances                          /// max number of clip distances
-     u32                                         maxCullDistances                          /// max number of cull distances
-@@ -2001,6 +2002,9 @@ class VkPhysicalDeviceLimits {
-     f32[2]                                      lineWidthRange                            /// range (min,max) of supported line widths
-     f32                                         pointSizeGranularity                      /// granularity of supported point sizes
-     f32                                         lineWidthGranularity                      /// granularity of supported line widths
-+
-+    u32                                         recommendedBufferCopyOffsetAlignment
-+    u32                                         recommendedBufferCopyRowPitchAlignment
- }
- 
- class VkPhysicalDeviceSparseProperties {
-@@ -2982,15 +2986,14 @@ cmd VkResult vkGetQueryPoolResults(
-         VkQueryPool                                 queryPool,
-         u32                                         startQuery,
-         u32                                         queryCount,
--        platform.size_t*                            pDataSize,
-+        platform.size_t                             dataSize,
-         void*                                       pData,
-+        VkDeviceSize                                stride,
-         VkQueryResultFlags                          flags) {
-     deviceObject := GetDevice(device)
-     queryPoolObject := GetQueryPool(queryPool)
-     assert(queryPoolObject.device == device)
- 
--    dataSize := ?
--    pDataSize[0] = dataSize
-     data := pData[0:dataSize]
- 
-     return ?
-@@ -3209,20 +3212,10 @@ cmd void vkDestroyPipelineCache(
-     State.PipelineCaches[pipelineCache] = null
- }
- 
--cmd platform.size_t vkGetPipelineCacheSize(
--        VkDevice                                    device,
--        VkPipelineCache                             pipelineCache) {
--    deviceObject := GetDevice(device)
--    pipelineCacheObject := GetPipelineCache(pipelineCache)
--    assert(pipelineCacheObject.device == device)
--
--    return ?
--}
--
- cmd VkResult vkGetPipelineCacheData(
-         VkDevice                                    device,
-         VkPipelineCache                             pipelineCache,
--        platform.size_t                             dataSize,
-+        platform.size_t*                            pDataSize,
-         void*                                       pData) {
-     deviceObject := GetDevice(device)
-     pipelineCacheObject := GetPipelineCache(pipelineCache)
-@@ -3741,9 +3734,9 @@ cmd void vkCmdSetLineWidth(
- @threadSafety("app")
- cmd void vkCmdSetDepthBias(
-         VkCmdBuffer                                 cmdBuffer,
--        f32                                         depthBias,
-+        f32                                         depthBiasConstantFactor,
-         f32                                         depthBiasClamp,
--        f32                                         slopeScaledDepthBias) {
-+        f32                                         depthBiasSlopeFactor) {
-     cmdBufferObject := GetCmdBuffer(cmdBuffer)
-     queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_GRAPHICS_BIT
-     cmdBufferObject.queueFlags = queueFlags
-@@ -4357,7 +4350,7 @@ cmd void vkCmdCopyQueryPoolResults(
-         u32                                         queryCount,
-         VkBuffer                                    destBuffer,
-         VkDeviceSize                                destOffset,
--        VkDeviceSize                                destStride,
-+        VkDeviceSize                                stride,
-         VkQueryResultFlags                          flags) {
-     cmdBufferObject := GetCmdBuffer(cmdBuffer)
-     queryPoolObject := GetQueryPool(queryPool)
-diff --git a/vulkan/include/vulkan/vulkan.h b/vulkan/include/vulkan/vulkan.h
-index ee921bf..75d1358 100644
---- a/vulkan/include/vulkan/vulkan.h
-+++ b/vulkan/include/vulkan/vulkan.h
-@@ -41,7 +41,7 @@ extern "C" {
-     ((major << 22) | (minor << 12) | patch)
- 
- // Vulkan API version supported by this file
--#define VK_API_VERSION VK_MAKE_VERSION(0, 183, 0)
-+#define VK_API_VERSION VK_MAKE_VERSION(0, 184, 0)
- 
- 
- #if defined(__cplusplus) && ((defined(_MSC_VER) && _MSC_VER >= 1800) || __cplusplus >= 201103L)
-@@ -85,7 +85,7 @@ extern "C" {
- #else
-     #define VK_DEFINE_NONDISP_HANDLE(obj) typedef struct obj##_T { uint64_t handle; } obj;
- #endif
--        
-+
- 
- 
- typedef uint32_t VkBool32;
-@@ -877,7 +877,7 @@ typedef enum {
- typedef VkFlags VkSparseImageFormatFlags;
- 
- typedef enum {
--    VK_SPARSE_MEMORY_BIND_REPLICATE_64KIB_BLOCK_BIT = 0x00000001,
-+    VK_SPARSE_MEMORY_BIND_REPLICATE_BLOCK_BIT = 0x00000001,
- } VkSparseMemoryBindFlagBits;
- typedef VkFlags VkSparseMemoryBindFlags;
- 
-@@ -1112,6 +1112,7 @@ typedef struct {
-     VkBool32                                    fillModeNonSolid;
-     VkBool32                                    depthBounds;
-     VkBool32                                    wideLines;
-+    VkBool32                                    strictLines;
-     VkBool32                                    largePoints;
-     VkBool32                                    alphaToOne;
-     VkBool32                                    multiViewport;
-@@ -1260,7 +1261,7 @@ typedef struct {
-     uint32_t                                    maxSampledImageIntegerSamples;
-     uint32_t                                    maxStorageImageSamples;
-     uint32_t                                    maxSampleMaskWords;
--    uint64_t                                    timestampFrequency;
-+    float                                       timestampPeriod;
-     uint32_t                                    maxClipDistances;
-     uint32_t                                    maxCullDistances;
-     uint32_t                                    maxCombinedClipAndCullDistances;
-@@ -1269,6 +1270,8 @@ typedef struct {
-     float                                       lineWidthRange[2];
-     float                                       pointSizeGranularity;
-     float                                       lineWidthGranularity;
-+    uint32_t                                    recommendedBufferCopyOffsetAlignment;
-+    uint32_t                                    recommendedBufferCopyRowPitchAlignment;
- } VkPhysicalDeviceLimits;
- 
- typedef struct {
-@@ -1521,7 +1524,7 @@ typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     size_t                                      codeSize;
--    const void*                                 pCode;
-+    const uint32_t*                             pCode;
-     VkShaderModuleCreateFlags                   flags;
- } VkShaderModuleCreateInfo;
- 
-@@ -1640,9 +1643,9 @@ typedef struct {
-     VkCullMode                                  cullMode;
-     VkFrontFace                                 frontFace;
-     VkBool32                                    depthBiasEnable;
--    float                                       depthBias;
-+    float                                       depthBiasConstantFactor;
-     float                                       depthBiasClamp;
--    float                                       slopeScaledDepthBias;
-+    float                                       depthBiasSlopeFactor;
-     float                                       lineWidth;
- } VkPipelineRasterStateCreateInfo;
- 
-@@ -2132,7 +2135,7 @@ typedef VkResult (VKAPI *PFN_vkSetEvent)(VkDevice device, VkEvent event);
- typedef VkResult (VKAPI *PFN_vkResetEvent)(VkDevice device, VkEvent event);
- typedef VkResult (VKAPI *PFN_vkCreateQueryPool)(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, VkQueryPool* pQueryPool);
- typedef void (VKAPI *PFN_vkDestroyQueryPool)(VkDevice device, VkQueryPool queryPool);
--typedef VkResult (VKAPI *PFN_vkGetQueryPoolResults)(VkDevice device, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, size_t* pDataSize, void* pData, VkQueryResultFlags flags);
-+typedef VkResult (VKAPI *PFN_vkGetQueryPoolResults)(VkDevice device, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, size_t dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags);
- typedef VkResult (VKAPI *PFN_vkCreateBuffer)(VkDevice device, const VkBufferCreateInfo* pCreateInfo, VkBuffer* pBuffer);
- typedef void (VKAPI *PFN_vkDestroyBuffer)(VkDevice device, VkBuffer buffer);
- typedef VkResult (VKAPI *PFN_vkCreateBufferView)(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, VkBufferView* pView);
-@@ -2148,8 +2151,7 @@ typedef VkResult (VKAPI *PFN_vkCreateShader)(VkDevice device, const VkShaderCrea
- typedef void (VKAPI *PFN_vkDestroyShader)(VkDevice device, VkShader shader);
- typedef VkResult (VKAPI *PFN_vkCreatePipelineCache)(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, VkPipelineCache* pPipelineCache);
- typedef void (VKAPI *PFN_vkDestroyPipelineCache)(VkDevice device, VkPipelineCache pipelineCache);
--typedef size_t (VKAPI *PFN_vkGetPipelineCacheSize)(VkDevice device, VkPipelineCache pipelineCache);
--typedef VkResult (VKAPI *PFN_vkGetPipelineCacheData)(VkDevice device, VkPipelineCache pipelineCache, size_t dataSize, void* pData);
-+typedef VkResult (VKAPI *PFN_vkGetPipelineCacheData)(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData);
- typedef VkResult (VKAPI *PFN_vkMergePipelineCaches)(VkDevice device, VkPipelineCache destCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches);
- typedef VkResult (VKAPI *PFN_vkCreateGraphicsPipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t count, const VkGraphicsPipelineCreateInfo* pCreateInfos, VkPipeline* pPipelines);
- typedef VkResult (VKAPI *PFN_vkCreateComputePipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t count, const VkComputePipelineCreateInfo* pCreateInfos, VkPipeline* pPipelines);
-@@ -2183,7 +2185,7 @@ typedef void (VKAPI *PFN_vkCmdBindPipeline)(VkCmdBuffer cmdBuffer, VkPipelineBin
- typedef void (VKAPI *PFN_vkCmdSetViewport)(VkCmdBuffer cmdBuffer, uint32_t viewportCount, const VkViewport* pViewports);
- typedef void (VKAPI *PFN_vkCmdSetScissor)(VkCmdBuffer cmdBuffer, uint32_t scissorCount, const VkRect2D* pScissors);
- typedef void (VKAPI *PFN_vkCmdSetLineWidth)(VkCmdBuffer cmdBuffer, float lineWidth);
--typedef void (VKAPI *PFN_vkCmdSetDepthBias)(VkCmdBuffer cmdBuffer, float depthBias, float depthBiasClamp, float slopeScaledDepthBias);
-+typedef void (VKAPI *PFN_vkCmdSetDepthBias)(VkCmdBuffer cmdBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor);
- typedef void (VKAPI *PFN_vkCmdSetBlendConstants)(VkCmdBuffer cmdBuffer, const float blendConst[4]);
- typedef void (VKAPI *PFN_vkCmdSetDepthBounds)(VkCmdBuffer cmdBuffer, float minDepthBounds, float maxDepthBounds);
- typedef void (VKAPI *PFN_vkCmdSetStencilCompareMask)(VkCmdBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilCompareMask);
-@@ -2217,7 +2219,7 @@ typedef void (VKAPI *PFN_vkCmdBeginQuery)(VkCmdBuffer cmdBuffer, VkQueryPool que
- typedef void (VKAPI *PFN_vkCmdEndQuery)(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot);
- typedef void (VKAPI *PFN_vkCmdResetQueryPool)(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount);
- typedef void (VKAPI *PFN_vkCmdWriteTimestamp)(VkCmdBuffer cmdBuffer, VkTimestampType timestampType, VkBuffer destBuffer, VkDeviceSize destOffset);
--typedef void (VKAPI *PFN_vkCmdCopyQueryPoolResults)(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize destStride, VkQueryResultFlags flags);
-+typedef void (VKAPI *PFN_vkCmdCopyQueryPoolResults)(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize stride, VkQueryResultFlags flags);
- typedef void (VKAPI *PFN_vkCmdPushConstants)(VkCmdBuffer cmdBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t start, uint32_t length, const void* values);
- typedef void (VKAPI *PFN_vkCmdBeginRenderPass)(VkCmdBuffer cmdBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkRenderPassContents contents);
- typedef void (VKAPI *PFN_vkCmdNextSubpass)(VkCmdBuffer cmdBuffer, VkRenderPassContents contents);
-@@ -2491,8 +2493,9 @@ VkResult VKAPI vkGetQueryPoolResults(
-     VkQueryPool                                 queryPool,
-     uint32_t                                    startQuery,
-     uint32_t                                    queryCount,
--    size_t*                                     pDataSize,
-+    size_t                                      dataSize,
-     void*                                       pData,
-+    VkDeviceSize                                stride,
-     VkQueryResultFlags                          flags);
- 
- VkResult VKAPI vkCreateBuffer(
-@@ -2564,14 +2567,10 @@ void VKAPI vkDestroyPipelineCache(
-     VkDevice                                    device,
-     VkPipelineCache                             pipelineCache);
- 
--size_t VKAPI vkGetPipelineCacheSize(
--    VkDevice                                    device,
--    VkPipelineCache                             pipelineCache);
--
- VkResult VKAPI vkGetPipelineCacheData(
-     VkDevice                                    device,
-     VkPipelineCache                             pipelineCache,
--    size_t                                      dataSize,
-+    size_t*                                     pDataSize,
-     void*                                       pData);
- 
- VkResult VKAPI vkMergePipelineCaches(
-@@ -2737,9 +2736,9 @@ void VKAPI vkCmdSetLineWidth(
- 
- void VKAPI vkCmdSetDepthBias(
-     VkCmdBuffer                                 cmdBuffer,
--    float                                       depthBias,
-+    float                                       depthBiasConstantFactor,
-     float                                       depthBiasClamp,
--    float                                       slopeScaledDepthBias);
-+    float                                       depthBiasSlopeFactor);
- 
- void VKAPI vkCmdSetBlendConstants(
-     VkCmdBuffer                                 cmdBuffer,
-@@ -2973,7 +2972,7 @@ void VKAPI vkCmdCopyQueryPoolResults(
-     uint32_t                                    queryCount,
-     VkBuffer                                    destBuffer,
-     VkDeviceSize                                destOffset,
--    VkDeviceSize                                destStride,
-+    VkDeviceSize                                stride,
-     VkQueryResultFlags                          flags);
- 
- void VKAPI vkCmdPushConstants(
-@@ -3317,8 +3316,8 @@ typedef struct {
- 
- 
- 
--#define vk_ext_khr_x11_surface 1
- #ifdef VK_USE_PLATFORM_X11_KHR
-+#define vk_ext_khr_x11_surface 1
- #include <X11/Xlib.h>
- 
- #define VK_EXT_KHR_X11_SURFACE_REVISION   1
-@@ -3337,8 +3336,8 @@ VkResult VKAPI vkCreateX11SurfaceKHR(
- #endif
- #endif /* VK_USE_PLATFORM_X11_KHR */
- 
--#define vk_ext_khr_xcb_surface 1
- #ifdef VK_USE_PLATFORM_XCB_KHR
-+#define vk_ext_khr_xcb_surface 1
- #include <xcb/xcb.h>
- 
- #define VK_EXT_KHR_XCB_SURFACE_REVISION   1
-@@ -3357,8 +3356,8 @@ VkResult VKAPI vkCreateXcbSurfaceKHR(
- #endif
- #endif /* VK_USE_PLATFORM_XCB_KHR */
- 
--#define vk_ext_khr_wayland_surface 1
- #ifdef VK_USE_PLATFORM_WAYLAND_KHR
-+#define vk_ext_khr_wayland_surface 1
- #include <wayland-client.h>
- 
- #define VK_EXT_KHR_WAYLAND_SURFACE_REVISION 1
-@@ -3376,8 +3375,8 @@ VkResult VKAPI vkCreateWaylandSurfaceKHR(
- #endif
- #endif /* VK_USE_PLATFORM_WAYLAND_KHR */
- 
--#define vk_ext_khr_mir_surface 1
- #ifdef VK_USE_PLATFORM_MIR_KHR
-+#define vk_ext_khr_mir_surface 1
- #include <mir_toolkit/client_types.h>
- 
- #define VK_EXT_KHR_MIR_SURFACE_REVISION   1
-@@ -3395,8 +3394,8 @@ VkResult VKAPI vkCreateMirSurfaceKHR(
- #endif
- #endif /* VK_USE_PLATFORM_MIR_KHR */
- 
--#define vk_ext_khr_android_surface 1
- #ifdef VK_USE_PLATFORM_ANDROID_KHR
-+#define vk_ext_khr_android_surface 1
- #include <android/native_window.h>
- 
- #define VK_EXT_KHR_ANDROID_SURFACE_REVISION 1
-@@ -3415,8 +3414,8 @@ VkResult VKAPI vkCreateAndroidSurfaceKHR(
- #endif
- #endif /* VK_USE_PLATFORM_ANDROID_KHR */
- 
--#define vk_ext_khr_win32_surface 1
- #ifdef VK_USE_PLATFORM_WIN32_KHR
-+#define vk_ext_khr_win32_surface 1
- #include <windows.h>
- 
- #define VK_EXT_KHR_WIN32_SURFACE_REVISION 1
-diff --git a/vulkan/libvulkan/entry.cpp b/vulkan/libvulkan/entry.cpp
-index 339101f..0c7533f 100644
---- a/vulkan/libvulkan/entry.cpp
-+++ b/vulkan/libvulkan/entry.cpp
-@@ -307,8 +307,8 @@ void vkDestroyQueryPool(VkDevice device, VkQueryPool queryPool) {
- }
- 
- __attribute__((visibility("default")))
--VkResult vkGetQueryPoolResults(VkDevice device, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, size_t* pDataSize, void* pData, VkQueryResultFlags flags) {
--    return GetVtbl(device).GetQueryPoolResults(device, queryPool, startQuery, queryCount, pDataSize, pData, flags);
-+VkResult vkGetQueryPoolResults(VkDevice device, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, size_t dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags) {
-+    return GetVtbl(device).GetQueryPoolResults(device, queryPool, startQuery, queryCount, dataSize, pData, stride, flags);
- }
- 
- __attribute__((visibility("default")))
-@@ -387,13 +387,8 @@ void vkDestroyPipelineCache(VkDevice device, VkPipelineCache pipelineCache) {
- }
- 
- __attribute__((visibility("default")))
--size_t vkGetPipelineCacheSize(VkDevice device, VkPipelineCache pipelineCache) {
--    return GetVtbl(device).GetPipelineCacheSize(device, pipelineCache);
--}
--
--__attribute__((visibility("default")))
--VkResult vkGetPipelineCacheData(VkDevice device, VkPipelineCache pipelineCache, size_t dataSize, void* pData) {
--    return GetVtbl(device).GetPipelineCacheData(device, pipelineCache, dataSize, pData);
-+VkResult vkGetPipelineCacheData(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData) {
-+    return GetVtbl(device).GetPipelineCacheData(device, pipelineCache, pDataSize, pData);
- }
- 
- __attribute__((visibility("default")))
-@@ -562,8 +557,8 @@ void vkCmdSetLineWidth(VkCmdBuffer cmdBuffer, float lineWidth) {
- }
- 
- __attribute__((visibility("default")))
--void vkCmdSetDepthBias(VkCmdBuffer cmdBuffer, float depthBias, float depthBiasClamp, float slopeScaledDepthBias) {
--    GetVtbl(cmdBuffer).CmdSetDepthBias(cmdBuffer, depthBias, depthBiasClamp, slopeScaledDepthBias);
-+void vkCmdSetDepthBias(VkCmdBuffer cmdBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor) {
-+    GetVtbl(cmdBuffer).CmdSetDepthBias(cmdBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor);
- }
- 
- __attribute__((visibility("default")))
-@@ -732,8 +727,8 @@ void vkCmdWriteTimestamp(VkCmdBuffer cmdBuffer, VkTimestampType timestampType, V
- }
- 
- __attribute__((visibility("default")))
--void vkCmdCopyQueryPoolResults(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize destStride, VkQueryResultFlags flags) {
--    GetVtbl(cmdBuffer).CmdCopyQueryPoolResults(cmdBuffer, queryPool, startQuery, queryCount, destBuffer, destOffset, destStride, flags);
-+void vkCmdCopyQueryPoolResults(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize stride, VkQueryResultFlags flags) {
-+    GetVtbl(cmdBuffer).CmdCopyQueryPoolResults(cmdBuffer, queryPool, startQuery, queryCount, destBuffer, destOffset, stride, flags);
- }
- 
- __attribute__((visibility("default")))
-diff --git a/vulkan/libvulkan/get_proc_addr.cpp b/vulkan/libvulkan/get_proc_addr.cpp
-index f1ad5f3..1135870 100644
---- a/vulkan/libvulkan/get_proc_addr.cpp
-+++ b/vulkan/libvulkan/get_proc_addr.cpp
-@@ -179,7 +179,6 @@ const NameProcEntry kDeviceProcTbl[] = {
-     {"vkGetImageSparseMemoryRequirements", reinterpret_cast<PFN_vkVoidFunction>(vkGetImageSparseMemoryRequirements)},
-     {"vkGetImageSubresourceLayout", reinterpret_cast<PFN_vkVoidFunction>(vkGetImageSubresourceLayout)},
-     {"vkGetPipelineCacheData", reinterpret_cast<PFN_vkVoidFunction>(vkGetPipelineCacheData)},
--    {"vkGetPipelineCacheSize", reinterpret_cast<PFN_vkVoidFunction>(vkGetPipelineCacheSize)},
-     {"vkGetQueryPoolResults", reinterpret_cast<PFN_vkVoidFunction>(vkGetQueryPoolResults)},
-     {"vkGetRenderAreaGranularity", reinterpret_cast<PFN_vkVoidFunction>(vkGetRenderAreaGranularity)},
-     {"vkGetSurfaceFormatsKHR", reinterpret_cast<PFN_vkVoidFunction>(vkGetSurfaceFormatsKHR)},
-@@ -341,7 +340,6 @@ const NameOffsetEntry kDeviceOffsetTbl[] = {
-     {"vkGetImageSparseMemoryRequirements", offsetof(DeviceVtbl, GetImageSparseMemoryRequirements)},
-     {"vkGetImageSubresourceLayout", offsetof(DeviceVtbl, GetImageSubresourceLayout)},
-     {"vkGetPipelineCacheData", offsetof(DeviceVtbl, GetPipelineCacheData)},
--    {"vkGetPipelineCacheSize", offsetof(DeviceVtbl, GetPipelineCacheSize)},
-     {"vkGetQueryPoolResults", offsetof(DeviceVtbl, GetQueryPoolResults)},
-     {"vkGetRenderAreaGranularity", offsetof(DeviceVtbl, GetRenderAreaGranularity)},
-     {"vkGetSurfaceFormatsKHR", offsetof(DeviceVtbl, GetSurfaceFormatsKHR)},
-@@ -772,11 +770,6 @@ bool LoadDeviceVtbl(VkDevice device,
-         ALOGE("missing device proc: %s", "vkDestroyPipelineCache");
-         success = false;
-     }
--    vtbl.GetPipelineCacheSize = reinterpret_cast<PFN_vkGetPipelineCacheSize>(get_proc_addr(device, "vkGetPipelineCacheSize"));
--    if (UNLIKELY(!vtbl.GetPipelineCacheSize)) {
--        ALOGE("missing device proc: %s", "vkGetPipelineCacheSize");
--        success = false;
--    }
-     vtbl.GetPipelineCacheData = reinterpret_cast<PFN_vkGetPipelineCacheData>(get_proc_addr(device, "vkGetPipelineCacheData"));
-     if (UNLIKELY(!vtbl.GetPipelineCacheData)) {
-         ALOGE("missing device proc: %s", "vkGetPipelineCacheData");
-diff --git a/vulkan/libvulkan/loader.h b/vulkan/libvulkan/loader.h
-index 3e34e75..e8ad915 100644
---- a/vulkan/libvulkan/loader.h
-+++ b/vulkan/libvulkan/loader.h
-@@ -106,7 +106,6 @@ struct DeviceVtbl {
-     PFN_vkDestroyShader DestroyShader;
-     PFN_vkCreatePipelineCache CreatePipelineCache;
-     PFN_vkDestroyPipelineCache DestroyPipelineCache;
--    PFN_vkGetPipelineCacheSize GetPipelineCacheSize;
-     PFN_vkGetPipelineCacheData GetPipelineCacheData;
-     PFN_vkMergePipelineCaches MergePipelineCaches;
-     PFN_vkCreateGraphicsPipelines CreateGraphicsPipelines;
-diff --git a/vulkan/nulldrv/null_driver.cpp b/vulkan/nulldrv/null_driver.cpp
-index 7e890be..d3580a5 100644
---- a/vulkan/nulldrv/null_driver.cpp
-+++ b/vulkan/nulldrv/null_driver.cpp
-@@ -835,7 +835,7 @@ VkResult ResetEvent(VkDevice device, VkEvent event) {
- void DestroyQueryPool(VkDevice device, VkQueryPool queryPool) {
- }
- 
--VkResult GetQueryPoolResults(VkDevice device, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, size_t* pDataSize, void* pData, VkQueryResultFlags flags) {
-+VkResult GetQueryPoolResults(VkDevice device, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, size_t dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags) {
-     ALOGV("TODO: vk%s", __FUNCTION__);
-     return VK_SUCCESS;
- }
-@@ -859,12 +859,7 @@ void DestroyShader(VkDevice device, VkShader shader) {
- void DestroyPipelineCache(VkDevice device, VkPipelineCache pipelineCache) {
- }
- 
--size_t GetPipelineCacheSize(VkDevice device, VkPipelineCache pipelineCache) {
--    ALOGV("TODO: vk%s", __FUNCTION__);
--    return VK_SUCCESS;
--}
--
--VkResult GetPipelineCacheData(VkDevice device, VkPipelineCache pipelineCache, size_t dataSize, void* pData) {
-+VkResult GetPipelineCacheData(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData) {
-     ALOGV("TODO: vk%s", __FUNCTION__);
-     return VK_SUCCESS;
- }
-diff --git a/vulkan/nulldrv/null_driver.h b/vulkan/nulldrv/null_driver.h
-index c35df18..5fd3acf 100644
---- a/vulkan/nulldrv/null_driver.h
-+++ b/vulkan/nulldrv/null_driver.h
-@@ -79,7 +79,7 @@ VkResult SetEvent(VkDevice device, VkEvent event);
- VkResult ResetEvent(VkDevice device, VkEvent event);
- VkResult CreateQueryPool(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, VkQueryPool* pQueryPool);
- void DestroyQueryPool(VkDevice device, VkQueryPool queryPool);
--VkResult GetQueryPoolResults(VkDevice device, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, size_t* pDataSize, void* pData, VkQueryResultFlags flags);
-+VkResult GetQueryPoolResults(VkDevice device, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, size_t dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags);
- VkResult CreateBuffer(VkDevice device, const VkBufferCreateInfo* pCreateInfo, VkBuffer* pBuffer);
- void DestroyBuffer(VkDevice device, VkBuffer buffer);
- VkResult CreateBufferView(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, VkBufferView* pView);
-@@ -95,8 +95,7 @@ VkResult CreateShader(VkDevice device, const VkShaderCreateInfo* pCreateInfo, Vk
- void DestroyShader(VkDevice device, VkShader shader);
- VkResult CreatePipelineCache(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, VkPipelineCache* pPipelineCache);
- void DestroyPipelineCache(VkDevice device, VkPipelineCache pipelineCache);
--size_t GetPipelineCacheSize(VkDevice device, VkPipelineCache pipelineCache);
--VkResult GetPipelineCacheData(VkDevice device, VkPipelineCache pipelineCache, size_t dataSize, void* pData);
-+VkResult GetPipelineCacheData(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData);
- VkResult MergePipelineCaches(VkDevice device, VkPipelineCache destCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches);
- VkResult CreateGraphicsPipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t count, const VkGraphicsPipelineCreateInfo* pCreateInfos, VkPipeline* pPipelines);
- VkResult CreateComputePipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t count, const VkComputePipelineCreateInfo* pCreateInfos, VkPipeline* pPipelines);
-diff --git a/vulkan/nulldrv/null_driver_gen.cpp b/vulkan/nulldrv/null_driver_gen.cpp
-index 431977d..31c56ff 100644
---- a/vulkan/nulldrv/null_driver_gen.cpp
-+++ b/vulkan/nulldrv/null_driver_gen.cpp
-@@ -173,7 +173,6 @@ const NameProcEntry kDeviceProcTbl[] = {
-     {"vkGetImageSparseMemoryRequirements", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkGetImageSparseMemoryRequirements>(GetImageSparseMemoryRequirements))},
-     {"vkGetImageSubresourceLayout", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkGetImageSubresourceLayout>(GetImageSubresourceLayout))},
-     {"vkGetPipelineCacheData", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkGetPipelineCacheData>(GetPipelineCacheData))},
--    {"vkGetPipelineCacheSize", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkGetPipelineCacheSize>(GetPipelineCacheSize))},
-     {"vkGetQueryPoolResults", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkGetQueryPoolResults>(GetQueryPoolResults))},
-     {"vkGetRenderAreaGranularity", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkGetRenderAreaGranularity>(GetRenderAreaGranularity))},
-     {"vkInvalidateMappedMemoryRanges", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkInvalidateMappedMemoryRanges>(InvalidateMappedMemoryRanges))},
--- 
-2.6.0.rc2.230.g3dd15c0
-
diff --git a/vulkan/patches/frameworks_native-sdk_0.10/0009-vulkan.api-Distinguish-Vk-Flags-from-Vk-FlagBits.patch b/vulkan/patches/frameworks_native-sdk_0.10/0009-vulkan.api-Distinguish-Vk-Flags-from-Vk-FlagBits.patch
deleted file mode 100644
index 5e81a63..0000000
--- a/vulkan/patches/frameworks_native-sdk_0.10/0009-vulkan.api-Distinguish-Vk-Flags-from-Vk-FlagBits.patch
+++ /dev/null
@@ -1,735 +0,0 @@
-From 9f9678461ec3fdefa9c29e84c329cbdd243d7f80 Mon Sep 17 00:00:00 2001
-From: Jesse Hall <jessehall@google.com>
-Date: Tue, 24 Nov 2015 10:24:18 -0800
-Subject: [PATCH] vulkan.api: Distinguish Vk*Flags from Vk*FlagBits
-
-Previously Vulkan never used the *FlagBits enums directly as the type
-of a parameter or field, only ever using the *Flags typedef. For cases
-when a variable should have exactl one of the options, a separate enum
-was used. Now Vulkan is switching to using the *FlagBits enum for such
-variables, to avoid needing two separate enums for the same thing.
-
-The API file didn't distinguish between these before, it only had one
-type for the bitfield, and the vulkan_h.tmpl template synthesized the
-*FlagBits name from the *Flags name during generation. Now that we
-have cases where some variables need the *FlagBits type and some need
-the *Flags type, we need to distinguish them in the API file. This
-change does that.
-
-This required some ugly casting in a few places to get around apic's
-strict operand type compatibility rules. Most of these can go away
-once b/25863296 is fixed.
-
-Change-Id: Ia153d4b0c91abe80e4c34a284ca9d721cc770795
----
- vulkan/api/vulkan.api | 229 +++++++++++++++++++++++++++-----------------------
- 1 file changed, 122 insertions(+), 107 deletions(-)
-
-diff --git a/vulkan/api/vulkan.api b/vulkan/api/vulkan.api
-index ab1fb1b..6f8c0d8 100644
---- a/vulkan/api/vulkan.api
-+++ b/vulkan/api/vulkan.api
-@@ -713,7 +713,8 @@ enum VkColorSpaceKHR {
- /////////////////
- 
- /// Queue capabilities
--bitfield VkQueueFlags {
-+type VkFlags VkQueueFlags
-+bitfield VkQueueFlagBits {
-     VK_QUEUE_GRAPHICS_BIT                                   = 0x00000001,    /// Queue supports graphics operations
-     VK_QUEUE_COMPUTE_BIT                                    = 0x00000002,    /// Queue supports compute operations
-     VK_QUEUE_DMA_BIT                                        = 0x00000004,    /// Queue supports DMA operations
-@@ -722,7 +723,8 @@ bitfield VkQueueFlags {
- }
- 
- /// Memory properties passed into vkAllocMemory().
--bitfield VkMemoryPropertyFlags {
-+type VkFlags VkMemoryPropertyFlags
-+bitfield VkMemoryPropertyFlagBits {
-     VK_MEMORY_PROPERTY_DEVICE_ONLY                          = 0x00000000,    /// If otherwise stated, then allocate memory on device
-     VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT                     = 0x00000001,    /// Memory should be mappable by host
-     VK_MEMORY_PROPERTY_HOST_NON_COHERENT_BIT                = 0x00000002,    /// Memory may not have i/o coherency so vkFlushMappedMemoryRanges and vkInvalidateMappedMemoryRanges must be used flush/invalidate host cache
-@@ -732,12 +734,14 @@ bitfield VkMemoryPropertyFlags {
- }
- 
- /// Memory heap flags
--bitfield VkMemoryHeapFlags {
-+type VkFlags VkMemoryHeapFlags
-+bitfield VkMemoryHeapFlagBits {
-     VK_MEMORY_HEAP_HOST_LOCAL_BIT                           = 0x00000001,    /// If set, heap represents host memory
- }
- 
- /// Memory output flags passed to resource transition commands
--bitfield VkMemoryOutputFlags {
-+type VkFlags VkMemoryOutputFlags
-+bitfield VkMemoryOutputFlagBits {
-     VK_MEMORY_OUTPUT_HOST_WRITE_BIT                         = 0x00000001,    /// Controls output coherency of host writes
-     VK_MEMORY_OUTPUT_SHADER_WRITE_BIT                       = 0x00000002,    /// Controls output coherency of generic shader writes
-     VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT                   = 0x00000004,    /// Controls output coherency of color attachment writes
-@@ -746,7 +750,8 @@ bitfield VkMemoryOutputFlags {
- }
- 
- /// Memory input flags passed to resource transition commands
--bitfield VkMemoryInputFlags {
-+type VkFlags VkMemoryInputFlags
-+bitfield VkMemoryInputFlagBits {
-     VK_MEMORY_INPUT_HOST_READ_BIT                           = 0x00000001,    /// Controls input coherency of host reads
-     VK_MEMORY_INPUT_INDIRECT_COMMAND_BIT                    = 0x00000002,    /// Controls input coherency of indirect command reads
-     VK_MEMORY_INPUT_INDEX_FETCH_BIT                         = 0x00000004,    /// Controls input coherency of index fetches
-@@ -760,7 +765,8 @@ bitfield VkMemoryInputFlags {
- }
- 
- /// Buffer usage flags
--bitfield VkBufferUsageFlags {
-+type VkFlags VkBufferUsageFlags
-+bitfield VkBufferUsageFlagBits {
-     VK_BUFFER_USAGE_TRANSFER_SOURCE_BIT                     = 0x00000001,    /// Can be used as a source of transfer operations
-     VK_BUFFER_USAGE_TRANSFER_DESTINATION_BIT                = 0x00000002,    /// Can be used as a destination of transfer operations
-     VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT                = 0x00000004,    /// Can be used as TBO
-@@ -773,14 +779,16 @@ bitfield VkBufferUsageFlags {
- }
- 
- /// Buffer creation flags
--bitfield VkBufferCreateFlags {
-+type VkFlags VkBufferCreateFlags
-+bitfield VkBufferCreateFlagBits {
-     VK_BUFFER_CREATE_SPARSE_BINDING_BIT                     = 0x00000001,    /// Buffer should support sparse backing
-     VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT                   = 0x00000002,    /// Buffer should support sparse backing with partial residency
-     VK_BUFFER_CREATE_SPARSE_ALIASED_BIT                     = 0x00000004,    /// Buffer should support constent data access to physical memory blocks mapped into multiple locations of sparse buffers
- }
- 
- /// Shader stage flags
--bitfield VkShaderStageFlags {
-+type VkFlags VkShaderStageFlags
-+bitfield VkShaderStageFlagBits {
-     VK_SHADER_STAGE_VERTEX_BIT                              = 0x00000001,
-     VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT                = 0x00000002,
-     VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT             = 0x00000004,
-@@ -792,16 +800,19 @@ bitfield VkShaderStageFlags {
- }
- 
- /// Descriptor pool create flags
--bitfield VkDescriptorPoolCreateFlags {
-+type VkFlags VkDescriptorPoolCreateFlags
-+bitfield VkDescriptorPoolCreateFlagBits {
-     VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT       = 0x00000001,
- }
- 
- /// Descriptor pool reset flags
--bitfield VkDescriptorPoolResetFlags {
-+type VkFlags VkDescriptorPoolResetFlags
-+bitfield VkDescriptorPoolResetFlagBits {
- }
- 
- /// Image usage flags
--bitfield VkImageUsageFlags {
-+type VkFlags VkImageUsageFlags
-+bitfield VkImageUsageFlagBits {
-     VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT                      = 0x00000001,    /// Can be used as a source of transfer operations
-     VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT                 = 0x00000002,    /// Can be used as a destination of transfer operations
-     VK_IMAGE_USAGE_SAMPLED_BIT                              = 0x00000004,    /// Can be sampled from (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types)
-@@ -813,7 +824,8 @@ bitfield VkImageUsageFlags {
- }
- 
- /// Image creation flags
--bitfield VkImageCreateFlags {
-+type VkFlags VkImageCreateFlags
-+bitfield VkImageCreateFlagBits {
-     VK_IMAGE_CREATE_SPARSE_BINDING_BIT                      = 0x00000001,    /// Image should support sparse backing
-     VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT                    = 0x00000002,    /// Image should support sparse backing with partial residency
-     VK_IMAGE_CREATE_SPARSE_ALIASED_BIT                      = 0x00000004,    /// Image should support constent data access to physical memory blocks mapped into multiple locations of sparse images
-@@ -822,20 +834,23 @@ bitfield VkImageCreateFlags {
- }
- 
- /// Framebuffer attachment view creation flags
--bitfield VkImageViewCreateFlags {
-+type VkFlags VkImageViewCreateFlags
-+bitfield VkImageViewCreateFlagBits {
-     VK_IMAGE_VIEW_CREATE_READ_ONLY_DEPTH_BIT                = 0x00000001,
-     VK_IMAGE_VIEW_CREATE_READ_ONLY_STENCIL_BIT              = 0x00000002,
- }
- 
- /// Pipeline creation flags
--bitfield VkPipelineCreateFlags {
-+type VkFlags VkPipelineCreateFlags
-+bitfield VkPipelineCreateFlagBits {
-     VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT             = 0x00000001,
-     VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT                = 0x00000002,
-     VK_PIPELINE_CREATE_DERIVATIVE_BIT                       = 0x00000004,
- }
- 
- /// Channel flags
--bitfield VkChannelFlags {
-+type VkFlags VkChannelFlags
-+bitfield VkChannelFlagBits {
-     VK_CHANNEL_R_BIT                                        = 0x00000001,
-     VK_CHANNEL_G_BIT                                        = 0x00000002,
-     VK_CHANNEL_B_BIT                                        = 0x00000004,
-@@ -843,16 +858,19 @@ bitfield VkChannelFlags {
- }
- 
- /// Fence creation flags
--bitfield VkFenceCreateFlags {
-+type VkFlags VkFenceCreateFlags
-+bitfield VkFenceCreateFlagBits {
-     VK_FENCE_CREATE_SIGNALED_BIT                            = 0x00000001,
- }
- 
- /// Semaphore creation flags
--bitfield VkSemaphoreCreateFlags {
-+type VkFlags VkSemaphoreCreateFlags
-+bitfield VkSemaphoreCreateFlagBits {
- }
- 
- /// Format capability flags
--bitfield VkFormatFeatureFlags {
-+type VkFlags VkFormatFeatureFlags
-+bitfield VkFormatFeatureFlagBits {
-     VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT                     = 0x00000001,    /// Format can be used for sampled images (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types)
-     VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT                     = 0x00000002,    /// Format can be used for storage images (STORAGE_IMAGE descriptor type)
-     VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT              = 0x00000004,    /// Format supports atomic operations in case it's used for storage images
-@@ -868,12 +886,14 @@ bitfield VkFormatFeatureFlags {
- }
- 
- /// Query control flags
--bitfield VkQueryControlFlags {
-+type VkFlags VkQueryControlFlags
-+bitfield VkQueryControlFlagBits {
-     VK_QUERY_CONTROL_CONSERVATIVE_BIT                       = 0x00000001,    /// Allow conservative results to be collected by the query
- }
- 
- /// Query result flags
--bitfield VkQueryResultFlags {
-+type VkFlags VkQueryResultFlags
-+bitfield VkQueryResultFlagBits {
-     VK_QUERY_RESULT_DEFAULT                                 = 0x00000000,   /// Results of the queries are immediately written to the destination buffer as 32-bit values
-     VK_QUERY_RESULT_64_BIT                                  = 0x00000001,   /// Results of the queries are written to the destination buffer as 64-bit values
-     VK_QUERY_RESULT_WAIT_BIT                                = 0x00000002,   /// Results of the queries are waited on before proceeding with the result copy
-@@ -882,26 +902,31 @@ bitfield VkQueryResultFlags {
- }
- 
- /// Shader module creation flags
--bitfield VkShaderModuleCreateFlags {
-+type VkFlags VkShaderModuleCreateFlags
-+bitfield VkShaderModuleCreateFlagBits {
- }
- 
- /// Shader creation flags
--bitfield VkShaderCreateFlags {
-+type VkFlags VkShaderCreateFlags
-+bitfield VkShaderCreateFlagBits {
- }
- 
- /// Event creation flags
--bitfield VkEventCreateFlags {
-+type VkFlags VkEventCreateFlags
-+bitfield VkEventCreateFlagBits {
- }
- 
- /// Command buffer usage flags
--bitfield VkCmdBufferUsageFlags {
-+type VkFlags VkCmdBufferUsageFlags
-+bitfield VkCmdBufferUsageFlagBits {
-     VK_CMD_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT                 = 0x00000001,
-     VK_CMD_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT            = 0x00000002,
-     VK_CMD_BUFFER_USAGE_SIMULTANEOUS_USE_BIT                = 0x00000004,
- }
- 
- /// Pipeline statistics flags
--bitfield VkQueryPipelineStatisticFlags {
-+type VkFlags VkQueryPipelineStatisticFlags
-+bitfield VkQueryPipelineStatisticFlagBits {
-     VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT                     = 0x00000001,  /// Optional
-     VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT                   = 0x00000002,  /// Optional
-     VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT                   = 0x00000004,  /// Optional
-@@ -916,11 +941,13 @@ bitfield VkQueryPipelineStatisticFlags {
- }
- 
- /// Memory mapping flags
--bitfield VkMemoryMapFlags {
-+type VkFlags VkMemoryMapFlags
-+bitfield VkMemoryMapFlagBits {
- }
- 
- /// Bitfield of image aspects
--bitfield VkImageAspectFlags {
-+type VkFlags VkImageAspectFlags
-+bitfield VkImageAspectFlagBits {
-     VK_IMAGE_ASPECT_COLOR_BIT                               = 0x00000001,
-     VK_IMAGE_ASPECT_DEPTH_BIT                               = 0x00000002,
-     VK_IMAGE_ASPECT_STENCIL_BIT                             = 0x00000004,
-@@ -928,19 +955,22 @@ bitfield VkImageAspectFlags {
- }
- 
- /// Sparse memory bind flags
--bitfield VkSparseMemoryBindFlags {
-+type VkFlags VkSparseMemoryBindFlags
-+bitfield VkSparseMemoryBindFlagBits {
-     VK_SPARSE_MEMORY_BIND_REPLICATE_BLOCK_BIT               = 0x00000001,
- }
- 
- /// Sparse image memory requirements flags
--bitfield VkSparseImageFormatFlags {
-+type VkFlags VkSparseImageFormatFlags
-+bitfield VkSparseImageFormatFlagBits {
-     VK_SPARSE_IMAGE_FMT_SINGLE_MIPTAIL_BIT                  = 0x00000001,  /// Image uses a single miptail region for all array slices
-     VK_SPARSE_IMAGE_FMT_ALIGNED_MIP_SIZE_BIT                = 0x00000002,  /// Image requires mip levels to be an exact multiple of the sparse iamge block size for non-mip-tail levels.
-     VK_SPARSE_IMAGE_FMT_NONSTD_BLOCK_SIZE_BIT               = 0x00000004,  /// Image uses a non-standard sparse block size
- }
- 
- /// Pipeline stages
--bitfield VkPipelineStageFlags {
-+type VkFlags VkPipelineStageFlags
-+bitfield VkPipelineStageFlagBits {
-     VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT                       = 0x00000001,  /// Before subsequent commands are processed
-     VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT                     = 0x00000002,  /// Draw/DispatchIndirect command fetch
-     VK_PIPELINE_STAGE_VERTEX_INPUT_BIT                      = 0x00000004,  /// Vertex/index fetch
-@@ -961,30 +991,36 @@ bitfield VkPipelineStageFlags {
- }
- 
- /// Render pass attachment description flags
--bitfield VkAttachmentDescriptionFlags {
-+type VkFlags VkAttachmentDescriptionFlags
-+bitfield VkAttachmentDescriptionFlagBits {
-     VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT                 = 0x00000001,  /// The attachment may alias physical memory of another attachment in the same renderpass
- }
- 
- /// Subpass description flags
--bitfield VkSubpassDescriptionFlags {
-+type VkFlags VkSubpassDescriptionFlags
-+bitfield VkSubpassDescriptionFlagBits {
- }
- 
- /// Command pool creation flags
--bitfield VkCmdPoolCreateFlags {
-+type VkFlags VkCmdPoolCreateFlags
-+bitfield VkCmdPoolCreateFlagBits {
-     VK_CMD_POOL_CREATE_TRANSIENT_BIT                        = 0x00000001,  /// Command buffers have a short lifetime
-     VK_CMD_POOL_CREATE_RESET_COMMAND_BUFFER_BIT             = 0x00000002,  /// Command buffers may release their memory individually
- }
- 
- /// Command pool reset flags
--bitfield VkCmdPoolResetFlags {
-+type VkFlags VkCmdPoolResetFlags
-+bitfield VkCmdPoolResetFlagBits {
-     VK_CMD_POOL_RESET_RELEASE_RESOURCES_BIT                 = 0x00000001,  /// Release resources owned by the pool
- }
- 
--bitfield VkCmdBufferResetFlags {
-+type VkFlags VkCmdBufferResetFlags
-+bitfield VkCmdBufferResetFlagBits {
-     VK_CMD_BUFFER_RESET_RELEASE_RESOURCES_BIT               = 0x00000001,  /// Release resources owned by the buffer
- }
- 
--bitfield VkSampleCountFlags {
-+type VkFlags VkSampleCountFlags
-+bitfield VkSampleCountFlagBits {
-     VK_SAMPLE_COUNT_1_BIT                                   = 0x00000001,
-     VK_SAMPLE_COUNT_2_BIT                                   = 0x00000002,
-     VK_SAMPLE_COUNT_4_BIT                                   = 0x00000004,
-@@ -994,14 +1030,17 @@ bitfield VkSampleCountFlags {
-     VK_SAMPLE_COUNT_64_BIT                                  = 0x00000040,
- }
- 
--bitfield VkStencilFaceFlags {
-+type VkFlags VkStencilFaceFlags
-+bitfield VkStencilFaceFlagBits {
-     VK_STENCIL_FACE_NONE                                    = 0x00000000,   /// No faces
-     VK_STENCIL_FACE_FRONT_BIT                               = 0x00000001,   /// Front face
-     VK_STENCIL_FACE_BACK_BIT                                = 0x00000002,   /// Back face
- }
- 
- @extension("VK_EXT_KHR_swapchain")
--bitfield VkSurfaceTransformFlagsKHR {
-+type VkFlags VkSurfaceTransformFlagsKHR
-+@extension("VK_EXT_KHR_swapchain")
-+bitfield VkSurfaceTransformFlagBitsKHR {
-     VK_SURFACE_TRANSFORM_NONE_BIT_KHR                       = 0x00000001,
-     VK_SURFACE_TRANSFORM_ROT90_BIT_KHR                      = 0x00000002,
-     VK_SURFACE_TRANSFORM_ROT180_BIT_KHR                     = 0x00000004,
-@@ -1014,7 +1053,9 @@ bitfield VkSurfaceTransformFlagsKHR {
- }
- 
- @extension("VK_EXT_KHR_display")
--bitfield VkDisplayPlaneAlphaFlagsKHR {
-+type VkFlags VkDisplayPlaneAlphaFlagsKHR
-+@extension("VK_EXT_KHR_display")
-+bitfield VkDisplayPlaneAlphaFlagBitsKHR {
-     VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR                   = 0x00000001,
-     VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR                = 0x00000002,
-     VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR  = 0x00000004,
-@@ -1181,7 +1222,7 @@ class VkMemoryRequirements {
- }
- 
- class VkSparseImageFormatProperties {
--    VkImageAspectFlags                          aspect
-+    VkImageAspectFlagBits                       aspect
-     VkExtent3D                                  imageGranularity
-     VkSparseImageFormatFlags                    flags
- }
-@@ -1284,7 +1325,7 @@ class VkBufferViewCreateInfo {
- }
- 
- class VkImageSubresource {
--    VkImageAspectFlags                          aspect
-+    VkImageAspectFlagBits                       aspect
-     u32                                         mipLevel
-     u32                                         arrayLayer
- }
-@@ -1443,7 +1484,7 @@ class VkShaderCreateInfo {
-     VkShaderModule                              module             /// Module containing entry point
-     const char*                                 pName              /// Null-terminated entry point name
-     VkShaderCreateFlags                         flags              /// Reserved
--    VkShaderStageFlags                          stage
-+    VkShaderStageFlagBits                       stage
- }
- 
- class VkDescriptorSetLayoutBinding {
-@@ -2774,7 +2815,7 @@ cmd VkResult vkCreateFence(
-     fence := ?
-     pFence[0] = fence
-     State.Fences[fence] = new!FenceObject(
--        device: device, signaled: (pCreateInfo.flags == VK_FENCE_CREATE_SIGNALED_BIT))
-+        device: device, signaled: (pCreateInfo.flags == as!VkFenceCreateFlags(VK_FENCE_CREATE_SIGNALED_BIT)))
- 
-     return ?
- }
-@@ -3695,11 +3736,11 @@ cmd void vkCmdBindPipeline(
-     pipelineObject := GetPipeline(pipeline)
-     assert(cmdBufferObject.device == pipelineObject.device)
- 
--    queueFlags := cmdBufferObject.queueFlags | switch (pipelineBindPoint) {
-+    queue := switch (pipelineBindPoint) {
-         case VK_PIPELINE_BIND_POINT_COMPUTE:  VK_QUEUE_COMPUTE_BIT
-         case VK_PIPELINE_BIND_POINT_GRAPHICS: VK_QUEUE_GRAPHICS_BIT
-     }
--    cmdBufferObject.queueFlags = queueFlags
-+    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, queue)
- }
- 
- @threadSafety("app")
-@@ -3708,8 +3749,7 @@ cmd void vkCmdSetViewport(
-         u32                                         viewportCount,
-         const VkViewport*                           pViewports) {
-     cmdBufferObject := GetCmdBuffer(cmdBuffer)
--    queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_GRAPHICS_BIT
--    cmdBufferObject.queueFlags = queueFlags
-+    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
-@@ -3718,8 +3758,7 @@ cmd void vkCmdSetScissor(
-         u32                                         scissorCount,
-         const VkRect2D*                             pScissors) {
-     cmdBufferObject := GetCmdBuffer(cmdBuffer)
--    queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_GRAPHICS_BIT
--    cmdBufferObject.queueFlags = queueFlags
-+    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
-@@ -3727,8 +3766,7 @@ cmd void vkCmdSetLineWidth(
-         VkCmdBuffer                                 cmdBuffer,
-         f32                                         lineWidth) {
-     cmdBufferObject := GetCmdBuffer(cmdBuffer)
--    queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_GRAPHICS_BIT
--    cmdBufferObject.queueFlags = queueFlags
-+    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
-@@ -3738,8 +3776,7 @@ cmd void vkCmdSetDepthBias(
-         f32                                         depthBiasClamp,
-         f32                                         depthBiasSlopeFactor) {
-     cmdBufferObject := GetCmdBuffer(cmdBuffer)
--    queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_GRAPHICS_BIT
--    cmdBufferObject.queueFlags = queueFlags
-+    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
-@@ -3750,8 +3787,7 @@ cmd void vkCmdSetBlendConstants(
-         // having to modify the AST and semantic model.
-         @readonly f32[4]                            blendConst) {
-     cmdBufferObject := GetCmdBuffer(cmdBuffer)
--    queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_GRAPHICS_BIT
--    cmdBufferObject.queueFlags = queueFlags
-+    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
-@@ -3760,8 +3796,7 @@ cmd void vkCmdSetDepthBounds(
-         f32                                         minDepthBounds,
-         f32                                         maxDepthBounds) {
-     cmdBufferObject := GetCmdBuffer(cmdBuffer)
--    queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_GRAPHICS_BIT
--    cmdBufferObject.queueFlags = queueFlags
-+    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
-@@ -3770,8 +3805,7 @@ cmd void vkCmdSetStencilCompareMask(
-         VkStencilFaceFlags                          faceMask,
-         u32                                         stencilCompareMask) {
-     cmdBufferObject := GetCmdBuffer(cmdBuffer)
--    queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_GRAPHICS_BIT
--    cmdBufferObject.queueFlags = queueFlags
-+    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
-@@ -3780,8 +3814,7 @@ cmd void vkCmdSetStencilWriteMask(
-         VkStencilFaceFlags                          faceMask,
-         u32                                         stencilWriteMask) {
-     cmdBufferObject := GetCmdBuffer(cmdBuffer)
--    queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_GRAPHICS_BIT
--    cmdBufferObject.queueFlags = queueFlags
-+    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
-@@ -3790,8 +3823,7 @@ cmd void vkCmdSetStencilReference(
-         VkStencilFaceFlags                          faceMask,
-         u32                                         stencilReference) {
-     cmdBufferObject := GetCmdBuffer(cmdBuffer)
--    queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_GRAPHICS_BIT
--    cmdBufferObject.queueFlags = queueFlags
-+    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
-@@ -3818,11 +3850,11 @@ cmd void vkCmdBindDescriptorSets(
-         dynamicOffset := dynamicOffsets[i]
-     }
- 
--    queueFlags := cmdBufferObject.queueFlags | switch (pipelineBindPoint) {
-+    queue := switch (pipelineBindPoint) {
-         case VK_PIPELINE_BIND_POINT_COMPUTE:  VK_QUEUE_COMPUTE_BIT
-         case VK_PIPELINE_BIND_POINT_GRAPHICS: VK_QUEUE_GRAPHICS_BIT
-     }
--    cmdBufferObject.queueFlags = queueFlags
-+    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, queue)
- }
- 
- @threadSafety("app")
-@@ -3837,8 +3869,7 @@ cmd void vkCmdBindIndexBuffer(
- 
-     bindCmdBuffer(cmdBuffer, buffer, bufferObject.mem)
- 
--    queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_GRAPHICS_BIT
--    cmdBufferObject.queueFlags = queueFlags
-+    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
-@@ -3862,8 +3893,7 @@ cmd void vkCmdBindVertexBuffers(
-         bindCmdBuffer(cmdBuffer, buffer, bufferObject.mem)
-     }
- 
--    queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_GRAPHICS_BIT
--    cmdBufferObject.queueFlags = queueFlags
-+    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
-@@ -3875,8 +3905,7 @@ cmd void vkCmdDraw(
-         u32                                         firstInstance) {
-     cmdBufferObject := GetCmdBuffer(cmdBuffer)
- 
--    queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_GRAPHICS_BIT
--    cmdBufferObject.queueFlags = queueFlags
-+    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
-@@ -3889,8 +3918,7 @@ cmd void vkCmdDrawIndexed(
-         u32                                         firstInstance) {
-     cmdBufferObject := GetCmdBuffer(cmdBuffer)
- 
--    queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_GRAPHICS_BIT
--    cmdBufferObject.queueFlags = queueFlags
-+    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
-@@ -3906,8 +3934,7 @@ cmd void vkCmdDrawIndirect(
- 
-     bindCmdBuffer(cmdBuffer, buffer, bufferObject.mem)
- 
--    queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_GRAPHICS_BIT
--    cmdBufferObject.queueFlags = queueFlags
-+    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
-@@ -3923,8 +3950,7 @@ cmd void vkCmdDrawIndexedIndirect(
- 
-     bindCmdBuffer(cmdBuffer, buffer, bufferObject.mem)
- 
--    queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_GRAPHICS_BIT
--    cmdBufferObject.queueFlags = queueFlags
-+    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
-@@ -3935,8 +3961,7 @@ cmd void vkCmdDispatch(
-         u32                                         z) {
-     cmdBufferObject := GetCmdBuffer(cmdBuffer)
- 
--    queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_COMPUTE_BIT
--    cmdBufferObject.queueFlags = queueFlags
-+    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_COMPUTE_BIT)
- }
- 
- @threadSafety("app")
-@@ -3950,8 +3975,7 @@ cmd void vkCmdDispatchIndirect(
- 
-     bindCmdBuffer(cmdBuffer, buffer, bufferObject.mem)
- 
--    queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_COMPUTE_BIT
--    cmdBufferObject.queueFlags = queueFlags
-+    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_COMPUTE_BIT)
- }
- 
- @threadSafety("app")
-@@ -3975,8 +3999,7 @@ cmd void vkCmdCopyBuffer(
-     bindCmdBuffer(cmdBuffer, srcBuffer, srcBufferObject.mem)
-     bindCmdBuffer(cmdBuffer, destBuffer, destBufferObject.mem)
- 
--    queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_DMA_BIT
--    cmdBufferObject.queueFlags = queueFlags
-+    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_DMA_BIT)
- }
- 
- @threadSafety("app")
-@@ -4002,8 +4025,7 @@ cmd void vkCmdCopyImage(
-     bindCmdBuffer(cmdBuffer, srcImage, srcImageObject.mem)
-     bindCmdBuffer(cmdBuffer, destImage, destImageObject.mem)
- 
--    queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_DMA_BIT
--    cmdBufferObject.queueFlags = queueFlags
-+    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_DMA_BIT)
- }
- 
- @threadSafety("app")
-@@ -4030,8 +4052,7 @@ cmd void vkCmdBlitImage(
-     bindCmdBuffer(cmdBuffer, srcImage, srcImageObject.mem)
-     bindCmdBuffer(cmdBuffer, destImage, destImageObject.mem)
- 
--    queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_GRAPHICS_BIT
--    cmdBufferObject.queueFlags = queueFlags
-+    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
-@@ -4056,8 +4077,7 @@ cmd void vkCmdCopyBufferToImage(
-     bindCmdBuffer(cmdBuffer, srcBuffer, srcBufferObject.mem)
-     bindCmdBuffer(cmdBuffer, destImage, destImageObject.mem)
- 
--    queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_DMA_BIT
--    cmdBufferObject.queueFlags = queueFlags
-+    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_DMA_BIT)
- }
- 
- @threadSafety("app")
-@@ -4082,8 +4102,7 @@ cmd void vkCmdCopyImageToBuffer(
-     bindCmdBuffer(cmdBuffer, srcImage, srcImageObject.mem)
-     bindCmdBuffer(cmdBuffer, destBuffer, destBufferObject.mem)
- 
--    queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_DMA_BIT
--    cmdBufferObject.queueFlags = queueFlags
-+    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_DMA_BIT)
- }
- 
- @threadSafety("app")
-@@ -4101,8 +4120,7 @@ cmd void vkCmdUpdateBuffer(
- 
-     bindCmdBuffer(cmdBuffer, destBuffer, destBufferObject.mem)
- 
--    queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_DMA_BIT
--    cmdBufferObject.queueFlags = queueFlags
-+    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_DMA_BIT)
- }
- 
- @threadSafety("app")
-@@ -4116,8 +4134,7 @@ cmd void vkCmdFillBuffer(
-     destBufferObject := GetBuffer(destBuffer)
-     assert(cmdBufferObject.device == destBufferObject.device)
- 
--    queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_DMA_BIT
--    cmdBufferObject.queueFlags = queueFlags
-+    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_DMA_BIT)
- }
- 
- @threadSafety("app")
-@@ -4139,8 +4156,7 @@ cmd void vkCmdClearColorImage(
- 
-     bindCmdBuffer(cmdBuffer, image, imageObject.mem)
- 
--    queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_GRAPHICS_BIT
--    cmdBufferObject.queueFlags = queueFlags
-+    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
-@@ -4162,8 +4178,7 @@ cmd void vkCmdClearDepthStencilImage(
- 
-     bindCmdBuffer(cmdBuffer, image, imageObject.mem)
- 
--    queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_GRAPHICS_BIT
--    cmdBufferObject.queueFlags = queueFlags
-+    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
-@@ -4180,8 +4195,7 @@ cmd void vkCmdClearAttachments(
-         rect := rects[i]
-     }
- 
--    queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_GRAPHICS_BIT
--    cmdBufferObject.queueFlags = queueFlags
-+    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
-@@ -4207,8 +4221,7 @@ cmd void vkCmdResolveImage(
-     bindCmdBuffer(cmdBuffer, srcImage, srcImageObject.mem)
-     bindCmdBuffer(cmdBuffer, destImage, destImageObject.mem)
- 
--    queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_GRAPHICS_BIT
--    cmdBufferObject.queueFlags = queueFlags
-+    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
-@@ -4382,8 +4395,7 @@ cmd void vkCmdBeginRenderPass(
-     assert(cmdBufferObject.device == renderPassObject.device)
-     assert(cmdBufferObject.device == framebufferObject.device)
- 
--    queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_GRAPHICS_BIT
--    cmdBufferObject.queueFlags = queueFlags
-+    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- cmd void vkCmdNextSubpass(
-@@ -4397,8 +4409,7 @@ cmd void vkCmdEndRenderPass(
-         VkCmdBuffer                                 cmdBuffer) {
-     cmdBufferObject := GetCmdBuffer(cmdBuffer)
- 
--    queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_GRAPHICS_BIT
--    cmdBufferObject.queueFlags = queueFlags
-+    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- cmd void vkCmdExecuteCommands(
-@@ -4979,3 +4990,7 @@ macro ref!SwapchainObject GetSwapchain(VkSwapchainKHR swapchain) {
-     assert(swapchain in State.Swapchains)
-     return State.Swapchains[swapchain]
- }
-+
-+macro VkQueueFlags AddQueueFlag(VkQueueFlags flags, VkQueueFlagBits bit) {
-+    return as!VkQueueFlags(as!u32(flags) | as!u32(bit))
-+}
--- 
-2.6.0.rc2.230.g3dd15c0
-
diff --git a/vulkan/patches/frameworks_native-sdk_0.10/0010-vulkan-Update-from-version-0.184.0-to-0.185.0.patch b/vulkan/patches/frameworks_native-sdk_0.10/0010-vulkan-Update-from-version-0.184.0-to-0.185.0.patch
deleted file mode 100644
index 0982980..0000000
--- a/vulkan/patches/frameworks_native-sdk_0.10/0010-vulkan-Update-from-version-0.184.0-to-0.185.0.patch
+++ /dev/null
@@ -1,324 +0,0 @@
-From 8b07f118b46ae01f709e7bfd92e29c6f6df5d7c0 Mon Sep 17 00:00:00 2001
-From: Jesse Hall <jessehall@google.com>
-Date: Tue, 24 Nov 2015 11:08:36 -0800
-Subject: [PATCH] vulkan: Update from version 0.184.0 to 0.185.0
-
-Change-Id: I1d6012db32441fe3a99480bfed0e41dfce068980
----
- vulkan/api/vulkan.api              | 32 ++------------------------------
- vulkan/include/vulkan/vulkan.h     | 26 +++-----------------------
- vulkan/libvulkan/entry.cpp         | 14 ++------------
- vulkan/libvulkan/get_proc_addr.cpp | 14 --------------
- vulkan/libvulkan/loader.h          |  2 --
- vulkan/nulldrv/null_driver.cpp     | 11 +----------
- vulkan/nulldrv/null_driver.h       |  4 +---
- vulkan/nulldrv/null_driver_gen.cpp |  2 --
- 8 files changed, 9 insertions(+), 96 deletions(-)
-
-diff --git a/vulkan/api/vulkan.api b/vulkan/api/vulkan.api
-index 6f8c0d8..525b307 100644
---- a/vulkan/api/vulkan.api
-+++ b/vulkan/api/vulkan.api
-@@ -27,7 +27,7 @@ import platform "platform.api"
- 
- // API version (major.minor.patch)
- define VERSION_MAJOR 0
--define VERSION_MINOR 184
-+define VERSION_MINOR 185
- define VERSION_PATCH 0
- 
- // API limits
-@@ -217,11 +217,6 @@ enum VkQueryType {
-     VK_QUERY_TYPE_PIPELINE_STATISTICS                       = 0x00000001, /// Optional
- }
- 
--enum VkTimestampType {
--    VK_TIMESTAMP_TYPE_TOP                                   = 0x00000000,
--    VK_TIMESTAMP_TYPE_BOTTOM                                = 0x00000001,
--}
--
- enum VkBorderColor {
-     VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK                 = 0x00000000,
-     VK_BORDER_COLOR_INT_TRANSPARENT_BLACK                   = 0x00000001,
-@@ -1539,7 +1534,6 @@ class VkSpecializationInfo {
- class VkPipelineShaderStageCreateInfo {
-     VkStructureType                             sType              /// Must be VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO
-     const void*                                 pNext              /// Pointer to next structure
--    VkShaderStageFlags                          stage
-     VkShader                                    shader
-     const VkSpecializationInfo*                 pSpecializationInfo
- }
-@@ -2908,28 +2902,6 @@ cmd void vkDestroySemaphore(
-     State.Semaphores[semaphore] = null
- }
- 
--@threadSafety("app")
--cmd VkResult vkQueueSignalSemaphore(
--        VkQueue                                     queue,
--        VkSemaphore                                 semaphore) {
--    queueObject := GetQueue(queue)
--    semaphoreObject := GetSemaphore(semaphore)
--    assert(queueObject.device == semaphoreObject.device)
--
--    return ?
--}
--
--@threadSafety("system")
--cmd VkResult vkQueueWaitSemaphore(
--        VkQueue                                     queue,
--        VkSemaphore                                 semaphore) {
--    queueObject := GetQueue(queue)
--    semaphoreObject := GetSemaphore(semaphore)
--    assert(queueObject.device == semaphoreObject.device)
--
--    return ?
--}
--
- 
- // Event functions
- 
-@@ -4347,7 +4319,7 @@ cmd void vkCmdResetQueryPool(
- @threadSafety("app")
- cmd void vkCmdWriteTimestamp(
-         VkCmdBuffer                                 cmdBuffer,
--        VkTimestampType                             timestampType,
-+        VkPipelineStageFlagBits                     pipelineStage,
-         VkBuffer                                    destBuffer,
-         VkDeviceSize                                destOffset) {
-     cmdBufferObject := GetCmdBuffer(cmdBuffer)
-diff --git a/vulkan/include/vulkan/vulkan.h b/vulkan/include/vulkan/vulkan.h
-index 75d1358..c0f3bc7 100644
---- a/vulkan/include/vulkan/vulkan.h
-+++ b/vulkan/include/vulkan/vulkan.h
-@@ -41,7 +41,7 @@ extern "C" {
-     ((major << 22) | (minor << 12) | patch)
- 
- // Vulkan API version supported by this file
--#define VK_API_VERSION VK_MAKE_VERSION(0, 184, 0)
-+#define VK_API_VERSION VK_MAKE_VERSION(0, 185, 0)
- 
- 
- #if defined(__cplusplus) && ((defined(_MSC_VER) && _MSC_VER >= 1800) || __cplusplus >= 201103L)
-@@ -772,15 +772,6 @@ typedef enum {
- } VkIndexType;
- 
- typedef enum {
--    VK_TIMESTAMP_TYPE_TOP = 0,
--    VK_TIMESTAMP_TYPE_BOTTOM = 1,
--    VK_TIMESTAMP_TYPE_BEGIN_RANGE = VK_TIMESTAMP_TYPE_TOP,
--    VK_TIMESTAMP_TYPE_END_RANGE = VK_TIMESTAMP_TYPE_BOTTOM,
--    VK_TIMESTAMP_TYPE_NUM = (VK_TIMESTAMP_TYPE_BOTTOM - VK_TIMESTAMP_TYPE_TOP + 1),
--    VK_TIMESTAMP_TYPE_MAX_ENUM = 0x7FFFFFFF
--} VkTimestampType;
--
--typedef enum {
-     VK_RENDER_PASS_CONTENTS_INLINE = 0,
-     VK_RENDER_PASS_CONTENTS_SECONDARY_CMD_BUFFERS = 1,
-     VK_RENDER_PASS_CONTENTS_BEGIN_RANGE = VK_RENDER_PASS_CONTENTS_INLINE,
-@@ -1561,7 +1552,6 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
--    VkShaderStageFlagBits                       stage;
-     VkShader                                    shader;
-     const VkSpecializationInfo*                 pSpecializationInfo;
- } VkPipelineShaderStageCreateInfo;
-@@ -2126,8 +2116,6 @@ typedef VkResult (VKAPI *PFN_vkGetFenceStatus)(VkDevice device, VkFence fence);
- typedef VkResult (VKAPI *PFN_vkWaitForFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout);
- typedef VkResult (VKAPI *PFN_vkCreateSemaphore)(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, VkSemaphore* pSemaphore);
- typedef void (VKAPI *PFN_vkDestroySemaphore)(VkDevice device, VkSemaphore semaphore);
--typedef VkResult (VKAPI *PFN_vkQueueSignalSemaphore)(VkQueue queue, VkSemaphore semaphore);
--typedef VkResult (VKAPI *PFN_vkQueueWaitSemaphore)(VkQueue queue, VkSemaphore semaphore);
- typedef VkResult (VKAPI *PFN_vkCreateEvent)(VkDevice device, const VkEventCreateInfo* pCreateInfo, VkEvent* pEvent);
- typedef void (VKAPI *PFN_vkDestroyEvent)(VkDevice device, VkEvent event);
- typedef VkResult (VKAPI *PFN_vkGetEventStatus)(VkDevice device, VkEvent event);
-@@ -2218,7 +2206,7 @@ typedef void (VKAPI *PFN_vkCmdPipelineBarrier)(VkCmdBuffer cmdBuffer, VkPipeline
- typedef void (VKAPI *PFN_vkCmdBeginQuery)(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot, VkQueryControlFlags flags);
- typedef void (VKAPI *PFN_vkCmdEndQuery)(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot);
- typedef void (VKAPI *PFN_vkCmdResetQueryPool)(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount);
--typedef void (VKAPI *PFN_vkCmdWriteTimestamp)(VkCmdBuffer cmdBuffer, VkTimestampType timestampType, VkBuffer destBuffer, VkDeviceSize destOffset);
-+typedef void (VKAPI *PFN_vkCmdWriteTimestamp)(VkCmdBuffer cmdBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer destBuffer, VkDeviceSize destOffset);
- typedef void (VKAPI *PFN_vkCmdCopyQueryPoolResults)(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize stride, VkQueryResultFlags flags);
- typedef void (VKAPI *PFN_vkCmdPushConstants)(VkCmdBuffer cmdBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t start, uint32_t length, const void* values);
- typedef void (VKAPI *PFN_vkCmdBeginRenderPass)(VkCmdBuffer cmdBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkRenderPassContents contents);
-@@ -2450,14 +2438,6 @@ void VKAPI vkDestroySemaphore(
-     VkDevice                                    device,
-     VkSemaphore                                 semaphore);
- 
--VkResult VKAPI vkQueueSignalSemaphore(
--    VkQueue                                     queue,
--    VkSemaphore                                 semaphore);
--
--VkResult VKAPI vkQueueWaitSemaphore(
--    VkQueue                                     queue,
--    VkSemaphore                                 semaphore);
--
- VkResult VKAPI vkCreateEvent(
-     VkDevice                                    device,
-     const VkEventCreateInfo*                    pCreateInfo,
-@@ -2961,7 +2941,7 @@ void VKAPI vkCmdResetQueryPool(
- 
- void VKAPI vkCmdWriteTimestamp(
-     VkCmdBuffer                                 cmdBuffer,
--    VkTimestampType                             timestampType,
-+    VkPipelineStageFlagBits                     pipelineStage,
-     VkBuffer                                    destBuffer,
-     VkDeviceSize                                destOffset);
- 
-diff --git a/vulkan/libvulkan/entry.cpp b/vulkan/libvulkan/entry.cpp
-index 0c7533f..c69b99f 100644
---- a/vulkan/libvulkan/entry.cpp
-+++ b/vulkan/libvulkan/entry.cpp
-@@ -262,16 +262,6 @@ void vkDestroySemaphore(VkDevice device, VkSemaphore semaphore) {
- }
- 
- __attribute__((visibility("default")))
--VkResult vkQueueSignalSemaphore(VkQueue queue, VkSemaphore semaphore) {
--    return GetVtbl(queue).QueueSignalSemaphore(queue, semaphore);
--}
--
--__attribute__((visibility("default")))
--VkResult vkQueueWaitSemaphore(VkQueue queue, VkSemaphore semaphore) {
--    return GetVtbl(queue).QueueWaitSemaphore(queue, semaphore);
--}
--
--__attribute__((visibility("default")))
- VkResult vkCreateEvent(VkDevice device, const VkEventCreateInfo* pCreateInfo, VkEvent* pEvent) {
-     return GetVtbl(device).CreateEvent(device, pCreateInfo, pEvent);
- }
-@@ -722,8 +712,8 @@ void vkCmdResetQueryPool(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t
- }
- 
- __attribute__((visibility("default")))
--void vkCmdWriteTimestamp(VkCmdBuffer cmdBuffer, VkTimestampType timestampType, VkBuffer destBuffer, VkDeviceSize destOffset) {
--    GetVtbl(cmdBuffer).CmdWriteTimestamp(cmdBuffer, timestampType, destBuffer, destOffset);
-+void vkCmdWriteTimestamp(VkCmdBuffer cmdBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer destBuffer, VkDeviceSize destOffset) {
-+    GetVtbl(cmdBuffer).CmdWriteTimestamp(cmdBuffer, pipelineStage, destBuffer, destOffset);
- }
- 
- __attribute__((visibility("default")))
-diff --git a/vulkan/libvulkan/get_proc_addr.cpp b/vulkan/libvulkan/get_proc_addr.cpp
-index 1135870..68a77d5 100644
---- a/vulkan/libvulkan/get_proc_addr.cpp
-+++ b/vulkan/libvulkan/get_proc_addr.cpp
-@@ -192,10 +192,8 @@ const NameProcEntry kDeviceProcTbl[] = {
-     {"vkQueueBindSparseImageMemory", reinterpret_cast<PFN_vkVoidFunction>(vkQueueBindSparseImageMemory)},
-     {"vkQueueBindSparseImageOpaqueMemory", reinterpret_cast<PFN_vkVoidFunction>(vkQueueBindSparseImageOpaqueMemory)},
-     {"vkQueuePresentKHR", reinterpret_cast<PFN_vkVoidFunction>(vkQueuePresentKHR)},
--    {"vkQueueSignalSemaphore", reinterpret_cast<PFN_vkVoidFunction>(vkQueueSignalSemaphore)},
-     {"vkQueueSubmit", reinterpret_cast<PFN_vkVoidFunction>(vkQueueSubmit)},
-     {"vkQueueWaitIdle", reinterpret_cast<PFN_vkVoidFunction>(vkQueueWaitIdle)},
--    {"vkQueueWaitSemaphore", reinterpret_cast<PFN_vkVoidFunction>(vkQueueWaitSemaphore)},
-     {"vkResetCommandBuffer", reinterpret_cast<PFN_vkVoidFunction>(vkResetCommandBuffer)},
-     {"vkResetCommandPool", reinterpret_cast<PFN_vkVoidFunction>(vkResetCommandPool)},
-     {"vkResetDescriptorPool", reinterpret_cast<PFN_vkVoidFunction>(vkResetDescriptorPool)},
-@@ -353,10 +351,8 @@ const NameOffsetEntry kDeviceOffsetTbl[] = {
-     {"vkQueueBindSparseImageMemory", offsetof(DeviceVtbl, QueueBindSparseImageMemory)},
-     {"vkQueueBindSparseImageOpaqueMemory", offsetof(DeviceVtbl, QueueBindSparseImageOpaqueMemory)},
-     {"vkQueuePresentKHR", offsetof(DeviceVtbl, QueuePresentKHR)},
--    {"vkQueueSignalSemaphore", offsetof(DeviceVtbl, QueueSignalSemaphore)},
-     {"vkQueueSubmit", offsetof(DeviceVtbl, QueueSubmit)},
-     {"vkQueueWaitIdle", offsetof(DeviceVtbl, QueueWaitIdle)},
--    {"vkQueueWaitSemaphore", offsetof(DeviceVtbl, QueueWaitSemaphore)},
-     {"vkResetCommandBuffer", offsetof(DeviceVtbl, ResetCommandBuffer)},
-     {"vkResetCommandPool", offsetof(DeviceVtbl, ResetCommandPool)},
-     {"vkResetDescriptorPool", offsetof(DeviceVtbl, ResetDescriptorPool)},
-@@ -645,16 +641,6 @@ bool LoadDeviceVtbl(VkDevice device,
-         ALOGE("missing device proc: %s", "vkDestroySemaphore");
-         success = false;
-     }
--    vtbl.QueueSignalSemaphore = reinterpret_cast<PFN_vkQueueSignalSemaphore>(get_proc_addr(device, "vkQueueSignalSemaphore"));
--    if (UNLIKELY(!vtbl.QueueSignalSemaphore)) {
--        ALOGE("missing device proc: %s", "vkQueueSignalSemaphore");
--        success = false;
--    }
--    vtbl.QueueWaitSemaphore = reinterpret_cast<PFN_vkQueueWaitSemaphore>(get_proc_addr(device, "vkQueueWaitSemaphore"));
--    if (UNLIKELY(!vtbl.QueueWaitSemaphore)) {
--        ALOGE("missing device proc: %s", "vkQueueWaitSemaphore");
--        success = false;
--    }
-     vtbl.CreateEvent = reinterpret_cast<PFN_vkCreateEvent>(get_proc_addr(device, "vkCreateEvent"));
-     if (UNLIKELY(!vtbl.CreateEvent)) {
-         ALOGE("missing device proc: %s", "vkCreateEvent");
-diff --git a/vulkan/libvulkan/loader.h b/vulkan/libvulkan/loader.h
-index e8ad915..15e2779 100644
---- a/vulkan/libvulkan/loader.h
-+++ b/vulkan/libvulkan/loader.h
-@@ -139,8 +139,6 @@ struct DeviceVtbl {
-     PFN_vkQueueBindSparseBufferMemory QueueBindSparseBufferMemory;
-     PFN_vkQueueBindSparseImageOpaqueMemory QueueBindSparseImageOpaqueMemory;
-     PFN_vkQueueBindSparseImageMemory QueueBindSparseImageMemory;
--    PFN_vkQueueSignalSemaphore QueueSignalSemaphore;
--    PFN_vkQueueWaitSemaphore QueueWaitSemaphore;
- 
-     PFN_vkBeginCommandBuffer BeginCommandBuffer;
-     PFN_vkEndCommandBuffer EndCommandBuffer;
-diff --git a/vulkan/nulldrv/null_driver.cpp b/vulkan/nulldrv/null_driver.cpp
-index d3580a5..35f2d84 100644
---- a/vulkan/nulldrv/null_driver.cpp
-+++ b/vulkan/nulldrv/null_driver.cpp
-@@ -805,15 +805,6 @@ VkResult WaitForFences(VkDevice device, uint32_t fenceCount, const VkFence* pFen
- void DestroySemaphore(VkDevice device, VkSemaphore semaphore) {
- }
- 
--VkResult QueueSignalSemaphore(VkQueue queue, VkSemaphore semaphore) {
--    ALOGV("TODO: vk%s", __FUNCTION__);
--    return VK_SUCCESS;
--}
--
--VkResult QueueWaitSemaphore(VkQueue queue, VkSemaphore semaphore) {
--    return VK_SUCCESS;
--}
--
- void DestroyEvent(VkDevice device, VkEvent event) {
- }
- 
-@@ -1040,7 +1031,7 @@ void CmdEndQuery(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot) {
- void CmdResetQueryPool(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount) {
- }
- 
--void CmdWriteTimestamp(VkCmdBuffer cmdBuffer, VkTimestampType timestampType, VkBuffer destBuffer, VkDeviceSize destOffset) {
-+void CmdWriteTimestamp(VkCmdBuffer cmdBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer destBuffer, VkDeviceSize destOffset) {
- }
- 
- void CmdCopyQueryPoolResults(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize destStride, VkQueryResultFlags flags) {
-diff --git a/vulkan/nulldrv/null_driver.h b/vulkan/nulldrv/null_driver.h
-index 5fd3acf..f212371 100644
---- a/vulkan/nulldrv/null_driver.h
-+++ b/vulkan/nulldrv/null_driver.h
-@@ -70,8 +70,6 @@ VkResult GetFenceStatus(VkDevice device, VkFence fence);
- VkResult WaitForFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout);
- VkResult CreateSemaphore(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, VkSemaphore* pSemaphore);
- void DestroySemaphore(VkDevice device, VkSemaphore semaphore);
--VkResult QueueSignalSemaphore(VkQueue queue, VkSemaphore semaphore);
--VkResult QueueWaitSemaphore(VkQueue queue, VkSemaphore semaphore);
- VkResult CreateEvent(VkDevice device, const VkEventCreateInfo* pCreateInfo, VkEvent* pEvent);
- void DestroyEvent(VkDevice device, VkEvent event);
- VkResult GetEventStatus(VkDevice device, VkEvent event);
-@@ -162,7 +160,7 @@ void CmdPipelineBarrier(VkCmdBuffer cmdBuffer, VkPipelineStageFlags srcStageMask
- void CmdBeginQuery(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot, VkQueryControlFlags flags);
- void CmdEndQuery(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot);
- void CmdResetQueryPool(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount);
--void CmdWriteTimestamp(VkCmdBuffer cmdBuffer, VkTimestampType timestampType, VkBuffer destBuffer, VkDeviceSize destOffset);
-+void CmdWriteTimestamp(VkCmdBuffer cmdBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer destBuffer, VkDeviceSize destOffset);
- void CmdCopyQueryPoolResults(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize destStride, VkQueryResultFlags flags);
- void CmdPushConstants(VkCmdBuffer cmdBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t start, uint32_t length, const void* values);
- void CmdBeginRenderPass(VkCmdBuffer cmdBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkRenderPassContents contents);
-diff --git a/vulkan/nulldrv/null_driver_gen.cpp b/vulkan/nulldrv/null_driver_gen.cpp
-index 31c56ff..a026bbf 100644
---- a/vulkan/nulldrv/null_driver_gen.cpp
-+++ b/vulkan/nulldrv/null_driver_gen.cpp
-@@ -181,10 +181,8 @@ const NameProcEntry kDeviceProcTbl[] = {
-     {"vkQueueBindSparseBufferMemory", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkQueueBindSparseBufferMemory>(QueueBindSparseBufferMemory))},
-     {"vkQueueBindSparseImageMemory", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkQueueBindSparseImageMemory>(QueueBindSparseImageMemory))},
-     {"vkQueueBindSparseImageOpaqueMemory", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkQueueBindSparseImageOpaqueMemory>(QueueBindSparseImageOpaqueMemory))},
--    {"vkQueueSignalSemaphore", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkQueueSignalSemaphore>(QueueSignalSemaphore))},
-     {"vkQueueSubmit", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkQueueSubmit>(QueueSubmit))},
-     {"vkQueueWaitIdle", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkQueueWaitIdle>(QueueWaitIdle))},
--    {"vkQueueWaitSemaphore", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkQueueWaitSemaphore>(QueueWaitSemaphore))},
-     {"vkResetCommandBuffer", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkResetCommandBuffer>(ResetCommandBuffer))},
-     {"vkResetCommandPool", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkResetCommandPool>(ResetCommandPool))},
-     {"vkResetDescriptorPool", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkResetDescriptorPool>(ResetDescriptorPool))},
--- 
-2.6.0.rc2.230.g3dd15c0
-
diff --git a/vulkan/patches/frameworks_native-sdk_0.10/0011-vulkan-Update-from-version-0.185.0-to-0.186.0.patch b/vulkan/patches/frameworks_native-sdk_0.10/0011-vulkan-Update-from-version-0.185.0-to-0.186.0.patch
deleted file mode 100644
index 16211b5..0000000
--- a/vulkan/patches/frameworks_native-sdk_0.10/0011-vulkan-Update-from-version-0.185.0-to-0.186.0.patch
+++ /dev/null
@@ -1,384 +0,0 @@
-From 9148de67a84540aa7d70ae72fbf587e26cbd0891 Mon Sep 17 00:00:00 2001
-From: Jesse Hall <jessehall@google.com>
-Date: Tue, 24 Nov 2015 11:37:23 -0800
-Subject: [PATCH] vulkan: Update from version 0.185.0 to 0.186.0
-
-Change-Id: I6acb7742a1d4628930bc0807adfd222bc8349c43
----
- vulkan/api/vulkan.api          | 12 ++++-----
- vulkan/include/vulkan/vulkan.h | 53 +++++++++-----------------------------
- vulkan/libvulkan/entry.cpp     |  4 +--
- vulkan/libvulkan/swapchain.cpp |  4 +--
- vulkan/nulldrv/null_driver.cpp | 58 ++++++++++++++++--------------------------
- vulkan/nulldrv/null_driver.h   |  2 +-
- vulkan/tools/vkinfo.cpp        |  2 --
- 7 files changed, 45 insertions(+), 90 deletions(-)
-
-diff --git a/vulkan/api/vulkan.api b/vulkan/api/vulkan.api
-index 525b307..bbf9cfe 100644
---- a/vulkan/api/vulkan.api
-+++ b/vulkan/api/vulkan.api
-@@ -27,7 +27,7 @@ import platform "platform.api"
- 
- // API version (major.minor.patch)
- define VERSION_MAJOR 0
--define VERSION_MINOR 185
-+define VERSION_MINOR 186
- define VERSION_PATCH 0
- 
- // API limits
-@@ -215,6 +215,7 @@ enum VkDescriptorType {
- enum VkQueryType {
-     VK_QUERY_TYPE_OCCLUSION                                 = 0x00000000,
-     VK_QUERY_TYPE_PIPELINE_STATISTICS                       = 0x00000001, /// Optional
-+    VK_QUERY_TYPE_TIMESTAMP                                 = 0x00000002,
- }
- 
- enum VkBorderColor {
-@@ -714,7 +715,6 @@ bitfield VkQueueFlagBits {
-     VK_QUEUE_COMPUTE_BIT                                    = 0x00000002,    /// Queue supports compute operations
-     VK_QUEUE_DMA_BIT                                        = 0x00000004,    /// Queue supports DMA operations
-     VK_QUEUE_SPARSE_MEMMGR_BIT                              = 0x00000008,    /// Queue supports sparse resource memory management operations
--    VK_QUEUE_EXTENDED_BIT                                   = 0x40000000,    /// Extended queue
- }
- 
- /// Memory properties passed into vkAllocMemory().
-@@ -4320,11 +4320,11 @@ cmd void vkCmdResetQueryPool(
- cmd void vkCmdWriteTimestamp(
-         VkCmdBuffer                                 cmdBuffer,
-         VkPipelineStageFlagBits                     pipelineStage,
--        VkBuffer                                    destBuffer,
--        VkDeviceSize                                destOffset) {
-+        VkQueryPool                                 queryPool,
-+        u32                                         slot) {
-     cmdBufferObject := GetCmdBuffer(cmdBuffer)
--    destBufferObject := GetBuffer(destBuffer)
--    assert(cmdBufferObject.device == destBufferObject.device)
-+    queryPoolObject := GetQueryPool(queryPool)
-+    assert(cmdBufferObject.device == queryPoolObject.device)
- }
- 
- @threadSafety("app")
-diff --git a/vulkan/include/vulkan/vulkan.h b/vulkan/include/vulkan/vulkan.h
-index c0f3bc7..ca2ff85 100644
---- a/vulkan/include/vulkan/vulkan.h
-+++ b/vulkan/include/vulkan/vulkan.h
-@@ -41,49 +41,20 @@ extern "C" {
-     ((major << 22) | (minor << 12) | patch)
- 
- // Vulkan API version supported by this file
--#define VK_API_VERSION VK_MAKE_VERSION(0, 185, 0)
-+#define VK_API_VERSION VK_MAKE_VERSION(0, 186, 0)
- 
- 
--#if defined(__cplusplus) && ((defined(_MSC_VER) && _MSC_VER >= 1800) || __cplusplus >= 201103L)
--    #define VK_NULL_HANDLE nullptr
--#else
--    #define VK_NULL_HANDLE 0
--#endif
-+#define VK_NULL_HANDLE 0
-+
- 
- 
- #define VK_DEFINE_HANDLE(obj) typedef struct obj##_T* obj;
- 
- 
--#if defined(__cplusplus)
--    #if ((defined(_MSC_VER) && _MSC_VER >= 1800) || __cplusplus >= 201103L)
--        // The bool operator only works if there are no implicit conversions from an obj to
--        // a bool-compatible type, which can then be used to unintentionally violate type safety.
--        // C++11 and above supports the "explicit" keyword on conversion operators to stop this
--        // from happening. Otherwise users of C++ below C++11 won't get direct access to evaluating
--        // the object handle as a bool in expressions like:
--        //     if (obj) vkDestroy(obj);
--        #define VK_NONDISP_HANDLE_OPERATOR_BOOL() explicit operator bool() const { return handle != 0; }
--        #define VK_NONDISP_HANDLE_CONSTRUCTOR_FROM_UINT64(obj) \
--            explicit obj(uint64_t x) : handle(x) { } \
--            obj(decltype(nullptr)) : handle(0) { }
--    #else
--        #define VK_NONDISP_HANDLE_OPERATOR_BOOL()
--        #define VK_NONDISP_HANDLE_CONSTRUCTOR_FROM_UINT64(obj) \
--            obj(uint64_t x) : handle(x) { }
--    #endif
--    #define VK_DEFINE_NONDISP_HANDLE(obj) \
--        struct obj { \
--            obj() : handle(0) { } \
--            VK_NONDISP_HANDLE_CONSTRUCTOR_FROM_UINT64(obj) \
--            obj& operator =(uint64_t x) { handle = x; return *this; } \
--            bool operator==(const obj& other) const { return handle == other.handle; } \
--            bool operator!=(const obj& other) const { return handle != other.handle; } \
--            bool operator!() const { return !handle; } \
--            VK_NONDISP_HANDLE_OPERATOR_BOOL() \
--            uint64_t handle; \
--        };
-+#if defined(__LP64__) || defined(_WIN64) || defined(__x86_64__) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)
-+        #define VK_DEFINE_NONDISP_HANDLE(obj) typedef struct obj##_T *obj;
- #else
--    #define VK_DEFINE_NONDISP_HANDLE(obj) typedef struct obj##_T { uint64_t handle; } obj;
-+        #define VK_DEFINE_NONDISP_HANDLE(obj) typedef uint64_t obj;
- #endif
- 
- 
-@@ -441,9 +412,10 @@ typedef enum {
- typedef enum {
-     VK_QUERY_TYPE_OCCLUSION = 0,
-     VK_QUERY_TYPE_PIPELINE_STATISTICS = 1,
-+    VK_QUERY_TYPE_TIMESTAMP = 2,
-     VK_QUERY_TYPE_BEGIN_RANGE = VK_QUERY_TYPE_OCCLUSION,
--    VK_QUERY_TYPE_END_RANGE = VK_QUERY_TYPE_PIPELINE_STATISTICS,
--    VK_QUERY_TYPE_NUM = (VK_QUERY_TYPE_PIPELINE_STATISTICS - VK_QUERY_TYPE_OCCLUSION + 1),
-+    VK_QUERY_TYPE_END_RANGE = VK_QUERY_TYPE_TIMESTAMP,
-+    VK_QUERY_TYPE_NUM = (VK_QUERY_TYPE_TIMESTAMP - VK_QUERY_TYPE_OCCLUSION + 1),
-     VK_QUERY_TYPE_MAX_ENUM = 0x7FFFFFFF
- } VkQueryType;
- 
-@@ -834,7 +806,6 @@ typedef enum {
-     VK_QUEUE_COMPUTE_BIT = 0x00000002,
-     VK_QUEUE_DMA_BIT = 0x00000004,
-     VK_QUEUE_SPARSE_MEMMGR_BIT = 0x00000008,
--    VK_QUEUE_EXTENDED_BIT = 0x40000000,
- } VkQueueFlagBits;
- typedef VkFlags VkQueueFlags;
- 
-@@ -2206,7 +2177,7 @@ typedef void (VKAPI *PFN_vkCmdPipelineBarrier)(VkCmdBuffer cmdBuffer, VkPipeline
- typedef void (VKAPI *PFN_vkCmdBeginQuery)(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot, VkQueryControlFlags flags);
- typedef void (VKAPI *PFN_vkCmdEndQuery)(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot);
- typedef void (VKAPI *PFN_vkCmdResetQueryPool)(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount);
--typedef void (VKAPI *PFN_vkCmdWriteTimestamp)(VkCmdBuffer cmdBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer destBuffer, VkDeviceSize destOffset);
-+typedef void (VKAPI *PFN_vkCmdWriteTimestamp)(VkCmdBuffer cmdBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t slot);
- typedef void (VKAPI *PFN_vkCmdCopyQueryPoolResults)(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize stride, VkQueryResultFlags flags);
- typedef void (VKAPI *PFN_vkCmdPushConstants)(VkCmdBuffer cmdBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t start, uint32_t length, const void* values);
- typedef void (VKAPI *PFN_vkCmdBeginRenderPass)(VkCmdBuffer cmdBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkRenderPassContents contents);
-@@ -2942,8 +2913,8 @@ void VKAPI vkCmdResetQueryPool(
- void VKAPI vkCmdWriteTimestamp(
-     VkCmdBuffer                                 cmdBuffer,
-     VkPipelineStageFlagBits                     pipelineStage,
--    VkBuffer                                    destBuffer,
--    VkDeviceSize                                destOffset);
-+    VkQueryPool                                 queryPool,
-+    uint32_t                                    slot);
- 
- void VKAPI vkCmdCopyQueryPoolResults(
-     VkCmdBuffer                                 cmdBuffer,
-diff --git a/vulkan/libvulkan/entry.cpp b/vulkan/libvulkan/entry.cpp
-index c69b99f..255ad97 100644
---- a/vulkan/libvulkan/entry.cpp
-+++ b/vulkan/libvulkan/entry.cpp
-@@ -712,8 +712,8 @@ void vkCmdResetQueryPool(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t
- }
- 
- __attribute__((visibility("default")))
--void vkCmdWriteTimestamp(VkCmdBuffer cmdBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer destBuffer, VkDeviceSize destOffset) {
--    GetVtbl(cmdBuffer).CmdWriteTimestamp(cmdBuffer, pipelineStage, destBuffer, destOffset);
-+void vkCmdWriteTimestamp(VkCmdBuffer cmdBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t slot) {
-+    GetVtbl(cmdBuffer).CmdWriteTimestamp(cmdBuffer, pipelineStage, queryPool, slot);
- }
- 
- __attribute__((visibility("default")))
-diff --git a/vulkan/libvulkan/swapchain.cpp b/vulkan/libvulkan/swapchain.cpp
-index 6813680..2922465 100644
---- a/vulkan/libvulkan/swapchain.cpp
-+++ b/vulkan/libvulkan/swapchain.cpp
-@@ -90,7 +90,7 @@ VkSurfaceKHR HandleFromSurface(Surface* surface) {
- }
- 
- Surface* SurfaceFromHandle(VkSurfaceKHR handle) {
--    return reinterpret_cast<Surface*>(handle.handle);
-+    return reinterpret_cast<Surface*>(handle);
- }
- 
- struct Swapchain {
-@@ -118,7 +118,7 @@ VkSwapchainKHR HandleFromSwapchain(Swapchain* swapchain) {
- }
- 
- Swapchain* SwapchainFromHandle(VkSwapchainKHR handle) {
--    return reinterpret_cast<Swapchain*>(handle.handle);
-+    return reinterpret_cast<Swapchain*>(handle);
- }
- 
- }  // anonymous namespace
-diff --git a/vulkan/nulldrv/null_driver.cpp b/vulkan/nulldrv/null_driver.cpp
-index 35f2d84..0f8382f 100644
---- a/vulkan/nulldrv/null_driver.cpp
-+++ b/vulkan/nulldrv/null_driver.cpp
-@@ -199,20 +199,15 @@ uint64_t AllocHandle(VkDevice device, HandleType::Enum type) {
- 
- namespace null_driver {
- 
--template <typename HandleT>
--struct HandleTraits {};
--
--template <typename HandleT>
--typename HandleTraits<HandleT>::PointerType GetObjectFromHandle(
--    const HandleT& h) {
--    return reinterpret_cast<typename HandleTraits<HandleT>::PointerType>(
--        uintptr_t(h.handle));
--}
--
--template <typename T>
--typename T::HandleType GetHandleToObject(const T* obj) {
--    return typename T::HandleType(reinterpret_cast<uintptr_t>(obj));
--}
-+#define DEFINE_OBJECT_HANDLE_CONVERSION(T)              \
-+    T* Get##T##FromHandle(Vk##T h);                     \
-+    T* Get##T##FromHandle(Vk##T h) {                    \
-+        return reinterpret_cast<T*>(uintptr_t(h));      \
-+    }                                                   \
-+    Vk##T GetHandleTo##T(const T* obj);                 \
-+    Vk##T GetHandleTo##T(const T* obj) {                \
-+        return Vk##T(reinterpret_cast<uintptr_t>(obj)); \
-+    }
- 
- // -----------------------------------------------------------------------------
- // Global
-@@ -384,10 +379,7 @@ struct DeviceMemory {
-     VkDeviceSize size;
-     alignas(16) uint8_t data[0];
- };
--template <>
--struct HandleTraits<VkDeviceMemory> {
--    typedef DeviceMemory* PointerType;
--};
-+DEFINE_OBJECT_HANDLE_CONVERSION(DeviceMemory)
- 
- VkResult AllocMemory(VkDevice device,
-                      const VkMemoryAllocInfo* alloc_info,
-@@ -403,13 +395,13 @@ VkResult AllocMemory(VkDevice device,
-     if (!mem)
-         return VK_ERROR_OUT_OF_HOST_MEMORY;
-     mem->size = size;
--    *mem_handle = GetHandleToObject(mem);
-+    *mem_handle = GetHandleToDeviceMemory(mem);
-     return VK_SUCCESS;
- }
- 
- void FreeMemory(VkDevice device, VkDeviceMemory mem_handle) {
-     const VkAllocCallbacks* alloc = device->instance->alloc;
--    DeviceMemory* mem = GetObjectFromHandle(mem_handle);
-+    DeviceMemory* mem = GetDeviceMemoryFromHandle(mem_handle);
-     alloc->pfnFree(alloc->pUserData, mem);
- }
- 
-@@ -419,7 +411,7 @@ VkResult MapMemory(VkDevice,
-                    VkDeviceSize,
-                    VkMemoryMapFlags,
-                    void** out_ptr) {
--    DeviceMemory* mem = GetObjectFromHandle(mem_handle);
-+    DeviceMemory* mem = GetDeviceMemoryFromHandle(mem_handle);
-     *out_ptr = &mem->data[0] + offset;
-     return VK_SUCCESS;
- }
-@@ -431,10 +423,7 @@ struct Buffer {
-     typedef VkBuffer HandleType;
-     VkDeviceSize size;
- };
--template <>
--struct HandleTraits<VkBuffer> {
--    typedef Buffer* PointerType;
--};
-+DEFINE_OBJECT_HANDLE_CONVERSION(Buffer)
- 
- VkResult CreateBuffer(VkDevice device,
-                       const VkBufferCreateInfo* create_info,
-@@ -451,14 +440,14 @@ VkResult CreateBuffer(VkDevice device,
-     if (!buffer)
-         return VK_ERROR_OUT_OF_HOST_MEMORY;
-     buffer->size = create_info->size;
--    *buffer_handle = GetHandleToObject(buffer);
-+    *buffer_handle = GetHandleToBuffer(buffer);
-     return VK_SUCCESS;
- }
- 
- void GetBufferMemoryRequirements(VkDevice,
-                                  VkBuffer buffer_handle,
-                                  VkMemoryRequirements* requirements) {
--    Buffer* buffer = GetObjectFromHandle(buffer_handle);
-+    Buffer* buffer = GetBufferFromHandle(buffer_handle);
-     requirements->size = buffer->size;
-     requirements->alignment = 16;  // allow fast Neon/SSE memcpy
-     requirements->memoryTypeBits = 0x1;
-@@ -466,7 +455,7 @@ void GetBufferMemoryRequirements(VkDevice,
- 
- void DestroyBuffer(VkDevice device, VkBuffer buffer_handle) {
-     const VkAllocCallbacks* alloc = device->instance->alloc;
--    Buffer* buffer = GetObjectFromHandle(buffer_handle);
-+    Buffer* buffer = GetBufferFromHandle(buffer_handle);
-     alloc->pfnFree(alloc->pUserData, buffer);
- }
- 
-@@ -477,10 +466,7 @@ struct Image {
-     typedef VkImage HandleType;
-     VkDeviceSize size;
- };
--template <>
--struct HandleTraits<VkImage> {
--    typedef Image* PointerType;
--};
-+DEFINE_OBJECT_HANDLE_CONVERSION(Image)
- 
- VkResult CreateImage(VkDevice device,
-                      const VkImageCreateInfo* create_info,
-@@ -509,14 +495,14 @@ VkResult CreateImage(VkDevice device,
-     if (!image)
-         return VK_ERROR_OUT_OF_HOST_MEMORY;
-     image->size = size;
--    *image_handle = GetHandleToObject(image);
-+    *image_handle = GetHandleToImage(image);
-     return VK_SUCCESS;
- }
- 
- void GetImageMemoryRequirements(VkDevice,
-                                 VkImage image_handle,
-                                 VkMemoryRequirements* requirements) {
--    Image* image = GetObjectFromHandle(image_handle);
-+    Image* image = GetImageFromHandle(image_handle);
-     requirements->size = image->size;
-     requirements->alignment = 16;  // allow fast Neon/SSE memcpy
-     requirements->memoryTypeBits = 0x1;
-@@ -524,7 +510,7 @@ void GetImageMemoryRequirements(VkDevice,
- 
- void DestroyImage(VkDevice device, VkImage image_handle) {
-     const VkAllocCallbacks* alloc = device->instance->alloc;
--    Image* image = GetObjectFromHandle(image_handle);
-+    Image* image = GetImageFromHandle(image_handle);
-     alloc->pfnFree(alloc->pUserData, image);
- }
- 
-@@ -1031,7 +1017,7 @@ void CmdEndQuery(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot) {
- void CmdResetQueryPool(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount) {
- }
- 
--void CmdWriteTimestamp(VkCmdBuffer cmdBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer destBuffer, VkDeviceSize destOffset) {
-+void CmdWriteTimestamp(VkCmdBuffer cmdBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t slot) {
- }
- 
- void CmdCopyQueryPoolResults(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize destStride, VkQueryResultFlags flags) {
-diff --git a/vulkan/nulldrv/null_driver.h b/vulkan/nulldrv/null_driver.h
-index f212371..f07d61c 100644
---- a/vulkan/nulldrv/null_driver.h
-+++ b/vulkan/nulldrv/null_driver.h
-@@ -160,7 +160,7 @@ void CmdPipelineBarrier(VkCmdBuffer cmdBuffer, VkPipelineStageFlags srcStageMask
- void CmdBeginQuery(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot, VkQueryControlFlags flags);
- void CmdEndQuery(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot);
- void CmdResetQueryPool(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount);
--void CmdWriteTimestamp(VkCmdBuffer cmdBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer destBuffer, VkDeviceSize destOffset);
-+void CmdWriteTimestamp(VkCmdBuffer cmdBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t slot);
- void CmdCopyQueryPoolResults(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize destStride, VkQueryResultFlags flags);
- void CmdPushConstants(VkCmdBuffer cmdBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t start, uint32_t length, const void* values);
- void CmdBeginRenderPass(VkCmdBuffer cmdBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkRenderPassContents contents);
-diff --git a/vulkan/tools/vkinfo.cpp b/vulkan/tools/vkinfo.cpp
-index 918df47..f92b62c 100644
---- a/vulkan/tools/vkinfo.cpp
-+++ b/vulkan/tools/vkinfo.cpp
-@@ -79,8 +79,6 @@ const char* VkQueueFlagBitStr(VkQueueFlagBits bit) {
-             return "DMA";
-         case VK_QUEUE_SPARSE_MEMMGR_BIT:
-             return "SPARSE";
--        case VK_QUEUE_EXTENDED_BIT:
--            return "EXT";
-     }
- }
- 
--- 
-2.6.0.rc2.230.g3dd15c0
-
diff --git a/vulkan/patches/frameworks_native-sdk_0.10/0012-vulkan-Update-from-version-0.186.0-to-0.188.0.patch b/vulkan/patches/frameworks_native-sdk_0.10/0012-vulkan-Update-from-version-0.186.0-to-0.188.0.patch
deleted file mode 100644
index bb4698a..0000000
--- a/vulkan/patches/frameworks_native-sdk_0.10/0012-vulkan-Update-from-version-0.186.0-to-0.188.0.patch
+++ /dev/null
@@ -1,3911 +0,0 @@
-From 2ca0449bdeecd0257c7473f663896b00d0082def Mon Sep 17 00:00:00 2001
-From: Jesse Hall <jessehall@google.com>
-Date: Tue, 24 Nov 2015 12:44:21 -0800
-Subject: [PATCH] vulkan: Update from version 0.186.0 to 0.188.0
-
-Change-Id: Ida08d51f4e892202b594072d1e765ba5c55444db
----
- vulkan/api/vulkan.api          | 314 ++++++++++++++++++------------
- vulkan/include/vulkan/vulkan.h | 421 ++++++++++++++++++++++++-----------------
- vulkan/libvulkan/entry.cpp     | 256 ++++++++++++-------------
- vulkan/libvulkan/loader.cpp    | 149 ++++++++++-----
- vulkan/libvulkan/loader.h      |   7 +-
- vulkan/libvulkan/swapchain.cpp |  30 ++-
- vulkan/nulldrv/null_driver.cpp | 211 +++++++++++++--------
- vulkan/nulldrv/null_driver.h   |  88 ++++-----
- vulkan/tools/vkinfo.cpp        |   9 +-
- 9 files changed, 886 insertions(+), 599 deletions(-)
-
-diff --git a/vulkan/api/vulkan.api b/vulkan/api/vulkan.api
-index bbf9cfe..b95c96e 100644
---- a/vulkan/api/vulkan.api
-+++ b/vulkan/api/vulkan.api
-@@ -27,7 +27,7 @@ import platform "platform.api"
- 
- // API version (major.minor.patch)
- define VERSION_MAJOR 0
--define VERSION_MINOR 186
-+define VERSION_MINOR 188
- define VERSION_PATCH 0
- 
- // API limits
-@@ -364,12 +364,16 @@ enum VkLogicOp {
-     VK_LOGIC_OP_SET                                         = 0x0000000f,
- }
- 
--enum VkSystemAllocType {
--    VK_SYSTEM_ALLOC_TYPE_API_OBJECT                         = 0x00000000,
--    VK_SYSTEM_ALLOC_TYPE_INTERNAL                           = 0x00000001,
--    VK_SYSTEM_ALLOC_TYPE_INTERNAL_TEMP                      = 0x00000002,
--    VK_SYSTEM_ALLOC_TYPE_INTERNAL_SHADER                    = 0x00000003,
--    VK_SYSTEM_ALLOC_TYPE_DEBUG                              = 0x00000004,
-+enum VkSystemAllocScope {
-+    VK_SYSTEM_ALLOC_SCOPE_FUNCTION                          = 0x00000000,
-+    VK_SYSTEM_ALLOC_SCOPE_OBJECT                            = 0x00000001,
-+    VK_SYSTEM_ALLOC_SCOPE_CACHE                             = 0x00000002,
-+    VK_SYSTEM_ALLOC_SCOPE_DEVICE                            = 0x00000003,
-+    VK_SYSTEM_ALLOC_SCOPE_INSTANCE                          = 0x00000004,
-+}
-+
-+enum VkInternalAllocType {
-+    VK_INTERNAL_ALLOC_TYPE_EXECUTABLE                       = 0x00000000,
- }
- 
- enum VkPhysicalDeviceType {
-@@ -613,6 +617,9 @@ enum VkStructureType {
-     VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO                  = 45,
-     VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO        = 46,
-     VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOC_INFO                 = 47,
-+    VK_STRUCTURE_TYPE_SUBMIT_INFO                               = 48,
-+    VK_STRUCTURE_TYPE_LAYER_INSTANCE_CREATE_INFO                = 49,
-+    VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO                  = 50,
- 
-     //@extension("VK_EXT_KHR_swapchain")
-     VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR                 = 0xc0000801,
-@@ -697,6 +704,7 @@ enum VkPresentModeKHR {
-     VK_PRESENT_MODE_IMMEDIATE_KHR                           = 0x00000000,
-     VK_PRESENT_MODE_MAILBOX_KHR                             = 0x00000001,
-     VK_PRESENT_MODE_FIFO_KHR                                = 0x00000002,
-+    VK_PRESENT_MODE_FIFO_RELAXED_KHR                        = 0x00000003,
- }
- 
- @extension("VK_EXT_KHR_swapchain")
-@@ -1135,11 +1143,13 @@ class VkLayerProperties {
- }
- 
- class VkSubmitInfo {
--    u32                                         waitSemCount
-+    VkStructureType                             sType              /// Type of structure. Should be VK_STRUCTURE_TYPE_SUBMIT_INFO
-+    const void*                                 pNext              /// Next structure in chain
-+    u32                                         waitSemaphoreCount
-     const VkSemaphore*                          pWaitSemaphores
--    u32                                         cmdBufferCount
-+    u32                                         commandBufferCount
-     const VkCmdBuffer*                          pCommandBuffers
--    u32                                         signalSemCount
-+    u32                                         signalSemaphoreCount
-     const VkSemaphore*                          pSignalSemaphores
- }
- 
-@@ -1156,14 +1166,17 @@ class VkApplicationInfo {
- class VkAllocCallbacks {
-     void*                                       pUserData
-     PFN_vkAllocFunction                         pfnAlloc
-+    PFN_vkReallocFunction                       pfnRealloc
-     PFN_vkFreeFunction                          pfnFree
-+    PFN_vkInternalAllocNotification             pfnInternalAlloc
-+    PFN_vkInternalFreeNotification              pfnInternalFree
- }
- 
- class VkDeviceQueueCreateInfo {
-     VkStructureType                             sStype                    /// Should be VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO
-     const void*                                 pNext                     /// Pointer to next structure
-     u32                                         queueFamilyIndex
--    u32                                         queueCount
-+    u32                                         queuePriorityCount
-     const f32*                                  pQueuePriorities
- }
- 
-@@ -1172,9 +1185,9 @@ class VkDeviceCreateInfo {
-     const void*                                 pNext                      /// Pointer to next structure
-     u32                                         requestedQueueRecordCount
-     const VkDeviceQueueCreateInfo*              pRequestedQueues
--    u32                                         layerCount
-+    u32                                         enabledLayerNameCount
-     const char* const*                          ppEnabledLayerNames        /// Ordered list of layer names to be enabled
--    u32                                         extensionCount
-+    u32                                         enabledExtensionNameCount
-     const char* const*                          ppEnabledExtensionNames
-     const VkPhysicalDeviceFeatures*             pEnabledFeatures
- }
-@@ -1183,10 +1196,9 @@ class VkInstanceCreateInfo {
-     VkStructureType                             sType                      /// Should be VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO
-     const void*                                 pNext                      /// Pointer to next structure
-     const VkApplicationInfo*                    pAppInfo
--    const VkAllocCallbacks*                     pAllocCb
--    u32                                         layerCount
-+    u32                                         enabledLayerNameCount
-     const char* const*                          ppEnabledLayerNames        /// Ordered list of layer names to be enabled
--    u32                                         extensionCount
-+    u32                                         enabledExtensionNameCount
-     const char* const*                          ppEnabledExtensionNames    /// Extension names to be enabled
- }
- 
-@@ -1280,7 +1292,7 @@ class VkWriteDescriptorSet {
-     VkDescriptorSet                             destSet                    /// Destination descriptor set
-     u32                                         destBinding                /// Binding within the destination descriptor set to write
-     u32                                         destArrayElement           /// Array element within the destination binding to write
--    u32                                         count                      /// Number of descriptors to write (determines the size of the array pointed by <pDescriptors>)
-+    u32                                         descriptorCount            /// Number of descriptors to write (determines the size of the array pointed by <pDescriptors>)
-     VkDescriptorType                            descriptorType             /// Descriptor type to write (determines which fields of the array pointed by <pDescriptors> are going to be used)
-     const VkDescriptorImageInfo*                pImageInfo
-     const VkDescriptorBufferInfo*               pBufferInfo
-@@ -1296,7 +1308,7 @@ class VkCopyDescriptorSet {
-     VkDescriptorSet                             destSet                    /// Destination descriptor set
-     u32                                         destBinding                /// Binding within the destination descriptor set to copy to
-     u32                                         destArrayElement           /// Array element within the destination binding to copy to
--    u32                                         count                      /// Number of descriptors to copy
-+    u32                                         descriptorCount            /// Number of descriptors to copy
- }
- 
- class VkBufferCreateInfo {
-@@ -1306,7 +1318,7 @@ class VkBufferCreateInfo {
-     VkBufferUsageFlags                          usage                      /// Buffer usage flags
-     VkBufferCreateFlags                         flags                      /// Buffer creation flags
-     VkSharingMode                               sharingMode
--    u32                                         queueFamilyCount
-+    u32                                         queueFamilyIndexCount
-     const u32*                                  pQueueFamilyIndices
- }
- 
-@@ -1378,7 +1390,7 @@ class VkImageCreateInfo {
-     VkImageUsageFlags                           usage                      /// Image usage flags
-     VkImageCreateFlags                          flags                      /// Image creation flags
-     VkSharingMode                               sharingMode                /// Cross-queue-family sharing mode
--    u32                                         queueFamilyCount           /// Number of queue families to share across
-+    u32                                         queueFamilyIndexCount      /// Number of queue families to share across
-     const u32*                                  pQueueFamilyIndices        /// Array of queue family indices to share across
-     VkImageLayout                               initialLayout              /// Initial image layout for all subresources
- }
-@@ -1492,13 +1504,13 @@ class VkDescriptorSetLayoutBinding {
- class VkDescriptorSetLayoutCreateInfo {
-     VkStructureType                             sType              /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO
-     const void*                                 pNext              /// Pointer to next structure
--    u32                                         count              /// Number of bindings in the descriptor set layout
--    const VkDescriptorSetLayoutBinding*         pBinding           /// Array of descriptor set layout bindings
-+    u32                                         bindingCount       /// Number of bindings in the descriptor set layout
-+    const VkDescriptorSetLayoutBinding*         pBindings          /// Array of descriptor set layout bindings
- }
- 
- class VkDescriptorTypeCount {
-     VkDescriptorType                            type
--    u32                                         count
-+    u32                                         descriptorCount
- }
- 
- class VkDescriptorPoolCreateInfo {
-@@ -1506,15 +1518,15 @@ class VkDescriptorPoolCreateInfo {
-     const void*                                 pNext              /// Pointer to next structure
-     VkDescriptorPoolCreateFlags                 flags
-     u32                                         maxSets
--    u32                                         count
--    const VkDescriptorTypeCount*                pTypeCount
-+    u32                                         typeCount
-+    const VkDescriptorTypeCount*                pTypeCounts
- }
- 
- class VkDescriptorSetAllocInfo {
-     VkStructureType                             sType              /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOC_INFO
-     const void*                                 pNext              /// Pointer to next structure
-     VkDescriptorPool                            descriptorPool
--    u32                                         count
-+    u32                                         setCount
-     const VkDescriptorSetLayout*                pSetLayouts
- }
- 
-@@ -1562,11 +1574,11 @@ class VkVertexInputAttributeDescription {
- }
- 
- class VkPipelineVertexInputStateCreateInfo {
--    VkStructureType                             sType          /// Should be VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO
--    const void*                                 pNext          /// Pointer to next structure
--    u32                                         bindingCount   /// number of bindings
-+    VkStructureType                             sType                           /// Should be VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO
-+    const void*                                 pNext                           /// Pointer to next structure
-+    u32                                         vertexBindingDescriptionCount   /// number of bindings
-     const VkVertexInputBindingDescription*      pVertexBindingDescriptions
--    u32                                         attributeCount /// number of attributes
-+    u32                                         vertexAttributeDescriptionCount /// number of attributes
-     const VkVertexInputAttributeDescription*    pVertexAttributeDescriptions
- }
- 
-@@ -1702,14 +1714,14 @@ class VkPipelineCacheCreateInfo {
- 
- class VkPushConstantRange {
-     VkShaderStageFlags                          stageFlags   /// Which stages use the range
--    u32                                         start        /// Start of the range, in bytes
--    u32                                         length       /// Length of the range, in bytes
-+    u32                                         offset       /// Start of the range, in bytes
-+    u32                                         size        /// Length of the range, in bytes
- }
- 
- class VkPipelineLayoutCreateInfo {
-     VkStructureType                             sType                   /// Must be VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO
-     const void*                                 pNext                   /// Pointer to next structure
--    u32                                         descriptorSetCount      /// Number of descriptor sets interfaced by the pipeline
-+    u32                                         setLayoutCount          /// Number of descriptor sets interfaced by the pipeline
-     const VkDescriptorSetLayout*                pSetLayouts             /// Array of <setCount> number of descriptor set layout objects defining the layout of the
-     u32                                         pushConstantRangeCount  /// Number of push-constant ranges used by the pipeline
-     const VkPushConstantRange*                  pPushConstantRanges     /// Array of pushConstantRangeCount number of ranges used by various shader stages
-@@ -1746,7 +1758,7 @@ class VkCmdBufferAllocInfo {
-     const void*                                 pNext      /// Pointer to next structure
-     VkCmdPool                                   cmdPool
-     VkCmdBufferLevel                            level
--    u32                                         count
-+    u32                                         bufferCount
- }
- 
- class VkCmdBufferBeginInfo {
-@@ -1818,13 +1830,13 @@ class VkSubpassDescription {
-     const void*                                 pNext              /// Pointer to next structure
-     VkPipelineBindPoint                         pipelineBindPoint  /// Must be VK_PIPELINE_BIND_POINT_GRAPHICS for now
-     VkSubpassDescriptionFlags                   flags
--    u32                                         inputCount
-+    u32                                         inputAttachmentCount
-     const VkAttachmentReference*                pInputAttachments
--    u32                                         colorCount
-+    u32                                         colorAttachmentCount
-     const VkAttachmentReference*                pColorAttachments
-     const VkAttachmentReference*                pResolveAttachments
-     VkAttachmentReference                       depthStencilAttachment
--    u32                                         preserveCount
-+    u32                                         preserveAttachmentCount
-     const VkAttachmentReference*                pPreserveAttachments
- }
- 
-@@ -1879,7 +1891,6 @@ class VkPhysicalDeviceFeatures {
-     VkBool32                                    fillModeNonSolid                          /// point and wireframe fill modes
-     VkBool32                                    depthBounds                               /// depth bounds test
-     VkBool32                                    wideLines                                 /// lines with width greater than 1
--    VkBool32                                    strictLines
-     VkBool32                                    largePoints                               /// points with size greater than 1
-     VkBool32                                    alphaToOne                                /// The fragment alpha channel can be forced to maximum representable alpha value
-     VkBool32                                    multiViewport
-@@ -1988,7 +1999,6 @@ class VkPhysicalDeviceLimits {
- 
-     u32                                         maxDrawIndexedIndexValue                  /// max index value for indexed draw calls (for 32-bit indices)
-     u32                                         maxDrawIndirectInstanceCount              /// max instance count for indirect draw calls
--    VkBool32                                    primitiveRestartForPatches                /// is primitive restart supported for PATCHES
- 
-     f32                                         maxSamplerLodBias                         /// max absolute sampler level of detail bias
-     f32                                         maxSamplerAnisotropy                      /// max degree of sampler anisotropy
-@@ -2037,6 +2047,7 @@ class VkPhysicalDeviceLimits {
-     f32[2]                                      lineWidthRange                            /// range (min,max) of supported line widths
-     f32                                         pointSizeGranularity                      /// granularity of supported point sizes
-     f32                                         lineWidthGranularity                      /// granularity of supported line widths
-+    VkBool32                                    strictLines
- 
-     u32                                         recommendedBufferCopyOffsetAlignment
-     u32                                         recommendedBufferCopyRowPitchAlignment
-@@ -2129,7 +2140,7 @@ class VkSwapchainCreateInfoKHR {
-     VkSurfaceTransformKHR                       preTransform
-     u32                                         imageArraySize
-     VkSharingMode                               sharingMode
--    u32                                         queueFamilyCount
-+    u32                                         queueFamilyIndexCount
-     const u32*                                  pQueueFamilyIndices
-     VkPresentModeKHR                            presentMode
-     VkSwapchainKHR                              oldSwapchain
-@@ -2141,7 +2152,7 @@ class VkPresentInfoKHR {
-     VkStructureType                             sType
-     const void*                                 pNext
-     u32                                         swapchainCount
--    const VkSwapchainKHR*                       swapchains
-+    const VkSwapchainKHR*                       pSwapchains
-     const u32*                                  imageIndices
- }
- 
-@@ -2242,7 +2253,17 @@ class VkDisplayPresentInfoKHR {
-         void*                                       pUserData,
-         platform.size_t                             size,
-         platform.size_t                             alignment,
--        VkSystemAllocType                           allocType) {
-+        VkSystemAllocScope                          allocScope) {
-+    return ?
-+}
-+
-+@external type void* PFN_vkReallocFunction
-+@pfn cmd void* vkReallocFunction(
-+        void*                                       pUserData,
-+        void*                                       pOriginal,
-+        platform.size_t                             size,
-+        platform.size_t                             alignment,
-+        VkSystemAllocScope                          allocScope) {
-     return ?
- }
- 
-@@ -2252,12 +2273,28 @@ class VkDisplayPresentInfoKHR {
-         void*                                       pMem) {
- }
- 
-+@external type void* PFN_vkInternalAllocNotification
-+@pfn cmd void vkInternalAllocNotification(
-+        void*                                       pUserData,
-+        platform.size_t                             size,
-+        VkInternalAllocType                         allocType,
-+        VkSystemAllocScope                          allocScope) {
-+}
-+
-+@external type void* PFN_vkInternalFreeNotification
-+@pfn cmd void vkInternalFreeNotification(
-+        void*                                       pUserData,
-+        platform.size_t                             size,
-+        VkInternalAllocType                         allocType,
-+        VkSystemAllocScope                          allocScope) {
-+}
- 
- // Global functions
- 
- @threadSafety("system")
- cmd VkResult vkCreateInstance(
-         const VkInstanceCreateInfo*                 pCreateInfo,
-+        const VkAllocCallbacks*                     pAllocator,
-         VkInstance*                                 pInstance) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO)
- 
-@@ -2265,15 +2302,16 @@ cmd VkResult vkCreateInstance(
-     pInstance[0] = instance
-     State.Instances[instance] = new!InstanceObject()
- 
--    layers := pCreateInfo.ppEnabledLayerNames[0:pCreateInfo.layerCount]
--    extensions := pCreateInfo.ppEnabledExtensionNames[0:pCreateInfo.extensionCount]
-+    layers := pCreateInfo.ppEnabledLayerNames[0:pCreateInfo.enabledLayerNameCount]
-+    extensions := pCreateInfo.ppEnabledExtensionNames[0:pCreateInfo.enabledExtensionNameCount]
- 
-     return ?
- }
- 
- @threadSafety("system")
- cmd void vkDestroyInstance(
--        VkInstance                                  instance) {
-+        VkInstance                                  instance,
-+        const VkAllocCallbacks*                     pAllocator) {
-     instanceObject := GetInstance(instance)
- 
-     State.Instances[instance] = null
-@@ -2332,7 +2370,7 @@ cmd void vkGetPhysicalDeviceProperties(
- 
- cmd void vkGetPhysicalDeviceQueueFamilyProperties(
-         VkPhysicalDevice                            physicalDevice,
--        u32*                                        pCount,
-+        u32*                                        pQueueFamilyPropertyCount,
-         VkQueueFamilyProperties*                    pQueueFamilyProperties) {
-     physicalDeviceObject := GetPhysicalDevice(physicalDevice)
-     // TODO: Figure out how to express fetch-count-or-properties
-@@ -2400,6 +2438,7 @@ cmd void vkGetPhysicalDeviceImageFormatProperties(
- cmd VkResult vkCreateDevice(
-         VkPhysicalDevice                            physicalDevice,
-         const VkDeviceCreateInfo*                   pCreateInfo,
-+        const VkAllocCallbacks*                     pAllocator,
-         VkDevice*                                   pDevice) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO)
-     physicalDeviceObject := GetPhysicalDevice(physicalDevice)
-@@ -2413,7 +2452,8 @@ cmd VkResult vkCreateDevice(
- 
- @threadSafety("system")
- cmd void vkDestroyDevice(
--        VkDevice                                    device) {
-+        VkDevice                                    device,
-+        const VkAllocCallbacks*                     pAllocator) {
-     deviceObject := GetDevice(device)
- 
-     State.Devices[device] = null
-@@ -2423,10 +2463,10 @@ cmd void vkDestroyDevice(
- // Extension discovery functions
- 
- cmd VkResult vkEnumerateInstanceLayerProperties(
--        u32*                                        pCount,
-+        u32*                                        pPropertyCount,
-         VkLayerProperties*                          pProperties) {
-     count := as!u32(?)
--    pCount[0] = count
-+    pPropertyCount[0] = count
- 
-     properties := pProperties[0:count]
-     for i in (0 .. count) {
-@@ -2439,10 +2479,10 @@ cmd VkResult vkEnumerateInstanceLayerProperties(
- 
- cmd VkResult vkEnumerateInstanceExtensionProperties(
-         const char*                                 pLayerName,
--        u32*                                        pCount,
-+        u32*                                        pPropertyCount,
-         VkExtensionProperties*                      pProperties) {
-     count := as!u32(?)
--    pCount[0] = count
-+    pPropertyCount[0] = count
- 
-     properties := pProperties[0:count]
-     for i in (0 .. count) {
-@@ -2455,11 +2495,11 @@ cmd VkResult vkEnumerateInstanceExtensionProperties(
- 
- cmd VkResult vkEnumerateDeviceLayerProperties(
-         VkPhysicalDevice                            physicalDevice,
--        u32*                                        pCount,
-+        u32*                                        pPropertyCount,
-         VkLayerProperties*                          pProperties) {
-     physicalDeviceObject := GetPhysicalDevice(physicalDevice)
-     count := as!u32(?)
--    pCount[0] = count
-+    pPropertyCount[0] = count
- 
-     properties := pProperties[0:count]
-     for i in (0 .. count) {
-@@ -2473,12 +2513,12 @@ cmd VkResult vkEnumerateDeviceLayerProperties(
- cmd VkResult vkEnumerateDeviceExtensionProperties(
-         VkPhysicalDevice                            physicalDevice,
-         const char*                                 pLayerName,
--        u32*                                        pCount,
-+        u32*                                        pPropertyCount,
-         VkExtensionProperties*                      pProperties) {
-     physicalDeviceObject := GetPhysicalDevice(physicalDevice)
- 
-     count := as!u32(?)
--    pCount[0] = count
-+    pPropertyCount[0] = count
- 
-     properties := pProperties[0:count]
-     for i in (0 .. count) {
-@@ -2557,6 +2597,7 @@ cmd VkResult vkDeviceWaitIdle(
- cmd VkResult vkAllocMemory(
-         VkDevice                                    device,
-         const VkMemoryAllocInfo*                    pAllocInfo,
-+        const VkAllocCallbacks*                     pAllocator,
-         VkDeviceMemory*                             pMem) {
-     assert(pAllocInfo.sType == VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO)
-     deviceObject := GetDevice(device)
-@@ -2573,7 +2614,8 @@ cmd VkResult vkAllocMemory(
- @threadSafety("system")
- cmd void vkFreeMemory(
-         VkDevice                                    device,
--        VkDeviceMemory                              mem) {
-+        VkDeviceMemory                              mem,
-+        const VkAllocCallbacks*                     pAllocator) {
-     deviceObject := GetDevice(device)
-     memObject := GetDeviceMemory(mem)
-     assert(memObject.device == device)
-@@ -2740,7 +2782,7 @@ cmd VkResult vkBindImageMemory(
- cmd void vkGetImageSparseMemoryRequirements(
-         VkDevice                                    device,
-         VkImage                                     image,
--        u32*                                        pNumRequirements,
-+        u32*                                        pSparseMemoryRequirementCount,
-         VkSparseImageMemoryRequirements*            pSparseMemoryRequirements) {
-     deviceObject := GetDevice(device)
-     imageObject := GetImage(image)
-@@ -2754,7 +2796,7 @@ cmd void vkGetPhysicalDeviceSparseImageFormatProperties(
-         u32                                         samples,
-         VkImageUsageFlags                           usage,
-         VkImageTiling                               tiling,
--        u32*                                        pNumProperties,
-+        u32*                                        pPropertyCount,
-         VkSparseImageFormatProperties*              pProperties) {
-     physicalDeviceObject := GetPhysicalDevice(physicalDevice)
- }
-@@ -2762,7 +2804,7 @@ cmd void vkGetPhysicalDeviceSparseImageFormatProperties(
- cmd VkResult vkQueueBindSparseBufferMemory(
-         VkQueue                                     queue,
-         VkBuffer                                    buffer,
--        u32                                         numBindings,
-+        u32                                         bindInfoCount,
-         const VkSparseMemoryBindInfo*               pBindInfo) {
-     queueObject := GetQueue(queue)
-     bufferObject := GetBuffer(buffer)
-@@ -2774,7 +2816,7 @@ cmd VkResult vkQueueBindSparseBufferMemory(
- cmd VkResult vkQueueBindSparseImageOpaqueMemory(
-         VkQueue                                     queue,
-         VkImage                                     image,
--        u32                                         numBindings,
-+        u32                                         bindInfoCount,
-         const VkSparseMemoryBindInfo*               pBindInfo) {
-     queueObject := GetQueue(queue)
-     imageObject := GetImage(image)
-@@ -2783,11 +2825,10 @@ cmd VkResult vkQueueBindSparseImageOpaqueMemory(
-     return ?
- }
- 
--
- cmd VkResult vkQueueBindSparseImageMemory(
-         VkQueue                                     queue,
-         VkImage                                     image,
--        u32                                         numBindings,
-+        u32                                         bindInfoCount,
-         const VkSparseImageMemoryBindInfo*          pBindInfo) {
-     queueObject := GetQueue(queue)
-     imageObject := GetImage(image)
-@@ -2802,6 +2843,7 @@ cmd VkResult vkQueueBindSparseImageMemory(
- cmd VkResult vkCreateFence(
-         VkDevice                                    device,
-         const VkFenceCreateInfo*                    pCreateInfo,
-+        const VkAllocCallbacks*                     pAllocator,
-         VkFence*                                    pFence) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_FENCE_CREATE_INFO)
-     deviceObject := GetDevice(device)
-@@ -2817,7 +2859,8 @@ cmd VkResult vkCreateFence(
- @threadSafety("system")
- cmd void vkDestroyFence(
-         VkDevice                                    device,
--        VkFence                                     fence) {
-+        VkFence                                     fence,
-+        const VkAllocCallbacks*                     pAllocator) {
-     deviceObject := GetDevice(device)
-     fenceObject := GetFence(fence)
-     assert(fenceObject.device == device)
-@@ -2880,6 +2923,7 @@ cmd VkResult vkWaitForFences(
- cmd VkResult vkCreateSemaphore(
-         VkDevice                                    device,
-         const VkSemaphoreCreateInfo*                pCreateInfo,
-+        const VkAllocCallbacks*                     pAllocator,
-         VkSemaphore*                                pSemaphore) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO)
-     deviceObject := GetDevice(device)
-@@ -2894,7 +2938,8 @@ cmd VkResult vkCreateSemaphore(
- @threadSafety("system")
- cmd void vkDestroySemaphore(
-         VkDevice                                    device,
--        VkSemaphore                                 semaphore) {
-+        VkSemaphore                                 semaphore,
-+        const VkAllocCallbacks*                     pAllocator) {
-     deviceObject := GetDevice(device)
-     semaphoreObject := GetSemaphore(semaphore)
-     assert(semaphoreObject.device == device)
-@@ -2909,6 +2954,7 @@ cmd void vkDestroySemaphore(
- cmd VkResult vkCreateEvent(
-         VkDevice                                    device,
-         const VkEventCreateInfo*                    pCreateInfo,
-+        const VkAllocCallbacks*                     pAllocator,
-         VkEvent*                                    pEvent) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_EVENT_CREATE_INFO)
-     deviceObject := GetDevice(device)
-@@ -2923,7 +2969,8 @@ cmd VkResult vkCreateEvent(
- @threadSafety("system")
- cmd void vkDestroyEvent(
-         VkDevice                                    device,
--        VkEvent                                     event) {
-+        VkEvent                                     event,
-+        const VkAllocCallbacks*                     pAllocator) {
-     deviceObject := GetDevice(device)
-     eventObject := GetEvent(event)
-     assert(eventObject.device == device)
-@@ -2971,6 +3018,7 @@ cmd VkResult vkResetEvent(
- cmd VkResult vkCreateQueryPool(
-         VkDevice                                    device,
-         const VkQueryPoolCreateInfo*                pCreateInfo,
-+        const VkAllocCallbacks*                     pAllocator,
-         VkQueryPool*                                pQueryPool) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO)
-     deviceObject := GetDevice(device)
-@@ -2985,7 +3033,8 @@ cmd VkResult vkCreateQueryPool(
- @threadSafety("system")
- cmd void vkDestroyQueryPool(
-         VkDevice                                    device,
--        VkQueryPool                                 queryPool) {
-+        VkQueryPool                                 queryPool,
-+        const VkAllocCallbacks*                     pAllocator) {
-     deviceObject := GetDevice(device)
-     queryPoolObject := GetQueryPool(queryPool)
-     assert(queryPoolObject.device == device)
-@@ -3018,6 +3067,7 @@ cmd VkResult vkGetQueryPoolResults(
- cmd VkResult vkCreateBuffer(
-         VkDevice                                    device,
-         const VkBufferCreateInfo*                   pCreateInfo,
-+        const VkAllocCallbacks*                     pAllocator,
-         VkBuffer*                                   pBuffer) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO)
-     deviceObject := GetDevice(device)
-@@ -3032,7 +3082,8 @@ cmd VkResult vkCreateBuffer(
- @threadSafety("system")
- cmd void vkDestroyBuffer(
-         VkDevice                                    device,
--        VkBuffer                                    buffer) {
-+        VkBuffer                                    buffer,
-+        const VkAllocCallbacks*                     pAllocator) {
-     deviceObject := GetDevice(device)
-     bufferObject := GetBuffer(buffer)
-     assert(bufferObject.device == device)
-@@ -3048,6 +3099,7 @@ cmd void vkDestroyBuffer(
- cmd VkResult vkCreateBufferView(
-         VkDevice                                    device,
-         const VkBufferViewCreateInfo*               pCreateInfo,
-+        const VkAllocCallbacks*                     pAllocator,
-         VkBufferView*                               pView) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO)
-     deviceObject := GetDevice(device)
-@@ -3065,7 +3117,8 @@ cmd VkResult vkCreateBufferView(
- @threadSafety("system")
- cmd void vkDestroyBufferView(
-         VkDevice                                    device,
--        VkBufferView                                bufferView) {
-+        VkBufferView                                bufferView,
-+        const VkAllocCallbacks*                     pAllocator) {
-     deviceObject := GetDevice(device)
-     bufferViewObject := GetBufferView(bufferView)
-     assert(bufferViewObject.device == device)
-@@ -3080,6 +3133,7 @@ cmd void vkDestroyBufferView(
- cmd VkResult vkCreateImage(
-         VkDevice                                    device,
-         const VkImageCreateInfo*                    pCreateInfo,
-+        const VkAllocCallbacks*                     pAllocator,
-         VkImage*                                    pImage) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO)
-     deviceObject := GetDevice(device)
-@@ -3094,7 +3148,8 @@ cmd VkResult vkCreateImage(
- @threadSafety("system")
- cmd void vkDestroyImage(
-         VkDevice                                    device,
--        VkImage                                     image) {
-+        VkImage                                     image,
-+        const VkAllocCallbacks*                     pAllocator) {
-     deviceObject := GetDevice(device)
-     imageObject := GetImage(image)
-     assert(imageObject.device == device)
-@@ -3120,6 +3175,7 @@ cmd void vkGetImageSubresourceLayout(
- cmd VkResult vkCreateImageView(
-         VkDevice                                    device,
-         const VkImageViewCreateInfo*                pCreateInfo,
-+        const VkAllocCallbacks*                     pAllocator,
-         VkImageView*                                pView) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO)
-     deviceObject := GetDevice(device)
-@@ -3137,7 +3193,8 @@ cmd VkResult vkCreateImageView(
- @threadSafety("system")
- cmd void vkDestroyImageView(
-         VkDevice                                    device,
--        VkImageView                                 imageView) {
-+        VkImageView                                 imageView,
-+        const VkAllocCallbacks*                     pAllocator) {
-     deviceObject := GetDevice(device)
-     imageViewObject := GetImageView(imageView)
-     assert(imageViewObject.device == device)
-@@ -3151,6 +3208,7 @@ cmd void vkDestroyImageView(
- cmd VkResult vkCreateShaderModule(
-         VkDevice                                    device,
-         const VkShaderModuleCreateInfo*             pCreateInfo,
-+        const VkAllocCallbacks*                     pAllocator,
-         VkShaderModule*                             pShaderModule) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO)
-     deviceObject := GetDevice(device)
-@@ -3164,7 +3222,8 @@ cmd VkResult vkCreateShaderModule(
- 
- cmd void vkDestroyShaderModule(
-         VkDevice                                    device,
--        VkShaderModule                              shaderModule) {
-+        VkShaderModule                              shaderModule,
-+        const VkAllocCallbacks*                     pAllocator) {
-     deviceObject := GetDevice(device)
-     shaderModuleObject := GetShaderModule(shaderModule)
-     assert(shaderModuleObject.device == device)
-@@ -3176,6 +3235,7 @@ cmd void vkDestroyShaderModule(
- cmd VkResult vkCreateShader(
-         VkDevice                                    device,
-         const VkShaderCreateInfo*                   pCreateInfo,
-+        const VkAllocCallbacks*                     pAllocator,
-         VkShader*                                   pShader) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SHADER_CREATE_INFO)
-     deviceObject := GetDevice(device)
-@@ -3190,7 +3250,8 @@ cmd VkResult vkCreateShader(
- @threadSafety("system")
- cmd void vkDestroyShader(
-         VkDevice                                    device,
--        VkShader                                    shader) {
-+        VkShader                                    shader,
-+        const VkAllocCallbacks*                     pAllocator) {
-     deviceObject := GetDevice(device)
-     shaderObject := GetShader(shader)
-     assert(shaderObject.device == device)
-@@ -3204,6 +3265,7 @@ cmd void vkDestroyShader(
- cmd VkResult vkCreatePipelineCache(
-         VkDevice                                    device,
-         const VkPipelineCacheCreateInfo*            pCreateInfo,
-+        const VkAllocCallbacks*                     pAllocator,
-         VkPipelineCache*                            pPipelineCache) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO)
-     deviceObject := GetDevice(device)
-@@ -3217,7 +3279,8 @@ cmd VkResult vkCreatePipelineCache(
- 
- cmd void vkDestroyPipelineCache(
-         VkDevice                                    device,
--        VkPipelineCache                             pipelineCache) {
-+        VkPipelineCache                             pipelineCache,
-+        const VkAllocCallbacks*                     pAllocator) {
-     deviceObject := GetDevice(device)
-     pipelineCacheObject := GetPipelineCache(pipelineCache)
-     assert(pipelineCacheObject.device == device)
-@@ -3259,8 +3322,9 @@ cmd VkResult vkMergePipelineCaches(
- cmd VkResult vkCreateGraphicsPipelines(
-         VkDevice                                    device,
-         VkPipelineCache                             pipelineCache,
--        u32                                         count,
-+        u32                                         createInfoCount,
-         const VkGraphicsPipelineCreateInfo*         pCreateInfos,
-+        const VkAllocCallbacks*                     pAllocator,
-         VkPipeline*                                 pPipelines) {
-     deviceObject := GetDevice(device)
-     if pipelineCache != NULL_HANDLE {
-@@ -3268,9 +3332,9 @@ cmd VkResult vkCreateGraphicsPipelines(
-         assert(pipelineCacheObject.device == device)
-     }
- 
--    createInfos := pCreateInfos[0:count]
--    pipelines := pPipelines[0:count]
--    for i in (0 .. count) {
-+    createInfos := pCreateInfos[0:createInfoCount]
-+    pipelines := pPipelines[0:createInfoCount]
-+    for i in (0 .. createInfoCount) {
-         pipeline := ?
-         pipelines[i] = pipeline
-         State.Pipelines[pipeline] = new!PipelineObject(device: device)
-@@ -3282,8 +3346,9 @@ cmd VkResult vkCreateGraphicsPipelines(
- cmd VkResult vkCreateComputePipelines(
-         VkDevice                                    device,
-         VkPipelineCache                             pipelineCache,
--        u32                                         count,
-+        u32                                         createInfoCount,
-         const VkComputePipelineCreateInfo*          pCreateInfos,
-+        const VkAllocCallbacks*                     pAllocator,
-         VkPipeline*                                 pPipelines) {
-     deviceObject := GetDevice(device)
-     if pipelineCache != NULL_HANDLE {
-@@ -3291,9 +3356,9 @@ cmd VkResult vkCreateComputePipelines(
-         assert(pipelineCacheObject.device == device)
-     }
- 
--    createInfos := pCreateInfos[0:count]
--    pipelines := pPipelines[0:count]
--    for i in (0 .. count) {
-+    createInfos := pCreateInfos[0:createInfoCount]
-+    pipelines := pPipelines[0:createInfoCount]
-+    for i in (0 .. createInfoCount) {
-         pipeline := ?
-         pipelines[i] = pipeline
-         State.Pipelines[pipeline] = new!PipelineObject(device: device)
-@@ -3305,7 +3370,8 @@ cmd VkResult vkCreateComputePipelines(
- @threadSafety("system")
- cmd void vkDestroyPipeline(
-         VkDevice                                    device,
--        VkPipeline                                  pipeline) {
-+        VkPipeline                                  pipeline,
-+        const VkAllocCallbacks*                     pAllocator) {
-     deviceObject := GetDevice(device)
-     pipelineObjects := GetPipeline(pipeline)
-     assert(pipelineObjects.device == device)
-@@ -3320,6 +3386,7 @@ cmd void vkDestroyPipeline(
- cmd VkResult vkCreatePipelineLayout(
-         VkDevice                                    device,
-         const VkPipelineLayoutCreateInfo*           pCreateInfo,
-+        const VkAllocCallbacks*                     pAllocator,
-         VkPipelineLayout*                           pPipelineLayout) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO)
-     deviceObject := GetDevice(device)
-@@ -3334,7 +3401,8 @@ cmd VkResult vkCreatePipelineLayout(
- @threadSafety("system")
- cmd void vkDestroyPipelineLayout(
-         VkDevice                                    device,
--        VkPipelineLayout                            pipelineLayout) {
-+        VkPipelineLayout                            pipelineLayout,
-+        const VkAllocCallbacks*                     pAllocator) {
-     deviceObject := GetDevice(device)
-     pipelineLayoutObjects := GetPipelineLayout(pipelineLayout)
-     assert(pipelineLayoutObjects.device == device)
-@@ -3349,6 +3417,7 @@ cmd void vkDestroyPipelineLayout(
- cmd VkResult vkCreateSampler(
-         VkDevice                                    device,
-         const VkSamplerCreateInfo*                  pCreateInfo,
-+        const VkAllocCallbacks*                     pAllocator,
-         VkSampler*                                  pSampler) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO)
-     deviceObject := GetDevice(device)
-@@ -3363,7 +3432,8 @@ cmd VkResult vkCreateSampler(
- @threadSafety("system")
- cmd void vkDestroySampler(
-         VkDevice                                    device,
--        VkSampler                                   sampler) {
-+        VkSampler                                   sampler,
-+        const VkAllocCallbacks*                     pAllocator) {
-     deviceObject := GetDevice(device)
-     samplerObject := GetSampler(sampler)
-     assert(samplerObject.device == device)
-@@ -3378,6 +3448,7 @@ cmd void vkDestroySampler(
- cmd VkResult vkCreateDescriptorSetLayout(
-         VkDevice                                    device,
-         const VkDescriptorSetLayoutCreateInfo*      pCreateInfo,
-+        const VkAllocCallbacks*                     pAllocator,
-         VkDescriptorSetLayout*                      pSetLayout) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO)
-     deviceObject := GetDevice(device)
-@@ -3392,7 +3463,8 @@ cmd VkResult vkCreateDescriptorSetLayout(
- @threadSafety("system")
- cmd void vkDestroyDescriptorSetLayout(
-         VkDevice                                    device,
--        VkDescriptorSetLayout                       descriptorSetLayout) {
-+        VkDescriptorSetLayout                       descriptorSetLayout,
-+        const VkAllocCallbacks*                     pAllocator) {
-     deviceObject := GetDevice(device)
-     descriptorSetLayoutObject := GetDescriptorSetLayout(descriptorSetLayout)
-     assert(descriptorSetLayoutObject.device == device)
-@@ -3403,7 +3475,8 @@ cmd void vkDestroyDescriptorSetLayout(
- @threadSafety("system")
- cmd VkResult vkCreateDescriptorPool(
-         VkDevice                                    device,
--        const VkDescriptorPoolCreateInfo*           pCreateInfo
-+        const VkDescriptorPoolCreateInfo*           pCreateInfo,
-+        const VkAllocCallbacks*                     pAllocator,
-         VkDescriptorPool*                           pDescriptorPool) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO)
-     deviceObject := GetDevice(device)
-@@ -3418,7 +3491,8 @@ cmd VkResult vkCreateDescriptorPool(
- @threadSafety("system")
- cmd void vkDestroyDescriptorPool(
-         VkDevice                                    device,
--        VkDescriptorPool                            descriptorPool) {
-+        VkDescriptorPool                            descriptorPool,
-+        const VkAllocCallbacks*                     pAllocator) {
-     deviceObject := GetDevice(device)
-     descriptorPoolObject := GetDescriptorPool(descriptorPool)
-     assert(descriptorPoolObject.device == device)
-@@ -3447,15 +3521,15 @@ cmd VkResult vkAllocDescriptorSets(
-     allocInfo := pAllocInfo[0]
-     descriptorPoolObject := GetDescriptorPool(allocInfo.descriptorPool)
- 
--    setLayouts := allocInfo.pSetLayouts[0:allocInfo.count]
--    for i in (0 .. allocInfo.count) {
-+    setLayouts := allocInfo.pSetLayouts[0:allocInfo.setCount]
-+    for i in (0 .. allocInfo.setCount) {
-         setLayout := setLayouts[i]
-         setLayoutObject := GetDescriptorSetLayout(setLayout)
-         assert(setLayoutObject.device == device)
-     }
- 
--    descriptorSets := pDescriptorSets[0:allocInfo.count]
--    for i in (0 .. allocInfo.count) {
-+    descriptorSets := pDescriptorSets[0:allocInfo.setCount]
-+    for i in (0 .. allocInfo.setCount) {
-         descriptorSet := ?
-         descriptorSets[i] = descriptorSet
-         State.DescriptorSets[descriptorSet] = new!DescriptorSetObject(device: device)
-@@ -3467,13 +3541,13 @@ cmd VkResult vkAllocDescriptorSets(
- cmd VkResult vkFreeDescriptorSets(
-         VkDevice                                    device,
-         VkDescriptorPool                            descriptorPool,
--        u32                                         count,
-+        u32                                         descriptorSetCount,
-         const VkDescriptorSet*                      pDescriptorSets) {
-     deviceObject := GetDevice(device)
-     descriptorPoolObject := GetDescriptorPool(descriptorPool)
- 
--    descriptorSets := pDescriptorSets[0:count]
--    for i in (0 .. count) {
-+    descriptorSets := pDescriptorSets[0:descriptorSetCount]
-+    for i in (0 .. descriptorSetCount) {
-         descriptorSet := descriptorSets[i]
-         descriptorSetObject := GetDescriptorSet(descriptorSet)
-         assert(descriptorSetObject.device == device)
-@@ -3513,6 +3587,7 @@ cmd void vkUpdateDescriptorSets(
- cmd VkResult vkCreateFramebuffer(
-         VkDevice                                    device,
-         const VkFramebufferCreateInfo*              pCreateInfo,
-+        const VkAllocCallbacks*                     pAllocator,
-         VkFramebuffer*                              pFramebuffer) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO)
-     deviceObject := GetDevice(device)
-@@ -3527,7 +3602,8 @@ cmd VkResult vkCreateFramebuffer(
- @threadSafety("system")
- cmd void vkDestroyFramebuffer(
-         VkDevice                                    device,
--        VkFramebuffer                               framebuffer) {
-+        VkFramebuffer                               framebuffer,
-+        const VkAllocCallbacks*                     pAllocator) {
-     deviceObject := GetDevice(device)
-     framebufferObject := GetFramebuffer(framebuffer)
-     assert(framebufferObject.device == device)
-@@ -3542,6 +3618,7 @@ cmd void vkDestroyFramebuffer(
- cmd VkResult vkCreateRenderPass(
-         VkDevice                                    device,
-         const VkRenderPassCreateInfo*               pCreateInfo,
-+        const VkAllocCallbacks*                     pAllocator,
-         VkRenderPass*                               pRenderPass) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO)
-     deviceObject := GetDevice(device)
-@@ -3556,7 +3633,8 @@ cmd VkResult vkCreateRenderPass(
- @threadSafety("system")
- cmd void vkDestroyRenderPass(
-         VkDevice                                    device,
--        VkRenderPass                                renderPass) {
-+        VkRenderPass                                renderPass,
-+        const VkAllocCallbacks*                     pAllocator) {
-     deviceObject := GetDevice(device)
-     renderPassObject := GetRenderPass(renderPass)
-     assert(renderPassObject.device == device)
-@@ -3580,6 +3658,7 @@ cmd void vkGetRenderAreaGranularity(
- cmd VkResult vkCreateCommandPool(
-         VkDevice                                    device,
-         const VkCmdPoolCreateInfo*                  pCreateInfo,
-+        const VkAllocCallbacks*                     pAllocator,
-         VkCmdPool*                                  pCmdPool) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_CMD_POOL_CREATE_INFO)
-     deviceObject := GetDevice(device)
-@@ -3593,7 +3672,8 @@ cmd VkResult vkCreateCommandPool(
- 
- cmd void vkDestroyCommandPool(
-         VkDevice                                    device,
--        VkCmdPool                                   cmdPool) {
-+        VkCmdPool                                   cmdPool,
-+        const VkAllocCallbacks*                     pAllocator) {
-     deviceObject := GetDevice(device)
-     cmdPoolObject := GetCmdPool(cmdPool)
-     assert(cmdPoolObject.device == device)
-@@ -3637,7 +3717,7 @@ cmd VkResult vkAllocCommandBuffers(
-         VkCmdBuffer*                                pCmdBuffers) {
-     assert(pAllocInfo[0].sType == VK_STRUCTURE_TYPE_CMD_BUFFER_ALLOC_INFO)
- 
--    count := pAllocInfo[0].count
-+    count := pAllocInfo[0].bufferCount
-     cmdBuffers := pCmdBuffers[0:count]
-     for i in (0 .. count) {
-         cmdBuffer := ?
-@@ -3652,12 +3732,12 @@ cmd VkResult vkAllocCommandBuffers(
- cmd void vkFreeCommandBuffers(
-         VkDevice                                    device,
-         VkCmdPool                                   cmdPool,
--        u32                                         count,
-+        u32                                         commandBufferCount,
-         const VkCmdBuffer*                          pCommandBuffers) {
-     deviceObject := GetDevice(device)
- 
--    cmdBuffers := pCommandBuffers[0:count]
--    for i in (0 .. count) {
-+    cmdBuffers := pCommandBuffers[0:commandBufferCount]
-+    for i in (0 .. commandBufferCount) {
-         cmdBufferObject := GetCmdBuffer(cmdBuffers[i])
-         assert(cmdBufferObject.device == device)
-         // TODO: iterate over boundObjects and clear memory bindings
-@@ -3804,14 +3884,14 @@ cmd void vkCmdBindDescriptorSets(
-         VkPipelineBindPoint                         pipelineBindPoint,
-         VkPipelineLayout                            layout,
-         u32                                         firstSet,
--        u32                                         setCount,
-+        u32                                         descriptorSetCount,
-         const VkDescriptorSet*                      pDescriptorSets,
-         u32                                         dynamicOffsetCount,
-         const u32*                                  pDynamicOffsets) {
-     cmdBufferObject := GetCmdBuffer(cmdBuffer)
- 
--    descriptorSets := pDescriptorSets[0:setCount]
--    for i in (0 .. setCount) {
-+    descriptorSets := pDescriptorSets[0:descriptorSetCount]
-+    for i in (0 .. descriptorSetCount) {
-         descriptorSet := descriptorSets[i]
-         descriptorSetObject := GetDescriptorSet(descriptorSet)
-         assert(cmdBufferObject.device == descriptorSetObject.device)
-@@ -3898,7 +3978,7 @@ cmd void vkCmdDrawIndirect(
-         VkCmdBuffer                                 cmdBuffer,
-         VkBuffer                                    buffer,
-         VkDeviceSize                                offset,
--        u32                                         count,
-+        u32                                         drawCount,
-         u32                                         stride) {
-     cmdBufferObject := GetCmdBuffer(cmdBuffer)
-     bufferObject := GetBuffer(buffer)
-@@ -3914,7 +3994,7 @@ cmd void vkCmdDrawIndexedIndirect(
-         VkCmdBuffer                                 cmdBuffer,
-         VkBuffer                                    buffer,
-         VkDeviceSize                                offset,
--        u32                                         count,
-+        u32                                         drawCount,
-         u32                                         stride) {
-     cmdBufferObject := GetCmdBuffer(cmdBuffer)
-     bufferObject := GetBuffer(buffer)
-@@ -4348,8 +4428,8 @@ cmd void vkCmdPushConstants(
-         VkCmdBuffer                                 cmdBuffer,
-         VkPipelineLayout                            layout,
-         VkShaderStageFlags                          stageFlags,
--        u32                                         start,
--        u32                                         length,
-+        u32                                         offset,
-+        u32                                         size,
-         const void*                                 values) {
-     cmdBufferObject := GetCmdBuffer(cmdBuffer)
-     layoutObject := GetPipelineLayout(layout)
-@@ -4438,12 +4518,12 @@ cmd VkResult vkGetSurfacePropertiesKHR(
- cmd VkResult vkGetSurfaceFormatsKHR(
-         VkDevice                                    device,
-         VkSurfaceKHR                                surface,
--        u32*                                        pCount,
-+        u32*                                        pSurfaceFormatCount,
-         VkSurfaceFormatKHR*                         pSurfaceFormats) {
-     deviceObject := GetDevice(device)
- 
-     count := as!u32(?)
--    pCount[0] = count
-+    pSurfaceFormatCount[0] = count
-     surfaceFormats := pSurfaceFormats[0:count]
- 
-     for i in (0 .. count) {
-@@ -4458,12 +4538,12 @@ cmd VkResult vkGetSurfaceFormatsKHR(
- cmd VkResult vkGetSurfacePresentModesKHR(
-         VkDevice                                    device,
-         VkSurfaceKHR                                surface,
--        u32*                                        pCount,
-+        u32*                                        pPresentModeCount,
-         VkPresentModeKHR*                           pPresentModes) {
-     deviceObject := GetDevice(device)
- 
-     count := as!u32(?)
--    pCount[0] = count
-+    pPresentModeCount[0] = count
-     presentModes := pPresentModes[0:count]
- 
-     for i in (0 .. count) {
-@@ -4504,12 +4584,12 @@ cmd void vkDestroySwapchainKHR(
- cmd VkResult vkGetSwapchainImagesKHR(
-         VkDevice                                 device,
-         VkSwapchainKHR                           swapchain,
--        u32*                                     pCount,
-+        u32*                                     pSwapchainImageCount,
-         VkImage*                                 pSwapchainImages) {
-     deviceObject := GetDevice(device)
- 
-     count := as!u32(?)
--    pCount[0] = count
-+    pSwapchainImageCount[0] = count
-     swapchainImages := pSwapchainImages[0:count]
- 
-     for i in (0 .. count) {
-@@ -4553,7 +4633,7 @@ cmd VkResult vkQueuePresentKHR(
- @extension("VK_EXT_KHR_display")
- cmd VkResult vkGetPhysicalDeviceDisplayPropertiesKHR(
-         VkPhysicalDevice                        physicalDevice,
--        u32*                                    count,
-+        u32*                                    pPropertyCount,
-         VkDisplayPropertiesKHR*                 pProperties) {
-     physicalDeviceObject := GetPhysicalDevice(physicalDevice)
-     return ?
-@@ -4563,8 +4643,8 @@ cmd VkResult vkGetPhysicalDeviceDisplayPropertiesKHR(
- cmd VkResult vkGetDisplayModePropertiesKHR(
-         VkPhysicalDevice                        physicalDevice,
-         VkDisplayKHR                            display,
--        u32*                                    pCount,
--        VkDisplayModePropertiesKHR*             pModeProperties) {
-+        u32*                                    pPropertyCount,
-+        VkDisplayModePropertiesKHR*             pProperties) {
-     physicalDeviceObject := GetPhysicalDevice(physicalDevice)
-     return ?
- }
-diff --git a/vulkan/include/vulkan/vulkan.h b/vulkan/include/vulkan/vulkan.h
-index ca2ff85..d061988 100644
---- a/vulkan/include/vulkan/vulkan.h
-+++ b/vulkan/include/vulkan/vulkan.h
-@@ -41,7 +41,7 @@ extern "C" {
-     ((major << 22) | (minor << 12) | patch)
- 
- // Vulkan API version supported by this file
--#define VK_API_VERSION VK_MAKE_VERSION(0, 186, 0)
-+#define VK_API_VERSION VK_MAKE_VERSION(0, 188, 0)
- 
- 
- #define VK_NULL_HANDLE 0
-@@ -179,23 +179,34 @@ typedef enum {
-     VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 45,
-     VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 46,
-     VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOC_INFO = 47,
-+    VK_STRUCTURE_TYPE_SUBMIT_INFO = 48,
-+    VK_STRUCTURE_TYPE_LAYER_INSTANCE_CREATE_INFO = 49,
-+    VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO = 50,
-     VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO,
--    VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOC_INFO,
--    VK_STRUCTURE_TYPE_NUM = (VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOC_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1),
-+    VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO,
-+    VK_STRUCTURE_TYPE_NUM = (VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1),
-     VK_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF
- } VkStructureType;
- 
- typedef enum {
--    VK_SYSTEM_ALLOC_TYPE_API_OBJECT = 0,
--    VK_SYSTEM_ALLOC_TYPE_INTERNAL = 1,
--    VK_SYSTEM_ALLOC_TYPE_INTERNAL_TEMP = 2,
--    VK_SYSTEM_ALLOC_TYPE_INTERNAL_SHADER = 3,
--    VK_SYSTEM_ALLOC_TYPE_DEBUG = 4,
--    VK_SYSTEM_ALLOC_TYPE_BEGIN_RANGE = VK_SYSTEM_ALLOC_TYPE_API_OBJECT,
--    VK_SYSTEM_ALLOC_TYPE_END_RANGE = VK_SYSTEM_ALLOC_TYPE_DEBUG,
--    VK_SYSTEM_ALLOC_TYPE_NUM = (VK_SYSTEM_ALLOC_TYPE_DEBUG - VK_SYSTEM_ALLOC_TYPE_API_OBJECT + 1),
--    VK_SYSTEM_ALLOC_TYPE_MAX_ENUM = 0x7FFFFFFF
--} VkSystemAllocType;
-+    VK_SYSTEM_ALLOC_SCOPE_FUNCTION = 0,
-+    VK_SYSTEM_ALLOC_SCOPE_OBJECT = 1,
-+    VK_SYSTEM_ALLOC_SCOPE_CACHE = 2,
-+    VK_SYSTEM_ALLOC_SCOPE_DEVICE = 3,
-+    VK_SYSTEM_ALLOC_SCOPE_INSTANCE = 4,
-+    VK_SYSTEM_ALLOC_SCOPE_BEGIN_RANGE = VK_SYSTEM_ALLOC_SCOPE_FUNCTION,
-+    VK_SYSTEM_ALLOC_SCOPE_END_RANGE = VK_SYSTEM_ALLOC_SCOPE_INSTANCE,
-+    VK_SYSTEM_ALLOC_SCOPE_NUM = (VK_SYSTEM_ALLOC_SCOPE_INSTANCE - VK_SYSTEM_ALLOC_SCOPE_FUNCTION + 1),
-+    VK_SYSTEM_ALLOC_SCOPE_MAX_ENUM = 0x7FFFFFFF
-+} VkSystemAllocScope;
-+
-+typedef enum {
-+    VK_INTERNAL_ALLOC_TYPE_EXECUTABLE = 0,
-+    VK_INTERNAL_ALLOC_TYPE_BEGIN_RANGE = VK_INTERNAL_ALLOC_TYPE_EXECUTABLE,
-+    VK_INTERNAL_ALLOC_TYPE_END_RANGE = VK_INTERNAL_ALLOC_TYPE_EXECUTABLE,
-+    VK_INTERNAL_ALLOC_TYPE_NUM = (VK_INTERNAL_ALLOC_TYPE_EXECUTABLE - VK_INTERNAL_ALLOC_TYPE_EXECUTABLE + 1),
-+    VK_INTERNAL_ALLOC_TYPE_MAX_ENUM = 0x7FFFFFFF
-+} VkInternalAllocType;
- 
- typedef enum {
-     VK_FORMAT_UNDEFINED = 0,
-@@ -1020,15 +1031,34 @@ typedef enum {
- typedef VkFlags VkQueryControlFlags;
- 
- typedef void* (VKAPI *PFN_vkAllocFunction)(
--    void*                           pUserData,
--    size_t                          size,
--    size_t                          alignment,
--    VkSystemAllocType               allocType);
-+    void*              pUserData,
-+    size_t             size,
-+    size_t             alignment,
-+    VkSystemAllocScope allocScope);
-+
-+typedef void* (VKAPI *PFN_vkReallocFunction)(
-+    void*              pUserData,
-+    void*              pOriginal,
-+    size_t             size,
-+    size_t             alignment,
-+    VkSystemAllocScope allocScope);
- 
- typedef void (VKAPI *PFN_vkFreeFunction)(
-     void*                           pUserData,
-     void*                           pMem);
- 
-+typedef void (VKAPI *PFN_vkInternalAllocNotification)(
-+    void*              pUserData,
-+    size_t                           size,
-+    VkInternalAllocType              allocType,
-+    VkSystemAllocScope               allocScope);
-+
-+typedef void (VKAPI *PFN_vkInternalFreeNotification)(
-+    void*              pUserData,
-+    size_t                           size,
-+    VkInternalAllocType              allocType,
-+    VkSystemAllocScope               allocScope);
-+
- typedef void (VKAPI *PFN_vkVoidFunction)(void);
- 
- typedef struct {
-@@ -1042,23 +1072,25 @@ typedef struct {
- } VkApplicationInfo;
- 
- typedef struct {
--    void*                                       pUserData;
--    PFN_vkAllocFunction                         pfnAlloc;
--    PFN_vkFreeFunction                          pfnFree;
--} VkAllocCallbacks;
--
--typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     const VkApplicationInfo*                    pAppInfo;
--    const VkAllocCallbacks*                     pAllocCb;
--    uint32_t                                    layerCount;
-+    uint32_t                                    enabledLayerNameCount;
-     const char*const*                           ppEnabledLayerNames;
--    uint32_t                                    extensionCount;
-+    uint32_t                                    enabledExtensionNameCount;
-     const char*const*                           ppEnabledExtensionNames;
- } VkInstanceCreateInfo;
- 
- typedef struct {
-+    void*                                       pUserData;
-+    PFN_vkAllocFunction                         pfnAlloc;
-+    PFN_vkReallocFunction                       pfnRealloc;
-+    PFN_vkFreeFunction                          pfnFree;
-+    PFN_vkInternalAllocNotification             pfnInternalAlloc;
-+    PFN_vkInternalFreeNotification              pfnInternalFree;
-+} VkAllocCallbacks;
-+
-+typedef struct {
-     VkBool32                                    robustBufferAccess;
-     VkBool32                                    fullDrawIndexUint32;
-     VkBool32                                    imageCubeArray;
-@@ -1074,7 +1106,6 @@ typedef struct {
-     VkBool32                                    fillModeNonSolid;
-     VkBool32                                    depthBounds;
-     VkBool32                                    wideLines;
--    VkBool32                                    strictLines;
-     VkBool32                                    largePoints;
-     VkBool32                                    alphaToOne;
-     VkBool32                                    multiViewport;
-@@ -1193,7 +1224,6 @@ typedef struct {
-     uint32_t                                    mipmapPrecisionBits;
-     uint32_t                                    maxDrawIndexedIndexValue;
-     uint32_t                                    maxDrawIndirectInstanceCount;
--    VkBool32                                    primitiveRestartForPatches;
-     float                                       maxSamplerLodBias;
-     float                                       maxSamplerAnisotropy;
-     uint32_t                                    maxViewports;
-@@ -1232,6 +1262,7 @@ typedef struct {
-     float                                       lineWidthRange[2];
-     float                                       pointSizeGranularity;
-     float                                       lineWidthGranularity;
-+    VkBool32                                    strictLines;
-     uint32_t                                    recommendedBufferCopyOffsetAlignment;
-     uint32_t                                    recommendedBufferCopyRowPitchAlignment;
- } VkPhysicalDeviceLimits;
-@@ -1284,7 +1315,7 @@ typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     uint32_t                                    queueFamilyIndex;
--    uint32_t                                    queueCount;
-+    uint32_t                                    queuePriorityCount;
-     const float*                                pQueuePriorities;
- } VkDeviceQueueCreateInfo;
- 
-@@ -1293,9 +1324,9 @@ typedef struct {
-     const void*                                 pNext;
-     uint32_t                                    requestedQueueCount;
-     const VkDeviceQueueCreateInfo*              pRequestedQueues;
--    uint32_t                                    layerCount;
-+    uint32_t                                    enabledLayerNameCount;
-     const char*const*                           ppEnabledLayerNames;
--    uint32_t                                    extensionCount;
-+    uint32_t                                    enabledExtensionNameCount;
-     const char*const*                           ppEnabledExtensionNames;
-     const VkPhysicalDeviceFeatures*             pEnabledFeatures;
- } VkDeviceCreateInfo;
-@@ -1313,11 +1344,13 @@ typedef struct {
- } VkLayerProperties;
- 
- typedef struct {
--    uint32_t                                    waitSemCount;
-+    VkStructureType                             sType;
-+    const void*                                 pNext;
-+    uint32_t                                    waitSemaphoreCount;
-     const VkSemaphore*                          pWaitSemaphores;
--    uint32_t                                    cmdBufferCount;
-+    uint32_t                                    commandBufferCount;
-     const VkCmdBuffer*                          pCommandBuffers;
--    uint32_t                                    signalSemCount;
-+    uint32_t                                    signalSemaphoreCount;
-     const VkSemaphore*                          pSignalSemaphores;
- } VkSubmitInfo;
- 
-@@ -1418,7 +1451,7 @@ typedef struct {
-     VkBufferUsageFlags                          usage;
-     VkBufferCreateFlags                         flags;
-     VkSharingMode                               sharingMode;
--    uint32_t                                    queueFamilyCount;
-+    uint32_t                                    queueFamilyIndexCount;
-     const uint32_t*                             pQueueFamilyIndices;
- } VkBufferCreateInfo;
- 
-@@ -1444,7 +1477,7 @@ typedef struct {
-     VkImageUsageFlags                           usage;
-     VkImageCreateFlags                          flags;
-     VkSharingMode                               sharingMode;
--    uint32_t                                    queueFamilyCount;
-+    uint32_t                                    queueFamilyIndexCount;
-     const uint32_t*                             pQueueFamilyIndices;
-     VkImageLayout                               initialLayout;
- } VkImageCreateInfo;
-@@ -1543,9 +1576,9 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
--    uint32_t                                    bindingCount;
-+    uint32_t                                    vertexBindingDescriptionCount;
-     const VkVertexInputBindingDescription*      pVertexBindingDescriptions;
--    uint32_t                                    attributeCount;
-+    uint32_t                                    vertexAttributeDescriptionCount;
-     const VkVertexInputAttributeDescription*    pVertexAttributeDescriptions;
- } VkPipelineVertexInputStateCreateInfo;
- 
-@@ -1707,14 +1740,14 @@ typedef struct {
- 
- typedef struct {
-     VkShaderStageFlags                          stageFlags;
--    uint32_t                                    start;
--    uint32_t                                    length;
-+    uint32_t                                    offset;
-+    uint32_t                                    size;
- } VkPushConstantRange;
- 
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
--    uint32_t                                    descriptorSetCount;
-+    uint32_t                                    setLayoutCount;
-     const VkDescriptorSetLayout*                pSetLayouts;
-     uint32_t                                    pushConstantRangeCount;
-     const VkPushConstantRange*                  pPushConstantRanges;
-@@ -1749,13 +1782,13 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
--    uint32_t                                    count;
--    const VkDescriptorSetLayoutBinding*         pBinding;
-+    uint32_t                                    bindingCount;
-+    const VkDescriptorSetLayoutBinding*         pBindings;
- } VkDescriptorSetLayoutCreateInfo;
- 
- typedef struct {
-     VkDescriptorType                            type;
--    uint32_t                                    count;
-+    uint32_t                                    descriptorCount;
- } VkDescriptorTypeCount;
- 
- typedef struct {
-@@ -1763,15 +1796,15 @@ typedef struct {
-     const void*                                 pNext;
-     VkDescriptorPoolCreateFlags                 flags;
-     uint32_t                                    maxSets;
--    uint32_t                                    count;
--    const VkDescriptorTypeCount*                pTypeCount;
-+    uint32_t                                    typeCount;
-+    const VkDescriptorTypeCount*                pTypeCounts;
- } VkDescriptorPoolCreateInfo;
- 
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkDescriptorPool                            descriptorPool;
--    uint32_t                                    count;
-+    uint32_t                                    setLayoutCount;
-     const VkDescriptorSetLayout*                pSetLayouts;
- } VkDescriptorSetAllocInfo;
- 
-@@ -1793,7 +1826,7 @@ typedef struct {
-     VkDescriptorSet                             destSet;
-     uint32_t                                    destBinding;
-     uint32_t                                    destArrayElement;
--    uint32_t                                    count;
-+    uint32_t                                    descriptorCount;
-     VkDescriptorType                            descriptorType;
-     const VkDescriptorImageInfo*                pImageInfo;
-     const VkDescriptorBufferInfo*               pBufferInfo;
-@@ -1809,7 +1842,7 @@ typedef struct {
-     VkDescriptorSet                             destSet;
-     uint32_t                                    destBinding;
-     uint32_t                                    destArrayElement;
--    uint32_t                                    count;
-+    uint32_t                                    descriptorCount;
- } VkCopyDescriptorSet;
- 
- typedef struct {
-@@ -1847,13 +1880,13 @@ typedef struct {
-     const void*                                 pNext;
-     VkPipelineBindPoint                         pipelineBindPoint;
-     VkSubpassDescriptionFlags                   flags;
--    uint32_t                                    inputCount;
-+    uint32_t                                    inputAttachmentCount;
-     const VkAttachmentReference*                pInputAttachments;
--    uint32_t                                    colorCount;
-+    uint32_t                                    colorAttachmentCount;
-     const VkAttachmentReference*                pColorAttachments;
-     const VkAttachmentReference*                pResolveAttachments;
-     VkAttachmentReference                       depthStencilAttachment;
--    uint32_t                                    preserveCount;
-+    uint32_t                                    preserveAttachmentCount;
-     const VkAttachmentReference*                pPreserveAttachments;
- } VkSubpassDescription;
- 
-@@ -1892,7 +1925,7 @@ typedef struct {
-     const void*                                 pNext;
-     VkCmdPool                                   cmdPool;
-     VkCmdBufferLevel                            level;
--    uint32_t                                    count;
-+    uint32_t                                    bufferCount;
- } VkCmdBufferAllocInfo;
- 
- typedef struct {
-@@ -2043,29 +2076,29 @@ typedef struct {
- } VkMemoryBarrier;
- 
- 
--typedef VkResult (VKAPI *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, VkInstance* pInstance);
--typedef void (VKAPI *PFN_vkDestroyInstance)(VkInstance instance);
-+typedef VkResult (VKAPI *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkInstance* pInstance);
-+typedef void (VKAPI *PFN_vkDestroyInstance)(VkInstance instance, const VkAllocCallbacks* pAllocator);
- typedef VkResult (VKAPI *PFN_vkEnumeratePhysicalDevices)(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);
- typedef void (VKAPI *PFN_vkGetPhysicalDeviceFeatures)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures);
- typedef void (VKAPI *PFN_vkGetPhysicalDeviceFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties);
- typedef void (VKAPI *PFN_vkGetPhysicalDeviceImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties);
- typedef void (VKAPI *PFN_vkGetPhysicalDeviceProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties);
--typedef void (VKAPI *PFN_vkGetPhysicalDeviceQueueFamilyProperties)(VkPhysicalDevice physicalDevice, uint32_t* pCount, VkQueueFamilyProperties* pQueueFamilyProperties);
-+typedef void (VKAPI *PFN_vkGetPhysicalDeviceQueueFamilyProperties)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties);
- typedef void (VKAPI *PFN_vkGetPhysicalDeviceMemoryProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties);
- typedef PFN_vkVoidFunction (VKAPI *PFN_vkGetInstanceProcAddr)(VkInstance instance, const char* pName);
- typedef PFN_vkVoidFunction (VKAPI *PFN_vkGetDeviceProcAddr)(VkDevice device, const char* pName);
--typedef VkResult (VKAPI *PFN_vkCreateDevice)(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, VkDevice* pDevice);
--typedef void (VKAPI *PFN_vkDestroyDevice)(VkDevice device);
--typedef VkResult (VKAPI *PFN_vkEnumerateInstanceExtensionProperties)(const char* pLayerName, uint32_t* pCount, VkExtensionProperties* pProperties);
--typedef VkResult (VKAPI *PFN_vkEnumerateDeviceExtensionProperties)(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pCount, VkExtensionProperties* pProperties);
--typedef VkResult (VKAPI *PFN_vkEnumerateInstanceLayerProperties)(uint32_t* pCount, VkLayerProperties* pProperties);
--typedef VkResult (VKAPI *PFN_vkEnumerateDeviceLayerProperties)(VkPhysicalDevice physicalDevice, uint32_t* pCount, VkLayerProperties* pProperties);
-+typedef VkResult (VKAPI *PFN_vkCreateDevice)(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkDevice* pDevice);
-+typedef void (VKAPI *PFN_vkDestroyDevice)(VkDevice device, const VkAllocCallbacks* pAllocator);
-+typedef VkResult (VKAPI *PFN_vkEnumerateInstanceExtensionProperties)(const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties);
-+typedef VkResult (VKAPI *PFN_vkEnumerateDeviceExtensionProperties)(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties);
-+typedef VkResult (VKAPI *PFN_vkEnumerateInstanceLayerProperties)(uint32_t* pPropertyCount, VkLayerProperties* pProperties);
-+typedef VkResult (VKAPI *PFN_vkEnumerateDeviceLayerProperties)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkLayerProperties* pProperties);
- typedef void (VKAPI *PFN_vkGetDeviceQueue)(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue);
- typedef VkResult (VKAPI *PFN_vkQueueSubmit)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmitInfo, VkFence fence);
- typedef VkResult (VKAPI *PFN_vkQueueWaitIdle)(VkQueue queue);
- typedef VkResult (VKAPI *PFN_vkDeviceWaitIdle)(VkDevice device);
--typedef VkResult (VKAPI *PFN_vkAllocMemory)(VkDevice device, const VkMemoryAllocInfo* pAllocInfo, VkDeviceMemory* pMem);
--typedef void (VKAPI *PFN_vkFreeMemory)(VkDevice device, VkDeviceMemory mem);
-+typedef VkResult (VKAPI *PFN_vkAllocMemory)(VkDevice device, const VkMemoryAllocInfo* pAllocInfo, const VkAllocCallbacks* pAllocator, VkDeviceMemory* pMem);
-+typedef void (VKAPI *PFN_vkFreeMemory)(VkDevice device, VkDeviceMemory mem, const VkAllocCallbacks* pAllocator);
- typedef VkResult (VKAPI *PFN_vkMapMemory)(VkDevice device, VkDeviceMemory mem, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData);
- typedef void (VKAPI *PFN_vkUnmapMemory)(VkDevice device, VkDeviceMemory mem);
- typedef VkResult (VKAPI *PFN_vkFlushMappedMemoryRanges)(VkDevice device, uint32_t memRangeCount, const VkMappedMemoryRange* pMemRanges);
-@@ -2075,68 +2108,68 @@ typedef VkResult (VKAPI *PFN_vkBindBufferMemory)(VkDevice device, VkBuffer buffe
- typedef VkResult (VKAPI *PFN_vkBindImageMemory)(VkDevice device, VkImage image, VkDeviceMemory mem, VkDeviceSize memOffset);
- typedef void (VKAPI *PFN_vkGetBufferMemoryRequirements)(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements);
- typedef void (VKAPI *PFN_vkGetImageMemoryRequirements)(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements);
--typedef void (VKAPI *PFN_vkGetImageSparseMemoryRequirements)(VkDevice device, VkImage image, uint32_t* pNumRequirements, VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
--typedef void (VKAPI *PFN_vkGetPhysicalDeviceSparseImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, uint32_t samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pNumProperties, VkSparseImageFormatProperties* pProperties);
--typedef VkResult (VKAPI *PFN_vkQueueBindSparseBufferMemory)(VkQueue queue, VkBuffer buffer, uint32_t numBindings, const VkSparseMemoryBindInfo* pBindInfo);
--typedef VkResult (VKAPI *PFN_vkQueueBindSparseImageOpaqueMemory)(VkQueue queue, VkImage image, uint32_t numBindings, const VkSparseMemoryBindInfo* pBindInfo);
--typedef VkResult (VKAPI *PFN_vkQueueBindSparseImageMemory)(VkQueue queue, VkImage image, uint32_t numBindings, const VkSparseImageMemoryBindInfo* pBindInfo);
--typedef VkResult (VKAPI *PFN_vkCreateFence)(VkDevice device, const VkFenceCreateInfo* pCreateInfo, VkFence* pFence);
--typedef void (VKAPI *PFN_vkDestroyFence)(VkDevice device, VkFence fence);
-+typedef void (VKAPI *PFN_vkGetImageSparseMemoryRequirements)(VkDevice device, VkImage image, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
-+typedef void (VKAPI *PFN_vkGetPhysicalDeviceSparseImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, uint32_t samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties);
-+typedef VkResult (VKAPI *PFN_vkQueueBindSparseBufferMemory)(VkQueue queue, VkBuffer buffer, uint32_t bindInfoCount, const VkSparseMemoryBindInfo* pBindInfo);
-+typedef VkResult (VKAPI *PFN_vkQueueBindSparseImageOpaqueMemory)(VkQueue queue, VkImage image, uint32_t bindInfoCount, const VkSparseMemoryBindInfo* pBindInfo);
-+typedef VkResult (VKAPI *PFN_vkQueueBindSparseImageMemory)(VkQueue queue, VkImage image, uint32_t bindInfoCount, const VkSparseImageMemoryBindInfo* pBindInfo);
-+typedef VkResult (VKAPI *PFN_vkCreateFence)(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkFence* pFence);
-+typedef void (VKAPI *PFN_vkDestroyFence)(VkDevice device, VkFence fence, const VkAllocCallbacks* pAllocator);
- typedef VkResult (VKAPI *PFN_vkResetFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences);
- typedef VkResult (VKAPI *PFN_vkGetFenceStatus)(VkDevice device, VkFence fence);
- typedef VkResult (VKAPI *PFN_vkWaitForFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout);
--typedef VkResult (VKAPI *PFN_vkCreateSemaphore)(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, VkSemaphore* pSemaphore);
--typedef void (VKAPI *PFN_vkDestroySemaphore)(VkDevice device, VkSemaphore semaphore);
--typedef VkResult (VKAPI *PFN_vkCreateEvent)(VkDevice device, const VkEventCreateInfo* pCreateInfo, VkEvent* pEvent);
--typedef void (VKAPI *PFN_vkDestroyEvent)(VkDevice device, VkEvent event);
-+typedef VkResult (VKAPI *PFN_vkCreateSemaphore)(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkSemaphore* pSemaphore);
-+typedef void (VKAPI *PFN_vkDestroySemaphore)(VkDevice device, VkSemaphore semaphore, const VkAllocCallbacks* pAllocator);
-+typedef VkResult (VKAPI *PFN_vkCreateEvent)(VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkEvent* pEvent);
-+typedef void (VKAPI *PFN_vkDestroyEvent)(VkDevice device, VkEvent event, const VkAllocCallbacks* pAllocator);
- typedef VkResult (VKAPI *PFN_vkGetEventStatus)(VkDevice device, VkEvent event);
- typedef VkResult (VKAPI *PFN_vkSetEvent)(VkDevice device, VkEvent event);
- typedef VkResult (VKAPI *PFN_vkResetEvent)(VkDevice device, VkEvent event);
--typedef VkResult (VKAPI *PFN_vkCreateQueryPool)(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, VkQueryPool* pQueryPool);
--typedef void (VKAPI *PFN_vkDestroyQueryPool)(VkDevice device, VkQueryPool queryPool);
-+typedef VkResult (VKAPI *PFN_vkCreateQueryPool)(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkQueryPool* pQueryPool);
-+typedef void (VKAPI *PFN_vkDestroyQueryPool)(VkDevice device, VkQueryPool queryPool, const VkAllocCallbacks* pAllocator);
- typedef VkResult (VKAPI *PFN_vkGetQueryPoolResults)(VkDevice device, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, size_t dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags);
--typedef VkResult (VKAPI *PFN_vkCreateBuffer)(VkDevice device, const VkBufferCreateInfo* pCreateInfo, VkBuffer* pBuffer);
--typedef void (VKAPI *PFN_vkDestroyBuffer)(VkDevice device, VkBuffer buffer);
--typedef VkResult (VKAPI *PFN_vkCreateBufferView)(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, VkBufferView* pView);
--typedef void (VKAPI *PFN_vkDestroyBufferView)(VkDevice device, VkBufferView bufferView);
--typedef VkResult (VKAPI *PFN_vkCreateImage)(VkDevice device, const VkImageCreateInfo* pCreateInfo, VkImage* pImage);
--typedef void (VKAPI *PFN_vkDestroyImage)(VkDevice device, VkImage image);
-+typedef VkResult (VKAPI *PFN_vkCreateBuffer)(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkBuffer* pBuffer);
-+typedef void (VKAPI *PFN_vkDestroyBuffer)(VkDevice device, VkBuffer buffer, const VkAllocCallbacks* pAllocator);
-+typedef VkResult (VKAPI *PFN_vkCreateBufferView)(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkBufferView* pView);
-+typedef void (VKAPI *PFN_vkDestroyBufferView)(VkDevice device, VkBufferView bufferView, const VkAllocCallbacks* pAllocator);
-+typedef VkResult (VKAPI *PFN_vkCreateImage)(VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkImage* pImage);
-+typedef void (VKAPI *PFN_vkDestroyImage)(VkDevice device, VkImage image, const VkAllocCallbacks* pAllocator);
- typedef void (VKAPI *PFN_vkGetImageSubresourceLayout)(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout);
--typedef VkResult (VKAPI *PFN_vkCreateImageView)(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, VkImageView* pView);
--typedef void (VKAPI *PFN_vkDestroyImageView)(VkDevice device, VkImageView imageView);
--typedef VkResult (VKAPI *PFN_vkCreateShaderModule)(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, VkShaderModule* pShaderModule);
--typedef void (VKAPI *PFN_vkDestroyShaderModule)(VkDevice device, VkShaderModule shaderModule);
--typedef VkResult (VKAPI *PFN_vkCreateShader)(VkDevice device, const VkShaderCreateInfo* pCreateInfo, VkShader* pShader);
--typedef void (VKAPI *PFN_vkDestroyShader)(VkDevice device, VkShader shader);
--typedef VkResult (VKAPI *PFN_vkCreatePipelineCache)(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, VkPipelineCache* pPipelineCache);
--typedef void (VKAPI *PFN_vkDestroyPipelineCache)(VkDevice device, VkPipelineCache pipelineCache);
-+typedef VkResult (VKAPI *PFN_vkCreateImageView)(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkImageView* pView);
-+typedef void (VKAPI *PFN_vkDestroyImageView)(VkDevice device, VkImageView imageView, const VkAllocCallbacks* pAllocator);
-+typedef VkResult (VKAPI *PFN_vkCreateShaderModule)(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkShaderModule* pShaderModule);
-+typedef void (VKAPI *PFN_vkDestroyShaderModule)(VkDevice device, VkShaderModule shaderModule, const VkAllocCallbacks* pAllocator);
-+typedef VkResult (VKAPI *PFN_vkCreateShader)(VkDevice device, const VkShaderCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkShader* pShader);
-+typedef void (VKAPI *PFN_vkDestroyShader)(VkDevice device, VkShader shader, const VkAllocCallbacks* pAllocator);
-+typedef VkResult (VKAPI *PFN_vkCreatePipelineCache)(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkPipelineCache* pPipelineCache);
-+typedef void (VKAPI *PFN_vkDestroyPipelineCache)(VkDevice device, VkPipelineCache pipelineCache, const VkAllocCallbacks* pAllocator);
- typedef VkResult (VKAPI *PFN_vkGetPipelineCacheData)(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData);
- typedef VkResult (VKAPI *PFN_vkMergePipelineCaches)(VkDevice device, VkPipelineCache destCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches);
--typedef VkResult (VKAPI *PFN_vkCreateGraphicsPipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t count, const VkGraphicsPipelineCreateInfo* pCreateInfos, VkPipeline* pPipelines);
--typedef VkResult (VKAPI *PFN_vkCreateComputePipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t count, const VkComputePipelineCreateInfo* pCreateInfos, VkPipeline* pPipelines);
--typedef void (VKAPI *PFN_vkDestroyPipeline)(VkDevice device, VkPipeline pipeline);
--typedef VkResult (VKAPI *PFN_vkCreatePipelineLayout)(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, VkPipelineLayout* pPipelineLayout);
--typedef void (VKAPI *PFN_vkDestroyPipelineLayout)(VkDevice device, VkPipelineLayout pipelineLayout);
--typedef VkResult (VKAPI *PFN_vkCreateSampler)(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, VkSampler* pSampler);
--typedef void (VKAPI *PFN_vkDestroySampler)(VkDevice device, VkSampler sampler);
--typedef VkResult (VKAPI *PFN_vkCreateDescriptorSetLayout)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayout* pSetLayout);
--typedef void (VKAPI *PFN_vkDestroyDescriptorSetLayout)(VkDevice device, VkDescriptorSetLayout descriptorSetLayout);
--typedef VkResult (VKAPI *PFN_vkCreateDescriptorPool)(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool);
--typedef void (VKAPI *PFN_vkDestroyDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool);
-+typedef VkResult (VKAPI *PFN_vkCreateGraphicsPipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocCallbacks* pAllocator, VkPipeline* pPipelines);
-+typedef VkResult (VKAPI *PFN_vkCreateComputePipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocCallbacks* pAllocator, VkPipeline* pPipelines);
-+typedef void (VKAPI *PFN_vkDestroyPipeline)(VkDevice device, VkPipeline pipeline, const VkAllocCallbacks* pAllocator);
-+typedef VkResult (VKAPI *PFN_vkCreatePipelineLayout)(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout);
-+typedef void (VKAPI *PFN_vkDestroyPipelineLayout)(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocCallbacks* pAllocator);
-+typedef VkResult (VKAPI *PFN_vkCreateSampler)(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkSampler* pSampler);
-+typedef void (VKAPI *PFN_vkDestroySampler)(VkDevice device, VkSampler sampler, const VkAllocCallbacks* pAllocator);
-+typedef VkResult (VKAPI *PFN_vkCreateDescriptorSetLayout)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout);
-+typedef void (VKAPI *PFN_vkDestroyDescriptorSetLayout)(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocCallbacks* pAllocator);
-+typedef VkResult (VKAPI *PFN_vkCreateDescriptorPool)(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool);
-+typedef void (VKAPI *PFN_vkDestroyDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocCallbacks* pAllocator);
- typedef VkResult (VKAPI *PFN_vkResetDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags);
- typedef VkResult (VKAPI *PFN_vkAllocDescriptorSets)(VkDevice device, const VkDescriptorSetAllocInfo* pAllocInfo, VkDescriptorSet* pDescriptorSets);
--typedef VkResult (VKAPI *PFN_vkFreeDescriptorSets)(VkDevice device, VkDescriptorPool descriptorPool, uint32_t count, const VkDescriptorSet* pDescriptorSets);
-+typedef VkResult (VKAPI *PFN_vkFreeDescriptorSets)(VkDevice device, VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets);
- typedef void (VKAPI *PFN_vkUpdateDescriptorSets)(VkDevice device, uint32_t writeCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t copyCount, const VkCopyDescriptorSet* pDescriptorCopies);
--typedef VkResult (VKAPI *PFN_vkCreateFramebuffer)(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, VkFramebuffer* pFramebuffer);
--typedef void (VKAPI *PFN_vkDestroyFramebuffer)(VkDevice device, VkFramebuffer framebuffer);
--typedef VkResult (VKAPI *PFN_vkCreateRenderPass)(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, VkRenderPass* pRenderPass);
--typedef void (VKAPI *PFN_vkDestroyRenderPass)(VkDevice device, VkRenderPass renderPass);
-+typedef VkResult (VKAPI *PFN_vkCreateFramebuffer)(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkFramebuffer* pFramebuffer);
-+typedef void (VKAPI *PFN_vkDestroyFramebuffer)(VkDevice device, VkFramebuffer framebuffer, const VkAllocCallbacks* pAllocator);
-+typedef VkResult (VKAPI *PFN_vkCreateRenderPass)(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkRenderPass* pRenderPass);
-+typedef void (VKAPI *PFN_vkDestroyRenderPass)(VkDevice device, VkRenderPass renderPass, const VkAllocCallbacks* pAllocator);
- typedef void (VKAPI *PFN_vkGetRenderAreaGranularity)(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity);
--typedef VkResult (VKAPI *PFN_vkCreateCommandPool)(VkDevice device, const VkCmdPoolCreateInfo* pCreateInfo, VkCmdPool* pCmdPool);
--typedef void (VKAPI *PFN_vkDestroyCommandPool)(VkDevice device, VkCmdPool cmdPool);
-+typedef VkResult (VKAPI *PFN_vkCreateCommandPool)(VkDevice device, const VkCmdPoolCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkCmdPool* pCmdPool);
-+typedef void (VKAPI *PFN_vkDestroyCommandPool)(VkDevice device, VkCmdPool cmdPool, const VkAllocCallbacks* pAllocator);
- typedef VkResult (VKAPI *PFN_vkResetCommandPool)(VkDevice device, VkCmdPool cmdPool, VkCmdPoolResetFlags flags);
- typedef VkResult (VKAPI *PFN_vkAllocCommandBuffers)(VkDevice device, const VkCmdBufferAllocInfo* pAllocInfo, VkCmdBuffer* pCmdBuffers);
--typedef void (VKAPI *PFN_vkFreeCommandBuffers)(VkDevice device, VkCmdPool cmdPool, uint32_t count, const VkCmdBuffer* pCommandBuffers);
-+typedef void (VKAPI *PFN_vkFreeCommandBuffers)(VkDevice device, VkCmdPool cmdPool, uint32_t commandBufferCount, const VkCmdBuffer* pCommandBuffers);
- typedef VkResult (VKAPI *PFN_vkBeginCommandBuffer)(VkCmdBuffer cmdBuffer, const VkCmdBufferBeginInfo* pBeginInfo);
- typedef VkResult (VKAPI *PFN_vkEndCommandBuffer)(VkCmdBuffer cmdBuffer);
- typedef VkResult (VKAPI *PFN_vkResetCommandBuffer)(VkCmdBuffer cmdBuffer, VkCmdBufferResetFlags flags);
-@@ -2150,13 +2183,13 @@ typedef void (VKAPI *PFN_vkCmdSetDepthBounds)(VkCmdBuffer cmdBuffer, float minDe
- typedef void (VKAPI *PFN_vkCmdSetStencilCompareMask)(VkCmdBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilCompareMask);
- typedef void (VKAPI *PFN_vkCmdSetStencilWriteMask)(VkCmdBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilWriteMask);
- typedef void (VKAPI *PFN_vkCmdSetStencilReference)(VkCmdBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilReference);
--typedef void (VKAPI *PFN_vkCmdBindDescriptorSets)(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t setCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets);
-+typedef void (VKAPI *PFN_vkCmdBindDescriptorSets)(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets);
- typedef void (VKAPI *PFN_vkCmdBindIndexBuffer)(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType);
- typedef void (VKAPI *PFN_vkCmdBindVertexBuffers)(VkCmdBuffer cmdBuffer, uint32_t startBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets);
- typedef void (VKAPI *PFN_vkCmdDraw)(VkCmdBuffer cmdBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance);
- typedef void (VKAPI *PFN_vkCmdDrawIndexed)(VkCmdBuffer cmdBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance);
--typedef void (VKAPI *PFN_vkCmdDrawIndirect)(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count, uint32_t stride);
--typedef void (VKAPI *PFN_vkCmdDrawIndexedIndirect)(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count, uint32_t stride);
-+typedef void (VKAPI *PFN_vkCmdDrawIndirect)(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
-+typedef void (VKAPI *PFN_vkCmdDrawIndexedIndirect)(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
- typedef void (VKAPI *PFN_vkCmdDispatch)(VkCmdBuffer cmdBuffer, uint32_t x, uint32_t y, uint32_t z);
- typedef void (VKAPI *PFN_vkCmdDispatchIndirect)(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset);
- typedef void (VKAPI *PFN_vkCmdCopyBuffer)(VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkBuffer destBuffer, uint32_t regionCount, const VkBufferCopy* pRegions);
-@@ -2179,7 +2212,7 @@ typedef void (VKAPI *PFN_vkCmdEndQuery)(VkCmdBuffer cmdBuffer, VkQueryPool query
- typedef void (VKAPI *PFN_vkCmdResetQueryPool)(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount);
- typedef void (VKAPI *PFN_vkCmdWriteTimestamp)(VkCmdBuffer cmdBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t slot);
- typedef void (VKAPI *PFN_vkCmdCopyQueryPoolResults)(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize stride, VkQueryResultFlags flags);
--typedef void (VKAPI *PFN_vkCmdPushConstants)(VkCmdBuffer cmdBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t start, uint32_t length, const void* values);
-+typedef void (VKAPI *PFN_vkCmdPushConstants)(VkCmdBuffer cmdBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* values);
- typedef void (VKAPI *PFN_vkCmdBeginRenderPass)(VkCmdBuffer cmdBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkRenderPassContents contents);
- typedef void (VKAPI *PFN_vkCmdNextSubpass)(VkCmdBuffer cmdBuffer, VkRenderPassContents contents);
- typedef void (VKAPI *PFN_vkCmdEndRenderPass)(VkCmdBuffer cmdBuffer);
-@@ -2188,10 +2221,12 @@ typedef void (VKAPI *PFN_vkCmdExecuteCommands)(VkCmdBuffer cmdBuffer, uint32_t c
- #ifdef VK_PROTOTYPES
- VkResult VKAPI vkCreateInstance(
-     const VkInstanceCreateInfo*                 pCreateInfo,
-+    const VkAllocCallbacks*                     pAllocator,
-     VkInstance*                                 pInstance);
- 
- void VKAPI vkDestroyInstance(
--    VkInstance                                  instance);
-+    VkInstance                                  instance,
-+    const VkAllocCallbacks*                     pAllocator);
- 
- VkResult VKAPI vkEnumeratePhysicalDevices(
-     VkInstance                                  instance,
-@@ -2222,7 +2257,7 @@ void VKAPI vkGetPhysicalDeviceProperties(
- 
- void VKAPI vkGetPhysicalDeviceQueueFamilyProperties(
-     VkPhysicalDevice                            physicalDevice,
--    uint32_t*                                   pCount,
-+    uint32_t*                                   pQueueFamilyPropertyCount,
-     VkQueueFamilyProperties*                    pQueueFamilyProperties);
- 
- void VKAPI vkGetPhysicalDeviceMemoryProperties(
-@@ -2240,29 +2275,31 @@ PFN_vkVoidFunction VKAPI vkGetDeviceProcAddr(
- VkResult VKAPI vkCreateDevice(
-     VkPhysicalDevice                            physicalDevice,
-     const VkDeviceCreateInfo*                   pCreateInfo,
-+    const VkAllocCallbacks*                     pAllocator,
-     VkDevice*                                   pDevice);
- 
- void VKAPI vkDestroyDevice(
--    VkDevice                                    device);
-+    VkDevice                                    device,
-+    const VkAllocCallbacks*                     pAllocator);
- 
- VkResult VKAPI vkEnumerateInstanceExtensionProperties(
-     const char*                                 pLayerName,
--    uint32_t*                                   pCount,
-+    uint32_t*                                   pPropertyCount,
-     VkExtensionProperties*                      pProperties);
- 
- VkResult VKAPI vkEnumerateDeviceExtensionProperties(
-     VkPhysicalDevice                            physicalDevice,
-     const char*                                 pLayerName,
--    uint32_t*                                   pCount,
-+    uint32_t*                                   pPropertyCount,
-     VkExtensionProperties*                      pProperties);
- 
- VkResult VKAPI vkEnumerateInstanceLayerProperties(
--    uint32_t*                                   pCount,
-+    uint32_t*                                   pPropertyCount,
-     VkLayerProperties*                          pProperties);
- 
- VkResult VKAPI vkEnumerateDeviceLayerProperties(
-     VkPhysicalDevice                            physicalDevice,
--    uint32_t*                                   pCount,
-+    uint32_t*                                   pPropertyCount,
-     VkLayerProperties*                          pProperties);
- 
- void VKAPI vkGetDeviceQueue(
-@@ -2286,11 +2323,13 @@ VkResult VKAPI vkDeviceWaitIdle(
- VkResult VKAPI vkAllocMemory(
-     VkDevice                                    device,
-     const VkMemoryAllocInfo*                    pAllocInfo,
-+    const VkAllocCallbacks*                     pAllocator,
-     VkDeviceMemory*                             pMem);
- 
- void VKAPI vkFreeMemory(
-     VkDevice                                    device,
--    VkDeviceMemory                              mem);
-+    VkDeviceMemory                              mem,
-+    const VkAllocCallbacks*                     pAllocator);
- 
- VkResult VKAPI vkMapMemory(
-     VkDevice                                    device,
-@@ -2344,7 +2383,7 @@ void VKAPI vkGetImageMemoryRequirements(
- void VKAPI vkGetImageSparseMemoryRequirements(
-     VkDevice                                    device,
-     VkImage                                     image,
--    uint32_t*                                   pNumRequirements,
-+    uint32_t*                                   pSparseMemoryRequirementCount,
-     VkSparseImageMemoryRequirements*            pSparseMemoryRequirements);
- 
- void VKAPI vkGetPhysicalDeviceSparseImageFormatProperties(
-@@ -2354,35 +2393,37 @@ void VKAPI vkGetPhysicalDeviceSparseImageFormatProperties(
-     uint32_t                                    samples,
-     VkImageUsageFlags                           usage,
-     VkImageTiling                               tiling,
--    uint32_t*                                   pNumProperties,
-+    uint32_t*                                   pPropertyCount,
-     VkSparseImageFormatProperties*              pProperties);
- 
- VkResult VKAPI vkQueueBindSparseBufferMemory(
-     VkQueue                                     queue,
-     VkBuffer                                    buffer,
--    uint32_t                                    numBindings,
-+    uint32_t                                    bindInfoCount,
-     const VkSparseMemoryBindInfo*               pBindInfo);
- 
- VkResult VKAPI vkQueueBindSparseImageOpaqueMemory(
-     VkQueue                                     queue,
-     VkImage                                     image,
--    uint32_t                                    numBindings,
-+    uint32_t                                    bindInfoCount,
-     const VkSparseMemoryBindInfo*               pBindInfo);
- 
- VkResult VKAPI vkQueueBindSparseImageMemory(
-     VkQueue                                     queue,
-     VkImage                                     image,
--    uint32_t                                    numBindings,
-+    uint32_t                                    bindInfoCount,
-     const VkSparseImageMemoryBindInfo*          pBindInfo);
- 
- VkResult VKAPI vkCreateFence(
-     VkDevice                                    device,
-     const VkFenceCreateInfo*                    pCreateInfo,
-+    const VkAllocCallbacks*                     pAllocator,
-     VkFence*                                    pFence);
- 
- void VKAPI vkDestroyFence(
-     VkDevice                                    device,
--    VkFence                                     fence);
-+    VkFence                                     fence,
-+    const VkAllocCallbacks*                     pAllocator);
- 
- VkResult VKAPI vkResetFences(
-     VkDevice                                    device,
-@@ -2403,20 +2444,24 @@ VkResult VKAPI vkWaitForFences(
- VkResult VKAPI vkCreateSemaphore(
-     VkDevice                                    device,
-     const VkSemaphoreCreateInfo*                pCreateInfo,
-+    const VkAllocCallbacks*                     pAllocator,
-     VkSemaphore*                                pSemaphore);
- 
- void VKAPI vkDestroySemaphore(
-     VkDevice                                    device,
--    VkSemaphore                                 semaphore);
-+    VkSemaphore                                 semaphore,
-+    const VkAllocCallbacks*                     pAllocator);
- 
- VkResult VKAPI vkCreateEvent(
-     VkDevice                                    device,
-     const VkEventCreateInfo*                    pCreateInfo,
-+    const VkAllocCallbacks*                     pAllocator,
-     VkEvent*                                    pEvent);
- 
- void VKAPI vkDestroyEvent(
-     VkDevice                                    device,
--    VkEvent                                     event);
-+    VkEvent                                     event,
-+    const VkAllocCallbacks*                     pAllocator);
- 
- VkResult VKAPI vkGetEventStatus(
-     VkDevice                                    device,
-@@ -2433,11 +2478,13 @@ VkResult VKAPI vkResetEvent(
- VkResult VKAPI vkCreateQueryPool(
-     VkDevice                                    device,
-     const VkQueryPoolCreateInfo*                pCreateInfo,
-+    const VkAllocCallbacks*                     pAllocator,
-     VkQueryPool*                                pQueryPool);
- 
- void VKAPI vkDestroyQueryPool(
-     VkDevice                                    device,
--    VkQueryPool                                 queryPool);
-+    VkQueryPool                                 queryPool,
-+    const VkAllocCallbacks*                     pAllocator);
- 
- VkResult VKAPI vkGetQueryPoolResults(
-     VkDevice                                    device,
-@@ -2452,29 +2499,35 @@ VkResult VKAPI vkGetQueryPoolResults(
- VkResult VKAPI vkCreateBuffer(
-     VkDevice                                    device,
-     const VkBufferCreateInfo*                   pCreateInfo,
-+    const VkAllocCallbacks*                     pAllocator,
-     VkBuffer*                                   pBuffer);
- 
- void VKAPI vkDestroyBuffer(
-     VkDevice                                    device,
--    VkBuffer                                    buffer);
-+    VkBuffer                                    buffer,
-+    const VkAllocCallbacks*                     pAllocator);
- 
- VkResult VKAPI vkCreateBufferView(
-     VkDevice                                    device,
-     const VkBufferViewCreateInfo*               pCreateInfo,
-+    const VkAllocCallbacks*                     pAllocator,
-     VkBufferView*                               pView);
- 
- void VKAPI vkDestroyBufferView(
-     VkDevice                                    device,
--    VkBufferView                                bufferView);
-+    VkBufferView                                bufferView,
-+    const VkAllocCallbacks*                     pAllocator);
- 
- VkResult VKAPI vkCreateImage(
-     VkDevice                                    device,
-     const VkImageCreateInfo*                    pCreateInfo,
-+    const VkAllocCallbacks*                     pAllocator,
-     VkImage*                                    pImage);
- 
- void VKAPI vkDestroyImage(
-     VkDevice                                    device,
--    VkImage                                     image);
-+    VkImage                                     image,
-+    const VkAllocCallbacks*                     pAllocator);
- 
- void VKAPI vkGetImageSubresourceLayout(
-     VkDevice                                    device,
-@@ -2485,38 +2538,46 @@ void VKAPI vkGetImageSubresourceLayout(
- VkResult VKAPI vkCreateImageView(
-     VkDevice                                    device,
-     const VkImageViewCreateInfo*                pCreateInfo,
-+    const VkAllocCallbacks*                     pAllocator,
-     VkImageView*                                pView);
- 
- void VKAPI vkDestroyImageView(
-     VkDevice                                    device,
--    VkImageView                                 imageView);
-+    VkImageView                                 imageView,
-+    const VkAllocCallbacks*                     pAllocator);
- 
- VkResult VKAPI vkCreateShaderModule(
-     VkDevice                                    device,
-     const VkShaderModuleCreateInfo*             pCreateInfo,
-+    const VkAllocCallbacks*                     pAllocator,
-     VkShaderModule*                             pShaderModule);
- 
- void VKAPI vkDestroyShaderModule(
-     VkDevice                                    device,
--    VkShaderModule                              shaderModule);
-+    VkShaderModule                              shaderModule,
-+    const VkAllocCallbacks*                     pAllocator);
- 
- VkResult VKAPI vkCreateShader(
-     VkDevice                                    device,
-     const VkShaderCreateInfo*                   pCreateInfo,
-+    const VkAllocCallbacks*                     pAllocator,
-     VkShader*                                   pShader);
- 
- void VKAPI vkDestroyShader(
-     VkDevice                                    device,
--    VkShader                                    shader);
-+    VkShader                                    shader,
-+    const VkAllocCallbacks*                     pAllocator);
- 
- VkResult VKAPI vkCreatePipelineCache(
-     VkDevice                                    device,
-     const VkPipelineCacheCreateInfo*            pCreateInfo,
-+    const VkAllocCallbacks*                     pAllocator,
-     VkPipelineCache*                            pPipelineCache);
- 
- void VKAPI vkDestroyPipelineCache(
-     VkDevice                                    device,
--    VkPipelineCache                             pipelineCache);
-+    VkPipelineCache                             pipelineCache,
-+    const VkAllocCallbacks*                     pAllocator);
- 
- VkResult VKAPI vkGetPipelineCacheData(
-     VkDevice                                    device,
-@@ -2533,56 +2594,67 @@ VkResult VKAPI vkMergePipelineCaches(
- VkResult VKAPI vkCreateGraphicsPipelines(
-     VkDevice                                    device,
-     VkPipelineCache                             pipelineCache,
--    uint32_t                                    count,
-+    uint32_t                                    createInfoCount,
-     const VkGraphicsPipelineCreateInfo*         pCreateInfos,
-+    const VkAllocCallbacks*                     pAllocator,
-     VkPipeline*                                 pPipelines);
- 
- VkResult VKAPI vkCreateComputePipelines(
-     VkDevice                                    device,
-     VkPipelineCache                             pipelineCache,
--    uint32_t                                    count,
-+    uint32_t                                    createInfoCount,
-     const VkComputePipelineCreateInfo*          pCreateInfos,
-+    const VkAllocCallbacks*                     pAllocator,
-     VkPipeline*                                 pPipelines);
- 
- void VKAPI vkDestroyPipeline(
-     VkDevice                                    device,
--    VkPipeline                                  pipeline);
-+    VkPipeline                                  pipeline,
-+    const VkAllocCallbacks*                     pAllocator);
- 
- VkResult VKAPI vkCreatePipelineLayout(
-     VkDevice                                    device,
-     const VkPipelineLayoutCreateInfo*           pCreateInfo,
-+    const VkAllocCallbacks*                     pAllocator,
-     VkPipelineLayout*                           pPipelineLayout);
- 
- void VKAPI vkDestroyPipelineLayout(
-     VkDevice                                    device,
--    VkPipelineLayout                            pipelineLayout);
-+    VkPipelineLayout                            pipelineLayout,
-+    const VkAllocCallbacks*                     pAllocator);
- 
- VkResult VKAPI vkCreateSampler(
-     VkDevice                                    device,
-     const VkSamplerCreateInfo*                  pCreateInfo,
-+    const VkAllocCallbacks*                     pAllocator,
-     VkSampler*                                  pSampler);
- 
- void VKAPI vkDestroySampler(
-     VkDevice                                    device,
--    VkSampler                                   sampler);
-+    VkSampler                                   sampler,
-+    const VkAllocCallbacks*                     pAllocator);
- 
- VkResult VKAPI vkCreateDescriptorSetLayout(
-     VkDevice                                    device,
-     const VkDescriptorSetLayoutCreateInfo*      pCreateInfo,
-+    const VkAllocCallbacks*                     pAllocator,
-     VkDescriptorSetLayout*                      pSetLayout);
- 
- void VKAPI vkDestroyDescriptorSetLayout(
-     VkDevice                                    device,
--    VkDescriptorSetLayout                       descriptorSetLayout);
-+    VkDescriptorSetLayout                       descriptorSetLayout,
-+    const VkAllocCallbacks*                     pAllocator);
- 
- VkResult VKAPI vkCreateDescriptorPool(
-     VkDevice                                    device,
-     const VkDescriptorPoolCreateInfo*           pCreateInfo,
-+    const VkAllocCallbacks*                     pAllocator,
-     VkDescriptorPool*                           pDescriptorPool);
- 
- void VKAPI vkDestroyDescriptorPool(
-     VkDevice                                    device,
--    VkDescriptorPool                            descriptorPool);
-+    VkDescriptorPool                            descriptorPool,
-+    const VkAllocCallbacks*                     pAllocator);
- 
- VkResult VKAPI vkResetDescriptorPool(
-     VkDevice                                    device,
-@@ -2597,7 +2669,7 @@ VkResult VKAPI vkAllocDescriptorSets(
- VkResult VKAPI vkFreeDescriptorSets(
-     VkDevice                                    device,
-     VkDescriptorPool                            descriptorPool,
--    uint32_t                                    count,
-+    uint32_t                                    descriptorSetCount,
-     const VkDescriptorSet*                      pDescriptorSets);
- 
- void VKAPI vkUpdateDescriptorSets(
-@@ -2610,20 +2682,24 @@ void VKAPI vkUpdateDescriptorSets(
- VkResult VKAPI vkCreateFramebuffer(
-     VkDevice                                    device,
-     const VkFramebufferCreateInfo*              pCreateInfo,
-+    const VkAllocCallbacks*                     pAllocator,
-     VkFramebuffer*                              pFramebuffer);
- 
- void VKAPI vkDestroyFramebuffer(
-     VkDevice                                    device,
--    VkFramebuffer                               framebuffer);
-+    VkFramebuffer                               framebuffer,
-+    const VkAllocCallbacks*                     pAllocator);
- 
- VkResult VKAPI vkCreateRenderPass(
-     VkDevice                                    device,
-     const VkRenderPassCreateInfo*               pCreateInfo,
-+    const VkAllocCallbacks*                     pAllocator,
-     VkRenderPass*                               pRenderPass);
- 
- void VKAPI vkDestroyRenderPass(
-     VkDevice                                    device,
--    VkRenderPass                                renderPass);
-+    VkRenderPass                                renderPass,
-+    const VkAllocCallbacks*                     pAllocator);
- 
- void VKAPI vkGetRenderAreaGranularity(
-     VkDevice                                    device,
-@@ -2633,11 +2709,13 @@ void VKAPI vkGetRenderAreaGranularity(
- VkResult VKAPI vkCreateCommandPool(
-     VkDevice                                    device,
-     const VkCmdPoolCreateInfo*                  pCreateInfo,
-+    const VkAllocCallbacks*                     pAllocator,
-     VkCmdPool*                                  pCmdPool);
- 
- void VKAPI vkDestroyCommandPool(
-     VkDevice                                    device,
--    VkCmdPool                                   cmdPool);
-+    VkCmdPool                                   cmdPool,
-+    const VkAllocCallbacks*                     pAllocator);
- 
- VkResult VKAPI vkResetCommandPool(
-     VkDevice                                    device,
-@@ -2652,7 +2730,7 @@ VkResult VKAPI vkAllocCommandBuffers(
- void VKAPI vkFreeCommandBuffers(
-     VkDevice                                    device,
-     VkCmdPool                                   cmdPool,
--    uint32_t                                    count,
-+    uint32_t                                    commandBufferCount,
-     const VkCmdBuffer*                          pCommandBuffers);
- 
- VkResult VKAPI vkBeginCommandBuffer(
-@@ -2720,7 +2798,7 @@ void VKAPI vkCmdBindDescriptorSets(
-     VkPipelineBindPoint                         pipelineBindPoint,
-     VkPipelineLayout                            layout,
-     uint32_t                                    firstSet,
--    uint32_t                                    setCount,
-+    uint32_t                                    descriptorSetCount,
-     const VkDescriptorSet*                      pDescriptorSets,
-     uint32_t                                    dynamicOffsetCount,
-     const uint32_t*                             pDynamicOffsets);
-@@ -2757,14 +2835,14 @@ void VKAPI vkCmdDrawIndirect(
-     VkCmdBuffer                                 cmdBuffer,
-     VkBuffer                                    buffer,
-     VkDeviceSize                                offset,
--    uint32_t                                    count,
-+    uint32_t                                    drawCount,
-     uint32_t                                    stride);
- 
- void VKAPI vkCmdDrawIndexedIndirect(
-     VkCmdBuffer                                 cmdBuffer,
-     VkBuffer                                    buffer,
-     VkDeviceSize                                offset,
--    uint32_t                                    count,
-+    uint32_t                                    drawCount,
-     uint32_t                                    stride);
- 
- void VKAPI vkCmdDispatch(
-@@ -2930,8 +3008,8 @@ void VKAPI vkCmdPushConstants(
-     VkCmdBuffer                                 cmdBuffer,
-     VkPipelineLayout                            layout,
-     VkShaderStageFlags                          stageFlags,
--    uint32_t                                    start,
--    uint32_t                                    length,
-+    uint32_t                                    offset,
-+    uint32_t                                    size,
-     const void*                                 values);
- 
- void VKAPI vkCmdBeginRenderPass(
-@@ -3014,9 +3092,10 @@ typedef enum {
-     VK_PRESENT_MODE_IMMEDIATE_KHR = 0,
-     VK_PRESENT_MODE_MAILBOX_KHR = 1,
-     VK_PRESENT_MODE_FIFO_KHR = 2,
-+    VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3,
-     VK_PRESENT_MODE_BEGIN_RANGE = VK_PRESENT_MODE_IMMEDIATE_KHR,
--    VK_PRESENT_MODE_END_RANGE = VK_PRESENT_MODE_FIFO_KHR,
--    VK_PRESENT_MODE_NUM = (VK_PRESENT_MODE_FIFO_KHR - VK_PRESENT_MODE_IMMEDIATE_KHR + 1),
-+    VK_PRESENT_MODE_END_RANGE = VK_PRESENT_MODE_FIFO_RELAXED_KHR,
-+    VK_PRESENT_MODE_NUM = (VK_PRESENT_MODE_FIFO_RELAXED_KHR - VK_PRESENT_MODE_IMMEDIATE_KHR + 1),
-     VK_PRESENT_MODE_MAX_ENUM = 0x7FFFFFFF
- } VkPresentModeKHR;
- 
-@@ -3063,7 +3142,7 @@ typedef struct {
-     VkSurfaceTransformKHR                       preTransform;
-     uint32_t                                    imageArraySize;
-     VkSharingMode                               sharingMode;
--    uint32_t                                    queueFamilyCount;
-+    uint32_t                                    queueFamilyIndexCount;
-     const uint32_t*                             pQueueFamilyIndices;
-     VkPresentModeKHR                            presentMode;
-     VkSwapchainKHR                              oldSwapchain;
-@@ -3074,17 +3153,17 @@ typedef struct {
-     VkStructureType                             sType;
-     const void*                                   pNext;
-     uint32_t                                    swapchainCount;
--    const VkSwapchainKHR*                       swapchains;
-+    const VkSwapchainKHR*                       pSwapchains;
-     const uint32_t*                             imageIndices;
- } VkPresentInfoKHR;
- 
- 
- typedef VkResult (VKAPI *PFN_vkGetSurfacePropertiesKHR)(VkDevice  device, VkSurfaceKHR  surface, VkSurfacePropertiesKHR*  pSurfaceProperties);
--typedef VkResult (VKAPI *PFN_vkGetSurfaceFormatsKHR)(VkDevice  device, VkSurfaceKHR  surface, uint32_t*  pCount, VkSurfaceFormatKHR*  pSurfaceFormats);
--typedef VkResult (VKAPI *PFN_vkGetSurfacePresentModesKHR)(VkDevice  device, VkSurfaceKHR  surface, uint32_t*  pCount, VkPresentModeKHR*  pPresentModes);
-+typedef VkResult (VKAPI *PFN_vkGetSurfaceFormatsKHR)(VkDevice  device, VkSurfaceKHR  surface, uint32_t*  pSurfaceFormatCount, VkSurfaceFormatKHR*  pSurfaceFormats);
-+typedef VkResult (VKAPI *PFN_vkGetSurfacePresentModesKHR)(VkDevice  device, VkSurfaceKHR  surface, uint32_t*  pPresentModeCount, VkPresentModeKHR*  pPresentModes);
- typedef VkResult (VKAPI *PFN_vkCreateSwapchainKHR)(VkDevice  device, const VkSwapchainCreateInfoKHR*  pCreateInfo, VkSwapchainKHR*  pSwapchain);
- typedef void (VKAPI *PFN_vkDestroySwapchainKHR)(VkDevice  device, VkSwapchainKHR  swapchain);
--typedef VkResult (VKAPI *PFN_vkGetSwapchainImagesKHR)(VkDevice  device, VkSwapchainKHR  swapchain, uint32_t*  pCount, VkImage*  pSwapchainImages);
-+typedef VkResult (VKAPI *PFN_vkGetSwapchainImagesKHR)(VkDevice  device, VkSwapchainKHR  swapchain, uint32_t*  pSwapchainImageCount, VkImage*  pSwapchainImages);
- typedef VkResult (VKAPI *PFN_vkAcquireNextImageKHR)(VkDevice  device, VkSwapchainKHR  swapchain, uint64_t  timeout, VkSemaphore  semaphore, VkFence  fence, uint32_t*  pImageIndex);
- typedef VkResult (VKAPI *PFN_vkQueuePresentKHR)(VkQueue  queue, VkPresentInfoKHR*  pPresentInfo);
- 
-@@ -3097,13 +3176,13 @@ VkResult VKAPI vkGetSurfacePropertiesKHR(
- VkResult VKAPI vkGetSurfaceFormatsKHR(
-     VkDevice                                     device,
-     VkSurfaceKHR                                 surface,
--    uint32_t*                                    pCount,
-+    uint32_t*                                    pSurfaceFormatCount,
-     VkSurfaceFormatKHR*                          pSurfaceFormats);
- 
- VkResult VKAPI vkGetSurfacePresentModesKHR(
-     VkDevice                                     device,
-     VkSurfaceKHR                                 surface,
--    uint32_t*                                    pCount,
-+    uint32_t*                                    pPresentModeCount,
-     VkPresentModeKHR*                            pPresentModes);
- 
- VkResult VKAPI vkCreateSwapchainKHR(
-@@ -3118,7 +3197,7 @@ void VKAPI vkDestroySwapchainKHR(
- VkResult VKAPI vkGetSwapchainImagesKHR(
-     VkDevice                                     device,
-     VkSwapchainKHR                               swapchain,
--    uint32_t*                                    pCount,
-+    uint32_t*                                    pSwapchainImageCount,
-     VkImage*                                     pSwapchainImages);
- 
- VkResult VKAPI vkAcquireNextImageKHR(
-@@ -3154,7 +3233,7 @@ typedef VkFlags VkDisplayPlaneAlphaFlagsKHR;
- 
- typedef struct {
-     VkDisplayKHR                                display;
--    const char*                                   displayName;
-+    const char*                                 displayName;
-     VkExtent2D                                  physicalDimensions;
-     VkExtent2D                                  physicalResolution;
-     VkSurfaceTransformFlagsKHR                  supportedTransforms;
-@@ -3213,22 +3292,22 @@ typedef struct {
- } VkSurfaceDescriptionDisplayPlaneKHR;
- 
- 
--typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pCount, VkDisplayPropertiesKHR* pProperties);
--typedef VkResult (VKAPI *PFN_vkGetDisplayModePropertiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pCount, VkDisplayModePropertiesKHR* pModeProperties);
-+typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPropertiesKHR* pProperties);
-+typedef VkResult (VKAPI *PFN_vkGetDisplayModePropertiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModePropertiesKHR* pProperties);
- typedef VkResult (VKAPI *PFN_vkCreateDisplayModeKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR*pCreateInfo, VkDisplayModeKHR* pMode);
- typedef VkResult (VKAPI *PFN_vkGetDisplayPlanePropertiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, VkDisplayModeKHR mode, uint32_t planeIndex, VkDisplayPlanePropertiesKHR* pProperties);
- 
- #ifdef VK_PROTOTYPES
- VkResult VKAPI vkGetPhysicalDeviceDisplayPropertiesKHR(
-     VkPhysicalDevice                            physicalDevice,
--    uint32_t*                                   pCount,
-+    uint32_t*                                   pPropertyCount,
-     VkDisplayPropertiesKHR*                     pProperties);
- 
- VkResult VKAPI vkGetDisplayModePropertiesKHR(
-     VkPhysicalDevice                            physicalDevice,
-     VkDisplayKHR                                display,
--    uint32_t*                                   pCount,
--    VkDisplayModePropertiesKHR*                 pModeProperties);
-+    uint32_t*                                   pPropertyCount,
-+    VkDisplayModePropertiesKHR*                 pProperties);
- 
- VkResult VKAPI vkCreateDisplayModeKHR(
-     VkPhysicalDevice                            physicalDevice,
-diff --git a/vulkan/libvulkan/entry.cpp b/vulkan/libvulkan/entry.cpp
-index 255ad97..7622e4d 100644
---- a/vulkan/libvulkan/entry.cpp
-+++ b/vulkan/libvulkan/entry.cpp
-@@ -42,13 +42,13 @@ namespace {
- } // namespace
- 
- __attribute__((visibility("default")))
--VkResult vkCreateInstance(const VkInstanceCreateInfo* pCreateInfo, VkInstance* pInstance) {
--    return vulkan::CreateInstance(pCreateInfo, pInstance);
-+VkResult vkCreateInstance(const VkInstanceCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkInstance* pInstance) {
-+    return vulkan::CreateInstance(pCreateInfo, pAllocator, pInstance);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyInstance(VkInstance instance) {
--    GetVtbl(instance).DestroyInstance(instance);
-+void vkDestroyInstance(VkInstance instance, const VkAllocCallbacks* pAllocator) {
-+    GetVtbl(instance).DestroyInstance(instance, pAllocator);
- }
- 
- __attribute__((visibility("default")))
-@@ -72,8 +72,8 @@ void vkGetPhysicalDeviceProperties(VkPhysicalDevice physicalDevice, VkPhysicalDe
- }
- 
- __attribute__((visibility("default")))
--void vkGetPhysicalDeviceQueueFamilyProperties(VkPhysicalDevice physicalDevice, uint32_t* pCount, VkQueueFamilyProperties* pQueueFamilyProperties) {
--    GetVtbl(physicalDevice).GetPhysicalDeviceQueueFamilyProperties(physicalDevice, pCount, pQueueFamilyProperties);
-+void vkGetPhysicalDeviceQueueFamilyProperties(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties) {
-+    GetVtbl(physicalDevice).GetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
- }
- 
- __attribute__((visibility("default")))
-@@ -97,33 +97,33 @@ void vkGetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice, V
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, VkDevice* pDevice) {
--    return GetVtbl(physicalDevice).CreateDevice(physicalDevice, pCreateInfo, pDevice);
-+VkResult vkCreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkDevice* pDevice) {
-+    return GetVtbl(physicalDevice).CreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyDevice(VkDevice device) {
--    vulkan::DestroyDevice(device);
-+void vkDestroyDevice(VkDevice device, const VkAllocCallbacks* pAllocator) {
-+    vulkan::DestroyDevice(device, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkEnumerateInstanceLayerProperties(uint32_t* pCount, VkLayerProperties* pProperties) {
--    return vulkan::EnumerateInstanceLayerProperties(pCount, pProperties);
-+VkResult vkEnumerateInstanceLayerProperties(uint32_t* pPropertyCount, VkLayerProperties* pProperties) {
-+    return vulkan::EnumerateInstanceLayerProperties(pPropertyCount, pProperties);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkEnumerateInstanceExtensionProperties(const char* pLayerName, uint32_t* pCount, VkExtensionProperties* pProperties) {
--    return vulkan::EnumerateInstanceExtensionProperties(pLayerName, pCount, pProperties);
-+VkResult vkEnumerateInstanceExtensionProperties(const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties) {
-+    return vulkan::EnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkEnumerateDeviceLayerProperties(VkPhysicalDevice physicalDevice, uint32_t* pCount, VkLayerProperties* pProperties) {
--    return GetVtbl(physicalDevice).EnumerateDeviceLayerProperties(physicalDevice, pCount, pProperties);
-+VkResult vkEnumerateDeviceLayerProperties(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkLayerProperties* pProperties) {
-+    return GetVtbl(physicalDevice).EnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkEnumerateDeviceExtensionProperties(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pCount, VkExtensionProperties* pProperties) {
--    return GetVtbl(physicalDevice).EnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pCount, pProperties);
-+VkResult vkEnumerateDeviceExtensionProperties(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties) {
-+    return GetVtbl(physicalDevice).EnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties);
- }
- 
- __attribute__((visibility("default")))
-@@ -147,13 +147,13 @@ VkResult vkDeviceWaitIdle(VkDevice device) {
- }
- 
- __attribute__((visibility("default")))
--VkResult vkAllocMemory(VkDevice device, const VkMemoryAllocInfo* pAllocInfo, VkDeviceMemory* pMem) {
--    return GetVtbl(device).AllocMemory(device, pAllocInfo, pMem);
-+VkResult vkAllocMemory(VkDevice device, const VkMemoryAllocInfo* pAllocInfo, const VkAllocCallbacks* pAllocator, VkDeviceMemory* pMem) {
-+    return GetVtbl(device).AllocMemory(device, pAllocInfo, pAllocator, pMem);
- }
- 
- __attribute__((visibility("default")))
--void vkFreeMemory(VkDevice device, VkDeviceMemory mem) {
--    GetVtbl(device).FreeMemory(device, mem);
-+void vkFreeMemory(VkDevice device, VkDeviceMemory mem, const VkAllocCallbacks* pAllocator) {
-+    GetVtbl(device).FreeMemory(device, mem, pAllocator);
- }
- 
- __attribute__((visibility("default")))
-@@ -202,38 +202,38 @@ VkResult vkBindImageMemory(VkDevice device, VkImage image, VkDeviceMemory mem, V
- }
- 
- __attribute__((visibility("default")))
--void vkGetImageSparseMemoryRequirements(VkDevice device, VkImage image, uint32_t* pNumRequirements, VkSparseImageMemoryRequirements* pSparseMemoryRequirements) {
--    GetVtbl(device).GetImageSparseMemoryRequirements(device, image, pNumRequirements, pSparseMemoryRequirements);
-+void vkGetImageSparseMemoryRequirements(VkDevice device, VkImage image, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements) {
-+    GetVtbl(device).GetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
- }
- 
- __attribute__((visibility("default")))
--void vkGetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, uint32_t samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pNumProperties, VkSparseImageFormatProperties* pProperties) {
--    GetVtbl(physicalDevice).GetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pNumProperties, pProperties);
-+void vkGetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, uint32_t samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties) {
-+    GetVtbl(physicalDevice).GetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkQueueBindSparseBufferMemory(VkQueue queue, VkBuffer buffer, uint32_t numBindings, const VkSparseMemoryBindInfo* pBindInfo) {
--    return GetVtbl(queue).QueueBindSparseBufferMemory(queue, buffer, numBindings, pBindInfo);
-+VkResult vkQueueBindSparseBufferMemory(VkQueue queue, VkBuffer buffer, uint32_t bindInfoCount, const VkSparseMemoryBindInfo* pBindInfo) {
-+    return GetVtbl(queue).QueueBindSparseBufferMemory(queue, buffer, bindInfoCount, pBindInfo);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkQueueBindSparseImageOpaqueMemory(VkQueue queue, VkImage image, uint32_t numBindings, const VkSparseMemoryBindInfo* pBindInfo) {
--    return GetVtbl(queue).QueueBindSparseImageOpaqueMemory(queue, image, numBindings, pBindInfo);
-+VkResult vkQueueBindSparseImageOpaqueMemory(VkQueue queue, VkImage image, uint32_t bindInfoCount, const VkSparseMemoryBindInfo* pBindInfo) {
-+    return GetVtbl(queue).QueueBindSparseImageOpaqueMemory(queue, image, bindInfoCount, pBindInfo);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkQueueBindSparseImageMemory(VkQueue queue, VkImage image, uint32_t numBindings, const VkSparseImageMemoryBindInfo* pBindInfo) {
--    return GetVtbl(queue).QueueBindSparseImageMemory(queue, image, numBindings, pBindInfo);
-+VkResult vkQueueBindSparseImageMemory(VkQueue queue, VkImage image, uint32_t bindInfoCount, const VkSparseImageMemoryBindInfo* pBindInfo) {
-+    return GetVtbl(queue).QueueBindSparseImageMemory(queue, image, bindInfoCount, pBindInfo);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateFence(VkDevice device, const VkFenceCreateInfo* pCreateInfo, VkFence* pFence) {
--    return GetVtbl(device).CreateFence(device, pCreateInfo, pFence);
-+VkResult vkCreateFence(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkFence* pFence) {
-+    return GetVtbl(device).CreateFence(device, pCreateInfo, pAllocator, pFence);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyFence(VkDevice device, VkFence fence) {
--    GetVtbl(device).DestroyFence(device, fence);
-+void vkDestroyFence(VkDevice device, VkFence fence, const VkAllocCallbacks* pAllocator) {
-+    GetVtbl(device).DestroyFence(device, fence, pAllocator);
- }
- 
- __attribute__((visibility("default")))
-@@ -252,23 +252,23 @@ VkResult vkWaitForFences(VkDevice device, uint32_t fenceCount, const VkFence* pF
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateSemaphore(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, VkSemaphore* pSemaphore) {
--    return GetVtbl(device).CreateSemaphore(device, pCreateInfo, pSemaphore);
-+VkResult vkCreateSemaphore(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkSemaphore* pSemaphore) {
-+    return GetVtbl(device).CreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroySemaphore(VkDevice device, VkSemaphore semaphore) {
--    GetVtbl(device).DestroySemaphore(device, semaphore);
-+void vkDestroySemaphore(VkDevice device, VkSemaphore semaphore, const VkAllocCallbacks* pAllocator) {
-+    GetVtbl(device).DestroySemaphore(device, semaphore, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateEvent(VkDevice device, const VkEventCreateInfo* pCreateInfo, VkEvent* pEvent) {
--    return GetVtbl(device).CreateEvent(device, pCreateInfo, pEvent);
-+VkResult vkCreateEvent(VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkEvent* pEvent) {
-+    return GetVtbl(device).CreateEvent(device, pCreateInfo, pAllocator, pEvent);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyEvent(VkDevice device, VkEvent event) {
--    GetVtbl(device).DestroyEvent(device, event);
-+void vkDestroyEvent(VkDevice device, VkEvent event, const VkAllocCallbacks* pAllocator) {
-+    GetVtbl(device).DestroyEvent(device, event, pAllocator);
- }
- 
- __attribute__((visibility("default")))
-@@ -287,13 +287,13 @@ VkResult vkResetEvent(VkDevice device, VkEvent event) {
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateQueryPool(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, VkQueryPool* pQueryPool) {
--    return GetVtbl(device).CreateQueryPool(device, pCreateInfo, pQueryPool);
-+VkResult vkCreateQueryPool(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkQueryPool* pQueryPool) {
-+    return GetVtbl(device).CreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyQueryPool(VkDevice device, VkQueryPool queryPool) {
--    GetVtbl(device).DestroyQueryPool(device, queryPool);
-+void vkDestroyQueryPool(VkDevice device, VkQueryPool queryPool, const VkAllocCallbacks* pAllocator) {
-+    GetVtbl(device).DestroyQueryPool(device, queryPool, pAllocator);
- }
- 
- __attribute__((visibility("default")))
-@@ -302,33 +302,33 @@ VkResult vkGetQueryPoolResults(VkDevice device, VkQueryPool queryPool, uint32_t
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateBuffer(VkDevice device, const VkBufferCreateInfo* pCreateInfo, VkBuffer* pBuffer) {
--    return GetVtbl(device).CreateBuffer(device, pCreateInfo, pBuffer);
-+VkResult vkCreateBuffer(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkBuffer* pBuffer) {
-+    return GetVtbl(device).CreateBuffer(device, pCreateInfo, pAllocator, pBuffer);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyBuffer(VkDevice device, VkBuffer buffer) {
--    GetVtbl(device).DestroyBuffer(device, buffer);
-+void vkDestroyBuffer(VkDevice device, VkBuffer buffer, const VkAllocCallbacks* pAllocator) {
-+    GetVtbl(device).DestroyBuffer(device, buffer, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateBufferView(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, VkBufferView* pView) {
--    return GetVtbl(device).CreateBufferView(device, pCreateInfo, pView);
-+VkResult vkCreateBufferView(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkBufferView* pView) {
-+    return GetVtbl(device).CreateBufferView(device, pCreateInfo, pAllocator, pView);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyBufferView(VkDevice device, VkBufferView bufferView) {
--    GetVtbl(device).DestroyBufferView(device, bufferView);
-+void vkDestroyBufferView(VkDevice device, VkBufferView bufferView, const VkAllocCallbacks* pAllocator) {
-+    GetVtbl(device).DestroyBufferView(device, bufferView, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateImage(VkDevice device, const VkImageCreateInfo* pCreateInfo, VkImage* pImage) {
--    return GetVtbl(device).CreateImage(device, pCreateInfo, pImage);
-+VkResult vkCreateImage(VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkImage* pImage) {
-+    return GetVtbl(device).CreateImage(device, pCreateInfo, pAllocator, pImage);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyImage(VkDevice device, VkImage image) {
--    GetVtbl(device).DestroyImage(device, image);
-+void vkDestroyImage(VkDevice device, VkImage image, const VkAllocCallbacks* pAllocator) {
-+    GetVtbl(device).DestroyImage(device, image, pAllocator);
- }
- 
- __attribute__((visibility("default")))
-@@ -337,43 +337,43 @@ void vkGetImageSubresourceLayout(VkDevice device, VkImage image, const VkImageSu
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateImageView(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, VkImageView* pView) {
--    return GetVtbl(device).CreateImageView(device, pCreateInfo, pView);
-+VkResult vkCreateImageView(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkImageView* pView) {
-+    return GetVtbl(device).CreateImageView(device, pCreateInfo, pAllocator, pView);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyImageView(VkDevice device, VkImageView imageView) {
--    GetVtbl(device).DestroyImageView(device, imageView);
-+void vkDestroyImageView(VkDevice device, VkImageView imageView, const VkAllocCallbacks* pAllocator) {
-+    GetVtbl(device).DestroyImageView(device, imageView, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateShaderModule(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, VkShaderModule* pShaderModule) {
--    return GetVtbl(device).CreateShaderModule(device, pCreateInfo, pShaderModule);
-+VkResult vkCreateShaderModule(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkShaderModule* pShaderModule) {
-+    return GetVtbl(device).CreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyShaderModule(VkDevice device, VkShaderModule shaderModule) {
--    GetVtbl(device).DestroyShaderModule(device, shaderModule);
-+void vkDestroyShaderModule(VkDevice device, VkShaderModule shaderModule, const VkAllocCallbacks* pAllocator) {
-+    GetVtbl(device).DestroyShaderModule(device, shaderModule, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateShader(VkDevice device, const VkShaderCreateInfo* pCreateInfo, VkShader* pShader) {
--    return GetVtbl(device).CreateShader(device, pCreateInfo, pShader);
-+VkResult vkCreateShader(VkDevice device, const VkShaderCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkShader* pShader) {
-+    return GetVtbl(device).CreateShader(device, pCreateInfo, pAllocator, pShader);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyShader(VkDevice device, VkShader shader) {
--    GetVtbl(device).DestroyShader(device, shader);
-+void vkDestroyShader(VkDevice device, VkShader shader, const VkAllocCallbacks* pAllocator) {
-+    GetVtbl(device).DestroyShader(device, shader, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreatePipelineCache(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, VkPipelineCache* pPipelineCache) {
--    return GetVtbl(device).CreatePipelineCache(device, pCreateInfo, pPipelineCache);
-+VkResult vkCreatePipelineCache(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkPipelineCache* pPipelineCache) {
-+    return GetVtbl(device).CreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyPipelineCache(VkDevice device, VkPipelineCache pipelineCache) {
--    GetVtbl(device).DestroyPipelineCache(device, pipelineCache);
-+void vkDestroyPipelineCache(VkDevice device, VkPipelineCache pipelineCache, const VkAllocCallbacks* pAllocator) {
-+    GetVtbl(device).DestroyPipelineCache(device, pipelineCache, pAllocator);
- }
- 
- __attribute__((visibility("default")))
-@@ -387,58 +387,58 @@ VkResult vkMergePipelineCaches(VkDevice device, VkPipelineCache destCache, uint3
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateGraphicsPipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t count, const VkGraphicsPipelineCreateInfo* pCreateInfos, VkPipeline* pPipelines) {
--    return GetVtbl(device).CreateGraphicsPipelines(device, pipelineCache, count, pCreateInfos, pPipelines);
-+VkResult vkCreateGraphicsPipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocCallbacks* pAllocator, VkPipeline* pPipelines) {
-+    return GetVtbl(device).CreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateComputePipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t count, const VkComputePipelineCreateInfo* pCreateInfos, VkPipeline* pPipelines) {
--    return GetVtbl(device).CreateComputePipelines(device, pipelineCache, count, pCreateInfos, pPipelines);
-+VkResult vkCreateComputePipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocCallbacks* pAllocator, VkPipeline* pPipelines) {
-+    return GetVtbl(device).CreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyPipeline(VkDevice device, VkPipeline pipeline) {
--    GetVtbl(device).DestroyPipeline(device, pipeline);
-+void vkDestroyPipeline(VkDevice device, VkPipeline pipeline, const VkAllocCallbacks* pAllocator) {
-+    GetVtbl(device).DestroyPipeline(device, pipeline, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreatePipelineLayout(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, VkPipelineLayout* pPipelineLayout) {
--    return GetVtbl(device).CreatePipelineLayout(device, pCreateInfo, pPipelineLayout);
-+VkResult vkCreatePipelineLayout(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout) {
-+    return GetVtbl(device).CreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyPipelineLayout(VkDevice device, VkPipelineLayout pipelineLayout) {
--    GetVtbl(device).DestroyPipelineLayout(device, pipelineLayout);
-+void vkDestroyPipelineLayout(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocCallbacks* pAllocator) {
-+    GetVtbl(device).DestroyPipelineLayout(device, pipelineLayout, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateSampler(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, VkSampler* pSampler) {
--    return GetVtbl(device).CreateSampler(device, pCreateInfo, pSampler);
-+VkResult vkCreateSampler(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkSampler* pSampler) {
-+    return GetVtbl(device).CreateSampler(device, pCreateInfo, pAllocator, pSampler);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroySampler(VkDevice device, VkSampler sampler) {
--    GetVtbl(device).DestroySampler(device, sampler);
-+void vkDestroySampler(VkDevice device, VkSampler sampler, const VkAllocCallbacks* pAllocator) {
-+    GetVtbl(device).DestroySampler(device, sampler, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateDescriptorSetLayout(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayout* pSetLayout) {
--    return GetVtbl(device).CreateDescriptorSetLayout(device, pCreateInfo, pSetLayout);
-+VkResult vkCreateDescriptorSetLayout(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout) {
-+    return GetVtbl(device).CreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyDescriptorSetLayout(VkDevice device, VkDescriptorSetLayout descriptorSetLayout) {
--    GetVtbl(device).DestroyDescriptorSetLayout(device, descriptorSetLayout);
-+void vkDestroyDescriptorSetLayout(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocCallbacks* pAllocator) {
-+    GetVtbl(device).DestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateDescriptorPool(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool) {
--    return GetVtbl(device).CreateDescriptorPool(device, pCreateInfo, pDescriptorPool);
-+VkResult vkCreateDescriptorPool(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool) {
-+    return GetVtbl(device).CreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool) {
--    GetVtbl(device).DestroyDescriptorPool(device, descriptorPool);
-+void vkDestroyDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocCallbacks* pAllocator) {
-+    GetVtbl(device).DestroyDescriptorPool(device, descriptorPool, pAllocator);
- }
- 
- __attribute__((visibility("default")))
-@@ -452,8 +452,8 @@ VkResult vkAllocDescriptorSets(VkDevice device, const VkDescriptorSetAllocInfo*
- }
- 
- __attribute__((visibility("default")))
--VkResult vkFreeDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool, uint32_t count, const VkDescriptorSet* pDescriptorSets) {
--    return GetVtbl(device).FreeDescriptorSets(device, descriptorPool, count, pDescriptorSets);
-+VkResult vkFreeDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets) {
-+    return GetVtbl(device).FreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets);
- }
- 
- __attribute__((visibility("default")))
-@@ -462,23 +462,23 @@ void vkUpdateDescriptorSets(VkDevice device, uint32_t writeCount, const VkWriteD
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateFramebuffer(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, VkFramebuffer* pFramebuffer) {
--    return GetVtbl(device).CreateFramebuffer(device, pCreateInfo, pFramebuffer);
-+VkResult vkCreateFramebuffer(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkFramebuffer* pFramebuffer) {
-+    return GetVtbl(device).CreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer) {
--    GetVtbl(device).DestroyFramebuffer(device, framebuffer);
-+void vkDestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer, const VkAllocCallbacks* pAllocator) {
-+    GetVtbl(device).DestroyFramebuffer(device, framebuffer, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateRenderPass(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, VkRenderPass* pRenderPass) {
--    return GetVtbl(device).CreateRenderPass(device, pCreateInfo, pRenderPass);
-+VkResult vkCreateRenderPass(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkRenderPass* pRenderPass) {
-+    return GetVtbl(device).CreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyRenderPass(VkDevice device, VkRenderPass renderPass) {
--    GetVtbl(device).DestroyRenderPass(device, renderPass);
-+void vkDestroyRenderPass(VkDevice device, VkRenderPass renderPass, const VkAllocCallbacks* pAllocator) {
-+    GetVtbl(device).DestroyRenderPass(device, renderPass, pAllocator);
- }
- 
- __attribute__((visibility("default")))
-@@ -487,13 +487,13 @@ void vkGetRenderAreaGranularity(VkDevice device, VkRenderPass renderPass, VkExte
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateCommandPool(VkDevice device, const VkCmdPoolCreateInfo* pCreateInfo, VkCmdPool* pCmdPool) {
--    return GetVtbl(device).CreateCommandPool(device, pCreateInfo, pCmdPool);
-+VkResult vkCreateCommandPool(VkDevice device, const VkCmdPoolCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkCmdPool* pCmdPool) {
-+    return GetVtbl(device).CreateCommandPool(device, pCreateInfo, pAllocator, pCmdPool);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyCommandPool(VkDevice device, VkCmdPool cmdPool) {
--    GetVtbl(device).DestroyCommandPool(device, cmdPool);
-+void vkDestroyCommandPool(VkDevice device, VkCmdPool cmdPool, const VkAllocCallbacks* pAllocator) {
-+    GetVtbl(device).DestroyCommandPool(device, cmdPool, pAllocator);
- }
- 
- __attribute__((visibility("default")))
-@@ -507,8 +507,8 @@ VkResult vkAllocCommandBuffers(VkDevice device, const VkCmdBufferAllocInfo* pAll
- }
- 
- __attribute__((visibility("default")))
--void vkFreeCommandBuffers(VkDevice device, VkCmdPool cmdPool, uint32_t count, const VkCmdBuffer* pCommandBuffers) {
--    GetVtbl(device).FreeCommandBuffers(device, cmdPool, count, pCommandBuffers);
-+void vkFreeCommandBuffers(VkDevice device, VkCmdPool cmdPool, uint32_t commandBufferCount, const VkCmdBuffer* pCommandBuffers) {
-+    GetVtbl(device).FreeCommandBuffers(device, cmdPool, commandBufferCount, pCommandBuffers);
- }
- 
- __attribute__((visibility("default")))
-@@ -577,8 +577,8 @@ void vkCmdSetStencilReference(VkCmdBuffer cmdBuffer, VkStencilFaceFlags faceMask
- }
- 
- __attribute__((visibility("default")))
--void vkCmdBindDescriptorSets(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t setCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets) {
--    GetVtbl(cmdBuffer).CmdBindDescriptorSets(cmdBuffer, pipelineBindPoint, layout, firstSet, setCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets);
-+void vkCmdBindDescriptorSets(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets) {
-+    GetVtbl(cmdBuffer).CmdBindDescriptorSets(cmdBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets);
- }
- 
- __attribute__((visibility("default")))
-@@ -602,13 +602,13 @@ void vkCmdDrawIndexed(VkCmdBuffer cmdBuffer, uint32_t indexCount, uint32_t insta
- }
- 
- __attribute__((visibility("default")))
--void vkCmdDrawIndirect(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count, uint32_t stride) {
--    GetVtbl(cmdBuffer).CmdDrawIndirect(cmdBuffer, buffer, offset, count, stride);
-+void vkCmdDrawIndirect(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride) {
-+    GetVtbl(cmdBuffer).CmdDrawIndirect(cmdBuffer, buffer, offset, drawCount, stride);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdDrawIndexedIndirect(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count, uint32_t stride) {
--    GetVtbl(cmdBuffer).CmdDrawIndexedIndirect(cmdBuffer, buffer, offset, count, stride);
-+void vkCmdDrawIndexedIndirect(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride) {
-+    GetVtbl(cmdBuffer).CmdDrawIndexedIndirect(cmdBuffer, buffer, offset, drawCount, stride);
- }
- 
- __attribute__((visibility("default")))
-@@ -722,8 +722,8 @@ void vkCmdCopyQueryPoolResults(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uin
- }
- 
- __attribute__((visibility("default")))
--void vkCmdPushConstants(VkCmdBuffer cmdBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t start, uint32_t length, const void* values) {
--    GetVtbl(cmdBuffer).CmdPushConstants(cmdBuffer, layout, stageFlags, start, length, values);
-+void vkCmdPushConstants(VkCmdBuffer cmdBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* values) {
-+    GetVtbl(cmdBuffer).CmdPushConstants(cmdBuffer, layout, stageFlags, offset, size, values);
- }
- 
- __attribute__((visibility("default")))
-@@ -762,13 +762,13 @@ VkResult vkGetSurfacePropertiesKHR(VkDevice device, VkSurfaceKHR surface, VkSurf
- }
- 
- __attribute__((visibility("default")))
--VkResult vkGetSurfaceFormatsKHR(VkDevice device, VkSurfaceKHR surface, uint32_t* pCount, VkSurfaceFormatKHR* pSurfaceFormats) {
--    return GetVtbl(device).GetSurfaceFormatsKHR(device, surface, pCount, pSurfaceFormats);
-+VkResult vkGetSurfaceFormatsKHR(VkDevice device, VkSurfaceKHR surface, uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats) {
-+    return GetVtbl(device).GetSurfaceFormatsKHR(device, surface, pSurfaceFormatCount, pSurfaceFormats);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkGetSurfacePresentModesKHR(VkDevice device, VkSurfaceKHR surface, uint32_t* pCount, VkPresentModeKHR* pPresentModes) {
--    return GetVtbl(device).GetSurfacePresentModesKHR(device, surface, pCount, pPresentModes);
-+VkResult vkGetSurfacePresentModesKHR(VkDevice device, VkSurfaceKHR surface, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes) {
-+    return GetVtbl(device).GetSurfacePresentModesKHR(device, surface, pPresentModeCount, pPresentModes);
- }
- 
- __attribute__((visibility("default")))
-@@ -782,8 +782,8 @@ void vkDestroySwapchainKHR(VkDevice device, VkSwapchainKHR swapchain) {
- }
- 
- __attribute__((visibility("default")))
--VkResult vkGetSwapchainImagesKHR(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pCount, VkImage* pSwapchainImages) {
--    return GetVtbl(device).GetSwapchainImagesKHR(device, swapchain, pCount, pSwapchainImages);
-+VkResult vkGetSwapchainImagesKHR(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pSwapchainImageCount, VkImage* pSwapchainImages) {
-+    return GetVtbl(device).GetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages);
- }
- 
- __attribute__((visibility("default")))
-diff --git a/vulkan/libvulkan/loader.cpp b/vulkan/libvulkan/loader.cpp
-index a44026f..10877c5 100644
---- a/vulkan/libvulkan/loader.cpp
-+++ b/vulkan/libvulkan/loader.cpp
-@@ -22,8 +22,8 @@
- #include <dirent.h>
- #include <dlfcn.h>
- #include <inttypes.h>
--#include <malloc.h>
- #include <pthread.h>
-+#include <stdlib.h>
- #include <string.h>
- // standard C++ headers
- #include <algorithm>
-@@ -58,7 +58,13 @@ typedef struct VkLayerLinkedListElem_ {
- // Define Handle typedef to be void* as returned from dlopen.
- typedef void* SharedLibraryHandle;
- 
--// Custom versions of std classes that use the vulkan alloc callback.
-+// Standard-library allocator that delegates to VkAllocCallbacks.
-+//
-+// TODO(jessehall): This class currently always uses
-+// VK_SYSTEM_ALLOC_SCOPE_INSTANCE. The scope to use could be a template
-+// parameter or a constructor parameter. The former would help catch bugs
-+// where we use the wrong scope, e.g. adding a command-scope string to an
-+// instance-scope vector. But that might also be pretty annoying to deal with.
- template <class T>
- class CallbackAllocator {
-    public:
-@@ -73,7 +79,7 @@ class CallbackAllocator {
- 
-     T* allocate(std::size_t n) {
-         void* mem = alloc->pfnAlloc(alloc->pUserData, n * sizeof(T), alignof(T),
--                                    VK_SYSTEM_ALLOC_TYPE_INTERNAL);
-+                                    VK_SYSTEM_ALLOC_SCOPE_INSTANCE);
-         return static_cast<T*>(mem);
-     }
- 
-@@ -208,8 +214,43 @@ inline const DeviceVtbl* GetVtbl(VkQueue queue) {
-     return *reinterpret_cast<DeviceVtbl**>(queue);
- }
- 
--void* DefaultAlloc(void*, size_t size, size_t alignment, VkSystemAllocType) {
--    return memalign(alignment, size);
-+void* DefaultAlloc(void*, size_t size, size_t alignment, VkSystemAllocScope) {
-+    void* ptr = nullptr;
-+    // Vulkan requires 'alignment' to be a power of two, but posix_memalign
-+    // additionally requires that it be at least sizeof(void*).
-+    return posix_memalign(&ptr, std::max(alignment, sizeof(void*)), size) == 0
-+               ? ptr
-+               : nullptr;
-+}
-+
-+void* DefaultRealloc(void*,
-+                     void* ptr,
-+                     size_t size,
-+                     size_t alignment,
-+                     VkSystemAllocScope) {
-+    if (size == 0) {
-+        free(ptr);
-+        return nullptr;
-+    }
-+
-+    // TODO(jessehall): Right now we never shrink allocations; if the new
-+    // request is smaller than the existing chunk, we just continue using it.
-+    // Right now the loader never reallocs, so this doesn't matter. If that
-+    // changes, or if this code is copied into some other project, this should
-+    // probably have a heuristic to allocate-copy-free when doing so will save
-+    // "enough" space.
-+    size_t old_size = ptr ? malloc_usable_size(ptr) : 0;
-+    if (size <= old_size)
-+        return ptr;
-+
-+    void* new_ptr = nullptr;
-+    if (posix_memalign(&new_ptr, alignment, size) != 0)
-+        return nullptr;
-+    if (ptr) {
-+        memcpy(new_ptr, ptr, std::min(old_size, size));
-+        free(ptr);
-+    }
-+    return new_ptr;
- }
- 
- void DefaultFree(void*, void* pMem) {
-@@ -219,6 +260,7 @@ void DefaultFree(void*, void* pMem) {
- const VkAllocCallbacks kDefaultAllocCallbacks = {
-     .pUserData = nullptr,
-     .pfnAlloc = DefaultAlloc,
-+    .pfnRealloc = DefaultRealloc,
-     .pfnFree = DefaultFree,
- };
- 
-@@ -418,7 +460,7 @@ VkResult ActivateAllLayers(TInfo create_info, Instance* instance, TObject* objec
-         }
-     }
-     // Load app layers
--    for (uint32_t i = 0; i < create_info->layerCount; ++i) {
-+    for (uint32_t i = 0; i < create_info->enabledLayerNameCount; ++i) {
-         String layer_name(create_info->ppEnabledLayerNames[i],
-                           string_allocator);
-         auto element = instance->layers.find(layer_name);
-@@ -439,17 +481,18 @@ template <class TCreateInfo>
- bool AddExtensionToCreateInfo(TCreateInfo& local_create_info,
-                               const char* extension_name,
-                               const VkAllocCallbacks* alloc) {
--    for (uint32_t i = 0; i < local_create_info.extensionCount; ++i) {
-+    for (uint32_t i = 0; i < local_create_info.enabledExtensionNameCount; ++i) {
-         if (!strcmp(extension_name,
-                     local_create_info.ppEnabledExtensionNames[i])) {
-             return false;
-         }
-     }
--    uint32_t extension_count = local_create_info.extensionCount;
--    local_create_info.extensionCount++;
-+    uint32_t extension_count = local_create_info.enabledExtensionNameCount;
-+    local_create_info.enabledExtensionNameCount++;
-     void* mem = alloc->pfnAlloc(
--        alloc->pUserData, local_create_info.extensionCount * sizeof(char*),
--        alignof(char*), VK_SYSTEM_ALLOC_TYPE_INTERNAL);
-+        alloc->pUserData,
-+        local_create_info.enabledExtensionNameCount * sizeof(char*),
-+        alignof(char*), VK_SYSTEM_ALLOC_SCOPE_INSTANCE);
-     if (mem) {
-         const char** enabled_extensions = static_cast<const char**>(mem);
-         for (uint32_t i = 0; i < extension_count; ++i) {
-@@ -461,7 +504,7 @@ bool AddExtensionToCreateInfo(TCreateInfo& local_create_info,
-     } else {
-         ALOGW("%s extension cannot be enabled: memory allocation failed",
-               extension_name);
--        local_create_info.extensionCount--;
-+        local_create_info.enabledExtensionNameCount--;
-         return false;
-     }
-     return true;
-@@ -537,12 +580,14 @@ PFN_vkVoidFunction GetLayerDeviceProcAddr(VkDevice device, const char* name) {
- // "Bottom" functions. These are called at the end of the instance dispatch
- // chain.
- 
--void DestroyInstanceBottom(VkInstance instance) {
-+void DestroyInstanceBottom(VkInstance instance,
-+                           const VkAllocCallbacks* allocator) {
-     // These checks allow us to call DestroyInstanceBottom from any error path
-     // in CreateInstanceBottom, before the driver instance is fully initialized.
-     if (instance->drv.vtbl.instance != VK_NULL_HANDLE &&
-         instance->drv.vtbl.DestroyInstance) {
--        instance->drv.vtbl.DestroyInstance(instance->drv.vtbl.instance);
-+        instance->drv.vtbl.DestroyInstance(instance->drv.vtbl.instance,
-+                                           allocator);
-     }
-     if (instance->message) {
-         PFN_vkDbgDestroyMsgCallback DebugDestroyMessageCallback;
-@@ -561,21 +606,22 @@ void DestroyInstanceBottom(VkInstance instance) {
- }
- 
- VkResult CreateInstanceBottom(const VkInstanceCreateInfo* create_info,
-+                              const VkAllocCallbacks* allocator,
-                               VkInstance* instance_ptr) {
-     Instance* instance = *instance_ptr;
-     VkResult result;
- 
--    result =
--        g_hwdevice->CreateInstance(create_info, &instance->drv.vtbl.instance);
-+    result = g_hwdevice->CreateInstance(create_info, instance->alloc,
-+                                        &instance->drv.vtbl.instance);
-     if (result != VK_SUCCESS) {
--        DestroyInstanceBottom(instance);
-+        DestroyInstanceBottom(instance, allocator);
-         return result;
-     }
- 
-     if (!LoadInstanceVtbl(
-             instance->drv.vtbl.instance, instance->drv.vtbl.instance,
-             g_hwdevice->GetInstanceProcAddr, instance->drv.vtbl)) {
--        DestroyInstanceBottom(instance);
-+        DestroyInstanceBottom(instance, allocator);
-         return VK_ERROR_INITIALIZATION_FAILED;
-     }
- 
-@@ -587,7 +633,7 @@ VkResult CreateInstanceBottom(const VkInstanceCreateInfo* create_info,
-                                         "vkGetDeviceProcAddr"));
-     if (!instance->drv.GetDeviceProcAddr) {
-         ALOGE("missing instance proc: \"%s\"", "vkGetDeviceProcAddr");
--        DestroyInstanceBottom(instance);
-+        DestroyInstanceBottom(instance, allocator);
-         return VK_ERROR_INITIALIZATION_FAILED;
-     }
- 
-@@ -600,7 +646,7 @@ VkResult CreateInstanceBottom(const VkInstanceCreateInfo* create_info,
-     } else {
-         ALOGE("invalid VkInstance dispatch magic: 0x%" PRIxPTR,
-               dispatch->magic);
--        DestroyInstanceBottom(instance);
-+        DestroyInstanceBottom(instance, allocator);
-         return VK_ERROR_INITIALIZATION_FAILED;
-     }
- 
-@@ -608,7 +654,7 @@ VkResult CreateInstanceBottom(const VkInstanceCreateInfo* create_info,
-     result = instance->drv.vtbl.EnumeratePhysicalDevices(
-         instance->drv.vtbl.instance, &num_physical_devices, nullptr);
-     if (result != VK_SUCCESS) {
--        DestroyInstanceBottom(instance);
-+        DestroyInstanceBottom(instance, allocator);
-         return VK_ERROR_INITIALIZATION_FAILED;
-     }
-     num_physical_devices = std::min(num_physical_devices, kMaxPhysicalDevices);
-@@ -616,7 +662,7 @@ VkResult CreateInstanceBottom(const VkInstanceCreateInfo* create_info,
-         instance->drv.vtbl.instance, &num_physical_devices,
-         instance->physical_devices);
-     if (result != VK_SUCCESS) {
--        DestroyInstanceBottom(instance);
-+        DestroyInstanceBottom(instance, allocator);
-         return VK_ERROR_INITIALIZATION_FAILED;
-     }
-     for (uint32_t i = 0; i < num_physical_devices; i++) {
-@@ -625,7 +671,7 @@ VkResult CreateInstanceBottom(const VkInstanceCreateInfo* create_info,
-         if (dispatch->magic != HWVULKAN_DISPATCH_MAGIC) {
-             ALOGE("invalid VkPhysicalDevice dispatch magic: 0x%" PRIxPTR,
-                   dispatch->magic);
--            DestroyInstanceBottom(instance);
-+            DestroyInstanceBottom(instance, allocator);
-             return VK_ERROR_INITIALIZATION_FAILED;
-         }
-         dispatch->vtbl = instance->vtbl;
-@@ -696,13 +742,21 @@ void GetPhysicalDeviceMemoryPropertiesBottom(
- 
- VkResult CreateDeviceBottom(VkPhysicalDevice pdev,
-                             const VkDeviceCreateInfo* create_info,
-+                            const VkAllocCallbacks* allocator,
-                             VkDevice* out_device) {
-     Instance& instance = *static_cast<Instance*>(GetVtbl(pdev)->instance);
-     VkResult result;
- 
--    void* mem = instance.alloc->pfnAlloc(instance.alloc->pUserData,
--                                         sizeof(Device), alignof(Device),
--                                         VK_SYSTEM_ALLOC_TYPE_API_OBJECT);
-+    if (!allocator) {
-+        if (instance.alloc)
-+            allocator = instance.alloc;
-+        else
-+            allocator = &kDefaultAllocCallbacks;
-+    }
-+
-+    void* mem =
-+        allocator->pfnAlloc(allocator->pUserData, sizeof(Device),
-+                            alignof(Device), VK_SYSTEM_ALLOC_SCOPE_DEVICE);
-     if (!mem)
-         return VK_ERROR_OUT_OF_HOST_MEMORY;
-     Device* device = new (mem) Device(&instance);
-@@ -714,7 +768,8 @@ VkResult CreateDeviceBottom(VkPhysicalDevice pdev,
-     }
- 
-     VkDevice drv_device;
--    result = instance.drv.vtbl.CreateDevice(pdev, create_info, &drv_device);
-+    result = instance.drv.vtbl.CreateDevice(pdev, create_info, allocator,
-+                                            &drv_device);
-     if (result != VK_SUCCESS) {
-         DestroyDevice(device);
-         return result;
-@@ -727,7 +782,7 @@ VkResult CreateDeviceBottom(VkPhysicalDevice pdev,
-         PFN_vkDestroyDevice destroy_device =
-             reinterpret_cast<PFN_vkDestroyDevice>(
-                 instance.drv.GetDeviceProcAddr(drv_device, "vkDestroyDevice"));
--        destroy_device(drv_device);
-+        destroy_device(drv_device, allocator);
-         DestroyDevice(device);
-         return VK_ERROR_INITIALIZATION_FAILED;
-     }
-@@ -778,7 +833,7 @@ VkResult CreateDeviceBottom(VkPhysicalDevice pdev,
-         reinterpret_cast<PFN_vkCreateDevice>(
-             device->vtbl_storage.GetDeviceProcAddr(drv_device,
-                                                    "vkCreateDevice"));
--    layer_createDevice(pdev, create_info, &drv_device);
-+    layer_createDevice(pdev, create_info, allocator, &drv_device);
- 
-     // TODO(mlentine) : This is needed to use WSI layer validation. Remove this
-     // when new version of layer initialization exits.
-@@ -896,23 +951,25 @@ VkResult EnumerateInstanceLayerProperties(uint32_t* count,
- }
- 
- VkResult CreateInstance(const VkInstanceCreateInfo* create_info,
-+                        const VkAllocCallbacks* allocator,
-                         VkInstance* out_instance) {
-     VkResult result;
- 
-     if (!EnsureInitialized())
-         return VK_ERROR_INITIALIZATION_FAILED;
- 
-+    if (!allocator)
-+        allocator = &kDefaultAllocCallbacks;
-+
-     VkInstanceCreateInfo local_create_info = *create_info;
--    if (!local_create_info.pAllocCb)
--        local_create_info.pAllocCb = &kDefaultAllocCallbacks;
-     create_info = &local_create_info;
- 
--    void* instance_mem = create_info->pAllocCb->pfnAlloc(
--        create_info->pAllocCb->pUserData, sizeof(Instance), alignof(Instance),
--        VK_SYSTEM_ALLOC_TYPE_API_OBJECT);
-+    void* instance_mem =
-+        allocator->pfnAlloc(allocator->pUserData, sizeof(Instance),
-+                            alignof(Instance), VK_SYSTEM_ALLOC_SCOPE_INSTANCE);
-     if (!instance_mem)
-         return VK_ERROR_OUT_OF_HOST_MEMORY;
--    Instance* instance = new (instance_mem) Instance(create_info->pAllocCb);
-+    Instance* instance = new (instance_mem) Instance(allocator);
- 
-     instance->vtbl_storage = kBottomInstanceFunctions;
-     instance->vtbl_storage.instance = instance;
-@@ -930,7 +987,7 @@ VkResult CreateInstance(const VkInstanceCreateInfo* create_info,
- 
-     result = ActivateAllLayers(create_info, instance, instance);
-     if (result != VK_SUCCESS) {
--        DestroyInstanceBottom(instance);
-+        DestroyInstanceBottom(instance, allocator);
-         return result;
-     }
- 
-@@ -973,7 +1030,7 @@ VkResult CreateInstance(const VkInstanceCreateInfo* create_info,
-     if (!LoadInstanceVtbl(static_cast<VkInstance>(base_object),
-                           static_cast<VkInstance>(next_object),
-                           next_get_proc_addr, instance->vtbl_storage)) {
--        DestroyInstanceBottom(instance);
-+        DestroyInstanceBottom(instance, allocator);
-         return VK_ERROR_INITIALIZATION_FAILED;
-     }
- 
-@@ -988,7 +1045,8 @@ VkResult CreateInstance(const VkInstanceCreateInfo* create_info,
-     }
- 
-     *out_instance = instance;
--    result = instance->vtbl_storage.CreateInstance(create_info, out_instance);
-+    result = instance->vtbl_storage.CreateInstance(create_info, allocator,
-+                                                   out_instance);
-     if (enable_callback)
-         FreeAllocatedCreateInfo(local_create_info, instance->alloc);
-     if (result <= 0) {
-@@ -1079,7 +1137,7 @@ VkResult AllocCommandBuffers(VkDevice device,
-     VkResult result = vtbl->AllocCommandBuffers(device, alloc_info, cmdbuffers);
-     if (result != VK_SUCCESS)
-         return result;
--    for (uint32_t i = 0; i < alloc_info->count; i++) {
-+    for (uint32_t i = 0; i < alloc_info->bufferCount; i++) {
-         hwvulkan_dispatch_t* dispatch =
-             reinterpret_cast<hwvulkan_dispatch_t*>(cmdbuffers[i]);
-         ALOGE_IF(dispatch->magic != HWVULKAN_DISPATCH_MAGIC,
-@@ -1090,14 +1148,15 @@ VkResult AllocCommandBuffers(VkDevice device,
-     return VK_SUCCESS;
- }
- 
--VkResult DestroyDevice(VkDevice drv_device) {
-+VkResult DestroyDevice(VkDevice drv_device,
-+                       const VkAllocCallbacks* /*allocator*/) {
-     const DeviceVtbl* vtbl = GetVtbl(drv_device);
-     Device* device = static_cast<Device*>(vtbl->device);
-     for (auto it = device->active_layers.begin();
-          it != device->active_layers.end(); ++it) {
-         DeactivateLayer(device->instance, it);
-     }
--    vtbl->DestroyDevice(drv_device);
-+    vtbl->DestroyDevice(drv_device, device->instance->alloc);
-     DestroyDevice(device);
-     return VK_SUCCESS;
- }
-@@ -1105,9 +1164,9 @@ VkResult DestroyDevice(VkDevice drv_device) {
- void* AllocMem(VkInstance instance,
-                size_t size,
-                size_t align,
--               VkSystemAllocType type) {
-+               VkSystemAllocScope scope) {
-     const VkAllocCallbacks* alloc_cb = instance->alloc;
--    return alloc_cb->pfnAlloc(alloc_cb->pUserData, size, align, type);
-+    return alloc_cb->pfnAlloc(alloc_cb->pUserData, size, align, scope);
- }
- 
- void FreeMem(VkInstance instance, void* ptr) {
-@@ -1118,10 +1177,10 @@ void FreeMem(VkInstance instance, void* ptr) {
- void* AllocMem(VkDevice device,
-                size_t size,
-                size_t align,
--               VkSystemAllocType type) {
-+               VkSystemAllocScope scope) {
-     const VkAllocCallbacks* alloc_cb =
-         static_cast<Device*>(GetVtbl(device)->device)->instance->alloc;
--    return alloc_cb->pfnAlloc(alloc_cb->pUserData, size, align, type);
-+    return alloc_cb->pfnAlloc(alloc_cb->pUserData, size, align, scope);
- }
- 
- void FreeMem(VkDevice device, void* ptr) {
-diff --git a/vulkan/libvulkan/loader.h b/vulkan/libvulkan/loader.h
-index 15e2779..e166887 100644
---- a/vulkan/libvulkan/loader.h
-+++ b/vulkan/libvulkan/loader.h
-@@ -216,6 +216,7 @@ VkResult EnumerateInstanceExtensionProperties(
- VkResult EnumerateInstanceLayerProperties(uint32_t* count,
-                                           VkLayerProperties* properties);
- VkResult CreateInstance(const VkInstanceCreateInfo* create_info,
-+                        const VkAllocCallbacks* pAllocator,
-                         VkInstance* instance);
- PFN_vkVoidFunction GetInstanceProcAddr(VkInstance instance, const char* name);
- PFN_vkVoidFunction GetDeviceProcAddr(VkDevice drv_device, const char* name);
-@@ -226,17 +227,17 @@ void GetDeviceQueue(VkDevice drv_device,
- VkResult AllocCommandBuffers(VkDevice device,
-                              const VkCmdBufferAllocInfo* alloc_info,
-                              VkCmdBuffer* cmdbuffers);
--VkResult DestroyDevice(VkDevice drv_device);
-+VkResult DestroyDevice(VkDevice drv_device, const VkAllocCallbacks* pAllocator);
- 
- void* AllocMem(VkInstance instance,
-                size_t size,
-                size_t align,
--               VkSystemAllocType type);
-+               VkSystemAllocScope scope);
- void FreeMem(VkInstance instance, void* ptr);
- void* AllocMem(VkDevice device,
-                size_t size,
-                size_t align,
--               VkSystemAllocType type);
-+               VkSystemAllocScope scope);
- void FreeMem(VkDevice device, void* ptr);
- const DeviceVtbl& GetDriverVtbl(VkDevice device);
- const DeviceVtbl& GetDriverVtbl(VkQueue queue);
-diff --git a/vulkan/libvulkan/swapchain.cpp b/vulkan/libvulkan/swapchain.cpp
-index 2922465..f6ab081 100644
---- a/vulkan/libvulkan/swapchain.cpp
-+++ b/vulkan/libvulkan/swapchain.cpp
-@@ -49,6 +49,19 @@ struct NativeBaseDeleter {
-     void operator()(T* obj) { obj->common.decRef(&obj->common); }
- };
- 
-+template <typename Host>
-+struct AllocScope {};
-+
-+template <>
-+struct AllocScope<VkInstance> {
-+    static const VkSystemAllocScope kScope = VK_SYSTEM_ALLOC_SCOPE_INSTANCE;
-+};
-+
-+template <>
-+struct AllocScope<VkDevice> {
-+    static const VkSystemAllocScope kScope = VK_SYSTEM_ALLOC_SCOPE_DEVICE;
-+};
-+
- template <typename T, typename Host>
- class VulkanAllocator {
-    public:
-@@ -62,7 +75,7 @@ class VulkanAllocator {
- 
-     T* allocate(size_t n) const {
-         return static_cast<T*>(AllocMem(host_, n * sizeof(T), alignof(T),
--                                        VK_SYSTEM_ALLOC_TYPE_INTERNAL));
-+                                        AllocScope<Host>::kScope));
-     }
-     void deallocate(T* p, size_t) const { return FreeMem(host_, p); }
- 
-@@ -129,7 +142,7 @@ VkResult CreateAndroidSurfaceKHR(VkInstance instance,
-                                  ANativeWindow* window,
-                                  VkSurfaceKHR* out_surface) {
-     void* mem = AllocMem(instance, sizeof(Surface), alignof(Surface),
--                         VK_SYSTEM_ALLOC_TYPE_API_OBJECT);
-+                         VK_SYSTEM_ALLOC_SCOPE_OBJECT);
-     if (!mem)
-         return VK_ERROR_OUT_OF_HOST_MEMORY;
-     Surface* surface = new (mem) Surface;
-@@ -362,7 +375,7 @@ VkResult CreateSwapchainKHR(VkDevice device,
-     // After this point, we must deallocate the swapchain on error.
- 
-     void* mem = AllocMem(device, sizeof(Swapchain), alignof(Swapchain),
--                         VK_SYSTEM_ALLOC_TYPE_API_OBJECT);
-+                         VK_SYSTEM_ALLOC_SCOPE_OBJECT);
-     if (!mem)
-         return VK_ERROR_OUT_OF_HOST_MEMORY;
-     Swapchain* swapchain = new (mem) Swapchain(surface, num_images);
-@@ -391,7 +404,7 @@ VkResult CreateSwapchainKHR(VkDevice device,
-         .usage = create_info->imageUsageFlags,
-         .flags = 0,
-         .sharingMode = create_info->sharingMode,
--        .queueFamilyCount = create_info->queueFamilyCount,
-+        .queueFamilyIndexCount = create_info->queueFamilyIndexCount,
-         .pQueueFamilyIndices = create_info->pQueueFamilyIndices,
-     };
- 
-@@ -418,7 +431,8 @@ VkResult CreateSwapchainKHR(VkDevice device,
-         image_native_buffer.format = img.buffer->format;
-         image_native_buffer.usage = img.buffer->usage;
- 
--        result = driver_vtbl.CreateImage(device, &image_create, &img.image);
-+        result =
-+            driver_vtbl.CreateImage(device, &image_create, nullptr, &img.image);
-         if (result != VK_SUCCESS) {
-             ALOGD("vkCreateImage w/ native buffer failed: %u", result);
-             break;
-@@ -441,7 +455,7 @@ VkResult CreateSwapchainKHR(VkDevice device,
-         }
-         if (result != VK_SUCCESS) {
-             if (img.image)
--                driver_vtbl.DestroyImage(device, img.image);
-+                driver_vtbl.DestroyImage(device, img.image, nullptr);
-         }
-     }
- 
-@@ -469,7 +483,7 @@ VkResult DestroySwapchainKHR(VkDevice device, VkSwapchainKHR swapchain_handle) {
-             img.dequeued = false;
-         }
-         if (img.image) {
--            driver_vtbl.DestroyImage(device, img.image);
-+            driver_vtbl.DestroyImage(device, img.image, nullptr);
-         }
-     }
- 
-@@ -592,7 +606,7 @@ VkResult QueuePresentKHR(VkQueue queue, VkPresentInfoKHR* present_info) {
-     VkResult final_result = VK_SUCCESS;
-     for (uint32_t sc = 0; sc < present_info->swapchainCount; sc++) {
-         Swapchain& swapchain =
--            *SwapchainFromHandle(present_info->swapchains[sc]);
-+            *SwapchainFromHandle(present_info->pSwapchains[sc]);
-         ANativeWindow* window = swapchain.surface.window.get();
-         uint32_t image_idx = present_info->imageIndices[sc];
-         Swapchain::Image& img = swapchain.images[image_idx];
-diff --git a/vulkan/nulldrv/null_driver.cpp b/vulkan/nulldrv/null_driver.cpp
-index 0f8382f..fe6a1e8 100644
---- a/vulkan/nulldrv/null_driver.cpp
-+++ b/vulkan/nulldrv/null_driver.cpp
-@@ -35,7 +35,7 @@ struct VkPhysicalDevice_T {
- 
- struct VkInstance_T {
-     hwvulkan_dispatch_t dispatch;
--    const VkAllocCallbacks* alloc;
-+    VkAllocCallbacks allocator;
-     VkPhysicalDevice_T physical_device;
- };
- 
-@@ -67,7 +67,6 @@ namespace {
- namespace HandleType {
- enum Enum {
-     kBufferView,
--    kCmdPool,
-     kDescriptorPool,
-     kDescriptorSet,
-     kDescriptorSetLayout,
-@@ -96,6 +95,7 @@ const VkDeviceSize kMaxDeviceMemory = VkDeviceSize(INTPTR_MAX) + 1;
- 
- struct VkDevice_T {
-     hwvulkan_dispatch_t dispatch;
-+    VkAllocCallbacks allocator;
-     VkInstance_T* instance;
-     VkQueue_T queue;
-     std::array<uint64_t, HandleType::kNumTypes> next_handle;
-@@ -130,22 +130,22 @@ __attribute__((visibility("default"))) hwvulkan_module_t HAL_MODULE_INFO_SYM = {
- 
- namespace {
- 
--VkResult CreateInstance(const VkInstanceCreateInfo* create_info,
-+VkResult CreateInstance(const VkInstanceCreateInfo* /*create_info*/,
-+                        const VkAllocCallbacks* allocator,
-                         VkInstance* out_instance) {
-     // Assume the loader provided alloc callbacks even if the app didn't.
-     ALOG_ASSERT(
--        create_info->pAllocCb,
-+        allocator,
-         "Missing alloc callbacks, loader or app should have provided them");
- 
--    VkInstance_T* instance =
--        static_cast<VkInstance_T*>(create_info->pAllocCb->pfnAlloc(
--            create_info->pAllocCb->pUserData, sizeof(VkInstance_T),
--            alignof(VkInstance_T), VK_SYSTEM_ALLOC_TYPE_API_OBJECT));
-+    VkInstance_T* instance = static_cast<VkInstance_T*>(allocator->pfnAlloc(
-+        allocator->pUserData, sizeof(VkInstance_T), alignof(VkInstance_T),
-+        VK_SYSTEM_ALLOC_SCOPE_INSTANCE));
-     if (!instance)
-         return VK_ERROR_OUT_OF_HOST_MEMORY;
- 
-     instance->dispatch.magic = HWVULKAN_DISPATCH_MAGIC;
--    instance->alloc = create_info->pAllocCb;
-+    instance->allocator = *allocator;
-     instance->physical_device.dispatch.magic = HWVULKAN_DISPATCH_MAGIC;
- 
-     *out_instance = instance;
-@@ -244,8 +244,9 @@ PFN_vkVoidFunction GetDeviceProcAddr(VkDevice, const char* name) {
- // -----------------------------------------------------------------------------
- // Instance
- 
--void DestroyInstance(VkInstance instance) {
--    instance->alloc->pfnFree(instance->alloc->pUserData, instance);
-+void DestroyInstance(VkInstance instance,
-+                     const VkAllocCallbacks* /*allocator*/) {
-+    instance->allocator.pfnFree(instance->allocator.pUserData, instance);
- }
- 
- // -----------------------------------------------------------------------------
-@@ -302,15 +303,19 @@ void GetPhysicalDeviceMemoryProperties(
- 
- VkResult CreateDevice(VkPhysicalDevice physical_device,
-                       const VkDeviceCreateInfo*,
-+                      const VkAllocCallbacks* allocator,
-                       VkDevice* out_device) {
-     VkInstance_T* instance = GetInstanceFromPhysicalDevice(physical_device);
--    VkDevice_T* device = static_cast<VkDevice_T*>(instance->alloc->pfnAlloc(
--        instance->alloc->pUserData, sizeof(VkDevice_T), alignof(VkDevice_T),
--        VK_SYSTEM_ALLOC_TYPE_API_OBJECT));
-+    if (!allocator)
-+        allocator = &instance->allocator;
-+    VkDevice_T* device = static_cast<VkDevice_T*>(
-+        allocator->pfnAlloc(allocator->pUserData, sizeof(VkDevice_T),
-+                            alignof(VkDevice_T), VK_SYSTEM_ALLOC_SCOPE_DEVICE));
-     if (!device)
-         return VK_ERROR_OUT_OF_HOST_MEMORY;
- 
-     device->dispatch.magic = HWVULKAN_DISPATCH_MAGIC;
-+    device->allocator = *allocator;
-     device->instance = instance;
-     device->queue.dispatch.magic = HWVULKAN_DISPATCH_MAGIC;
-     std::fill(device->next_handle.begin(), device->next_handle.end(),
-@@ -320,11 +325,10 @@ VkResult CreateDevice(VkPhysicalDevice physical_device,
-     return VK_SUCCESS;
- }
- 
--void DestroyDevice(VkDevice device) {
-+void DestroyDevice(VkDevice device, const VkAllocCallbacks* /*allocator*/) {
-     if (!device)
-         return;
--    const VkAllocCallbacks* alloc = device->instance->alloc;
--    alloc->pfnFree(alloc->pUserData, device);
-+    device->allocator.pfnFree(device->allocator.pUserData, device);
- }
- 
- void GetDeviceQueue(VkDevice device, uint32_t, uint32_t, VkQueue* queue) {
-@@ -332,19 +336,50 @@ void GetDeviceQueue(VkDevice device, uint32_t, uint32_t, VkQueue* queue) {
- }
- 
- // -----------------------------------------------------------------------------
-+// CmdPool
-+
-+struct CmdPool {
-+    typedef VkCmdPool HandleType;
-+    VkAllocCallbacks allocator;
-+};
-+DEFINE_OBJECT_HANDLE_CONVERSION(CmdPool)
-+
-+VkResult CreateCommandPool(VkDevice device,
-+                           const VkCmdPoolCreateInfo* /*create_info*/,
-+                           const VkAllocCallbacks* allocator,
-+                           VkCmdPool* cmd_pool) {
-+    if (!allocator)
-+        allocator = &device->allocator;
-+    CmdPool* pool = static_cast<CmdPool*>(
-+        allocator->pfnAlloc(allocator->pUserData, sizeof(CmdPool),
-+                            alignof(CmdPool), VK_SYSTEM_ALLOC_SCOPE_OBJECT));
-+    if (!pool)
-+        return VK_ERROR_OUT_OF_HOST_MEMORY;
-+    pool->allocator = *allocator;
-+    *cmd_pool = GetHandleToCmdPool(pool);
-+    return VK_SUCCESS;
-+}
-+
-+void DestroyCommandPool(VkDevice /*device*/,
-+                        VkCmdPool cmd_pool,
-+                        const VkAllocCallbacks* /*allocator*/) {
-+    CmdPool* pool = GetCmdPoolFromHandle(cmd_pool);
-+    pool->allocator.pfnFree(pool->allocator.pUserData, pool);
-+}
-+
-+// -----------------------------------------------------------------------------
- // CmdBuffer
- 
--VkResult AllocCommandBuffers(VkDevice device,
-+VkResult AllocCommandBuffers(VkDevice /*device*/,
-                              const VkCmdBufferAllocInfo* alloc_info,
-                              VkCmdBuffer* cmdbufs) {
-     VkResult result = VK_SUCCESS;
--    const VkAllocCallbacks* alloc = device->instance->alloc;
--
--    std::fill(cmdbufs, cmdbufs + alloc_info->count, nullptr);
--    for (uint32_t i = 0; i < alloc_info->count; i++) {
--        cmdbufs[i] = static_cast<VkCmdBuffer_T*>(alloc->pfnAlloc(
--            alloc->pUserData, sizeof(VkCmdBuffer_T), alignof(VkCmdBuffer_T),
--            VK_SYSTEM_ALLOC_TYPE_API_OBJECT));
-+    CmdPool& pool = *GetCmdPoolFromHandle(alloc_info->cmdPool);
-+    std::fill(cmdbufs, cmdbufs + alloc_info->bufferCount, nullptr);
-+    for (uint32_t i = 0; i < alloc_info->bufferCount; i++) {
-+        cmdbufs[i] = static_cast<VkCmdBuffer_T*>(pool.allocator.pfnAlloc(
-+            pool.allocator.pUserData, sizeof(VkCmdBuffer_T),
-+            alignof(VkCmdBuffer_T), VK_SYSTEM_ALLOC_SCOPE_OBJECT));
-         if (!cmdbufs[i]) {
-             result = VK_ERROR_OUT_OF_HOST_MEMORY;
-             break;
-@@ -352,23 +387,22 @@ VkResult AllocCommandBuffers(VkDevice device,
-         cmdbufs[i]->dispatch.magic = HWVULKAN_DISPATCH_MAGIC;
-     }
-     if (result != VK_SUCCESS) {
--        for (uint32_t i = 0; i < alloc_info->count; i++) {
-+        for (uint32_t i = 0; i < alloc_info->bufferCount; i++) {
-             if (!cmdbufs[i])
-                 break;
--            alloc->pfnFree(alloc->pUserData, cmdbufs[i]);
-+            pool.allocator.pfnFree(pool.allocator.pUserData, cmdbufs[i]);
-         }
-     }
--
-     return result;
- }
- 
--void FreeCommandBuffers(VkDevice device,
--                        VkCmdPool,
-+void FreeCommandBuffers(VkDevice /*device*/,
-+                        VkCmdPool cmd_pool,
-                         uint32_t count,
-                         const VkCmdBuffer* cmdbufs) {
--    const VkAllocCallbacks* alloc = device->instance->alloc;
-+    CmdPool& pool = *GetCmdPoolFromHandle(cmd_pool);
-     for (uint32_t i = 0; i < count; i++)
--        alloc->pfnFree(alloc->pUserData, cmdbufs[i]);
-+        pool.allocator.pfnFree(pool.allocator.pUserData, cmdbufs[i]);
- }
- 
- // -----------------------------------------------------------------------------
-@@ -383,15 +417,17 @@ DEFINE_OBJECT_HANDLE_CONVERSION(DeviceMemory)
- 
- VkResult AllocMemory(VkDevice device,
-                      const VkMemoryAllocInfo* alloc_info,
-+                     const VkAllocCallbacks* allocator,
-                      VkDeviceMemory* mem_handle) {
-     if (SIZE_MAX - sizeof(DeviceMemory) <= alloc_info->allocationSize)
-         return VK_ERROR_OUT_OF_HOST_MEMORY;
-+    if (!allocator)
-+        allocator = &device->allocator;
- 
--    const VkAllocCallbacks* alloc = device->instance->alloc;
-     size_t size = sizeof(DeviceMemory) + size_t(alloc_info->allocationSize);
-     DeviceMemory* mem = static_cast<DeviceMemory*>(
--        alloc->pfnAlloc(alloc->pUserData, size, alignof(DeviceMemory),
--                        VK_SYSTEM_ALLOC_TYPE_API_OBJECT));
-+        allocator->pfnAlloc(allocator->pUserData, size, alignof(DeviceMemory),
-+                            VK_SYSTEM_ALLOC_SCOPE_OBJECT));
-     if (!mem)
-         return VK_ERROR_OUT_OF_HOST_MEMORY;
-     mem->size = size;
-@@ -399,10 +435,13 @@ VkResult AllocMemory(VkDevice device,
-     return VK_SUCCESS;
- }
- 
--void FreeMemory(VkDevice device, VkDeviceMemory mem_handle) {
--    const VkAllocCallbacks* alloc = device->instance->alloc;
-+void FreeMemory(VkDevice device,
-+                VkDeviceMemory mem_handle,
-+                const VkAllocCallbacks* allocator) {
-+    if (!allocator)
-+        allocator = &device->allocator;
-     DeviceMemory* mem = GetDeviceMemoryFromHandle(mem_handle);
--    alloc->pfnFree(alloc->pUserData, mem);
-+    allocator->pfnFree(allocator->pUserData, mem);
- }
- 
- VkResult MapMemory(VkDevice,
-@@ -427,16 +466,17 @@ DEFINE_OBJECT_HANDLE_CONVERSION(Buffer)
- 
- VkResult CreateBuffer(VkDevice device,
-                       const VkBufferCreateInfo* create_info,
-+                      const VkAllocCallbacks* allocator,
-                       VkBuffer* buffer_handle) {
-     ALOGW_IF(create_info->size > kMaxDeviceMemory,
-              "CreateBuffer: requested size 0x%" PRIx64
-              " exceeds max device memory size 0x%" PRIx64,
-              create_info->size, kMaxDeviceMemory);
--
--    const VkAllocCallbacks* alloc = device->instance->alloc;
-+    if (!allocator)
-+        allocator = &device->allocator;
-     Buffer* buffer = static_cast<Buffer*>(
--        alloc->pfnAlloc(alloc->pUserData, sizeof(Buffer), alignof(Buffer),
--                        VK_SYSTEM_ALLOC_TYPE_API_OBJECT));
-+        allocator->pfnAlloc(allocator->pUserData, sizeof(Buffer),
-+                            alignof(Buffer), VK_SYSTEM_ALLOC_SCOPE_OBJECT));
-     if (!buffer)
-         return VK_ERROR_OUT_OF_HOST_MEMORY;
-     buffer->size = create_info->size;
-@@ -453,10 +493,13 @@ void GetBufferMemoryRequirements(VkDevice,
-     requirements->memoryTypeBits = 0x1;
- }
- 
--void DestroyBuffer(VkDevice device, VkBuffer buffer_handle) {
--    const VkAllocCallbacks* alloc = device->instance->alloc;
-+void DestroyBuffer(VkDevice device,
-+                   VkBuffer buffer_handle,
-+                   const VkAllocCallbacks* allocator) {
-+    if (!allocator)
-+        allocator = &device->allocator;
-     Buffer* buffer = GetBufferFromHandle(buffer_handle);
--    alloc->pfnFree(alloc->pUserData, buffer);
-+    allocator->pfnFree(allocator->pUserData, buffer);
- }
- 
- // -----------------------------------------------------------------------------
-@@ -470,6 +513,7 @@ DEFINE_OBJECT_HANDLE_CONVERSION(Image)
- 
- VkResult CreateImage(VkDevice device,
-                      const VkImageCreateInfo* create_info,
-+                     const VkAllocCallbacks* allocator,
-                      VkImage* image_handle) {
-     if (create_info->imageType != VK_IMAGE_TYPE_2D ||
-         create_info->format != VK_FORMAT_R8G8B8A8_UNORM ||
-@@ -488,10 +532,11 @@ VkResult CreateImage(VkDevice device,
-              " exceeds max device memory size 0x%" PRIx64,
-              size, kMaxDeviceMemory);
- 
--    const VkAllocCallbacks* alloc = device->instance->alloc;
-+    if (!allocator)
-+        allocator = &device->allocator;
-     Image* image = static_cast<Image*>(
--        alloc->pfnAlloc(alloc->pUserData, sizeof(Image), alignof(Image),
--                        VK_SYSTEM_ALLOC_TYPE_API_OBJECT));
-+        allocator->pfnAlloc(allocator->pUserData, sizeof(Image), alignof(Image),
-+                            VK_SYSTEM_ALLOC_SCOPE_OBJECT));
-     if (!image)
-         return VK_ERROR_OUT_OF_HOST_MEMORY;
-     image->size = size;
-@@ -508,10 +553,13 @@ void GetImageMemoryRequirements(VkDevice,
-     requirements->memoryTypeBits = 0x1;
- }
- 
--void DestroyImage(VkDevice device, VkImage image_handle) {
--    const VkAllocCallbacks* alloc = device->instance->alloc;
-+void DestroyImage(VkDevice device,
-+                  VkImage image_handle,
-+                  const VkAllocCallbacks* allocator) {
-+    if (!allocator)
-+        allocator = &device->allocator;
-     Image* image = GetImageFromHandle(image_handle);
--    alloc->pfnFree(alloc->pUserData, image);
-+    allocator->pfnFree(allocator->pUserData, image);
- }
- 
- // -----------------------------------------------------------------------------
-@@ -519,20 +567,15 @@ void DestroyImage(VkDevice device, VkImage image_handle) {
- 
- VkResult CreateBufferView(VkDevice device,
-                           const VkBufferViewCreateInfo*,
-+                          const VkAllocCallbacks* /*allocator*/,
-                           VkBufferView* view) {
-     *view = AllocHandle(device, HandleType::kBufferView);
-     return VK_SUCCESS;
- }
- 
--VkResult CreateCommandPool(VkDevice device,
--                           const VkCmdPoolCreateInfo*,
--                           VkCmdPool* pool) {
--    *pool = AllocHandle(device, HandleType::kCmdPool);
--    return VK_SUCCESS;
--}
--
- VkResult CreateDescriptorPool(VkDevice device,
-                               const VkDescriptorPoolCreateInfo*,
-+                              const VkAllocCallbacks* /*allocator*/,
-                               VkDescriptorPool* pool) {
-     *pool = AllocHandle(device, HandleType::kDescriptorPool);
-     return VK_SUCCESS;
-@@ -541,13 +584,14 @@ VkResult CreateDescriptorPool(VkDevice device,
- VkResult AllocDescriptorSets(VkDevice device,
-                              const VkDescriptorSetAllocInfo* alloc_info,
-                              VkDescriptorSet* descriptor_sets) {
--    for (uint32_t i = 0; i < alloc_info->count; i++)
-+    for (uint32_t i = 0; i < alloc_info->setLayoutCount; i++)
-         descriptor_sets[i] = AllocHandle(device, HandleType::kDescriptorSet);
-     return VK_SUCCESS;
- }
- 
- VkResult CreateDescriptorSetLayout(VkDevice device,
-                                    const VkDescriptorSetLayoutCreateInfo*,
-+                                   const VkAllocCallbacks* /*allocator*/,
-                                    VkDescriptorSetLayout* layout) {
-     *layout = AllocHandle(device, HandleType::kDescriptorSetLayout);
-     return VK_SUCCESS;
-@@ -555,6 +599,7 @@ VkResult CreateDescriptorSetLayout(VkDevice device,
- 
- VkResult CreateEvent(VkDevice device,
-                      const VkEventCreateInfo*,
-+                     const VkAllocCallbacks* /*allocator*/,
-                      VkEvent* event) {
-     *event = AllocHandle(device, HandleType::kEvent);
-     return VK_SUCCESS;
-@@ -562,6 +607,7 @@ VkResult CreateEvent(VkDevice device,
- 
- VkResult CreateFence(VkDevice device,
-                      const VkFenceCreateInfo*,
-+                     const VkAllocCallbacks* /*allocator*/,
-                      VkFence* fence) {
-     *fence = AllocHandle(device, HandleType::kFence);
-     return VK_SUCCESS;
-@@ -569,6 +615,7 @@ VkResult CreateFence(VkDevice device,
- 
- VkResult CreateFramebuffer(VkDevice device,
-                            const VkFramebufferCreateInfo*,
-+                           const VkAllocCallbacks* /*allocator*/,
-                            VkFramebuffer* framebuffer) {
-     *framebuffer = AllocHandle(device, HandleType::kFramebuffer);
-     return VK_SUCCESS;
-@@ -576,6 +623,7 @@ VkResult CreateFramebuffer(VkDevice device,
- 
- VkResult CreateImageView(VkDevice device,
-                          const VkImageViewCreateInfo*,
-+                         const VkAllocCallbacks* /*allocator*/,
-                          VkImageView* view) {
-     *view = AllocHandle(device, HandleType::kImageView);
-     return VK_SUCCESS;
-@@ -585,6 +633,7 @@ VkResult CreateGraphicsPipelines(VkDevice device,
-                                  VkPipelineCache,
-                                  uint32_t count,
-                                  const VkGraphicsPipelineCreateInfo*,
-+                                 const VkAllocCallbacks* /*allocator*/,
-                                  VkPipeline* pipelines) {
-     for (uint32_t i = 0; i < count; i++)
-         pipelines[i] = AllocHandle(device, HandleType::kPipeline);
-@@ -595,6 +644,7 @@ VkResult CreateComputePipelines(VkDevice device,
-                                 VkPipelineCache,
-                                 uint32_t count,
-                                 const VkComputePipelineCreateInfo*,
-+                                const VkAllocCallbacks* /*allocator*/,
-                                 VkPipeline* pipelines) {
-     for (uint32_t i = 0; i < count; i++)
-         pipelines[i] = AllocHandle(device, HandleType::kPipeline);
-@@ -603,6 +653,7 @@ VkResult CreateComputePipelines(VkDevice device,
- 
- VkResult CreatePipelineCache(VkDevice device,
-                              const VkPipelineCacheCreateInfo*,
-+                             const VkAllocCallbacks* /*allocator*/,
-                              VkPipelineCache* cache) {
-     *cache = AllocHandle(device, HandleType::kPipelineCache);
-     return VK_SUCCESS;
-@@ -610,6 +661,7 @@ VkResult CreatePipelineCache(VkDevice device,
- 
- VkResult CreatePipelineLayout(VkDevice device,
-                               const VkPipelineLayoutCreateInfo*,
-+                              const VkAllocCallbacks* /*allocator*/,
-                               VkPipelineLayout* layout) {
-     *layout = AllocHandle(device, HandleType::kPipelineLayout);
-     return VK_SUCCESS;
-@@ -617,6 +669,7 @@ VkResult CreatePipelineLayout(VkDevice device,
- 
- VkResult CreateQueryPool(VkDevice device,
-                          const VkQueryPoolCreateInfo*,
-+                         const VkAllocCallbacks* /*allocator*/,
-                          VkQueryPool* pool) {
-     *pool = AllocHandle(device, HandleType::kQueryPool);
-     return VK_SUCCESS;
-@@ -624,6 +677,7 @@ VkResult CreateQueryPool(VkDevice device,
- 
- VkResult CreateRenderPass(VkDevice device,
-                           const VkRenderPassCreateInfo*,
-+                          const VkAllocCallbacks* /*allocator*/,
-                           VkRenderPass* renderpass) {
-     *renderpass = AllocHandle(device, HandleType::kRenderPass);
-     return VK_SUCCESS;
-@@ -631,6 +685,7 @@ VkResult CreateRenderPass(VkDevice device,
- 
- VkResult CreateSampler(VkDevice device,
-                        const VkSamplerCreateInfo*,
-+                       const VkAllocCallbacks* /*allocator*/,
-                        VkSampler* sampler) {
-     *sampler = AllocHandle(device, HandleType::kSampler);
-     return VK_SUCCESS;
-@@ -638,6 +693,7 @@ VkResult CreateSampler(VkDevice device,
- 
- VkResult CreateSemaphore(VkDevice device,
-                          const VkSemaphoreCreateInfo*,
-+                         const VkAllocCallbacks* /*allocator*/,
-                          VkSemaphore* semaphore) {
-     *semaphore = AllocHandle(device, HandleType::kSemaphore);
-     return VK_SUCCESS;
-@@ -645,6 +701,7 @@ VkResult CreateSemaphore(VkDevice device,
- 
- VkResult CreateShader(VkDevice device,
-                       const VkShaderCreateInfo*,
-+                      const VkAllocCallbacks* /*allocator*/,
-                       VkShader* shader) {
-     *shader = AllocHandle(device, HandleType::kShader);
-     return VK_SUCCESS;
-@@ -652,6 +709,7 @@ VkResult CreateShader(VkDevice device,
- 
- VkResult CreateShaderModule(VkDevice device,
-                             const VkShaderModuleCreateInfo*,
-+                            const VkAllocCallbacks* /*allocator*/,
-                             VkShaderModule* module) {
-     *module = AllocHandle(device, HandleType::kShaderModule);
-     return VK_SUCCESS;
-@@ -772,7 +830,7 @@ VkResult QueueBindSparseImageMemory(VkQueue queue, VkImage image, uint32_t numBi
-     return VK_SUCCESS;
- }
- 
--void DestroyFence(VkDevice device, VkFence fence) {
-+void DestroyFence(VkDevice device, VkFence fence, const VkAllocCallbacks* allocator) {
- }
- 
- VkResult ResetFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences) {
-@@ -788,10 +846,10 @@ VkResult WaitForFences(VkDevice device, uint32_t fenceCount, const VkFence* pFen
-     return VK_SUCCESS;
- }
- 
--void DestroySemaphore(VkDevice device, VkSemaphore semaphore) {
-+void DestroySemaphore(VkDevice device, VkSemaphore semaphore, const VkAllocCallbacks* allocator) {
- }
- 
--void DestroyEvent(VkDevice device, VkEvent event) {
-+void DestroyEvent(VkDevice device, VkEvent event, const VkAllocCallbacks* allocator) {
- }
- 
- VkResult GetEventStatus(VkDevice device, VkEvent event) {
-@@ -809,7 +867,7 @@ VkResult ResetEvent(VkDevice device, VkEvent event) {
-     return VK_SUCCESS;
- }
- 
--void DestroyQueryPool(VkDevice device, VkQueryPool queryPool) {
-+void DestroyQueryPool(VkDevice device, VkQueryPool queryPool, const VkAllocCallbacks* allocator) {
- }
- 
- VkResult GetQueryPoolResults(VkDevice device, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, size_t dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags) {
-@@ -817,23 +875,23 @@ VkResult GetQueryPoolResults(VkDevice device, VkQueryPool queryPool, uint32_t st
-     return VK_SUCCESS;
- }
- 
--void DestroyBufferView(VkDevice device, VkBufferView bufferView) {
-+void DestroyBufferView(VkDevice device, VkBufferView bufferView, const VkAllocCallbacks* allocator) {
- }
- 
- void GetImageSubresourceLayout(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout) {
-     ALOGV("TODO: vk%s", __FUNCTION__);
- }
- 
--void DestroyImageView(VkDevice device, VkImageView imageView) {
-+void DestroyImageView(VkDevice device, VkImageView imageView, const VkAllocCallbacks* allocator) {
- }
- 
--void DestroyShaderModule(VkDevice device, VkShaderModule shaderModule) {
-+void DestroyShaderModule(VkDevice device, VkShaderModule shaderModule, const VkAllocCallbacks* allocator) {
- }
- 
--void DestroyShader(VkDevice device, VkShader shader) {
-+void DestroyShader(VkDevice device, VkShader shader, const VkAllocCallbacks* allocator) {
- }
- 
--void DestroyPipelineCache(VkDevice device, VkPipelineCache pipelineCache) {
-+void DestroyPipelineCache(VkDevice device, VkPipelineCache pipelineCache, const VkAllocCallbacks* allocator) {
- }
- 
- VkResult GetPipelineCacheData(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData) {
-@@ -846,19 +904,19 @@ VkResult MergePipelineCaches(VkDevice device, VkPipelineCache destCache, uint32_
-     return VK_SUCCESS;
- }
- 
--void DestroyPipeline(VkDevice device, VkPipeline pipeline) {
-+void DestroyPipeline(VkDevice device, VkPipeline pipeline, const VkAllocCallbacks* allocator) {
- }
- 
--void DestroyPipelineLayout(VkDevice device, VkPipelineLayout pipelineLayout) {
-+void DestroyPipelineLayout(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocCallbacks* allocator) {
- }
- 
--void DestroySampler(VkDevice device, VkSampler sampler) {
-+void DestroySampler(VkDevice device, VkSampler sampler, const VkAllocCallbacks* allocator) {
- }
- 
--void DestroyDescriptorSetLayout(VkDevice device, VkDescriptorSetLayout descriptorSetLayout) {
-+void DestroyDescriptorSetLayout(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocCallbacks* allocator) {
- }
- 
--void DestroyDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool) {
-+void DestroyDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocCallbacks* allocator) {
- }
- 
- VkResult ResetDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags) {
-@@ -875,19 +933,16 @@ VkResult FreeDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool, ui
-     return VK_SUCCESS;
- }
- 
--void DestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer) {
-+void DestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer, const VkAllocCallbacks* allocator) {
- }
- 
--void DestroyRenderPass(VkDevice device, VkRenderPass renderPass) {
-+void DestroyRenderPass(VkDevice device, VkRenderPass renderPass, const VkAllocCallbacks* allocator) {
- }
- 
- void GetRenderAreaGranularity(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity) {
-     ALOGV("TODO: vk%s", __FUNCTION__);
- }
- 
--void DestroyCommandPool(VkDevice device, VkCmdPool cmdPool) {
--}
--
- VkResult ResetCommandPool(VkDevice device, VkCmdPool cmdPool, VkCmdPoolResetFlags flags) {
-     ALOGV("TODO: vk%s", __FUNCTION__);
-     return VK_SUCCESS;
-diff --git a/vulkan/nulldrv/null_driver.h b/vulkan/nulldrv/null_driver.h
-index f07d61c..557d0db 100644
---- a/vulkan/nulldrv/null_driver.h
-+++ b/vulkan/nulldrv/null_driver.h
-@@ -27,7 +27,7 @@ PFN_vkVoidFunction LookupInstanceProcAddr(const char* name);
- PFN_vkVoidFunction LookupDeviceProcAddr(const char* name);
- 
- // clang-format off
--void DestroyInstance(VkInstance instance);
-+void DestroyInstance(VkInstance instance, const VkAllocCallbacks* allocator);
- VkResult EnumeratePhysicalDevices(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);
- void GetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures);
- void GetPhysicalDeviceFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties);
-@@ -37,8 +37,8 @@ void GetPhysicalDeviceQueueFamilyProperties(VkPhysicalDevice physicalDevice, uin
- void GetPhysicalDeviceMemoryProperties(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties);
- PFN_vkVoidFunction GetInstanceProcAddr(VkInstance instance, const char* pName);
- PFN_vkVoidFunction GetDeviceProcAddr(VkDevice device, const char* pName);
--VkResult CreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, VkDevice* pDevice);
--void DestroyDevice(VkDevice device);
-+VkResult CreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocCallbacks* allocator, VkDevice* pDevice);
-+void DestroyDevice(VkDevice device, const VkAllocCallbacks* allocator);
- VkResult EnumerateInstanceExtensionProperties(const char* pLayerName, uint32_t* pCount, VkExtensionProperties* pProperties);
- VkResult EnumerateDeviceExtensionProperties(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pCount, VkExtensionProperties* pProperties);
- VkResult EnumerateInstanceLayerProperties(uint32_t* pCount, VkLayerProperties* pProperties);
-@@ -47,8 +47,8 @@ void GetDeviceQueue(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIn
- VkResult QueueSubmit(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmitInfo, VkFence fence);
- VkResult QueueWaitIdle(VkQueue queue);
- VkResult DeviceWaitIdle(VkDevice device);
--VkResult AllocMemory(VkDevice device, const VkMemoryAllocInfo* pAllocInfo, VkDeviceMemory* pMem);
--void FreeMemory(VkDevice device, VkDeviceMemory mem);
-+VkResult AllocMemory(VkDevice device, const VkMemoryAllocInfo* pAllocInfo, const VkAllocCallbacks* allocator, VkDeviceMemory* pMem);
-+void FreeMemory(VkDevice device, VkDeviceMemory mem, const VkAllocCallbacks* allocator);
- VkResult MapMemory(VkDevice device, VkDeviceMemory mem, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData);
- void UnmapMemory(VkDevice device, VkDeviceMemory mem);
- VkResult FlushMappedMemoryRanges(VkDevice device, uint32_t memRangeCount, const VkMappedMemoryRange* pMemRanges);
-@@ -63,60 +63,60 @@ void GetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevic
- VkResult QueueBindSparseBufferMemory(VkQueue queue, VkBuffer buffer, uint32_t numBindings, const VkSparseMemoryBindInfo* pBindInfo);
- VkResult QueueBindSparseImageOpaqueMemory(VkQueue queue, VkImage image, uint32_t numBindings, const VkSparseMemoryBindInfo* pBindInfo);
- VkResult QueueBindSparseImageMemory(VkQueue queue, VkImage image, uint32_t numBindings, const VkSparseImageMemoryBindInfo* pBindInfo);
--VkResult CreateFence(VkDevice device, const VkFenceCreateInfo* pCreateInfo, VkFence* pFence);
--void DestroyFence(VkDevice device, VkFence fence);
-+VkResult CreateFence(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocCallbacks* allocator, VkFence* pFence);
-+void DestroyFence(VkDevice device, VkFence fence, const VkAllocCallbacks* allocator);
- VkResult ResetFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences);
- VkResult GetFenceStatus(VkDevice device, VkFence fence);
- VkResult WaitForFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout);
--VkResult CreateSemaphore(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, VkSemaphore* pSemaphore);
--void DestroySemaphore(VkDevice device, VkSemaphore semaphore);
--VkResult CreateEvent(VkDevice device, const VkEventCreateInfo* pCreateInfo, VkEvent* pEvent);
--void DestroyEvent(VkDevice device, VkEvent event);
-+VkResult CreateSemaphore(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocCallbacks* allocator, VkSemaphore* pSemaphore);
-+void DestroySemaphore(VkDevice device, VkSemaphore semaphore, const VkAllocCallbacks* allocator);
-+VkResult CreateEvent(VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocCallbacks* allocator, VkEvent* pEvent);
-+void DestroyEvent(VkDevice device, VkEvent event, const VkAllocCallbacks* allocator);
- VkResult GetEventStatus(VkDevice device, VkEvent event);
- VkResult SetEvent(VkDevice device, VkEvent event);
- VkResult ResetEvent(VkDevice device, VkEvent event);
--VkResult CreateQueryPool(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, VkQueryPool* pQueryPool);
--void DestroyQueryPool(VkDevice device, VkQueryPool queryPool);
-+VkResult CreateQueryPool(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocCallbacks* allocator, VkQueryPool* pQueryPool);
-+void DestroyQueryPool(VkDevice device, VkQueryPool queryPool, const VkAllocCallbacks* allocator);
- VkResult GetQueryPoolResults(VkDevice device, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, size_t dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags);
--VkResult CreateBuffer(VkDevice device, const VkBufferCreateInfo* pCreateInfo, VkBuffer* pBuffer);
--void DestroyBuffer(VkDevice device, VkBuffer buffer);
--VkResult CreateBufferView(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, VkBufferView* pView);
--void DestroyBufferView(VkDevice device, VkBufferView bufferView);
--VkResult CreateImage(VkDevice device, const VkImageCreateInfo* pCreateInfo, VkImage* pImage);
--void DestroyImage(VkDevice device, VkImage image);
-+VkResult CreateBuffer(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocCallbacks* allocator, VkBuffer* pBuffer);
-+void DestroyBuffer(VkDevice device, VkBuffer buffer, const VkAllocCallbacks* allocator);
-+VkResult CreateBufferView(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocCallbacks* allocator, VkBufferView* pView);
-+void DestroyBufferView(VkDevice device, VkBufferView bufferView, const VkAllocCallbacks* allocator);
-+VkResult CreateImage(VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocCallbacks* allocator, VkImage* pImage);
-+void DestroyImage(VkDevice device, VkImage image, const VkAllocCallbacks* allocator);
- void GetImageSubresourceLayout(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout);
--VkResult CreateImageView(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, VkImageView* pView);
--void DestroyImageView(VkDevice device, VkImageView imageView);
--VkResult CreateShaderModule(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, VkShaderModule* pShaderModule);
--void DestroyShaderModule(VkDevice device, VkShaderModule shaderModule);
--VkResult CreateShader(VkDevice device, const VkShaderCreateInfo* pCreateInfo, VkShader* pShader);
--void DestroyShader(VkDevice device, VkShader shader);
--VkResult CreatePipelineCache(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, VkPipelineCache* pPipelineCache);
--void DestroyPipelineCache(VkDevice device, VkPipelineCache pipelineCache);
-+VkResult CreateImageView(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocCallbacks* allocator, VkImageView* pView);
-+void DestroyImageView(VkDevice device, VkImageView imageView, const VkAllocCallbacks* allocator);
-+VkResult CreateShaderModule(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocCallbacks* allocator, VkShaderModule* pShaderModule);
-+void DestroyShaderModule(VkDevice device, VkShaderModule shaderModule, const VkAllocCallbacks* allocator);
-+VkResult CreateShader(VkDevice device, const VkShaderCreateInfo* pCreateInfo, const VkAllocCallbacks* allocator, VkShader* pShader);
-+void DestroyShader(VkDevice device, VkShader shader, const VkAllocCallbacks* allocator);
-+VkResult CreatePipelineCache(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocCallbacks* allocator, VkPipelineCache* pPipelineCache);
-+void DestroyPipelineCache(VkDevice device, VkPipelineCache pipelineCache, const VkAllocCallbacks* allocator);
- VkResult GetPipelineCacheData(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData);
- VkResult MergePipelineCaches(VkDevice device, VkPipelineCache destCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches);
--VkResult CreateGraphicsPipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t count, const VkGraphicsPipelineCreateInfo* pCreateInfos, VkPipeline* pPipelines);
--VkResult CreateComputePipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t count, const VkComputePipelineCreateInfo* pCreateInfos, VkPipeline* pPipelines);
--void DestroyPipeline(VkDevice device, VkPipeline pipeline);
--VkResult CreatePipelineLayout(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, VkPipelineLayout* pPipelineLayout);
--void DestroyPipelineLayout(VkDevice device, VkPipelineLayout pipelineLayout);
--VkResult CreateSampler(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, VkSampler* pSampler);
--void DestroySampler(VkDevice device, VkSampler sampler);
--VkResult CreateDescriptorSetLayout(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayout* pSetLayout);
--void DestroyDescriptorSetLayout(VkDevice device, VkDescriptorSetLayout descriptorSetLayout);
--VkResult CreateDescriptorPool(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool);
--void DestroyDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool);
-+VkResult CreateGraphicsPipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t count, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocCallbacks* allocator, VkPipeline* pPipelines);
-+VkResult CreateComputePipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t count, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocCallbacks* allocator, VkPipeline* pPipelines);
-+void DestroyPipeline(VkDevice device, VkPipeline pipeline, const VkAllocCallbacks* allocator);
-+VkResult CreatePipelineLayout(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocCallbacks* allocator, VkPipelineLayout* pPipelineLayout);
-+void DestroyPipelineLayout(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocCallbacks* allocator);
-+VkResult CreateSampler(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocCallbacks* allocator, VkSampler* pSampler);
-+void DestroySampler(VkDevice device, VkSampler sampler, const VkAllocCallbacks* allocator);
-+VkResult CreateDescriptorSetLayout(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocCallbacks* allocator, VkDescriptorSetLayout* pSetLayout);
-+void DestroyDescriptorSetLayout(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocCallbacks* allocator);
-+VkResult CreateDescriptorPool(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocCallbacks* allocator, VkDescriptorPool* pDescriptorPool);
-+void DestroyDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocCallbacks* allocator);
- VkResult ResetDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags);
- VkResult AllocDescriptorSets(VkDevice device, const VkDescriptorSetAllocInfo* pAllocInfo, VkDescriptorSet* pDescriptorSets);
- VkResult FreeDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool, uint32_t count, const VkDescriptorSet* pDescriptorSets);
- void UpdateDescriptorSets(VkDevice device, uint32_t writeCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t copyCount, const VkCopyDescriptorSet* pDescriptorCopies);
--VkResult CreateFramebuffer(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, VkFramebuffer* pFramebuffer);
--void DestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer);
--VkResult CreateRenderPass(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, VkRenderPass* pRenderPass);
--void DestroyRenderPass(VkDevice device, VkRenderPass renderPass);
-+VkResult CreateFramebuffer(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocCallbacks* allocator, VkFramebuffer* pFramebuffer);
-+void DestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer, const VkAllocCallbacks* allocator);
-+VkResult CreateRenderPass(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocCallbacks* allocator, VkRenderPass* pRenderPass);
-+void DestroyRenderPass(VkDevice device, VkRenderPass renderPass, const VkAllocCallbacks* allocator);
- void GetRenderAreaGranularity(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity);
--VkResult CreateCommandPool(VkDevice device, const VkCmdPoolCreateInfo* pCreateInfo, VkCmdPool* pCmdPool);
--void DestroyCommandPool(VkDevice device, VkCmdPool cmdPool);
-+VkResult CreateCommandPool(VkDevice device, const VkCmdPoolCreateInfo* pCreateInfo, const VkAllocCallbacks* allocator, VkCmdPool* pCmdPool);
-+void DestroyCommandPool(VkDevice device, VkCmdPool cmdPool, const VkAllocCallbacks* allocator);
- VkResult ResetCommandPool(VkDevice device, VkCmdPool cmdPool, VkCmdPoolResetFlags flags);
- VkResult AllocCommandBuffers(VkDevice device, const VkCmdBufferAllocInfo* pAllocInfo, VkCmdBuffer* pCmdBuffers);
- void FreeCommandBuffers(VkDevice device, VkCmdPool cmdPool, uint32_t count, const VkCmdBuffer* pCommandBuffers);
-diff --git a/vulkan/tools/vkinfo.cpp b/vulkan/tools/vkinfo.cpp
-index f92b62c..63e0d5f 100644
---- a/vulkan/tools/vkinfo.cpp
-+++ b/vulkan/tools/vkinfo.cpp
-@@ -158,13 +158,12 @@ int main(int /*argc*/, char const* /*argv*/ []) {
-         .sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
-         .pNext = nullptr,
-         .pAppInfo = nullptr,
--        .pAllocCb = nullptr,
--        .layerCount = 0,
-+        .enabledLayerNameCount = 0,
-         .ppEnabledLayerNames = nullptr,
--        .extensionCount = 0,
-+        .enabledExtensionNameCount = 0,
-         .ppEnabledExtensionNames = nullptr,
-     };
--    result = vkCreateInstance(&create_info, &instance);
-+    result = vkCreateInstance(&create_info, nullptr, &instance);
-     if (result != VK_SUCCESS)
-         die("vkCreateInstance", result);
- 
-@@ -189,7 +188,7 @@ int main(int /*argc*/, char const* /*argv*/ []) {
-     for (uint32_t i = 0; i < physical_devices.size(); i++)
-         DumpPhysicalDevice(i, physical_devices[i]);
- 
--    vkDestroyInstance(instance);
-+    vkDestroyInstance(instance, nullptr);
- 
-     return 0;
- }
--- 
-2.6.0.rc2.230.g3dd15c0
-
diff --git a/vulkan/patches/frameworks_native-sdk_0.10/0013-vulkan-Update-from-version-0.188.0-to-0.189.0.patch b/vulkan/patches/frameworks_native-sdk_0.10/0013-vulkan-Update-from-version-0.188.0-to-0.189.0.patch
deleted file mode 100644
index 5c4a6d0..0000000
--- a/vulkan/patches/frameworks_native-sdk_0.10/0013-vulkan-Update-from-version-0.188.0-to-0.189.0.patch
+++ /dev/null
@@ -1,245 +0,0 @@
-From 48c1928e091dd7eb6ca4fc6564e0be072028c38a Mon Sep 17 00:00:00 2001
-From: Jesse Hall <jessehall@google.com>
-Date: Sun, 29 Nov 2015 14:36:39 -0800
-Subject: [PATCH] vulkan: Update from version 0.188.0 to 0.189.0
-
-Change-Id: Ib8171ce1d3f804f9a866e1c216db0911043056c6
----
- vulkan/api/vulkan.api          | 42 +++++++++++++-------------
- vulkan/include/vulkan/vulkan.h | 68 +++++++++++++++++++++---------------------
- vulkan/libvulkan/entry.cpp     |  2 +-
- vulkan/nulldrv/null_driver.cpp |  2 +-
- vulkan/nulldrv/null_driver.h   |  2 +-
- 5 files changed, 58 insertions(+), 58 deletions(-)
-
-diff --git a/vulkan/api/vulkan.api b/vulkan/api/vulkan.api
-index b95c96e..5d0a7f8 100644
---- a/vulkan/api/vulkan.api
-+++ b/vulkan/api/vulkan.api
-@@ -27,7 +27,7 @@ import platform "platform.api"
- 
- // API version (major.minor.patch)
- define VERSION_MAJOR 0
--define VERSION_MINOR 188
-+define VERSION_MINOR 189
- define VERSION_PATCH 0
- 
- // API limits
-@@ -256,23 +256,23 @@ enum VkIndexType {
-     VK_INDEX_TYPE_UINT32                                    = 0x00000001,
- }
- 
--enum VkTexFilter {
--    VK_TEX_FILTER_NEAREST                                   = 0x00000000,
--    VK_TEX_FILTER_LINEAR                                    = 0x00000001,
-+enum VkFilter {
-+    VK_FILTER_NEAREST                                       = 0x00000000,
-+    VK_FILTER_LINEAR                                        = 0x00000001,
- }
- 
--enum VkTexMipmapMode {
--    VK_TEX_MIPMAP_MODE_BASE                                 = 0x00000000,   /// Always choose base level
--    VK_TEX_MIPMAP_MODE_NEAREST                              = 0x00000001,   /// Choose nearest mip level
--    VK_TEX_MIPMAP_MODE_LINEAR                               = 0x00000002,   /// Linear filter between mip levels
-+enum VkSamplerMipmapMode {
-+    VK_SAMPLER_MIPMAP_MODE_BASE                             = 0x00000000,   /// Always choose base level
-+    VK_SAMPLER_MIPMAP_MODE_NEAREST                          = 0x00000001,   /// Choose nearest mip level
-+    VK_SAMPLER_MIPMAP_MODE_LINEAR                           = 0x00000002,   /// Linear filter between mip levels
- }
- 
--enum VkTexAddressMode {
--    VK_TEX_ADDRESS_MODE_WRAP                                = 0x00000000,
--    VK_TEX_ADDRESS_MODE_MIRROR                              = 0x00000001,
--    VK_TEX_ADDRESS_MODE_CLAMP                               = 0x00000002,
--    VK_TEX_ADDRESS_MODE_MIRROR_ONCE                         = 0x00000003,
--    VK_TEX_ADDRESS_MODE_CLAMP_BORDER                        = 0x00000004,
-+enum VkSamplerAddressMode {
-+    VK_SAMPLER_ADDRESS_MODE_WRAP                            = 0x00000000,
-+    VK_SAMPLER_ADDRESS_MODE_MIRROR                          = 0x00000001,
-+    VK_SAMPLER_ADDRESS_MODE_CLAMP                           = 0x00000002,
-+    VK_SAMPLER_ADDRESS_MODE_MIRROR_ONCE                     = 0x00000003,
-+    VK_SAMPLER_ADDRESS_MODE_CLAMP_BORDER                    = 0x00000004,
- }
- 
- enum VkCompareOp {
-@@ -1730,12 +1730,12 @@ class VkPipelineLayoutCreateInfo {
- class VkSamplerCreateInfo {
-     VkStructureType                             sType          /// Must be VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO
-     const void*                                 pNext          /// Pointer to next structure
--    VkTexFilter                                 magFilter      /// Filter mode for magnification
--    VkTexFilter                                 minFilter      /// Filter mode for minifiation
--    VkTexMipmapMode                             mipMode        /// Mipmap selection mode
--    VkTexAddressMode                            addressModeU
--    VkTexAddressMode                            addressModeV
--    VkTexAddressMode                            addressModeW
-+    VkFilter                                    magFilter      /// Filter mode for magnification
-+    VkFilter                                    minFilter      /// Filter mode for minifiation
-+    VkSamplerMipmapMode                         mipmapMode     /// Mipmap selection mode
-+    VkSamplerAddressMode                        addressModeU
-+    VkSamplerAddressMode                        addressModeV
-+    VkSamplerAddressMode                        addressModeW
-     f32                                         mipLodBias
-     f32                                         maxAnisotropy
-     VkBool32                                    compareEnable
-@@ -4089,7 +4089,7 @@ cmd void vkCmdBlitImage(
-         VkImageLayout                               destImageLayout,
-         u32                                         regionCount,
-         const VkImageBlit*                          pRegions,
--        VkTexFilter                                 filter) {
-+        VkFilter                                    filter) {
-     cmdBufferObject := GetCmdBuffer(cmdBuffer)
-     srcImageObject := GetImage(srcImage)
-     destImageObject := GetImage(destImage)
-diff --git a/vulkan/include/vulkan/vulkan.h b/vulkan/include/vulkan/vulkan.h
-index d061988..dc977e5 100644
---- a/vulkan/include/vulkan/vulkan.h
-+++ b/vulkan/include/vulkan/vulkan.h
-@@ -41,7 +41,7 @@ extern "C" {
-     ((major << 22) | (minor << 12) | patch)
- 
- // Vulkan API version supported by this file
--#define VK_API_VERSION VK_MAKE_VERSION(0, 188, 0)
-+#define VK_API_VERSION VK_MAKE_VERSION(0, 189, 0)
- 
- 
- #define VK_NULL_HANDLE 0
-@@ -647,35 +647,35 @@ typedef enum {
- } VkDynamicState;
- 
- typedef enum {
--    VK_TEX_FILTER_NEAREST = 0,
--    VK_TEX_FILTER_LINEAR = 1,
--    VK_TEX_FILTER_BEGIN_RANGE = VK_TEX_FILTER_NEAREST,
--    VK_TEX_FILTER_END_RANGE = VK_TEX_FILTER_LINEAR,
--    VK_TEX_FILTER_NUM = (VK_TEX_FILTER_LINEAR - VK_TEX_FILTER_NEAREST + 1),
--    VK_TEX_FILTER_MAX_ENUM = 0x7FFFFFFF
--} VkTexFilter;
-+    VK_FILTER_NEAREST = 0,
-+    VK_FILTER_LINEAR = 1,
-+    VK_FILTER_BEGIN_RANGE = VK_FILTER_NEAREST,
-+    VK_FILTER_END_RANGE = VK_FILTER_LINEAR,
-+    VK_FILTER_NUM = (VK_FILTER_LINEAR - VK_FILTER_NEAREST + 1),
-+    VK_FILTER_MAX_ENUM = 0x7FFFFFFF
-+} VkFilter;
- 
- typedef enum {
--    VK_TEX_MIPMAP_MODE_BASE = 0,
--    VK_TEX_MIPMAP_MODE_NEAREST = 1,
--    VK_TEX_MIPMAP_MODE_LINEAR = 2,
--    VK_TEX_MIPMAP_MODE_BEGIN_RANGE = VK_TEX_MIPMAP_MODE_BASE,
--    VK_TEX_MIPMAP_MODE_END_RANGE = VK_TEX_MIPMAP_MODE_LINEAR,
--    VK_TEX_MIPMAP_MODE_NUM = (VK_TEX_MIPMAP_MODE_LINEAR - VK_TEX_MIPMAP_MODE_BASE + 1),
--    VK_TEX_MIPMAP_MODE_MAX_ENUM = 0x7FFFFFFF
--} VkTexMipmapMode;
-+    VK_SAMPLER_MIPMAP_MODE_BASE = 0,
-+    VK_SAMPLER_MIPMAP_MODE_NEAREST = 1,
-+    VK_SAMPLER_MIPMAP_MODE_LINEAR = 2,
-+    VK_SAMPLER_MIPMAP_MODE_BEGIN_RANGE = VK_SAMPLER_MIPMAP_MODE_BASE,
-+    VK_SAMPLER_MIPMAP_MODE_END_RANGE = VK_SAMPLER_MIPMAP_MODE_LINEAR,
-+    VK_SAMPLER_MIPMAP_MODE_NUM = (VK_SAMPLER_MIPMAP_MODE_LINEAR - VK_SAMPLER_MIPMAP_MODE_BASE + 1),
-+    VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 0x7FFFFFFF
-+} VkSamplerMipmapMode;
- 
- typedef enum {
--    VK_TEX_ADDRESS_MODE_WRAP = 0,
--    VK_TEX_ADDRESS_MODE_MIRROR = 1,
--    VK_TEX_ADDRESS_MODE_CLAMP = 2,
--    VK_TEX_ADDRESS_MODE_MIRROR_ONCE = 3,
--    VK_TEX_ADDRESS_MODE_CLAMP_BORDER = 4,
--    VK_TEX_ADDRESS_MODE_BEGIN_RANGE = VK_TEX_ADDRESS_MODE_WRAP,
--    VK_TEX_ADDRESS_MODE_END_RANGE = VK_TEX_ADDRESS_MODE_CLAMP_BORDER,
--    VK_TEX_ADDRESS_MODE_NUM = (VK_TEX_ADDRESS_MODE_CLAMP_BORDER - VK_TEX_ADDRESS_MODE_WRAP + 1),
--    VK_TEX_ADDRESS_MODE_MAX_ENUM = 0x7FFFFFFF
--} VkTexAddressMode;
-+    VK_SAMPLER_ADDRESS_MODE_WRAP = 0,
-+    VK_SAMPLER_ADDRESS_MODE_MIRROR = 1,
-+    VK_SAMPLER_ADDRESS_MODE_CLAMP = 2,
-+    VK_SAMPLER_ADDRESS_MODE_MIRROR_ONCE = 3,
-+    VK_SAMPLER_ADDRESS_MODE_CLAMP_BORDER = 4,
-+    VK_SAMPLER_ADDRESS_MODE_BEGIN_RANGE = VK_SAMPLER_ADDRESS_MODE_WRAP,
-+    VK_SAMPLER_ADDRESS_MODE_END_RANGE = VK_SAMPLER_ADDRESS_MODE_CLAMP_BORDER,
-+    VK_SAMPLER_ADDRESS_MODE_NUM = (VK_SAMPLER_ADDRESS_MODE_CLAMP_BORDER - VK_SAMPLER_ADDRESS_MODE_WRAP + 1),
-+    VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 0x7FFFFFFF
-+} VkSamplerAddressMode;
- 
- typedef enum {
-     VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0,
-@@ -1756,12 +1756,12 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
--    VkTexFilter                                 magFilter;
--    VkTexFilter                                 minFilter;
--    VkTexMipmapMode                             mipMode;
--    VkTexAddressMode                            addressModeU;
--    VkTexAddressMode                            addressModeV;
--    VkTexAddressMode                            addressModeW;
-+    VkFilter                                    magFilter;
-+    VkFilter                                    minFilter;
-+    VkSamplerMipmapMode                         mipmapMode;
-+    VkSamplerAddressMode                        addressModeU;
-+    VkSamplerAddressMode                        addressModeV;
-+    VkSamplerAddressMode                        addressModeW;
-     float                                       mipLodBias;
-     float                                       maxAnisotropy;
-     VkBool32                                    compareEnable;
-@@ -2194,7 +2194,7 @@ typedef void (VKAPI *PFN_vkCmdDispatch)(VkCmdBuffer cmdBuffer, uint32_t x, uint3
- typedef void (VKAPI *PFN_vkCmdDispatchIndirect)(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset);
- typedef void (VKAPI *PFN_vkCmdCopyBuffer)(VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkBuffer destBuffer, uint32_t regionCount, const VkBufferCopy* pRegions);
- typedef void (VKAPI *PFN_vkCmdCopyImage)(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageCopy* pRegions);
--typedef void (VKAPI *PFN_vkCmdBlitImage)(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkTexFilter filter);
-+typedef void (VKAPI *PFN_vkCmdBlitImage)(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter);
- typedef void (VKAPI *PFN_vkCmdCopyBufferToImage)(VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions);
- typedef void (VKAPI *PFN_vkCmdCopyImageToBuffer)(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer destBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions);
- typedef void (VKAPI *PFN_vkCmdUpdateBuffer)(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize dataSize, const uint32_t* pData);
-@@ -2880,7 +2880,7 @@ void VKAPI vkCmdBlitImage(
-     VkImageLayout                               destImageLayout,
-     uint32_t                                    regionCount,
-     const VkImageBlit*                          pRegions,
--    VkTexFilter                                 filter);
-+    VkFilter                                    filter);
- 
- void VKAPI vkCmdCopyBufferToImage(
-     VkCmdBuffer                                 cmdBuffer,
-diff --git a/vulkan/libvulkan/entry.cpp b/vulkan/libvulkan/entry.cpp
-index 7622e4d..386acbf 100644
---- a/vulkan/libvulkan/entry.cpp
-+++ b/vulkan/libvulkan/entry.cpp
-@@ -632,7 +632,7 @@ void vkCmdCopyImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcIm
- }
- 
- __attribute__((visibility("default")))
--void vkCmdBlitImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkTexFilter filter) {
-+void vkCmdBlitImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter) {
-     GetVtbl(cmdBuffer).CmdBlitImage(cmdBuffer, srcImage, srcImageLayout, destImage, destImageLayout, regionCount, pRegions, filter);
- }
- 
-diff --git a/vulkan/nulldrv/null_driver.cpp b/vulkan/nulldrv/null_driver.cpp
-index fe6a1e8..9c56982 100644
---- a/vulkan/nulldrv/null_driver.cpp
-+++ b/vulkan/nulldrv/null_driver.cpp
-@@ -1024,7 +1024,7 @@ void CmdCopyBuffer(VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkBuffer destBuffe
- void CmdCopyImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageCopy* pRegions) {
- }
- 
--void CmdBlitImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkTexFilter filter) {
-+void CmdBlitImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter) {
- }
- 
- void CmdCopyBufferToImage(VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions) {
-diff --git a/vulkan/nulldrv/null_driver.h b/vulkan/nulldrv/null_driver.h
-index 557d0db..dd6dc6b 100644
---- a/vulkan/nulldrv/null_driver.h
-+++ b/vulkan/nulldrv/null_driver.h
-@@ -144,7 +144,7 @@ void CmdDispatch(VkCmdBuffer cmdBuffer, uint32_t x, uint32_t y, uint32_t z);
- void CmdDispatchIndirect(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset);
- void CmdCopyBuffer(VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkBuffer destBuffer, uint32_t regionCount, const VkBufferCopy* pRegions);
- void CmdCopyImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageCopy* pRegions);
--void CmdBlitImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkTexFilter filter);
-+void CmdBlitImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter);
- void CmdCopyBufferToImage(VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions);
- void CmdCopyImageToBuffer(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer destBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions);
- void CmdUpdateBuffer(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize dataSize, const uint32_t* pData);
--- 
-2.6.0.rc2.230.g3dd15c0
-
diff --git a/vulkan/patches/frameworks_native-sdk_0.10/0014-vulkan-Update-from-version-0.189.0-to-0.190.0.patch b/vulkan/patches/frameworks_native-sdk_0.10/0014-vulkan-Update-from-version-0.189.0-to-0.190.0.patch
deleted file mode 100644
index e44489b..0000000
--- a/vulkan/patches/frameworks_native-sdk_0.10/0014-vulkan-Update-from-version-0.189.0-to-0.190.0.patch
+++ /dev/null
@@ -1,2052 +0,0 @@
-From 888efcf06fdbfa02587ffbfaa8fe6ca8e1b6e58a Mon Sep 17 00:00:00 2001
-From: Jesse Hall <jessehall@google.com>
-Date: Sun, 29 Nov 2015 18:59:42 -0800
-Subject: [PATCH] vulkan: Update from version 0.189.0 to 0.190.0
-
-Change-Id: I0ac3f2797b65ef49cca90e76a47f1e6ca3a341a3
----
- vulkan/api/platform.api                 |   4 +-
- vulkan/api/vulkan.api                   | 408 ++++++++++++++++++++++++--------
- vulkan/include/vulkan/vk_platform.h     |   2 +-
- vulkan/include/vulkan/vulkan.h          | 303 ++++++++++++++++--------
- vulkan/libvulkan/entry.cpp              |  16 +-
- vulkan/libvulkan/get_proc_addr.cpp      |  24 +-
- vulkan/libvulkan/get_proc_addr.cpp.tmpl |   2 +-
- vulkan/libvulkan/loader.h               |   6 +-
- vulkan/libvulkan/swapchain.cpp          |   4 +-
- vulkan/nulldrv/null_driver.cpp          |  12 +-
- vulkan/nulldrv/null_driver.h            |   4 +-
- vulkan/nulldrv/null_driver_gen.cpp      |   4 +-
- 12 files changed, 541 insertions(+), 248 deletions(-)
-
-diff --git a/vulkan/api/platform.api b/vulkan/api/platform.api
-index 889ac2c..980722d 100644
---- a/vulkan/api/platform.api
-+++ b/vulkan/api/platform.api
-@@ -23,13 +23,15 @@
- 
- type u64 size_t
- 
--// VK_USE_PLATFORM_X11_KHR
-+// VK_USE_PLATFORM_XLIB_KHR
- @internal class Display {}
- @internal class Window {}
-+@internal type u64 VisualID
- 
- // VK_USE_PLATFORM_XCB_KHR
- @internal class xcb_connection_t {}
- @internal type u32 xcb_window_t
-+@internal type u32 xcb_visualid_t
- 
- // VK_USE_PLATFORM_WAYLAND_KHR
- @internal class wl_display {}
-diff --git a/vulkan/api/vulkan.api b/vulkan/api/vulkan.api
-index 5d0a7f8..0c6a3cc 100644
---- a/vulkan/api/vulkan.api
-+++ b/vulkan/api/vulkan.api
-@@ -27,7 +27,7 @@ import platform "platform.api"
- 
- // API version (major.minor.patch)
- define VERSION_MAJOR 0
--define VERSION_MINOR 189
-+define VERSION_MINOR 190
- define VERSION_PATCH 0
- 
- // API limits
-@@ -45,35 +45,35 @@ define VK_FALSE       0
- // API keyword, but needs special handling by some templates
- define NULL_HANDLE 0
- 
--@extension("VK_EXT_KHR_surface") define VK_EXT_KHR_SURFACE_REVISION                     19
-+@extension("VK_EXT_KHR_surface") define VK_EXT_KHR_SURFACE_REVISION                     20
- @extension("VK_EXT_KHR_surface") define VK_EXT_KHR_SURFACE_EXTENSION_NUMBER             1
- @extension("VK_EXT_KHR_surface") define VK_EXT_KHR_SURFACE_EXTENSION_NAME               "VK_EXT_KHR_surface"
- 
--@extension("VK_EXT_KHR_swapchain") define VK_EXT_KHR_SWAPCHAIN_REVISION                 59
-+@extension("VK_EXT_KHR_swapchain") define VK_EXT_KHR_SWAPCHAIN_REVISION                 62
- @extension("VK_EXT_KHR_swapchain") define VK_EXT_KHR_SWAPCHAIN_EXTENSION_NUMBER         2
- @extension("VK_EXT_KHR_swapchain") define VK_EXT_KHR_SWAPCHAIN_EXTENSION_NAME           "VK_EXT_KHR_swapchain"
- 
--@extension("VK_EXT_KHR_display") define VK_EXT_KHR_DISPLAY_REVISION                     16
-+@extension("VK_EXT_KHR_display") define VK_EXT_KHR_DISPLAY_REVISION                     17
- @extension("VK_EXT_KHR_display") define VK_EXT_KHR_DISPLAY_EXTENSION_NUMBER             3
- @extension("VK_EXT_KHR_display") define VK_EXT_KHR_DISPLAY_EXTENSION_NAME               "VK_EXT_KHR_display"
- 
--@extension("VK_EXT_KHR_display_swapchain") define VK_EXT_KHR_DISPLAY_REVISION           14
-+@extension("VK_EXT_KHR_display_swapchain") define VK_EXT_KHR_DISPLAY_REVISION           6
- @extension("VK_EXT_KHR_display_swapchain") define VK_EXT_KHR_DISPLAY_EXTENSION_NUMBER   4
- @extension("VK_EXT_KHR_display_swapchain") define VK_EXT_KHR_DISPLAY_EXTENSION_NAME     "VK_EXT_KHR_display_swapchain"
- 
--@extension("VK_EXT_KHR_x11_surface") define VK_EXT_KHR_X11_SURFACE_REVISION             1
--@extension("VK_EXT_KHR_x11_surface") define VK_EXT_KHR_X11_SURFACE_NUMBER               4
--@extension("VK_EXT_KHR_x11_surface") define VK_EXT_KHR_X11_SURFACE_NAME                 "VK_EXT_KHR_x11_surface"
-+@extension("VK_EXT_KHR_xlib_surface") define VK_EXT_KHR_XLIB_SURFACE_REVISION           3
-+@extension("VK_EXT_KHR_xlib_surface") define VK_EXT_KHR_XLIB_SURFACE_NUMBER             5
-+@extension("VK_EXT_KHR_xlib_surface") define VK_EXT_KHR_XLIB_SURFACE_NAME               "VK_EXT_KHR_xlib_surface"
- 
--@extension("VK_EXT_KHR_xcb_surface") define VK_EXT_KHR_XCB_SURFACE_REVISION             1
-+@extension("VK_EXT_KHR_xcb_surface") define VK_EXT_KHR_XCB_SURFACE_REVISION             3
- @extension("VK_EXT_KHR_xcb_surface") define VK_EXT_KHR_XCB_SURFACE_NUMBER               6
- @extension("VK_EXT_KHR_xcb_surface") define VK_EXT_KHR_XCB_SURFACE_NAME                 "VK_EXT_KHR_xcb_surface"
- 
--@extension("VK_EXT_KHR_wayland_surface") define VK_EXT_KHR_WAYLAND_SURFACE_REVISION     1
-+@extension("VK_EXT_KHR_wayland_surface") define VK_EXT_KHR_WAYLAND_SURFACE_REVISION     2
- @extension("VK_EXT_KHR_wayland_surface") define VK_EXT_KHR_WAYLAND_SURFACE_NUMBER       7
- @extension("VK_EXT_KHR_wayland_surface") define VK_EXT_KHR_WAYLAND_SURFACE_NAME         "VK_EXT_KHR_wayland_surface"
- 
--@extension("VK_EXT_KHR_mir_surface") define VK_EXT_KHR_MIR_SURFACE_REVISION             1
-+@extension("VK_EXT_KHR_mir_surface") define VK_EXT_KHR_MIR_SURFACE_REVISION             2
- @extension("VK_EXT_KHR_mir_surface") define VK_EXT_KHR_MIR_SURFACE_NUMBER               8
- @extension("VK_EXT_KHR_mir_surface") define VK_EXT_KHR_MIR_SURFACE_NAME                 "VK_EXT_KHR_mir_surface"
- 
-@@ -81,7 +81,7 @@ define NULL_HANDLE 0
- @extension("VK_EXT_KHR_android_surface") define VK_EXT_KHR_ANDROID_SURFACE_NUMBER       8
- @extension("VK_EXT_KHR_android_surface") define VK_EXT_KHR_ANDROID_SURFACE_NAME         "VK_EXT_KHR_android_surface"
- 
--@extension("VK_EXT_KHR_win32_surface") define VK_EXT_KHR_WIN32_SURFACE_REVISION         1
-+@extension("VK_EXT_KHR_win32_surface") define VK_EXT_KHR_WIN32_SURFACE_REVISION         2
- @extension("VK_EXT_KHR_win32_surface") define VK_EXT_KHR_WIN32_SURFACE_NUMBER           9
- @extension("VK_EXT_KHR_win32_surface") define VK_EXT_KHR_WIN32_SURFACE_NAME             "VK_EXT_KHR_win32_surface"
- 
-@@ -620,13 +620,14 @@ enum VkStructureType {
-     VK_STRUCTURE_TYPE_SUBMIT_INFO                               = 48,
-     VK_STRUCTURE_TYPE_LAYER_INSTANCE_CREATE_INFO                = 49,
-     VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO                  = 50,
-+    VK_STRUCTURE_TYPE_BIND_SPARSE_INFO                          = 51,
- 
-     //@extension("VK_EXT_KHR_swapchain")
-     VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR                 = 0xc0000801,
- 
-     //@extension("VK_EXT_KHR_display")
-     VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR              = 0xc0000c00,
--    VK_STRUCTURE_TYPE_SURFACE_DESCRIPTION_DISPLAY_PLAN_KHR      = 0xc0000c01,
-+    VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR           = 0xc0000c01,
- 
-     //@extension("VK_EXT_KHR_display_swapchain")
-     VK_STRUCTURE_TYPE_DISPLAY_SWAPCHAIN_CREATE_INFO_KHR         = 0xc0001000,
-@@ -663,6 +664,9 @@ enum VkResult {
-     VK_ERROR_FEATURE_NOT_PRESENT                            = 0xFFFFFFF8,
-     VK_ERROR_INCOMPATIBLE_DRIVER                            = 0xFFFFFFF7,
- 
-+    //@extension("VK_EXT_KHR_surface")
-+    VK_ERROR_SURFACE_LOST_KHR                               = 0xC0000400,
-+
-     //@extension("VK_EXT_KHR_swapchain")
-     VK_ERROR_OUT_OF_DATE_KHR                                = 0xC0000804,
- 
-@@ -810,8 +814,8 @@ bitfield VkDescriptorPoolCreateFlagBits {
- 
- /// Descriptor pool reset flags
- type VkFlags VkDescriptorPoolResetFlags
--bitfield VkDescriptorPoolResetFlagBits {
--}
-+//bitfield VkDescriptorPoolResetFlagBits {
-+//}
- 
- /// Image usage flags
- type VkFlags VkImageUsageFlags
-@@ -868,8 +872,8 @@ bitfield VkFenceCreateFlagBits {
- 
- /// Semaphore creation flags
- type VkFlags VkSemaphoreCreateFlags
--bitfield VkSemaphoreCreateFlagBits {
--}
-+//bitfield VkSemaphoreCreateFlagBits {
-+//}
- 
- /// Format capability flags
- type VkFlags VkFormatFeatureFlags
-@@ -906,18 +910,18 @@ bitfield VkQueryResultFlagBits {
- 
- /// Shader module creation flags
- type VkFlags VkShaderModuleCreateFlags
--bitfield VkShaderModuleCreateFlagBits {
--}
-+//bitfield VkShaderModuleCreateFlagBits {
-+//}
- 
- /// Shader creation flags
- type VkFlags VkShaderCreateFlags
--bitfield VkShaderCreateFlagBits {
--}
-+//bitfield VkShaderCreateFlagBits {
-+//}
- 
- /// Event creation flags
- type VkFlags VkEventCreateFlags
--bitfield VkEventCreateFlagBits {
--}
-+//bitfield VkEventCreateFlagBits {
-+//}
- 
- /// Command buffer usage flags
- type VkFlags VkCmdBufferUsageFlags
-@@ -945,8 +949,8 @@ bitfield VkQueryPipelineStatisticFlagBits {
- 
- /// Memory mapping flags
- type VkFlags VkMemoryMapFlags
--bitfield VkMemoryMapFlagBits {
--}
-+//bitfield VkMemoryMapFlagBits {
-+//}
- 
- /// Bitfield of image aspects
- type VkFlags VkImageAspectFlags
-@@ -1040,6 +1044,111 @@ bitfield VkStencilFaceFlagBits {
-     VK_STENCIL_FACE_BACK_BIT                                = 0x00000002,   /// Back face
- }
- 
-+/// Instance creation flags
-+type VkFlags VkInstanceCreateFlags
-+//bitfield VkInstanceCreateFlagBits {
-+//}
-+
-+/// Device creation flags
-+type VkFlags VkDeviceCreateFlags
-+//bitfield VkDeviceCreateFlagBits {
-+//}
-+
-+/// Device queue creation flags
-+type VkFlags VkDeviceQueueCreateFlags
-+//bitfield VkDeviceQueueCreateFlagBits {
-+//}
-+
-+/// Query pool creation flags
-+type VkFlags VkQueryPoolCreateFlags
-+//bitfield VkQueryPoolCreateFlagBits {
-+//}
-+
-+/// Buffer view creation flags
-+type VkFlags VkBufferViewCreateFlags
-+//bitfield VkBufferViewCreateFlagBits {
-+//}
-+
-+/// Pipeline cache creation flags
-+type VkFlags VkPipelineCacheCreateFlags
-+//bitfield VkPipelineCacheCreateFlagBits {
-+//}
-+
-+/// Pipeline shader stage creation flags
-+type VkFlags VkPipelineShaderStageCreateFlags
-+//bitfield VkPipelineShaderStageCreateFlagBits {
-+//}
-+
-+/// Descriptor set layout creation flags
-+type VkFlags VkDescriptorSetLayoutCreateFlags
-+//bitfield VkDescriptorSetLayoutCreateFlagBits {
-+//}
-+
-+/// Pipeline vertex input state creation flags
-+type VkFlags VkPipelineVertexInputStateCreateFlags
-+//bitfield VkPipelineVertexInputStateCreateFlagBits {
-+//}
-+
-+/// Pipeline input assembly state creation flags
-+type VkFlags VkPipelineInputAssemblyStateCreateFlags
-+//bitfield VkPipelineInputAssemblyStateCreateFlagBits {
-+//}
-+
-+/// Tessellation state creation flags
-+type VkFlags VkPipelineTessellationStateCreateFlags
-+//bitfield VkPipelineTessellationStateCreateFlagBits {
-+//}
-+
-+/// Viewport state creation flags
-+type VkFlags VkPipelineViewportStateCreateFlags
-+//bitfield VkPipelineViewportStateCreateFlagBits {
-+//}
-+
-+/// Raster state creation flags
-+type VkFlags VkPipelineRasterStateCreateFlags
-+//bitfield VkPipelineRasterStateCreateFlagBits {
-+//}
-+
-+/// Multisample state creation flags
-+type VkFlags VkPipelineMultisampleStateCreateFlags
-+//bitfield VkPipelineMultisampleStateCreateFlagBits {
-+//}
-+
-+/// Color blend state creation flags
-+type VkFlags VkPipelineColorBlendStateCreateFlags
-+//bitfield VkPipelineColorBlendStateCreateFlagBits {
-+//}
-+
-+/// Depth/stencil state creation flags
-+type VkFlags VkPipelineDepthStencilStateCreateFlags
-+//bitfield VkPipelineDepthStencilStateCreateFlagBits {
-+//}
-+
-+/// Dynamic state creation flags
-+type VkFlags VkPipelineDynamicStateCreateFlags
-+//bitfield VkPipelineDynamicStateCreateFlagBits {
-+//}
-+
-+/// Pipeline layout creation flags
-+type VkFlags VkPipelineLayoutCreateFlags
-+//bitfield VkPipelineLayoutCreateFlagBits {
-+//}
-+
-+/// Sampler creation flags
-+type VkFlags VkSamplerCreateFlags
-+//bitfield VkSamplerCreateFlagBits {
-+//}
-+
-+/// Render pass creation flags
-+type VkFlags VkRenderPassCreateFlags
-+//bitfield VkRenderPassCreateFlagBits {
-+//}
-+
-+/// Framebuffer creation flags
-+type VkFlags VkFramebufferCreateFlags
-+//bitfield VkFramebufferCreateFlagBits {
-+//}
-+
- @extension("VK_EXT_KHR_swapchain")
- type VkFlags VkSurfaceTransformFlagsKHR
- @extension("VK_EXT_KHR_swapchain")
-@@ -1055,6 +1164,16 @@ bitfield VkSurfaceTransformFlagBitsKHR {
-     VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR                    = 0x00000100,
- }
- 
-+@extension("VK_EXT_KHR_swapchain")
-+type VkFlags VkCompositeAlphaFlagsKHR
-+@extension("VK_EXT_KHR_swapchain")
-+bitfield VkCompositeAlphaFlagBitsKHR {
-+    VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR                       = 0x00000001,
-+    VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR               = 0x00000002,
-+    VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR              = 0x00000004,
-+    VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR                      = 0x00000008,
-+}
-+
- @extension("VK_EXT_KHR_display")
- type VkFlags VkDisplayPlaneAlphaFlagsKHR
- @extension("VK_EXT_KHR_display")
-@@ -1175,6 +1294,7 @@ class VkAllocCallbacks {
- class VkDeviceQueueCreateInfo {
-     VkStructureType                             sStype                    /// Should be VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO
-     const void*                                 pNext                     /// Pointer to next structure
-+    VkDeviceQueueCreateFlags                    flags
-     u32                                         queueFamilyIndex
-     u32                                         queuePriorityCount
-     const f32*                                  pQueuePriorities
-@@ -1183,6 +1303,7 @@ class VkDeviceQueueCreateInfo {
- class VkDeviceCreateInfo {
-     VkStructureType                             sType                      /// Should be VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO
-     const void*                                 pNext                      /// Pointer to next structure
-+    VkDeviceCreateFlags                         flags
-     u32                                         requestedQueueRecordCount
-     const VkDeviceQueueCreateInfo*              pRequestedQueues
-     u32                                         enabledLayerNameCount
-@@ -1195,6 +1316,7 @@ class VkDeviceCreateInfo {
- class VkInstanceCreateInfo {
-     VkStructureType                             sType                      /// Should be VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO
-     const void*                                 pNext                      /// Pointer to next structure
-+    VkInstanceCreateFlags                       flags
-     const VkApplicationInfo*                    pAppInfo
-     u32                                         enabledLayerNameCount
-     const char* const*                          ppEnabledLayerNames        /// Ordered list of layer names to be enabled
-@@ -1314,9 +1436,9 @@ class VkCopyDescriptorSet {
- class VkBufferCreateInfo {
-     VkStructureType                             sType                      /// Must be VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO
-     const void*                                 pNext                      /// Pointer to next structure.
-+    VkBufferCreateFlags                         flags                      /// Buffer creation flags
-     VkDeviceSize                                size                       /// Specified in bytes
-     VkBufferUsageFlags                          usage                      /// Buffer usage flags
--    VkBufferCreateFlags                         flags                      /// Buffer creation flags
-     VkSharingMode                               sharingMode
-     u32                                         queueFamilyIndexCount
-     const u32*                                  pQueueFamilyIndices
-@@ -1325,6 +1447,7 @@ class VkBufferCreateInfo {
- class VkBufferViewCreateInfo {
-     VkStructureType                             sType                      /// Must be VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO
-     const void*                                 pNext                      /// Pointer to next structure.
-+    VkBufferViewCreateFlags                     flags
-     VkBuffer                                    buffer
-     VkFormat                                    format                     /// Optionally specifies format of elements
-     VkDeviceSize                                offset                     /// Specified in bytes
-@@ -1380,6 +1503,7 @@ class VkImageMemoryBarrier {
- class VkImageCreateInfo {
-     VkStructureType                             sType                      /// Must be VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO
-     const void*                                 pNext                      /// Pointer to next structure.
-+    VkImageCreateFlags                          flags                      /// Image creation flags
-     VkImageType                                 imageType
-     VkFormat                                    format
-     VkExtent3D                                  extent
-@@ -1388,7 +1512,6 @@ class VkImageCreateInfo {
-     u32                                         samples
-     VkImageTiling                               tiling
-     VkImageUsageFlags                           usage                      /// Image usage flags
--    VkImageCreateFlags                          flags                      /// Image creation flags
-     VkSharingMode                               sharingMode                /// Cross-queue-family sharing mode
-     u32                                         queueFamilyIndexCount      /// Number of queue families to share across
-     const u32*                                  pQueueFamilyIndices        /// Array of queue family indices to share across
-@@ -1405,12 +1528,12 @@ class VkSubresourceLayout {
- class VkImageViewCreateInfo {
-     VkStructureType                             sType                  /// Must be VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO
-     const void*                                 pNext                  /// Pointer to next structure
-+    VkImageViewCreateFlags                      flags
-     VkImage                                     image
-     VkImageViewType                             viewType
-     VkFormat                                    format
-     VkChannelMapping                            channels
-     VkImageSubresourceRange                     subresourceRange
--    VkImageViewCreateFlags                      flags
- }
- 
- class VkBufferCopy {
-@@ -1419,7 +1542,7 @@ class VkBufferCopy {
-     VkDeviceSize                                copySize               /// Specified in bytes
- }
- 
--class VkSparseMemoryBindInfo {
-+class VkSparseMemoryBind {
-     VkDeviceSize                                rangeOffset           /// Specified in bytes
-     VkDeviceSize                                rangeSize             /// Specified in bytes
-     VkDeviceSize                                memOffset             /// Specified in bytes
-@@ -1427,7 +1550,7 @@ class VkSparseMemoryBindInfo {
-     VkSparseMemoryBindFlags                     flags
- }
- 
--class VkSparseImageMemoryBindInfo {
-+class VkSparseImageMemoryBind {
-     VkImageSubresource                          subresource
-     VkOffset3D                                  offset
-     VkExtent3D                                  extent
-@@ -1436,6 +1559,39 @@ class VkSparseImageMemoryBindInfo {
-     VkSparseMemoryBindFlags                     flags
- }
- 
-+class VkSparseBufferMemoryBindInfo {
-+    VkBuffer                                    buffer
-+    u32                                         bindCount
-+    const VkSparseMemoryBind*                   pBinds
-+}
-+
-+class VkSparseImageOpaqueMemoryBindInfo {
-+    VkImage                                     image
-+    u32                                         bindCount
-+    const VkSparseMemoryBind*                   pBinds
-+}
-+
-+class VkSparseImageMemoryBindInfo {
-+    VkImage                                     image
-+    u32                                         bindCount
-+    const VkSparseMemoryBind*                   pBinds
-+}
-+
-+class VkBindSparseInfo {
-+    VkStructureType                             sType                 /// Must be VK_STRUCTURE_TYPE_BIND_SPARSE_INFO
-+    const void*                                 pNext
-+    u32                                         waitSemaphoreCount
-+    const VkSemaphore*                          pWaitSemaphores
-+    u32                                         numBufferBinds
-+    const VkSparseBufferMemoryBindInfo*         pBufferBinds
-+    u32                                         numImageOpaqueBinds
-+    const VkSparseImageOpaqueMemoryBindInfo*    pImageOpaqueBinds
-+    u32                                         numImageBinds
-+    const VkSparseImageMemoryBindInfo*          pImageBinds
-+    u32                                         signalSemaphoreCount
-+    const VkSemaphore*                          pSignalSemaphores
-+}
-+
- class VkImageSubresourceCopy {
-     VkImageAspectFlags                          aspect
-     u32                                         mipLevel
-@@ -1480,17 +1636,17 @@ class VkImageResolve {
- class VkShaderModuleCreateInfo {
-     VkStructureType                             sType                  /// Must be VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO
-     const void*                                 pNext                  /// Pointer to next structure
-+    VkShaderModuleCreateFlags                   flags                  /// Reserved
-     platform.size_t                             codeSize               /// Specified in bytes
-     const u32*                                  pCode                  /// Binary code of size codeSize
--    VkShaderModuleCreateFlags                   flags                  /// Reserved
- }
- 
- class VkShaderCreateInfo {
-     VkStructureType                             sType              /// Must be VK_STRUCTURE_TYPE_SHADER_CREATE_INFO
-     const void*                                 pNext              /// Pointer to next structure
-+    VkShaderCreateFlags                         flags              /// Reserved
-     VkShaderModule                              module             /// Module containing entry point
-     const char*                                 pName              /// Null-terminated entry point name
--    VkShaderCreateFlags                         flags              /// Reserved
-     VkShaderStageFlagBits                       stage
- }
- 
-@@ -1504,6 +1660,7 @@ class VkDescriptorSetLayoutBinding {
- class VkDescriptorSetLayoutCreateInfo {
-     VkStructureType                             sType              /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO
-     const void*                                 pNext              /// Pointer to next structure
-+    VkDescriptorSetLayoutCreateFlags            flags
-     u32                                         bindingCount       /// Number of bindings in the descriptor set layout
-     const VkDescriptorSetLayoutBinding*         pBindings          /// Array of descriptor set layout bindings
- }
-@@ -1546,6 +1703,7 @@ class VkSpecializationInfo {
- class VkPipelineShaderStageCreateInfo {
-     VkStructureType                             sType              /// Must be VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO
-     const void*                                 pNext              /// Pointer to next structure
-+    VkPipelineShaderStageCreateFlags            flags
-     VkShader                                    shader
-     const VkSpecializationInfo*                 pSpecializationInfo
- }
-@@ -1553,8 +1711,8 @@ class VkPipelineShaderStageCreateInfo {
- class VkComputePipelineCreateInfo {
-     VkStructureType                             sType              /// Must be VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO
-     const void*                                 pNext              /// Pointer to next structure
--    VkPipelineShaderStageCreateInfo             stage
-     VkPipelineCreateFlags                       flags              /// Pipeline creation flags
-+    VkPipelineShaderStageCreateInfo             stage
-     VkPipelineLayout                            layout             /// Interface layout of the pipeline
-     VkPipeline                                  basePipelineHandle /// If VK_PIPELINE_CREATE_DERIVATIVE_BIT is set and this value is nonzero, it specifies the handle of the base pipeline this is a derivative of
-     s32                                         basePipelineIndex  /// If VK_PIPELINE_CREATE_DERIVATIVE_BIT is set and this value is not -1, it specifies an index into pCreateInfos of the base pipeline this is a derivative of
-@@ -1576,6 +1734,7 @@ class VkVertexInputAttributeDescription {
- class VkPipelineVertexInputStateCreateInfo {
-     VkStructureType                             sType                           /// Should be VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO
-     const void*                                 pNext                           /// Pointer to next structure
-+    VkPipelineVertexInputStateCreateFlags       flags
-     u32                                         vertexBindingDescriptionCount   /// number of bindings
-     const VkVertexInputBindingDescription*      pVertexBindingDescriptions
-     u32                                         vertexAttributeDescriptionCount /// number of attributes
-@@ -1585,6 +1744,7 @@ class VkPipelineVertexInputStateCreateInfo {
- class VkPipelineInputAssemblyStateCreateInfo {
-     VkStructureType                             sType      /// Must be VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO
-     const void*                                 pNext      /// Pointer to next structure
-+    VkPipelineInputAssemblyStateCreateFlags     flags
-     VkPrimitiveTopology                         topology
-     VkBool32                                    primitiveRestartEnable
- }
-@@ -1592,12 +1752,14 @@ class VkPipelineInputAssemblyStateCreateInfo {
- class VkPipelineTessellationStateCreateInfo {
-     VkStructureType                             sType      /// Must be VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO
-     const void*                                 pNext      /// Pointer to next structure
-+    VkPipelineTessellationStateCreateFlags      flags
-     u32                                         patchControlPoints
- }
- 
- class VkPipelineViewportStateCreateInfo {
-     VkStructureType                             sType      /// Must be VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO
-     const void*                                 pNext      /// Pointer to next structure
-+    VkPipelineViewportStateCreateFlags          flags
-     u32                                         viewportCount
-     const VkViewport*                           pViewports
-     u32                                         scissorCount
-@@ -1607,6 +1769,7 @@ class VkPipelineViewportStateCreateInfo {
- class VkPipelineRasterStateCreateInfo {
-     VkStructureType                             sType      /// Must be VK_STRUCTURE_TYPE_PIPELINE_RASTER_STATE_CREATE_INFO
-     const void*                                 pNext      /// Pointer to next structure
-+    VkPipelineRasterStateCreateFlags            flags
-     VkBool32                                    depthClampEnable
-     VkBool32                                    rasterizerDiscardEnable
-     VkFillMode                                  fillMode                   /// optional (GL45)
-@@ -1622,6 +1785,7 @@ class VkPipelineRasterStateCreateInfo {
- class VkPipelineMultisampleStateCreateInfo {
-     VkStructureType                             sType      /// Must be VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO
-     const void*                                 pNext      /// Pointer to next structure
-+    VkPipelineMultisampleStateCreateFlags       flags
-     u32                                         rasterSamples              /// Number of samples used for rasterization
-     VkBool32                                    sampleShadingEnable        /// optional (GL45)
-     f32                                         minSampleShading           /// optional (GL45)
-@@ -1644,6 +1808,7 @@ class VkPipelineColorBlendAttachmentState {
- class VkPipelineColorBlendStateCreateInfo {
-     VkStructureType                             sType      /// Must be VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO
-     const void*                                 pNext      /// Pointer to next structure
-+    VkPipelineColorBlendStateCreateFlags        flags
-     VkBool32                                    logicOpEnable
-     VkLogicOp                                   logicOp
-     u32                                         attachmentCount    /// # of pAttachments
-@@ -1664,6 +1829,7 @@ class VkStencilOpState {
- class VkPipelineDepthStencilStateCreateInfo {
-     VkStructureType                             sType      /// Must be VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO
-     const void*                                 pNext      /// Pointer to next structure
-+    VkPipelineDepthStencilStateCreateFlags      flags
-     VkBool32                                    depthTestEnable
-     VkBool32                                    depthWriteEnable
-     VkCompareOp                                 depthCompareOp
-@@ -1678,15 +1844,17 @@ class VkPipelineDepthStencilStateCreateInfo {
- class VkPipelineDynamicStateCreateInfo {
-     VkStructureType                             sType      /// Must be VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO
-     const void*                                 pNext      /// Pointer to next structure
-+    VkPipelineDynamicStateCreateFlags           flags
-     u32                                         dynamicStateCount
-     const VkDynamicState*                       pDynamicStates
- }
- 
- class VkGraphicsPipelineCreateInfo {
--    VkStructureType                                 sType      /// Must be VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO
--    const void*                                     pNext      /// Pointer to next structure
-+    VkStructureType                                 sType               /// Must be VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO
-+    const void*                                     pNext               /// Pointer to next structure
-+    VkPipelineCreateFlags                           flags               /// Pipeline creation flags
-     u32                                             stageCount
--    const VkPipelineShaderStageCreateInfo*          pStages    /// One entry for each active shader stage
-+    const VkPipelineShaderStageCreateInfo*          pStages             /// One entry for each active shader stage
-     const VkPipelineVertexInputStateCreateInfo*     pVertexInputState
-     const VkPipelineInputAssemblyStateCreateInfo*   pInputAssemblyState
-     const VkPipelineTessellationStateCreateInfo*    pTessellationState
-@@ -1696,17 +1864,17 @@ class VkGraphicsPipelineCreateInfo {
-     const VkPipelineDepthStencilStateCreateInfo*    pDepthStencilState
-     const VkPipelineColorBlendStateCreateInfo*      pColorBlendState
-     const VkPipelineDynamicStateCreateInfo*         pDynamicState
--    VkPipelineCreateFlags                           flags              /// Pipeline creation flags
--    VkPipelineLayout                                layout             /// Interface layout of the pipeline
-+    VkPipelineLayout                                layout              /// Interface layout of the pipeline
-     VkRenderPass                                    renderPass
-     u32                                             subpass
--    VkPipeline                                      basePipelineHandle /// If VK_PIPELINE_CREATE_DERIVATIVE_BIT is set and this value is nonzero, it specifies the handle of the base pipeline this is a derivative of
--    s32                                             basePipelineIndex  /// If VK_PIPELINE_CREATE_DERIVATIVE_BIT is set and this value is not -1, it specifies an index into pCreateInfos of the base pipeline this is a derivative of
-+    VkPipeline                                      basePipelineHandle  /// If VK_PIPELINE_CREATE_DERIVATIVE_BIT is set and this value is nonzero, it specifies the handle of the base pipeline this is a derivative of
-+    s32                                             basePipelineIndex   /// If VK_PIPELINE_CREATE_DERIVATIVE_BIT is set and this value is not -1, it specifies an index into pCreateInfos of the base pipeline this is a derivative of
- }
- 
- class VkPipelineCacheCreateInfo {
-     VkStructureType                             sType        /// Must be VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO
-     const void*                                 pNext        /// Pointer to next structure
-+    VkPipelineCacheCreateFlags                  flags
-     platform.size_t                             initialSize  /// Size of initial data to populate cache, in bytes
-     const void*                                 initialData  /// Initial data to populate cache
-     platform.size_t                             maxSize      /// Maximum size cache can grow to, in bytes. If zero, then the cache may grow without bound.
-@@ -1721,6 +1889,7 @@ class VkPushConstantRange {
- class VkPipelineLayoutCreateInfo {
-     VkStructureType                             sType                   /// Must be VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO
-     const void*                                 pNext                   /// Pointer to next structure
-+    VkPipelineLayoutCreateFlags                 flags
-     u32                                         setLayoutCount          /// Number of descriptor sets interfaced by the pipeline
-     const VkDescriptorSetLayout*                pSetLayouts             /// Array of <setCount> number of descriptor set layout objects defining the layout of the
-     u32                                         pushConstantRangeCount  /// Number of push-constant ranges used by the pipeline
-@@ -1730,6 +1899,7 @@ class VkPipelineLayoutCreateInfo {
- class VkSamplerCreateInfo {
-     VkStructureType                             sType          /// Must be VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO
-     const void*                                 pNext          /// Pointer to next structure
-+    VkSamplerCreateFlags                        flags
-     VkFilter                                    magFilter      /// Filter mode for magnification
-     VkFilter                                    minFilter      /// Filter mode for minifiation
-     VkSamplerMipmapMode                         mipmapMode     /// Mipmap selection mode
-@@ -1749,8 +1919,8 @@ class VkSamplerCreateInfo {
- class VkCmdPoolCreateInfo {
-     VkStructureType                             sType            /// Must be VK_STRUCTURE_TYPE_CMD_POOL_CREATE_INFO
-     const void*                                 pNext            /// Pointer to next structure
--    u32                                         queueFamilyIndex
-     VkCmdPoolCreateFlags                        flags            /// Command pool creation flags
-+    u32                                         queueFamilyIndex
- }
- 
- class VkCmdBufferAllocInfo {
-@@ -1809,6 +1979,7 @@ class VkClearAttachment {
- class VkAttachmentDescription {
-     VkStructureType                             sType           /// Must be VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION
-     const void*                                 pNext           /// Pointer to next structure
-+    VkAttachmentDescriptionFlags                flags
-     VkFormat                                    format
-     u32                                         samples
-     VkAttachmentLoadOp                          loadOp          /// Load op for color or depth data
-@@ -1817,7 +1988,6 @@ class VkAttachmentDescription {
-     VkAttachmentStoreOp                         stencilStoreOp  /// Store op for stencil data
-     VkImageLayout                               initialLayout
-     VkImageLayout                               finalLayout
--    VkAttachmentDescriptionFlags                flags
- }
- 
- class VkAttachmentReference {
-@@ -1828,8 +1998,8 @@ class VkAttachmentReference {
- class VkSubpassDescription {
-     VkStructureType                             sType              /// Must be VK_STRUCTURE_SUBPASS_DESCRIPTION
-     const void*                                 pNext              /// Pointer to next structure
--    VkPipelineBindPoint                         pipelineBindPoint  /// Must be VK_PIPELINE_BIND_POINT_GRAPHICS for now
-     VkSubpassDescriptionFlags                   flags
-+    VkPipelineBindPoint                         pipelineBindPoint  /// Must be VK_PIPELINE_BIND_POINT_GRAPHICS for now
-     u32                                         inputAttachmentCount
-     const VkAttachmentReference*                pInputAttachments
-     u32                                         colorAttachmentCount
-@@ -1855,6 +2025,7 @@ class VkSubpassDependency {
- class VkRenderPassCreateInfo {
-     VkStructureType                             sType      /// Must be VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO
-     const void*                                 pNext      /// Pointer to next structure
-+    VkRenderPassCreateFlags                     flags
-     u32                                         attachmentCount
-     const VkAttachmentDescription*              pAttachments
-     u32                                         subpassCount
-@@ -2071,6 +2242,7 @@ class VkSemaphoreCreateInfo {
- class VkQueryPoolCreateInfo {
-     VkStructureType                             sType              /// Must be VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO
-     const void*                                 pNext              /// Pointer to next structure
-+    VkQueryPoolCreateFlags                      flags
-     VkQueryType                                 queryType
-     u32                                         slots
-     VkQueryPipelineStatisticFlags               pipelineStatistics /// Optional
-@@ -2079,6 +2251,7 @@ class VkQueryPoolCreateInfo {
- class VkFramebufferCreateInfo {
-     VkStructureType                             sType  /// Must be VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO
-     const void*                                 pNext  /// Pointer to next structure
-+    VkFramebufferCreateFlags                    flags
-     VkRenderPass                                renderPass
-     u32                                         attachmentCount
-     const VkImageView*                          pAttachments
-@@ -2117,6 +2290,7 @@ class VkSurfacePropertiesKHR {
-     VkExtent2D                                  maxImageExtent
-     VkSurfaceTransformFlagsKHR                  supportedTransforms
-     VkSurfaceTransformKHR                       currentTransform
-+    VkCompositeAlphaFlagsKHR                    supportedCompositeAlpha
-     u32                                         maxImageArraySize
-     VkImageUsageFlags                           supportedUsageFlags
- }
-@@ -2138,6 +2312,7 @@ class VkSwapchainCreateInfoKHR {
-     VkExtent2D                                  imageExtent
-     VkImageUsageFlags                           imageUsageFlags
-     VkSurfaceTransformKHR                       preTransform
-+    VkCompositeAlphaFlagBitsKHR                 compositeAlpha
-     u32                                         imageArraySize
-     VkSharingMode                               sharingMode
-     u32                                         queueFamilyIndexCount
-@@ -2163,41 +2338,37 @@ class VkDisplayPropertiesKHR {
-     VkExtent2D                                  physicalDimensions
-     VkExtent2D                                  physicalResolution
-     VkSurfaceTransformFlagsKHR                  supportedTransforms
--    u32                                         planeCount
-     VkBool32                                    planeReorderPossible
-+    VkBool32                                    persistentContent
- }
- 
- @extension("VK_EXT_KHR_display")
--class VkDisplayTimingKHR {
--    u32                                         pixelClock
-+class VkDisplayModeParametersKHR {
-     VkExtent2D                                  visibleRegion
--    VkExtent2D                                  totalRegion
--    VkExtent2D                                  physicalDimensions
--    u32                                         hSyncStart
--    u32                                         hSyncEnd
--    u32                                         vSyncStart
--    u32                                         vSyncEnd
--    VkBool32                                    interlaced
--    VkBool32                                    doublescan
--    VkBool32                                    hSyncPos
--    VkBool32                                    vSyncPos
-+    u32                                         refreshRate
- }
- 
- @extension("VK_EXT_KHR_display")
- class VkDisplayModePropertiesKHR {
-     VkDisplayModeKHR                            displayMode
--    VkDisplayTimingKHR                          timing
-+    VkDisplayModeParametersKHR                  parameters
- }
- 
- @extension("VK_EXT_KHR_display")
- class VkDisplayModeCreateInfoKHR {
-     VkStructureType                             sType
-     const void*                                 pNext
--    VkDisplayTimingKHR                          timing
-+    VkDisplayModeParametersKHR                  parameters
- }
- 
- @extension("VK_EXT_KHR_display")
- class VkDisplayPlanePropertiesKHR {
-+    VkDisplayKHR                                currentDisplay
-+    u32                                         currentStackIndex
-+}
-+
-+@extension("VK_EXT_KHR_display")
-+class VkDisplayPlaneCapabilitiesKHR {
-     VkDisplayPlaneAlphaFlagsKHR                 supportedAlpha
-     VkOffset2D                                  minSrcPosition
-     VkOffset2D                                  maxSrcPosition
-@@ -2210,7 +2381,7 @@ class VkDisplayPlanePropertiesKHR {
- }
- 
- @extension("VK_EXT_KHR_display")
--class VkSurfaceDescriptionDisplayPlaneKHR {
-+class VkDisplaySurfaceCreateInfoKHR {
-     VkStructureType                             sType
-     const void*                                 pNext
-     VkDisplayModeKHR                            displayMode
-@@ -2235,6 +2406,7 @@ class VkDisplayPresentInfoKHR {
-     const void*                                 pNext
-     VkRect2D                                    srcRect
-     VkRect2D                                    dstRect
-+    VkBool32                                    persistent
- }
- 
- 
-@@ -2801,37 +2973,12 @@ cmd void vkGetPhysicalDeviceSparseImageFormatProperties(
-     physicalDeviceObject := GetPhysicalDevice(physicalDevice)
- }
- 
--cmd VkResult vkQueueBindSparseBufferMemory(
-+cmd VkResult vkQueueBindSparse(
-         VkQueue                                     queue,
--        VkBuffer                                    buffer,
-         u32                                         bindInfoCount,
--        const VkSparseMemoryBindInfo*               pBindInfo) {
--    queueObject := GetQueue(queue)
--    bufferObject := GetBuffer(buffer)
--    assert(bufferObject.device == queueObject.device)
--
--    return ?
--}
--
--cmd VkResult vkQueueBindSparseImageOpaqueMemory(
--        VkQueue                                     queue,
--        VkImage                                     image,
--        u32                                         bindInfoCount,
--        const VkSparseMemoryBindInfo*               pBindInfo) {
--    queueObject := GetQueue(queue)
--    imageObject := GetImage(image)
--    assert(imageObject.device == queueObject.device)
--
--    return ?
--}
--
--cmd VkResult vkQueueBindSparseImageMemory(
--        VkQueue                                     queue,
--        VkImage                                     image,
--        u32                                         bindInfoCount,
--        const VkSparseImageMemoryBindInfo*          pBindInfo) {
-+        const VkBindSparseInfo*                     pBindInfo,
-+        VkFence                                     fence) {
-     queueObject := GetQueue(queue)
--    imageObject := GetImage(image)
- 
-     return ?
- }
-@@ -4490,7 +4637,7 @@ cmd void vkDestroySurfaceKHR(
- }
- 
- @extension("VK_EXT_KHR_surface")
--cmd VkBool32 vkGetPhysicalDeviceSurfaceSupportKHR(
-+cmd VkResult vkGetPhysicalDeviceSurfaceSupportKHR(
-         VkPhysicalDevice                            physicalDevice,
-         u32                                         queueFamilyIndex,
-         VkSurfaceKHR                                surface) {
-@@ -4640,6 +4787,24 @@ cmd VkResult vkGetPhysicalDeviceDisplayPropertiesKHR(
- }
- 
- @extension("VK_EXT_KHR_display")
-+cmd VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
-+        VkPhysicalDevice                        physicalDevice,
-+        u32*                                    pPropertyCount,
-+        VkDisplayPlanePropertiesKHR*            pProperties) {
-+    physicalDeviceObject := GetPhysicalDevice(physicalDevice)
-+    return ?
-+}
-+
-+@extension("VK_EXT_KHR_display")
-+cmd VkResult vkGetDisplayPlaneSupportedDisplaysKHR(
-+        VkPhysicalDevice                        physicalDevice,
-+        u32*                                    pPropertyCount,
-+        VkDisplayKHR*                           pProperties) {
-+    physicalDeviceObject := GetPhysicalDevice(physicalDevice)
-+    return ?
-+}
-+
-+@extension("VK_EXT_KHR_display")
- cmd VkResult vkGetDisplayModePropertiesKHR(
-         VkPhysicalDevice                        physicalDevice,
-         VkDisplayKHR                            display,
-@@ -4660,38 +4825,63 @@ cmd VkResult vkCreateDisplayModeKHR(
- }
- 
- @extension("VK_EXT_KHR_display")
--cmd VkResult vkGetDisplayPlanePropertiesKHR(
-+cmd VkResult vkGetDisplayPlaneCapabilitiesKHR(
-         VkPhysicalDevice                        physicalDevice,
--        VkDisplayKHR                            display,
--        VkDisplayModeKHR                        mode,
-+        VkDisplayModeCreateInfoKHR              mode,
-         u32                                     planeIndex,
--        VkDisplayPlanePropertiesKHR*            pProperties) {
-+        VkDisplayPlaneCapabilitiesKHR*          pCapabilities) {
-     physicalDeviceObject := GetPhysicalDevice(physicalDevice)
-     return ?
- }
- 
--@extension("VK_EXT_KHR_x11_surface")
--cmd VkResult vkCreateX11SurfaceKHR(
-+@extension("VK_EXT_KHR_display")
-+cmd VkResult vkCreateDisplayPlaneSurfaceKHR(
-+        VkInstance                              instance,
-+        const VkDisplaySurfaceCreateInfoKHR*    pCreateInfo,
-+        VkSurfaceKHR*                           pSurface) {
-+    return ?
-+}
-+
-+@extension("VK_EXT_KHR_xlib_surface")
-+cmd VkResult vkCreateXlibSurfaceKHR(
-         VkInstance                              instance,
-         platform.Display*                       dpy,
--        platform.Window                         root,
-         platform.Window                         window,
-         VkSurfaceKHR*                           pSurface) {
-     instanceObject := GetInstance(instance)
-     return ?
- }
- 
-+@extension("VK_EXT_KHR_xlib_surface")
-+cmd VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR(
-+        VkPhysicalDevice                        physicalDevice,
-+        u32                                     queueFamilyIndex,
-+        platform.Display*                       dpy,
-+        platform.VisualID                       visualId) {
-+    physicalDeviceObject := GetPhysicalDevice(physicalDevice)
-+    return ?
-+}
-+
- @extension("VK_EXT_KHR_xcb_surface")
- cmd VkResult vkCreateXCBSurfaceKHR(
-         VkInstance                              instance,
-         platform.xcb_connection_t*              connection,
--        platform.xcb_window_t                   root,
-         platform.xcb_window_t                   window,
-         VkSurfaceKHR*                           pSurface) {
-     instanceObject := GetInstance(instance)
-     return ?
- }
- 
-+@extension("VK_EXT_KHR_xlib_surface")
-+cmd VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR(
-+        VkPhysicalDevice                        physicalDevice,
-+        u32                                     queueFamilyIndex,
-+        platform.xcb_connection_t*              connection,
-+        platform.xcb_visualid_t                 visual_id) {
-+    physicalDeviceObject := GetPhysicalDevice(physicalDevice)
-+    return ?
-+}
-+
- @extension("VK_EXT_KHR_wayland_surface")
- cmd VkResult vkCreateWaylandSurfaceKHR(
-         VkInstance                              instance,
-@@ -4702,6 +4892,15 @@ cmd VkResult vkCreateWaylandSurfaceKHR(
-     return ?
- }
- 
-+@extension("VK_EXT_KHR_wayland_surface")
-+cmd VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR(
-+        VkPhysicalDevice                        physicalDevice,
-+        u32                                     queueFamilyIndex,
-+        platform.wl_display*                    display) {
-+    physicalDeviceObject := GetPhysicalDevice(physicalDevice)
-+    return ?
-+}
-+
- @extension("VK_EXT_KHR_mir_surface")
- cmd VkResult vkCreateMirSurfaceKHR(
-         VkInstance                              instance,
-@@ -4712,6 +4911,15 @@ cmd VkResult vkCreateMirSurfaceKHR(
-     return ?
- }
- 
-+@extension("VK_EXT_KHR_mir_surface")
-+cmd VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR(
-+        VkPhysicalDevice                        physicalDevice,
-+        u32                                     queueFamilyIndex,
-+        platform.MirConnection*                 connection) {
-+    physicalDeviceObject := GetPhysicalDevice(physicalDevice)
-+    return ?
-+}
-+
- @extension("VK_EXT_KHR_android_surface")
- cmd VkResult vkCreateAndroidSurfaceKHR(
-         VkInstance                              instance,
-@@ -4731,6 +4939,14 @@ cmd VkResult vkCreateWin32SurfaceKHR(
-     return ?
- }
- 
-+@extension("VK_EXT_KHR_win32_surface")
-+cmd VkResult vkGetPhysicalDeviceWin32PresentationSupportKHR(
-+        VkPhysicalDevice                        physicalDevice,
-+        u32                                     queueFamilyIndex) {
-+    physicalDeviceObject := GetPhysicalDevice(physicalDevice)    
-+    return ?
-+}
-+
- 
- ////////////////
- // Validation //
-diff --git a/vulkan/include/vulkan/vk_platform.h b/vulkan/include/vulkan/vk_platform.h
-index 14dc553..8d51524 100644
---- a/vulkan/include/vulkan/vk_platform.h
-+++ b/vulkan/include/vulkan/vk_platform.h
-@@ -91,7 +91,7 @@ extern "C"
- #include <windows.h>
- #endif
- 
--#ifdef VK_USE_PLATFORM_X11_KHR
-+#ifdef VK_USE_PLATFORM_XLIB_KHR
- #include <X11/Xlib.h>
- #endif
- 
-diff --git a/vulkan/include/vulkan/vulkan.h b/vulkan/include/vulkan/vulkan.h
-index dc977e5..dcc5301 100644
---- a/vulkan/include/vulkan/vulkan.h
-+++ b/vulkan/include/vulkan/vulkan.h
-@@ -1,5 +1,5 @@
--#ifndef __vulkan_h_
--#define __vulkan_h_ 1
-+#ifndef __vulkanext_h_
-+#define __vulkanext_h_ 1
- 
- #ifdef __cplusplus
- extern "C" {
-@@ -41,7 +41,7 @@ extern "C" {
-     ((major << 22) | (minor << 12) | patch)
- 
- // Vulkan API version supported by this file
--#define VK_API_VERSION VK_MAKE_VERSION(0, 189, 0)
-+#define VK_API_VERSION VK_MAKE_VERSION(0, 190, 0)
- 
- 
- #define VK_NULL_HANDLE 0
-@@ -59,8 +59,8 @@ extern "C" {
- 
- 
- 
--typedef uint32_t VkBool32;
- typedef uint32_t VkFlags;
-+typedef uint32_t VkBool32;
- typedef uint64_t VkDeviceSize;
- typedef uint32_t VkSampleMask;
- 
-@@ -182,9 +182,10 @@ typedef enum {
-     VK_STRUCTURE_TYPE_SUBMIT_INFO = 48,
-     VK_STRUCTURE_TYPE_LAYER_INSTANCE_CREATE_INFO = 49,
-     VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO = 50,
-+    VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 51,
-     VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO,
--    VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO,
--    VK_STRUCTURE_TYPE_NUM = (VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1),
-+    VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_BIND_SPARSE_INFO,
-+    VK_STRUCTURE_TYPE_NUM = (VK_STRUCTURE_TYPE_BIND_SPARSE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1),
-     VK_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF
- } VkStructureType;
- 
-@@ -763,6 +764,7 @@ typedef enum {
-     VK_RENDER_PASS_CONTENTS_MAX_ENUM = 0x7FFFFFFF
- } VkRenderPassContents;
- 
-+typedef VkFlags VkInstanceCreateFlags;
- 
- typedef enum {
-     VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001,
-@@ -833,6 +835,8 @@ typedef enum {
-     VK_MEMORY_HEAP_HOST_LOCAL_BIT = 0x00000001,
- } VkMemoryHeapFlagBits;
- typedef VkFlags VkMemoryHeapFlags;
-+typedef VkFlags VkDeviceCreateFlags;
-+typedef VkFlags VkDeviceQueueCreateFlags;
- typedef VkFlags VkMemoryMapFlags;
- 
- typedef enum {
-@@ -860,6 +864,7 @@ typedef enum {
- typedef VkFlags VkFenceCreateFlags;
- typedef VkFlags VkSemaphoreCreateFlags;
- typedef VkFlags VkEventCreateFlags;
-+typedef VkFlags VkQueryPoolCreateFlags;
- 
- typedef enum {
-     VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 0x00000001,
-@@ -886,6 +891,13 @@ typedef enum {
- typedef VkFlags VkQueryResultFlags;
- 
- typedef enum {
-+    VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 0x00000001,
-+    VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
-+    VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
-+} VkBufferCreateFlagBits;
-+typedef VkFlags VkBufferCreateFlags;
-+
-+typedef enum {
-     VK_BUFFER_USAGE_TRANSFER_SOURCE_BIT = 0x00000001,
-     VK_BUFFER_USAGE_TRANSFER_DESTINATION_BIT = 0x00000002,
-     VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004,
-@@ -897,20 +909,14 @@ typedef enum {
-     VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100,
- } VkBufferUsageFlagBits;
- typedef VkFlags VkBufferUsageFlags;
--
--typedef enum {
--    VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 0x00000001,
--    VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
--    VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
--} VkBufferCreateFlagBits;
--typedef VkFlags VkBufferCreateFlags;
--typedef VkFlags VkImageAspectFlags;
-+typedef VkFlags VkBufferViewCreateFlags;
- 
- typedef enum {
-     VK_IMAGE_VIEW_CREATE_READ_ONLY_DEPTH_BIT = 0x00000001,
-     VK_IMAGE_VIEW_CREATE_READ_ONLY_STENCIL_BIT = 0x00000002,
- } VkImageViewCreateFlagBits;
- typedef VkFlags VkImageViewCreateFlags;
-+typedef VkFlags VkImageAspectFlags;
- typedef VkFlags VkShaderModuleCreateFlags;
- typedef VkFlags VkShaderCreateFlags;
- 
-@@ -923,6 +929,23 @@ typedef enum {
-     VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020,
-     VK_SHADER_STAGE_ALL = 0x7FFFFFFF,
- } VkShaderStageFlagBits;
-+typedef VkFlags VkPipelineCacheCreateFlags;
-+
-+typedef enum {
-+    VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001,
-+    VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002,
-+    VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004,
-+} VkPipelineCreateFlagBits;
-+typedef VkFlags VkPipelineCreateFlags;
-+typedef VkFlags VkPipelineShaderStageCreateFlags;
-+typedef VkFlags VkPipelineVertexInputStateCreateFlags;
-+typedef VkFlags VkPipelineInputAssemblyStateCreateFlags;
-+typedef VkFlags VkPipelineTesselationStateCreateFlags;
-+typedef VkFlags VkPipelineViewportStateCreateFlags;
-+typedef VkFlags VkPipelineRasterStateCreateFlags;
-+typedef VkFlags VkPipelineMultisampleStateCreateFlags;
-+typedef VkFlags VkPipelineDepthStencilStateCreateFlags;
-+typedef VkFlags VkPipelineColorBlendStateCreateFlags;
- 
- typedef enum {
-     VK_CHANNEL_R_BIT = 0x00000001,
-@@ -931,20 +954,19 @@ typedef enum {
-     VK_CHANNEL_A_BIT = 0x00000008,
- } VkChannelFlagBits;
- typedef VkFlags VkChannelFlags;
--
--typedef enum {
--    VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001,
--    VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002,
--    VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004,
--} VkPipelineCreateFlagBits;
--typedef VkFlags VkPipelineCreateFlags;
-+typedef VkFlags VkPipelineDynamicStateCreateFlags;
-+typedef VkFlags VkPipelineLayoutCreateFlags;
- typedef VkFlags VkShaderStageFlags;
-+typedef VkFlags VkSamplerCreateFlags;
-+typedef VkFlags VkDescriptorSetLayoutCreateFlags;
- 
- typedef enum {
-     VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001,
- } VkDescriptorPoolCreateFlagBits;
- typedef VkFlags VkDescriptorPoolCreateFlags;
- typedef VkFlags VkDescriptorPoolResetFlags;
-+typedef VkFlags VkFramebufferCreateFlags;
-+typedef VkFlags VkRenderPassCreateFlags;
- 
- typedef enum {
-     VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 0x00000001,
-@@ -1074,6 +1096,7 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-+    VkInstanceCreateFlags                       flags;
-     const VkApplicationInfo*                    pAppInfo;
-     uint32_t                                    enabledLayerNameCount;
-     const char*const*                           ppEnabledLayerNames;
-@@ -1314,6 +1337,7 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-+    VkDeviceQueueCreateFlags                    flags;
-     uint32_t                                    queueFamilyIndex;
-     uint32_t                                    queuePriorityCount;
-     const float*                                pQueuePriorities;
-@@ -1322,6 +1346,7 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-+    VkDeviceCreateFlags                         flags;
-     uint32_t                                    requestedQueueCount;
-     const VkDeviceQueueCreateInfo*              pRequestedQueues;
-     uint32_t                                    enabledLayerNameCount;
-@@ -1395,7 +1420,19 @@ typedef struct {
-     VkDeviceSize                                memOffset;
-     VkDeviceMemory                              mem;
-     VkSparseMemoryBindFlags                     flags;
--} VkSparseMemoryBindInfo;
-+} VkSparseMemoryBind;
-+
-+typedef struct {
-+    VkBuffer                                    buffer;
-+    uint32_t                                    bindCount;
-+    const VkSparseMemoryBind*                   pBinds;
-+} VkSparseBufferMemoryBindInfo;
-+
-+typedef struct {
-+    VkImage                                     image;
-+    uint32_t                                    bindCount;
-+    const VkSparseMemoryBind*                   pBinds;
-+} VkSparseImageOpaqueMemoryBindInfo;
- 
- typedef struct {
-     VkImageAspectFlagBits                       aspect;
-@@ -1416,11 +1453,32 @@ typedef struct {
-     VkDeviceSize                                memOffset;
-     VkDeviceMemory                              mem;
-     VkSparseMemoryBindFlags                     flags;
-+} VkSparseImageMemoryBind;
-+
-+typedef struct {
-+    VkImage                                     image;
-+    uint32_t                                    bindCount;
-+    const VkSparseImageMemoryBind*              pBinds;
- } VkSparseImageMemoryBindInfo;
- 
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-+    uint32_t                                    waitSemaphoreCount;
-+    const VkSemaphore*                          pWaitSemaphores;
-+    uint32_t                                    bufferBindCount;
-+    const VkSparseBufferMemoryBindInfo*         pBufferBinds;
-+    uint32_t                                    imageOpaqueBindCount;
-+    const VkSparseImageOpaqueMemoryBindInfo*    pImageOpaqueBinds;
-+    uint32_t                                    imageBindCount;
-+    const VkSparseImageMemoryBindInfo*          pImageBinds;
-+    uint32_t                                    signalSemaphoreCount;
-+    const VkSemaphore*                          pSignalSemaphores;
-+} VkBindSparseInfo;
-+
-+typedef struct {
-+    VkStructureType                             sType;
-+    const void*                                 pNext;
-     VkFenceCreateFlags                          flags;
- } VkFenceCreateInfo;
- 
-@@ -1439,6 +1497,7 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-+    VkQueryPoolCreateFlags                      flags;
-     VkQueryType                                 queryType;
-     uint32_t                                    slots;
-     VkQueryPipelineStatisticFlags               pipelineStatistics;
-@@ -1447,9 +1506,9 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-+    VkBufferCreateFlags                         flags;
-     VkDeviceSize                                size;
-     VkBufferUsageFlags                          usage;
--    VkBufferCreateFlags                         flags;
-     VkSharingMode                               sharingMode;
-     uint32_t                                    queueFamilyIndexCount;
-     const uint32_t*                             pQueueFamilyIndices;
-@@ -1458,6 +1517,7 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-+    VkBufferViewCreateFlags                     flags;
-     VkBuffer                                    buffer;
-     VkFormat                                    format;
-     VkDeviceSize                                offset;
-@@ -1467,6 +1527,7 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-+    VkImageCreateFlags                          flags;
-     VkImageType                                 imageType;
-     VkFormat                                    format;
-     VkExtent3D                                  extent;
-@@ -1475,7 +1536,6 @@ typedef struct {
-     uint32_t                                    samples;
-     VkImageTiling                               tiling;
-     VkImageUsageFlags                           usage;
--    VkImageCreateFlags                          flags;
-     VkSharingMode                               sharingMode;
-     uint32_t                                    queueFamilyIndexCount;
-     const uint32_t*                             pQueueFamilyIndices;
-@@ -1507,34 +1567,35 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-+    VkImageViewCreateFlags                      flags;
-     VkImage                                     image;
-     VkImageViewType                             viewType;
-     VkFormat                                    format;
-     VkChannelMapping                            channels;
-     VkImageSubresourceRange                     subresourceRange;
--    VkImageViewCreateFlags                      flags;
- } VkImageViewCreateInfo;
- 
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-+    VkShaderModuleCreateFlags                   flags;
-     size_t                                      codeSize;
-     const uint32_t*                             pCode;
--    VkShaderModuleCreateFlags                   flags;
- } VkShaderModuleCreateInfo;
- 
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-+    VkShaderCreateFlags                         flags;
-     VkShaderModule                              module;
-     const char*                                 pName;
--    VkShaderCreateFlags                         flags;
-     VkShaderStageFlagBits                       stage;
- } VkShaderCreateInfo;
- 
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-+    VkPipelineCacheCreateFlags                  flags;
-     size_t                                      initialSize;
-     const void*                                 initialData;
-     size_t                                      maxSize;
-@@ -1556,6 +1617,7 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-+    VkPipelineShaderStageCreateFlags            flags;
-     VkShader                                    shader;
-     const VkSpecializationInfo*                 pSpecializationInfo;
- } VkPipelineShaderStageCreateInfo;
-@@ -1576,6 +1638,7 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-+    VkPipelineVertexInputStateCreateFlags       flags;
-     uint32_t                                    vertexBindingDescriptionCount;
-     const VkVertexInputBindingDescription*      pVertexBindingDescriptions;
-     uint32_t                                    vertexAttributeDescriptionCount;
-@@ -1585,6 +1648,7 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-+    VkPipelineInputAssemblyStateCreateFlags     flags;
-     VkPrimitiveTopology                         topology;
-     VkBool32                                    primitiveRestartEnable;
- } VkPipelineInputAssemblyStateCreateInfo;
-@@ -1592,6 +1656,7 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-+    VkPipelineTesselationStateCreateFlags       flags;
-     uint32_t                                    patchControlPoints;
- } VkPipelineTessellationStateCreateInfo;
- 
-@@ -1622,6 +1687,7 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-+    VkPipelineViewportStateCreateFlags          flags;
-     uint32_t                                    viewportCount;
-     const VkViewport*                           pViewports;
-     uint32_t                                    scissorCount;
-@@ -1631,6 +1697,7 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-+    VkPipelineRasterStateCreateFlags            flags;
-     VkBool32                                    depthClampEnable;
-     VkBool32                                    rasterizerDiscardEnable;
-     VkFillMode                                  fillMode;
-@@ -1646,6 +1713,7 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-+    VkPipelineMultisampleStateCreateFlags       flags;
-     uint32_t                                    rasterSamples;
-     VkBool32                                    sampleShadingEnable;
-     float                                       minSampleShading;
-@@ -1667,6 +1735,7 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-+    VkPipelineDepthStencilStateCreateFlags      flags;
-     VkBool32                                    depthTestEnable;
-     VkBool32                                    depthWriteEnable;
-     VkCompareOp                                 depthCompareOp;
-@@ -1692,6 +1761,7 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-+    VkPipelineColorBlendStateCreateFlags        flags;
-     VkBool32                                    logicOpEnable;
-     VkLogicOp                                   logicOp;
-     uint32_t                                    attachmentCount;
-@@ -1702,6 +1772,7 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-+    VkPipelineDynamicStateCreateFlags           flags;
-     uint32_t                                    dynamicStateCount;
-     const VkDynamicState*                       pDynamicStates;
- } VkPipelineDynamicStateCreateInfo;
-@@ -1709,6 +1780,7 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-+    VkPipelineCreateFlags                       flags;
-     uint32_t                                    stageCount;
-     const VkPipelineShaderStageCreateInfo*      pStages;
-     const VkPipelineVertexInputStateCreateInfo* pVertexInputState;
-@@ -1720,7 +1792,6 @@ typedef struct {
-     const VkPipelineDepthStencilStateCreateInfo* pDepthStencilState;
-     const VkPipelineColorBlendStateCreateInfo*  pColorBlendState;
-     const VkPipelineDynamicStateCreateInfo*     pDynamicState;
--    VkPipelineCreateFlags                       flags;
-     VkPipelineLayout                            layout;
-     VkRenderPass                                renderPass;
-     uint32_t                                    subpass;
-@@ -1731,8 +1802,8 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
--    VkPipelineShaderStageCreateInfo             stage;
-     VkPipelineCreateFlags                       flags;
-+    VkPipelineShaderStageCreateInfo             stage;
-     VkPipelineLayout                            layout;
-     VkPipeline                                  basePipelineHandle;
-     int32_t                                     basePipelineIndex;
-@@ -1747,6 +1818,7 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-+    VkPipelineLayoutCreateFlags                 flags;
-     uint32_t                                    setLayoutCount;
-     const VkDescriptorSetLayout*                pSetLayouts;
-     uint32_t                                    pushConstantRangeCount;
-@@ -1756,6 +1828,7 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-+    VkSamplerCreateFlags                        flags;
-     VkFilter                                    magFilter;
-     VkFilter                                    minFilter;
-     VkSamplerMipmapMode                         mipmapMode;
-@@ -1782,6 +1855,7 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-+    VkDescriptorSetLayoutCreateFlags            flags;
-     uint32_t                                    bindingCount;
-     const VkDescriptorSetLayoutBinding*         pBindings;
- } VkDescriptorSetLayoutCreateInfo;
-@@ -1848,6 +1922,7 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-+    VkFramebufferCreateFlags                    flags;
-     VkRenderPass                                renderPass;
-     uint32_t                                    attachmentCount;
-     const VkImageView*                          pAttachments;
-@@ -1859,6 +1934,7 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-+    VkAttachmentDescriptionFlags                flags;
-     VkFormat                                    format;
-     uint32_t                                    samples;
-     VkAttachmentLoadOp                          loadOp;
-@@ -1867,7 +1943,6 @@ typedef struct {
-     VkAttachmentStoreOp                         stencilStoreOp;
-     VkImageLayout                               initialLayout;
-     VkImageLayout                               finalLayout;
--    VkAttachmentDescriptionFlags                flags;
- } VkAttachmentDescription;
- 
- typedef struct {
-@@ -1878,8 +1953,8 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
--    VkPipelineBindPoint                         pipelineBindPoint;
-     VkSubpassDescriptionFlags                   flags;
-+    VkPipelineBindPoint                         pipelineBindPoint;
-     uint32_t                                    inputAttachmentCount;
-     const VkAttachmentReference*                pInputAttachments;
-     uint32_t                                    colorAttachmentCount;
-@@ -1905,6 +1980,7 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-+    VkRenderPassCreateFlags                     flags;
-     uint32_t                                    attachmentCount;
-     const VkAttachmentDescription*              pAttachments;
-     uint32_t                                    subpassCount;
-@@ -1916,8 +1992,8 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
--    uint32_t                                    queueFamilyIndex;
-     VkCmdPoolCreateFlags                        flags;
-+    uint32_t                                    queueFamilyIndex;
- } VkCmdPoolCreateInfo;
- 
- typedef struct {
-@@ -2110,9 +2186,7 @@ typedef void (VKAPI *PFN_vkGetBufferMemoryRequirements)(VkDevice device, VkBuffe
- typedef void (VKAPI *PFN_vkGetImageMemoryRequirements)(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements);
- typedef void (VKAPI *PFN_vkGetImageSparseMemoryRequirements)(VkDevice device, VkImage image, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
- typedef void (VKAPI *PFN_vkGetPhysicalDeviceSparseImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, uint32_t samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties);
--typedef VkResult (VKAPI *PFN_vkQueueBindSparseBufferMemory)(VkQueue queue, VkBuffer buffer, uint32_t bindInfoCount, const VkSparseMemoryBindInfo* pBindInfo);
--typedef VkResult (VKAPI *PFN_vkQueueBindSparseImageOpaqueMemory)(VkQueue queue, VkImage image, uint32_t bindInfoCount, const VkSparseMemoryBindInfo* pBindInfo);
--typedef VkResult (VKAPI *PFN_vkQueueBindSparseImageMemory)(VkQueue queue, VkImage image, uint32_t bindInfoCount, const VkSparseImageMemoryBindInfo* pBindInfo);
-+typedef VkResult (VKAPI *PFN_vkQueueBindSparse)(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence);
- typedef VkResult (VKAPI *PFN_vkCreateFence)(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkFence* pFence);
- typedef void (VKAPI *PFN_vkDestroyFence)(VkDevice device, VkFence fence, const VkAllocCallbacks* pAllocator);
- typedef VkResult (VKAPI *PFN_vkResetFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences);
-@@ -2396,23 +2470,11 @@ void VKAPI vkGetPhysicalDeviceSparseImageFormatProperties(
-     uint32_t*                                   pPropertyCount,
-     VkSparseImageFormatProperties*              pProperties);
- 
--VkResult VKAPI vkQueueBindSparseBufferMemory(
-+VkResult VKAPI vkQueueBindSparse(
-     VkQueue                                     queue,
--    VkBuffer                                    buffer,
-     uint32_t                                    bindInfoCount,
--    const VkSparseMemoryBindInfo*               pBindInfo);
--
--VkResult VKAPI vkQueueBindSparseImageOpaqueMemory(
--    VkQueue                                     queue,
--    VkImage                                     image,
--    uint32_t                                    bindInfoCount,
--    const VkSparseMemoryBindInfo*               pBindInfo);
--
--VkResult VKAPI vkQueueBindSparseImageMemory(
--    VkQueue                                     queue,
--    VkImage                                     image,
--    uint32_t                                    bindInfoCount,
--    const VkSparseImageMemoryBindInfo*          pBindInfo);
-+    const VkBindSparseInfo*                     pBindInfo,
-+    VkFence                                     fence);
- 
- VkResult VKAPI vkCreateFence(
-     VkDevice                                    device,
-@@ -3033,19 +3095,20 @@ void VKAPI vkCmdExecuteCommands(
- #define vk_ext_khr_surface 1
- VK_DEFINE_NONDISP_HANDLE(VkSurfaceKHR)
- 
--#define VK_EXT_KHR_SURFACE_REVISION       19
-+#define VK_EXT_KHR_SURFACE_REVISION       20
- #define VK_EXT_KHR_SURFACE_EXTENSION_NUMBER 1
- #define VK_EXT_KHR_SURFACE_EXTENSION_NAME "VK_EXT_KHR_surface"
-+#define VK_ERROR_SURFACE_LOST_KHR         ((VkResult)(int)0xc0000400)
- 
- typedef void (VKAPI *PFN_vkDestroySurfaceKHR)(VkInstance  instance, VkSurfaceKHR  surface);
--typedef VkBool32 (VKAPI *PFN_vkGetPhysicalDeviceSurfaceSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface);
-+typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceSurfaceSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface);
- 
- #ifdef VK_PROTOTYPES
- void VKAPI vkDestroySurfaceKHR(
-     VkInstance                                   instance,
-     VkSurfaceKHR                                 surface);
- 
--VkBool32 VKAPI vkGetPhysicalDeviceSurfaceSupportKHR(
-+VkResult VKAPI vkGetPhysicalDeviceSurfaceSupportKHR(
-     VkPhysicalDevice                            physicalDevice,
-     uint32_t                                    queueFamilyIndex,
-     VkSurfaceKHR                                surface);
-@@ -3054,7 +3117,7 @@ VkBool32 VKAPI vkGetPhysicalDeviceSurfaceSupportKHR(
- #define vk_ext_khr_swapchain 1
- VK_DEFINE_NONDISP_HANDLE(VkSwapchainKHR)
- 
--#define VK_EXT_KHR_SWAPCHAIN_REVISION     59
-+#define VK_EXT_KHR_SWAPCHAIN_REVISION     62
- #define VK_EXT_KHR_SWAPCHAIN_EXTENSION_NUMBER 2
- #define VK_EXT_KHR_SWAPCHAIN_EXTENSION_NAME "VK_EXT_KHR_swapchain"
- #define VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR ((VkStructureType)(int)0xc0000800)
-@@ -3113,6 +3176,14 @@ typedef enum {
- } VkSurfaceTransformFlagBitsKHR;
- typedef VkFlags VkSurfaceTransformFlagsKHR;
- 
-+typedef enum {
-+    VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
-+    VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 0x00000002,
-+    VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 0x00000004,
-+    VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 0x00000008,
-+} VkCompositeAlphaFlagBitsKHR;
-+typedef VkFlags VkCompositeAlphaFlagsKHR;
-+
- typedef struct {
-     uint32_t                                    minImageCount;
-     uint32_t                                    maxImageCount;
-@@ -3121,6 +3192,7 @@ typedef struct {
-     VkExtent2D                                  maxImageExtent;
-     VkSurfaceTransformFlagsKHR                  supportedTransforms;
-     VkSurfaceTransformKHR                       currentTransform;
-+    VkCompositeAlphaFlagsKHR                    supportedCompositeAlpha;
-     uint32_t                                    maxImageArraySize;
-     VkImageUsageFlags                           supportedUsageFlags;
- } VkSurfacePropertiesKHR;
-@@ -3140,6 +3212,7 @@ typedef struct {
-     VkExtent2D                                  imageExtent;
-     VkImageUsageFlags                           imageUsageFlags;
-     VkSurfaceTransformKHR                       preTransform;
-+    VkCompositeAlphaFlagBitsKHR                 compositeAlpha;
-     uint32_t                                    imageArraySize;
-     VkSharingMode                               sharingMode;
-     uint32_t                                    queueFamilyIndexCount;
-@@ -3217,11 +3290,11 @@ VkResult VKAPI vkQueuePresentKHR(
- VK_DEFINE_NONDISP_HANDLE(VkDisplayKHR)
- VK_DEFINE_NONDISP_HANDLE(VkDisplayModeKHR)
- 
--#define VK_EXT_KHR_DISPLAY_REVISION       16
-+#define VK_EXT_KHR_DISPLAY_REVISION       17
- #define VK_EXT_KHR_DISPLAY_EXTENSION_NUMBER 3
- #define VK_EXT_KHR_DISPLAY_EXTENSION_NAME "VK_EXT_KHR_display"
- #define VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR ((VkStructureType)(int)0xc0000c00)
--#define VK_STRUCTURE_TYPE_SURFACE_DESCRIPTION_DISPLAY_PLANE_KHR ((VkStructureType)(int)0xc0000c01)
-+#define VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR ((VkStructureType)(int)0xc0000c01)
- 
- 
- typedef enum {
-@@ -3237,37 +3310,32 @@ typedef struct {
-     VkExtent2D                                  physicalDimensions;
-     VkExtent2D                                  physicalResolution;
-     VkSurfaceTransformFlagsKHR                  supportedTransforms;
--    uint32_t                                    planeCount;
-     VkBool32                                    planeReorderPossible;
-+    VkBool32                                    persistentContent;
- } VkDisplayPropertiesKHR;
- 
- typedef struct {
--    uint32_t                                    pixelClock;
-     VkExtent2D                                  visibleRegion;
--    VkExtent2D                                  totalRegion;
--    VkExtent2D                                  physicalDimensions;
--    uint32_t                                    hSyncStart;
--    uint32_t                                    hSyncEnd;
--    uint32_t                                    vSyncStart;
--    uint32_t                                    vSyncEnd;
--    VkBool32                                    interlaced;
--    VkBool32                                    doublescan;
--    VkBool32                                    hSyncPos;
--    VkBool32                                    vSyncPos;
--} VkDisplayTimingKHR;
-+    uint32_t                                    refreshRate;
-+} VkDisplayModeParametersKHR;
- 
- typedef struct {
-     VkDisplayModeKHR                            displayMode;
--    VkDisplayTimingKHR                          timing;
-+    VkDisplayModeParametersKHR                  parameters;
- } VkDisplayModePropertiesKHR;
- 
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                   pNext;
--    VkDisplayTimingKHR                          timing;
-+    VkDisplayModeParametersKHR                  parameters;
- } VkDisplayModeCreateInfoKHR;
- 
- typedef struct {
-+    VkDisplayKHR                                currentDisplay;
-+    uint32_t                                    currentStackIndex;
-+} VkDisplayPlanePropertiesKHR;
-+
-+typedef struct {
-     VkDisplayPlaneAlphaFlagsKHR                 supportedAlpha;
-     VkOffset2D                                  minSrcPosition;
-     VkOffset2D                                  maxSrcPosition;
-@@ -3277,7 +3345,7 @@ typedef struct {
-     VkOffset2D                                  maxDstPosition;
-     VkExtent2D                                  minDstExtent;
-     VkExtent2D                                  maxDstExtent;
--} VkDisplayPlanePropertiesKHR;
-+} VkDisplayPlaneCapabilitiesKHR;
- 
- typedef struct {
-     VkStructureType                             sType;
-@@ -3289,13 +3357,16 @@ typedef struct {
-     float                                       globalAlpha;
-     VkDisplayPlaneAlphaFlagsKHR                 alphaMode;
-     VkExtent2D                                  imageSize;
--} VkSurfaceDescriptionDisplayPlaneKHR;
-+} VkDisplaySurfaceCreateInfoKHR;
- 
- 
- typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPropertiesKHR* pProperties);
-+typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties);
-+typedef VkResult (VKAPI *PFN_vkGetDisplayPlaneSupportedDisplaysKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayKHR* pProperties);
- typedef VkResult (VKAPI *PFN_vkGetDisplayModePropertiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModePropertiesKHR* pProperties);
- typedef VkResult (VKAPI *PFN_vkCreateDisplayModeKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR*pCreateInfo, VkDisplayModeKHR* pMode);
--typedef VkResult (VKAPI *PFN_vkGetDisplayPlanePropertiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, VkDisplayModeKHR mode, uint32_t planeIndex, VkDisplayPlanePropertiesKHR* pProperties);
-+typedef VkResult (VKAPI *PFN_vkGetDisplayPlaneCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayModeCreateInfoKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities);
-+typedef VkResult (VKAPI *PFN_vkCreateDisplayPlaneSurfaceKHR)(VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, VkSurfaceKHR* pSurface);
- 
- #ifdef VK_PROTOTYPES
- VkResult VKAPI vkGetPhysicalDeviceDisplayPropertiesKHR(
-@@ -3303,6 +3374,16 @@ VkResult VKAPI vkGetPhysicalDeviceDisplayPropertiesKHR(
-     uint32_t*                                   pPropertyCount,
-     VkDisplayPropertiesKHR*                     pProperties);
- 
-+VkResult VKAPI vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
-+    VkPhysicalDevice                            physicalDevice,
-+    uint32_t*                                   pPropertyCount,
-+    VkDisplayPlanePropertiesKHR*                pProperties);
-+
-+VkResult VKAPI vkGetDisplayPlaneSupportedDisplaysKHR(
-+    VkPhysicalDevice                            physicalDevice,
-+    uint32_t*                                   pPropertyCount,
-+    VkDisplayKHR*                               pProperties);
-+
- VkResult VKAPI vkGetDisplayModePropertiesKHR(
-     VkPhysicalDevice                            physicalDevice,
-     VkDisplayKHR                                display,
-@@ -3315,16 +3396,20 @@ VkResult VKAPI vkCreateDisplayModeKHR(
-     const VkDisplayModeCreateInfoKHR*           pCreateInfo,
-     VkDisplayModeKHR*                           pMode);
- 
--VkResult VKAPI vkGetDisplayPlanePropertiesKHR(
-+VkResult VKAPI vkGetDisplayPlaneCapabilitiesKHR(
-     VkPhysicalDevice                            physicalDevice,
--    VkDisplayKHR                                display,
--    VkDisplayModeKHR                            mode,
-+    VkDisplayModeCreateInfoKHR                  mode,
-     uint32_t                                    planeIndex,
--    VkDisplayPlanePropertiesKHR*                pProperties);
-+    VkDisplayPlaneCapabilitiesKHR*              pCapabilities);
-+
-+VkResult VKAPI vkCreateDisplayPlaneSurfaceKHR(
-+    VkInstance                                  instance,
-+    const VkDisplaySurfaceCreateInfoKHR*        pCreateInfo,
-+    VkSurfaceKHR*                               pSurface);
- #endif
- 
- #define vk_ext_khr_display_swapchain 1
--#define VK_EXT_KHR_DISPLAY_SWAPCHAIN_REVISION 4
-+#define VK_EXT_KHR_DISPLAY_SWAPCHAIN_REVISION 6
- #define VK_EXT_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NUMBER 4
- #define VK_EXT_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME "VK_EXT_KHR_display_swapchain"
- #define VK_STRUCTURE_TYPE_DISPLAY_SWAPCHAIN_CREATE_INFO_KHR ((VkStructureType)(int)0xc0001000)
-@@ -3342,47 +3427,60 @@ typedef struct {
-     const void*                                   pNext;
-     VkRect2D                                    srcRect;
-     VkRect2D                                    dstRect;
-+    VkBool32                                    persistent;
- } VkDisplayPresentInfoKHR;
- 
- 
- 
--#ifdef VK_USE_PLATFORM_X11_KHR
--#define vk_ext_khr_x11_surface 1
-+#ifdef VK_USE_PLATFORM_XLIB_KHR
-+#define vk_ext_khr_xlib_surface 1
- #include <X11/Xlib.h>
- 
--#define VK_EXT_KHR_X11_SURFACE_REVISION   1
--#define VK_EXT_KHR_X11_SURFACE_EXTENSION_NUMBER 5
--#define VK_EXT_KHR_X11_SURFACE_EXTENSION_NAME "VK_EXT_KHR_x11_surface"
-+#define VK_EXT_KHR_XLIB_SURFACE_REVISION  3
-+#define VK_EXT_KHR_XLIB_SURFACE_EXTENSION_NUMBER 5
-+#define VK_EXT_KHR_XLIB_SURFACE_EXTENSION_NAME "vk_ext_khr_xlib_surface"
- 
--typedef VkResult (VKAPI *PFN_vkCreateX11SurfaceKHR)(VkInstance instance, Display* dpy, Window root, Window window, VkSurfaceKHR* pSurface);
-+typedef VkResult (VKAPI *PFN_vkCreateXlibSurfaceKHR)(VkInstance instance, Display* dpy, Window window, VkSurfaceKHR* pSurface);
-+typedef VkBool32 (VKAPI *PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, Display* dpy, VisualID visualId);
- 
- #ifdef VK_PROTOTYPES
--VkResult VKAPI vkCreateX11SurfaceKHR(
-+VkResult VKAPI vkCreateXlibSurfaceKHR(
-     VkInstance                                  instance,
-     Display*                                    dpy,
--    Window                                      root,
-     Window                                      window,
-     VkSurfaceKHR*                               pSurface);
-+
-+VkBool32 VKAPI vkGetPhysicalDeviceXlibPresentationSupportKHR(
-+    VkPhysicalDevice                            physicalDevice,
-+    uint32_t                                    queueFamilyIndex,
-+    Display*                                    dpy,
-+    VisualID                                    visualId);
- #endif
--#endif /* VK_USE_PLATFORM_X11_KHR */
-+#endif /* VK_USE_PLATFORM_XLIB_KHR */
- 
- #ifdef VK_USE_PLATFORM_XCB_KHR
- #define vk_ext_khr_xcb_surface 1
- #include <xcb/xcb.h>
- 
--#define VK_EXT_KHR_XCB_SURFACE_REVISION   1
-+#define VK_EXT_KHR_XCB_SURFACE_REVISION   3
- #define VK_EXT_KHR_XCB_SURFACE_EXTENSION_NUMBER 6
- #define VK_EXT_KHR_XCB_SURFACE_EXTENSION_NAME "VK_EXT_KHR_xcb_surface"
- 
--typedef VkResult (VKAPI *PFN_vkCreateXcbSurfaceKHR)(VkInstance instance, xcb_connection_t* connection, xcb_window_t root, xcb_window_t window, VkSurfaceKHR* pSurface);
-+typedef VkResult (VKAPI *PFN_vkCreateXcbSurfaceKHR)(VkInstance instance, xcb_connection_t* connection, xcb_window_t window, VkSurfaceKHR* pSurface);
-+typedef VkBool32 (VKAPI *PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id);
- 
- #ifdef VK_PROTOTYPES
- VkResult VKAPI vkCreateXcbSurfaceKHR(
-     VkInstance                                  instance,
-     xcb_connection_t*                           connection,
--    xcb_window_t                                root,
-     xcb_window_t                                window,
-     VkSurfaceKHR*                               pSurface);
-+
-+VkBool32 VKAPI vkGetPhysicalDeviceXcbPresentationSupportKHR(
-+    VkPhysicalDevice                            physicalDevice,
-+    uint32_t                                    queueFamilyIndex,
-+    xcb_connection_t*                           connection,
-+    xcb_visualid_t                              visual_id);
- #endif
- #endif /* VK_USE_PLATFORM_XCB_KHR */
- 
-@@ -3390,11 +3488,12 @@ VkResult VKAPI vkCreateXcbSurfaceKHR(
- #define vk_ext_khr_wayland_surface 1
- #include <wayland-client.h>
- 
--#define VK_EXT_KHR_WAYLAND_SURFACE_REVISION 1
-+#define VK_EXT_KHR_WAYLAND_SURFACE_REVISION 2
- #define VK_EXT_KHR_WAYLAND_SURFACE_EXTENSION_NUMBER 7
- #define VK_EXT_KHR_WAYLAND_SURFACE_EXTENSION_NAME "VK_EXT_KHR_wayland_surface"
- 
- typedef VkResult (VKAPI *PFN_vkCreateWaylandSurfaceKHR)(VkInstance instance, struct wl_display* display, struct wl_surface* surface, VkSurfaceKHR* pSurface);
-+typedef VkBool32 (VKAPI *PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, struct wl_display* display);
- 
- #ifdef VK_PROTOTYPES
- VkResult VKAPI vkCreateWaylandSurfaceKHR(
-@@ -3402,6 +3501,11 @@ VkResult VKAPI vkCreateWaylandSurfaceKHR(
-     struct wl_display*                          display,
-     struct wl_surface*                          surface,
-     VkSurfaceKHR*                               pSurface);
-+
-+VkBool32 VKAPI vkGetPhysicalDeviceWaylandPresentationSupportKHR(
-+    VkPhysicalDevice                            physicalDevice,
-+    uint32_t                                    queueFamilyIndex,
-+    struct wl_display*                          display);
- #endif
- #endif /* VK_USE_PLATFORM_WAYLAND_KHR */
- 
-@@ -3409,11 +3513,12 @@ VkResult VKAPI vkCreateWaylandSurfaceKHR(
- #define vk_ext_khr_mir_surface 1
- #include <mir_toolkit/client_types.h>
- 
--#define VK_EXT_KHR_MIR_SURFACE_REVISION   1
-+#define VK_EXT_KHR_MIR_SURFACE_REVISION   2
- #define VK_EXT_KHR_MIR_SURFACE_EXTENSION_NUMBER 8
- #define VK_EXT_KHR_MIR_SURFACE_EXTENSION_NAME "VK_EXT_KHR_mir_surface"
- 
- typedef VkResult (VKAPI *PFN_vkCreateMirSurfaceKHR)(VkInstance instance, MirConnection* connection, MirSurface* mirSurface, VkSurfaceKHR* pSurface);
-+typedef VkBool32 (VKAPI *PFN_vkGetPhysicalDeviceMirPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, MirConnection* connection);
- 
- #ifdef VK_PROTOTYPES
- VkResult VKAPI vkCreateMirSurfaceKHR(
-@@ -3421,6 +3526,11 @@ VkResult VKAPI vkCreateMirSurfaceKHR(
-     MirConnection*                              connection,
-     MirSurface*                                 mirSurface,
-     VkSurfaceKHR*                               pSurface);
-+
-+VkBool32 VKAPI vkGetPhysicalDeviceMirPresentationSupportKHR(
-+    VkPhysicalDevice                            physicalDevice,
-+    uint32_t                                    queueFamilyIndex,
-+    MirConnection*                              connection);
- #endif
- #endif /* VK_USE_PLATFORM_MIR_KHR */
- 
-@@ -3448,11 +3558,12 @@ VkResult VKAPI vkCreateAndroidSurfaceKHR(
- #define vk_ext_khr_win32_surface 1
- #include <windows.h>
- 
--#define VK_EXT_KHR_WIN32_SURFACE_REVISION 1
-+#define VK_EXT_KHR_WIN32_SURFACE_REVISION 2
- #define VK_EXT_KHR_WIN32_SURFACE_EXTENSION_NUMBER 10
- #define VK_EXT_KHR_WIN32_SURFACE_EXTENSION_NAME "VK_EXT_KHR_win32_surface"
- 
- typedef VkResult (VKAPI *PFN_vkCreateWin32SurfaceKHR)(VkInstance instance, HINSTANCE hinstance, HWND hwnd, VkSurfaceKHR* pSurface);
-+typedef VkBool32 (VKAPI *PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex);
- 
- #ifdef VK_PROTOTYPES
- VkResult VKAPI vkCreateWin32SurfaceKHR(
-@@ -3460,6 +3571,10 @@ VkResult VKAPI vkCreateWin32SurfaceKHR(
-     HINSTANCE                                   hinstance,
-     HWND                                        hwnd,
-     VkSurfaceKHR*                               pSurface);
-+
-+VkBool32 VKAPI vkGetPhysicalDeviceWin32PresentationSupportKHR(
-+    VkPhysicalDevice                            physicalDevice,
-+    uint32_t                                    queueFamilyIndex);
- #endif
- #endif /* VK_USE_PLATFORM_WIN32_KHR */
- 
-diff --git a/vulkan/libvulkan/entry.cpp b/vulkan/libvulkan/entry.cpp
-index 386acbf..1360862 100644
---- a/vulkan/libvulkan/entry.cpp
-+++ b/vulkan/libvulkan/entry.cpp
-@@ -212,18 +212,8 @@ void vkGetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDev
- }
- 
- __attribute__((visibility("default")))
--VkResult vkQueueBindSparseBufferMemory(VkQueue queue, VkBuffer buffer, uint32_t bindInfoCount, const VkSparseMemoryBindInfo* pBindInfo) {
--    return GetVtbl(queue).QueueBindSparseBufferMemory(queue, buffer, bindInfoCount, pBindInfo);
--}
--
--__attribute__((visibility("default")))
--VkResult vkQueueBindSparseImageOpaqueMemory(VkQueue queue, VkImage image, uint32_t bindInfoCount, const VkSparseMemoryBindInfo* pBindInfo) {
--    return GetVtbl(queue).QueueBindSparseImageOpaqueMemory(queue, image, bindInfoCount, pBindInfo);
--}
--
--__attribute__((visibility("default")))
--VkResult vkQueueBindSparseImageMemory(VkQueue queue, VkImage image, uint32_t bindInfoCount, const VkSparseImageMemoryBindInfo* pBindInfo) {
--    return GetVtbl(queue).QueueBindSparseImageMemory(queue, image, bindInfoCount, pBindInfo);
-+VkResult vkQueueBindSparse(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence) {
-+    return GetVtbl(queue).QueueBindSparse(queue, bindInfoCount, pBindInfo, fence);
- }
- 
- __attribute__((visibility("default")))
-@@ -752,7 +742,7 @@ void vkDestroySurfaceKHR(VkInstance instance, VkSurfaceKHR surface) {
- }
- 
- __attribute__((visibility("default")))
--VkBool32 vkGetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface) {
-+VkResult vkGetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface) {
-     return GetVtbl(physicalDevice).GetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface);
- }
- 
-diff --git a/vulkan/libvulkan/get_proc_addr.cpp b/vulkan/libvulkan/get_proc_addr.cpp
-index 68a77d5..a0987e2 100644
---- a/vulkan/libvulkan/get_proc_addr.cpp
-+++ b/vulkan/libvulkan/get_proc_addr.cpp
-@@ -188,9 +188,7 @@ const NameProcEntry kDeviceProcTbl[] = {
-     {"vkInvalidateMappedMemoryRanges", reinterpret_cast<PFN_vkVoidFunction>(vkInvalidateMappedMemoryRanges)},
-     {"vkMapMemory", reinterpret_cast<PFN_vkVoidFunction>(vkMapMemory)},
-     {"vkMergePipelineCaches", reinterpret_cast<PFN_vkVoidFunction>(vkMergePipelineCaches)},
--    {"vkQueueBindSparseBufferMemory", reinterpret_cast<PFN_vkVoidFunction>(vkQueueBindSparseBufferMemory)},
--    {"vkQueueBindSparseImageMemory", reinterpret_cast<PFN_vkVoidFunction>(vkQueueBindSparseImageMemory)},
--    {"vkQueueBindSparseImageOpaqueMemory", reinterpret_cast<PFN_vkVoidFunction>(vkQueueBindSparseImageOpaqueMemory)},
-+    {"vkQueueBindSparse", reinterpret_cast<PFN_vkVoidFunction>(vkQueueBindSparse)},
-     {"vkQueuePresentKHR", reinterpret_cast<PFN_vkVoidFunction>(vkQueuePresentKHR)},
-     {"vkQueueSubmit", reinterpret_cast<PFN_vkVoidFunction>(vkQueueSubmit)},
-     {"vkQueueWaitIdle", reinterpret_cast<PFN_vkVoidFunction>(vkQueueWaitIdle)},
-@@ -347,9 +345,7 @@ const NameOffsetEntry kDeviceOffsetTbl[] = {
-     {"vkInvalidateMappedMemoryRanges", offsetof(DeviceVtbl, InvalidateMappedMemoryRanges)},
-     {"vkMapMemory", offsetof(DeviceVtbl, MapMemory)},
-     {"vkMergePipelineCaches", offsetof(DeviceVtbl, MergePipelineCaches)},
--    {"vkQueueBindSparseBufferMemory", offsetof(DeviceVtbl, QueueBindSparseBufferMemory)},
--    {"vkQueueBindSparseImageMemory", offsetof(DeviceVtbl, QueueBindSparseImageMemory)},
--    {"vkQueueBindSparseImageOpaqueMemory", offsetof(DeviceVtbl, QueueBindSparseImageOpaqueMemory)},
-+    {"vkQueueBindSparse", offsetof(DeviceVtbl, QueueBindSparse)},
-     {"vkQueuePresentKHR", offsetof(DeviceVtbl, QueuePresentKHR)},
-     {"vkQueueSubmit", offsetof(DeviceVtbl, QueueSubmit)},
-     {"vkQueueWaitIdle", offsetof(DeviceVtbl, QueueWaitIdle)},
-@@ -591,19 +587,9 @@ bool LoadDeviceVtbl(VkDevice device,
-         ALOGE("missing device proc: %s", "vkGetImageSparseMemoryRequirements");
-         success = false;
-     }
--    vtbl.QueueBindSparseBufferMemory = reinterpret_cast<PFN_vkQueueBindSparseBufferMemory>(get_proc_addr(device, "vkQueueBindSparseBufferMemory"));
--    if (UNLIKELY(!vtbl.QueueBindSparseBufferMemory)) {
--        ALOGE("missing device proc: %s", "vkQueueBindSparseBufferMemory");
--        success = false;
--    }
--    vtbl.QueueBindSparseImageOpaqueMemory = reinterpret_cast<PFN_vkQueueBindSparseImageOpaqueMemory>(get_proc_addr(device, "vkQueueBindSparseImageOpaqueMemory"));
--    if (UNLIKELY(!vtbl.QueueBindSparseImageOpaqueMemory)) {
--        ALOGE("missing device proc: %s", "vkQueueBindSparseImageOpaqueMemory");
--        success = false;
--    }
--    vtbl.QueueBindSparseImageMemory = reinterpret_cast<PFN_vkQueueBindSparseImageMemory>(get_proc_addr(device, "vkQueueBindSparseImageMemory"));
--    if (UNLIKELY(!vtbl.QueueBindSparseImageMemory)) {
--        ALOGE("missing device proc: %s", "vkQueueBindSparseImageMemory");
-+    vtbl.QueueBindSparse = reinterpret_cast<PFN_vkQueueBindSparse>(get_proc_addr(device, "vkQueueBindSparse"));
-+    if (UNLIKELY(!vtbl.QueueBindSparse)) {
-+        ALOGE("missing device proc: %s", "vkQueueBindSparse");
-         success = false;
-     }
-     vtbl.CreateFence = reinterpret_cast<PFN_vkCreateFence>(get_proc_addr(device, "vkCreateFence"));
-diff --git a/vulkan/libvulkan/get_proc_addr.cpp.tmpl b/vulkan/libvulkan/get_proc_addr.cpp.tmpl
-index c6ec0d1..217647f 100644
---- a/vulkan/libvulkan/get_proc_addr.cpp.tmpl
-+++ b/vulkan/libvulkan/get_proc_addr.cpp.tmpl
-@@ -279,7 +279,7 @@ bool LoadDeviceVtbl(VkDevice device,
-   {{$ext := index $.Arguments 0}}
-   {{     if eq $ext "VK_EXT_KHR_display"}}true
-   {{else if eq $ext "VK_EXT_KHR_display_swapchain"}}true
--  {{else if eq $ext "VK_EXT_KHR_x11_surface"}}true
-+  {{else if eq $ext "VK_EXT_KHR_xlib_surface"}}true
-   {{else if eq $ext "VK_EXT_KHR_xcb_surface"}}true
-   {{else if eq $ext "VK_EXT_KHR_wayland_surface"}}true
-   {{else if eq $ext "VK_EXT_KHR_mir_surface"}}true
-diff --git a/vulkan/libvulkan/loader.h b/vulkan/libvulkan/loader.h
-index e166887..5c176db 100644
---- a/vulkan/libvulkan/loader.h
-+++ b/vulkan/libvulkan/loader.h
-@@ -136,9 +136,7 @@ struct DeviceVtbl {
- 
-     PFN_vkQueueSubmit QueueSubmit;
-     PFN_vkQueueWaitIdle QueueWaitIdle;
--    PFN_vkQueueBindSparseBufferMemory QueueBindSparseBufferMemory;
--    PFN_vkQueueBindSparseImageOpaqueMemory QueueBindSparseImageOpaqueMemory;
--    PFN_vkQueueBindSparseImageMemory QueueBindSparseImageMemory;
-+    PFN_vkQueueBindSparse QueueBindSparse;
- 
-     PFN_vkBeginCommandBuffer BeginCommandBuffer;
-     PFN_vkEndCommandBuffer EndCommandBuffer;
-@@ -268,7 +266,7 @@ VkResult CreateAndroidSurfaceKHR(VkInstance instance,
-                                  ANativeWindow* window,
-                                  VkSurfaceKHR* surface);
- void DestroySurfaceKHR(VkInstance instance, VkSurfaceKHR surface);
--VkBool32 GetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice pdev,
-+VkResult GetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice pdev,
-                                             uint32_t queue_family,
-                                             VkSurfaceKHR surface);
- VkResult GetSurfacePropertiesKHR(VkDevice device,
-diff --git a/vulkan/libvulkan/swapchain.cpp b/vulkan/libvulkan/swapchain.cpp
-index f6ab081..8861918 100644
---- a/vulkan/libvulkan/swapchain.cpp
-+++ b/vulkan/libvulkan/swapchain.cpp
-@@ -175,10 +175,10 @@ void DestroySurfaceKHR(VkInstance instance, VkSurfaceKHR surface_handle) {
-     FreeMem(instance, surface);
- }
- 
--VkBool32 GetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice /*pdev*/,
-+VkResult GetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice /*pdev*/,
-                                             uint32_t /*queue_family*/,
-                                             VkSurfaceKHR /*surface*/) {
--    return VK_TRUE;
-+    return VK_SUCCESS;
- }
- 
- VkResult GetSurfacePropertiesKHR(VkDevice /*device*/,
-diff --git a/vulkan/nulldrv/null_driver.cpp b/vulkan/nulldrv/null_driver.cpp
-index 9c56982..d6a879e 100644
---- a/vulkan/nulldrv/null_driver.cpp
-+++ b/vulkan/nulldrv/null_driver.cpp
-@@ -815,17 +815,7 @@ void GetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevic
-     ALOGV("TODO: vk%s", __FUNCTION__);
- }
- 
--VkResult QueueBindSparseBufferMemory(VkQueue queue, VkBuffer buffer, uint32_t numBindings, const VkSparseMemoryBindInfo* pBindInfo) {
--    ALOGV("TODO: vk%s", __FUNCTION__);
--    return VK_SUCCESS;
--}
--
--VkResult QueueBindSparseImageOpaqueMemory(VkQueue queue, VkImage image, uint32_t numBindings, const VkSparseMemoryBindInfo* pBindInfo) {
--    ALOGV("TODO: vk%s", __FUNCTION__);
--    return VK_SUCCESS;
--}
--
--VkResult QueueBindSparseImageMemory(VkQueue queue, VkImage image, uint32_t numBindings, const VkSparseImageMemoryBindInfo* pBindInfo) {
-+VkResult QueueBindSparse(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence) {
-     ALOGV("TODO: vk%s", __FUNCTION__);
-     return VK_SUCCESS;
- }
-diff --git a/vulkan/nulldrv/null_driver.h b/vulkan/nulldrv/null_driver.h
-index dd6dc6b..70283c4 100644
---- a/vulkan/nulldrv/null_driver.h
-+++ b/vulkan/nulldrv/null_driver.h
-@@ -60,9 +60,7 @@ void GetBufferMemoryRequirements(VkDevice device, VkBuffer buffer, VkMemoryRequi
- void GetImageMemoryRequirements(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements);
- void GetImageSparseMemoryRequirements(VkDevice device, VkImage image, uint32_t* pNumRequirements, VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
- void GetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, uint32_t samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pNumProperties, VkSparseImageFormatProperties* pProperties);
--VkResult QueueBindSparseBufferMemory(VkQueue queue, VkBuffer buffer, uint32_t numBindings, const VkSparseMemoryBindInfo* pBindInfo);
--VkResult QueueBindSparseImageOpaqueMemory(VkQueue queue, VkImage image, uint32_t numBindings, const VkSparseMemoryBindInfo* pBindInfo);
--VkResult QueueBindSparseImageMemory(VkQueue queue, VkImage image, uint32_t numBindings, const VkSparseImageMemoryBindInfo* pBindInfo);
-+VkResult QueueBindSparse(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence);
- VkResult CreateFence(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocCallbacks* allocator, VkFence* pFence);
- void DestroyFence(VkDevice device, VkFence fence, const VkAllocCallbacks* allocator);
- VkResult ResetFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences);
-diff --git a/vulkan/nulldrv/null_driver_gen.cpp b/vulkan/nulldrv/null_driver_gen.cpp
-index a026bbf..f836a70 100644
---- a/vulkan/nulldrv/null_driver_gen.cpp
-+++ b/vulkan/nulldrv/null_driver_gen.cpp
-@@ -178,9 +178,7 @@ const NameProcEntry kDeviceProcTbl[] = {
-     {"vkInvalidateMappedMemoryRanges", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkInvalidateMappedMemoryRanges>(InvalidateMappedMemoryRanges))},
-     {"vkMapMemory", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkMapMemory>(MapMemory))},
-     {"vkMergePipelineCaches", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkMergePipelineCaches>(MergePipelineCaches))},
--    {"vkQueueBindSparseBufferMemory", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkQueueBindSparseBufferMemory>(QueueBindSparseBufferMemory))},
--    {"vkQueueBindSparseImageMemory", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkQueueBindSparseImageMemory>(QueueBindSparseImageMemory))},
--    {"vkQueueBindSparseImageOpaqueMemory", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkQueueBindSparseImageOpaqueMemory>(QueueBindSparseImageOpaqueMemory))},
-+    {"vkQueueBindSparse", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkQueueBindSparse>(QueueBindSparse))},
-     {"vkQueueSubmit", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkQueueSubmit>(QueueSubmit))},
-     {"vkQueueWaitIdle", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkQueueWaitIdle>(QueueWaitIdle))},
-     {"vkResetCommandBuffer", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkResetCommandBuffer>(ResetCommandBuffer))},
--- 
-2.6.0.rc2.230.g3dd15c0
-
diff --git a/vulkan/patches/frameworks_native-sdk_0.10/0015-vulkan-Update-from-version-0.190.0-to-0.192.0.patch b/vulkan/patches/frameworks_native-sdk_0.10/0015-vulkan-Update-from-version-0.190.0-to-0.192.0.patch
deleted file mode 100644
index aec2cc6..0000000
--- a/vulkan/patches/frameworks_native-sdk_0.10/0015-vulkan-Update-from-version-0.190.0-to-0.192.0.patch
+++ /dev/null
@@ -1,246 +0,0 @@
-From c10af6dde1e91deb70ef055838f1b51240fc66f2 Mon Sep 17 00:00:00 2001
-From: Jesse Hall <jessehall@google.com>
-Date: Sun, 29 Nov 2015 19:12:15 -0800
-Subject: [PATCH] vulkan: Update from version 0.190.0 to 0.192.0
-
-Change-Id: I5d38543a4ae1c522cacb45a3c011ceab62d2e1d5
----
- vulkan/api/vulkan.api          | 33 ++++++++++++++++++---------------
- vulkan/include/vulkan/vulkan.h | 38 ++++++++++++++++++++------------------
- vulkan/libvulkan/entry.cpp     |  4 ++--
- vulkan/nulldrv/null_driver.cpp |  2 +-
- vulkan/nulldrv/null_driver.h   |  2 +-
- 5 files changed, 42 insertions(+), 37 deletions(-)
-
-diff --git a/vulkan/api/vulkan.api b/vulkan/api/vulkan.api
-index 0c6a3cc..d2a15b5 100644
---- a/vulkan/api/vulkan.api
-+++ b/vulkan/api/vulkan.api
-@@ -27,7 +27,7 @@ import platform "platform.api"
- 
- // API version (major.minor.patch)
- define VERSION_MAJOR 0
--define VERSION_MINOR 190
-+define VERSION_MINOR 192
- define VERSION_PATCH 0
- 
- // API limits
-@@ -1149,6 +1149,12 @@ type VkFlags VkFramebufferCreateFlags
- //bitfield VkFramebufferCreateFlagBits {
- //}
- 
-+/// Dependency flags
-+type VkFlags VkDependencyFlags
-+bitfield VkDependencyFlagBits {
-+    VK_DEPENDENCY_BY_REGION_BIT                             = 0x00000001,
-+}
-+
- @extension("VK_EXT_KHR_swapchain")
- type VkFlags VkSurfaceTransformFlagsKHR
- @extension("VK_EXT_KHR_swapchain")
-@@ -2019,7 +2025,7 @@ class VkSubpassDependency {
-     VkPipelineStageFlags                        destStageMask
-     VkMemoryOutputFlags                         outputMask
-     VkMemoryInputFlags                          inputMask
--    VkBool32                                    byRegion
-+    VkDependencyFlags                           dependencyFlags
- }
- 
- class VkRenderPassCreateInfo {
-@@ -2071,12 +2077,9 @@ class VkPhysicalDeviceFeatures {
-     VkBool32                                    textureCompressionBC                      /// BC1-7 texture compressed formats
-     VkBool32                                    occlusionQueryNonConservative             /// non-conservative (exact) occlusion queries
-     VkBool32                                    pipelineStatisticsQuery                   /// pipeline statistics query
--    VkBool32                                    vertexSideEffects                         /// storage buffers and images in vertex stage
--    VkBool32                                    tessellationSideEffects                   /// storage buffers and images in tessellation stage
--    VkBool32                                    geometrySideEffects                       /// storage buffers and images in geometry stage
--    VkBool32                                    fragmentSideEffects                       /// storage buffers and images in fragment stage
--    VkBool32                                    shaderTessellationPointSize               /// tessellation stage can export point size
--    VkBool32                                    shaderGeometryPointSize                   /// geometry stage can export point size
-+    VkBool32                                    vertexPipelineStoresAndAtomics
-+    VkBool32                                    fragmentStoresAndAtomics
-+    VkBool32                                    shaderTessellationAndGeometryPointSize
-     VkBool32                                    shaderImageGatherExtended                 /// texture gather with run-time values and independent offsets
-     VkBool32                                    shaderStorageImageExtendedFormats         /// the extended set of formats can be used for storage images
-     VkBool32                                    shaderStorageImageMultisample             /// multisample images can be used for storage images
-@@ -2179,10 +2182,10 @@ class VkPhysicalDeviceLimits {
-     f32[2]                                      viewportBoundsRange                       /// viewport bounds range (min,max)
-     u32                                         viewportSubPixelBits                      /// num bits of subpixel precision for viewport
- 
--    u32                                         minMemoryMapAlignment                     /// min required alignment of pointers returned by MapMemory (bytes)
--    u32                                         minTexelBufferOffsetAlignment             /// min required alignment for texel buffer offsets (bytes)
--    u32                                         minUniformBufferOffsetAlignment           /// min required alignment for uniform buffer sizes and offsets (bytes)
--    u32                                         minStorageBufferOffsetAlignment           /// min required alignment for storage buffer offsets (bytes)
-+    platform.size_t                             minMemoryMapAlignment                     /// min required alignment of pointers returned by MapMemory (bytes)
-+    VkDeviceSize                                minTexelBufferOffsetAlignment             /// min required alignment for texel buffer offsets (bytes)
-+    VkDeviceSize                                minUniformBufferOffsetAlignment           /// min required alignment for uniform buffer sizes and offsets (bytes)
-+    VkDeviceSize                                minStorageBufferOffsetAlignment           /// min required alignment for storage buffer offsets (bytes)
- 
-     s32                                         minTexelOffset                            /// min texel offset for OpTextureSampleOffset
-     u32                                         maxTexelOffset                            /// max texel offset for OpTextureSampleOffset
-@@ -2220,8 +2223,8 @@ class VkPhysicalDeviceLimits {
-     f32                                         lineWidthGranularity                      /// granularity of supported line widths
-     VkBool32                                    strictLines
- 
--    u32                                         recommendedBufferCopyOffsetAlignment
--    u32                                         recommendedBufferCopyRowPitchAlignment
-+    VkDeviceSize                                recommendedBufferCopyOffsetAlignment
-+    VkDeviceSize                                recommendedBufferCopyRowPitchAlignment
- }
- 
- class VkPhysicalDeviceSparseProperties {
-@@ -4486,7 +4489,7 @@ cmd void vkCmdPipelineBarrier(
-         VkCmdBuffer                                 cmdBuffer,
-         VkPipelineStageFlags                        srcStageMask,
-         VkPipelineStageFlags                        destStageMask,
--        VkBool32                                    byRegion,
-+        VkDependencyFlags                           dependencyFlags,
-         u32                                         memBarrierCount,
-         const void* const*                          ppMemBarriers) {
-     cmdBufferObject := GetCmdBuffer(cmdBuffer)
-diff --git a/vulkan/include/vulkan/vulkan.h b/vulkan/include/vulkan/vulkan.h
-index dcc5301..fd09209 100644
---- a/vulkan/include/vulkan/vulkan.h
-+++ b/vulkan/include/vulkan/vulkan.h
-@@ -1,5 +1,5 @@
--#ifndef __vulkanext_h_
--#define __vulkanext_h_ 1
-+#ifndef __vulkan_h_
-+#define __vulkan_h_ 1
- 
- #ifdef __cplusplus
- extern "C" {
-@@ -41,7 +41,7 @@ extern "C" {
-     ((major << 22) | (minor << 12) | patch)
- 
- // Vulkan API version supported by this file
--#define VK_API_VERSION VK_MAKE_VERSION(0, 190, 0)
-+#define VK_API_VERSION VK_MAKE_VERSION(0, 192, 0)
- 
- 
- #define VK_NULL_HANDLE 0
-@@ -1018,6 +1018,11 @@ typedef enum {
- typedef VkFlags VkMemoryInputFlags;
- 
- typedef enum {
-+    VK_DEPENDENCY_BY_REGION_BIT = 0x00000001,
-+} VkDependencyFlagBits;
-+typedef VkFlags VkDependencyFlags;
-+
-+typedef enum {
-     VK_CMD_POOL_CREATE_TRANSIENT_BIT = 0x00000001,
-     VK_CMD_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002,
- } VkCmdPoolCreateFlagBits;
-@@ -1138,12 +1143,9 @@ typedef struct {
-     VkBool32                                    textureCompressionBC;
-     VkBool32                                    occlusionQueryNonConservative;
-     VkBool32                                    pipelineStatisticsQuery;
--    VkBool32                                    vertexSideEffects;
--    VkBool32                                    tessellationSideEffects;
--    VkBool32                                    geometrySideEffects;
--    VkBool32                                    fragmentSideEffects;
--    VkBool32                                    shaderTessellationPointSize;
--    VkBool32                                    shaderGeometryPointSize;
-+    VkBool32                                    vertexPipelineStoresAndAtomics;
-+    VkBool32                                    fragmentStoresAndAtomics;
-+    VkBool32                                    shaderTessellationAndGeometryPointSize;
-     VkBool32                                    shaderImageGatherExtended;
-     VkBool32                                    shaderStorageImageExtendedFormats;
-     VkBool32                                    shaderStorageImageMultisample;
-@@ -1253,10 +1255,10 @@ typedef struct {
-     uint32_t                                    maxViewportDimensions[2];
-     float                                       viewportBoundsRange[2];
-     uint32_t                                    viewportSubPixelBits;
--    uint32_t                                    minMemoryMapAlignment;
--    uint32_t                                    minTexelBufferOffsetAlignment;
--    uint32_t                                    minUniformBufferOffsetAlignment;
--    uint32_t                                    minStorageBufferOffsetAlignment;
-+    size_t                                      minMemoryMapAlignment;
-+    VkDeviceSize                                minTexelBufferOffsetAlignment;
-+    VkDeviceSize                                minUniformBufferOffsetAlignment;
-+    VkDeviceSize                                minStorageBufferOffsetAlignment;
-     int32_t                                     minTexelOffset;
-     uint32_t                                    maxTexelOffset;
-     int32_t                                     minTexelGatherOffset;
-@@ -1286,8 +1288,8 @@ typedef struct {
-     float                                       pointSizeGranularity;
-     float                                       lineWidthGranularity;
-     VkBool32                                    strictLines;
--    uint32_t                                    recommendedBufferCopyOffsetAlignment;
--    uint32_t                                    recommendedBufferCopyRowPitchAlignment;
-+    VkDeviceSize                                recommendedBufferCopyOffsetAlignment;
-+    VkDeviceSize                                recommendedBufferCopyRowPitchAlignment;
- } VkPhysicalDeviceLimits;
- 
- typedef struct {
-@@ -1974,7 +1976,7 @@ typedef struct {
-     VkPipelineStageFlags                        destStageMask;
-     VkMemoryOutputFlags                         outputMask;
-     VkMemoryInputFlags                          inputMask;
--    VkBool32                                    byRegion;
-+    VkDependencyFlags                           dependencyFlags;
- } VkSubpassDependency;
- 
- typedef struct {
-@@ -2280,7 +2282,7 @@ typedef void (VKAPI *PFN_vkCmdResolveImage)(VkCmdBuffer cmdBuffer, VkImage srcIm
- typedef void (VKAPI *PFN_vkCmdSetEvent)(VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask);
- typedef void (VKAPI *PFN_vkCmdResetEvent)(VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask);
- typedef void (VKAPI *PFN_vkCmdWaitEvents)(VkCmdBuffer cmdBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, uint32_t memBarrierCount, const void* const* ppMemBarriers);
--typedef void (VKAPI *PFN_vkCmdPipelineBarrier)(VkCmdBuffer cmdBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, VkBool32 byRegion, uint32_t memBarrierCount, const void* const* ppMemBarriers);
-+typedef void (VKAPI *PFN_vkCmdPipelineBarrier)(VkCmdBuffer cmdBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, VkDependencyFlags dependencyFlags, uint32_t memBarrierCount, const void* const* ppMemBarriers);
- typedef void (VKAPI *PFN_vkCmdBeginQuery)(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot, VkQueryControlFlags flags);
- typedef void (VKAPI *PFN_vkCmdEndQuery)(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot);
- typedef void (VKAPI *PFN_vkCmdResetQueryPool)(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount);
-@@ -3029,7 +3031,7 @@ void VKAPI vkCmdPipelineBarrier(
-     VkCmdBuffer                                 cmdBuffer,
-     VkPipelineStageFlags                        srcStageMask,
-     VkPipelineStageFlags                        destStageMask,
--    VkBool32                                    byRegion,
-+    VkDependencyFlags                           dependencyFlags,
-     uint32_t                                    memBarrierCount,
-     const void* const*                          ppMemBarriers);
- 
-diff --git a/vulkan/libvulkan/entry.cpp b/vulkan/libvulkan/entry.cpp
-index 1360862..9198f64 100644
---- a/vulkan/libvulkan/entry.cpp
-+++ b/vulkan/libvulkan/entry.cpp
-@@ -682,8 +682,8 @@ void vkCmdWaitEvents(VkCmdBuffer cmdBuffer, uint32_t eventCount, const VkEvent*
- }
- 
- __attribute__((visibility("default")))
--void vkCmdPipelineBarrier(VkCmdBuffer cmdBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, VkBool32 byRegion, uint32_t memBarrierCount, const void* const* ppMemBarriers) {
--    GetVtbl(cmdBuffer).CmdPipelineBarrier(cmdBuffer, srcStageMask, destStageMask, byRegion, memBarrierCount, ppMemBarriers);
-+void vkCmdPipelineBarrier(VkCmdBuffer cmdBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, VkDependencyFlags dependencyFlags, uint32_t memBarrierCount, const void* const* ppMemBarriers) {
-+    GetVtbl(cmdBuffer).CmdPipelineBarrier(cmdBuffer, srcStageMask, destStageMask, dependencyFlags, memBarrierCount, ppMemBarriers);
- }
- 
- __attribute__((visibility("default")))
-diff --git a/vulkan/nulldrv/null_driver.cpp b/vulkan/nulldrv/null_driver.cpp
-index d6a879e..698dbd0 100644
---- a/vulkan/nulldrv/null_driver.cpp
-+++ b/vulkan/nulldrv/null_driver.cpp
-@@ -1050,7 +1050,7 @@ void CmdResetEvent(VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags st
- void CmdWaitEvents(VkCmdBuffer cmdBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, uint32_t memBarrierCount, const void* const* ppMemBarriers) {
- }
- 
--void CmdPipelineBarrier(VkCmdBuffer cmdBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, VkBool32 byRegion, uint32_t memBarrierCount, const void* const* ppMemBarriers) {
-+void CmdPipelineBarrier(VkCmdBuffer cmdBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, VkDependencyFlags dependencyFlags, uint32_t memBarrierCount, const void* const* ppMemBarriers) {
- }
- 
- void CmdBeginQuery(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot, VkQueryControlFlags flags) {
-diff --git a/vulkan/nulldrv/null_driver.h b/vulkan/nulldrv/null_driver.h
-index 70283c4..5f3e53e 100644
---- a/vulkan/nulldrv/null_driver.h
-+++ b/vulkan/nulldrv/null_driver.h
-@@ -154,7 +154,7 @@ void CmdResolveImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcI
- void CmdSetEvent(VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask);
- void CmdResetEvent(VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask);
- void CmdWaitEvents(VkCmdBuffer cmdBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, uint32_t memBarrierCount, const void* const* ppMemBarriers);
--void CmdPipelineBarrier(VkCmdBuffer cmdBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, VkBool32 byRegion, uint32_t memBarrierCount, const void* const* ppMemBarriers);
-+void CmdPipelineBarrier(VkCmdBuffer cmdBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, VkDependencyFlags dependencyFlags, uint32_t memBarrierCount, const void* const* ppMemBarriers);
- void CmdBeginQuery(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot, VkQueryControlFlags flags);
- void CmdEndQuery(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot);
- void CmdResetQueryPool(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount);
--- 
-2.6.0.rc2.230.g3dd15c0
-
diff --git a/vulkan/patches/frameworks_native-sdk_0.10/0016-vulkan-Update-from-version-0.192.0-to-0.193.0.patch b/vulkan/patches/frameworks_native-sdk_0.10/0016-vulkan-Update-from-version-0.192.0-to-0.193.0.patch
deleted file mode 100644
index 9ec2912..0000000
--- a/vulkan/patches/frameworks_native-sdk_0.10/0016-vulkan-Update-from-version-0.192.0-to-0.193.0.patch
+++ /dev/null
@@ -1,1095 +0,0 @@
-From d0534c33c98e8f0c844b37df7c764c9dbd6bbaa3 Mon Sep 17 00:00:00 2001
-From: Jesse Hall <jessehall@google.com>
-Date: Sun, 29 Nov 2015 19:46:20 -0800
-Subject: [PATCH] vulkan: Update from version 0.192.0 to 0.193.0
-
-Change-Id: I4387b28368c38c5165c1da99d8dc4e632ad2b42a
----
- vulkan/api/vulkan.api              | 127 ++++++++++++++-------------
- vulkan/include/vulkan/vulkan.h     | 171 ++++++++++++++++++-------------------
- vulkan/libvulkan/entry.cpp         |  32 +++----
- vulkan/libvulkan/get_proc_addr.cpp |  30 ++-----
- vulkan/libvulkan/loader.cpp        |  12 +--
- vulkan/libvulkan/loader.h          |  32 +++----
- vulkan/libvulkan/swapchain.cpp     |  45 +++++-----
- vulkan/tools/vkinfo.cpp            |   2 +-
- 8 files changed, 218 insertions(+), 233 deletions(-)
-
-diff --git a/vulkan/api/vulkan.api b/vulkan/api/vulkan.api
-index d2a15b5..bd3049c 100644
---- a/vulkan/api/vulkan.api
-+++ b/vulkan/api/vulkan.api
-@@ -27,7 +27,7 @@ import platform "platform.api"
- 
- // API version (major.minor.patch)
- define VERSION_MAJOR 0
--define VERSION_MINOR 192
-+define VERSION_MINOR 193
- define VERSION_PATCH 0
- 
- // API limits
-@@ -726,7 +726,7 @@ bitfield VkQueueFlagBits {
-     VK_QUEUE_GRAPHICS_BIT                                   = 0x00000001,    /// Queue supports graphics operations
-     VK_QUEUE_COMPUTE_BIT                                    = 0x00000002,    /// Queue supports compute operations
-     VK_QUEUE_DMA_BIT                                        = 0x00000004,    /// Queue supports DMA operations
--    VK_QUEUE_SPARSE_MEMMGR_BIT                              = 0x00000008,    /// Queue supports sparse resource memory management operations
-+    VK_QUEUE_SPARSE_BINDING_BIT                             = 0x00000008,    /// Queue supports sparse resource memory management operations
- }
- 
- /// Memory properties passed into vkAllocMemory().
-@@ -840,12 +840,10 @@ bitfield VkImageCreateFlagBits {
-     VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT                     = 0x00000010,    /// Allows creating image views with cube type from the created image
- }
- 
--/// Framebuffer attachment view creation flags
-+/// Image view creation flags
- type VkFlags VkImageViewCreateFlags
--bitfield VkImageViewCreateFlagBits {
--    VK_IMAGE_VIEW_CREATE_READ_ONLY_DEPTH_BIT                = 0x00000001,
--    VK_IMAGE_VIEW_CREATE_READ_ONLY_STENCIL_BIT              = 0x00000002,
--}
-+//bitfield VkImageViewCreateFlagBits {
-+//}
- 
- /// Pipeline creation flags
- type VkFlags VkPipelineCreateFlags
-@@ -970,9 +968,9 @@ bitfield VkSparseMemoryBindFlagBits {
- /// Sparse image memory requirements flags
- type VkFlags VkSparseImageFormatFlags
- bitfield VkSparseImageFormatFlagBits {
--    VK_SPARSE_IMAGE_FMT_SINGLE_MIPTAIL_BIT                  = 0x00000001,  /// Image uses a single miptail region for all array slices
--    VK_SPARSE_IMAGE_FMT_ALIGNED_MIP_SIZE_BIT                = 0x00000002,  /// Image requires mip levels to be an exact multiple of the sparse iamge block size for non-mip-tail levels.
--    VK_SPARSE_IMAGE_FMT_NONSTD_BLOCK_SIZE_BIT               = 0x00000004,  /// Image uses a non-standard sparse block size
-+    VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT                  = 0x00000001,  /// Image uses a single miptail region for all array slices
-+    VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT                = 0x00000002,  /// Image requires mip levels to be an exact multiple of the sparse iamge block size for non-mip-tail levels.
-+    VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT          = 0x00000004,  /// Image uses a non-standard sparse block size
- }
- 
- /// Pipeline stages
-@@ -1363,7 +1361,7 @@ class VkSparseImageFormatProperties {
- }
- 
- class VkSparseImageMemoryRequirements {
--    VkSparseImageFormatProperties               formatProps
-+    VkSparseImageFormatProperties               formatProperties
-     u32                                         imageMipTailStartLOD
-     VkDeviceSize                                imageMipTailSize           /// Specified in bytes, must be a multiple of image block size / alignment
-     VkDeviceSize                                imageMipTailOffset         /// Specified in bytes, must be a multiple of image block size / alignment
-@@ -1545,14 +1543,14 @@ class VkImageViewCreateInfo {
- class VkBufferCopy {
-     VkDeviceSize                                srcOffset              /// Specified in bytes
-     VkDeviceSize                                destOffset             /// Specified in bytes
--    VkDeviceSize                                copySize               /// Specified in bytes
-+    VkDeviceSize                                size                   /// Specified in bytes
- }
- 
- class VkSparseMemoryBind {
--    VkDeviceSize                                rangeOffset           /// Specified in bytes
--    VkDeviceSize                                rangeSize             /// Specified in bytes
--    VkDeviceSize                                memOffset             /// Specified in bytes
-+    VkDeviceSize                                resourceOffset        /// Specified in bytes
-+    VkDeviceSize                                size                  /// Specified in bytes
-     VkDeviceMemory                              mem
-+    VkDeviceSize                                memOffset             /// Specified in bytes
-     VkSparseMemoryBindFlags                     flags
- }
- 
-@@ -1560,8 +1558,8 @@ class VkSparseImageMemoryBind {
-     VkImageSubresource                          subresource
-     VkOffset3D                                  offset
-     VkExtent3D                                  extent
--    VkDeviceSize                                memOffset             /// Specified in bytes
-     VkDeviceMemory                              mem
-+    VkDeviceSize                                memOffset             /// Specified in bytes
-     VkSparseMemoryBindFlags                     flags
- }
- 
-@@ -1695,13 +1693,13 @@ class VkDescriptorSetAllocInfo {
- 
- class VkSpecializationMapEntry {
-     u32                                         constantId         /// The SpecConstant ID specified in the BIL
--    platform.size_t                             size               /// Size in bytes of the SpecConstant
-     u32                                         offset             /// Offset of the value in the data block
-+    platform.size_t                             size               /// Size in bytes of the SpecConstant
- }
- 
- class VkSpecializationInfo {
-     u32                                         mapEntryCount      /// Number of entries in the map
--    const VkSpecializationMapEntry*             pMap               /// Array of map entries
-+    const VkSpecializationMapEntry*             pMapEntries        /// Array of map entries
-     platform.size_t                             dataSize           /// Size in bytes of pData
-     const void*                                 pData              /// Pointer to SpecConstant data
- }
-@@ -1725,16 +1723,16 @@ class VkComputePipelineCreateInfo {
- }
- 
- class VkVertexInputBindingDescription {
--    u32                                         binding        /// Vertex buffer binding id
--    u32                                         strideInBytes  /// Distance between vertices in bytes (0 = no advancement)
--    VkVertexInputStepRate                       stepRate       /// Rate at which binding is incremented
-+    u32                                         binding               /// Vertex buffer binding id
-+    u32                                         stride                /// Distance between vertices in bytes (0 = no advancement)
-+    VkVertexInputStepRate                       stepRate              /// Rate at which binding is incremented
- }
- 
- class VkVertexInputAttributeDescription {
--    u32                                         location       /// location of the shader vertex attrib
--    u32                                         binding        /// Vertex buffer binding id
--    VkFormat                                    format         /// format of source data
--    u32                                         offsetInBytes  /// Offset of first element in bytes from base of vertex
-+    u32                                         location              /// location of the shader vertex attrib
-+    u32                                         binding               /// Vertex buffer binding id
-+    VkFormat                                    format                /// format of source data
-+    u32                                         offset                /// Offset of first element in bytes from base of vertex
- }
- 
- class VkPipelineVertexInputStateCreateInfo {
-@@ -1819,7 +1817,7 @@ class VkPipelineColorBlendStateCreateInfo {
-     VkLogicOp                                   logicOp
-     u32                                         attachmentCount    /// # of pAttachments
-     const VkPipelineColorBlendAttachmentState*  pAttachments
--    f32[4]                                      blendConst
-+    f32[4]                                      blendConstants
- }
- 
- class VkStencilOpState {
-@@ -1878,12 +1876,12 @@ class VkGraphicsPipelineCreateInfo {
- }
- 
- class VkPipelineCacheCreateInfo {
--    VkStructureType                             sType        /// Must be VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO
--    const void*                                 pNext        /// Pointer to next structure
-+    VkStructureType                             sType                 /// Must be VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO
-+    const void*                                 pNext                 /// Pointer to next structure
-     VkPipelineCacheCreateFlags                  flags
--    platform.size_t                             initialSize  /// Size of initial data to populate cache, in bytes
--    const void*                                 initialData  /// Initial data to populate cache
--    platform.size_t                             maxSize      /// Maximum size cache can grow to, in bytes. If zero, then the cache may grow without bound.
-+    platform.size_t                             initialDataSize       /// Size of initial data to populate cache, in bytes
-+    const void*                                 pInitialData          /// Initial data to populate cache
-+    platform.size_t                             maxSize               /// Maximum size cache can grow to, in bytes. If zero, then the cache may grow without bound.
- }
- 
- class VkPushConstantRange {
-@@ -2113,7 +2111,7 @@ class VkPhysicalDeviceLimits {
-     u32                                         maxImageDimensionCube                     /// max cubemap image dimension
-     u32                                         maxImageArrayLayers                       /// max layers for image arrays
-     VkSampleCountFlags                          sampleCounts                              /// sample counts supported for all images supporting rendering and sampling
--    u32                                         maxTexelBufferSize                        /// max texel buffer size (bytes)
-+    u32                                         maxTexelBufferElements
-     u32                                         maxUniformBufferRange                     /// max uniform buffer size (bytes)
-     u32                                         maxStorageBufferRange                     /// max storage buffer size (bytes)
-     u32                                         maxPushConstantsSize                      /// max size of the push constants pool (bytes)
-@@ -2229,7 +2227,7 @@ class VkPhysicalDeviceLimits {
- 
- class VkPhysicalDeviceSparseProperties {
-     VkBool32                                    residencyStandard2DBlockShape             /// Sparse resources support: GPU will access all 2D (single sample) sparse resources using the standard block shapes (based on pixel format)
--    VkBool32                                    residencyStandard2DMSBlockShape           /// Sparse resources support: GPU will access all 2D (multisample) sparse resources using the standard block shapes (based on pixel format)
-+    VkBool32                                    residencyStandard2DMultisampleBlockShape  /// Sparse resources support: GPU will access all 2D (multisample) sparse resources using the standard block shapes (based on pixel format)
-     VkBool32                                    residencyStandard3DBlockShape             /// Sparse resources support: GPU will access all 3D sparse resources using the standard block shapes (based on pixel format)
-     VkBool32                                    residencyAlignedMipSize                   /// Sparse resources support: Images with mip-level dimensions that are NOT a multiple of the block size will be placed in the mip tail
-     VkBool32                                    residencyNonResident                      /// Sparse resources support: GPU can safely access non-resident regions of a resource, read values from read-write resources are undefined
-@@ -2284,8 +2282,8 @@ class VkDispatchIndirectCmd {
-     u32                                         z
- }
- 
--@extension("VK_EXT_KHR_swapchain")
--class VkSurfacePropertiesKHR {
-+@extension("VK_EXT_KHR_surface")
-+class VkSurfaceCapabilitiesKHR {
-     u32                                         minImageCount
-     u32                                         maxImageCount
-     VkExtent2D                                  currentExtent
-@@ -2298,7 +2296,7 @@ class VkSurfacePropertiesKHR {
-     VkImageUsageFlags                           supportedUsageFlags
- }
- 
--@extension("VK_EXT_KHR_swapchain")
-+@extension("VK_EXT_KHR_surface")
- class VkSurfaceFormatKHR {
-     VkFormat                                    format
-     VkColorSpaceKHR                             colorSpace
-@@ -2329,6 +2327,8 @@ class VkSwapchainCreateInfoKHR {
- class VkPresentInfoKHR {
-     VkStructureType                             sType
-     const void*                                 pNext
-+    u32                                         waitSemaphoreCount
-+    const VkSemaphore*                          pWaitSemaphores
-     u32                                         swapchainCount
-     const VkSwapchainKHR*                       pSwapchains
-     const u32*                                  imageIndices
-@@ -2727,7 +2727,7 @@ cmd void vkGetDeviceQueue(
- cmd VkResult vkQueueSubmit(
-         VkQueue                                     queue,
-         u32                                         submitCount,
--        const VkSubmitInfo*                         pSubmitInfo,
-+        const VkSubmitInfo*                         pSubmits,
-         VkFence                                     fence) {
-     queueObject := GetQueue(queue)
- 
-@@ -3709,21 +3709,21 @@ cmd VkResult vkFreeDescriptorSets(
- 
- cmd void vkUpdateDescriptorSets(
-         VkDevice                                    device,
--        u32                                         writeCount,
-+        u32                                         descriptorWriteCount,
-         const VkWriteDescriptorSet*                 pDescriptorWrites,
--        u32                                         copyCount,
-+        u32                                         descriptorCopyCount,
-         const VkCopyDescriptorSet*                  pDescriptorCopies) {
-     deviceObject := GetDevice(device)
- 
--    descriptorWrites := pDescriptorWrites[0:writeCount]
--    for i in (0 .. writeCount) {
-+    descriptorWrites := pDescriptorWrites[0:descriptorWriteCount]
-+    for i in (0 .. descriptorWriteCount) {
-         descriptorWrite := descriptorWrites[i]
-         descriptorWriteObject := GetDescriptorSet(descriptorWrite.destSet)
-         assert(descriptorWriteObject.device == device)
-     }
- 
--    descriptorCopies := pDescriptorCopies[0:copyCount]
--    for i in (0 .. copyCount) {
-+    descriptorCopies := pDescriptorCopies[0:descriptorCopyCount]
-+    for i in (0 .. descriptorCopyCount) {
-         descriptorCopy := descriptorCopies[i]
-         descriptorCopyObject := GetDescriptorSet(descriptorCopy.destSet)
-         assert(descriptorCopyObject.device == device)
-@@ -3987,7 +3987,7 @@ cmd void vkCmdSetBlendConstants(
-         // TODO(jessehall): apic only supports 'const' on pointer types. Using
-         // an annotation as a quick hack to pass this to the template without
-         // having to modify the AST and semantic model.
--        @readonly f32[4]                            blendConst) {
-+        @readonly f32[4]                            blendConstants) {
-     cmdBufferObject := GetCmdBuffer(cmdBuffer)
-     cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
-@@ -4330,7 +4330,7 @@ cmd void vkCmdFillBuffer(
-         VkCmdBuffer                                 cmdBuffer,
-         VkBuffer                                    destBuffer,
-         VkDeviceSize                                destOffset,
--        VkDeviceSize                                fillSize,
-+        VkDeviceSize                                size,
-         u32                                         data) {
-     cmdBufferObject := GetCmdBuffer(cmdBuffer)
-     destBufferObject := GetBuffer(destBuffer)
-@@ -4643,34 +4643,33 @@ cmd void vkDestroySurfaceKHR(
- cmd VkResult vkGetPhysicalDeviceSurfaceSupportKHR(
-         VkPhysicalDevice                            physicalDevice,
-         u32                                         queueFamilyIndex,
--        VkSurfaceKHR                                surface) {
-+        VkSurfaceKHR                                surface,
-+        VkBool32*                                   pSupported) {
-     physicalDeviceObject := GetPhysicalDevice(physicalDevice)
- 
--    //supported := ?
--
--    return ?//supported
-+    return ?
- }
- 
--@extension("VK_EXT_KHR_swapchain")
--cmd VkResult vkGetSurfacePropertiesKHR(
--        VkDevice                                    device,
-+@extension("VK_EXT_KHR_surface")
-+cmd VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
-+        VkPhysicalDevice                            physicalDevice,
-         VkSurfaceKHR                                surface,
--        VkSurfacePropertiesKHR*                     pSurfaceProperties) {
--    deviceObject := GetDevice(device)
-+        VkSurfaceCapabilitiesKHR*                   pSurfaceCapabilities) {
-+    physicalDeviceObject := GetPhysicalDevice(physicalDevice)
- 
--    surfaceProperties := ?
--    pSurfaceProperties[0] = surfaceProperties
-+    surfaceCapabilities := ?
-+    pSurfaceCapabilities[0] = surfaceCapabilities
- 
-     return ?
- }
- 
--@extension("VK_EXT_KHR_swapchain")
--cmd VkResult vkGetSurfaceFormatsKHR(
--        VkDevice                                    device,
-+@extension("VK_EXT_KHR_surface")
-+cmd VkResult vkGetPhysicalDeviceSurfaceFormatsKHR(
-+        VkPhysicalDevice                            physicalDevice,
-         VkSurfaceKHR                                surface,
-         u32*                                        pSurfaceFormatCount,
-         VkSurfaceFormatKHR*                         pSurfaceFormats) {
--    deviceObject := GetDevice(device)
-+    physicalDeviceObject := GetPhysicalDevice(physicalDevice)
- 
-     count := as!u32(?)
-     pSurfaceFormatCount[0] = count
-@@ -4684,13 +4683,13 @@ cmd VkResult vkGetSurfaceFormatsKHR(
-     return ?
- }
- 
--@extension("VK_EXT_KHR_swapchain")
--cmd VkResult vkGetSurfacePresentModesKHR(
--        VkDevice                                    device,
-+@extension("VK_EXT_KHR_surface")
-+cmd VkResult vkGetPhysicalDeviceSurfacePresentModesKHR(
-+        VkPhysicalDevice                            physicalDevice,
-         VkSurfaceKHR                                surface,
-         u32*                                        pPresentModeCount,
-         VkPresentModeKHR*                           pPresentModes) {
--    deviceObject := GetDevice(device)
-+    physicalDeviceObject := GetPhysicalDevice(physicalDevice)
- 
-     count := as!u32(?)
-     pPresentModeCount[0] = count
-diff --git a/vulkan/include/vulkan/vulkan.h b/vulkan/include/vulkan/vulkan.h
-index fd09209..8442325 100644
---- a/vulkan/include/vulkan/vulkan.h
-+++ b/vulkan/include/vulkan/vulkan.h
-@@ -41,7 +41,7 @@ extern "C" {
-     ((major << 22) | (minor << 12) | patch)
- 
- // Vulkan API version supported by this file
--#define VK_API_VERSION VK_MAKE_VERSION(0, 192, 0)
-+#define VK_API_VERSION VK_MAKE_VERSION(0, 193, 0)
- 
- 
- #define VK_NULL_HANDLE 0
-@@ -818,7 +818,7 @@ typedef enum {
-     VK_QUEUE_GRAPHICS_BIT = 0x00000001,
-     VK_QUEUE_COMPUTE_BIT = 0x00000002,
-     VK_QUEUE_DMA_BIT = 0x00000004,
--    VK_QUEUE_SPARSE_MEMMGR_BIT = 0x00000008,
-+    VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008,
- } VkQueueFlagBits;
- typedef VkFlags VkQueueFlags;
- 
-@@ -847,9 +847,9 @@ typedef enum {
- } VkImageAspectFlagBits;
- 
- typedef enum {
--    VK_SPARSE_IMAGE_FMT_SINGLE_MIPTAIL_BIT = 0x00000001,
--    VK_SPARSE_IMAGE_FMT_ALIGNED_MIP_SIZE_BIT = 0x00000002,
--    VK_SPARSE_IMAGE_FMT_NONSTD_BLOCK_SIZE_BIT = 0x00000004,
-+    VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0x00000001,
-+    VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 0x00000002,
-+    VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 0x00000004,
- } VkSparseImageFormatFlagBits;
- typedef VkFlags VkSparseImageFormatFlags;
- 
-@@ -910,11 +910,6 @@ typedef enum {
- } VkBufferUsageFlagBits;
- typedef VkFlags VkBufferUsageFlags;
- typedef VkFlags VkBufferViewCreateFlags;
--
--typedef enum {
--    VK_IMAGE_VIEW_CREATE_READ_ONLY_DEPTH_BIT = 0x00000001,
--    VK_IMAGE_VIEW_CREATE_READ_ONLY_STENCIL_BIT = 0x00000002,
--} VkImageViewCreateFlagBits;
- typedef VkFlags VkImageViewCreateFlags;
- typedef VkFlags VkImageAspectFlags;
- typedef VkFlags VkShaderModuleCreateFlags;
-@@ -1198,7 +1193,7 @@ typedef struct {
-     uint32_t                                    maxImageDimensionCube;
-     uint32_t                                    maxImageArrayLayers;
-     VkSampleCountFlags                          sampleCounts;
--    uint32_t                                    maxTexelBufferSize;
-+    uint32_t                                    maxTexelBufferElements;
-     uint32_t                                    maxUniformBufferRange;
-     uint32_t                                    maxStorageBufferRange;
-     uint32_t                                    maxPushConstantsSize;
-@@ -1294,7 +1289,7 @@ typedef struct {
- 
- typedef struct {
-     VkBool32                                    residencyStandard2DBlockShape;
--    VkBool32                                    residencyStandard2DMSBlockShape;
-+    VkBool32                                    residencyStandard2DMultisampleBlockShape;
-     VkBool32                                    residencyStandard3DBlockShape;
-     VkBool32                                    residencyAlignedMipSize;
-     VkBool32                                    residencyNonResident;
-@@ -1409,7 +1404,7 @@ typedef struct {
- } VkSparseImageFormatProperties;
- 
- typedef struct {
--    VkSparseImageFormatProperties               formatProps;
-+    VkSparseImageFormatProperties               formatProperties;
-     uint32_t                                    imageMipTailStartLOD;
-     VkDeviceSize                                imageMipTailSize;
-     VkDeviceSize                                imageMipTailOffset;
-@@ -1417,10 +1412,10 @@ typedef struct {
- } VkSparseImageMemoryRequirements;
- 
- typedef struct {
--    VkDeviceSize                                rangeOffset;
--    VkDeviceSize                                rangeSize;
--    VkDeviceSize                                memOffset;
-+    VkDeviceSize                                resourceOffset;
-+    VkDeviceSize                                size;
-     VkDeviceMemory                              mem;
-+    VkDeviceSize                                memOffset;
-     VkSparseMemoryBindFlags                     flags;
- } VkSparseMemoryBind;
- 
-@@ -1452,8 +1447,8 @@ typedef struct {
-     VkImageSubresource                          subresource;
-     VkOffset3D                                  offset;
-     VkExtent3D                                  extent;
--    VkDeviceSize                                memOffset;
-     VkDeviceMemory                              mem;
-+    VkDeviceSize                                memOffset;
-     VkSparseMemoryBindFlags                     flags;
- } VkSparseImageMemoryBind;
- 
-@@ -1598,20 +1593,20 @@ typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkPipelineCacheCreateFlags                  flags;
--    size_t                                      initialSize;
--    const void*                                 initialData;
-+    size_t                                      initialDataSize;
-+    const void*                                 pInitialData;
-     size_t                                      maxSize;
- } VkPipelineCacheCreateInfo;
- 
- typedef struct {
-     uint32_t                                    constantId;
--    size_t                                      size;
-     uint32_t                                    offset;
-+    size_t                                      size;
- } VkSpecializationMapEntry;
- 
- typedef struct {
-     uint32_t                                    mapEntryCount;
--    const VkSpecializationMapEntry*             pMap;
-+    const VkSpecializationMapEntry*             pMapEntries;
-     size_t                                      dataSize;
-     const void*                                 pData;
- } VkSpecializationInfo;
-@@ -1626,7 +1621,7 @@ typedef struct {
- 
- typedef struct {
-     uint32_t                                    binding;
--    uint32_t                                    strideInBytes;
-+    uint32_t                                    stride;
-     VkVertexInputStepRate                       stepRate;
- } VkVertexInputBindingDescription;
- 
-@@ -1634,7 +1629,7 @@ typedef struct {
-     uint32_t                                    location;
-     uint32_t                                    binding;
-     VkFormat                                    format;
--    uint32_t                                    offsetInBytes;
-+    uint32_t                                    offset;
- } VkVertexInputAttributeDescription;
- 
- typedef struct {
-@@ -1768,7 +1763,7 @@ typedef struct {
-     VkLogicOp                                   logicOp;
-     uint32_t                                    attachmentCount;
-     const VkPipelineColorBlendAttachmentState*  pAttachments;
--    float                                       blendConst[4];
-+    float                                       blendConstants[4];
- } VkPipelineColorBlendStateCreateInfo;
- 
- typedef struct {
-@@ -2018,7 +2013,7 @@ typedef struct {
- typedef struct {
-     VkDeviceSize                                srcOffset;
-     VkDeviceSize                                destOffset;
--    VkDeviceSize                                copySize;
-+    VkDeviceSize                                size;
- } VkBufferCopy;
- 
- typedef struct {
-@@ -2172,7 +2167,7 @@ typedef VkResult (VKAPI *PFN_vkEnumerateDeviceExtensionProperties)(VkPhysicalDev
- typedef VkResult (VKAPI *PFN_vkEnumerateInstanceLayerProperties)(uint32_t* pPropertyCount, VkLayerProperties* pProperties);
- typedef VkResult (VKAPI *PFN_vkEnumerateDeviceLayerProperties)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkLayerProperties* pProperties);
- typedef void (VKAPI *PFN_vkGetDeviceQueue)(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue);
--typedef VkResult (VKAPI *PFN_vkQueueSubmit)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmitInfo, VkFence fence);
-+typedef VkResult (VKAPI *PFN_vkQueueSubmit)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence);
- typedef VkResult (VKAPI *PFN_vkQueueWaitIdle)(VkQueue queue);
- typedef VkResult (VKAPI *PFN_vkDeviceWaitIdle)(VkDevice device);
- typedef VkResult (VKAPI *PFN_vkAllocMemory)(VkDevice device, const VkMemoryAllocInfo* pAllocInfo, const VkAllocCallbacks* pAllocator, VkDeviceMemory* pMem);
-@@ -2235,7 +2230,7 @@ typedef void (VKAPI *PFN_vkDestroyDescriptorPool)(VkDevice device, VkDescriptorP
- typedef VkResult (VKAPI *PFN_vkResetDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags);
- typedef VkResult (VKAPI *PFN_vkAllocDescriptorSets)(VkDevice device, const VkDescriptorSetAllocInfo* pAllocInfo, VkDescriptorSet* pDescriptorSets);
- typedef VkResult (VKAPI *PFN_vkFreeDescriptorSets)(VkDevice device, VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets);
--typedef void (VKAPI *PFN_vkUpdateDescriptorSets)(VkDevice device, uint32_t writeCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t copyCount, const VkCopyDescriptorSet* pDescriptorCopies);
-+typedef void (VKAPI *PFN_vkUpdateDescriptorSets)(VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies);
- typedef VkResult (VKAPI *PFN_vkCreateFramebuffer)(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkFramebuffer* pFramebuffer);
- typedef void (VKAPI *PFN_vkDestroyFramebuffer)(VkDevice device, VkFramebuffer framebuffer, const VkAllocCallbacks* pAllocator);
- typedef VkResult (VKAPI *PFN_vkCreateRenderPass)(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkRenderPass* pRenderPass);
-@@ -2254,7 +2249,7 @@ typedef void (VKAPI *PFN_vkCmdSetViewport)(VkCmdBuffer cmdBuffer, uint32_t viewp
- typedef void (VKAPI *PFN_vkCmdSetScissor)(VkCmdBuffer cmdBuffer, uint32_t scissorCount, const VkRect2D* pScissors);
- typedef void (VKAPI *PFN_vkCmdSetLineWidth)(VkCmdBuffer cmdBuffer, float lineWidth);
- typedef void (VKAPI *PFN_vkCmdSetDepthBias)(VkCmdBuffer cmdBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor);
--typedef void (VKAPI *PFN_vkCmdSetBlendConstants)(VkCmdBuffer cmdBuffer, const float blendConst[4]);
-+typedef void (VKAPI *PFN_vkCmdSetBlendConstants)(VkCmdBuffer cmdBuffer, const float blendConstants[4]);
- typedef void (VKAPI *PFN_vkCmdSetDepthBounds)(VkCmdBuffer cmdBuffer, float minDepthBounds, float maxDepthBounds);
- typedef void (VKAPI *PFN_vkCmdSetStencilCompareMask)(VkCmdBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilCompareMask);
- typedef void (VKAPI *PFN_vkCmdSetStencilWriteMask)(VkCmdBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilWriteMask);
-@@ -2274,7 +2269,7 @@ typedef void (VKAPI *PFN_vkCmdBlitImage)(VkCmdBuffer cmdBuffer, VkImage srcImage
- typedef void (VKAPI *PFN_vkCmdCopyBufferToImage)(VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions);
- typedef void (VKAPI *PFN_vkCmdCopyImageToBuffer)(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer destBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions);
- typedef void (VKAPI *PFN_vkCmdUpdateBuffer)(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize dataSize, const uint32_t* pData);
--typedef void (VKAPI *PFN_vkCmdFillBuffer)(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize fillSize, uint32_t data);
-+typedef void (VKAPI *PFN_vkCmdFillBuffer)(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize size, uint32_t data);
- typedef void (VKAPI *PFN_vkCmdClearColorImage)(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
- typedef void (VKAPI *PFN_vkCmdClearDepthStencilImage)(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
- typedef void (VKAPI *PFN_vkCmdClearAttachments)(VkCmdBuffer cmdBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects);
-@@ -2387,7 +2382,7 @@ void VKAPI vkGetDeviceQueue(
- VkResult VKAPI vkQueueSubmit(
-     VkQueue                                     queue,
-     uint32_t                                    submitCount,
--    const VkSubmitInfo*                         pSubmitInfo,
-+    const VkSubmitInfo*                         pSubmits,
-     VkFence                                     fence);
- 
- VkResult VKAPI vkQueueWaitIdle(
-@@ -2738,9 +2733,9 @@ VkResult VKAPI vkFreeDescriptorSets(
- 
- void VKAPI vkUpdateDescriptorSets(
-     VkDevice                                    device,
--    uint32_t                                    writeCount,
-+    uint32_t                                    descriptorWriteCount,
-     const VkWriteDescriptorSet*                 pDescriptorWrites,
--    uint32_t                                    copyCount,
-+    uint32_t                                    descriptorCopyCount,
-     const VkCopyDescriptorSet*                  pDescriptorCopies);
- 
- VkResult VKAPI vkCreateFramebuffer(
-@@ -2835,7 +2830,7 @@ void VKAPI vkCmdSetDepthBias(
- 
- void VKAPI vkCmdSetBlendConstants(
-     VkCmdBuffer                                 cmdBuffer,
--    const float                                 blendConst[4]);
-+    const float                                 blendConstants[4]);
- 
- void VKAPI vkCmdSetDepthBounds(
-     VkCmdBuffer                                 cmdBuffer,
-@@ -2973,7 +2968,7 @@ void VKAPI vkCmdFillBuffer(
-     VkCmdBuffer                                 cmdBuffer,
-     VkBuffer                                    destBuffer,
-     VkDeviceSize                                destOffset,
--    VkDeviceSize                                fillSize,
-+    VkDeviceSize                                size,
-     uint32_t                                    data);
- 
- void VKAPI vkCmdClearColorImage(
-@@ -3102,32 +3097,6 @@ VK_DEFINE_NONDISP_HANDLE(VkSurfaceKHR)
- #define VK_EXT_KHR_SURFACE_EXTENSION_NAME "VK_EXT_KHR_surface"
- #define VK_ERROR_SURFACE_LOST_KHR         ((VkResult)(int)0xc0000400)
- 
--typedef void (VKAPI *PFN_vkDestroySurfaceKHR)(VkInstance  instance, VkSurfaceKHR  surface);
--typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceSurfaceSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface);
--
--#ifdef VK_PROTOTYPES
--void VKAPI vkDestroySurfaceKHR(
--    VkInstance                                   instance,
--    VkSurfaceKHR                                 surface);
--
--VkResult VKAPI vkGetPhysicalDeviceSurfaceSupportKHR(
--    VkPhysicalDevice                            physicalDevice,
--    uint32_t                                    queueFamilyIndex,
--    VkSurfaceKHR                                surface);
--#endif
--
--#define vk_ext_khr_swapchain 1
--VK_DEFINE_NONDISP_HANDLE(VkSwapchainKHR)
--
--#define VK_EXT_KHR_SWAPCHAIN_REVISION     62
--#define VK_EXT_KHR_SWAPCHAIN_EXTENSION_NUMBER 2
--#define VK_EXT_KHR_SWAPCHAIN_EXTENSION_NAME "VK_EXT_KHR_swapchain"
--#define VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR ((VkStructureType)(int)0xc0000800)
--#define VK_STRUCTURE_TYPE_PRESENT_INFO_KHR ((VkStructureType)(int)0xc0000801)
--#define VK_IMAGE_LAYOUT_PRESENT_SOURCE_KHR ((VkImageLayout)(int)0xc0000802)
--#define VK_SUBOPTIMAL_KHR                 ((VkResult)(int)0x40000403)
--#define VK_ERROR_OUT_OF_DATE_KHR          ((VkResult)(int)0xc0000804)
--
- 
- typedef enum {
-     VK_SURFACE_TRANSFORM_NONE_KHR = 0,
-@@ -3197,13 +3166,61 @@ typedef struct {
-     VkCompositeAlphaFlagsKHR                    supportedCompositeAlpha;
-     uint32_t                                    maxImageArraySize;
-     VkImageUsageFlags                           supportedUsageFlags;
--} VkSurfacePropertiesKHR;
-+} VkSurfaceCapabilitiesKHR;
- 
- typedef struct {
-     VkFormat                                    format;
-     VkColorSpaceKHR                             colorSpace;
- } VkSurfaceFormatKHR;
- 
-+
-+typedef void (VKAPI *PFN_vkDestroySurfaceKHR)(VkInstance  instance, VkSurfaceKHR  surface);
-+typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceSurfaceSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported);
-+typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities);
-+typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats);
-+typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes);
-+
-+#ifdef VK_PROTOTYPES
-+void VKAPI vkDestroySurfaceKHR(
-+    VkInstance                                   instance,
-+    VkSurfaceKHR                                 surface);
-+
-+VkResult VKAPI vkGetPhysicalDeviceSurfaceSupportKHR(
-+    VkPhysicalDevice                            physicalDevice,
-+    uint32_t                                    queueFamilyIndex,
-+    VkSurfaceKHR                                surface,
-+    VkBool32*                                   pSupported);
-+
-+VkResult VKAPI vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
-+    VkPhysicalDevice                            physicalDevice,
-+    VkSurfaceKHR                                surface,
-+    VkSurfaceCapabilitiesKHR*                   pSurfaceCapabilities);
-+
-+VkResult VKAPI vkGetPhysicalDeviceSurfaceFormatsKHR(
-+    VkPhysicalDevice                            physicalDevice,
-+    VkSurfaceKHR                                surface,
-+    uint32_t*                                   pSurfaceFormatCount,
-+    VkSurfaceFormatKHR*                         pSurfaceFormats);
-+
-+VkResult VKAPI vkGetPhysicalDeviceSurfacePresentModesKHR(
-+    VkPhysicalDevice                            physicalDevice,
-+    VkSurfaceKHR                                surface,
-+    uint32_t*                                   pPresentModeCount,
-+    VkPresentModeKHR*                           pPresentModes);
-+#endif
-+
-+#define vk_ext_khr_swapchain 1
-+VK_DEFINE_NONDISP_HANDLE(VkSwapchainKHR)
-+
-+#define VK_EXT_KHR_SWAPCHAIN_REVISION     62
-+#define VK_EXT_KHR_SWAPCHAIN_EXTENSION_NUMBER 2
-+#define VK_EXT_KHR_SWAPCHAIN_EXTENSION_NAME "VK_EXT_KHR_swapchain"
-+#define VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR ((VkStructureType)(int)0xc0000800)
-+#define VK_STRUCTURE_TYPE_PRESENT_INFO_KHR ((VkStructureType)(int)0xc0000801)
-+#define VK_IMAGE_LAYOUT_PRESENT_SOURCE_KHR ((VkImageLayout)(int)0xc0000802)
-+#define VK_SUBOPTIMAL_KHR                 ((VkResult)(int)0x40000403)
-+#define VK_ERROR_OUT_OF_DATE_KHR          ((VkResult)(int)0xc0000804)
-+
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                   pNext;
-@@ -3227,15 +3244,14 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                   pNext;
-+    uint32_t                                    waitSemaphoreCount;
-+    const VkSemaphore*                          pWaitSemaphores;
-     uint32_t                                    swapchainCount;
-     const VkSwapchainKHR*                       pSwapchains;
-     const uint32_t*                             imageIndices;
- } VkPresentInfoKHR;
- 
- 
--typedef VkResult (VKAPI *PFN_vkGetSurfacePropertiesKHR)(VkDevice  device, VkSurfaceKHR  surface, VkSurfacePropertiesKHR*  pSurfaceProperties);
--typedef VkResult (VKAPI *PFN_vkGetSurfaceFormatsKHR)(VkDevice  device, VkSurfaceKHR  surface, uint32_t*  pSurfaceFormatCount, VkSurfaceFormatKHR*  pSurfaceFormats);
--typedef VkResult (VKAPI *PFN_vkGetSurfacePresentModesKHR)(VkDevice  device, VkSurfaceKHR  surface, uint32_t*  pPresentModeCount, VkPresentModeKHR*  pPresentModes);
- typedef VkResult (VKAPI *PFN_vkCreateSwapchainKHR)(VkDevice  device, const VkSwapchainCreateInfoKHR*  pCreateInfo, VkSwapchainKHR*  pSwapchain);
- typedef void (VKAPI *PFN_vkDestroySwapchainKHR)(VkDevice  device, VkSwapchainKHR  swapchain);
- typedef VkResult (VKAPI *PFN_vkGetSwapchainImagesKHR)(VkDevice  device, VkSwapchainKHR  swapchain, uint32_t*  pSwapchainImageCount, VkImage*  pSwapchainImages);
-@@ -3243,23 +3259,6 @@ typedef VkResult (VKAPI *PFN_vkAcquireNextImageKHR)(VkDevice  device, VkSwapchai
- typedef VkResult (VKAPI *PFN_vkQueuePresentKHR)(VkQueue  queue, VkPresentInfoKHR*  pPresentInfo);
- 
- #ifdef VK_PROTOTYPES
--VkResult VKAPI vkGetSurfacePropertiesKHR(
--    VkDevice                                     device,
--    VkSurfaceKHR                                 surface,
--    VkSurfacePropertiesKHR*                      pSurfaceProperties);
--
--VkResult VKAPI vkGetSurfaceFormatsKHR(
--    VkDevice                                     device,
--    VkSurfaceKHR                                 surface,
--    uint32_t*                                    pSurfaceFormatCount,
--    VkSurfaceFormatKHR*                          pSurfaceFormats);
--
--VkResult VKAPI vkGetSurfacePresentModesKHR(
--    VkDevice                                     device,
--    VkSurfaceKHR                                 surface,
--    uint32_t*                                    pPresentModeCount,
--    VkPresentModeKHR*                            pPresentModes);
--
- VkResult VKAPI vkCreateSwapchainKHR(
-     VkDevice                                     device,
-     const VkSwapchainCreateInfoKHR*              pCreateInfo,
-@@ -3333,11 +3332,6 @@ typedef struct {
- } VkDisplayModeCreateInfoKHR;
- 
- typedef struct {
--    VkDisplayKHR                                currentDisplay;
--    uint32_t                                    currentStackIndex;
--} VkDisplayPlanePropertiesKHR;
--
--typedef struct {
-     VkDisplayPlaneAlphaFlagsKHR                 supportedAlpha;
-     VkOffset2D                                  minSrcPosition;
-     VkOffset2D                                  maxSrcPosition;
-@@ -3350,6 +3344,11 @@ typedef struct {
- } VkDisplayPlaneCapabilitiesKHR;
- 
- typedef struct {
-+    VkDisplayKHR                                currentDisplay;
-+    uint32_t                                    currentStackIndex;
-+} VkDisplayPlanePropertiesKHR;
-+
-+typedef struct {
-     VkStructureType                             sType;
-     const void*                                   pNext;
-     VkDisplayModeKHR                            displayMode;
-diff --git a/vulkan/libvulkan/entry.cpp b/vulkan/libvulkan/entry.cpp
-index 9198f64..31f0231 100644
---- a/vulkan/libvulkan/entry.cpp
-+++ b/vulkan/libvulkan/entry.cpp
-@@ -132,8 +132,8 @@ void vkGetDeviceQueue(VkDevice device, uint32_t queueFamilyIndex, uint32_t queue
- }
- 
- __attribute__((visibility("default")))
--VkResult vkQueueSubmit(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmitInfo, VkFence fence) {
--    return GetVtbl(queue).QueueSubmit(queue, submitCount, pSubmitInfo, fence);
-+VkResult vkQueueSubmit(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence) {
-+    return GetVtbl(queue).QueueSubmit(queue, submitCount, pSubmits, fence);
- }
- 
- __attribute__((visibility("default")))
-@@ -447,8 +447,8 @@ VkResult vkFreeDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool,
- }
- 
- __attribute__((visibility("default")))
--void vkUpdateDescriptorSets(VkDevice device, uint32_t writeCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t copyCount, const VkCopyDescriptorSet* pDescriptorCopies) {
--    GetVtbl(device).UpdateDescriptorSets(device, writeCount, pDescriptorWrites, copyCount, pDescriptorCopies);
-+void vkUpdateDescriptorSets(VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies) {
-+    GetVtbl(device).UpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies);
- }
- 
- __attribute__((visibility("default")))
-@@ -542,8 +542,8 @@ void vkCmdSetDepthBias(VkCmdBuffer cmdBuffer, float depthBiasConstantFactor, flo
- }
- 
- __attribute__((visibility("default")))
--void vkCmdSetBlendConstants(VkCmdBuffer cmdBuffer, const float blendConst[4]) {
--    GetVtbl(cmdBuffer).CmdSetBlendConstants(cmdBuffer, blendConst);
-+void vkCmdSetBlendConstants(VkCmdBuffer cmdBuffer, const float blendConstants[4]) {
-+    GetVtbl(cmdBuffer).CmdSetBlendConstants(cmdBuffer, blendConstants);
- }
- 
- __attribute__((visibility("default")))
-@@ -642,8 +642,8 @@ void vkCmdUpdateBuffer(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize
- }
- 
- __attribute__((visibility("default")))
--void vkCmdFillBuffer(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize fillSize, uint32_t data) {
--    GetVtbl(cmdBuffer).CmdFillBuffer(cmdBuffer, destBuffer, destOffset, fillSize, data);
-+void vkCmdFillBuffer(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize size, uint32_t data) {
-+    GetVtbl(cmdBuffer).CmdFillBuffer(cmdBuffer, destBuffer, destOffset, size, data);
- }
- 
- __attribute__((visibility("default")))
-@@ -742,23 +742,23 @@ void vkDestroySurfaceKHR(VkInstance instance, VkSurfaceKHR surface) {
- }
- 
- __attribute__((visibility("default")))
--VkResult vkGetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface) {
--    return GetVtbl(physicalDevice).GetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface);
-+VkResult vkGetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported) {
-+    return GetVtbl(physicalDevice).GetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkGetSurfacePropertiesKHR(VkDevice device, VkSurfaceKHR surface, VkSurfacePropertiesKHR* pSurfaceProperties) {
--    return GetVtbl(device).GetSurfacePropertiesKHR(device, surface, pSurfaceProperties);
-+VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) {
-+    return GetVtbl(physicalDevice).GetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkGetSurfaceFormatsKHR(VkDevice device, VkSurfaceKHR surface, uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats) {
--    return GetVtbl(device).GetSurfaceFormatsKHR(device, surface, pSurfaceFormatCount, pSurfaceFormats);
-+VkResult vkGetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats) {
-+    return GetVtbl(physicalDevice).GetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkGetSurfacePresentModesKHR(VkDevice device, VkSurfaceKHR surface, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes) {
--    return GetVtbl(device).GetSurfacePresentModesKHR(device, surface, pPresentModeCount, pPresentModes);
-+VkResult vkGetPhysicalDeviceSurfacePresentModesKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes) {
-+    return GetVtbl(physicalDevice).GetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes);
- }
- 
- __attribute__((visibility("default")))
-diff --git a/vulkan/libvulkan/get_proc_addr.cpp b/vulkan/libvulkan/get_proc_addr.cpp
-index a0987e2..4e08015 100644
---- a/vulkan/libvulkan/get_proc_addr.cpp
-+++ b/vulkan/libvulkan/get_proc_addr.cpp
-@@ -64,6 +64,9 @@ const NameProcEntry kInstanceProcTbl[] = {
-     {"vkGetPhysicalDeviceProperties", reinterpret_cast<PFN_vkVoidFunction>(vkGetPhysicalDeviceProperties)},
-     {"vkGetPhysicalDeviceQueueFamilyProperties", reinterpret_cast<PFN_vkVoidFunction>(vkGetPhysicalDeviceQueueFamilyProperties)},
-     {"vkGetPhysicalDeviceSparseImageFormatProperties", reinterpret_cast<PFN_vkVoidFunction>(vkGetPhysicalDeviceSparseImageFormatProperties)},
-+    {"vkGetPhysicalDeviceSurfaceCapabilitiesKHR", reinterpret_cast<PFN_vkVoidFunction>(vkGetPhysicalDeviceSurfaceCapabilitiesKHR)},
-+    {"vkGetPhysicalDeviceSurfaceFormatsKHR", reinterpret_cast<PFN_vkVoidFunction>(vkGetPhysicalDeviceSurfaceFormatsKHR)},
-+    {"vkGetPhysicalDeviceSurfacePresentModesKHR", reinterpret_cast<PFN_vkVoidFunction>(vkGetPhysicalDeviceSurfacePresentModesKHR)},
-     {"vkGetPhysicalDeviceSurfaceSupportKHR", reinterpret_cast<PFN_vkVoidFunction>(vkGetPhysicalDeviceSurfaceSupportKHR)},
-     // clang-format on
- };
-@@ -181,9 +184,6 @@ const NameProcEntry kDeviceProcTbl[] = {
-     {"vkGetPipelineCacheData", reinterpret_cast<PFN_vkVoidFunction>(vkGetPipelineCacheData)},
-     {"vkGetQueryPoolResults", reinterpret_cast<PFN_vkVoidFunction>(vkGetQueryPoolResults)},
-     {"vkGetRenderAreaGranularity", reinterpret_cast<PFN_vkVoidFunction>(vkGetRenderAreaGranularity)},
--    {"vkGetSurfaceFormatsKHR", reinterpret_cast<PFN_vkVoidFunction>(vkGetSurfaceFormatsKHR)},
--    {"vkGetSurfacePresentModesKHR", reinterpret_cast<PFN_vkVoidFunction>(vkGetSurfacePresentModesKHR)},
--    {"vkGetSurfacePropertiesKHR", reinterpret_cast<PFN_vkVoidFunction>(vkGetSurfacePropertiesKHR)},
-     {"vkGetSwapchainImagesKHR", reinterpret_cast<PFN_vkVoidFunction>(vkGetSwapchainImagesKHR)},
-     {"vkInvalidateMappedMemoryRanges", reinterpret_cast<PFN_vkVoidFunction>(vkInvalidateMappedMemoryRanges)},
-     {"vkMapMemory", reinterpret_cast<PFN_vkVoidFunction>(vkMapMemory)},
-@@ -221,6 +221,9 @@ const NameOffsetEntry kInstanceOffsetTbl[] = {
-     {"vkGetPhysicalDeviceProperties", offsetof(InstanceVtbl, GetPhysicalDeviceProperties)},
-     {"vkGetPhysicalDeviceQueueFamilyProperties", offsetof(InstanceVtbl, GetPhysicalDeviceQueueFamilyProperties)},
-     {"vkGetPhysicalDeviceSparseImageFormatProperties", offsetof(InstanceVtbl, GetPhysicalDeviceSparseImageFormatProperties)},
-+    {"vkGetPhysicalDeviceSurfaceCapabilitiesKHR", offsetof(InstanceVtbl, GetPhysicalDeviceSurfaceCapabilitiesKHR)},
-+    {"vkGetPhysicalDeviceSurfaceFormatsKHR", offsetof(InstanceVtbl, GetPhysicalDeviceSurfaceFormatsKHR)},
-+    {"vkGetPhysicalDeviceSurfacePresentModesKHR", offsetof(InstanceVtbl, GetPhysicalDeviceSurfacePresentModesKHR)},
-     {"vkGetPhysicalDeviceSurfaceSupportKHR", offsetof(InstanceVtbl, GetPhysicalDeviceSurfaceSupportKHR)},
-     // clang-format on
- };
-@@ -338,9 +341,6 @@ const NameOffsetEntry kDeviceOffsetTbl[] = {
-     {"vkGetPipelineCacheData", offsetof(DeviceVtbl, GetPipelineCacheData)},
-     {"vkGetQueryPoolResults", offsetof(DeviceVtbl, GetQueryPoolResults)},
-     {"vkGetRenderAreaGranularity", offsetof(DeviceVtbl, GetRenderAreaGranularity)},
--    {"vkGetSurfaceFormatsKHR", offsetof(DeviceVtbl, GetSurfaceFormatsKHR)},
--    {"vkGetSurfacePresentModesKHR", offsetof(DeviceVtbl, GetSurfacePresentModesKHR)},
--    {"vkGetSurfacePropertiesKHR", offsetof(DeviceVtbl, GetSurfacePropertiesKHR)},
-     {"vkGetSwapchainImagesKHR", offsetof(DeviceVtbl, GetSwapchainImagesKHR)},
-     {"vkInvalidateMappedMemoryRanges", offsetof(DeviceVtbl, InvalidateMappedMemoryRanges)},
-     {"vkMapMemory", offsetof(DeviceVtbl, MapMemory)},
-@@ -486,6 +486,9 @@ bool LoadInstanceVtbl(VkInstance instance,
-     }
-     vtbl.DestroySurfaceKHR = reinterpret_cast<PFN_vkDestroySurfaceKHR>(get_proc_addr(instance, "vkDestroySurfaceKHR"));
-     vtbl.GetPhysicalDeviceSurfaceSupportKHR = reinterpret_cast<PFN_vkGetPhysicalDeviceSurfaceSupportKHR>(get_proc_addr(instance, "vkGetPhysicalDeviceSurfaceSupportKHR"));
-+    vtbl.GetPhysicalDeviceSurfaceCapabilitiesKHR = reinterpret_cast<PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR>(get_proc_addr(instance, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"));
-+    vtbl.GetPhysicalDeviceSurfaceFormatsKHR = reinterpret_cast<PFN_vkGetPhysicalDeviceSurfaceFormatsKHR>(get_proc_addr(instance, "vkGetPhysicalDeviceSurfaceFormatsKHR"));
-+    vtbl.GetPhysicalDeviceSurfacePresentModesKHR = reinterpret_cast<PFN_vkGetPhysicalDeviceSurfacePresentModesKHR>(get_proc_addr(instance, "vkGetPhysicalDeviceSurfacePresentModesKHR"));
-     vtbl.CreateAndroidSurfaceKHR = reinterpret_cast<PFN_vkCreateAndroidSurfaceKHR>(get_proc_addr(instance, "vkCreateAndroidSurfaceKHR"));
-     // clang-format on
-     return success;
-@@ -1112,21 +1115,6 @@ bool LoadDeviceVtbl(VkDevice device,
-         ALOGE("missing device proc: %s", "vkCmdExecuteCommands");
-         success = false;
-     }
--    vtbl.GetSurfacePropertiesKHR = reinterpret_cast<PFN_vkGetSurfacePropertiesKHR>(get_proc_addr(device, "vkGetSurfacePropertiesKHR"));
--    if (UNLIKELY(!vtbl.GetSurfacePropertiesKHR)) {
--        ALOGE("missing device proc: %s", "vkGetSurfacePropertiesKHR");
--        success = false;
--    }
--    vtbl.GetSurfaceFormatsKHR = reinterpret_cast<PFN_vkGetSurfaceFormatsKHR>(get_proc_addr(device, "vkGetSurfaceFormatsKHR"));
--    if (UNLIKELY(!vtbl.GetSurfaceFormatsKHR)) {
--        ALOGE("missing device proc: %s", "vkGetSurfaceFormatsKHR");
--        success = false;
--    }
--    vtbl.GetSurfacePresentModesKHR = reinterpret_cast<PFN_vkGetSurfacePresentModesKHR>(get_proc_addr(device, "vkGetSurfacePresentModesKHR"));
--    if (UNLIKELY(!vtbl.GetSurfacePresentModesKHR)) {
--        ALOGE("missing device proc: %s", "vkGetSurfacePresentModesKHR");
--        success = false;
--    }
-     vtbl.CreateSwapchainKHR = reinterpret_cast<PFN_vkCreateSwapchainKHR>(get_proc_addr(device, "vkCreateSwapchainKHR"));
-     if (UNLIKELY(!vtbl.CreateSwapchainKHR)) {
-         ALOGE("missing device proc: %s", "vkCreateSwapchainKHR");
-diff --git a/vulkan/libvulkan/loader.cpp b/vulkan/libvulkan/loader.cpp
-index 10877c5..03265ef 100644
---- a/vulkan/libvulkan/loader.cpp
-+++ b/vulkan/libvulkan/loader.cpp
-@@ -546,15 +546,6 @@ PFN_vkVoidFunction GetLayerDeviceProcAddr(VkDevice device, const char* name) {
-         return reinterpret_cast<PFN_vkVoidFunction>(Noop);
-     }
-     // WSI extensions are not in the driver so return the loader functions
--    if (strcmp(name, "vkGetSurfacePropertiesKHR") == 0) {
--        return reinterpret_cast<PFN_vkVoidFunction>(GetSurfacePropertiesKHR);
--    }
--    if (strcmp(name, "vkGetSurfaceFormatsKHR") == 0) {
--        return reinterpret_cast<PFN_vkVoidFunction>(GetSurfaceFormatsKHR);
--    }
--    if (strcmp(name, "vkGetSurfacePresentModesKHR") == 0) {
--        return reinterpret_cast<PFN_vkVoidFunction>(GetSurfacePresentModesKHR);
--    }
-     if (strcmp(name, "vkCreateSwapchainKHR") == 0) {
-         return reinterpret_cast<PFN_vkVoidFunction>(CreateSwapchainKHR);
-     }
-@@ -900,6 +891,9 @@ const InstanceVtbl kBottomInstanceFunctions = {
-     .EnumerateDeviceLayerProperties = EnumerateDeviceLayerPropertiesBottom,
-     .GetPhysicalDeviceSparseImageFormatProperties = GetPhysicalDeviceSparseImageFormatPropertiesBottom,
-     .GetPhysicalDeviceSurfaceSupportKHR = GetPhysicalDeviceSurfaceSupportKHR,
-+    .GetPhysicalDeviceSurfaceCapabilitiesKHR = GetPhysicalDeviceSurfaceCapabilitiesKHR,
-+    .GetPhysicalDeviceSurfaceFormatsKHR = GetPhysicalDeviceSurfaceFormatsKHR,
-+    .GetPhysicalDeviceSurfacePresentModesKHR = GetPhysicalDeviceSurfacePresentModesKHR,
-     // clang-format on
- };
- 
-diff --git a/vulkan/libvulkan/loader.h b/vulkan/libvulkan/loader.h
-index 5c176db..b6c8552 100644
---- a/vulkan/libvulkan/loader.h
-+++ b/vulkan/libvulkan/loader.h
-@@ -51,6 +51,9 @@ struct InstanceVtbl {
-     PFN_vkGetPhysicalDeviceSparseImageFormatProperties GetPhysicalDeviceSparseImageFormatProperties;
- 
-     // Layers and loader only, not implemented by drivers
-+    PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR GetPhysicalDeviceSurfaceCapabilitiesKHR;
-+    PFN_vkGetPhysicalDeviceSurfaceFormatsKHR GetPhysicalDeviceSurfaceFormatsKHR;
-+    PFN_vkGetPhysicalDeviceSurfacePresentModesKHR GetPhysicalDeviceSurfacePresentModesKHR;
-     PFN_vkCreateAndroidSurfaceKHR CreateAndroidSurfaceKHR;
-     PFN_vkDestroySurfaceKHR DestroySurfaceKHR;
-     PFN_vkGetPhysicalDeviceSurfaceSupportKHR GetPhysicalDeviceSurfaceSupportKHR;
-@@ -187,9 +190,6 @@ struct DeviceVtbl {
-     PFN_vkCmdExecuteCommands CmdExecuteCommands;
- 
-     // Layers and loader only, not implemented by drivers
--    PFN_vkGetSurfacePropertiesKHR GetSurfacePropertiesKHR;
--    PFN_vkGetSurfaceFormatsKHR GetSurfaceFormatsKHR;
--    PFN_vkGetSurfacePresentModesKHR GetSurfacePresentModesKHR;
-     PFN_vkCreateSwapchainKHR CreateSwapchainKHR;
-     PFN_vkDestroySwapchainKHR DestroySwapchainKHR;
-     PFN_vkGetSwapchainImagesKHR GetSwapchainImagesKHR;
-@@ -268,18 +268,20 @@ VkResult CreateAndroidSurfaceKHR(VkInstance instance,
- void DestroySurfaceKHR(VkInstance instance, VkSurfaceKHR surface);
- VkResult GetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice pdev,
-                                             uint32_t queue_family,
--                                            VkSurfaceKHR surface);
--VkResult GetSurfacePropertiesKHR(VkDevice device,
--                                 VkSurfaceKHR surface,
--                                 VkSurfacePropertiesKHR* properties);
--VkResult GetSurfaceFormatsKHR(VkDevice device,
--                              VkSurfaceKHR surface,
--                              uint32_t* count,
--                              VkSurfaceFormatKHR* formats);
--VkResult GetSurfacePresentModesKHR(VkDevice device,
--                                   VkSurfaceKHR surface,
--                                   uint32_t* count,
--                                   VkPresentModeKHR* modes);
-+                                            VkSurfaceKHR surface,
-+                                            VkBool32* pSupported);
-+VkResult GetPhysicalDeviceSurfaceCapabilitiesKHR(
-+    VkPhysicalDevice pdev,
-+    VkSurfaceKHR surface,
-+    VkSurfaceCapabilitiesKHR* capabilities);
-+VkResult GetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice pdev,
-+                                            VkSurfaceKHR surface,
-+                                            uint32_t* count,
-+                                            VkSurfaceFormatKHR* formats);
-+VkResult GetPhysicalDeviceSurfacePresentModesKHR(VkPhysicalDevice pdev,
-+                                                 VkSurfaceKHR surface,
-+                                                 uint32_t* count,
-+                                                 VkPresentModeKHR* modes);
- VkResult CreateSwapchainKHR(VkDevice device,
-                             const VkSwapchainCreateInfoKHR* create_info,
-                             VkSwapchainKHR* swapchain_handle);
-diff --git a/vulkan/libvulkan/swapchain.cpp b/vulkan/libvulkan/swapchain.cpp
-index 8861918..f1fe236 100644
---- a/vulkan/libvulkan/swapchain.cpp
-+++ b/vulkan/libvulkan/swapchain.cpp
-@@ -177,13 +177,16 @@ void DestroySurfaceKHR(VkInstance instance, VkSurfaceKHR surface_handle) {
- 
- VkResult GetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice /*pdev*/,
-                                             uint32_t /*queue_family*/,
--                                            VkSurfaceKHR /*surface*/) {
-+                                            VkSurfaceKHR /*surface*/,
-+                                            VkBool32* pSupported) {
-+    *pSupported = VK_TRUE;
-     return VK_SUCCESS;
- }
- 
--VkResult GetSurfacePropertiesKHR(VkDevice /*device*/,
--                                 VkSurfaceKHR surface,
--                                 VkSurfacePropertiesKHR* properties) {
-+VkResult GetPhysicalDeviceSurfaceCapabilitiesKHR(
-+    VkPhysicalDevice /*pdev*/,
-+    VkSurfaceKHR surface,
-+    VkSurfaceCapabilitiesKHR* capabilities) {
-     int err;
-     ANativeWindow* window = SurfaceFromHandle(surface)->window.get();
- 
-@@ -201,25 +204,25 @@ VkResult GetSurfacePropertiesKHR(VkDevice /*device*/,
-         return VK_ERROR_INITIALIZATION_FAILED;
-     }
- 
--    properties->currentExtent = VkExtent2D{width, height};
-+    capabilities->currentExtent = VkExtent2D{width, height};
- 
-     // TODO(jessehall): Figure out what the min/max values should be.
--    properties->minImageCount = 2;
--    properties->maxImageCount = 3;
-+    capabilities->minImageCount = 2;
-+    capabilities->maxImageCount = 3;
- 
-     // TODO(jessehall): Figure out what the max extent should be. Maximum
-     // texture dimension maybe?
--    properties->minImageExtent = VkExtent2D{1, 1};
--    properties->maxImageExtent = VkExtent2D{4096, 4096};
-+    capabilities->minImageExtent = VkExtent2D{1, 1};
-+    capabilities->maxImageExtent = VkExtent2D{4096, 4096};
- 
-     // TODO(jessehall): We can support all transforms, fix this once
-     // implemented.
--    properties->supportedTransforms = VK_SURFACE_TRANSFORM_NONE_BIT_KHR;
-+    capabilities->supportedTransforms = VK_SURFACE_TRANSFORM_NONE_BIT_KHR;
- 
-     // TODO(jessehall): Implement based on NATIVE_WINDOW_TRANSFORM_HINT.
--    properties->currentTransform = VK_SURFACE_TRANSFORM_NONE_KHR;
-+    capabilities->currentTransform = VK_SURFACE_TRANSFORM_NONE_KHR;
- 
--    properties->maxImageArraySize = 1;
-+    capabilities->maxImageArraySize = 1;
- 
-     // TODO(jessehall): I think these are right, but haven't thought hard about
-     // it. Do we need to query the driver for support of any of these?
-@@ -227,7 +230,7 @@ VkResult GetSurfacePropertiesKHR(VkDevice /*device*/,
-     // - VK_IMAGE_USAGE_GENERAL: maybe? does this imply cpu mappable?
-     // - VK_IMAGE_USAGE_DEPTH_STENCIL_BIT: definitely not
-     // - VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT: definitely not
--    properties->supportedUsageFlags =
-+    capabilities->supportedUsageFlags =
-         VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT |
-         VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT | VK_IMAGE_USAGE_SAMPLED_BIT |
-         VK_IMAGE_USAGE_STORAGE_BIT | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT |
-@@ -236,10 +239,10 @@ VkResult GetSurfacePropertiesKHR(VkDevice /*device*/,
-     return VK_SUCCESS;
- }
- 
--VkResult GetSurfaceFormatsKHR(VkDevice /*device*/,
--                              VkSurfaceKHR /*surface*/,
--                              uint32_t* count,
--                              VkSurfaceFormatKHR* formats) {
-+VkResult GetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice /*pdev*/,
-+                                            VkSurfaceKHR /*surface*/,
-+                                            uint32_t* count,
-+                                            VkSurfaceFormatKHR* formats) {
-     // TODO(jessehall): Fill out the set of supported formats. Longer term, add
-     // a new gralloc method to query whether a (format, usage) pair is
-     // supported, and check that for each gralloc format that corresponds to a
-@@ -262,10 +265,10 @@ VkResult GetSurfaceFormatsKHR(VkDevice /*device*/,
-     return result;
- }
- 
--VkResult GetSurfacePresentModesKHR(VkDevice /*device*/,
--                                   VkSurfaceKHR /*surface*/,
--                                   uint32_t* count,
--                                   VkPresentModeKHR* modes) {
-+VkResult GetPhysicalDeviceSurfacePresentModesKHR(VkPhysicalDevice /*pdev*/,
-+                                                 VkSurfaceKHR /*surface*/,
-+                                                 uint32_t* count,
-+                                                 VkPresentModeKHR* modes) {
-     const VkPresentModeKHR kModes[] = {
-         VK_PRESENT_MODE_MAILBOX_KHR, VK_PRESENT_MODE_FIFO_KHR,
-     };
-diff --git a/vulkan/tools/vkinfo.cpp b/vulkan/tools/vkinfo.cpp
-index 63e0d5f..eaec272 100644
---- a/vulkan/tools/vkinfo.cpp
-+++ b/vulkan/tools/vkinfo.cpp
-@@ -77,7 +77,7 @@ const char* VkQueueFlagBitStr(VkQueueFlagBits bit) {
-             return "COMPUTE";
-         case VK_QUEUE_DMA_BIT:
-             return "DMA";
--        case VK_QUEUE_SPARSE_MEMMGR_BIT:
-+        case VK_QUEUE_SPARSE_BINDING_BIT:
-             return "SPARSE";
-     }
- }
--- 
-2.6.0.rc2.230.g3dd15c0
-
diff --git a/vulkan/patches/frameworks_native-sdk_0.10/0017-vulkan-Update-from-version-0.193.0-to-0.194.0.patch b/vulkan/patches/frameworks_native-sdk_0.10/0017-vulkan-Update-from-version-0.193.0-to-0.194.0.patch
deleted file mode 100644
index 0345b81..0000000
--- a/vulkan/patches/frameworks_native-sdk_0.10/0017-vulkan-Update-from-version-0.193.0-to-0.194.0.patch
+++ /dev/null
@@ -1,613 +0,0 @@
-From 83c7f0486d495e9e7ab6f901ddeed931fff9ebad Mon Sep 17 00:00:00 2001
-From: Jesse Hall <jessehall@google.com>
-Date: Sun, 29 Nov 2015 21:05:26 -0800
-Subject: [PATCH] vulkan: Update from version 0.193.0 to 0.194.0
-
-Change-Id: I6a4508a61414375112bae3ffd16b0490ce3e4294
----
- vulkan/api/vulkan.api          | 163 +++++++++++++++++-----------------
- vulkan/include/vulkan/vulkan.h | 196 ++++++++++++++++++++---------------------
- 2 files changed, 174 insertions(+), 185 deletions(-)
-
-diff --git a/vulkan/api/vulkan.api b/vulkan/api/vulkan.api
-index bd3049c..418318a 100644
---- a/vulkan/api/vulkan.api
-+++ b/vulkan/api/vulkan.api
-@@ -27,7 +27,7 @@ import platform "platform.api"
- 
- // API version (major.minor.patch)
- define VERSION_MAJOR 0
--define VERSION_MINOR 193
-+define VERSION_MINOR 194
- define VERSION_PATCH 0
- 
- // API limits
-@@ -170,8 +170,8 @@ enum VkImageType {
- }
- 
- enum VkImageTiling {
--    VK_IMAGE_TILING_LINEAR                                  = 0x00000000,
--    VK_IMAGE_TILING_OPTIMAL                                 = 0x00000001,
-+    VK_IMAGE_TILING_OPTIMAL                                 = 0x00000000,
-+    VK_IMAGE_TILING_LINEAR                                  = 0x00000001,
- }
- 
- enum VkImageViewType {
-@@ -190,12 +190,13 @@ enum VkCmdBufferLevel {
- }
- 
- enum VkChannelSwizzle {
--    VK_CHANNEL_SWIZZLE_ZERO                                 = 0x00000000,
--    VK_CHANNEL_SWIZZLE_ONE                                  = 0x00000001,
--    VK_CHANNEL_SWIZZLE_R                                    = 0x00000002,
--    VK_CHANNEL_SWIZZLE_G                                    = 0x00000003,
--    VK_CHANNEL_SWIZZLE_B                                    = 0x00000004,
--    VK_CHANNEL_SWIZZLE_A                                    = 0x00000005,
-+    VK_CHANNEL_SWIZZLE_IDENTITY                             = 0x00000000,
-+    VK_CHANNEL_SWIZZLE_ZERO                                 = 0x00000001,
-+    VK_CHANNEL_SWIZZLE_ONE                                  = 0x00000002,
-+    VK_CHANNEL_SWIZZLE_R                                    = 0x00000003,
-+    VK_CHANNEL_SWIZZLE_G                                    = 0x00000004,
-+    VK_CHANNEL_SWIZZLE_B                                    = 0x00000005,
-+    VK_CHANNEL_SWIZZLE_A                                    = 0x00000006,
- }
- 
- enum VkDescriptorType {
-@@ -228,8 +229,8 @@ enum VkBorderColor {
- }
- 
- enum VkPipelineBindPoint {
--    VK_PIPELINE_BIND_POINT_COMPUTE                          = 0x00000000,
--    VK_PIPELINE_BIND_POINT_GRAPHICS                         = 0x00000001,
-+    VK_PIPELINE_BIND_POINT_GRAPHICS                         = 0x00000000,
-+    VK_PIPELINE_BIND_POINT_COMPUTE                          = 0x00000001,
- }
- 
- enum VkPrimitiveTopology {
-@@ -268,11 +269,11 @@ enum VkSamplerMipmapMode {
- }
- 
- enum VkSamplerAddressMode {
--    VK_SAMPLER_ADDRESS_MODE_WRAP                            = 0x00000000,
--    VK_SAMPLER_ADDRESS_MODE_MIRROR                          = 0x00000001,
--    VK_SAMPLER_ADDRESS_MODE_CLAMP                           = 0x00000002,
--    VK_SAMPLER_ADDRESS_MODE_MIRROR_ONCE                     = 0x00000003,
--    VK_SAMPLER_ADDRESS_MODE_CLAMP_BORDER                    = 0x00000004,
-+    VK_SAMPLER_ADDRESS_MODE_REPEAT                          = 0x00000000,
-+    VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT                 = 0x00000001,
-+    VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE                   = 0x00000002,
-+    VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER                 = 0x00000003,
-+    VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE            = 0x00000004,
- }
- 
- enum VkCompareOp {
-@@ -287,16 +288,9 @@ enum VkCompareOp {
- }
- 
- enum VkFillMode {
--    VK_FILL_MODE_POINTS                                     = 0x00000000,
-+    VK_FILL_MODE_SOLID                                      = 0x00000000,
-     VK_FILL_MODE_WIREFRAME                                  = 0x00000001,
--    VK_FILL_MODE_SOLID                                      = 0x00000002,
--}
--
--enum VkCullMode {
--    VK_CULL_MODE_NONE                                       = 0x00000000,
--    VK_CULL_MODE_FRONT                                      = 0x00000001,
--    VK_CULL_MODE_BACK                                       = 0x00000002,
--    VK_CULL_MODE_FRONT_AND_BACK                             = 0x00000003,
-+    VK_FILL_MODE_POINTS                                     = 0x00000002,
- }
- 
- enum VkFrontFace {
-@@ -570,57 +564,54 @@ enum VkFormat {
- /// Structure type enumerant
- enum VkStructureType {
-     VK_STRUCTURE_TYPE_APPLICATION_INFO                          = 0,
--    VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO                        = 1,
--    VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO                         = 2,
--    VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO                    = 3,
--    VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO                 = 4,
--    VK_STRUCTURE_TYPE_SHADER_CREATE_INFO                        = 5,
--    VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO              = 6,
--    VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO                       = 7,
--    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO         = 8,
--    VK_STRUCTURE_TYPE_CMD_BUFFER_ALLOC_INFO                     = 9,
-+    VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO                      = 1,
-+    VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO                  = 2,
-+    VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO                        = 3,
-+    VK_STRUCTURE_TYPE_SUBMIT_INFO                               = 4,
-+    VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO                         = 5,
-+    VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE                       = 6,
-+    VK_STRUCTURE_TYPE_BIND_SPARSE_INFO                          = 7,
-+    VK_STRUCTURE_TYPE_FENCE_CREATE_INFO                         = 8,
-+    VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO                     = 9,
-     VK_STRUCTURE_TYPE_EVENT_CREATE_INFO                         = 10,
--    VK_STRUCTURE_TYPE_FENCE_CREATE_INFO                         = 11,
--    VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO                     = 12,
--    VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO                    = 13,
--    VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO         = 14,
--    VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO             = 15,
--    VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO   = 16,
--    VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 17,
--    VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO   = 18,
--    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO       = 19,
--    VK_STRUCTURE_TYPE_PIPELINE_RASTER_STATE_CREATE_INFO         = 20,
--    VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO    = 21,
--    VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO    = 22,
--    VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO  = 23,
--    VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO                         = 24,
--    VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO                        = 25,
--    VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO                   = 26,
--    VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO                   = 27,
--    VK_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO                     = 28,
--    VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO                   = 29,
--    VK_STRUCTURE_TYPE_MEMORY_BARRIER                            = 30,
--    VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER                     = 31,
--    VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER                      = 32,
--    VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO               = 33,
--    VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET                      = 34,
--    VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET                       = 35,
--    VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO                      = 36,
--    VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO               = 37,
--    VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE                       = 38,
--    VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO                = 39,
--    VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION                    = 40,
--    VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION                       = 41,
--    VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY                        = 42,
-+    VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO                    = 11,
-+    VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO                        = 12,
-+    VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO                   = 13,
-+    VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO                         = 14,
-+    VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO                    = 15,
-+    VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO                 = 16,
-+    VK_STRUCTURE_TYPE_SHADER_CREATE_INFO                        = 17,
-+    VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO                = 18,
-+    VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO         = 19,
-+    VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO   = 20,
-+    VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 21,
-+    VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO   = 22,
-+    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO       = 23,
-+    VK_STRUCTURE_TYPE_PIPELINE_RASTER_STATE_CREATE_INFO         = 24,
-+    VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO    = 25,
-+    VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO  = 26,
-+    VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO    = 27,
-+    VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO        = 28,
-+    VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO             = 29,
-+    VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO              = 30,
-+    VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO               = 31,
-+    VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO                       = 32,
-+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO         = 33,
-+    VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO               = 34,
-+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOC_INFO                 = 35,
-+    VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET                      = 36,
-+    VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET                       = 37,
-+    VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO                   = 38,
-+    VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO                   = 39,
-+    VK_STRUCTURE_TYPE_CMD_POOL_CREATE_INFO                      = 40,
-+    VK_STRUCTURE_TYPE_CMD_BUFFER_ALLOC_INFO                     = 41,
-+    VK_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO                     = 42,
-     VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO                    = 43,
--    VK_STRUCTURE_TYPE_CMD_POOL_CREATE_INFO                      = 44,
--    VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO                  = 45,
--    VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO        = 46,
--    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOC_INFO                 = 47,
--    VK_STRUCTURE_TYPE_SUBMIT_INFO                               = 48,
--    VK_STRUCTURE_TYPE_LAYER_INSTANCE_CREATE_INFO                = 49,
--    VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO                  = 50,
--    VK_STRUCTURE_TYPE_BIND_SPARSE_INFO                          = 51,
-+    VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER                     = 44,
-+    VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER                      = 45,
-+    VK_STRUCTURE_TYPE_MEMORY_BARRIER                            = 46,
-+    VK_STRUCTURE_TYPE_LAYER_INSTANCE_CREATE_INFO                = 47,
-+    VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO                  = 48,
- 
-     //@extension("VK_EXT_KHR_swapchain")
-     VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR                 = 0xc0000801,
-@@ -802,6 +793,7 @@ bitfield VkShaderStageFlagBits {
-     VK_SHADER_STAGE_GEOMETRY_BIT                            = 0x00000008,
-     VK_SHADER_STAGE_FRAGMENT_BIT                            = 0x00000010,
-     VK_SHADER_STAGE_COMPUTE_BIT                             = 0x00000020,
-+    VK_SHADER_STAGE_ALL_GRAPHICS                            = 0x0000001F,
- 
-     VK_SHADER_STAGE_ALL                                     = 0x7FFFFFFF,
- }
-@@ -1040,6 +1032,7 @@ bitfield VkStencilFaceFlagBits {
-     VK_STENCIL_FACE_NONE                                    = 0x00000000,   /// No faces
-     VK_STENCIL_FACE_FRONT_BIT                               = 0x00000001,   /// Front face
-     VK_STENCIL_FACE_BACK_BIT                                = 0x00000002,   /// Back face
-+    VK_STENCIL_FRONT_AND_BACK                               = 0x00000003,
- }
- 
- /// Instance creation flags
-@@ -1153,6 +1146,15 @@ bitfield VkDependencyFlagBits {
-     VK_DEPENDENCY_BY_REGION_BIT                             = 0x00000001,
- }
- 
-+/// Cull mode flags
-+type VkFlags VkCullModeFlags
-+bitfield VkCullModeFlagBits {
-+    VK_CULL_MODE_NONE                                       = 0x00000000,
-+    VK_CULL_MODE_FRONT_BIT                                  = 0x00000001,
-+    VK_CULL_MODE_BACK_BIT                                   = 0x00000002,
-+    VK_CULL_MODE_FRONT_AND_BACK                             = 0x00000003,
-+}
-+
- @extension("VK_EXT_KHR_swapchain")
- type VkFlags VkSurfaceTransformFlagsKHR
- @extension("VK_EXT_KHR_swapchain")
-@@ -1777,7 +1779,7 @@ class VkPipelineRasterStateCreateInfo {
-     VkBool32                                    depthClampEnable
-     VkBool32                                    rasterizerDiscardEnable
-     VkFillMode                                  fillMode                   /// optional (GL45)
--    VkCullMode                                  cullMode
-+    VkCullModeFlags                             cullMode
-     VkFrontFace                                 frontFace
-     VkBool32                                    depthBiasEnable
-     f32                                         depthBiasConstantFactor
-@@ -1981,8 +1983,6 @@ class VkClearAttachment {
- }
- 
- class VkAttachmentDescription {
--    VkStructureType                             sType           /// Must be VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION
--    const void*                                 pNext           /// Pointer to next structure
-     VkAttachmentDescriptionFlags                flags
-     VkFormat                                    format
-     u32                                         samples
-@@ -2000,8 +2000,6 @@ class VkAttachmentReference {
- }
- 
- class VkSubpassDescription {
--    VkStructureType                             sType              /// Must be VK_STRUCTURE_SUBPASS_DESCRIPTION
--    const void*                                 pNext              /// Pointer to next structure
-     VkSubpassDescriptionFlags                   flags
-     VkPipelineBindPoint                         pipelineBindPoint  /// Must be VK_PIPELINE_BIND_POINT_GRAPHICS for now
-     u32                                         inputAttachmentCount
-@@ -2009,14 +2007,12 @@ class VkSubpassDescription {
-     u32                                         colorAttachmentCount
-     const VkAttachmentReference*                pColorAttachments
-     const VkAttachmentReference*                pResolveAttachments
--    VkAttachmentReference                       depthStencilAttachment
-+    const VkAttachmentReference*                pDepthStencilAttachment
-     u32                                         preserveAttachmentCount
-     const VkAttachmentReference*                pPreserveAttachments
- }
- 
- class VkSubpassDependency {
--    VkStructureType                             sType      /// Must be VK_STRUCTURE_SUBPASS_DEPENDENCY
--    const void*                                 pNext      /// Pointer to next structure
-     u32                                         srcSubpass
-     u32                                         destSubpass
-     VkPipelineStageFlags                        srcStageMask
-@@ -2202,7 +2198,8 @@ class VkPhysicalDeviceLimits {
-     u32                                         maxColorAttachments                       /// max num of framebuffer color attachments
- 
-     u32                                         maxSampledImageColorSamples               /// max num of color samples for a non-integer sampled image
--    u32                                         maxSampledImageDepthSamples               /// max num of depth/stencil samples for a sampled image
-+    u32                                         maxSampledImageDepthSamples               /// max num of depth samples for a sampled image
-+    u32                                         maxSampledImageStencilSamples             /// max num of stencil samples for a sampled image
-     u32                                         maxSampledImageIntegerSamples             /// max num of samples supported for an integer image
-     u32                                         maxStorageImageSamples                    /// max num of samples for a storage image
-     u32                                         maxSampleMaskWords                        /// max num of sample mask words
-diff --git a/vulkan/include/vulkan/vulkan.h b/vulkan/include/vulkan/vulkan.h
-index 8442325..af0ccdf 100644
---- a/vulkan/include/vulkan/vulkan.h
-+++ b/vulkan/include/vulkan/vulkan.h
-@@ -41,7 +41,7 @@ extern "C" {
-     ((major << 22) | (minor << 12) | patch)
- 
- // Vulkan API version supported by this file
--#define VK_API_VERSION VK_MAKE_VERSION(0, 193, 0)
-+#define VK_API_VERSION VK_MAKE_VERSION(0, 194, 0)
- 
- 
- #define VK_NULL_HANDLE 0
-@@ -132,60 +132,57 @@ typedef enum {
- 
- typedef enum {
-     VK_STRUCTURE_TYPE_APPLICATION_INFO = 0,
--    VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 1,
--    VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO = 2,
--    VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 3,
--    VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 4,
--    VK_STRUCTURE_TYPE_SHADER_CREATE_INFO = 5,
--    VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 6,
--    VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 7,
--    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 8,
--    VK_STRUCTURE_TYPE_CMD_BUFFER_ALLOC_INFO = 9,
-+    VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1,
-+    VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2,
-+    VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3,
-+    VK_STRUCTURE_TYPE_SUBMIT_INFO = 4,
-+    VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO = 5,
-+    VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6,
-+    VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7,
-+    VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8,
-+    VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9,
-     VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10,
--    VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 11,
--    VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 12,
--    VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 13,
--    VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 14,
--    VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 15,
--    VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 16,
--    VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 17,
--    VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 18,
--    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 19,
--    VK_STRUCTURE_TYPE_PIPELINE_RASTER_STATE_CREATE_INFO = 20,
--    VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 21,
--    VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 22,
--    VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 23,
--    VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 24,
--    VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 25,
--    VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 26,
--    VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 27,
--    VK_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO = 28,
--    VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 29,
--    VK_STRUCTURE_TYPE_MEMORY_BARRIER = 30,
--    VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 31,
--    VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 32,
--    VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33,
--    VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 34,
--    VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 35,
--    VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 36,
--    VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 37,
--    VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 38,
--    VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 39,
--    VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION = 40,
--    VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION = 41,
--    VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY = 42,
-+    VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11,
-+    VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12,
-+    VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13,
-+    VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14,
-+    VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15,
-+    VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16,
-+    VK_STRUCTURE_TYPE_SHADER_CREATE_INFO = 17,
-+    VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 18,
-+    VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 19,
-+    VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 20,
-+    VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 21,
-+    VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 22,
-+    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 23,
-+    VK_STRUCTURE_TYPE_PIPELINE_RASTER_STATE_CREATE_INFO = 24,
-+    VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 25,
-+    VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 26,
-+    VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 27,
-+    VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 28,
-+    VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 29,
-+    VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 30,
-+    VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 31,
-+    VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 32,
-+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 33,
-+    VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 34,
-+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOC_INFO = 35,
-+    VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 36,
-+    VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 37,
-+    VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 38,
-+    VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 39,
-+    VK_STRUCTURE_TYPE_CMD_POOL_CREATE_INFO = 40,
-+    VK_STRUCTURE_TYPE_CMD_BUFFER_ALLOC_INFO = 41,
-+    VK_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO = 42,
-     VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43,
--    VK_STRUCTURE_TYPE_CMD_POOL_CREATE_INFO = 44,
--    VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 45,
--    VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 46,
--    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOC_INFO = 47,
--    VK_STRUCTURE_TYPE_SUBMIT_INFO = 48,
--    VK_STRUCTURE_TYPE_LAYER_INSTANCE_CREATE_INFO = 49,
--    VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO = 50,
--    VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 51,
-+    VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44,
-+    VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45,
-+    VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46,
-+    VK_STRUCTURE_TYPE_LAYER_INSTANCE_CREATE_INFO = 47,
-+    VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO = 48,
-     VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO,
--    VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_BIND_SPARSE_INFO,
--    VK_STRUCTURE_TYPE_NUM = (VK_STRUCTURE_TYPE_BIND_SPARSE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1),
-+    VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO,
-+    VK_STRUCTURE_TYPE_NUM = (VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1),
-     VK_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF
- } VkStructureType;
- 
-@@ -401,11 +398,11 @@ typedef enum {
- } VkImageType;
- 
- typedef enum {
--    VK_IMAGE_TILING_LINEAR = 0,
--    VK_IMAGE_TILING_OPTIMAL = 1,
--    VK_IMAGE_TILING_BEGIN_RANGE = VK_IMAGE_TILING_LINEAR,
--    VK_IMAGE_TILING_END_RANGE = VK_IMAGE_TILING_OPTIMAL,
--    VK_IMAGE_TILING_NUM = (VK_IMAGE_TILING_OPTIMAL - VK_IMAGE_TILING_LINEAR + 1),
-+    VK_IMAGE_TILING_OPTIMAL = 0,
-+    VK_IMAGE_TILING_LINEAR = 1,
-+    VK_IMAGE_TILING_BEGIN_RANGE = VK_IMAGE_TILING_OPTIMAL,
-+    VK_IMAGE_TILING_END_RANGE = VK_IMAGE_TILING_LINEAR,
-+    VK_IMAGE_TILING_NUM = (VK_IMAGE_TILING_LINEAR - VK_IMAGE_TILING_OPTIMAL + 1),
-     VK_IMAGE_TILING_MAX_ENUM = 0x7FFFFFFF
- } VkImageTiling;
- 
-@@ -471,15 +468,16 @@ typedef enum {
- } VkImageViewType;
- 
- typedef enum {
--    VK_CHANNEL_SWIZZLE_ZERO = 0,
--    VK_CHANNEL_SWIZZLE_ONE = 1,
--    VK_CHANNEL_SWIZZLE_R = 2,
--    VK_CHANNEL_SWIZZLE_G = 3,
--    VK_CHANNEL_SWIZZLE_B = 4,
--    VK_CHANNEL_SWIZZLE_A = 5,
--    VK_CHANNEL_SWIZZLE_BEGIN_RANGE = VK_CHANNEL_SWIZZLE_ZERO,
-+    VK_CHANNEL_SWIZZLE_IDENTITY = 0,
-+    VK_CHANNEL_SWIZZLE_ZERO = 1,
-+    VK_CHANNEL_SWIZZLE_ONE = 2,
-+    VK_CHANNEL_SWIZZLE_R = 3,
-+    VK_CHANNEL_SWIZZLE_G = 4,
-+    VK_CHANNEL_SWIZZLE_B = 5,
-+    VK_CHANNEL_SWIZZLE_A = 6,
-+    VK_CHANNEL_SWIZZLE_BEGIN_RANGE = VK_CHANNEL_SWIZZLE_IDENTITY,
-     VK_CHANNEL_SWIZZLE_END_RANGE = VK_CHANNEL_SWIZZLE_A,
--    VK_CHANNEL_SWIZZLE_NUM = (VK_CHANNEL_SWIZZLE_A - VK_CHANNEL_SWIZZLE_ZERO + 1),
-+    VK_CHANNEL_SWIZZLE_NUM = (VK_CHANNEL_SWIZZLE_A - VK_CHANNEL_SWIZZLE_IDENTITY + 1),
-     VK_CHANNEL_SWIZZLE_MAX_ENUM = 0x7FFFFFFF
- } VkChannelSwizzle;
- 
-@@ -511,27 +509,16 @@ typedef enum {
- } VkPrimitiveTopology;
- 
- typedef enum {
--    VK_FILL_MODE_POINTS = 0,
-+    VK_FILL_MODE_SOLID = 0,
-     VK_FILL_MODE_WIREFRAME = 1,
--    VK_FILL_MODE_SOLID = 2,
--    VK_FILL_MODE_BEGIN_RANGE = VK_FILL_MODE_POINTS,
--    VK_FILL_MODE_END_RANGE = VK_FILL_MODE_SOLID,
--    VK_FILL_MODE_NUM = (VK_FILL_MODE_SOLID - VK_FILL_MODE_POINTS + 1),
-+    VK_FILL_MODE_POINTS = 2,
-+    VK_FILL_MODE_BEGIN_RANGE = VK_FILL_MODE_SOLID,
-+    VK_FILL_MODE_END_RANGE = VK_FILL_MODE_POINTS,
-+    VK_FILL_MODE_NUM = (VK_FILL_MODE_POINTS - VK_FILL_MODE_SOLID + 1),
-     VK_FILL_MODE_MAX_ENUM = 0x7FFFFFFF
- } VkFillMode;
- 
- typedef enum {
--    VK_CULL_MODE_NONE = 0,
--    VK_CULL_MODE_FRONT = 1,
--    VK_CULL_MODE_BACK = 2,
--    VK_CULL_MODE_FRONT_AND_BACK = 3,
--    VK_CULL_MODE_BEGIN_RANGE = VK_CULL_MODE_NONE,
--    VK_CULL_MODE_END_RANGE = VK_CULL_MODE_FRONT_AND_BACK,
--    VK_CULL_MODE_NUM = (VK_CULL_MODE_FRONT_AND_BACK - VK_CULL_MODE_NONE + 1),
--    VK_CULL_MODE_MAX_ENUM = 0x7FFFFFFF
--} VkCullMode;
--
--typedef enum {
-     VK_FRONT_FACE_CCW = 0,
-     VK_FRONT_FACE_CW = 1,
-     VK_FRONT_FACE_BEGIN_RANGE = VK_FRONT_FACE_CCW,
-@@ -667,14 +654,14 @@ typedef enum {
- } VkSamplerMipmapMode;
- 
- typedef enum {
--    VK_SAMPLER_ADDRESS_MODE_WRAP = 0,
--    VK_SAMPLER_ADDRESS_MODE_MIRROR = 1,
--    VK_SAMPLER_ADDRESS_MODE_CLAMP = 2,
--    VK_SAMPLER_ADDRESS_MODE_MIRROR_ONCE = 3,
--    VK_SAMPLER_ADDRESS_MODE_CLAMP_BORDER = 4,
--    VK_SAMPLER_ADDRESS_MODE_BEGIN_RANGE = VK_SAMPLER_ADDRESS_MODE_WRAP,
--    VK_SAMPLER_ADDRESS_MODE_END_RANGE = VK_SAMPLER_ADDRESS_MODE_CLAMP_BORDER,
--    VK_SAMPLER_ADDRESS_MODE_NUM = (VK_SAMPLER_ADDRESS_MODE_CLAMP_BORDER - VK_SAMPLER_ADDRESS_MODE_WRAP + 1),
-+    VK_SAMPLER_ADDRESS_MODE_REPEAT = 0,
-+    VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1,
-+    VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2,
-+    VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3,
-+    VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4,
-+    VK_SAMPLER_ADDRESS_MODE_BEGIN_RANGE = VK_SAMPLER_ADDRESS_MODE_REPEAT,
-+    VK_SAMPLER_ADDRESS_MODE_END_RANGE = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE,
-+    VK_SAMPLER_ADDRESS_MODE_NUM = (VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE - VK_SAMPLER_ADDRESS_MODE_REPEAT + 1),
-     VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 0x7FFFFFFF
- } VkSamplerAddressMode;
- 
-@@ -729,11 +716,11 @@ typedef enum {
- } VkAttachmentStoreOp;
- 
- typedef enum {
--    VK_PIPELINE_BIND_POINT_COMPUTE = 0,
--    VK_PIPELINE_BIND_POINT_GRAPHICS = 1,
--    VK_PIPELINE_BIND_POINT_BEGIN_RANGE = VK_PIPELINE_BIND_POINT_COMPUTE,
--    VK_PIPELINE_BIND_POINT_END_RANGE = VK_PIPELINE_BIND_POINT_GRAPHICS,
--    VK_PIPELINE_BIND_POINT_NUM = (VK_PIPELINE_BIND_POINT_GRAPHICS - VK_PIPELINE_BIND_POINT_COMPUTE + 1),
-+    VK_PIPELINE_BIND_POINT_GRAPHICS = 0,
-+    VK_PIPELINE_BIND_POINT_COMPUTE = 1,
-+    VK_PIPELINE_BIND_POINT_BEGIN_RANGE = VK_PIPELINE_BIND_POINT_GRAPHICS,
-+    VK_PIPELINE_BIND_POINT_END_RANGE = VK_PIPELINE_BIND_POINT_COMPUTE,
-+    VK_PIPELINE_BIND_POINT_NUM = (VK_PIPELINE_BIND_POINT_COMPUTE - VK_PIPELINE_BIND_POINT_GRAPHICS + 1),
-     VK_PIPELINE_BIND_POINT_MAX_ENUM = 0x7FFFFFFF
- } VkPipelineBindPoint;
- 
-@@ -922,6 +909,7 @@ typedef enum {
-     VK_SHADER_STAGE_GEOMETRY_BIT = 0x00000008,
-     VK_SHADER_STAGE_FRAGMENT_BIT = 0x00000010,
-     VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020,
-+    VK_SHADER_STAGE_ALL_GRAPHICS = 0x1F,
-     VK_SHADER_STAGE_ALL = 0x7FFFFFFF,
- } VkShaderStageFlagBits;
- typedef VkFlags VkPipelineCacheCreateFlags;
-@@ -938,6 +926,14 @@ typedef VkFlags VkPipelineInputAssemblyStateCreateFlags;
- typedef VkFlags VkPipelineTesselationStateCreateFlags;
- typedef VkFlags VkPipelineViewportStateCreateFlags;
- typedef VkFlags VkPipelineRasterStateCreateFlags;
-+
-+typedef enum {
-+    VK_CULL_MODE_NONE = 0,
-+    VK_CULL_MODE_FRONT_BIT = 0x00000001,
-+    VK_CULL_MODE_BACK_BIT = 0x00000002,
-+    VK_CULL_MODE_FRONT_AND_BACK = 0x3,
-+} VkCullModeFlagBits;
-+typedef VkFlags VkCullModeFlags;
- typedef VkFlags VkPipelineMultisampleStateCreateFlags;
- typedef VkFlags VkPipelineDepthStencilStateCreateFlags;
- typedef VkFlags VkPipelineColorBlendStateCreateFlags;
-@@ -1044,6 +1040,7 @@ typedef enum {
-     VK_STENCIL_FACE_NONE = 0,
-     VK_STENCIL_FACE_FRONT_BIT = 0x00000001,
-     VK_STENCIL_FACE_BACK_BIT = 0x00000002,
-+    VK_STENCIL_FRONT_AND_BACK = 0x3,
- } VkStencilFaceFlagBits;
- typedef VkFlags VkStencilFaceFlags;
- 
-@@ -1270,6 +1267,7 @@ typedef struct {
-     uint32_t                                    maxColorAttachments;
-     uint32_t                                    maxSampledImageColorSamples;
-     uint32_t                                    maxSampledImageDepthSamples;
-+    uint32_t                                    maxSampledImageStencilSamples;
-     uint32_t                                    maxSampledImageIntegerSamples;
-     uint32_t                                    maxStorageImageSamples;
-     uint32_t                                    maxSampleMaskWords;
-@@ -1698,7 +1696,7 @@ typedef struct {
-     VkBool32                                    depthClampEnable;
-     VkBool32                                    rasterizerDiscardEnable;
-     VkFillMode                                  fillMode;
--    VkCullMode                                  cullMode;
-+    VkCullModeFlags                             cullMode;
-     VkFrontFace                                 frontFace;
-     VkBool32                                    depthBiasEnable;
-     float                                       depthBiasConstantFactor;
-@@ -1929,8 +1927,6 @@ typedef struct {
- } VkFramebufferCreateInfo;
- 
- typedef struct {
--    VkStructureType                             sType;
--    const void*                                 pNext;
-     VkAttachmentDescriptionFlags                flags;
-     VkFormat                                    format;
-     uint32_t                                    samples;
-@@ -1948,8 +1944,6 @@ typedef struct {
- } VkAttachmentReference;
- 
- typedef struct {
--    VkStructureType                             sType;
--    const void*                                 pNext;
-     VkSubpassDescriptionFlags                   flags;
-     VkPipelineBindPoint                         pipelineBindPoint;
-     uint32_t                                    inputAttachmentCount;
-@@ -1957,14 +1951,12 @@ typedef struct {
-     uint32_t                                    colorAttachmentCount;
-     const VkAttachmentReference*                pColorAttachments;
-     const VkAttachmentReference*                pResolveAttachments;
--    VkAttachmentReference                       depthStencilAttachment;
-+    const VkAttachmentReference*                pDepthStencilAttachment;
-     uint32_t                                    preserveAttachmentCount;
-     const VkAttachmentReference*                pPreserveAttachments;
- } VkSubpassDescription;
- 
- typedef struct {
--    VkStructureType                             sType;
--    const void*                                 pNext;
-     uint32_t                                    srcSubpass;
-     uint32_t                                    destSubpass;
-     VkPipelineStageFlags                        srcStageMask;
--- 
-2.6.0.rc2.230.g3dd15c0
-
diff --git a/vulkan/patches/frameworks_native-sdk_0.10/0018-vulkan-Update-from-version-0.194.0-to-0.196.0.patch b/vulkan/patches/frameworks_native-sdk_0.10/0018-vulkan-Update-from-version-0.194.0-to-0.196.0.patch
deleted file mode 100644
index 6aa21c6..0000000
--- a/vulkan/patches/frameworks_native-sdk_0.10/0018-vulkan-Update-from-version-0.194.0-to-0.196.0.patch
+++ /dev/null
@@ -1,6996 +0,0 @@
-From 48e9a8af39134fc2e995867668e113e56931167b Mon Sep 17 00:00:00 2001
-From: Jesse Hall <jessehall@google.com>
-Date: Sun, 29 Nov 2015 22:10:52 -0800
-Subject: [PATCH] vulkan: Update from version 0.194.0 to 0.196.0
-
-Change-Id: Ib62cc358b1f2575daeaa2a893eb4afca458ec5c3
----
- vulkan/api/templates/vulkan_common.tmpl        |    2 +-
- vulkan/api/vulkan.api                          | 1131 ++++++++++++------------
- vulkan/include/vulkan/vk_debug_report_lunarg.h |    2 +-
- vulkan/include/vulkan/vulkan.h                 |  909 ++++++++++---------
- vulkan/libvulkan/entry.cpp                     |  334 +++----
- vulkan/libvulkan/entry.cpp.tmpl                |    6 +-
- vulkan/libvulkan/get_proc_addr.cpp             |   30 +-
- vulkan/libvulkan/loader.cpp                    |   98 +-
- vulkan/libvulkan/loader.h                      |   19 +-
- vulkan/libvulkan/swapchain.cpp                 |   19 +-
- vulkan/nulldrv/null_driver.cpp                 |  283 +++---
- vulkan/nulldrv/null_driver.h                   |  190 ++--
- vulkan/nulldrv/null_driver_gen.cpp             |    6 +-
- vulkan/tools/vkinfo.cpp                        |    2 +-
- 14 files changed, 1520 insertions(+), 1511 deletions(-)
-
-diff --git a/vulkan/api/templates/vulkan_common.tmpl b/vulkan/api/templates/vulkan_common.tmpl
-index 12d5788..ce37a13 100644
---- a/vulkan/api/templates/vulkan_common.tmpl
-+++ b/vulkan/api/templates/vulkan_common.tmpl
-@@ -211,7 +211,7 @@
- {{define "Vtbl#VkPhysicalDevice"}}Instance{{end}}
- {{define "Vtbl#VkDevice"        }}Device{{end}}
- {{define "Vtbl#VkQueue"         }}Device{{end}}
--{{define "Vtbl#VkCmdBuffer"     }}Device{{end}}
-+{{define "Vtbl#VkCommandBuffer" }}Device{{end}}
- {{define "Vtbl_Default"         }}Global{{end}}
- {{define "Vtbl"}}
-   {{AssertType $ "Function"}}
-diff --git a/vulkan/api/vulkan.api b/vulkan/api/vulkan.api
-index 418318a..7313904 100644
---- a/vulkan/api/vulkan.api
-+++ b/vulkan/api/vulkan.api
-@@ -27,7 +27,7 @@ import platform "platform.api"
- 
- // API version (major.minor.patch)
- define VERSION_MAJOR 0
--define VERSION_MINOR 194
-+define VERSION_MINOR 196
- define VERSION_PATCH 0
- 
- // API limits
-@@ -100,11 +100,11 @@ type u32 VkSampleMask
- @dispatchHandle type u64 VkPhysicalDevice
- @dispatchHandle type u64 VkDevice
- @dispatchHandle type u64 VkQueue
--@dispatchHandle type u64 VkCmdBuffer
-+@dispatchHandle type u64 VkCommandBuffer
- 
- /// Non dispatchable handle types.
- @nonDispatchHandle type u64 VkDeviceMemory
--@nonDispatchHandle type u64 VkCmdPool
-+@nonDispatchHandle type u64 VkCommandPool
- @nonDispatchHandle type u64 VkBuffer
- @nonDispatchHandle type u64 VkBufferView
- @nonDispatchHandle type u64 VkImage
-@@ -144,12 +144,12 @@ enum VkImageLayout {
-     VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL        = 0x00000003,   /// Optimal layout when image is only used for depth/stencil attachment read/write
-     VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL         = 0x00000004,   /// Optimal layout when image is used for read only depth/stencil attachment and shader access
-     VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL                = 0x00000005,   /// Optimal layout when image is used for read only shader access
--    VK_IMAGE_LAYOUT_TRANSFER_SOURCE_OPTIMAL                 = 0x00000006,   /// Optimal layout when image is used only as source of transfer operations
--    VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL            = 0x00000007,   /// Optimal layout when image is used only as destination of transfer operations
-+    VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL                    = 0x00000006,   /// Optimal layout when image is used only as source of transfer operations
-+    VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL                    = 0x00000007,   /// Optimal layout when image is used only as destination of transfer operations
-     VK_IMAGE_LAYOUT_PREINITIALIZED                          = 0x00000008,   /// Initial layout used when the data is populated by the CPU
- 
-     //@extension("VK_EXT_KHR_swapchain")
--    VK_IMAGE_LAYOUT_PRESENT_SOURCE_KHR                      = 0xc0000802,
-+    VK_IMAGE_LAYOUT_PRESENT_SRC_KHR                         = 0xc0000802,
- }
- 
- enum VkAttachmentLoadOp {
-@@ -184,9 +184,9 @@ enum VkImageViewType {
-     VK_IMAGE_VIEW_TYPE_CUBE_ARRAY                           = 0x00000006,
- }
- 
--enum VkCmdBufferLevel {
--    VK_CMD_BUFFER_LEVEL_PRIMARY                             = 0x00000000,
--    VK_CMD_BUFFER_LEVEL_SECONDARY                           = 0x00000001,
-+enum VkCommandBufferLevel {
-+    VK_COMMAND_BUFFER_LEVEL_PRIMARY                         = 0x00000000,
-+    VK_COMMAND_BUFFER_LEVEL_SECONDARY                       = 0x00000001,
- }
- 
- enum VkChannelSwizzle {
-@@ -240,10 +240,10 @@ enum VkPrimitiveTopology {
-     VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST                     = 0x00000003,
-     VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP                    = 0x00000004,
-     VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN                      = 0x00000005,
--    VK_PRIMITIVE_TOPOLOGY_LINE_LIST_ADJ                     = 0x00000006,
--    VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_ADJ                    = 0x00000007,
--    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_ADJ                 = 0x00000008,
--    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_ADJ                = 0x00000009,
-+    VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY          = 0x00000006,
-+    VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY         = 0x00000007,
-+    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY      = 0x00000008,
-+    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY     = 0x00000009,
-     VK_PRIMITIVE_TOPOLOGY_PATCH                             = 0x0000000a,
- }
- 
-@@ -280,10 +280,10 @@ enum VkCompareOp {
-     VK_COMPARE_OP_NEVER                                     = 0x00000000,
-     VK_COMPARE_OP_LESS                                      = 0x00000001,
-     VK_COMPARE_OP_EQUAL                                     = 0x00000002,
--    VK_COMPARE_OP_LESS_EQUAL                                = 0x00000003,
-+    VK_COMPARE_OP_LESS_OR_EQUAL                             = 0x00000003,
-     VK_COMPARE_OP_GREATER                                   = 0x00000004,
-     VK_COMPARE_OP_NOT_EQUAL                                 = 0x00000005,
--    VK_COMPARE_OP_GREATER_EQUAL                             = 0x00000006,
-+    VK_COMPARE_OP_GREATER_OR_EQUAL                          = 0x00000006,
-     VK_COMPARE_OP_ALWAYS                                    = 0x00000007,
- }
- 
-@@ -294,8 +294,8 @@ enum VkFillMode {
- }
- 
- enum VkFrontFace {
--    VK_FRONT_FACE_CCW                                       = 0x00000000,
--    VK_FRONT_FACE_CW                                        = 0x00000001,
-+    VK_FRONT_FACE_COUNTER_CLOCKWISE                         = 0x00000000,
-+    VK_FRONT_FACE_CLOCKWISE                                 = 0x00000001,
- }
- 
- enum VkBlend {
-@@ -303,12 +303,12 @@ enum VkBlend {
-     VK_BLEND_ONE                                            = 0x00000001,
-     VK_BLEND_SRC_COLOR                                      = 0x00000002,
-     VK_BLEND_ONE_MINUS_SRC_COLOR                            = 0x00000003,
--    VK_BLEND_DEST_COLOR                                     = 0x00000004,
--    VK_BLEND_ONE_MINUS_DEST_COLOR                           = 0x00000005,
-+    VK_BLEND_DST_COLOR                                      = 0x00000004,
-+    VK_BLEND_ONE_MINUS_DST_COLOR                            = 0x00000005,
-     VK_BLEND_SRC_ALPHA                                      = 0x00000006,
-     VK_BLEND_ONE_MINUS_SRC_ALPHA                            = 0x00000007,
--    VK_BLEND_DEST_ALPHA                                     = 0x00000008,
--    VK_BLEND_ONE_MINUS_DEST_ALPHA                           = 0x00000009,
-+    VK_BLEND_DST_ALPHA                                      = 0x00000008,
-+    VK_BLEND_ONE_MINUS_DST_ALPHA                            = 0x00000009,
-     VK_BLEND_CONSTANT_COLOR                                 = 0x0000000a,
-     VK_BLEND_ONE_MINUS_CONSTANT_COLOR                       = 0x0000000b,
-     VK_BLEND_CONSTANT_ALPHA                                 = 0x0000000c,
-@@ -332,11 +332,11 @@ enum VkStencilOp {
-     VK_STENCIL_OP_KEEP                                      = 0x00000000,
-     VK_STENCIL_OP_ZERO                                      = 0x00000001,
-     VK_STENCIL_OP_REPLACE                                   = 0x00000002,
--    VK_STENCIL_OP_INC_CLAMP                                 = 0x00000003,
--    VK_STENCIL_OP_DEC_CLAMP                                 = 0x00000004,
-+    VK_STENCIL_OP_INCREMENT_AND_CLAMP                       = 0x00000003,
-+    VK_STENCIL_OP_DECREMENT_AND_CLAMP                       = 0x00000004,
-     VK_STENCIL_OP_INVERT                                    = 0x00000005,
--    VK_STENCIL_OP_INC_WRAP                                  = 0x00000006,
--    VK_STENCIL_OP_DEC_WRAP                                  = 0x00000007,
-+    VK_STENCIL_OP_INCREMENT_AND_WRAP                        = 0x00000006,
-+    VK_STENCIL_OP_DECREMENT_AND_WRAP                        = 0x00000007,
- }
- 
- enum VkLogicOp {
-@@ -345,11 +345,11 @@ enum VkLogicOp {
-     VK_LOGIC_OP_AND_REVERSE                                 = 0x00000002,
-     VK_LOGIC_OP_COPY                                        = 0x00000003,
-     VK_LOGIC_OP_AND_INVERTED                                = 0x00000004,
--    VK_LOGIC_OP_NOOP                                        = 0x00000005,
-+    VK_LOGIC_OP_NO_OP                                       = 0x00000005,
-     VK_LOGIC_OP_XOR                                         = 0x00000006,
-     VK_LOGIC_OP_OR                                          = 0x00000007,
-     VK_LOGIC_OP_NOR                                         = 0x00000008,
--    VK_LOGIC_OP_EQUIV                                       = 0x00000009,
-+    VK_LOGIC_OP_EQUIVALENT                                  = 0x00000009,
-     VK_LOGIC_OP_INVERT                                      = 0x0000000a,
-     VK_LOGIC_OP_OR_REVERSE                                  = 0x0000000b,
-     VK_LOGIC_OP_COPY_INVERTED                               = 0x0000000c,
-@@ -358,16 +358,16 @@ enum VkLogicOp {
-     VK_LOGIC_OP_SET                                         = 0x0000000f,
- }
- 
--enum VkSystemAllocScope {
--    VK_SYSTEM_ALLOC_SCOPE_FUNCTION                          = 0x00000000,
--    VK_SYSTEM_ALLOC_SCOPE_OBJECT                            = 0x00000001,
--    VK_SYSTEM_ALLOC_SCOPE_CACHE                             = 0x00000002,
--    VK_SYSTEM_ALLOC_SCOPE_DEVICE                            = 0x00000003,
--    VK_SYSTEM_ALLOC_SCOPE_INSTANCE                          = 0x00000004,
-+enum VkSystemAllocationScope {
-+    VK_SYSTEM_ALLOCATION_SCOPE_FUNCTION                     = 0x00000000,
-+    VK_SYSTEM_ALLOCATION_SCOPE_OBJECT                       = 0x00000001,
-+    VK_SYSTEM_ALLOCATION_SCOPE_CACHE                        = 0x00000002,
-+    VK_SYSTEM_ALLOCATION_SCOPE_DEVICE                       = 0x00000003,
-+    VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE                     = 0x00000004,
- }
- 
--enum VkInternalAllocType {
--    VK_INTERNAL_ALLOC_TYPE_EXECUTABLE                       = 0x00000000,
-+enum VkInternalAllocationType {
-+    VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE                  = 0x00000000,
- }
- 
- enum VkPhysicalDeviceType {
-@@ -603,9 +603,9 @@ enum VkStructureType {
-     VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET                       = 37,
-     VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO                   = 38,
-     VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO                   = 39,
--    VK_STRUCTURE_TYPE_CMD_POOL_CREATE_INFO                      = 40,
--    VK_STRUCTURE_TYPE_CMD_BUFFER_ALLOC_INFO                     = 41,
--    VK_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO                     = 42,
-+    VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO                  = 40,
-+    VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOC_INFO                 = 41,
-+    VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO                 = 42,
-     VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO                    = 43,
-     VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER                     = 44,
-     VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER                      = 45,
-@@ -627,7 +627,7 @@ enum VkStructureType {
- 
- enum VkRenderPassContents {
-     VK_RENDER_PASS_CONTENTS_INLINE                          = 0x00000000,
--    VK_RENDER_PASS_CONTENTS_SECONDARY_CMD_BUFFERS           = 0x00000001,
-+    VK_RENDER_PASS_CONTENTS_SECONDARY_COMMAND_BUFFERS       = 0x00000001,
- }
- 
- @lastUnused(-8)
-@@ -765,8 +765,8 @@ bitfield VkMemoryInputFlagBits {
- /// Buffer usage flags
- type VkFlags VkBufferUsageFlags
- bitfield VkBufferUsageFlagBits {
--    VK_BUFFER_USAGE_TRANSFER_SOURCE_BIT                     = 0x00000001,    /// Can be used as a source of transfer operations
--    VK_BUFFER_USAGE_TRANSFER_DESTINATION_BIT                = 0x00000002,    /// Can be used as a destination of transfer operations
-+    VK_BUFFER_USAGE_TRANSFER_SRC_BIT                        = 0x00000001,    /// Can be used as a source of transfer operations
-+    VK_BUFFER_USAGE_TRANSFER_DST_BIT                        = 0x00000002,    /// Can be used as a destination of transfer operations
-     VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT                = 0x00000004,    /// Can be used as TBO
-     VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT                = 0x00000008,    /// Can be used as IBO
-     VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT                      = 0x00000010,    /// Can be used as UBO
-@@ -812,8 +812,8 @@ type VkFlags VkDescriptorPoolResetFlags
- /// Image usage flags
- type VkFlags VkImageUsageFlags
- bitfield VkImageUsageFlagBits {
--    VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT                      = 0x00000001,    /// Can be used as a source of transfer operations
--    VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT                 = 0x00000002,    /// Can be used as a destination of transfer operations
-+    VK_IMAGE_USAGE_TRANSFER_SRC_BIT                         = 0x00000001,    /// Can be used as a source of transfer operations
-+    VK_IMAGE_USAGE_TRANSFER_DST_BIT                         = 0x00000002,    /// Can be used as a destination of transfer operations
-     VK_IMAGE_USAGE_SAMPLED_BIT                              = 0x00000004,    /// Can be sampled from (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types)
-     VK_IMAGE_USAGE_STORAGE_BIT                              = 0x00000008,    /// Can be used as storage image (STORAGE_IMAGE descriptor type)
-     VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT                     = 0x00000010,    /// Can be used as framebuffer color attachment
-@@ -878,8 +878,8 @@ bitfield VkFormatFeatureFlagBits {
-     VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT                  = 0x00000080,    /// Format can be used for color attachment images
-     VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT            = 0x00000100,    /// Format supports blending in case it's used for color attachment images
-     VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT          = 0x00000200,    /// Format can be used for depth/stencil attachment images
--    VK_FORMAT_FEATURE_BLIT_SOURCE_BIT                       = 0x00000400,    /// Format can be used as the source image of blits with vkCmdBlitImage
--    VK_FORMAT_FEATURE_BLIT_DESTINATION_BIT                  = 0x00000800,    /// Format can be used as the destination image of blits with vkCmdBlitImage
-+    VK_FORMAT_FEATURE_BLIT_SRC_BIT                          = 0x00000400,    /// Format can be used as the source image of blits with vkCommandBlitImage
-+    VK_FORMAT_FEATURE_BLIT_DST_BIT                          = 0x00000800,    /// Format can be used as the destination image of blits with vkCommandBlitImage
- }
- 
- /// Query control flags
-@@ -914,11 +914,11 @@ type VkFlags VkEventCreateFlags
- //}
- 
- /// Command buffer usage flags
--type VkFlags VkCmdBufferUsageFlags
--bitfield VkCmdBufferUsageFlagBits {
--    VK_CMD_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT                 = 0x00000001,
--    VK_CMD_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT            = 0x00000002,
--    VK_CMD_BUFFER_USAGE_SIMULTANEOUS_USE_BIT                = 0x00000004,
-+type VkFlags VkCommandBufferUsageFlags
-+bitfield VkCommandBufferUsageFlagBits {
-+    VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT             = 0x00000001,
-+    VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT        = 0x00000002,
-+    VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT            = 0x00000004,
- }
- 
- /// Pipeline statistics flags
-@@ -999,21 +999,21 @@ bitfield VkSubpassDescriptionFlagBits {
- }
- 
- /// Command pool creation flags
--type VkFlags VkCmdPoolCreateFlags
--bitfield VkCmdPoolCreateFlagBits {
--    VK_CMD_POOL_CREATE_TRANSIENT_BIT                        = 0x00000001,  /// Command buffers have a short lifetime
--    VK_CMD_POOL_CREATE_RESET_COMMAND_BUFFER_BIT             = 0x00000002,  /// Command buffers may release their memory individually
-+type VkFlags VkCommandPoolCreateFlags
-+bitfield VkCommandPoolCreateFlagBits {
-+    VK_COMMAND_POOL_CREATE_TRANSIENT_BIT                    = 0x00000001,  /// Command buffers have a short lifetime
-+    VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT         = 0x00000002,  /// Command buffers may release their memory individually
- }
- 
- /// Command pool reset flags
--type VkFlags VkCmdPoolResetFlags
--bitfield VkCmdPoolResetFlagBits {
--    VK_CMD_POOL_RESET_RELEASE_RESOURCES_BIT                 = 0x00000001,  /// Release resources owned by the pool
-+type VkFlags VkCommandPoolResetFlags
-+bitfield VkCommandPoolResetFlagBits {
-+    VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT             = 0x00000001,  /// Release resources owned by the pool
- }
- 
--type VkFlags VkCmdBufferResetFlags
--bitfield VkCmdBufferResetFlagBits {
--    VK_CMD_BUFFER_RESET_RELEASE_RESOURCES_BIT               = 0x00000001,  /// Release resources owned by the buffer
-+type VkFlags VkCommandBufferResetFlags
-+bitfield VkCommandBufferResetFlagBits {
-+    VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT           = 0x00000001,  /// Release resources owned by the buffer
- }
- 
- type VkFlags VkSampleCountFlags
-@@ -1095,9 +1095,9 @@ type VkFlags VkPipelineViewportStateCreateFlags
- //bitfield VkPipelineViewportStateCreateFlagBits {
- //}
- 
--/// Raster state creation flags
--type VkFlags VkPipelineRasterStateCreateFlags
--//bitfield VkPipelineRasterStateCreateFlagBits {
-+/// Rasterization state creation flags
-+type VkFlags VkPipelineRasterizationStateCreateFlags
-+//bitfield VkPipelineRasterizationStateCreateFlagBits {
- //}
- 
- /// Multisample state creation flags
-@@ -1233,7 +1233,7 @@ class VkRect2D {
- class VkClearRect {
-     VkRect2D                                    rect
-     u32                                         baseArrayLayer
--    u32                                         numLayers
-+    u32                                         layerCount
- }
- 
- class VkChannelMapping {
-@@ -1256,15 +1256,15 @@ class VkPhysicalDeviceProperties {
- }
- 
- class VkExtensionProperties {
--    char[VK_MAX_EXTENSION_NAME]                 extName            /// extension name
-+    char[VK_MAX_EXTENSION_NAME]                 extensionName      /// extension name
-     u32                                         specVersion        /// version of the extension specification implemented
- }
- 
- class VkLayerProperties {
--    char[VK_MAX_EXTENSION_NAME]                 layerName          /// layer name
--    u32                                         specVersion        /// version of the layer specification implemented
--    u32                                         implVersion        /// build or release version of the layer's library
--    char[VK_MAX_DESCRIPTION]                    description        /// Free-form description of the layer
-+    char[VK_MAX_EXTENSION_NAME]                 layerName               /// layer name
-+    u32                                         specVersion             /// version of the layer specification implemented
-+    u32                                         implementationVersion   /// build or release version of the layer's library
-+    char[VK_MAX_DESCRIPTION]                    description             /// Free-form description of the layer
- }
- 
- class VkSubmitInfo {
-@@ -1273,7 +1273,7 @@ class VkSubmitInfo {
-     u32                                         waitSemaphoreCount
-     const VkSemaphore*                          pWaitSemaphores
-     u32                                         commandBufferCount
--    const VkCmdBuffer*                          pCommandBuffers
-+    const VkCommandBuffer*                      pCommandBuffers
-     u32                                         signalSemaphoreCount
-     const VkSemaphore*                          pSignalSemaphores
- }
-@@ -1281,19 +1281,19 @@ class VkSubmitInfo {
- class VkApplicationInfo {
-     VkStructureType                             sType              /// Type of structure. Should be VK_STRUCTURE_TYPE_APPLICATION_INFO
-     const void*                                 pNext              /// Next structure in chain
--    const char*                                 pAppName
--    u32                                         appVersion
-+    const char*                                 pApplicationName
-+    u32                                         applicationVersion
-     const char*                                 pEngineName
-     u32                                         engineVersion
-     u32                                         apiVersion
- }
- 
--class VkAllocCallbacks {
-+class VkAllocationCallbacks {
-     void*                                       pUserData
--    PFN_vkAllocFunction                         pfnAlloc
--    PFN_vkReallocFunction                       pfnRealloc
-+    PFN_vkAllocationFunction                    pfnAllocation
-+    PFN_vkReallocationFunction                  pfnReallocation
-     PFN_vkFreeFunction                          pfnFree
--    PFN_vkInternalAllocNotification             pfnInternalAlloc
-+    PFN_vkInternalAllocationNotification        pfnInternalAllocation
-     PFN_vkInternalFreeNotification              pfnInternalFree
- }
- 
-@@ -1323,7 +1323,7 @@ class VkInstanceCreateInfo {
-     VkStructureType                             sType                      /// Should be VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO
-     const void*                                 pNext                      /// Pointer to next structure
-     VkInstanceCreateFlags                       flags
--    const VkApplicationInfo*                    pAppInfo
-+    const VkApplicationInfo*                    pApplicationInfo
-     u32                                         enabledLayerNameCount
-     const char* const*                          ppEnabledLayerNames        /// Ordered list of layer names to be enabled
-     u32                                         enabledExtensionNameCount
-@@ -1343,7 +1343,7 @@ class VkPhysicalDeviceMemoryProperties {
-     VkMemoryHeap[VK_MAX_MEMORY_HEAPS]           memoryHeaps
- }
- 
--class VkMemoryAllocInfo {
-+class VkMemoryAllocateInfo {
-     VkStructureType                             sType                      /// Must be VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO
-     const void*                                 pNext                      /// Pointer to next structure
-     VkDeviceSize                                allocationSize             /// Size of memory allocation
-@@ -1383,7 +1383,7 @@ class VkMemoryHeap {
- class VkMappedMemoryRange {
-     VkStructureType                             sType                      /// Must be VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE
-     const void*                                 pNext                      /// Pointer to next structure
--    VkDeviceMemory                              mem                        /// Mapped memory object
-+    VkDeviceMemory                              memory                     /// Mapped memory object
-     VkDeviceSize                                offset                     /// Offset within the mapped memory the range starts from
-     VkDeviceSize                                size                       /// Size of the range within the mapped memory
- }
-@@ -1417,9 +1417,9 @@ class VkDescriptorBufferInfo {
- class VkWriteDescriptorSet {
-     VkStructureType                             sType                      /// Must be VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET
-     const void*                                 pNext                      /// Pointer to next structure
--    VkDescriptorSet                             destSet                    /// Destination descriptor set
--    u32                                         destBinding                /// Binding within the destination descriptor set to write
--    u32                                         destArrayElement           /// Array element within the destination binding to write
-+    VkDescriptorSet                             dstSet                     /// Destination descriptor set
-+    u32                                         dstBinding                 /// Binding within the destination descriptor set to write
-+    u32                                         dstArrayElement            /// Array element within the destination binding to write
-     u32                                         descriptorCount            /// Number of descriptors to write (determines the size of the array pointed by <pDescriptors>)
-     VkDescriptorType                            descriptorType             /// Descriptor type to write (determines which fields of the array pointed by <pDescriptors> are going to be used)
-     const VkDescriptorImageInfo*                pImageInfo
-@@ -1433,9 +1433,9 @@ class VkCopyDescriptorSet {
-     VkDescriptorSet                             srcSet                     /// Source descriptor set
-     u32                                         srcBinding                 /// Binding within the source descriptor set to copy from
-     u32                                         srcArrayElement            /// Array element within the source binding to copy from
--    VkDescriptorSet                             destSet                    /// Destination descriptor set
--    u32                                         destBinding                /// Binding within the destination descriptor set to copy to
--    u32                                         destArrayElement           /// Array element within the destination binding to copy to
-+    VkDescriptorSet                             dstSet                     /// Destination descriptor set
-+    u32                                         dstBinding                 /// Binding within the destination descriptor set to copy to
-+    u32                                         dstArrayElement            /// Array element within the destination binding to copy to
-     u32                                         descriptorCount            /// Number of descriptors to copy
- }
- 
-@@ -1469,9 +1469,9 @@ class VkImageSubresource {
- class VkImageSubresourceRange {
-     VkImageAspectFlags                          aspectMask
-     u32                                         baseMipLevel
--    u32                                         numLevels
-+    u32                                         levelCount
-     u32                                         baseArrayLayer
--    u32                                         numLayers
-+    u32                                         layerCount
- }
- 
- class VkMemoryBarrier {
-@@ -1487,7 +1487,7 @@ class VkBufferMemoryBarrier {
-     VkMemoryOutputFlags                         outputMask                 /// Outputs the barrier should sync
-     VkMemoryInputFlags                          inputMask                  /// Inputs the barrier should sync to
-     u32                                         srcQueueFamilyIndex        /// Queue family to transition ownership from
--    u32                                         destQueueFamilyIndex       /// Queue family to transition ownership to
-+    u32                                         dstQueueFamilyIndex        /// Queue family to transition ownership to
-     VkBuffer                                    buffer                     /// Buffer to sync
-     VkDeviceSize                                offset                     /// Offset within the buffer to sync
-     VkDeviceSize                                size                       /// Amount of bytes to sync
-@@ -1501,7 +1501,7 @@ class VkImageMemoryBarrier {
-     VkImageLayout                               oldLayout                  /// Current layout of the image
-     VkImageLayout                               newLayout                  /// New layout to transition the image to
-     u32                                         srcQueueFamilyIndex        /// Queue family to transition ownership from
--    u32                                         destQueueFamilyIndex       /// Queue family to transition ownership to
-+    u32                                         dstQueueFamilyIndex        /// Queue family to transition ownership to
-     VkImage                                     image                      /// Image to sync
-     VkImageSubresourceRange                     subresourceRange           /// Subresource range to sync
- }
-@@ -1544,15 +1544,15 @@ class VkImageViewCreateInfo {
- 
- class VkBufferCopy {
-     VkDeviceSize                                srcOffset              /// Specified in bytes
--    VkDeviceSize                                destOffset             /// Specified in bytes
-+    VkDeviceSize                                dstOffset              /// Specified in bytes
-     VkDeviceSize                                size                   /// Specified in bytes
- }
- 
- class VkSparseMemoryBind {
-     VkDeviceSize                                resourceOffset        /// Specified in bytes
-     VkDeviceSize                                size                  /// Specified in bytes
--    VkDeviceMemory                              mem
--    VkDeviceSize                                memOffset             /// Specified in bytes
-+    VkDeviceMemory                              memory
-+    VkDeviceSize                                memoryOffset          /// Specified in bytes
-     VkSparseMemoryBindFlags                     flags
- }
- 
-@@ -1560,8 +1560,8 @@ class VkSparseImageMemoryBind {
-     VkImageSubresource                          subresource
-     VkOffset3D                                  offset
-     VkExtent3D                                  extent
--    VkDeviceMemory                              mem
--    VkDeviceSize                                memOffset             /// Specified in bytes
-+    VkDeviceMemory                              memory
-+    VkDeviceSize                                memoryOffset          /// Specified in bytes
-     VkSparseMemoryBindFlags                     flags
- }
- 
-@@ -1602,14 +1602,14 @@ class VkImageSubresourceCopy {
-     VkImageAspectFlags                          aspect
-     u32                                         mipLevel
-     u32                                         baseArrayLayer
--    u32                                         numLayers
-+    u32                                         layerCount
- }
- 
- class VkImageCopy {
-     VkImageSubresourceCopy                      srcSubresource
-     VkOffset3D                                  srcOffset             /// Specified in pixels for both compressed and uncompressed images
--    VkImageSubresourceCopy                      destSubresource
--    VkOffset3D                                  destOffset            /// Specified in pixels for both compressed and uncompressed images
-+    VkImageSubresourceCopy                      dstSubresource
-+    VkOffset3D                                  dstOffset             /// Specified in pixels for both compressed and uncompressed images
-     VkExtent3D                                  extent                /// Specified in pixels for both compressed and uncompressed images
- }
- 
-@@ -1617,9 +1617,9 @@ class VkImageBlit {
-     VkImageSubresourceCopy                      srcSubresource
-     VkOffset3D                                  srcOffset              /// Specified in pixels for both compressed and uncompressed images
-     VkExtent3D                                  srcExtent              /// Specified in pixels for both compressed and uncompressed images
--    VkImageSubresourceCopy                      destSubresource
--    VkOffset3D                                  destOffset             /// Specified in pixels for both compressed and uncompressed images
--    VkExtent3D                                  destExtent             /// Specified in pixels for both compressed and uncompressed images
-+    VkImageSubresourceCopy                      dstSubresource
-+    VkOffset3D                                  dstOffset              /// Specified in pixels for both compressed and uncompressed images
-+    VkExtent3D                                  dstExtent              /// Specified in pixels for both compressed and uncompressed images
- }
- 
- class VkBufferImageCopy {
-@@ -1634,8 +1634,8 @@ class VkBufferImageCopy {
- class VkImageResolve {
-     VkImageSubresourceCopy                      srcSubresource
-     VkOffset3D                                  srcOffset
--    VkImageSubresourceCopy                      destSubresource
--    VkOffset3D                                  destOffset
-+    VkImageSubresourceCopy                      dstSubresource
-+    VkOffset3D                                  dstOffset
-     VkExtent3D                                  extent
- }
- 
-@@ -1685,7 +1685,7 @@ class VkDescriptorPoolCreateInfo {
-     const VkDescriptorTypeCount*                pTypeCounts
- }
- 
--class VkDescriptorSetAllocInfo {
-+class VkDescriptorSetAllocateInfo {
-     VkStructureType                             sType              /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOC_INFO
-     const void*                                 pNext              /// Pointer to next structure
-     VkDescriptorPool                            descriptorPool
-@@ -1772,10 +1772,10 @@ class VkPipelineViewportStateCreateInfo {
-     const VkRect2D*                             pScissors
- }
- 
--class VkPipelineRasterStateCreateInfo {
-+class VkPipelineRasterizationStateCreateInfo {
-     VkStructureType                             sType      /// Must be VK_STRUCTURE_TYPE_PIPELINE_RASTER_STATE_CREATE_INFO
-     const void*                                 pNext      /// Pointer to next structure
--    VkPipelineRasterStateCreateFlags            flags
-+    VkPipelineRasterizationStateCreateFlags     flags
-     VkBool32                                    depthClampEnable
-     VkBool32                                    rasterizerDiscardEnable
-     VkFillMode                                  fillMode                   /// optional (GL45)
-@@ -1792,7 +1792,7 @@ class VkPipelineMultisampleStateCreateInfo {
-     VkStructureType                             sType      /// Must be VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO
-     const void*                                 pNext      /// Pointer to next structure
-     VkPipelineMultisampleStateCreateFlags       flags
--    u32                                         rasterSamples              /// Number of samples used for rasterization
-+    u32                                         rasterizationSamples       /// Number of samples used for rasterization
-     VkBool32                                    sampleShadingEnable        /// optional (GL45)
-     f32                                         minSampleShading           /// optional (GL45)
-     const VkSampleMask*                         pSampleMask
-@@ -1803,10 +1803,10 @@ class VkPipelineMultisampleStateCreateInfo {
- class VkPipelineColorBlendAttachmentState {
-     VkBool32                                    blendEnable
-     VkBlend                                     srcBlendColor
--    VkBlend                                     destBlendColor
-+    VkBlend                                     dstBlendColor
-     VkBlendOp                                   blendOpColor
-     VkBlend                                     srcBlendAlpha
--    VkBlend                                     destBlendAlpha
-+    VkBlend                                     dstBlendAlpha
-     VkBlendOp                                   blendOpAlpha
-     VkChannelFlags                              channelWriteMask
- }
-@@ -1865,7 +1865,7 @@ class VkGraphicsPipelineCreateInfo {
-     const VkPipelineInputAssemblyStateCreateInfo*   pInputAssemblyState
-     const VkPipelineTessellationStateCreateInfo*    pTessellationState
-     const VkPipelineViewportStateCreateInfo*        pViewportState
--    const VkPipelineRasterStateCreateInfo*          pRasterState
-+    const VkPipelineRasterizationStateCreateInfo*   pRasterizationState
-     const VkPipelineMultisampleStateCreateInfo*     pMultisampleState
-     const VkPipelineDepthStencilStateCreateInfo*    pDepthStencilState
-     const VkPipelineColorBlendStateCreateInfo*      pColorBlendState
-@@ -1883,7 +1883,6 @@ class VkPipelineCacheCreateInfo {
-     VkPipelineCacheCreateFlags                  flags
-     platform.size_t                             initialDataSize       /// Size of initial data to populate cache, in bytes
-     const void*                                 pInitialData          /// Initial data to populate cache
--    platform.size_t                             maxSize               /// Maximum size cache can grow to, in bytes. If zero, then the cache may grow without bound.
- }
- 
- class VkPushConstantRange {
-@@ -1922,25 +1921,25 @@ class VkSamplerCreateInfo {
-     VkBool32                                    unnormalizedCoordinates
- }
- 
--class VkCmdPoolCreateInfo {
--    VkStructureType                             sType            /// Must be VK_STRUCTURE_TYPE_CMD_POOL_CREATE_INFO
-+class VkCommandPoolCreateInfo {
-+    VkStructureType                             sType            /// Must be VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO
-     const void*                                 pNext            /// Pointer to next structure
--    VkCmdPoolCreateFlags                        flags            /// Command pool creation flags
-+    VkCommandPoolCreateFlags                    flags            /// Command pool creation flags
-     u32                                         queueFamilyIndex
- }
- 
--class VkCmdBufferAllocInfo {
--    VkStructureType                             sType      /// Must be VK_STRUCTURE_TYPE_CMD_BUFFER_ALLOC_INFO
-+class VkCommandBufferAllocateInfo {
-+    VkStructureType                             sType      /// Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOC_INFO
-     const void*                                 pNext      /// Pointer to next structure
--    VkCmdPool                                   cmdPool
--    VkCmdBufferLevel                            level
-+    VkCommandPool                               commandPool
-+    VkCommandBufferLevel                        level
-     u32                                         bufferCount
- }
- 
--class VkCmdBufferBeginInfo {
--    VkStructureType                             sType       /// Must be VK_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO
-+class VkCommandBufferBeginInfo {
-+    VkStructureType                             sType       /// Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO
-     const void*                                 pNext       /// Pointer to next structure
--    VkCmdBufferUsageFlags                       flags       /// Command buffer usage flags
-+    VkCommandBufferUsageFlags                   flags       /// Command buffer usage flags
-     VkRenderPass                                renderPass  /// Render pass for secondary command buffers
-     u32                                         subpass
-     VkFramebuffer                               framebuffer /// Framebuffer for secondary command buffers
-@@ -2014,9 +2013,9 @@ class VkSubpassDescription {
- 
- class VkSubpassDependency {
-     u32                                         srcSubpass
--    u32                                         destSubpass
-+    u32                                         dstSubpass
-     VkPipelineStageFlags                        srcStageMask
--    VkPipelineStageFlags                        destStageMask
-+    VkPipelineStageFlags                        dstStageMask
-     VkMemoryOutputFlags                         outputMask
-     VkMemoryInputFlags                          inputMask
-     VkDependencyFlags                           dependencyFlags
-@@ -2054,7 +2053,7 @@ class VkPhysicalDeviceFeatures {
-     VkBool32                                    geometryShader                            /// geometry stage
-     VkBool32                                    tessellationShader                        /// tessellation control and evaluation stage
-     VkBool32                                    sampleRateShading                         /// per-sample shading and interpolation
--    VkBool32                                    dualSourceBlend                           /// blend operations which take two sources
-+    VkBool32                                    dualSrcBlend                              /// blend operations which take two sources
-     VkBool32                                    logicOp                                   /// logic operations
-     VkBool32                                    multiDrawIndirect                         /// multi draw indirect
-     VkBool32                                    depthClamp                                /// depth clamping
-@@ -2136,7 +2135,7 @@ class VkPhysicalDeviceLimits {
-     u32                                         maxVertexInputBindingStride               /// max vertex input binding stride
-     u32                                         maxVertexOutputComponents                 /// max num of output components written by vertex shader
-     /// tessellation control stage limits
--    u32                                         maxTessellationGenLevel                         /// max level supported by tess primitive generator
-+    u32                                         maxTessellationGenerationLevel                  /// max level supported by tess primitive generator
-     u32                                         maxTessellationPatchSize                        /// max patch size (vertices)
-     u32                                         maxTessellationControlPerVertexInputComponents  /// max num of input components per-vertex in TCS
-     u32                                         maxTessellationControlPerVertexOutputComponents /// max num of output components per-vertex in TCS
-@@ -2153,7 +2152,7 @@ class VkPhysicalDeviceLimits {
-     /// fragment stage limits
-     u32                                         maxFragmentInputComponents                /// max num of input compontents read in fragment stage
-     u32                                         maxFragmentOutputAttachments              /// max num of output attachments written in fragment stage
--    u32                                         maxFragmentDualSourceAttachments          /// max num of output attachments written when using dual source blending
-+    u32                                         maxFragmentDualSrcAttachments             /// max num of output attachments written when using dual source blending
-     u32                                         maxFragmentCombinedOutputResources        /// max total num of storage buffers, storage images and output buffers
-     /// compute stage limits
-     u32                                         maxComputeSharedMemorySize                /// max total storage size of work group local storage (bytes)
-@@ -2258,14 +2257,14 @@ class VkFramebufferCreateInfo {
-     u32                                         layers
- }
- 
--class VkDrawIndirectCmd {
-+class VkDrawIndirectCommand {
-     u32                                         vertexCount
-     u32                                         instanceCount
-     u32                                         firstVertex
-     u32                                         firstInstance
- }
- 
--class VkDrawIndexedIndirectCmd {
-+class VkDrawIndexedIndirectCommand {
-     u32                                         indexCount
-     u32                                         instanceCount
-     u32                                         firstIndex
-@@ -2273,7 +2272,7 @@ class VkDrawIndexedIndirectCmd {
-     u32                                         firstInstance
- }
- 
--class VkDispatchIndirectCmd {
-+class VkDispatchIndirectCommand {
-     u32                                         x
-     u32                                         y
-     u32                                         z
-@@ -2420,45 +2419,45 @@ class VkDisplayPresentInfoKHR {
- @pfn cmd void vkVoidFunction() {
- }
- 
--@external type void* PFN_vkAllocFunction
--@pfn cmd void* vkAllocFunction(
-+@external type void* PFN_vkAllocationFunction
-+@pfn cmd void* vkAllocationFunction(
-         void*                                       pUserData,
-         platform.size_t                             size,
-         platform.size_t                             alignment,
--        VkSystemAllocScope                          allocScope) {
-+        VkSystemAllocationScope                     allocationScope) {
-     return ?
- }
- 
--@external type void* PFN_vkReallocFunction
--@pfn cmd void* vkReallocFunction(
-+@external type void* PFN_vkReallocationFunction
-+@pfn cmd void* vkReallocationFunction(
-         void*                                       pUserData,
-         void*                                       pOriginal,
-         platform.size_t                             size,
-         platform.size_t                             alignment,
--        VkSystemAllocScope                          allocScope) {
-+        VkSystemAllocationScope                     allocationScope) {
-     return ?
- }
- 
- @external type void* PFN_vkFreeFunction
- @pfn cmd void vkFreeFunction(
-         void*                                       pUserData,
--        void*                                       pMem) {
-+        void*                                       pMemory) {
- }
- 
--@external type void* PFN_vkInternalAllocNotification
--@pfn cmd void vkInternalAllocNotification(
-+@external type void* PFN_vkInternalAllocationNotification
-+@pfn cmd void vkInternalAllocationNotification(
-         void*                                       pUserData,
-         platform.size_t                             size,
--        VkInternalAllocType                         allocType,
--        VkSystemAllocScope                          allocScope) {
-+        VkInternalAllocationType                    allocationType,
-+        VkSystemAllocationScope                     allocationScope) {
- }
- 
- @external type void* PFN_vkInternalFreeNotification
- @pfn cmd void vkInternalFreeNotification(
-         void*                                       pUserData,
-         platform.size_t                             size,
--        VkInternalAllocType                         allocType,
--        VkSystemAllocScope                          allocScope) {
-+        VkInternalAllocationType                    allocationType,
-+        VkSystemAllocationScope                     allocationScope) {
- }
- 
- // Global functions
-@@ -2466,7 +2465,7 @@ class VkDisplayPresentInfoKHR {
- @threadSafety("system")
- cmd VkResult vkCreateInstance(
-         const VkInstanceCreateInfo*                 pCreateInfo,
--        const VkAllocCallbacks*                     pAllocator,
-+        const VkAllocationCallbacks*                pAllocator,
-         VkInstance*                                 pInstance) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO)
- 
-@@ -2483,7 +2482,7 @@ cmd VkResult vkCreateInstance(
- @threadSafety("system")
- cmd void vkDestroyInstance(
-         VkInstance                                  instance,
--        const VkAllocCallbacks*                     pAllocator) {
-+        const VkAllocationCallbacks*                pAllocator) {
-     instanceObject := GetInstance(instance)
- 
-     State.Instances[instance] = null
-@@ -2610,7 +2609,7 @@ cmd void vkGetPhysicalDeviceImageFormatProperties(
- cmd VkResult vkCreateDevice(
-         VkPhysicalDevice                            physicalDevice,
-         const VkDeviceCreateInfo*                   pCreateInfo,
--        const VkAllocCallbacks*                     pAllocator,
-+        const VkAllocationCallbacks*                pAllocator,
-         VkDevice*                                   pDevice) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO)
-     physicalDeviceObject := GetPhysicalDevice(physicalDevice)
-@@ -2625,7 +2624,7 @@ cmd VkResult vkCreateDevice(
- @threadSafety("system")
- cmd void vkDestroyDevice(
-         VkDevice                                    device,
--        const VkAllocCallbacks*                     pAllocator) {
-+        const VkAllocationCallbacks*                pAllocator) {
-     deviceObject := GetDevice(device)
- 
-     State.Devices[device] = null
-@@ -2733,14 +2732,14 @@ cmd VkResult vkQueueSubmit(
-         assert(fenceObject.device == queueObject.device)
-     }
- 
--    // cmdBuffers := pCmdBuffers[0:cmdBufferCount]
--    // for i in (0 .. cmdBufferCount) {
--    //    cmdBuffer := cmdBuffers[i]
--    //    cmdBufferObject := GetCmdBuffer(cmdBuffer)
--    //    assert(cmdBufferObject.device == queueObject.device)
-+    // commandBuffers := pcommandBuffers[0:commandBufferCount]
-+    // for i in (0 .. commandBufferCount) {
-+    //    commandBuffer := commandBuffers[i]
-+    //    commandBufferObject := GetCommandBuffer(commandBuffer)
-+    //    assert(commandBufferObject.device == queueObject.device)
-     //
--    //    validate("QueueCheck", cmdBufferObject.queueFlags in queueObject.flags,
--    //        "vkQueueSubmit: enqueued cmdBuffer requires missing queue capabilities.")
-+    //    validate("QueueCheck", commandBufferObject.queueFlags in queueObject.flags,
-+    //        "vkQueueSubmit: enqueued commandBuffer requires missing queue capabilities.")
-     // }
- 
-     return ?
-@@ -2766,19 +2765,19 @@ cmd VkResult vkDeviceWaitIdle(
- // Memory functions
- 
- @threadSafety("system")
--cmd VkResult vkAllocMemory(
-+cmd VkResult vkAllocateMemory(
-         VkDevice                                    device,
--        const VkMemoryAllocInfo*                    pAllocInfo,
--        const VkAllocCallbacks*                     pAllocator,
--        VkDeviceMemory*                             pMem) {
--    assert(pAllocInfo.sType == VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO)
-+        const VkMemoryAllocateInfo*                 pAllocateInfo,
-+        const VkAllocationCallbacks*                pAllocator,
-+        VkDeviceMemory*                             pMemory) {
-+    assert(pAllocateInfo.sType == VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO)
-     deviceObject := GetDevice(device)
- 
--    mem := ?
--    pMem[0] = mem
--    State.DeviceMemories[mem] = new!DeviceMemoryObject(
-+    memory := ?
-+    pMemory[0] = memory
-+    State.DeviceMemories[memory] = new!DeviceMemoryObject(
-         device: device,
--        allocationSize: pAllocInfo[0].allocationSize)
-+        allocationSize: pAllocateInfo[0].allocationSize)
- 
-     return ?
- }
-@@ -2786,34 +2785,34 @@ cmd VkResult vkAllocMemory(
- @threadSafety("system")
- cmd void vkFreeMemory(
-         VkDevice                                    device,
--        VkDeviceMemory                              mem,
--        const VkAllocCallbacks*                     pAllocator) {
-+        VkDeviceMemory                              memory,
-+        const VkAllocationCallbacks*                pAllocator) {
-     deviceObject := GetDevice(device)
--    memObject := GetDeviceMemory(mem)
--    assert(memObject.device == device)
-+    memoryObject := GetDeviceMemory(memory)
-+    assert(memoryObject.device == device)
- 
-     // Check that no objects are still bound before freeing.
--    validate("MemoryCheck", len(memObject.boundObjects) == 0,
-+    validate("MemoryCheck", len(memoryObject.boundObjects) == 0,
-         "vkFreeMemory: objects still bound")
--    validate("MemoryCheck", len(memObject.boundCommandBuffers) == 0,
--        "vkFreeMemory: cmdBuffers still bound")
--    State.DeviceMemories[mem] = null
-+    validate("MemoryCheck", len(memoryObject.boundCommandBuffers) == 0,
-+        "vkFreeMemory: commandBuffers still bound")
-+    State.DeviceMemories[memory] = null
- }
- 
- @threadSafety("app")
- cmd VkResult vkMapMemory(
-         VkDevice                                    device,
--        VkDeviceMemory                              mem,
-+        VkDeviceMemory                              memory,
-         VkDeviceSize                                offset,
-         VkDeviceSize                                size,
-         VkMemoryMapFlags                            flags,
-         void**                                      ppData) {
-     deviceObject := GetDevice(device)
--    memObject := GetDeviceMemory(mem)
--    assert(memObject.device == device)
-+    memoryObject := GetDeviceMemory(memory)
-+    assert(memoryObject.device == device)
- 
-     assert(flags == as!VkMemoryMapFlags(0))
--    assert((offset + size) <= memObject.allocationSize)
-+    assert((offset + size) <= memoryObject.allocationSize)
- 
-     return ?
- }
-@@ -2821,24 +2820,24 @@ cmd VkResult vkMapMemory(
- @threadSafety("app")
- cmd void vkUnmapMemory(
-         VkDevice                                    device,
--        VkDeviceMemory                              mem) {
-+        VkDeviceMemory                              memory) {
-     deviceObject := GetDevice(device)
--    memObject := GetDeviceMemory(mem)
--    assert(memObject.device == device)
-+    memoryObject := GetDeviceMemory(memory)
-+    assert(memoryObject.device == device)
- }
- 
- cmd VkResult vkFlushMappedMemoryRanges(
-         VkDevice                                    device,
--        u32                                         memRangeCount
--        const VkMappedMemoryRange*                  pMemRanges) {
-+        u32                                         memoryRangeCount
-+        const VkMappedMemoryRange*                  pMemoryRanges) {
-     deviceObject := GetDevice(device)
- 
--    memRanges := pMemRanges[0:memRangeCount]
--    for i in (0 .. memRangeCount) {
--        memRange := memRanges[i]
--        memObject := GetDeviceMemory(memRange.mem)
--        assert(memObject.device == device)
--        assert((memRange.offset + memRange.size) <= memObject.allocationSize)
-+    memoryRanges := pMemoryRanges[0:memoryRangeCount]
-+    for i in (0 .. memoryRangeCount) {
-+        memoryRange := memoryRanges[i]
-+        memoryObject := GetDeviceMemory(memoryRange.memory)
-+        assert(memoryObject.device == device)
-+        assert((memoryRange.offset + memoryRange.size) <= memoryObject.allocationSize)
-     }
- 
-     return ?
-@@ -2846,16 +2845,16 @@ cmd VkResult vkFlushMappedMemoryRanges(
- 
- cmd VkResult vkInvalidateMappedMemoryRanges(
-         VkDevice                                    device,
--        u32                                         memRangeCount,
--        const VkMappedMemoryRange*                  pMemRanges) {
-+        u32                                         memoryRangeCount,
-+        const VkMappedMemoryRange*                  pMemoryRanges) {
-     deviceObject := GetDevice(device)
- 
--    memRanges := pMemRanges[0:memRangeCount]
--    for i in (0 .. memRangeCount) {
--        memRange := memRanges[i]
--        memObject := GetDeviceMemory(memRange.mem)
--        assert(memObject.device == device)
--        assert((memRange.offset + memRange.size) <= memObject.allocationSize)
-+    memoryRanges := pMemoryRanges[0:memoryRangeCount]
-+    for i in (0 .. memoryRangeCount) {
-+        memoryRange := memoryRanges[i]
-+        memoryObject := GetDeviceMemory(memoryRange.memory)
-+        assert(memoryObject.device == device)
-+        assert((memoryRange.offset + memoryRange.size) <= memoryObject.allocationSize)
-     }
- 
-     return ?
-@@ -2891,26 +2890,26 @@ cmd void vkGetBufferMemoryRequirements(
- cmd VkResult vkBindBufferMemory(
-         VkDevice                                    device,
-         VkBuffer                                    buffer,
--        VkDeviceMemory                              mem,
--        VkDeviceSize                                memOffset) {
-+        VkDeviceMemory                              memory,
-+        VkDeviceSize                                memoryOffset) {
-     deviceObject := GetDevice(device)
-     bufferObject := GetBuffer(buffer)
-     assert(bufferObject.device == device)
- 
-     // Unbind buffer from previous memory object, if not VK_NULL_HANDLE.
--    if bufferObject.mem != NULL_HANDLE {
--        memObject := GetDeviceMemory(bufferObject.mem)
--        memObject.boundObjects[as!u64(buffer)] = null
-+    if bufferObject.memory != NULL_HANDLE {
-+        memoryObject := GetDeviceMemory(bufferObject.memory)
-+        memoryObject.boundObjects[as!u64(buffer)] = null
-     }
- 
-     // Bind buffer to given memory object, if not VK_NULL_HANDLE.
--    if mem != NULL_HANDLE {
--        memObject := GetDeviceMemory(mem)
--        assert(memObject.device == device)
--        memObject.boundObjects[as!u64(buffer)] = memOffset
-+    if memory != NULL_HANDLE {
-+        memoryObject := GetDeviceMemory(memory)
-+        assert(memoryObject.device == device)
-+        memoryObject.boundObjects[as!u64(buffer)] = memoryOffset
-     }
--    bufferObject.mem = mem
--    bufferObject.memOffset = memOffset
-+    bufferObject.memory = memory
-+    bufferObject.memoryOffset = memoryOffset
- 
-     return ?
- }
-@@ -2927,26 +2926,26 @@ cmd void vkGetImageMemoryRequirements(
- cmd VkResult vkBindImageMemory(
-         VkDevice                                    device,
-         VkImage                                     image,
--        VkDeviceMemory                              mem,
--        VkDeviceSize                                memOffset) {
-+        VkDeviceMemory                              memory,
-+        VkDeviceSize                                memoryOffset) {
-     deviceObject := GetDevice(device)
-     imageObject := GetImage(image)
-     assert(imageObject.device == device)
- 
-     // Unbind image from previous memory object, if not VK_NULL_HANDLE.
--    if imageObject.mem != NULL_HANDLE {
--        memObject := GetDeviceMemory(imageObject.mem)
--        memObject.boundObjects[as!u64(image)] = null
-+    if imageObject.memory != NULL_HANDLE {
-+        memoryObject := GetDeviceMemory(imageObject.memory)
-+        memoryObject.boundObjects[as!u64(image)] = null
-     }
- 
-     // Bind image to given memory object, if not VK_NULL_HANDLE.
--    if mem != NULL_HANDLE {
--        memObject := GetDeviceMemory(mem)
--        assert(memObject.device == device)
--        memObject.boundObjects[as!u64(image)] = memOffset
-+    if memory != NULL_HANDLE {
-+        memoryObject := GetDeviceMemory(memory)
-+        assert(memoryObject.device == device)
-+        memoryObject.boundObjects[as!u64(image)] = memoryOffset
-     }
--    imageObject.mem = mem
--    imageObject.memOffset = memOffset
-+    imageObject.memory = memory
-+    imageObject.memoryOffset = memoryOffset
- 
-     return ?
- }
-@@ -2990,7 +2989,7 @@ cmd VkResult vkQueueBindSparse(
- cmd VkResult vkCreateFence(
-         VkDevice                                    device,
-         const VkFenceCreateInfo*                    pCreateInfo,
--        const VkAllocCallbacks*                     pAllocator,
-+        const VkAllocationCallbacks*                pAllocator,
-         VkFence*                                    pFence) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_FENCE_CREATE_INFO)
-     deviceObject := GetDevice(device)
-@@ -3007,7 +3006,7 @@ cmd VkResult vkCreateFence(
- cmd void vkDestroyFence(
-         VkDevice                                    device,
-         VkFence                                     fence,
--        const VkAllocCallbacks*                     pAllocator) {
-+        const VkAllocationCallbacks*                pAllocator) {
-     deviceObject := GetDevice(device)
-     fenceObject := GetFence(fence)
-     assert(fenceObject.device == device)
-@@ -3070,7 +3069,7 @@ cmd VkResult vkWaitForFences(
- cmd VkResult vkCreateSemaphore(
-         VkDevice                                    device,
-         const VkSemaphoreCreateInfo*                pCreateInfo,
--        const VkAllocCallbacks*                     pAllocator,
-+        const VkAllocationCallbacks*                pAllocator,
-         VkSemaphore*                                pSemaphore) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO)
-     deviceObject := GetDevice(device)
-@@ -3086,7 +3085,7 @@ cmd VkResult vkCreateSemaphore(
- cmd void vkDestroySemaphore(
-         VkDevice                                    device,
-         VkSemaphore                                 semaphore,
--        const VkAllocCallbacks*                     pAllocator) {
-+        const VkAllocationCallbacks*                pAllocator) {
-     deviceObject := GetDevice(device)
-     semaphoreObject := GetSemaphore(semaphore)
-     assert(semaphoreObject.device == device)
-@@ -3101,7 +3100,7 @@ cmd void vkDestroySemaphore(
- cmd VkResult vkCreateEvent(
-         VkDevice                                    device,
-         const VkEventCreateInfo*                    pCreateInfo,
--        const VkAllocCallbacks*                     pAllocator,
-+        const VkAllocationCallbacks*                pAllocator,
-         VkEvent*                                    pEvent) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_EVENT_CREATE_INFO)
-     deviceObject := GetDevice(device)
-@@ -3117,7 +3116,7 @@ cmd VkResult vkCreateEvent(
- cmd void vkDestroyEvent(
-         VkDevice                                    device,
-         VkEvent                                     event,
--        const VkAllocCallbacks*                     pAllocator) {
-+        const VkAllocationCallbacks*                pAllocator) {
-     deviceObject := GetDevice(device)
-     eventObject := GetEvent(event)
-     assert(eventObject.device == device)
-@@ -3165,7 +3164,7 @@ cmd VkResult vkResetEvent(
- cmd VkResult vkCreateQueryPool(
-         VkDevice                                    device,
-         const VkQueryPoolCreateInfo*                pCreateInfo,
--        const VkAllocCallbacks*                     pAllocator,
-+        const VkAllocationCallbacks*                pAllocator,
-         VkQueryPool*                                pQueryPool) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO)
-     deviceObject := GetDevice(device)
-@@ -3181,7 +3180,7 @@ cmd VkResult vkCreateQueryPool(
- cmd void vkDestroyQueryPool(
-         VkDevice                                    device,
-         VkQueryPool                                 queryPool,
--        const VkAllocCallbacks*                     pAllocator) {
-+        const VkAllocationCallbacks*                pAllocator) {
-     deviceObject := GetDevice(device)
-     queryPoolObject := GetQueryPool(queryPool)
-     assert(queryPoolObject.device == device)
-@@ -3214,7 +3213,7 @@ cmd VkResult vkGetQueryPoolResults(
- cmd VkResult vkCreateBuffer(
-         VkDevice                                    device,
-         const VkBufferCreateInfo*                   pCreateInfo,
--        const VkAllocCallbacks*                     pAllocator,
-+        const VkAllocationCallbacks*                pAllocator,
-         VkBuffer*                                   pBuffer) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO)
-     deviceObject := GetDevice(device)
-@@ -3230,12 +3229,12 @@ cmd VkResult vkCreateBuffer(
- cmd void vkDestroyBuffer(
-         VkDevice                                    device,
-         VkBuffer                                    buffer,
--        const VkAllocCallbacks*                     pAllocator) {
-+        const VkAllocationCallbacks*                pAllocator) {
-     deviceObject := GetDevice(device)
-     bufferObject := GetBuffer(buffer)
-     assert(bufferObject.device == device)
- 
--    assert(bufferObject.mem == 0)
-+    assert(bufferObject.memory == 0)
-     State.Buffers[buffer] = null
- }
- 
-@@ -3246,7 +3245,7 @@ cmd void vkDestroyBuffer(
- cmd VkResult vkCreateBufferView(
-         VkDevice                                    device,
-         const VkBufferViewCreateInfo*               pCreateInfo,
--        const VkAllocCallbacks*                     pAllocator,
-+        const VkAllocationCallbacks*                pAllocator,
-         VkBufferView*                               pView) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO)
-     deviceObject := GetDevice(device)
-@@ -3265,7 +3264,7 @@ cmd VkResult vkCreateBufferView(
- cmd void vkDestroyBufferView(
-         VkDevice                                    device,
-         VkBufferView                                bufferView,
--        const VkAllocCallbacks*                     pAllocator) {
-+        const VkAllocationCallbacks*                pAllocator) {
-     deviceObject := GetDevice(device)
-     bufferViewObject := GetBufferView(bufferView)
-     assert(bufferViewObject.device == device)
-@@ -3280,7 +3279,7 @@ cmd void vkDestroyBufferView(
- cmd VkResult vkCreateImage(
-         VkDevice                                    device,
-         const VkImageCreateInfo*                    pCreateInfo,
--        const VkAllocCallbacks*                     pAllocator,
-+        const VkAllocationCallbacks*                pAllocator,
-         VkImage*                                    pImage) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO)
-     deviceObject := GetDevice(device)
-@@ -3296,12 +3295,12 @@ cmd VkResult vkCreateImage(
- cmd void vkDestroyImage(
-         VkDevice                                    device,
-         VkImage                                     image,
--        const VkAllocCallbacks*                     pAllocator) {
-+        const VkAllocationCallbacks*                pAllocator) {
-     deviceObject := GetDevice(device)
-     imageObject := GetImage(image)
-     assert(imageObject.device == device)
- 
--    assert(imageObject.mem == 0)
-+    assert(imageObject.memory == 0)
-     State.Images[image] = null
- }
- 
-@@ -3322,7 +3321,7 @@ cmd void vkGetImageSubresourceLayout(
- cmd VkResult vkCreateImageView(
-         VkDevice                                    device,
-         const VkImageViewCreateInfo*                pCreateInfo,
--        const VkAllocCallbacks*                     pAllocator,
-+        const VkAllocationCallbacks*                pAllocator,
-         VkImageView*                                pView) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO)
-     deviceObject := GetDevice(device)
-@@ -3341,7 +3340,7 @@ cmd VkResult vkCreateImageView(
- cmd void vkDestroyImageView(
-         VkDevice                                    device,
-         VkImageView                                 imageView,
--        const VkAllocCallbacks*                     pAllocator) {
-+        const VkAllocationCallbacks*                pAllocator) {
-     deviceObject := GetDevice(device)
-     imageViewObject := GetImageView(imageView)
-     assert(imageViewObject.device == device)
-@@ -3355,7 +3354,7 @@ cmd void vkDestroyImageView(
- cmd VkResult vkCreateShaderModule(
-         VkDevice                                    device,
-         const VkShaderModuleCreateInfo*             pCreateInfo,
--        const VkAllocCallbacks*                     pAllocator,
-+        const VkAllocationCallbacks*                pAllocator,
-         VkShaderModule*                             pShaderModule) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO)
-     deviceObject := GetDevice(device)
-@@ -3370,7 +3369,7 @@ cmd VkResult vkCreateShaderModule(
- cmd void vkDestroyShaderModule(
-         VkDevice                                    device,
-         VkShaderModule                              shaderModule,
--        const VkAllocCallbacks*                     pAllocator) {
-+        const VkAllocationCallbacks*                pAllocator) {
-     deviceObject := GetDevice(device)
-     shaderModuleObject := GetShaderModule(shaderModule)
-     assert(shaderModuleObject.device == device)
-@@ -3382,7 +3381,7 @@ cmd void vkDestroyShaderModule(
- cmd VkResult vkCreateShader(
-         VkDevice                                    device,
-         const VkShaderCreateInfo*                   pCreateInfo,
--        const VkAllocCallbacks*                     pAllocator,
-+        const VkAllocationCallbacks*                pAllocator,
-         VkShader*                                   pShader) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SHADER_CREATE_INFO)
-     deviceObject := GetDevice(device)
-@@ -3398,7 +3397,7 @@ cmd VkResult vkCreateShader(
- cmd void vkDestroyShader(
-         VkDevice                                    device,
-         VkShader                                    shader,
--        const VkAllocCallbacks*                     pAllocator) {
-+        const VkAllocationCallbacks*                pAllocator) {
-     deviceObject := GetDevice(device)
-     shaderObject := GetShader(shader)
-     assert(shaderObject.device == device)
-@@ -3412,7 +3411,7 @@ cmd void vkDestroyShader(
- cmd VkResult vkCreatePipelineCache(
-         VkDevice                                    device,
-         const VkPipelineCacheCreateInfo*            pCreateInfo,
--        const VkAllocCallbacks*                     pAllocator,
-+        const VkAllocationCallbacks*                pAllocator,
-         VkPipelineCache*                            pPipelineCache) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO)
-     deviceObject := GetDevice(device)
-@@ -3427,7 +3426,7 @@ cmd VkResult vkCreatePipelineCache(
- cmd void vkDestroyPipelineCache(
-         VkDevice                                    device,
-         VkPipelineCache                             pipelineCache,
--        const VkAllocCallbacks*                     pAllocator) {
-+        const VkAllocationCallbacks*                pAllocator) {
-     deviceObject := GetDevice(device)
-     pipelineCacheObject := GetPipelineCache(pipelineCache)
-     assert(pipelineCacheObject.device == device)
-@@ -3449,12 +3448,12 @@ cmd VkResult vkGetPipelineCacheData(
- 
- cmd VkResult vkMergePipelineCaches(
-         VkDevice                                    device,
--        VkPipelineCache                             destCache,
-+        VkPipelineCache                             dstCache,
-         u32                                         srcCacheCount,
-         const VkPipelineCache*                      pSrcCaches) {
-     deviceObject := GetDevice(device)
--    destCacheObject := GetPipelineCache(destCache)
--    assert(destCacheObject.device == device)
-+    dstCacheObject := GetPipelineCache(dstCache)
-+    assert(dstCacheObject.device == device)
- 
-     srcCaches := pSrcCaches[0:srcCacheCount]
-     for i in (0 .. srcCacheCount) {
-@@ -3471,7 +3470,7 @@ cmd VkResult vkCreateGraphicsPipelines(
-         VkPipelineCache                             pipelineCache,
-         u32                                         createInfoCount,
-         const VkGraphicsPipelineCreateInfo*         pCreateInfos,
--        const VkAllocCallbacks*                     pAllocator,
-+        const VkAllocationCallbacks*                pAllocator,
-         VkPipeline*                                 pPipelines) {
-     deviceObject := GetDevice(device)
-     if pipelineCache != NULL_HANDLE {
-@@ -3495,7 +3494,7 @@ cmd VkResult vkCreateComputePipelines(
-         VkPipelineCache                             pipelineCache,
-         u32                                         createInfoCount,
-         const VkComputePipelineCreateInfo*          pCreateInfos,
--        const VkAllocCallbacks*                     pAllocator,
-+        const VkAllocationCallbacks*                pAllocator,
-         VkPipeline*                                 pPipelines) {
-     deviceObject := GetDevice(device)
-     if pipelineCache != NULL_HANDLE {
-@@ -3518,7 +3517,7 @@ cmd VkResult vkCreateComputePipelines(
- cmd void vkDestroyPipeline(
-         VkDevice                                    device,
-         VkPipeline                                  pipeline,
--        const VkAllocCallbacks*                     pAllocator) {
-+        const VkAllocationCallbacks*                pAllocator) {
-     deviceObject := GetDevice(device)
-     pipelineObjects := GetPipeline(pipeline)
-     assert(pipelineObjects.device == device)
-@@ -3533,7 +3532,7 @@ cmd void vkDestroyPipeline(
- cmd VkResult vkCreatePipelineLayout(
-         VkDevice                                    device,
-         const VkPipelineLayoutCreateInfo*           pCreateInfo,
--        const VkAllocCallbacks*                     pAllocator,
-+        const VkAllocationCallbacks*                pAllocator,
-         VkPipelineLayout*                           pPipelineLayout) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO)
-     deviceObject := GetDevice(device)
-@@ -3549,7 +3548,7 @@ cmd VkResult vkCreatePipelineLayout(
- cmd void vkDestroyPipelineLayout(
-         VkDevice                                    device,
-         VkPipelineLayout                            pipelineLayout,
--        const VkAllocCallbacks*                     pAllocator) {
-+        const VkAllocationCallbacks*                pAllocator) {
-     deviceObject := GetDevice(device)
-     pipelineLayoutObjects := GetPipelineLayout(pipelineLayout)
-     assert(pipelineLayoutObjects.device == device)
-@@ -3564,7 +3563,7 @@ cmd void vkDestroyPipelineLayout(
- cmd VkResult vkCreateSampler(
-         VkDevice                                    device,
-         const VkSamplerCreateInfo*                  pCreateInfo,
--        const VkAllocCallbacks*                     pAllocator,
-+        const VkAllocationCallbacks*                pAllocator,
-         VkSampler*                                  pSampler) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO)
-     deviceObject := GetDevice(device)
-@@ -3580,7 +3579,7 @@ cmd VkResult vkCreateSampler(
- cmd void vkDestroySampler(
-         VkDevice                                    device,
-         VkSampler                                   sampler,
--        const VkAllocCallbacks*                     pAllocator) {
-+        const VkAllocationCallbacks*                pAllocator) {
-     deviceObject := GetDevice(device)
-     samplerObject := GetSampler(sampler)
-     assert(samplerObject.device == device)
-@@ -3595,7 +3594,7 @@ cmd void vkDestroySampler(
- cmd VkResult vkCreateDescriptorSetLayout(
-         VkDevice                                    device,
-         const VkDescriptorSetLayoutCreateInfo*      pCreateInfo,
--        const VkAllocCallbacks*                     pAllocator,
-+        const VkAllocationCallbacks*                pAllocator,
-         VkDescriptorSetLayout*                      pSetLayout) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO)
-     deviceObject := GetDevice(device)
-@@ -3611,7 +3610,7 @@ cmd VkResult vkCreateDescriptorSetLayout(
- cmd void vkDestroyDescriptorSetLayout(
-         VkDevice                                    device,
-         VkDescriptorSetLayout                       descriptorSetLayout,
--        const VkAllocCallbacks*                     pAllocator) {
-+        const VkAllocationCallbacks*                pAllocator) {
-     deviceObject := GetDevice(device)
-     descriptorSetLayoutObject := GetDescriptorSetLayout(descriptorSetLayout)
-     assert(descriptorSetLayoutObject.device == device)
-@@ -3623,7 +3622,7 @@ cmd void vkDestroyDescriptorSetLayout(
- cmd VkResult vkCreateDescriptorPool(
-         VkDevice                                    device,
-         const VkDescriptorPoolCreateInfo*           pCreateInfo,
--        const VkAllocCallbacks*                     pAllocator,
-+        const VkAllocationCallbacks*                pAllocator,
-         VkDescriptorPool*                           pDescriptorPool) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO)
-     deviceObject := GetDevice(device)
-@@ -3639,7 +3638,7 @@ cmd VkResult vkCreateDescriptorPool(
- cmd void vkDestroyDescriptorPool(
-         VkDevice                                    device,
-         VkDescriptorPool                            descriptorPool,
--        const VkAllocCallbacks*                     pAllocator) {
-+        const VkAllocationCallbacks*                pAllocator) {
-     deviceObject := GetDevice(device)
-     descriptorPoolObject := GetDescriptorPool(descriptorPool)
-     assert(descriptorPoolObject.device == device)
-@@ -3660,12 +3659,12 @@ cmd VkResult vkResetDescriptorPool(
- }
- 
- @threadSafety("app")
--cmd VkResult vkAllocDescriptorSets(
-+cmd VkResult vkAllocateDescriptorSets(
-         VkDevice                                    device,
--        const VkDescriptorSetAllocInfo*             pAllocInfo,
-+        const VkDescriptorSetAllocateInfo*          pAllocateInfo,
-         VkDescriptorSet*                            pDescriptorSets) {
-     deviceObject := GetDevice(device)
--    allocInfo := pAllocInfo[0]
-+    allocInfo := pAllocateInfo[0]
-     descriptorPoolObject := GetDescriptorPool(allocInfo.descriptorPool)
- 
-     setLayouts := allocInfo.pSetLayouts[0:allocInfo.setCount]
-@@ -3715,14 +3714,14 @@ cmd void vkUpdateDescriptorSets(
-     descriptorWrites := pDescriptorWrites[0:descriptorWriteCount]
-     for i in (0 .. descriptorWriteCount) {
-         descriptorWrite := descriptorWrites[i]
--        descriptorWriteObject := GetDescriptorSet(descriptorWrite.destSet)
-+        descriptorWriteObject := GetDescriptorSet(descriptorWrite.dstSet)
-         assert(descriptorWriteObject.device == device)
-     }
- 
-     descriptorCopies := pDescriptorCopies[0:descriptorCopyCount]
-     for i in (0 .. descriptorCopyCount) {
-         descriptorCopy := descriptorCopies[i]
--        descriptorCopyObject := GetDescriptorSet(descriptorCopy.destSet)
-+        descriptorCopyObject := GetDescriptorSet(descriptorCopy.dstSet)
-         assert(descriptorCopyObject.device == device)
-     }
- }
-@@ -3734,7 +3733,7 @@ cmd void vkUpdateDescriptorSets(
- cmd VkResult vkCreateFramebuffer(
-         VkDevice                                    device,
-         const VkFramebufferCreateInfo*              pCreateInfo,
--        const VkAllocCallbacks*                     pAllocator,
-+        const VkAllocationCallbacks*                pAllocator,
-         VkFramebuffer*                              pFramebuffer) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO)
-     deviceObject := GetDevice(device)
-@@ -3750,7 +3749,7 @@ cmd VkResult vkCreateFramebuffer(
- cmd void vkDestroyFramebuffer(
-         VkDevice                                    device,
-         VkFramebuffer                               framebuffer,
--        const VkAllocCallbacks*                     pAllocator) {
-+        const VkAllocationCallbacks*                pAllocator) {
-     deviceObject := GetDevice(device)
-     framebufferObject := GetFramebuffer(framebuffer)
-     assert(framebufferObject.device == device)
-@@ -3765,7 +3764,7 @@ cmd void vkDestroyFramebuffer(
- cmd VkResult vkCreateRenderPass(
-         VkDevice                                    device,
-         const VkRenderPassCreateInfo*               pCreateInfo,
--        const VkAllocCallbacks*                     pAllocator,
-+        const VkAllocationCallbacks*                pAllocator,
-         VkRenderPass*                               pRenderPass) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO)
-     deviceObject := GetDevice(device)
-@@ -3781,7 +3780,7 @@ cmd VkResult vkCreateRenderPass(
- cmd void vkDestroyRenderPass(
-         VkDevice                                    device,
-         VkRenderPass                                renderPass,
--        const VkAllocCallbacks*                     pAllocator) {
-+        const VkAllocationCallbacks*                pAllocator) {
-     deviceObject := GetDevice(device)
-     renderPassObject := GetRenderPass(renderPass)
-     assert(renderPassObject.device == device)
-@@ -3804,72 +3803,72 @@ cmd void vkGetRenderAreaGranularity(
- 
- cmd VkResult vkCreateCommandPool(
-         VkDevice                                    device,
--        const VkCmdPoolCreateInfo*                  pCreateInfo,
--        const VkAllocCallbacks*                     pAllocator,
--        VkCmdPool*                                  pCmdPool) {
--    assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_CMD_POOL_CREATE_INFO)
-+        const VkCommandPoolCreateInfo*              pCreateInfo,
-+        const VkAllocationCallbacks*                pAllocator,
-+        VkCommandPool*                              pCommandPool) {
-+    assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO)
-     deviceObject := GetDevice(device)
- 
--    cmdPool := ?
--    pCmdPool[0] = cmdPool
--    State.CmdPools[cmdPool] = new!CmdPoolObject(device: device)
-+    commandPool := ?
-+    pCommandPool[0] = commandPool
-+    State.CommandPools[commandPool] = new!CommandPoolObject(device: device)
- 
-     return ?
- }
- 
- cmd void vkDestroyCommandPool(
-         VkDevice                                    device,
--        VkCmdPool                                   cmdPool,
--        const VkAllocCallbacks*                     pAllocator) {
-+        VkCommandPool                               commandPool,
-+        const VkAllocationCallbacks*                pAllocator) {
-     deviceObject := GetDevice(device)
--    cmdPoolObject := GetCmdPool(cmdPool)
--    assert(cmdPoolObject.device == device)
-+    commandPoolObject := GetCommandPool(commandPool)
-+    assert(commandPoolObject.device == device)
- 
--    State.CmdPools[cmdPool] = null
-+    State.CommandPools[commandPool] = null
- }
- 
- cmd VkResult vkResetCommandPool(
-         VkDevice                                    device,
--        VkCmdPool                                   cmdPool,
--        VkCmdPoolResetFlags                         flags) {
-+        VkCommandPool                               commandPool,
-+        VkCommandPoolResetFlags                     flags) {
-     deviceObject := GetDevice(device)
--    cmdPoolObject := GetCmdPool(cmdPool)
--    assert(cmdPoolObject.device == device)
-+    commandPoolObject := GetCommandPool(commandPool)
-+    assert(commandPoolObject.device == device)
- 
-     return ?
- }
- 
- // Command buffer functions
- 
--macro void bindCmdBuffer(VkCmdBuffer cmdBuffer, any obj, VkDeviceMemory mem) {
--    memoryObject := GetDeviceMemory(mem)
--    memoryObject.boundCommandBuffers[cmdBuffer] = cmdBuffer
-+macro void bindCommandBuffer(VkCommandBuffer commandBuffer, any obj, VkDeviceMemory memory) {
-+    memoryObject := GetDeviceMemory(memory)
-+    memoryObject.boundCommandBuffers[commandBuffer] = commandBuffer
- 
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
--    cmdBufferObject.boundObjects[as!u64(obj)] = mem
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
-+    commandBufferObject.boundObjects[as!u64(obj)] = memory
- }
- 
--macro void unbindCmdBuffer(VkCmdBuffer cmdBuffer, any obj, VkDeviceMemory mem) {
--    memoryObject := GetDeviceMemory(mem)
--    memoryObject.boundCommandBuffers[cmdBuffer] = null
-+macro void unbindCommandBuffer(VkCommandBuffer commandBuffer, any obj, VkDeviceMemory memory) {
-+    memoryObject := GetDeviceMemory(memory)
-+    memoryObject.boundCommandBuffers[commandBuffer] = null
- 
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
--    cmdBufferObject.boundObjects[as!u64(obj)] = null
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
-+    commandBufferObject.boundObjects[as!u64(obj)] = null
- }
- 
- @threadSafety("system")
--cmd VkResult vkAllocCommandBuffers(
-+cmd VkResult vkAllocateCommandBuffers(
-         VkDevice                                    device,
--        const VkCmdBufferAllocInfo*                 pAllocInfo,
--        VkCmdBuffer*                                pCmdBuffers) {
--    assert(pAllocInfo[0].sType == VK_STRUCTURE_TYPE_CMD_BUFFER_ALLOC_INFO)
-+        const VkCommandBufferAllocateInfo*          pAllocateInfo,
-+        VkCommandBuffer*                            pCommandBuffers) {
-+    assert(pAllocateInfo[0].sType == VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOC_INFO)
- 
--    count := pAllocInfo[0].bufferCount
--    cmdBuffers := pCmdBuffers[0:count]
-+    count := pAllocateInfo[0].bufferCount
-+    commandBuffers := pCommandBuffers[0:count]
-     for i in (0 .. count) {
--        cmdBuffer := ?
--        cmdBuffers[i] = cmdBuffer
--        State.CmdBuffers[cmdBuffer] = new!CmdBufferObject(device: device)
-+        commandBuffer := ?
-+        commandBuffers[i] = commandBuffer
-+        State.CommandBuffers[commandBuffer] = new!CommandBufferObject(device: device)
-     }
- 
-     return ?
-@@ -3878,26 +3877,26 @@ cmd VkResult vkAllocCommandBuffers(
- @threadSafety("system")
- cmd void vkFreeCommandBuffers(
-         VkDevice                                    device,
--        VkCmdPool                                   cmdPool,
-+        VkCommandPool                               commandPool,
-         u32                                         commandBufferCount,
--        const VkCmdBuffer*                          pCommandBuffers) {
-+        const VkCommandBuffer*                      pCommandBuffers) {
-     deviceObject := GetDevice(device)
- 
--    cmdBuffers := pCommandBuffers[0:commandBufferCount]
-+    commandBuffers := pCommandBuffers[0:commandBufferCount]
-     for i in (0 .. commandBufferCount) {
--        cmdBufferObject := GetCmdBuffer(cmdBuffers[i])
--        assert(cmdBufferObject.device == device)
-+        commandBufferObject := GetCommandBuffer(commandBuffers[i])
-+        assert(commandBufferObject.device == device)
-         // TODO: iterate over boundObjects and clear memory bindings
--        State.CmdBuffers[cmdBuffers[i]] = null
-+        State.CommandBuffers[commandBuffers[i]] = null
-     }
- }
- 
- @threadSafety("app")
- cmd VkResult vkBeginCommandBuffer(
--        VkCmdBuffer                                 cmdBuffer,
--        const VkCmdBufferBeginInfo*                 pBeginInfo) {
--    assert(pBeginInfo.sType == VK_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO)
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
-+        VkCommandBuffer                             commandBuffer,
-+        const VkCommandBufferBeginInfo*             pBeginInfo) {
-+    assert(pBeginInfo.sType == VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
- 
-     // TODO: iterate over boundObjects and clear memory bindings
- 
-@@ -3906,17 +3905,17 @@ cmd VkResult vkBeginCommandBuffer(
- 
- @threadSafety("app")
- cmd VkResult vkEndCommandBuffer(
--        VkCmdBuffer                                 cmdBuffer) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
-+        VkCommandBuffer                             commandBuffer) {
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
- 
-     return ?
- }
- 
- @threadSafety("app")
- cmd VkResult vkResetCommandBuffer(
--        VkCmdBuffer                                 cmdBuffer,
--        VkCmdBufferResetFlags                       flags) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
-+        VkCommandBuffer                             commandBuffer,
-+        VkCommandBufferResetFlags                   flags) {
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
- 
-     // TODO: iterate over boundObjects and clear memory bindings
- 
-@@ -3928,106 +3927,106 @@ cmd VkResult vkResetCommandBuffer(
- 
- @threadSafety("app")
- cmd void vkCmdBindPipeline(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         VkPipelineBindPoint                         pipelineBindPoint,
-         VkPipeline                                  pipeline) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
-     pipelineObject := GetPipeline(pipeline)
--    assert(cmdBufferObject.device == pipelineObject.device)
-+    assert(commandBufferObject.device == pipelineObject.device)
- 
-     queue := switch (pipelineBindPoint) {
-         case VK_PIPELINE_BIND_POINT_COMPUTE:  VK_QUEUE_COMPUTE_BIT
-         case VK_PIPELINE_BIND_POINT_GRAPHICS: VK_QUEUE_GRAPHICS_BIT
-     }
--    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, queue)
-+    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, queue)
- }
- 
- @threadSafety("app")
- cmd void vkCmdSetViewport(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         u32                                         viewportCount,
-         const VkViewport*                           pViewports) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
--    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
-+    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
- cmd void vkCmdSetScissor(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         u32                                         scissorCount,
-         const VkRect2D*                             pScissors) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
--    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
-+    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
- cmd void vkCmdSetLineWidth(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         f32                                         lineWidth) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
--    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
-+    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
- cmd void vkCmdSetDepthBias(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         f32                                         depthBiasConstantFactor,
-         f32                                         depthBiasClamp,
-         f32                                         depthBiasSlopeFactor) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
--    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
-+    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
- cmd void vkCmdSetBlendConstants(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         // TODO(jessehall): apic only supports 'const' on pointer types. Using
-         // an annotation as a quick hack to pass this to the template without
-         // having to modify the AST and semantic model.
-         @readonly f32[4]                            blendConstants) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
--    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
-+    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
- cmd void vkCmdSetDepthBounds(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         f32                                         minDepthBounds,
-         f32                                         maxDepthBounds) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
--    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
-+    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
- cmd void vkCmdSetStencilCompareMask(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         VkStencilFaceFlags                          faceMask,
-         u32                                         stencilCompareMask) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
--    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
-+    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
- cmd void vkCmdSetStencilWriteMask(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         VkStencilFaceFlags                          faceMask,
-         u32                                         stencilWriteMask) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
--    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
-+    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
- cmd void vkCmdSetStencilReference(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         VkStencilFaceFlags                          faceMask,
-         u32                                         stencilReference) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
--    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
-+    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
- cmd void vkCmdBindDescriptorSets(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         VkPipelineBindPoint                         pipelineBindPoint,
-         VkPipelineLayout                            layout,
-         u32                                         firstSet,
-@@ -4035,13 +4034,13 @@ cmd void vkCmdBindDescriptorSets(
-         const VkDescriptorSet*                      pDescriptorSets,
-         u32                                         dynamicOffsetCount,
-         const u32*                                  pDynamicOffsets) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
- 
-     descriptorSets := pDescriptorSets[0:descriptorSetCount]
-     for i in (0 .. descriptorSetCount) {
-         descriptorSet := descriptorSets[i]
-         descriptorSetObject := GetDescriptorSet(descriptorSet)
--        assert(cmdBufferObject.device == descriptorSetObject.device)
-+        assert(commandBufferObject.device == descriptorSetObject.device)
-     }
- 
-     dynamicOffsets := pDynamicOffsets[0:dynamicOffsetCount]
-@@ -4053,32 +4052,32 @@ cmd void vkCmdBindDescriptorSets(
-         case VK_PIPELINE_BIND_POINT_COMPUTE:  VK_QUEUE_COMPUTE_BIT
-         case VK_PIPELINE_BIND_POINT_GRAPHICS: VK_QUEUE_GRAPHICS_BIT
-     }
--    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, queue)
-+    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, queue)
- }
- 
- @threadSafety("app")
- cmd void vkCmdBindIndexBuffer(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         VkBuffer                                    buffer,
-         VkDeviceSize                                offset,
-         VkIndexType                                 indexType) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
-     bufferObject := GetBuffer(buffer)
--    assert(cmdBufferObject.device == bufferObject.device)
-+    assert(commandBufferObject.device == bufferObject.device)
- 
--    bindCmdBuffer(cmdBuffer, buffer, bufferObject.mem)
-+    bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
- 
--    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
-+    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
- cmd void vkCmdBindVertexBuffers(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         u32                                         startBinding,
-         u32                                         bindingCount,
-         const VkBuffer*                             pBuffers,
-         const VkDeviceSize*                         pOffsets) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
- 
-     // TODO: check if not [startBinding:startBinding+bindingCount]
-     buffers := pBuffers[0:bindingCount]
-@@ -4087,395 +4086,395 @@ cmd void vkCmdBindVertexBuffers(
-         buffer := buffers[i]
-         offset := offsets[i]
-         bufferObject := GetBuffer(buffer)
--        assert(cmdBufferObject.device == bufferObject.device)
-+        assert(commandBufferObject.device == bufferObject.device)
- 
--        bindCmdBuffer(cmdBuffer, buffer, bufferObject.mem)
-+        bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
-     }
- 
--    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
-+    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
- cmd void vkCmdDraw(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         u32                                         vertexCount,
-         u32                                         instanceCount,
-         u32                                         firstVertex,
-         u32                                         firstInstance) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
- 
--    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
-+    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
- cmd void vkCmdDrawIndexed(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         u32                                         indexCount,
-         u32                                         instanceCount,
-         u32                                         firstIndex,
-         s32                                         vertexOffset,
-         u32                                         firstInstance) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
- 
--    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
-+    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
- cmd void vkCmdDrawIndirect(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         VkBuffer                                    buffer,
-         VkDeviceSize                                offset,
-         u32                                         drawCount,
-         u32                                         stride) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
-     bufferObject := GetBuffer(buffer)
--    assert(cmdBufferObject.device == bufferObject.device)
-+    assert(commandBufferObject.device == bufferObject.device)
- 
--    bindCmdBuffer(cmdBuffer, buffer, bufferObject.mem)
-+    bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
- 
--    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
-+    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
- cmd void vkCmdDrawIndexedIndirect(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         VkBuffer                                    buffer,
-         VkDeviceSize                                offset,
-         u32                                         drawCount,
-         u32                                         stride) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
-     bufferObject := GetBuffer(buffer)
--    assert(cmdBufferObject.device == bufferObject.device)
-+    assert(commandBufferObject.device == bufferObject.device)
- 
--    bindCmdBuffer(cmdBuffer, buffer, bufferObject.mem)
-+    bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
- 
--    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
-+    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
- cmd void vkCmdDispatch(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         u32                                         x,
-         u32                                         y,
-         u32                                         z) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
- 
--    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_COMPUTE_BIT)
-+    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_COMPUTE_BIT)
- }
- 
- @threadSafety("app")
- cmd void vkCmdDispatchIndirect(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         VkBuffer                                    buffer,
-         VkDeviceSize                                offset) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
-     bufferObject := GetBuffer(buffer)
--    assert(cmdBufferObject.device == bufferObject.device)
-+    assert(commandBufferObject.device == bufferObject.device)
- 
--    bindCmdBuffer(cmdBuffer, buffer, bufferObject.mem)
-+    bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
- 
--    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_COMPUTE_BIT)
-+    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_COMPUTE_BIT)
- }
- 
- @threadSafety("app")
- cmd void vkCmdCopyBuffer(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         VkBuffer                                    srcBuffer,
--        VkBuffer                                    destBuffer,
-+        VkBuffer                                    dstBuffer,
-         u32                                         regionCount,
-         const VkBufferCopy*                         pRegions) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
-     srcBufferObject := GetBuffer(srcBuffer)
--    destBufferObject := GetBuffer(destBuffer)
--    assert(cmdBufferObject.device == srcBufferObject.device)
--    assert(cmdBufferObject.device == destBufferObject.device)
-+    dstBufferObject := GetBuffer(dstBuffer)
-+    assert(commandBufferObject.device == srcBufferObject.device)
-+    assert(commandBufferObject.device == dstBufferObject.device)
- 
-     regions := pRegions[0:regionCount]
-     for i in (0 .. regionCount) {
-         region := regions[i]
-     }
- 
--    bindCmdBuffer(cmdBuffer, srcBuffer, srcBufferObject.mem)
--    bindCmdBuffer(cmdBuffer, destBuffer, destBufferObject.mem)
-+    bindCommandBuffer(commandBuffer, srcBuffer, srcBufferObject.memory)
-+    bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory)
- 
--    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_DMA_BIT)
-+    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_DMA_BIT)
- }
- 
- @threadSafety("app")
- cmd void vkCmdCopyImage(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         VkImage                                     srcImage,
-         VkImageLayout                               srcImageLayout,
--        VkImage                                     destImage,
--        VkImageLayout                               destImageLayout,
-+        VkImage                                     dstImage,
-+        VkImageLayout                               dstImageLayout,
-         u32                                         regionCount,
-         const VkImageCopy*                          pRegions) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
-     srcImageObject := GetImage(srcImage)
--    destImageObject := GetImage(destImage)
--    assert(cmdBufferObject.device == srcImageObject.device)
--    assert(cmdBufferObject.device == destImageObject.device)
-+    dstImageObject := GetImage(dstImage)
-+    assert(commandBufferObject.device == srcImageObject.device)
-+    assert(commandBufferObject.device == dstImageObject.device)
- 
-     regions := pRegions[0:regionCount]
-     for i in (0 .. regionCount) {
-         region := regions[i]
-     }
- 
--    bindCmdBuffer(cmdBuffer, srcImage, srcImageObject.mem)
--    bindCmdBuffer(cmdBuffer, destImage, destImageObject.mem)
-+    bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory)
-+    bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory)
- 
--    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_DMA_BIT)
-+    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_DMA_BIT)
- }
- 
- @threadSafety("app")
- cmd void vkCmdBlitImage(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         VkImage                                     srcImage,
-         VkImageLayout                               srcImageLayout,
--        VkImage                                     destImage,
--        VkImageLayout                               destImageLayout,
-+        VkImage                                     dstImage,
-+        VkImageLayout                               dstImageLayout,
-         u32                                         regionCount,
-         const VkImageBlit*                          pRegions,
-         VkFilter                                    filter) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
-     srcImageObject := GetImage(srcImage)
--    destImageObject := GetImage(destImage)
--    assert(cmdBufferObject.device == srcImageObject.device)
--    assert(cmdBufferObject.device == destImageObject.device)
-+    dstImageObject := GetImage(dstImage)
-+    assert(commandBufferObject.device == srcImageObject.device)
-+    assert(commandBufferObject.device == dstImageObject.device)
- 
-     regions := pRegions[0:regionCount]
-     for i in (0 .. regionCount) {
-         region := regions[i]
-     }
- 
--    bindCmdBuffer(cmdBuffer, srcImage, srcImageObject.mem)
--    bindCmdBuffer(cmdBuffer, destImage, destImageObject.mem)
-+    bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory)
-+    bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory)
- 
--    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
-+    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
- cmd void vkCmdCopyBufferToImage(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         VkBuffer                                    srcBuffer,
--        VkImage                                     destImage,
--        VkImageLayout                               destImageLayout,
-+        VkImage                                     dstImage,
-+        VkImageLayout                               dstImageLayout,
-         u32                                         regionCount,
-         const VkBufferImageCopy*                    pRegions) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
-     srcBufferObject := GetBuffer(srcBuffer)
--    destImageObject := GetImage(destImage)
--    assert(cmdBufferObject.device == srcBufferObject.device)
--    assert(cmdBufferObject.device == destImageObject.device)
-+    dstImageObject := GetImage(dstImage)
-+    assert(commandBufferObject.device == srcBufferObject.device)
-+    assert(commandBufferObject.device == dstImageObject.device)
- 
-     regions := pRegions[0:regionCount]
-     for i in (0 .. regionCount) {
-         region := regions[i]
-     }
- 
--    bindCmdBuffer(cmdBuffer, srcBuffer, srcBufferObject.mem)
--    bindCmdBuffer(cmdBuffer, destImage, destImageObject.mem)
-+    bindCommandBuffer(commandBuffer, srcBuffer, srcBufferObject.memory)
-+    bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory)
- 
--    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_DMA_BIT)
-+    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_DMA_BIT)
- }
- 
- @threadSafety("app")
- cmd void vkCmdCopyImageToBuffer(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         VkImage                                     srcImage,
-         VkImageLayout                               srcImageLayout,
--        VkBuffer                                    destBuffer,
-+        VkBuffer                                    dstBuffer,
-         u32                                         regionCount,
-         const VkBufferImageCopy*                    pRegions) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
-     srcImageObject := GetImage(srcImage)
--    destBufferObject := GetBuffer(destBuffer)
--    assert(cmdBufferObject.device == srcImageObject.device)
--    assert(cmdBufferObject.device == destBufferObject.device)
-+    dstBufferObject := GetBuffer(dstBuffer)
-+    assert(commandBufferObject.device == srcImageObject.device)
-+    assert(commandBufferObject.device == dstBufferObject.device)
- 
-     regions := pRegions[0:regionCount]
-     for i in (0 .. regionCount) {
-         region := regions[i]
-     }
- 
--    bindCmdBuffer(cmdBuffer, srcImage, srcImageObject.mem)
--    bindCmdBuffer(cmdBuffer, destBuffer, destBufferObject.mem)
-+    bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory)
-+    bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory)
- 
--    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_DMA_BIT)
-+    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_DMA_BIT)
- }
- 
- @threadSafety("app")
- cmd void vkCmdUpdateBuffer(
--        VkCmdBuffer                                 cmdBuffer,
--        VkBuffer                                    destBuffer,
--        VkDeviceSize                                destOffset,
-+        VkCommandBuffer                             commandBuffer,
-+        VkBuffer                                    dstBuffer,
-+        VkDeviceSize                                dstOffset,
-         VkDeviceSize                                dataSize,
-         const u32*                                  pData) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
--    destBufferObject := GetBuffer(destBuffer)
--    assert(cmdBufferObject.device == destBufferObject.device)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
-+    dstBufferObject := GetBuffer(dstBuffer)
-+    assert(commandBufferObject.device == dstBufferObject.device)
- 
-     data := pData[0:dataSize]
- 
--    bindCmdBuffer(cmdBuffer, destBuffer, destBufferObject.mem)
-+    bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory)
- 
--    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_DMA_BIT)
-+    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_DMA_BIT)
- }
- 
- @threadSafety("app")
- cmd void vkCmdFillBuffer(
--        VkCmdBuffer                                 cmdBuffer,
--        VkBuffer                                    destBuffer,
--        VkDeviceSize                                destOffset,
-+        VkCommandBuffer                             commandBuffer,
-+        VkBuffer                                    dstBuffer,
-+        VkDeviceSize                                dstOffset,
-         VkDeviceSize                                size,
-         u32                                         data) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
--    destBufferObject := GetBuffer(destBuffer)
--    assert(cmdBufferObject.device == destBufferObject.device)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
-+    dstBufferObject := GetBuffer(dstBuffer)
-+    assert(commandBufferObject.device == dstBufferObject.device)
- 
--    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_DMA_BIT)
-+    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_DMA_BIT)
- }
- 
- @threadSafety("app")
- cmd void vkCmdClearColorImage(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         VkImage                                     image,
-         VkImageLayout                               imageLayout,
-         const VkClearColorValue*                    pColor,
-         u32                                         rangeCount,
-         const VkImageSubresourceRange*              pRanges) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
-     imageObject := GetImage(image)
--    assert(cmdBufferObject.device == imageObject.device)
-+    assert(commandBufferObject.device == imageObject.device)
- 
-     ranges := pRanges[0:rangeCount]
-     for i in (0 .. rangeCount) {
-         range := ranges[i]
-     }
- 
--    bindCmdBuffer(cmdBuffer, image, imageObject.mem)
-+    bindCommandBuffer(commandBuffer, image, imageObject.memory)
- 
--    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
-+    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
- cmd void vkCmdClearDepthStencilImage(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         VkImage                                     image,
-         VkImageLayout                               imageLayout,
-         const VkClearDepthStencilValue*             pDepthStencil,
-         u32                                         rangeCount,
-         const VkImageSubresourceRange*              pRanges) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
-     imageObject := GetImage(image)
--    assert(cmdBufferObject.device == imageObject.device)
-+    assert(commandBufferObject.device == imageObject.device)
- 
-     ranges := pRanges[0:rangeCount]
-     for i in (0 .. rangeCount) {
-         range := ranges[i]
-     }
- 
--    bindCmdBuffer(cmdBuffer, image, imageObject.mem)
-+    bindCommandBuffer(commandBuffer, image, imageObject.memory)
- 
--    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
-+    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
- cmd void vkCmdClearAttachments(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         u32                                         attachmentCount,
-         const VkClearAttachment*                    pAttachments,
-         u32                                         rectCount,
-         const VkClearRect*                          pRects) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
- 
-     rects := pRects[0:rectCount]
-     for i in (0 .. rectCount) {
-         rect := rects[i]
-     }
- 
--    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
-+    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
- cmd void vkCmdResolveImage(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         VkImage                                     srcImage,
-         VkImageLayout                               srcImageLayout,
--        VkImage                                     destImage,
--        VkImageLayout                               destImageLayout,
-+        VkImage                                     dstImage,
-+        VkImageLayout                               dstImageLayout,
-         u32                                         regionCount,
-         const VkImageResolve*                       pRegions) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
-     srcImageObject := GetImage(srcImage)
--    destImageObject := GetImage(destImage)
--    assert(cmdBufferObject.device == srcImageObject.device)
--    assert(cmdBufferObject.device == destImageObject.device)
-+    dstImageObject := GetImage(dstImage)
-+    assert(commandBufferObject.device == srcImageObject.device)
-+    assert(commandBufferObject.device == dstImageObject.device)
- 
-     regions := pRegions[0:regionCount]
-     for i in (0 .. regionCount) {
-         region := regions[i]
-     }
- 
--    bindCmdBuffer(cmdBuffer, srcImage, srcImageObject.mem)
--    bindCmdBuffer(cmdBuffer, destImage, destImageObject.mem)
-+    bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory)
-+    bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory)
- 
--    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
-+    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- @threadSafety("app")
- cmd void vkCmdSetEvent(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         VkEvent                                     event,
-         VkPipelineStageFlags                        stageMask) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
-     eventObject := GetEvent(event)
--    assert(cmdBufferObject.device == eventObject.device)
-+    assert(commandBufferObject.device == eventObject.device)
- }
- 
- @threadSafety("app")
- cmd void vkCmdResetEvent(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         VkEvent                                     event,
-         VkPipelineStageFlags                        stageMask) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
-     eventObject := GetEvent(event)
--    assert(cmdBufferObject.device == eventObject.device)
-+    assert(commandBufferObject.device == eventObject.device)
- }
- 
- @threadSafety("app")
- cmd void vkCmdWaitEvents(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         u32                                         eventCount,
-         const VkEvent*                              pEvents,
-         VkPipelineStageFlags                        srcStageMask,
--        VkPipelineStageFlags                        destStageMask,
--        u32                                         memBarrierCount,
--        const void* const*                          ppMemBarriers) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
-+        VkPipelineStageFlags                        dstStageMask,
-+        u32                                         memoryBarrierCount,
-+        const void* const*                          ppMemoryBarriers) {
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
- 
-     events := pEvents[0:eventCount]
-     for i in (0 .. eventCount) {
-         event := events[i]
-         eventObject := GetEvent(event)
--        assert(cmdBufferObject.device == eventObject.device)
-+        assert(commandBufferObject.device == eventObject.device)
-     }
- 
--    pMemBarriers := ppMemBarriers[0:memBarrierCount]
--    for i in (0 .. memBarrierCount) {
--        switch as!VkMemoryBarrier const*(pMemBarriers[i])[0].sType {
-+    pMemoryBarriers := ppMemoryBarriers[0:memoryBarrierCount]
-+    for i in (0 .. memoryBarrierCount) {
-+        switch as!VkMemoryBarrier const*(pMemoryBarriers[i])[0].sType {
-             case VK_STRUCTURE_TYPE_MEMORY_BARRIER: {
--                memBarrier := as!VkMemoryBarrier const*(pMemBarriers[i])[0]
-+                memoryBarrier := as!VkMemoryBarrier const*(pMemoryBarriers[i])[0]
-             }
-             case VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER: {
--                imageMemBarrier := as!VkImageMemoryBarrier const*(pMemBarriers[i])[0]
--                imageObject := GetImage(imageMemBarrier.image)
--                assert(imageObject.device == cmdBufferObject.device)
-+                imageMemoryBarrier := as!VkImageMemoryBarrier const*(pMemoryBarriers[i])[0]
-+                imageObject := GetImage(imageMemoryBarrier.image)
-+                assert(imageObject.device == commandBufferObject.device)
-             }
-             case VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER: {
--                bufferMemBarrier := as!VkBufferMemoryBarrier const*(pMemBarriers[i])[0]
--                bufferObject := GetBuffer(bufferMemBarrier.buffer)
--                assert(bufferObject.device == cmdBufferObject.device)
-+                bufferMemoryBarrier := as!VkBufferMemoryBarrier const*(pMemoryBarriers[i])[0]
-+                bufferObject := GetBuffer(bufferMemoryBarrier.buffer)
-+                assert(bufferObject.device == commandBufferObject.device)
-             }
-         }
-     }
-@@ -4483,29 +4482,29 @@ cmd void vkCmdWaitEvents(
- 
- @threadSafety("app")
- cmd void vkCmdPipelineBarrier(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         VkPipelineStageFlags                        srcStageMask,
--        VkPipelineStageFlags                        destStageMask,
-+        VkPipelineStageFlags                        dstStageMask,
-         VkDependencyFlags                           dependencyFlags,
--        u32                                         memBarrierCount,
--        const void* const*                          ppMemBarriers) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
-+        u32                                         memoryBarrierCount,
-+        const void* const*                          ppMemoryBarriers) {
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
- 
--    pMemBarriers := ppMemBarriers[0:memBarrierCount]
--    for i in (0 .. memBarrierCount) {
--        switch as!VkMemoryBarrier const*(pMemBarriers[i])[0].sType {
-+    pMemoryBarriers := ppMemoryBarriers[0:memoryBarrierCount]
-+    for i in (0 .. memoryBarrierCount) {
-+        switch as!VkMemoryBarrier const*(pMemoryBarriers[i])[0].sType {
-             case VK_STRUCTURE_TYPE_MEMORY_BARRIER: {
--                memBarrier := as!VkMemoryBarrier const*(pMemBarriers[i])[0]
-+                memoryBarrier := as!VkMemoryBarrier const*(pMemoryBarriers[i])[0]
-             }
-             case VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER: {
--                imageMemBarrier := as!VkImageMemoryBarrier const*(pMemBarriers[i])[0]
--                imageObject := GetImage(imageMemBarrier.image)
--                assert(imageObject.device == cmdBufferObject.device)
-+                imageMemoryBarrier := as!VkImageMemoryBarrier const*(pMemoryBarriers[i])[0]
-+                imageObject := GetImage(imageMemoryBarrier.image)
-+                assert(imageObject.device == commandBufferObject.device)
-             }
-             case VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER: {
--                bufferMemBarrier := as!VkBufferMemoryBarrier const*(pMemBarriers[i])[0]
--                bufferObject := GetBuffer(bufferMemBarrier.buffer)
--                assert(bufferObject.device == cmdBufferObject.device)
-+                bufferMemoryBarrier := as!VkBufferMemoryBarrier const*(pMemoryBarriers[i])[0]
-+                bufferObject := GetBuffer(bufferMemoryBarrier.buffer)
-+                assert(bufferObject.device == commandBufferObject.device)
-             }
-         }
-     }
-@@ -4513,115 +4512,115 @@ cmd void vkCmdPipelineBarrier(
- 
- @threadSafety("app")
- cmd void vkCmdBeginQuery(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         VkQueryPool                                 queryPool,
-         u32                                         slot,
-         VkQueryControlFlags                         flags) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
-     queryPoolObject := GetQueryPool(queryPool)
--    assert(cmdBufferObject.device == queryPoolObject.device)
-+    assert(commandBufferObject.device == queryPoolObject.device)
- }
- 
- @threadSafety("app")
- cmd void vkCmdEndQuery(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         VkQueryPool                                 queryPool,
-         u32                                         slot) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
-     queryPoolObject := GetQueryPool(queryPool)
--    assert(cmdBufferObject.device == queryPoolObject.device)
-+    assert(commandBufferObject.device == queryPoolObject.device)
- }
- 
- @threadSafety("app")
- cmd void vkCmdResetQueryPool(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         VkQueryPool                                 queryPool,
-         u32                                         startQuery,
-         u32                                         queryCount) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
-     queryPoolObject := GetQueryPool(queryPool)
--    assert(cmdBufferObject.device == queryPoolObject.device)
-+    assert(commandBufferObject.device == queryPoolObject.device)
- }
- 
- @threadSafety("app")
- cmd void vkCmdWriteTimestamp(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         VkPipelineStageFlagBits                     pipelineStage,
-         VkQueryPool                                 queryPool,
-         u32                                         slot) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
-     queryPoolObject := GetQueryPool(queryPool)
--    assert(cmdBufferObject.device == queryPoolObject.device)
-+    assert(commandBufferObject.device == queryPoolObject.device)
- }
- 
- @threadSafety("app")
- cmd void vkCmdCopyQueryPoolResults(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         VkQueryPool                                 queryPool,
-         u32                                         startQuery,
-         u32                                         queryCount,
--        VkBuffer                                    destBuffer,
--        VkDeviceSize                                destOffset,
-+        VkBuffer                                    dstBuffer,
-+        VkDeviceSize                                dstOffset,
-         VkDeviceSize                                stride,
-         VkQueryResultFlags                          flags) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
-     queryPoolObject := GetQueryPool(queryPool)
--    destBufferObject := GetBuffer(destBuffer)
--    assert(cmdBufferObject.device == queryPoolObject.device)
--    assert(cmdBufferObject.device == destBufferObject.device)
-+    dstBufferObject := GetBuffer(dstBuffer)
-+    assert(commandBufferObject.device == queryPoolObject.device)
-+    assert(commandBufferObject.device == dstBufferObject.device)
- }
- 
- cmd void vkCmdPushConstants(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         VkPipelineLayout                            layout,
-         VkShaderStageFlags                          stageFlags,
-         u32                                         offset,
-         u32                                         size,
-         const void*                                 values) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
-     layoutObject := GetPipelineLayout(layout)
--    assert(cmdBufferObject.device == layoutObject.device)
-+    assert(commandBufferObject.device == layoutObject.device)
- }
- 
- @threadSafety("app")
- cmd void vkCmdBeginRenderPass(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         const VkRenderPassBeginInfo*                pRenderPassBegin,
-         VkRenderPassContents                        contents) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
-     renderPassObject := GetRenderPass(pRenderPassBegin.renderPass)
-     framebufferObject := GetFramebuffer(pRenderPassBegin.framebuffer)
--    assert(cmdBufferObject.device == renderPassObject.device)
--    assert(cmdBufferObject.device == framebufferObject.device)
-+    assert(commandBufferObject.device == renderPassObject.device)
-+    assert(commandBufferObject.device == framebufferObject.device)
- 
--    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
-+    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- cmd void vkCmdNextSubpass(
--        VkCmdBuffer                                 cmdBuffer,
-+        VkCommandBuffer                             commandBuffer,
-         VkRenderPassContents                        contents) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
- }
- 
- @threadSafety("app")
- cmd void vkCmdEndRenderPass(
--        VkCmdBuffer                                 cmdBuffer) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
-+        VkCommandBuffer                             commandBuffer) {
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
- 
--    cmdBufferObject.queueFlags = AddQueueFlag(cmdBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
-+    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
- 
- cmd void vkCmdExecuteCommands(
--        VkCmdBuffer                                 cmdBuffer,
--        u32                                         cmdBuffersCount,
--        const VkCmdBuffer*                          pCmdBuffers) {
--    cmdBufferObject := GetCmdBuffer(cmdBuffer)
--
--    cmdBuffers := pCmdBuffers[0:cmdBuffersCount]
--    for i in (0 .. cmdBuffersCount) {
--        secondaryCmdBuffer := cmdBuffers[i]
--        secondaryCmdBufferObject := GetCmdBuffer(secondaryCmdBuffer)
--        assert(cmdBufferObject.device == secondaryCmdBufferObject.device)
-+        VkCommandBuffer                             commandBuffer,
-+        u32                                         commandBuffersCount,
-+        const VkCommandBuffer*                      pCommandBuffers) {
-+    commandBufferObject := GetCommandBuffer(commandBuffer)
-+
-+    commandBuffers := pCommandBuffers[0:commandBuffersCount]
-+    for i in (0 .. commandBuffersCount) {
-+        secondaryCommandBuffer := commandBuffers[i]
-+        secondaryCommandBufferObject := GetCommandBuffer(secondaryCommandBuffer)
-+        assert(commandBufferObject.device == secondaryCommandBufferObject.device)
-     }
- }
- 
-@@ -4966,7 +4965,7 @@ StateObject State
-     map!(VkPhysicalDevice, ref!PhysicalDeviceObject) PhysicalDevices
-     map!(VkDevice,         ref!DeviceObject)         Devices
-     map!(VkQueue,          ref!QueueObject)          Queues
--    map!(VkCmdBuffer,      ref!CmdBufferObject)      CmdBuffers
-+    map!(VkCommandBuffer,  ref!CommandBufferObject)  CommandBuffers
- 
-     // Non-dispatchable objects.
-     map!(VkDeviceMemory,             ref!DeviceMemoryObject)             DeviceMemories
-@@ -4989,7 +4988,7 @@ StateObject State
-     map!(VkFramebuffer,              ref!FramebufferObject)              Framebuffers
-     map!(VkRenderPass,               ref!RenderPassObject)               RenderPasses
-     map!(VkPipelineCache,            ref!PipelineCacheObject)            PipelineCaches
--    map!(VkCmdPool,                  ref!CmdPoolObject)                  CmdPools
-+    map!(VkCommandPool,              ref!CommandPoolObject)              CommandPools
-     map!(VkSurfaceKHR,               ref!SurfaceObject)                  Surfaces
-     map!(VkSwapchainKHR,             ref!SwapchainObject)                Swapchains
- }
-@@ -5010,23 +5009,23 @@ StateObject State
-     VkQueueFlags  flags
- }
- 
--@internal class CmdBufferObject {
-+@internal class CommandBufferObject {
-     VkDevice                  device
-     map!(u64, VkDeviceMemory) boundObjects
-     VkQueueFlags              queueFlags
- }
- 
- @internal class DeviceMemoryObject {
--    VkDevice                         device
--    VkDeviceSize                     allocationSize
--    map!(u64, VkDeviceSize         ) boundObjects
--    map!(VkCmdBuffer, VkCmdBuffer)   boundCommandBuffers
-+    VkDevice                                device
-+    VkDeviceSize                            allocationSize
-+    map!(u64, VkDeviceSize)                 boundObjects
-+    map!(VkCommandBuffer, VkCommandBuffer)  boundCommandBuffers
- }
- 
- @internal class BufferObject {
-     VkDevice              device
--    VkDeviceMemory        mem
--    VkDeviceSize          memOffset
-+    VkDeviceMemory        memory
-+    VkDeviceSize          memoryOffset
- }
- 
- @internal class BufferViewObject {
-@@ -5036,8 +5035,8 @@ StateObject State
- 
- @internal class ImageObject {
-     VkDevice              device
--    VkDeviceMemory        mem
--    VkDeviceSize          memOffset
-+    VkDeviceMemory        memory
-+    VkDeviceSize          memoryOffset
- }
- 
- @internal class ImageViewObject {
-@@ -5106,7 +5105,7 @@ StateObject State
-     VkDevice      device
- }
- 
--@internal class CmdPoolObject {
-+@internal class CommandPoolObject {
-     VkDevice      device
- }
- 
-@@ -5138,14 +5137,14 @@ macro ref!QueueObject GetQueue(VkQueue queue) {
-     return State.Queues[queue]
- }
- 
--macro ref!CmdBufferObject GetCmdBuffer(VkCmdBuffer cmdBuffer) {
--    assert(cmdBuffer in State.CmdBuffers)
--    return State.CmdBuffers[cmdBuffer]
-+macro ref!CommandBufferObject GetCommandBuffer(VkCommandBuffer commandBuffer) {
-+    assert(commandBuffer in State.CommandBuffers)
-+    return State.CommandBuffers[commandBuffer]
- }
- 
--macro ref!DeviceMemoryObject GetDeviceMemory(VkDeviceMemory mem) {
--    assert(mem in State.DeviceMemories)
--    return State.DeviceMemories[mem]
-+macro ref!DeviceMemoryObject GetDeviceMemory(VkDeviceMemory memory) {
-+    assert(memory in State.DeviceMemories)
-+    return State.DeviceMemories[memory]
- }
- 
- macro ref!BufferObject GetBuffer(VkBuffer buffer) {
-@@ -5243,9 +5242,9 @@ macro ref!PipelineCacheObject GetPipelineCache(VkPipelineCache pipelineCache) {
-     return State.PipelineCaches[pipelineCache]
- }
- 
--macro ref!CmdPoolObject GetCmdPool(VkCmdPool cmdPool) {
--    assert(cmdPool in State.CmdPools)
--    return State.CmdPools[cmdPool]
-+macro ref!CommandPoolObject GetCommandPool(VkCommandPool commandPool) {
-+    assert(commandPool in State.CommandPools)
-+    return State.CommandPools[commandPool]
- }
- 
- macro ref!SurfaceObject GetSurface(VkSurfaceKHR surface) {
-diff --git a/vulkan/include/vulkan/vk_debug_report_lunarg.h b/vulkan/include/vulkan/vk_debug_report_lunarg.h
-index 23bb63c..286c354 100644
---- a/vulkan/include/vulkan/vk_debug_report_lunarg.h
-+++ b/vulkan/include/vulkan/vk_debug_report_lunarg.h
-@@ -83,7 +83,7 @@ typedef enum {
- 
- #define VK_DEBUG_REPORT_EXTENSION_NAME "DEBUG_REPORT"
- 
--VK_DEFINE_NONDISP_HANDLE(VkDbgMsgCallback)
-+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDbgMsgCallback)
- 
- // ------------------------------------------------------------------------------------------------
- // Enumerations
-diff --git a/vulkan/include/vulkan/vulkan.h b/vulkan/include/vulkan/vulkan.h
-index af0ccdf..0130399 100644
---- a/vulkan/include/vulkan/vulkan.h
-+++ b/vulkan/include/vulkan/vulkan.h
-@@ -41,20 +41,20 @@ extern "C" {
-     ((major << 22) | (minor << 12) | patch)
- 
- // Vulkan API version supported by this file
--#define VK_API_VERSION VK_MAKE_VERSION(0, 194, 0)
-+#define VK_API_VERSION VK_MAKE_VERSION(0, 196, 0)
- 
- 
- #define VK_NULL_HANDLE 0
- 
- 
- 
--#define VK_DEFINE_HANDLE(obj) typedef struct obj##_T* obj;
-+#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object;
- 
- 
- #if defined(__LP64__) || defined(_WIN64) || defined(__x86_64__) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)
--        #define VK_DEFINE_NONDISP_HANDLE(obj) typedef struct obj##_T *obj;
-+        #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object;
- #else
--        #define VK_DEFINE_NONDISP_HANDLE(obj) typedef uint64_t obj;
-+        #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;
- #endif
- 
- 
-@@ -68,28 +68,28 @@ VK_DEFINE_HANDLE(VkInstance)
- VK_DEFINE_HANDLE(VkPhysicalDevice)
- VK_DEFINE_HANDLE(VkDevice)
- VK_DEFINE_HANDLE(VkQueue)
--VK_DEFINE_NONDISP_HANDLE(VkSemaphore)
--VK_DEFINE_HANDLE(VkCmdBuffer)
--VK_DEFINE_NONDISP_HANDLE(VkFence)
--VK_DEFINE_NONDISP_HANDLE(VkDeviceMemory)
--VK_DEFINE_NONDISP_HANDLE(VkBuffer)
--VK_DEFINE_NONDISP_HANDLE(VkImage)
--VK_DEFINE_NONDISP_HANDLE(VkEvent)
--VK_DEFINE_NONDISP_HANDLE(VkQueryPool)
--VK_DEFINE_NONDISP_HANDLE(VkBufferView)
--VK_DEFINE_NONDISP_HANDLE(VkImageView)
--VK_DEFINE_NONDISP_HANDLE(VkShaderModule)
--VK_DEFINE_NONDISP_HANDLE(VkShader)
--VK_DEFINE_NONDISP_HANDLE(VkPipelineCache)
--VK_DEFINE_NONDISP_HANDLE(VkPipelineLayout)
--VK_DEFINE_NONDISP_HANDLE(VkRenderPass)
--VK_DEFINE_NONDISP_HANDLE(VkPipeline)
--VK_DEFINE_NONDISP_HANDLE(VkDescriptorSetLayout)
--VK_DEFINE_NONDISP_HANDLE(VkSampler)
--VK_DEFINE_NONDISP_HANDLE(VkDescriptorPool)
--VK_DEFINE_NONDISP_HANDLE(VkDescriptorSet)
--VK_DEFINE_NONDISP_HANDLE(VkFramebuffer)
--VK_DEFINE_NONDISP_HANDLE(VkCmdPool)
-+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSemaphore)
-+VK_DEFINE_HANDLE(VkCommandBuffer)
-+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFence)
-+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeviceMemory)
-+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBuffer)
-+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImage)
-+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkEvent)
-+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkQueryPool)
-+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferView)
-+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImageView)
-+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkShaderModule)
-+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkShader)
-+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineCache)
-+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineLayout)
-+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkRenderPass)
-+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipeline)
-+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSetLayout)
-+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSampler)
-+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorPool)
-+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSet)
-+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFramebuffer)
-+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCommandPool)
- 
- #define VK_LOD_CLAMP_NONE                 1000.0f
- #define VK_REMAINING_MIP_LEVELS           (~0U)
-@@ -126,7 +126,7 @@ typedef enum {
-     VK_ERROR_INCOMPATIBLE_DRIVER = -9,
-     VK_RESULT_BEGIN_RANGE = VK_ERROR_INCOMPATIBLE_DRIVER,
-     VK_RESULT_END_RANGE = VK_INCOMPLETE,
--    VK_RESULT_NUM = (VK_INCOMPLETE - VK_ERROR_INCOMPATIBLE_DRIVER + 1),
-+    VK_RESULT_RANGE_SIZE = (VK_INCOMPLETE - VK_ERROR_INCOMPATIBLE_DRIVER + 1),
-     VK_RESULT_MAX_ENUM = 0x7FFFFFFF
- } VkResult;
- 
-@@ -171,9 +171,9 @@ typedef enum {
-     VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 37,
-     VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 38,
-     VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 39,
--    VK_STRUCTURE_TYPE_CMD_POOL_CREATE_INFO = 40,
--    VK_STRUCTURE_TYPE_CMD_BUFFER_ALLOC_INFO = 41,
--    VK_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO = 42,
-+    VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 40,
-+    VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOC_INFO = 41,
-+    VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42,
-     VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43,
-     VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44,
-     VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45,
-@@ -182,29 +182,29 @@ typedef enum {
-     VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO = 48,
-     VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO,
-     VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO,
--    VK_STRUCTURE_TYPE_NUM = (VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1),
-+    VK_STRUCTURE_TYPE_RANGE_SIZE = (VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1),
-     VK_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF
- } VkStructureType;
- 
- typedef enum {
--    VK_SYSTEM_ALLOC_SCOPE_FUNCTION = 0,
--    VK_SYSTEM_ALLOC_SCOPE_OBJECT = 1,
--    VK_SYSTEM_ALLOC_SCOPE_CACHE = 2,
--    VK_SYSTEM_ALLOC_SCOPE_DEVICE = 3,
--    VK_SYSTEM_ALLOC_SCOPE_INSTANCE = 4,
--    VK_SYSTEM_ALLOC_SCOPE_BEGIN_RANGE = VK_SYSTEM_ALLOC_SCOPE_FUNCTION,
--    VK_SYSTEM_ALLOC_SCOPE_END_RANGE = VK_SYSTEM_ALLOC_SCOPE_INSTANCE,
--    VK_SYSTEM_ALLOC_SCOPE_NUM = (VK_SYSTEM_ALLOC_SCOPE_INSTANCE - VK_SYSTEM_ALLOC_SCOPE_FUNCTION + 1),
--    VK_SYSTEM_ALLOC_SCOPE_MAX_ENUM = 0x7FFFFFFF
--} VkSystemAllocScope;
-+    VK_SYSTEM_ALLOCATION_SCOPE_FUNCTION = 0,
-+    VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1,
-+    VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2,
-+    VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3,
-+    VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4,
-+    VK_SYSTEM_ALLOCATION_SCOPE_BEGIN_RANGE = VK_SYSTEM_ALLOCATION_SCOPE_FUNCTION,
-+    VK_SYSTEM_ALLOCATION_SCOPE_END_RANGE = VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE,
-+    VK_SYSTEM_ALLOCATION_SCOPE_RANGE_SIZE = (VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE - VK_SYSTEM_ALLOCATION_SCOPE_FUNCTION + 1),
-+    VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 0x7FFFFFFF
-+} VkSystemAllocationScope;
- 
- typedef enum {
--    VK_INTERNAL_ALLOC_TYPE_EXECUTABLE = 0,
--    VK_INTERNAL_ALLOC_TYPE_BEGIN_RANGE = VK_INTERNAL_ALLOC_TYPE_EXECUTABLE,
--    VK_INTERNAL_ALLOC_TYPE_END_RANGE = VK_INTERNAL_ALLOC_TYPE_EXECUTABLE,
--    VK_INTERNAL_ALLOC_TYPE_NUM = (VK_INTERNAL_ALLOC_TYPE_EXECUTABLE - VK_INTERNAL_ALLOC_TYPE_EXECUTABLE + 1),
--    VK_INTERNAL_ALLOC_TYPE_MAX_ENUM = 0x7FFFFFFF
--} VkInternalAllocType;
-+    VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0,
-+    VK_INTERNAL_ALLOCATION_TYPE_BEGIN_RANGE = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE,
-+    VK_INTERNAL_ALLOCATION_TYPE_END_RANGE = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE,
-+    VK_INTERNAL_ALLOCATION_TYPE_RANGE_SIZE = (VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE - VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE + 1),
-+    VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 0x7FFFFFFF
-+} VkInternalAllocationType;
- 
- typedef enum {
-     VK_FORMAT_UNDEFINED = 0,
-@@ -383,7 +383,7 @@ typedef enum {
-     VK_FORMAT_B10G10R10A2_SINT = 173,
-     VK_FORMAT_BEGIN_RANGE = VK_FORMAT_UNDEFINED,
-     VK_FORMAT_END_RANGE = VK_FORMAT_B10G10R10A2_SINT,
--    VK_FORMAT_NUM = (VK_FORMAT_B10G10R10A2_SINT - VK_FORMAT_UNDEFINED + 1),
-+    VK_FORMAT_RANGE_SIZE = (VK_FORMAT_B10G10R10A2_SINT - VK_FORMAT_UNDEFINED + 1),
-     VK_FORMAT_MAX_ENUM = 0x7FFFFFFF
- } VkFormat;
- 
-@@ -393,7 +393,7 @@ typedef enum {
-     VK_IMAGE_TYPE_3D = 2,
-     VK_IMAGE_TYPE_BEGIN_RANGE = VK_IMAGE_TYPE_1D,
-     VK_IMAGE_TYPE_END_RANGE = VK_IMAGE_TYPE_3D,
--    VK_IMAGE_TYPE_NUM = (VK_IMAGE_TYPE_3D - VK_IMAGE_TYPE_1D + 1),
-+    VK_IMAGE_TYPE_RANGE_SIZE = (VK_IMAGE_TYPE_3D - VK_IMAGE_TYPE_1D + 1),
-     VK_IMAGE_TYPE_MAX_ENUM = 0x7FFFFFFF
- } VkImageType;
- 
-@@ -402,7 +402,7 @@ typedef enum {
-     VK_IMAGE_TILING_LINEAR = 1,
-     VK_IMAGE_TILING_BEGIN_RANGE = VK_IMAGE_TILING_OPTIMAL,
-     VK_IMAGE_TILING_END_RANGE = VK_IMAGE_TILING_LINEAR,
--    VK_IMAGE_TILING_NUM = (VK_IMAGE_TILING_LINEAR - VK_IMAGE_TILING_OPTIMAL + 1),
-+    VK_IMAGE_TILING_RANGE_SIZE = (VK_IMAGE_TILING_LINEAR - VK_IMAGE_TILING_OPTIMAL + 1),
-     VK_IMAGE_TILING_MAX_ENUM = 0x7FFFFFFF
- } VkImageTiling;
- 
-@@ -414,7 +414,7 @@ typedef enum {
-     VK_PHYSICAL_DEVICE_TYPE_CPU = 4,
-     VK_PHYSICAL_DEVICE_TYPE_BEGIN_RANGE = VK_PHYSICAL_DEVICE_TYPE_OTHER,
-     VK_PHYSICAL_DEVICE_TYPE_END_RANGE = VK_PHYSICAL_DEVICE_TYPE_CPU,
--    VK_PHYSICAL_DEVICE_TYPE_NUM = (VK_PHYSICAL_DEVICE_TYPE_CPU - VK_PHYSICAL_DEVICE_TYPE_OTHER + 1),
-+    VK_PHYSICAL_DEVICE_TYPE_RANGE_SIZE = (VK_PHYSICAL_DEVICE_TYPE_CPU - VK_PHYSICAL_DEVICE_TYPE_OTHER + 1),
-     VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 0x7FFFFFFF
- } VkPhysicalDeviceType;
- 
-@@ -424,7 +424,7 @@ typedef enum {
-     VK_QUERY_TYPE_TIMESTAMP = 2,
-     VK_QUERY_TYPE_BEGIN_RANGE = VK_QUERY_TYPE_OCCLUSION,
-     VK_QUERY_TYPE_END_RANGE = VK_QUERY_TYPE_TIMESTAMP,
--    VK_QUERY_TYPE_NUM = (VK_QUERY_TYPE_TIMESTAMP - VK_QUERY_TYPE_OCCLUSION + 1),
-+    VK_QUERY_TYPE_RANGE_SIZE = (VK_QUERY_TYPE_TIMESTAMP - VK_QUERY_TYPE_OCCLUSION + 1),
-     VK_QUERY_TYPE_MAX_ENUM = 0x7FFFFFFF
- } VkQueryType;
- 
-@@ -433,7 +433,7 @@ typedef enum {
-     VK_SHARING_MODE_CONCURRENT = 1,
-     VK_SHARING_MODE_BEGIN_RANGE = VK_SHARING_MODE_EXCLUSIVE,
-     VK_SHARING_MODE_END_RANGE = VK_SHARING_MODE_CONCURRENT,
--    VK_SHARING_MODE_NUM = (VK_SHARING_MODE_CONCURRENT - VK_SHARING_MODE_EXCLUSIVE + 1),
-+    VK_SHARING_MODE_RANGE_SIZE = (VK_SHARING_MODE_CONCURRENT - VK_SHARING_MODE_EXCLUSIVE + 1),
-     VK_SHARING_MODE_MAX_ENUM = 0x7FFFFFFF
- } VkSharingMode;
- 
-@@ -444,12 +444,12 @@ typedef enum {
-     VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3,
-     VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4,
-     VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5,
--    VK_IMAGE_LAYOUT_TRANSFER_SOURCE_OPTIMAL = 6,
--    VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL = 7,
-+    VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6,
-+    VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7,
-     VK_IMAGE_LAYOUT_PREINITIALIZED = 8,
-     VK_IMAGE_LAYOUT_BEGIN_RANGE = VK_IMAGE_LAYOUT_UNDEFINED,
-     VK_IMAGE_LAYOUT_END_RANGE = VK_IMAGE_LAYOUT_PREINITIALIZED,
--    VK_IMAGE_LAYOUT_NUM = (VK_IMAGE_LAYOUT_PREINITIALIZED - VK_IMAGE_LAYOUT_UNDEFINED + 1),
-+    VK_IMAGE_LAYOUT_RANGE_SIZE = (VK_IMAGE_LAYOUT_PREINITIALIZED - VK_IMAGE_LAYOUT_UNDEFINED + 1),
-     VK_IMAGE_LAYOUT_MAX_ENUM = 0x7FFFFFFF
- } VkImageLayout;
- 
-@@ -463,7 +463,7 @@ typedef enum {
-     VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6,
-     VK_IMAGE_VIEW_TYPE_BEGIN_RANGE = VK_IMAGE_VIEW_TYPE_1D,
-     VK_IMAGE_VIEW_TYPE_END_RANGE = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY,
--    VK_IMAGE_VIEW_TYPE_NUM = (VK_IMAGE_VIEW_TYPE_CUBE_ARRAY - VK_IMAGE_VIEW_TYPE_1D + 1),
-+    VK_IMAGE_VIEW_TYPE_RANGE_SIZE = (VK_IMAGE_VIEW_TYPE_CUBE_ARRAY - VK_IMAGE_VIEW_TYPE_1D + 1),
-     VK_IMAGE_VIEW_TYPE_MAX_ENUM = 0x7FFFFFFF
- } VkImageViewType;
- 
-@@ -477,7 +477,7 @@ typedef enum {
-     VK_CHANNEL_SWIZZLE_A = 6,
-     VK_CHANNEL_SWIZZLE_BEGIN_RANGE = VK_CHANNEL_SWIZZLE_IDENTITY,
-     VK_CHANNEL_SWIZZLE_END_RANGE = VK_CHANNEL_SWIZZLE_A,
--    VK_CHANNEL_SWIZZLE_NUM = (VK_CHANNEL_SWIZZLE_A - VK_CHANNEL_SWIZZLE_IDENTITY + 1),
-+    VK_CHANNEL_SWIZZLE_RANGE_SIZE = (VK_CHANNEL_SWIZZLE_A - VK_CHANNEL_SWIZZLE_IDENTITY + 1),
-     VK_CHANNEL_SWIZZLE_MAX_ENUM = 0x7FFFFFFF
- } VkChannelSwizzle;
- 
-@@ -486,7 +486,7 @@ typedef enum {
-     VK_VERTEX_INPUT_STEP_RATE_INSTANCE = 1,
-     VK_VERTEX_INPUT_STEP_RATE_BEGIN_RANGE = VK_VERTEX_INPUT_STEP_RATE_VERTEX,
-     VK_VERTEX_INPUT_STEP_RATE_END_RANGE = VK_VERTEX_INPUT_STEP_RATE_INSTANCE,
--    VK_VERTEX_INPUT_STEP_RATE_NUM = (VK_VERTEX_INPUT_STEP_RATE_INSTANCE - VK_VERTEX_INPUT_STEP_RATE_VERTEX + 1),
-+    VK_VERTEX_INPUT_STEP_RATE_RANGE_SIZE = (VK_VERTEX_INPUT_STEP_RATE_INSTANCE - VK_VERTEX_INPUT_STEP_RATE_VERTEX + 1),
-     VK_VERTEX_INPUT_STEP_RATE_MAX_ENUM = 0x7FFFFFFF
- } VkVertexInputStepRate;
- 
-@@ -497,14 +497,14 @@ typedef enum {
-     VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3,
-     VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4,
-     VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5,
--    VK_PRIMITIVE_TOPOLOGY_LINE_LIST_ADJ = 6,
--    VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_ADJ = 7,
--    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_ADJ = 8,
--    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_ADJ = 9,
-+    VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6,
-+    VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7,
-+    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8,
-+    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9,
-     VK_PRIMITIVE_TOPOLOGY_PATCH = 10,
-     VK_PRIMITIVE_TOPOLOGY_BEGIN_RANGE = VK_PRIMITIVE_TOPOLOGY_POINT_LIST,
-     VK_PRIMITIVE_TOPOLOGY_END_RANGE = VK_PRIMITIVE_TOPOLOGY_PATCH,
--    VK_PRIMITIVE_TOPOLOGY_NUM = (VK_PRIMITIVE_TOPOLOGY_PATCH - VK_PRIMITIVE_TOPOLOGY_POINT_LIST + 1),
-+    VK_PRIMITIVE_TOPOLOGY_RANGE_SIZE = (VK_PRIMITIVE_TOPOLOGY_PATCH - VK_PRIMITIVE_TOPOLOGY_POINT_LIST + 1),
-     VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 0x7FFFFFFF
- } VkPrimitiveTopology;
- 
-@@ -514,16 +514,16 @@ typedef enum {
-     VK_FILL_MODE_POINTS = 2,
-     VK_FILL_MODE_BEGIN_RANGE = VK_FILL_MODE_SOLID,
-     VK_FILL_MODE_END_RANGE = VK_FILL_MODE_POINTS,
--    VK_FILL_MODE_NUM = (VK_FILL_MODE_POINTS - VK_FILL_MODE_SOLID + 1),
-+    VK_FILL_MODE_RANGE_SIZE = (VK_FILL_MODE_POINTS - VK_FILL_MODE_SOLID + 1),
-     VK_FILL_MODE_MAX_ENUM = 0x7FFFFFFF
- } VkFillMode;
- 
- typedef enum {
--    VK_FRONT_FACE_CCW = 0,
--    VK_FRONT_FACE_CW = 1,
--    VK_FRONT_FACE_BEGIN_RANGE = VK_FRONT_FACE_CCW,
--    VK_FRONT_FACE_END_RANGE = VK_FRONT_FACE_CW,
--    VK_FRONT_FACE_NUM = (VK_FRONT_FACE_CW - VK_FRONT_FACE_CCW + 1),
-+    VK_FRONT_FACE_COUNTER_CLOCKWISE = 0,
-+    VK_FRONT_FACE_CLOCKWISE = 1,
-+    VK_FRONT_FACE_BEGIN_RANGE = VK_FRONT_FACE_COUNTER_CLOCKWISE,
-+    VK_FRONT_FACE_END_RANGE = VK_FRONT_FACE_CLOCKWISE,
-+    VK_FRONT_FACE_RANGE_SIZE = (VK_FRONT_FACE_CLOCKWISE - VK_FRONT_FACE_COUNTER_CLOCKWISE + 1),
-     VK_FRONT_FACE_MAX_ENUM = 0x7FFFFFFF
- } VkFrontFace;
- 
-@@ -531,14 +531,14 @@ typedef enum {
-     VK_COMPARE_OP_NEVER = 0,
-     VK_COMPARE_OP_LESS = 1,
-     VK_COMPARE_OP_EQUAL = 2,
--    VK_COMPARE_OP_LESS_EQUAL = 3,
-+    VK_COMPARE_OP_LESS_OR_EQUAL = 3,
-     VK_COMPARE_OP_GREATER = 4,
-     VK_COMPARE_OP_NOT_EQUAL = 5,
--    VK_COMPARE_OP_GREATER_EQUAL = 6,
-+    VK_COMPARE_OP_GREATER_OR_EQUAL = 6,
-     VK_COMPARE_OP_ALWAYS = 7,
-     VK_COMPARE_OP_BEGIN_RANGE = VK_COMPARE_OP_NEVER,
-     VK_COMPARE_OP_END_RANGE = VK_COMPARE_OP_ALWAYS,
--    VK_COMPARE_OP_NUM = (VK_COMPARE_OP_ALWAYS - VK_COMPARE_OP_NEVER + 1),
-+    VK_COMPARE_OP_RANGE_SIZE = (VK_COMPARE_OP_ALWAYS - VK_COMPARE_OP_NEVER + 1),
-     VK_COMPARE_OP_MAX_ENUM = 0x7FFFFFFF
- } VkCompareOp;
- 
-@@ -546,14 +546,14 @@ typedef enum {
-     VK_STENCIL_OP_KEEP = 0,
-     VK_STENCIL_OP_ZERO = 1,
-     VK_STENCIL_OP_REPLACE = 2,
--    VK_STENCIL_OP_INC_CLAMP = 3,
--    VK_STENCIL_OP_DEC_CLAMP = 4,
-+    VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3,
-+    VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4,
-     VK_STENCIL_OP_INVERT = 5,
--    VK_STENCIL_OP_INC_WRAP = 6,
--    VK_STENCIL_OP_DEC_WRAP = 7,
-+    VK_STENCIL_OP_INCREMENT_AND_WRAP = 6,
-+    VK_STENCIL_OP_DECREMENT_AND_WRAP = 7,
-     VK_STENCIL_OP_BEGIN_RANGE = VK_STENCIL_OP_KEEP,
--    VK_STENCIL_OP_END_RANGE = VK_STENCIL_OP_DEC_WRAP,
--    VK_STENCIL_OP_NUM = (VK_STENCIL_OP_DEC_WRAP - VK_STENCIL_OP_KEEP + 1),
-+    VK_STENCIL_OP_END_RANGE = VK_STENCIL_OP_DECREMENT_AND_WRAP,
-+    VK_STENCIL_OP_RANGE_SIZE = (VK_STENCIL_OP_DECREMENT_AND_WRAP - VK_STENCIL_OP_KEEP + 1),
-     VK_STENCIL_OP_MAX_ENUM = 0x7FFFFFFF
- } VkStencilOp;
- 
-@@ -563,11 +563,11 @@ typedef enum {
-     VK_LOGIC_OP_AND_REVERSE = 2,
-     VK_LOGIC_OP_COPY = 3,
-     VK_LOGIC_OP_AND_INVERTED = 4,
--    VK_LOGIC_OP_NOOP = 5,
-+    VK_LOGIC_OP_NO_OP = 5,
-     VK_LOGIC_OP_XOR = 6,
-     VK_LOGIC_OP_OR = 7,
-     VK_LOGIC_OP_NOR = 8,
--    VK_LOGIC_OP_EQUIV = 9,
-+    VK_LOGIC_OP_EQUIVALENT = 9,
-     VK_LOGIC_OP_INVERT = 10,
-     VK_LOGIC_OP_OR_REVERSE = 11,
-     VK_LOGIC_OP_COPY_INVERTED = 12,
-@@ -576,7 +576,7 @@ typedef enum {
-     VK_LOGIC_OP_SET = 15,
-     VK_LOGIC_OP_BEGIN_RANGE = VK_LOGIC_OP_CLEAR,
-     VK_LOGIC_OP_END_RANGE = VK_LOGIC_OP_SET,
--    VK_LOGIC_OP_NUM = (VK_LOGIC_OP_SET - VK_LOGIC_OP_CLEAR + 1),
-+    VK_LOGIC_OP_RANGE_SIZE = (VK_LOGIC_OP_SET - VK_LOGIC_OP_CLEAR + 1),
-     VK_LOGIC_OP_MAX_ENUM = 0x7FFFFFFF
- } VkLogicOp;
- 
-@@ -585,12 +585,12 @@ typedef enum {
-     VK_BLEND_ONE = 1,
-     VK_BLEND_SRC_COLOR = 2,
-     VK_BLEND_ONE_MINUS_SRC_COLOR = 3,
--    VK_BLEND_DEST_COLOR = 4,
--    VK_BLEND_ONE_MINUS_DEST_COLOR = 5,
-+    VK_BLEND_DST_COLOR = 4,
-+    VK_BLEND_ONE_MINUS_DST_COLOR = 5,
-     VK_BLEND_SRC_ALPHA = 6,
-     VK_BLEND_ONE_MINUS_SRC_ALPHA = 7,
--    VK_BLEND_DEST_ALPHA = 8,
--    VK_BLEND_ONE_MINUS_DEST_ALPHA = 9,
-+    VK_BLEND_DST_ALPHA = 8,
-+    VK_BLEND_ONE_MINUS_DST_ALPHA = 9,
-     VK_BLEND_CONSTANT_COLOR = 10,
-     VK_BLEND_ONE_MINUS_CONSTANT_COLOR = 11,
-     VK_BLEND_CONSTANT_ALPHA = 12,
-@@ -602,7 +602,7 @@ typedef enum {
-     VK_BLEND_ONE_MINUS_SRC1_ALPHA = 18,
-     VK_BLEND_BEGIN_RANGE = VK_BLEND_ZERO,
-     VK_BLEND_END_RANGE = VK_BLEND_ONE_MINUS_SRC1_ALPHA,
--    VK_BLEND_NUM = (VK_BLEND_ONE_MINUS_SRC1_ALPHA - VK_BLEND_ZERO + 1),
-+    VK_BLEND_RANGE_SIZE = (VK_BLEND_ONE_MINUS_SRC1_ALPHA - VK_BLEND_ZERO + 1),
-     VK_BLEND_MAX_ENUM = 0x7FFFFFFF
- } VkBlend;
- 
-@@ -614,7 +614,7 @@ typedef enum {
-     VK_BLEND_OP_MAX = 4,
-     VK_BLEND_OP_BEGIN_RANGE = VK_BLEND_OP_ADD,
-     VK_BLEND_OP_END_RANGE = VK_BLEND_OP_MAX,
--    VK_BLEND_OP_NUM = (VK_BLEND_OP_MAX - VK_BLEND_OP_ADD + 1),
-+    VK_BLEND_OP_RANGE_SIZE = (VK_BLEND_OP_MAX - VK_BLEND_OP_ADD + 1),
-     VK_BLEND_OP_MAX_ENUM = 0x7FFFFFFF
- } VkBlendOp;
- 
-@@ -630,7 +630,7 @@ typedef enum {
-     VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8,
-     VK_DYNAMIC_STATE_BEGIN_RANGE = VK_DYNAMIC_STATE_VIEWPORT,
-     VK_DYNAMIC_STATE_END_RANGE = VK_DYNAMIC_STATE_STENCIL_REFERENCE,
--    VK_DYNAMIC_STATE_NUM = (VK_DYNAMIC_STATE_STENCIL_REFERENCE - VK_DYNAMIC_STATE_VIEWPORT + 1),
-+    VK_DYNAMIC_STATE_RANGE_SIZE = (VK_DYNAMIC_STATE_STENCIL_REFERENCE - VK_DYNAMIC_STATE_VIEWPORT + 1),
-     VK_DYNAMIC_STATE_MAX_ENUM = 0x7FFFFFFF
- } VkDynamicState;
- 
-@@ -639,7 +639,7 @@ typedef enum {
-     VK_FILTER_LINEAR = 1,
-     VK_FILTER_BEGIN_RANGE = VK_FILTER_NEAREST,
-     VK_FILTER_END_RANGE = VK_FILTER_LINEAR,
--    VK_FILTER_NUM = (VK_FILTER_LINEAR - VK_FILTER_NEAREST + 1),
-+    VK_FILTER_RANGE_SIZE = (VK_FILTER_LINEAR - VK_FILTER_NEAREST + 1),
-     VK_FILTER_MAX_ENUM = 0x7FFFFFFF
- } VkFilter;
- 
-@@ -649,7 +649,7 @@ typedef enum {
-     VK_SAMPLER_MIPMAP_MODE_LINEAR = 2,
-     VK_SAMPLER_MIPMAP_MODE_BEGIN_RANGE = VK_SAMPLER_MIPMAP_MODE_BASE,
-     VK_SAMPLER_MIPMAP_MODE_END_RANGE = VK_SAMPLER_MIPMAP_MODE_LINEAR,
--    VK_SAMPLER_MIPMAP_MODE_NUM = (VK_SAMPLER_MIPMAP_MODE_LINEAR - VK_SAMPLER_MIPMAP_MODE_BASE + 1),
-+    VK_SAMPLER_MIPMAP_MODE_RANGE_SIZE = (VK_SAMPLER_MIPMAP_MODE_LINEAR - VK_SAMPLER_MIPMAP_MODE_BASE + 1),
-     VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 0x7FFFFFFF
- } VkSamplerMipmapMode;
- 
-@@ -661,7 +661,7 @@ typedef enum {
-     VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4,
-     VK_SAMPLER_ADDRESS_MODE_BEGIN_RANGE = VK_SAMPLER_ADDRESS_MODE_REPEAT,
-     VK_SAMPLER_ADDRESS_MODE_END_RANGE = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE,
--    VK_SAMPLER_ADDRESS_MODE_NUM = (VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE - VK_SAMPLER_ADDRESS_MODE_REPEAT + 1),
-+    VK_SAMPLER_ADDRESS_MODE_RANGE_SIZE = (VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE - VK_SAMPLER_ADDRESS_MODE_REPEAT + 1),
-     VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 0x7FFFFFFF
- } VkSamplerAddressMode;
- 
-@@ -674,7 +674,7 @@ typedef enum {
-     VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5,
-     VK_BORDER_COLOR_BEGIN_RANGE = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK,
-     VK_BORDER_COLOR_END_RANGE = VK_BORDER_COLOR_INT_OPAQUE_WHITE,
--    VK_BORDER_COLOR_NUM = (VK_BORDER_COLOR_INT_OPAQUE_WHITE - VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK + 1),
-+    VK_BORDER_COLOR_RANGE_SIZE = (VK_BORDER_COLOR_INT_OPAQUE_WHITE - VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK + 1),
-     VK_BORDER_COLOR_MAX_ENUM = 0x7FFFFFFF
- } VkBorderColor;
- 
-@@ -692,7 +692,7 @@ typedef enum {
-     VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10,
-     VK_DESCRIPTOR_TYPE_BEGIN_RANGE = VK_DESCRIPTOR_TYPE_SAMPLER,
-     VK_DESCRIPTOR_TYPE_END_RANGE = VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT,
--    VK_DESCRIPTOR_TYPE_NUM = (VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT - VK_DESCRIPTOR_TYPE_SAMPLER + 1),
-+    VK_DESCRIPTOR_TYPE_RANGE_SIZE = (VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT - VK_DESCRIPTOR_TYPE_SAMPLER + 1),
-     VK_DESCRIPTOR_TYPE_MAX_ENUM = 0x7FFFFFFF
- } VkDescriptorType;
- 
-@@ -702,7 +702,7 @@ typedef enum {
-     VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2,
-     VK_ATTACHMENT_LOAD_OP_BEGIN_RANGE = VK_ATTACHMENT_LOAD_OP_LOAD,
-     VK_ATTACHMENT_LOAD_OP_END_RANGE = VK_ATTACHMENT_LOAD_OP_DONT_CARE,
--    VK_ATTACHMENT_LOAD_OP_NUM = (VK_ATTACHMENT_LOAD_OP_DONT_CARE - VK_ATTACHMENT_LOAD_OP_LOAD + 1),
-+    VK_ATTACHMENT_LOAD_OP_RANGE_SIZE = (VK_ATTACHMENT_LOAD_OP_DONT_CARE - VK_ATTACHMENT_LOAD_OP_LOAD + 1),
-     VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 0x7FFFFFFF
- } VkAttachmentLoadOp;
- 
-@@ -711,7 +711,7 @@ typedef enum {
-     VK_ATTACHMENT_STORE_OP_DONT_CARE = 1,
-     VK_ATTACHMENT_STORE_OP_BEGIN_RANGE = VK_ATTACHMENT_STORE_OP_STORE,
-     VK_ATTACHMENT_STORE_OP_END_RANGE = VK_ATTACHMENT_STORE_OP_DONT_CARE,
--    VK_ATTACHMENT_STORE_OP_NUM = (VK_ATTACHMENT_STORE_OP_DONT_CARE - VK_ATTACHMENT_STORE_OP_STORE + 1),
-+    VK_ATTACHMENT_STORE_OP_RANGE_SIZE = (VK_ATTACHMENT_STORE_OP_DONT_CARE - VK_ATTACHMENT_STORE_OP_STORE + 1),
-     VK_ATTACHMENT_STORE_OP_MAX_ENUM = 0x7FFFFFFF
- } VkAttachmentStoreOp;
- 
-@@ -720,34 +720,34 @@ typedef enum {
-     VK_PIPELINE_BIND_POINT_COMPUTE = 1,
-     VK_PIPELINE_BIND_POINT_BEGIN_RANGE = VK_PIPELINE_BIND_POINT_GRAPHICS,
-     VK_PIPELINE_BIND_POINT_END_RANGE = VK_PIPELINE_BIND_POINT_COMPUTE,
--    VK_PIPELINE_BIND_POINT_NUM = (VK_PIPELINE_BIND_POINT_COMPUTE - VK_PIPELINE_BIND_POINT_GRAPHICS + 1),
-+    VK_PIPELINE_BIND_POINT_RANGE_SIZE = (VK_PIPELINE_BIND_POINT_COMPUTE - VK_PIPELINE_BIND_POINT_GRAPHICS + 1),
-     VK_PIPELINE_BIND_POINT_MAX_ENUM = 0x7FFFFFFF
- } VkPipelineBindPoint;
- 
- typedef enum {
--    VK_CMD_BUFFER_LEVEL_PRIMARY = 0,
--    VK_CMD_BUFFER_LEVEL_SECONDARY = 1,
--    VK_CMD_BUFFER_LEVEL_BEGIN_RANGE = VK_CMD_BUFFER_LEVEL_PRIMARY,
--    VK_CMD_BUFFER_LEVEL_END_RANGE = VK_CMD_BUFFER_LEVEL_SECONDARY,
--    VK_CMD_BUFFER_LEVEL_NUM = (VK_CMD_BUFFER_LEVEL_SECONDARY - VK_CMD_BUFFER_LEVEL_PRIMARY + 1),
--    VK_CMD_BUFFER_LEVEL_MAX_ENUM = 0x7FFFFFFF
--} VkCmdBufferLevel;
-+    VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0,
-+    VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1,
-+    VK_COMMAND_BUFFER_LEVEL_BEGIN_RANGE = VK_COMMAND_BUFFER_LEVEL_PRIMARY,
-+    VK_COMMAND_BUFFER_LEVEL_END_RANGE = VK_COMMAND_BUFFER_LEVEL_SECONDARY,
-+    VK_COMMAND_BUFFER_LEVEL_RANGE_SIZE = (VK_COMMAND_BUFFER_LEVEL_SECONDARY - VK_COMMAND_BUFFER_LEVEL_PRIMARY + 1),
-+    VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 0x7FFFFFFF
-+} VkCommandBufferLevel;
- 
- typedef enum {
-     VK_INDEX_TYPE_UINT16 = 0,
-     VK_INDEX_TYPE_UINT32 = 1,
-     VK_INDEX_TYPE_BEGIN_RANGE = VK_INDEX_TYPE_UINT16,
-     VK_INDEX_TYPE_END_RANGE = VK_INDEX_TYPE_UINT32,
--    VK_INDEX_TYPE_NUM = (VK_INDEX_TYPE_UINT32 - VK_INDEX_TYPE_UINT16 + 1),
-+    VK_INDEX_TYPE_RANGE_SIZE = (VK_INDEX_TYPE_UINT32 - VK_INDEX_TYPE_UINT16 + 1),
-     VK_INDEX_TYPE_MAX_ENUM = 0x7FFFFFFF
- } VkIndexType;
- 
- typedef enum {
-     VK_RENDER_PASS_CONTENTS_INLINE = 0,
--    VK_RENDER_PASS_CONTENTS_SECONDARY_CMD_BUFFERS = 1,
-+    VK_RENDER_PASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1,
-     VK_RENDER_PASS_CONTENTS_BEGIN_RANGE = VK_RENDER_PASS_CONTENTS_INLINE,
--    VK_RENDER_PASS_CONTENTS_END_RANGE = VK_RENDER_PASS_CONTENTS_SECONDARY_CMD_BUFFERS,
--    VK_RENDER_PASS_CONTENTS_NUM = (VK_RENDER_PASS_CONTENTS_SECONDARY_CMD_BUFFERS - VK_RENDER_PASS_CONTENTS_INLINE + 1),
-+    VK_RENDER_PASS_CONTENTS_END_RANGE = VK_RENDER_PASS_CONTENTS_SECONDARY_COMMAND_BUFFERS,
-+    VK_RENDER_PASS_CONTENTS_RANGE_SIZE = (VK_RENDER_PASS_CONTENTS_SECONDARY_COMMAND_BUFFERS - VK_RENDER_PASS_CONTENTS_INLINE + 1),
-     VK_RENDER_PASS_CONTENTS_MAX_ENUM = 0x7FFFFFFF
- } VkRenderPassContents;
- 
-@@ -764,14 +764,14 @@ typedef enum {
-     VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0x00000080,
-     VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100,
-     VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200,
--    VK_FORMAT_FEATURE_BLIT_SOURCE_BIT = 0x00000400,
--    VK_FORMAT_FEATURE_BLIT_DESTINATION_BIT = 0x00000800,
-+    VK_FORMAT_FEATURE_BLIT_SRC_BIT = 0x00000400,
-+    VK_FORMAT_FEATURE_BLIT_DST_BIT = 0x00000800,
- } VkFormatFeatureFlagBits;
- typedef VkFlags VkFormatFeatureFlags;
- 
- typedef enum {
--    VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT = 0x00000001,
--    VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT = 0x00000002,
-+    VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 0x00000001,
-+    VK_IMAGE_USAGE_TRANSFER_DST_BIT = 0x00000002,
-     VK_IMAGE_USAGE_SAMPLED_BIT = 0x00000004,
-     VK_IMAGE_USAGE_STORAGE_BIT = 0x00000008,
-     VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000010,
-@@ -885,8 +885,8 @@ typedef enum {
- typedef VkFlags VkBufferCreateFlags;
- 
- typedef enum {
--    VK_BUFFER_USAGE_TRANSFER_SOURCE_BIT = 0x00000001,
--    VK_BUFFER_USAGE_TRANSFER_DESTINATION_BIT = 0x00000002,
-+    VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 0x00000001,
-+    VK_BUFFER_USAGE_TRANSFER_DST_BIT = 0x00000002,
-     VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004,
-     VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 0x00000008,
-     VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 0x00000010,
-@@ -925,7 +925,7 @@ typedef VkFlags VkPipelineVertexInputStateCreateFlags;
- typedef VkFlags VkPipelineInputAssemblyStateCreateFlags;
- typedef VkFlags VkPipelineTesselationStateCreateFlags;
- typedef VkFlags VkPipelineViewportStateCreateFlags;
--typedef VkFlags VkPipelineRasterStateCreateFlags;
-+typedef VkFlags VkPipelineRasterizationStateCreateFlags;
- 
- typedef enum {
-     VK_CULL_MODE_NONE = 0,
-@@ -1014,27 +1014,27 @@ typedef enum {
- typedef VkFlags VkDependencyFlags;
- 
- typedef enum {
--    VK_CMD_POOL_CREATE_TRANSIENT_BIT = 0x00000001,
--    VK_CMD_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002,
--} VkCmdPoolCreateFlagBits;
--typedef VkFlags VkCmdPoolCreateFlags;
-+    VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 0x00000001,
-+    VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002,
-+} VkCommandPoolCreateFlagBits;
-+typedef VkFlags VkCommandPoolCreateFlags;
- 
- typedef enum {
--    VK_CMD_POOL_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
--} VkCmdPoolResetFlagBits;
--typedef VkFlags VkCmdPoolResetFlags;
-+    VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
-+} VkCommandPoolResetFlagBits;
-+typedef VkFlags VkCommandPoolResetFlags;
- 
- typedef enum {
--    VK_CMD_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0x00000001,
--    VK_CMD_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 0x00000002,
--    VK_CMD_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 0x00000004,
--} VkCmdBufferUsageFlagBits;
--typedef VkFlags VkCmdBufferUsageFlags;
-+    VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0x00000001,
-+    VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 0x00000002,
-+    VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 0x00000004,
-+} VkCommandBufferUsageFlagBits;
-+typedef VkFlags VkCommandBufferUsageFlags;
- 
- typedef enum {
--    VK_CMD_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
--} VkCmdBufferResetFlagBits;
--typedef VkFlags VkCmdBufferResetFlags;
-+    VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
-+} VkCommandBufferResetFlagBits;
-+typedef VkFlags VkCommandBufferResetFlags;
- 
- typedef enum {
-     VK_STENCIL_FACE_NONE = 0,
-@@ -1049,42 +1049,42 @@ typedef enum {
- } VkQueryControlFlagBits;
- typedef VkFlags VkQueryControlFlags;
- 
--typedef void* (VKAPI *PFN_vkAllocFunction)(
-+typedef void* (VKAPI *PFN_vkAllocationFunction)(
-     void*              pUserData,
-     size_t             size,
-     size_t             alignment,
--    VkSystemAllocScope allocScope);
-+    VkSystemAllocationScope allocationScope);
- 
--typedef void* (VKAPI *PFN_vkReallocFunction)(
-+typedef void* (VKAPI *PFN_vkReallocationFunction)(
-     void*              pUserData,
-     void*              pOriginal,
-     size_t             size,
-     size_t             alignment,
--    VkSystemAllocScope allocScope);
-+    VkSystemAllocationScope allocationScope);
- 
- typedef void (VKAPI *PFN_vkFreeFunction)(
-     void*                           pUserData,
--    void*                           pMem);
-+    void*                           pMemory);
- 
--typedef void (VKAPI *PFN_vkInternalAllocNotification)(
-+typedef void (VKAPI *PFN_vkInternalAllocationNotification)(
-     void*              pUserData,
-     size_t                           size,
--    VkInternalAllocType              allocType,
--    VkSystemAllocScope               allocScope);
-+    VkInternalAllocationType              allocationType,
-+    VkSystemAllocationScope               allocationScope);
- 
- typedef void (VKAPI *PFN_vkInternalFreeNotification)(
-     void*              pUserData,
-     size_t                           size,
--    VkInternalAllocType              allocType,
--    VkSystemAllocScope               allocScope);
-+    VkInternalAllocationType              allocationType,
-+    VkSystemAllocationScope               allocationScope);
- 
- typedef void (VKAPI *PFN_vkVoidFunction)(void);
- 
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
--    const char*                                 pAppName;
--    uint32_t                                    appVersion;
-+    const char*                                 pApplicationName;
-+    uint32_t                                    applicationVersion;
-     const char*                                 pEngineName;
-     uint32_t                                    engineVersion;
-     uint32_t                                    apiVersion;
-@@ -1094,7 +1094,7 @@ typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkInstanceCreateFlags                       flags;
--    const VkApplicationInfo*                    pAppInfo;
-+    const VkApplicationInfo*                    pApplicationInfo;
-     uint32_t                                    enabledLayerNameCount;
-     const char*const*                           ppEnabledLayerNames;
-     uint32_t                                    enabledExtensionNameCount;
-@@ -1103,12 +1103,12 @@ typedef struct {
- 
- typedef struct {
-     void*                                       pUserData;
--    PFN_vkAllocFunction                         pfnAlloc;
--    PFN_vkReallocFunction                       pfnRealloc;
-+    PFN_vkAllocationFunction                    pfnAllocation;
-+    PFN_vkReallocationFunction                  pfnReallocation;
-     PFN_vkFreeFunction                          pfnFree;
--    PFN_vkInternalAllocNotification             pfnInternalAlloc;
-+    PFN_vkInternalAllocationNotification        pfnInternalAllocation;
-     PFN_vkInternalFreeNotification              pfnInternalFree;
--} VkAllocCallbacks;
-+} VkAllocationCallbacks;
- 
- typedef struct {
-     VkBool32                                    robustBufferAccess;
-@@ -1118,7 +1118,7 @@ typedef struct {
-     VkBool32                                    geometryShader;
-     VkBool32                                    tessellationShader;
-     VkBool32                                    sampleRateShading;
--    VkBool32                                    dualSourceBlend;
-+    VkBool32                                    dualSrcBlend;
-     VkBool32                                    logicOp;
-     VkBool32                                    multiDrawIndirect;
-     VkBool32                                    depthClamp;
-@@ -1215,7 +1215,7 @@ typedef struct {
-     uint32_t                                    maxVertexInputAttributeOffset;
-     uint32_t                                    maxVertexInputBindingStride;
-     uint32_t                                    maxVertexOutputComponents;
--    uint32_t                                    maxTessellationGenLevel;
-+    uint32_t                                    maxTessellationGenerationLevel;
-     uint32_t                                    maxTessellationPatchSize;
-     uint32_t                                    maxTessellationControlPerVertexInputComponents;
-     uint32_t                                    maxTessellationControlPerVertexOutputComponents;
-@@ -1230,7 +1230,7 @@ typedef struct {
-     uint32_t                                    maxGeometryTotalOutputComponents;
-     uint32_t                                    maxFragmentInputComponents;
-     uint32_t                                    maxFragmentOutputAttachments;
--    uint32_t                                    maxFragmentDualSourceAttachments;
-+    uint32_t                                    maxFragmentDualSrcAttachments;
-     uint32_t                                    maxFragmentCombinedOutputResources;
-     uint32_t                                    maxComputeSharedMemorySize;
-     uint32_t                                    maxComputeWorkGroupCount[3];
-@@ -1352,14 +1352,14 @@ typedef struct {
- } VkDeviceCreateInfo;
- 
- typedef struct {
--    char                                        extName[VK_MAX_EXTENSION_NAME];
-+    char                                        extensionName[VK_MAX_EXTENSION_NAME];
-     uint32_t                                    specVersion;
- } VkExtensionProperties;
- 
- typedef struct {
-     char                                        layerName[VK_MAX_EXTENSION_NAME];
-     uint32_t                                    specVersion;
--    uint32_t                                    implVersion;
-+    uint32_t                                    implementationVersion;
-     char                                        description[VK_MAX_DESCRIPTION];
- } VkLayerProperties;
- 
-@@ -1369,7 +1369,7 @@ typedef struct {
-     uint32_t                                    waitSemaphoreCount;
-     const VkSemaphore*                          pWaitSemaphores;
-     uint32_t                                    commandBufferCount;
--    const VkCmdBuffer*                          pCommandBuffers;
-+    const VkCommandBuffer*                      pCommandBuffers;
-     uint32_t                                    signalSemaphoreCount;
-     const VkSemaphore*                          pSignalSemaphores;
- } VkSubmitInfo;
-@@ -1379,12 +1379,12 @@ typedef struct {
-     const void*                                 pNext;
-     VkDeviceSize                                allocationSize;
-     uint32_t                                    memoryTypeIndex;
--} VkMemoryAllocInfo;
-+} VkMemoryAllocateInfo;
- 
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
--    VkDeviceMemory                              mem;
-+    VkDeviceMemory                              memory;
-     VkDeviceSize                                offset;
-     VkDeviceSize                                size;
- } VkMappedMemoryRange;
-@@ -1412,8 +1412,8 @@ typedef struct {
- typedef struct {
-     VkDeviceSize                                resourceOffset;
-     VkDeviceSize                                size;
--    VkDeviceMemory                              mem;
--    VkDeviceSize                                memOffset;
-+    VkDeviceMemory                              memory;
-+    VkDeviceSize                                memoryOffset;
-     VkSparseMemoryBindFlags                     flags;
- } VkSparseMemoryBind;
- 
-@@ -1445,8 +1445,8 @@ typedef struct {
-     VkImageSubresource                          subresource;
-     VkOffset3D                                  offset;
-     VkExtent3D                                  extent;
--    VkDeviceMemory                              mem;
--    VkDeviceSize                                memOffset;
-+    VkDeviceMemory                              memory;
-+    VkDeviceSize                                memoryOffset;
-     VkSparseMemoryBindFlags                     flags;
- } VkSparseImageMemoryBind;
- 
-@@ -1554,9 +1554,9 @@ typedef struct {
- typedef struct {
-     VkImageAspectFlags                          aspectMask;
-     uint32_t                                    baseMipLevel;
--    uint32_t                                    numLevels;
-+    uint32_t                                    levelCount;
-     uint32_t                                    baseArrayLayer;
--    uint32_t                                    numLayers;
-+    uint32_t                                    layerCount;
- } VkImageSubresourceRange;
- 
- typedef struct {
-@@ -1593,7 +1593,6 @@ typedef struct {
-     VkPipelineCacheCreateFlags                  flags;
-     size_t                                      initialDataSize;
-     const void*                                 pInitialData;
--    size_t                                      maxSize;
- } VkPipelineCacheCreateInfo;
- 
- typedef struct {
-@@ -1692,7 +1691,7 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
--    VkPipelineRasterStateCreateFlags            flags;
-+    VkPipelineRasterizationStateCreateFlags     flags;
-     VkBool32                                    depthClampEnable;
-     VkBool32                                    rasterizerDiscardEnable;
-     VkFillMode                                  fillMode;
-@@ -1703,13 +1702,13 @@ typedef struct {
-     float                                       depthBiasClamp;
-     float                                       depthBiasSlopeFactor;
-     float                                       lineWidth;
--} VkPipelineRasterStateCreateInfo;
-+} VkPipelineRasterizationStateCreateInfo;
- 
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkPipelineMultisampleStateCreateFlags       flags;
--    uint32_t                                    rasterSamples;
-+    uint32_t                                    rasterizationSamples;
-     VkBool32                                    sampleShadingEnable;
-     float                                       minSampleShading;
-     const VkSampleMask*                         pSampleMask;
-@@ -1745,10 +1744,10 @@ typedef struct {
- typedef struct {
-     VkBool32                                    blendEnable;
-     VkBlend                                     srcBlendColor;
--    VkBlend                                     destBlendColor;
-+    VkBlend                                     dstBlendColor;
-     VkBlendOp                                   blendOpColor;
-     VkBlend                                     srcBlendAlpha;
--    VkBlend                                     destBlendAlpha;
-+    VkBlend                                     dstBlendAlpha;
-     VkBlendOp                                   blendOpAlpha;
-     VkChannelFlags                              channelWriteMask;
- } VkPipelineColorBlendAttachmentState;
-@@ -1782,7 +1781,7 @@ typedef struct {
-     const VkPipelineInputAssemblyStateCreateInfo* pInputAssemblyState;
-     const VkPipelineTessellationStateCreateInfo* pTessellationState;
-     const VkPipelineViewportStateCreateInfo*    pViewportState;
--    const VkPipelineRasterStateCreateInfo*      pRasterState;
-+    const VkPipelineRasterizationStateCreateInfo* pRasterizationState;
-     const VkPipelineMultisampleStateCreateInfo* pMultisampleState;
-     const VkPipelineDepthStencilStateCreateInfo* pDepthStencilState;
-     const VkPipelineColorBlendStateCreateInfo*  pColorBlendState;
-@@ -1875,7 +1874,7 @@ typedef struct {
-     VkDescriptorPool                            descriptorPool;
-     uint32_t                                    setLayoutCount;
-     const VkDescriptorSetLayout*                pSetLayouts;
--} VkDescriptorSetAllocInfo;
-+} VkDescriptorSetAllocateInfo;
- 
- typedef struct {
-     VkSampler                                   sampler;
-@@ -1892,9 +1891,9 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
--    VkDescriptorSet                             destSet;
--    uint32_t                                    destBinding;
--    uint32_t                                    destArrayElement;
-+    VkDescriptorSet                             dstSet;
-+    uint32_t                                    dstBinding;
-+    uint32_t                                    dstArrayElement;
-     uint32_t                                    descriptorCount;
-     VkDescriptorType                            descriptorType;
-     const VkDescriptorImageInfo*                pImageInfo;
-@@ -1908,9 +1907,9 @@ typedef struct {
-     VkDescriptorSet                             srcSet;
-     uint32_t                                    srcBinding;
-     uint32_t                                    srcArrayElement;
--    VkDescriptorSet                             destSet;
--    uint32_t                                    destBinding;
--    uint32_t                                    destArrayElement;
-+    VkDescriptorSet                             dstSet;
-+    uint32_t                                    dstBinding;
-+    uint32_t                                    dstArrayElement;
-     uint32_t                                    descriptorCount;
- } VkCopyDescriptorSet;
- 
-@@ -1958,9 +1957,9 @@ typedef struct {
- 
- typedef struct {
-     uint32_t                                    srcSubpass;
--    uint32_t                                    destSubpass;
-+    uint32_t                                    dstSubpass;
-     VkPipelineStageFlags                        srcStageMask;
--    VkPipelineStageFlags                        destStageMask;
-+    VkPipelineStageFlags                        dstStageMask;
-     VkMemoryOutputFlags                         outputMask;
-     VkMemoryInputFlags                          inputMask;
-     VkDependencyFlags                           dependencyFlags;
-@@ -1981,30 +1980,30 @@ typedef struct {
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
--    VkCmdPoolCreateFlags                        flags;
-+    VkCommandPoolCreateFlags                    flags;
-     uint32_t                                    queueFamilyIndex;
--} VkCmdPoolCreateInfo;
-+} VkCommandPoolCreateInfo;
- 
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
--    VkCmdPool                                   cmdPool;
--    VkCmdBufferLevel                            level;
-+    VkCommandPool                               commandPool;
-+    VkCommandBufferLevel                        level;
-     uint32_t                                    bufferCount;
--} VkCmdBufferAllocInfo;
-+} VkCommandBufferAllocateInfo;
- 
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
--    VkCmdBufferUsageFlags                       flags;
-+    VkCommandBufferUsageFlags                   flags;
-     VkRenderPass                                renderPass;
-     uint32_t                                    subpass;
-     VkFramebuffer                               framebuffer;
--} VkCmdBufferBeginInfo;
-+} VkCommandBufferBeginInfo;
- 
- typedef struct {
-     VkDeviceSize                                srcOffset;
--    VkDeviceSize                                destOffset;
-+    VkDeviceSize                                dstOffset;
-     VkDeviceSize                                size;
- } VkBufferCopy;
- 
-@@ -2012,14 +2011,14 @@ typedef struct {
-     VkImageAspectFlags                          aspect;
-     uint32_t                                    mipLevel;
-     uint32_t                                    baseArrayLayer;
--    uint32_t                                    numLayers;
-+    uint32_t                                    layerCount;
- } VkImageSubresourceCopy;
- 
- typedef struct {
-     VkImageSubresourceCopy                      srcSubresource;
-     VkOffset3D                                  srcOffset;
--    VkImageSubresourceCopy                      destSubresource;
--    VkOffset3D                                  destOffset;
-+    VkImageSubresourceCopy                      dstSubresource;
-+    VkOffset3D                                  dstOffset;
-     VkExtent3D                                  extent;
- } VkImageCopy;
- 
-@@ -2027,9 +2026,9 @@ typedef struct {
-     VkImageSubresourceCopy                      srcSubresource;
-     VkOffset3D                                  srcOffset;
-     VkExtent3D                                  srcExtent;
--    VkImageSubresourceCopy                      destSubresource;
--    VkOffset3D                                  destOffset;
--    VkExtent3D                                  destExtent;
-+    VkImageSubresourceCopy                      dstSubresource;
-+    VkOffset3D                                  dstOffset;
-+    VkExtent3D                                  dstExtent;
- } VkImageBlit;
- 
- typedef struct {
-@@ -2066,14 +2065,14 @@ typedef struct {
- typedef struct {
-     VkRect2D                                    rect;
-     uint32_t                                    baseArrayLayer;
--    uint32_t                                    numLayers;
-+    uint32_t                                    layerCount;
- } VkClearRect;
- 
- typedef struct {
-     VkImageSubresourceCopy                      srcSubresource;
-     VkOffset3D                                  srcOffset;
--    VkImageSubresourceCopy                      destSubresource;
--    VkOffset3D                                  destOffset;
-+    VkImageSubresourceCopy                      dstSubresource;
-+    VkOffset3D                                  dstOffset;
-     VkExtent3D                                  extent;
- } VkImageResolve;
- 
-@@ -2093,7 +2092,7 @@ typedef struct {
-     VkMemoryOutputFlags                         outputMask;
-     VkMemoryInputFlags                          inputMask;
-     uint32_t                                    srcQueueFamilyIndex;
--    uint32_t                                    destQueueFamilyIndex;
-+    uint32_t                                    dstQueueFamilyIndex;
-     VkBuffer                                    buffer;
-     VkDeviceSize                                offset;
-     VkDeviceSize                                size;
-@@ -2103,7 +2102,7 @@ typedef struct {
-     uint32_t                                    x;
-     uint32_t                                    y;
-     uint32_t                                    z;
--} VkDispatchIndirectCmd;
-+} VkDispatchIndirectCommand;
- 
- typedef struct {
-     uint32_t                                    indexCount;
-@@ -2111,14 +2110,14 @@ typedef struct {
-     uint32_t                                    firstIndex;
-     int32_t                                     vertexOffset;
-     uint32_t                                    firstInstance;
--} VkDrawIndexedIndirectCmd;
-+} VkDrawIndexedIndirectCommand;
- 
- typedef struct {
-     uint32_t                                    vertexCount;
-     uint32_t                                    instanceCount;
-     uint32_t                                    firstVertex;
-     uint32_t                                    firstInstance;
--} VkDrawIndirectCmd;
-+} VkDrawIndirectCommand;
- 
- typedef struct {
-     VkStructureType                             sType;
-@@ -2128,7 +2127,7 @@ typedef struct {
-     VkImageLayout                               oldLayout;
-     VkImageLayout                               newLayout;
-     uint32_t                                    srcQueueFamilyIndex;
--    uint32_t                                    destQueueFamilyIndex;
-+    uint32_t                                    dstQueueFamilyIndex;
-     VkImage                                     image;
-     VkImageSubresourceRange                     subresourceRange;
- } VkImageMemoryBarrier;
-@@ -2141,8 +2140,8 @@ typedef struct {
- } VkMemoryBarrier;
- 
- 
--typedef VkResult (VKAPI *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkInstance* pInstance);
--typedef void (VKAPI *PFN_vkDestroyInstance)(VkInstance instance, const VkAllocCallbacks* pAllocator);
-+typedef VkResult (VKAPI *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance);
-+typedef void (VKAPI *PFN_vkDestroyInstance)(VkInstance instance, const VkAllocationCallbacks* pAllocator);
- typedef VkResult (VKAPI *PFN_vkEnumeratePhysicalDevices)(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);
- typedef void (VKAPI *PFN_vkGetPhysicalDeviceFeatures)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures);
- typedef void (VKAPI *PFN_vkGetPhysicalDeviceFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties);
-@@ -2152,8 +2151,8 @@ typedef void (VKAPI *PFN_vkGetPhysicalDeviceQueueFamilyProperties)(VkPhysicalDev
- typedef void (VKAPI *PFN_vkGetPhysicalDeviceMemoryProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties);
- typedef PFN_vkVoidFunction (VKAPI *PFN_vkGetInstanceProcAddr)(VkInstance instance, const char* pName);
- typedef PFN_vkVoidFunction (VKAPI *PFN_vkGetDeviceProcAddr)(VkDevice device, const char* pName);
--typedef VkResult (VKAPI *PFN_vkCreateDevice)(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkDevice* pDevice);
--typedef void (VKAPI *PFN_vkDestroyDevice)(VkDevice device, const VkAllocCallbacks* pAllocator);
-+typedef VkResult (VKAPI *PFN_vkCreateDevice)(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice);
-+typedef void (VKAPI *PFN_vkDestroyDevice)(VkDevice device, const VkAllocationCallbacks* pAllocator);
- typedef VkResult (VKAPI *PFN_vkEnumerateInstanceExtensionProperties)(const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties);
- typedef VkResult (VKAPI *PFN_vkEnumerateDeviceExtensionProperties)(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties);
- typedef VkResult (VKAPI *PFN_vkEnumerateInstanceLayerProperties)(uint32_t* pPropertyCount, VkLayerProperties* pProperties);
-@@ -2162,134 +2161,134 @@ typedef void (VKAPI *PFN_vkGetDeviceQueue)(VkDevice device, uint32_t queueFamily
- typedef VkResult (VKAPI *PFN_vkQueueSubmit)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence);
- typedef VkResult (VKAPI *PFN_vkQueueWaitIdle)(VkQueue queue);
- typedef VkResult (VKAPI *PFN_vkDeviceWaitIdle)(VkDevice device);
--typedef VkResult (VKAPI *PFN_vkAllocMemory)(VkDevice device, const VkMemoryAllocInfo* pAllocInfo, const VkAllocCallbacks* pAllocator, VkDeviceMemory* pMem);
--typedef void (VKAPI *PFN_vkFreeMemory)(VkDevice device, VkDeviceMemory mem, const VkAllocCallbacks* pAllocator);
--typedef VkResult (VKAPI *PFN_vkMapMemory)(VkDevice device, VkDeviceMemory mem, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData);
--typedef void (VKAPI *PFN_vkUnmapMemory)(VkDevice device, VkDeviceMemory mem);
--typedef VkResult (VKAPI *PFN_vkFlushMappedMemoryRanges)(VkDevice device, uint32_t memRangeCount, const VkMappedMemoryRange* pMemRanges);
--typedef VkResult (VKAPI *PFN_vkInvalidateMappedMemoryRanges)(VkDevice device, uint32_t memRangeCount, const VkMappedMemoryRange* pMemRanges);
-+typedef VkResult (VKAPI *PFN_vkAllocateMemory)(VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory);
-+typedef void (VKAPI *PFN_vkFreeMemory)(VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator);
-+typedef VkResult (VKAPI *PFN_vkMapMemory)(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData);
-+typedef void (VKAPI *PFN_vkUnmapMemory)(VkDevice device, VkDeviceMemory memory);
-+typedef VkResult (VKAPI *PFN_vkFlushMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
-+typedef VkResult (VKAPI *PFN_vkInvalidateMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
- typedef void (VKAPI *PFN_vkGetDeviceMemoryCommitment)(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes);
--typedef VkResult (VKAPI *PFN_vkBindBufferMemory)(VkDevice device, VkBuffer buffer, VkDeviceMemory mem, VkDeviceSize memOffset);
--typedef VkResult (VKAPI *PFN_vkBindImageMemory)(VkDevice device, VkImage image, VkDeviceMemory mem, VkDeviceSize memOffset);
-+typedef VkResult (VKAPI *PFN_vkBindBufferMemory)(VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset);
-+typedef VkResult (VKAPI *PFN_vkBindImageMemory)(VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset);
- typedef void (VKAPI *PFN_vkGetBufferMemoryRequirements)(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements);
- typedef void (VKAPI *PFN_vkGetImageMemoryRequirements)(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements);
- typedef void (VKAPI *PFN_vkGetImageSparseMemoryRequirements)(VkDevice device, VkImage image, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
- typedef void (VKAPI *PFN_vkGetPhysicalDeviceSparseImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, uint32_t samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties);
- typedef VkResult (VKAPI *PFN_vkQueueBindSparse)(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence);
--typedef VkResult (VKAPI *PFN_vkCreateFence)(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkFence* pFence);
--typedef void (VKAPI *PFN_vkDestroyFence)(VkDevice device, VkFence fence, const VkAllocCallbacks* pAllocator);
-+typedef VkResult (VKAPI *PFN_vkCreateFence)(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
-+typedef void (VKAPI *PFN_vkDestroyFence)(VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator);
- typedef VkResult (VKAPI *PFN_vkResetFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences);
- typedef VkResult (VKAPI *PFN_vkGetFenceStatus)(VkDevice device, VkFence fence);
- typedef VkResult (VKAPI *PFN_vkWaitForFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout);
--typedef VkResult (VKAPI *PFN_vkCreateSemaphore)(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkSemaphore* pSemaphore);
--typedef void (VKAPI *PFN_vkDestroySemaphore)(VkDevice device, VkSemaphore semaphore, const VkAllocCallbacks* pAllocator);
--typedef VkResult (VKAPI *PFN_vkCreateEvent)(VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkEvent* pEvent);
--typedef void (VKAPI *PFN_vkDestroyEvent)(VkDevice device, VkEvent event, const VkAllocCallbacks* pAllocator);
-+typedef VkResult (VKAPI *PFN_vkCreateSemaphore)(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore);
-+typedef void (VKAPI *PFN_vkDestroySemaphore)(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator);
-+typedef VkResult (VKAPI *PFN_vkCreateEvent)(VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent);
-+typedef void (VKAPI *PFN_vkDestroyEvent)(VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator);
- typedef VkResult (VKAPI *PFN_vkGetEventStatus)(VkDevice device, VkEvent event);
- typedef VkResult (VKAPI *PFN_vkSetEvent)(VkDevice device, VkEvent event);
- typedef VkResult (VKAPI *PFN_vkResetEvent)(VkDevice device, VkEvent event);
--typedef VkResult (VKAPI *PFN_vkCreateQueryPool)(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkQueryPool* pQueryPool);
--typedef void (VKAPI *PFN_vkDestroyQueryPool)(VkDevice device, VkQueryPool queryPool, const VkAllocCallbacks* pAllocator);
-+typedef VkResult (VKAPI *PFN_vkCreateQueryPool)(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool);
-+typedef void (VKAPI *PFN_vkDestroyQueryPool)(VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator);
- typedef VkResult (VKAPI *PFN_vkGetQueryPoolResults)(VkDevice device, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, size_t dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags);
--typedef VkResult (VKAPI *PFN_vkCreateBuffer)(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkBuffer* pBuffer);
--typedef void (VKAPI *PFN_vkDestroyBuffer)(VkDevice device, VkBuffer buffer, const VkAllocCallbacks* pAllocator);
--typedef VkResult (VKAPI *PFN_vkCreateBufferView)(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkBufferView* pView);
--typedef void (VKAPI *PFN_vkDestroyBufferView)(VkDevice device, VkBufferView bufferView, const VkAllocCallbacks* pAllocator);
--typedef VkResult (VKAPI *PFN_vkCreateImage)(VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkImage* pImage);
--typedef void (VKAPI *PFN_vkDestroyImage)(VkDevice device, VkImage image, const VkAllocCallbacks* pAllocator);
-+typedef VkResult (VKAPI *PFN_vkCreateBuffer)(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer);
-+typedef void (VKAPI *PFN_vkDestroyBuffer)(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator);
-+typedef VkResult (VKAPI *PFN_vkCreateBufferView)(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView);
-+typedef void (VKAPI *PFN_vkDestroyBufferView)(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator);
-+typedef VkResult (VKAPI *PFN_vkCreateImage)(VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage);
-+typedef void (VKAPI *PFN_vkDestroyImage)(VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator);
- typedef void (VKAPI *PFN_vkGetImageSubresourceLayout)(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout);
--typedef VkResult (VKAPI *PFN_vkCreateImageView)(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkImageView* pView);
--typedef void (VKAPI *PFN_vkDestroyImageView)(VkDevice device, VkImageView imageView, const VkAllocCallbacks* pAllocator);
--typedef VkResult (VKAPI *PFN_vkCreateShaderModule)(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkShaderModule* pShaderModule);
--typedef void (VKAPI *PFN_vkDestroyShaderModule)(VkDevice device, VkShaderModule shaderModule, const VkAllocCallbacks* pAllocator);
--typedef VkResult (VKAPI *PFN_vkCreateShader)(VkDevice device, const VkShaderCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkShader* pShader);
--typedef void (VKAPI *PFN_vkDestroyShader)(VkDevice device, VkShader shader, const VkAllocCallbacks* pAllocator);
--typedef VkResult (VKAPI *PFN_vkCreatePipelineCache)(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkPipelineCache* pPipelineCache);
--typedef void (VKAPI *PFN_vkDestroyPipelineCache)(VkDevice device, VkPipelineCache pipelineCache, const VkAllocCallbacks* pAllocator);
-+typedef VkResult (VKAPI *PFN_vkCreateImageView)(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView);
-+typedef void (VKAPI *PFN_vkDestroyImageView)(VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator);
-+typedef VkResult (VKAPI *PFN_vkCreateShaderModule)(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule);
-+typedef void (VKAPI *PFN_vkDestroyShaderModule)(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator);
-+typedef VkResult (VKAPI *PFN_vkCreateShader)(VkDevice device, const VkShaderCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShader* pShader);
-+typedef void (VKAPI *PFN_vkDestroyShader)(VkDevice device, VkShader shader, const VkAllocationCallbacks* pAllocator);
-+typedef VkResult (VKAPI *PFN_vkCreatePipelineCache)(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache);
-+typedef void (VKAPI *PFN_vkDestroyPipelineCache)(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator);
- typedef VkResult (VKAPI *PFN_vkGetPipelineCacheData)(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData);
--typedef VkResult (VKAPI *PFN_vkMergePipelineCaches)(VkDevice device, VkPipelineCache destCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches);
--typedef VkResult (VKAPI *PFN_vkCreateGraphicsPipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocCallbacks* pAllocator, VkPipeline* pPipelines);
--typedef VkResult (VKAPI *PFN_vkCreateComputePipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocCallbacks* pAllocator, VkPipeline* pPipelines);
--typedef void (VKAPI *PFN_vkDestroyPipeline)(VkDevice device, VkPipeline pipeline, const VkAllocCallbacks* pAllocator);
--typedef VkResult (VKAPI *PFN_vkCreatePipelineLayout)(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout);
--typedef void (VKAPI *PFN_vkDestroyPipelineLayout)(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocCallbacks* pAllocator);
--typedef VkResult (VKAPI *PFN_vkCreateSampler)(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkSampler* pSampler);
--typedef void (VKAPI *PFN_vkDestroySampler)(VkDevice device, VkSampler sampler, const VkAllocCallbacks* pAllocator);
--typedef VkResult (VKAPI *PFN_vkCreateDescriptorSetLayout)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout);
--typedef void (VKAPI *PFN_vkDestroyDescriptorSetLayout)(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocCallbacks* pAllocator);
--typedef VkResult (VKAPI *PFN_vkCreateDescriptorPool)(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool);
--typedef void (VKAPI *PFN_vkDestroyDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocCallbacks* pAllocator);
-+typedef VkResult (VKAPI *PFN_vkMergePipelineCaches)(VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches);
-+typedef VkResult (VKAPI *PFN_vkCreateGraphicsPipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
-+typedef VkResult (VKAPI *PFN_vkCreateComputePipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
-+typedef void (VKAPI *PFN_vkDestroyPipeline)(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator);
-+typedef VkResult (VKAPI *PFN_vkCreatePipelineLayout)(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout);
-+typedef void (VKAPI *PFN_vkDestroyPipelineLayout)(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator);
-+typedef VkResult (VKAPI *PFN_vkCreateSampler)(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler);
-+typedef void (VKAPI *PFN_vkDestroySampler)(VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator);
-+typedef VkResult (VKAPI *PFN_vkCreateDescriptorSetLayout)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout);
-+typedef void (VKAPI *PFN_vkDestroyDescriptorSetLayout)(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator);
-+typedef VkResult (VKAPI *PFN_vkCreateDescriptorPool)(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool);
-+typedef void (VKAPI *PFN_vkDestroyDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator);
- typedef VkResult (VKAPI *PFN_vkResetDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags);
--typedef VkResult (VKAPI *PFN_vkAllocDescriptorSets)(VkDevice device, const VkDescriptorSetAllocInfo* pAllocInfo, VkDescriptorSet* pDescriptorSets);
-+typedef VkResult (VKAPI *PFN_vkAllocateDescriptorSets)(VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets);
- typedef VkResult (VKAPI *PFN_vkFreeDescriptorSets)(VkDevice device, VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets);
- typedef void (VKAPI *PFN_vkUpdateDescriptorSets)(VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies);
--typedef VkResult (VKAPI *PFN_vkCreateFramebuffer)(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkFramebuffer* pFramebuffer);
--typedef void (VKAPI *PFN_vkDestroyFramebuffer)(VkDevice device, VkFramebuffer framebuffer, const VkAllocCallbacks* pAllocator);
--typedef VkResult (VKAPI *PFN_vkCreateRenderPass)(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkRenderPass* pRenderPass);
--typedef void (VKAPI *PFN_vkDestroyRenderPass)(VkDevice device, VkRenderPass renderPass, const VkAllocCallbacks* pAllocator);
-+typedef VkResult (VKAPI *PFN_vkCreateFramebuffer)(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer);
-+typedef void (VKAPI *PFN_vkDestroyFramebuffer)(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator);
-+typedef VkResult (VKAPI *PFN_vkCreateRenderPass)(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
-+typedef void (VKAPI *PFN_vkDestroyRenderPass)(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator);
- typedef void (VKAPI *PFN_vkGetRenderAreaGranularity)(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity);
--typedef VkResult (VKAPI *PFN_vkCreateCommandPool)(VkDevice device, const VkCmdPoolCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkCmdPool* pCmdPool);
--typedef void (VKAPI *PFN_vkDestroyCommandPool)(VkDevice device, VkCmdPool cmdPool, const VkAllocCallbacks* pAllocator);
--typedef VkResult (VKAPI *PFN_vkResetCommandPool)(VkDevice device, VkCmdPool cmdPool, VkCmdPoolResetFlags flags);
--typedef VkResult (VKAPI *PFN_vkAllocCommandBuffers)(VkDevice device, const VkCmdBufferAllocInfo* pAllocInfo, VkCmdBuffer* pCmdBuffers);
--typedef void (VKAPI *PFN_vkFreeCommandBuffers)(VkDevice device, VkCmdPool cmdPool, uint32_t commandBufferCount, const VkCmdBuffer* pCommandBuffers);
--typedef VkResult (VKAPI *PFN_vkBeginCommandBuffer)(VkCmdBuffer cmdBuffer, const VkCmdBufferBeginInfo* pBeginInfo);
--typedef VkResult (VKAPI *PFN_vkEndCommandBuffer)(VkCmdBuffer cmdBuffer);
--typedef VkResult (VKAPI *PFN_vkResetCommandBuffer)(VkCmdBuffer cmdBuffer, VkCmdBufferResetFlags flags);
--typedef void (VKAPI *PFN_vkCmdBindPipeline)(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline);
--typedef void (VKAPI *PFN_vkCmdSetViewport)(VkCmdBuffer cmdBuffer, uint32_t viewportCount, const VkViewport* pViewports);
--typedef void (VKAPI *PFN_vkCmdSetScissor)(VkCmdBuffer cmdBuffer, uint32_t scissorCount, const VkRect2D* pScissors);
--typedef void (VKAPI *PFN_vkCmdSetLineWidth)(VkCmdBuffer cmdBuffer, float lineWidth);
--typedef void (VKAPI *PFN_vkCmdSetDepthBias)(VkCmdBuffer cmdBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor);
--typedef void (VKAPI *PFN_vkCmdSetBlendConstants)(VkCmdBuffer cmdBuffer, const float blendConstants[4]);
--typedef void (VKAPI *PFN_vkCmdSetDepthBounds)(VkCmdBuffer cmdBuffer, float minDepthBounds, float maxDepthBounds);
--typedef void (VKAPI *PFN_vkCmdSetStencilCompareMask)(VkCmdBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilCompareMask);
--typedef void (VKAPI *PFN_vkCmdSetStencilWriteMask)(VkCmdBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilWriteMask);
--typedef void (VKAPI *PFN_vkCmdSetStencilReference)(VkCmdBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilReference);
--typedef void (VKAPI *PFN_vkCmdBindDescriptorSets)(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets);
--typedef void (VKAPI *PFN_vkCmdBindIndexBuffer)(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType);
--typedef void (VKAPI *PFN_vkCmdBindVertexBuffers)(VkCmdBuffer cmdBuffer, uint32_t startBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets);
--typedef void (VKAPI *PFN_vkCmdDraw)(VkCmdBuffer cmdBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance);
--typedef void (VKAPI *PFN_vkCmdDrawIndexed)(VkCmdBuffer cmdBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance);
--typedef void (VKAPI *PFN_vkCmdDrawIndirect)(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
--typedef void (VKAPI *PFN_vkCmdDrawIndexedIndirect)(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
--typedef void (VKAPI *PFN_vkCmdDispatch)(VkCmdBuffer cmdBuffer, uint32_t x, uint32_t y, uint32_t z);
--typedef void (VKAPI *PFN_vkCmdDispatchIndirect)(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset);
--typedef void (VKAPI *PFN_vkCmdCopyBuffer)(VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkBuffer destBuffer, uint32_t regionCount, const VkBufferCopy* pRegions);
--typedef void (VKAPI *PFN_vkCmdCopyImage)(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageCopy* pRegions);
--typedef void (VKAPI *PFN_vkCmdBlitImage)(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter);
--typedef void (VKAPI *PFN_vkCmdCopyBufferToImage)(VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions);
--typedef void (VKAPI *PFN_vkCmdCopyImageToBuffer)(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer destBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions);
--typedef void (VKAPI *PFN_vkCmdUpdateBuffer)(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize dataSize, const uint32_t* pData);
--typedef void (VKAPI *PFN_vkCmdFillBuffer)(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize size, uint32_t data);
--typedef void (VKAPI *PFN_vkCmdClearColorImage)(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
--typedef void (VKAPI *PFN_vkCmdClearDepthStencilImage)(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
--typedef void (VKAPI *PFN_vkCmdClearAttachments)(VkCmdBuffer cmdBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects);
--typedef void (VKAPI *PFN_vkCmdResolveImage)(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageResolve* pRegions);
--typedef void (VKAPI *PFN_vkCmdSetEvent)(VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask);
--typedef void (VKAPI *PFN_vkCmdResetEvent)(VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask);
--typedef void (VKAPI *PFN_vkCmdWaitEvents)(VkCmdBuffer cmdBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, uint32_t memBarrierCount, const void* const* ppMemBarriers);
--typedef void (VKAPI *PFN_vkCmdPipelineBarrier)(VkCmdBuffer cmdBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, VkDependencyFlags dependencyFlags, uint32_t memBarrierCount, const void* const* ppMemBarriers);
--typedef void (VKAPI *PFN_vkCmdBeginQuery)(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot, VkQueryControlFlags flags);
--typedef void (VKAPI *PFN_vkCmdEndQuery)(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot);
--typedef void (VKAPI *PFN_vkCmdResetQueryPool)(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount);
--typedef void (VKAPI *PFN_vkCmdWriteTimestamp)(VkCmdBuffer cmdBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t slot);
--typedef void (VKAPI *PFN_vkCmdCopyQueryPoolResults)(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize stride, VkQueryResultFlags flags);
--typedef void (VKAPI *PFN_vkCmdPushConstants)(VkCmdBuffer cmdBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* values);
--typedef void (VKAPI *PFN_vkCmdBeginRenderPass)(VkCmdBuffer cmdBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkRenderPassContents contents);
--typedef void (VKAPI *PFN_vkCmdNextSubpass)(VkCmdBuffer cmdBuffer, VkRenderPassContents contents);
--typedef void (VKAPI *PFN_vkCmdEndRenderPass)(VkCmdBuffer cmdBuffer);
--typedef void (VKAPI *PFN_vkCmdExecuteCommands)(VkCmdBuffer cmdBuffer, uint32_t cmdBuffersCount, const VkCmdBuffer* pCmdBuffers);
-+typedef VkResult (VKAPI *PFN_vkCreateCommandPool)(VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool);
-+typedef void (VKAPI *PFN_vkDestroyCommandPool)(VkDevice device, VkCommandPool CommandPool, const VkAllocationCallbacks* pAllocator);
-+typedef VkResult (VKAPI *PFN_vkResetCommandPool)(VkDevice device, VkCommandPool CommandPool, VkCommandPoolResetFlags flags);
-+typedef VkResult (VKAPI *PFN_vkAllocateCommandBuffers)(VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers);
-+typedef void (VKAPI *PFN_vkFreeCommandBuffers)(VkDevice device, VkCommandPool CommandPool, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers);
-+typedef VkResult (VKAPI *PFN_vkBeginCommandBuffer)(VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo);
-+typedef VkResult (VKAPI *PFN_vkEndCommandBuffer)(VkCommandBuffer commandBuffer);
-+typedef VkResult (VKAPI *PFN_vkResetCommandBuffer)(VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags);
-+typedef void (VKAPI *PFN_vkCmdBindPipeline)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline);
-+typedef void (VKAPI *PFN_vkCmdSetViewport)(VkCommandBuffer commandBuffer, uint32_t viewportCount, const VkViewport* pViewports);
-+typedef void (VKAPI *PFN_vkCmdSetScissor)(VkCommandBuffer commandBuffer, uint32_t scissorCount, const VkRect2D* pScissors);
-+typedef void (VKAPI *PFN_vkCmdSetLineWidth)(VkCommandBuffer commandBuffer, float lineWidth);
-+typedef void (VKAPI *PFN_vkCmdSetDepthBias)(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor);
-+typedef void (VKAPI *PFN_vkCmdSetBlendConstants)(VkCommandBuffer commandBuffer, const float blendConstants[4]);
-+typedef void (VKAPI *PFN_vkCmdSetDepthBounds)(VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds);
-+typedef void (VKAPI *PFN_vkCmdSetStencilCompareMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t stencilCompareMask);
-+typedef void (VKAPI *PFN_vkCmdSetStencilWriteMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t stencilWriteMask);
-+typedef void (VKAPI *PFN_vkCmdSetStencilReference)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t stencilReference);
-+typedef void (VKAPI *PFN_vkCmdBindDescriptorSets)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets);
-+typedef void (VKAPI *PFN_vkCmdBindIndexBuffer)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType);
-+typedef void (VKAPI *PFN_vkCmdBindVertexBuffers)(VkCommandBuffer commandBuffer, uint32_t startBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets);
-+typedef void (VKAPI *PFN_vkCmdDraw)(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance);
-+typedef void (VKAPI *PFN_vkCmdDrawIndexed)(VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance);
-+typedef void (VKAPI *PFN_vkCmdDrawIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
-+typedef void (VKAPI *PFN_vkCmdDrawIndexedIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
-+typedef void (VKAPI *PFN_vkCmdDispatch)(VkCommandBuffer commandBuffer, uint32_t x, uint32_t y, uint32_t z);
-+typedef void (VKAPI *PFN_vkCmdDispatchIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset);
-+typedef void (VKAPI *PFN_vkCmdCopyBuffer)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy* pRegions);
-+typedef void (VKAPI *PFN_vkCmdCopyImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageCopy* pRegions);
-+typedef void (VKAPI *PFN_vkCmdBlitImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter);
-+typedef void (VKAPI *PFN_vkCmdCopyBufferToImage)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions);
-+typedef void (VKAPI *PFN_vkCmdCopyImageToBuffer)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions);
-+typedef void (VKAPI *PFN_vkCmdUpdateBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const uint32_t* pData);
-+typedef void (VKAPI *PFN_vkCmdFillBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data);
-+typedef void (VKAPI *PFN_vkCmdClearColorImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
-+typedef void (VKAPI *PFN_vkCmdClearDepthStencilImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
-+typedef void (VKAPI *PFN_vkCmdClearAttachments)(VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects);
-+typedef void (VKAPI *PFN_vkCmdResolveImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageResolve* pRegions);
-+typedef void (VKAPI *PFN_vkCmdSetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
-+typedef void (VKAPI *PFN_vkCmdResetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
-+typedef void (VKAPI *PFN_vkCmdWaitEvents)(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const void* const* ppMemoryBarriers);
-+typedef void (VKAPI *PFN_vkCmdPipelineBarrier)(VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const void* const* ppMemoryBarriers);
-+typedef void (VKAPI *PFN_vkCmdBeginQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t slot, VkQueryControlFlags flags);
-+typedef void (VKAPI *PFN_vkCmdEndQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t slot);
-+typedef void (VKAPI *PFN_vkCmdResetQueryPool)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount);
-+typedef void (VKAPI *PFN_vkCmdWriteTimestamp)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t slot);
-+typedef void (VKAPI *PFN_vkCmdCopyQueryPoolResults)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags);
-+typedef void (VKAPI *PFN_vkCmdPushConstants)(VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* values);
-+typedef void (VKAPI *PFN_vkCmdBeginRenderPass)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkRenderPassContents contents);
-+typedef void (VKAPI *PFN_vkCmdNextSubpass)(VkCommandBuffer commandBuffer, VkRenderPassContents contents);
-+typedef void (VKAPI *PFN_vkCmdEndRenderPass)(VkCommandBuffer commandBuffer);
-+typedef void (VKAPI *PFN_vkCmdExecuteCommands)(VkCommandBuffer commandBuffer, uint32_t commandBuffersCount, const VkCommandBuffer* pCommandBuffers);
- 
- #ifdef VK_PROTOTYPES
- VkResult VKAPI vkCreateInstance(
-     const VkInstanceCreateInfo*                 pCreateInfo,
--    const VkAllocCallbacks*                     pAllocator,
-+    const VkAllocationCallbacks*                pAllocator,
-     VkInstance*                                 pInstance);
- 
- void VKAPI vkDestroyInstance(
-     VkInstance                                  instance,
--    const VkAllocCallbacks*                     pAllocator);
-+    const VkAllocationCallbacks*                pAllocator);
- 
- VkResult VKAPI vkEnumeratePhysicalDevices(
-     VkInstance                                  instance,
-@@ -2338,12 +2337,12 @@ PFN_vkVoidFunction VKAPI vkGetDeviceProcAddr(
- VkResult VKAPI vkCreateDevice(
-     VkPhysicalDevice                            physicalDevice,
-     const VkDeviceCreateInfo*                   pCreateInfo,
--    const VkAllocCallbacks*                     pAllocator,
-+    const VkAllocationCallbacks*                pAllocator,
-     VkDevice*                                   pDevice);
- 
- void VKAPI vkDestroyDevice(
-     VkDevice                                    device,
--    const VkAllocCallbacks*                     pAllocator);
-+    const VkAllocationCallbacks*                pAllocator);
- 
- VkResult VKAPI vkEnumerateInstanceExtensionProperties(
-     const char*                                 pLayerName,
-@@ -2383,20 +2382,20 @@ VkResult VKAPI vkQueueWaitIdle(
- VkResult VKAPI vkDeviceWaitIdle(
-     VkDevice                                    device);
- 
--VkResult VKAPI vkAllocMemory(
-+VkResult VKAPI vkAllocateMemory(
-     VkDevice                                    device,
--    const VkMemoryAllocInfo*                    pAllocInfo,
--    const VkAllocCallbacks*                     pAllocator,
--    VkDeviceMemory*                             pMem);
-+    const VkMemoryAllocateInfo*                 pAllocateInfo,
-+    const VkAllocationCallbacks*                pAllocator,
-+    VkDeviceMemory*                             pMemory);
- 
- void VKAPI vkFreeMemory(
-     VkDevice                                    device,
--    VkDeviceMemory                              mem,
--    const VkAllocCallbacks*                     pAllocator);
-+    VkDeviceMemory                              memory,
-+    const VkAllocationCallbacks*                pAllocator);
- 
- VkResult VKAPI vkMapMemory(
-     VkDevice                                    device,
--    VkDeviceMemory                              mem,
-+    VkDeviceMemory                              memory,
-     VkDeviceSize                                offset,
-     VkDeviceSize                                size,
-     VkMemoryMapFlags                            flags,
-@@ -2404,17 +2403,17 @@ VkResult VKAPI vkMapMemory(
- 
- void VKAPI vkUnmapMemory(
-     VkDevice                                    device,
--    VkDeviceMemory                              mem);
-+    VkDeviceMemory                              memory);
- 
- VkResult VKAPI vkFlushMappedMemoryRanges(
-     VkDevice                                    device,
--    uint32_t                                    memRangeCount,
--    const VkMappedMemoryRange*                  pMemRanges);
-+    uint32_t                                    memoryRangeCount,
-+    const VkMappedMemoryRange*                  pMemoryRanges);
- 
- VkResult VKAPI vkInvalidateMappedMemoryRanges(
-     VkDevice                                    device,
--    uint32_t                                    memRangeCount,
--    const VkMappedMemoryRange*                  pMemRanges);
-+    uint32_t                                    memoryRangeCount,
-+    const VkMappedMemoryRange*                  pMemoryRanges);
- 
- void VKAPI vkGetDeviceMemoryCommitment(
-     VkDevice                                    device,
-@@ -2424,14 +2423,14 @@ void VKAPI vkGetDeviceMemoryCommitment(
- VkResult VKAPI vkBindBufferMemory(
-     VkDevice                                    device,
-     VkBuffer                                    buffer,
--    VkDeviceMemory                              mem,
--    VkDeviceSize                                memOffset);
-+    VkDeviceMemory                              memory,
-+    VkDeviceSize                                memoryOffset);
- 
- VkResult VKAPI vkBindImageMemory(
-     VkDevice                                    device,
-     VkImage                                     image,
--    VkDeviceMemory                              mem,
--    VkDeviceSize                                memOffset);
-+    VkDeviceMemory                              memory,
-+    VkDeviceSize                                memoryOffset);
- 
- void VKAPI vkGetBufferMemoryRequirements(
-     VkDevice                                    device,
-@@ -2468,13 +2467,13 @@ VkResult VKAPI vkQueueBindSparse(
- VkResult VKAPI vkCreateFence(
-     VkDevice                                    device,
-     const VkFenceCreateInfo*                    pCreateInfo,
--    const VkAllocCallbacks*                     pAllocator,
-+    const VkAllocationCallbacks*                pAllocator,
-     VkFence*                                    pFence);
- 
- void VKAPI vkDestroyFence(
-     VkDevice                                    device,
-     VkFence                                     fence,
--    const VkAllocCallbacks*                     pAllocator);
-+    const VkAllocationCallbacks*                pAllocator);
- 
- VkResult VKAPI vkResetFences(
-     VkDevice                                    device,
-@@ -2495,24 +2494,24 @@ VkResult VKAPI vkWaitForFences(
- VkResult VKAPI vkCreateSemaphore(
-     VkDevice                                    device,
-     const VkSemaphoreCreateInfo*                pCreateInfo,
--    const VkAllocCallbacks*                     pAllocator,
-+    const VkAllocationCallbacks*                pAllocator,
-     VkSemaphore*                                pSemaphore);
- 
- void VKAPI vkDestroySemaphore(
-     VkDevice                                    device,
-     VkSemaphore                                 semaphore,
--    const VkAllocCallbacks*                     pAllocator);
-+    const VkAllocationCallbacks*                pAllocator);
- 
- VkResult VKAPI vkCreateEvent(
-     VkDevice                                    device,
-     const VkEventCreateInfo*                    pCreateInfo,
--    const VkAllocCallbacks*                     pAllocator,
-+    const VkAllocationCallbacks*                pAllocator,
-     VkEvent*                                    pEvent);
- 
- void VKAPI vkDestroyEvent(
-     VkDevice                                    device,
-     VkEvent                                     event,
--    const VkAllocCallbacks*                     pAllocator);
-+    const VkAllocationCallbacks*                pAllocator);
- 
- VkResult VKAPI vkGetEventStatus(
-     VkDevice                                    device,
-@@ -2529,13 +2528,13 @@ VkResult VKAPI vkResetEvent(
- VkResult VKAPI vkCreateQueryPool(
-     VkDevice                                    device,
-     const VkQueryPoolCreateInfo*                pCreateInfo,
--    const VkAllocCallbacks*                     pAllocator,
-+    const VkAllocationCallbacks*                pAllocator,
-     VkQueryPool*                                pQueryPool);
- 
- void VKAPI vkDestroyQueryPool(
-     VkDevice                                    device,
-     VkQueryPool                                 queryPool,
--    const VkAllocCallbacks*                     pAllocator);
-+    const VkAllocationCallbacks*                pAllocator);
- 
- VkResult VKAPI vkGetQueryPoolResults(
-     VkDevice                                    device,
-@@ -2550,35 +2549,35 @@ VkResult VKAPI vkGetQueryPoolResults(
- VkResult VKAPI vkCreateBuffer(
-     VkDevice                                    device,
-     const VkBufferCreateInfo*                   pCreateInfo,
--    const VkAllocCallbacks*                     pAllocator,
-+    const VkAllocationCallbacks*                pAllocator,
-     VkBuffer*                                   pBuffer);
- 
- void VKAPI vkDestroyBuffer(
-     VkDevice                                    device,
-     VkBuffer                                    buffer,
--    const VkAllocCallbacks*                     pAllocator);
-+    const VkAllocationCallbacks*                pAllocator);
- 
- VkResult VKAPI vkCreateBufferView(
-     VkDevice                                    device,
-     const VkBufferViewCreateInfo*               pCreateInfo,
--    const VkAllocCallbacks*                     pAllocator,
-+    const VkAllocationCallbacks*                pAllocator,
-     VkBufferView*                               pView);
- 
- void VKAPI vkDestroyBufferView(
-     VkDevice                                    device,
-     VkBufferView                                bufferView,
--    const VkAllocCallbacks*                     pAllocator);
-+    const VkAllocationCallbacks*                pAllocator);
- 
- VkResult VKAPI vkCreateImage(
-     VkDevice                                    device,
-     const VkImageCreateInfo*                    pCreateInfo,
--    const VkAllocCallbacks*                     pAllocator,
-+    const VkAllocationCallbacks*                pAllocator,
-     VkImage*                                    pImage);
- 
- void VKAPI vkDestroyImage(
-     VkDevice                                    device,
-     VkImage                                     image,
--    const VkAllocCallbacks*                     pAllocator);
-+    const VkAllocationCallbacks*                pAllocator);
- 
- void VKAPI vkGetImageSubresourceLayout(
-     VkDevice                                    device,
-@@ -2589,46 +2588,46 @@ void VKAPI vkGetImageSubresourceLayout(
- VkResult VKAPI vkCreateImageView(
-     VkDevice                                    device,
-     const VkImageViewCreateInfo*                pCreateInfo,
--    const VkAllocCallbacks*                     pAllocator,
-+    const VkAllocationCallbacks*                pAllocator,
-     VkImageView*                                pView);
- 
- void VKAPI vkDestroyImageView(
-     VkDevice                                    device,
-     VkImageView                                 imageView,
--    const VkAllocCallbacks*                     pAllocator);
-+    const VkAllocationCallbacks*                pAllocator);
- 
- VkResult VKAPI vkCreateShaderModule(
-     VkDevice                                    device,
-     const VkShaderModuleCreateInfo*             pCreateInfo,
--    const VkAllocCallbacks*                     pAllocator,
-+    const VkAllocationCallbacks*                pAllocator,
-     VkShaderModule*                             pShaderModule);
- 
- void VKAPI vkDestroyShaderModule(
-     VkDevice                                    device,
-     VkShaderModule                              shaderModule,
--    const VkAllocCallbacks*                     pAllocator);
-+    const VkAllocationCallbacks*                pAllocator);
- 
- VkResult VKAPI vkCreateShader(
-     VkDevice                                    device,
-     const VkShaderCreateInfo*                   pCreateInfo,
--    const VkAllocCallbacks*                     pAllocator,
-+    const VkAllocationCallbacks*                pAllocator,
-     VkShader*                                   pShader);
- 
- void VKAPI vkDestroyShader(
-     VkDevice                                    device,
-     VkShader                                    shader,
--    const VkAllocCallbacks*                     pAllocator);
-+    const VkAllocationCallbacks*                pAllocator);
- 
- VkResult VKAPI vkCreatePipelineCache(
-     VkDevice                                    device,
-     const VkPipelineCacheCreateInfo*            pCreateInfo,
--    const VkAllocCallbacks*                     pAllocator,
-+    const VkAllocationCallbacks*                pAllocator,
-     VkPipelineCache*                            pPipelineCache);
- 
- void VKAPI vkDestroyPipelineCache(
-     VkDevice                                    device,
-     VkPipelineCache                             pipelineCache,
--    const VkAllocCallbacks*                     pAllocator);
-+    const VkAllocationCallbacks*                pAllocator);
- 
- VkResult VKAPI vkGetPipelineCacheData(
-     VkDevice                                    device,
-@@ -2638,7 +2637,7 @@ VkResult VKAPI vkGetPipelineCacheData(
- 
- VkResult VKAPI vkMergePipelineCaches(
-     VkDevice                                    device,
--    VkPipelineCache                             destCache,
-+    VkPipelineCache                             dstCache,
-     uint32_t                                    srcCacheCount,
-     const VkPipelineCache*                      pSrcCaches);
- 
-@@ -2647,7 +2646,7 @@ VkResult VKAPI vkCreateGraphicsPipelines(
-     VkPipelineCache                             pipelineCache,
-     uint32_t                                    createInfoCount,
-     const VkGraphicsPipelineCreateInfo*         pCreateInfos,
--    const VkAllocCallbacks*                     pAllocator,
-+    const VkAllocationCallbacks*                pAllocator,
-     VkPipeline*                                 pPipelines);
- 
- VkResult VKAPI vkCreateComputePipelines(
-@@ -2655,66 +2654,66 @@ VkResult VKAPI vkCreateComputePipelines(
-     VkPipelineCache                             pipelineCache,
-     uint32_t                                    createInfoCount,
-     const VkComputePipelineCreateInfo*          pCreateInfos,
--    const VkAllocCallbacks*                     pAllocator,
-+    const VkAllocationCallbacks*                pAllocator,
-     VkPipeline*                                 pPipelines);
- 
- void VKAPI vkDestroyPipeline(
-     VkDevice                                    device,
-     VkPipeline                                  pipeline,
--    const VkAllocCallbacks*                     pAllocator);
-+    const VkAllocationCallbacks*                pAllocator);
- 
- VkResult VKAPI vkCreatePipelineLayout(
-     VkDevice                                    device,
-     const VkPipelineLayoutCreateInfo*           pCreateInfo,
--    const VkAllocCallbacks*                     pAllocator,
-+    const VkAllocationCallbacks*                pAllocator,
-     VkPipelineLayout*                           pPipelineLayout);
- 
- void VKAPI vkDestroyPipelineLayout(
-     VkDevice                                    device,
-     VkPipelineLayout                            pipelineLayout,
--    const VkAllocCallbacks*                     pAllocator);
-+    const VkAllocationCallbacks*                pAllocator);
- 
- VkResult VKAPI vkCreateSampler(
-     VkDevice                                    device,
-     const VkSamplerCreateInfo*                  pCreateInfo,
--    const VkAllocCallbacks*                     pAllocator,
-+    const VkAllocationCallbacks*                pAllocator,
-     VkSampler*                                  pSampler);
- 
- void VKAPI vkDestroySampler(
-     VkDevice                                    device,
-     VkSampler                                   sampler,
--    const VkAllocCallbacks*                     pAllocator);
-+    const VkAllocationCallbacks*                pAllocator);
- 
- VkResult VKAPI vkCreateDescriptorSetLayout(
-     VkDevice                                    device,
-     const VkDescriptorSetLayoutCreateInfo*      pCreateInfo,
--    const VkAllocCallbacks*                     pAllocator,
-+    const VkAllocationCallbacks*                pAllocator,
-     VkDescriptorSetLayout*                      pSetLayout);
- 
- void VKAPI vkDestroyDescriptorSetLayout(
-     VkDevice                                    device,
-     VkDescriptorSetLayout                       descriptorSetLayout,
--    const VkAllocCallbacks*                     pAllocator);
-+    const VkAllocationCallbacks*                pAllocator);
- 
- VkResult VKAPI vkCreateDescriptorPool(
-     VkDevice                                    device,
-     const VkDescriptorPoolCreateInfo*           pCreateInfo,
--    const VkAllocCallbacks*                     pAllocator,
-+    const VkAllocationCallbacks*                pAllocator,
-     VkDescriptorPool*                           pDescriptorPool);
- 
- void VKAPI vkDestroyDescriptorPool(
-     VkDevice                                    device,
-     VkDescriptorPool                            descriptorPool,
--    const VkAllocCallbacks*                     pAllocator);
-+    const VkAllocationCallbacks*                pAllocator);
- 
- VkResult VKAPI vkResetDescriptorPool(
-     VkDevice                                    device,
-     VkDescriptorPool                            descriptorPool,
-     VkDescriptorPoolResetFlags                  flags);
- 
--VkResult VKAPI vkAllocDescriptorSets(
-+VkResult VKAPI vkAllocateDescriptorSets(
-     VkDevice                                    device,
--    const VkDescriptorSetAllocInfo*             pAllocInfo,
-+    const VkDescriptorSetAllocateInfo*          pAllocateInfo,
-     VkDescriptorSet*                            pDescriptorSets);
- 
- VkResult VKAPI vkFreeDescriptorSets(
-@@ -2733,24 +2732,24 @@ void VKAPI vkUpdateDescriptorSets(
- VkResult VKAPI vkCreateFramebuffer(
-     VkDevice                                    device,
-     const VkFramebufferCreateInfo*              pCreateInfo,
--    const VkAllocCallbacks*                     pAllocator,
-+    const VkAllocationCallbacks*                pAllocator,
-     VkFramebuffer*                              pFramebuffer);
- 
- void VKAPI vkDestroyFramebuffer(
-     VkDevice                                    device,
-     VkFramebuffer                               framebuffer,
--    const VkAllocCallbacks*                     pAllocator);
-+    const VkAllocationCallbacks*                pAllocator);
- 
- VkResult VKAPI vkCreateRenderPass(
-     VkDevice                                    device,
-     const VkRenderPassCreateInfo*               pCreateInfo,
--    const VkAllocCallbacks*                     pAllocator,
-+    const VkAllocationCallbacks*                pAllocator,
-     VkRenderPass*                               pRenderPass);
- 
- void VKAPI vkDestroyRenderPass(
-     VkDevice                                    device,
-     VkRenderPass                                renderPass,
--    const VkAllocCallbacks*                     pAllocator);
-+    const VkAllocationCallbacks*                pAllocator);
- 
- void VKAPI vkGetRenderAreaGranularity(
-     VkDevice                                    device,
-@@ -2759,93 +2758,93 @@ void VKAPI vkGetRenderAreaGranularity(
- 
- VkResult VKAPI vkCreateCommandPool(
-     VkDevice                                    device,
--    const VkCmdPoolCreateInfo*                  pCreateInfo,
--    const VkAllocCallbacks*                     pAllocator,
--    VkCmdPool*                                  pCmdPool);
-+    const VkCommandPoolCreateInfo*              pCreateInfo,
-+    const VkAllocationCallbacks*                pAllocator,
-+    VkCommandPool*                              pCommandPool);
- 
- void VKAPI vkDestroyCommandPool(
-     VkDevice                                    device,
--    VkCmdPool                                   cmdPool,
--    const VkAllocCallbacks*                     pAllocator);
-+    VkCommandPool                               CommandPool,
-+    const VkAllocationCallbacks*                pAllocator);
- 
- VkResult VKAPI vkResetCommandPool(
-     VkDevice                                    device,
--    VkCmdPool                                   cmdPool,
--    VkCmdPoolResetFlags                         flags);
-+    VkCommandPool                               CommandPool,
-+    VkCommandPoolResetFlags                     flags);
- 
--VkResult VKAPI vkAllocCommandBuffers(
-+VkResult VKAPI vkAllocateCommandBuffers(
-     VkDevice                                    device,
--    const VkCmdBufferAllocInfo*                 pAllocInfo,
--    VkCmdBuffer*                                pCmdBuffers);
-+    const VkCommandBufferAllocateInfo*          pAllocateInfo,
-+    VkCommandBuffer*                            pCommandBuffers);
- 
- void VKAPI vkFreeCommandBuffers(
-     VkDevice                                    device,
--    VkCmdPool                                   cmdPool,
-+    VkCommandPool                               CommandPool,
-     uint32_t                                    commandBufferCount,
--    const VkCmdBuffer*                          pCommandBuffers);
-+    const VkCommandBuffer*                      pCommandBuffers);
- 
- VkResult VKAPI vkBeginCommandBuffer(
--    VkCmdBuffer                                 cmdBuffer,
--    const VkCmdBufferBeginInfo*                 pBeginInfo);
-+    VkCommandBuffer                             commandBuffer,
-+    const VkCommandBufferBeginInfo*             pBeginInfo);
- 
- VkResult VKAPI vkEndCommandBuffer(
--    VkCmdBuffer                                 cmdBuffer);
-+    VkCommandBuffer                             commandBuffer);
- 
- VkResult VKAPI vkResetCommandBuffer(
--    VkCmdBuffer                                 cmdBuffer,
--    VkCmdBufferResetFlags                       flags);
-+    VkCommandBuffer                             commandBuffer,
-+    VkCommandBufferResetFlags                   flags);
- 
- void VKAPI vkCmdBindPipeline(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     VkPipelineBindPoint                         pipelineBindPoint,
-     VkPipeline                                  pipeline);
- 
- void VKAPI vkCmdSetViewport(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     uint32_t                                    viewportCount,
-     const VkViewport*                           pViewports);
- 
- void VKAPI vkCmdSetScissor(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     uint32_t                                    scissorCount,
-     const VkRect2D*                             pScissors);
- 
- void VKAPI vkCmdSetLineWidth(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     float                                       lineWidth);
- 
- void VKAPI vkCmdSetDepthBias(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     float                                       depthBiasConstantFactor,
-     float                                       depthBiasClamp,
-     float                                       depthBiasSlopeFactor);
- 
- void VKAPI vkCmdSetBlendConstants(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     const float                                 blendConstants[4]);
- 
- void VKAPI vkCmdSetDepthBounds(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     float                                       minDepthBounds,
-     float                                       maxDepthBounds);
- 
- void VKAPI vkCmdSetStencilCompareMask(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     VkStencilFaceFlags                          faceMask,
-     uint32_t                                    stencilCompareMask);
- 
- void VKAPI vkCmdSetStencilWriteMask(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     VkStencilFaceFlags                          faceMask,
-     uint32_t                                    stencilWriteMask);
- 
- void VKAPI vkCmdSetStencilReference(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     VkStencilFaceFlags                          faceMask,
-     uint32_t                                    stencilReference);
- 
- void VKAPI vkCmdBindDescriptorSets(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     VkPipelineBindPoint                         pipelineBindPoint,
-     VkPipelineLayout                            layout,
-     uint32_t                                    firstSet,
-@@ -2855,27 +2854,27 @@ void VKAPI vkCmdBindDescriptorSets(
-     const uint32_t*                             pDynamicOffsets);
- 
- void VKAPI vkCmdBindIndexBuffer(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     VkBuffer                                    buffer,
-     VkDeviceSize                                offset,
-     VkIndexType                                 indexType);
- 
- void VKAPI vkCmdBindVertexBuffers(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     uint32_t                                    startBinding,
-     uint32_t                                    bindingCount,
-     const VkBuffer*                             pBuffers,
-     const VkDeviceSize*                         pOffsets);
- 
- void VKAPI vkCmdDraw(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     uint32_t                                    vertexCount,
-     uint32_t                                    instanceCount,
-     uint32_t                                    firstVertex,
-     uint32_t                                    firstInstance);
- 
- void VKAPI vkCmdDrawIndexed(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     uint32_t                                    indexCount,
-     uint32_t                                    instanceCount,
-     uint32_t                                    firstIndex,
-@@ -2883,88 +2882,88 @@ void VKAPI vkCmdDrawIndexed(
-     uint32_t                                    firstInstance);
- 
- void VKAPI vkCmdDrawIndirect(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     VkBuffer                                    buffer,
-     VkDeviceSize                                offset,
-     uint32_t                                    drawCount,
-     uint32_t                                    stride);
- 
- void VKAPI vkCmdDrawIndexedIndirect(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     VkBuffer                                    buffer,
-     VkDeviceSize                                offset,
-     uint32_t                                    drawCount,
-     uint32_t                                    stride);
- 
- void VKAPI vkCmdDispatch(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     uint32_t                                    x,
-     uint32_t                                    y,
-     uint32_t                                    z);
- 
- void VKAPI vkCmdDispatchIndirect(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     VkBuffer                                    buffer,
-     VkDeviceSize                                offset);
- 
- void VKAPI vkCmdCopyBuffer(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     VkBuffer                                    srcBuffer,
--    VkBuffer                                    destBuffer,
-+    VkBuffer                                    dstBuffer,
-     uint32_t                                    regionCount,
-     const VkBufferCopy*                         pRegions);
- 
- void VKAPI vkCmdCopyImage(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     VkImage                                     srcImage,
-     VkImageLayout                               srcImageLayout,
--    VkImage                                     destImage,
--    VkImageLayout                               destImageLayout,
-+    VkImage                                     dstImage,
-+    VkImageLayout                               dstImageLayout,
-     uint32_t                                    regionCount,
-     const VkImageCopy*                          pRegions);
- 
- void VKAPI vkCmdBlitImage(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     VkImage                                     srcImage,
-     VkImageLayout                               srcImageLayout,
--    VkImage                                     destImage,
--    VkImageLayout                               destImageLayout,
-+    VkImage                                     dstImage,
-+    VkImageLayout                               dstImageLayout,
-     uint32_t                                    regionCount,
-     const VkImageBlit*                          pRegions,
-     VkFilter                                    filter);
- 
- void VKAPI vkCmdCopyBufferToImage(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     VkBuffer                                    srcBuffer,
--    VkImage                                     destImage,
--    VkImageLayout                               destImageLayout,
-+    VkImage                                     dstImage,
-+    VkImageLayout                               dstImageLayout,
-     uint32_t                                    regionCount,
-     const VkBufferImageCopy*                    pRegions);
- 
- void VKAPI vkCmdCopyImageToBuffer(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     VkImage                                     srcImage,
-     VkImageLayout                               srcImageLayout,
--    VkBuffer                                    destBuffer,
-+    VkBuffer                                    dstBuffer,
-     uint32_t                                    regionCount,
-     const VkBufferImageCopy*                    pRegions);
- 
- void VKAPI vkCmdUpdateBuffer(
--    VkCmdBuffer                                 cmdBuffer,
--    VkBuffer                                    destBuffer,
--    VkDeviceSize                                destOffset,
-+    VkCommandBuffer                             commandBuffer,
-+    VkBuffer                                    dstBuffer,
-+    VkDeviceSize                                dstOffset,
-     VkDeviceSize                                dataSize,
-     const uint32_t*                             pData);
- 
- void VKAPI vkCmdFillBuffer(
--    VkCmdBuffer                                 cmdBuffer,
--    VkBuffer                                    destBuffer,
--    VkDeviceSize                                destOffset,
-+    VkCommandBuffer                             commandBuffer,
-+    VkBuffer                                    dstBuffer,
-+    VkDeviceSize                                dstOffset,
-     VkDeviceSize                                size,
-     uint32_t                                    data);
- 
- void VKAPI vkCmdClearColorImage(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     VkImage                                     image,
-     VkImageLayout                               imageLayout,
-     const VkClearColorValue*                    pColor,
-@@ -2972,7 +2971,7 @@ void VKAPI vkCmdClearColorImage(
-     const VkImageSubresourceRange*              pRanges);
- 
- void VKAPI vkCmdClearDepthStencilImage(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     VkImage                                     image,
-     VkImageLayout                               imageLayout,
-     const VkClearDepthStencilValue*             pDepthStencil,
-@@ -2980,83 +2979,83 @@ void VKAPI vkCmdClearDepthStencilImage(
-     const VkImageSubresourceRange*              pRanges);
- 
- void VKAPI vkCmdClearAttachments(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     uint32_t                                    attachmentCount,
-     const VkClearAttachment*                    pAttachments,
-     uint32_t                                    rectCount,
-     const VkClearRect*                          pRects);
- 
- void VKAPI vkCmdResolveImage(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     VkImage                                     srcImage,
-     VkImageLayout                               srcImageLayout,
--    VkImage                                     destImage,
--    VkImageLayout                               destImageLayout,
-+    VkImage                                     dstImage,
-+    VkImageLayout                               dstImageLayout,
-     uint32_t                                    regionCount,
-     const VkImageResolve*                       pRegions);
- 
- void VKAPI vkCmdSetEvent(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     VkEvent                                     event,
-     VkPipelineStageFlags                        stageMask);
- 
- void VKAPI vkCmdResetEvent(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     VkEvent                                     event,
-     VkPipelineStageFlags                        stageMask);
- 
- void VKAPI vkCmdWaitEvents(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     uint32_t                                    eventCount,
-     const VkEvent*                              pEvents,
-     VkPipelineStageFlags                        srcStageMask,
--    VkPipelineStageFlags                        destStageMask,
--    uint32_t                                    memBarrierCount,
--    const void* const*                          ppMemBarriers);
-+    VkPipelineStageFlags                        dstStageMask,
-+    uint32_t                                    memoryBarrierCount,
-+    const void* const*                          ppMemoryBarriers);
- 
- void VKAPI vkCmdPipelineBarrier(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     VkPipelineStageFlags                        srcStageMask,
--    VkPipelineStageFlags                        destStageMask,
-+    VkPipelineStageFlags                        dstStageMask,
-     VkDependencyFlags                           dependencyFlags,
--    uint32_t                                    memBarrierCount,
--    const void* const*                          ppMemBarriers);
-+    uint32_t                                    memoryBarrierCount,
-+    const void* const*                          ppMemoryBarriers);
- 
- void VKAPI vkCmdBeginQuery(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     VkQueryPool                                 queryPool,
-     uint32_t                                    slot,
-     VkQueryControlFlags                         flags);
- 
- void VKAPI vkCmdEndQuery(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     VkQueryPool                                 queryPool,
-     uint32_t                                    slot);
- 
- void VKAPI vkCmdResetQueryPool(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     VkQueryPool                                 queryPool,
-     uint32_t                                    startQuery,
-     uint32_t                                    queryCount);
- 
- void VKAPI vkCmdWriteTimestamp(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     VkPipelineStageFlagBits                     pipelineStage,
-     VkQueryPool                                 queryPool,
-     uint32_t                                    slot);
- 
- void VKAPI vkCmdCopyQueryPoolResults(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     VkQueryPool                                 queryPool,
-     uint32_t                                    startQuery,
-     uint32_t                                    queryCount,
--    VkBuffer                                    destBuffer,
--    VkDeviceSize                                destOffset,
-+    VkBuffer                                    dstBuffer,
-+    VkDeviceSize                                dstOffset,
-     VkDeviceSize                                stride,
-     VkQueryResultFlags                          flags);
- 
- void VKAPI vkCmdPushConstants(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     VkPipelineLayout                            layout,
-     VkShaderStageFlags                          stageFlags,
-     uint32_t                                    offset,
-@@ -3064,25 +3063,25 @@ void VKAPI vkCmdPushConstants(
-     const void*                                 values);
- 
- void VKAPI vkCmdBeginRenderPass(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     const VkRenderPassBeginInfo*                pRenderPassBegin,
-     VkRenderPassContents                        contents);
- 
- void VKAPI vkCmdNextSubpass(
--    VkCmdBuffer                                 cmdBuffer,
-+    VkCommandBuffer                             commandBuffer,
-     VkRenderPassContents                        contents);
- 
- void VKAPI vkCmdEndRenderPass(
--    VkCmdBuffer                                 cmdBuffer);
-+    VkCommandBuffer                             commandBuffer);
- 
- void VKAPI vkCmdExecuteCommands(
--    VkCmdBuffer                                 cmdBuffer,
--    uint32_t                                    cmdBuffersCount,
--    const VkCmdBuffer*                          pCmdBuffers);
-+    VkCommandBuffer                             commandBuffer,
-+    uint32_t                                    commandBuffersCount,
-+    const VkCommandBuffer*                      pCommandBuffers);
- #endif
- 
- #define vk_ext_khr_surface 1
--VK_DEFINE_NONDISP_HANDLE(VkSurfaceKHR)
-+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR)
- 
- #define VK_EXT_KHR_SURFACE_REVISION       20
- #define VK_EXT_KHR_SURFACE_EXTENSION_NUMBER 1
-@@ -3102,7 +3101,7 @@ typedef enum {
-     VK_SURFACE_TRANSFORM_INHERIT_KHR = 8,
-     VK_SURFACE_TRANSFORM_BEGIN_RANGE = VK_SURFACE_TRANSFORM_NONE_KHR,
-     VK_SURFACE_TRANSFORM_END_RANGE = VK_SURFACE_TRANSFORM_INHERIT_KHR,
--    VK_SURFACE_TRANSFORM_NUM = (VK_SURFACE_TRANSFORM_INHERIT_KHR - VK_SURFACE_TRANSFORM_NONE_KHR + 1),
-+    VK_SURFACE_TRANSFORM_RANGE_SIZE = (VK_SURFACE_TRANSFORM_INHERIT_KHR - VK_SURFACE_TRANSFORM_NONE_KHR + 1),
-     VK_SURFACE_TRANSFORM_MAX_ENUM = 0x7FFFFFFF
- } VkSurfaceTransformKHR;
- 
-@@ -3110,7 +3109,7 @@ typedef enum {
-     VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0,
-     VK_COLORSPACE_BEGIN_RANGE = VK_COLORSPACE_SRGB_NONLINEAR_KHR,
-     VK_COLORSPACE_END_RANGE = VK_COLORSPACE_SRGB_NONLINEAR_KHR,
--    VK_COLORSPACE_NUM = (VK_COLORSPACE_SRGB_NONLINEAR_KHR - VK_COLORSPACE_SRGB_NONLINEAR_KHR + 1),
-+    VK_COLORSPACE_RANGE_SIZE = (VK_COLORSPACE_SRGB_NONLINEAR_KHR - VK_COLORSPACE_SRGB_NONLINEAR_KHR + 1),
-     VK_COLORSPACE_MAX_ENUM = 0x7FFFFFFF
- } VkColorSpaceKHR;
- 
-@@ -3121,7 +3120,7 @@ typedef enum {
-     VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3,
-     VK_PRESENT_MODE_BEGIN_RANGE = VK_PRESENT_MODE_IMMEDIATE_KHR,
-     VK_PRESENT_MODE_END_RANGE = VK_PRESENT_MODE_FIFO_RELAXED_KHR,
--    VK_PRESENT_MODE_NUM = (VK_PRESENT_MODE_FIFO_RELAXED_KHR - VK_PRESENT_MODE_IMMEDIATE_KHR + 1),
-+    VK_PRESENT_MODE_RANGE_SIZE = (VK_PRESENT_MODE_FIFO_RELAXED_KHR - VK_PRESENT_MODE_IMMEDIATE_KHR + 1),
-     VK_PRESENT_MODE_MAX_ENUM = 0x7FFFFFFF
- } VkPresentModeKHR;
- 
-@@ -3202,14 +3201,14 @@ VkResult VKAPI vkGetPhysicalDeviceSurfacePresentModesKHR(
- #endif
- 
- #define vk_ext_khr_swapchain 1
--VK_DEFINE_NONDISP_HANDLE(VkSwapchainKHR)
-+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSwapchainKHR)
- 
- #define VK_EXT_KHR_SWAPCHAIN_REVISION     62
- #define VK_EXT_KHR_SWAPCHAIN_EXTENSION_NUMBER 2
- #define VK_EXT_KHR_SWAPCHAIN_EXTENSION_NAME "VK_EXT_KHR_swapchain"
- #define VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR ((VkStructureType)(int)0xc0000800)
- #define VK_STRUCTURE_TYPE_PRESENT_INFO_KHR ((VkStructureType)(int)0xc0000801)
--#define VK_IMAGE_LAYOUT_PRESENT_SOURCE_KHR ((VkImageLayout)(int)0xc0000802)
-+#define VK_IMAGE_LAYOUT_PRESENT_SRC_KHR   ((VkImageLayout)(int)0xc0000802)
- #define VK_SUBOPTIMAL_KHR                 ((VkResult)(int)0x40000403)
- #define VK_ERROR_OUT_OF_DATE_KHR          ((VkResult)(int)0xc0000804)
- 
-@@ -3280,8 +3279,8 @@ VkResult VKAPI vkQueuePresentKHR(
- #endif
- 
- #define vk_ext_khr_display 1
--VK_DEFINE_NONDISP_HANDLE(VkDisplayKHR)
--VK_DEFINE_NONDISP_HANDLE(VkDisplayModeKHR)
-+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayKHR)
-+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayModeKHR)
- 
- #define VK_EXT_KHR_DISPLAY_REVISION       17
- #define VK_EXT_KHR_DISPLAY_EXTENSION_NUMBER 3
-diff --git a/vulkan/libvulkan/entry.cpp b/vulkan/libvulkan/entry.cpp
-index 31f0231..a2b4c0f 100644
---- a/vulkan/libvulkan/entry.cpp
-+++ b/vulkan/libvulkan/entry.cpp
-@@ -36,18 +36,18 @@ namespace {
-     inline const DeviceVtbl& GetVtbl(VkQueue queue) {
-         return **reinterpret_cast<DeviceVtbl**>(queue);
-     }
--    inline const DeviceVtbl& GetVtbl(VkCmdBuffer cmdBuffer) {
--        return **reinterpret_cast<DeviceVtbl**>(cmdBuffer);
-+    inline const DeviceVtbl& GetVtbl(VkCommandBuffer commandBuffer) {
-+        return **reinterpret_cast<DeviceVtbl**>(commandBuffer);
-     }
- } // namespace
- 
- __attribute__((visibility("default")))
--VkResult vkCreateInstance(const VkInstanceCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkInstance* pInstance) {
-+VkResult vkCreateInstance(const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance) {
-     return vulkan::CreateInstance(pCreateInfo, pAllocator, pInstance);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyInstance(VkInstance instance, const VkAllocCallbacks* pAllocator) {
-+void vkDestroyInstance(VkInstance instance, const VkAllocationCallbacks* pAllocator) {
-     GetVtbl(instance).DestroyInstance(instance, pAllocator);
- }
- 
-@@ -97,12 +97,12 @@ void vkGetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice, V
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkDevice* pDevice) {
-+VkResult vkCreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice) {
-     return GetVtbl(physicalDevice).CreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyDevice(VkDevice device, const VkAllocCallbacks* pAllocator) {
-+void vkDestroyDevice(VkDevice device, const VkAllocationCallbacks* pAllocator) {
-     vulkan::DestroyDevice(device, pAllocator);
- }
- 
-@@ -147,33 +147,33 @@ VkResult vkDeviceWaitIdle(VkDevice device) {
- }
- 
- __attribute__((visibility("default")))
--VkResult vkAllocMemory(VkDevice device, const VkMemoryAllocInfo* pAllocInfo, const VkAllocCallbacks* pAllocator, VkDeviceMemory* pMem) {
--    return GetVtbl(device).AllocMemory(device, pAllocInfo, pAllocator, pMem);
-+VkResult vkAllocateMemory(VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory) {
-+    return GetVtbl(device).AllocateMemory(device, pAllocateInfo, pAllocator, pMemory);
- }
- 
- __attribute__((visibility("default")))
--void vkFreeMemory(VkDevice device, VkDeviceMemory mem, const VkAllocCallbacks* pAllocator) {
--    GetVtbl(device).FreeMemory(device, mem, pAllocator);
-+void vkFreeMemory(VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator) {
-+    GetVtbl(device).FreeMemory(device, memory, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkMapMemory(VkDevice device, VkDeviceMemory mem, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData) {
--    return GetVtbl(device).MapMemory(device, mem, offset, size, flags, ppData);
-+VkResult vkMapMemory(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData) {
-+    return GetVtbl(device).MapMemory(device, memory, offset, size, flags, ppData);
- }
- 
- __attribute__((visibility("default")))
--void vkUnmapMemory(VkDevice device, VkDeviceMemory mem) {
--    GetVtbl(device).UnmapMemory(device, mem);
-+void vkUnmapMemory(VkDevice device, VkDeviceMemory memory) {
-+    GetVtbl(device).UnmapMemory(device, memory);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkFlushMappedMemoryRanges(VkDevice device, uint32_t memRangeCount, const VkMappedMemoryRange* pMemRanges) {
--    return GetVtbl(device).FlushMappedMemoryRanges(device, memRangeCount, pMemRanges);
-+VkResult vkFlushMappedMemoryRanges(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges) {
-+    return GetVtbl(device).FlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkInvalidateMappedMemoryRanges(VkDevice device, uint32_t memRangeCount, const VkMappedMemoryRange* pMemRanges) {
--    return GetVtbl(device).InvalidateMappedMemoryRanges(device, memRangeCount, pMemRanges);
-+VkResult vkInvalidateMappedMemoryRanges(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges) {
-+    return GetVtbl(device).InvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges);
- }
- 
- __attribute__((visibility("default")))
-@@ -187,8 +187,8 @@ void vkGetBufferMemoryRequirements(VkDevice device, VkBuffer buffer, VkMemoryReq
- }
- 
- __attribute__((visibility("default")))
--VkResult vkBindBufferMemory(VkDevice device, VkBuffer buffer, VkDeviceMemory mem, VkDeviceSize memOffset) {
--    return GetVtbl(device).BindBufferMemory(device, buffer, mem, memOffset);
-+VkResult vkBindBufferMemory(VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset) {
-+    return GetVtbl(device).BindBufferMemory(device, buffer, memory, memoryOffset);
- }
- 
- __attribute__((visibility("default")))
-@@ -197,8 +197,8 @@ void vkGetImageMemoryRequirements(VkDevice device, VkImage image, VkMemoryRequir
- }
- 
- __attribute__((visibility("default")))
--VkResult vkBindImageMemory(VkDevice device, VkImage image, VkDeviceMemory mem, VkDeviceSize memOffset) {
--    return GetVtbl(device).BindImageMemory(device, image, mem, memOffset);
-+VkResult vkBindImageMemory(VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset) {
-+    return GetVtbl(device).BindImageMemory(device, image, memory, memoryOffset);
- }
- 
- __attribute__((visibility("default")))
-@@ -217,12 +217,12 @@ VkResult vkQueueBindSparse(VkQueue queue, uint32_t bindInfoCount, const VkBindSp
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateFence(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkFence* pFence) {
-+VkResult vkCreateFence(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence) {
-     return GetVtbl(device).CreateFence(device, pCreateInfo, pAllocator, pFence);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyFence(VkDevice device, VkFence fence, const VkAllocCallbacks* pAllocator) {
-+void vkDestroyFence(VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator) {
-     GetVtbl(device).DestroyFence(device, fence, pAllocator);
- }
- 
-@@ -242,22 +242,22 @@ VkResult vkWaitForFences(VkDevice device, uint32_t fenceCount, const VkFence* pF
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateSemaphore(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkSemaphore* pSemaphore) {
-+VkResult vkCreateSemaphore(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore) {
-     return GetVtbl(device).CreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroySemaphore(VkDevice device, VkSemaphore semaphore, const VkAllocCallbacks* pAllocator) {
-+void vkDestroySemaphore(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator) {
-     GetVtbl(device).DestroySemaphore(device, semaphore, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateEvent(VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkEvent* pEvent) {
-+VkResult vkCreateEvent(VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent) {
-     return GetVtbl(device).CreateEvent(device, pCreateInfo, pAllocator, pEvent);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyEvent(VkDevice device, VkEvent event, const VkAllocCallbacks* pAllocator) {
-+void vkDestroyEvent(VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator) {
-     GetVtbl(device).DestroyEvent(device, event, pAllocator);
- }
- 
-@@ -277,12 +277,12 @@ VkResult vkResetEvent(VkDevice device, VkEvent event) {
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateQueryPool(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkQueryPool* pQueryPool) {
-+VkResult vkCreateQueryPool(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool) {
-     return GetVtbl(device).CreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyQueryPool(VkDevice device, VkQueryPool queryPool, const VkAllocCallbacks* pAllocator) {
-+void vkDestroyQueryPool(VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator) {
-     GetVtbl(device).DestroyQueryPool(device, queryPool, pAllocator);
- }
- 
-@@ -292,32 +292,32 @@ VkResult vkGetQueryPoolResults(VkDevice device, VkQueryPool queryPool, uint32_t
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateBuffer(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkBuffer* pBuffer) {
-+VkResult vkCreateBuffer(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer) {
-     return GetVtbl(device).CreateBuffer(device, pCreateInfo, pAllocator, pBuffer);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyBuffer(VkDevice device, VkBuffer buffer, const VkAllocCallbacks* pAllocator) {
-+void vkDestroyBuffer(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator) {
-     GetVtbl(device).DestroyBuffer(device, buffer, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateBufferView(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkBufferView* pView) {
-+VkResult vkCreateBufferView(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView) {
-     return GetVtbl(device).CreateBufferView(device, pCreateInfo, pAllocator, pView);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyBufferView(VkDevice device, VkBufferView bufferView, const VkAllocCallbacks* pAllocator) {
-+void vkDestroyBufferView(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator) {
-     GetVtbl(device).DestroyBufferView(device, bufferView, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateImage(VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkImage* pImage) {
-+VkResult vkCreateImage(VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage) {
-     return GetVtbl(device).CreateImage(device, pCreateInfo, pAllocator, pImage);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyImage(VkDevice device, VkImage image, const VkAllocCallbacks* pAllocator) {
-+void vkDestroyImage(VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator) {
-     GetVtbl(device).DestroyImage(device, image, pAllocator);
- }
- 
-@@ -327,42 +327,42 @@ void vkGetImageSubresourceLayout(VkDevice device, VkImage image, const VkImageSu
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateImageView(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkImageView* pView) {
-+VkResult vkCreateImageView(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView) {
-     return GetVtbl(device).CreateImageView(device, pCreateInfo, pAllocator, pView);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyImageView(VkDevice device, VkImageView imageView, const VkAllocCallbacks* pAllocator) {
-+void vkDestroyImageView(VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator) {
-     GetVtbl(device).DestroyImageView(device, imageView, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateShaderModule(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkShaderModule* pShaderModule) {
-+VkResult vkCreateShaderModule(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule) {
-     return GetVtbl(device).CreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyShaderModule(VkDevice device, VkShaderModule shaderModule, const VkAllocCallbacks* pAllocator) {
-+void vkDestroyShaderModule(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator) {
-     GetVtbl(device).DestroyShaderModule(device, shaderModule, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateShader(VkDevice device, const VkShaderCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkShader* pShader) {
-+VkResult vkCreateShader(VkDevice device, const VkShaderCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShader* pShader) {
-     return GetVtbl(device).CreateShader(device, pCreateInfo, pAllocator, pShader);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyShader(VkDevice device, VkShader shader, const VkAllocCallbacks* pAllocator) {
-+void vkDestroyShader(VkDevice device, VkShader shader, const VkAllocationCallbacks* pAllocator) {
-     GetVtbl(device).DestroyShader(device, shader, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreatePipelineCache(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkPipelineCache* pPipelineCache) {
-+VkResult vkCreatePipelineCache(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache) {
-     return GetVtbl(device).CreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyPipelineCache(VkDevice device, VkPipelineCache pipelineCache, const VkAllocCallbacks* pAllocator) {
-+void vkDestroyPipelineCache(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator) {
-     GetVtbl(device).DestroyPipelineCache(device, pipelineCache, pAllocator);
- }
- 
-@@ -372,62 +372,62 @@ VkResult vkGetPipelineCacheData(VkDevice device, VkPipelineCache pipelineCache,
- }
- 
- __attribute__((visibility("default")))
--VkResult vkMergePipelineCaches(VkDevice device, VkPipelineCache destCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches) {
--    return GetVtbl(device).MergePipelineCaches(device, destCache, srcCacheCount, pSrcCaches);
-+VkResult vkMergePipelineCaches(VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches) {
-+    return GetVtbl(device).MergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateGraphicsPipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocCallbacks* pAllocator, VkPipeline* pPipelines) {
-+VkResult vkCreateGraphicsPipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) {
-     return GetVtbl(device).CreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateComputePipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocCallbacks* pAllocator, VkPipeline* pPipelines) {
-+VkResult vkCreateComputePipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) {
-     return GetVtbl(device).CreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyPipeline(VkDevice device, VkPipeline pipeline, const VkAllocCallbacks* pAllocator) {
-+void vkDestroyPipeline(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator) {
-     GetVtbl(device).DestroyPipeline(device, pipeline, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreatePipelineLayout(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout) {
-+VkResult vkCreatePipelineLayout(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout) {
-     return GetVtbl(device).CreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyPipelineLayout(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocCallbacks* pAllocator) {
-+void vkDestroyPipelineLayout(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator) {
-     GetVtbl(device).DestroyPipelineLayout(device, pipelineLayout, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateSampler(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkSampler* pSampler) {
-+VkResult vkCreateSampler(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler) {
-     return GetVtbl(device).CreateSampler(device, pCreateInfo, pAllocator, pSampler);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroySampler(VkDevice device, VkSampler sampler, const VkAllocCallbacks* pAllocator) {
-+void vkDestroySampler(VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator) {
-     GetVtbl(device).DestroySampler(device, sampler, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateDescriptorSetLayout(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout) {
-+VkResult vkCreateDescriptorSetLayout(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout) {
-     return GetVtbl(device).CreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyDescriptorSetLayout(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocCallbacks* pAllocator) {
-+void vkDestroyDescriptorSetLayout(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator) {
-     GetVtbl(device).DestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateDescriptorPool(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool) {
-+VkResult vkCreateDescriptorPool(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool) {
-     return GetVtbl(device).CreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocCallbacks* pAllocator) {
-+void vkDestroyDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator) {
-     GetVtbl(device).DestroyDescriptorPool(device, descriptorPool, pAllocator);
- }
- 
-@@ -437,8 +437,8 @@ VkResult vkResetDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool,
- }
- 
- __attribute__((visibility("default")))
--VkResult vkAllocDescriptorSets(VkDevice device, const VkDescriptorSetAllocInfo* pAllocInfo, VkDescriptorSet* pDescriptorSets) {
--    return GetVtbl(device).AllocDescriptorSets(device, pAllocInfo, pDescriptorSets);
-+VkResult vkAllocateDescriptorSets(VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets) {
-+    return GetVtbl(device).AllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets);
- }
- 
- __attribute__((visibility("default")))
-@@ -452,22 +452,22 @@ void vkUpdateDescriptorSets(VkDevice device, uint32_t descriptorWriteCount, cons
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateFramebuffer(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkFramebuffer* pFramebuffer) {
-+VkResult vkCreateFramebuffer(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer) {
-     return GetVtbl(device).CreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer, const VkAllocCallbacks* pAllocator) {
-+void vkDestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator) {
-     GetVtbl(device).DestroyFramebuffer(device, framebuffer, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateRenderPass(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkRenderPass* pRenderPass) {
-+VkResult vkCreateRenderPass(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass) {
-     return GetVtbl(device).CreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyRenderPass(VkDevice device, VkRenderPass renderPass, const VkAllocCallbacks* pAllocator) {
-+void vkDestroyRenderPass(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator) {
-     GetVtbl(device).DestroyRenderPass(device, renderPass, pAllocator);
- }
- 
-@@ -477,263 +477,263 @@ void vkGetRenderAreaGranularity(VkDevice device, VkRenderPass renderPass, VkExte
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateCommandPool(VkDevice device, const VkCmdPoolCreateInfo* pCreateInfo, const VkAllocCallbacks* pAllocator, VkCmdPool* pCmdPool) {
--    return GetVtbl(device).CreateCommandPool(device, pCreateInfo, pAllocator, pCmdPool);
-+VkResult vkCreateCommandPool(VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool) {
-+    return GetVtbl(device).CreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyCommandPool(VkDevice device, VkCmdPool cmdPool, const VkAllocCallbacks* pAllocator) {
--    GetVtbl(device).DestroyCommandPool(device, cmdPool, pAllocator);
-+void vkDestroyCommandPool(VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator) {
-+    GetVtbl(device).DestroyCommandPool(device, commandPool, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkResetCommandPool(VkDevice device, VkCmdPool cmdPool, VkCmdPoolResetFlags flags) {
--    return GetVtbl(device).ResetCommandPool(device, cmdPool, flags);
-+VkResult vkResetCommandPool(VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags) {
-+    return GetVtbl(device).ResetCommandPool(device, commandPool, flags);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkAllocCommandBuffers(VkDevice device, const VkCmdBufferAllocInfo* pAllocInfo, VkCmdBuffer* pCmdBuffers) {
--    return GetVtbl(device).AllocCommandBuffers(device, pAllocInfo, pCmdBuffers);
-+VkResult vkAllocateCommandBuffers(VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers) {
-+    return GetVtbl(device).AllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers);
- }
- 
- __attribute__((visibility("default")))
--void vkFreeCommandBuffers(VkDevice device, VkCmdPool cmdPool, uint32_t commandBufferCount, const VkCmdBuffer* pCommandBuffers) {
--    GetVtbl(device).FreeCommandBuffers(device, cmdPool, commandBufferCount, pCommandBuffers);
-+void vkFreeCommandBuffers(VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers) {
-+    GetVtbl(device).FreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkBeginCommandBuffer(VkCmdBuffer cmdBuffer, const VkCmdBufferBeginInfo* pBeginInfo) {
--    return GetVtbl(cmdBuffer).BeginCommandBuffer(cmdBuffer, pBeginInfo);
-+VkResult vkBeginCommandBuffer(VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo) {
-+    return GetVtbl(commandBuffer).BeginCommandBuffer(commandBuffer, pBeginInfo);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkEndCommandBuffer(VkCmdBuffer cmdBuffer) {
--    return GetVtbl(cmdBuffer).EndCommandBuffer(cmdBuffer);
-+VkResult vkEndCommandBuffer(VkCommandBuffer commandBuffer) {
-+    return GetVtbl(commandBuffer).EndCommandBuffer(commandBuffer);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkResetCommandBuffer(VkCmdBuffer cmdBuffer, VkCmdBufferResetFlags flags) {
--    return GetVtbl(cmdBuffer).ResetCommandBuffer(cmdBuffer, flags);
-+VkResult vkResetCommandBuffer(VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags) {
-+    return GetVtbl(commandBuffer).ResetCommandBuffer(commandBuffer, flags);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdBindPipeline(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline) {
--    GetVtbl(cmdBuffer).CmdBindPipeline(cmdBuffer, pipelineBindPoint, pipeline);
-+void vkCmdBindPipeline(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline) {
-+    GetVtbl(commandBuffer).CmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdSetViewport(VkCmdBuffer cmdBuffer, uint32_t viewportCount, const VkViewport* pViewports) {
--    GetVtbl(cmdBuffer).CmdSetViewport(cmdBuffer, viewportCount, pViewports);
-+void vkCmdSetViewport(VkCommandBuffer commandBuffer, uint32_t viewportCount, const VkViewport* pViewports) {
-+    GetVtbl(commandBuffer).CmdSetViewport(commandBuffer, viewportCount, pViewports);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdSetScissor(VkCmdBuffer cmdBuffer, uint32_t scissorCount, const VkRect2D* pScissors) {
--    GetVtbl(cmdBuffer).CmdSetScissor(cmdBuffer, scissorCount, pScissors);
-+void vkCmdSetScissor(VkCommandBuffer commandBuffer, uint32_t scissorCount, const VkRect2D* pScissors) {
-+    GetVtbl(commandBuffer).CmdSetScissor(commandBuffer, scissorCount, pScissors);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdSetLineWidth(VkCmdBuffer cmdBuffer, float lineWidth) {
--    GetVtbl(cmdBuffer).CmdSetLineWidth(cmdBuffer, lineWidth);
-+void vkCmdSetLineWidth(VkCommandBuffer commandBuffer, float lineWidth) {
-+    GetVtbl(commandBuffer).CmdSetLineWidth(commandBuffer, lineWidth);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdSetDepthBias(VkCmdBuffer cmdBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor) {
--    GetVtbl(cmdBuffer).CmdSetDepthBias(cmdBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor);
-+void vkCmdSetDepthBias(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor) {
-+    GetVtbl(commandBuffer).CmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdSetBlendConstants(VkCmdBuffer cmdBuffer, const float blendConstants[4]) {
--    GetVtbl(cmdBuffer).CmdSetBlendConstants(cmdBuffer, blendConstants);
-+void vkCmdSetBlendConstants(VkCommandBuffer commandBuffer, const float blendConstants[4]) {
-+    GetVtbl(commandBuffer).CmdSetBlendConstants(commandBuffer, blendConstants);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdSetDepthBounds(VkCmdBuffer cmdBuffer, float minDepthBounds, float maxDepthBounds) {
--    GetVtbl(cmdBuffer).CmdSetDepthBounds(cmdBuffer, minDepthBounds, maxDepthBounds);
-+void vkCmdSetDepthBounds(VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds) {
-+    GetVtbl(commandBuffer).CmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdSetStencilCompareMask(VkCmdBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilCompareMask) {
--    GetVtbl(cmdBuffer).CmdSetStencilCompareMask(cmdBuffer, faceMask, stencilCompareMask);
-+void vkCmdSetStencilCompareMask(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t stencilCompareMask) {
-+    GetVtbl(commandBuffer).CmdSetStencilCompareMask(commandBuffer, faceMask, stencilCompareMask);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdSetStencilWriteMask(VkCmdBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilWriteMask) {
--    GetVtbl(cmdBuffer).CmdSetStencilWriteMask(cmdBuffer, faceMask, stencilWriteMask);
-+void vkCmdSetStencilWriteMask(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t stencilWriteMask) {
-+    GetVtbl(commandBuffer).CmdSetStencilWriteMask(commandBuffer, faceMask, stencilWriteMask);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdSetStencilReference(VkCmdBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilReference) {
--    GetVtbl(cmdBuffer).CmdSetStencilReference(cmdBuffer, faceMask, stencilReference);
-+void vkCmdSetStencilReference(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t stencilReference) {
-+    GetVtbl(commandBuffer).CmdSetStencilReference(commandBuffer, faceMask, stencilReference);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdBindDescriptorSets(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets) {
--    GetVtbl(cmdBuffer).CmdBindDescriptorSets(cmdBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets);
-+void vkCmdBindDescriptorSets(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets) {
-+    GetVtbl(commandBuffer).CmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdBindIndexBuffer(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType) {
--    GetVtbl(cmdBuffer).CmdBindIndexBuffer(cmdBuffer, buffer, offset, indexType);
-+void vkCmdBindIndexBuffer(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType) {
-+    GetVtbl(commandBuffer).CmdBindIndexBuffer(commandBuffer, buffer, offset, indexType);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdBindVertexBuffers(VkCmdBuffer cmdBuffer, uint32_t startBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets) {
--    GetVtbl(cmdBuffer).CmdBindVertexBuffers(cmdBuffer, startBinding, bindingCount, pBuffers, pOffsets);
-+void vkCmdBindVertexBuffers(VkCommandBuffer commandBuffer, uint32_t startBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets) {
-+    GetVtbl(commandBuffer).CmdBindVertexBuffers(commandBuffer, startBinding, bindingCount, pBuffers, pOffsets);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdDraw(VkCmdBuffer cmdBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance) {
--    GetVtbl(cmdBuffer).CmdDraw(cmdBuffer, vertexCount, instanceCount, firstVertex, firstInstance);
-+void vkCmdDraw(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance) {
-+    GetVtbl(commandBuffer).CmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdDrawIndexed(VkCmdBuffer cmdBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance) {
--    GetVtbl(cmdBuffer).CmdDrawIndexed(cmdBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance);
-+void vkCmdDrawIndexed(VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance) {
-+    GetVtbl(commandBuffer).CmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdDrawIndirect(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride) {
--    GetVtbl(cmdBuffer).CmdDrawIndirect(cmdBuffer, buffer, offset, drawCount, stride);
-+void vkCmdDrawIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride) {
-+    GetVtbl(commandBuffer).CmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdDrawIndexedIndirect(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride) {
--    GetVtbl(cmdBuffer).CmdDrawIndexedIndirect(cmdBuffer, buffer, offset, drawCount, stride);
-+void vkCmdDrawIndexedIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride) {
-+    GetVtbl(commandBuffer).CmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdDispatch(VkCmdBuffer cmdBuffer, uint32_t x, uint32_t y, uint32_t z) {
--    GetVtbl(cmdBuffer).CmdDispatch(cmdBuffer, x, y, z);
-+void vkCmdDispatch(VkCommandBuffer commandBuffer, uint32_t x, uint32_t y, uint32_t z) {
-+    GetVtbl(commandBuffer).CmdDispatch(commandBuffer, x, y, z);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdDispatchIndirect(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset) {
--    GetVtbl(cmdBuffer).CmdDispatchIndirect(cmdBuffer, buffer, offset);
-+void vkCmdDispatchIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset) {
-+    GetVtbl(commandBuffer).CmdDispatchIndirect(commandBuffer, buffer, offset);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdCopyBuffer(VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkBuffer destBuffer, uint32_t regionCount, const VkBufferCopy* pRegions) {
--    GetVtbl(cmdBuffer).CmdCopyBuffer(cmdBuffer, srcBuffer, destBuffer, regionCount, pRegions);
-+void vkCmdCopyBuffer(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy* pRegions) {
-+    GetVtbl(commandBuffer).CmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdCopyImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageCopy* pRegions) {
--    GetVtbl(cmdBuffer).CmdCopyImage(cmdBuffer, srcImage, srcImageLayout, destImage, destImageLayout, regionCount, pRegions);
-+void vkCmdCopyImage(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageCopy* pRegions) {
-+    GetVtbl(commandBuffer).CmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdBlitImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter) {
--    GetVtbl(cmdBuffer).CmdBlitImage(cmdBuffer, srcImage, srcImageLayout, destImage, destImageLayout, regionCount, pRegions, filter);
-+void vkCmdBlitImage(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter) {
-+    GetVtbl(commandBuffer).CmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdCopyBufferToImage(VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions) {
--    GetVtbl(cmdBuffer).CmdCopyBufferToImage(cmdBuffer, srcBuffer, destImage, destImageLayout, regionCount, pRegions);
-+void vkCmdCopyBufferToImage(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions) {
-+    GetVtbl(commandBuffer).CmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdCopyImageToBuffer(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer destBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions) {
--    GetVtbl(cmdBuffer).CmdCopyImageToBuffer(cmdBuffer, srcImage, srcImageLayout, destBuffer, regionCount, pRegions);
-+void vkCmdCopyImageToBuffer(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions) {
-+    GetVtbl(commandBuffer).CmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdUpdateBuffer(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize dataSize, const uint32_t* pData) {
--    GetVtbl(cmdBuffer).CmdUpdateBuffer(cmdBuffer, destBuffer, destOffset, dataSize, pData);
-+void vkCmdUpdateBuffer(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const uint32_t* pData) {
-+    GetVtbl(commandBuffer).CmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdFillBuffer(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize size, uint32_t data) {
--    GetVtbl(cmdBuffer).CmdFillBuffer(cmdBuffer, destBuffer, destOffset, size, data);
-+void vkCmdFillBuffer(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data) {
-+    GetVtbl(commandBuffer).CmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdClearColorImage(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges) {
--    GetVtbl(cmdBuffer).CmdClearColorImage(cmdBuffer, image, imageLayout, pColor, rangeCount, pRanges);
-+void vkCmdClearColorImage(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges) {
-+    GetVtbl(commandBuffer).CmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdClearDepthStencilImage(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges) {
--    GetVtbl(cmdBuffer).CmdClearDepthStencilImage(cmdBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges);
-+void vkCmdClearDepthStencilImage(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges) {
-+    GetVtbl(commandBuffer).CmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdClearAttachments(VkCmdBuffer cmdBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects) {
--    GetVtbl(cmdBuffer).CmdClearAttachments(cmdBuffer, attachmentCount, pAttachments, rectCount, pRects);
-+void vkCmdClearAttachments(VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects) {
-+    GetVtbl(commandBuffer).CmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdResolveImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageResolve* pRegions) {
--    GetVtbl(cmdBuffer).CmdResolveImage(cmdBuffer, srcImage, srcImageLayout, destImage, destImageLayout, regionCount, pRegions);
-+void vkCmdResolveImage(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageResolve* pRegions) {
-+    GetVtbl(commandBuffer).CmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdSetEvent(VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask) {
--    GetVtbl(cmdBuffer).CmdSetEvent(cmdBuffer, event, stageMask);
-+void vkCmdSetEvent(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask) {
-+    GetVtbl(commandBuffer).CmdSetEvent(commandBuffer, event, stageMask);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdResetEvent(VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask) {
--    GetVtbl(cmdBuffer).CmdResetEvent(cmdBuffer, event, stageMask);
-+void vkCmdResetEvent(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask) {
-+    GetVtbl(commandBuffer).CmdResetEvent(commandBuffer, event, stageMask);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdWaitEvents(VkCmdBuffer cmdBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, uint32_t memBarrierCount, const void* const* ppMemBarriers) {
--    GetVtbl(cmdBuffer).CmdWaitEvents(cmdBuffer, eventCount, pEvents, srcStageMask, destStageMask, memBarrierCount, ppMemBarriers);
-+void vkCmdWaitEvents(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const void* const* ppMemoryBarriers) {
-+    GetVtbl(commandBuffer).CmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, ppMemoryBarriers);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdPipelineBarrier(VkCmdBuffer cmdBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, VkDependencyFlags dependencyFlags, uint32_t memBarrierCount, const void* const* ppMemBarriers) {
--    GetVtbl(cmdBuffer).CmdPipelineBarrier(cmdBuffer, srcStageMask, destStageMask, dependencyFlags, memBarrierCount, ppMemBarriers);
-+void vkCmdPipelineBarrier(VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const void* const* ppMemoryBarriers) {
-+    GetVtbl(commandBuffer).CmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, ppMemoryBarriers);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdBeginQuery(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot, VkQueryControlFlags flags) {
--    GetVtbl(cmdBuffer).CmdBeginQuery(cmdBuffer, queryPool, slot, flags);
-+void vkCmdBeginQuery(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t slot, VkQueryControlFlags flags) {
-+    GetVtbl(commandBuffer).CmdBeginQuery(commandBuffer, queryPool, slot, flags);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdEndQuery(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot) {
--    GetVtbl(cmdBuffer).CmdEndQuery(cmdBuffer, queryPool, slot);
-+void vkCmdEndQuery(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t slot) {
-+    GetVtbl(commandBuffer).CmdEndQuery(commandBuffer, queryPool, slot);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdResetQueryPool(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount) {
--    GetVtbl(cmdBuffer).CmdResetQueryPool(cmdBuffer, queryPool, startQuery, queryCount);
-+void vkCmdResetQueryPool(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount) {
-+    GetVtbl(commandBuffer).CmdResetQueryPool(commandBuffer, queryPool, startQuery, queryCount);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdWriteTimestamp(VkCmdBuffer cmdBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t slot) {
--    GetVtbl(cmdBuffer).CmdWriteTimestamp(cmdBuffer, pipelineStage, queryPool, slot);
-+void vkCmdWriteTimestamp(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t slot) {
-+    GetVtbl(commandBuffer).CmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, slot);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdCopyQueryPoolResults(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize stride, VkQueryResultFlags flags) {
--    GetVtbl(cmdBuffer).CmdCopyQueryPoolResults(cmdBuffer, queryPool, startQuery, queryCount, destBuffer, destOffset, stride, flags);
-+void vkCmdCopyQueryPoolResults(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags) {
-+    GetVtbl(commandBuffer).CmdCopyQueryPoolResults(commandBuffer, queryPool, startQuery, queryCount, dstBuffer, dstOffset, stride, flags);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdPushConstants(VkCmdBuffer cmdBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* values) {
--    GetVtbl(cmdBuffer).CmdPushConstants(cmdBuffer, layout, stageFlags, offset, size, values);
-+void vkCmdPushConstants(VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* values) {
-+    GetVtbl(commandBuffer).CmdPushConstants(commandBuffer, layout, stageFlags, offset, size, values);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdBeginRenderPass(VkCmdBuffer cmdBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkRenderPassContents contents) {
--    GetVtbl(cmdBuffer).CmdBeginRenderPass(cmdBuffer, pRenderPassBegin, contents);
-+void vkCmdBeginRenderPass(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkRenderPassContents contents) {
-+    GetVtbl(commandBuffer).CmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdNextSubpass(VkCmdBuffer cmdBuffer, VkRenderPassContents contents) {
--    GetVtbl(cmdBuffer).CmdNextSubpass(cmdBuffer, contents);
-+void vkCmdNextSubpass(VkCommandBuffer commandBuffer, VkRenderPassContents contents) {
-+    GetVtbl(commandBuffer).CmdNextSubpass(commandBuffer, contents);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdEndRenderPass(VkCmdBuffer cmdBuffer) {
--    GetVtbl(cmdBuffer).CmdEndRenderPass(cmdBuffer);
-+void vkCmdEndRenderPass(VkCommandBuffer commandBuffer) {
-+    GetVtbl(commandBuffer).CmdEndRenderPass(commandBuffer);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdExecuteCommands(VkCmdBuffer cmdBuffer, uint32_t cmdBuffersCount, const VkCmdBuffer* pCmdBuffers) {
--    GetVtbl(cmdBuffer).CmdExecuteCommands(cmdBuffer, cmdBuffersCount, pCmdBuffers);
-+void vkCmdExecuteCommands(VkCommandBuffer commandBuffer, uint32_t commandBuffersCount, const VkCommandBuffer* pCommandBuffers) {
-+    GetVtbl(commandBuffer).CmdExecuteCommands(commandBuffer, commandBuffersCount, pCommandBuffers);
- }
- 
- __attribute__((visibility("default")))
-diff --git a/vulkan/libvulkan/entry.cpp.tmpl b/vulkan/libvulkan/entry.cpp.tmpl
-index d0e665f..5aed3df 100644
---- a/vulkan/libvulkan/entry.cpp.tmpl
-+++ b/vulkan/libvulkan/entry.cpp.tmpl
-@@ -63,8 +63,8 @@ namespace {
-     inline const DeviceVtbl& GetVtbl(VkQueue queue) {
-         return **reinterpret_cast<DeviceVtbl**>(queue);
-     }
--    inline const DeviceVtbl& GetVtbl(VkCmdBuffer cmdBuffer) {
--        return **reinterpret_cast<DeviceVtbl**>(cmdBuffer);
-+    inline const DeviceVtbl& GetVtbl(VkCommandBuffer commandBuffer) {
-+        return **reinterpret_cast<DeviceVtbl**>(commandBuffer);
-     }
- } // namespace
- ¶
-@@ -159,7 +159,7 @@ namespace {
- {{define "Dispatch#VkPhysicalDevice"}}GetVtbl({{$.Node.Name}}).{{end}}
- {{define "Dispatch#VkDevice"        }}GetVtbl({{$.Node.Name}}).{{end}}
- {{define "Dispatch#VkQueue"         }}GetVtbl({{$.Node.Name}}).{{end}}
--{{define "Dispatch#VkCmdBuffer"     }}GetVtbl({{$.Node.Name}}).{{end}}
-+{{define "Dispatch#VkCommandBuffer" }}GetVtbl({{$.Node.Name}}).{{end}}
- {{define "Dispatch_Default"         }}vulkan::{{end}}
- {{define "Dispatch"}}
-   {{AssertType $ "Function"}}
-diff --git a/vulkan/libvulkan/get_proc_addr.cpp b/vulkan/libvulkan/get_proc_addr.cpp
-index 4e08015..f6a6510 100644
---- a/vulkan/libvulkan/get_proc_addr.cpp
-+++ b/vulkan/libvulkan/get_proc_addr.cpp
-@@ -74,9 +74,9 @@ const NameProcEntry kInstanceProcTbl[] = {
- const NameProcEntry kDeviceProcTbl[] = {
-     // clang-format off
-     {"vkAcquireNextImageKHR", reinterpret_cast<PFN_vkVoidFunction>(vkAcquireNextImageKHR)},
--    {"vkAllocCommandBuffers", reinterpret_cast<PFN_vkVoidFunction>(vkAllocCommandBuffers)},
--    {"vkAllocDescriptorSets", reinterpret_cast<PFN_vkVoidFunction>(vkAllocDescriptorSets)},
--    {"vkAllocMemory", reinterpret_cast<PFN_vkVoidFunction>(vkAllocMemory)},
-+    {"vkAllocateCommandBuffers", reinterpret_cast<PFN_vkVoidFunction>(vkAllocateCommandBuffers)},
-+    {"vkAllocateDescriptorSets", reinterpret_cast<PFN_vkVoidFunction>(vkAllocateDescriptorSets)},
-+    {"vkAllocateMemory", reinterpret_cast<PFN_vkVoidFunction>(vkAllocateMemory)},
-     {"vkBeginCommandBuffer", reinterpret_cast<PFN_vkVoidFunction>(vkBeginCommandBuffer)},
-     {"vkBindBufferMemory", reinterpret_cast<PFN_vkVoidFunction>(vkBindBufferMemory)},
-     {"vkBindImageMemory", reinterpret_cast<PFN_vkVoidFunction>(vkBindImageMemory)},
-@@ -231,9 +231,9 @@ const NameOffsetEntry kInstanceOffsetTbl[] = {
- const NameOffsetEntry kDeviceOffsetTbl[] = {
-     // clang-format off
-     {"vkAcquireNextImageKHR", offsetof(DeviceVtbl, AcquireNextImageKHR)},
--    {"vkAllocCommandBuffers", offsetof(DeviceVtbl, AllocCommandBuffers)},
--    {"vkAllocDescriptorSets", offsetof(DeviceVtbl, AllocDescriptorSets)},
--    {"vkAllocMemory", offsetof(DeviceVtbl, AllocMemory)},
-+    {"vkAllocateCommandBuffers", offsetof(DeviceVtbl, AllocateCommandBuffers)},
-+    {"vkAllocateDescriptorSets", offsetof(DeviceVtbl, AllocateDescriptorSets)},
-+    {"vkAllocateMemory", offsetof(DeviceVtbl, AllocateMemory)},
-     {"vkBeginCommandBuffer", offsetof(DeviceVtbl, BeginCommandBuffer)},
-     {"vkBindBufferMemory", offsetof(DeviceVtbl, BindBufferMemory)},
-     {"vkBindImageMemory", offsetof(DeviceVtbl, BindImageMemory)},
-@@ -530,9 +530,9 @@ bool LoadDeviceVtbl(VkDevice device,
-         ALOGE("missing device proc: %s", "vkDeviceWaitIdle");
-         success = false;
-     }
--    vtbl.AllocMemory = reinterpret_cast<PFN_vkAllocMemory>(get_proc_addr(device, "vkAllocMemory"));
--    if (UNLIKELY(!vtbl.AllocMemory)) {
--        ALOGE("missing device proc: %s", "vkAllocMemory");
-+    vtbl.AllocateMemory = reinterpret_cast<PFN_vkAllocateMemory>(get_proc_addr(device, "vkAllocateMemory"));
-+    if (UNLIKELY(!vtbl.AllocateMemory)) {
-+        ALOGE("missing device proc: %s", "vkAllocateMemory");
-         success = false;
-     }
-     vtbl.FreeMemory = reinterpret_cast<PFN_vkFreeMemory>(get_proc_addr(device, "vkFreeMemory"));
-@@ -815,9 +815,9 @@ bool LoadDeviceVtbl(VkDevice device,
-         ALOGE("missing device proc: %s", "vkResetDescriptorPool");
-         success = false;
-     }
--    vtbl.AllocDescriptorSets = reinterpret_cast<PFN_vkAllocDescriptorSets>(get_proc_addr(device, "vkAllocDescriptorSets"));
--    if (UNLIKELY(!vtbl.AllocDescriptorSets)) {
--        ALOGE("missing device proc: %s", "vkAllocDescriptorSets");
-+    vtbl.AllocateDescriptorSets = reinterpret_cast<PFN_vkAllocateDescriptorSets>(get_proc_addr(device, "vkAllocateDescriptorSets"));
-+    if (UNLIKELY(!vtbl.AllocateDescriptorSets)) {
-+        ALOGE("missing device proc: %s", "vkAllocateDescriptorSets");
-         success = false;
-     }
-     vtbl.FreeDescriptorSets = reinterpret_cast<PFN_vkFreeDescriptorSets>(get_proc_addr(device, "vkFreeDescriptorSets"));
-@@ -870,9 +870,9 @@ bool LoadDeviceVtbl(VkDevice device,
-         ALOGE("missing device proc: %s", "vkResetCommandPool");
-         success = false;
-     }
--    vtbl.AllocCommandBuffers = reinterpret_cast<PFN_vkAllocCommandBuffers>(get_proc_addr(device, "vkAllocCommandBuffers"));
--    if (UNLIKELY(!vtbl.AllocCommandBuffers)) {
--        ALOGE("missing device proc: %s", "vkAllocCommandBuffers");
-+    vtbl.AllocateCommandBuffers = reinterpret_cast<PFN_vkAllocateCommandBuffers>(get_proc_addr(device, "vkAllocateCommandBuffers"));
-+    if (UNLIKELY(!vtbl.AllocateCommandBuffers)) {
-+        ALOGE("missing device proc: %s", "vkAllocateCommandBuffers");
-         success = false;
-     }
-     vtbl.FreeCommandBuffers = reinterpret_cast<PFN_vkFreeCommandBuffers>(get_proc_addr(device, "vkFreeCommandBuffers"));
-diff --git a/vulkan/libvulkan/loader.cpp b/vulkan/libvulkan/loader.cpp
-index 03265ef..d1b369e 100644
---- a/vulkan/libvulkan/loader.cpp
-+++ b/vulkan/libvulkan/loader.cpp
-@@ -58,10 +58,10 @@ typedef struct VkLayerLinkedListElem_ {
- // Define Handle typedef to be void* as returned from dlopen.
- typedef void* SharedLibraryHandle;
- 
--// Standard-library allocator that delegates to VkAllocCallbacks.
-+// Standard-library allocator that delegates to VkAllocationCallbacks.
- //
- // TODO(jessehall): This class currently always uses
--// VK_SYSTEM_ALLOC_SCOPE_INSTANCE. The scope to use could be a template
-+// VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE. The scope to use could be a template
- // parameter or a constructor parameter. The former would help catch bugs
- // where we use the wrong scope, e.g. adding a command-scope string to an
- // instance-scope vector. But that might also be pretty annoying to deal with.
-@@ -70,7 +70,7 @@ class CallbackAllocator {
-    public:
-     typedef T value_type;
- 
--    CallbackAllocator(const VkAllocCallbacks* alloc_input)
-+    CallbackAllocator(const VkAllocationCallbacks* alloc_input)
-         : alloc(alloc_input) {}
- 
-     template <class T2>
-@@ -78,8 +78,9 @@ class CallbackAllocator {
-         : alloc(other.alloc) {}
- 
-     T* allocate(std::size_t n) {
--        void* mem = alloc->pfnAlloc(alloc->pUserData, n * sizeof(T), alignof(T),
--                                    VK_SYSTEM_ALLOC_SCOPE_INSTANCE);
-+        void* mem =
-+            alloc->pfnAllocation(alloc->pUserData, n * sizeof(T), alignof(T),
-+                                 VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE);
-         return static_cast<T*>(mem);
-     }
- 
-@@ -87,7 +88,7 @@ class CallbackAllocator {
-         alloc->pfnFree(alloc->pUserData, array);
-     }
- 
--    const VkAllocCallbacks* alloc;
-+    const VkAllocationCallbacks* alloc;
- };
- // These are needed in order to move Strings
- template <class T>
-@@ -136,7 +137,7 @@ typedef UnorderedMap<String, LayerData>::iterator LayerMapIterator;
- }  // namespace
- 
- struct VkInstance_T {
--    VkInstance_T(const VkAllocCallbacks* alloc_callbacks)
-+    VkInstance_T(const VkAllocationCallbacks* alloc_callbacks)
-         : vtbl(&vtbl_storage),
-           alloc(alloc_callbacks),
-           num_physical_devices(0),
-@@ -155,7 +156,7 @@ struct VkInstance_T {
-     InstanceVtbl* vtbl;
-     InstanceVtbl vtbl_storage;
- 
--    const VkAllocCallbacks* alloc;
-+    const VkAllocationCallbacks* alloc;
-     uint32_t num_physical_devices;
-     VkPhysicalDevice physical_devices[kMaxPhysicalDevices];
- 
-@@ -214,7 +215,10 @@ inline const DeviceVtbl* GetVtbl(VkQueue queue) {
-     return *reinterpret_cast<DeviceVtbl**>(queue);
- }
- 
--void* DefaultAlloc(void*, size_t size, size_t alignment, VkSystemAllocScope) {
-+void* DefaultAllocate(void*,
-+                      size_t size,
-+                      size_t alignment,
-+                      VkSystemAllocationScope) {
-     void* ptr = nullptr;
-     // Vulkan requires 'alignment' to be a power of two, but posix_memalign
-     // additionally requires that it be at least sizeof(void*).
-@@ -223,11 +227,11 @@ void* DefaultAlloc(void*, size_t size, size_t alignment, VkSystemAllocScope) {
-                : nullptr;
- }
- 
--void* DefaultRealloc(void*,
--                     void* ptr,
--                     size_t size,
--                     size_t alignment,
--                     VkSystemAllocScope) {
-+void* DefaultReallocate(void*,
-+                        void* ptr,
-+                        size_t size,
-+                        size_t alignment,
-+                        VkSystemAllocationScope) {
-     if (size == 0) {
-         free(ptr);
-         return nullptr;
-@@ -257,10 +261,10 @@ void DefaultFree(void*, void* pMem) {
-     free(pMem);
- }
- 
--const VkAllocCallbacks kDefaultAllocCallbacks = {
-+const VkAllocationCallbacks kDefaultAllocCallbacks = {
-     .pUserData = nullptr,
--    .pfnAlloc = DefaultAlloc,
--    .pfnRealloc = DefaultRealloc,
-+    .pfnAllocation = DefaultAllocate,
-+    .pfnReallocation = DefaultReallocate,
-     .pfnFree = DefaultFree,
- };
- 
-@@ -293,7 +297,7 @@ bool EnsureInitialized() {
- }
- 
- void DestroyDevice(Device* device) {
--    const VkAllocCallbacks* alloc = device->instance->alloc;
-+    const VkAllocationCallbacks* alloc = device->instance->alloc;
-     device->~Device();
-     alloc->pfnFree(alloc->pUserData, device);
- }
-@@ -480,7 +484,7 @@ VkResult ActivateAllLayers(TInfo create_info, Instance* instance, TObject* objec
- template <class TCreateInfo>
- bool AddExtensionToCreateInfo(TCreateInfo& local_create_info,
-                               const char* extension_name,
--                              const VkAllocCallbacks* alloc) {
-+                              const VkAllocationCallbacks* alloc) {
-     for (uint32_t i = 0; i < local_create_info.enabledExtensionNameCount; ++i) {
-         if (!strcmp(extension_name,
-                     local_create_info.ppEnabledExtensionNames[i])) {
-@@ -489,10 +493,10 @@ bool AddExtensionToCreateInfo(TCreateInfo& local_create_info,
-     }
-     uint32_t extension_count = local_create_info.enabledExtensionNameCount;
-     local_create_info.enabledExtensionNameCount++;
--    void* mem = alloc->pfnAlloc(
-+    void* mem = alloc->pfnAllocation(
-         alloc->pUserData,
-         local_create_info.enabledExtensionNameCount * sizeof(char*),
--        alignof(char*), VK_SYSTEM_ALLOC_SCOPE_INSTANCE);
-+        alignof(char*), VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE);
-     if (mem) {
-         const char** enabled_extensions = static_cast<const char**>(mem);
-         for (uint32_t i = 0; i < extension_count; ++i) {
-@@ -512,7 +516,7 @@ bool AddExtensionToCreateInfo(TCreateInfo& local_create_info,
- 
- template <class T>
- void FreeAllocatedCreateInfo(T& local_create_info,
--                             const VkAllocCallbacks* alloc) {
-+                             const VkAllocationCallbacks* alloc) {
-     alloc->pfnFree(
-         alloc->pUserData,
-         const_cast<char**>(local_create_info.ppEnabledExtensionNames));
-@@ -572,7 +576,7 @@ PFN_vkVoidFunction GetLayerDeviceProcAddr(VkDevice device, const char* name) {
- // chain.
- 
- void DestroyInstanceBottom(VkInstance instance,
--                           const VkAllocCallbacks* allocator) {
-+                           const VkAllocationCallbacks* allocator) {
-     // These checks allow us to call DestroyInstanceBottom from any error path
-     // in CreateInstanceBottom, before the driver instance is fully initialized.
-     if (instance->drv.vtbl.instance != VK_NULL_HANDLE &&
-@@ -591,13 +595,13 @@ void DestroyInstanceBottom(VkInstance instance,
-          it != instance->active_layers.end(); ++it) {
-         DeactivateLayer(instance, it);
-     }
--    const VkAllocCallbacks* alloc = instance->alloc;
-+    const VkAllocationCallbacks* alloc = instance->alloc;
-     instance->~VkInstance_T();
-     alloc->pfnFree(alloc->pUserData, instance);
- }
- 
- VkResult CreateInstanceBottom(const VkInstanceCreateInfo* create_info,
--                              const VkAllocCallbacks* allocator,
-+                              const VkAllocationCallbacks* allocator,
-                               VkInstance* instance_ptr) {
-     Instance* instance = *instance_ptr;
-     VkResult result;
-@@ -733,7 +737,7 @@ void GetPhysicalDeviceMemoryPropertiesBottom(
- 
- VkResult CreateDeviceBottom(VkPhysicalDevice pdev,
-                             const VkDeviceCreateInfo* create_info,
--                            const VkAllocCallbacks* allocator,
-+                            const VkAllocationCallbacks* allocator,
-                             VkDevice* out_device) {
-     Instance& instance = *static_cast<Instance*>(GetVtbl(pdev)->instance);
-     VkResult result;
-@@ -745,9 +749,9 @@ VkResult CreateDeviceBottom(VkPhysicalDevice pdev,
-             allocator = &kDefaultAllocCallbacks;
-     }
- 
--    void* mem =
--        allocator->pfnAlloc(allocator->pUserData, sizeof(Device),
--                            alignof(Device), VK_SYSTEM_ALLOC_SCOPE_DEVICE);
-+    void* mem = allocator->pfnAllocation(allocator->pUserData, sizeof(Device),
-+                                         alignof(Device),
-+                                         VK_SYSTEM_ALLOCATION_SCOPE_DEVICE);
-     if (!mem)
-         return VK_ERROR_OUT_OF_HOST_MEMORY;
-     Device* device = new (mem) Device(&instance);
-@@ -945,7 +949,7 @@ VkResult EnumerateInstanceLayerProperties(uint32_t* count,
- }
- 
- VkResult CreateInstance(const VkInstanceCreateInfo* create_info,
--                        const VkAllocCallbacks* allocator,
-+                        const VkAllocationCallbacks* allocator,
-                         VkInstance* out_instance) {
-     VkResult result;
- 
-@@ -958,9 +962,9 @@ VkResult CreateInstance(const VkInstanceCreateInfo* create_info,
-     VkInstanceCreateInfo local_create_info = *create_info;
-     create_info = &local_create_info;
- 
--    void* instance_mem =
--        allocator->pfnAlloc(allocator->pUserData, sizeof(Instance),
--                            alignof(Instance), VK_SYSTEM_ALLOC_SCOPE_INSTANCE);
-+    void* instance_mem = allocator->pfnAllocation(
-+        allocator->pUserData, sizeof(Instance), alignof(Instance),
-+        VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE);
-     if (!instance_mem)
-         return VK_ERROR_OUT_OF_HOST_MEMORY;
-     Instance* instance = new (instance_mem) Instance(allocator);
-@@ -1125,17 +1129,17 @@ void GetDeviceQueue(VkDevice drv_device,
- }
- 
- VkResult AllocCommandBuffers(VkDevice device,
--                             const VkCmdBufferAllocInfo* alloc_info,
--                             VkCmdBuffer* cmdbuffers) {
-+                             const VkCommandBufferAllocateInfo* alloc_info,
-+                             VkCommandBuffer* cmdbufs) {
-     const DeviceVtbl* vtbl = GetVtbl(device);
--    VkResult result = vtbl->AllocCommandBuffers(device, alloc_info, cmdbuffers);
-+    VkResult result = vtbl->AllocateCommandBuffers(device, alloc_info, cmdbufs);
-     if (result != VK_SUCCESS)
-         return result;
-     for (uint32_t i = 0; i < alloc_info->bufferCount; i++) {
-         hwvulkan_dispatch_t* dispatch =
--            reinterpret_cast<hwvulkan_dispatch_t*>(cmdbuffers[i]);
-+            reinterpret_cast<hwvulkan_dispatch_t*>(cmdbufs[i]);
-         ALOGE_IF(dispatch->magic != HWVULKAN_DISPATCH_MAGIC,
--                 "invalid VkCmdBuffer dispatch magic: 0x%" PRIxPTR,
-+                 "invalid VkCommandBuffer dispatch magic: 0x%" PRIxPTR,
-                  dispatch->magic);
-         dispatch->vtbl = vtbl;
-     }
-@@ -1143,7 +1147,7 @@ VkResult AllocCommandBuffers(VkDevice device,
- }
- 
- VkResult DestroyDevice(VkDevice drv_device,
--                       const VkAllocCallbacks* /*allocator*/) {
-+                       const VkAllocationCallbacks* /*allocator*/) {
-     const DeviceVtbl* vtbl = GetVtbl(drv_device);
-     Device* device = static_cast<Device*>(vtbl->device);
-     for (auto it = device->active_layers.begin();
-@@ -1158,27 +1162,27 @@ VkResult DestroyDevice(VkDevice drv_device,
- void* AllocMem(VkInstance instance,
-                size_t size,
-                size_t align,
--               VkSystemAllocScope scope) {
--    const VkAllocCallbacks* alloc_cb = instance->alloc;
--    return alloc_cb->pfnAlloc(alloc_cb->pUserData, size, align, scope);
-+               VkSystemAllocationScope scope) {
-+    const VkAllocationCallbacks* alloc_cb = instance->alloc;
-+    return alloc_cb->pfnAllocation(alloc_cb->pUserData, size, align, scope);
- }
- 
- void FreeMem(VkInstance instance, void* ptr) {
--    const VkAllocCallbacks* alloc_cb = instance->alloc;
-+    const VkAllocationCallbacks* alloc_cb = instance->alloc;
-     alloc_cb->pfnFree(alloc_cb->pUserData, ptr);
- }
- 
- void* AllocMem(VkDevice device,
-                size_t size,
-                size_t align,
--               VkSystemAllocScope scope) {
--    const VkAllocCallbacks* alloc_cb =
-+               VkSystemAllocationScope scope) {
-+    const VkAllocationCallbacks* alloc_cb =
-         static_cast<Device*>(GetVtbl(device)->device)->instance->alloc;
--    return alloc_cb->pfnAlloc(alloc_cb->pUserData, size, align, scope);
-+    return alloc_cb->pfnAllocation(alloc_cb->pUserData, size, align, scope);
- }
- 
- void FreeMem(VkDevice device, void* ptr) {
--    const VkAllocCallbacks* alloc_cb =
-+    const VkAllocationCallbacks* alloc_cb =
-         static_cast<Device*>(GetVtbl(device)->device)->instance->alloc;
-     alloc_cb->pfnFree(alloc_cb->pUserData, ptr);
- }
-diff --git a/vulkan/libvulkan/loader.h b/vulkan/libvulkan/loader.h
-index b6c8552..bf71c8f 100644
---- a/vulkan/libvulkan/loader.h
-+++ b/vulkan/libvulkan/loader.h
-@@ -67,7 +67,7 @@ struct DeviceVtbl {
-     PFN_vkDestroyDevice DestroyDevice;
-     PFN_vkGetDeviceQueue GetDeviceQueue;
-     PFN_vkDeviceWaitIdle DeviceWaitIdle;
--    PFN_vkAllocMemory AllocMemory;
-+    PFN_vkAllocateMemory AllocateMemory;
-     PFN_vkFreeMemory FreeMemory;
-     PFN_vkMapMemory MapMemory;
-     PFN_vkUnmapMemory UnmapMemory;
-@@ -123,7 +123,7 @@ struct DeviceVtbl {
-     PFN_vkCreateDescriptorPool CreateDescriptorPool;
-     PFN_vkDestroyDescriptorPool DestroyDescriptorPool;
-     PFN_vkResetDescriptorPool ResetDescriptorPool;
--    PFN_vkAllocDescriptorSets AllocDescriptorSets;
-+    PFN_vkAllocateDescriptorSets AllocateDescriptorSets;
-     PFN_vkFreeDescriptorSets FreeDescriptorSets;
-     PFN_vkUpdateDescriptorSets UpdateDescriptorSets;
-     PFN_vkCreateFramebuffer CreateFramebuffer;
-@@ -134,7 +134,7 @@ struct DeviceVtbl {
-     PFN_vkCreateCommandPool CreateCommandPool;
-     PFN_vkDestroyCommandPool DestroyCommandPool;
-     PFN_vkResetCommandPool ResetCommandPool;
--    PFN_vkAllocCommandBuffers AllocCommandBuffers;
-+    PFN_vkAllocateCommandBuffers AllocateCommandBuffers;
-     PFN_vkFreeCommandBuffers FreeCommandBuffers;
- 
-     PFN_vkQueueSubmit QueueSubmit;
-@@ -214,7 +214,7 @@ VkResult EnumerateInstanceExtensionProperties(
- VkResult EnumerateInstanceLayerProperties(uint32_t* count,
-                                           VkLayerProperties* properties);
- VkResult CreateInstance(const VkInstanceCreateInfo* create_info,
--                        const VkAllocCallbacks* pAllocator,
-+                        const VkAllocationCallbacks* pAllocator,
-                         VkInstance* instance);
- PFN_vkVoidFunction GetInstanceProcAddr(VkInstance instance, const char* name);
- PFN_vkVoidFunction GetDeviceProcAddr(VkDevice drv_device, const char* name);
-@@ -223,19 +223,20 @@ void GetDeviceQueue(VkDevice drv_device,
-                     uint32_t index,
-                     VkQueue* out_queue);
- VkResult AllocCommandBuffers(VkDevice device,
--                             const VkCmdBufferAllocInfo* alloc_info,
--                             VkCmdBuffer* cmdbuffers);
--VkResult DestroyDevice(VkDevice drv_device, const VkAllocCallbacks* pAllocator);
-+                             const VkCommandBufferAllocateInfo* alloc_info,
-+                             VkCommandBuffer* cmdbufs);
-+VkResult DestroyDevice(VkDevice drv_device,
-+                       const VkAllocationCallbacks* pAllocator);
- 
- void* AllocMem(VkInstance instance,
-                size_t size,
-                size_t align,
--               VkSystemAllocScope scope);
-+               VkSystemAllocationScope scope);
- void FreeMem(VkInstance instance, void* ptr);
- void* AllocMem(VkDevice device,
-                size_t size,
-                size_t align,
--               VkSystemAllocScope scope);
-+               VkSystemAllocationScope scope);
- void FreeMem(VkDevice device, void* ptr);
- const DeviceVtbl& GetDriverVtbl(VkDevice device);
- const DeviceVtbl& GetDriverVtbl(VkQueue queue);
-diff --git a/vulkan/libvulkan/swapchain.cpp b/vulkan/libvulkan/swapchain.cpp
-index f1fe236..5b35506 100644
---- a/vulkan/libvulkan/swapchain.cpp
-+++ b/vulkan/libvulkan/swapchain.cpp
-@@ -37,7 +37,8 @@ namespace {
- // ----------------------------------------------------------------------------
- // These functions/classes form an adaptor that allows objects to be refcounted
- // by both android::sp<> and std::shared_ptr<> simultaneously, and delegates
--// allocation of the shared_ptr<> control structure to VkAllocCallbacks. The
-+// allocation of the shared_ptr<> control structure to VkAllocationCallbacks.
-+// The
- // platform holds a reference to the ANativeWindow using its embedded reference
- // count, and the ANativeWindow implementation holds references to the
- // ANativeWindowBuffers using their embedded reference counts, so the
-@@ -54,12 +55,14 @@ struct AllocScope {};
- 
- template <>
- struct AllocScope<VkInstance> {
--    static const VkSystemAllocScope kScope = VK_SYSTEM_ALLOC_SCOPE_INSTANCE;
-+    static const VkSystemAllocationScope kScope =
-+        VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE;
- };
- 
- template <>
- struct AllocScope<VkDevice> {
--    static const VkSystemAllocScope kScope = VK_SYSTEM_ALLOC_SCOPE_DEVICE;
-+    static const VkSystemAllocationScope kScope =
-+        VK_SYSTEM_ALLOCATION_SCOPE_DEVICE;
- };
- 
- template <typename T, typename Host>
-@@ -142,7 +145,7 @@ VkResult CreateAndroidSurfaceKHR(VkInstance instance,
-                                  ANativeWindow* window,
-                                  VkSurfaceKHR* out_surface) {
-     void* mem = AllocMem(instance, sizeof(Surface), alignof(Surface),
--                         VK_SYSTEM_ALLOC_SCOPE_OBJECT);
-+                         VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
-     if (!mem)
-         return VK_ERROR_OUT_OF_HOST_MEMORY;
-     Surface* surface = new (mem) Surface;
-@@ -231,9 +234,9 @@ VkResult GetPhysicalDeviceSurfaceCapabilitiesKHR(
-     // - VK_IMAGE_USAGE_DEPTH_STENCIL_BIT: definitely not
-     // - VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT: definitely not
-     capabilities->supportedUsageFlags =
--        VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT |
--        VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT | VK_IMAGE_USAGE_SAMPLED_BIT |
--        VK_IMAGE_USAGE_STORAGE_BIT | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT |
-+        VK_IMAGE_USAGE_TRANSFER_SRC_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT |
-+        VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_STORAGE_BIT |
-+        VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT |
-         VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT;
- 
-     return VK_SUCCESS;
-@@ -378,7 +381,7 @@ VkResult CreateSwapchainKHR(VkDevice device,
-     // After this point, we must deallocate the swapchain on error.
- 
-     void* mem = AllocMem(device, sizeof(Swapchain), alignof(Swapchain),
--                         VK_SYSTEM_ALLOC_SCOPE_OBJECT);
-+                         VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
-     if (!mem)
-         return VK_ERROR_OUT_OF_HOST_MEMORY;
-     Swapchain* swapchain = new (mem) Swapchain(surface, num_images);
-diff --git a/vulkan/nulldrv/null_driver.cpp b/vulkan/nulldrv/null_driver.cpp
-index 698dbd0..d134c0e 100644
---- a/vulkan/nulldrv/null_driver.cpp
-+++ b/vulkan/nulldrv/null_driver.cpp
-@@ -35,7 +35,7 @@ struct VkPhysicalDevice_T {
- 
- struct VkInstance_T {
-     hwvulkan_dispatch_t dispatch;
--    VkAllocCallbacks allocator;
-+    VkAllocationCallbacks allocator;
-     VkPhysicalDevice_T physical_device;
- };
- 
-@@ -43,7 +43,7 @@ struct VkQueue_T {
-     hwvulkan_dispatch_t dispatch;
- };
- 
--struct VkCmdBuffer_T {
-+struct VkCommandBuffer_T {
-     hwvulkan_dispatch_t dispatch;
- };
- 
-@@ -95,7 +95,7 @@ const VkDeviceSize kMaxDeviceMemory = VkDeviceSize(INTPTR_MAX) + 1;
- 
- struct VkDevice_T {
-     hwvulkan_dispatch_t dispatch;
--    VkAllocCallbacks allocator;
-+    VkAllocationCallbacks allocator;
-     VkInstance_T* instance;
-     VkQueue_T queue;
-     std::array<uint64_t, HandleType::kNumTypes> next_handle;
-@@ -131,16 +131,17 @@ __attribute__((visibility("default"))) hwvulkan_module_t HAL_MODULE_INFO_SYM = {
- namespace {
- 
- VkResult CreateInstance(const VkInstanceCreateInfo* /*create_info*/,
--                        const VkAllocCallbacks* allocator,
-+                        const VkAllocationCallbacks* allocator,
-                         VkInstance* out_instance) {
-     // Assume the loader provided alloc callbacks even if the app didn't.
-     ALOG_ASSERT(
-         allocator,
-         "Missing alloc callbacks, loader or app should have provided them");
- 
--    VkInstance_T* instance = static_cast<VkInstance_T*>(allocator->pfnAlloc(
--        allocator->pUserData, sizeof(VkInstance_T), alignof(VkInstance_T),
--        VK_SYSTEM_ALLOC_SCOPE_INSTANCE));
-+    VkInstance_T* instance =
-+        static_cast<VkInstance_T*>(allocator->pfnAllocation(
-+            allocator->pUserData, sizeof(VkInstance_T), alignof(VkInstance_T),
-+            VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE));
-     if (!instance)
-         return VK_ERROR_OUT_OF_HOST_MEMORY;
- 
-@@ -245,7 +246,7 @@ PFN_vkVoidFunction GetDeviceProcAddr(VkDevice, const char* name) {
- // Instance
- 
- void DestroyInstance(VkInstance instance,
--                     const VkAllocCallbacks* /*allocator*/) {
-+                     const VkAllocationCallbacks* /*allocator*/) {
-     instance->allocator.pfnFree(instance->allocator.pUserData, instance);
- }
- 
-@@ -303,14 +304,14 @@ void GetPhysicalDeviceMemoryProperties(
- 
- VkResult CreateDevice(VkPhysicalDevice physical_device,
-                       const VkDeviceCreateInfo*,
--                      const VkAllocCallbacks* allocator,
-+                      const VkAllocationCallbacks* allocator,
-                       VkDevice* out_device) {
-     VkInstance_T* instance = GetInstanceFromPhysicalDevice(physical_device);
-     if (!allocator)
-         allocator = &instance->allocator;
--    VkDevice_T* device = static_cast<VkDevice_T*>(
--        allocator->pfnAlloc(allocator->pUserData, sizeof(VkDevice_T),
--                            alignof(VkDevice_T), VK_SYSTEM_ALLOC_SCOPE_DEVICE));
-+    VkDevice_T* device = static_cast<VkDevice_T*>(allocator->pfnAllocation(
-+        allocator->pUserData, sizeof(VkDevice_T), alignof(VkDevice_T),
-+        VK_SYSTEM_ALLOCATION_SCOPE_DEVICE));
-     if (!device)
-         return VK_ERROR_OUT_OF_HOST_MEMORY;
- 
-@@ -325,7 +326,8 @@ VkResult CreateDevice(VkPhysicalDevice physical_device,
-     return VK_SUCCESS;
- }
- 
--void DestroyDevice(VkDevice device, const VkAllocCallbacks* /*allocator*/) {
-+void DestroyDevice(VkDevice device,
-+                   const VkAllocationCallbacks* /*allocator*/) {
-     if (!device)
-         return;
-     device->allocator.pfnFree(device->allocator.pUserData, device);
-@@ -336,50 +338,51 @@ void GetDeviceQueue(VkDevice device, uint32_t, uint32_t, VkQueue* queue) {
- }
- 
- // -----------------------------------------------------------------------------
--// CmdPool
-+// CommandPool
- 
--struct CmdPool {
--    typedef VkCmdPool HandleType;
--    VkAllocCallbacks allocator;
-+struct CommandPool {
-+    typedef VkCommandPool HandleType;
-+    VkAllocationCallbacks allocator;
- };
--DEFINE_OBJECT_HANDLE_CONVERSION(CmdPool)
-+DEFINE_OBJECT_HANDLE_CONVERSION(CommandPool)
- 
- VkResult CreateCommandPool(VkDevice device,
--                           const VkCmdPoolCreateInfo* /*create_info*/,
--                           const VkAllocCallbacks* allocator,
--                           VkCmdPool* cmd_pool) {
-+                           const VkCommandPoolCreateInfo* /*create_info*/,
-+                           const VkAllocationCallbacks* allocator,
-+                           VkCommandPool* cmd_pool) {
-     if (!allocator)
-         allocator = &device->allocator;
--    CmdPool* pool = static_cast<CmdPool*>(
--        allocator->pfnAlloc(allocator->pUserData, sizeof(CmdPool),
--                            alignof(CmdPool), VK_SYSTEM_ALLOC_SCOPE_OBJECT));
-+    CommandPool* pool = static_cast<CommandPool*>(allocator->pfnAllocation(
-+        allocator->pUserData, sizeof(CommandPool), alignof(CommandPool),
-+        VK_SYSTEM_ALLOCATION_SCOPE_OBJECT));
-     if (!pool)
-         return VK_ERROR_OUT_OF_HOST_MEMORY;
-     pool->allocator = *allocator;
--    *cmd_pool = GetHandleToCmdPool(pool);
-+    *cmd_pool = GetHandleToCommandPool(pool);
-     return VK_SUCCESS;
- }
- 
- void DestroyCommandPool(VkDevice /*device*/,
--                        VkCmdPool cmd_pool,
--                        const VkAllocCallbacks* /*allocator*/) {
--    CmdPool* pool = GetCmdPoolFromHandle(cmd_pool);
-+                        VkCommandPool cmd_pool,
-+                        const VkAllocationCallbacks* /*allocator*/) {
-+    CommandPool* pool = GetCommandPoolFromHandle(cmd_pool);
-     pool->allocator.pfnFree(pool->allocator.pUserData, pool);
- }
- 
- // -----------------------------------------------------------------------------
- // CmdBuffer
- 
--VkResult AllocCommandBuffers(VkDevice /*device*/,
--                             const VkCmdBufferAllocInfo* alloc_info,
--                             VkCmdBuffer* cmdbufs) {
-+VkResult AllocateCommandBuffers(VkDevice /*device*/,
-+                                const VkCommandBufferAllocateInfo* alloc_info,
-+                                VkCommandBuffer* cmdbufs) {
-     VkResult result = VK_SUCCESS;
--    CmdPool& pool = *GetCmdPoolFromHandle(alloc_info->cmdPool);
-+    CommandPool& pool = *GetCommandPoolFromHandle(alloc_info->commandPool);
-     std::fill(cmdbufs, cmdbufs + alloc_info->bufferCount, nullptr);
-     for (uint32_t i = 0; i < alloc_info->bufferCount; i++) {
--        cmdbufs[i] = static_cast<VkCmdBuffer_T*>(pool.allocator.pfnAlloc(
--            pool.allocator.pUserData, sizeof(VkCmdBuffer_T),
--            alignof(VkCmdBuffer_T), VK_SYSTEM_ALLOC_SCOPE_OBJECT));
-+        cmdbufs[i] =
-+            static_cast<VkCommandBuffer_T*>(pool.allocator.pfnAllocation(
-+                pool.allocator.pUserData, sizeof(VkCommandBuffer_T),
-+                alignof(VkCommandBuffer_T), VK_SYSTEM_ALLOCATION_SCOPE_OBJECT));
-         if (!cmdbufs[i]) {
-             result = VK_ERROR_OUT_OF_HOST_MEMORY;
-             break;
-@@ -397,10 +400,10 @@ VkResult AllocCommandBuffers(VkDevice /*device*/,
- }
- 
- void FreeCommandBuffers(VkDevice /*device*/,
--                        VkCmdPool cmd_pool,
-+                        VkCommandPool cmd_pool,
-                         uint32_t count,
--                        const VkCmdBuffer* cmdbufs) {
--    CmdPool& pool = *GetCmdPoolFromHandle(cmd_pool);
-+                        const VkCommandBuffer* cmdbufs) {
-+    CommandPool& pool = *GetCommandPoolFromHandle(cmd_pool);
-     for (uint32_t i = 0; i < count; i++)
-         pool.allocator.pfnFree(pool.allocator.pUserData, cmdbufs[i]);
- }
-@@ -415,19 +418,19 @@ struct DeviceMemory {
- };
- DEFINE_OBJECT_HANDLE_CONVERSION(DeviceMemory)
- 
--VkResult AllocMemory(VkDevice device,
--                     const VkMemoryAllocInfo* alloc_info,
--                     const VkAllocCallbacks* allocator,
--                     VkDeviceMemory* mem_handle) {
-+VkResult AllocateMemory(VkDevice device,
-+                        const VkMemoryAllocateInfo* alloc_info,
-+                        const VkAllocationCallbacks* allocator,
-+                        VkDeviceMemory* mem_handle) {
-     if (SIZE_MAX - sizeof(DeviceMemory) <= alloc_info->allocationSize)
-         return VK_ERROR_OUT_OF_HOST_MEMORY;
-     if (!allocator)
-         allocator = &device->allocator;
- 
-     size_t size = sizeof(DeviceMemory) + size_t(alloc_info->allocationSize);
--    DeviceMemory* mem = static_cast<DeviceMemory*>(
--        allocator->pfnAlloc(allocator->pUserData, size, alignof(DeviceMemory),
--                            VK_SYSTEM_ALLOC_SCOPE_OBJECT));
-+    DeviceMemory* mem = static_cast<DeviceMemory*>(allocator->pfnAllocation(
-+        allocator->pUserData, size, alignof(DeviceMemory),
-+        VK_SYSTEM_ALLOCATION_SCOPE_OBJECT));
-     if (!mem)
-         return VK_ERROR_OUT_OF_HOST_MEMORY;
-     mem->size = size;
-@@ -437,7 +440,7 @@ VkResult AllocMemory(VkDevice device,
- 
- void FreeMemory(VkDevice device,
-                 VkDeviceMemory mem_handle,
--                const VkAllocCallbacks* allocator) {
-+                const VkAllocationCallbacks* allocator) {
-     if (!allocator)
-         allocator = &device->allocator;
-     DeviceMemory* mem = GetDeviceMemoryFromHandle(mem_handle);
-@@ -466,7 +469,7 @@ DEFINE_OBJECT_HANDLE_CONVERSION(Buffer)
- 
- VkResult CreateBuffer(VkDevice device,
-                       const VkBufferCreateInfo* create_info,
--                      const VkAllocCallbacks* allocator,
-+                      const VkAllocationCallbacks* allocator,
-                       VkBuffer* buffer_handle) {
-     ALOGW_IF(create_info->size > kMaxDeviceMemory,
-              "CreateBuffer: requested size 0x%" PRIx64
-@@ -474,9 +477,9 @@ VkResult CreateBuffer(VkDevice device,
-              create_info->size, kMaxDeviceMemory);
-     if (!allocator)
-         allocator = &device->allocator;
--    Buffer* buffer = static_cast<Buffer*>(
--        allocator->pfnAlloc(allocator->pUserData, sizeof(Buffer),
--                            alignof(Buffer), VK_SYSTEM_ALLOC_SCOPE_OBJECT));
-+    Buffer* buffer = static_cast<Buffer*>(allocator->pfnAllocation(
-+        allocator->pUserData, sizeof(Buffer), alignof(Buffer),
-+        VK_SYSTEM_ALLOCATION_SCOPE_OBJECT));
-     if (!buffer)
-         return VK_ERROR_OUT_OF_HOST_MEMORY;
-     buffer->size = create_info->size;
-@@ -495,7 +498,7 @@ void GetBufferMemoryRequirements(VkDevice,
- 
- void DestroyBuffer(VkDevice device,
-                    VkBuffer buffer_handle,
--                   const VkAllocCallbacks* allocator) {
-+                   const VkAllocationCallbacks* allocator) {
-     if (!allocator)
-         allocator = &device->allocator;
-     Buffer* buffer = GetBufferFromHandle(buffer_handle);
-@@ -513,7 +516,7 @@ DEFINE_OBJECT_HANDLE_CONVERSION(Image)
- 
- VkResult CreateImage(VkDevice device,
-                      const VkImageCreateInfo* create_info,
--                     const VkAllocCallbacks* allocator,
-+                     const VkAllocationCallbacks* allocator,
-                      VkImage* image_handle) {
-     if (create_info->imageType != VK_IMAGE_TYPE_2D ||
-         create_info->format != VK_FORMAT_R8G8B8A8_UNORM ||
-@@ -534,9 +537,9 @@ VkResult CreateImage(VkDevice device,
- 
-     if (!allocator)
-         allocator = &device->allocator;
--    Image* image = static_cast<Image*>(
--        allocator->pfnAlloc(allocator->pUserData, sizeof(Image), alignof(Image),
--                            VK_SYSTEM_ALLOC_SCOPE_OBJECT));
-+    Image* image = static_cast<Image*>(allocator->pfnAllocation(
-+        allocator->pUserData, sizeof(Image), alignof(Image),
-+        VK_SYSTEM_ALLOCATION_SCOPE_OBJECT));
-     if (!image)
-         return VK_ERROR_OUT_OF_HOST_MEMORY;
-     image->size = size;
-@@ -555,7 +558,7 @@ void GetImageMemoryRequirements(VkDevice,
- 
- void DestroyImage(VkDevice device,
-                   VkImage image_handle,
--                  const VkAllocCallbacks* allocator) {
-+                  const VkAllocationCallbacks* allocator) {
-     if (!allocator)
-         allocator = &device->allocator;
-     Image* image = GetImageFromHandle(image_handle);
-@@ -567,7 +570,7 @@ void DestroyImage(VkDevice device,
- 
- VkResult CreateBufferView(VkDevice device,
-                           const VkBufferViewCreateInfo*,
--                          const VkAllocCallbacks* /*allocator*/,
-+                          const VkAllocationCallbacks* /*allocator*/,
-                           VkBufferView* view) {
-     *view = AllocHandle(device, HandleType::kBufferView);
-     return VK_SUCCESS;
-@@ -575,15 +578,15 @@ VkResult CreateBufferView(VkDevice device,
- 
- VkResult CreateDescriptorPool(VkDevice device,
-                               const VkDescriptorPoolCreateInfo*,
--                              const VkAllocCallbacks* /*allocator*/,
-+                              const VkAllocationCallbacks* /*allocator*/,
-                               VkDescriptorPool* pool) {
-     *pool = AllocHandle(device, HandleType::kDescriptorPool);
-     return VK_SUCCESS;
- }
- 
--VkResult AllocDescriptorSets(VkDevice device,
--                             const VkDescriptorSetAllocInfo* alloc_info,
--                             VkDescriptorSet* descriptor_sets) {
-+VkResult AllocateDescriptorSets(VkDevice device,
-+                                const VkDescriptorSetAllocateInfo* alloc_info,
-+                                VkDescriptorSet* descriptor_sets) {
-     for (uint32_t i = 0; i < alloc_info->setLayoutCount; i++)
-         descriptor_sets[i] = AllocHandle(device, HandleType::kDescriptorSet);
-     return VK_SUCCESS;
-@@ -591,7 +594,7 @@ VkResult AllocDescriptorSets(VkDevice device,
- 
- VkResult CreateDescriptorSetLayout(VkDevice device,
-                                    const VkDescriptorSetLayoutCreateInfo*,
--                                   const VkAllocCallbacks* /*allocator*/,
-+                                   const VkAllocationCallbacks* /*allocator*/,
-                                    VkDescriptorSetLayout* layout) {
-     *layout = AllocHandle(device, HandleType::kDescriptorSetLayout);
-     return VK_SUCCESS;
-@@ -599,7 +602,7 @@ VkResult CreateDescriptorSetLayout(VkDevice device,
- 
- VkResult CreateEvent(VkDevice device,
-                      const VkEventCreateInfo*,
--                     const VkAllocCallbacks* /*allocator*/,
-+                     const VkAllocationCallbacks* /*allocator*/,
-                      VkEvent* event) {
-     *event = AllocHandle(device, HandleType::kEvent);
-     return VK_SUCCESS;
-@@ -607,7 +610,7 @@ VkResult CreateEvent(VkDevice device,
- 
- VkResult CreateFence(VkDevice device,
-                      const VkFenceCreateInfo*,
--                     const VkAllocCallbacks* /*allocator*/,
-+                     const VkAllocationCallbacks* /*allocator*/,
-                      VkFence* fence) {
-     *fence = AllocHandle(device, HandleType::kFence);
-     return VK_SUCCESS;
-@@ -615,7 +618,7 @@ VkResult CreateFence(VkDevice device,
- 
- VkResult CreateFramebuffer(VkDevice device,
-                            const VkFramebufferCreateInfo*,
--                           const VkAllocCallbacks* /*allocator*/,
-+                           const VkAllocationCallbacks* /*allocator*/,
-                            VkFramebuffer* framebuffer) {
-     *framebuffer = AllocHandle(device, HandleType::kFramebuffer);
-     return VK_SUCCESS;
-@@ -623,7 +626,7 @@ VkResult CreateFramebuffer(VkDevice device,
- 
- VkResult CreateImageView(VkDevice device,
-                          const VkImageViewCreateInfo*,
--                         const VkAllocCallbacks* /*allocator*/,
-+                         const VkAllocationCallbacks* /*allocator*/,
-                          VkImageView* view) {
-     *view = AllocHandle(device, HandleType::kImageView);
-     return VK_SUCCESS;
-@@ -633,7 +636,7 @@ VkResult CreateGraphicsPipelines(VkDevice device,
-                                  VkPipelineCache,
-                                  uint32_t count,
-                                  const VkGraphicsPipelineCreateInfo*,
--                                 const VkAllocCallbacks* /*allocator*/,
-+                                 const VkAllocationCallbacks* /*allocator*/,
-                                  VkPipeline* pipelines) {
-     for (uint32_t i = 0; i < count; i++)
-         pipelines[i] = AllocHandle(device, HandleType::kPipeline);
-@@ -644,7 +647,7 @@ VkResult CreateComputePipelines(VkDevice device,
-                                 VkPipelineCache,
-                                 uint32_t count,
-                                 const VkComputePipelineCreateInfo*,
--                                const VkAllocCallbacks* /*allocator*/,
-+                                const VkAllocationCallbacks* /*allocator*/,
-                                 VkPipeline* pipelines) {
-     for (uint32_t i = 0; i < count; i++)
-         pipelines[i] = AllocHandle(device, HandleType::kPipeline);
-@@ -653,7 +656,7 @@ VkResult CreateComputePipelines(VkDevice device,
- 
- VkResult CreatePipelineCache(VkDevice device,
-                              const VkPipelineCacheCreateInfo*,
--                             const VkAllocCallbacks* /*allocator*/,
-+                             const VkAllocationCallbacks* /*allocator*/,
-                              VkPipelineCache* cache) {
-     *cache = AllocHandle(device, HandleType::kPipelineCache);
-     return VK_SUCCESS;
-@@ -661,7 +664,7 @@ VkResult CreatePipelineCache(VkDevice device,
- 
- VkResult CreatePipelineLayout(VkDevice device,
-                               const VkPipelineLayoutCreateInfo*,
--                              const VkAllocCallbacks* /*allocator*/,
-+                              const VkAllocationCallbacks* /*allocator*/,
-                               VkPipelineLayout* layout) {
-     *layout = AllocHandle(device, HandleType::kPipelineLayout);
-     return VK_SUCCESS;
-@@ -669,7 +672,7 @@ VkResult CreatePipelineLayout(VkDevice device,
- 
- VkResult CreateQueryPool(VkDevice device,
-                          const VkQueryPoolCreateInfo*,
--                         const VkAllocCallbacks* /*allocator*/,
-+                         const VkAllocationCallbacks* /*allocator*/,
-                          VkQueryPool* pool) {
-     *pool = AllocHandle(device, HandleType::kQueryPool);
-     return VK_SUCCESS;
-@@ -677,7 +680,7 @@ VkResult CreateQueryPool(VkDevice device,
- 
- VkResult CreateRenderPass(VkDevice device,
-                           const VkRenderPassCreateInfo*,
--                          const VkAllocCallbacks* /*allocator*/,
-+                          const VkAllocationCallbacks* /*allocator*/,
-                           VkRenderPass* renderpass) {
-     *renderpass = AllocHandle(device, HandleType::kRenderPass);
-     return VK_SUCCESS;
-@@ -685,7 +688,7 @@ VkResult CreateRenderPass(VkDevice device,
- 
- VkResult CreateSampler(VkDevice device,
-                        const VkSamplerCreateInfo*,
--                       const VkAllocCallbacks* /*allocator*/,
-+                       const VkAllocationCallbacks* /*allocator*/,
-                        VkSampler* sampler) {
-     *sampler = AllocHandle(device, HandleType::kSampler);
-     return VK_SUCCESS;
-@@ -693,7 +696,7 @@ VkResult CreateSampler(VkDevice device,
- 
- VkResult CreateSemaphore(VkDevice device,
-                          const VkSemaphoreCreateInfo*,
--                         const VkAllocCallbacks* /*allocator*/,
-+                         const VkAllocationCallbacks* /*allocator*/,
-                          VkSemaphore* semaphore) {
-     *semaphore = AllocHandle(device, HandleType::kSemaphore);
-     return VK_SUCCESS;
-@@ -701,7 +704,7 @@ VkResult CreateSemaphore(VkDevice device,
- 
- VkResult CreateShader(VkDevice device,
-                       const VkShaderCreateInfo*,
--                      const VkAllocCallbacks* /*allocator*/,
-+                      const VkAllocationCallbacks* /*allocator*/,
-                       VkShader* shader) {
-     *shader = AllocHandle(device, HandleType::kShader);
-     return VK_SUCCESS;
-@@ -709,7 +712,7 @@ VkResult CreateShader(VkDevice device,
- 
- VkResult CreateShaderModule(VkDevice device,
-                             const VkShaderModuleCreateInfo*,
--                            const VkAllocCallbacks* /*allocator*/,
-+                            const VkAllocationCallbacks* /*allocator*/,
-                             VkShaderModule* module) {
-     *module = AllocHandle(device, HandleType::kShaderModule);
-     return VK_SUCCESS;
-@@ -820,7 +823,7 @@ VkResult QueueBindSparse(VkQueue queue, uint32_t bindInfoCount, const VkBindSpar
-     return VK_SUCCESS;
- }
- 
--void DestroyFence(VkDevice device, VkFence fence, const VkAllocCallbacks* allocator) {
-+void DestroyFence(VkDevice device, VkFence fence, const VkAllocationCallbacks* allocator) {
- }
- 
- VkResult ResetFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences) {
-@@ -836,10 +839,10 @@ VkResult WaitForFences(VkDevice device, uint32_t fenceCount, const VkFence* pFen
-     return VK_SUCCESS;
- }
- 
--void DestroySemaphore(VkDevice device, VkSemaphore semaphore, const VkAllocCallbacks* allocator) {
-+void DestroySemaphore(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* allocator) {
- }
- 
--void DestroyEvent(VkDevice device, VkEvent event, const VkAllocCallbacks* allocator) {
-+void DestroyEvent(VkDevice device, VkEvent event, const VkAllocationCallbacks* allocator) {
- }
- 
- VkResult GetEventStatus(VkDevice device, VkEvent event) {
-@@ -857,7 +860,7 @@ VkResult ResetEvent(VkDevice device, VkEvent event) {
-     return VK_SUCCESS;
- }
- 
--void DestroyQueryPool(VkDevice device, VkQueryPool queryPool, const VkAllocCallbacks* allocator) {
-+void DestroyQueryPool(VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* allocator) {
- }
- 
- VkResult GetQueryPoolResults(VkDevice device, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, size_t dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags) {
-@@ -865,23 +868,23 @@ VkResult GetQueryPoolResults(VkDevice device, VkQueryPool queryPool, uint32_t st
-     return VK_SUCCESS;
- }
- 
--void DestroyBufferView(VkDevice device, VkBufferView bufferView, const VkAllocCallbacks* allocator) {
-+void DestroyBufferView(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* allocator) {
- }
- 
- void GetImageSubresourceLayout(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout) {
-     ALOGV("TODO: vk%s", __FUNCTION__);
- }
- 
--void DestroyImageView(VkDevice device, VkImageView imageView, const VkAllocCallbacks* allocator) {
-+void DestroyImageView(VkDevice device, VkImageView imageView, const VkAllocationCallbacks* allocator) {
- }
- 
--void DestroyShaderModule(VkDevice device, VkShaderModule shaderModule, const VkAllocCallbacks* allocator) {
-+void DestroyShaderModule(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* allocator) {
- }
- 
--void DestroyShader(VkDevice device, VkShader shader, const VkAllocCallbacks* allocator) {
-+void DestroyShader(VkDevice device, VkShader shader, const VkAllocationCallbacks* allocator) {
- }
- 
--void DestroyPipelineCache(VkDevice device, VkPipelineCache pipelineCache, const VkAllocCallbacks* allocator) {
-+void DestroyPipelineCache(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* allocator) {
- }
- 
- VkResult GetPipelineCacheData(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData) {
-@@ -894,19 +897,19 @@ VkResult MergePipelineCaches(VkDevice device, VkPipelineCache destCache, uint32_
-     return VK_SUCCESS;
- }
- 
--void DestroyPipeline(VkDevice device, VkPipeline pipeline, const VkAllocCallbacks* allocator) {
-+void DestroyPipeline(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* allocator) {
- }
- 
--void DestroyPipelineLayout(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocCallbacks* allocator) {
-+void DestroyPipelineLayout(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* allocator) {
- }
- 
--void DestroySampler(VkDevice device, VkSampler sampler, const VkAllocCallbacks* allocator) {
-+void DestroySampler(VkDevice device, VkSampler sampler, const VkAllocationCallbacks* allocator) {
- }
- 
--void DestroyDescriptorSetLayout(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocCallbacks* allocator) {
-+void DestroyDescriptorSetLayout(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* allocator) {
- }
- 
--void DestroyDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocCallbacks* allocator) {
-+void DestroyDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* allocator) {
- }
- 
- VkResult ResetDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags) {
-@@ -923,164 +926,164 @@ VkResult FreeDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool, ui
-     return VK_SUCCESS;
- }
- 
--void DestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer, const VkAllocCallbacks* allocator) {
-+void DestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* allocator) {
- }
- 
--void DestroyRenderPass(VkDevice device, VkRenderPass renderPass, const VkAllocCallbacks* allocator) {
-+void DestroyRenderPass(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* allocator) {
- }
- 
- void GetRenderAreaGranularity(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity) {
-     ALOGV("TODO: vk%s", __FUNCTION__);
- }
- 
--VkResult ResetCommandPool(VkDevice device, VkCmdPool cmdPool, VkCmdPoolResetFlags flags) {
-+VkResult ResetCommandPool(VkDevice device, VkCommandPool cmdPool, VkCommandPoolResetFlags flags) {
-     ALOGV("TODO: vk%s", __FUNCTION__);
-     return VK_SUCCESS;
- }
- 
--VkResult BeginCommandBuffer(VkCmdBuffer cmdBuffer, const VkCmdBufferBeginInfo* pBeginInfo) {
-+VkResult BeginCommandBuffer(VkCommandBuffer cmdBuffer, const VkCommandBufferBeginInfo* pBeginInfo) {
-     return VK_SUCCESS;
- }
- 
--VkResult EndCommandBuffer(VkCmdBuffer cmdBuffer) {
-+VkResult EndCommandBuffer(VkCommandBuffer cmdBuffer) {
-     return VK_SUCCESS;
- }
- 
--VkResult ResetCommandBuffer(VkCmdBuffer cmdBuffer, VkCmdBufferResetFlags flags) {
-+VkResult ResetCommandBuffer(VkCommandBuffer cmdBuffer, VkCommandBufferResetFlags flags) {
-     ALOGV("TODO: vk%s", __FUNCTION__);
-     return VK_SUCCESS;
- }
- 
--void CmdBindPipeline(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline) {
-+void CmdBindPipeline(VkCommandBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline) {
- }
- 
--void CmdSetViewport(VkCmdBuffer cmdBuffer, uint32_t viewportCount, const VkViewport* pViewports) {
-+void CmdSetViewport(VkCommandBuffer cmdBuffer, uint32_t viewportCount, const VkViewport* pViewports) {
- }
- 
--void CmdSetScissor(VkCmdBuffer cmdBuffer, uint32_t scissorCount, const VkRect2D* pScissors) {
-+void CmdSetScissor(VkCommandBuffer cmdBuffer, uint32_t scissorCount, const VkRect2D* pScissors) {
- }
- 
--void CmdSetLineWidth(VkCmdBuffer cmdBuffer, float lineWidth) {
-+void CmdSetLineWidth(VkCommandBuffer cmdBuffer, float lineWidth) {
- }
- 
--void CmdSetDepthBias(VkCmdBuffer cmdBuffer, float depthBias, float depthBiasClamp, float slopeScaledDepthBias) {
-+void CmdSetDepthBias(VkCommandBuffer cmdBuffer, float depthBias, float depthBiasClamp, float slopeScaledDepthBias) {
- }
- 
--void CmdSetBlendConstants(VkCmdBuffer cmdBuffer, const float blendConst[4]) {
-+void CmdSetBlendConstants(VkCommandBuffer cmdBuffer, const float blendConst[4]) {
- }
- 
--void CmdSetDepthBounds(VkCmdBuffer cmdBuffer, float minDepthBounds, float maxDepthBounds) {
-+void CmdSetDepthBounds(VkCommandBuffer cmdBuffer, float minDepthBounds, float maxDepthBounds) {
- }
- 
--void CmdSetStencilCompareMask(VkCmdBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilCompareMask) {
-+void CmdSetStencilCompareMask(VkCommandBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilCompareMask) {
- }
- 
--void CmdSetStencilWriteMask(VkCmdBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilWriteMask) {
-+void CmdSetStencilWriteMask(VkCommandBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilWriteMask) {
- }
- 
--void CmdSetStencilReference(VkCmdBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilReference) {
-+void CmdSetStencilReference(VkCommandBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilReference) {
- }
- 
--void CmdBindDescriptorSets(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t setCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets) {
-+void CmdBindDescriptorSets(VkCommandBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t setCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets) {
- }
- 
--void CmdBindIndexBuffer(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType) {
-+void CmdBindIndexBuffer(VkCommandBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType) {
- }
- 
--void CmdBindVertexBuffers(VkCmdBuffer cmdBuffer, uint32_t startBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets) {
-+void CmdBindVertexBuffers(VkCommandBuffer cmdBuffer, uint32_t startBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets) {
- }
- 
--void CmdDraw(VkCmdBuffer cmdBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance) {
-+void CmdDraw(VkCommandBuffer cmdBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance) {
- }
- 
--void CmdDrawIndexed(VkCmdBuffer cmdBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance) {
-+void CmdDrawIndexed(VkCommandBuffer cmdBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance) {
- }
- 
--void CmdDrawIndirect(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count, uint32_t stride) {
-+void CmdDrawIndirect(VkCommandBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count, uint32_t stride) {
- }
- 
--void CmdDrawIndexedIndirect(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count, uint32_t stride) {
-+void CmdDrawIndexedIndirect(VkCommandBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count, uint32_t stride) {
- }
- 
--void CmdDispatch(VkCmdBuffer cmdBuffer, uint32_t x, uint32_t y, uint32_t z) {
-+void CmdDispatch(VkCommandBuffer cmdBuffer, uint32_t x, uint32_t y, uint32_t z) {
- }
- 
--void CmdDispatchIndirect(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset) {
-+void CmdDispatchIndirect(VkCommandBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset) {
- }
- 
--void CmdCopyBuffer(VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkBuffer destBuffer, uint32_t regionCount, const VkBufferCopy* pRegions) {
-+void CmdCopyBuffer(VkCommandBuffer cmdBuffer, VkBuffer srcBuffer, VkBuffer destBuffer, uint32_t regionCount, const VkBufferCopy* pRegions) {
- }
- 
--void CmdCopyImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageCopy* pRegions) {
-+void CmdCopyImage(VkCommandBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageCopy* pRegions) {
- }
- 
--void CmdBlitImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter) {
-+void CmdBlitImage(VkCommandBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter) {
- }
- 
--void CmdCopyBufferToImage(VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions) {
-+void CmdCopyBufferToImage(VkCommandBuffer cmdBuffer, VkBuffer srcBuffer, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions) {
- }
- 
--void CmdCopyImageToBuffer(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer destBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions) {
-+void CmdCopyImageToBuffer(VkCommandBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer destBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions) {
- }
- 
--void CmdUpdateBuffer(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize dataSize, const uint32_t* pData) {
-+void CmdUpdateBuffer(VkCommandBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize dataSize, const uint32_t* pData) {
- }
- 
--void CmdFillBuffer(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize fillSize, uint32_t data) {
-+void CmdFillBuffer(VkCommandBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize fillSize, uint32_t data) {
- }
- 
--void CmdClearColorImage(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges) {
-+void CmdClearColorImage(VkCommandBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges) {
- }
- 
--void CmdClearDepthStencilImage(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges) {
-+void CmdClearDepthStencilImage(VkCommandBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges) {
- }
- 
--void CmdClearAttachments(VkCmdBuffer cmdBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects) {
-+void CmdClearAttachments(VkCommandBuffer cmdBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects) {
- }
- 
--void CmdResolveImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageResolve* pRegions) {
-+void CmdResolveImage(VkCommandBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageResolve* pRegions) {
- }
- 
--void CmdSetEvent(VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask) {
-+void CmdSetEvent(VkCommandBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask) {
- }
- 
--void CmdResetEvent(VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask) {
-+void CmdResetEvent(VkCommandBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask) {
- }
- 
--void CmdWaitEvents(VkCmdBuffer cmdBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, uint32_t memBarrierCount, const void* const* ppMemBarriers) {
-+void CmdWaitEvents(VkCommandBuffer cmdBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, uint32_t memBarrierCount, const void* const* ppMemBarriers) {
- }
- 
--void CmdPipelineBarrier(VkCmdBuffer cmdBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, VkDependencyFlags dependencyFlags, uint32_t memBarrierCount, const void* const* ppMemBarriers) {
-+void CmdPipelineBarrier(VkCommandBuffer cmdBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, VkDependencyFlags dependencyFlags, uint32_t memBarrierCount, const void* const* ppMemBarriers) {
- }
- 
--void CmdBeginQuery(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot, VkQueryControlFlags flags) {
-+void CmdBeginQuery(VkCommandBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot, VkQueryControlFlags flags) {
- }
- 
--void CmdEndQuery(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot) {
-+void CmdEndQuery(VkCommandBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot) {
- }
- 
--void CmdResetQueryPool(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount) {
-+void CmdResetQueryPool(VkCommandBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount) {
- }
- 
--void CmdWriteTimestamp(VkCmdBuffer cmdBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t slot) {
-+void CmdWriteTimestamp(VkCommandBuffer cmdBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t slot) {
- }
- 
--void CmdCopyQueryPoolResults(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize destStride, VkQueryResultFlags flags) {
-+void CmdCopyQueryPoolResults(VkCommandBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize destStride, VkQueryResultFlags flags) {
- }
- 
--void CmdPushConstants(VkCmdBuffer cmdBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t start, uint32_t length, const void* values) {
-+void CmdPushConstants(VkCommandBuffer cmdBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t start, uint32_t length, const void* values) {
- }
- 
--void CmdBeginRenderPass(VkCmdBuffer cmdBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkRenderPassContents contents) {
-+void CmdBeginRenderPass(VkCommandBuffer cmdBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkRenderPassContents contents) {
- }
- 
--void CmdNextSubpass(VkCmdBuffer cmdBuffer, VkRenderPassContents contents) {
-+void CmdNextSubpass(VkCommandBuffer cmdBuffer, VkRenderPassContents contents) {
- }
- 
--void CmdEndRenderPass(VkCmdBuffer cmdBuffer) {
-+void CmdEndRenderPass(VkCommandBuffer cmdBuffer) {
- }
- 
--void CmdExecuteCommands(VkCmdBuffer cmdBuffer, uint32_t cmdBuffersCount, const VkCmdBuffer* pCmdBuffers) {
-+void CmdExecuteCommands(VkCommandBuffer cmdBuffer, uint32_t cmdBuffersCount, const VkCommandBuffer* pCmdBuffers) {
- }
- 
- #pragma clang diagnostic pop
-diff --git a/vulkan/nulldrv/null_driver.h b/vulkan/nulldrv/null_driver.h
-index 5f3e53e..939a559 100644
---- a/vulkan/nulldrv/null_driver.h
-+++ b/vulkan/nulldrv/null_driver.h
-@@ -27,7 +27,7 @@ PFN_vkVoidFunction LookupInstanceProcAddr(const char* name);
- PFN_vkVoidFunction LookupDeviceProcAddr(const char* name);
- 
- // clang-format off
--void DestroyInstance(VkInstance instance, const VkAllocCallbacks* allocator);
-+void DestroyInstance(VkInstance instance, const VkAllocationCallbacks* allocator);
- VkResult EnumeratePhysicalDevices(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);
- void GetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures);
- void GetPhysicalDeviceFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties);
-@@ -37,8 +37,8 @@ void GetPhysicalDeviceQueueFamilyProperties(VkPhysicalDevice physicalDevice, uin
- void GetPhysicalDeviceMemoryProperties(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties);
- PFN_vkVoidFunction GetInstanceProcAddr(VkInstance instance, const char* pName);
- PFN_vkVoidFunction GetDeviceProcAddr(VkDevice device, const char* pName);
--VkResult CreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocCallbacks* allocator, VkDevice* pDevice);
--void DestroyDevice(VkDevice device, const VkAllocCallbacks* allocator);
-+VkResult CreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkDevice* pDevice);
-+void DestroyDevice(VkDevice device, const VkAllocationCallbacks* allocator);
- VkResult EnumerateInstanceExtensionProperties(const char* pLayerName, uint32_t* pCount, VkExtensionProperties* pProperties);
- VkResult EnumerateDeviceExtensionProperties(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pCount, VkExtensionProperties* pProperties);
- VkResult EnumerateInstanceLayerProperties(uint32_t* pCount, VkLayerProperties* pProperties);
-@@ -47,8 +47,8 @@ void GetDeviceQueue(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIn
- VkResult QueueSubmit(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmitInfo, VkFence fence);
- VkResult QueueWaitIdle(VkQueue queue);
- VkResult DeviceWaitIdle(VkDevice device);
--VkResult AllocMemory(VkDevice device, const VkMemoryAllocInfo* pAllocInfo, const VkAllocCallbacks* allocator, VkDeviceMemory* pMem);
--void FreeMemory(VkDevice device, VkDeviceMemory mem, const VkAllocCallbacks* allocator);
-+VkResult AllocateMemory(VkDevice device, const VkMemoryAllocateInfo* pAllocInfo, const VkAllocationCallbacks* allocator, VkDeviceMemory* pMem);
-+void FreeMemory(VkDevice device, VkDeviceMemory mem, const VkAllocationCallbacks* allocator);
- VkResult MapMemory(VkDevice device, VkDeviceMemory mem, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData);
- void UnmapMemory(VkDevice device, VkDeviceMemory mem);
- VkResult FlushMappedMemoryRanges(VkDevice device, uint32_t memRangeCount, const VkMappedMemoryRange* pMemRanges);
-@@ -61,110 +61,110 @@ void GetImageMemoryRequirements(VkDevice device, VkImage image, VkMemoryRequirem
- void GetImageSparseMemoryRequirements(VkDevice device, VkImage image, uint32_t* pNumRequirements, VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
- void GetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, uint32_t samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pNumProperties, VkSparseImageFormatProperties* pProperties);
- VkResult QueueBindSparse(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence);
--VkResult CreateFence(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocCallbacks* allocator, VkFence* pFence);
--void DestroyFence(VkDevice device, VkFence fence, const VkAllocCallbacks* allocator);
-+VkResult CreateFence(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkFence* pFence);
-+void DestroyFence(VkDevice device, VkFence fence, const VkAllocationCallbacks* allocator);
- VkResult ResetFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences);
- VkResult GetFenceStatus(VkDevice device, VkFence fence);
- VkResult WaitForFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout);
--VkResult CreateSemaphore(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocCallbacks* allocator, VkSemaphore* pSemaphore);
--void DestroySemaphore(VkDevice device, VkSemaphore semaphore, const VkAllocCallbacks* allocator);
--VkResult CreateEvent(VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocCallbacks* allocator, VkEvent* pEvent);
--void DestroyEvent(VkDevice device, VkEvent event, const VkAllocCallbacks* allocator);
-+VkResult CreateSemaphore(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkSemaphore* pSemaphore);
-+void DestroySemaphore(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* allocator);
-+VkResult CreateEvent(VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkEvent* pEvent);
-+void DestroyEvent(VkDevice device, VkEvent event, const VkAllocationCallbacks* allocator);
- VkResult GetEventStatus(VkDevice device, VkEvent event);
- VkResult SetEvent(VkDevice device, VkEvent event);
- VkResult ResetEvent(VkDevice device, VkEvent event);
--VkResult CreateQueryPool(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocCallbacks* allocator, VkQueryPool* pQueryPool);
--void DestroyQueryPool(VkDevice device, VkQueryPool queryPool, const VkAllocCallbacks* allocator);
-+VkResult CreateQueryPool(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkQueryPool* pQueryPool);
-+void DestroyQueryPool(VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* allocator);
- VkResult GetQueryPoolResults(VkDevice device, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, size_t dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags);
--VkResult CreateBuffer(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocCallbacks* allocator, VkBuffer* pBuffer);
--void DestroyBuffer(VkDevice device, VkBuffer buffer, const VkAllocCallbacks* allocator);
--VkResult CreateBufferView(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocCallbacks* allocator, VkBufferView* pView);
--void DestroyBufferView(VkDevice device, VkBufferView bufferView, const VkAllocCallbacks* allocator);
--VkResult CreateImage(VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocCallbacks* allocator, VkImage* pImage);
--void DestroyImage(VkDevice device, VkImage image, const VkAllocCallbacks* allocator);
-+VkResult CreateBuffer(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkBuffer* pBuffer);
-+void DestroyBuffer(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* allocator);
-+VkResult CreateBufferView(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkBufferView* pView);
-+void DestroyBufferView(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* allocator);
-+VkResult CreateImage(VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkImage* pImage);
-+void DestroyImage(VkDevice device, VkImage image, const VkAllocationCallbacks* allocator);
- void GetImageSubresourceLayout(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout);
--VkResult CreateImageView(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocCallbacks* allocator, VkImageView* pView);
--void DestroyImageView(VkDevice device, VkImageView imageView, const VkAllocCallbacks* allocator);
--VkResult CreateShaderModule(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocCallbacks* allocator, VkShaderModule* pShaderModule);
--void DestroyShaderModule(VkDevice device, VkShaderModule shaderModule, const VkAllocCallbacks* allocator);
--VkResult CreateShader(VkDevice device, const VkShaderCreateInfo* pCreateInfo, const VkAllocCallbacks* allocator, VkShader* pShader);
--void DestroyShader(VkDevice device, VkShader shader, const VkAllocCallbacks* allocator);
--VkResult CreatePipelineCache(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocCallbacks* allocator, VkPipelineCache* pPipelineCache);
--void DestroyPipelineCache(VkDevice device, VkPipelineCache pipelineCache, const VkAllocCallbacks* allocator);
-+VkResult CreateImageView(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkImageView* pView);
-+void DestroyImageView(VkDevice device, VkImageView imageView, const VkAllocationCallbacks* allocator);
-+VkResult CreateShaderModule(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkShaderModule* pShaderModule);
-+void DestroyShaderModule(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* allocator);
-+VkResult CreateShader(VkDevice device, const VkShaderCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkShader* pShader);
-+void DestroyShader(VkDevice device, VkShader shader, const VkAllocationCallbacks* allocator);
-+VkResult CreatePipelineCache(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkPipelineCache* pPipelineCache);
-+void DestroyPipelineCache(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* allocator);
- VkResult GetPipelineCacheData(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData);
- VkResult MergePipelineCaches(VkDevice device, VkPipelineCache destCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches);
--VkResult CreateGraphicsPipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t count, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocCallbacks* allocator, VkPipeline* pPipelines);
--VkResult CreateComputePipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t count, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocCallbacks* allocator, VkPipeline* pPipelines);
--void DestroyPipeline(VkDevice device, VkPipeline pipeline, const VkAllocCallbacks* allocator);
--VkResult CreatePipelineLayout(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocCallbacks* allocator, VkPipelineLayout* pPipelineLayout);
--void DestroyPipelineLayout(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocCallbacks* allocator);
--VkResult CreateSampler(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocCallbacks* allocator, VkSampler* pSampler);
--void DestroySampler(VkDevice device, VkSampler sampler, const VkAllocCallbacks* allocator);
--VkResult CreateDescriptorSetLayout(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocCallbacks* allocator, VkDescriptorSetLayout* pSetLayout);
--void DestroyDescriptorSetLayout(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocCallbacks* allocator);
--VkResult CreateDescriptorPool(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocCallbacks* allocator, VkDescriptorPool* pDescriptorPool);
--void DestroyDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocCallbacks* allocator);
-+VkResult CreateGraphicsPipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t count, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* allocator, VkPipeline* pPipelines);
-+VkResult CreateComputePipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t count, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* allocator, VkPipeline* pPipelines);
-+void DestroyPipeline(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* allocator);
-+VkResult CreatePipelineLayout(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkPipelineLayout* pPipelineLayout);
-+void DestroyPipelineLayout(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* allocator);
-+VkResult CreateSampler(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkSampler* pSampler);
-+void DestroySampler(VkDevice device, VkSampler sampler, const VkAllocationCallbacks* allocator);
-+VkResult CreateDescriptorSetLayout(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkDescriptorSetLayout* pSetLayout);
-+void DestroyDescriptorSetLayout(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* allocator);
-+VkResult CreateDescriptorPool(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkDescriptorPool* pDescriptorPool);
-+void DestroyDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* allocator);
- VkResult ResetDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags);
--VkResult AllocDescriptorSets(VkDevice device, const VkDescriptorSetAllocInfo* pAllocInfo, VkDescriptorSet* pDescriptorSets);
-+VkResult AllocateDescriptorSets(VkDevice device, const VkDescriptorSetAllocateInfo* pAllocInfo, VkDescriptorSet* pDescriptorSets);
- VkResult FreeDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool, uint32_t count, const VkDescriptorSet* pDescriptorSets);
- void UpdateDescriptorSets(VkDevice device, uint32_t writeCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t copyCount, const VkCopyDescriptorSet* pDescriptorCopies);
--VkResult CreateFramebuffer(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocCallbacks* allocator, VkFramebuffer* pFramebuffer);
--void DestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer, const VkAllocCallbacks* allocator);
--VkResult CreateRenderPass(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocCallbacks* allocator, VkRenderPass* pRenderPass);
--void DestroyRenderPass(VkDevice device, VkRenderPass renderPass, const VkAllocCallbacks* allocator);
-+VkResult CreateFramebuffer(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkFramebuffer* pFramebuffer);
-+void DestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* allocator);
-+VkResult CreateRenderPass(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkRenderPass* pRenderPass);
-+void DestroyRenderPass(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* allocator);
- void GetRenderAreaGranularity(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity);
--VkResult CreateCommandPool(VkDevice device, const VkCmdPoolCreateInfo* pCreateInfo, const VkAllocCallbacks* allocator, VkCmdPool* pCmdPool);
--void DestroyCommandPool(VkDevice device, VkCmdPool cmdPool, const VkAllocCallbacks* allocator);
--VkResult ResetCommandPool(VkDevice device, VkCmdPool cmdPool, VkCmdPoolResetFlags flags);
--VkResult AllocCommandBuffers(VkDevice device, const VkCmdBufferAllocInfo* pAllocInfo, VkCmdBuffer* pCmdBuffers);
--void FreeCommandBuffers(VkDevice device, VkCmdPool cmdPool, uint32_t count, const VkCmdBuffer* pCommandBuffers);
--VkResult BeginCommandBuffer(VkCmdBuffer cmdBuffer, const VkCmdBufferBeginInfo* pBeginInfo);
--VkResult EndCommandBuffer(VkCmdBuffer cmdBuffer);
--VkResult ResetCommandBuffer(VkCmdBuffer cmdBuffer, VkCmdBufferResetFlags flags);
--void CmdBindPipeline(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline);
--void CmdSetViewport(VkCmdBuffer cmdBuffer, uint32_t viewportCount, const VkViewport* pViewports);
--void CmdSetScissor(VkCmdBuffer cmdBuffer, uint32_t scissorCount, const VkRect2D* pScissors);
--void CmdSetLineWidth(VkCmdBuffer cmdBuffer, float lineWidth);
--void CmdSetDepthBias(VkCmdBuffer cmdBuffer, float depthBias, float depthBiasClamp, float slopeScaledDepthBias);
--void CmdSetBlendConstants(VkCmdBuffer cmdBuffer, const float blendConst[4]);
--void CmdSetDepthBounds(VkCmdBuffer cmdBuffer, float minDepthBounds, float maxDepthBounds);
--void CmdSetStencilCompareMask(VkCmdBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilCompareMask);
--void CmdSetStencilWriteMask(VkCmdBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilWriteMask);
--void CmdSetStencilReference(VkCmdBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilReference);
--void CmdBindDescriptorSets(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t setCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets);
--void CmdBindIndexBuffer(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType);
--void CmdBindVertexBuffers(VkCmdBuffer cmdBuffer, uint32_t startBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets);
--void CmdDraw(VkCmdBuffer cmdBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance);
--void CmdDrawIndexed(VkCmdBuffer cmdBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance);
--void CmdDrawIndirect(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count, uint32_t stride);
--void CmdDrawIndexedIndirect(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count, uint32_t stride);
--void CmdDispatch(VkCmdBuffer cmdBuffer, uint32_t x, uint32_t y, uint32_t z);
--void CmdDispatchIndirect(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset);
--void CmdCopyBuffer(VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkBuffer destBuffer, uint32_t regionCount, const VkBufferCopy* pRegions);
--void CmdCopyImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageCopy* pRegions);
--void CmdBlitImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter);
--void CmdCopyBufferToImage(VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions);
--void CmdCopyImageToBuffer(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer destBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions);
--void CmdUpdateBuffer(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize dataSize, const uint32_t* pData);
--void CmdFillBuffer(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize fillSize, uint32_t data);
--void CmdClearColorImage(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
--void CmdClearDepthStencilImage(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
--void CmdClearAttachments(VkCmdBuffer cmdBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects);
--void CmdResolveImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageResolve* pRegions);
--void CmdSetEvent(VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask);
--void CmdResetEvent(VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask);
--void CmdWaitEvents(VkCmdBuffer cmdBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, uint32_t memBarrierCount, const void* const* ppMemBarriers);
--void CmdPipelineBarrier(VkCmdBuffer cmdBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, VkDependencyFlags dependencyFlags, uint32_t memBarrierCount, const void* const* ppMemBarriers);
--void CmdBeginQuery(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot, VkQueryControlFlags flags);
--void CmdEndQuery(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot);
--void CmdResetQueryPool(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount);
--void CmdWriteTimestamp(VkCmdBuffer cmdBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t slot);
--void CmdCopyQueryPoolResults(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize destStride, VkQueryResultFlags flags);
--void CmdPushConstants(VkCmdBuffer cmdBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t start, uint32_t length, const void* values);
--void CmdBeginRenderPass(VkCmdBuffer cmdBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkRenderPassContents contents);
--void CmdNextSubpass(VkCmdBuffer cmdBuffer, VkRenderPassContents contents);
--void CmdEndRenderPass(VkCmdBuffer cmdBuffer);
--void CmdExecuteCommands(VkCmdBuffer cmdBuffer, uint32_t cmdBuffersCount, const VkCmdBuffer* pCmdBuffers);
-+VkResult CreateCommandPool(VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkCommandPool* pCmdPool);
-+void DestroyCommandPool(VkDevice device, VkCommandPool cmdPool, const VkAllocationCallbacks* allocator);
-+VkResult ResetCommandPool(VkDevice device, VkCommandPool cmdPool, VkCommandPoolResetFlags flags);
-+VkResult AllocateCommandBuffers(VkDevice device, const VkCommandBufferAllocateInfo* pAllocInfo, VkCommandBuffer* pCmdBuffers);
-+void FreeCommandBuffers(VkDevice device, VkCommandPool cmdPool, uint32_t count, const VkCommandBuffer* pCommandBuffers);
-+VkResult BeginCommandBuffer(VkCommandBuffer cmdBuffer, const VkCommandBufferBeginInfo* pBeginInfo);
-+VkResult EndCommandBuffer(VkCommandBuffer cmdBuffer);
-+VkResult ResetCommandBuffer(VkCommandBuffer cmdBuffer, VkCommandBufferResetFlags flags);
-+void CmdBindPipeline(VkCommandBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline);
-+void CmdSetViewport(VkCommandBuffer cmdBuffer, uint32_t viewportCount, const VkViewport* pViewports);
-+void CmdSetScissor(VkCommandBuffer cmdBuffer, uint32_t scissorCount, const VkRect2D* pScissors);
-+void CmdSetLineWidth(VkCommandBuffer cmdBuffer, float lineWidth);
-+void CmdSetDepthBias(VkCommandBuffer cmdBuffer, float depthBias, float depthBiasClamp, float slopeScaledDepthBias);
-+void CmdSetBlendConstants(VkCommandBuffer cmdBuffer, const float blendConst[4]);
-+void CmdSetDepthBounds(VkCommandBuffer cmdBuffer, float minDepthBounds, float maxDepthBounds);
-+void CmdSetStencilCompareMask(VkCommandBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilCompareMask);
-+void CmdSetStencilWriteMask(VkCommandBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilWriteMask);
-+void CmdSetStencilReference(VkCommandBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilReference);
-+void CmdBindDescriptorSets(VkCommandBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t setCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets);
-+void CmdBindIndexBuffer(VkCommandBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType);
-+void CmdBindVertexBuffers(VkCommandBuffer cmdBuffer, uint32_t startBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets);
-+void CmdDraw(VkCommandBuffer cmdBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance);
-+void CmdDrawIndexed(VkCommandBuffer cmdBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance);
-+void CmdDrawIndirect(VkCommandBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count, uint32_t stride);
-+void CmdDrawIndexedIndirect(VkCommandBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count, uint32_t stride);
-+void CmdDispatch(VkCommandBuffer cmdBuffer, uint32_t x, uint32_t y, uint32_t z);
-+void CmdDispatchIndirect(VkCommandBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset);
-+void CmdCopyBuffer(VkCommandBuffer cmdBuffer, VkBuffer srcBuffer, VkBuffer destBuffer, uint32_t regionCount, const VkBufferCopy* pRegions);
-+void CmdCopyImage(VkCommandBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageCopy* pRegions);
-+void CmdBlitImage(VkCommandBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter);
-+void CmdCopyBufferToImage(VkCommandBuffer cmdBuffer, VkBuffer srcBuffer, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions);
-+void CmdCopyImageToBuffer(VkCommandBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer destBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions);
-+void CmdUpdateBuffer(VkCommandBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize dataSize, const uint32_t* pData);
-+void CmdFillBuffer(VkCommandBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize fillSize, uint32_t data);
-+void CmdClearColorImage(VkCommandBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
-+void CmdClearDepthStencilImage(VkCommandBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
-+void CmdClearAttachments(VkCommandBuffer cmdBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects);
-+void CmdResolveImage(VkCommandBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageResolve* pRegions);
-+void CmdSetEvent(VkCommandBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask);
-+void CmdResetEvent(VkCommandBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask);
-+void CmdWaitEvents(VkCommandBuffer cmdBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, uint32_t memBarrierCount, const void* const* ppMemBarriers);
-+void CmdPipelineBarrier(VkCommandBuffer cmdBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, VkDependencyFlags dependencyFlags, uint32_t memBarrierCount, const void* const* ppMemBarriers);
-+void CmdBeginQuery(VkCommandBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot, VkQueryControlFlags flags);
-+void CmdEndQuery(VkCommandBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot);
-+void CmdResetQueryPool(VkCommandBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount);
-+void CmdWriteTimestamp(VkCommandBuffer cmdBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t slot);
-+void CmdCopyQueryPoolResults(VkCommandBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize destStride, VkQueryResultFlags flags);
-+void CmdPushConstants(VkCommandBuffer cmdBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t start, uint32_t length, const void* values);
-+void CmdBeginRenderPass(VkCommandBuffer cmdBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkRenderPassContents contents);
-+void CmdNextSubpass(VkCommandBuffer cmdBuffer, VkRenderPassContents contents);
-+void CmdEndRenderPass(VkCommandBuffer cmdBuffer);
-+void CmdExecuteCommands(VkCommandBuffer cmdBuffer, uint32_t cmdBuffersCount, const VkCommandBuffer* pCmdBuffers);
- 
- VkResult GetSwapchainGrallocUsageANDROID(VkDevice device, VkFormat format, VkImageUsageFlags imageUsage, int* grallocUsage);
- VkResult AcquireImageANDROID(VkDevice device, VkImage image, int nativeFenceFd, VkSemaphore semaphore);
-diff --git a/vulkan/nulldrv/null_driver_gen.cpp b/vulkan/nulldrv/null_driver_gen.cpp
-index f836a70..9b1b042 100644
---- a/vulkan/nulldrv/null_driver_gen.cpp
-+++ b/vulkan/nulldrv/null_driver_gen.cpp
-@@ -67,9 +67,9 @@ const NameProcEntry kInstanceProcTbl[] = {
- 
- const NameProcEntry kDeviceProcTbl[] = {
-     // clang-format off
--    {"vkAllocCommandBuffers", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkAllocCommandBuffers>(AllocCommandBuffers))},
--    {"vkAllocDescriptorSets", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkAllocDescriptorSets>(AllocDescriptorSets))},
--    {"vkAllocMemory", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkAllocMemory>(AllocMemory))},
-+    {"vkAllocateCommandBuffers", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkAllocateCommandBuffers>(AllocateCommandBuffers))},
-+    {"vkAllocateDescriptorSets", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkAllocateDescriptorSets>(AllocateDescriptorSets))},
-+    {"vkAllocateMemory", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkAllocateMemory>(AllocateMemory))},
-     {"vkBeginCommandBuffer", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkBeginCommandBuffer>(BeginCommandBuffer))},
-     {"vkBindBufferMemory", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkBindBufferMemory>(BindBufferMemory))},
-     {"vkBindImageMemory", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkBindImageMemory>(BindImageMemory))},
-diff --git a/vulkan/tools/vkinfo.cpp b/vulkan/tools/vkinfo.cpp
-index eaec272..838d0e2 100644
---- a/vulkan/tools/vkinfo.cpp
-+++ b/vulkan/tools/vkinfo.cpp
-@@ -157,7 +157,7 @@ int main(int /*argc*/, char const* /*argv*/ []) {
-     const VkInstanceCreateInfo create_info = {
-         .sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
-         .pNext = nullptr,
--        .pAppInfo = nullptr,
-+        .pApplicationInfo = nullptr,
-         .enabledLayerNameCount = 0,
-         .ppEnabledLayerNames = nullptr,
-         .enabledExtensionNameCount = 0,
--- 
-2.6.0.rc2.230.g3dd15c0
-
diff --git a/vulkan/patches/frameworks_native-sdk_0.10/0019-vulkan-Update-from-version-0.196.0-to-0.197.0.patch b/vulkan/patches/frameworks_native-sdk_0.10/0019-vulkan-Update-from-version-0.196.0-to-0.197.0.patch
deleted file mode 100644
index ed40c6f..0000000
--- a/vulkan/patches/frameworks_native-sdk_0.10/0019-vulkan-Update-from-version-0.196.0-to-0.197.0.patch
+++ /dev/null
@@ -1,220 +0,0 @@
-From bef4966ad22d7690626b3dc048c59cb9e9eab870 Mon Sep 17 00:00:00 2001
-From: Jesse Hall <jessehall@google.com>
-Date: Sun, 29 Nov 2015 23:50:38 -0800
-Subject: [PATCH] vulkan: Update from version 0.196.0 to 0.197.0
-
-Change-Id: I1c7aecd276cb8d831b8d7bf7eef58b5c6ad8b82c
----
- vulkan/api/vulkan.api          | 24 ++++++++++++------------
- vulkan/include/vulkan/vulkan.h | 22 ++++++++++------------
- vulkan/nulldrv/null_driver.cpp |  7 +++++--
- vulkan/tools/vkinfo.cpp        | 16 ++++++++--------
- 4 files changed, 35 insertions(+), 34 deletions(-)
-
-diff --git a/vulkan/api/vulkan.api b/vulkan/api/vulkan.api
-index 7313904..9575407 100644
---- a/vulkan/api/vulkan.api
-+++ b/vulkan/api/vulkan.api
-@@ -27,7 +27,7 @@ import platform "platform.api"
- 
- // API version (major.minor.patch)
- define VERSION_MAJOR 0
--define VERSION_MINOR 196
-+define VERSION_MINOR 197
- define VERSION_PATCH 0
- 
- // API limits
-@@ -723,18 +723,17 @@ bitfield VkQueueFlagBits {
- /// Memory properties passed into vkAllocMemory().
- type VkFlags VkMemoryPropertyFlags
- bitfield VkMemoryPropertyFlagBits {
--    VK_MEMORY_PROPERTY_DEVICE_ONLY                          = 0x00000000,    /// If otherwise stated, then allocate memory on device
--    VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT                     = 0x00000001,    /// Memory should be mappable by host
--    VK_MEMORY_PROPERTY_HOST_NON_COHERENT_BIT                = 0x00000002,    /// Memory may not have i/o coherency so vkFlushMappedMemoryRanges and vkInvalidateMappedMemoryRanges must be used flush/invalidate host cache
--                                                                             /// vkInvalidateMappedMemoryRanges must be used flush/invalidate host cache
--    VK_MEMORY_PROPERTY_HOST_UNCACHED_BIT                    = 0x00000004,    /// Memory should not be cached by the host
--    VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT                 = 0x00000008,    /// Memory may be allocated by the driver when it is required
-+    VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT                     = 0x00000001,
-+    VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT                     = 0x00000002,
-+    VK_MEMORY_PROPERTY_HOST_COHERENT_BIT                    = 0x00000004,
-+    VK_MEMORY_PROPERTY_HOST_CACHED_BIT                      = 0x00000008,
-+    VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT                 = 0x00000010,
- }
- 
- /// Memory heap flags
- type VkFlags VkMemoryHeapFlags
- bitfield VkMemoryHeapFlagBits {
--    VK_MEMORY_HEAP_HOST_LOCAL_BIT                           = 0x00000001,    /// If set, heap represents host memory
-+    VK_MEMORY_HEAP_DEVICE_LOCAL_BIT                         = 0x00000001,
- }
- 
- /// Memory output flags passed to resource transition commands
-@@ -953,9 +952,8 @@ bitfield VkImageAspectFlagBits {
- 
- /// Sparse memory bind flags
- type VkFlags VkSparseMemoryBindFlags
--bitfield VkSparseMemoryBindFlagBits {
--    VK_SPARSE_MEMORY_BIND_REPLICATE_BLOCK_BIT               = 0x00000001,
--}
-+//bitfield VkSparseMemoryBindFlagBits {
-+//}
- 
- /// Sparse image memory requirements flags
- type VkFlags VkSparseImageFormatFlags
-@@ -2076,6 +2074,8 @@ class VkPhysicalDeviceFeatures {
-     VkBool32                                    shaderImageGatherExtended                 /// texture gather with run-time values and independent offsets
-     VkBool32                                    shaderStorageImageExtendedFormats         /// the extended set of formats can be used for storage images
-     VkBool32                                    shaderStorageImageMultisample             /// multisample images can be used for storage images
-+    VkBool32                                    shaderStorageImageReadWithoutFormat
-+    VkBool32                                    shaderStorageImageWriteWithoutFormat
-     VkBool32                                    shaderUniformBufferArrayDynamicIndexing   /// arrays of uniform buffers can be accessed with dynamically uniform indices
-     VkBool32                                    shaderSampledImageArrayDynamicIndexing    /// arrays of sampled images can be accessed with dynamically uniform indices
-     VkBool32                                    shaderStorageBufferArrayDynamicIndexing   /// arrays of storage buffers can be accessed with dynamically uniform indices
-@@ -2096,6 +2096,7 @@ class VkPhysicalDeviceFeatures {
-     VkBool32                                    sparseResidency8Samples                   /// Sparse resources support: GPU can access partially resident MSAA 2D images with 8 samples
-     VkBool32                                    sparseResidency16Samples                  /// Sparse resources support: GPU can access partially resident MSAA 2D images with 16 samples
-     VkBool32                                    sparseResidencyAliased                    /// Sparse resources support: GPU can correctly access data aliased into multiple locations (opt-in)
-+    VkBool32                                    variableMultisampleRate
- }
- 
- class VkPhysicalDeviceLimits {
-@@ -2226,7 +2227,6 @@ class VkPhysicalDeviceSparseProperties {
-     VkBool32                                    residencyStandard2DMultisampleBlockShape  /// Sparse resources support: GPU will access all 2D (multisample) sparse resources using the standard block shapes (based on pixel format)
-     VkBool32                                    residencyStandard3DBlockShape             /// Sparse resources support: GPU will access all 3D sparse resources using the standard block shapes (based on pixel format)
-     VkBool32                                    residencyAlignedMipSize                   /// Sparse resources support: Images with mip-level dimensions that are NOT a multiple of the block size will be placed in the mip tail
--    VkBool32                                    residencyNonResident                      /// Sparse resources support: GPU can safely access non-resident regions of a resource, read values from read-write resources are undefined
-     VkBool32                                    residencyNonResidentStrict                /// Sparse resources support: GPU can safely access non-resident regions of a resource, all reads return as if data is 0, writes are discarded
- }
- 
-diff --git a/vulkan/include/vulkan/vulkan.h b/vulkan/include/vulkan/vulkan.h
-index 0130399..cbd15e6 100644
---- a/vulkan/include/vulkan/vulkan.h
-+++ b/vulkan/include/vulkan/vulkan.h
-@@ -41,7 +41,7 @@ extern "C" {
-     ((major << 22) | (minor << 12) | patch)
- 
- // Vulkan API version supported by this file
--#define VK_API_VERSION VK_MAKE_VERSION(0, 196, 0)
-+#define VK_API_VERSION VK_MAKE_VERSION(0, 197, 0)
- 
- 
- #define VK_NULL_HANDLE 0
-@@ -810,16 +810,16 @@ typedef enum {
- typedef VkFlags VkQueueFlags;
- 
- typedef enum {
--    VK_MEMORY_PROPERTY_DEVICE_ONLY = 0,
--    VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000001,
--    VK_MEMORY_PROPERTY_HOST_NON_COHERENT_BIT = 0x00000002,
--    VK_MEMORY_PROPERTY_HOST_UNCACHED_BIT = 0x00000004,
--    VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000008,
-+    VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0x00000001,
-+    VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000002,
-+    VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 0x00000004,
-+    VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 0x00000008,
-+    VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010,
- } VkMemoryPropertyFlagBits;
- typedef VkFlags VkMemoryPropertyFlags;
- 
- typedef enum {
--    VK_MEMORY_HEAP_HOST_LOCAL_BIT = 0x00000001,
-+    VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001,
- } VkMemoryHeapFlagBits;
- typedef VkFlags VkMemoryHeapFlags;
- typedef VkFlags VkDeviceCreateFlags;
-@@ -839,10 +839,6 @@ typedef enum {
-     VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 0x00000004,
- } VkSparseImageFormatFlagBits;
- typedef VkFlags VkSparseImageFormatFlags;
--
--typedef enum {
--    VK_SPARSE_MEMORY_BIND_REPLICATE_BLOCK_BIT = 0x00000001,
--} VkSparseMemoryBindFlagBits;
- typedef VkFlags VkSparseMemoryBindFlags;
- 
- typedef enum {
-@@ -1141,6 +1137,8 @@ typedef struct {
-     VkBool32                                    shaderImageGatherExtended;
-     VkBool32                                    shaderStorageImageExtendedFormats;
-     VkBool32                                    shaderStorageImageMultisample;
-+    VkBool32                                    shaderStorageImageReadWithoutFormat;
-+    VkBool32                                    shaderStorageImageWriteWithoutFormat;
-     VkBool32                                    shaderUniformBufferArrayDynamicIndexing;
-     VkBool32                                    shaderSampledImageArrayDynamicIndexing;
-     VkBool32                                    shaderStorageBufferArrayDynamicIndexing;
-@@ -1161,6 +1159,7 @@ typedef struct {
-     VkBool32                                    sparseResidency8Samples;
-     VkBool32                                    sparseResidency16Samples;
-     VkBool32                                    sparseResidencyAliased;
-+    VkBool32                                    variableMultisampleRate;
- } VkPhysicalDeviceFeatures;
- 
- typedef struct {
-@@ -1290,7 +1289,6 @@ typedef struct {
-     VkBool32                                    residencyStandard2DMultisampleBlockShape;
-     VkBool32                                    residencyStandard3DBlockShape;
-     VkBool32                                    residencyAlignedMipSize;
--    VkBool32                                    residencyNonResident;
-     VkBool32                                    residencyNonResidentStrict;
- } VkPhysicalDeviceSparseProperties;
- 
-diff --git a/vulkan/nulldrv/null_driver.cpp b/vulkan/nulldrv/null_driver.cpp
-index d134c0e..b2b905f 100644
---- a/vulkan/nulldrv/null_driver.cpp
-+++ b/vulkan/nulldrv/null_driver.cpp
-@@ -292,11 +292,14 @@ void GetPhysicalDeviceMemoryProperties(
-     VkPhysicalDeviceMemoryProperties* properties) {
-     properties->memoryTypeCount = 1;
-     properties->memoryTypes[0].propertyFlags =
--        VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT;
-+        VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT |
-+        VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT |
-+        VK_MEMORY_PROPERTY_HOST_COHERENT_BIT |
-+        VK_MEMORY_PROPERTY_HOST_CACHED_BIT;
-     properties->memoryTypes[0].heapIndex = 0;
-     properties->memoryHeapCount = 1;
-     properties->memoryHeaps[0].size = kMaxDeviceMemory;
--    properties->memoryHeaps[0].flags = VK_MEMORY_HEAP_HOST_LOCAL_BIT;
-+    properties->memoryHeaps[0].flags = VK_MEMORY_HEAP_DEVICE_LOCAL_BIT;
- }
- 
- // -----------------------------------------------------------------------------
-diff --git a/vulkan/tools/vkinfo.cpp b/vulkan/tools/vkinfo.cpp
-index 838d0e2..1920d6b 100644
---- a/vulkan/tools/vkinfo.cpp
-+++ b/vulkan/tools/vkinfo.cpp
-@@ -98,8 +98,8 @@ void DumpPhysicalDevice(uint32_t idx, VkPhysicalDevice pdev) {
-     vkGetPhysicalDeviceMemoryProperties(pdev, &mem_props);
-     for (uint32_t heap = 0; heap < mem_props.memoryHeapCount; heap++) {
-         if ((mem_props.memoryHeaps[heap].flags &
--             VK_MEMORY_HEAP_HOST_LOCAL_BIT) != 0)
--            strbuf << "HOST_LOCAL";
-+             VK_MEMORY_HEAP_DEVICE_LOCAL_BIT) != 0)
-+            strbuf << "DEVICE_LOCAL";
-         printf("     Heap %u: 0x%" PRIx64 " %s\n", heap,
-                mem_props.memoryHeaps[heap].size, strbuf.str().c_str());
-         strbuf.str(std::string());
-@@ -109,14 +109,14 @@ void DumpPhysicalDevice(uint32_t idx, VkPhysicalDevice pdev) {
-                 continue;
-             VkMemoryPropertyFlags flags =
-                 mem_props.memoryTypes[type].propertyFlags;
--            if (flags == VK_MEMORY_PROPERTY_DEVICE_ONLY)
--                strbuf << "DEVICE_ONLY";
-+            if ((flags & VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT) != 0)
-+                strbuf << "DEVICE_LOCAL";
-             if ((flags & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT) != 0)
-                 strbuf << "HOST_VISIBLE";
--            if ((flags & VK_MEMORY_PROPERTY_HOST_NON_COHERENT_BIT) != 0)
--                strbuf << " NON_COHERENT";
--            if ((flags & VK_MEMORY_PROPERTY_HOST_UNCACHED_BIT) != 0)
--                strbuf << " UNCACHED";
-+            if ((flags & VK_MEMORY_PROPERTY_HOST_COHERENT_BIT) != 0)
-+                strbuf << " COHERENT";
-+            if ((flags & VK_MEMORY_PROPERTY_HOST_CACHED_BIT) != 0)
-+                strbuf << " CACHED";
-             if ((flags & VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT) != 0)
-                 strbuf << " LAZILY_ALLOCATED";
-             printf("       Type %u: %s\n", type, strbuf.str().c_str());
--- 
-2.6.0.rc2.230.g3dd15c0
-
diff --git a/vulkan/patches/frameworks_native-sdk_0.10/0020-vulkan-Update-from-version-0.197.0-to-0.198.0.patch b/vulkan/patches/frameworks_native-sdk_0.10/0020-vulkan-Update-from-version-0.197.0-to-0.198.0.patch
deleted file mode 100644
index 95f9604..0000000
--- a/vulkan/patches/frameworks_native-sdk_0.10/0020-vulkan-Update-from-version-0.197.0-to-0.198.0.patch
+++ /dev/null
@@ -1,1422 +0,0 @@
-From ef5b7de781a9d803be4fba7ba243e6e96dd61851 Mon Sep 17 00:00:00 2001
-From: Jesse Hall <jessehall@google.com>
-Date: Mon, 30 Nov 2015 00:07:16 -0800
-Subject: [PATCH] vulkan: Update from version 0.197.0 to 0.198.0
-
-Change-Id: I182b21c68374e8eae962b2ae391bb283f07d5517
----
- vulkan/api/vulkan.api               | 243 +++++++++++++++---------------
- vulkan/include/vulkan/vk_platform.h |   7 +-
- vulkan/include/vulkan/vulkan.h      | 293 ++++++++++++++++++------------------
- vulkan/libvulkan/entry.cpp          |  28 ++--
- vulkan/nulldrv/null_driver.cpp      |  12 +-
- vulkan/nulldrv/null_driver.h        |   4 +-
- vulkan/tools/vkinfo.cpp             |   8 +-
- 7 files changed, 297 insertions(+), 298 deletions(-)
-
-diff --git a/vulkan/api/vulkan.api b/vulkan/api/vulkan.api
-index 9575407..ab887fa 100644
---- a/vulkan/api/vulkan.api
-+++ b/vulkan/api/vulkan.api
-@@ -27,16 +27,16 @@ import platform "platform.api"
- 
- // API version (major.minor.patch)
- define VERSION_MAJOR 0
--define VERSION_MINOR 197
-+define VERSION_MINOR 198
- define VERSION_PATCH 0
- 
- // API limits
--define VK_MAX_PHYSICAL_DEVICE_NAME 256
--define VK_UUID_LENGTH              16
--define VK_MAX_EXTENSION_NAME       256
--define VK_MAX_DESCRIPTION          256
--define VK_MAX_MEMORY_TYPES         32
--define VK_MAX_MEMORY_HEAPS         16    /// The maximum number of unique memory heaps, each of which supporting 1 or more memory types.
-+define VK_MAX_PHYSICAL_DEVICE_NAME_SIZE 256
-+define VK_UUID_SIZE                     16
-+define VK_MAX_EXTENSION_NAME_SIZE       256
-+define VK_MAX_DESCRIPTION_SIZE          256
-+define VK_MAX_MEMORY_TYPES              32
-+define VK_MAX_MEMORY_HEAPS              16    /// The maximum number of unique memory heaps, each of which supporting 1 or more memory types.
- 
- // API keywords
- define VK_TRUE        1
-@@ -189,14 +189,14 @@ enum VkCommandBufferLevel {
-     VK_COMMAND_BUFFER_LEVEL_SECONDARY                       = 0x00000001,
- }
- 
--enum VkChannelSwizzle {
--    VK_CHANNEL_SWIZZLE_IDENTITY                             = 0x00000000,
--    VK_CHANNEL_SWIZZLE_ZERO                                 = 0x00000001,
--    VK_CHANNEL_SWIZZLE_ONE                                  = 0x00000002,
--    VK_CHANNEL_SWIZZLE_R                                    = 0x00000003,
--    VK_CHANNEL_SWIZZLE_G                                    = 0x00000004,
--    VK_CHANNEL_SWIZZLE_B                                    = 0x00000005,
--    VK_CHANNEL_SWIZZLE_A                                    = 0x00000006,
-+enum VkComponentSwizzle {
-+    VK_COMPONENT_SWIZZLE_IDENTITY                           = 0x00000000,
-+    VK_COMPONENT_SWIZZLE_ZERO                               = 0x00000001,
-+    VK_COMPONENT_SWIZZLE_ONE                                = 0x00000002,
-+    VK_COMPONENT_SWIZZLE_R                                  = 0x00000003,
-+    VK_COMPONENT_SWIZZLE_G                                  = 0x00000004,
-+    VK_COMPONENT_SWIZZLE_B                                  = 0x00000005,
-+    VK_COMPONENT_SWIZZLE_A                                  = 0x00000006,
- }
- 
- enum VkDescriptorType {
-@@ -287,10 +287,10 @@ enum VkCompareOp {
-     VK_COMPARE_OP_ALWAYS                                    = 0x00000007,
- }
- 
--enum VkFillMode {
--    VK_FILL_MODE_SOLID                                      = 0x00000000,
--    VK_FILL_MODE_WIREFRAME                                  = 0x00000001,
--    VK_FILL_MODE_POINTS                                     = 0x00000002,
-+enum VkPolygonMode {
-+    VK_POLYGON_MODE_FILL                                    = 0x00000000,
-+    VK_POLYGON_MODE_LINE                                    = 0x00000001,
-+    VK_POLYGON_MODE_POINT                                   = 0x00000002,
- }
- 
- enum VkFrontFace {
-@@ -298,26 +298,26 @@ enum VkFrontFace {
-     VK_FRONT_FACE_CLOCKWISE                                 = 0x00000001,
- }
- 
--enum VkBlend {
--    VK_BLEND_ZERO                                           = 0x00000000,
--    VK_BLEND_ONE                                            = 0x00000001,
--    VK_BLEND_SRC_COLOR                                      = 0x00000002,
--    VK_BLEND_ONE_MINUS_SRC_COLOR                            = 0x00000003,
--    VK_BLEND_DST_COLOR                                      = 0x00000004,
--    VK_BLEND_ONE_MINUS_DST_COLOR                            = 0x00000005,
--    VK_BLEND_SRC_ALPHA                                      = 0x00000006,
--    VK_BLEND_ONE_MINUS_SRC_ALPHA                            = 0x00000007,
--    VK_BLEND_DST_ALPHA                                      = 0x00000008,
--    VK_BLEND_ONE_MINUS_DST_ALPHA                            = 0x00000009,
--    VK_BLEND_CONSTANT_COLOR                                 = 0x0000000a,
--    VK_BLEND_ONE_MINUS_CONSTANT_COLOR                       = 0x0000000b,
--    VK_BLEND_CONSTANT_ALPHA                                 = 0x0000000c,
--    VK_BLEND_ONE_MINUS_CONSTANT_ALPHA                       = 0x0000000d,
--    VK_BLEND_SRC_ALPHA_SATURATE                             = 0x0000000e,
--    VK_BLEND_SRC1_COLOR                                     = 0x0000000f,
--    VK_BLEND_ONE_MINUS_SRC1_COLOR                           = 0x00000010,
--    VK_BLEND_SRC1_ALPHA                                     = 0x00000011,
--    VK_BLEND_ONE_MINUS_SRC1_ALPHA                           = 0x00000012,
-+enum VkBlendFactor {
-+    VK_BLEND_FACTOR_ZERO                                    = 0x00000000,
-+    VK_BLEND_FACTOR_ONE                                     = 0x00000001,
-+    VK_BLEND_FACTOR_SRC_COLOR                               = 0x00000002,
-+    VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR                     = 0x00000003,
-+    VK_BLEND_FACTOR_DST_COLOR                               = 0x00000004,
-+    VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR                     = 0x00000005,
-+    VK_BLEND_FACTOR_SRC_ALPHA                               = 0x00000006,
-+    VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA                     = 0x00000007,
-+    VK_BLEND_FACTOR_DST_ALPHA                               = 0x00000008,
-+    VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA                     = 0x00000009,
-+    VK_BLEND_FACTOR_CONSTANT_COLOR                          = 0x0000000a,
-+    VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR                = 0x0000000b,
-+    VK_BLEND_FACTOR_CONSTANT_ALPHA                          = 0x0000000c,
-+    VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA                = 0x0000000d,
-+    VK_BLEND_FACTOR_SRC_ALPHA_SATURATE                      = 0x0000000e,
-+    VK_BLEND_FACTOR_SRC1_COLOR                              = 0x0000000f,
-+    VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR                    = 0x00000010,
-+    VK_BLEND_FACTOR_SRC1_ALPHA                              = 0x00000011,
-+    VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA                    = 0x00000012,
- }
- 
- enum VkBlendOp {
-@@ -378,9 +378,9 @@ enum VkPhysicalDeviceType {
-     VK_PHYSICAL_DEVICE_TYPE_CPU                             = 0x00000004,
- }
- 
--enum VkVertexInputStepRate {
--    VK_VERTEX_INPUT_STEP_RATE_VERTEX                        = 0x00000000,
--    VK_VERTEX_INPUT_STEP_RATE_INSTANCE                      = 0x00000001,
-+enum VkVertexInputRate {
-+    VK_VERTEX_INPUT_RATE_VERTEX                             = 0x00000000,
-+    VK_VERTEX_INPUT_RATE_INSTANCE                           = 0x00000001,
- }
- 
- /// Vulkan format definitions
-@@ -587,7 +587,7 @@ enum VkStructureType {
-     VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 21,
-     VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO   = 22,
-     VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO       = 23,
--    VK_STRUCTURE_TYPE_PIPELINE_RASTER_STATE_CREATE_INFO         = 24,
-+    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO  = 24,
-     VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO    = 25,
-     VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO  = 26,
-     VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO    = 27,
-@@ -625,9 +625,9 @@ enum VkStructureType {
-     VK_STRUCTURE_TYPE_DISPLAY_DISPLAY_PRESENT_INFO_KHR          = 0xc0001001,
- }
- 
--enum VkRenderPassContents {
--    VK_RENDER_PASS_CONTENTS_INLINE                          = 0x00000000,
--    VK_RENDER_PASS_CONTENTS_SECONDARY_COMMAND_BUFFERS       = 0x00000001,
-+enum VkSubpassContents {
-+    VK_SUBPASS_CONTENTS_INLINE                              = 0x00000000,
-+    VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS           = 0x00000001,
- }
- 
- @lastUnused(-8)
-@@ -716,7 +716,7 @@ type VkFlags VkQueueFlags
- bitfield VkQueueFlagBits {
-     VK_QUEUE_GRAPHICS_BIT                                   = 0x00000001,    /// Queue supports graphics operations
-     VK_QUEUE_COMPUTE_BIT                                    = 0x00000002,    /// Queue supports compute operations
--    VK_QUEUE_DMA_BIT                                        = 0x00000004,    /// Queue supports DMA operations
-+    VK_QUEUE_TRANSFER_BIT                                   = 0x00000004,    /// Queue supports transfer operations
-     VK_QUEUE_SPARSE_BINDING_BIT                             = 0x00000008,    /// Queue supports sparse resource memory management operations
- }
- 
-@@ -844,13 +844,13 @@ bitfield VkPipelineCreateFlagBits {
-     VK_PIPELINE_CREATE_DERIVATIVE_BIT                       = 0x00000004,
- }
- 
--/// Channel flags
--type VkFlags VkChannelFlags
--bitfield VkChannelFlagBits {
--    VK_CHANNEL_R_BIT                                        = 0x00000001,
--    VK_CHANNEL_G_BIT                                        = 0x00000002,
--    VK_CHANNEL_B_BIT                                        = 0x00000004,
--    VK_CHANNEL_A_BIT                                        = 0x00000008,
-+/// Color component flags
-+type VkFlags VkColorComponentFlags
-+bitfield VkColorComponentFlagBits {
-+    VK_COLOR_COMPONENT_R_BIT                                = 0x00000001,
-+    VK_COLOR_COMPONENT_G_BIT                                = 0x00000002,
-+    VK_COLOR_COMPONENT_B_BIT                                = 0x00000004,
-+    VK_COLOR_COMPONENT_A_BIT                                = 0x00000008,
- }
- 
- /// Fence creation flags
-@@ -884,7 +884,7 @@ bitfield VkFormatFeatureFlagBits {
- /// Query control flags
- type VkFlags VkQueryControlFlags
- bitfield VkQueryControlFlagBits {
--    VK_QUERY_CONTROL_CONSERVATIVE_BIT                       = 0x00000001,    /// Allow conservative results to be collected by the query
-+    VK_QUERY_CONTROL_PRECISE_BIT                            = 0x00000001,
- }
- 
- /// Query result flags
-@@ -1215,8 +1215,8 @@ class VkExtent3D {
- }
- 
- class VkViewport {
--    f32                                         originX
--    f32                                         originY
-+    f32                                         x
-+    f32                                         y
-     f32                                         width
-     f32                                         height
-     f32                                         minDepth
-@@ -1234,35 +1234,35 @@ class VkClearRect {
-     u32                                         layerCount
- }
- 
--class VkChannelMapping {
--    VkChannelSwizzle                            r
--    VkChannelSwizzle                            g
--    VkChannelSwizzle                            b
--    VkChannelSwizzle                            a
-+class VkComponentMapping {
-+    VkComponentSwizzle                          r
-+    VkComponentSwizzle                          g
-+    VkComponentSwizzle                          b
-+    VkComponentSwizzle                          a
- }
- 
- class VkPhysicalDeviceProperties {
-     u32                                         apiVersion
-     u32                                         driverVersion
--    u32                                         vendorId
--    u32                                         deviceId
-+    u32                                         vendorID
-+    u32                                         deviceID
-     VkPhysicalDeviceType                        deviceType
--    char[VK_MAX_PHYSICAL_DEVICE_NAME]           deviceName
--    u8[VK_UUID_LENGTH]                          pipelineCacheUUID
-+    char[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE]      deviceName
-+    u8[VK_UUID_SIZE]                            pipelineCacheUUID
-     VkPhysicalDeviceLimits                      limits
-     VkPhysicalDeviceSparseProperties            sparseProperties
- }
- 
- class VkExtensionProperties {
--    char[VK_MAX_EXTENSION_NAME]                 extensionName      /// extension name
-+    char[VK_MAX_EXTENSION_NAME_SIZE]            extensionName      /// extension name
-     u32                                         specVersion        /// version of the extension specification implemented
- }
- 
- class VkLayerProperties {
--    char[VK_MAX_EXTENSION_NAME]                 layerName               /// layer name
-+    char[VK_MAX_EXTENSION_NAME_SIZE]            layerName               /// layer name
-     u32                                         specVersion             /// version of the layer specification implemented
-     u32                                         implementationVersion   /// build or release version of the layer's library
--    char[VK_MAX_DESCRIPTION]                    description             /// Free-form description of the layer
-+    char[VK_MAX_DESCRIPTION_SIZE]               description             /// Free-form description of the layer
- }
- 
- class VkSubmitInfo {
-@@ -1332,6 +1332,7 @@ class VkQueueFamilyProperties {
-     VkQueueFlags                                queueFlags                 /// Queue flags
-     u32                                         queueCount
-     u32                                         timestampValidBits
-+    VkExtent3D                                  minImageTransferGranularity
- }
- 
- class VkPhysicalDeviceMemoryProperties {
-@@ -1362,7 +1363,7 @@ class VkSparseImageFormatProperties {
- 
- class VkSparseImageMemoryRequirements {
-     VkSparseImageFormatProperties               formatProperties
--    u32                                         imageMipTailStartLOD
-+    u32                                         imageMipTailStartLod
-     VkDeviceSize                                imageMipTailSize           /// Specified in bytes, must be a multiple of image block size / alignment
-     VkDeviceSize                                imageMipTailOffset         /// Specified in bytes, must be a multiple of image block size / alignment
-     VkDeviceSize                                imageMipTailStride         /// Specified in bytes, must be a multiple of image block size / alignment
-@@ -1536,7 +1537,7 @@ class VkImageViewCreateInfo {
-     VkImage                                     image
-     VkImageViewType                             viewType
-     VkFormat                                    format
--    VkChannelMapping                            channels
-+    VkComponentMapping                          components
-     VkImageSubresourceRange                     subresourceRange
- }
- 
-@@ -1596,26 +1597,26 @@ class VkBindSparseInfo {
-     const VkSemaphore*                          pSignalSemaphores
- }
- 
--class VkImageSubresourceCopy {
--    VkImageAspectFlags                          aspect
-+class VkImageSubresourceLayers {
-+    VkImageAspectFlags                          aspectMask
-     u32                                         mipLevel
-     u32                                         baseArrayLayer
-     u32                                         layerCount
- }
- 
- class VkImageCopy {
--    VkImageSubresourceCopy                      srcSubresource
-+    VkImageSubresourceLayers                    srcSubresource
-     VkOffset3D                                  srcOffset             /// Specified in pixels for both compressed and uncompressed images
--    VkImageSubresourceCopy                      dstSubresource
-+    VkImageSubresourceLayers                    dstSubresource
-     VkOffset3D                                  dstOffset             /// Specified in pixels for both compressed and uncompressed images
-     VkExtent3D                                  extent                /// Specified in pixels for both compressed and uncompressed images
- }
- 
- class VkImageBlit {
--    VkImageSubresourceCopy                      srcSubresource
-+    VkImageSubresourceLayers                    srcSubresource
-     VkOffset3D                                  srcOffset              /// Specified in pixels for both compressed and uncompressed images
-     VkExtent3D                                  srcExtent              /// Specified in pixels for both compressed and uncompressed images
--    VkImageSubresourceCopy                      dstSubresource
-+    VkImageSubresourceLayers                    dstSubresource
-     VkOffset3D                                  dstOffset              /// Specified in pixels for both compressed and uncompressed images
-     VkExtent3D                                  dstExtent              /// Specified in pixels for both compressed and uncompressed images
- }
-@@ -1624,15 +1625,15 @@ class VkBufferImageCopy {
-     VkDeviceSize                                bufferOffset           /// Specified in bytes
-     u32                                         bufferRowLength        /// Specified in texels
-     u32                                         bufferImageHeight
--    VkImageSubresourceCopy                      imageSubresource
-+    VkImageSubresourceLayers                    imageSubresource
-     VkOffset3D                                  imageOffset            /// Specified in pixels for both compressed and uncompressed images
-     VkExtent3D                                  imageExtent            /// Specified in pixels for both compressed and uncompressed images
- }
- 
- class VkImageResolve {
--    VkImageSubresourceCopy                      srcSubresource
-+    VkImageSubresourceLayers                    srcSubresource
-     VkOffset3D                                  srcOffset
--    VkImageSubresourceCopy                      dstSubresource
-+    VkImageSubresourceLayers                    dstSubresource
-     VkOffset3D                                  dstOffset
-     VkExtent3D                                  extent
- }
-@@ -1669,7 +1670,7 @@ class VkDescriptorSetLayoutCreateInfo {
-     const VkDescriptorSetLayoutBinding*         pBindings          /// Array of descriptor set layout bindings
- }
- 
--class VkDescriptorTypeCount {
-+class VkDescriptorPoolSize {
-     VkDescriptorType                            type
-     u32                                         descriptorCount
- }
-@@ -1679,8 +1680,8 @@ class VkDescriptorPoolCreateInfo {
-     const void*                                 pNext              /// Pointer to next structure
-     VkDescriptorPoolCreateFlags                 flags
-     u32                                         maxSets
--    u32                                         typeCount
--    const VkDescriptorTypeCount*                pTypeCounts
-+    u32                                         poolSizeCount
-+    const VkDescriptorPoolSize*                 pPoolSizes
- }
- 
- class VkDescriptorSetAllocateInfo {
-@@ -1692,7 +1693,7 @@ class VkDescriptorSetAllocateInfo {
- }
- 
- class VkSpecializationMapEntry {
--    u32                                         constantId         /// The SpecConstant ID specified in the BIL
-+    u32                                         constantID         /// The SpecConstant ID specified in the BIL
-     u32                                         offset             /// Offset of the value in the data block
-     platform.size_t                             size               /// Size in bytes of the SpecConstant
- }
-@@ -1725,7 +1726,7 @@ class VkComputePipelineCreateInfo {
- class VkVertexInputBindingDescription {
-     u32                                         binding               /// Vertex buffer binding id
-     u32                                         stride                /// Distance between vertices in bytes (0 = no advancement)
--    VkVertexInputStepRate                       stepRate              /// Rate at which binding is incremented
-+    VkVertexInputRate                           inputRate             /// Rate at which binding is incremented
- }
- 
- class VkVertexInputAttributeDescription {
-@@ -1771,12 +1772,12 @@ class VkPipelineViewportStateCreateInfo {
- }
- 
- class VkPipelineRasterizationStateCreateInfo {
--    VkStructureType                             sType      /// Must be VK_STRUCTURE_TYPE_PIPELINE_RASTER_STATE_CREATE_INFO
-+    VkStructureType                             sType      /// Must be VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO
-     const void*                                 pNext      /// Pointer to next structure
-     VkPipelineRasterizationStateCreateFlags     flags
-     VkBool32                                    depthClampEnable
-     VkBool32                                    rasterizerDiscardEnable
--    VkFillMode                                  fillMode                   /// optional (GL45)
-+    VkPolygonMode                               polygonMode                   /// optional (GL45)
-     VkCullModeFlags                             cullMode
-     VkFrontFace                                 frontFace
-     VkBool32                                    depthBiasEnable
-@@ -1800,13 +1801,13 @@ class VkPipelineMultisampleStateCreateInfo {
- 
- class VkPipelineColorBlendAttachmentState {
-     VkBool32                                    blendEnable
--    VkBlend                                     srcBlendColor
--    VkBlend                                     dstBlendColor
--    VkBlendOp                                   blendOpColor
--    VkBlend                                     srcBlendAlpha
--    VkBlend                                     dstBlendAlpha
--    VkBlendOp                                   blendOpAlpha
--    VkChannelFlags                              channelWriteMask
-+    VkBlendFactor                               srcColorBlendFactor
-+    VkBlendFactor                               dstColorBlendFactor
-+    VkBlendOp                                   colorBlendOp
-+    VkBlendFactor                               srcAlphaBlendFactor
-+    VkBlendFactor                               dstAlphaBlendFactor
-+    VkBlendOp                                   alphaBlendOp
-+    VkColorComponentFlags                       colorWriteMask
- }
- 
- class VkPipelineColorBlendStateCreateInfo {
-@@ -1821,13 +1822,13 @@ class VkPipelineColorBlendStateCreateInfo {
- }
- 
- class VkStencilOpState {
--    VkStencilOp                                 stencilFailOp
--    VkStencilOp                                 stencilPassOp
--    VkStencilOp                                 stencilDepthFailOp
--    VkCompareOp                                 stencilCompareOp
--    u32                                         stencilCompareMask
--    u32                                         stencilWriteMask
--    u32                                         stencilReference
-+    VkStencilOp                                 failOp
-+    VkStencilOp                                 passOp
-+    VkStencilOp                                 depthFailOp
-+    VkCompareOp                                 compareOp
-+    u32                                         compareMask
-+    u32                                         writeMask
-+    u32                                         reference
- }
- 
- class VkPipelineDepthStencilStateCreateInfo {
-@@ -2066,7 +2067,7 @@ class VkPhysicalDeviceFeatures {
-     VkBool32                                    textureCompressionETC2                    /// ETC texture compression formats
-     VkBool32                                    textureCompressionASTC_LDR                /// ASTC LDR texture compression formats
-     VkBool32                                    textureCompressionBC                      /// BC1-7 texture compressed formats
--    VkBool32                                    occlusionQueryNonConservative             /// non-conservative (exact) occlusion queries
-+    VkBool32                                    occlusionQueryPrecise
-     VkBool32                                    pipelineStatisticsQuery                   /// pipeline statistics query
-     VkBool32                                    vertexPipelineStoresAndAtomics
-     VkBool32                                    fragmentStoresAndAtomics
-@@ -2086,7 +2087,7 @@ class VkPhysicalDeviceFeatures {
-     VkBool32                                    shaderInt64                               /// 64-bit integers in shaders
-     VkBool32                                    shaderInt16                               /// 16-bit integers in shaders
-     VkBool32                                    shaderResourceResidency                   /// shader can use texture operations that return resource residency information (requires sparseNonResident support)
--    VkBool32                                    shaderResourceMinLOD                      /// shader can use texture operations that specify minimum resource LOD
-+    VkBool32                                    shaderResourceMinLod                      /// shader can use texture operations that specify minimum resource LOD
-     VkBool32                                    sparseBinding                             /// Sparse resources support: Resource memory can be managed at opaque page level rather than object level
-     VkBool32                                    sparseResidencyBuffer                     /// Sparse resources support: GPU can access partially resident buffers
-     VkBool32                                    sparseResidencyImage2D                    /// Sparse resources support: GPU can access partially resident 2D (non-MSAA non-DepthStencil) images
-@@ -2218,8 +2219,8 @@ class VkPhysicalDeviceLimits {
-     f32                                         lineWidthGranularity                      /// granularity of supported line widths
-     VkBool32                                    strictLines
- 
--    VkDeviceSize                                recommendedBufferCopyOffsetAlignment
--    VkDeviceSize                                recommendedBufferCopyRowPitchAlignment
-+    VkDeviceSize                                optimalBufferCopyOffsetAlignment
-+    VkDeviceSize                                optimalBufferCopyRowPitchAlignment
- }
- 
- class VkPhysicalDeviceSparseProperties {
-@@ -2241,7 +2242,7 @@ class VkQueryPoolCreateInfo {
-     const void*                                 pNext              /// Pointer to next structure
-     VkQueryPoolCreateFlags                      flags
-     VkQueryType                                 queryType
--    u32                                         slots
-+    u32                                         entryCount
-     VkQueryPipelineStatisticFlags               pipelineStatistics /// Optional
- }
- 
-@@ -4001,7 +4002,7 @@ cmd void vkCmdSetDepthBounds(
- cmd void vkCmdSetStencilCompareMask(
-         VkCommandBuffer                             commandBuffer,
-         VkStencilFaceFlags                          faceMask,
--        u32                                         stencilCompareMask) {
-+        u32                                         compareMask) {
-     commandBufferObject := GetCommandBuffer(commandBuffer)
-     commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
-@@ -4010,7 +4011,7 @@ cmd void vkCmdSetStencilCompareMask(
- cmd void vkCmdSetStencilWriteMask(
-         VkCommandBuffer                             commandBuffer,
-         VkStencilFaceFlags                          faceMask,
--        u32                                         stencilWriteMask) {
-+        u32                                         writeMask) {
-     commandBufferObject := GetCommandBuffer(commandBuffer)
-     commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
-@@ -4019,7 +4020,7 @@ cmd void vkCmdSetStencilWriteMask(
- cmd void vkCmdSetStencilReference(
-         VkCommandBuffer                             commandBuffer,
-         VkStencilFaceFlags                          faceMask,
--        u32                                         stencilReference) {
-+        u32                                         reference) {
-     commandBufferObject := GetCommandBuffer(commandBuffer)
-     commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
- }
-@@ -4197,7 +4198,7 @@ cmd void vkCmdCopyBuffer(
-     bindCommandBuffer(commandBuffer, srcBuffer, srcBufferObject.memory)
-     bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory)
- 
--    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_DMA_BIT)
-+    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
- }
- 
- @threadSafety("app")
-@@ -4223,7 +4224,7 @@ cmd void vkCmdCopyImage(
-     bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory)
-     bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory)
- 
--    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_DMA_BIT)
-+    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
- }
- 
- @threadSafety("app")
-@@ -4275,7 +4276,7 @@ cmd void vkCmdCopyBufferToImage(
-     bindCommandBuffer(commandBuffer, srcBuffer, srcBufferObject.memory)
-     bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory)
- 
--    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_DMA_BIT)
-+    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
- }
- 
- @threadSafety("app")
-@@ -4300,7 +4301,7 @@ cmd void vkCmdCopyImageToBuffer(
-     bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory)
-     bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory)
- 
--    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_DMA_BIT)
-+    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
- }
- 
- @threadSafety("app")
-@@ -4318,7 +4319,7 @@ cmd void vkCmdUpdateBuffer(
- 
-     bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory)
- 
--    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_DMA_BIT)
-+    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
- }
- 
- @threadSafety("app")
-@@ -4332,7 +4333,7 @@ cmd void vkCmdFillBuffer(
-     dstBufferObject := GetBuffer(dstBuffer)
-     assert(commandBufferObject.device == dstBufferObject.device)
- 
--    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_DMA_BIT)
-+    commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
- }
- 
- @threadSafety("app")
-@@ -4514,7 +4515,7 @@ cmd void vkCmdPipelineBarrier(
- cmd void vkCmdBeginQuery(
-         VkCommandBuffer                             commandBuffer,
-         VkQueryPool                                 queryPool,
--        u32                                         slot,
-+        u32                                         entry,
-         VkQueryControlFlags                         flags) {
-     commandBufferObject := GetCommandBuffer(commandBuffer)
-     queryPoolObject := GetQueryPool(queryPool)
-@@ -4525,7 +4526,7 @@ cmd void vkCmdBeginQuery(
- cmd void vkCmdEndQuery(
-         VkCommandBuffer                             commandBuffer,
-         VkQueryPool                                 queryPool,
--        u32                                         slot) {
-+        u32                                         entry) {
-     commandBufferObject := GetCommandBuffer(commandBuffer)
-     queryPoolObject := GetQueryPool(queryPool)
-     assert(commandBufferObject.device == queryPoolObject.device)
-@@ -4547,7 +4548,7 @@ cmd void vkCmdWriteTimestamp(
-         VkCommandBuffer                             commandBuffer,
-         VkPipelineStageFlagBits                     pipelineStage,
-         VkQueryPool                                 queryPool,
--        u32                                         slot) {
-+        u32                                         entry) {
-     commandBufferObject := GetCommandBuffer(commandBuffer)
-     queryPoolObject := GetQueryPool(queryPool)
-     assert(commandBufferObject.device == queryPoolObject.device)
-@@ -4586,7 +4587,7 @@ cmd void vkCmdPushConstants(
- cmd void vkCmdBeginRenderPass(
-         VkCommandBuffer                             commandBuffer,
-         const VkRenderPassBeginInfo*                pRenderPassBegin,
--        VkRenderPassContents                        contents) {
-+        VkSubpassContents                           contents) {
-     commandBufferObject := GetCommandBuffer(commandBuffer)
-     renderPassObject := GetRenderPass(pRenderPassBegin.renderPass)
-     framebufferObject := GetFramebuffer(pRenderPassBegin.framebuffer)
-@@ -4598,7 +4599,7 @@ cmd void vkCmdBeginRenderPass(
- 
- cmd void vkCmdNextSubpass(
-         VkCommandBuffer                             commandBuffer,
--        VkRenderPassContents                        contents) {
-+        VkSubpassContents                           contents) {
-     commandBufferObject := GetCommandBuffer(commandBuffer)
- }
- 
-@@ -4855,7 +4856,7 @@ cmd VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR(
-         VkPhysicalDevice                        physicalDevice,
-         u32                                     queueFamilyIndex,
-         platform.Display*                       dpy,
--        platform.VisualID                       visualId) {
-+        platform.VisualID                       visualID) {
-     physicalDeviceObject := GetPhysicalDevice(physicalDevice)
-     return ?
- }
-diff --git a/vulkan/include/vulkan/vk_platform.h b/vulkan/include/vulkan/vk_platform.h
-index 8d51524..4bc6a86 100644
---- a/vulkan/include/vulkan/vk_platform.h
-+++ b/vulkan/include/vulkan/vk_platform.h
-@@ -42,12 +42,9 @@ extern "C"
- #if defined(_WIN32)
-     // On Windows, VKAPI should equate to the __stdcall convention
-     #define VKAPI   __stdcall
--#elif defined(__GNUC__)
--    // On other platforms using GCC, VKAPI stays undefined
--    #define VKAPI
- #else
--    // Unsupported Platform!
--    #error "Unsupported OS Platform detected!"
-+    // On other platforms, use the default calling convention
-+    #define VKAPI
- #endif
- 
- #include <stddef.h>
-diff --git a/vulkan/include/vulkan/vulkan.h b/vulkan/include/vulkan/vulkan.h
-index cbd15e6..60583c2 100644
---- a/vulkan/include/vulkan/vulkan.h
-+++ b/vulkan/include/vulkan/vulkan.h
-@@ -41,7 +41,7 @@ extern "C" {
-     ((major << 22) | (minor << 12) | patch)
- 
- // Vulkan API version supported by this file
--#define VK_API_VERSION VK_MAKE_VERSION(0, 197, 0)
-+#define VK_API_VERSION VK_MAKE_VERSION(0, 198, 0)
- 
- 
- #define VK_NULL_HANDLE 0
-@@ -100,12 +100,12 @@ VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCommandPool)
- #define VK_FALSE                          0
- #define VK_QUEUE_FAMILY_IGNORED           (~0U)
- #define VK_SUBPASS_EXTERNAL               (~0U)
--#define VK_MAX_PHYSICAL_DEVICE_NAME       256
--#define VK_UUID_LENGTH                    16
-+#define VK_MAX_PHYSICAL_DEVICE_NAME_SIZE  256
-+#define VK_UUID_SIZE                      16
- #define VK_MAX_MEMORY_TYPES               32
- #define VK_MAX_MEMORY_HEAPS               16
--#define VK_MAX_EXTENSION_NAME             256
--#define VK_MAX_DESCRIPTION                256
-+#define VK_MAX_EXTENSION_NAME_SIZE        256
-+#define VK_MAX_DESCRIPTION_SIZE           256
- 
- 
- typedef enum {
-@@ -155,7 +155,7 @@ typedef enum {
-     VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 21,
-     VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 22,
-     VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 23,
--    VK_STRUCTURE_TYPE_PIPELINE_RASTER_STATE_CREATE_INFO = 24,
-+    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 24,
-     VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 25,
-     VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 26,
-     VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 27,
-@@ -468,27 +468,27 @@ typedef enum {
- } VkImageViewType;
- 
- typedef enum {
--    VK_CHANNEL_SWIZZLE_IDENTITY = 0,
--    VK_CHANNEL_SWIZZLE_ZERO = 1,
--    VK_CHANNEL_SWIZZLE_ONE = 2,
--    VK_CHANNEL_SWIZZLE_R = 3,
--    VK_CHANNEL_SWIZZLE_G = 4,
--    VK_CHANNEL_SWIZZLE_B = 5,
--    VK_CHANNEL_SWIZZLE_A = 6,
--    VK_CHANNEL_SWIZZLE_BEGIN_RANGE = VK_CHANNEL_SWIZZLE_IDENTITY,
--    VK_CHANNEL_SWIZZLE_END_RANGE = VK_CHANNEL_SWIZZLE_A,
--    VK_CHANNEL_SWIZZLE_RANGE_SIZE = (VK_CHANNEL_SWIZZLE_A - VK_CHANNEL_SWIZZLE_IDENTITY + 1),
--    VK_CHANNEL_SWIZZLE_MAX_ENUM = 0x7FFFFFFF
--} VkChannelSwizzle;
-+    VK_COMPONENT_SWIZZLE_IDENTITY = 0,
-+    VK_COMPONENT_SWIZZLE_ZERO = 1,
-+    VK_COMPONENT_SWIZZLE_ONE = 2,
-+    VK_COMPONENT_SWIZZLE_R = 3,
-+    VK_COMPONENT_SWIZZLE_G = 4,
-+    VK_COMPONENT_SWIZZLE_B = 5,
-+    VK_COMPONENT_SWIZZLE_A = 6,
-+    VK_COMPONENT_SWIZZLE_BEGIN_RANGE = VK_COMPONENT_SWIZZLE_IDENTITY,
-+    VK_COMPONENT_SWIZZLE_END_RANGE = VK_COMPONENT_SWIZZLE_A,
-+    VK_COMPONENT_SWIZZLE_RANGE_SIZE = (VK_COMPONENT_SWIZZLE_A - VK_COMPONENT_SWIZZLE_IDENTITY + 1),
-+    VK_COMPONENT_SWIZZLE_MAX_ENUM = 0x7FFFFFFF
-+} VkComponentSwizzle;
- 
- typedef enum {
--    VK_VERTEX_INPUT_STEP_RATE_VERTEX = 0,
--    VK_VERTEX_INPUT_STEP_RATE_INSTANCE = 1,
--    VK_VERTEX_INPUT_STEP_RATE_BEGIN_RANGE = VK_VERTEX_INPUT_STEP_RATE_VERTEX,
--    VK_VERTEX_INPUT_STEP_RATE_END_RANGE = VK_VERTEX_INPUT_STEP_RATE_INSTANCE,
--    VK_VERTEX_INPUT_STEP_RATE_RANGE_SIZE = (VK_VERTEX_INPUT_STEP_RATE_INSTANCE - VK_VERTEX_INPUT_STEP_RATE_VERTEX + 1),
--    VK_VERTEX_INPUT_STEP_RATE_MAX_ENUM = 0x7FFFFFFF
--} VkVertexInputStepRate;
-+    VK_VERTEX_INPUT_RATE_VERTEX = 0,
-+    VK_VERTEX_INPUT_RATE_INSTANCE = 1,
-+    VK_VERTEX_INPUT_RATE_BEGIN_RANGE = VK_VERTEX_INPUT_RATE_VERTEX,
-+    VK_VERTEX_INPUT_RATE_END_RANGE = VK_VERTEX_INPUT_RATE_INSTANCE,
-+    VK_VERTEX_INPUT_RATE_RANGE_SIZE = (VK_VERTEX_INPUT_RATE_INSTANCE - VK_VERTEX_INPUT_RATE_VERTEX + 1),
-+    VK_VERTEX_INPUT_RATE_MAX_ENUM = 0x7FFFFFFF
-+} VkVertexInputRate;
- 
- typedef enum {
-     VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0,
-@@ -509,14 +509,14 @@ typedef enum {
- } VkPrimitiveTopology;
- 
- typedef enum {
--    VK_FILL_MODE_SOLID = 0,
--    VK_FILL_MODE_WIREFRAME = 1,
--    VK_FILL_MODE_POINTS = 2,
--    VK_FILL_MODE_BEGIN_RANGE = VK_FILL_MODE_SOLID,
--    VK_FILL_MODE_END_RANGE = VK_FILL_MODE_POINTS,
--    VK_FILL_MODE_RANGE_SIZE = (VK_FILL_MODE_POINTS - VK_FILL_MODE_SOLID + 1),
--    VK_FILL_MODE_MAX_ENUM = 0x7FFFFFFF
--} VkFillMode;
-+    VK_POLYGON_MODE_FILL = 0,
-+    VK_POLYGON_MODE_LINE = 1,
-+    VK_POLYGON_MODE_POINT = 2,
-+    VK_POLYGON_MODE_BEGIN_RANGE = VK_POLYGON_MODE_FILL,
-+    VK_POLYGON_MODE_END_RANGE = VK_POLYGON_MODE_POINT,
-+    VK_POLYGON_MODE_RANGE_SIZE = (VK_POLYGON_MODE_POINT - VK_POLYGON_MODE_FILL + 1),
-+    VK_POLYGON_MODE_MAX_ENUM = 0x7FFFFFFF
-+} VkPolygonMode;
- 
- typedef enum {
-     VK_FRONT_FACE_COUNTER_CLOCKWISE = 0,
-@@ -581,30 +581,30 @@ typedef enum {
- } VkLogicOp;
- 
- typedef enum {
--    VK_BLEND_ZERO = 0,
--    VK_BLEND_ONE = 1,
--    VK_BLEND_SRC_COLOR = 2,
--    VK_BLEND_ONE_MINUS_SRC_COLOR = 3,
--    VK_BLEND_DST_COLOR = 4,
--    VK_BLEND_ONE_MINUS_DST_COLOR = 5,
--    VK_BLEND_SRC_ALPHA = 6,
--    VK_BLEND_ONE_MINUS_SRC_ALPHA = 7,
--    VK_BLEND_DST_ALPHA = 8,
--    VK_BLEND_ONE_MINUS_DST_ALPHA = 9,
--    VK_BLEND_CONSTANT_COLOR = 10,
--    VK_BLEND_ONE_MINUS_CONSTANT_COLOR = 11,
--    VK_BLEND_CONSTANT_ALPHA = 12,
--    VK_BLEND_ONE_MINUS_CONSTANT_ALPHA = 13,
--    VK_BLEND_SRC_ALPHA_SATURATE = 14,
--    VK_BLEND_SRC1_COLOR = 15,
--    VK_BLEND_ONE_MINUS_SRC1_COLOR = 16,
--    VK_BLEND_SRC1_ALPHA = 17,
--    VK_BLEND_ONE_MINUS_SRC1_ALPHA = 18,
--    VK_BLEND_BEGIN_RANGE = VK_BLEND_ZERO,
--    VK_BLEND_END_RANGE = VK_BLEND_ONE_MINUS_SRC1_ALPHA,
--    VK_BLEND_RANGE_SIZE = (VK_BLEND_ONE_MINUS_SRC1_ALPHA - VK_BLEND_ZERO + 1),
--    VK_BLEND_MAX_ENUM = 0x7FFFFFFF
--} VkBlend;
-+    VK_BLEND_FACTOR_ZERO = 0,
-+    VK_BLEND_FACTOR_ONE = 1,
-+    VK_BLEND_FACTOR_SRC_COLOR = 2,
-+    VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3,
-+    VK_BLEND_FACTOR_DST_COLOR = 4,
-+    VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5,
-+    VK_BLEND_FACTOR_SRC_ALPHA = 6,
-+    VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7,
-+    VK_BLEND_FACTOR_DST_ALPHA = 8,
-+    VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9,
-+    VK_BLEND_FACTOR_CONSTANT_COLOR = 10,
-+    VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11,
-+    VK_BLEND_FACTOR_CONSTANT_ALPHA = 12,
-+    VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13,
-+    VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14,
-+    VK_BLEND_FACTOR_SRC1_COLOR = 15,
-+    VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16,
-+    VK_BLEND_FACTOR_SRC1_ALPHA = 17,
-+    VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18,
-+    VK_BLEND_FACTOR_BEGIN_RANGE = VK_BLEND_FACTOR_ZERO,
-+    VK_BLEND_FACTOR_END_RANGE = VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA,
-+    VK_BLEND_FACTOR_RANGE_SIZE = (VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA - VK_BLEND_FACTOR_ZERO + 1),
-+    VK_BLEND_FACTOR_MAX_ENUM = 0x7FFFFFFF
-+} VkBlendFactor;
- 
- typedef enum {
-     VK_BLEND_OP_ADD = 0,
-@@ -743,13 +743,13 @@ typedef enum {
- } VkIndexType;
- 
- typedef enum {
--    VK_RENDER_PASS_CONTENTS_INLINE = 0,
--    VK_RENDER_PASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1,
--    VK_RENDER_PASS_CONTENTS_BEGIN_RANGE = VK_RENDER_PASS_CONTENTS_INLINE,
--    VK_RENDER_PASS_CONTENTS_END_RANGE = VK_RENDER_PASS_CONTENTS_SECONDARY_COMMAND_BUFFERS,
--    VK_RENDER_PASS_CONTENTS_RANGE_SIZE = (VK_RENDER_PASS_CONTENTS_SECONDARY_COMMAND_BUFFERS - VK_RENDER_PASS_CONTENTS_INLINE + 1),
--    VK_RENDER_PASS_CONTENTS_MAX_ENUM = 0x7FFFFFFF
--} VkRenderPassContents;
-+    VK_SUBPASS_CONTENTS_INLINE = 0,
-+    VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1,
-+    VK_SUBPASS_CONTENTS_BEGIN_RANGE = VK_SUBPASS_CONTENTS_INLINE,
-+    VK_SUBPASS_CONTENTS_END_RANGE = VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS,
-+    VK_SUBPASS_CONTENTS_RANGE_SIZE = (VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS - VK_SUBPASS_CONTENTS_INLINE + 1),
-+    VK_SUBPASS_CONTENTS_MAX_ENUM = 0x7FFFFFFF
-+} VkSubpassContents;
- 
- typedef VkFlags VkInstanceCreateFlags;
- 
-@@ -804,7 +804,7 @@ typedef VkFlags VkSampleCountFlags;
- typedef enum {
-     VK_QUEUE_GRAPHICS_BIT = 0x00000001,
-     VK_QUEUE_COMPUTE_BIT = 0x00000002,
--    VK_QUEUE_DMA_BIT = 0x00000004,
-+    VK_QUEUE_TRANSFER_BIT = 0x00000004,
-     VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008,
- } VkQueueFlagBits;
- typedef VkFlags VkQueueFlags;
-@@ -935,12 +935,12 @@ typedef VkFlags VkPipelineDepthStencilStateCreateFlags;
- typedef VkFlags VkPipelineColorBlendStateCreateFlags;
- 
- typedef enum {
--    VK_CHANNEL_R_BIT = 0x00000001,
--    VK_CHANNEL_G_BIT = 0x00000002,
--    VK_CHANNEL_B_BIT = 0x00000004,
--    VK_CHANNEL_A_BIT = 0x00000008,
--} VkChannelFlagBits;
--typedef VkFlags VkChannelFlags;
-+    VK_COLOR_COMPONENT_R_BIT = 0x00000001,
-+    VK_COLOR_COMPONENT_G_BIT = 0x00000002,
-+    VK_COLOR_COMPONENT_B_BIT = 0x00000004,
-+    VK_COLOR_COMPONENT_A_BIT = 0x00000008,
-+} VkColorComponentFlagBits;
-+typedef VkFlags VkColorComponentFlags;
- typedef VkFlags VkPipelineDynamicStateCreateFlags;
- typedef VkFlags VkPipelineLayoutCreateFlags;
- typedef VkFlags VkShaderStageFlags;
-@@ -1041,7 +1041,7 @@ typedef enum {
- typedef VkFlags VkStencilFaceFlags;
- 
- typedef enum {
--    VK_QUERY_CONTROL_CONSERVATIVE_BIT = 0x00000001,
-+    VK_QUERY_CONTROL_PRECISE_BIT = 0x00000001,
- } VkQueryControlFlagBits;
- typedef VkFlags VkQueryControlFlags;
- 
-@@ -1129,7 +1129,7 @@ typedef struct {
-     VkBool32                                    textureCompressionETC2;
-     VkBool32                                    textureCompressionASTC_LDR;
-     VkBool32                                    textureCompressionBC;
--    VkBool32                                    occlusionQueryNonConservative;
-+    VkBool32                                    occlusionQueryPrecise;
-     VkBool32                                    pipelineStatisticsQuery;
-     VkBool32                                    vertexPipelineStoresAndAtomics;
-     VkBool32                                    fragmentStoresAndAtomics;
-@@ -1149,7 +1149,7 @@ typedef struct {
-     VkBool32                                    shaderInt64;
-     VkBool32                                    shaderInt16;
-     VkBool32                                    shaderResourceResidency;
--    VkBool32                                    shaderResourceMinLOD;
-+    VkBool32                                    shaderResourceMinLod;
-     VkBool32                                    sparseBinding;
-     VkBool32                                    sparseResidencyBuffer;
-     VkBool32                                    sparseResidencyImage2D;
-@@ -1280,8 +1280,8 @@ typedef struct {
-     float                                       pointSizeGranularity;
-     float                                       lineWidthGranularity;
-     VkBool32                                    strictLines;
--    VkDeviceSize                                recommendedBufferCopyOffsetAlignment;
--    VkDeviceSize                                recommendedBufferCopyRowPitchAlignment;
-+    VkDeviceSize                                optimalBufferCopyOffsetAlignment;
-+    VkDeviceSize                                optimalBufferCopyRowPitchAlignment;
- } VkPhysicalDeviceLimits;
- 
- typedef struct {
-@@ -1295,11 +1295,11 @@ typedef struct {
- typedef struct {
-     uint32_t                                    apiVersion;
-     uint32_t                                    driverVersion;
--    uint32_t                                    vendorId;
--    uint32_t                                    deviceId;
-+    uint32_t                                    vendorID;
-+    uint32_t                                    deviceID;
-     VkPhysicalDeviceType                        deviceType;
--    char                                        deviceName[VK_MAX_PHYSICAL_DEVICE_NAME];
--    uint8_t                                     pipelineCacheUUID[VK_UUID_LENGTH];
-+    char                                        deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
-+    uint8_t                                     pipelineCacheUUID[VK_UUID_SIZE];
-     VkPhysicalDeviceLimits                      limits;
-     VkPhysicalDeviceSparseProperties            sparseProperties;
- } VkPhysicalDeviceProperties;
-@@ -1308,6 +1308,7 @@ typedef struct {
-     VkQueueFlags                                queueFlags;
-     uint32_t                                    queueCount;
-     uint32_t                                    timestampValidBits;
-+    VkExtent3D                                  minImageTransferGranularity;
- } VkQueueFamilyProperties;
- 
- typedef struct {
-@@ -1350,15 +1351,15 @@ typedef struct {
- } VkDeviceCreateInfo;
- 
- typedef struct {
--    char                                        extensionName[VK_MAX_EXTENSION_NAME];
-+    char                                        extensionName[VK_MAX_EXTENSION_NAME_SIZE];
-     uint32_t                                    specVersion;
- } VkExtensionProperties;
- 
- typedef struct {
--    char                                        layerName[VK_MAX_EXTENSION_NAME];
-+    char                                        layerName[VK_MAX_EXTENSION_NAME_SIZE];
-     uint32_t                                    specVersion;
-     uint32_t                                    implementationVersion;
--    char                                        description[VK_MAX_DESCRIPTION];
-+    char                                        description[VK_MAX_DESCRIPTION_SIZE];
- } VkLayerProperties;
- 
- typedef struct {
-@@ -1401,7 +1402,7 @@ typedef struct {
- 
- typedef struct {
-     VkSparseImageFormatProperties               formatProperties;
--    uint32_t                                    imageMipTailStartLOD;
-+    uint32_t                                    imageMipTailStartLod;
-     VkDeviceSize                                imageMipTailSize;
-     VkDeviceSize                                imageMipTailOffset;
-     VkDeviceSize                                imageMipTailStride;
-@@ -1492,7 +1493,7 @@ typedef struct {
-     const void*                                 pNext;
-     VkQueryPoolCreateFlags                      flags;
-     VkQueryType                                 queryType;
--    uint32_t                                    slots;
-+    uint32_t                                    entryCount;
-     VkQueryPipelineStatisticFlags               pipelineStatistics;
- } VkQueryPoolCreateInfo;
- 
-@@ -1543,11 +1544,11 @@ typedef struct {
- } VkSubresourceLayout;
- 
- typedef struct {
--    VkChannelSwizzle                            r;
--    VkChannelSwizzle                            g;
--    VkChannelSwizzle                            b;
--    VkChannelSwizzle                            a;
--} VkChannelMapping;
-+    VkComponentSwizzle                          r;
-+    VkComponentSwizzle                          g;
-+    VkComponentSwizzle                          b;
-+    VkComponentSwizzle                          a;
-+} VkComponentMapping;
- 
- typedef struct {
-     VkImageAspectFlags                          aspectMask;
-@@ -1564,7 +1565,7 @@ typedef struct {
-     VkImage                                     image;
-     VkImageViewType                             viewType;
-     VkFormat                                    format;
--    VkChannelMapping                            channels;
-+    VkComponentMapping                          components;
-     VkImageSubresourceRange                     subresourceRange;
- } VkImageViewCreateInfo;
- 
-@@ -1594,7 +1595,7 @@ typedef struct {
- } VkPipelineCacheCreateInfo;
- 
- typedef struct {
--    uint32_t                                    constantId;
-+    uint32_t                                    constantID;
-     uint32_t                                    offset;
-     size_t                                      size;
- } VkSpecializationMapEntry;
-@@ -1617,7 +1618,7 @@ typedef struct {
- typedef struct {
-     uint32_t                                    binding;
-     uint32_t                                    stride;
--    VkVertexInputStepRate                       stepRate;
-+    VkVertexInputRate                           inputRate;
- } VkVertexInputBindingDescription;
- 
- typedef struct {
-@@ -1653,8 +1654,8 @@ typedef struct {
- } VkPipelineTessellationStateCreateInfo;
- 
- typedef struct {
--    float                                       originX;
--    float                                       originY;
-+    float                                       x;
-+    float                                       y;
-     float                                       width;
-     float                                       height;
-     float                                       minDepth;
-@@ -1692,7 +1693,7 @@ typedef struct {
-     VkPipelineRasterizationStateCreateFlags     flags;
-     VkBool32                                    depthClampEnable;
-     VkBool32                                    rasterizerDiscardEnable;
--    VkFillMode                                  fillMode;
-+    VkPolygonMode                               polygonMode;
-     VkCullModeFlags                             cullMode;
-     VkFrontFace                                 frontFace;
-     VkBool32                                    depthBiasEnable;
-@@ -1715,13 +1716,13 @@ typedef struct {
- } VkPipelineMultisampleStateCreateInfo;
- 
- typedef struct {
--    VkStencilOp                                 stencilFailOp;
--    VkStencilOp                                 stencilPassOp;
--    VkStencilOp                                 stencilDepthFailOp;
--    VkCompareOp                                 stencilCompareOp;
--    uint32_t                                    stencilCompareMask;
--    uint32_t                                    stencilWriteMask;
--    uint32_t                                    stencilReference;
-+    VkStencilOp                                 failOp;
-+    VkStencilOp                                 passOp;
-+    VkStencilOp                                 depthFailOp;
-+    VkCompareOp                                 compareOp;
-+    uint32_t                                    compareMask;
-+    uint32_t                                    writeMask;
-+    uint32_t                                    reference;
- } VkStencilOpState;
- 
- typedef struct {
-@@ -1741,13 +1742,13 @@ typedef struct {
- 
- typedef struct {
-     VkBool32                                    blendEnable;
--    VkBlend                                     srcBlendColor;
--    VkBlend                                     dstBlendColor;
--    VkBlendOp                                   blendOpColor;
--    VkBlend                                     srcBlendAlpha;
--    VkBlend                                     dstBlendAlpha;
--    VkBlendOp                                   blendOpAlpha;
--    VkChannelFlags                              channelWriteMask;
-+    VkBlendFactor                               srcColorBlendFactor;
-+    VkBlendFactor                               dstColorBlendFactor;
-+    VkBlendOp                                   colorBlendOp;
-+    VkBlendFactor                               srcAlphaBlendFactor;
-+    VkBlendFactor                               dstAlphaBlendFactor;
-+    VkBlendOp                                   alphaBlendOp;
-+    VkColorComponentFlags                       colorWriteMask;
- } VkPipelineColorBlendAttachmentState;
- 
- typedef struct {
-@@ -1855,15 +1856,15 @@ typedef struct {
- typedef struct {
-     VkDescriptorType                            type;
-     uint32_t                                    descriptorCount;
--} VkDescriptorTypeCount;
-+} VkDescriptorPoolSize;
- 
- typedef struct {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkDescriptorPoolCreateFlags                 flags;
-     uint32_t                                    maxSets;
--    uint32_t                                    typeCount;
--    const VkDescriptorTypeCount*                pTypeCounts;
-+    uint32_t                                    poolSizeCount;
-+    const VkDescriptorPoolSize*                 pPoolSizes;
- } VkDescriptorPoolCreateInfo;
- 
- typedef struct {
-@@ -2006,25 +2007,25 @@ typedef struct {
- } VkBufferCopy;
- 
- typedef struct {
--    VkImageAspectFlags                          aspect;
-+    VkImageAspectFlags                          aspectMask;
-     uint32_t                                    mipLevel;
-     uint32_t                                    baseArrayLayer;
-     uint32_t                                    layerCount;
--} VkImageSubresourceCopy;
-+} VkImageSubresourceLayers;
- 
- typedef struct {
--    VkImageSubresourceCopy                      srcSubresource;
-+    VkImageSubresourceLayers                    srcSubresource;
-     VkOffset3D                                  srcOffset;
--    VkImageSubresourceCopy                      dstSubresource;
-+    VkImageSubresourceLayers                    dstSubresource;
-     VkOffset3D                                  dstOffset;
-     VkExtent3D                                  extent;
- } VkImageCopy;
- 
- typedef struct {
--    VkImageSubresourceCopy                      srcSubresource;
-+    VkImageSubresourceLayers                    srcSubresource;
-     VkOffset3D                                  srcOffset;
-     VkExtent3D                                  srcExtent;
--    VkImageSubresourceCopy                      dstSubresource;
-+    VkImageSubresourceLayers                    dstSubresource;
-     VkOffset3D                                  dstOffset;
-     VkExtent3D                                  dstExtent;
- } VkImageBlit;
-@@ -2033,7 +2034,7 @@ typedef struct {
-     VkDeviceSize                                bufferOffset;
-     uint32_t                                    bufferRowLength;
-     uint32_t                                    bufferImageHeight;
--    VkImageSubresourceCopy                      imageSubresource;
-+    VkImageSubresourceLayers                    imageSubresource;
-     VkOffset3D                                  imageOffset;
-     VkExtent3D                                  imageExtent;
- } VkBufferImageCopy;
-@@ -2067,9 +2068,9 @@ typedef struct {
- } VkClearRect;
- 
- typedef struct {
--    VkImageSubresourceCopy                      srcSubresource;
-+    VkImageSubresourceLayers                    srcSubresource;
-     VkOffset3D                                  srcOffset;
--    VkImageSubresourceCopy                      dstSubresource;
-+    VkImageSubresourceLayers                    dstSubresource;
-     VkOffset3D                                  dstOffset;
-     VkExtent3D                                  extent;
- } VkImageResolve;
-@@ -2226,10 +2227,10 @@ typedef VkResult (VKAPI *PFN_vkCreateRenderPass)(VkDevice device, const VkRender
- typedef void (VKAPI *PFN_vkDestroyRenderPass)(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator);
- typedef void (VKAPI *PFN_vkGetRenderAreaGranularity)(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity);
- typedef VkResult (VKAPI *PFN_vkCreateCommandPool)(VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool);
--typedef void (VKAPI *PFN_vkDestroyCommandPool)(VkDevice device, VkCommandPool CommandPool, const VkAllocationCallbacks* pAllocator);
--typedef VkResult (VKAPI *PFN_vkResetCommandPool)(VkDevice device, VkCommandPool CommandPool, VkCommandPoolResetFlags flags);
-+typedef void (VKAPI *PFN_vkDestroyCommandPool)(VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator);
-+typedef VkResult (VKAPI *PFN_vkResetCommandPool)(VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags);
- typedef VkResult (VKAPI *PFN_vkAllocateCommandBuffers)(VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers);
--typedef void (VKAPI *PFN_vkFreeCommandBuffers)(VkDevice device, VkCommandPool CommandPool, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers);
-+typedef void (VKAPI *PFN_vkFreeCommandBuffers)(VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers);
- typedef VkResult (VKAPI *PFN_vkBeginCommandBuffer)(VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo);
- typedef VkResult (VKAPI *PFN_vkEndCommandBuffer)(VkCommandBuffer commandBuffer);
- typedef VkResult (VKAPI *PFN_vkResetCommandBuffer)(VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags);
-@@ -2240,9 +2241,9 @@ typedef void (VKAPI *PFN_vkCmdSetLineWidth)(VkCommandBuffer commandBuffer, float
- typedef void (VKAPI *PFN_vkCmdSetDepthBias)(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor);
- typedef void (VKAPI *PFN_vkCmdSetBlendConstants)(VkCommandBuffer commandBuffer, const float blendConstants[4]);
- typedef void (VKAPI *PFN_vkCmdSetDepthBounds)(VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds);
--typedef void (VKAPI *PFN_vkCmdSetStencilCompareMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t stencilCompareMask);
--typedef void (VKAPI *PFN_vkCmdSetStencilWriteMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t stencilWriteMask);
--typedef void (VKAPI *PFN_vkCmdSetStencilReference)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t stencilReference);
-+typedef void (VKAPI *PFN_vkCmdSetStencilCompareMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t compareMask);
-+typedef void (VKAPI *PFN_vkCmdSetStencilWriteMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t writeMask);
-+typedef void (VKAPI *PFN_vkCmdSetStencilReference)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference);
- typedef void (VKAPI *PFN_vkCmdBindDescriptorSets)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets);
- typedef void (VKAPI *PFN_vkCmdBindIndexBuffer)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType);
- typedef void (VKAPI *PFN_vkCmdBindVertexBuffers)(VkCommandBuffer commandBuffer, uint32_t startBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets);
-@@ -2267,14 +2268,14 @@ typedef void (VKAPI *PFN_vkCmdSetEvent)(VkCommandBuffer commandBuffer, VkEvent e
- typedef void (VKAPI *PFN_vkCmdResetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
- typedef void (VKAPI *PFN_vkCmdWaitEvents)(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const void* const* ppMemoryBarriers);
- typedef void (VKAPI *PFN_vkCmdPipelineBarrier)(VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const void* const* ppMemoryBarriers);
--typedef void (VKAPI *PFN_vkCmdBeginQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t slot, VkQueryControlFlags flags);
--typedef void (VKAPI *PFN_vkCmdEndQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t slot);
-+typedef void (VKAPI *PFN_vkCmdBeginQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t entry, VkQueryControlFlags flags);
-+typedef void (VKAPI *PFN_vkCmdEndQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t entry);
- typedef void (VKAPI *PFN_vkCmdResetQueryPool)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount);
--typedef void (VKAPI *PFN_vkCmdWriteTimestamp)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t slot);
-+typedef void (VKAPI *PFN_vkCmdWriteTimestamp)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t entry);
- typedef void (VKAPI *PFN_vkCmdCopyQueryPoolResults)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags);
- typedef void (VKAPI *PFN_vkCmdPushConstants)(VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* values);
--typedef void (VKAPI *PFN_vkCmdBeginRenderPass)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkRenderPassContents contents);
--typedef void (VKAPI *PFN_vkCmdNextSubpass)(VkCommandBuffer commandBuffer, VkRenderPassContents contents);
-+typedef void (VKAPI *PFN_vkCmdBeginRenderPass)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents);
-+typedef void (VKAPI *PFN_vkCmdNextSubpass)(VkCommandBuffer commandBuffer, VkSubpassContents contents);
- typedef void (VKAPI *PFN_vkCmdEndRenderPass)(VkCommandBuffer commandBuffer);
- typedef void (VKAPI *PFN_vkCmdExecuteCommands)(VkCommandBuffer commandBuffer, uint32_t commandBuffersCount, const VkCommandBuffer* pCommandBuffers);
- 
-@@ -2762,12 +2763,12 @@ VkResult VKAPI vkCreateCommandPool(
- 
- void VKAPI vkDestroyCommandPool(
-     VkDevice                                    device,
--    VkCommandPool                               CommandPool,
-+    VkCommandPool                               commandPool,
-     const VkAllocationCallbacks*                pAllocator);
- 
- VkResult VKAPI vkResetCommandPool(
-     VkDevice                                    device,
--    VkCommandPool                               CommandPool,
-+    VkCommandPool                               commandPool,
-     VkCommandPoolResetFlags                     flags);
- 
- VkResult VKAPI vkAllocateCommandBuffers(
-@@ -2777,7 +2778,7 @@ VkResult VKAPI vkAllocateCommandBuffers(
- 
- void VKAPI vkFreeCommandBuffers(
-     VkDevice                                    device,
--    VkCommandPool                               CommandPool,
-+    VkCommandPool                               commandPool,
-     uint32_t                                    commandBufferCount,
-     const VkCommandBuffer*                      pCommandBuffers);
- 
-@@ -2829,17 +2830,17 @@ void VKAPI vkCmdSetDepthBounds(
- void VKAPI vkCmdSetStencilCompareMask(
-     VkCommandBuffer                             commandBuffer,
-     VkStencilFaceFlags                          faceMask,
--    uint32_t                                    stencilCompareMask);
-+    uint32_t                                    compareMask);
- 
- void VKAPI vkCmdSetStencilWriteMask(
-     VkCommandBuffer                             commandBuffer,
-     VkStencilFaceFlags                          faceMask,
--    uint32_t                                    stencilWriteMask);
-+    uint32_t                                    writeMask);
- 
- void VKAPI vkCmdSetStencilReference(
-     VkCommandBuffer                             commandBuffer,
-     VkStencilFaceFlags                          faceMask,
--    uint32_t                                    stencilReference);
-+    uint32_t                                    reference);
- 
- void VKAPI vkCmdBindDescriptorSets(
-     VkCommandBuffer                             commandBuffer,
-@@ -3022,13 +3023,13 @@ void VKAPI vkCmdPipelineBarrier(
- void VKAPI vkCmdBeginQuery(
-     VkCommandBuffer                             commandBuffer,
-     VkQueryPool                                 queryPool,
--    uint32_t                                    slot,
-+    uint32_t                                    entry,
-     VkQueryControlFlags                         flags);
- 
- void VKAPI vkCmdEndQuery(
-     VkCommandBuffer                             commandBuffer,
-     VkQueryPool                                 queryPool,
--    uint32_t                                    slot);
-+    uint32_t                                    entry);
- 
- void VKAPI vkCmdResetQueryPool(
-     VkCommandBuffer                             commandBuffer,
-@@ -3040,7 +3041,7 @@ void VKAPI vkCmdWriteTimestamp(
-     VkCommandBuffer                             commandBuffer,
-     VkPipelineStageFlagBits                     pipelineStage,
-     VkQueryPool                                 queryPool,
--    uint32_t                                    slot);
-+    uint32_t                                    entry);
- 
- void VKAPI vkCmdCopyQueryPoolResults(
-     VkCommandBuffer                             commandBuffer,
-@@ -3063,11 +3064,11 @@ void VKAPI vkCmdPushConstants(
- void VKAPI vkCmdBeginRenderPass(
-     VkCommandBuffer                             commandBuffer,
-     const VkRenderPassBeginInfo*                pRenderPassBegin,
--    VkRenderPassContents                        contents);
-+    VkSubpassContents                           contents);
- 
- void VKAPI vkCmdNextSubpass(
-     VkCommandBuffer                             commandBuffer,
--    VkRenderPassContents                        contents);
-+    VkSubpassContents                           contents);
- 
- void VKAPI vkCmdEndRenderPass(
-     VkCommandBuffer                             commandBuffer);
-@@ -3431,7 +3432,7 @@ typedef struct {
- #define VK_EXT_KHR_XLIB_SURFACE_EXTENSION_NAME "vk_ext_khr_xlib_surface"
- 
- typedef VkResult (VKAPI *PFN_vkCreateXlibSurfaceKHR)(VkInstance instance, Display* dpy, Window window, VkSurfaceKHR* pSurface);
--typedef VkBool32 (VKAPI *PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, Display* dpy, VisualID visualId);
-+typedef VkBool32 (VKAPI *PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, Display* dpy, VisualID visualID);
- 
- #ifdef VK_PROTOTYPES
- VkResult VKAPI vkCreateXlibSurfaceKHR(
-@@ -3444,7 +3445,7 @@ VkBool32 VKAPI vkGetPhysicalDeviceXlibPresentationSupportKHR(
-     VkPhysicalDevice                            physicalDevice,
-     uint32_t                                    queueFamilyIndex,
-     Display*                                    dpy,
--    VisualID                                    visualId);
-+    VisualID                                    visualID);
- #endif
- #endif /* VK_USE_PLATFORM_XLIB_KHR */
- 
-diff --git a/vulkan/libvulkan/entry.cpp b/vulkan/libvulkan/entry.cpp
-index a2b4c0f..2b7faa9 100644
---- a/vulkan/libvulkan/entry.cpp
-+++ b/vulkan/libvulkan/entry.cpp
-@@ -552,18 +552,18 @@ void vkCmdSetDepthBounds(VkCommandBuffer commandBuffer, float minDepthBounds, fl
- }
- 
- __attribute__((visibility("default")))
--void vkCmdSetStencilCompareMask(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t stencilCompareMask) {
--    GetVtbl(commandBuffer).CmdSetStencilCompareMask(commandBuffer, faceMask, stencilCompareMask);
-+void vkCmdSetStencilCompareMask(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t compareMask) {
-+    GetVtbl(commandBuffer).CmdSetStencilCompareMask(commandBuffer, faceMask, compareMask);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdSetStencilWriteMask(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t stencilWriteMask) {
--    GetVtbl(commandBuffer).CmdSetStencilWriteMask(commandBuffer, faceMask, stencilWriteMask);
-+void vkCmdSetStencilWriteMask(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t writeMask) {
-+    GetVtbl(commandBuffer).CmdSetStencilWriteMask(commandBuffer, faceMask, writeMask);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdSetStencilReference(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t stencilReference) {
--    GetVtbl(commandBuffer).CmdSetStencilReference(commandBuffer, faceMask, stencilReference);
-+void vkCmdSetStencilReference(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference) {
-+    GetVtbl(commandBuffer).CmdSetStencilReference(commandBuffer, faceMask, reference);
- }
- 
- __attribute__((visibility("default")))
-@@ -687,13 +687,13 @@ void vkCmdPipelineBarrier(VkCommandBuffer commandBuffer, VkPipelineStageFlags sr
- }
- 
- __attribute__((visibility("default")))
--void vkCmdBeginQuery(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t slot, VkQueryControlFlags flags) {
--    GetVtbl(commandBuffer).CmdBeginQuery(commandBuffer, queryPool, slot, flags);
-+void vkCmdBeginQuery(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t entry, VkQueryControlFlags flags) {
-+    GetVtbl(commandBuffer).CmdBeginQuery(commandBuffer, queryPool, entry, flags);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdEndQuery(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t slot) {
--    GetVtbl(commandBuffer).CmdEndQuery(commandBuffer, queryPool, slot);
-+void vkCmdEndQuery(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t entry) {
-+    GetVtbl(commandBuffer).CmdEndQuery(commandBuffer, queryPool, entry);
- }
- 
- __attribute__((visibility("default")))
-@@ -702,8 +702,8 @@ void vkCmdResetQueryPool(VkCommandBuffer commandBuffer, VkQueryPool queryPool, u
- }
- 
- __attribute__((visibility("default")))
--void vkCmdWriteTimestamp(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t slot) {
--    GetVtbl(commandBuffer).CmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, slot);
-+void vkCmdWriteTimestamp(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t entry) {
-+    GetVtbl(commandBuffer).CmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, entry);
- }
- 
- __attribute__((visibility("default")))
-@@ -717,12 +717,12 @@ void vkCmdPushConstants(VkCommandBuffer commandBuffer, VkPipelineLayout layout,
- }
- 
- __attribute__((visibility("default")))
--void vkCmdBeginRenderPass(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkRenderPassContents contents) {
-+void vkCmdBeginRenderPass(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents) {
-     GetVtbl(commandBuffer).CmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdNextSubpass(VkCommandBuffer commandBuffer, VkRenderPassContents contents) {
-+void vkCmdNextSubpass(VkCommandBuffer commandBuffer, VkSubpassContents contents) {
-     GetVtbl(commandBuffer).CmdNextSubpass(commandBuffer, contents);
- }
- 
-diff --git a/vulkan/nulldrv/null_driver.cpp b/vulkan/nulldrv/null_driver.cpp
-index b2b905f..85d018b 100644
---- a/vulkan/nulldrv/null_driver.cpp
-+++ b/vulkan/nulldrv/null_driver.cpp
-@@ -266,8 +266,8 @@ void GetPhysicalDeviceProperties(VkPhysicalDevice,
-                                  VkPhysicalDeviceProperties* properties) {
-     properties->apiVersion = VK_API_VERSION;
-     properties->driverVersion = VK_MAKE_VERSION(0, 0, 1);
--    properties->vendorId = 0;
--    properties->deviceId = 0;
-+    properties->vendorID = 0;
-+    properties->deviceID = 0;
-     properties->deviceType = VK_PHYSICAL_DEVICE_TYPE_OTHER;
-     strcpy(properties->deviceName, "Android Vulkan Null Driver");
-     memset(properties->pipelineCacheUUID, 0,
-@@ -279,8 +279,8 @@ void GetPhysicalDeviceQueueFamilyProperties(
-     uint32_t* count,
-     VkQueueFamilyProperties* properties) {
-     if (properties) {
--        properties->queueFlags =
--            VK_QUEUE_GRAPHICS_BIT | VK_QUEUE_COMPUTE_BIT | VK_QUEUE_DMA_BIT;
-+        properties->queueFlags = VK_QUEUE_GRAPHICS_BIT | VK_QUEUE_COMPUTE_BIT |
-+                                 VK_QUEUE_TRANSFER_BIT;
-         properties->queueCount = 1;
-         properties->timestampValidBits = 64;
-     }
-@@ -1077,10 +1077,10 @@ void CmdCopyQueryPoolResults(VkCommandBuffer cmdBuffer, VkQueryPool queryPool, u
- void CmdPushConstants(VkCommandBuffer cmdBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t start, uint32_t length, const void* values) {
- }
- 
--void CmdBeginRenderPass(VkCommandBuffer cmdBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkRenderPassContents contents) {
-+void CmdBeginRenderPass(VkCommandBuffer cmdBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents) {
- }
- 
--void CmdNextSubpass(VkCommandBuffer cmdBuffer, VkRenderPassContents contents) {
-+void CmdNextSubpass(VkCommandBuffer cmdBuffer, VkSubpassContents contents) {
- }
- 
- void CmdEndRenderPass(VkCommandBuffer cmdBuffer) {
-diff --git a/vulkan/nulldrv/null_driver.h b/vulkan/nulldrv/null_driver.h
-index 939a559..91b8d34 100644
---- a/vulkan/nulldrv/null_driver.h
-+++ b/vulkan/nulldrv/null_driver.h
-@@ -161,8 +161,8 @@ void CmdResetQueryPool(VkCommandBuffer cmdBuffer, VkQueryPool queryPool, uint32_
- void CmdWriteTimestamp(VkCommandBuffer cmdBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t slot);
- void CmdCopyQueryPoolResults(VkCommandBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize destStride, VkQueryResultFlags flags);
- void CmdPushConstants(VkCommandBuffer cmdBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t start, uint32_t length, const void* values);
--void CmdBeginRenderPass(VkCommandBuffer cmdBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkRenderPassContents contents);
--void CmdNextSubpass(VkCommandBuffer cmdBuffer, VkRenderPassContents contents);
-+void CmdBeginRenderPass(VkCommandBuffer cmdBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents);
-+void CmdNextSubpass(VkCommandBuffer cmdBuffer, VkSubpassContents contents);
- void CmdEndRenderPass(VkCommandBuffer cmdBuffer);
- void CmdExecuteCommands(VkCommandBuffer cmdBuffer, uint32_t cmdBuffersCount, const VkCommandBuffer* pCmdBuffers);
- 
-diff --git a/vulkan/tools/vkinfo.cpp b/vulkan/tools/vkinfo.cpp
-index 1920d6b..c63dca4 100644
---- a/vulkan/tools/vkinfo.cpp
-+++ b/vulkan/tools/vkinfo.cpp
-@@ -75,8 +75,8 @@ const char* VkQueueFlagBitStr(VkQueueFlagBits bit) {
-             return "GRAPHICS";
-         case VK_QUEUE_COMPUTE_BIT:
-             return "COMPUTE";
--        case VK_QUEUE_DMA_BIT:
--            return "DMA";
-+        case VK_QUEUE_TRANSFER_BIT:
-+            return "TRANSFER";
-         case VK_QUEUE_SPARSE_BINDING_BIT:
-             return "SPARSE";
-     }
-@@ -91,8 +91,8 @@ void DumpPhysicalDevice(uint32_t idx, VkPhysicalDevice pdev) {
-     printf("  %u: \"%s\" (%s) %u.%u.%u/%#x [%04x:%04x]\n", idx,
-            props.deviceName, VkPhysicalDeviceTypeStr(props.deviceType),
-            (props.apiVersion >> 22) & 0x3FF, (props.apiVersion >> 12) & 0x3FF,
--           (props.apiVersion >> 0) & 0xFFF, props.driverVersion, props.vendorId,
--           props.deviceId);
-+           (props.apiVersion >> 0) & 0xFFF, props.driverVersion, props.vendorID,
-+           props.deviceID);
- 
-     VkPhysicalDeviceMemoryProperties mem_props;
-     vkGetPhysicalDeviceMemoryProperties(pdev, &mem_props);
--- 
-2.6.0.rc2.230.g3dd15c0
-
diff --git a/vulkan/patches/frameworks_native-sdk_0.10/0021-vulkan-Update-from-version-0.198.0-to-0.200.0.patch b/vulkan/patches/frameworks_native-sdk_0.10/0021-vulkan-Update-from-version-0.198.0-to-0.200.0.patch
deleted file mode 100644
index 0d1009e..0000000
--- a/vulkan/patches/frameworks_native-sdk_0.10/0021-vulkan-Update-from-version-0.198.0-to-0.200.0.patch
+++ /dev/null
@@ -1,3349 +0,0 @@
-From 9568691bea351152b340c0cbb3d31e5246ac469b Mon Sep 17 00:00:00 2001
-From: Jesse Hall <jessehall@google.com>
-Date: Mon, 30 Nov 2015 00:42:57 -0800
-Subject: [PATCH] vulkan: Update from version 0.198.0 to 0.200.0
-
-Change-Id: I071a9143332dd8b8c2ef899105073ed8791fc5db
----
- vulkan/api/vulkan.api                              | 373 +++++------
- vulkan/include/vulkan/vk_android_native_buffer.h   |  93 +++
- .../include/vulkan/vk_ext_android_native_buffer.h  |  93 ---
- vulkan/include/vulkan/vulkan.h                     | 679 ++++++++++-----------
- vulkan/libvulkan/entry.cpp                         |  10 -
- vulkan/libvulkan/entry.cpp.tmpl                    |   6 +-
- vulkan/libvulkan/get_proc_addr.cpp                 |  16 +-
- vulkan/libvulkan/get_proc_addr.cpp.tmpl            |  16 +-
- vulkan/libvulkan/loader.h                          |   4 +-
- vulkan/nulldrv/null_driver.cpp                     |  12 -
- vulkan/nulldrv/null_driver.h                       |   4 +-
- vulkan/nulldrv/null_driver_gen.cpp                 |   2 -
- 12 files changed, 595 insertions(+), 713 deletions(-)
- create mode 100644 vulkan/include/vulkan/vk_android_native_buffer.h
- delete mode 100644 vulkan/include/vulkan/vk_ext_android_native_buffer.h
-
-diff --git a/vulkan/api/vulkan.api b/vulkan/api/vulkan.api
-index ab887fa..0296b0f 100644
---- a/vulkan/api/vulkan.api
-+++ b/vulkan/api/vulkan.api
-@@ -27,7 +27,7 @@ import platform "platform.api"
- 
- // API version (major.minor.patch)
- define VERSION_MAJOR 0
--define VERSION_MINOR 198
-+define VERSION_MINOR 200
- define VERSION_PATCH 0
- 
- // API limits
-@@ -45,45 +45,45 @@ define VK_FALSE       0
- // API keyword, but needs special handling by some templates
- define NULL_HANDLE 0
- 
--@extension("VK_EXT_KHR_surface") define VK_EXT_KHR_SURFACE_REVISION                     20
--@extension("VK_EXT_KHR_surface") define VK_EXT_KHR_SURFACE_EXTENSION_NUMBER             1
--@extension("VK_EXT_KHR_surface") define VK_EXT_KHR_SURFACE_EXTENSION_NAME               "VK_EXT_KHR_surface"
-+@extension("VK_KHR_surface") define VK_KHR_SURFACE_REVISION                     22
-+@extension("VK_KHR_surface") define VK_KHR_SURFACE_EXTENSION_NUMBER             1
-+@extension("VK_KHR_surface") define VK_KHR_SURFACE_EXTENSION_NAME               "VK_KHR_surface"
- 
--@extension("VK_EXT_KHR_swapchain") define VK_EXT_KHR_SWAPCHAIN_REVISION                 62
--@extension("VK_EXT_KHR_swapchain") define VK_EXT_KHR_SWAPCHAIN_EXTENSION_NUMBER         2
--@extension("VK_EXT_KHR_swapchain") define VK_EXT_KHR_SWAPCHAIN_EXTENSION_NAME           "VK_EXT_KHR_swapchain"
-+@extension("VK_KHR_swapchain") define VK_KHR_SWAPCHAIN_REVISION                 64
-+@extension("VK_KHR_swapchain") define VK_KHR_SWAPCHAIN_EXTENSION_NUMBER         2
-+@extension("VK_KHR_swapchain") define VK_KHR_SWAPCHAIN_EXTENSION_NAME           "VK_KHR_swapchain"
- 
--@extension("VK_EXT_KHR_display") define VK_EXT_KHR_DISPLAY_REVISION                     17
--@extension("VK_EXT_KHR_display") define VK_EXT_KHR_DISPLAY_EXTENSION_NUMBER             3
--@extension("VK_EXT_KHR_display") define VK_EXT_KHR_DISPLAY_EXTENSION_NAME               "VK_EXT_KHR_display"
-+@extension("VK_KHR_display") define VK_KHR_DISPLAY_REVISION                     18
-+@extension("VK_KHR_display") define VK_KHR_DISPLAY_EXTENSION_NUMBER             3
-+@extension("VK_KHR_display") define VK_KHR_DISPLAY_EXTENSION_NAME               "VK_KHR_display"
- 
--@extension("VK_EXT_KHR_display_swapchain") define VK_EXT_KHR_DISPLAY_REVISION           6
--@extension("VK_EXT_KHR_display_swapchain") define VK_EXT_KHR_DISPLAY_EXTENSION_NUMBER   4
--@extension("VK_EXT_KHR_display_swapchain") define VK_EXT_KHR_DISPLAY_EXTENSION_NAME     "VK_EXT_KHR_display_swapchain"
-+@extension("VK_KHR_display_swapchain") define VK_KHR_DISPLAY_REVISION           7
-+@extension("VK_KHR_display_swapchain") define VK_KHR_DISPLAY_EXTENSION_NUMBER   4
-+@extension("VK_KHR_display_swapchain") define VK_KHR_DISPLAY_EXTENSION_NAME     "VK_KHR_display_swapchain"
- 
--@extension("VK_EXT_KHR_xlib_surface") define VK_EXT_KHR_XLIB_SURFACE_REVISION           3
--@extension("VK_EXT_KHR_xlib_surface") define VK_EXT_KHR_XLIB_SURFACE_NUMBER             5
--@extension("VK_EXT_KHR_xlib_surface") define VK_EXT_KHR_XLIB_SURFACE_NAME               "VK_EXT_KHR_xlib_surface"
-+@extension("VK_KHR_xlib_surface") define VK_KHR_XLIB_SURFACE_REVISION           4
-+@extension("VK_KHR_xlib_surface") define VK_KHR_XLIB_SURFACE_NUMBER             5
-+@extension("VK_KHR_xlib_surface") define VK_KHR_XLIB_SURFACE_NAME               "VK_KHR_xlib_surface"
- 
--@extension("VK_EXT_KHR_xcb_surface") define VK_EXT_KHR_XCB_SURFACE_REVISION             3
--@extension("VK_EXT_KHR_xcb_surface") define VK_EXT_KHR_XCB_SURFACE_NUMBER               6
--@extension("VK_EXT_KHR_xcb_surface") define VK_EXT_KHR_XCB_SURFACE_NAME                 "VK_EXT_KHR_xcb_surface"
-+@extension("VK_KHR_xcb_surface") define VK_KHR_XCB_SURFACE_REVISION             4
-+@extension("VK_KHR_xcb_surface") define VK_KHR_XCB_SURFACE_NUMBER               6
-+@extension("VK_KHR_xcb_surface") define VK_KHR_XCB_SURFACE_NAME                 "VK_KHR_xcb_surface"
- 
--@extension("VK_EXT_KHR_wayland_surface") define VK_EXT_KHR_WAYLAND_SURFACE_REVISION     2
--@extension("VK_EXT_KHR_wayland_surface") define VK_EXT_KHR_WAYLAND_SURFACE_NUMBER       7
--@extension("VK_EXT_KHR_wayland_surface") define VK_EXT_KHR_WAYLAND_SURFACE_NAME         "VK_EXT_KHR_wayland_surface"
-+@extension("VK_KHR_wayland_surface") define VK_KHR_WAYLAND_SURFACE_REVISION     3
-+@extension("VK_KHR_wayland_surface") define VK_KHR_WAYLAND_SURFACE_NUMBER       7
-+@extension("VK_KHR_wayland_surface") define VK_KHR_WAYLAND_SURFACE_NAME         "VK_KHR_wayland_surface"
- 
--@extension("VK_EXT_KHR_mir_surface") define VK_EXT_KHR_MIR_SURFACE_REVISION             2
--@extension("VK_EXT_KHR_mir_surface") define VK_EXT_KHR_MIR_SURFACE_NUMBER               8
--@extension("VK_EXT_KHR_mir_surface") define VK_EXT_KHR_MIR_SURFACE_NAME                 "VK_EXT_KHR_mir_surface"
-+@extension("VK_KHR_mir_surface") define VK_KHR_MIR_SURFACE_REVISION             3
-+@extension("VK_KHR_mir_surface") define VK_KHR_MIR_SURFACE_NUMBER               8
-+@extension("VK_KHR_mir_surface") define VK_KHR_MIR_SURFACE_NAME                 "VK_KHR_mir_surface"
- 
--@extension("VK_EXT_KHR_android_surface") define VK_EXT_KHR_ANDROID_SURFACE_REVISION     1
--@extension("VK_EXT_KHR_android_surface") define VK_EXT_KHR_ANDROID_SURFACE_NUMBER       8
--@extension("VK_EXT_KHR_android_surface") define VK_EXT_KHR_ANDROID_SURFACE_NAME         "VK_EXT_KHR_android_surface"
-+@extension("VK_KHR_android_surface") define VK_KHR_ANDROID_SURFACE_REVISION     2
-+@extension("VK_KHR_android_surface") define VK_KHR_ANDROID_SURFACE_NUMBER       8
-+@extension("VK_KHR_android_surface") define VK_KHR_ANDROID_SURFACE_NAME         "VK_KHR_android_surface"
- 
--@extension("VK_EXT_KHR_win32_surface") define VK_EXT_KHR_WIN32_SURFACE_REVISION         2
--@extension("VK_EXT_KHR_win32_surface") define VK_EXT_KHR_WIN32_SURFACE_NUMBER           9
--@extension("VK_EXT_KHR_win32_surface") define VK_EXT_KHR_WIN32_SURFACE_NAME             "VK_EXT_KHR_win32_surface"
-+@extension("VK_KHR_win32_surface") define VK_KHR_WIN32_SURFACE_REVISION         3
-+@extension("VK_KHR_win32_surface") define VK_KHR_WIN32_SURFACE_NUMBER           9
-+@extension("VK_KHR_win32_surface") define VK_KHR_WIN32_SURFACE_NAME             "VK_KHR_win32_surface"
- 
- 
- /////////////
-@@ -110,7 +110,6 @@ type u32 VkSampleMask
- @nonDispatchHandle type u64 VkImage
- @nonDispatchHandle type u64 VkImageView
- @nonDispatchHandle type u64 VkShaderModule
--@nonDispatchHandle type u64 VkShader
- @nonDispatchHandle type u64 VkPipeline
- @nonDispatchHandle type u64 VkPipelineLayout
- @nonDispatchHandle type u64 VkSampler
-@@ -125,12 +124,12 @@ type u32 VkSampleMask
- @nonDispatchHandle type u64 VkRenderPass
- @nonDispatchHandle type u64 VkPipelineCache
- 
--@extension("VK_EXT_KHR_surface")    @nonDispatchHandle type u64 VkSurfaceKHR
-+@extension("VK_KHR_surface")    @nonDispatchHandle type u64 VkSurfaceKHR
- 
--@extension("VK_EXT_KHR_swapchain")  @nonDispatchHandle type u64 VkSwapchainKHR
-+@extension("VK_KHR_swapchain")  @nonDispatchHandle type u64 VkSwapchainKHR
- 
--@extension("VK_EXT_KHR_display")    @nonDispatchHandle type u64 VkDisplayKHR
--@extension("VK_EXT_KHR_display")    @nonDispatchHandle type u64 VkDisplayModeKHR
-+@extension("VK_KHR_display")    @nonDispatchHandle type u64 VkDisplayKHR
-+@extension("VK_KHR_display")    @nonDispatchHandle type u64 VkDisplayModeKHR
- 
- 
- /////////////
-@@ -148,7 +147,7 @@ enum VkImageLayout {
-     VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL                    = 0x00000007,   /// Optimal layout when image is used only as destination of transfer operations
-     VK_IMAGE_LAYOUT_PREINITIALIZED                          = 0x00000008,   /// Initial layout used when the data is populated by the CPU
- 
--    //@extension("VK_EXT_KHR_swapchain")
-+    //@extension("VK_KHR_swapchain")
-     VK_IMAGE_LAYOUT_PRESENT_SRC_KHR                         = 0xc0000802,
- }
- 
-@@ -359,7 +358,7 @@ enum VkLogicOp {
- }
- 
- enum VkSystemAllocationScope {
--    VK_SYSTEM_ALLOCATION_SCOPE_FUNCTION                     = 0x00000000,
-+    VK_SYSTEM_ALLOCATION_SCOPE_COMMAND                      = 0x00000000,
-     VK_SYSTEM_ALLOCATION_SCOPE_OBJECT                       = 0x00000001,
-     VK_SYSTEM_ALLOCATION_SCOPE_CACHE                        = 0x00000002,
-     VK_SYSTEM_ALLOCATION_SCOPE_DEVICE                       = 0x00000003,
-@@ -580,47 +579,46 @@ enum VkStructureType {
-     VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO                         = 14,
-     VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO                    = 15,
-     VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO                 = 16,
--    VK_STRUCTURE_TYPE_SHADER_CREATE_INFO                        = 17,
--    VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO                = 18,
--    VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO         = 19,
--    VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO   = 20,
--    VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 21,
--    VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO   = 22,
--    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO       = 23,
--    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO  = 24,
--    VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO    = 25,
--    VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO  = 26,
--    VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO    = 27,
--    VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO        = 28,
--    VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO             = 29,
--    VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO              = 30,
--    VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO               = 31,
--    VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO                       = 32,
--    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO         = 33,
--    VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO               = 34,
--    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOC_INFO                 = 35,
--    VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET                      = 36,
--    VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET                       = 37,
--    VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO                   = 38,
--    VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO                   = 39,
--    VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO                  = 40,
--    VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOC_INFO                 = 41,
--    VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO                 = 42,
--    VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO                    = 43,
--    VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER                     = 44,
--    VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER                      = 45,
--    VK_STRUCTURE_TYPE_MEMORY_BARRIER                            = 46,
--    VK_STRUCTURE_TYPE_LAYER_INSTANCE_CREATE_INFO                = 47,
--    VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO                  = 48,
--
--    //@extension("VK_EXT_KHR_swapchain")
-+    VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO                = 17,
-+    VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO         = 18,
-+    VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO   = 19,
-+    VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20,
-+    VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO   = 21,
-+    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO       = 22,
-+    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO  = 23,
-+    VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO    = 24,
-+    VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO  = 25,
-+    VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO    = 26,
-+    VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO        = 27,
-+    VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO             = 28,
-+    VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO              = 29,
-+    VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO               = 30,
-+    VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO                       = 31,
-+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO         = 32,
-+    VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO               = 33,
-+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOC_INFO                 = 34,
-+    VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET                      = 35,
-+    VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET                       = 36,
-+    VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO                   = 37,
-+    VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO                   = 38,
-+    VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO                  = 39,
-+    VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOC_INFO                 = 40,
-+    VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO                 = 41,
-+    VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO                    = 42,
-+    VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER                     = 43,
-+    VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER                      = 44,
-+    VK_STRUCTURE_TYPE_MEMORY_BARRIER                            = 45,
-+    VK_STRUCTURE_TYPE_LAYER_INSTANCE_CREATE_INFO                = 46,
-+    VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO                  = 47,
-+
-+    //@extension("VK_KHR_swapchain")
-     VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR                 = 0xc0000801,
- 
--    //@extension("VK_EXT_KHR_display")
-+    //@extension("VK_KHR_display")
-     VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR              = 0xc0000c00,
-     VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR           = 0xc0000c01,
- 
--    //@extension("VK_EXT_KHR_display_swapchain")
-+    //@extension("VK_KHR_display_swapchain")
-     VK_STRUCTURE_TYPE_DISPLAY_SWAPCHAIN_CREATE_INFO_KHR         = 0xc0001000,
-     VK_STRUCTURE_TYPE_DISPLAY_DISPLAY_PRESENT_INFO_KHR          = 0xc0001001,
- }
-@@ -641,7 +639,7 @@ enum VkResult {
-     VK_EVENT_RESET                                          = 0x00000004,
-     VK_INCOMPLETE                                           = 0x00000005,
- 
--    //@extension("VK_EXT_KHR_swapchain")
-+    //@extension("VK_KHR_swapchain")
-     VK_SUBOPTIMAL_KHR                                       = 0x40000403,
- 
-     // Error codes (negative values)
-@@ -655,16 +653,16 @@ enum VkResult {
-     VK_ERROR_FEATURE_NOT_PRESENT                            = 0xFFFFFFF8,
-     VK_ERROR_INCOMPATIBLE_DRIVER                            = 0xFFFFFFF7,
- 
--    //@extension("VK_EXT_KHR_surface")
-+    //@extension("VK_KHR_surface")
-     VK_ERROR_SURFACE_LOST_KHR                               = 0xC0000400,
- 
--    //@extension("VK_EXT_KHR_swapchain")
-+    //@extension("VK_KHR_swapchain")
-     VK_ERROR_OUT_OF_DATE_KHR                                = 0xC0000804,
- 
--    //@extension("VK_EXT_KHR_display_swapchain")
-+    //@extension("VK_KHR_display_swapchain")
-     VK_ERROR_INCOMPATIBLE_DISPLAY_KHR                       = 0xC0001002,
- 
--    //@extension("VK_EXT_KHR_android_surface")
-+    //@extension("VK_KHR_android_surface")
-     VK_ERROR_INVALID_ANDROID_WINDOW_KHR                     = 0xC002400,
-     VK_ERROR_ANDROID_WINDOW_IN_USE_KHR                      = 0xC002401,
- }
-@@ -681,7 +679,7 @@ enum VkDynamicState {
-     VK_DYNAMIC_STATE_STENCIL_REFERENCE                      = 0x00000008,
- }
- 
--@extension("VK_EXT_KHR_surface")
-+@extension("VK_KHR_surface")
- enum VkSurfaceTransformKHR {
-     VK_SURFACE_TRANSFORM_NONE_KHR                           = 0x00000000,
-     VK_SURFACE_TRANSFORM_ROT90_KHR                          = 0x00000001,
-@@ -694,7 +692,7 @@ enum VkSurfaceTransformKHR {
-     VK_SURFACE_TRANSFORM_INHERIT_KHR                        = 0x00000008,
- }
- 
--@extension("VK_EXT_KHR_swapchain")
-+@extension("VK_KHR_swapchain")
- enum VkPresentModeKHR {
-     VK_PRESENT_MODE_IMMEDIATE_KHR                           = 0x00000000,
-     VK_PRESENT_MODE_MAILBOX_KHR                             = 0x00000001,
-@@ -702,7 +700,7 @@ enum VkPresentModeKHR {
-     VK_PRESENT_MODE_FIFO_RELAXED_KHR                        = 0x00000003,
- }
- 
--@extension("VK_EXT_KHR_swapchain")
-+@extension("VK_KHR_swapchain")
- enum VkColorSpaceKHR {
-     VK_COLORSPACE_SRGB_NONLINEAR_KHR                        = 0x00000000,
- }
-@@ -736,29 +734,26 @@ bitfield VkMemoryHeapFlagBits {
-     VK_MEMORY_HEAP_DEVICE_LOCAL_BIT                         = 0x00000001,
- }
- 
--/// Memory output flags passed to resource transition commands
--type VkFlags VkMemoryOutputFlags
--bitfield VkMemoryOutputFlagBits {
--    VK_MEMORY_OUTPUT_HOST_WRITE_BIT                         = 0x00000001,    /// Controls output coherency of host writes
--    VK_MEMORY_OUTPUT_SHADER_WRITE_BIT                       = 0x00000002,    /// Controls output coherency of generic shader writes
--    VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT                   = 0x00000004,    /// Controls output coherency of color attachment writes
--    VK_MEMORY_OUTPUT_DEPTH_STENCIL_ATTACHMENT_BIT           = 0x00000008,    /// Controls output coherency of depth/stencil attachment writes
--    VK_MEMORY_OUTPUT_TRANSFER_BIT                           = 0x00000010,    /// Controls output coherency of transfer operations
--}
--
--/// Memory input flags passed to resource transition commands
--type VkFlags VkMemoryInputFlags
--bitfield VkMemoryInputFlagBits {
--    VK_MEMORY_INPUT_HOST_READ_BIT                           = 0x00000001,    /// Controls input coherency of host reads
--    VK_MEMORY_INPUT_INDIRECT_COMMAND_BIT                    = 0x00000002,    /// Controls input coherency of indirect command reads
--    VK_MEMORY_INPUT_INDEX_FETCH_BIT                         = 0x00000004,    /// Controls input coherency of index fetches
--    VK_MEMORY_INPUT_VERTEX_ATTRIBUTE_FETCH_BIT              = 0x00000008,    /// Controls input coherency of vertex attribute fetches
--    VK_MEMORY_INPUT_UNIFORM_READ_BIT                        = 0x00000010,    /// Controls input coherency of uniform buffer reads
--    VK_MEMORY_INPUT_SHADER_READ_BIT                         = 0x00000020,    /// Controls input coherency of generic shader reads
--    VK_MEMORY_INPUT_COLOR_ATTACHMENT_BIT                    = 0x00000040,    /// Controls input coherency of color attachment reads
--    VK_MEMORY_INPUT_DEPTH_STENCIL_ATTACHMENT_BIT            = 0x00000080,    /// Controls input coherency of depth/stencil attachment reads
--    VK_MEMORY_INPUT_INPUT_ATTACHMENT_BIT                    = 0x00000100,    /// Controls input coherency of input attachment reads
--    VK_MEMORY_INPUT_TRANSFER_BIT                            = 0x00000200,    /// Controls input coherency of transfer operations
-+/// Access flags
-+type VkFlags VkAccessFlags
-+bitfield VkAccessFlagBits {
-+    VK_ACCESS_INDIRECT_COMMAND_READ_BIT                     = 0x00000001,
-+    VK_ACCESS_INDEX_READ_BIT                                = 0x00000002,
-+    VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT                     = 0x00000004,
-+    VK_ACCESS_UNIFORM_READ_BIT                              = 0x00000008,
-+    VK_ACCESS_INPUT_ATTACHMENT_READ_BIT                     = 0x00000010,
-+    VK_ACCESS_SHADER_READ_BIT                               = 0x00000020,
-+    VK_ACCESS_SHADER_WRITE_BIT                              = 0x00000040,
-+    VK_ACCESS_COLOR_ATTACHMENT_READ_BIT                     = 0x00000080,
-+    VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT                    = 0x00000100,
-+    VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT             = 0x00000200,
-+    VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT            = 0x00000400,
-+    VK_ACCESS_TRANSFER_READ_BIT                             = 0x00000800,
-+    VK_ACCESS_TRANSFER_WRITE_BIT                            = 0x00001000,
-+    VK_ACCESS_HOST_READ_BIT                                 = 0x00002000,
-+    VK_ACCESS_HOST_WRITE_BIT                                = 0x00004000,
-+    VK_ACCESS_MEMORY_READ_BIT                               = 0x00008000,
-+    VK_ACCESS_MEMORY_WRITE_BIT                              = 0x00010000,
- }
- 
- /// Buffer usage flags
-@@ -902,11 +897,6 @@ type VkFlags VkShaderModuleCreateFlags
- //bitfield VkShaderModuleCreateFlagBits {
- //}
- 
--/// Shader creation flags
--type VkFlags VkShaderCreateFlags
--//bitfield VkShaderCreateFlagBits {
--//}
--
- /// Event creation flags
- type VkFlags VkEventCreateFlags
- //bitfield VkEventCreateFlagBits {
-@@ -1153,9 +1143,9 @@ bitfield VkCullModeFlagBits {
-     VK_CULL_MODE_FRONT_AND_BACK                             = 0x00000003,
- }
- 
--@extension("VK_EXT_KHR_swapchain")
-+@extension("VK_KHR_swapchain")
- type VkFlags VkSurfaceTransformFlagsKHR
--@extension("VK_EXT_KHR_swapchain")
-+@extension("VK_KHR_swapchain")
- bitfield VkSurfaceTransformFlagBitsKHR {
-     VK_SURFACE_TRANSFORM_NONE_BIT_KHR                       = 0x00000001,
-     VK_SURFACE_TRANSFORM_ROT90_BIT_KHR                      = 0x00000002,
-@@ -1168,9 +1158,9 @@ bitfield VkSurfaceTransformFlagBitsKHR {
-     VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR                    = 0x00000100,
- }
- 
--@extension("VK_EXT_KHR_swapchain")
-+@extension("VK_KHR_swapchain")
- type VkFlags VkCompositeAlphaFlagsKHR
--@extension("VK_EXT_KHR_swapchain")
-+@extension("VK_KHR_swapchain")
- bitfield VkCompositeAlphaFlagBitsKHR {
-     VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR                       = 0x00000001,
-     VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR               = 0x00000002,
-@@ -1178,9 +1168,9 @@ bitfield VkCompositeAlphaFlagBitsKHR {
-     VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR                      = 0x00000008,
- }
- 
--@extension("VK_EXT_KHR_display")
-+@extension("VK_KHR_display")
- type VkFlags VkDisplayPlaneAlphaFlagsKHR
--@extension("VK_EXT_KHR_display")
-+@extension("VK_KHR_display")
- bitfield VkDisplayPlaneAlphaFlagBitsKHR {
-     VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR                   = 0x00000001,
-     VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR                = 0x00000002,
-@@ -1356,7 +1346,7 @@ class VkMemoryRequirements {
- }
- 
- class VkSparseImageFormatProperties {
--    VkImageAspectFlagBits                       aspect
-+    VkImageAspectFlagBits                       aspectMask
-     VkExtent3D                                  imageGranularity
-     VkSparseImageFormatFlags                    flags
- }
-@@ -1460,7 +1450,7 @@ class VkBufferViewCreateInfo {
- }
- 
- class VkImageSubresource {
--    VkImageAspectFlagBits                       aspect
-+    VkImageAspectFlagBits                       aspectMask
-     u32                                         mipLevel
-     u32                                         arrayLayer
- }
-@@ -1476,15 +1466,15 @@ class VkImageSubresourceRange {
- class VkMemoryBarrier {
-     VkStructureType                             sType                      /// Must be VK_STRUCTURE_TYPE_MEMORY_BARRIER
-     const void*                                 pNext                      /// Pointer to next structure.
--    VkMemoryOutputFlags                         outputMask                 /// Outputs the barrier should sync
--    VkMemoryInputFlags                          inputMask                  /// Inputs the barrier should sync to
-+    VkAccessFlags                               srcAccessMask
-+    VkAccessFlags                               dstAccessMask
- }
- 
- class VkBufferMemoryBarrier {
-     VkStructureType                             sType                      /// Must be VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER
-     const void*                                 pNext                      /// Pointer to next structure.
--    VkMemoryOutputFlags                         outputMask                 /// Outputs the barrier should sync
--    VkMemoryInputFlags                          inputMask                  /// Inputs the barrier should sync to
-+    VkAccessFlags                               srcAccessMask
-+    VkAccessFlags                               dstAccessMask
-     u32                                         srcQueueFamilyIndex        /// Queue family to transition ownership from
-     u32                                         dstQueueFamilyIndex        /// Queue family to transition ownership to
-     VkBuffer                                    buffer                     /// Buffer to sync
-@@ -1495,8 +1485,8 @@ class VkBufferMemoryBarrier {
- class VkImageMemoryBarrier {
-     VkStructureType                             sType                      /// Must be VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER
-     const void*                                 pNext                      /// Pointer to next structure.
--    VkMemoryOutputFlags                         outputMask                 /// Outputs the barrier should sync
--    VkMemoryInputFlags                          inputMask                  /// Inputs the barrier should sync to
-+    VkAccessFlags                               srcAccessMask
-+    VkAccessFlags                               dstAccessMask
-     VkImageLayout                               oldLayout                  /// Current layout of the image
-     VkImageLayout                               newLayout                  /// New layout to transition the image to
-     u32                                         srcQueueFamilyIndex        /// Queue family to transition ownership from
-@@ -1646,15 +1636,6 @@ class VkShaderModuleCreateInfo {
-     const u32*                                  pCode                  /// Binary code of size codeSize
- }
- 
--class VkShaderCreateInfo {
--    VkStructureType                             sType              /// Must be VK_STRUCTURE_TYPE_SHADER_CREATE_INFO
--    const void*                                 pNext              /// Pointer to next structure
--    VkShaderCreateFlags                         flags              /// Reserved
--    VkShaderModule                              module             /// Module containing entry point
--    const char*                                 pName              /// Null-terminated entry point name
--    VkShaderStageFlagBits                       stage
--}
--
- class VkDescriptorSetLayoutBinding {
-     VkDescriptorType                            descriptorType     /// Type of the descriptors in this binding
-     u32                                         arraySize          /// Number of descriptors in this binding
-@@ -1667,7 +1648,7 @@ class VkDescriptorSetLayoutCreateInfo {
-     const void*                                 pNext              /// Pointer to next structure
-     VkDescriptorSetLayoutCreateFlags            flags
-     u32                                         bindingCount       /// Number of bindings in the descriptor set layout
--    const VkDescriptorSetLayoutBinding*         pBindings          /// Array of descriptor set layout bindings
-+    const VkDescriptorSetLayoutBinding*         pBinding           /// Array of descriptor set layout bindings
- }
- 
- class VkDescriptorPoolSize {
-@@ -1709,7 +1690,9 @@ class VkPipelineShaderStageCreateInfo {
-     VkStructureType                             sType              /// Must be VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO
-     const void*                                 pNext              /// Pointer to next structure
-     VkPipelineShaderStageCreateFlags            flags
--    VkShader                                    shader
-+    VkShaderStageFlagBits                       stage
-+    VkShaderModule                              module
-+    const char*                                 pName
-     const VkSpecializationInfo*                 pSpecializationInfo
- }
- 
-@@ -2015,8 +1998,8 @@ class VkSubpassDependency {
-     u32                                         dstSubpass
-     VkPipelineStageFlags                        srcStageMask
-     VkPipelineStageFlags                        dstStageMask
--    VkMemoryOutputFlags                         outputMask
--    VkMemoryInputFlags                          inputMask
-+    VkAccessFlags                               srcAccessMask
-+    VkAccessFlags                               dstAccessMask
-     VkDependencyFlags                           dependencyFlags
- }
- 
-@@ -2279,7 +2262,7 @@ class VkDispatchIndirectCommand {
-     u32                                         z
- }
- 
--@extension("VK_EXT_KHR_surface")
-+@extension("VK_KHR_surface")
- class VkSurfaceCapabilitiesKHR {
-     u32                                         minImageCount
-     u32                                         maxImageCount
-@@ -2293,13 +2276,13 @@ class VkSurfaceCapabilitiesKHR {
-     VkImageUsageFlags                           supportedUsageFlags
- }
- 
--@extension("VK_EXT_KHR_surface")
-+@extension("VK_KHR_surface")
- class VkSurfaceFormatKHR {
-     VkFormat                                    format
-     VkColorSpaceKHR                             colorSpace
- }
- 
--@extension("VK_EXT_KHR_swapchain")
-+@extension("VK_KHR_swapchain")
- class VkSwapchainCreateInfoKHR {
-     VkStructureType                             sType
-     const void*                                 pNext
-@@ -2320,7 +2303,7 @@ class VkSwapchainCreateInfoKHR {
-     VkBool32                                    clipped
- }
- 
--@extension("VK_EXT_KHR_swapchain")
-+@extension("VK_KHR_swapchain")
- class VkPresentInfoKHR {
-     VkStructureType                             sType
-     const void*                                 pNext
-@@ -2331,7 +2314,7 @@ class VkPresentInfoKHR {
-     const u32*                                  imageIndices
- }
- 
--@extension("VK_EXT_KHR_display")
-+@extension("VK_KHR_display")
- class VkDisplayPropertiesKHR {
-     VkDisplayKHR                                display
-     const char*                                 displayName
-@@ -2342,32 +2325,32 @@ class VkDisplayPropertiesKHR {
-     VkBool32                                    persistentContent
- }
- 
--@extension("VK_EXT_KHR_display")
-+@extension("VK_KHR_display")
- class VkDisplayModeParametersKHR {
-     VkExtent2D                                  visibleRegion
-     u32                                         refreshRate
- }
- 
--@extension("VK_EXT_KHR_display")
-+@extension("VK_KHR_display")
- class VkDisplayModePropertiesKHR {
-     VkDisplayModeKHR                            displayMode
-     VkDisplayModeParametersKHR                  parameters
- }
- 
--@extension("VK_EXT_KHR_display")
-+@extension("VK_KHR_display")
- class VkDisplayModeCreateInfoKHR {
-     VkStructureType                             sType
-     const void*                                 pNext
-     VkDisplayModeParametersKHR                  parameters
- }
- 
--@extension("VK_EXT_KHR_display")
-+@extension("VK_KHR_display")
- class VkDisplayPlanePropertiesKHR {
-     VkDisplayKHR                                currentDisplay
-     u32                                         currentStackIndex
- }
- 
--@extension("VK_EXT_KHR_display")
-+@extension("VK_KHR_display")
- class VkDisplayPlaneCapabilitiesKHR {
-     VkDisplayPlaneAlphaFlagsKHR                 supportedAlpha
-     VkOffset2D                                  minSrcPosition
-@@ -2380,7 +2363,7 @@ class VkDisplayPlaneCapabilitiesKHR {
-     VkExtent2D                                  maxDstExtent
- }
- 
--@extension("VK_EXT_KHR_display")
-+@extension("VK_KHR_display")
- class VkDisplaySurfaceCreateInfoKHR {
-     VkStructureType                             sType
-     const void*                                 pNext
-@@ -2393,14 +2376,14 @@ class VkDisplaySurfaceCreateInfoKHR {
-     VkExtent2D                                  imageSize
- }
- 
--@extension("VK_EXT_KHR_display_swapchain")
-+@extension("VK_KHR_display_swapchain")
- class VkDisplaySwapchainCreateInfoKHR {
-     VkStructureType                             sType
-     const void*                                 pNext
-     const VkSwapchainCreateInfoKHR*             pNextSwapchainCreateInfo
- }
- 
--@extension("VK_EXT_KHR_display_swapchain")
-+@extension("VK_KHR_display_swapchain")
- class VkDisplayPresentInfoKHR {
-     VkStructureType                             sType
-     const void*                                 pNext
-@@ -3378,34 +3361,6 @@ cmd void vkDestroyShaderModule(
-     State.ShaderModules[shaderModule] = null
- }
- 
--@threadSafety("system")
--cmd VkResult vkCreateShader(
--        VkDevice                                    device,
--        const VkShaderCreateInfo*                   pCreateInfo,
--        const VkAllocationCallbacks*                pAllocator,
--        VkShader*                                   pShader) {
--    assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SHADER_CREATE_INFO)
--    deviceObject := GetDevice(device)
--
--    shader := ?
--    pShader[0] = shader
--    State.Shaders[shader] = new!ShaderObject(device: device)
--
--    return ?
--}
--
--@threadSafety("system")
--cmd void vkDestroyShader(
--        VkDevice                                    device,
--        VkShader                                    shader,
--        const VkAllocationCallbacks*                pAllocator) {
--    deviceObject := GetDevice(device)
--    shaderObject := GetShader(shader)
--    assert(shaderObject.device == device)
--
--    State.Shaders[shader] = null
--}
--
- 
- // Pipeline functions
- 
-@@ -4625,7 +4580,7 @@ cmd void vkCmdExecuteCommands(
-     }
- }
- 
--@extension("VK_EXT_KHR_surface")
-+@extension("VK_KHR_surface")
- cmd void vkDestroySurfaceKHR(
-         VkInstance                                  instance,
-         VkSurfaceKHR                                surface) {
-@@ -4636,7 +4591,7 @@ cmd void vkDestroySurfaceKHR(
-     State.Surfaces[surface] = null
- }
- 
--@extension("VK_EXT_KHR_surface")
-+@extension("VK_KHR_surface")
- cmd VkResult vkGetPhysicalDeviceSurfaceSupportKHR(
-         VkPhysicalDevice                            physicalDevice,
-         u32                                         queueFamilyIndex,
-@@ -4647,7 +4602,7 @@ cmd VkResult vkGetPhysicalDeviceSurfaceSupportKHR(
-     return ?
- }
- 
--@extension("VK_EXT_KHR_surface")
-+@extension("VK_KHR_surface")
- cmd VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
-         VkPhysicalDevice                            physicalDevice,
-         VkSurfaceKHR                                surface,
-@@ -4660,7 +4615,7 @@ cmd VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
-     return ?
- }
- 
--@extension("VK_EXT_KHR_surface")
-+@extension("VK_KHR_surface")
- cmd VkResult vkGetPhysicalDeviceSurfaceFormatsKHR(
-         VkPhysicalDevice                            physicalDevice,
-         VkSurfaceKHR                                surface,
-@@ -4680,7 +4635,7 @@ cmd VkResult vkGetPhysicalDeviceSurfaceFormatsKHR(
-     return ?
- }
- 
--@extension("VK_EXT_KHR_surface")
-+@extension("VK_KHR_surface")
- cmd VkResult vkGetPhysicalDeviceSurfacePresentModesKHR(
-         VkPhysicalDevice                            physicalDevice,
-         VkSurfaceKHR                                surface,
-@@ -4700,7 +4655,7 @@ cmd VkResult vkGetPhysicalDeviceSurfacePresentModesKHR(
-     return ?
- }
- 
--@extension("VK_EXT_KHR_swapchain")
-+@extension("VK_KHR_swapchain")
- cmd VkResult vkCreateSwapchainKHR(
-         VkDevice                                 device,
-         const VkSwapchainCreateInfoKHR*          pCreateInfo,
-@@ -4715,7 +4670,7 @@ cmd VkResult vkCreateSwapchainKHR(
-     return ?
- }
- 
--@extension("VK_EXT_KHR_swapchain")
-+@extension("VK_KHR_swapchain")
- cmd void vkDestroySwapchainKHR(
-         VkDevice                                 device,
-         VkSwapchainKHR                           swapchain) {
-@@ -4726,7 +4681,7 @@ cmd void vkDestroySwapchainKHR(
-     State.Swapchains[swapchain] = null
- }
- 
--@extension("VK_EXT_KHR_swapchain")
-+@extension("VK_KHR_swapchain")
- cmd VkResult vkGetSwapchainImagesKHR(
-         VkDevice                                 device,
-         VkSwapchainKHR                           swapchain,
-@@ -4747,7 +4702,7 @@ cmd VkResult vkGetSwapchainImagesKHR(
-     return ?
- }
- 
--@extension("VK_EXT_KHR_swapchain")
-+@extension("VK_KHR_swapchain")
- cmd VkResult vkAcquireNextImageKHR(
-         VkDevice                                 device,
-         VkSwapchainKHR                           swapchain,
-@@ -4764,7 +4719,7 @@ cmd VkResult vkAcquireNextImageKHR(
-     return ?
- }
- 
--@extension("VK_EXT_KHR_swapchain")
-+@extension("VK_KHR_swapchain")
- cmd VkResult vkQueuePresentKHR(
-         VkQueue                                  queue,
-         VkPresentInfoKHR*                        pPresentInfo) {
-@@ -4776,7 +4731,7 @@ cmd VkResult vkQueuePresentKHR(
-     return ?
- }
- 
--@extension("VK_EXT_KHR_display")
-+@extension("VK_KHR_display")
- cmd VkResult vkGetPhysicalDeviceDisplayPropertiesKHR(
-         VkPhysicalDevice                        physicalDevice,
-         u32*                                    pPropertyCount,
-@@ -4785,7 +4740,7 @@ cmd VkResult vkGetPhysicalDeviceDisplayPropertiesKHR(
-     return ?
- }
- 
--@extension("VK_EXT_KHR_display")
-+@extension("VK_KHR_display")
- cmd VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
-         VkPhysicalDevice                        physicalDevice,
-         u32*                                    pPropertyCount,
-@@ -4794,7 +4749,7 @@ cmd VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
-     return ?
- }
- 
--@extension("VK_EXT_KHR_display")
-+@extension("VK_KHR_display")
- cmd VkResult vkGetDisplayPlaneSupportedDisplaysKHR(
-         VkPhysicalDevice                        physicalDevice,
-         u32*                                    pPropertyCount,
-@@ -4803,7 +4758,7 @@ cmd VkResult vkGetDisplayPlaneSupportedDisplaysKHR(
-     return ?
- }
- 
--@extension("VK_EXT_KHR_display")
-+@extension("VK_KHR_display")
- cmd VkResult vkGetDisplayModePropertiesKHR(
-         VkPhysicalDevice                        physicalDevice,
-         VkDisplayKHR                            display,
-@@ -4813,7 +4768,7 @@ cmd VkResult vkGetDisplayModePropertiesKHR(
-     return ?
- }
- 
--@extension("VK_EXT_KHR_display")
-+@extension("VK_KHR_display")
- cmd VkResult vkCreateDisplayModeKHR(
-         VkPhysicalDevice                        physicalDevice,
-         VkDisplayKHR                            display,
-@@ -4823,7 +4778,7 @@ cmd VkResult vkCreateDisplayModeKHR(
-     return ?
- }
- 
--@extension("VK_EXT_KHR_display")
-+@extension("VK_KHR_display")
- cmd VkResult vkGetDisplayPlaneCapabilitiesKHR(
-         VkPhysicalDevice                        physicalDevice,
-         VkDisplayModeCreateInfoKHR              mode,
-@@ -4833,7 +4788,7 @@ cmd VkResult vkGetDisplayPlaneCapabilitiesKHR(
-     return ?
- }
- 
--@extension("VK_EXT_KHR_display")
-+@extension("VK_KHR_display")
- cmd VkResult vkCreateDisplayPlaneSurfaceKHR(
-         VkInstance                              instance,
-         const VkDisplaySurfaceCreateInfoKHR*    pCreateInfo,
-@@ -4841,7 +4796,7 @@ cmd VkResult vkCreateDisplayPlaneSurfaceKHR(
-     return ?
- }
- 
--@extension("VK_EXT_KHR_xlib_surface")
-+@extension("VK_KHR_xlib_surface")
- cmd VkResult vkCreateXlibSurfaceKHR(
-         VkInstance                              instance,
-         platform.Display*                       dpy,
-@@ -4851,7 +4806,7 @@ cmd VkResult vkCreateXlibSurfaceKHR(
-     return ?
- }
- 
--@extension("VK_EXT_KHR_xlib_surface")
-+@extension("VK_KHR_xlib_surface")
- cmd VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR(
-         VkPhysicalDevice                        physicalDevice,
-         u32                                     queueFamilyIndex,
-@@ -4861,7 +4816,7 @@ cmd VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR(
-     return ?
- }
- 
--@extension("VK_EXT_KHR_xcb_surface")
-+@extension("VK_KHR_xcb_surface")
- cmd VkResult vkCreateXCBSurfaceKHR(
-         VkInstance                              instance,
-         platform.xcb_connection_t*              connection,
-@@ -4871,7 +4826,7 @@ cmd VkResult vkCreateXCBSurfaceKHR(
-     return ?
- }
- 
--@extension("VK_EXT_KHR_xlib_surface")
-+@extension("VK_KHR_xlib_surface")
- cmd VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR(
-         VkPhysicalDevice                        physicalDevice,
-         u32                                     queueFamilyIndex,
-@@ -4881,7 +4836,7 @@ cmd VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR(
-     return ?
- }
- 
--@extension("VK_EXT_KHR_wayland_surface")
-+@extension("VK_KHR_wayland_surface")
- cmd VkResult vkCreateWaylandSurfaceKHR(
-         VkInstance                              instance,
-         platform.wl_display*                    display,
-@@ -4891,7 +4846,7 @@ cmd VkResult vkCreateWaylandSurfaceKHR(
-     return ?
- }
- 
--@extension("VK_EXT_KHR_wayland_surface")
-+@extension("VK_KHR_wayland_surface")
- cmd VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR(
-         VkPhysicalDevice                        physicalDevice,
-         u32                                     queueFamilyIndex,
-@@ -4900,7 +4855,7 @@ cmd VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR(
-     return ?
- }
- 
--@extension("VK_EXT_KHR_mir_surface")
-+@extension("VK_KHR_mir_surface")
- cmd VkResult vkCreateMirSurfaceKHR(
-         VkInstance                              instance,
-         platform.MirConnection*                 connection,
-@@ -4910,7 +4865,7 @@ cmd VkResult vkCreateMirSurfaceKHR(
-     return ?
- }
- 
--@extension("VK_EXT_KHR_mir_surface")
-+@extension("VK_KHR_mir_surface")
- cmd VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR(
-         VkPhysicalDevice                        physicalDevice,
-         u32                                     queueFamilyIndex,
-@@ -4919,7 +4874,7 @@ cmd VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR(
-     return ?
- }
- 
--@extension("VK_EXT_KHR_android_surface")
-+@extension("VK_KHR_android_surface")
- cmd VkResult vkCreateAndroidSurfaceKHR(
-         VkInstance                              instance,
-         platform.ANativeWindow*                 window
-@@ -4928,7 +4883,7 @@ cmd VkResult vkCreateAndroidSurfaceKHR(
-     return ?
- }
- 
--@extension("VK_EXT_KHR_win32_surface")
-+@extension("VK_KHR_win32_surface")
- cmd VkResult vkCreateWin32SurfaceKHR(
-         VkInstance                              instance,
-         platform.HINSTANCE                      hinstance,
-@@ -4938,7 +4893,7 @@ cmd VkResult vkCreateWin32SurfaceKHR(
-     return ?
- }
- 
--@extension("VK_EXT_KHR_win32_surface")
-+@extension("VK_KHR_win32_surface")
- cmd VkResult vkGetPhysicalDeviceWin32PresentationSupportKHR(
-         VkPhysicalDevice                        physicalDevice,
-         u32                                     queueFamilyIndex) {
-@@ -4975,7 +4930,6 @@ StateObject State
-     map!(VkImage,                    ref!ImageObject)                    Images
-     map!(VkImageView,                ref!ImageViewObject)                ImageViews
-     map!(VkShaderModule,             ref!ShaderModuleObject)             ShaderModules
--    map!(VkShader,                   ref!ShaderObject)                   Shaders
-     map!(VkPipeline,                 ref!PipelineObject)                 Pipelines
-     map!(VkPipelineLayout,           ref!PipelineLayoutObject)           PipelineLayouts
-     map!(VkSampler,                  ref!SamplerObject)                  Samplers
-@@ -5168,11 +5122,6 @@ macro ref!ImageViewObject GetImageView(VkImageView imageView) {
-     return State.ImageViews[imageView]
- }
- 
--macro ref!ShaderObject GetShader(VkShader shader) {
--    assert(shader in State.Shaders)
--    return State.Shaders[shader]
--}
--
- macro ref!ShaderModuleObject GetShaderModule(VkShaderModule shaderModule) {
-     assert(shaderModule in State.ShaderModules)
-     return State.ShaderModules[shaderModule]
-diff --git a/vulkan/include/vulkan/vk_android_native_buffer.h b/vulkan/include/vulkan/vk_android_native_buffer.h
-new file mode 100644
-index 0000000..f1f2676
---- /dev/null
-+++ b/vulkan/include/vulkan/vk_android_native_buffer.h
-@@ -0,0 +1,93 @@
-+/*
-+ * Copyright 2015 The Android Open Source Project
-+ *
-+ * Licensed under the Apache License, Version 2.0 (the "License");
-+ * you may not use this file except in compliance with the License.
-+ * You may obtain a copy of the License at
-+ *
-+ *      http://www.apache.org/licenses/LICENSE-2.0
-+ *
-+ * Unless required by applicable law or agreed to in writing, software
-+ * distributed under the License is distributed on an "AS IS" BASIS,
-+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+ * See the License for the specific language governing permissions and
-+ * limitations under the License.
-+ */
-+
-+#ifndef __VK_ANDROID_NATIVE_BUFFER_H__
-+#define __VK_ANDROID_NATIVE_BUFFER_H__
-+
-+#include <vulkan/vulkan.h>
-+#include <system/window.h>
-+
-+// TODO(jessehall): Get a real extension number officially assigned.
-+#define VK_ANDROID_NATIVE_BUFFER_EXTENSION_NUMBER 1024
-+#define VK_ANDROID_NATIVE_BUFFER_REVISION         1
-+#define VK_ANDROID_NATIVE_BUFFER_EXTENSION_NAME   "VK_ANDROID_native_buffer"
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+// See https://gitlab.khronos.org/vulkan/vulkan/blob/master/doc/proposals/proposed/NVIDIA/VulkanRegistryProposal.txt
-+// and Khronos bug 14154 for explanation of these magic numbers.
-+#define VK_ANDROID_NATIVE_BUFFER_ENUM(type,id)    ((type)((int)0xc0000000 - VK_ANDROID_NATIVE_BUFFER_EXTENSION_NUMBER * -1024 + (id)))
-+#define VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID   VK_ANDROID_NATIVE_BUFFER_ENUM(VkStructureType, 0)
-+
-+typedef struct {
-+    VkStructureType             sType; // must be VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID
-+    const void*                 pNext;
-+
-+    // Buffer handle and stride returned from gralloc alloc()
-+    buffer_handle_t             handle;
-+    int                         stride;
-+
-+    // Gralloc format and usage requested when the buffer was allocated.
-+    int                         format;
-+    int                         usage;
-+} VkNativeBufferANDROID;
-+
-+typedef VkResult (VKAPI *PFN_vkGetSwapchainGrallocUsageANDROID)(VkDevice device, VkFormat format, VkImageUsageFlags imageUsage, int* grallocUsage);
-+typedef VkResult (VKAPI *PFN_vkAcquireImageANDROID)(VkDevice device, VkImage image, int nativeFenceFd, VkSemaphore semaphore);
-+typedef VkResult (VKAPI *PFN_vkQueueSignalReleaseImageANDROID)(VkQueue queue, VkImage image, int* pNativeFenceFd);
-+// -- DEPRECATED --
-+typedef VkResult (VKAPI *PFN_vkImportNativeFenceANDROID)(VkDevice device, VkSemaphore semaphore, int nativeFenceFd);
-+typedef VkResult (VKAPI *PFN_vkQueueSignalNativeFenceANDROID)(VkQueue queue, int* pNativeFenceFd);
-+// ----------------
-+
-+#ifdef VK_PROTOTYPES
-+VkResult VKAPI vkGetSwapchainGrallocUsageANDROID(
-+    VkDevice            device,
-+    VkFormat            format,
-+    VkImageUsageFlags   imageUsage,
-+    int*                grallocUsage
-+);
-+VkResult VKAPI vkAcquireImageANDROID(
-+    VkDevice            device,
-+    VkImage             image,
-+    int                 nativeFenceFd,
-+    VkSemaphore         semaphore
-+);
-+VkResult VKAPI vkQueueSignalReleaseImageANDROID(
-+    VkQueue             queue,
-+    VkImage             image,
-+    int*                pNativeFenceFd
-+);
-+// -- DEPRECATED --
-+VkResult VKAPI vkImportNativeFenceANDROID(
-+    VkDevice            device,
-+    VkSemaphore         semaphore,
-+    int                 nativeFenceFd
-+);
-+VkResult VKAPI vkQueueSignalNativeFenceANDROID(
-+    VkQueue             queue,
-+    int*                pNativeFenceFd
-+);
-+// ----------------
-+#endif
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+#endif // __VK_ANDROID_NATIVE_BUFFER_H__
-diff --git a/vulkan/include/vulkan/vk_ext_android_native_buffer.h b/vulkan/include/vulkan/vk_ext_android_native_buffer.h
-deleted file mode 100644
-index f665164..0000000
---- a/vulkan/include/vulkan/vk_ext_android_native_buffer.h
-+++ /dev/null
-@@ -1,93 +0,0 @@
--/*
-- * Copyright 2015 The Android Open Source Project
-- *
-- * Licensed under the Apache License, Version 2.0 (the "License");
-- * you may not use this file except in compliance with the License.
-- * You may obtain a copy of the License at
-- *
-- *      http://www.apache.org/licenses/LICENSE-2.0
-- *
-- * Unless required by applicable law or agreed to in writing, software
-- * distributed under the License is distributed on an "AS IS" BASIS,
-- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- * See the License for the specific language governing permissions and
-- * limitations under the License.
-- */
--
--#ifndef __VK_EXT_ANDROID_NATIVE_BUFFER_H__
--#define __VK_EXT_ANDROID_NATIVE_BUFFER_H__
--
--#include <vulkan/vulkan.h>
--#include <system/window.h>
--
--// TODO(jessehall): Get a real extension number officially assigned.
--#define VK_EXT_ANDROID_NATIVE_BUFFER_EXTENSION_NUMBER 1024
--#define VK_EXT_ANDROID_NATIVE_BUFFER_REVISION         1
--#define VK_EXT_ANDROID_NATIVE_BUFFER_EXTENSION_NAME   "VK_EXT_ANDROID_gralloc"
--
--#ifdef __cplusplus
--extern "C" {
--#endif
--
--// See https://gitlab.khronos.org/vulkan/vulkan/blob/master/doc/proposals/proposed/NVIDIA/VulkanRegistryProposal.txt
--// and Khronos bug 14154 for explanation of these magic numbers.
--#define VK_EXT_ANDROID_NATIVE_BUFFER_ENUM(type,id)    ((type)((int)0xc0000000 - VK_EXT_ANDROID_NATIVE_BUFFER_EXTENSION_NUMBER * -1024 + (id)))
--#define VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID       VK_EXT_ANDROID_NATIVE_BUFFER_ENUM(VkStructureType, 0)
--
--typedef struct {
--    VkStructureType             sType; // must be VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID
--    const void*                 pNext;
--
--    // Buffer handle and stride returned from gralloc alloc()
--    buffer_handle_t             handle;
--    int                         stride;
--
--    // Gralloc format and usage requested when the buffer was allocated.
--    int                         format;
--    int                         usage;
--} VkNativeBufferANDROID;
--
--typedef VkResult (VKAPI *PFN_vkGetSwapchainGrallocUsageANDROID)(VkDevice device, VkFormat format, VkImageUsageFlags imageUsage, int* grallocUsage);
--typedef VkResult (VKAPI *PFN_vkAcquireImageANDROID)(VkDevice device, VkImage image, int nativeFenceFd, VkSemaphore semaphore);
--typedef VkResult (VKAPI *PFN_vkQueueSignalReleaseImageANDROID)(VkQueue queue, VkImage image, int* pNativeFenceFd);
--// -- DEPRECATED --
--typedef VkResult (VKAPI *PFN_vkImportNativeFenceANDROID)(VkDevice device, VkSemaphore semaphore, int nativeFenceFd);
--typedef VkResult (VKAPI *PFN_vkQueueSignalNativeFenceANDROID)(VkQueue queue, int* pNativeFenceFd);
--// ----------------
--
--#ifdef VK_PROTOTYPES
--VkResult VKAPI vkGetSwapchainGrallocUsageANDROID(
--    VkDevice            device,
--    VkFormat            format,
--    VkImageUsageFlags   imageUsage,
--    int*                grallocUsage
--);
--VkResult VKAPI vkAcquireImageANDROID(
--    VkDevice            device,
--    VkImage             image,
--    int                 nativeFenceFd,
--    VkSemaphore         semaphore
--);
--VkResult VKAPI vkQueueSignalReleaseImageANDROID(
--    VkQueue             queue,
--    VkImage             image,
--    int*                pNativeFenceFd
--);
--// -- DEPRECATED --
--VkResult VKAPI vkImportNativeFenceANDROID(
--    VkDevice            device,
--    VkSemaphore         semaphore,
--    int                 nativeFenceFd
--);
--VkResult VKAPI vkQueueSignalNativeFenceANDROID(
--    VkQueue             queue,
--    int*                pNativeFenceFd
--);
--// ----------------
--#endif
--
--#ifdef __cplusplus
--}
--#endif
--
--#endif // __VK_EXT_ANDROID_NATIVE_BUFFER_H__
-diff --git a/vulkan/include/vulkan/vulkan.h b/vulkan/include/vulkan/vulkan.h
-index 60583c2..2e66e27 100644
---- a/vulkan/include/vulkan/vulkan.h
-+++ b/vulkan/include/vulkan/vulkan.h
-@@ -41,11 +41,11 @@ extern "C" {
-     ((major << 22) | (minor << 12) | patch)
- 
- // Vulkan API version supported by this file
--#define VK_API_VERSION VK_MAKE_VERSION(0, 198, 0)
-+#define VK_API_VERSION VK_MAKE_VERSION(0, 200, 0)
- 
- 
- #define VK_NULL_HANDLE 0
--
-+        
- 
- 
- #define VK_DEFINE_HANDLE(object) typedef struct object##_T* object;
-@@ -56,7 +56,7 @@ extern "C" {
- #else
-         #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;
- #endif
--
-+        
- 
- 
- typedef uint32_t VkFlags;
-@@ -79,7 +79,6 @@ VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkQueryPool)
- VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferView)
- VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImageView)
- VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkShaderModule)
--VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkShader)
- VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineCache)
- VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineLayout)
- VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkRenderPass)
-@@ -108,7 +107,7 @@ VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCommandPool)
- #define VK_MAX_DESCRIPTION_SIZE           256
- 
- 
--typedef enum {
-+typedef enum VkResult {
-     VK_SUCCESS = 0,
-     VK_NOT_READY = 1,
-     VK_TIMEOUT = 2,
-@@ -130,7 +129,7 @@ typedef enum {
-     VK_RESULT_MAX_ENUM = 0x7FFFFFFF
- } VkResult;
- 
--typedef enum {
-+typedef enum VkStructureType {
-     VK_STRUCTURE_TYPE_APPLICATION_INFO = 0,
-     VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1,
-     VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2,
-@@ -148,57 +147,56 @@ typedef enum {
-     VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14,
-     VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15,
-     VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16,
--    VK_STRUCTURE_TYPE_SHADER_CREATE_INFO = 17,
--    VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 18,
--    VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 19,
--    VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 20,
--    VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 21,
--    VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 22,
--    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 23,
--    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 24,
--    VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 25,
--    VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 26,
--    VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 27,
--    VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 28,
--    VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 29,
--    VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 30,
--    VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 31,
--    VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 32,
--    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 33,
--    VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 34,
--    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOC_INFO = 35,
--    VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 36,
--    VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 37,
--    VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 38,
--    VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 39,
--    VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 40,
--    VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOC_INFO = 41,
--    VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42,
--    VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43,
--    VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44,
--    VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45,
--    VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46,
--    VK_STRUCTURE_TYPE_LAYER_INSTANCE_CREATE_INFO = 47,
--    VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO = 48,
-+    VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17,
-+    VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18,
-+    VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19,
-+    VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20,
-+    VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21,
-+    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22,
-+    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23,
-+    VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24,
-+    VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25,
-+    VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26,
-+    VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27,
-+    VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28,
-+    VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29,
-+    VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30,
-+    VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31,
-+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32,
-+    VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33,
-+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOC_INFO = 34,
-+    VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35,
-+    VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36,
-+    VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37,
-+    VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38,
-+    VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39,
-+    VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOC_INFO = 40,
-+    VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 41,
-+    VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 42,
-+    VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 43,
-+    VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 44,
-+    VK_STRUCTURE_TYPE_MEMORY_BARRIER = 45,
-+    VK_STRUCTURE_TYPE_LAYER_INSTANCE_CREATE_INFO = 46,
-+    VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO = 47,
-     VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO,
-     VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO,
-     VK_STRUCTURE_TYPE_RANGE_SIZE = (VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1),
-     VK_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF
- } VkStructureType;
- 
--typedef enum {
--    VK_SYSTEM_ALLOCATION_SCOPE_FUNCTION = 0,
-+typedef enum VkSystemAllocationScope {
-+    VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0,
-     VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1,
-     VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2,
-     VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3,
-     VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4,
--    VK_SYSTEM_ALLOCATION_SCOPE_BEGIN_RANGE = VK_SYSTEM_ALLOCATION_SCOPE_FUNCTION,
-+    VK_SYSTEM_ALLOCATION_SCOPE_BEGIN_RANGE = VK_SYSTEM_ALLOCATION_SCOPE_COMMAND,
-     VK_SYSTEM_ALLOCATION_SCOPE_END_RANGE = VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE,
--    VK_SYSTEM_ALLOCATION_SCOPE_RANGE_SIZE = (VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE - VK_SYSTEM_ALLOCATION_SCOPE_FUNCTION + 1),
-+    VK_SYSTEM_ALLOCATION_SCOPE_RANGE_SIZE = (VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE - VK_SYSTEM_ALLOCATION_SCOPE_COMMAND + 1),
-     VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 0x7FFFFFFF
- } VkSystemAllocationScope;
- 
--typedef enum {
-+typedef enum VkInternalAllocationType {
-     VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0,
-     VK_INTERNAL_ALLOCATION_TYPE_BEGIN_RANGE = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE,
-     VK_INTERNAL_ALLOCATION_TYPE_END_RANGE = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE,
-@@ -206,7 +204,7 @@ typedef enum {
-     VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 0x7FFFFFFF
- } VkInternalAllocationType;
- 
--typedef enum {
-+typedef enum VkFormat {
-     VK_FORMAT_UNDEFINED = 0,
-     VK_FORMAT_R4G4_UNORM = 1,
-     VK_FORMAT_R4G4_USCALED = 2,
-@@ -387,7 +385,7 @@ typedef enum {
-     VK_FORMAT_MAX_ENUM = 0x7FFFFFFF
- } VkFormat;
- 
--typedef enum {
-+typedef enum VkImageType {
-     VK_IMAGE_TYPE_1D = 0,
-     VK_IMAGE_TYPE_2D = 1,
-     VK_IMAGE_TYPE_3D = 2,
-@@ -397,7 +395,7 @@ typedef enum {
-     VK_IMAGE_TYPE_MAX_ENUM = 0x7FFFFFFF
- } VkImageType;
- 
--typedef enum {
-+typedef enum VkImageTiling {
-     VK_IMAGE_TILING_OPTIMAL = 0,
-     VK_IMAGE_TILING_LINEAR = 1,
-     VK_IMAGE_TILING_BEGIN_RANGE = VK_IMAGE_TILING_OPTIMAL,
-@@ -406,7 +404,7 @@ typedef enum {
-     VK_IMAGE_TILING_MAX_ENUM = 0x7FFFFFFF
- } VkImageTiling;
- 
--typedef enum {
-+typedef enum VkPhysicalDeviceType {
-     VK_PHYSICAL_DEVICE_TYPE_OTHER = 0,
-     VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1,
-     VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2,
-@@ -418,7 +416,7 @@ typedef enum {
-     VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 0x7FFFFFFF
- } VkPhysicalDeviceType;
- 
--typedef enum {
-+typedef enum VkQueryType {
-     VK_QUERY_TYPE_OCCLUSION = 0,
-     VK_QUERY_TYPE_PIPELINE_STATISTICS = 1,
-     VK_QUERY_TYPE_TIMESTAMP = 2,
-@@ -428,7 +426,7 @@ typedef enum {
-     VK_QUERY_TYPE_MAX_ENUM = 0x7FFFFFFF
- } VkQueryType;
- 
--typedef enum {
-+typedef enum VkSharingMode {
-     VK_SHARING_MODE_EXCLUSIVE = 0,
-     VK_SHARING_MODE_CONCURRENT = 1,
-     VK_SHARING_MODE_BEGIN_RANGE = VK_SHARING_MODE_EXCLUSIVE,
-@@ -437,7 +435,7 @@ typedef enum {
-     VK_SHARING_MODE_MAX_ENUM = 0x7FFFFFFF
- } VkSharingMode;
- 
--typedef enum {
-+typedef enum VkImageLayout {
-     VK_IMAGE_LAYOUT_UNDEFINED = 0,
-     VK_IMAGE_LAYOUT_GENERAL = 1,
-     VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2,
-@@ -453,7 +451,7 @@ typedef enum {
-     VK_IMAGE_LAYOUT_MAX_ENUM = 0x7FFFFFFF
- } VkImageLayout;
- 
--typedef enum {
-+typedef enum VkImageViewType {
-     VK_IMAGE_VIEW_TYPE_1D = 0,
-     VK_IMAGE_VIEW_TYPE_2D = 1,
-     VK_IMAGE_VIEW_TYPE_3D = 2,
-@@ -467,7 +465,7 @@ typedef enum {
-     VK_IMAGE_VIEW_TYPE_MAX_ENUM = 0x7FFFFFFF
- } VkImageViewType;
- 
--typedef enum {
-+typedef enum VkComponentSwizzle {
-     VK_COMPONENT_SWIZZLE_IDENTITY = 0,
-     VK_COMPONENT_SWIZZLE_ZERO = 1,
-     VK_COMPONENT_SWIZZLE_ONE = 2,
-@@ -481,7 +479,7 @@ typedef enum {
-     VK_COMPONENT_SWIZZLE_MAX_ENUM = 0x7FFFFFFF
- } VkComponentSwizzle;
- 
--typedef enum {
-+typedef enum VkVertexInputRate {
-     VK_VERTEX_INPUT_RATE_VERTEX = 0,
-     VK_VERTEX_INPUT_RATE_INSTANCE = 1,
-     VK_VERTEX_INPUT_RATE_BEGIN_RANGE = VK_VERTEX_INPUT_RATE_VERTEX,
-@@ -490,7 +488,7 @@ typedef enum {
-     VK_VERTEX_INPUT_RATE_MAX_ENUM = 0x7FFFFFFF
- } VkVertexInputRate;
- 
--typedef enum {
-+typedef enum VkPrimitiveTopology {
-     VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0,
-     VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1,
-     VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2,
-@@ -508,7 +506,7 @@ typedef enum {
-     VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 0x7FFFFFFF
- } VkPrimitiveTopology;
- 
--typedef enum {
-+typedef enum VkPolygonMode {
-     VK_POLYGON_MODE_FILL = 0,
-     VK_POLYGON_MODE_LINE = 1,
-     VK_POLYGON_MODE_POINT = 2,
-@@ -518,7 +516,7 @@ typedef enum {
-     VK_POLYGON_MODE_MAX_ENUM = 0x7FFFFFFF
- } VkPolygonMode;
- 
--typedef enum {
-+typedef enum VkFrontFace {
-     VK_FRONT_FACE_COUNTER_CLOCKWISE = 0,
-     VK_FRONT_FACE_CLOCKWISE = 1,
-     VK_FRONT_FACE_BEGIN_RANGE = VK_FRONT_FACE_COUNTER_CLOCKWISE,
-@@ -527,7 +525,7 @@ typedef enum {
-     VK_FRONT_FACE_MAX_ENUM = 0x7FFFFFFF
- } VkFrontFace;
- 
--typedef enum {
-+typedef enum VkCompareOp {
-     VK_COMPARE_OP_NEVER = 0,
-     VK_COMPARE_OP_LESS = 1,
-     VK_COMPARE_OP_EQUAL = 2,
-@@ -542,7 +540,7 @@ typedef enum {
-     VK_COMPARE_OP_MAX_ENUM = 0x7FFFFFFF
- } VkCompareOp;
- 
--typedef enum {
-+typedef enum VkStencilOp {
-     VK_STENCIL_OP_KEEP = 0,
-     VK_STENCIL_OP_ZERO = 1,
-     VK_STENCIL_OP_REPLACE = 2,
-@@ -557,7 +555,7 @@ typedef enum {
-     VK_STENCIL_OP_MAX_ENUM = 0x7FFFFFFF
- } VkStencilOp;
- 
--typedef enum {
-+typedef enum VkLogicOp {
-     VK_LOGIC_OP_CLEAR = 0,
-     VK_LOGIC_OP_AND = 1,
-     VK_LOGIC_OP_AND_REVERSE = 2,
-@@ -580,7 +578,7 @@ typedef enum {
-     VK_LOGIC_OP_MAX_ENUM = 0x7FFFFFFF
- } VkLogicOp;
- 
--typedef enum {
-+typedef enum VkBlendFactor {
-     VK_BLEND_FACTOR_ZERO = 0,
-     VK_BLEND_FACTOR_ONE = 1,
-     VK_BLEND_FACTOR_SRC_COLOR = 2,
-@@ -606,7 +604,7 @@ typedef enum {
-     VK_BLEND_FACTOR_MAX_ENUM = 0x7FFFFFFF
- } VkBlendFactor;
- 
--typedef enum {
-+typedef enum VkBlendOp {
-     VK_BLEND_OP_ADD = 0,
-     VK_BLEND_OP_SUBTRACT = 1,
-     VK_BLEND_OP_REVERSE_SUBTRACT = 2,
-@@ -618,7 +616,7 @@ typedef enum {
-     VK_BLEND_OP_MAX_ENUM = 0x7FFFFFFF
- } VkBlendOp;
- 
--typedef enum {
-+typedef enum VkDynamicState {
-     VK_DYNAMIC_STATE_VIEWPORT = 0,
-     VK_DYNAMIC_STATE_SCISSOR = 1,
-     VK_DYNAMIC_STATE_LINE_WIDTH = 2,
-@@ -634,7 +632,7 @@ typedef enum {
-     VK_DYNAMIC_STATE_MAX_ENUM = 0x7FFFFFFF
- } VkDynamicState;
- 
--typedef enum {
-+typedef enum VkFilter {
-     VK_FILTER_NEAREST = 0,
-     VK_FILTER_LINEAR = 1,
-     VK_FILTER_BEGIN_RANGE = VK_FILTER_NEAREST,
-@@ -643,7 +641,7 @@ typedef enum {
-     VK_FILTER_MAX_ENUM = 0x7FFFFFFF
- } VkFilter;
- 
--typedef enum {
-+typedef enum VkSamplerMipmapMode {
-     VK_SAMPLER_MIPMAP_MODE_BASE = 0,
-     VK_SAMPLER_MIPMAP_MODE_NEAREST = 1,
-     VK_SAMPLER_MIPMAP_MODE_LINEAR = 2,
-@@ -653,7 +651,7 @@ typedef enum {
-     VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 0x7FFFFFFF
- } VkSamplerMipmapMode;
- 
--typedef enum {
-+typedef enum VkSamplerAddressMode {
-     VK_SAMPLER_ADDRESS_MODE_REPEAT = 0,
-     VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1,
-     VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2,
-@@ -665,7 +663,7 @@ typedef enum {
-     VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 0x7FFFFFFF
- } VkSamplerAddressMode;
- 
--typedef enum {
-+typedef enum VkBorderColor {
-     VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0,
-     VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1,
-     VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2,
-@@ -678,7 +676,7 @@ typedef enum {
-     VK_BORDER_COLOR_MAX_ENUM = 0x7FFFFFFF
- } VkBorderColor;
- 
--typedef enum {
-+typedef enum VkDescriptorType {
-     VK_DESCRIPTOR_TYPE_SAMPLER = 0,
-     VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1,
-     VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2,
-@@ -696,7 +694,7 @@ typedef enum {
-     VK_DESCRIPTOR_TYPE_MAX_ENUM = 0x7FFFFFFF
- } VkDescriptorType;
- 
--typedef enum {
-+typedef enum VkAttachmentLoadOp {
-     VK_ATTACHMENT_LOAD_OP_LOAD = 0,
-     VK_ATTACHMENT_LOAD_OP_CLEAR = 1,
-     VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2,
-@@ -706,7 +704,7 @@ typedef enum {
-     VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 0x7FFFFFFF
- } VkAttachmentLoadOp;
- 
--typedef enum {
-+typedef enum VkAttachmentStoreOp {
-     VK_ATTACHMENT_STORE_OP_STORE = 0,
-     VK_ATTACHMENT_STORE_OP_DONT_CARE = 1,
-     VK_ATTACHMENT_STORE_OP_BEGIN_RANGE = VK_ATTACHMENT_STORE_OP_STORE,
-@@ -715,7 +713,7 @@ typedef enum {
-     VK_ATTACHMENT_STORE_OP_MAX_ENUM = 0x7FFFFFFF
- } VkAttachmentStoreOp;
- 
--typedef enum {
-+typedef enum VkPipelineBindPoint {
-     VK_PIPELINE_BIND_POINT_GRAPHICS = 0,
-     VK_PIPELINE_BIND_POINT_COMPUTE = 1,
-     VK_PIPELINE_BIND_POINT_BEGIN_RANGE = VK_PIPELINE_BIND_POINT_GRAPHICS,
-@@ -724,7 +722,7 @@ typedef enum {
-     VK_PIPELINE_BIND_POINT_MAX_ENUM = 0x7FFFFFFF
- } VkPipelineBindPoint;
- 
--typedef enum {
-+typedef enum VkCommandBufferLevel {
-     VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0,
-     VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1,
-     VK_COMMAND_BUFFER_LEVEL_BEGIN_RANGE = VK_COMMAND_BUFFER_LEVEL_PRIMARY,
-@@ -733,7 +731,7 @@ typedef enum {
-     VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 0x7FFFFFFF
- } VkCommandBufferLevel;
- 
--typedef enum {
-+typedef enum VkIndexType {
-     VK_INDEX_TYPE_UINT16 = 0,
-     VK_INDEX_TYPE_UINT32 = 1,
-     VK_INDEX_TYPE_BEGIN_RANGE = VK_INDEX_TYPE_UINT16,
-@@ -742,7 +740,7 @@ typedef enum {
-     VK_INDEX_TYPE_MAX_ENUM = 0x7FFFFFFF
- } VkIndexType;
- 
--typedef enum {
-+typedef enum VkSubpassContents {
-     VK_SUBPASS_CONTENTS_INLINE = 0,
-     VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1,
-     VK_SUBPASS_CONTENTS_BEGIN_RANGE = VK_SUBPASS_CONTENTS_INLINE,
-@@ -753,7 +751,7 @@ typedef enum {
- 
- typedef VkFlags VkInstanceCreateFlags;
- 
--typedef enum {
-+typedef enum VkFormatFeatureFlagBits {
-     VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001,
-     VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 0x00000002,
-     VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004,
-@@ -769,7 +767,7 @@ typedef enum {
- } VkFormatFeatureFlagBits;
- typedef VkFlags VkFormatFeatureFlags;
- 
--typedef enum {
-+typedef enum VkImageUsageFlagBits {
-     VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 0x00000001,
-     VK_IMAGE_USAGE_TRANSFER_DST_BIT = 0x00000002,
-     VK_IMAGE_USAGE_SAMPLED_BIT = 0x00000004,
-@@ -781,7 +779,7 @@ typedef enum {
- } VkImageUsageFlagBits;
- typedef VkFlags VkImageUsageFlags;
- 
--typedef enum {
-+typedef enum VkImageCreateFlagBits {
-     VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 0x00000001,
-     VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
-     VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
-@@ -790,7 +788,7 @@ typedef enum {
- } VkImageCreateFlagBits;
- typedef VkFlags VkImageCreateFlags;
- 
--typedef enum {
-+typedef enum VkSampleCountFlagBits {
-     VK_SAMPLE_COUNT_1_BIT = 0x00000001,
-     VK_SAMPLE_COUNT_2_BIT = 0x00000002,
-     VK_SAMPLE_COUNT_4_BIT = 0x00000004,
-@@ -801,7 +799,7 @@ typedef enum {
- } VkSampleCountFlagBits;
- typedef VkFlags VkSampleCountFlags;
- 
--typedef enum {
-+typedef enum VkQueueFlagBits {
-     VK_QUEUE_GRAPHICS_BIT = 0x00000001,
-     VK_QUEUE_COMPUTE_BIT = 0x00000002,
-     VK_QUEUE_TRANSFER_BIT = 0x00000004,
-@@ -809,7 +807,7 @@ typedef enum {
- } VkQueueFlagBits;
- typedef VkFlags VkQueueFlags;
- 
--typedef enum {
-+typedef enum VkMemoryPropertyFlagBits {
-     VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0x00000001,
-     VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000002,
-     VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 0x00000004,
-@@ -818,7 +816,7 @@ typedef enum {
- } VkMemoryPropertyFlagBits;
- typedef VkFlags VkMemoryPropertyFlags;
- 
--typedef enum {
-+typedef enum VkMemoryHeapFlagBits {
-     VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001,
- } VkMemoryHeapFlagBits;
- typedef VkFlags VkMemoryHeapFlags;
-@@ -826,14 +824,15 @@ typedef VkFlags VkDeviceCreateFlags;
- typedef VkFlags VkDeviceQueueCreateFlags;
- typedef VkFlags VkMemoryMapFlags;
- 
--typedef enum {
-+typedef enum VkImageAspectFlagBits {
-     VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001,
-     VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002,
-     VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004,
-     VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008,
- } VkImageAspectFlagBits;
-+typedef VkFlags VkImageAspectFlags;
- 
--typedef enum {
-+typedef enum VkSparseImageFormatFlagBits {
-     VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0x00000001,
-     VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 0x00000002,
-     VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 0x00000004,
-@@ -841,7 +840,7 @@ typedef enum {
- typedef VkFlags VkSparseImageFormatFlags;
- typedef VkFlags VkSparseMemoryBindFlags;
- 
--typedef enum {
-+typedef enum VkFenceCreateFlagBits {
-     VK_FENCE_CREATE_SIGNALED_BIT = 0x00000001,
- } VkFenceCreateFlagBits;
- typedef VkFlags VkFenceCreateFlags;
-@@ -849,7 +848,7 @@ typedef VkFlags VkSemaphoreCreateFlags;
- typedef VkFlags VkEventCreateFlags;
- typedef VkFlags VkQueryPoolCreateFlags;
- 
--typedef enum {
-+typedef enum VkQueryPipelineStatisticFlagBits {
-     VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 0x00000001,
-     VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 0x00000002,
-     VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 0x00000004,
-@@ -864,7 +863,7 @@ typedef enum {
- } VkQueryPipelineStatisticFlagBits;
- typedef VkFlags VkQueryPipelineStatisticFlags;
- 
--typedef enum {
-+typedef enum VkQueryResultFlagBits {
-     VK_QUERY_RESULT_DEFAULT = 0,
-     VK_QUERY_RESULT_64_BIT = 0x00000001,
-     VK_QUERY_RESULT_WAIT_BIT = 0x00000002,
-@@ -873,14 +872,14 @@ typedef enum {
- } VkQueryResultFlagBits;
- typedef VkFlags VkQueryResultFlags;
- 
--typedef enum {
-+typedef enum VkBufferCreateFlagBits {
-     VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 0x00000001,
-     VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
-     VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
- } VkBufferCreateFlagBits;
- typedef VkFlags VkBufferCreateFlags;
- 
--typedef enum {
-+typedef enum VkBufferUsageFlagBits {
-     VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 0x00000001,
-     VK_BUFFER_USAGE_TRANSFER_DST_BIT = 0x00000002,
-     VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004,
-@@ -894,11 +893,18 @@ typedef enum {
- typedef VkFlags VkBufferUsageFlags;
- typedef VkFlags VkBufferViewCreateFlags;
- typedef VkFlags VkImageViewCreateFlags;
--typedef VkFlags VkImageAspectFlags;
- typedef VkFlags VkShaderModuleCreateFlags;
--typedef VkFlags VkShaderCreateFlags;
-+typedef VkFlags VkPipelineCacheCreateFlags;
- 
--typedef enum {
-+typedef enum VkPipelineCreateFlagBits {
-+    VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001,
-+    VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002,
-+    VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004,
-+} VkPipelineCreateFlagBits;
-+typedef VkFlags VkPipelineCreateFlags;
-+typedef VkFlags VkPipelineShaderStageCreateFlags;
-+
-+typedef enum VkShaderStageFlagBits {
-     VK_SHADER_STAGE_VERTEX_BIT = 0x00000001,
-     VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 0x00000002,
-     VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 0x00000004,
-@@ -908,22 +914,13 @@ typedef enum {
-     VK_SHADER_STAGE_ALL_GRAPHICS = 0x1F,
-     VK_SHADER_STAGE_ALL = 0x7FFFFFFF,
- } VkShaderStageFlagBits;
--typedef VkFlags VkPipelineCacheCreateFlags;
--
--typedef enum {
--    VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001,
--    VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002,
--    VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004,
--} VkPipelineCreateFlagBits;
--typedef VkFlags VkPipelineCreateFlags;
--typedef VkFlags VkPipelineShaderStageCreateFlags;
- typedef VkFlags VkPipelineVertexInputStateCreateFlags;
- typedef VkFlags VkPipelineInputAssemblyStateCreateFlags;
- typedef VkFlags VkPipelineTesselationStateCreateFlags;
- typedef VkFlags VkPipelineViewportStateCreateFlags;
- typedef VkFlags VkPipelineRasterizationStateCreateFlags;
- 
--typedef enum {
-+typedef enum VkCullModeFlagBits {
-     VK_CULL_MODE_NONE = 0,
-     VK_CULL_MODE_FRONT_BIT = 0x00000001,
-     VK_CULL_MODE_BACK_BIT = 0x00000002,
-@@ -934,7 +931,7 @@ typedef VkFlags VkPipelineMultisampleStateCreateFlags;
- typedef VkFlags VkPipelineDepthStencilStateCreateFlags;
- typedef VkFlags VkPipelineColorBlendStateCreateFlags;
- 
--typedef enum {
-+typedef enum VkColorComponentFlagBits {
-     VK_COLOR_COMPONENT_R_BIT = 0x00000001,
-     VK_COLOR_COMPONENT_G_BIT = 0x00000002,
-     VK_COLOR_COMPONENT_B_BIT = 0x00000004,
-@@ -947,7 +944,7 @@ typedef VkFlags VkShaderStageFlags;
- typedef VkFlags VkSamplerCreateFlags;
- typedef VkFlags VkDescriptorSetLayoutCreateFlags;
- 
--typedef enum {
-+typedef enum VkDescriptorPoolCreateFlagBits {
-     VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001,
- } VkDescriptorPoolCreateFlagBits;
- typedef VkFlags VkDescriptorPoolCreateFlags;
-@@ -955,13 +952,13 @@ typedef VkFlags VkDescriptorPoolResetFlags;
- typedef VkFlags VkFramebufferCreateFlags;
- typedef VkFlags VkRenderPassCreateFlags;
- 
--typedef enum {
-+typedef enum VkAttachmentDescriptionFlagBits {
-     VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 0x00000001,
- } VkAttachmentDescriptionFlagBits;
- typedef VkFlags VkAttachmentDescriptionFlags;
- typedef VkFlags VkSubpassDescriptionFlags;
- 
--typedef enum {
-+typedef enum VkPipelineStageFlagBits {
-     VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 0x00000001,
-     VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 0x00000002,
-     VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 0x00000004,
-@@ -981,58 +978,56 @@ typedef enum {
- } VkPipelineStageFlagBits;
- typedef VkFlags VkPipelineStageFlags;
- 
--typedef enum {
--    VK_MEMORY_OUTPUT_HOST_WRITE_BIT = 0x00000001,
--    VK_MEMORY_OUTPUT_SHADER_WRITE_BIT = 0x00000002,
--    VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT = 0x00000004,
--    VK_MEMORY_OUTPUT_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000008,
--    VK_MEMORY_OUTPUT_TRANSFER_BIT = 0x00000010,
--} VkMemoryOutputFlagBits;
--typedef VkFlags VkMemoryOutputFlags;
--
--typedef enum {
--    VK_MEMORY_INPUT_HOST_READ_BIT = 0x00000001,
--    VK_MEMORY_INPUT_INDIRECT_COMMAND_BIT = 0x00000002,
--    VK_MEMORY_INPUT_INDEX_FETCH_BIT = 0x00000004,
--    VK_MEMORY_INPUT_VERTEX_ATTRIBUTE_FETCH_BIT = 0x00000008,
--    VK_MEMORY_INPUT_UNIFORM_READ_BIT = 0x00000010,
--    VK_MEMORY_INPUT_SHADER_READ_BIT = 0x00000020,
--    VK_MEMORY_INPUT_COLOR_ATTACHMENT_BIT = 0x00000040,
--    VK_MEMORY_INPUT_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000080,
--    VK_MEMORY_INPUT_INPUT_ATTACHMENT_BIT = 0x00000100,
--    VK_MEMORY_INPUT_TRANSFER_BIT = 0x00000200,
--} VkMemoryInputFlagBits;
--typedef VkFlags VkMemoryInputFlags;
--
--typedef enum {
-+typedef enum VkAccessFlagBits {
-+    VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 0x00000001,
-+    VK_ACCESS_INDEX_READ_BIT = 0x00000002,
-+    VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004,
-+    VK_ACCESS_UNIFORM_READ_BIT = 0x00000008,
-+    VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 0x00000010,
-+    VK_ACCESS_SHADER_READ_BIT = 0x00000020,
-+    VK_ACCESS_SHADER_WRITE_BIT = 0x00000040,
-+    VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 0x00000080,
-+    VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100,
-+    VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200,
-+    VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400,
-+    VK_ACCESS_TRANSFER_READ_BIT = 0x00000800,
-+    VK_ACCESS_TRANSFER_WRITE_BIT = 0x00001000,
-+    VK_ACCESS_HOST_READ_BIT = 0x00002000,
-+    VK_ACCESS_HOST_WRITE_BIT = 0x00004000,
-+    VK_ACCESS_MEMORY_READ_BIT = 0x00008000,
-+    VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000,
-+} VkAccessFlagBits;
-+typedef VkFlags VkAccessFlags;
-+
-+typedef enum VkDependencyFlagBits {
-     VK_DEPENDENCY_BY_REGION_BIT = 0x00000001,
- } VkDependencyFlagBits;
- typedef VkFlags VkDependencyFlags;
- 
--typedef enum {
-+typedef enum VkCommandPoolCreateFlagBits {
-     VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 0x00000001,
-     VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002,
- } VkCommandPoolCreateFlagBits;
- typedef VkFlags VkCommandPoolCreateFlags;
- 
--typedef enum {
-+typedef enum VkCommandPoolResetFlagBits {
-     VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
- } VkCommandPoolResetFlagBits;
- typedef VkFlags VkCommandPoolResetFlags;
- 
--typedef enum {
-+typedef enum VkCommandBufferUsageFlagBits {
-     VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0x00000001,
-     VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 0x00000002,
-     VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 0x00000004,
- } VkCommandBufferUsageFlagBits;
- typedef VkFlags VkCommandBufferUsageFlags;
- 
--typedef enum {
-+typedef enum VkCommandBufferResetFlagBits {
-     VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
- } VkCommandBufferResetFlagBits;
- typedef VkFlags VkCommandBufferResetFlags;
- 
--typedef enum {
-+typedef enum VkStencilFaceFlagBits {
-     VK_STENCIL_FACE_NONE = 0,
-     VK_STENCIL_FACE_FRONT_BIT = 0x00000001,
-     VK_STENCIL_FACE_BACK_BIT = 0x00000002,
-@@ -1040,43 +1035,43 @@ typedef enum {
- } VkStencilFaceFlagBits;
- typedef VkFlags VkStencilFaceFlags;
- 
--typedef enum {
-+typedef enum VkQueryControlFlagBits {
-     VK_QUERY_CONTROL_PRECISE_BIT = 0x00000001,
- } VkQueryControlFlagBits;
- typedef VkFlags VkQueryControlFlags;
- 
- typedef void* (VKAPI *PFN_vkAllocationFunction)(
--    void*              pUserData,
--    size_t             size,
--    size_t             alignment,
--    VkSystemAllocationScope allocationScope);
-+    void*                                       pUserData,
-+    size_t                                      size,
-+    size_t                                      alignment,
-+    VkSystemAllocationScope                     allocationScope);
- 
- typedef void* (VKAPI *PFN_vkReallocationFunction)(
--    void*              pUserData,
--    void*              pOriginal,
--    size_t             size,
--    size_t             alignment,
--    VkSystemAllocationScope allocationScope);
-+    void*                                       pUserData,
-+    void*                                       pOriginal,
-+    size_t                                      size,
-+    size_t                                      alignment,
-+    VkSystemAllocationScope                     allocationScope);
- 
- typedef void (VKAPI *PFN_vkFreeFunction)(
--    void*                           pUserData,
--    void*                           pMemory);
-+    void*                                       pUserData,
-+    void*                                       pMemory);
- 
- typedef void (VKAPI *PFN_vkInternalAllocationNotification)(
--    void*              pUserData,
--    size_t                           size,
--    VkInternalAllocationType              allocationType,
--    VkSystemAllocationScope               allocationScope);
-+    void*                                       pUserData,
-+    size_t                                      size,
-+    VkInternalAllocationType                    allocationType,
-+    VkSystemAllocationScope                     allocationScope);
- 
- typedef void (VKAPI *PFN_vkInternalFreeNotification)(
--    void*              pUserData,
--    size_t                           size,
--    VkInternalAllocationType              allocationType,
--    VkSystemAllocationScope               allocationScope);
-+    void*                                       pUserData,
-+    size_t                                      size,
-+    VkInternalAllocationType                    allocationType,
-+    VkSystemAllocationScope                     allocationScope);
- 
- typedef void (VKAPI *PFN_vkVoidFunction)(void);
- 
--typedef struct {
-+typedef struct VkApplicationInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     const char*                                 pApplicationName;
-@@ -1086,7 +1081,7 @@ typedef struct {
-     uint32_t                                    apiVersion;
- } VkApplicationInfo;
- 
--typedef struct {
-+typedef struct VkInstanceCreateInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkInstanceCreateFlags                       flags;
-@@ -1097,7 +1092,7 @@ typedef struct {
-     const char*const*                           ppEnabledExtensionNames;
- } VkInstanceCreateInfo;
- 
--typedef struct {
-+typedef struct VkAllocationCallbacks {
-     void*                                       pUserData;
-     PFN_vkAllocationFunction                    pfnAllocation;
-     PFN_vkReallocationFunction                  pfnReallocation;
-@@ -1106,7 +1101,7 @@ typedef struct {
-     PFN_vkInternalFreeNotification              pfnInternalFree;
- } VkAllocationCallbacks;
- 
--typedef struct {
-+typedef struct VkPhysicalDeviceFeatures {
-     VkBool32                                    robustBufferAccess;
-     VkBool32                                    fullDrawIndexUint32;
-     VkBool32                                    imageCubeArray;
-@@ -1162,19 +1157,19 @@ typedef struct {
-     VkBool32                                    variableMultisampleRate;
- } VkPhysicalDeviceFeatures;
- 
--typedef struct {
-+typedef struct VkFormatProperties {
-     VkFormatFeatureFlags                        linearTilingFeatures;
-     VkFormatFeatureFlags                        optimalTilingFeatures;
-     VkFormatFeatureFlags                        bufferFeatures;
- } VkFormatProperties;
- 
--typedef struct {
-+typedef struct VkExtent3D {
-     int32_t                                     width;
-     int32_t                                     height;
-     int32_t                                     depth;
- } VkExtent3D;
- 
--typedef struct {
-+typedef struct VkImageFormatProperties {
-     VkExtent3D                                  maxExtent;
-     uint32_t                                    maxMipLevels;
-     uint32_t                                    maxArrayLayers;
-@@ -1182,7 +1177,7 @@ typedef struct {
-     VkDeviceSize                                maxResourceSize;
- } VkImageFormatProperties;
- 
--typedef struct {
-+typedef struct VkPhysicalDeviceLimits {
-     uint32_t                                    maxImageDimension1D;
-     uint32_t                                    maxImageDimension2D;
-     uint32_t                                    maxImageDimension3D;
-@@ -1284,7 +1279,7 @@ typedef struct {
-     VkDeviceSize                                optimalBufferCopyRowPitchAlignment;
- } VkPhysicalDeviceLimits;
- 
--typedef struct {
-+typedef struct VkPhysicalDeviceSparseProperties {
-     VkBool32                                    residencyStandard2DBlockShape;
-     VkBool32                                    residencyStandard2DMultisampleBlockShape;
-     VkBool32                                    residencyStandard3DBlockShape;
-@@ -1292,7 +1287,7 @@ typedef struct {
-     VkBool32                                    residencyNonResidentStrict;
- } VkPhysicalDeviceSparseProperties;
- 
--typedef struct {
-+typedef struct VkPhysicalDeviceProperties {
-     uint32_t                                    apiVersion;
-     uint32_t                                    driverVersion;
-     uint32_t                                    vendorID;
-@@ -1304,31 +1299,31 @@ typedef struct {
-     VkPhysicalDeviceSparseProperties            sparseProperties;
- } VkPhysicalDeviceProperties;
- 
--typedef struct {
-+typedef struct VkQueueFamilyProperties {
-     VkQueueFlags                                queueFlags;
-     uint32_t                                    queueCount;
-     uint32_t                                    timestampValidBits;
-     VkExtent3D                                  minImageTransferGranularity;
- } VkQueueFamilyProperties;
- 
--typedef struct {
-+typedef struct VkMemoryType {
-     VkMemoryPropertyFlags                       propertyFlags;
-     uint32_t                                    heapIndex;
- } VkMemoryType;
- 
--typedef struct {
-+typedef struct VkMemoryHeap {
-     VkDeviceSize                                size;
-     VkMemoryHeapFlags                           flags;
- } VkMemoryHeap;
- 
--typedef struct {
-+typedef struct VkPhysicalDeviceMemoryProperties {
-     uint32_t                                    memoryTypeCount;
-     VkMemoryType                                memoryTypes[VK_MAX_MEMORY_TYPES];
-     uint32_t                                    memoryHeapCount;
-     VkMemoryHeap                                memoryHeaps[VK_MAX_MEMORY_HEAPS];
- } VkPhysicalDeviceMemoryProperties;
- 
--typedef struct {
-+typedef struct VkDeviceQueueCreateInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkDeviceQueueCreateFlags                    flags;
-@@ -1337,7 +1332,7 @@ typedef struct {
-     const float*                                pQueuePriorities;
- } VkDeviceQueueCreateInfo;
- 
--typedef struct {
-+typedef struct VkDeviceCreateInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkDeviceCreateFlags                         flags;
-@@ -1350,19 +1345,19 @@ typedef struct {
-     const VkPhysicalDeviceFeatures*             pEnabledFeatures;
- } VkDeviceCreateInfo;
- 
--typedef struct {
-+typedef struct VkExtensionProperties {
-     char                                        extensionName[VK_MAX_EXTENSION_NAME_SIZE];
-     uint32_t                                    specVersion;
- } VkExtensionProperties;
- 
--typedef struct {
-+typedef struct VkLayerProperties {
-     char                                        layerName[VK_MAX_EXTENSION_NAME_SIZE];
-     uint32_t                                    specVersion;
-     uint32_t                                    implementationVersion;
-     char                                        description[VK_MAX_DESCRIPTION_SIZE];
- } VkLayerProperties;
- 
--typedef struct {
-+typedef struct VkSubmitInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     uint32_t                                    waitSemaphoreCount;
-@@ -1373,14 +1368,14 @@ typedef struct {
-     const VkSemaphore*                          pSignalSemaphores;
- } VkSubmitInfo;
- 
--typedef struct {
-+typedef struct VkMemoryAllocateInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkDeviceSize                                allocationSize;
-     uint32_t                                    memoryTypeIndex;
- } VkMemoryAllocateInfo;
- 
--typedef struct {
-+typedef struct VkMappedMemoryRange {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkDeviceMemory                              memory;
-@@ -1388,19 +1383,19 @@ typedef struct {
-     VkDeviceSize                                size;
- } VkMappedMemoryRange;
- 
--typedef struct {
-+typedef struct VkMemoryRequirements {
-     VkDeviceSize                                size;
-     VkDeviceSize                                alignment;
-     uint32_t                                    memoryTypeBits;
- } VkMemoryRequirements;
- 
--typedef struct {
--    VkImageAspectFlagBits                       aspect;
-+typedef struct VkSparseImageFormatProperties {
-+    VkImageAspectFlags                          aspectMask;
-     VkExtent3D                                  imageGranularity;
-     VkSparseImageFormatFlags                    flags;
- } VkSparseImageFormatProperties;
- 
--typedef struct {
-+typedef struct VkSparseImageMemoryRequirements {
-     VkSparseImageFormatProperties               formatProperties;
-     uint32_t                                    imageMipTailStartLod;
-     VkDeviceSize                                imageMipTailSize;
-@@ -1408,7 +1403,7 @@ typedef struct {
-     VkDeviceSize                                imageMipTailStride;
- } VkSparseImageMemoryRequirements;
- 
--typedef struct {
-+typedef struct VkSparseMemoryBind {
-     VkDeviceSize                                resourceOffset;
-     VkDeviceSize                                size;
-     VkDeviceMemory                              memory;
-@@ -1416,31 +1411,31 @@ typedef struct {
-     VkSparseMemoryBindFlags                     flags;
- } VkSparseMemoryBind;
- 
--typedef struct {
-+typedef struct VkSparseBufferMemoryBindInfo {
-     VkBuffer                                    buffer;
-     uint32_t                                    bindCount;
-     const VkSparseMemoryBind*                   pBinds;
- } VkSparseBufferMemoryBindInfo;
- 
--typedef struct {
-+typedef struct VkSparseImageOpaqueMemoryBindInfo {
-     VkImage                                     image;
-     uint32_t                                    bindCount;
-     const VkSparseMemoryBind*                   pBinds;
- } VkSparseImageOpaqueMemoryBindInfo;
- 
--typedef struct {
--    VkImageAspectFlagBits                       aspect;
-+typedef struct VkImageSubresource {
-+    VkImageAspectFlags                          aspectMask;
-     uint32_t                                    mipLevel;
-     uint32_t                                    arrayLayer;
- } VkImageSubresource;
- 
--typedef struct {
-+typedef struct VkOffset3D {
-     int32_t                                     x;
-     int32_t                                     y;
-     int32_t                                     z;
- } VkOffset3D;
- 
--typedef struct {
-+typedef struct VkSparseImageMemoryBind {
-     VkImageSubresource                          subresource;
-     VkOffset3D                                  offset;
-     VkExtent3D                                  extent;
-@@ -1449,13 +1444,13 @@ typedef struct {
-     VkSparseMemoryBindFlags                     flags;
- } VkSparseImageMemoryBind;
- 
--typedef struct {
-+typedef struct VkSparseImageMemoryBindInfo {
-     VkImage                                     image;
-     uint32_t                                    bindCount;
-     const VkSparseImageMemoryBind*              pBinds;
- } VkSparseImageMemoryBindInfo;
- 
--typedef struct {
-+typedef struct VkBindSparseInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     uint32_t                                    waitSemaphoreCount;
-@@ -1470,25 +1465,25 @@ typedef struct {
-     const VkSemaphore*                          pSignalSemaphores;
- } VkBindSparseInfo;
- 
--typedef struct {
-+typedef struct VkFenceCreateInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkFenceCreateFlags                          flags;
- } VkFenceCreateInfo;
- 
--typedef struct {
-+typedef struct VkSemaphoreCreateInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkSemaphoreCreateFlags                      flags;
- } VkSemaphoreCreateInfo;
- 
--typedef struct {
-+typedef struct VkEventCreateInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkEventCreateFlags                          flags;
- } VkEventCreateInfo;
- 
--typedef struct {
-+typedef struct VkQueryPoolCreateInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkQueryPoolCreateFlags                      flags;
-@@ -1497,7 +1492,7 @@ typedef struct {
-     VkQueryPipelineStatisticFlags               pipelineStatistics;
- } VkQueryPoolCreateInfo;
- 
--typedef struct {
-+typedef struct VkBufferCreateInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkBufferCreateFlags                         flags;
-@@ -1508,7 +1503,7 @@ typedef struct {
-     const uint32_t*                             pQueueFamilyIndices;
- } VkBufferCreateInfo;
- 
--typedef struct {
-+typedef struct VkBufferViewCreateInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkBufferViewCreateFlags                     flags;
-@@ -1518,7 +1513,7 @@ typedef struct {
-     VkDeviceSize                                range;
- } VkBufferViewCreateInfo;
- 
--typedef struct {
-+typedef struct VkImageCreateInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkImageCreateFlags                          flags;
-@@ -1536,21 +1531,21 @@ typedef struct {
-     VkImageLayout                               initialLayout;
- } VkImageCreateInfo;
- 
--typedef struct {
-+typedef struct VkSubresourceLayout {
-     VkDeviceSize                                offset;
-     VkDeviceSize                                size;
-     VkDeviceSize                                rowPitch;
-     VkDeviceSize                                depthPitch;
- } VkSubresourceLayout;
- 
--typedef struct {
-+typedef struct VkComponentMapping {
-     VkComponentSwizzle                          r;
-     VkComponentSwizzle                          g;
-     VkComponentSwizzle                          b;
-     VkComponentSwizzle                          a;
- } VkComponentMapping;
- 
--typedef struct {
-+typedef struct VkImageSubresourceRange {
-     VkImageAspectFlags                          aspectMask;
-     uint32_t                                    baseMipLevel;
-     uint32_t                                    levelCount;
-@@ -1558,7 +1553,7 @@ typedef struct {
-     uint32_t                                    layerCount;
- } VkImageSubresourceRange;
- 
--typedef struct {
-+typedef struct VkImageViewCreateInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkImageViewCreateFlags                      flags;
-@@ -1569,7 +1564,7 @@ typedef struct {
-     VkImageSubresourceRange                     subresourceRange;
- } VkImageViewCreateInfo;
- 
--typedef struct {
-+typedef struct VkShaderModuleCreateInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkShaderModuleCreateFlags                   flags;
-@@ -1577,16 +1572,7 @@ typedef struct {
-     const uint32_t*                             pCode;
- } VkShaderModuleCreateInfo;
- 
--typedef struct {
--    VkStructureType                             sType;
--    const void*                                 pNext;
--    VkShaderCreateFlags                         flags;
--    VkShaderModule                              module;
--    const char*                                 pName;
--    VkShaderStageFlagBits                       stage;
--} VkShaderCreateInfo;
--
--typedef struct {
-+typedef struct VkPipelineCacheCreateInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkPipelineCacheCreateFlags                  flags;
-@@ -1594,41 +1580,43 @@ typedef struct {
-     const void*                                 pInitialData;
- } VkPipelineCacheCreateInfo;
- 
--typedef struct {
-+typedef struct VkSpecializationMapEntry {
-     uint32_t                                    constantID;
-     uint32_t                                    offset;
-     size_t                                      size;
- } VkSpecializationMapEntry;
- 
--typedef struct {
-+typedef struct VkSpecializationInfo {
-     uint32_t                                    mapEntryCount;
-     const VkSpecializationMapEntry*             pMapEntries;
-     size_t                                      dataSize;
-     const void*                                 pData;
- } VkSpecializationInfo;
- 
--typedef struct {
-+typedef struct VkPipelineShaderStageCreateInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkPipelineShaderStageCreateFlags            flags;
--    VkShader                                    shader;
-+    VkShaderStageFlagBits                       stage;
-+    VkShaderModule                              module;
-+    const char*                                 pName;
-     const VkSpecializationInfo*                 pSpecializationInfo;
- } VkPipelineShaderStageCreateInfo;
- 
--typedef struct {
-+typedef struct VkVertexInputBindingDescription {
-     uint32_t                                    binding;
-     uint32_t                                    stride;
-     VkVertexInputRate                           inputRate;
- } VkVertexInputBindingDescription;
- 
--typedef struct {
-+typedef struct VkVertexInputAttributeDescription {
-     uint32_t                                    location;
-     uint32_t                                    binding;
-     VkFormat                                    format;
-     uint32_t                                    offset;
- } VkVertexInputAttributeDescription;
- 
--typedef struct {
-+typedef struct VkPipelineVertexInputStateCreateInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkPipelineVertexInputStateCreateFlags       flags;
-@@ -1638,7 +1626,7 @@ typedef struct {
-     const VkVertexInputAttributeDescription*    pVertexAttributeDescriptions;
- } VkPipelineVertexInputStateCreateInfo;
- 
--typedef struct {
-+typedef struct VkPipelineInputAssemblyStateCreateInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkPipelineInputAssemblyStateCreateFlags     flags;
-@@ -1646,14 +1634,14 @@ typedef struct {
-     VkBool32                                    primitiveRestartEnable;
- } VkPipelineInputAssemblyStateCreateInfo;
- 
--typedef struct {
-+typedef struct VkPipelineTessellationStateCreateInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkPipelineTesselationStateCreateFlags       flags;
-     uint32_t                                    patchControlPoints;
- } VkPipelineTessellationStateCreateInfo;
- 
--typedef struct {
-+typedef struct VkViewport {
-     float                                       x;
-     float                                       y;
-     float                                       width;
-@@ -1662,22 +1650,22 @@ typedef struct {
-     float                                       maxDepth;
- } VkViewport;
- 
--typedef struct {
-+typedef struct VkOffset2D {
-     int32_t                                     x;
-     int32_t                                     y;
- } VkOffset2D;
- 
--typedef struct {
-+typedef struct VkExtent2D {
-     int32_t                                     width;
-     int32_t                                     height;
- } VkExtent2D;
- 
--typedef struct {
-+typedef struct VkRect2D {
-     VkOffset2D                                  offset;
-     VkExtent2D                                  extent;
- } VkRect2D;
- 
--typedef struct {
-+typedef struct VkPipelineViewportStateCreateInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkPipelineViewportStateCreateFlags          flags;
-@@ -1687,7 +1675,7 @@ typedef struct {
-     const VkRect2D*                             pScissors;
- } VkPipelineViewportStateCreateInfo;
- 
--typedef struct {
-+typedef struct VkPipelineRasterizationStateCreateInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkPipelineRasterizationStateCreateFlags     flags;
-@@ -1703,7 +1691,7 @@ typedef struct {
-     float                                       lineWidth;
- } VkPipelineRasterizationStateCreateInfo;
- 
--typedef struct {
-+typedef struct VkPipelineMultisampleStateCreateInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkPipelineMultisampleStateCreateFlags       flags;
-@@ -1715,7 +1703,7 @@ typedef struct {
-     VkBool32                                    alphaToOneEnable;
- } VkPipelineMultisampleStateCreateInfo;
- 
--typedef struct {
-+typedef struct VkStencilOpState {
-     VkStencilOp                                 failOp;
-     VkStencilOp                                 passOp;
-     VkStencilOp                                 depthFailOp;
-@@ -1725,7 +1713,7 @@ typedef struct {
-     uint32_t                                    reference;
- } VkStencilOpState;
- 
--typedef struct {
-+typedef struct VkPipelineDepthStencilStateCreateInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkPipelineDepthStencilStateCreateFlags      flags;
-@@ -1740,7 +1728,7 @@ typedef struct {
-     float                                       maxDepthBounds;
- } VkPipelineDepthStencilStateCreateInfo;
- 
--typedef struct {
-+typedef struct VkPipelineColorBlendAttachmentState {
-     VkBool32                                    blendEnable;
-     VkBlendFactor                               srcColorBlendFactor;
-     VkBlendFactor                               dstColorBlendFactor;
-@@ -1751,7 +1739,7 @@ typedef struct {
-     VkColorComponentFlags                       colorWriteMask;
- } VkPipelineColorBlendAttachmentState;
- 
--typedef struct {
-+typedef struct VkPipelineColorBlendStateCreateInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkPipelineColorBlendStateCreateFlags        flags;
-@@ -1762,7 +1750,7 @@ typedef struct {
-     float                                       blendConstants[4];
- } VkPipelineColorBlendStateCreateInfo;
- 
--typedef struct {
-+typedef struct VkPipelineDynamicStateCreateInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkPipelineDynamicStateCreateFlags           flags;
-@@ -1770,7 +1758,7 @@ typedef struct {
-     const VkDynamicState*                       pDynamicStates;
- } VkPipelineDynamicStateCreateInfo;
- 
--typedef struct {
-+typedef struct VkGraphicsPipelineCreateInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkPipelineCreateFlags                       flags;
-@@ -1792,7 +1780,7 @@ typedef struct {
-     int32_t                                     basePipelineIndex;
- } VkGraphicsPipelineCreateInfo;
- 
--typedef struct {
-+typedef struct VkComputePipelineCreateInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkPipelineCreateFlags                       flags;
-@@ -1802,13 +1790,13 @@ typedef struct {
-     int32_t                                     basePipelineIndex;
- } VkComputePipelineCreateInfo;
- 
--typedef struct {
-+typedef struct VkPushConstantRange {
-     VkShaderStageFlags                          stageFlags;
-     uint32_t                                    offset;
-     uint32_t                                    size;
- } VkPushConstantRange;
- 
--typedef struct {
-+typedef struct VkPipelineLayoutCreateInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkPipelineLayoutCreateFlags                 flags;
-@@ -1818,7 +1806,7 @@ typedef struct {
-     const VkPushConstantRange*                  pPushConstantRanges;
- } VkPipelineLayoutCreateInfo;
- 
--typedef struct {
-+typedef struct VkSamplerCreateInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkSamplerCreateFlags                        flags;
-@@ -1838,27 +1826,27 @@ typedef struct {
-     VkBool32                                    unnormalizedCoordinates;
- } VkSamplerCreateInfo;
- 
--typedef struct {
-+typedef struct VkDescriptorSetLayoutBinding {
-     VkDescriptorType                            descriptorType;
-     uint32_t                                    arraySize;
-     VkShaderStageFlags                          stageFlags;
-     const VkSampler*                            pImmutableSamplers;
- } VkDescriptorSetLayoutBinding;
- 
--typedef struct {
-+typedef struct VkDescriptorSetLayoutCreateInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkDescriptorSetLayoutCreateFlags            flags;
-     uint32_t                                    bindingCount;
--    const VkDescriptorSetLayoutBinding*         pBindings;
-+    const VkDescriptorSetLayoutBinding*         pBinding;
- } VkDescriptorSetLayoutCreateInfo;
- 
--typedef struct {
-+typedef struct VkDescriptorPoolSize {
-     VkDescriptorType                            type;
-     uint32_t                                    descriptorCount;
- } VkDescriptorPoolSize;
- 
--typedef struct {
-+typedef struct VkDescriptorPoolCreateInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkDescriptorPoolCreateFlags                 flags;
-@@ -1867,7 +1855,7 @@ typedef struct {
-     const VkDescriptorPoolSize*                 pPoolSizes;
- } VkDescriptorPoolCreateInfo;
- 
--typedef struct {
-+typedef struct VkDescriptorSetAllocateInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkDescriptorPool                            descriptorPool;
-@@ -1875,19 +1863,19 @@ typedef struct {
-     const VkDescriptorSetLayout*                pSetLayouts;
- } VkDescriptorSetAllocateInfo;
- 
--typedef struct {
-+typedef struct VkDescriptorImageInfo {
-     VkSampler                                   sampler;
-     VkImageView                                 imageView;
-     VkImageLayout                               imageLayout;
- } VkDescriptorImageInfo;
- 
--typedef struct {
-+typedef struct VkDescriptorBufferInfo {
-     VkBuffer                                    buffer;
-     VkDeviceSize                                offset;
-     VkDeviceSize                                range;
- } VkDescriptorBufferInfo;
- 
--typedef struct {
-+typedef struct VkWriteDescriptorSet {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkDescriptorSet                             dstSet;
-@@ -1900,7 +1888,7 @@ typedef struct {
-     const VkBufferView*                         pTexelBufferView;
- } VkWriteDescriptorSet;
- 
--typedef struct {
-+typedef struct VkCopyDescriptorSet {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkDescriptorSet                             srcSet;
-@@ -1912,7 +1900,7 @@ typedef struct {
-     uint32_t                                    descriptorCount;
- } VkCopyDescriptorSet;
- 
--typedef struct {
-+typedef struct VkFramebufferCreateInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkFramebufferCreateFlags                    flags;
-@@ -1924,7 +1912,7 @@ typedef struct {
-     uint32_t                                    layers;
- } VkFramebufferCreateInfo;
- 
--typedef struct {
-+typedef struct VkAttachmentDescription {
-     VkAttachmentDescriptionFlags                flags;
-     VkFormat                                    format;
-     uint32_t                                    samples;
-@@ -1936,12 +1924,12 @@ typedef struct {
-     VkImageLayout                               finalLayout;
- } VkAttachmentDescription;
- 
--typedef struct {
-+typedef struct VkAttachmentReference {
-     uint32_t                                    attachment;
-     VkImageLayout                               layout;
- } VkAttachmentReference;
- 
--typedef struct {
-+typedef struct VkSubpassDescription {
-     VkSubpassDescriptionFlags                   flags;
-     VkPipelineBindPoint                         pipelineBindPoint;
-     uint32_t                                    inputAttachmentCount;
-@@ -1954,17 +1942,17 @@ typedef struct {
-     const VkAttachmentReference*                pPreserveAttachments;
- } VkSubpassDescription;
- 
--typedef struct {
-+typedef struct VkSubpassDependency {
-     uint32_t                                    srcSubpass;
-     uint32_t                                    dstSubpass;
-     VkPipelineStageFlags                        srcStageMask;
-     VkPipelineStageFlags                        dstStageMask;
--    VkMemoryOutputFlags                         outputMask;
--    VkMemoryInputFlags                          inputMask;
-+    VkAccessFlags                               srcAccessMask;
-+    VkAccessFlags                               dstAccessMask;
-     VkDependencyFlags                           dependencyFlags;
- } VkSubpassDependency;
- 
--typedef struct {
-+typedef struct VkRenderPassCreateInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkRenderPassCreateFlags                     flags;
-@@ -1976,14 +1964,14 @@ typedef struct {
-     const VkSubpassDependency*                  pDependencies;
- } VkRenderPassCreateInfo;
- 
--typedef struct {
-+typedef struct VkCommandPoolCreateInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkCommandPoolCreateFlags                    flags;
-     uint32_t                                    queueFamilyIndex;
- } VkCommandPoolCreateInfo;
- 
--typedef struct {
-+typedef struct VkCommandBufferAllocateInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkCommandPool                               commandPool;
-@@ -1991,7 +1979,7 @@ typedef struct {
-     uint32_t                                    bufferCount;
- } VkCommandBufferAllocateInfo;
- 
--typedef struct {
-+typedef struct VkCommandBufferBeginInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkCommandBufferUsageFlags                   flags;
-@@ -2000,20 +1988,20 @@ typedef struct {
-     VkFramebuffer                               framebuffer;
- } VkCommandBufferBeginInfo;
- 
--typedef struct {
-+typedef struct VkBufferCopy {
-     VkDeviceSize                                srcOffset;
-     VkDeviceSize                                dstOffset;
-     VkDeviceSize                                size;
- } VkBufferCopy;
- 
--typedef struct {
-+typedef struct VkImageSubresourceLayers {
-     VkImageAspectFlags                          aspectMask;
-     uint32_t                                    mipLevel;
-     uint32_t                                    baseArrayLayer;
-     uint32_t                                    layerCount;
- } VkImageSubresourceLayers;
- 
--typedef struct {
-+typedef struct VkImageCopy {
-     VkImageSubresourceLayers                    srcSubresource;
-     VkOffset3D                                  srcOffset;
-     VkImageSubresourceLayers                    dstSubresource;
-@@ -2021,7 +2009,7 @@ typedef struct {
-     VkExtent3D                                  extent;
- } VkImageCopy;
- 
--typedef struct {
-+typedef struct VkImageBlit {
-     VkImageSubresourceLayers                    srcSubresource;
-     VkOffset3D                                  srcOffset;
-     VkExtent3D                                  srcExtent;
-@@ -2030,7 +2018,7 @@ typedef struct {
-     VkExtent3D                                  dstExtent;
- } VkImageBlit;
- 
--typedef struct {
-+typedef struct VkBufferImageCopy {
-     VkDeviceSize                                bufferOffset;
-     uint32_t                                    bufferRowLength;
-     uint32_t                                    bufferImageHeight;
-@@ -2039,35 +2027,35 @@ typedef struct {
-     VkExtent3D                                  imageExtent;
- } VkBufferImageCopy;
- 
--typedef union {
-+typedef union VkClearColorValue {
-     float                                       float32[4];
-     int32_t                                     int32[4];
-     uint32_t                                    uint32[4];
- } VkClearColorValue;
- 
--typedef struct {
-+typedef struct VkClearDepthStencilValue {
-     float                                       depth;
-     uint32_t                                    stencil;
- } VkClearDepthStencilValue;
- 
--typedef union {
-+typedef union VkClearValue {
-     VkClearColorValue                           color;
-     VkClearDepthStencilValue                    depthStencil;
- } VkClearValue;
- 
--typedef struct {
-+typedef struct VkClearAttachment {
-     VkImageAspectFlags                          aspectMask;
-     uint32_t                                    colorAttachment;
-     VkClearValue                                clearValue;
- } VkClearAttachment;
- 
--typedef struct {
-+typedef struct VkClearRect {
-     VkRect2D                                    rect;
-     uint32_t                                    baseArrayLayer;
-     uint32_t                                    layerCount;
- } VkClearRect;
- 
--typedef struct {
-+typedef struct VkImageResolve {
-     VkImageSubresourceLayers                    srcSubresource;
-     VkOffset3D                                  srcOffset;
-     VkImageSubresourceLayers                    dstSubresource;
-@@ -2075,7 +2063,7 @@ typedef struct {
-     VkExtent3D                                  extent;
- } VkImageResolve;
- 
--typedef struct {
-+typedef struct VkRenderPassBeginInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkRenderPass                                renderPass;
-@@ -2085,11 +2073,11 @@ typedef struct {
-     const VkClearValue*                         pClearValues;
- } VkRenderPassBeginInfo;
- 
--typedef struct {
-+typedef struct VkBufferMemoryBarrier {
-     VkStructureType                             sType;
-     const void*                                 pNext;
--    VkMemoryOutputFlags                         outputMask;
--    VkMemoryInputFlags                          inputMask;
-+    VkAccessFlags                               srcAccessMask;
-+    VkAccessFlags                               dstAccessMask;
-     uint32_t                                    srcQueueFamilyIndex;
-     uint32_t                                    dstQueueFamilyIndex;
-     VkBuffer                                    buffer;
-@@ -2097,13 +2085,13 @@ typedef struct {
-     VkDeviceSize                                size;
- } VkBufferMemoryBarrier;
- 
--typedef struct {
-+typedef struct VkDispatchIndirectCommand {
-     uint32_t                                    x;
-     uint32_t                                    y;
-     uint32_t                                    z;
- } VkDispatchIndirectCommand;
- 
--typedef struct {
-+typedef struct VkDrawIndexedIndirectCommand {
-     uint32_t                                    indexCount;
-     uint32_t                                    instanceCount;
-     uint32_t                                    firstIndex;
-@@ -2111,18 +2099,18 @@ typedef struct {
-     uint32_t                                    firstInstance;
- } VkDrawIndexedIndirectCommand;
- 
--typedef struct {
-+typedef struct VkDrawIndirectCommand {
-     uint32_t                                    vertexCount;
-     uint32_t                                    instanceCount;
-     uint32_t                                    firstVertex;
-     uint32_t                                    firstInstance;
- } VkDrawIndirectCommand;
- 
--typedef struct {
-+typedef struct VkImageMemoryBarrier {
-     VkStructureType                             sType;
-     const void*                                 pNext;
--    VkMemoryOutputFlags                         outputMask;
--    VkMemoryInputFlags                          inputMask;
-+    VkAccessFlags                               srcAccessMask;
-+    VkAccessFlags                               dstAccessMask;
-     VkImageLayout                               oldLayout;
-     VkImageLayout                               newLayout;
-     uint32_t                                    srcQueueFamilyIndex;
-@@ -2131,11 +2119,11 @@ typedef struct {
-     VkImageSubresourceRange                     subresourceRange;
- } VkImageMemoryBarrier;
- 
--typedef struct {
-+typedef struct VkMemoryBarrier {
-     VkStructureType                             sType;
-     const void*                                 pNext;
--    VkMemoryOutputFlags                         outputMask;
--    VkMemoryInputFlags                          inputMask;
-+    VkAccessFlags                               srcAccessMask;
-+    VkAccessFlags                               dstAccessMask;
- } VkMemoryBarrier;
- 
- 
-@@ -2200,8 +2188,6 @@ typedef VkResult (VKAPI *PFN_vkCreateImageView)(VkDevice device, const VkImageVi
- typedef void (VKAPI *PFN_vkDestroyImageView)(VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator);
- typedef VkResult (VKAPI *PFN_vkCreateShaderModule)(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule);
- typedef void (VKAPI *PFN_vkDestroyShaderModule)(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator);
--typedef VkResult (VKAPI *PFN_vkCreateShader)(VkDevice device, const VkShaderCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShader* pShader);
--typedef void (VKAPI *PFN_vkDestroyShader)(VkDevice device, VkShader shader, const VkAllocationCallbacks* pAllocator);
- typedef VkResult (VKAPI *PFN_vkCreatePipelineCache)(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache);
- typedef void (VKAPI *PFN_vkDestroyPipelineCache)(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator);
- typedef VkResult (VKAPI *PFN_vkGetPipelineCacheData)(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData);
-@@ -2606,17 +2592,6 @@ void VKAPI vkDestroyShaderModule(
-     VkShaderModule                              shaderModule,
-     const VkAllocationCallbacks*                pAllocator);
- 
--VkResult VKAPI vkCreateShader(
--    VkDevice                                    device,
--    const VkShaderCreateInfo*                   pCreateInfo,
--    const VkAllocationCallbacks*                pAllocator,
--    VkShader*                                   pShader);
--
--void VKAPI vkDestroyShader(
--    VkDevice                                    device,
--    VkShader                                    shader,
--    const VkAllocationCallbacks*                pAllocator);
--
- VkResult VKAPI vkCreatePipelineCache(
-     VkDevice                                    device,
-     const VkPipelineCacheCreateInfo*            pCreateInfo,
-@@ -3079,16 +3054,16 @@ void VKAPI vkCmdExecuteCommands(
-     const VkCommandBuffer*                      pCommandBuffers);
- #endif
- 
--#define vk_ext_khr_surface 1
-+#define vk_khr_surface 1
- VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR)
- 
--#define VK_EXT_KHR_SURFACE_REVISION       20
--#define VK_EXT_KHR_SURFACE_EXTENSION_NUMBER 1
--#define VK_EXT_KHR_SURFACE_EXTENSION_NAME "VK_EXT_KHR_surface"
-+#define VK_KHR_SURFACE_REVISION           22
-+#define VK_KHR_SURFACE_EXTENSION_NUMBER   1
-+#define VK_KHR_SURFACE_EXTENSION_NAME     "VK_KHR_surface"
- #define VK_ERROR_SURFACE_LOST_KHR         ((VkResult)(int)0xc0000400)
- 
- 
--typedef enum {
-+typedef enum VkSurfaceTransformKHR {
-     VK_SURFACE_TRANSFORM_NONE_KHR = 0,
-     VK_SURFACE_TRANSFORM_ROT90_KHR = 1,
-     VK_SURFACE_TRANSFORM_ROT180_KHR = 2,
-@@ -3104,7 +3079,7 @@ typedef enum {
-     VK_SURFACE_TRANSFORM_MAX_ENUM = 0x7FFFFFFF
- } VkSurfaceTransformKHR;
- 
--typedef enum {
-+typedef enum VkColorSpaceKHR {
-     VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0,
-     VK_COLORSPACE_BEGIN_RANGE = VK_COLORSPACE_SRGB_NONLINEAR_KHR,
-     VK_COLORSPACE_END_RANGE = VK_COLORSPACE_SRGB_NONLINEAR_KHR,
-@@ -3112,7 +3087,7 @@ typedef enum {
-     VK_COLORSPACE_MAX_ENUM = 0x7FFFFFFF
- } VkColorSpaceKHR;
- 
--typedef enum {
-+typedef enum VkPresentModeKHR {
-     VK_PRESENT_MODE_IMMEDIATE_KHR = 0,
-     VK_PRESENT_MODE_MAILBOX_KHR = 1,
-     VK_PRESENT_MODE_FIFO_KHR = 2,
-@@ -3124,7 +3099,7 @@ typedef enum {
- } VkPresentModeKHR;
- 
- 
--typedef enum {
-+typedef enum VkSurfaceTransformFlagBitsKHR {
-     VK_SURFACE_TRANSFORM_NONE_BIT_KHR = 0x00000001,
-     VK_SURFACE_TRANSFORM_ROT90_BIT_KHR = 0x00000002,
-     VK_SURFACE_TRANSFORM_ROT180_BIT_KHR = 0x00000004,
-@@ -3137,7 +3112,7 @@ typedef enum {
- } VkSurfaceTransformFlagBitsKHR;
- typedef VkFlags VkSurfaceTransformFlagsKHR;
- 
--typedef enum {
-+typedef enum VkCompositeAlphaFlagBitsKHR {
-     VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
-     VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 0x00000002,
-     VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 0x00000004,
-@@ -3145,7 +3120,7 @@ typedef enum {
- } VkCompositeAlphaFlagBitsKHR;
- typedef VkFlags VkCompositeAlphaFlagsKHR;
- 
--typedef struct {
-+typedef struct VkSurfaceCapabilitiesKHR {
-     uint32_t                                    minImageCount;
-     uint32_t                                    maxImageCount;
-     VkExtent2D                                  currentExtent;
-@@ -3158,7 +3133,7 @@ typedef struct {
-     VkImageUsageFlags                           supportedUsageFlags;
- } VkSurfaceCapabilitiesKHR;
- 
--typedef struct {
-+typedef struct VkSurfaceFormatKHR {
-     VkFormat                                    format;
-     VkColorSpaceKHR                             colorSpace;
- } VkSurfaceFormatKHR;
-@@ -3199,19 +3174,19 @@ VkResult VKAPI vkGetPhysicalDeviceSurfacePresentModesKHR(
-     VkPresentModeKHR*                           pPresentModes);
- #endif
- 
--#define vk_ext_khr_swapchain 1
-+#define vk_khr_swapchain 1
- VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSwapchainKHR)
- 
--#define VK_EXT_KHR_SWAPCHAIN_REVISION     62
--#define VK_EXT_KHR_SWAPCHAIN_EXTENSION_NUMBER 2
--#define VK_EXT_KHR_SWAPCHAIN_EXTENSION_NAME "VK_EXT_KHR_swapchain"
-+#define VK_KHR_SWAPCHAIN_REVISION         64
-+#define VK_KHR_SWAPCHAIN_EXTENSION_NUMBER 2
-+#define VK_KHR_SWAPCHAIN_EXTENSION_NAME   "VK_KHR_swapchain"
- #define VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR ((VkStructureType)(int)0xc0000800)
- #define VK_STRUCTURE_TYPE_PRESENT_INFO_KHR ((VkStructureType)(int)0xc0000801)
- #define VK_IMAGE_LAYOUT_PRESENT_SRC_KHR   ((VkImageLayout)(int)0xc0000802)
- #define VK_SUBOPTIMAL_KHR                 ((VkResult)(int)0x40000403)
- #define VK_ERROR_OUT_OF_DATE_KHR          ((VkResult)(int)0xc0000804)
- 
--typedef struct {
-+typedef struct VkSwapchainCreateInfoKHR {
-     VkStructureType                             sType;
-     const void*                                   pNext;
-     VkSurfaceKHR                                surface;
-@@ -3231,7 +3206,7 @@ typedef struct {
-     VkBool32                                    clipped;
- } VkSwapchainCreateInfoKHR;
- 
--typedef struct {
-+typedef struct VkPresentInfoKHR {
-     VkStructureType                             sType;
-     const void*                                   pNext;
-     uint32_t                                    waitSemaphoreCount;
-@@ -3277,25 +3252,25 @@ VkResult VKAPI vkQueuePresentKHR(
-     VkPresentInfoKHR*                            pPresentInfo);
- #endif
- 
--#define vk_ext_khr_display 1
-+#define vk_khr_display 1
- VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayKHR)
- VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayModeKHR)
- 
--#define VK_EXT_KHR_DISPLAY_REVISION       17
--#define VK_EXT_KHR_DISPLAY_EXTENSION_NUMBER 3
--#define VK_EXT_KHR_DISPLAY_EXTENSION_NAME "VK_EXT_KHR_display"
-+#define VK_KHR_DISPLAY_REVISION           18
-+#define VK_KHR_DISPLAY_EXTENSION_NUMBER   3
-+#define VK_KHR_DISPLAY_EXTENSION_NAME     "VK_KHR_display"
- #define VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR ((VkStructureType)(int)0xc0000c00)
- #define VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR ((VkStructureType)(int)0xc0000c01)
- 
- 
--typedef enum {
-+typedef enum VkDisplayPlaneAlphaFlagBitsKHR {
-     VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 0x00000001,
-     VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0x00000002,
-     VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0x00000004,
- } VkDisplayPlaneAlphaFlagBitsKHR;
- typedef VkFlags VkDisplayPlaneAlphaFlagsKHR;
- 
--typedef struct {
-+typedef struct VkDisplayPropertiesKHR {
-     VkDisplayKHR                                display;
-     const char*                                 displayName;
-     VkExtent2D                                  physicalDimensions;
-@@ -3305,23 +3280,23 @@ typedef struct {
-     VkBool32                                    persistentContent;
- } VkDisplayPropertiesKHR;
- 
--typedef struct {
-+typedef struct VkDisplayModeParametersKHR {
-     VkExtent2D                                  visibleRegion;
-     uint32_t                                    refreshRate;
- } VkDisplayModeParametersKHR;
- 
--typedef struct {
-+typedef struct VkDisplayModePropertiesKHR {
-     VkDisplayModeKHR                            displayMode;
-     VkDisplayModeParametersKHR                  parameters;
- } VkDisplayModePropertiesKHR;
- 
--typedef struct {
-+typedef struct VkDisplayModeCreateInfoKHR {
-     VkStructureType                             sType;
-     const void*                                   pNext;
-     VkDisplayModeParametersKHR                  parameters;
- } VkDisplayModeCreateInfoKHR;
- 
--typedef struct {
-+typedef struct VkDisplayPlaneCapabilitiesKHR {
-     VkDisplayPlaneAlphaFlagsKHR                 supportedAlpha;
-     VkOffset2D                                  minSrcPosition;
-     VkOffset2D                                  maxSrcPosition;
-@@ -3333,12 +3308,12 @@ typedef struct {
-     VkExtent2D                                  maxDstExtent;
- } VkDisplayPlaneCapabilitiesKHR;
- 
--typedef struct {
-+typedef struct VkDisplayPlanePropertiesKHR {
-     VkDisplayKHR                                currentDisplay;
-     uint32_t                                    currentStackIndex;
- } VkDisplayPlanePropertiesKHR;
- 
--typedef struct {
-+typedef struct VkDisplaySurfaceCreateInfoKHR {
-     VkStructureType                             sType;
-     const void*                                   pNext;
-     VkDisplayModeKHR                            displayMode;
-@@ -3399,21 +3374,21 @@ VkResult VKAPI vkCreateDisplayPlaneSurfaceKHR(
-     VkSurfaceKHR*                               pSurface);
- #endif
- 
--#define vk_ext_khr_display_swapchain 1
--#define VK_EXT_KHR_DISPLAY_SWAPCHAIN_REVISION 6
--#define VK_EXT_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NUMBER 4
--#define VK_EXT_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME "VK_EXT_KHR_display_swapchain"
-+#define vk_khr_display_swapchain 1
-+#define VK_KHR_DISPLAY_SWAPCHAIN_REVISION 7
-+#define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NUMBER 4
-+#define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME "VK_KHR_display_swapchain"
- #define VK_STRUCTURE_TYPE_DISPLAY_SWAPCHAIN_CREATE_INFO_KHR ((VkStructureType)(int)0xc0001000)
- #define VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR ((VkStructureType)(int)0xc0001001)
- #define VK_ERROR_INCOMPATIBLE_DISPLAY_KHR ((VkResult)(int)0xc0001002)
- 
--typedef struct {
-+typedef struct VkDisplaySwapchainCreateInfoKHR {
-     VkStructureType                             sType;
-     const void*                                   pNext;
-     const VkSwapchainCreateInfoKHR*             pNextSwapchainCreateInfo;
- } VkDisplaySwapchainCreateInfoKHR;
- 
--typedef struct {
-+typedef struct VkDisplayPresentInfoKHR {
-     VkStructureType                             sType;
-     const void*                                   pNext;
-     VkRect2D                                    srcRect;
-@@ -3424,12 +3399,12 @@ typedef struct {
- 
- 
- #ifdef VK_USE_PLATFORM_XLIB_KHR
--#define vk_ext_khr_xlib_surface 1
-+#define vk_khr_xlib_surface 1
- #include <X11/Xlib.h>
- 
--#define VK_EXT_KHR_XLIB_SURFACE_REVISION  3
--#define VK_EXT_KHR_XLIB_SURFACE_EXTENSION_NUMBER 5
--#define VK_EXT_KHR_XLIB_SURFACE_EXTENSION_NAME "vk_ext_khr_xlib_surface"
-+#define VK_KHR_XLIB_SURFACE_REVISION      4
-+#define VK_KHR_XLIB_SURFACE_EXTENSION_NUMBER 5
-+#define VK_KHR_XLIB_SURFACE_EXTENSION_NAME "vk_khr_xlib_surface"
- 
- typedef VkResult (VKAPI *PFN_vkCreateXlibSurfaceKHR)(VkInstance instance, Display* dpy, Window window, VkSurfaceKHR* pSurface);
- typedef VkBool32 (VKAPI *PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, Display* dpy, VisualID visualID);
-@@ -3450,12 +3425,12 @@ VkBool32 VKAPI vkGetPhysicalDeviceXlibPresentationSupportKHR(
- #endif /* VK_USE_PLATFORM_XLIB_KHR */
- 
- #ifdef VK_USE_PLATFORM_XCB_KHR
--#define vk_ext_khr_xcb_surface 1
-+#define vk_khr_xcb_surface 1
- #include <xcb/xcb.h>
- 
--#define VK_EXT_KHR_XCB_SURFACE_REVISION   3
--#define VK_EXT_KHR_XCB_SURFACE_EXTENSION_NUMBER 6
--#define VK_EXT_KHR_XCB_SURFACE_EXTENSION_NAME "VK_EXT_KHR_xcb_surface"
-+#define VK_KHR_XCB_SURFACE_REVISION       4
-+#define VK_KHR_XCB_SURFACE_EXTENSION_NUMBER 6
-+#define VK_KHR_XCB_SURFACE_EXTENSION_NAME "VK_KHR_xcb_surface"
- 
- typedef VkResult (VKAPI *PFN_vkCreateXcbSurfaceKHR)(VkInstance instance, xcb_connection_t* connection, xcb_window_t window, VkSurfaceKHR* pSurface);
- typedef VkBool32 (VKAPI *PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id);
-@@ -3476,12 +3451,12 @@ VkBool32 VKAPI vkGetPhysicalDeviceXcbPresentationSupportKHR(
- #endif /* VK_USE_PLATFORM_XCB_KHR */
- 
- #ifdef VK_USE_PLATFORM_WAYLAND_KHR
--#define vk_ext_khr_wayland_surface 1
-+#define vk_khr_wayland_surface 1
- #include <wayland-client.h>
- 
--#define VK_EXT_KHR_WAYLAND_SURFACE_REVISION 2
--#define VK_EXT_KHR_WAYLAND_SURFACE_EXTENSION_NUMBER 7
--#define VK_EXT_KHR_WAYLAND_SURFACE_EXTENSION_NAME "VK_EXT_KHR_wayland_surface"
-+#define VK_KHR_WAYLAND_SURFACE_REVISION   3
-+#define VK_KHR_WAYLAND_SURFACE_EXTENSION_NUMBER 7
-+#define VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME "VK_KHR_wayland_surface"
- 
- typedef VkResult (VKAPI *PFN_vkCreateWaylandSurfaceKHR)(VkInstance instance, struct wl_display* display, struct wl_surface* surface, VkSurfaceKHR* pSurface);
- typedef VkBool32 (VKAPI *PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, struct wl_display* display);
-@@ -3501,12 +3476,12 @@ VkBool32 VKAPI vkGetPhysicalDeviceWaylandPresentationSupportKHR(
- #endif /* VK_USE_PLATFORM_WAYLAND_KHR */
- 
- #ifdef VK_USE_PLATFORM_MIR_KHR
--#define vk_ext_khr_mir_surface 1
-+#define vk_khr_mir_surface 1
- #include <mir_toolkit/client_types.h>
- 
--#define VK_EXT_KHR_MIR_SURFACE_REVISION   2
--#define VK_EXT_KHR_MIR_SURFACE_EXTENSION_NUMBER 8
--#define VK_EXT_KHR_MIR_SURFACE_EXTENSION_NAME "VK_EXT_KHR_mir_surface"
-+#define VK_KHR_MIR_SURFACE_REVISION       3
-+#define VK_KHR_MIR_SURFACE_EXTENSION_NUMBER 8
-+#define VK_KHR_MIR_SURFACE_EXTENSION_NAME "VK_KHR_mir_surface"
- 
- typedef VkResult (VKAPI *PFN_vkCreateMirSurfaceKHR)(VkInstance instance, MirConnection* connection, MirSurface* mirSurface, VkSurfaceKHR* pSurface);
- typedef VkBool32 (VKAPI *PFN_vkGetPhysicalDeviceMirPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, MirConnection* connection);
-@@ -3526,12 +3501,12 @@ VkBool32 VKAPI vkGetPhysicalDeviceMirPresentationSupportKHR(
- #endif /* VK_USE_PLATFORM_MIR_KHR */
- 
- #ifdef VK_USE_PLATFORM_ANDROID_KHR
--#define vk_ext_khr_android_surface 1
-+#define vk_khr_android_surface 1
- #include <android/native_window.h>
- 
--#define VK_EXT_KHR_ANDROID_SURFACE_REVISION 1
--#define VK_EXT_KHR_ANDROID_SURFACE_EXTENSION_NUMBER 9
--#define VK_EXT_KHR_ANDROID_SURFACE_EXTENSION_NAME "VK_EXT_KHR_android_surface"
-+#define VK_KHR_ANDROID_SURFACE_REVISION   2
-+#define VK_KHR_ANDROID_SURFACE_EXTENSION_NUMBER 9
-+#define VK_KHR_ANDROID_SURFACE_EXTENSION_NAME "VK_KHR_android_surface"
- #define VK_ERROR_INVALID_ANDROID_WINDOW_KHR ((VkResult)(int)0xc0002400)
- #define VK_ERROR_ANDROID_WINDOW_IN_USE_KHR ((VkResult)(int)0xc0002401)
- 
-@@ -3546,12 +3521,12 @@ VkResult VKAPI vkCreateAndroidSurfaceKHR(
- #endif /* VK_USE_PLATFORM_ANDROID_KHR */
- 
- #ifdef VK_USE_PLATFORM_WIN32_KHR
--#define vk_ext_khr_win32_surface 1
-+#define vk_khr_win32_surface 1
- #include <windows.h>
- 
--#define VK_EXT_KHR_WIN32_SURFACE_REVISION 2
--#define VK_EXT_KHR_WIN32_SURFACE_EXTENSION_NUMBER 10
--#define VK_EXT_KHR_WIN32_SURFACE_EXTENSION_NAME "VK_EXT_KHR_win32_surface"
-+#define VK_KHR_WIN32_SURFACE_REVISION     3
-+#define VK_KHR_WIN32_SURFACE_EXTENSION_NUMBER 10
-+#define VK_KHR_WIN32_SURFACE_EXTENSION_NAME "VK_KHR_win32_surface"
- 
- typedef VkResult (VKAPI *PFN_vkCreateWin32SurfaceKHR)(VkInstance instance, HINSTANCE hinstance, HWND hwnd, VkSurfaceKHR* pSurface);
- typedef VkBool32 (VKAPI *PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex);
-diff --git a/vulkan/libvulkan/entry.cpp b/vulkan/libvulkan/entry.cpp
-index 2b7faa9..9037e17 100644
---- a/vulkan/libvulkan/entry.cpp
-+++ b/vulkan/libvulkan/entry.cpp
-@@ -347,16 +347,6 @@ void vkDestroyShaderModule(VkDevice device, VkShaderModule shaderModule, const V
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateShader(VkDevice device, const VkShaderCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShader* pShader) {
--    return GetVtbl(device).CreateShader(device, pCreateInfo, pAllocator, pShader);
--}
--
--__attribute__((visibility("default")))
--void vkDestroyShader(VkDevice device, VkShader shader, const VkAllocationCallbacks* pAllocator) {
--    GetVtbl(device).DestroyShader(device, shader, pAllocator);
--}
--
--__attribute__((visibility("default")))
- VkResult vkCreatePipelineCache(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache) {
-     return GetVtbl(device).CreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache);
- }
-diff --git a/vulkan/libvulkan/entry.cpp.tmpl b/vulkan/libvulkan/entry.cpp.tmpl
-index 5aed3df..712558b 100644
---- a/vulkan/libvulkan/entry.cpp.tmpl
-+++ b/vulkan/libvulkan/entry.cpp.tmpl
-@@ -94,9 +94,9 @@ namespace {
-   {{$ext := GetAnnotation $ "extension"}}
-   {{if $ext}}
-     {{$extval := index $ext.Arguments 0}}
--    {{if      eq $extval "VK_EXT_KHR_surface"}}true
--    {{else if eq $extval "VK_EXT_KHR_swapchain"}}true
--    {{else if eq $extval "VK_EXT_KHR_android_surface"}}true{{end}}
-+    {{if      eq $extval "VK_KHR_surface"}}true
-+    {{else if eq $extval "VK_KHR_swapchain"}}true
-+    {{else if eq $extval "VK_KHR_android_surface"}}true{{end}}
-   {{else}}true{{end}}
- {{end}}
- 
-diff --git a/vulkan/libvulkan/get_proc_addr.cpp b/vulkan/libvulkan/get_proc_addr.cpp
-index f6a6510..7f1f54e 100644
---- a/vulkan/libvulkan/get_proc_addr.cpp
-+++ b/vulkan/libvulkan/get_proc_addr.cpp
-@@ -142,7 +142,6 @@ const NameProcEntry kDeviceProcTbl[] = {
-     {"vkCreateRenderPass", reinterpret_cast<PFN_vkVoidFunction>(vkCreateRenderPass)},
-     {"vkCreateSampler", reinterpret_cast<PFN_vkVoidFunction>(vkCreateSampler)},
-     {"vkCreateSemaphore", reinterpret_cast<PFN_vkVoidFunction>(vkCreateSemaphore)},
--    {"vkCreateShader", reinterpret_cast<PFN_vkVoidFunction>(vkCreateShader)},
-     {"vkCreateShaderModule", reinterpret_cast<PFN_vkVoidFunction>(vkCreateShaderModule)},
-     {"vkCreateSwapchainKHR", reinterpret_cast<PFN_vkVoidFunction>(vkCreateSwapchainKHR)},
-     {"vkDestroyBuffer", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyBuffer)},
-@@ -163,7 +162,6 @@ const NameProcEntry kDeviceProcTbl[] = {
-     {"vkDestroyRenderPass", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyRenderPass)},
-     {"vkDestroySampler", reinterpret_cast<PFN_vkVoidFunction>(vkDestroySampler)},
-     {"vkDestroySemaphore", reinterpret_cast<PFN_vkVoidFunction>(vkDestroySemaphore)},
--    {"vkDestroyShader", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyShader)},
-     {"vkDestroyShaderModule", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyShaderModule)},
-     {"vkDestroySwapchainKHR", reinterpret_cast<PFN_vkVoidFunction>(vkDestroySwapchainKHR)},
-     {"vkDeviceWaitIdle", reinterpret_cast<PFN_vkVoidFunction>(vkDeviceWaitIdle)},
-@@ -299,7 +297,6 @@ const NameOffsetEntry kDeviceOffsetTbl[] = {
-     {"vkCreateRenderPass", offsetof(DeviceVtbl, CreateRenderPass)},
-     {"vkCreateSampler", offsetof(DeviceVtbl, CreateSampler)},
-     {"vkCreateSemaphore", offsetof(DeviceVtbl, CreateSemaphore)},
--    {"vkCreateShader", offsetof(DeviceVtbl, CreateShader)},
-     {"vkCreateShaderModule", offsetof(DeviceVtbl, CreateShaderModule)},
-     {"vkCreateSwapchainKHR", offsetof(DeviceVtbl, CreateSwapchainKHR)},
-     {"vkDestroyBuffer", offsetof(DeviceVtbl, DestroyBuffer)},
-@@ -320,7 +317,6 @@ const NameOffsetEntry kDeviceOffsetTbl[] = {
-     {"vkDestroyRenderPass", offsetof(DeviceVtbl, DestroyRenderPass)},
-     {"vkDestroySampler", offsetof(DeviceVtbl, DestroySampler)},
-     {"vkDestroySemaphore", offsetof(DeviceVtbl, DestroySemaphore)},
--    {"vkDestroyShader", offsetof(DeviceVtbl, DestroyShader)},
-     {"vkDestroyShaderModule", offsetof(DeviceVtbl, DestroyShaderModule)},
-     {"vkDestroySwapchainKHR", offsetof(DeviceVtbl, DestroySwapchainKHR)},
-     {"vkDeviceWaitIdle", offsetof(DeviceVtbl, DeviceWaitIdle)},
-@@ -725,16 +721,6 @@ bool LoadDeviceVtbl(VkDevice device,
-         ALOGE("missing device proc: %s", "vkDestroyShaderModule");
-         success = false;
-     }
--    vtbl.CreateShader = reinterpret_cast<PFN_vkCreateShader>(get_proc_addr(device, "vkCreateShader"));
--    if (UNLIKELY(!vtbl.CreateShader)) {
--        ALOGE("missing device proc: %s", "vkCreateShader");
--        success = false;
--    }
--    vtbl.DestroyShader = reinterpret_cast<PFN_vkDestroyShader>(get_proc_addr(device, "vkDestroyShader"));
--    if (UNLIKELY(!vtbl.DestroyShader)) {
--        ALOGE("missing device proc: %s", "vkDestroyShader");
--        success = false;
--    }
-     vtbl.CreatePipelineCache = reinterpret_cast<PFN_vkCreatePipelineCache>(get_proc_addr(device, "vkCreatePipelineCache"));
-     if (UNLIKELY(!vtbl.CreatePipelineCache)) {
-         ALOGE("missing device proc: %s", "vkCreatePipelineCache");
-@@ -1166,7 +1152,7 @@ bool LoadDeviceVtbl(VkDevice device,
-     vtbl.QueueSignalNativeFenceANDROID = reinterpret_cast<PFN_vkQueueSignalNativeFenceANDROID>(get_proc_addr(device, "vkQueueSignalNativeFenceANDROID"));
-     if (!((!vtbl.AcquireImageANDROID && !vtbl.QueueSignalReleaseImageANDROID && vtbl.ImportNativeFenceANDROID && vtbl.QueueSignalNativeFenceANDROID) ||
-     (vtbl.AcquireImageANDROID && vtbl.QueueSignalReleaseImageANDROID && !vtbl.ImportNativeFenceANDROID && !vtbl.QueueSignalNativeFenceANDROID))) {
--        ALOGE("driver doesn't support exactly one of old- or new-style VK_EXT_ANDROID_native_buffer commands");
-+        ALOGE("driver doesn't support exactly one of old- or new-style VK_ANDROID_native_buffer commands");
-         success = false;
-     }
-     // clang-format on
-diff --git a/vulkan/libvulkan/get_proc_addr.cpp.tmpl b/vulkan/libvulkan/get_proc_addr.cpp.tmpl
-index 217647f..aad177d 100644
---- a/vulkan/libvulkan/get_proc_addr.cpp.tmpl
-+++ b/vulkan/libvulkan/get_proc_addr.cpp.tmpl
-@@ -255,7 +255,7 @@ bool LoadDeviceVtbl(VkDevice device,
-     vtbl.QueueSignalNativeFenceANDROID = reinterpret_cast<PFN_vkQueueSignalNativeFenceANDROID>(get_proc_addr(device, "vkQueueSignalNativeFenceANDROID"));
-     if (!((!vtbl.AcquireImageANDROID && !vtbl.QueueSignalReleaseImageANDROID && vtbl.ImportNativeFenceANDROID && vtbl.QueueSignalNativeFenceANDROID) ||
-           (vtbl.AcquireImageANDROID && vtbl.QueueSignalReleaseImageANDROID && !vtbl.ImportNativeFenceANDROID && !vtbl.QueueSignalNativeFenceANDROID))) {
--        ALOGE("driver doesn't support exactly one of old- or new-style VK_EXT_ANDROID_native_buffer commands");
-+        ALOGE("driver doesn't support exactly one of old- or new-style VK_ANDROID_native_buffer commands");
-         success = false;
-     }
-     // clang-format on
-@@ -277,13 +277,13 @@ bool LoadDeviceVtbl(VkDevice device,
- */}}
- {{define "IsUnsupportedExtension"}}
-   {{$ext := index $.Arguments 0}}
--  {{     if eq $ext "VK_EXT_KHR_display"}}true
--  {{else if eq $ext "VK_EXT_KHR_display_swapchain"}}true
--  {{else if eq $ext "VK_EXT_KHR_xlib_surface"}}true
--  {{else if eq $ext "VK_EXT_KHR_xcb_surface"}}true
--  {{else if eq $ext "VK_EXT_KHR_wayland_surface"}}true
--  {{else if eq $ext "VK_EXT_KHR_mir_surface"}}true
--  {{else if eq $ext "VK_EXT_KHR_win32_surface"}}true
-+  {{     if eq $ext "VK_KHR_display"}}true
-+  {{else if eq $ext "VK_KHR_display_swapchain"}}true
-+  {{else if eq $ext "VK_KHR_xlib_surface"}}true
-+  {{else if eq $ext "VK_KHR_xcb_surface"}}true
-+  {{else if eq $ext "VK_KHR_wayland_surface"}}true
-+  {{else if eq $ext "VK_KHR_mir_surface"}}true
-+  {{else if eq $ext "VK_KHR_win32_surface"}}true
-   {{end}}
- {{end}}
- 
-diff --git a/vulkan/libvulkan/loader.h b/vulkan/libvulkan/loader.h
-index bf71c8f..5765d65 100644
---- a/vulkan/libvulkan/loader.h
-+++ b/vulkan/libvulkan/loader.h
-@@ -20,7 +20,7 @@
- #define VK_PROTOTYPES
- #define VK_USE_PLATFORM_ANDROID_KHR
- #include <vulkan/vulkan.h>
--#include <vulkan/vk_ext_android_native_buffer.h>
-+#include <vulkan/vk_android_native_buffer.h>
- 
- namespace vulkan {
- 
-@@ -105,8 +105,6 @@ struct DeviceVtbl {
-     PFN_vkDestroyImageView DestroyImageView;
-     PFN_vkCreateShaderModule CreateShaderModule;
-     PFN_vkDestroyShaderModule DestroyShaderModule;
--    PFN_vkCreateShader CreateShader;
--    PFN_vkDestroyShader DestroyShader;
-     PFN_vkCreatePipelineCache CreatePipelineCache;
-     PFN_vkDestroyPipelineCache DestroyPipelineCache;
-     PFN_vkGetPipelineCacheData GetPipelineCacheData;
-diff --git a/vulkan/nulldrv/null_driver.cpp b/vulkan/nulldrv/null_driver.cpp
-index 85d018b..e75eb3a 100644
---- a/vulkan/nulldrv/null_driver.cpp
-+++ b/vulkan/nulldrv/null_driver.cpp
-@@ -81,7 +81,6 @@ enum Enum {
-     kRenderPass,
-     kSampler,
-     kSemaphore,
--    kShader,
-     kShaderModule,
- 
-     kNumTypes
-@@ -705,14 +704,6 @@ VkResult CreateSemaphore(VkDevice device,
-     return VK_SUCCESS;
- }
- 
--VkResult CreateShader(VkDevice device,
--                      const VkShaderCreateInfo*,
--                      const VkAllocationCallbacks* /*allocator*/,
--                      VkShader* shader) {
--    *shader = AllocHandle(device, HandleType::kShader);
--    return VK_SUCCESS;
--}
--
- VkResult CreateShaderModule(VkDevice device,
-                             const VkShaderModuleCreateInfo*,
-                             const VkAllocationCallbacks* /*allocator*/,
-@@ -884,9 +875,6 @@ void DestroyImageView(VkDevice device, VkImageView imageView, const VkAllocation
- void DestroyShaderModule(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* allocator) {
- }
- 
--void DestroyShader(VkDevice device, VkShader shader, const VkAllocationCallbacks* allocator) {
--}
--
- void DestroyPipelineCache(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* allocator) {
- }
- 
-diff --git a/vulkan/nulldrv/null_driver.h b/vulkan/nulldrv/null_driver.h
-index 91b8d34..6d14e57 100644
---- a/vulkan/nulldrv/null_driver.h
-+++ b/vulkan/nulldrv/null_driver.h
-@@ -19,7 +19,7 @@
- 
- #define VK_PROTOTYPES
- #include <vulkan/vulkan.h>
--#include <vulkan/vk_ext_android_native_buffer.h>
-+#include <vulkan/vk_android_native_buffer.h>
- 
- namespace null_driver {
- 
-@@ -87,8 +87,6 @@ VkResult CreateImageView(VkDevice device, const VkImageViewCreateInfo* pCreateIn
- void DestroyImageView(VkDevice device, VkImageView imageView, const VkAllocationCallbacks* allocator);
- VkResult CreateShaderModule(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkShaderModule* pShaderModule);
- void DestroyShaderModule(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* allocator);
--VkResult CreateShader(VkDevice device, const VkShaderCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkShader* pShader);
--void DestroyShader(VkDevice device, VkShader shader, const VkAllocationCallbacks* allocator);
- VkResult CreatePipelineCache(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkPipelineCache* pPipelineCache);
- void DestroyPipelineCache(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* allocator);
- VkResult GetPipelineCacheData(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData);
-diff --git a/vulkan/nulldrv/null_driver_gen.cpp b/vulkan/nulldrv/null_driver_gen.cpp
-index 9b1b042..c732131 100644
---- a/vulkan/nulldrv/null_driver_gen.cpp
-+++ b/vulkan/nulldrv/null_driver_gen.cpp
-@@ -135,7 +135,6 @@ const NameProcEntry kDeviceProcTbl[] = {
-     {"vkCreateRenderPass", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkCreateRenderPass>(CreateRenderPass))},
-     {"vkCreateSampler", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkCreateSampler>(CreateSampler))},
-     {"vkCreateSemaphore", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkCreateSemaphore>(CreateSemaphore))},
--    {"vkCreateShader", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkCreateShader>(CreateShader))},
-     {"vkCreateShaderModule", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkCreateShaderModule>(CreateShaderModule))},
-     {"vkDestroyBuffer", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkDestroyBuffer>(DestroyBuffer))},
-     {"vkDestroyBufferView", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkDestroyBufferView>(DestroyBufferView))},
-@@ -155,7 +154,6 @@ const NameProcEntry kDeviceProcTbl[] = {
-     {"vkDestroyRenderPass", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkDestroyRenderPass>(DestroyRenderPass))},
-     {"vkDestroySampler", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkDestroySampler>(DestroySampler))},
-     {"vkDestroySemaphore", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkDestroySemaphore>(DestroySemaphore))},
--    {"vkDestroyShader", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkDestroyShader>(DestroyShader))},
-     {"vkDestroyShaderModule", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkDestroyShaderModule>(DestroyShaderModule))},
-     {"vkDeviceWaitIdle", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkDeviceWaitIdle>(DeviceWaitIdle))},
-     {"vkEndCommandBuffer", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vkEndCommandBuffer>(EndCommandBuffer))},
--- 
-2.6.0.rc2.230.g3dd15c0
-
diff --git a/vulkan/patches/frameworks_native-sdk_0.10/0022-vulkan-Update-from-version-0.200.0-to-0.202.0.patch b/vulkan/patches/frameworks_native-sdk_0.10/0022-vulkan-Update-from-version-0.200.0-to-0.202.0.patch
deleted file mode 100644
index 8c12abe..0000000
--- a/vulkan/patches/frameworks_native-sdk_0.10/0022-vulkan-Update-from-version-0.200.0-to-0.202.0.patch
+++ /dev/null
@@ -1,497 +0,0 @@
-From 5b9c3a1af7088351d49431a496ef9f7fd078e9f6 Mon Sep 17 00:00:00 2001
-From: Jesse Hall <jessehall@google.com>
-Date: Mon, 30 Nov 2015 00:55:29 -0800
-Subject: [PATCH] vulkan: Update from version 0.200.0 to 0.202.0
-
-Change-Id: If8eb49cd7e5516931f9900b691d6d32af2aa98b0
----
- vulkan/api/vulkan.api          | 45 +++++++++++++------------
- vulkan/include/vulkan/vulkan.h | 74 +++++++++++++++++++++++-------------------
- vulkan/libvulkan/entry.cpp     |  2 +-
- vulkan/libvulkan/loader.cpp    |  2 +-
- vulkan/libvulkan/swapchain.cpp |  2 +-
- vulkan/nulldrv/null_driver.cpp |  2 +-
- vulkan/nulldrv/null_driver.h   |  2 +-
- 7 files changed, 71 insertions(+), 58 deletions(-)
-
-diff --git a/vulkan/api/vulkan.api b/vulkan/api/vulkan.api
-index 0296b0f..89ed617 100644
---- a/vulkan/api/vulkan.api
-+++ b/vulkan/api/vulkan.api
-@@ -27,7 +27,7 @@ import platform "platform.api"
- 
- // API version (major.minor.patch)
- define VERSION_MAJOR 0
--define VERSION_MINOR 200
-+define VERSION_MINOR 202
- define VERSION_PATCH 0
- 
- // API limits
-@@ -243,7 +243,7 @@ enum VkPrimitiveTopology {
-     VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY         = 0x00000007,
-     VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY      = 0x00000008,
-     VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY     = 0x00000009,
--    VK_PRIMITIVE_TOPOLOGY_PATCH                             = 0x0000000a,
-+    VK_PRIMITIVE_TOPOLOGY_PATCH_LIST                        = 0x0000000a,
- }
- 
- enum VkSharingMode {
-@@ -628,7 +628,7 @@ enum VkSubpassContents {
-     VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS           = 0x00000001,
- }
- 
--@lastUnused(-8)
-+@lastUnused(-10)
- /// Error and return codes
- enum VkResult {
-     // Return codes for successful operation execution (positive values)
-@@ -652,6 +652,7 @@ enum VkResult {
-     VK_ERROR_EXTENSION_NOT_PRESENT                          = 0xFFFFFFF9,
-     VK_ERROR_FEATURE_NOT_PRESENT                            = 0xFFFFFFF8,
-     VK_ERROR_INCOMPATIBLE_DRIVER                            = 0xFFFFFFF7,
-+    VK_ERROR_TOO_MANY_OBJECTS                               = 0xFFFFFFF6,
- 
-     //@extension("VK_KHR_surface")
-     VK_ERROR_SURFACE_LOST_KHR                               = 0xC0000400,
-@@ -942,8 +943,9 @@ bitfield VkImageAspectFlagBits {
- 
- /// Sparse memory bind flags
- type VkFlags VkSparseMemoryBindFlags
--//bitfield VkSparseMemoryBindFlagBits {
--//}
-+bitfield VkSparseMemoryBindFlagBits {
-+    VK_SPARSE_MEMORY_BIND_METADATA_BIT                      = 0x00000001,
-+}
- 
- /// Sparse image memory requirements flags
- type VkFlags VkSparseImageFormatFlags
-@@ -971,8 +973,8 @@ bitfield VkPipelineStageFlagBits {
-     VK_PIPELINE_STAGE_TRANSFER_BIT                          = 0x00001000,  /// Transfer/copy operations
-     VK_PIPELINE_STAGE_HOST_BIT                              = 0x00002000,  /// Indicates host (CPU) is a source/sink of the dependency
- 
--    VK_PIPELINE_STAGE_ALL_GRAPHICS                          = 0x000007FF,  /// All stages of the graphics pipeline
--    VK_PIPELINE_STAGE_ALL_GPU_COMMANDS                      = 0x00001FFF,  /// All graphics, compute, copy, and transition commands
-+    VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT                      = 0x00004000,  /// All stages of the graphics pipeline
-+    VK_PIPELINE_STAGE_ALL_COMMANDS_BIT                      = 0x00008000,  /// All graphics, compute, copy, and transition commands
- }
- 
- /// Render pass attachment description flags
-@@ -1504,7 +1506,7 @@ class VkImageCreateInfo {
-     VkExtent3D                                  extent
-     u32                                         mipLevels
-     u32                                         arrayLayers
--    u32                                         samples
-+    VkSampleCountFlagBits                       samples
-     VkImageTiling                               tiling
-     VkImageUsageFlags                           usage                      /// Image usage flags
-     VkSharingMode                               sharingMode                /// Cross-queue-family sharing mode
-@@ -1637,6 +1639,7 @@ class VkShaderModuleCreateInfo {
- }
- 
- class VkDescriptorSetLayoutBinding {
-+    u32                                         binding
-     VkDescriptorType                            descriptorType     /// Type of the descriptors in this binding
-     u32                                         arraySize          /// Number of descriptors in this binding
-     VkShaderStageFlags                          stageFlags         /// Shader stages this binding is visible to
-@@ -1774,7 +1777,7 @@ class VkPipelineMultisampleStateCreateInfo {
-     VkStructureType                             sType      /// Must be VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO
-     const void*                                 pNext      /// Pointer to next structure
-     VkPipelineMultisampleStateCreateFlags       flags
--    u32                                         rasterizationSamples       /// Number of samples used for rasterization
-+    VkSampleCountFlagBits                       rasterizationSamples       /// Number of samples used for rasterization
-     VkBool32                                    sampleShadingEnable        /// optional (GL45)
-     f32                                         minSampleShading           /// optional (GL45)
-     const VkSampleMask*                         pSampleMask
-@@ -1966,7 +1969,7 @@ class VkClearAttachment {
- class VkAttachmentDescription {
-     VkAttachmentDescriptionFlags                flags
-     VkFormat                                    format
--    u32                                         samples
-+    VkSampleCountFlagBits                       samples
-     VkAttachmentLoadOp                          loadOp          /// Load op for color or depth data
-     VkAttachmentStoreOp                         storeOp         /// Store op for color or depth data
-     VkAttachmentLoadOp                          stencilLoadOp   /// Load op for stencil data
-@@ -2090,13 +2093,13 @@ class VkPhysicalDeviceLimits {
-     u32                                         maxImageDimension3D                       /// max 3D image dimension
-     u32                                         maxImageDimensionCube                     /// max cubemap image dimension
-     u32                                         maxImageArrayLayers                       /// max layers for image arrays
--    VkSampleCountFlags                          sampleCounts                              /// sample counts supported for all images supporting rendering and sampling
-     u32                                         maxTexelBufferElements
-     u32                                         maxUniformBufferRange                     /// max uniform buffer size (bytes)
-     u32                                         maxStorageBufferRange                     /// max storage buffer size (bytes)
-     u32                                         maxPushConstantsSize                      /// max size of the push constants pool (bytes)
-     /// memory limits
-     u32                                         maxMemoryAllocationCount                  /// max number of device memory allocations supported
-+    u32                                         maxSamplerAllocationCount
-     VkDeviceSize                                bufferImageGranularity                    /// Granularity (in bytes) at which buffers and images can be bound to adjacent memory for simultaneous usage
-     VkDeviceSize                                sparseAddressSpaceSize                    /// Total address space available for sparse allocations (bytes)
-     /// descriptor set limits
-@@ -2176,16 +2179,17 @@ class VkPhysicalDeviceLimits {
-     u32                                         maxFramebufferWidth                       /// max width for a framebuffer
-     u32                                         maxFramebufferHeight                      /// max height for a framebuffer
-     u32                                         maxFramebufferLayers                      /// max layer count for a layered framebuffer
--    u32                                         maxFramebufferColorSamples                /// max color sample count for a framebuffer
--    u32                                         maxFramebufferDepthSamples                /// max depth sample count for a framebuffer
--    u32                                         maxFramebufferStencilSamples              /// max stencil sample count for a framebuffer
-+    VkSampleCountFlags                          framebufferColorSampleCounts
-+    VkSampleCountFlags                          framebufferDepthSampleCounts
-+    VkSampleCountFlags                          framebufferStencilSampleCounts
-+    VkSampleCountFlags                          framebufferNoAttachmentSampleCounts
-     u32                                         maxColorAttachments                       /// max num of framebuffer color attachments
- 
--    u32                                         maxSampledImageColorSamples               /// max num of color samples for a non-integer sampled image
--    u32                                         maxSampledImageDepthSamples               /// max num of depth samples for a sampled image
--    u32                                         maxSampledImageStencilSamples             /// max num of stencil samples for a sampled image
--    u32                                         maxSampledImageIntegerSamples             /// max num of samples supported for an integer image
--    u32                                         maxStorageImageSamples                    /// max num of samples for a storage image
-+    VkSampleCountFlags                          sampledImageColorSampleCounts
-+    VkSampleCountFlags                          sampledImageIntegerSampleCounts
-+    VkSampleCountFlags                          sampledImageDepthSampleCounts
-+    VkSampleCountFlags                          sampledImageStencilSampleCounts
-+    VkSampleCountFlags                          storageImageSampleCounts
-     u32                                         maxSampleMaskWords                        /// max num of sample mask words
- 
-     f32                                         timestampPeriod
-@@ -2201,6 +2205,7 @@ class VkPhysicalDeviceLimits {
-     f32                                         pointSizeGranularity                      /// granularity of supported point sizes
-     f32                                         lineWidthGranularity                      /// granularity of supported line widths
-     VkBool32                                    strictLines
-+    VkBool32                                    standardSampleLocations
- 
-     VkDeviceSize                                optimalBufferCopyOffsetAlignment
-     VkDeviceSize                                optimalBufferCopyRowPitchAlignment
-@@ -2948,7 +2953,7 @@ cmd void vkGetPhysicalDeviceSparseImageFormatProperties(
-         VkPhysicalDevice                            physicalDevice,
-         VkFormat                                    format,
-         VkImageType                                 type,
--        u32                                         samples,
-+        VkSampleCountFlagBits                       samples,
-         VkImageUsageFlags                           usage,
-         VkImageTiling                               tiling,
-         u32*                                        pPropertyCount,
-diff --git a/vulkan/include/vulkan/vulkan.h b/vulkan/include/vulkan/vulkan.h
-index 2e66e27..ca00976 100644
---- a/vulkan/include/vulkan/vulkan.h
-+++ b/vulkan/include/vulkan/vulkan.h
-@@ -41,7 +41,7 @@ extern "C" {
-     ((major << 22) | (minor << 12) | patch)
- 
- // Vulkan API version supported by this file
--#define VK_API_VERSION VK_MAKE_VERSION(0, 200, 0)
-+#define VK_API_VERSION VK_MAKE_VERSION(0, 202, 0)
- 
- 
- #define VK_NULL_HANDLE 0
-@@ -123,9 +123,10 @@ typedef enum VkResult {
-     VK_ERROR_EXTENSION_NOT_PRESENT = -7,
-     VK_ERROR_FEATURE_NOT_PRESENT = -8,
-     VK_ERROR_INCOMPATIBLE_DRIVER = -9,
--    VK_RESULT_BEGIN_RANGE = VK_ERROR_INCOMPATIBLE_DRIVER,
-+    VK_ERROR_TOO_MANY_OBJECTS = -10,
-+    VK_RESULT_BEGIN_RANGE = VK_ERROR_TOO_MANY_OBJECTS,
-     VK_RESULT_END_RANGE = VK_INCOMPLETE,
--    VK_RESULT_RANGE_SIZE = (VK_INCOMPLETE - VK_ERROR_INCOMPATIBLE_DRIVER + 1),
-+    VK_RESULT_RANGE_SIZE = (VK_INCOMPLETE - VK_ERROR_TOO_MANY_OBJECTS + 1),
-     VK_RESULT_MAX_ENUM = 0x7FFFFFFF
- } VkResult;
- 
-@@ -499,10 +500,10 @@ typedef enum VkPrimitiveTopology {
-     VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7,
-     VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8,
-     VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9,
--    VK_PRIMITIVE_TOPOLOGY_PATCH = 10,
-+    VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10,
-     VK_PRIMITIVE_TOPOLOGY_BEGIN_RANGE = VK_PRIMITIVE_TOPOLOGY_POINT_LIST,
--    VK_PRIMITIVE_TOPOLOGY_END_RANGE = VK_PRIMITIVE_TOPOLOGY_PATCH,
--    VK_PRIMITIVE_TOPOLOGY_RANGE_SIZE = (VK_PRIMITIVE_TOPOLOGY_PATCH - VK_PRIMITIVE_TOPOLOGY_POINT_LIST + 1),
-+    VK_PRIMITIVE_TOPOLOGY_END_RANGE = VK_PRIMITIVE_TOPOLOGY_PATCH_LIST,
-+    VK_PRIMITIVE_TOPOLOGY_RANGE_SIZE = (VK_PRIMITIVE_TOPOLOGY_PATCH_LIST - VK_PRIMITIVE_TOPOLOGY_POINT_LIST + 1),
-     VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 0x7FFFFFFF
- } VkPrimitiveTopology;
- 
-@@ -838,6 +839,10 @@ typedef enum VkSparseImageFormatFlagBits {
-     VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 0x00000004,
- } VkSparseImageFormatFlagBits;
- typedef VkFlags VkSparseImageFormatFlags;
-+
-+typedef enum VkSparseMemoryBindFlagBits {
-+    VK_SPARSE_MEMORY_BIND_METADATA_BIT = 0x00000001,
-+} VkSparseMemoryBindFlagBits;
- typedef VkFlags VkSparseMemoryBindFlags;
- 
- typedef enum VkFenceCreateFlagBits {
-@@ -973,8 +978,8 @@ typedef enum VkPipelineStageFlagBits {
-     VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 0x00000800,
-     VK_PIPELINE_STAGE_TRANSFER_BIT = 0x00001000,
-     VK_PIPELINE_STAGE_HOST_BIT = 0x00002000,
--    VK_PIPELINE_STAGE_ALL_GRAPHICS = 0x000007FF,
--    VK_PIPELINE_STAGE_ALL_GPU_COMMANDS = 0x00001FFF,
-+    VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00004000,
-+    VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00008000,
- } VkPipelineStageFlagBits;
- typedef VkFlags VkPipelineStageFlags;
- 
-@@ -1183,12 +1188,12 @@ typedef struct VkPhysicalDeviceLimits {
-     uint32_t                                    maxImageDimension3D;
-     uint32_t                                    maxImageDimensionCube;
-     uint32_t                                    maxImageArrayLayers;
--    VkSampleCountFlags                          sampleCounts;
-     uint32_t                                    maxTexelBufferElements;
-     uint32_t                                    maxUniformBufferRange;
-     uint32_t                                    maxStorageBufferRange;
-     uint32_t                                    maxPushConstantsSize;
-     uint32_t                                    maxMemoryAllocationCount;
-+    uint32_t                                    maxSamplerAllocationCount;
-     VkDeviceSize                                bufferImageGranularity;
-     VkDeviceSize                                sparseAddressSpaceSize;
-     uint32_t                                    maxBoundDescriptorSets;
-@@ -1255,15 +1260,16 @@ typedef struct VkPhysicalDeviceLimits {
-     uint32_t                                    maxFramebufferWidth;
-     uint32_t                                    maxFramebufferHeight;
-     uint32_t                                    maxFramebufferLayers;
--    uint32_t                                    maxFramebufferColorSamples;
--    uint32_t                                    maxFramebufferDepthSamples;
--    uint32_t                                    maxFramebufferStencilSamples;
-+    VkSampleCountFlags                          framebufferColorSampleCounts;
-+    VkSampleCountFlags                          framebufferDepthSampleCounts;
-+    VkSampleCountFlags                          framebufferStencilSampleCounts;
-+    VkSampleCountFlags                          framebufferNoAttachmentsSampleCounts;
-     uint32_t                                    maxColorAttachments;
--    uint32_t                                    maxSampledImageColorSamples;
--    uint32_t                                    maxSampledImageDepthSamples;
--    uint32_t                                    maxSampledImageStencilSamples;
--    uint32_t                                    maxSampledImageIntegerSamples;
--    uint32_t                                    maxStorageImageSamples;
-+    VkSampleCountFlags                          sampledImageColorSampleCounts;
-+    VkSampleCountFlags                          sampledImageIntegerSampleCounts;
-+    VkSampleCountFlags                          sampledImageDepthSampleCounts;
-+    VkSampleCountFlags                          sampledImageStencilSampleCounts;
-+    VkSampleCountFlags                          storageImageSampleCounts;
-     uint32_t                                    maxSampleMaskWords;
-     float                                       timestampPeriod;
-     uint32_t                                    maxClipDistances;
-@@ -1275,6 +1281,7 @@ typedef struct VkPhysicalDeviceLimits {
-     float                                       pointSizeGranularity;
-     float                                       lineWidthGranularity;
-     VkBool32                                    strictLines;
-+    VkBool32                                    standardSampleLocations;
-     VkDeviceSize                                optimalBufferCopyOffsetAlignment;
-     VkDeviceSize                                optimalBufferCopyRowPitchAlignment;
- } VkPhysicalDeviceLimits;
-@@ -1522,7 +1529,7 @@ typedef struct VkImageCreateInfo {
-     VkExtent3D                                  extent;
-     uint32_t                                    mipLevels;
-     uint32_t                                    arrayLayers;
--    uint32_t                                    samples;
-+    VkSampleCountFlagBits                       samples;
-     VkImageTiling                               tiling;
-     VkImageUsageFlags                           usage;
-     VkSharingMode                               sharingMode;
-@@ -1695,7 +1702,7 @@ typedef struct VkPipelineMultisampleStateCreateInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkPipelineMultisampleStateCreateFlags       flags;
--    uint32_t                                    rasterizationSamples;
-+    VkSampleCountFlagBits                       rasterizationSamples;
-     VkBool32                                    sampleShadingEnable;
-     float                                       minSampleShading;
-     const VkSampleMask*                         pSampleMask;
-@@ -1827,6 +1834,7 @@ typedef struct VkSamplerCreateInfo {
- } VkSamplerCreateInfo;
- 
- typedef struct VkDescriptorSetLayoutBinding {
-+    uint32_t                                    binding;
-     VkDescriptorType                            descriptorType;
-     uint32_t                                    arraySize;
-     VkShaderStageFlags                          stageFlags;
-@@ -1915,7 +1923,7 @@ typedef struct VkFramebufferCreateInfo {
- typedef struct VkAttachmentDescription {
-     VkAttachmentDescriptionFlags                flags;
-     VkFormat                                    format;
--    uint32_t                                    samples;
-+    VkSampleCountFlagBits                       samples;
-     VkAttachmentLoadOp                          loadOp;
-     VkAttachmentStoreOp                         storeOp;
-     VkAttachmentLoadOp                          stencilLoadOp;
-@@ -2160,7 +2168,7 @@ typedef VkResult (VKAPI *PFN_vkBindImageMemory)(VkDevice device, VkImage image,
- typedef void (VKAPI *PFN_vkGetBufferMemoryRequirements)(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements);
- typedef void (VKAPI *PFN_vkGetImageMemoryRequirements)(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements);
- typedef void (VKAPI *PFN_vkGetImageSparseMemoryRequirements)(VkDevice device, VkImage image, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
--typedef void (VKAPI *PFN_vkGetPhysicalDeviceSparseImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, uint32_t samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties);
-+typedef void (VKAPI *PFN_vkGetPhysicalDeviceSparseImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties);
- typedef VkResult (VKAPI *PFN_vkQueueBindSparse)(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence);
- typedef VkResult (VKAPI *PFN_vkCreateFence)(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
- typedef void (VKAPI *PFN_vkDestroyFence)(VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator);
-@@ -2437,7 +2445,7 @@ void VKAPI vkGetPhysicalDeviceSparseImageFormatProperties(
-     VkPhysicalDevice                            physicalDevice,
-     VkFormat                                    format,
-     VkImageType                                 type,
--    uint32_t                                    samples,
-+    VkSampleCountFlagBits                       samples,
-     VkImageUsageFlags                           usage,
-     VkImageTiling                               tiling,
-     uint32_t*                                   pPropertyCount,
-@@ -3054,7 +3062,7 @@ void VKAPI vkCmdExecuteCommands(
-     const VkCommandBuffer*                      pCommandBuffers);
- #endif
- 
--#define vk_khr_surface 1
-+#define VK_KHR_surface 1
- VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR)
- 
- #define VK_KHR_SURFACE_REVISION           22
-@@ -3174,7 +3182,7 @@ VkResult VKAPI vkGetPhysicalDeviceSurfacePresentModesKHR(
-     VkPresentModeKHR*                           pPresentModes);
- #endif
- 
--#define vk_khr_swapchain 1
-+#define VK_KHR_swapchain 1
- VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSwapchainKHR)
- 
- #define VK_KHR_SWAPCHAIN_REVISION         64
-@@ -3252,7 +3260,7 @@ VkResult VKAPI vkQueuePresentKHR(
-     VkPresentInfoKHR*                            pPresentInfo);
- #endif
- 
--#define vk_khr_display 1
-+#define VK_KHR_display 1
- VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayKHR)
- VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayModeKHR)
- 
-@@ -3374,7 +3382,7 @@ VkResult VKAPI vkCreateDisplayPlaneSurfaceKHR(
-     VkSurfaceKHR*                               pSurface);
- #endif
- 
--#define vk_khr_display_swapchain 1
-+#define VK_KHR_display_swapchain 1
- #define VK_KHR_DISPLAY_SWAPCHAIN_REVISION 7
- #define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NUMBER 4
- #define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME "VK_KHR_display_swapchain"
-@@ -3399,12 +3407,12 @@ typedef struct VkDisplayPresentInfoKHR {
- 
- 
- #ifdef VK_USE_PLATFORM_XLIB_KHR
--#define vk_khr_xlib_surface 1
-+#define VK_KHR_xlib_surface 1
- #include <X11/Xlib.h>
- 
- #define VK_KHR_XLIB_SURFACE_REVISION      4
- #define VK_KHR_XLIB_SURFACE_EXTENSION_NUMBER 5
--#define VK_KHR_XLIB_SURFACE_EXTENSION_NAME "vk_khr_xlib_surface"
-+#define VK_KHR_XLIB_SURFACE_EXTENSION_NAME "VK_KHR_xlib_surface"
- 
- typedef VkResult (VKAPI *PFN_vkCreateXlibSurfaceKHR)(VkInstance instance, Display* dpy, Window window, VkSurfaceKHR* pSurface);
- typedef VkBool32 (VKAPI *PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, Display* dpy, VisualID visualID);
-@@ -3425,7 +3433,7 @@ VkBool32 VKAPI vkGetPhysicalDeviceXlibPresentationSupportKHR(
- #endif /* VK_USE_PLATFORM_XLIB_KHR */
- 
- #ifdef VK_USE_PLATFORM_XCB_KHR
--#define vk_khr_xcb_surface 1
-+#define VK_KHR_xcb_surface 1
- #include <xcb/xcb.h>
- 
- #define VK_KHR_XCB_SURFACE_REVISION       4
-@@ -3451,7 +3459,7 @@ VkBool32 VKAPI vkGetPhysicalDeviceXcbPresentationSupportKHR(
- #endif /* VK_USE_PLATFORM_XCB_KHR */
- 
- #ifdef VK_USE_PLATFORM_WAYLAND_KHR
--#define vk_khr_wayland_surface 1
-+#define VK_KHR_wayland_surface 1
- #include <wayland-client.h>
- 
- #define VK_KHR_WAYLAND_SURFACE_REVISION   3
-@@ -3476,7 +3484,7 @@ VkBool32 VKAPI vkGetPhysicalDeviceWaylandPresentationSupportKHR(
- #endif /* VK_USE_PLATFORM_WAYLAND_KHR */
- 
- #ifdef VK_USE_PLATFORM_MIR_KHR
--#define vk_khr_mir_surface 1
-+#define VK_KHR_mir_surface 1
- #include <mir_toolkit/client_types.h>
- 
- #define VK_KHR_MIR_SURFACE_REVISION       3
-@@ -3501,7 +3509,7 @@ VkBool32 VKAPI vkGetPhysicalDeviceMirPresentationSupportKHR(
- #endif /* VK_USE_PLATFORM_MIR_KHR */
- 
- #ifdef VK_USE_PLATFORM_ANDROID_KHR
--#define vk_khr_android_surface 1
-+#define VK_KHR_android_surface 1
- #include <android/native_window.h>
- 
- #define VK_KHR_ANDROID_SURFACE_REVISION   2
-@@ -3521,7 +3529,7 @@ VkResult VKAPI vkCreateAndroidSurfaceKHR(
- #endif /* VK_USE_PLATFORM_ANDROID_KHR */
- 
- #ifdef VK_USE_PLATFORM_WIN32_KHR
--#define vk_khr_win32_surface 1
-+#define VK_KHR_win32_surface 1
- #include <windows.h>
- 
- #define VK_KHR_WIN32_SURFACE_REVISION     3
-diff --git a/vulkan/libvulkan/entry.cpp b/vulkan/libvulkan/entry.cpp
-index 9037e17..0e01d4e 100644
---- a/vulkan/libvulkan/entry.cpp
-+++ b/vulkan/libvulkan/entry.cpp
-@@ -207,7 +207,7 @@ void vkGetImageSparseMemoryRequirements(VkDevice device, VkImage image, uint32_t
- }
- 
- __attribute__((visibility("default")))
--void vkGetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, uint32_t samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties) {
-+void vkGetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties) {
-     GetVtbl(physicalDevice).GetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties);
- }
- 
-diff --git a/vulkan/libvulkan/loader.cpp b/vulkan/libvulkan/loader.cpp
-index d1b369e..9d0166b 100644
---- a/vulkan/libvulkan/loader.cpp
-+++ b/vulkan/libvulkan/loader.cpp
-@@ -864,7 +864,7 @@ void GetPhysicalDeviceSparseImageFormatPropertiesBottom(
-     VkPhysicalDevice pdev,
-     VkFormat format,
-     VkImageType type,
--    uint32_t samples,
-+    VkSampleCountFlagBits samples,
-     VkImageUsageFlags usage,
-     VkImageTiling tiling,
-     uint32_t* properties_count,
-diff --git a/vulkan/libvulkan/swapchain.cpp b/vulkan/libvulkan/swapchain.cpp
-index 5b35506..d93a80f 100644
---- a/vulkan/libvulkan/swapchain.cpp
-+++ b/vulkan/libvulkan/swapchain.cpp
-@@ -405,7 +405,7 @@ VkResult CreateSwapchainKHR(VkDevice device,
-         .extent = {0, 0, 1},
-         .mipLevels = 1,
-         .arrayLayers = 1,
--        .samples = 1,
-+        .samples = VK_SAMPLE_COUNT_1_BIT,
-         .tiling = VK_IMAGE_TILING_OPTIMAL,
-         .usage = create_info->imageUsageFlags,
-         .flags = 0,
-diff --git a/vulkan/nulldrv/null_driver.cpp b/vulkan/nulldrv/null_driver.cpp
-index e75eb3a..8f0a0e5 100644
---- a/vulkan/nulldrv/null_driver.cpp
-+++ b/vulkan/nulldrv/null_driver.cpp
-@@ -808,7 +808,7 @@ void GetImageSparseMemoryRequirements(VkDevice device, VkImage image, uint32_t*
-     ALOGV("TODO: vk%s", __FUNCTION__);
- }
- 
--void GetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, uint32_t samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pNumProperties, VkSparseImageFormatProperties* pProperties) {
-+void GetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pNumProperties, VkSparseImageFormatProperties* pProperties) {
-     ALOGV("TODO: vk%s", __FUNCTION__);
- }
- 
-diff --git a/vulkan/nulldrv/null_driver.h b/vulkan/nulldrv/null_driver.h
-index 6d14e57..0ed9cd0 100644
---- a/vulkan/nulldrv/null_driver.h
-+++ b/vulkan/nulldrv/null_driver.h
-@@ -59,7 +59,7 @@ VkResult BindImageMemory(VkDevice device, VkImage image, VkDeviceMemory mem, VkD
- void GetBufferMemoryRequirements(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements);
- void GetImageMemoryRequirements(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements);
- void GetImageSparseMemoryRequirements(VkDevice device, VkImage image, uint32_t* pNumRequirements, VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
--void GetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, uint32_t samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pNumProperties, VkSparseImageFormatProperties* pProperties);
-+void GetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pNumProperties, VkSparseImageFormatProperties* pProperties);
- VkResult QueueBindSparse(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence);
- VkResult CreateFence(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkFence* pFence);
- void DestroyFence(VkDevice device, VkFence fence, const VkAllocationCallbacks* allocator);
--- 
-2.6.0.rc2.230.g3dd15c0
-
diff --git a/vulkan/patches/frameworks_native-sdk_0.10/0023-vulkan-Update-from-version-0.202.0-to-0.203.0.patch b/vulkan/patches/frameworks_native-sdk_0.10/0023-vulkan-Update-from-version-0.202.0-to-0.203.0.patch
deleted file mode 100644
index 8e88c45..0000000
--- a/vulkan/patches/frameworks_native-sdk_0.10/0023-vulkan-Update-from-version-0.202.0-to-0.203.0.patch
+++ /dev/null
@@ -1,300 +0,0 @@
-From 5f1b8406c88d20f23e77426d4d786caca659540b Mon Sep 17 00:00:00 2001
-From: Jesse Hall <jessehall@google.com>
-Date: Mon, 30 Nov 2015 01:03:10 -0800
-Subject: [PATCH] vulkan: Update from version 0.202.0 to 0.203.0
-
-Change-Id: I21a390bd57082194f6131b118ecd6c94874d2f7f
----
- vulkan/api/vulkan.api          | 10 +++++++---
- vulkan/include/vulkan/vulkan.h | 30 ++++++++++++++++--------------
- vulkan/libvulkan/entry.cpp     |  4 ++--
- vulkan/libvulkan/loader.cpp    |  7 ++++---
- vulkan/libvulkan/swapchain.cpp |  7 +++++++
- vulkan/nulldrv/null_driver.cpp |  3 ++-
- vulkan/nulldrv/null_driver.h   |  2 +-
- 7 files changed, 39 insertions(+), 24 deletions(-)
-
-diff --git a/vulkan/api/vulkan.api b/vulkan/api/vulkan.api
-index 89ed617..3966f87 100644
---- a/vulkan/api/vulkan.api
-+++ b/vulkan/api/vulkan.api
-@@ -27,7 +27,7 @@ import platform "platform.api"
- 
- // API version (major.minor.patch)
- define VERSION_MAJOR 0
--define VERSION_MINOR 202
-+define VERSION_MINOR 203
- define VERSION_PATCH 0
- 
- // API limits
-@@ -49,7 +49,7 @@ define NULL_HANDLE 0
- @extension("VK_KHR_surface") define VK_KHR_SURFACE_EXTENSION_NUMBER             1
- @extension("VK_KHR_surface") define VK_KHR_SURFACE_EXTENSION_NAME               "VK_KHR_surface"
- 
--@extension("VK_KHR_swapchain") define VK_KHR_SWAPCHAIN_REVISION                 64
-+@extension("VK_KHR_swapchain") define VK_KHR_SWAPCHAIN_REVISION                 65
- @extension("VK_KHR_swapchain") define VK_KHR_SWAPCHAIN_EXTENSION_NUMBER         2
- @extension("VK_KHR_swapchain") define VK_KHR_SWAPCHAIN_EXTENSION_NAME           "VK_KHR_swapchain"
- 
-@@ -653,6 +653,7 @@ enum VkResult {
-     VK_ERROR_FEATURE_NOT_PRESENT                            = 0xFFFFFFF8,
-     VK_ERROR_INCOMPATIBLE_DRIVER                            = 0xFFFFFFF7,
-     VK_ERROR_TOO_MANY_OBJECTS                               = 0xFFFFFFF6,
-+    VK_ERROR_FORMAT_NOT_SUPPORTED                           = 0xFFFFFFF5,
- 
-     //@extension("VK_KHR_surface")
-     VK_ERROR_SURFACE_LOST_KHR                               = 0xC0000400,
-@@ -2317,6 +2318,7 @@ class VkPresentInfoKHR {
-     u32                                         swapchainCount
-     const VkSwapchainKHR*                       pSwapchains
-     const u32*                                  imageIndices
-+    const VkResult*                             pResults
- }
- 
- @extension("VK_KHR_display")
-@@ -2577,7 +2579,7 @@ cmd void vkGetPhysicalDeviceFormatProperties(
-     pFormatProperties[0] = formatProperties
- }
- 
--cmd void vkGetPhysicalDeviceImageFormatProperties(
-+cmd VkResult vkGetPhysicalDeviceImageFormatProperties(
-         VkPhysicalDevice                            physicalDevice,
-         VkFormat                                    format,
-         VkImageType                                 type,
-@@ -2589,6 +2591,8 @@ cmd void vkGetPhysicalDeviceImageFormatProperties(
- 
-     imageFormatProperties := ?
-     pImageFormatProperties[0] = imageFormatProperties
-+
-+    return ?
- }
- 
- 
-diff --git a/vulkan/include/vulkan/vulkan.h b/vulkan/include/vulkan/vulkan.h
-index ca00976..21bb796 100644
---- a/vulkan/include/vulkan/vulkan.h
-+++ b/vulkan/include/vulkan/vulkan.h
-@@ -41,11 +41,11 @@ extern "C" {
-     ((major << 22) | (minor << 12) | patch)
- 
- // Vulkan API version supported by this file
--#define VK_API_VERSION VK_MAKE_VERSION(0, 202, 0)
-+#define VK_API_VERSION VK_MAKE_VERSION(0, 203, 0)
- 
- 
- #define VK_NULL_HANDLE 0
--        
-+
- 
- 
- #define VK_DEFINE_HANDLE(object) typedef struct object##_T* object;
-@@ -56,7 +56,7 @@ extern "C" {
- #else
-         #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;
- #endif
--        
-+
- 
- 
- typedef uint32_t VkFlags;
-@@ -124,9 +124,10 @@ typedef enum VkResult {
-     VK_ERROR_FEATURE_NOT_PRESENT = -8,
-     VK_ERROR_INCOMPATIBLE_DRIVER = -9,
-     VK_ERROR_TOO_MANY_OBJECTS = -10,
--    VK_RESULT_BEGIN_RANGE = VK_ERROR_TOO_MANY_OBJECTS,
-+    VK_ERROR_FORMAT_NOT_SUPPORTED = -11,
-+    VK_RESULT_BEGIN_RANGE = VK_ERROR_FORMAT_NOT_SUPPORTED,
-     VK_RESULT_END_RANGE = VK_INCOMPLETE,
--    VK_RESULT_RANGE_SIZE = (VK_INCOMPLETE - VK_ERROR_TOO_MANY_OBJECTS + 1),
-+    VK_RESULT_RANGE_SIZE = (VK_INCOMPLETE - VK_ERROR_FORMAT_NOT_SUPPORTED + 1),
-     VK_RESULT_MAX_ENUM = 0x7FFFFFFF
- } VkResult;
- 
-@@ -2140,7 +2141,7 @@ typedef void (VKAPI *PFN_vkDestroyInstance)(VkInstance instance, const VkAllocat
- typedef VkResult (VKAPI *PFN_vkEnumeratePhysicalDevices)(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);
- typedef void (VKAPI *PFN_vkGetPhysicalDeviceFeatures)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures);
- typedef void (VKAPI *PFN_vkGetPhysicalDeviceFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties);
--typedef void (VKAPI *PFN_vkGetPhysicalDeviceImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties);
-+typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties);
- typedef void (VKAPI *PFN_vkGetPhysicalDeviceProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties);
- typedef void (VKAPI *PFN_vkGetPhysicalDeviceQueueFamilyProperties)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties);
- typedef void (VKAPI *PFN_vkGetPhysicalDeviceMemoryProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties);
-@@ -2297,7 +2298,7 @@ void VKAPI vkGetPhysicalDeviceFormatProperties(
-     VkFormat                                    format,
-     VkFormatProperties*                         pFormatProperties);
- 
--void VKAPI vkGetPhysicalDeviceImageFormatProperties(
-+VkResult VKAPI vkGetPhysicalDeviceImageFormatProperties(
-     VkPhysicalDevice                            physicalDevice,
-     VkFormat                                    format,
-     VkImageType                                 type,
-@@ -3185,7 +3186,7 @@ VkResult VKAPI vkGetPhysicalDeviceSurfacePresentModesKHR(
- #define VK_KHR_swapchain 1
- VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSwapchainKHR)
- 
--#define VK_KHR_SWAPCHAIN_REVISION         64
-+#define VK_KHR_SWAPCHAIN_REVISION         65
- #define VK_KHR_SWAPCHAIN_EXTENSION_NUMBER 2
- #define VK_KHR_SWAPCHAIN_EXTENSION_NAME   "VK_KHR_swapchain"
- #define VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR ((VkStructureType)(int)0xc0000800)
-@@ -3196,7 +3197,7 @@ VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSwapchainKHR)
- 
- typedef struct VkSwapchainCreateInfoKHR {
-     VkStructureType                             sType;
--    const void*                                   pNext;
-+    const void*                                 pNext;
-     VkSurfaceKHR                                surface;
-     uint32_t                                    minImageCount;
-     VkFormat                                    imageFormat;
-@@ -3216,12 +3217,13 @@ typedef struct VkSwapchainCreateInfoKHR {
- 
- typedef struct VkPresentInfoKHR {
-     VkStructureType                             sType;
--    const void*                                   pNext;
-+    const void*                                 pNext;
-     uint32_t                                    waitSemaphoreCount;
-     const VkSemaphore*                          pWaitSemaphores;
-     uint32_t                                    swapchainCount;
-     const VkSwapchainKHR*                       pSwapchains;
-     const uint32_t*                             imageIndices;
-+    VkResult*                                   pResults;
- } VkPresentInfoKHR;
- 
- 
-@@ -3300,7 +3302,7 @@ typedef struct VkDisplayModePropertiesKHR {
- 
- typedef struct VkDisplayModeCreateInfoKHR {
-     VkStructureType                             sType;
--    const void*                                   pNext;
-+    const void*                                 pNext;
-     VkDisplayModeParametersKHR                  parameters;
- } VkDisplayModeCreateInfoKHR;
- 
-@@ -3323,7 +3325,7 @@ typedef struct VkDisplayPlanePropertiesKHR {
- 
- typedef struct VkDisplaySurfaceCreateInfoKHR {
-     VkStructureType                             sType;
--    const void*                                   pNext;
-+    const void*                                 pNext;
-     VkDisplayModeKHR                            displayMode;
-     uint32_t                                    planeIndex;
-     uint32_t                                    planeStackIndex;
-@@ -3392,13 +3394,13 @@ VkResult VKAPI vkCreateDisplayPlaneSurfaceKHR(
- 
- typedef struct VkDisplaySwapchainCreateInfoKHR {
-     VkStructureType                             sType;
--    const void*                                   pNext;
-+    const void*                                 pNext;
-     const VkSwapchainCreateInfoKHR*             pNextSwapchainCreateInfo;
- } VkDisplaySwapchainCreateInfoKHR;
- 
- typedef struct VkDisplayPresentInfoKHR {
-     VkStructureType                             sType;
--    const void*                                   pNext;
-+    const void*                                 pNext;
-     VkRect2D                                    srcRect;
-     VkRect2D                                    dstRect;
-     VkBool32                                    persistent;
-diff --git a/vulkan/libvulkan/entry.cpp b/vulkan/libvulkan/entry.cpp
-index 0e01d4e..fffb3eb 100644
---- a/vulkan/libvulkan/entry.cpp
-+++ b/vulkan/libvulkan/entry.cpp
-@@ -92,8 +92,8 @@ void vkGetPhysicalDeviceFormatProperties(VkPhysicalDevice physicalDevice, VkForm
- }
- 
- __attribute__((visibility("default")))
--void vkGetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties) {
--    GetVtbl(physicalDevice).GetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties);
-+VkResult vkGetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties) {
-+    return GetVtbl(physicalDevice).GetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties);
- }
- 
- __attribute__((visibility("default")))
-diff --git a/vulkan/libvulkan/loader.cpp b/vulkan/libvulkan/loader.cpp
-index 9d0166b..a5bbc3a 100644
---- a/vulkan/libvulkan/loader.cpp
-+++ b/vulkan/libvulkan/loader.cpp
-@@ -702,7 +702,7 @@ void GetPhysicalDeviceFormatPropertiesBottom(VkPhysicalDevice pdev,
-         pdev, format, properties);
- }
- 
--void GetPhysicalDeviceImageFormatPropertiesBottom(
-+VkResult GetPhysicalDeviceImageFormatPropertiesBottom(
-     VkPhysicalDevice pdev,
-     VkFormat format,
-     VkImageType type,
-@@ -710,8 +710,9 @@ void GetPhysicalDeviceImageFormatPropertiesBottom(
-     VkImageUsageFlags usage,
-     VkImageCreateFlags flags,
-     VkImageFormatProperties* properties) {
--    GetVtbl(pdev)->instance->drv.vtbl.GetPhysicalDeviceImageFormatProperties(
--        pdev, format, type, tiling, usage, flags, properties);
-+    return GetVtbl(pdev)
-+        ->instance->drv.vtbl.GetPhysicalDeviceImageFormatProperties(
-+            pdev, format, type, tiling, usage, flags, properties);
- }
- 
- void GetPhysicalDevicePropertiesBottom(VkPhysicalDevice pdev,
-diff --git a/vulkan/libvulkan/swapchain.cpp b/vulkan/libvulkan/swapchain.cpp
-index d93a80f..98faaef 100644
---- a/vulkan/libvulkan/swapchain.cpp
-+++ b/vulkan/libvulkan/swapchain.cpp
-@@ -631,6 +631,8 @@ VkResult QueuePresentKHR(VkQueue queue, VkPresentInfoKHR* present_info) {
-         }
-         if (result != VK_SUCCESS) {
-             ALOGE("QueueSignalReleaseImageANDROID failed: %d", result);
-+            if (present_info->pResults)
-+                present_info->pResults[sc] = result;
-             if (final_result == VK_SUCCESS)
-                 final_result = result;
-             // TODO(jessehall): What happens to the buffer here? Does the app
-@@ -645,6 +647,8 @@ VkResult QueuePresentKHR(VkQueue queue, VkPresentInfoKHR* present_info) {
-             // TODO(jessehall): What now? We should probably cancel the buffer,
-             // I guess?
-             ALOGE("queueBuffer failed: %s (%d)", strerror(-err), err);
-+            if (present_info->pResults)
-+                present_info->pResults[sc] = result;
-             if (final_result == VK_SUCCESS)
-                 final_result = VK_ERROR_INITIALIZATION_FAILED;
-             continue;
-@@ -655,6 +659,9 @@ VkResult QueuePresentKHR(VkQueue queue, VkPresentInfoKHR* present_info) {
-             img.dequeue_fence = -1;
-         }
-         img.dequeued = false;
-+
-+        if (present_info->pResults)
-+            present_info->pResults[sc] = VK_SUCCESS;
-     }
- 
-     return final_result;
-diff --git a/vulkan/nulldrv/null_driver.cpp b/vulkan/nulldrv/null_driver.cpp
-index 8f0a0e5..316d27f 100644
---- a/vulkan/nulldrv/null_driver.cpp
-+++ b/vulkan/nulldrv/null_driver.cpp
-@@ -746,8 +746,9 @@ void GetPhysicalDeviceFormatProperties(VkPhysicalDevice physicalDevice, VkFormat
-     ALOGV("TODO: vk%s", __FUNCTION__);
- }
- 
--void GetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties) {
-+VkResult GetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties) {
-     ALOGV("TODO: vk%s", __FUNCTION__);
-+    return VK_SUCCESS;
- }
- 
- VkResult EnumerateInstanceLayerProperties(uint32_t* pCount, VkLayerProperties* pProperties) {
-diff --git a/vulkan/nulldrv/null_driver.h b/vulkan/nulldrv/null_driver.h
-index 0ed9cd0..1a524ff 100644
---- a/vulkan/nulldrv/null_driver.h
-+++ b/vulkan/nulldrv/null_driver.h
-@@ -31,7 +31,7 @@ void DestroyInstance(VkInstance instance, const VkAllocationCallbacks* allocator
- VkResult EnumeratePhysicalDevices(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);
- void GetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures);
- void GetPhysicalDeviceFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties);
--void GetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties);
-+VkResult GetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties);
- void GetPhysicalDeviceProperties(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties);
- void GetPhysicalDeviceQueueFamilyProperties(VkPhysicalDevice physicalDevice, uint32_t* pCount, VkQueueFamilyProperties* pQueueFamilyProperties);
- void GetPhysicalDeviceMemoryProperties(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties);
--- 
-2.6.0.rc2.230.g3dd15c0
-
diff --git a/vulkan/patches/frameworks_native-sdk_0.10/0024-vulkan-Update-from-version-0.203.0-to-0.204.0.patch b/vulkan/patches/frameworks_native-sdk_0.10/0024-vulkan-Update-from-version-0.203.0-to-0.204.0.patch
deleted file mode 100644
index 38e6998..0000000
--- a/vulkan/patches/frameworks_native-sdk_0.10/0024-vulkan-Update-from-version-0.203.0-to-0.204.0.patch
+++ /dev/null
@@ -1,3368 +0,0 @@
-From 79c20c98e47ce5a7d0608cda59b19d153455cbae Mon Sep 17 00:00:00 2001
-From: Jesse Hall <jessehall@google.com>
-Date: Mon, 30 Nov 2015 11:27:32 -0800
-Subject: [PATCH] vulkan: Update from version 0.203.0 to 0.204.0
-
-Change-Id: I2de0935df66b0110b566ed2025c39e0c17b98f17
----
- vulkan/api/vulkan.api                            |   6 +-
- vulkan/include/vulkan/vk_android_native_buffer.h |  20 +-
- vulkan/include/vulkan/vk_debug_report_lunarg.h   |  16 +-
- vulkan/include/vulkan/vk_platform.h              |  34 +-
- vulkan/include/vulkan/vulkan.h                   | 676 ++++++++++++-----------
- vulkan/libvulkan/entry.cpp                       | 296 +++++-----
- vulkan/libvulkan/entry.cpp.tmpl                  |   4 +-
- vulkan/libvulkan/loader.cpp                      |  41 +-
- vulkan/libvulkan/loader.h                        |  73 +--
- vulkan/libvulkan/swapchain.cpp                   |  11 +
- vulkan/nulldrv/null_driver.cpp                   |   4 +
- vulkan/nulldrv/null_driver.h                     | 278 +++++-----
- 12 files changed, 764 insertions(+), 695 deletions(-)
-
-diff --git a/vulkan/api/vulkan.api b/vulkan/api/vulkan.api
-index 3966f87..c77a148 100644
---- a/vulkan/api/vulkan.api
-+++ b/vulkan/api/vulkan.api
-@@ -27,7 +27,7 @@ import platform "platform.api"
- 
- // API version (major.minor.patch)
- define VERSION_MAJOR 0
--define VERSION_MINOR 203
-+define VERSION_MINOR 204
- define VERSION_PATCH 0
- 
- // API limits
-@@ -2110,6 +2110,7 @@ class VkPhysicalDeviceLimits {
-     u32                                         maxPerStageDescriptorStorageBuffers       /// max num of storage buffers allowed per-stage in a descriptor set
-     u32                                         maxPerStageDescriptorSampledImages        /// max num of sampled images allowed per-stage in a descriptor set
-     u32                                         maxPerStageDescriptorStorageImages        /// max num of storage images allowed per-stage in a descriptor set
-+    u32                                         maxPerStageDescriptorInputAttachments
-     u32                                         maxDescriptorSetSamplers                  /// max num of samplers allowed in all stages in a descriptor set
-     u32                                         maxDescriptorSetUniformBuffers            /// max num of uniform buffers allowed in all stages in a descriptor set
-     u32                                         maxDescriptorSetUniformBuffersDynamic     /// max num of dynamic uniform buffers allowed in all stages in a descriptor set
-@@ -2117,6 +2118,7 @@ class VkPhysicalDeviceLimits {
-     u32                                         maxDescriptorSetStorageBuffersDynamic     /// max num of dynamic storage buffers allowed in all stages in a descriptor set
-     u32                                         maxDescriptorSetSampledImages             /// max num of sampled images allowed in all stages in a descriptor set
-     u32                                         maxDescriptorSetStorageImages             /// max num of storage images allowed in all stages in a descriptor set
-+    u32                                         maxDescriptorSetInputAttachments
-     /// vertex stage limits
-     u32                                         maxVertexInputAttributes                  /// max num of vertex input attribute slots
-     u32                                         maxVertexInputBindings                    /// max num of vertex input binding slots
-@@ -2318,7 +2320,7 @@ class VkPresentInfoKHR {
-     u32                                         swapchainCount
-     const VkSwapchainKHR*                       pSwapchains
-     const u32*                                  imageIndices
--    const VkResult*                             pResults
-+    VkResult*                                   pResults
- }
- 
- @extension("VK_KHR_display")
-diff --git a/vulkan/include/vulkan/vk_android_native_buffer.h b/vulkan/include/vulkan/vk_android_native_buffer.h
-index f1f2676..bf4641e 100644
---- a/vulkan/include/vulkan/vk_android_native_buffer.h
-+++ b/vulkan/include/vulkan/vk_android_native_buffer.h
-@@ -47,39 +47,39 @@ typedef struct {
-     int                         usage;
- } VkNativeBufferANDROID;
- 
--typedef VkResult (VKAPI *PFN_vkGetSwapchainGrallocUsageANDROID)(VkDevice device, VkFormat format, VkImageUsageFlags imageUsage, int* grallocUsage);
--typedef VkResult (VKAPI *PFN_vkAcquireImageANDROID)(VkDevice device, VkImage image, int nativeFenceFd, VkSemaphore semaphore);
--typedef VkResult (VKAPI *PFN_vkQueueSignalReleaseImageANDROID)(VkQueue queue, VkImage image, int* pNativeFenceFd);
-+typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainGrallocUsageANDROID)(VkDevice device, VkFormat format, VkImageUsageFlags imageUsage, int* grallocUsage);
-+typedef VkResult (VKAPI_PTR *PFN_vkAcquireImageANDROID)(VkDevice device, VkImage image, int nativeFenceFd, VkSemaphore semaphore);
-+typedef VkResult (VKAPI_PTR *PFN_vkQueueSignalReleaseImageANDROID)(VkQueue queue, VkImage image, int* pNativeFenceFd);
- // -- DEPRECATED --
--typedef VkResult (VKAPI *PFN_vkImportNativeFenceANDROID)(VkDevice device, VkSemaphore semaphore, int nativeFenceFd);
--typedef VkResult (VKAPI *PFN_vkQueueSignalNativeFenceANDROID)(VkQueue queue, int* pNativeFenceFd);
-+typedef VkResult (VKAPI_PTR *PFN_vkImportNativeFenceANDROID)(VkDevice device, VkSemaphore semaphore, int nativeFenceFd);
-+typedef VkResult (VKAPI_PTR *PFN_vkQueueSignalNativeFenceANDROID)(VkQueue queue, int* pNativeFenceFd);
- // ----------------
- 
- #ifdef VK_PROTOTYPES
--VkResult VKAPI vkGetSwapchainGrallocUsageANDROID(
-+VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainGrallocUsageANDROID(
-     VkDevice            device,
-     VkFormat            format,
-     VkImageUsageFlags   imageUsage,
-     int*                grallocUsage
- );
--VkResult VKAPI vkAcquireImageANDROID(
-+VKAPI_ATTR VkResult VKAPI_CALL vkAcquireImageANDROID(
-     VkDevice            device,
-     VkImage             image,
-     int                 nativeFenceFd,
-     VkSemaphore         semaphore
- );
--VkResult VKAPI vkQueueSignalReleaseImageANDROID(
-+VKAPI_ATTR VkResult VKAPI_CALL vkQueueSignalReleaseImageANDROID(
-     VkQueue             queue,
-     VkImage             image,
-     int*                pNativeFenceFd
- );
- // -- DEPRECATED --
--VkResult VKAPI vkImportNativeFenceANDROID(
-+VKAPI_ATTR VkResult VKAPI_CALL vkImportNativeFenceANDROID(
-     VkDevice            device,
-     VkSemaphore         semaphore,
-     int                 nativeFenceFd
- );
--VkResult VKAPI vkQueueSignalNativeFenceANDROID(
-+VKAPI_ATTR VkResult VKAPI_CALL vkQueueSignalNativeFenceANDROID(
-     VkQueue             queue,
-     int*                pNativeFenceFd
- );
-diff --git a/vulkan/include/vulkan/vk_debug_report_lunarg.h b/vulkan/include/vulkan/vk_debug_report_lunarg.h
-index 286c354..58939c9 100644
---- a/vulkan/include/vulkan/vk_debug_report_lunarg.h
-+++ b/vulkan/include/vulkan/vk_debug_report_lunarg.h
-@@ -112,7 +112,7 @@ typedef enum _DEBUG_REPORT_ERROR
- // ------------------------------------------------------------------------------------------------
- // Vulkan function pointers
- 
--typedef VkBool32 (*PFN_vkDbgMsgCallback)(
-+typedef VkBool32 (VKAPI_PTR *PFN_vkDbgMsgCallback)(
-     VkFlags                             msgFlags,
-     VkDbgObjectType                     objType,
-     uint64_t                            srcObject,
-@@ -125,25 +125,25 @@ typedef VkBool32 (*PFN_vkDbgMsgCallback)(
- // ------------------------------------------------------------------------------------------------
- // API functions
- 
--typedef VkResult (VKAPI *PFN_vkDbgCreateMsgCallback)(VkInstance instance, VkFlags msgFlags, const PFN_vkDbgMsgCallback pfnMsgCallback, void* pUserData, VkDbgMsgCallback* pMsgCallback);
--typedef VkResult (VKAPI *PFN_vkDbgDestroyMsgCallback)(VkInstance instance, VkDbgMsgCallback msgCallback);
-+typedef VkResult (VKAPI_PTR *PFN_vkDbgCreateMsgCallback)(VkInstance instance, VkFlags msgFlags, const PFN_vkDbgMsgCallback pfnMsgCallback, void* pUserData, VkDbgMsgCallback* pMsgCallback);
-+typedef VkResult (VKAPI_PTR *PFN_vkDbgDestroyMsgCallback)(VkInstance instance, VkDbgMsgCallback msgCallback);
- 
- #ifdef VK_PROTOTYPES
- 
- // DebugReport extension entrypoints
--VkResult VKAPI vkDbgCreateMsgCallback(
-+VKAPI_ATTR VkResult VKAPI_CALL vkDbgCreateMsgCallback(
-     VkInstance                          instance,
-     VkFlags                             msgFlags,
-     const PFN_vkDbgMsgCallback          pfnMsgCallback,
-     void*                               pUserData,
-     VkDbgMsgCallback*                   pMsgCallback);
- 
--VkResult VKAPI vkDbgDestroyMsgCallback(
-+VKAPI_ATTR VkResult VKAPI_CALL vkDbgDestroyMsgCallback(
-     VkInstance                          instance,
-     VkDbgMsgCallback                    msgCallback);
- 
- // DebugReport utility callback functions
--void VKAPI vkDbgStringCallback(
-+VKAPI_ATTR void VKAPI_CALL vkDbgStringCallback(
-     VkFlags                             msgFlags,
-     VkDbgObjectType                     objType,
-     uint64_t                            srcObject,
-@@ -153,7 +153,7 @@ void VKAPI vkDbgStringCallback(
-     const char*                         pMsg,
-     void*                               pUserData);
- 
--void VKAPI vkDbgStdioCallback(
-+VKAPI_ATTR void VKAPI_CALL vkDbgStdioCallback(
-     VkFlags                             msgFlags,
-     VkDbgObjectType                     objType,
-     uint64_t                            srcObject,
-@@ -163,7 +163,7 @@ void VKAPI vkDbgStdioCallback(
-     const char*                         pMsg,
-     void*                               pUserData);
- 
--void VKAPI vkDbgBreakCallback(
-+VKAPI_ATTR void VKAPI_CALL vkDbgBreakCallback(
-     VkFlags                             msgFlags,
-     VkDbgObjectType                     objType,
-     uint64_t                            srcObject,
-diff --git a/vulkan/include/vulkan/vk_platform.h b/vulkan/include/vulkan/vk_platform.h
-index 4bc6a86..a53e725 100644
---- a/vulkan/include/vulkan/vk_platform.h
-+++ b/vulkan/include/vulkan/vk_platform.h
-@@ -39,12 +39,40 @@ extern "C"
- ***************************************************************************************************
- */
- 
-+/* Platform-specific calling convention macros.
-+ *
-+ * Platforms should define these so that Vulkan clients call Vulkan commands
-+ * with the same calling conventions that the Vulkan implementation expects.
-+ *
-+ * VKAPI_ATTR - Placed before the return type in function declarations.
-+ *              Useful for C++11 and GCC/Clang-style function attribute syntax.
-+ * VKAPI_CALL - Placed after the return type in function declarations.
-+ *              Useful for MSVC-style calling convention syntax.
-+ * VKAPI_PTR  - Placed between the '(' and '*' in function pointer types.
-+ *
-+ * Function declaration:  VKAPI_ATTR void VKAPI_CALL vkCommand(void);
-+ * Function pointer type: typedef void (VKAPI_PTR *PFN_vkCommand)(void);
-+ */
- #if defined(_WIN32)
--    // On Windows, VKAPI should equate to the __stdcall convention
--    #define VKAPI   __stdcall
-+    // On Windows, Vulkan commands use the stdcall convention
-+    #define VKAPI_ATTR
-+    #define VKAPI_CALL __stdcall
-+    #define VKAPI_PTR  VKAPI_CALL
-+#elif defined(__ANDROID__) && defined(__ARM_EABI__) && !defined(__ARM_ARCH_7A__)
-+    // Android does not support Vulkan in native code using the "armeabi" ABI.
-+    #error "Vulkan requires the 'armeabi-v7a' or 'armeabi-v7a-hard' ABI on 32-bit ARM CPUs"
-+#elif defined(__ANDROID__) && defined(__ARM_ARCH_7A__)
-+    // On Android/ARMv7a, Vulkan functions use the armeabi-v7a-hard calling
-+    // convention, even if the application's native code is compiled with the
-+    // armeabi-v7a calling convention.
-+    #define VKAPI_ATTR __attribute__((pcs("aapcs-vfp")))
-+    #define VKAPI_CALL
-+    #define VKAPI_PTR  VKAPI_ATTR
- #else
-     // On other platforms, use the default calling convention
--    #define VKAPI
-+    #define VKAPI_ATTR
-+    #define VKAPI_CALL
-+    #define VKAPI_PTR
- #endif
- 
- #include <stddef.h>
-diff --git a/vulkan/include/vulkan/vulkan.h b/vulkan/include/vulkan/vulkan.h
-index 21bb796..2791b8a 100644
---- a/vulkan/include/vulkan/vulkan.h
-+++ b/vulkan/include/vulkan/vulkan.h
-@@ -41,7 +41,7 @@ extern "C" {
-     ((major << 22) | (minor << 12) | patch)
- 
- // Vulkan API version supported by this file
--#define VK_API_VERSION VK_MAKE_VERSION(0, 203, 0)
-+#define VK_API_VERSION VK_MAKE_VERSION(0, 204, 0)
- 
- 
- #define VK_NULL_HANDLE 0
-@@ -1046,36 +1046,36 @@ typedef enum VkQueryControlFlagBits {
- } VkQueryControlFlagBits;
- typedef VkFlags VkQueryControlFlags;
- 
--typedef void* (VKAPI *PFN_vkAllocationFunction)(
-+typedef void* (VKAPI_PTR *PFN_vkAllocationFunction)(
-     void*                                       pUserData,
-     size_t                                      size,
-     size_t                                      alignment,
-     VkSystemAllocationScope                     allocationScope);
- 
--typedef void* (VKAPI *PFN_vkReallocationFunction)(
-+typedef void* (VKAPI_PTR *PFN_vkReallocationFunction)(
-     void*                                       pUserData,
-     void*                                       pOriginal,
-     size_t                                      size,
-     size_t                                      alignment,
-     VkSystemAllocationScope                     allocationScope);
- 
--typedef void (VKAPI *PFN_vkFreeFunction)(
-+typedef void (VKAPI_PTR *PFN_vkFreeFunction)(
-     void*                                       pUserData,
-     void*                                       pMemory);
- 
--typedef void (VKAPI *PFN_vkInternalAllocationNotification)(
-+typedef void (VKAPI_PTR *PFN_vkInternalAllocationNotification)(
-     void*                                       pUserData,
-     size_t                                      size,
-     VkInternalAllocationType                    allocationType,
-     VkSystemAllocationScope                     allocationScope);
- 
--typedef void (VKAPI *PFN_vkInternalFreeNotification)(
-+typedef void (VKAPI_PTR *PFN_vkInternalFreeNotification)(
-     void*                                       pUserData,
-     size_t                                      size,
-     VkInternalAllocationType                    allocationType,
-     VkSystemAllocationScope                     allocationScope);
- 
--typedef void (VKAPI *PFN_vkVoidFunction)(void);
-+typedef void (VKAPI_PTR *PFN_vkVoidFunction)(void);
- 
- typedef struct VkApplicationInfo {
-     VkStructureType                             sType;
-@@ -1203,6 +1203,7 @@ typedef struct VkPhysicalDeviceLimits {
-     uint32_t                                    maxPerStageDescriptorStorageBuffers;
-     uint32_t                                    maxPerStageDescriptorSampledImages;
-     uint32_t                                    maxPerStageDescriptorStorageImages;
-+    uint32_t                                    maxPerStageDescriptorInputAttachments;
-     uint32_t                                    maxDescriptorSetSamplers;
-     uint32_t                                    maxDescriptorSetUniformBuffers;
-     uint32_t                                    maxDescriptorSetUniformBuffersDynamic;
-@@ -1210,6 +1211,7 @@ typedef struct VkPhysicalDeviceLimits {
-     uint32_t                                    maxDescriptorSetStorageBuffersDynamic;
-     uint32_t                                    maxDescriptorSetSampledImages;
-     uint32_t                                    maxDescriptorSetStorageImages;
-+    uint32_t                                    maxDescriptorSetInputAttachments;
-     uint32_t                                    maxVertexInputAttributes;
-     uint32_t                                    maxVertexInputBindings;
-     uint32_t                                    maxVertexInputAttributeOffset;
-@@ -2136,169 +2138,169 @@ typedef struct VkMemoryBarrier {
- } VkMemoryBarrier;
- 
- 
--typedef VkResult (VKAPI *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance);
--typedef void (VKAPI *PFN_vkDestroyInstance)(VkInstance instance, const VkAllocationCallbacks* pAllocator);
--typedef VkResult (VKAPI *PFN_vkEnumeratePhysicalDevices)(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);
--typedef void (VKAPI *PFN_vkGetPhysicalDeviceFeatures)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures);
--typedef void (VKAPI *PFN_vkGetPhysicalDeviceFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties);
--typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties);
--typedef void (VKAPI *PFN_vkGetPhysicalDeviceProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties);
--typedef void (VKAPI *PFN_vkGetPhysicalDeviceQueueFamilyProperties)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties);
--typedef void (VKAPI *PFN_vkGetPhysicalDeviceMemoryProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties);
--typedef PFN_vkVoidFunction (VKAPI *PFN_vkGetInstanceProcAddr)(VkInstance instance, const char* pName);
--typedef PFN_vkVoidFunction (VKAPI *PFN_vkGetDeviceProcAddr)(VkDevice device, const char* pName);
--typedef VkResult (VKAPI *PFN_vkCreateDevice)(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice);
--typedef void (VKAPI *PFN_vkDestroyDevice)(VkDevice device, const VkAllocationCallbacks* pAllocator);
--typedef VkResult (VKAPI *PFN_vkEnumerateInstanceExtensionProperties)(const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties);
--typedef VkResult (VKAPI *PFN_vkEnumerateDeviceExtensionProperties)(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties);
--typedef VkResult (VKAPI *PFN_vkEnumerateInstanceLayerProperties)(uint32_t* pPropertyCount, VkLayerProperties* pProperties);
--typedef VkResult (VKAPI *PFN_vkEnumerateDeviceLayerProperties)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkLayerProperties* pProperties);
--typedef void (VKAPI *PFN_vkGetDeviceQueue)(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue);
--typedef VkResult (VKAPI *PFN_vkQueueSubmit)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence);
--typedef VkResult (VKAPI *PFN_vkQueueWaitIdle)(VkQueue queue);
--typedef VkResult (VKAPI *PFN_vkDeviceWaitIdle)(VkDevice device);
--typedef VkResult (VKAPI *PFN_vkAllocateMemory)(VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory);
--typedef void (VKAPI *PFN_vkFreeMemory)(VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator);
--typedef VkResult (VKAPI *PFN_vkMapMemory)(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData);
--typedef void (VKAPI *PFN_vkUnmapMemory)(VkDevice device, VkDeviceMemory memory);
--typedef VkResult (VKAPI *PFN_vkFlushMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
--typedef VkResult (VKAPI *PFN_vkInvalidateMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
--typedef void (VKAPI *PFN_vkGetDeviceMemoryCommitment)(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes);
--typedef VkResult (VKAPI *PFN_vkBindBufferMemory)(VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset);
--typedef VkResult (VKAPI *PFN_vkBindImageMemory)(VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset);
--typedef void (VKAPI *PFN_vkGetBufferMemoryRequirements)(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements);
--typedef void (VKAPI *PFN_vkGetImageMemoryRequirements)(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements);
--typedef void (VKAPI *PFN_vkGetImageSparseMemoryRequirements)(VkDevice device, VkImage image, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
--typedef void (VKAPI *PFN_vkGetPhysicalDeviceSparseImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties);
--typedef VkResult (VKAPI *PFN_vkQueueBindSparse)(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence);
--typedef VkResult (VKAPI *PFN_vkCreateFence)(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
--typedef void (VKAPI *PFN_vkDestroyFence)(VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator);
--typedef VkResult (VKAPI *PFN_vkResetFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences);
--typedef VkResult (VKAPI *PFN_vkGetFenceStatus)(VkDevice device, VkFence fence);
--typedef VkResult (VKAPI *PFN_vkWaitForFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout);
--typedef VkResult (VKAPI *PFN_vkCreateSemaphore)(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore);
--typedef void (VKAPI *PFN_vkDestroySemaphore)(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator);
--typedef VkResult (VKAPI *PFN_vkCreateEvent)(VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent);
--typedef void (VKAPI *PFN_vkDestroyEvent)(VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator);
--typedef VkResult (VKAPI *PFN_vkGetEventStatus)(VkDevice device, VkEvent event);
--typedef VkResult (VKAPI *PFN_vkSetEvent)(VkDevice device, VkEvent event);
--typedef VkResult (VKAPI *PFN_vkResetEvent)(VkDevice device, VkEvent event);
--typedef VkResult (VKAPI *PFN_vkCreateQueryPool)(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool);
--typedef void (VKAPI *PFN_vkDestroyQueryPool)(VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator);
--typedef VkResult (VKAPI *PFN_vkGetQueryPoolResults)(VkDevice device, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, size_t dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags);
--typedef VkResult (VKAPI *PFN_vkCreateBuffer)(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer);
--typedef void (VKAPI *PFN_vkDestroyBuffer)(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator);
--typedef VkResult (VKAPI *PFN_vkCreateBufferView)(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView);
--typedef void (VKAPI *PFN_vkDestroyBufferView)(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator);
--typedef VkResult (VKAPI *PFN_vkCreateImage)(VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage);
--typedef void (VKAPI *PFN_vkDestroyImage)(VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator);
--typedef void (VKAPI *PFN_vkGetImageSubresourceLayout)(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout);
--typedef VkResult (VKAPI *PFN_vkCreateImageView)(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView);
--typedef void (VKAPI *PFN_vkDestroyImageView)(VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator);
--typedef VkResult (VKAPI *PFN_vkCreateShaderModule)(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule);
--typedef void (VKAPI *PFN_vkDestroyShaderModule)(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator);
--typedef VkResult (VKAPI *PFN_vkCreatePipelineCache)(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache);
--typedef void (VKAPI *PFN_vkDestroyPipelineCache)(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator);
--typedef VkResult (VKAPI *PFN_vkGetPipelineCacheData)(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData);
--typedef VkResult (VKAPI *PFN_vkMergePipelineCaches)(VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches);
--typedef VkResult (VKAPI *PFN_vkCreateGraphicsPipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
--typedef VkResult (VKAPI *PFN_vkCreateComputePipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
--typedef void (VKAPI *PFN_vkDestroyPipeline)(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator);
--typedef VkResult (VKAPI *PFN_vkCreatePipelineLayout)(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout);
--typedef void (VKAPI *PFN_vkDestroyPipelineLayout)(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator);
--typedef VkResult (VKAPI *PFN_vkCreateSampler)(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler);
--typedef void (VKAPI *PFN_vkDestroySampler)(VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator);
--typedef VkResult (VKAPI *PFN_vkCreateDescriptorSetLayout)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout);
--typedef void (VKAPI *PFN_vkDestroyDescriptorSetLayout)(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator);
--typedef VkResult (VKAPI *PFN_vkCreateDescriptorPool)(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool);
--typedef void (VKAPI *PFN_vkDestroyDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator);
--typedef VkResult (VKAPI *PFN_vkResetDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags);
--typedef VkResult (VKAPI *PFN_vkAllocateDescriptorSets)(VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets);
--typedef VkResult (VKAPI *PFN_vkFreeDescriptorSets)(VkDevice device, VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets);
--typedef void (VKAPI *PFN_vkUpdateDescriptorSets)(VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies);
--typedef VkResult (VKAPI *PFN_vkCreateFramebuffer)(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer);
--typedef void (VKAPI *PFN_vkDestroyFramebuffer)(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator);
--typedef VkResult (VKAPI *PFN_vkCreateRenderPass)(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
--typedef void (VKAPI *PFN_vkDestroyRenderPass)(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator);
--typedef void (VKAPI *PFN_vkGetRenderAreaGranularity)(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity);
--typedef VkResult (VKAPI *PFN_vkCreateCommandPool)(VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool);
--typedef void (VKAPI *PFN_vkDestroyCommandPool)(VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator);
--typedef VkResult (VKAPI *PFN_vkResetCommandPool)(VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags);
--typedef VkResult (VKAPI *PFN_vkAllocateCommandBuffers)(VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers);
--typedef void (VKAPI *PFN_vkFreeCommandBuffers)(VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers);
--typedef VkResult (VKAPI *PFN_vkBeginCommandBuffer)(VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo);
--typedef VkResult (VKAPI *PFN_vkEndCommandBuffer)(VkCommandBuffer commandBuffer);
--typedef VkResult (VKAPI *PFN_vkResetCommandBuffer)(VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags);
--typedef void (VKAPI *PFN_vkCmdBindPipeline)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline);
--typedef void (VKAPI *PFN_vkCmdSetViewport)(VkCommandBuffer commandBuffer, uint32_t viewportCount, const VkViewport* pViewports);
--typedef void (VKAPI *PFN_vkCmdSetScissor)(VkCommandBuffer commandBuffer, uint32_t scissorCount, const VkRect2D* pScissors);
--typedef void (VKAPI *PFN_vkCmdSetLineWidth)(VkCommandBuffer commandBuffer, float lineWidth);
--typedef void (VKAPI *PFN_vkCmdSetDepthBias)(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor);
--typedef void (VKAPI *PFN_vkCmdSetBlendConstants)(VkCommandBuffer commandBuffer, const float blendConstants[4]);
--typedef void (VKAPI *PFN_vkCmdSetDepthBounds)(VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds);
--typedef void (VKAPI *PFN_vkCmdSetStencilCompareMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t compareMask);
--typedef void (VKAPI *PFN_vkCmdSetStencilWriteMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t writeMask);
--typedef void (VKAPI *PFN_vkCmdSetStencilReference)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference);
--typedef void (VKAPI *PFN_vkCmdBindDescriptorSets)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets);
--typedef void (VKAPI *PFN_vkCmdBindIndexBuffer)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType);
--typedef void (VKAPI *PFN_vkCmdBindVertexBuffers)(VkCommandBuffer commandBuffer, uint32_t startBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets);
--typedef void (VKAPI *PFN_vkCmdDraw)(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance);
--typedef void (VKAPI *PFN_vkCmdDrawIndexed)(VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance);
--typedef void (VKAPI *PFN_vkCmdDrawIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
--typedef void (VKAPI *PFN_vkCmdDrawIndexedIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
--typedef void (VKAPI *PFN_vkCmdDispatch)(VkCommandBuffer commandBuffer, uint32_t x, uint32_t y, uint32_t z);
--typedef void (VKAPI *PFN_vkCmdDispatchIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset);
--typedef void (VKAPI *PFN_vkCmdCopyBuffer)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy* pRegions);
--typedef void (VKAPI *PFN_vkCmdCopyImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageCopy* pRegions);
--typedef void (VKAPI *PFN_vkCmdBlitImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter);
--typedef void (VKAPI *PFN_vkCmdCopyBufferToImage)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions);
--typedef void (VKAPI *PFN_vkCmdCopyImageToBuffer)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions);
--typedef void (VKAPI *PFN_vkCmdUpdateBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const uint32_t* pData);
--typedef void (VKAPI *PFN_vkCmdFillBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data);
--typedef void (VKAPI *PFN_vkCmdClearColorImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
--typedef void (VKAPI *PFN_vkCmdClearDepthStencilImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
--typedef void (VKAPI *PFN_vkCmdClearAttachments)(VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects);
--typedef void (VKAPI *PFN_vkCmdResolveImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageResolve* pRegions);
--typedef void (VKAPI *PFN_vkCmdSetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
--typedef void (VKAPI *PFN_vkCmdResetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
--typedef void (VKAPI *PFN_vkCmdWaitEvents)(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const void* const* ppMemoryBarriers);
--typedef void (VKAPI *PFN_vkCmdPipelineBarrier)(VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const void* const* ppMemoryBarriers);
--typedef void (VKAPI *PFN_vkCmdBeginQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t entry, VkQueryControlFlags flags);
--typedef void (VKAPI *PFN_vkCmdEndQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t entry);
--typedef void (VKAPI *PFN_vkCmdResetQueryPool)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount);
--typedef void (VKAPI *PFN_vkCmdWriteTimestamp)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t entry);
--typedef void (VKAPI *PFN_vkCmdCopyQueryPoolResults)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags);
--typedef void (VKAPI *PFN_vkCmdPushConstants)(VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* values);
--typedef void (VKAPI *PFN_vkCmdBeginRenderPass)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents);
--typedef void (VKAPI *PFN_vkCmdNextSubpass)(VkCommandBuffer commandBuffer, VkSubpassContents contents);
--typedef void (VKAPI *PFN_vkCmdEndRenderPass)(VkCommandBuffer commandBuffer);
--typedef void (VKAPI *PFN_vkCmdExecuteCommands)(VkCommandBuffer commandBuffer, uint32_t commandBuffersCount, const VkCommandBuffer* pCommandBuffers);
-+typedef VkResult (VKAPI_PTR *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance);
-+typedef void (VKAPI_PTR *PFN_vkDestroyInstance)(VkInstance instance, const VkAllocationCallbacks* pAllocator);
-+typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDevices)(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);
-+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures);
-+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties);
-+typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties);
-+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties);
-+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties);
-+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties);
-+typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetInstanceProcAddr)(VkInstance instance, const char* pName);
-+typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetDeviceProcAddr)(VkDevice device, const char* pName);
-+typedef VkResult (VKAPI_PTR *PFN_vkCreateDevice)(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice);
-+typedef void (VKAPI_PTR *PFN_vkDestroyDevice)(VkDevice device, const VkAllocationCallbacks* pAllocator);
-+typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceExtensionProperties)(const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties);
-+typedef VkResult (VKAPI_PTR *PFN_vkEnumerateDeviceExtensionProperties)(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties);
-+typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceLayerProperties)(uint32_t* pPropertyCount, VkLayerProperties* pProperties);
-+typedef VkResult (VKAPI_PTR *PFN_vkEnumerateDeviceLayerProperties)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkLayerProperties* pProperties);
-+typedef void (VKAPI_PTR *PFN_vkGetDeviceQueue)(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue);
-+typedef VkResult (VKAPI_PTR *PFN_vkQueueSubmit)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence);
-+typedef VkResult (VKAPI_PTR *PFN_vkQueueWaitIdle)(VkQueue queue);
-+typedef VkResult (VKAPI_PTR *PFN_vkDeviceWaitIdle)(VkDevice device);
-+typedef VkResult (VKAPI_PTR *PFN_vkAllocateMemory)(VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory);
-+typedef void (VKAPI_PTR *PFN_vkFreeMemory)(VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator);
-+typedef VkResult (VKAPI_PTR *PFN_vkMapMemory)(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData);
-+typedef void (VKAPI_PTR *PFN_vkUnmapMemory)(VkDevice device, VkDeviceMemory memory);
-+typedef VkResult (VKAPI_PTR *PFN_vkFlushMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
-+typedef VkResult (VKAPI_PTR *PFN_vkInvalidateMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
-+typedef void (VKAPI_PTR *PFN_vkGetDeviceMemoryCommitment)(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes);
-+typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory)(VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset);
-+typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory)(VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset);
-+typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements)(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements);
-+typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements)(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements);
-+typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements)(VkDevice device, VkImage image, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
-+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties);
-+typedef VkResult (VKAPI_PTR *PFN_vkQueueBindSparse)(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence);
-+typedef VkResult (VKAPI_PTR *PFN_vkCreateFence)(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
-+typedef void (VKAPI_PTR *PFN_vkDestroyFence)(VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator);
-+typedef VkResult (VKAPI_PTR *PFN_vkResetFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences);
-+typedef VkResult (VKAPI_PTR *PFN_vkGetFenceStatus)(VkDevice device, VkFence fence);
-+typedef VkResult (VKAPI_PTR *PFN_vkWaitForFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout);
-+typedef VkResult (VKAPI_PTR *PFN_vkCreateSemaphore)(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore);
-+typedef void (VKAPI_PTR *PFN_vkDestroySemaphore)(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator);
-+typedef VkResult (VKAPI_PTR *PFN_vkCreateEvent)(VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent);
-+typedef void (VKAPI_PTR *PFN_vkDestroyEvent)(VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator);
-+typedef VkResult (VKAPI_PTR *PFN_vkGetEventStatus)(VkDevice device, VkEvent event);
-+typedef VkResult (VKAPI_PTR *PFN_vkSetEvent)(VkDevice device, VkEvent event);
-+typedef VkResult (VKAPI_PTR *PFN_vkResetEvent)(VkDevice device, VkEvent event);
-+typedef VkResult (VKAPI_PTR *PFN_vkCreateQueryPool)(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool);
-+typedef void (VKAPI_PTR *PFN_vkDestroyQueryPool)(VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator);
-+typedef VkResult (VKAPI_PTR *PFN_vkGetQueryPoolResults)(VkDevice device, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, size_t dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags);
-+typedef VkResult (VKAPI_PTR *PFN_vkCreateBuffer)(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer);
-+typedef void (VKAPI_PTR *PFN_vkDestroyBuffer)(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator);
-+typedef VkResult (VKAPI_PTR *PFN_vkCreateBufferView)(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView);
-+typedef void (VKAPI_PTR *PFN_vkDestroyBufferView)(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator);
-+typedef VkResult (VKAPI_PTR *PFN_vkCreateImage)(VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage);
-+typedef void (VKAPI_PTR *PFN_vkDestroyImage)(VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator);
-+typedef void (VKAPI_PTR *PFN_vkGetImageSubresourceLayout)(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout);
-+typedef VkResult (VKAPI_PTR *PFN_vkCreateImageView)(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView);
-+typedef void (VKAPI_PTR *PFN_vkDestroyImageView)(VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator);
-+typedef VkResult (VKAPI_PTR *PFN_vkCreateShaderModule)(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule);
-+typedef void (VKAPI_PTR *PFN_vkDestroyShaderModule)(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator);
-+typedef VkResult (VKAPI_PTR *PFN_vkCreatePipelineCache)(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache);
-+typedef void (VKAPI_PTR *PFN_vkDestroyPipelineCache)(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator);
-+typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineCacheData)(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData);
-+typedef VkResult (VKAPI_PTR *PFN_vkMergePipelineCaches)(VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches);
-+typedef VkResult (VKAPI_PTR *PFN_vkCreateGraphicsPipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
-+typedef VkResult (VKAPI_PTR *PFN_vkCreateComputePipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
-+typedef void (VKAPI_PTR *PFN_vkDestroyPipeline)(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator);
-+typedef VkResult (VKAPI_PTR *PFN_vkCreatePipelineLayout)(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout);
-+typedef void (VKAPI_PTR *PFN_vkDestroyPipelineLayout)(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator);
-+typedef VkResult (VKAPI_PTR *PFN_vkCreateSampler)(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler);
-+typedef void (VKAPI_PTR *PFN_vkDestroySampler)(VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator);
-+typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorSetLayout)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout);
-+typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorSetLayout)(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator);
-+typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorPool)(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool);
-+typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator);
-+typedef VkResult (VKAPI_PTR *PFN_vkResetDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags);
-+typedef VkResult (VKAPI_PTR *PFN_vkAllocateDescriptorSets)(VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets);
-+typedef VkResult (VKAPI_PTR *PFN_vkFreeDescriptorSets)(VkDevice device, VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets);
-+typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSets)(VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies);
-+typedef VkResult (VKAPI_PTR *PFN_vkCreateFramebuffer)(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer);
-+typedef void (VKAPI_PTR *PFN_vkDestroyFramebuffer)(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator);
-+typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass)(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
-+typedef void (VKAPI_PTR *PFN_vkDestroyRenderPass)(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator);
-+typedef void (VKAPI_PTR *PFN_vkGetRenderAreaGranularity)(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity);
-+typedef VkResult (VKAPI_PTR *PFN_vkCreateCommandPool)(VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool);
-+typedef void (VKAPI_PTR *PFN_vkDestroyCommandPool)(VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator);
-+typedef VkResult (VKAPI_PTR *PFN_vkResetCommandPool)(VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags);
-+typedef VkResult (VKAPI_PTR *PFN_vkAllocateCommandBuffers)(VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers);
-+typedef void (VKAPI_PTR *PFN_vkFreeCommandBuffers)(VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers);
-+typedef VkResult (VKAPI_PTR *PFN_vkBeginCommandBuffer)(VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo);
-+typedef VkResult (VKAPI_PTR *PFN_vkEndCommandBuffer)(VkCommandBuffer commandBuffer);
-+typedef VkResult (VKAPI_PTR *PFN_vkResetCommandBuffer)(VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags);
-+typedef void (VKAPI_PTR *PFN_vkCmdBindPipeline)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline);
-+typedef void (VKAPI_PTR *PFN_vkCmdSetViewport)(VkCommandBuffer commandBuffer, uint32_t viewportCount, const VkViewport* pViewports);
-+typedef void (VKAPI_PTR *PFN_vkCmdSetScissor)(VkCommandBuffer commandBuffer, uint32_t scissorCount, const VkRect2D* pScissors);
-+typedef void (VKAPI_PTR *PFN_vkCmdSetLineWidth)(VkCommandBuffer commandBuffer, float lineWidth);
-+typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBias)(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor);
-+typedef void (VKAPI_PTR *PFN_vkCmdSetBlendConstants)(VkCommandBuffer commandBuffer, const float blendConstants[4]);
-+typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBounds)(VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds);
-+typedef void (VKAPI_PTR *PFN_vkCmdSetStencilCompareMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t compareMask);
-+typedef void (VKAPI_PTR *PFN_vkCmdSetStencilWriteMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t writeMask);
-+typedef void (VKAPI_PTR *PFN_vkCmdSetStencilReference)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference);
-+typedef void (VKAPI_PTR *PFN_vkCmdBindDescriptorSets)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets);
-+typedef void (VKAPI_PTR *PFN_vkCmdBindIndexBuffer)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType);
-+typedef void (VKAPI_PTR *PFN_vkCmdBindVertexBuffers)(VkCommandBuffer commandBuffer, uint32_t startBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets);
-+typedef void (VKAPI_PTR *PFN_vkCmdDraw)(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance);
-+typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexed)(VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance);
-+typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
-+typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
-+typedef void (VKAPI_PTR *PFN_vkCmdDispatch)(VkCommandBuffer commandBuffer, uint32_t x, uint32_t y, uint32_t z);
-+typedef void (VKAPI_PTR *PFN_vkCmdDispatchIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset);
-+typedef void (VKAPI_PTR *PFN_vkCmdCopyBuffer)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy* pRegions);
-+typedef void (VKAPI_PTR *PFN_vkCmdCopyImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageCopy* pRegions);
-+typedef void (VKAPI_PTR *PFN_vkCmdBlitImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter);
-+typedef void (VKAPI_PTR *PFN_vkCmdCopyBufferToImage)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions);
-+typedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions);
-+typedef void (VKAPI_PTR *PFN_vkCmdUpdateBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const uint32_t* pData);
-+typedef void (VKAPI_PTR *PFN_vkCmdFillBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data);
-+typedef void (VKAPI_PTR *PFN_vkCmdClearColorImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
-+typedef void (VKAPI_PTR *PFN_vkCmdClearDepthStencilImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
-+typedef void (VKAPI_PTR *PFN_vkCmdClearAttachments)(VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects);
-+typedef void (VKAPI_PTR *PFN_vkCmdResolveImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageResolve* pRegions);
-+typedef void (VKAPI_PTR *PFN_vkCmdSetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
-+typedef void (VKAPI_PTR *PFN_vkCmdResetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
-+typedef void (VKAPI_PTR *PFN_vkCmdWaitEvents)(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const void* const* ppMemoryBarriers);
-+typedef void (VKAPI_PTR *PFN_vkCmdPipelineBarrier)(VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const void* const* ppMemoryBarriers);
-+typedef void (VKAPI_PTR *PFN_vkCmdBeginQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t entry, VkQueryControlFlags flags);
-+typedef void (VKAPI_PTR *PFN_vkCmdEndQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t entry);
-+typedef void (VKAPI_PTR *PFN_vkCmdResetQueryPool)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount);
-+typedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t entry);
-+typedef void (VKAPI_PTR *PFN_vkCmdCopyQueryPoolResults)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags);
-+typedef void (VKAPI_PTR *PFN_vkCmdPushConstants)(VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* values);
-+typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents);
-+typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass)(VkCommandBuffer commandBuffer, VkSubpassContents contents);
-+typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass)(VkCommandBuffer commandBuffer);
-+typedef void (VKAPI_PTR *PFN_vkCmdExecuteCommands)(VkCommandBuffer commandBuffer, uint32_t commandBuffersCount, const VkCommandBuffer* pCommandBuffers);
- 
- #ifdef VK_PROTOTYPES
--VkResult VKAPI vkCreateInstance(
-+VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance(
-     const VkInstanceCreateInfo*                 pCreateInfo,
-     const VkAllocationCallbacks*                pAllocator,
-     VkInstance*                                 pInstance);
- 
--void VKAPI vkDestroyInstance(
-+VKAPI_ATTR void VKAPI_CALL vkDestroyInstance(
-     VkInstance                                  instance,
-     const VkAllocationCallbacks*                pAllocator);
- 
--VkResult VKAPI vkEnumeratePhysicalDevices(
-+VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDevices(
-     VkInstance                                  instance,
-     uint32_t*                                   pPhysicalDeviceCount,
-     VkPhysicalDevice*                           pPhysicalDevices);
- 
--void VKAPI vkGetPhysicalDeviceFeatures(
-+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures(
-     VkPhysicalDevice                            physicalDevice,
-     VkPhysicalDeviceFeatures*                   pFeatures);
- 
--void VKAPI vkGetPhysicalDeviceFormatProperties(
-+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties(
-     VkPhysicalDevice                            physicalDevice,
-     VkFormat                                    format,
-     VkFormatProperties*                         pFormatProperties);
- 
--VkResult VKAPI vkGetPhysicalDeviceImageFormatProperties(
-+VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties(
-     VkPhysicalDevice                            physicalDevice,
-     VkFormat                                    format,
-     VkImageType                                 type,
-@@ -2307,87 +2309,87 @@ VkResult VKAPI vkGetPhysicalDeviceImageFormatProperties(
-     VkImageCreateFlags                          flags,
-     VkImageFormatProperties*                    pImageFormatProperties);
- 
--void VKAPI vkGetPhysicalDeviceProperties(
-+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties(
-     VkPhysicalDevice                            physicalDevice,
-     VkPhysicalDeviceProperties*                 pProperties);
- 
--void VKAPI vkGetPhysicalDeviceQueueFamilyProperties(
-+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties(
-     VkPhysicalDevice                            physicalDevice,
-     uint32_t*                                   pQueueFamilyPropertyCount,
-     VkQueueFamilyProperties*                    pQueueFamilyProperties);
- 
--void VKAPI vkGetPhysicalDeviceMemoryProperties(
-+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties(
-     VkPhysicalDevice                            physicalDevice,
-     VkPhysicalDeviceMemoryProperties*           pMemoryProperties);
- 
--PFN_vkVoidFunction VKAPI vkGetInstanceProcAddr(
-+VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetInstanceProcAddr(
-     VkInstance                                  instance,
-     const char*                                 pName);
- 
--PFN_vkVoidFunction VKAPI vkGetDeviceProcAddr(
-+VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetDeviceProcAddr(
-     VkDevice                                    device,
-     const char*                                 pName);
- 
--VkResult VKAPI vkCreateDevice(
-+VKAPI_ATTR VkResult VKAPI_CALL vkCreateDevice(
-     VkPhysicalDevice                            physicalDevice,
-     const VkDeviceCreateInfo*                   pCreateInfo,
-     const VkAllocationCallbacks*                pAllocator,
-     VkDevice*                                   pDevice);
- 
--void VKAPI vkDestroyDevice(
-+VKAPI_ATTR void VKAPI_CALL vkDestroyDevice(
-     VkDevice                                    device,
-     const VkAllocationCallbacks*                pAllocator);
- 
--VkResult VKAPI vkEnumerateInstanceExtensionProperties(
-+VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceExtensionProperties(
-     const char*                                 pLayerName,
-     uint32_t*                                   pPropertyCount,
-     VkExtensionProperties*                      pProperties);
- 
--VkResult VKAPI vkEnumerateDeviceExtensionProperties(
-+VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceExtensionProperties(
-     VkPhysicalDevice                            physicalDevice,
-     const char*                                 pLayerName,
-     uint32_t*                                   pPropertyCount,
-     VkExtensionProperties*                      pProperties);
- 
--VkResult VKAPI vkEnumerateInstanceLayerProperties(
-+VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceLayerProperties(
-     uint32_t*                                   pPropertyCount,
-     VkLayerProperties*                          pProperties);
- 
--VkResult VKAPI vkEnumerateDeviceLayerProperties(
-+VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceLayerProperties(
-     VkPhysicalDevice                            physicalDevice,
-     uint32_t*                                   pPropertyCount,
-     VkLayerProperties*                          pProperties);
- 
--void VKAPI vkGetDeviceQueue(
-+VKAPI_ATTR void VKAPI_CALL vkGetDeviceQueue(
-     VkDevice                                    device,
-     uint32_t                                    queueFamilyIndex,
-     uint32_t                                    queueIndex,
-     VkQueue*                                    pQueue);
- 
--VkResult VKAPI vkQueueSubmit(
-+VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit(
-     VkQueue                                     queue,
-     uint32_t                                    submitCount,
-     const VkSubmitInfo*                         pSubmits,
-     VkFence                                     fence);
- 
--VkResult VKAPI vkQueueWaitIdle(
-+VKAPI_ATTR VkResult VKAPI_CALL vkQueueWaitIdle(
-     VkQueue                                     queue);
- 
--VkResult VKAPI vkDeviceWaitIdle(
-+VKAPI_ATTR VkResult VKAPI_CALL vkDeviceWaitIdle(
-     VkDevice                                    device);
- 
--VkResult VKAPI vkAllocateMemory(
-+VKAPI_ATTR VkResult VKAPI_CALL vkAllocateMemory(
-     VkDevice                                    device,
-     const VkMemoryAllocateInfo*                 pAllocateInfo,
-     const VkAllocationCallbacks*                pAllocator,
-     VkDeviceMemory*                             pMemory);
- 
--void VKAPI vkFreeMemory(
-+VKAPI_ATTR void VKAPI_CALL vkFreeMemory(
-     VkDevice                                    device,
-     VkDeviceMemory                              memory,
-     const VkAllocationCallbacks*                pAllocator);
- 
--VkResult VKAPI vkMapMemory(
-+VKAPI_ATTR VkResult VKAPI_CALL vkMapMemory(
-     VkDevice                                    device,
-     VkDeviceMemory                              memory,
-     VkDeviceSize                                offset,
-@@ -2395,54 +2397,54 @@ VkResult VKAPI vkMapMemory(
-     VkMemoryMapFlags                            flags,
-     void**                                      ppData);
- 
--void VKAPI vkUnmapMemory(
-+VKAPI_ATTR void VKAPI_CALL vkUnmapMemory(
-     VkDevice                                    device,
-     VkDeviceMemory                              memory);
- 
--VkResult VKAPI vkFlushMappedMemoryRanges(
-+VKAPI_ATTR VkResult VKAPI_CALL vkFlushMappedMemoryRanges(
-     VkDevice                                    device,
-     uint32_t                                    memoryRangeCount,
-     const VkMappedMemoryRange*                  pMemoryRanges);
- 
--VkResult VKAPI vkInvalidateMappedMemoryRanges(
-+VKAPI_ATTR VkResult VKAPI_CALL vkInvalidateMappedMemoryRanges(
-     VkDevice                                    device,
-     uint32_t                                    memoryRangeCount,
-     const VkMappedMemoryRange*                  pMemoryRanges);
- 
--void VKAPI vkGetDeviceMemoryCommitment(
-+VKAPI_ATTR void VKAPI_CALL vkGetDeviceMemoryCommitment(
-     VkDevice                                    device,
-     VkDeviceMemory                              memory,
-     VkDeviceSize*                               pCommittedMemoryInBytes);
- 
--VkResult VKAPI vkBindBufferMemory(
-+VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory(
-     VkDevice                                    device,
-     VkBuffer                                    buffer,
-     VkDeviceMemory                              memory,
-     VkDeviceSize                                memoryOffset);
- 
--VkResult VKAPI vkBindImageMemory(
-+VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory(
-     VkDevice                                    device,
-     VkImage                                     image,
-     VkDeviceMemory                              memory,
-     VkDeviceSize                                memoryOffset);
- 
--void VKAPI vkGetBufferMemoryRequirements(
-+VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements(
-     VkDevice                                    device,
-     VkBuffer                                    buffer,
-     VkMemoryRequirements*                       pMemoryRequirements);
- 
--void VKAPI vkGetImageMemoryRequirements(
-+VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements(
-     VkDevice                                    device,
-     VkImage                                     image,
-     VkMemoryRequirements*                       pMemoryRequirements);
- 
--void VKAPI vkGetImageSparseMemoryRequirements(
-+VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements(
-     VkDevice                                    device,
-     VkImage                                     image,
-     uint32_t*                                   pSparseMemoryRequirementCount,
-     VkSparseImageMemoryRequirements*            pSparseMemoryRequirements);
- 
--void VKAPI vkGetPhysicalDeviceSparseImageFormatProperties(
-+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties(
-     VkPhysicalDevice                            physicalDevice,
-     VkFormat                                    format,
-     VkImageType                                 type,
-@@ -2452,85 +2454,85 @@ void VKAPI vkGetPhysicalDeviceSparseImageFormatProperties(
-     uint32_t*                                   pPropertyCount,
-     VkSparseImageFormatProperties*              pProperties);
- 
--VkResult VKAPI vkQueueBindSparse(
-+VKAPI_ATTR VkResult VKAPI_CALL vkQueueBindSparse(
-     VkQueue                                     queue,
-     uint32_t                                    bindInfoCount,
-     const VkBindSparseInfo*                     pBindInfo,
-     VkFence                                     fence);
- 
--VkResult VKAPI vkCreateFence(
-+VKAPI_ATTR VkResult VKAPI_CALL vkCreateFence(
-     VkDevice                                    device,
-     const VkFenceCreateInfo*                    pCreateInfo,
-     const VkAllocationCallbacks*                pAllocator,
-     VkFence*                                    pFence);
- 
--void VKAPI vkDestroyFence(
-+VKAPI_ATTR void VKAPI_CALL vkDestroyFence(
-     VkDevice                                    device,
-     VkFence                                     fence,
-     const VkAllocationCallbacks*                pAllocator);
- 
--VkResult VKAPI vkResetFences(
-+VKAPI_ATTR VkResult VKAPI_CALL vkResetFences(
-     VkDevice                                    device,
-     uint32_t                                    fenceCount,
-     const VkFence*                              pFences);
- 
--VkResult VKAPI vkGetFenceStatus(
-+VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceStatus(
-     VkDevice                                    device,
-     VkFence                                     fence);
- 
--VkResult VKAPI vkWaitForFences(
-+VKAPI_ATTR VkResult VKAPI_CALL vkWaitForFences(
-     VkDevice                                    device,
-     uint32_t                                    fenceCount,
-     const VkFence*                              pFences,
-     VkBool32                                    waitAll,
-     uint64_t                                    timeout);
- 
--VkResult VKAPI vkCreateSemaphore(
-+VKAPI_ATTR VkResult VKAPI_CALL vkCreateSemaphore(
-     VkDevice                                    device,
-     const VkSemaphoreCreateInfo*                pCreateInfo,
-     const VkAllocationCallbacks*                pAllocator,
-     VkSemaphore*                                pSemaphore);
- 
--void VKAPI vkDestroySemaphore(
-+VKAPI_ATTR void VKAPI_CALL vkDestroySemaphore(
-     VkDevice                                    device,
-     VkSemaphore                                 semaphore,
-     const VkAllocationCallbacks*                pAllocator);
- 
--VkResult VKAPI vkCreateEvent(
-+VKAPI_ATTR VkResult VKAPI_CALL vkCreateEvent(
-     VkDevice                                    device,
-     const VkEventCreateInfo*                    pCreateInfo,
-     const VkAllocationCallbacks*                pAllocator,
-     VkEvent*                                    pEvent);
- 
--void VKAPI vkDestroyEvent(
-+VKAPI_ATTR void VKAPI_CALL vkDestroyEvent(
-     VkDevice                                    device,
-     VkEvent                                     event,
-     const VkAllocationCallbacks*                pAllocator);
- 
--VkResult VKAPI vkGetEventStatus(
-+VKAPI_ATTR VkResult VKAPI_CALL vkGetEventStatus(
-     VkDevice                                    device,
-     VkEvent                                     event);
- 
--VkResult VKAPI vkSetEvent(
-+VKAPI_ATTR VkResult VKAPI_CALL vkSetEvent(
-     VkDevice                                    device,
-     VkEvent                                     event);
- 
--VkResult VKAPI vkResetEvent(
-+VKAPI_ATTR VkResult VKAPI_CALL vkResetEvent(
-     VkDevice                                    device,
-     VkEvent                                     event);
- 
--VkResult VKAPI vkCreateQueryPool(
-+VKAPI_ATTR VkResult VKAPI_CALL vkCreateQueryPool(
-     VkDevice                                    device,
-     const VkQueryPoolCreateInfo*                pCreateInfo,
-     const VkAllocationCallbacks*                pAllocator,
-     VkQueryPool*                                pQueryPool);
- 
--void VKAPI vkDestroyQueryPool(
-+VKAPI_ATTR void VKAPI_CALL vkDestroyQueryPool(
-     VkDevice                                    device,
-     VkQueryPool                                 queryPool,
-     const VkAllocationCallbacks*                pAllocator);
- 
--VkResult VKAPI vkGetQueryPoolResults(
-+VKAPI_ATTR VkResult VKAPI_CALL vkGetQueryPoolResults(
-     VkDevice                                    device,
-     VkQueryPool                                 queryPool,
-     uint32_t                                    startQuery,
-@@ -2540,91 +2542,91 @@ VkResult VKAPI vkGetQueryPoolResults(
-     VkDeviceSize                                stride,
-     VkQueryResultFlags                          flags);
- 
--VkResult VKAPI vkCreateBuffer(
-+VKAPI_ATTR VkResult VKAPI_CALL vkCreateBuffer(
-     VkDevice                                    device,
-     const VkBufferCreateInfo*                   pCreateInfo,
-     const VkAllocationCallbacks*                pAllocator,
-     VkBuffer*                                   pBuffer);
- 
--void VKAPI vkDestroyBuffer(
-+VKAPI_ATTR void VKAPI_CALL vkDestroyBuffer(
-     VkDevice                                    device,
-     VkBuffer                                    buffer,
-     const VkAllocationCallbacks*                pAllocator);
- 
--VkResult VKAPI vkCreateBufferView(
-+VKAPI_ATTR VkResult VKAPI_CALL vkCreateBufferView(
-     VkDevice                                    device,
-     const VkBufferViewCreateInfo*               pCreateInfo,
-     const VkAllocationCallbacks*                pAllocator,
-     VkBufferView*                               pView);
- 
--void VKAPI vkDestroyBufferView(
-+VKAPI_ATTR void VKAPI_CALL vkDestroyBufferView(
-     VkDevice                                    device,
-     VkBufferView                                bufferView,
-     const VkAllocationCallbacks*                pAllocator);
- 
--VkResult VKAPI vkCreateImage(
-+VKAPI_ATTR VkResult VKAPI_CALL vkCreateImage(
-     VkDevice                                    device,
-     const VkImageCreateInfo*                    pCreateInfo,
-     const VkAllocationCallbacks*                pAllocator,
-     VkImage*                                    pImage);
- 
--void VKAPI vkDestroyImage(
-+VKAPI_ATTR void VKAPI_CALL vkDestroyImage(
-     VkDevice                                    device,
-     VkImage                                     image,
-     const VkAllocationCallbacks*                pAllocator);
- 
--void VKAPI vkGetImageSubresourceLayout(
-+VKAPI_ATTR void VKAPI_CALL vkGetImageSubresourceLayout(
-     VkDevice                                    device,
-     VkImage                                     image,
-     const VkImageSubresource*                   pSubresource,
-     VkSubresourceLayout*                        pLayout);
- 
--VkResult VKAPI vkCreateImageView(
-+VKAPI_ATTR VkResult VKAPI_CALL vkCreateImageView(
-     VkDevice                                    device,
-     const VkImageViewCreateInfo*                pCreateInfo,
-     const VkAllocationCallbacks*                pAllocator,
-     VkImageView*                                pView);
- 
--void VKAPI vkDestroyImageView(
-+VKAPI_ATTR void VKAPI_CALL vkDestroyImageView(
-     VkDevice                                    device,
-     VkImageView                                 imageView,
-     const VkAllocationCallbacks*                pAllocator);
- 
--VkResult VKAPI vkCreateShaderModule(
-+VKAPI_ATTR VkResult VKAPI_CALL vkCreateShaderModule(
-     VkDevice                                    device,
-     const VkShaderModuleCreateInfo*             pCreateInfo,
-     const VkAllocationCallbacks*                pAllocator,
-     VkShaderModule*                             pShaderModule);
- 
--void VKAPI vkDestroyShaderModule(
-+VKAPI_ATTR void VKAPI_CALL vkDestroyShaderModule(
-     VkDevice                                    device,
-     VkShaderModule                              shaderModule,
-     const VkAllocationCallbacks*                pAllocator);
- 
--VkResult VKAPI vkCreatePipelineCache(
-+VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineCache(
-     VkDevice                                    device,
-     const VkPipelineCacheCreateInfo*            pCreateInfo,
-     const VkAllocationCallbacks*                pAllocator,
-     VkPipelineCache*                            pPipelineCache);
- 
--void VKAPI vkDestroyPipelineCache(
-+VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineCache(
-     VkDevice                                    device,
-     VkPipelineCache                             pipelineCache,
-     const VkAllocationCallbacks*                pAllocator);
- 
--VkResult VKAPI vkGetPipelineCacheData(
-+VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineCacheData(
-     VkDevice                                    device,
-     VkPipelineCache                             pipelineCache,
-     size_t*                                     pDataSize,
-     void*                                       pData);
- 
--VkResult VKAPI vkMergePipelineCaches(
-+VKAPI_ATTR VkResult VKAPI_CALL vkMergePipelineCaches(
-     VkDevice                                    device,
-     VkPipelineCache                             dstCache,
-     uint32_t                                    srcCacheCount,
-     const VkPipelineCache*                      pSrcCaches);
- 
--VkResult VKAPI vkCreateGraphicsPipelines(
-+VKAPI_ATTR VkResult VKAPI_CALL vkCreateGraphicsPipelines(
-     VkDevice                                    device,
-     VkPipelineCache                             pipelineCache,
-     uint32_t                                    createInfoCount,
-@@ -2632,7 +2634,7 @@ VkResult VKAPI vkCreateGraphicsPipelines(
-     const VkAllocationCallbacks*                pAllocator,
-     VkPipeline*                                 pPipelines);
- 
--VkResult VKAPI vkCreateComputePipelines(
-+VKAPI_ATTR VkResult VKAPI_CALL vkCreateComputePipelines(
-     VkDevice                                    device,
-     VkPipelineCache                             pipelineCache,
-     uint32_t                                    createInfoCount,
-@@ -2640,193 +2642,193 @@ VkResult VKAPI vkCreateComputePipelines(
-     const VkAllocationCallbacks*                pAllocator,
-     VkPipeline*                                 pPipelines);
- 
--void VKAPI vkDestroyPipeline(
-+VKAPI_ATTR void VKAPI_CALL vkDestroyPipeline(
-     VkDevice                                    device,
-     VkPipeline                                  pipeline,
-     const VkAllocationCallbacks*                pAllocator);
- 
--VkResult VKAPI vkCreatePipelineLayout(
-+VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineLayout(
-     VkDevice                                    device,
-     const VkPipelineLayoutCreateInfo*           pCreateInfo,
-     const VkAllocationCallbacks*                pAllocator,
-     VkPipelineLayout*                           pPipelineLayout);
- 
--void VKAPI vkDestroyPipelineLayout(
-+VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineLayout(
-     VkDevice                                    device,
-     VkPipelineLayout                            pipelineLayout,
-     const VkAllocationCallbacks*                pAllocator);
- 
--VkResult VKAPI vkCreateSampler(
-+VKAPI_ATTR VkResult VKAPI_CALL vkCreateSampler(
-     VkDevice                                    device,
-     const VkSamplerCreateInfo*                  pCreateInfo,
-     const VkAllocationCallbacks*                pAllocator,
-     VkSampler*                                  pSampler);
- 
--void VKAPI vkDestroySampler(
-+VKAPI_ATTR void VKAPI_CALL vkDestroySampler(
-     VkDevice                                    device,
-     VkSampler                                   sampler,
-     const VkAllocationCallbacks*                pAllocator);
- 
--VkResult VKAPI vkCreateDescriptorSetLayout(
-+VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorSetLayout(
-     VkDevice                                    device,
-     const VkDescriptorSetLayoutCreateInfo*      pCreateInfo,
-     const VkAllocationCallbacks*                pAllocator,
-     VkDescriptorSetLayout*                      pSetLayout);
- 
--void VKAPI vkDestroyDescriptorSetLayout(
-+VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorSetLayout(
-     VkDevice                                    device,
-     VkDescriptorSetLayout                       descriptorSetLayout,
-     const VkAllocationCallbacks*                pAllocator);
- 
--VkResult VKAPI vkCreateDescriptorPool(
-+VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorPool(
-     VkDevice                                    device,
-     const VkDescriptorPoolCreateInfo*           pCreateInfo,
-     const VkAllocationCallbacks*                pAllocator,
-     VkDescriptorPool*                           pDescriptorPool);
- 
--void VKAPI vkDestroyDescriptorPool(
-+VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorPool(
-     VkDevice                                    device,
-     VkDescriptorPool                            descriptorPool,
-     const VkAllocationCallbacks*                pAllocator);
- 
--VkResult VKAPI vkResetDescriptorPool(
-+VKAPI_ATTR VkResult VKAPI_CALL vkResetDescriptorPool(
-     VkDevice                                    device,
-     VkDescriptorPool                            descriptorPool,
-     VkDescriptorPoolResetFlags                  flags);
- 
--VkResult VKAPI vkAllocateDescriptorSets(
-+VKAPI_ATTR VkResult VKAPI_CALL vkAllocateDescriptorSets(
-     VkDevice                                    device,
-     const VkDescriptorSetAllocateInfo*          pAllocateInfo,
-     VkDescriptorSet*                            pDescriptorSets);
- 
--VkResult VKAPI vkFreeDescriptorSets(
-+VKAPI_ATTR VkResult VKAPI_CALL vkFreeDescriptorSets(
-     VkDevice                                    device,
-     VkDescriptorPool                            descriptorPool,
-     uint32_t                                    descriptorSetCount,
-     const VkDescriptorSet*                      pDescriptorSets);
- 
--void VKAPI vkUpdateDescriptorSets(
-+VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSets(
-     VkDevice                                    device,
-     uint32_t                                    descriptorWriteCount,
-     const VkWriteDescriptorSet*                 pDescriptorWrites,
-     uint32_t                                    descriptorCopyCount,
-     const VkCopyDescriptorSet*                  pDescriptorCopies);
- 
--VkResult VKAPI vkCreateFramebuffer(
-+VKAPI_ATTR VkResult VKAPI_CALL vkCreateFramebuffer(
-     VkDevice                                    device,
-     const VkFramebufferCreateInfo*              pCreateInfo,
-     const VkAllocationCallbacks*                pAllocator,
-     VkFramebuffer*                              pFramebuffer);
- 
--void VKAPI vkDestroyFramebuffer(
-+VKAPI_ATTR void VKAPI_CALL vkDestroyFramebuffer(
-     VkDevice                                    device,
-     VkFramebuffer                               framebuffer,
-     const VkAllocationCallbacks*                pAllocator);
- 
--VkResult VKAPI vkCreateRenderPass(
-+VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass(
-     VkDevice                                    device,
-     const VkRenderPassCreateInfo*               pCreateInfo,
-     const VkAllocationCallbacks*                pAllocator,
-     VkRenderPass*                               pRenderPass);
- 
--void VKAPI vkDestroyRenderPass(
-+VKAPI_ATTR void VKAPI_CALL vkDestroyRenderPass(
-     VkDevice                                    device,
-     VkRenderPass                                renderPass,
-     const VkAllocationCallbacks*                pAllocator);
- 
--void VKAPI vkGetRenderAreaGranularity(
-+VKAPI_ATTR void VKAPI_CALL vkGetRenderAreaGranularity(
-     VkDevice                                    device,
-     VkRenderPass                                renderPass,
-     VkExtent2D*                                 pGranularity);
- 
--VkResult VKAPI vkCreateCommandPool(
-+VKAPI_ATTR VkResult VKAPI_CALL vkCreateCommandPool(
-     VkDevice                                    device,
-     const VkCommandPoolCreateInfo*              pCreateInfo,
-     const VkAllocationCallbacks*                pAllocator,
-     VkCommandPool*                              pCommandPool);
- 
--void VKAPI vkDestroyCommandPool(
-+VKAPI_ATTR void VKAPI_CALL vkDestroyCommandPool(
-     VkDevice                                    device,
-     VkCommandPool                               commandPool,
-     const VkAllocationCallbacks*                pAllocator);
- 
--VkResult VKAPI vkResetCommandPool(
-+VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandPool(
-     VkDevice                                    device,
-     VkCommandPool                               commandPool,
-     VkCommandPoolResetFlags                     flags);
- 
--VkResult VKAPI vkAllocateCommandBuffers(
-+VKAPI_ATTR VkResult VKAPI_CALL vkAllocateCommandBuffers(
-     VkDevice                                    device,
-     const VkCommandBufferAllocateInfo*          pAllocateInfo,
-     VkCommandBuffer*                            pCommandBuffers);
- 
--void VKAPI vkFreeCommandBuffers(
-+VKAPI_ATTR void VKAPI_CALL vkFreeCommandBuffers(
-     VkDevice                                    device,
-     VkCommandPool                               commandPool,
-     uint32_t                                    commandBufferCount,
-     const VkCommandBuffer*                      pCommandBuffers);
- 
--VkResult VKAPI vkBeginCommandBuffer(
-+VKAPI_ATTR VkResult VKAPI_CALL vkBeginCommandBuffer(
-     VkCommandBuffer                             commandBuffer,
-     const VkCommandBufferBeginInfo*             pBeginInfo);
- 
--VkResult VKAPI vkEndCommandBuffer(
-+VKAPI_ATTR VkResult VKAPI_CALL vkEndCommandBuffer(
-     VkCommandBuffer                             commandBuffer);
- 
--VkResult VKAPI vkResetCommandBuffer(
-+VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandBuffer(
-     VkCommandBuffer                             commandBuffer,
-     VkCommandBufferResetFlags                   flags);
- 
--void VKAPI vkCmdBindPipeline(
-+VKAPI_ATTR void VKAPI_CALL vkCmdBindPipeline(
-     VkCommandBuffer                             commandBuffer,
-     VkPipelineBindPoint                         pipelineBindPoint,
-     VkPipeline                                  pipeline);
- 
--void VKAPI vkCmdSetViewport(
-+VKAPI_ATTR void VKAPI_CALL vkCmdSetViewport(
-     VkCommandBuffer                             commandBuffer,
-     uint32_t                                    viewportCount,
-     const VkViewport*                           pViewports);
- 
--void VKAPI vkCmdSetScissor(
-+VKAPI_ATTR void VKAPI_CALL vkCmdSetScissor(
-     VkCommandBuffer                             commandBuffer,
-     uint32_t                                    scissorCount,
-     const VkRect2D*                             pScissors);
- 
--void VKAPI vkCmdSetLineWidth(
-+VKAPI_ATTR void VKAPI_CALL vkCmdSetLineWidth(
-     VkCommandBuffer                             commandBuffer,
-     float                                       lineWidth);
- 
--void VKAPI vkCmdSetDepthBias(
-+VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBias(
-     VkCommandBuffer                             commandBuffer,
-     float                                       depthBiasConstantFactor,
-     float                                       depthBiasClamp,
-     float                                       depthBiasSlopeFactor);
- 
--void VKAPI vkCmdSetBlendConstants(
-+VKAPI_ATTR void VKAPI_CALL vkCmdSetBlendConstants(
-     VkCommandBuffer                             commandBuffer,
-     const float                                 blendConstants[4]);
- 
--void VKAPI vkCmdSetDepthBounds(
-+VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBounds(
-     VkCommandBuffer                             commandBuffer,
-     float                                       minDepthBounds,
-     float                                       maxDepthBounds);
- 
--void VKAPI vkCmdSetStencilCompareMask(
-+VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilCompareMask(
-     VkCommandBuffer                             commandBuffer,
-     VkStencilFaceFlags                          faceMask,
-     uint32_t                                    compareMask);
- 
--void VKAPI vkCmdSetStencilWriteMask(
-+VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilWriteMask(
-     VkCommandBuffer                             commandBuffer,
-     VkStencilFaceFlags                          faceMask,
-     uint32_t                                    writeMask);
- 
--void VKAPI vkCmdSetStencilReference(
-+VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilReference(
-     VkCommandBuffer                             commandBuffer,
-     VkStencilFaceFlags                          faceMask,
-     uint32_t                                    reference);
- 
--void VKAPI vkCmdBindDescriptorSets(
-+VKAPI_ATTR void VKAPI_CALL vkCmdBindDescriptorSets(
-     VkCommandBuffer                             commandBuffer,
-     VkPipelineBindPoint                         pipelineBindPoint,
-     VkPipelineLayout                            layout,
-@@ -2836,27 +2838,27 @@ void VKAPI vkCmdBindDescriptorSets(
-     uint32_t                                    dynamicOffsetCount,
-     const uint32_t*                             pDynamicOffsets);
- 
--void VKAPI vkCmdBindIndexBuffer(
-+VKAPI_ATTR void VKAPI_CALL vkCmdBindIndexBuffer(
-     VkCommandBuffer                             commandBuffer,
-     VkBuffer                                    buffer,
-     VkDeviceSize                                offset,
-     VkIndexType                                 indexType);
- 
--void VKAPI vkCmdBindVertexBuffers(
-+VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers(
-     VkCommandBuffer                             commandBuffer,
-     uint32_t                                    startBinding,
-     uint32_t                                    bindingCount,
-     const VkBuffer*                             pBuffers,
-     const VkDeviceSize*                         pOffsets);
- 
--void VKAPI vkCmdDraw(
-+VKAPI_ATTR void VKAPI_CALL vkCmdDraw(
-     VkCommandBuffer                             commandBuffer,
-     uint32_t                                    vertexCount,
-     uint32_t                                    instanceCount,
-     uint32_t                                    firstVertex,
-     uint32_t                                    firstInstance);
- 
--void VKAPI vkCmdDrawIndexed(
-+VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexed(
-     VkCommandBuffer                             commandBuffer,
-     uint32_t                                    indexCount,
-     uint32_t                                    instanceCount,
-@@ -2864,39 +2866,39 @@ void VKAPI vkCmdDrawIndexed(
-     int32_t                                     vertexOffset,
-     uint32_t                                    firstInstance);
- 
--void VKAPI vkCmdDrawIndirect(
-+VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirect(
-     VkCommandBuffer                             commandBuffer,
-     VkBuffer                                    buffer,
-     VkDeviceSize                                offset,
-     uint32_t                                    drawCount,
-     uint32_t                                    stride);
- 
--void VKAPI vkCmdDrawIndexedIndirect(
-+VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirect(
-     VkCommandBuffer                             commandBuffer,
-     VkBuffer                                    buffer,
-     VkDeviceSize                                offset,
-     uint32_t                                    drawCount,
-     uint32_t                                    stride);
- 
--void VKAPI vkCmdDispatch(
-+VKAPI_ATTR void VKAPI_CALL vkCmdDispatch(
-     VkCommandBuffer                             commandBuffer,
-     uint32_t                                    x,
-     uint32_t                                    y,
-     uint32_t                                    z);
- 
--void VKAPI vkCmdDispatchIndirect(
-+VKAPI_ATTR void VKAPI_CALL vkCmdDispatchIndirect(
-     VkCommandBuffer                             commandBuffer,
-     VkBuffer                                    buffer,
-     VkDeviceSize                                offset);
- 
--void VKAPI vkCmdCopyBuffer(
-+VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer(
-     VkCommandBuffer                             commandBuffer,
-     VkBuffer                                    srcBuffer,
-     VkBuffer                                    dstBuffer,
-     uint32_t                                    regionCount,
-     const VkBufferCopy*                         pRegions);
- 
--void VKAPI vkCmdCopyImage(
-+VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage(
-     VkCommandBuffer                             commandBuffer,
-     VkImage                                     srcImage,
-     VkImageLayout                               srcImageLayout,
-@@ -2905,7 +2907,7 @@ void VKAPI vkCmdCopyImage(
-     uint32_t                                    regionCount,
-     const VkImageCopy*                          pRegions);
- 
--void VKAPI vkCmdBlitImage(
-+VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage(
-     VkCommandBuffer                             commandBuffer,
-     VkImage                                     srcImage,
-     VkImageLayout                               srcImageLayout,
-@@ -2915,7 +2917,7 @@ void VKAPI vkCmdBlitImage(
-     const VkImageBlit*                          pRegions,
-     VkFilter                                    filter);
- 
--void VKAPI vkCmdCopyBufferToImage(
-+VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage(
-     VkCommandBuffer                             commandBuffer,
-     VkBuffer                                    srcBuffer,
-     VkImage                                     dstImage,
-@@ -2923,7 +2925,7 @@ void VKAPI vkCmdCopyBufferToImage(
-     uint32_t                                    regionCount,
-     const VkBufferImageCopy*                    pRegions);
- 
--void VKAPI vkCmdCopyImageToBuffer(
-+VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer(
-     VkCommandBuffer                             commandBuffer,
-     VkImage                                     srcImage,
-     VkImageLayout                               srcImageLayout,
-@@ -2931,21 +2933,21 @@ void VKAPI vkCmdCopyImageToBuffer(
-     uint32_t                                    regionCount,
-     const VkBufferImageCopy*                    pRegions);
- 
--void VKAPI vkCmdUpdateBuffer(
-+VKAPI_ATTR void VKAPI_CALL vkCmdUpdateBuffer(
-     VkCommandBuffer                             commandBuffer,
-     VkBuffer                                    dstBuffer,
-     VkDeviceSize                                dstOffset,
-     VkDeviceSize                                dataSize,
-     const uint32_t*                             pData);
- 
--void VKAPI vkCmdFillBuffer(
-+VKAPI_ATTR void VKAPI_CALL vkCmdFillBuffer(
-     VkCommandBuffer                             commandBuffer,
-     VkBuffer                                    dstBuffer,
-     VkDeviceSize                                dstOffset,
-     VkDeviceSize                                size,
-     uint32_t                                    data);
- 
--void VKAPI vkCmdClearColorImage(
-+VKAPI_ATTR void VKAPI_CALL vkCmdClearColorImage(
-     VkCommandBuffer                             commandBuffer,
-     VkImage                                     image,
-     VkImageLayout                               imageLayout,
-@@ -2953,7 +2955,7 @@ void VKAPI vkCmdClearColorImage(
-     uint32_t                                    rangeCount,
-     const VkImageSubresourceRange*              pRanges);
- 
--void VKAPI vkCmdClearDepthStencilImage(
-+VKAPI_ATTR void VKAPI_CALL vkCmdClearDepthStencilImage(
-     VkCommandBuffer                             commandBuffer,
-     VkImage                                     image,
-     VkImageLayout                               imageLayout,
-@@ -2961,14 +2963,14 @@ void VKAPI vkCmdClearDepthStencilImage(
-     uint32_t                                    rangeCount,
-     const VkImageSubresourceRange*              pRanges);
- 
--void VKAPI vkCmdClearAttachments(
-+VKAPI_ATTR void VKAPI_CALL vkCmdClearAttachments(
-     VkCommandBuffer                             commandBuffer,
-     uint32_t                                    attachmentCount,
-     const VkClearAttachment*                    pAttachments,
-     uint32_t                                    rectCount,
-     const VkClearRect*                          pRects);
- 
--void VKAPI vkCmdResolveImage(
-+VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage(
-     VkCommandBuffer                             commandBuffer,
-     VkImage                                     srcImage,
-     VkImageLayout                               srcImageLayout,
-@@ -2977,17 +2979,17 @@ void VKAPI vkCmdResolveImage(
-     uint32_t                                    regionCount,
-     const VkImageResolve*                       pRegions);
- 
--void VKAPI vkCmdSetEvent(
-+VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent(
-     VkCommandBuffer                             commandBuffer,
-     VkEvent                                     event,
-     VkPipelineStageFlags                        stageMask);
- 
--void VKAPI vkCmdResetEvent(
-+VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent(
-     VkCommandBuffer                             commandBuffer,
-     VkEvent                                     event,
-     VkPipelineStageFlags                        stageMask);
- 
--void VKAPI vkCmdWaitEvents(
-+VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents(
-     VkCommandBuffer                             commandBuffer,
-     uint32_t                                    eventCount,
-     const VkEvent*                              pEvents,
-@@ -2996,7 +2998,7 @@ void VKAPI vkCmdWaitEvents(
-     uint32_t                                    memoryBarrierCount,
-     const void* const*                          ppMemoryBarriers);
- 
--void VKAPI vkCmdPipelineBarrier(
-+VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier(
-     VkCommandBuffer                             commandBuffer,
-     VkPipelineStageFlags                        srcStageMask,
-     VkPipelineStageFlags                        dstStageMask,
-@@ -3004,30 +3006,30 @@ void VKAPI vkCmdPipelineBarrier(
-     uint32_t                                    memoryBarrierCount,
-     const void* const*                          ppMemoryBarriers);
- 
--void VKAPI vkCmdBeginQuery(
-+VKAPI_ATTR void VKAPI_CALL vkCmdBeginQuery(
-     VkCommandBuffer                             commandBuffer,
-     VkQueryPool                                 queryPool,
-     uint32_t                                    entry,
-     VkQueryControlFlags                         flags);
- 
--void VKAPI vkCmdEndQuery(
-+VKAPI_ATTR void VKAPI_CALL vkCmdEndQuery(
-     VkCommandBuffer                             commandBuffer,
-     VkQueryPool                                 queryPool,
-     uint32_t                                    entry);
- 
--void VKAPI vkCmdResetQueryPool(
-+VKAPI_ATTR void VKAPI_CALL vkCmdResetQueryPool(
-     VkCommandBuffer                             commandBuffer,
-     VkQueryPool                                 queryPool,
-     uint32_t                                    startQuery,
-     uint32_t                                    queryCount);
- 
--void VKAPI vkCmdWriteTimestamp(
-+VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp(
-     VkCommandBuffer                             commandBuffer,
-     VkPipelineStageFlagBits                     pipelineStage,
-     VkQueryPool                                 queryPool,
-     uint32_t                                    entry);
- 
--void VKAPI vkCmdCopyQueryPoolResults(
-+VKAPI_ATTR void VKAPI_CALL vkCmdCopyQueryPoolResults(
-     VkCommandBuffer                             commandBuffer,
-     VkQueryPool                                 queryPool,
-     uint32_t                                    startQuery,
-@@ -3037,7 +3039,7 @@ void VKAPI vkCmdCopyQueryPoolResults(
-     VkDeviceSize                                stride,
-     VkQueryResultFlags                          flags);
- 
--void VKAPI vkCmdPushConstants(
-+VKAPI_ATTR void VKAPI_CALL vkCmdPushConstants(
-     VkCommandBuffer                             commandBuffer,
-     VkPipelineLayout                            layout,
-     VkShaderStageFlags                          stageFlags,
-@@ -3045,19 +3047,19 @@ void VKAPI vkCmdPushConstants(
-     uint32_t                                    size,
-     const void*                                 values);
- 
--void VKAPI vkCmdBeginRenderPass(
-+VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass(
-     VkCommandBuffer                             commandBuffer,
-     const VkRenderPassBeginInfo*                pRenderPassBegin,
-     VkSubpassContents                           contents);
- 
--void VKAPI vkCmdNextSubpass(
-+VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass(
-     VkCommandBuffer                             commandBuffer,
-     VkSubpassContents                           contents);
- 
--void VKAPI vkCmdEndRenderPass(
-+VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass(
-     VkCommandBuffer                             commandBuffer);
- 
--void VKAPI vkCmdExecuteCommands(
-+VKAPI_ATTR void VKAPI_CALL vkCmdExecuteCommands(
-     VkCommandBuffer                             commandBuffer,
-     uint32_t                                    commandBuffersCount,
-     const VkCommandBuffer*                      pCommandBuffers);
-@@ -3148,35 +3150,35 @@ typedef struct VkSurfaceFormatKHR {
- } VkSurfaceFormatKHR;
- 
- 
--typedef void (VKAPI *PFN_vkDestroySurfaceKHR)(VkInstance  instance, VkSurfaceKHR  surface);
--typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceSurfaceSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported);
--typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities);
--typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats);
--typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes);
-+typedef void (VKAPI_PTR *PFN_vkDestroySurfaceKHR)(VkInstance  instance, VkSurfaceKHR  surface);
-+typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported);
-+typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities);
-+typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats);
-+typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes);
- 
- #ifdef VK_PROTOTYPES
--void VKAPI vkDestroySurfaceKHR(
-+VKAPI_ATTR void VKAPI_CALL vkDestroySurfaceKHR(
-     VkInstance                                   instance,
-     VkSurfaceKHR                                 surface);
- 
--VkResult VKAPI vkGetPhysicalDeviceSurfaceSupportKHR(
-+VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceSupportKHR(
-     VkPhysicalDevice                            physicalDevice,
-     uint32_t                                    queueFamilyIndex,
-     VkSurfaceKHR                                surface,
-     VkBool32*                                   pSupported);
- 
--VkResult VKAPI vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
-+VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
-     VkPhysicalDevice                            physicalDevice,
-     VkSurfaceKHR                                surface,
-     VkSurfaceCapabilitiesKHR*                   pSurfaceCapabilities);
- 
--VkResult VKAPI vkGetPhysicalDeviceSurfaceFormatsKHR(
-+VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormatsKHR(
-     VkPhysicalDevice                            physicalDevice,
-     VkSurfaceKHR                                surface,
-     uint32_t*                                   pSurfaceFormatCount,
-     VkSurfaceFormatKHR*                         pSurfaceFormats);
- 
--VkResult VKAPI vkGetPhysicalDeviceSurfacePresentModesKHR(
-+VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModesKHR(
-     VkPhysicalDevice                            physicalDevice,
-     VkSurfaceKHR                                surface,
-     uint32_t*                                   pPresentModeCount,
-@@ -3227,29 +3229,29 @@ typedef struct VkPresentInfoKHR {
- } VkPresentInfoKHR;
- 
- 
--typedef VkResult (VKAPI *PFN_vkCreateSwapchainKHR)(VkDevice  device, const VkSwapchainCreateInfoKHR*  pCreateInfo, VkSwapchainKHR*  pSwapchain);
--typedef void (VKAPI *PFN_vkDestroySwapchainKHR)(VkDevice  device, VkSwapchainKHR  swapchain);
--typedef VkResult (VKAPI *PFN_vkGetSwapchainImagesKHR)(VkDevice  device, VkSwapchainKHR  swapchain, uint32_t*  pSwapchainImageCount, VkImage*  pSwapchainImages);
--typedef VkResult (VKAPI *PFN_vkAcquireNextImageKHR)(VkDevice  device, VkSwapchainKHR  swapchain, uint64_t  timeout, VkSemaphore  semaphore, VkFence  fence, uint32_t*  pImageIndex);
--typedef VkResult (VKAPI *PFN_vkQueuePresentKHR)(VkQueue  queue, VkPresentInfoKHR*  pPresentInfo);
-+typedef VkResult (VKAPI_PTR *PFN_vkCreateSwapchainKHR)(VkDevice  device, const VkSwapchainCreateInfoKHR*  pCreateInfo, VkSwapchainKHR*  pSwapchain);
-+typedef void (VKAPI_PTR *PFN_vkDestroySwapchainKHR)(VkDevice  device, VkSwapchainKHR  swapchain);
-+typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainImagesKHR)(VkDevice  device, VkSwapchainKHR  swapchain, uint32_t*  pSwapchainImageCount, VkImage*  pSwapchainImages);
-+typedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImageKHR)(VkDevice  device, VkSwapchainKHR  swapchain, uint64_t  timeout, VkSemaphore  semaphore, VkFence  fence, uint32_t*  pImageIndex);
-+typedef VkResult (VKAPI_PTR *PFN_vkQueuePresentKHR)(VkQueue  queue, VkPresentInfoKHR*  pPresentInfo);
- 
- #ifdef VK_PROTOTYPES
--VkResult VKAPI vkCreateSwapchainKHR(
-+VKAPI_ATTR VkResult VKAPI_CALL vkCreateSwapchainKHR(
-     VkDevice                                     device,
-     const VkSwapchainCreateInfoKHR*              pCreateInfo,
-     VkSwapchainKHR*                              pSwapchain);
- 
--void VKAPI vkDestroySwapchainKHR(
-+VKAPI_ATTR void VKAPI_CALL vkDestroySwapchainKHR(
-     VkDevice                                     device,
-     VkSwapchainKHR                               swapchain);
- 
--VkResult VKAPI vkGetSwapchainImagesKHR(
-+VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainImagesKHR(
-     VkDevice                                     device,
-     VkSwapchainKHR                               swapchain,
-     uint32_t*                                    pSwapchainImageCount,
-     VkImage*                                     pSwapchainImages);
- 
--VkResult VKAPI vkAcquireNextImageKHR(
-+VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImageKHR(
-     VkDevice                                     device,
-     VkSwapchainKHR                               swapchain,
-     uint64_t                                     timeout,
-@@ -3257,7 +3259,7 @@ VkResult VKAPI vkAcquireNextImageKHR(
-     VkFence                                      fence,
-     uint32_t*                                    pImageIndex);
- 
--VkResult VKAPI vkQueuePresentKHR(
-+VKAPI_ATTR VkResult VKAPI_CALL vkQueuePresentKHR(
-     VkQueue                                      queue,
-     VkPresentInfoKHR*                            pPresentInfo);
- #endif
-@@ -3336,49 +3338,49 @@ typedef struct VkDisplaySurfaceCreateInfoKHR {
- } VkDisplaySurfaceCreateInfoKHR;
- 
- 
--typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPropertiesKHR* pProperties);
--typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties);
--typedef VkResult (VKAPI *PFN_vkGetDisplayPlaneSupportedDisplaysKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayKHR* pProperties);
--typedef VkResult (VKAPI *PFN_vkGetDisplayModePropertiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModePropertiesKHR* pProperties);
--typedef VkResult (VKAPI *PFN_vkCreateDisplayModeKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR*pCreateInfo, VkDisplayModeKHR* pMode);
--typedef VkResult (VKAPI *PFN_vkGetDisplayPlaneCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayModeCreateInfoKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities);
--typedef VkResult (VKAPI *PFN_vkCreateDisplayPlaneSurfaceKHR)(VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, VkSurfaceKHR* pSurface);
-+typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPropertiesKHR* pProperties);
-+typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties);
-+typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneSupportedDisplaysKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayKHR* pProperties);
-+typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModePropertiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModePropertiesKHR* pProperties);
-+typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayModeKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR*pCreateInfo, VkDisplayModeKHR* pMode);
-+typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayModeCreateInfoKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities);
-+typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayPlaneSurfaceKHR)(VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, VkSurfaceKHR* pSurface);
- 
- #ifdef VK_PROTOTYPES
--VkResult VKAPI vkGetPhysicalDeviceDisplayPropertiesKHR(
-+VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPropertiesKHR(
-     VkPhysicalDevice                            physicalDevice,
-     uint32_t*                                   pPropertyCount,
-     VkDisplayPropertiesKHR*                     pProperties);
- 
--VkResult VKAPI vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
-+VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
-     VkPhysicalDevice                            physicalDevice,
-     uint32_t*                                   pPropertyCount,
-     VkDisplayPlanePropertiesKHR*                pProperties);
- 
--VkResult VKAPI vkGetDisplayPlaneSupportedDisplaysKHR(
-+VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneSupportedDisplaysKHR(
-     VkPhysicalDevice                            physicalDevice,
-     uint32_t*                                   pPropertyCount,
-     VkDisplayKHR*                               pProperties);
- 
--VkResult VKAPI vkGetDisplayModePropertiesKHR(
-+VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayModePropertiesKHR(
-     VkPhysicalDevice                            physicalDevice,
-     VkDisplayKHR                                display,
-     uint32_t*                                   pPropertyCount,
-     VkDisplayModePropertiesKHR*                 pProperties);
- 
--VkResult VKAPI vkCreateDisplayModeKHR(
-+VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayModeKHR(
-     VkPhysicalDevice                            physicalDevice,
-     VkDisplayKHR                                display,
-     const VkDisplayModeCreateInfoKHR*           pCreateInfo,
-     VkDisplayModeKHR*                           pMode);
- 
--VkResult VKAPI vkGetDisplayPlaneCapabilitiesKHR(
-+VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneCapabilitiesKHR(
-     VkPhysicalDevice                            physicalDevice,
-     VkDisplayModeCreateInfoKHR                  mode,
-     uint32_t                                    planeIndex,
-     VkDisplayPlaneCapabilitiesKHR*              pCapabilities);
- 
--VkResult VKAPI vkCreateDisplayPlaneSurfaceKHR(
-+VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayPlaneSurfaceKHR(
-     VkInstance                                  instance,
-     const VkDisplaySurfaceCreateInfoKHR*        pCreateInfo,
-     VkSurfaceKHR*                               pSurface);
-@@ -3416,17 +3418,17 @@ typedef struct VkDisplayPresentInfoKHR {
- #define VK_KHR_XLIB_SURFACE_EXTENSION_NUMBER 5
- #define VK_KHR_XLIB_SURFACE_EXTENSION_NAME "VK_KHR_xlib_surface"
- 
--typedef VkResult (VKAPI *PFN_vkCreateXlibSurfaceKHR)(VkInstance instance, Display* dpy, Window window, VkSurfaceKHR* pSurface);
--typedef VkBool32 (VKAPI *PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, Display* dpy, VisualID visualID);
-+typedef VkResult (VKAPI_PTR *PFN_vkCreateXlibSurfaceKHR)(VkInstance instance, Display* dpy, Window window, VkSurfaceKHR* pSurface);
-+typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, Display* dpy, VisualID visualID);
- 
- #ifdef VK_PROTOTYPES
--VkResult VKAPI vkCreateXlibSurfaceKHR(
-+VKAPI_ATTR VkResult VKAPI_CALL vkCreateXlibSurfaceKHR(
-     VkInstance                                  instance,
-     Display*                                    dpy,
-     Window                                      window,
-     VkSurfaceKHR*                               pSurface);
- 
--VkBool32 VKAPI vkGetPhysicalDeviceXlibPresentationSupportKHR(
-+VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceXlibPresentationSupportKHR(
-     VkPhysicalDevice                            physicalDevice,
-     uint32_t                                    queueFamilyIndex,
-     Display*                                    dpy,
-@@ -3442,17 +3444,17 @@ VkBool32 VKAPI vkGetPhysicalDeviceXlibPresentationSupportKHR(
- #define VK_KHR_XCB_SURFACE_EXTENSION_NUMBER 6
- #define VK_KHR_XCB_SURFACE_EXTENSION_NAME "VK_KHR_xcb_surface"
- 
--typedef VkResult (VKAPI *PFN_vkCreateXcbSurfaceKHR)(VkInstance instance, xcb_connection_t* connection, xcb_window_t window, VkSurfaceKHR* pSurface);
--typedef VkBool32 (VKAPI *PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id);
-+typedef VkResult (VKAPI_PTR *PFN_vkCreateXcbSurfaceKHR)(VkInstance instance, xcb_connection_t* connection, xcb_window_t window, VkSurfaceKHR* pSurface);
-+typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id);
- 
- #ifdef VK_PROTOTYPES
--VkResult VKAPI vkCreateXcbSurfaceKHR(
-+VKAPI_ATTR VkResult VKAPI_CALL vkCreateXcbSurfaceKHR(
-     VkInstance                                  instance,
-     xcb_connection_t*                           connection,
-     xcb_window_t                                window,
-     VkSurfaceKHR*                               pSurface);
- 
--VkBool32 VKAPI vkGetPhysicalDeviceXcbPresentationSupportKHR(
-+VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceXcbPresentationSupportKHR(
-     VkPhysicalDevice                            physicalDevice,
-     uint32_t                                    queueFamilyIndex,
-     xcb_connection_t*                           connection,
-@@ -3468,17 +3470,17 @@ VkBool32 VKAPI vkGetPhysicalDeviceXcbPresentationSupportKHR(
- #define VK_KHR_WAYLAND_SURFACE_EXTENSION_NUMBER 7
- #define VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME "VK_KHR_wayland_surface"
- 
--typedef VkResult (VKAPI *PFN_vkCreateWaylandSurfaceKHR)(VkInstance instance, struct wl_display* display, struct wl_surface* surface, VkSurfaceKHR* pSurface);
--typedef VkBool32 (VKAPI *PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, struct wl_display* display);
-+typedef VkResult (VKAPI_PTR *PFN_vkCreateWaylandSurfaceKHR)(VkInstance instance, struct wl_display* display, struct wl_surface* surface, VkSurfaceKHR* pSurface);
-+typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, struct wl_display* display);
- 
- #ifdef VK_PROTOTYPES
--VkResult VKAPI vkCreateWaylandSurfaceKHR(
-+VKAPI_ATTR VkResult VKAPI_CALL vkCreateWaylandSurfaceKHR(
-     VkInstance                                  instance,
-     struct wl_display*                          display,
-     struct wl_surface*                          surface,
-     VkSurfaceKHR*                               pSurface);
- 
--VkBool32 VKAPI vkGetPhysicalDeviceWaylandPresentationSupportKHR(
-+VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWaylandPresentationSupportKHR(
-     VkPhysicalDevice                            physicalDevice,
-     uint32_t                                    queueFamilyIndex,
-     struct wl_display*                          display);
-@@ -3493,17 +3495,17 @@ VkBool32 VKAPI vkGetPhysicalDeviceWaylandPresentationSupportKHR(
- #define VK_KHR_MIR_SURFACE_EXTENSION_NUMBER 8
- #define VK_KHR_MIR_SURFACE_EXTENSION_NAME "VK_KHR_mir_surface"
- 
--typedef VkResult (VKAPI *PFN_vkCreateMirSurfaceKHR)(VkInstance instance, MirConnection* connection, MirSurface* mirSurface, VkSurfaceKHR* pSurface);
--typedef VkBool32 (VKAPI *PFN_vkGetPhysicalDeviceMirPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, MirConnection* connection);
-+typedef VkResult (VKAPI_PTR *PFN_vkCreateMirSurfaceKHR)(VkInstance instance, MirConnection* connection, MirSurface* mirSurface, VkSurfaceKHR* pSurface);
-+typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceMirPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, MirConnection* connection);
- 
- #ifdef VK_PROTOTYPES
--VkResult VKAPI vkCreateMirSurfaceKHR(
-+VKAPI_ATTR VkResult VKAPI_CALL vkCreateMirSurfaceKHR(
-     VkInstance                                  instance,
-     MirConnection*                              connection,
-     MirSurface*                                 mirSurface,
-     VkSurfaceKHR*                               pSurface);
- 
--VkBool32 VKAPI vkGetPhysicalDeviceMirPresentationSupportKHR(
-+VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceMirPresentationSupportKHR(
-     VkPhysicalDevice                            physicalDevice,
-     uint32_t                                    queueFamilyIndex,
-     MirConnection*                              connection);
-@@ -3520,10 +3522,10 @@ VkBool32 VKAPI vkGetPhysicalDeviceMirPresentationSupportKHR(
- #define VK_ERROR_INVALID_ANDROID_WINDOW_KHR ((VkResult)(int)0xc0002400)
- #define VK_ERROR_ANDROID_WINDOW_IN_USE_KHR ((VkResult)(int)0xc0002401)
- 
--typedef VkResult (VKAPI *PFN_vkCreateAndroidSurfaceKHR)(VkInstance instance, ANativeWindow* window, VkSurfaceKHR* pSurface);
-+typedef VkResult (VKAPI_PTR *PFN_vkCreateAndroidSurfaceKHR)(VkInstance instance, ANativeWindow* window, VkSurfaceKHR* pSurface);
- 
- #ifdef VK_PROTOTYPES
--VkResult VKAPI vkCreateAndroidSurfaceKHR(
-+VKAPI_ATTR VkResult VKAPI_CALL vkCreateAndroidSurfaceKHR(
-     VkInstance                                  instance,
-     ANativeWindow*                              window,
-     VkSurfaceKHR*                               pSurface);
-@@ -3538,17 +3540,17 @@ VkResult VKAPI vkCreateAndroidSurfaceKHR(
- #define VK_KHR_WIN32_SURFACE_EXTENSION_NUMBER 10
- #define VK_KHR_WIN32_SURFACE_EXTENSION_NAME "VK_KHR_win32_surface"
- 
--typedef VkResult (VKAPI *PFN_vkCreateWin32SurfaceKHR)(VkInstance instance, HINSTANCE hinstance, HWND hwnd, VkSurfaceKHR* pSurface);
--typedef VkBool32 (VKAPI *PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex);
-+typedef VkResult (VKAPI_PTR *PFN_vkCreateWin32SurfaceKHR)(VkInstance instance, HINSTANCE hinstance, HWND hwnd, VkSurfaceKHR* pSurface);
-+typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex);
- 
- #ifdef VK_PROTOTYPES
--VkResult VKAPI vkCreateWin32SurfaceKHR(
-+VKAPI_ATTR VkResult VKAPI_CALL vkCreateWin32SurfaceKHR(
-     VkInstance                                  instance,
-     HINSTANCE                                   hinstance,
-     HWND                                        hwnd,
-     VkSurfaceKHR*                               pSurface);
- 
--VkBool32 VKAPI vkGetPhysicalDeviceWin32PresentationSupportKHR(
-+VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWin32PresentationSupportKHR(
-     VkPhysicalDevice                            physicalDevice,
-     uint32_t                                    queueFamilyIndex);
- #endif
-diff --git a/vulkan/libvulkan/entry.cpp b/vulkan/libvulkan/entry.cpp
-index fffb3eb..7b8db6b 100644
---- a/vulkan/libvulkan/entry.cpp
-+++ b/vulkan/libvulkan/entry.cpp
-@@ -42,741 +42,741 @@ namespace {
- } // namespace
- 
- __attribute__((visibility("default")))
--VkResult vkCreateInstance(const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance) {
-+VKAPI_ATTR VkResult vkCreateInstance(const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance) {
-     return vulkan::CreateInstance(pCreateInfo, pAllocator, pInstance);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyInstance(VkInstance instance, const VkAllocationCallbacks* pAllocator) {
-+VKAPI_ATTR void vkDestroyInstance(VkInstance instance, const VkAllocationCallbacks* pAllocator) {
-     GetVtbl(instance).DestroyInstance(instance, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkEnumeratePhysicalDevices(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices) {
-+VKAPI_ATTR VkResult vkEnumeratePhysicalDevices(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices) {
-     return GetVtbl(instance).EnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices);
- }
- 
- __attribute__((visibility("default")))
--PFN_vkVoidFunction vkGetDeviceProcAddr(VkDevice device, const char* pName) {
-+VKAPI_ATTR PFN_vkVoidFunction vkGetDeviceProcAddr(VkDevice device, const char* pName) {
-     return vulkan::GetDeviceProcAddr(device, pName);
- }
- 
- __attribute__((visibility("default")))
--PFN_vkVoidFunction vkGetInstanceProcAddr(VkInstance instance, const char* pName) {
-+VKAPI_ATTR PFN_vkVoidFunction vkGetInstanceProcAddr(VkInstance instance, const char* pName) {
-     return vulkan::GetInstanceProcAddr(instance, pName);
- }
- 
- __attribute__((visibility("default")))
--void vkGetPhysicalDeviceProperties(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties) {
-+VKAPI_ATTR void vkGetPhysicalDeviceProperties(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties) {
-     GetVtbl(physicalDevice).GetPhysicalDeviceProperties(physicalDevice, pProperties);
- }
- 
- __attribute__((visibility("default")))
--void vkGetPhysicalDeviceQueueFamilyProperties(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties) {
-+VKAPI_ATTR void vkGetPhysicalDeviceQueueFamilyProperties(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties) {
-     GetVtbl(physicalDevice).GetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
- }
- 
- __attribute__((visibility("default")))
--void vkGetPhysicalDeviceMemoryProperties(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties) {
-+VKAPI_ATTR void vkGetPhysicalDeviceMemoryProperties(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties) {
-     GetVtbl(physicalDevice).GetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties);
- }
- 
- __attribute__((visibility("default")))
--void vkGetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures) {
-+VKAPI_ATTR void vkGetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures) {
-     GetVtbl(physicalDevice).GetPhysicalDeviceFeatures(physicalDevice, pFeatures);
- }
- 
- __attribute__((visibility("default")))
--void vkGetPhysicalDeviceFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties) {
-+VKAPI_ATTR void vkGetPhysicalDeviceFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties) {
-     GetVtbl(physicalDevice).GetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkGetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties) {
-+VKAPI_ATTR VkResult vkGetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties) {
-     return GetVtbl(physicalDevice).GetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice) {
-+VKAPI_ATTR VkResult vkCreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice) {
-     return GetVtbl(physicalDevice).CreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyDevice(VkDevice device, const VkAllocationCallbacks* pAllocator) {
-+VKAPI_ATTR void vkDestroyDevice(VkDevice device, const VkAllocationCallbacks* pAllocator) {
-     vulkan::DestroyDevice(device, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkEnumerateInstanceLayerProperties(uint32_t* pPropertyCount, VkLayerProperties* pProperties) {
-+VKAPI_ATTR VkResult vkEnumerateInstanceLayerProperties(uint32_t* pPropertyCount, VkLayerProperties* pProperties) {
-     return vulkan::EnumerateInstanceLayerProperties(pPropertyCount, pProperties);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkEnumerateInstanceExtensionProperties(const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties) {
-+VKAPI_ATTR VkResult vkEnumerateInstanceExtensionProperties(const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties) {
-     return vulkan::EnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkEnumerateDeviceLayerProperties(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkLayerProperties* pProperties) {
-+VKAPI_ATTR VkResult vkEnumerateDeviceLayerProperties(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkLayerProperties* pProperties) {
-     return GetVtbl(physicalDevice).EnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkEnumerateDeviceExtensionProperties(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties) {
-+VKAPI_ATTR VkResult vkEnumerateDeviceExtensionProperties(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties) {
-     return GetVtbl(physicalDevice).EnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties);
- }
- 
- __attribute__((visibility("default")))
--void vkGetDeviceQueue(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue) {
-+VKAPI_ATTR void vkGetDeviceQueue(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue) {
-     vulkan::GetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkQueueSubmit(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence) {
-+VKAPI_ATTR VkResult vkQueueSubmit(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence) {
-     return GetVtbl(queue).QueueSubmit(queue, submitCount, pSubmits, fence);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkQueueWaitIdle(VkQueue queue) {
-+VKAPI_ATTR VkResult vkQueueWaitIdle(VkQueue queue) {
-     return GetVtbl(queue).QueueWaitIdle(queue);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkDeviceWaitIdle(VkDevice device) {
-+VKAPI_ATTR VkResult vkDeviceWaitIdle(VkDevice device) {
-     return GetVtbl(device).DeviceWaitIdle(device);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkAllocateMemory(VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory) {
-+VKAPI_ATTR VkResult vkAllocateMemory(VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory) {
-     return GetVtbl(device).AllocateMemory(device, pAllocateInfo, pAllocator, pMemory);
- }
- 
- __attribute__((visibility("default")))
--void vkFreeMemory(VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator) {
-+VKAPI_ATTR void vkFreeMemory(VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator) {
-     GetVtbl(device).FreeMemory(device, memory, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkMapMemory(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData) {
-+VKAPI_ATTR VkResult vkMapMemory(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData) {
-     return GetVtbl(device).MapMemory(device, memory, offset, size, flags, ppData);
- }
- 
- __attribute__((visibility("default")))
--void vkUnmapMemory(VkDevice device, VkDeviceMemory memory) {
-+VKAPI_ATTR void vkUnmapMemory(VkDevice device, VkDeviceMemory memory) {
-     GetVtbl(device).UnmapMemory(device, memory);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkFlushMappedMemoryRanges(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges) {
-+VKAPI_ATTR VkResult vkFlushMappedMemoryRanges(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges) {
-     return GetVtbl(device).FlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkInvalidateMappedMemoryRanges(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges) {
-+VKAPI_ATTR VkResult vkInvalidateMappedMemoryRanges(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges) {
-     return GetVtbl(device).InvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges);
- }
- 
- __attribute__((visibility("default")))
--void vkGetDeviceMemoryCommitment(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes) {
-+VKAPI_ATTR void vkGetDeviceMemoryCommitment(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes) {
-     GetVtbl(device).GetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes);
- }
- 
- __attribute__((visibility("default")))
--void vkGetBufferMemoryRequirements(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements) {
-+VKAPI_ATTR void vkGetBufferMemoryRequirements(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements) {
-     GetVtbl(device).GetBufferMemoryRequirements(device, buffer, pMemoryRequirements);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkBindBufferMemory(VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset) {
-+VKAPI_ATTR VkResult vkBindBufferMemory(VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset) {
-     return GetVtbl(device).BindBufferMemory(device, buffer, memory, memoryOffset);
- }
- 
- __attribute__((visibility("default")))
--void vkGetImageMemoryRequirements(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements) {
-+VKAPI_ATTR void vkGetImageMemoryRequirements(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements) {
-     GetVtbl(device).GetImageMemoryRequirements(device, image, pMemoryRequirements);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkBindImageMemory(VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset) {
-+VKAPI_ATTR VkResult vkBindImageMemory(VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset) {
-     return GetVtbl(device).BindImageMemory(device, image, memory, memoryOffset);
- }
- 
- __attribute__((visibility("default")))
--void vkGetImageSparseMemoryRequirements(VkDevice device, VkImage image, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements) {
-+VKAPI_ATTR void vkGetImageSparseMemoryRequirements(VkDevice device, VkImage image, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements) {
-     GetVtbl(device).GetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
- }
- 
- __attribute__((visibility("default")))
--void vkGetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties) {
-+VKAPI_ATTR void vkGetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties) {
-     GetVtbl(physicalDevice).GetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkQueueBindSparse(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence) {
-+VKAPI_ATTR VkResult vkQueueBindSparse(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence) {
-     return GetVtbl(queue).QueueBindSparse(queue, bindInfoCount, pBindInfo, fence);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateFence(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence) {
-+VKAPI_ATTR VkResult vkCreateFence(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence) {
-     return GetVtbl(device).CreateFence(device, pCreateInfo, pAllocator, pFence);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyFence(VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator) {
-+VKAPI_ATTR void vkDestroyFence(VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator) {
-     GetVtbl(device).DestroyFence(device, fence, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkResetFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences) {
-+VKAPI_ATTR VkResult vkResetFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences) {
-     return GetVtbl(device).ResetFences(device, fenceCount, pFences);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkGetFenceStatus(VkDevice device, VkFence fence) {
-+VKAPI_ATTR VkResult vkGetFenceStatus(VkDevice device, VkFence fence) {
-     return GetVtbl(device).GetFenceStatus(device, fence);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkWaitForFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout) {
-+VKAPI_ATTR VkResult vkWaitForFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout) {
-     return GetVtbl(device).WaitForFences(device, fenceCount, pFences, waitAll, timeout);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateSemaphore(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore) {
-+VKAPI_ATTR VkResult vkCreateSemaphore(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore) {
-     return GetVtbl(device).CreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroySemaphore(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator) {
-+VKAPI_ATTR void vkDestroySemaphore(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator) {
-     GetVtbl(device).DestroySemaphore(device, semaphore, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateEvent(VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent) {
-+VKAPI_ATTR VkResult vkCreateEvent(VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent) {
-     return GetVtbl(device).CreateEvent(device, pCreateInfo, pAllocator, pEvent);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyEvent(VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator) {
-+VKAPI_ATTR void vkDestroyEvent(VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator) {
-     GetVtbl(device).DestroyEvent(device, event, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkGetEventStatus(VkDevice device, VkEvent event) {
-+VKAPI_ATTR VkResult vkGetEventStatus(VkDevice device, VkEvent event) {
-     return GetVtbl(device).GetEventStatus(device, event);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkSetEvent(VkDevice device, VkEvent event) {
-+VKAPI_ATTR VkResult vkSetEvent(VkDevice device, VkEvent event) {
-     return GetVtbl(device).SetEvent(device, event);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkResetEvent(VkDevice device, VkEvent event) {
-+VKAPI_ATTR VkResult vkResetEvent(VkDevice device, VkEvent event) {
-     return GetVtbl(device).ResetEvent(device, event);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateQueryPool(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool) {
-+VKAPI_ATTR VkResult vkCreateQueryPool(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool) {
-     return GetVtbl(device).CreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyQueryPool(VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator) {
-+VKAPI_ATTR void vkDestroyQueryPool(VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator) {
-     GetVtbl(device).DestroyQueryPool(device, queryPool, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkGetQueryPoolResults(VkDevice device, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, size_t dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags) {
-+VKAPI_ATTR VkResult vkGetQueryPoolResults(VkDevice device, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, size_t dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags) {
-     return GetVtbl(device).GetQueryPoolResults(device, queryPool, startQuery, queryCount, dataSize, pData, stride, flags);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateBuffer(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer) {
-+VKAPI_ATTR VkResult vkCreateBuffer(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer) {
-     return GetVtbl(device).CreateBuffer(device, pCreateInfo, pAllocator, pBuffer);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyBuffer(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator) {
-+VKAPI_ATTR void vkDestroyBuffer(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator) {
-     GetVtbl(device).DestroyBuffer(device, buffer, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateBufferView(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView) {
-+VKAPI_ATTR VkResult vkCreateBufferView(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView) {
-     return GetVtbl(device).CreateBufferView(device, pCreateInfo, pAllocator, pView);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyBufferView(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator) {
-+VKAPI_ATTR void vkDestroyBufferView(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator) {
-     GetVtbl(device).DestroyBufferView(device, bufferView, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateImage(VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage) {
-+VKAPI_ATTR VkResult vkCreateImage(VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage) {
-     return GetVtbl(device).CreateImage(device, pCreateInfo, pAllocator, pImage);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyImage(VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator) {
-+VKAPI_ATTR void vkDestroyImage(VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator) {
-     GetVtbl(device).DestroyImage(device, image, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--void vkGetImageSubresourceLayout(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout) {
-+VKAPI_ATTR void vkGetImageSubresourceLayout(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout) {
-     GetVtbl(device).GetImageSubresourceLayout(device, image, pSubresource, pLayout);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateImageView(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView) {
-+VKAPI_ATTR VkResult vkCreateImageView(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView) {
-     return GetVtbl(device).CreateImageView(device, pCreateInfo, pAllocator, pView);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyImageView(VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator) {
-+VKAPI_ATTR void vkDestroyImageView(VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator) {
-     GetVtbl(device).DestroyImageView(device, imageView, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateShaderModule(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule) {
-+VKAPI_ATTR VkResult vkCreateShaderModule(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule) {
-     return GetVtbl(device).CreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyShaderModule(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator) {
-+VKAPI_ATTR void vkDestroyShaderModule(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator) {
-     GetVtbl(device).DestroyShaderModule(device, shaderModule, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreatePipelineCache(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache) {
-+VKAPI_ATTR VkResult vkCreatePipelineCache(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache) {
-     return GetVtbl(device).CreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyPipelineCache(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator) {
-+VKAPI_ATTR void vkDestroyPipelineCache(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator) {
-     GetVtbl(device).DestroyPipelineCache(device, pipelineCache, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkGetPipelineCacheData(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData) {
-+VKAPI_ATTR VkResult vkGetPipelineCacheData(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData) {
-     return GetVtbl(device).GetPipelineCacheData(device, pipelineCache, pDataSize, pData);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkMergePipelineCaches(VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches) {
-+VKAPI_ATTR VkResult vkMergePipelineCaches(VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches) {
-     return GetVtbl(device).MergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateGraphicsPipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) {
-+VKAPI_ATTR VkResult vkCreateGraphicsPipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) {
-     return GetVtbl(device).CreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateComputePipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) {
-+VKAPI_ATTR VkResult vkCreateComputePipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) {
-     return GetVtbl(device).CreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyPipeline(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator) {
-+VKAPI_ATTR void vkDestroyPipeline(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator) {
-     GetVtbl(device).DestroyPipeline(device, pipeline, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreatePipelineLayout(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout) {
-+VKAPI_ATTR VkResult vkCreatePipelineLayout(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout) {
-     return GetVtbl(device).CreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyPipelineLayout(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator) {
-+VKAPI_ATTR void vkDestroyPipelineLayout(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator) {
-     GetVtbl(device).DestroyPipelineLayout(device, pipelineLayout, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateSampler(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler) {
-+VKAPI_ATTR VkResult vkCreateSampler(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler) {
-     return GetVtbl(device).CreateSampler(device, pCreateInfo, pAllocator, pSampler);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroySampler(VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator) {
-+VKAPI_ATTR void vkDestroySampler(VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator) {
-     GetVtbl(device).DestroySampler(device, sampler, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateDescriptorSetLayout(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout) {
-+VKAPI_ATTR VkResult vkCreateDescriptorSetLayout(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout) {
-     return GetVtbl(device).CreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyDescriptorSetLayout(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator) {
-+VKAPI_ATTR void vkDestroyDescriptorSetLayout(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator) {
-     GetVtbl(device).DestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateDescriptorPool(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool) {
-+VKAPI_ATTR VkResult vkCreateDescriptorPool(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool) {
-     return GetVtbl(device).CreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator) {
-+VKAPI_ATTR void vkDestroyDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator) {
-     GetVtbl(device).DestroyDescriptorPool(device, descriptorPool, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkResetDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags) {
-+VKAPI_ATTR VkResult vkResetDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags) {
-     return GetVtbl(device).ResetDescriptorPool(device, descriptorPool, flags);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkAllocateDescriptorSets(VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets) {
-+VKAPI_ATTR VkResult vkAllocateDescriptorSets(VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets) {
-     return GetVtbl(device).AllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkFreeDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets) {
-+VKAPI_ATTR VkResult vkFreeDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets) {
-     return GetVtbl(device).FreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets);
- }
- 
- __attribute__((visibility("default")))
--void vkUpdateDescriptorSets(VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies) {
-+VKAPI_ATTR void vkUpdateDescriptorSets(VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies) {
-     GetVtbl(device).UpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateFramebuffer(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer) {
-+VKAPI_ATTR VkResult vkCreateFramebuffer(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer) {
-     return GetVtbl(device).CreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator) {
-+VKAPI_ATTR void vkDestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator) {
-     GetVtbl(device).DestroyFramebuffer(device, framebuffer, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateRenderPass(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass) {
-+VKAPI_ATTR VkResult vkCreateRenderPass(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass) {
-     return GetVtbl(device).CreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyRenderPass(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator) {
-+VKAPI_ATTR void vkDestroyRenderPass(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator) {
-     GetVtbl(device).DestroyRenderPass(device, renderPass, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--void vkGetRenderAreaGranularity(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity) {
-+VKAPI_ATTR void vkGetRenderAreaGranularity(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity) {
-     GetVtbl(device).GetRenderAreaGranularity(device, renderPass, pGranularity);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateCommandPool(VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool) {
-+VKAPI_ATTR VkResult vkCreateCommandPool(VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool) {
-     return GetVtbl(device).CreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroyCommandPool(VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator) {
-+VKAPI_ATTR void vkDestroyCommandPool(VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator) {
-     GetVtbl(device).DestroyCommandPool(device, commandPool, pAllocator);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkResetCommandPool(VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags) {
-+VKAPI_ATTR VkResult vkResetCommandPool(VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags) {
-     return GetVtbl(device).ResetCommandPool(device, commandPool, flags);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkAllocateCommandBuffers(VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers) {
-+VKAPI_ATTR VkResult vkAllocateCommandBuffers(VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers) {
-     return GetVtbl(device).AllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers);
- }
- 
- __attribute__((visibility("default")))
--void vkFreeCommandBuffers(VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers) {
-+VKAPI_ATTR void vkFreeCommandBuffers(VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers) {
-     GetVtbl(device).FreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkBeginCommandBuffer(VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo) {
-+VKAPI_ATTR VkResult vkBeginCommandBuffer(VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo) {
-     return GetVtbl(commandBuffer).BeginCommandBuffer(commandBuffer, pBeginInfo);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkEndCommandBuffer(VkCommandBuffer commandBuffer) {
-+VKAPI_ATTR VkResult vkEndCommandBuffer(VkCommandBuffer commandBuffer) {
-     return GetVtbl(commandBuffer).EndCommandBuffer(commandBuffer);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkResetCommandBuffer(VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags) {
-+VKAPI_ATTR VkResult vkResetCommandBuffer(VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags) {
-     return GetVtbl(commandBuffer).ResetCommandBuffer(commandBuffer, flags);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdBindPipeline(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline) {
-+VKAPI_ATTR void vkCmdBindPipeline(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline) {
-     GetVtbl(commandBuffer).CmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdSetViewport(VkCommandBuffer commandBuffer, uint32_t viewportCount, const VkViewport* pViewports) {
-+VKAPI_ATTR void vkCmdSetViewport(VkCommandBuffer commandBuffer, uint32_t viewportCount, const VkViewport* pViewports) {
-     GetVtbl(commandBuffer).CmdSetViewport(commandBuffer, viewportCount, pViewports);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdSetScissor(VkCommandBuffer commandBuffer, uint32_t scissorCount, const VkRect2D* pScissors) {
-+VKAPI_ATTR void vkCmdSetScissor(VkCommandBuffer commandBuffer, uint32_t scissorCount, const VkRect2D* pScissors) {
-     GetVtbl(commandBuffer).CmdSetScissor(commandBuffer, scissorCount, pScissors);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdSetLineWidth(VkCommandBuffer commandBuffer, float lineWidth) {
-+VKAPI_ATTR void vkCmdSetLineWidth(VkCommandBuffer commandBuffer, float lineWidth) {
-     GetVtbl(commandBuffer).CmdSetLineWidth(commandBuffer, lineWidth);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdSetDepthBias(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor) {
-+VKAPI_ATTR void vkCmdSetDepthBias(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor) {
-     GetVtbl(commandBuffer).CmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdSetBlendConstants(VkCommandBuffer commandBuffer, const float blendConstants[4]) {
-+VKAPI_ATTR void vkCmdSetBlendConstants(VkCommandBuffer commandBuffer, const float blendConstants[4]) {
-     GetVtbl(commandBuffer).CmdSetBlendConstants(commandBuffer, blendConstants);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdSetDepthBounds(VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds) {
-+VKAPI_ATTR void vkCmdSetDepthBounds(VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds) {
-     GetVtbl(commandBuffer).CmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdSetStencilCompareMask(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t compareMask) {
-+VKAPI_ATTR void vkCmdSetStencilCompareMask(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t compareMask) {
-     GetVtbl(commandBuffer).CmdSetStencilCompareMask(commandBuffer, faceMask, compareMask);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdSetStencilWriteMask(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t writeMask) {
-+VKAPI_ATTR void vkCmdSetStencilWriteMask(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t writeMask) {
-     GetVtbl(commandBuffer).CmdSetStencilWriteMask(commandBuffer, faceMask, writeMask);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdSetStencilReference(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference) {
-+VKAPI_ATTR void vkCmdSetStencilReference(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference) {
-     GetVtbl(commandBuffer).CmdSetStencilReference(commandBuffer, faceMask, reference);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdBindDescriptorSets(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets) {
-+VKAPI_ATTR void vkCmdBindDescriptorSets(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets) {
-     GetVtbl(commandBuffer).CmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdBindIndexBuffer(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType) {
-+VKAPI_ATTR void vkCmdBindIndexBuffer(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType) {
-     GetVtbl(commandBuffer).CmdBindIndexBuffer(commandBuffer, buffer, offset, indexType);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdBindVertexBuffers(VkCommandBuffer commandBuffer, uint32_t startBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets) {
-+VKAPI_ATTR void vkCmdBindVertexBuffers(VkCommandBuffer commandBuffer, uint32_t startBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets) {
-     GetVtbl(commandBuffer).CmdBindVertexBuffers(commandBuffer, startBinding, bindingCount, pBuffers, pOffsets);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdDraw(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance) {
-+VKAPI_ATTR void vkCmdDraw(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance) {
-     GetVtbl(commandBuffer).CmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdDrawIndexed(VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance) {
-+VKAPI_ATTR void vkCmdDrawIndexed(VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance) {
-     GetVtbl(commandBuffer).CmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdDrawIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride) {
-+VKAPI_ATTR void vkCmdDrawIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride) {
-     GetVtbl(commandBuffer).CmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdDrawIndexedIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride) {
-+VKAPI_ATTR void vkCmdDrawIndexedIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride) {
-     GetVtbl(commandBuffer).CmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdDispatch(VkCommandBuffer commandBuffer, uint32_t x, uint32_t y, uint32_t z) {
-+VKAPI_ATTR void vkCmdDispatch(VkCommandBuffer commandBuffer, uint32_t x, uint32_t y, uint32_t z) {
-     GetVtbl(commandBuffer).CmdDispatch(commandBuffer, x, y, z);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdDispatchIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset) {
-+VKAPI_ATTR void vkCmdDispatchIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset) {
-     GetVtbl(commandBuffer).CmdDispatchIndirect(commandBuffer, buffer, offset);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdCopyBuffer(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy* pRegions) {
-+VKAPI_ATTR void vkCmdCopyBuffer(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy* pRegions) {
-     GetVtbl(commandBuffer).CmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdCopyImage(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageCopy* pRegions) {
-+VKAPI_ATTR void vkCmdCopyImage(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageCopy* pRegions) {
-     GetVtbl(commandBuffer).CmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdBlitImage(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter) {
-+VKAPI_ATTR void vkCmdBlitImage(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter) {
-     GetVtbl(commandBuffer).CmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdCopyBufferToImage(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions) {
-+VKAPI_ATTR void vkCmdCopyBufferToImage(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions) {
-     GetVtbl(commandBuffer).CmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdCopyImageToBuffer(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions) {
-+VKAPI_ATTR void vkCmdCopyImageToBuffer(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions) {
-     GetVtbl(commandBuffer).CmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdUpdateBuffer(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const uint32_t* pData) {
-+VKAPI_ATTR void vkCmdUpdateBuffer(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const uint32_t* pData) {
-     GetVtbl(commandBuffer).CmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdFillBuffer(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data) {
-+VKAPI_ATTR void vkCmdFillBuffer(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data) {
-     GetVtbl(commandBuffer).CmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdClearColorImage(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges) {
-+VKAPI_ATTR void vkCmdClearColorImage(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges) {
-     GetVtbl(commandBuffer).CmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdClearDepthStencilImage(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges) {
-+VKAPI_ATTR void vkCmdClearDepthStencilImage(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges) {
-     GetVtbl(commandBuffer).CmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdClearAttachments(VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects) {
-+VKAPI_ATTR void vkCmdClearAttachments(VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects) {
-     GetVtbl(commandBuffer).CmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdResolveImage(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageResolve* pRegions) {
-+VKAPI_ATTR void vkCmdResolveImage(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageResolve* pRegions) {
-     GetVtbl(commandBuffer).CmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdSetEvent(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask) {
-+VKAPI_ATTR void vkCmdSetEvent(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask) {
-     GetVtbl(commandBuffer).CmdSetEvent(commandBuffer, event, stageMask);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdResetEvent(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask) {
-+VKAPI_ATTR void vkCmdResetEvent(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask) {
-     GetVtbl(commandBuffer).CmdResetEvent(commandBuffer, event, stageMask);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdWaitEvents(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const void* const* ppMemoryBarriers) {
-+VKAPI_ATTR void vkCmdWaitEvents(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const void* const* ppMemoryBarriers) {
-     GetVtbl(commandBuffer).CmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, ppMemoryBarriers);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdPipelineBarrier(VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const void* const* ppMemoryBarriers) {
-+VKAPI_ATTR void vkCmdPipelineBarrier(VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const void* const* ppMemoryBarriers) {
-     GetVtbl(commandBuffer).CmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, ppMemoryBarriers);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdBeginQuery(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t entry, VkQueryControlFlags flags) {
-+VKAPI_ATTR void vkCmdBeginQuery(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t entry, VkQueryControlFlags flags) {
-     GetVtbl(commandBuffer).CmdBeginQuery(commandBuffer, queryPool, entry, flags);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdEndQuery(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t entry) {
-+VKAPI_ATTR void vkCmdEndQuery(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t entry) {
-     GetVtbl(commandBuffer).CmdEndQuery(commandBuffer, queryPool, entry);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdResetQueryPool(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount) {
-+VKAPI_ATTR void vkCmdResetQueryPool(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount) {
-     GetVtbl(commandBuffer).CmdResetQueryPool(commandBuffer, queryPool, startQuery, queryCount);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdWriteTimestamp(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t entry) {
-+VKAPI_ATTR void vkCmdWriteTimestamp(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t entry) {
-     GetVtbl(commandBuffer).CmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, entry);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdCopyQueryPoolResults(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags) {
-+VKAPI_ATTR void vkCmdCopyQueryPoolResults(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags) {
-     GetVtbl(commandBuffer).CmdCopyQueryPoolResults(commandBuffer, queryPool, startQuery, queryCount, dstBuffer, dstOffset, stride, flags);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdPushConstants(VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* values) {
-+VKAPI_ATTR void vkCmdPushConstants(VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* values) {
-     GetVtbl(commandBuffer).CmdPushConstants(commandBuffer, layout, stageFlags, offset, size, values);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdBeginRenderPass(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents) {
-+VKAPI_ATTR void vkCmdBeginRenderPass(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents) {
-     GetVtbl(commandBuffer).CmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdNextSubpass(VkCommandBuffer commandBuffer, VkSubpassContents contents) {
-+VKAPI_ATTR void vkCmdNextSubpass(VkCommandBuffer commandBuffer, VkSubpassContents contents) {
-     GetVtbl(commandBuffer).CmdNextSubpass(commandBuffer, contents);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdEndRenderPass(VkCommandBuffer commandBuffer) {
-+VKAPI_ATTR void vkCmdEndRenderPass(VkCommandBuffer commandBuffer) {
-     GetVtbl(commandBuffer).CmdEndRenderPass(commandBuffer);
- }
- 
- __attribute__((visibility("default")))
--void vkCmdExecuteCommands(VkCommandBuffer commandBuffer, uint32_t commandBuffersCount, const VkCommandBuffer* pCommandBuffers) {
-+VKAPI_ATTR void vkCmdExecuteCommands(VkCommandBuffer commandBuffer, uint32_t commandBuffersCount, const VkCommandBuffer* pCommandBuffers) {
-     GetVtbl(commandBuffer).CmdExecuteCommands(commandBuffer, commandBuffersCount, pCommandBuffers);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroySurfaceKHR(VkInstance instance, VkSurfaceKHR surface) {
-+VKAPI_ATTR void vkDestroySurfaceKHR(VkInstance instance, VkSurfaceKHR surface) {
-     GetVtbl(instance).DestroySurfaceKHR(instance, surface);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkGetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported) {
-+VKAPI_ATTR VkResult vkGetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported) {
-     return GetVtbl(physicalDevice).GetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) {
-+VKAPI_ATTR VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) {
-     return GetVtbl(physicalDevice).GetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkGetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats) {
-+VKAPI_ATTR VkResult vkGetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats) {
-     return GetVtbl(physicalDevice).GetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkGetPhysicalDeviceSurfacePresentModesKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes) {
-+VKAPI_ATTR VkResult vkGetPhysicalDeviceSurfacePresentModesKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes) {
-     return GetVtbl(physicalDevice).GetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateSwapchainKHR(VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, VkSwapchainKHR* pSwapchain) {
-+VKAPI_ATTR VkResult vkCreateSwapchainKHR(VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, VkSwapchainKHR* pSwapchain) {
-     return GetVtbl(device).CreateSwapchainKHR(device, pCreateInfo, pSwapchain);
- }
- 
- __attribute__((visibility("default")))
--void vkDestroySwapchainKHR(VkDevice device, VkSwapchainKHR swapchain) {
-+VKAPI_ATTR void vkDestroySwapchainKHR(VkDevice device, VkSwapchainKHR swapchain) {
-     GetVtbl(device).DestroySwapchainKHR(device, swapchain);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkGetSwapchainImagesKHR(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pSwapchainImageCount, VkImage* pSwapchainImages) {
-+VKAPI_ATTR VkResult vkGetSwapchainImagesKHR(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pSwapchainImageCount, VkImage* pSwapchainImages) {
-     return GetVtbl(device).GetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkAcquireNextImageKHR(VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t* pImageIndex) {
-+VKAPI_ATTR VkResult vkAcquireNextImageKHR(VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t* pImageIndex) {
-     return GetVtbl(device).AcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkQueuePresentKHR(VkQueue queue, VkPresentInfoKHR* pPresentInfo) {
-+VKAPI_ATTR VkResult vkQueuePresentKHR(VkQueue queue, VkPresentInfoKHR* pPresentInfo) {
-     return GetVtbl(queue).QueuePresentKHR(queue, pPresentInfo);
- }
- 
- __attribute__((visibility("default")))
--VkResult vkCreateAndroidSurfaceKHR(VkInstance instance, struct ANativeWindow* window, VkSurfaceKHR* pSurface) {
-+VKAPI_ATTR VkResult vkCreateAndroidSurfaceKHR(VkInstance instance, struct ANativeWindow* window, VkSurfaceKHR* pSurface) {
-     return GetVtbl(instance).CreateAndroidSurfaceKHR(instance, window, pSurface);
- }
-diff --git a/vulkan/libvulkan/entry.cpp.tmpl b/vulkan/libvulkan/entry.cpp.tmpl
-index 712558b..5047741 100644
---- a/vulkan/libvulkan/entry.cpp.tmpl
-+++ b/vulkan/libvulkan/entry.cpp.tmpl
-@@ -124,7 +124,7 @@ namespace {
- {{define "EmitSpecialEntry"}}
-   {{AssertType $ "Function"}}
- 
--  {{Node "Type" $.Return}} {{Macro "FunctionName" $}}({{Macro "Parameters" $}}) {
-+  VKAPI_ATTR {{Node "Type" $.Return}} {{Macro "FunctionName" $}}({{Macro "Parameters" $}}) {
-     {{if not (IsVoid $.Return.Type)}}return §{{end}}
-     vulkan::{{TrimPrefix "vk" $.Name}}({{Macro "Arguments" $}});
-   }
-@@ -142,7 +142,7 @@ namespace {
- {{define "EmitEntry"}}
-   {{AssertType $ "Function"}}
- 
--  {{Node "Type" $.Return}} {{Macro "FunctionName" $}}({{Macro "Parameters" $}}) {
-+  VKAPI_ATTR {{Node "Type" $.Return}} {{Macro "FunctionName" $}}({{Macro "Parameters" $}}) {
-     {{if not (IsVoid $.Return.Type)}}return §{{end}}
-     {{Macro "Dispatch" $}}{{TrimPrefix "vk" $.Name}}({{Macro "Arguments" $}});
-   }
-diff --git a/vulkan/libvulkan/loader.cpp b/vulkan/libvulkan/loader.cpp
-index a5bbc3a..2d45558 100644
---- a/vulkan/libvulkan/loader.cpp
-+++ b/vulkan/libvulkan/loader.cpp
-@@ -215,10 +215,10 @@ inline const DeviceVtbl* GetVtbl(VkQueue queue) {
-     return *reinterpret_cast<DeviceVtbl**>(queue);
- }
- 
--void* DefaultAllocate(void*,
--                      size_t size,
--                      size_t alignment,
--                      VkSystemAllocationScope) {
-+VKAPI_ATTR void* DefaultAllocate(void*,
-+                                 size_t size,
-+                                 size_t alignment,
-+                                 VkSystemAllocationScope) {
-     void* ptr = nullptr;
-     // Vulkan requires 'alignment' to be a power of two, but posix_memalign
-     // additionally requires that it be at least sizeof(void*).
-@@ -227,11 +227,11 @@ void* DefaultAllocate(void*,
-                : nullptr;
- }
- 
--void* DefaultReallocate(void*,
--                        void* ptr,
--                        size_t size,
--                        size_t alignment,
--                        VkSystemAllocationScope) {
-+VKAPI_ATTR void* DefaultReallocate(void*,
-+                                   void* ptr,
-+                                   size_t size,
-+                                   size_t alignment,
-+                                   VkSystemAllocationScope) {
-     if (size == 0) {
-         free(ptr);
-         return nullptr;
-@@ -257,7 +257,7 @@ void* DefaultReallocate(void*,
-     return new_ptr;
- }
- 
--void DefaultFree(void*, void* pMem) {
-+VKAPI_ATTR void DefaultFree(void*, void* pMem) {
-     free(pMem);
- }
- 
-@@ -522,6 +522,7 @@ void FreeAllocatedCreateInfo(T& local_create_info,
-         const_cast<char**>(local_create_info.ppEnabledExtensionNames));
- }
- 
-+VKAPI_ATTR
- VkBool32 LogDebugMessageCallback(VkFlags message_flags,
-                                  VkDbgObjectType /*obj_type*/,
-                                  uint64_t /*src_object*/,
-@@ -542,7 +543,8 @@ VkResult Noop(...) {
-     return VK_SUCCESS;
- }
- 
--PFN_vkVoidFunction GetLayerDeviceProcAddr(VkDevice device, const char* name) {
-+VKAPI_ATTR PFN_vkVoidFunction
-+GetLayerDeviceProcAddr(VkDevice device, const char* name) {
-     if (strcmp(name, "vkGetDeviceProcAddr") == 0) {
-         return reinterpret_cast<PFN_vkVoidFunction>(GetLayerDeviceProcAddr);
-     }
-@@ -575,6 +577,7 @@ PFN_vkVoidFunction GetLayerDeviceProcAddr(VkDevice device, const char* name) {
- // "Bottom" functions. These are called at the end of the instance dispatch
- // chain.
- 
-+VKAPI_ATTR
- void DestroyInstanceBottom(VkInstance instance,
-                            const VkAllocationCallbacks* allocator) {
-     // These checks allow us to call DestroyInstanceBottom from any error path
-@@ -600,6 +603,7 @@ void DestroyInstanceBottom(VkInstance instance,
-     alloc->pfnFree(alloc->pUserData, instance);
- }
- 
-+VKAPI_ATTR
- VkResult CreateInstanceBottom(const VkInstanceCreateInfo* create_info,
-                               const VkAllocationCallbacks* allocator,
-                               VkInstance* instance_ptr) {
-@@ -677,6 +681,7 @@ VkResult CreateInstanceBottom(const VkInstanceCreateInfo* create_info,
-     return VK_SUCCESS;
- }
- 
-+VKAPI_ATTR
- VkResult EnumeratePhysicalDevicesBottom(VkInstance instance,
-                                         uint32_t* pdev_count,
-                                         VkPhysicalDevice* pdevs) {
-@@ -690,11 +695,13 @@ VkResult EnumeratePhysicalDevicesBottom(VkInstance instance,
-     return VK_SUCCESS;
- }
- 
-+VKAPI_ATTR
- void GetPhysicalDeviceFeaturesBottom(VkPhysicalDevice pdev,
-                                      VkPhysicalDeviceFeatures* features) {
-     GetVtbl(pdev)->instance->drv.vtbl.GetPhysicalDeviceFeatures(pdev, features);
- }
- 
-+VKAPI_ATTR
- void GetPhysicalDeviceFormatPropertiesBottom(VkPhysicalDevice pdev,
-                                              VkFormat format,
-                                              VkFormatProperties* properties) {
-@@ -702,6 +709,7 @@ void GetPhysicalDeviceFormatPropertiesBottom(VkPhysicalDevice pdev,
-         pdev, format, properties);
- }
- 
-+VKAPI_ATTR
- VkResult GetPhysicalDeviceImageFormatPropertiesBottom(
-     VkPhysicalDevice pdev,
-     VkFormat format,
-@@ -715,12 +723,14 @@ VkResult GetPhysicalDeviceImageFormatPropertiesBottom(
-             pdev, format, type, tiling, usage, flags, properties);
- }
- 
-+VKAPI_ATTR
- void GetPhysicalDevicePropertiesBottom(VkPhysicalDevice pdev,
-                                        VkPhysicalDeviceProperties* properties) {
-     GetVtbl(pdev)
-         ->instance->drv.vtbl.GetPhysicalDeviceProperties(pdev, properties);
- }
- 
-+VKAPI_ATTR
- void GetPhysicalDeviceQueueFamilyPropertiesBottom(
-     VkPhysicalDevice pdev,
-     uint32_t* pCount,
-@@ -729,6 +739,7 @@ void GetPhysicalDeviceQueueFamilyPropertiesBottom(
-         pdev, pCount, properties);
- }
- 
-+VKAPI_ATTR
- void GetPhysicalDeviceMemoryPropertiesBottom(
-     VkPhysicalDevice pdev,
-     VkPhysicalDeviceMemoryProperties* properties) {
-@@ -736,6 +747,7 @@ void GetPhysicalDeviceMemoryPropertiesBottom(
-         pdev, properties);
- }
- 
-+VKAPI_ATTR
- VkResult CreateDeviceBottom(VkPhysicalDevice pdev,
-                             const VkDeviceCreateInfo* create_info,
-                             const VkAllocationCallbacks* allocator,
-@@ -844,6 +856,7 @@ VkResult CreateDeviceBottom(VkPhysicalDevice pdev,
-     return VK_SUCCESS;
- }
- 
-+VKAPI_ATTR
- VkResult EnumerateDeviceExtensionPropertiesBottom(
-     VkPhysicalDevice pdev,
-     const char* layer_name,
-@@ -854,6 +867,7 @@ VkResult EnumerateDeviceExtensionPropertiesBottom(
-         pdev, layer_name, properties_count, properties);
- }
- 
-+VKAPI_ATTR
- VkResult EnumerateDeviceLayerPropertiesBottom(VkPhysicalDevice pdev,
-                                               uint32_t* properties_count,
-                                               VkLayerProperties* properties) {
-@@ -861,6 +875,7 @@ VkResult EnumerateDeviceLayerPropertiesBottom(VkPhysicalDevice pdev,
-         pdev, properties_count, properties);
- }
- 
-+VKAPI_ATTR
- void GetPhysicalDeviceSparseImageFormatPropertiesBottom(
-     VkPhysicalDevice pdev,
-     VkFormat format,
-@@ -876,7 +891,8 @@ void GetPhysicalDeviceSparseImageFormatPropertiesBottom(
-             properties);
- }
- 
--PFN_vkVoidFunction GetInstanceProcAddrBottom(VkInstance, const char*);
-+VKAPI_ATTR PFN_vkVoidFunction
-+GetInstanceProcAddrBottom(VkInstance, const char*);
- 
- const InstanceVtbl kBottomInstanceFunctions = {
-     // clang-format off
-@@ -902,6 +918,7 @@ const InstanceVtbl kBottomInstanceFunctions = {
-     // clang-format on
- };
- 
-+VKAPI_ATTR
- PFN_vkVoidFunction GetInstanceProcAddrBottom(VkInstance, const char* name) {
-     // TODO: Possibly move this into the instance table
-     // TODO: Possibly register the callbacks in the loader
-diff --git a/vulkan/libvulkan/loader.h b/vulkan/libvulkan/loader.h
-index 5765d65..6aa8673 100644
---- a/vulkan/libvulkan/loader.h
-+++ b/vulkan/libvulkan/loader.h
-@@ -261,40 +261,45 @@ bool LoadDeviceVtbl(VkDevice device,
- // -----------------------------------------------------------------------------
- // swapchain.cpp
- 
--VkResult CreateAndroidSurfaceKHR(VkInstance instance,
--                                 ANativeWindow* window,
--                                 VkSurfaceKHR* surface);
--void DestroySurfaceKHR(VkInstance instance, VkSurfaceKHR surface);
--VkResult GetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice pdev,
--                                            uint32_t queue_family,
--                                            VkSurfaceKHR surface,
--                                            VkBool32* pSupported);
--VkResult GetPhysicalDeviceSurfaceCapabilitiesKHR(
--    VkPhysicalDevice pdev,
--    VkSurfaceKHR surface,
--    VkSurfaceCapabilitiesKHR* capabilities);
--VkResult GetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice pdev,
--                                            VkSurfaceKHR surface,
--                                            uint32_t* count,
--                                            VkSurfaceFormatKHR* formats);
--VkResult GetPhysicalDeviceSurfacePresentModesKHR(VkPhysicalDevice pdev,
--                                                 VkSurfaceKHR surface,
--                                                 uint32_t* count,
--                                                 VkPresentModeKHR* modes);
--VkResult CreateSwapchainKHR(VkDevice device,
--                            const VkSwapchainCreateInfoKHR* create_info,
--                            VkSwapchainKHR* swapchain_handle);
--VkResult DestroySwapchainKHR(VkDevice device, VkSwapchainKHR swapchain_handle);
--VkResult GetSwapchainImagesKHR(VkDevice device,
--                               VkSwapchainKHR swapchain_handle,
--                               uint32_t* count,
--                               VkImage* images);
--VkResult AcquireNextImageKHR(VkDevice device,
--                             VkSwapchainKHR swapchain_handle,
--                             uint64_t timeout,
--                             VkSemaphore semaphore,
--                             uint32_t* image_index);
--VkResult QueuePresentKHR(VkQueue queue, VkPresentInfoKHR* present_info);
-+VKAPI_ATTR VkResult CreateAndroidSurfaceKHR(VkInstance instance,
-+                                            ANativeWindow* window,
-+                                            VkSurfaceKHR* surface);
-+VKAPI_ATTR void DestroySurfaceKHR(VkInstance instance, VkSurfaceKHR surface);
-+VKAPI_ATTR VkResult GetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice pdev,
-+                                                       uint32_t queue_family,
-+                                                       VkSurfaceKHR surface,
-+                                                       VkBool32* pSupported);
-+VKAPI_ATTR VkResult
-+GetPhysicalDeviceSurfaceCapabilitiesKHR(VkPhysicalDevice pdev,
-+                                        VkSurfaceKHR surface,
-+                                        VkSurfaceCapabilitiesKHR* capabilities);
-+VKAPI_ATTR VkResult
-+GetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice pdev,
-+                                   VkSurfaceKHR surface,
-+                                   uint32_t* count,
-+                                   VkSurfaceFormatKHR* formats);
-+VKAPI_ATTR VkResult
-+GetPhysicalDeviceSurfacePresentModesKHR(VkPhysicalDevice pdev,
-+                                        VkSurfaceKHR surface,
-+                                        uint32_t* count,
-+                                        VkPresentModeKHR* modes);
-+VKAPI_ATTR VkResult
-+CreateSwapchainKHR(VkDevice device,
-+                   const VkSwapchainCreateInfoKHR* create_info,
-+                   VkSwapchainKHR* swapchain_handle);
-+VKAPI_ATTR VkResult
-+DestroySwapchainKHR(VkDevice device, VkSwapchainKHR swapchain_handle);
-+VKAPI_ATTR VkResult GetSwapchainImagesKHR(VkDevice device,
-+                                          VkSwapchainKHR swapchain_handle,
-+                                          uint32_t* count,
-+                                          VkImage* images);
-+VKAPI_ATTR VkResult AcquireNextImageKHR(VkDevice device,
-+                                        VkSwapchainKHR swapchain_handle,
-+                                        uint64_t timeout,
-+                                        VkSemaphore semaphore,
-+                                        uint32_t* image_index);
-+VKAPI_ATTR VkResult
-+QueuePresentKHR(VkQueue queue, VkPresentInfoKHR* present_info);
- 
- }  // namespace vulkan
- 
-diff --git a/vulkan/libvulkan/swapchain.cpp b/vulkan/libvulkan/swapchain.cpp
-index 98faaef..fa5ea59 100644
---- a/vulkan/libvulkan/swapchain.cpp
-+++ b/vulkan/libvulkan/swapchain.cpp
-@@ -141,6 +141,7 @@ Swapchain* SwapchainFromHandle(VkSwapchainKHR handle) {
- 
- namespace vulkan {
- 
-+VKAPI_ATTR
- VkResult CreateAndroidSurfaceKHR(VkInstance instance,
-                                  ANativeWindow* window,
-                                  VkSurfaceKHR* out_surface) {
-@@ -169,6 +170,7 @@ VkResult CreateAndroidSurfaceKHR(VkInstance instance,
-     return VK_SUCCESS;
- }
- 
-+VKAPI_ATTR
- void DestroySurfaceKHR(VkInstance instance, VkSurfaceKHR surface_handle) {
-     Surface* surface = SurfaceFromHandle(surface_handle);
-     if (!surface)
-@@ -178,6 +180,7 @@ void DestroySurfaceKHR(VkInstance instance, VkSurfaceKHR surface_handle) {
-     FreeMem(instance, surface);
- }
- 
-+VKAPI_ATTR
- VkResult GetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice /*pdev*/,
-                                             uint32_t /*queue_family*/,
-                                             VkSurfaceKHR /*surface*/,
-@@ -186,6 +189,7 @@ VkResult GetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice /*pdev*/,
-     return VK_SUCCESS;
- }
- 
-+VKAPI_ATTR
- VkResult GetPhysicalDeviceSurfaceCapabilitiesKHR(
-     VkPhysicalDevice /*pdev*/,
-     VkSurfaceKHR surface,
-@@ -242,6 +246,7 @@ VkResult GetPhysicalDeviceSurfaceCapabilitiesKHR(
-     return VK_SUCCESS;
- }
- 
-+VKAPI_ATTR
- VkResult GetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice /*pdev*/,
-                                             VkSurfaceKHR /*surface*/,
-                                             uint32_t* count,
-@@ -268,6 +273,7 @@ VkResult GetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice /*pdev*/,
-     return result;
- }
- 
-+VKAPI_ATTR
- VkResult GetPhysicalDeviceSurfacePresentModesKHR(VkPhysicalDevice /*pdev*/,
-                                                  VkSurfaceKHR /*surface*/,
-                                                  uint32_t* count,
-@@ -287,6 +293,7 @@ VkResult GetPhysicalDeviceSurfacePresentModesKHR(VkPhysicalDevice /*pdev*/,
-     return result;
- }
- 
-+VKAPI_ATTR
- VkResult CreateSwapchainKHR(VkDevice device,
-                             const VkSwapchainCreateInfoKHR* create_info,
-                             VkSwapchainKHR* swapchain_handle) {
-@@ -475,6 +482,7 @@ VkResult CreateSwapchainKHR(VkDevice device,
-     return VK_SUCCESS;
- }
- 
-+VKAPI_ATTR
- VkResult DestroySwapchainKHR(VkDevice device, VkSwapchainKHR swapchain_handle) {
-     const DeviceVtbl& driver_vtbl = GetDriverVtbl(device);
-     Swapchain* swapchain = SwapchainFromHandle(swapchain_handle);
-@@ -499,6 +507,7 @@ VkResult DestroySwapchainKHR(VkDevice device, VkSwapchainKHR swapchain_handle) {
-     return VK_SUCCESS;
- }
- 
-+VKAPI_ATTR
- VkResult GetSwapchainImagesKHR(VkDevice,
-                                VkSwapchainKHR swapchain_handle,
-                                uint32_t* count,
-@@ -518,6 +527,7 @@ VkResult GetSwapchainImagesKHR(VkDevice,
-     return result;
- }
- 
-+VKAPI_ATTR
- VkResult AcquireNextImageKHR(VkDevice device,
-                              VkSwapchainKHR swapchain_handle,
-                              uint64_t timeout,
-@@ -598,6 +608,7 @@ VkResult AcquireNextImageKHR(VkDevice device,
-     return VK_SUCCESS;
- }
- 
-+VKAPI_ATTR
- VkResult QueuePresentKHR(VkQueue queue, VkPresentInfoKHR* present_info) {
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wold-style-cast"
-diff --git a/vulkan/nulldrv/null_driver.cpp b/vulkan/nulldrv/null_driver.cpp
-index 316d27f..4fd0103 100644
---- a/vulkan/nulldrv/null_driver.cpp
-+++ b/vulkan/nulldrv/null_driver.cpp
-@@ -129,6 +129,7 @@ __attribute__((visibility("default"))) hwvulkan_module_t HAL_MODULE_INFO_SYM = {
- 
- namespace {
- 
-+VKAPI_ATTR
- VkResult CreateInstance(const VkInstanceCreateInfo* /*create_info*/,
-                         const VkAllocationCallbacks* allocator,
-                         VkInstance* out_instance) {
-@@ -212,6 +213,7 @@ namespace null_driver {
- // -----------------------------------------------------------------------------
- // Global
- 
-+VKAPI_ATTR
- VkResult EnumerateInstanceExtensionProperties(const char*,
-                                               uint32_t* count,
-                                               VkExtensionProperties*) {
-@@ -219,6 +221,7 @@ VkResult EnumerateInstanceExtensionProperties(const char*,
-     return VK_SUCCESS;
- }
- 
-+VKAPI_ATTR
- PFN_vkVoidFunction GetInstanceProcAddr(VkInstance, const char* name) {
-     PFN_vkVoidFunction proc = LookupInstanceProcAddr(name);
-     if (!proc && strcmp(name, "vkGetDeviceProcAddr") == 0)
-@@ -226,6 +229,7 @@ PFN_vkVoidFunction GetInstanceProcAddr(VkInstance, const char* name) {
-     return proc;
- }
- 
-+VKAPI_ATTR
- PFN_vkVoidFunction GetDeviceProcAddr(VkDevice, const char* name) {
-     PFN_vkVoidFunction proc = LookupDeviceProcAddr(name);
-     if (proc)
-diff --git a/vulkan/nulldrv/null_driver.h b/vulkan/nulldrv/null_driver.h
-index 1a524ff..1018afa 100644
---- a/vulkan/nulldrv/null_driver.h
-+++ b/vulkan/nulldrv/null_driver.h
-@@ -27,146 +27,146 @@ PFN_vkVoidFunction LookupInstanceProcAddr(const char* name);
- PFN_vkVoidFunction LookupDeviceProcAddr(const char* name);
- 
- // clang-format off
--void DestroyInstance(VkInstance instance, const VkAllocationCallbacks* allocator);
--VkResult EnumeratePhysicalDevices(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);
--void GetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures);
--void GetPhysicalDeviceFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties);
--VkResult GetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties);
--void GetPhysicalDeviceProperties(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties);
--void GetPhysicalDeviceQueueFamilyProperties(VkPhysicalDevice physicalDevice, uint32_t* pCount, VkQueueFamilyProperties* pQueueFamilyProperties);
--void GetPhysicalDeviceMemoryProperties(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties);
--PFN_vkVoidFunction GetInstanceProcAddr(VkInstance instance, const char* pName);
--PFN_vkVoidFunction GetDeviceProcAddr(VkDevice device, const char* pName);
--VkResult CreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkDevice* pDevice);
--void DestroyDevice(VkDevice device, const VkAllocationCallbacks* allocator);
--VkResult EnumerateInstanceExtensionProperties(const char* pLayerName, uint32_t* pCount, VkExtensionProperties* pProperties);
--VkResult EnumerateDeviceExtensionProperties(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pCount, VkExtensionProperties* pProperties);
--VkResult EnumerateInstanceLayerProperties(uint32_t* pCount, VkLayerProperties* pProperties);
--VkResult EnumerateDeviceLayerProperties(VkPhysicalDevice physicalDevice, uint32_t* pCount, VkLayerProperties* pProperties);
--void GetDeviceQueue(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue);
--VkResult QueueSubmit(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmitInfo, VkFence fence);
--VkResult QueueWaitIdle(VkQueue queue);
--VkResult DeviceWaitIdle(VkDevice device);
--VkResult AllocateMemory(VkDevice device, const VkMemoryAllocateInfo* pAllocInfo, const VkAllocationCallbacks* allocator, VkDeviceMemory* pMem);
--void FreeMemory(VkDevice device, VkDeviceMemory mem, const VkAllocationCallbacks* allocator);
--VkResult MapMemory(VkDevice device, VkDeviceMemory mem, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData);
--void UnmapMemory(VkDevice device, VkDeviceMemory mem);
--VkResult FlushMappedMemoryRanges(VkDevice device, uint32_t memRangeCount, const VkMappedMemoryRange* pMemRanges);
--VkResult InvalidateMappedMemoryRanges(VkDevice device, uint32_t memRangeCount, const VkMappedMemoryRange* pMemRanges);
--void GetDeviceMemoryCommitment(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes);
--VkResult BindBufferMemory(VkDevice device, VkBuffer buffer, VkDeviceMemory mem, VkDeviceSize memOffset);
--VkResult BindImageMemory(VkDevice device, VkImage image, VkDeviceMemory mem, VkDeviceSize memOffset);
--void GetBufferMemoryRequirements(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements);
--void GetImageMemoryRequirements(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements);
--void GetImageSparseMemoryRequirements(VkDevice device, VkImage image, uint32_t* pNumRequirements, VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
--void GetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pNumProperties, VkSparseImageFormatProperties* pProperties);
--VkResult QueueBindSparse(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence);
--VkResult CreateFence(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkFence* pFence);
--void DestroyFence(VkDevice device, VkFence fence, const VkAllocationCallbacks* allocator);
--VkResult ResetFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences);
--VkResult GetFenceStatus(VkDevice device, VkFence fence);
--VkResult WaitForFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout);
--VkResult CreateSemaphore(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkSemaphore* pSemaphore);
--void DestroySemaphore(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* allocator);
--VkResult CreateEvent(VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkEvent* pEvent);
--void DestroyEvent(VkDevice device, VkEvent event, const VkAllocationCallbacks* allocator);
--VkResult GetEventStatus(VkDevice device, VkEvent event);
--VkResult SetEvent(VkDevice device, VkEvent event);
--VkResult ResetEvent(VkDevice device, VkEvent event);
--VkResult CreateQueryPool(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkQueryPool* pQueryPool);
--void DestroyQueryPool(VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* allocator);
--VkResult GetQueryPoolResults(VkDevice device, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, size_t dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags);
--VkResult CreateBuffer(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkBuffer* pBuffer);
--void DestroyBuffer(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* allocator);
--VkResult CreateBufferView(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkBufferView* pView);
--void DestroyBufferView(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* allocator);
--VkResult CreateImage(VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkImage* pImage);
--void DestroyImage(VkDevice device, VkImage image, const VkAllocationCallbacks* allocator);
--void GetImageSubresourceLayout(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout);
--VkResult CreateImageView(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkImageView* pView);
--void DestroyImageView(VkDevice device, VkImageView imageView, const VkAllocationCallbacks* allocator);
--VkResult CreateShaderModule(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkShaderModule* pShaderModule);
--void DestroyShaderModule(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* allocator);
--VkResult CreatePipelineCache(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkPipelineCache* pPipelineCache);
--void DestroyPipelineCache(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* allocator);
--VkResult GetPipelineCacheData(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData);
--VkResult MergePipelineCaches(VkDevice device, VkPipelineCache destCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches);
--VkResult CreateGraphicsPipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t count, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* allocator, VkPipeline* pPipelines);
--VkResult CreateComputePipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t count, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* allocator, VkPipeline* pPipelines);
--void DestroyPipeline(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* allocator);
--VkResult CreatePipelineLayout(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkPipelineLayout* pPipelineLayout);
--void DestroyPipelineLayout(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* allocator);
--VkResult CreateSampler(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkSampler* pSampler);
--void DestroySampler(VkDevice device, VkSampler sampler, const VkAllocationCallbacks* allocator);
--VkResult CreateDescriptorSetLayout(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkDescriptorSetLayout* pSetLayout);
--void DestroyDescriptorSetLayout(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* allocator);
--VkResult CreateDescriptorPool(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkDescriptorPool* pDescriptorPool);
--void DestroyDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* allocator);
--VkResult ResetDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags);
--VkResult AllocateDescriptorSets(VkDevice device, const VkDescriptorSetAllocateInfo* pAllocInfo, VkDescriptorSet* pDescriptorSets);
--VkResult FreeDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool, uint32_t count, const VkDescriptorSet* pDescriptorSets);
--void UpdateDescriptorSets(VkDevice device, uint32_t writeCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t copyCount, const VkCopyDescriptorSet* pDescriptorCopies);
--VkResult CreateFramebuffer(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkFramebuffer* pFramebuffer);
--void DestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* allocator);
--VkResult CreateRenderPass(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkRenderPass* pRenderPass);
--void DestroyRenderPass(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* allocator);
--void GetRenderAreaGranularity(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity);
--VkResult CreateCommandPool(VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkCommandPool* pCmdPool);
--void DestroyCommandPool(VkDevice device, VkCommandPool cmdPool, const VkAllocationCallbacks* allocator);
--VkResult ResetCommandPool(VkDevice device, VkCommandPool cmdPool, VkCommandPoolResetFlags flags);
--VkResult AllocateCommandBuffers(VkDevice device, const VkCommandBufferAllocateInfo* pAllocInfo, VkCommandBuffer* pCmdBuffers);
--void FreeCommandBuffers(VkDevice device, VkCommandPool cmdPool, uint32_t count, const VkCommandBuffer* pCommandBuffers);
--VkResult BeginCommandBuffer(VkCommandBuffer cmdBuffer, const VkCommandBufferBeginInfo* pBeginInfo);
--VkResult EndCommandBuffer(VkCommandBuffer cmdBuffer);
--VkResult ResetCommandBuffer(VkCommandBuffer cmdBuffer, VkCommandBufferResetFlags flags);
--void CmdBindPipeline(VkCommandBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline);
--void CmdSetViewport(VkCommandBuffer cmdBuffer, uint32_t viewportCount, const VkViewport* pViewports);
--void CmdSetScissor(VkCommandBuffer cmdBuffer, uint32_t scissorCount, const VkRect2D* pScissors);
--void CmdSetLineWidth(VkCommandBuffer cmdBuffer, float lineWidth);
--void CmdSetDepthBias(VkCommandBuffer cmdBuffer, float depthBias, float depthBiasClamp, float slopeScaledDepthBias);
--void CmdSetBlendConstants(VkCommandBuffer cmdBuffer, const float blendConst[4]);
--void CmdSetDepthBounds(VkCommandBuffer cmdBuffer, float minDepthBounds, float maxDepthBounds);
--void CmdSetStencilCompareMask(VkCommandBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilCompareMask);
--void CmdSetStencilWriteMask(VkCommandBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilWriteMask);
--void CmdSetStencilReference(VkCommandBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilReference);
--void CmdBindDescriptorSets(VkCommandBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t setCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets);
--void CmdBindIndexBuffer(VkCommandBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType);
--void CmdBindVertexBuffers(VkCommandBuffer cmdBuffer, uint32_t startBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets);
--void CmdDraw(VkCommandBuffer cmdBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance);
--void CmdDrawIndexed(VkCommandBuffer cmdBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance);
--void CmdDrawIndirect(VkCommandBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count, uint32_t stride);
--void CmdDrawIndexedIndirect(VkCommandBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count, uint32_t stride);
--void CmdDispatch(VkCommandBuffer cmdBuffer, uint32_t x, uint32_t y, uint32_t z);
--void CmdDispatchIndirect(VkCommandBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset);
--void CmdCopyBuffer(VkCommandBuffer cmdBuffer, VkBuffer srcBuffer, VkBuffer destBuffer, uint32_t regionCount, const VkBufferCopy* pRegions);
--void CmdCopyImage(VkCommandBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageCopy* pRegions);
--void CmdBlitImage(VkCommandBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter);
--void CmdCopyBufferToImage(VkCommandBuffer cmdBuffer, VkBuffer srcBuffer, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions);
--void CmdCopyImageToBuffer(VkCommandBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer destBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions);
--void CmdUpdateBuffer(VkCommandBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize dataSize, const uint32_t* pData);
--void CmdFillBuffer(VkCommandBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize fillSize, uint32_t data);
--void CmdClearColorImage(VkCommandBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
--void CmdClearDepthStencilImage(VkCommandBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
--void CmdClearAttachments(VkCommandBuffer cmdBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects);
--void CmdResolveImage(VkCommandBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageResolve* pRegions);
--void CmdSetEvent(VkCommandBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask);
--void CmdResetEvent(VkCommandBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask);
--void CmdWaitEvents(VkCommandBuffer cmdBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, uint32_t memBarrierCount, const void* const* ppMemBarriers);
--void CmdPipelineBarrier(VkCommandBuffer cmdBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, VkDependencyFlags dependencyFlags, uint32_t memBarrierCount, const void* const* ppMemBarriers);
--void CmdBeginQuery(VkCommandBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot, VkQueryControlFlags flags);
--void CmdEndQuery(VkCommandBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot);
--void CmdResetQueryPool(VkCommandBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount);
--void CmdWriteTimestamp(VkCommandBuffer cmdBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t slot);
--void CmdCopyQueryPoolResults(VkCommandBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize destStride, VkQueryResultFlags flags);
--void CmdPushConstants(VkCommandBuffer cmdBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t start, uint32_t length, const void* values);
--void CmdBeginRenderPass(VkCommandBuffer cmdBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents);
--void CmdNextSubpass(VkCommandBuffer cmdBuffer, VkSubpassContents contents);
--void CmdEndRenderPass(VkCommandBuffer cmdBuffer);
--void CmdExecuteCommands(VkCommandBuffer cmdBuffer, uint32_t cmdBuffersCount, const VkCommandBuffer* pCmdBuffers);
-+VKAPI_ATTR void DestroyInstance(VkInstance instance, const VkAllocationCallbacks* allocator);
-+VKAPI_ATTR VkResult EnumeratePhysicalDevices(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);
-+VKAPI_ATTR void GetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures);
-+VKAPI_ATTR void GetPhysicalDeviceFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties);
-+VKAPI_ATTR VkResult GetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties);
-+VKAPI_ATTR void GetPhysicalDeviceProperties(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties);
-+VKAPI_ATTR void GetPhysicalDeviceQueueFamilyProperties(VkPhysicalDevice physicalDevice, uint32_t* pCount, VkQueueFamilyProperties* pQueueFamilyProperties);
-+VKAPI_ATTR void GetPhysicalDeviceMemoryProperties(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties);
-+VKAPI_ATTR PFN_vkVoidFunction GetInstanceProcAddr(VkInstance instance, const char* pName);
-+VKAPI_ATTR PFN_vkVoidFunction GetDeviceProcAddr(VkDevice device, const char* pName);
-+VKAPI_ATTR VkResult CreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkDevice* pDevice);
-+VKAPI_ATTR void DestroyDevice(VkDevice device, const VkAllocationCallbacks* allocator);
-+VKAPI_ATTR VkResult EnumerateInstanceExtensionProperties(const char* pLayerName, uint32_t* pCount, VkExtensionProperties* pProperties);
-+VKAPI_ATTR VkResult EnumerateDeviceExtensionProperties(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pCount, VkExtensionProperties* pProperties);
-+VKAPI_ATTR VkResult EnumerateInstanceLayerProperties(uint32_t* pCount, VkLayerProperties* pProperties);
-+VKAPI_ATTR VkResult EnumerateDeviceLayerProperties(VkPhysicalDevice physicalDevice, uint32_t* pCount, VkLayerProperties* pProperties);
-+VKAPI_ATTR void GetDeviceQueue(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue);
-+VKAPI_ATTR VkResult QueueSubmit(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmitInfo, VkFence fence);
-+VKAPI_ATTR VkResult QueueWaitIdle(VkQueue queue);
-+VKAPI_ATTR VkResult DeviceWaitIdle(VkDevice device);
-+VKAPI_ATTR VkResult AllocateMemory(VkDevice device, const VkMemoryAllocateInfo* pAllocInfo, const VkAllocationCallbacks* allocator, VkDeviceMemory* pMem);
-+VKAPI_ATTR void FreeMemory(VkDevice device, VkDeviceMemory mem, const VkAllocationCallbacks* allocator);
-+VKAPI_ATTR VkResult MapMemory(VkDevice device, VkDeviceMemory mem, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData);
-+VKAPI_ATTR void UnmapMemory(VkDevice device, VkDeviceMemory mem);
-+VKAPI_ATTR VkResult FlushMappedMemoryRanges(VkDevice device, uint32_t memRangeCount, const VkMappedMemoryRange* pMemRanges);
-+VKAPI_ATTR VkResult InvalidateMappedMemoryRanges(VkDevice device, uint32_t memRangeCount, const VkMappedMemoryRange* pMemRanges);
-+VKAPI_ATTR void GetDeviceMemoryCommitment(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes);
-+VKAPI_ATTR VkResult BindBufferMemory(VkDevice device, VkBuffer buffer, VkDeviceMemory mem, VkDeviceSize memOffset);
-+VKAPI_ATTR VkResult BindImageMemory(VkDevice device, VkImage image, VkDeviceMemory mem, VkDeviceSize memOffset);
-+VKAPI_ATTR void GetBufferMemoryRequirements(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements);
-+VKAPI_ATTR void GetImageMemoryRequirements(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements);
-+VKAPI_ATTR void GetImageSparseMemoryRequirements(VkDevice device, VkImage image, uint32_t* pNumRequirements, VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
-+VKAPI_ATTR void GetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pNumProperties, VkSparseImageFormatProperties* pProperties);
-+VKAPI_ATTR VkResult QueueBindSparse(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence);
-+VKAPI_ATTR VkResult CreateFence(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkFence* pFence);
-+VKAPI_ATTR void DestroyFence(VkDevice device, VkFence fence, const VkAllocationCallbacks* allocator);
-+VKAPI_ATTR VkResult ResetFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences);
-+VKAPI_ATTR VkResult GetFenceStatus(VkDevice device, VkFence fence);
-+VKAPI_ATTR VkResult WaitForFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout);
-+VKAPI_ATTR VkResult CreateSemaphore(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkSemaphore* pSemaphore);
-+VKAPI_ATTR void DestroySemaphore(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* allocator);
-+VKAPI_ATTR VkResult CreateEvent(VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkEvent* pEvent);
-+VKAPI_ATTR void DestroyEvent(VkDevice device, VkEvent event, const VkAllocationCallbacks* allocator);
-+VKAPI_ATTR VkResult GetEventStatus(VkDevice device, VkEvent event);
-+VKAPI_ATTR VkResult SetEvent(VkDevice device, VkEvent event);
-+VKAPI_ATTR VkResult ResetEvent(VkDevice device, VkEvent event);
-+VKAPI_ATTR VkResult CreateQueryPool(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkQueryPool* pQueryPool);
-+VKAPI_ATTR void DestroyQueryPool(VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* allocator);
-+VKAPI_ATTR VkResult GetQueryPoolResults(VkDevice device, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, size_t dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags);
-+VKAPI_ATTR VkResult CreateBuffer(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkBuffer* pBuffer);
-+VKAPI_ATTR void DestroyBuffer(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* allocator);
-+VKAPI_ATTR VkResult CreateBufferView(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkBufferView* pView);
-+VKAPI_ATTR void DestroyBufferView(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* allocator);
-+VKAPI_ATTR VkResult CreateImage(VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkImage* pImage);
-+VKAPI_ATTR void DestroyImage(VkDevice device, VkImage image, const VkAllocationCallbacks* allocator);
-+VKAPI_ATTR void GetImageSubresourceLayout(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout);
-+VKAPI_ATTR VkResult CreateImageView(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkImageView* pView);
-+VKAPI_ATTR void DestroyImageView(VkDevice device, VkImageView imageView, const VkAllocationCallbacks* allocator);
-+VKAPI_ATTR VkResult CreateShaderModule(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkShaderModule* pShaderModule);
-+VKAPI_ATTR void DestroyShaderModule(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* allocator);
-+VKAPI_ATTR VkResult CreatePipelineCache(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkPipelineCache* pPipelineCache);
-+VKAPI_ATTR void DestroyPipelineCache(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* allocator);
-+VKAPI_ATTR VkResult GetPipelineCacheData(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData);
-+VKAPI_ATTR VkResult MergePipelineCaches(VkDevice device, VkPipelineCache destCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches);
-+VKAPI_ATTR VkResult CreateGraphicsPipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t count, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* allocator, VkPipeline* pPipelines);
-+VKAPI_ATTR VkResult CreateComputePipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t count, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* allocator, VkPipeline* pPipelines);
-+VKAPI_ATTR void DestroyPipeline(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* allocator);
-+VKAPI_ATTR VkResult CreatePipelineLayout(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkPipelineLayout* pPipelineLayout);
-+VKAPI_ATTR void DestroyPipelineLayout(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* allocator);
-+VKAPI_ATTR VkResult CreateSampler(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkSampler* pSampler);
-+VKAPI_ATTR void DestroySampler(VkDevice device, VkSampler sampler, const VkAllocationCallbacks* allocator);
-+VKAPI_ATTR VkResult CreateDescriptorSetLayout(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkDescriptorSetLayout* pSetLayout);
-+VKAPI_ATTR void DestroyDescriptorSetLayout(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* allocator);
-+VKAPI_ATTR VkResult CreateDescriptorPool(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkDescriptorPool* pDescriptorPool);
-+VKAPI_ATTR void DestroyDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* allocator);
-+VKAPI_ATTR VkResult ResetDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags);
-+VKAPI_ATTR VkResult AllocateDescriptorSets(VkDevice device, const VkDescriptorSetAllocateInfo* pAllocInfo, VkDescriptorSet* pDescriptorSets);
-+VKAPI_ATTR VkResult FreeDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool, uint32_t count, const VkDescriptorSet* pDescriptorSets);
-+VKAPI_ATTR void UpdateDescriptorSets(VkDevice device, uint32_t writeCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t copyCount, const VkCopyDescriptorSet* pDescriptorCopies);
-+VKAPI_ATTR VkResult CreateFramebuffer(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkFramebuffer* pFramebuffer);
-+VKAPI_ATTR void DestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* allocator);
-+VKAPI_ATTR VkResult CreateRenderPass(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkRenderPass* pRenderPass);
-+VKAPI_ATTR void DestroyRenderPass(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* allocator);
-+VKAPI_ATTR void GetRenderAreaGranularity(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity);
-+VKAPI_ATTR VkResult CreateCommandPool(VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* allocator, VkCommandPool* pCmdPool);
-+VKAPI_ATTR void DestroyCommandPool(VkDevice device, VkCommandPool cmdPool, const VkAllocationCallbacks* allocator);
-+VKAPI_ATTR VkResult ResetCommandPool(VkDevice device, VkCommandPool cmdPool, VkCommandPoolResetFlags flags);
-+VKAPI_ATTR VkResult AllocateCommandBuffers(VkDevice device, const VkCommandBufferAllocateInfo* pAllocInfo, VkCommandBuffer* pCmdBuffers);
-+VKAPI_ATTR void FreeCommandBuffers(VkDevice device, VkCommandPool cmdPool, uint32_t count, const VkCommandBuffer* pCommandBuffers);
-+VKAPI_ATTR VkResult BeginCommandBuffer(VkCommandBuffer cmdBuffer, const VkCommandBufferBeginInfo* pBeginInfo);
-+VKAPI_ATTR VkResult EndCommandBuffer(VkCommandBuffer cmdBuffer);
-+VKAPI_ATTR VkResult ResetCommandBuffer(VkCommandBuffer cmdBuffer, VkCommandBufferResetFlags flags);
-+VKAPI_ATTR void CmdBindPipeline(VkCommandBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline);
-+VKAPI_ATTR void CmdSetViewport(VkCommandBuffer cmdBuffer, uint32_t viewportCount, const VkViewport* pViewports);
-+VKAPI_ATTR void CmdSetScissor(VkCommandBuffer cmdBuffer, uint32_t scissorCount, const VkRect2D* pScissors);
-+VKAPI_ATTR void CmdSetLineWidth(VkCommandBuffer cmdBuffer, float lineWidth);
-+VKAPI_ATTR void CmdSetDepthBias(VkCommandBuffer cmdBuffer, float depthBias, float depthBiasClamp, float slopeScaledDepthBias);
-+VKAPI_ATTR void CmdSetBlendConstants(VkCommandBuffer cmdBuffer, const float blendConst[4]);
-+VKAPI_ATTR void CmdSetDepthBounds(VkCommandBuffer cmdBuffer, float minDepthBounds, float maxDepthBounds);
-+VKAPI_ATTR void CmdSetStencilCompareMask(VkCommandBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilCompareMask);
-+VKAPI_ATTR void CmdSetStencilWriteMask(VkCommandBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilWriteMask);
-+VKAPI_ATTR void CmdSetStencilReference(VkCommandBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilReference);
-+VKAPI_ATTR void CmdBindDescriptorSets(VkCommandBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t setCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets);
-+VKAPI_ATTR void CmdBindIndexBuffer(VkCommandBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType);
-+VKAPI_ATTR void CmdBindVertexBuffers(VkCommandBuffer cmdBuffer, uint32_t startBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets);
-+VKAPI_ATTR void CmdDraw(VkCommandBuffer cmdBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance);
-+VKAPI_ATTR void CmdDrawIndexed(VkCommandBuffer cmdBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance);
-+VKAPI_ATTR void CmdDrawIndirect(VkCommandBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count, uint32_t stride);
-+VKAPI_ATTR void CmdDrawIndexedIndirect(VkCommandBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count, uint32_t stride);
-+VKAPI_ATTR void CmdDispatch(VkCommandBuffer cmdBuffer, uint32_t x, uint32_t y, uint32_t z);
-+VKAPI_ATTR void CmdDispatchIndirect(VkCommandBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset);
-+VKAPI_ATTR void CmdCopyBuffer(VkCommandBuffer cmdBuffer, VkBuffer srcBuffer, VkBuffer destBuffer, uint32_t regionCount, const VkBufferCopy* pRegions);
-+VKAPI_ATTR void CmdCopyImage(VkCommandBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageCopy* pRegions);
-+VKAPI_ATTR void CmdBlitImage(VkCommandBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter);
-+VKAPI_ATTR void CmdCopyBufferToImage(VkCommandBuffer cmdBuffer, VkBuffer srcBuffer, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions);
-+VKAPI_ATTR void CmdCopyImageToBuffer(VkCommandBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer destBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions);
-+VKAPI_ATTR void CmdUpdateBuffer(VkCommandBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize dataSize, const uint32_t* pData);
-+VKAPI_ATTR void CmdFillBuffer(VkCommandBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize fillSize, uint32_t data);
-+VKAPI_ATTR void CmdClearColorImage(VkCommandBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
-+VKAPI_ATTR void CmdClearDepthStencilImage(VkCommandBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
-+VKAPI_ATTR void CmdClearAttachments(VkCommandBuffer cmdBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects);
-+VKAPI_ATTR void CmdResolveImage(VkCommandBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageResolve* pRegions);
-+VKAPI_ATTR void CmdSetEvent(VkCommandBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask);
-+VKAPI_ATTR void CmdResetEvent(VkCommandBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask);
-+VKAPI_ATTR void CmdWaitEvents(VkCommandBuffer cmdBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, uint32_t memBarrierCount, const void* const* ppMemBarriers);
-+VKAPI_ATTR void CmdPipelineBarrier(VkCommandBuffer cmdBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, VkDependencyFlags dependencyFlags, uint32_t memBarrierCount, const void* const* ppMemBarriers);
-+VKAPI_ATTR void CmdBeginQuery(VkCommandBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot, VkQueryControlFlags flags);
-+VKAPI_ATTR void CmdEndQuery(VkCommandBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot);
-+VKAPI_ATTR void CmdResetQueryPool(VkCommandBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount);
-+VKAPI_ATTR void CmdWriteTimestamp(VkCommandBuffer cmdBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t slot);
-+VKAPI_ATTR void CmdCopyQueryPoolResults(VkCommandBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize destStride, VkQueryResultFlags flags);
-+VKAPI_ATTR void CmdPushConstants(VkCommandBuffer cmdBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t start, uint32_t length, const void* values);
-+VKAPI_ATTR void CmdBeginRenderPass(VkCommandBuffer cmdBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents);
-+VKAPI_ATTR void CmdNextSubpass(VkCommandBuffer cmdBuffer, VkSubpassContents contents);
-+VKAPI_ATTR void CmdEndRenderPass(VkCommandBuffer cmdBuffer);
-+VKAPI_ATTR void CmdExecuteCommands(VkCommandBuffer cmdBuffer, uint32_t cmdBuffersCount, const VkCommandBuffer* pCmdBuffers);
- 
--VkResult GetSwapchainGrallocUsageANDROID(VkDevice device, VkFormat format, VkImageUsageFlags imageUsage, int* grallocUsage);
--VkResult AcquireImageANDROID(VkDevice device, VkImage image, int nativeFenceFd, VkSemaphore semaphore);
--VkResult QueueSignalReleaseImageANDROID(VkQueue queue, VkImage image, int* pNativeFenceFd);
-+VKAPI_ATTR VkResult GetSwapchainGrallocUsageANDROID(VkDevice device, VkFormat format, VkImageUsageFlags imageUsage, int* grallocUsage);
-+VKAPI_ATTR VkResult AcquireImageANDROID(VkDevice device, VkImage image, int nativeFenceFd, VkSemaphore semaphore);
-+VKAPI_ATTR VkResult QueueSignalReleaseImageANDROID(VkQueue queue, VkImage image, int* pNativeFenceFd);
- // clang-format on
- 
- }  // namespace null_driver
--- 
-2.6.0.rc2.230.g3dd15c0
-
diff --git a/vulkan/patches/frameworks_native-sdk_0.10/0025-vulkan-Update-from-version-0.204.0-to-0.205.0.patch b/vulkan/patches/frameworks_native-sdk_0.10/0025-vulkan-Update-from-version-0.204.0-to-0.205.0.patch
deleted file mode 100644
index 83db6f4..0000000
--- a/vulkan/patches/frameworks_native-sdk_0.10/0025-vulkan-Update-from-version-0.204.0-to-0.205.0.patch
+++ /dev/null
@@ -1,581 +0,0 @@
-From 052ac57d4c70d934d76fb5cd94278c326e623963 Mon Sep 17 00:00:00 2001
-From: Jesse Hall <jessehall@google.com>
-Date: Mon, 30 Nov 2015 11:37:59 -0800
-Subject: [PATCH] vulkan: Update from version 0.204.0 to 0.205.0
-
-Change-Id: Ic0b91f338bcddc50b4617da266347ae8b9cc29fa
----
- vulkan/api/vulkan.api          | 43 ++++++++++++++++++------------
- vulkan/include/vulkan/vulkan.h | 59 +++++++++++++++++++++++++-----------------
- vulkan/libvulkan/entry.cpp     | 16 ++++++------
- vulkan/libvulkan/loader.h      | 22 ++++++++++------
- vulkan/libvulkan/swapchain.cpp | 14 +++++++---
- 5 files changed, 94 insertions(+), 60 deletions(-)
-
-diff --git a/vulkan/api/vulkan.api b/vulkan/api/vulkan.api
-index c77a148..1c4bb8f 100644
---- a/vulkan/api/vulkan.api
-+++ b/vulkan/api/vulkan.api
-@@ -27,7 +27,7 @@ import platform "platform.api"
- 
- // API version (major.minor.patch)
- define VERSION_MAJOR 0
--define VERSION_MINOR 204
-+define VERSION_MINOR 205
- define VERSION_PATCH 0
- 
- // API limits
-@@ -45,43 +45,43 @@ define VK_FALSE       0
- // API keyword, but needs special handling by some templates
- define NULL_HANDLE 0
- 
--@extension("VK_KHR_surface") define VK_KHR_SURFACE_REVISION                     22
-+@extension("VK_KHR_surface") define VK_KHR_SURFACE_REVISION                     23
- @extension("VK_KHR_surface") define VK_KHR_SURFACE_EXTENSION_NUMBER             1
- @extension("VK_KHR_surface") define VK_KHR_SURFACE_EXTENSION_NAME               "VK_KHR_surface"
- 
--@extension("VK_KHR_swapchain") define VK_KHR_SWAPCHAIN_REVISION                 65
-+@extension("VK_KHR_swapchain") define VK_KHR_SWAPCHAIN_REVISION                 66
- @extension("VK_KHR_swapchain") define VK_KHR_SWAPCHAIN_EXTENSION_NUMBER         2
- @extension("VK_KHR_swapchain") define VK_KHR_SWAPCHAIN_EXTENSION_NAME           "VK_KHR_swapchain"
- 
--@extension("VK_KHR_display") define VK_KHR_DISPLAY_REVISION                     18
-+@extension("VK_KHR_display") define VK_KHR_DISPLAY_REVISION                     19
- @extension("VK_KHR_display") define VK_KHR_DISPLAY_EXTENSION_NUMBER             3
- @extension("VK_KHR_display") define VK_KHR_DISPLAY_EXTENSION_NAME               "VK_KHR_display"
- 
--@extension("VK_KHR_display_swapchain") define VK_KHR_DISPLAY_REVISION           7
--@extension("VK_KHR_display_swapchain") define VK_KHR_DISPLAY_EXTENSION_NUMBER   4
--@extension("VK_KHR_display_swapchain") define VK_KHR_DISPLAY_EXTENSION_NAME     "VK_KHR_display_swapchain"
-+@extension("VK_KHR_display_swapchain") define VK_KHR_DISPLAY_SWAPCHAIN_REVISION         8
-+@extension("VK_KHR_display_swapchain") define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NUMBER 4
-+@extension("VK_KHR_display_swapchain") define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME   "VK_KHR_display_swapchain"
- 
--@extension("VK_KHR_xlib_surface") define VK_KHR_XLIB_SURFACE_REVISION           4
-+@extension("VK_KHR_xlib_surface") define VK_KHR_XLIB_SURFACE_REVISION           5
- @extension("VK_KHR_xlib_surface") define VK_KHR_XLIB_SURFACE_NUMBER             5
- @extension("VK_KHR_xlib_surface") define VK_KHR_XLIB_SURFACE_NAME               "VK_KHR_xlib_surface"
- 
--@extension("VK_KHR_xcb_surface") define VK_KHR_XCB_SURFACE_REVISION             4
-+@extension("VK_KHR_xcb_surface") define VK_KHR_XCB_SURFACE_REVISION             5
- @extension("VK_KHR_xcb_surface") define VK_KHR_XCB_SURFACE_NUMBER               6
- @extension("VK_KHR_xcb_surface") define VK_KHR_XCB_SURFACE_NAME                 "VK_KHR_xcb_surface"
- 
--@extension("VK_KHR_wayland_surface") define VK_KHR_WAYLAND_SURFACE_REVISION     3
-+@extension("VK_KHR_wayland_surface") define VK_KHR_WAYLAND_SURFACE_REVISION     4
- @extension("VK_KHR_wayland_surface") define VK_KHR_WAYLAND_SURFACE_NUMBER       7
- @extension("VK_KHR_wayland_surface") define VK_KHR_WAYLAND_SURFACE_NAME         "VK_KHR_wayland_surface"
- 
--@extension("VK_KHR_mir_surface") define VK_KHR_MIR_SURFACE_REVISION             3
-+@extension("VK_KHR_mir_surface") define VK_KHR_MIR_SURFACE_REVISION             4
- @extension("VK_KHR_mir_surface") define VK_KHR_MIR_SURFACE_NUMBER               8
- @extension("VK_KHR_mir_surface") define VK_KHR_MIR_SURFACE_NAME                 "VK_KHR_mir_surface"
- 
--@extension("VK_KHR_android_surface") define VK_KHR_ANDROID_SURFACE_REVISION     2
-+@extension("VK_KHR_android_surface") define VK_KHR_ANDROID_SURFACE_REVISION     3
- @extension("VK_KHR_android_surface") define VK_KHR_ANDROID_SURFACE_NUMBER       8
- @extension("VK_KHR_android_surface") define VK_KHR_ANDROID_SURFACE_NAME         "VK_KHR_android_surface"
- 
--@extension("VK_KHR_win32_surface") define VK_KHR_WIN32_SURFACE_REVISION         3
-+@extension("VK_KHR_win32_surface") define VK_KHR_WIN32_SURFACE_REVISION         4
- @extension("VK_KHR_win32_surface") define VK_KHR_WIN32_SURFACE_NUMBER           9
- @extension("VK_KHR_win32_surface") define VK_KHR_WIN32_SURFACE_NAME             "VK_KHR_win32_surface"
- 
-@@ -4594,7 +4594,8 @@ cmd void vkCmdExecuteCommands(
- @extension("VK_KHR_surface")
- cmd void vkDestroySurfaceKHR(
-         VkInstance                                  instance,
--        VkSurfaceKHR                                surface) {
-+        VkSurfaceKHR                                surface,
-+        const VkAllocationCallbacks*                pAllocator) {
-     instanceObject := GetInstance(instance)
-     surfaceObject := GetSurface(surface)
-     assert(surfaceObject.instance == instance)
-@@ -4670,6 +4671,7 @@ cmd VkResult vkGetPhysicalDeviceSurfacePresentModesKHR(
- cmd VkResult vkCreateSwapchainKHR(
-         VkDevice                                 device,
-         const VkSwapchainCreateInfoKHR*          pCreateInfo,
-+        const VkAllocationCallbacks*             pAllocator,
-         VkSwapchainKHR*                          pSwapchain) {
-     assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR)
-     deviceObject := GetDevice(device)
-@@ -4684,7 +4686,8 @@ cmd VkResult vkCreateSwapchainKHR(
- @extension("VK_KHR_swapchain")
- cmd void vkDestroySwapchainKHR(
-         VkDevice                                 device,
--        VkSwapchainKHR                           swapchain) {
-+        VkSwapchainKHR                           swapchain,
-+        const VkAllocationCallbacks*             pAllocator) {
-     deviceObject := GetDevice(device)
-     swapchainObject := GetSwapchain(swapchain)
-     assert(swapchainObject.device == device)
-@@ -4784,6 +4787,7 @@ cmd VkResult vkCreateDisplayModeKHR(
-         VkPhysicalDevice                        physicalDevice,
-         VkDisplayKHR                            display,
-         const VkDisplayModeCreateInfoKHR*       pCreateInfo,
-+        const VkAllocationCallbacks*            pAllocator,
-         VkDisplayModeKHR*                       pMode) {
-     physicalDeviceObject := GetPhysicalDevice(physicalDevice)
-     return ?
-@@ -4803,6 +4807,7 @@ cmd VkResult vkGetDisplayPlaneCapabilitiesKHR(
- cmd VkResult vkCreateDisplayPlaneSurfaceKHR(
-         VkInstance                              instance,
-         const VkDisplaySurfaceCreateInfoKHR*    pCreateInfo,
-+        const VkAllocationCallbacks*            pAllocator,
-         VkSurfaceKHR*                           pSurface) {
-     return ?
- }
-@@ -4812,6 +4817,7 @@ cmd VkResult vkCreateXlibSurfaceKHR(
-         VkInstance                              instance,
-         platform.Display*                       dpy,
-         platform.Window                         window,
-+        const VkAllocationCallbacks*            pAllocator,
-         VkSurfaceKHR*                           pSurface) {
-     instanceObject := GetInstance(instance)
-     return ?
-@@ -4832,6 +4838,7 @@ cmd VkResult vkCreateXCBSurfaceKHR(
-         VkInstance                              instance,
-         platform.xcb_connection_t*              connection,
-         platform.xcb_window_t                   window,
-+        const VkAllocationCallbacks*            pAllocator,
-         VkSurfaceKHR*                           pSurface) {
-     instanceObject := GetInstance(instance)
-     return ?
-@@ -4852,6 +4859,7 @@ cmd VkResult vkCreateWaylandSurfaceKHR(
-         VkInstance                              instance,
-         platform.wl_display*                    display,
-         platform.wl_surface*                    surface,
-+        const VkAllocationCallbacks*            pAllocator,
-         VkSurfaceKHR*                           pSurface) {
-     instanceObject := GetInstance(instance)
-     return ?
-@@ -4871,6 +4879,7 @@ cmd VkResult vkCreateMirSurfaceKHR(
-         VkInstance                              instance,
-         platform.MirConnection*                 connection,
-         platform.MirSurface*                    mirSurface,
-+        const VkAllocationCallbacks*            pAllocator,
-         VkSurfaceKHR*                           pSurface) {
-     instanceObject := GetInstance(instance)
-     return ?
-@@ -4888,7 +4897,8 @@ cmd VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR(
- @extension("VK_KHR_android_surface")
- cmd VkResult vkCreateAndroidSurfaceKHR(
-         VkInstance                              instance,
--        platform.ANativeWindow*                 window
-+        platform.ANativeWindow*                 window,
-+        const VkAllocationCallbacks*            pAllocator,
-         VkSurfaceKHR*                           pSurface) {
-     instanceObject := GetInstance(instance)
-     return ?
-@@ -4899,6 +4909,7 @@ cmd VkResult vkCreateWin32SurfaceKHR(
-         VkInstance                              instance,
-         platform.HINSTANCE                      hinstance,
-         platform.HWND                           hwnd,
-+        const VkAllocationCallbacks*            pAllocator,
-         VkSurfaceKHR*                           pSurface) {
-     instanceObject := GetInstance(instance)
-     return ?
-diff --git a/vulkan/include/vulkan/vulkan.h b/vulkan/include/vulkan/vulkan.h
-index 2791b8a..b342285 100644
---- a/vulkan/include/vulkan/vulkan.h
-+++ b/vulkan/include/vulkan/vulkan.h
-@@ -41,7 +41,7 @@ extern "C" {
-     ((major << 22) | (minor << 12) | patch)
- 
- // Vulkan API version supported by this file
--#define VK_API_VERSION VK_MAKE_VERSION(0, 204, 0)
-+#define VK_API_VERSION VK_MAKE_VERSION(0, 205, 0)
- 
- 
- #define VK_NULL_HANDLE 0
-@@ -3068,7 +3068,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdExecuteCommands(
- #define VK_KHR_surface 1
- VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR)
- 
--#define VK_KHR_SURFACE_REVISION           22
-+#define VK_KHR_SURFACE_REVISION           23
- #define VK_KHR_SURFACE_EXTENSION_NUMBER   1
- #define VK_KHR_SURFACE_EXTENSION_NAME     "VK_KHR_surface"
- #define VK_ERROR_SURFACE_LOST_KHR         ((VkResult)(int)0xc0000400)
-@@ -3150,7 +3150,7 @@ typedef struct VkSurfaceFormatKHR {
- } VkSurfaceFormatKHR;
- 
- 
--typedef void (VKAPI_PTR *PFN_vkDestroySurfaceKHR)(VkInstance  instance, VkSurfaceKHR  surface);
-+typedef void (VKAPI_PTR *PFN_vkDestroySurfaceKHR)(VkInstance  instance, VkSurfaceKHR  surface, const VkAllocationCallbacks* pAllocator);
- typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported);
- typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities);
- typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats);
-@@ -3159,7 +3159,8 @@ typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)(VkPh
- #ifdef VK_PROTOTYPES
- VKAPI_ATTR void VKAPI_CALL vkDestroySurfaceKHR(
-     VkInstance                                   instance,
--    VkSurfaceKHR                                 surface);
-+    VkSurfaceKHR                                 surface,
-+    const VkAllocationCallbacks*                pAllocator);
- 
- VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceSupportKHR(
-     VkPhysicalDevice                            physicalDevice,
-@@ -3188,7 +3189,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModesKHR(
- #define VK_KHR_swapchain 1
- VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSwapchainKHR)
- 
--#define VK_KHR_SWAPCHAIN_REVISION         65
-+#define VK_KHR_SWAPCHAIN_REVISION         66
- #define VK_KHR_SWAPCHAIN_EXTENSION_NUMBER 2
- #define VK_KHR_SWAPCHAIN_EXTENSION_NAME   "VK_KHR_swapchain"
- #define VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR ((VkStructureType)(int)0xc0000800)
-@@ -3229,8 +3230,8 @@ typedef struct VkPresentInfoKHR {
- } VkPresentInfoKHR;
- 
- 
--typedef VkResult (VKAPI_PTR *PFN_vkCreateSwapchainKHR)(VkDevice  device, const VkSwapchainCreateInfoKHR*  pCreateInfo, VkSwapchainKHR*  pSwapchain);
--typedef void (VKAPI_PTR *PFN_vkDestroySwapchainKHR)(VkDevice  device, VkSwapchainKHR  swapchain);
-+typedef VkResult (VKAPI_PTR *PFN_vkCreateSwapchainKHR)(VkDevice  device, const VkSwapchainCreateInfoKHR*  pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR*  pSwapchain);
-+typedef void (VKAPI_PTR *PFN_vkDestroySwapchainKHR)(VkDevice  device, VkSwapchainKHR  swapchain, const VkAllocationCallbacks* pAllocator);
- typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainImagesKHR)(VkDevice  device, VkSwapchainKHR  swapchain, uint32_t*  pSwapchainImageCount, VkImage*  pSwapchainImages);
- typedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImageKHR)(VkDevice  device, VkSwapchainKHR  swapchain, uint64_t  timeout, VkSemaphore  semaphore, VkFence  fence, uint32_t*  pImageIndex);
- typedef VkResult (VKAPI_PTR *PFN_vkQueuePresentKHR)(VkQueue  queue, VkPresentInfoKHR*  pPresentInfo);
-@@ -3239,11 +3240,13 @@ typedef VkResult (VKAPI_PTR *PFN_vkQueuePresentKHR)(VkQueue  queue, VkPresentInf
- VKAPI_ATTR VkResult VKAPI_CALL vkCreateSwapchainKHR(
-     VkDevice                                     device,
-     const VkSwapchainCreateInfoKHR*              pCreateInfo,
-+    const VkAllocationCallbacks*                pAllocator,
-     VkSwapchainKHR*                              pSwapchain);
- 
- VKAPI_ATTR void VKAPI_CALL vkDestroySwapchainKHR(
-     VkDevice                                     device,
--    VkSwapchainKHR                               swapchain);
-+    VkSwapchainKHR                               swapchain,
-+    const VkAllocationCallbacks*                pAllocator);
- 
- VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainImagesKHR(
-     VkDevice                                     device,
-@@ -3268,7 +3271,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkQueuePresentKHR(
- VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayKHR)
- VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayModeKHR)
- 
--#define VK_KHR_DISPLAY_REVISION           18
-+#define VK_KHR_DISPLAY_REVISION           19
- #define VK_KHR_DISPLAY_EXTENSION_NUMBER   3
- #define VK_KHR_DISPLAY_EXTENSION_NAME     "VK_KHR_display"
- #define VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR ((VkStructureType)(int)0xc0000c00)
-@@ -3342,9 +3345,9 @@ typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)(VkPhys
- typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties);
- typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneSupportedDisplaysKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayKHR* pProperties);
- typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModePropertiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModePropertiesKHR* pProperties);
--typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayModeKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR*pCreateInfo, VkDisplayModeKHR* pMode);
-+typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayModeKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR*pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode);
- typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayModeCreateInfoKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities);
--typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayPlaneSurfaceKHR)(VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, VkSurfaceKHR* pSurface);
-+typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayPlaneSurfaceKHR)(VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
- 
- #ifdef VK_PROTOTYPES
- VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPropertiesKHR(
-@@ -3372,6 +3375,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayModeKHR(
-     VkPhysicalDevice                            physicalDevice,
-     VkDisplayKHR                                display,
-     const VkDisplayModeCreateInfoKHR*           pCreateInfo,
-+    const VkAllocationCallbacks*                pAllocator,
-     VkDisplayModeKHR*                           pMode);
- 
- VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneCapabilitiesKHR(
-@@ -3383,11 +3387,12 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneCapabilitiesKHR(
- VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayPlaneSurfaceKHR(
-     VkInstance                                  instance,
-     const VkDisplaySurfaceCreateInfoKHR*        pCreateInfo,
-+    const VkAllocationCallbacks*                pAllocator,
-     VkSurfaceKHR*                               pSurface);
- #endif
- 
- #define VK_KHR_display_swapchain 1
--#define VK_KHR_DISPLAY_SWAPCHAIN_REVISION 7
-+#define VK_KHR_DISPLAY_SWAPCHAIN_REVISION 8
- #define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NUMBER 4
- #define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME "VK_KHR_display_swapchain"
- #define VK_STRUCTURE_TYPE_DISPLAY_SWAPCHAIN_CREATE_INFO_KHR ((VkStructureType)(int)0xc0001000)
-@@ -3414,11 +3419,11 @@ typedef struct VkDisplayPresentInfoKHR {
- #define VK_KHR_xlib_surface 1
- #include <X11/Xlib.h>
- 
--#define VK_KHR_XLIB_SURFACE_REVISION      4
-+#define VK_KHR_XLIB_SURFACE_REVISION      5
- #define VK_KHR_XLIB_SURFACE_EXTENSION_NUMBER 5
- #define VK_KHR_XLIB_SURFACE_EXTENSION_NAME "VK_KHR_xlib_surface"
- 
--typedef VkResult (VKAPI_PTR *PFN_vkCreateXlibSurfaceKHR)(VkInstance instance, Display* dpy, Window window, VkSurfaceKHR* pSurface);
-+typedef VkResult (VKAPI_PTR *PFN_vkCreateXlibSurfaceKHR)(VkInstance instance, Display* dpy, Window window, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
- typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, Display* dpy, VisualID visualID);
- 
- #ifdef VK_PROTOTYPES
-@@ -3426,6 +3431,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateXlibSurfaceKHR(
-     VkInstance                                  instance,
-     Display*                                    dpy,
-     Window                                      window,
-+    const VkAllocationCallbacks*                pAllocator,
-     VkSurfaceKHR*                               pSurface);
- 
- VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceXlibPresentationSupportKHR(
-@@ -3440,11 +3446,11 @@ VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceXlibPresentationSupportKHR(
- #define VK_KHR_xcb_surface 1
- #include <xcb/xcb.h>
- 
--#define VK_KHR_XCB_SURFACE_REVISION       4
-+#define VK_KHR_XCB_SURFACE_REVISION       5
- #define VK_KHR_XCB_SURFACE_EXTENSION_NUMBER 6
- #define VK_KHR_XCB_SURFACE_EXTENSION_NAME "VK_KHR_xcb_surface"
- 
--typedef VkResult (VKAPI_PTR *PFN_vkCreateXcbSurfaceKHR)(VkInstance instance, xcb_connection_t* connection, xcb_window_t window, VkSurfaceKHR* pSurface);
-+typedef VkResult (VKAPI_PTR *PFN_vkCreateXcbSurfaceKHR)(VkInstance instance, xcb_connection_t* connection, xcb_window_t window, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
- typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id);
- 
- #ifdef VK_PROTOTYPES
-@@ -3452,6 +3458,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateXcbSurfaceKHR(
-     VkInstance                                  instance,
-     xcb_connection_t*                           connection,
-     xcb_window_t                                window,
-+    const VkAllocationCallbacks*                pAllocator,
-     VkSurfaceKHR*                               pSurface);
- 
- VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceXcbPresentationSupportKHR(
-@@ -3466,11 +3473,11 @@ VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceXcbPresentationSupportKHR(
- #define VK_KHR_wayland_surface 1
- #include <wayland-client.h>
- 
--#define VK_KHR_WAYLAND_SURFACE_REVISION   3
-+#define VK_KHR_WAYLAND_SURFACE_REVISION   4
- #define VK_KHR_WAYLAND_SURFACE_EXTENSION_NUMBER 7
- #define VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME "VK_KHR_wayland_surface"
- 
--typedef VkResult (VKAPI_PTR *PFN_vkCreateWaylandSurfaceKHR)(VkInstance instance, struct wl_display* display, struct wl_surface* surface, VkSurfaceKHR* pSurface);
-+typedef VkResult (VKAPI_PTR *PFN_vkCreateWaylandSurfaceKHR)(VkInstance instance, struct wl_display* display, struct wl_surface* surface, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
- typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, struct wl_display* display);
- 
- #ifdef VK_PROTOTYPES
-@@ -3478,6 +3485,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateWaylandSurfaceKHR(
-     VkInstance                                  instance,
-     struct wl_display*                          display,
-     struct wl_surface*                          surface,
-+    const VkAllocationCallbacks*                pAllocator,
-     VkSurfaceKHR*                               pSurface);
- 
- VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWaylandPresentationSupportKHR(
-@@ -3491,11 +3499,11 @@ VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWaylandPresentationSupportKHR(
- #define VK_KHR_mir_surface 1
- #include <mir_toolkit/client_types.h>
- 
--#define VK_KHR_MIR_SURFACE_REVISION       3
-+#define VK_KHR_MIR_SURFACE_REVISION       4
- #define VK_KHR_MIR_SURFACE_EXTENSION_NUMBER 8
- #define VK_KHR_MIR_SURFACE_EXTENSION_NAME "VK_KHR_mir_surface"
- 
--typedef VkResult (VKAPI_PTR *PFN_vkCreateMirSurfaceKHR)(VkInstance instance, MirConnection* connection, MirSurface* mirSurface, VkSurfaceKHR* pSurface);
-+typedef VkResult (VKAPI_PTR *PFN_vkCreateMirSurfaceKHR)(VkInstance instance, MirConnection* connection, MirSurface* mirSurface, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
- typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceMirPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, MirConnection* connection);
- 
- #ifdef VK_PROTOTYPES
-@@ -3503,6 +3511,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateMirSurfaceKHR(
-     VkInstance                                  instance,
-     MirConnection*                              connection,
-     MirSurface*                                 mirSurface,
-+    const VkAllocationCallbacks*                pAllocator,
-     VkSurfaceKHR*                               pSurface);
- 
- VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceMirPresentationSupportKHR(
-@@ -3516,18 +3525,19 @@ VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceMirPresentationSupportKHR(
- #define VK_KHR_android_surface 1
- #include <android/native_window.h>
- 
--#define VK_KHR_ANDROID_SURFACE_REVISION   2
-+#define VK_KHR_ANDROID_SURFACE_REVISION   3
- #define VK_KHR_ANDROID_SURFACE_EXTENSION_NUMBER 9
- #define VK_KHR_ANDROID_SURFACE_EXTENSION_NAME "VK_KHR_android_surface"
- #define VK_ERROR_INVALID_ANDROID_WINDOW_KHR ((VkResult)(int)0xc0002400)
- #define VK_ERROR_ANDROID_WINDOW_IN_USE_KHR ((VkResult)(int)0xc0002401)
- 
--typedef VkResult (VKAPI_PTR *PFN_vkCreateAndroidSurfaceKHR)(VkInstance instance, ANativeWindow* window, VkSurfaceKHR* pSurface);
-+typedef VkResult (VKAPI_PTR *PFN_vkCreateAndroidSurfaceKHR)(VkInstance instance, ANativeWindow* window, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
- 
- #ifdef VK_PROTOTYPES
- VKAPI_ATTR VkResult VKAPI_CALL vkCreateAndroidSurfaceKHR(
-     VkInstance                                  instance,
-     ANativeWindow*                              window,
-+    const VkAllocationCallbacks*                pAllocator,
-     VkSurfaceKHR*                               pSurface);
- #endif
- #endif /* VK_USE_PLATFORM_ANDROID_KHR */
-@@ -3536,11 +3546,11 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateAndroidSurfaceKHR(
- #define VK_KHR_win32_surface 1
- #include <windows.h>
- 
--#define VK_KHR_WIN32_SURFACE_REVISION     3
-+#define VK_KHR_WIN32_SURFACE_REVISION     4
- #define VK_KHR_WIN32_SURFACE_EXTENSION_NUMBER 10
- #define VK_KHR_WIN32_SURFACE_EXTENSION_NAME "VK_KHR_win32_surface"
- 
--typedef VkResult (VKAPI_PTR *PFN_vkCreateWin32SurfaceKHR)(VkInstance instance, HINSTANCE hinstance, HWND hwnd, VkSurfaceKHR* pSurface);
-+typedef VkResult (VKAPI_PTR *PFN_vkCreateWin32SurfaceKHR)(VkInstance instance, HINSTANCE hinstance, HWND hwnd, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
- typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex);
- 
- #ifdef VK_PROTOTYPES
-@@ -3548,6 +3558,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateWin32SurfaceKHR(
-     VkInstance                                  instance,
-     HINSTANCE                                   hinstance,
-     HWND                                        hwnd,
-+    const VkAllocationCallbacks*                pAllocator,
-     VkSurfaceKHR*                               pSurface);
- 
- VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWin32PresentationSupportKHR(
-diff --git a/vulkan/libvulkan/entry.cpp b/vulkan/libvulkan/entry.cpp
-index 7b8db6b..67b8c38 100644
---- a/vulkan/libvulkan/entry.cpp
-+++ b/vulkan/libvulkan/entry.cpp
-@@ -727,8 +727,8 @@ VKAPI_ATTR void vkCmdExecuteCommands(VkCommandBuffer commandBuffer, uint32_t com
- }
- 
- __attribute__((visibility("default")))
--VKAPI_ATTR void vkDestroySurfaceKHR(VkInstance instance, VkSurfaceKHR surface) {
--    GetVtbl(instance).DestroySurfaceKHR(instance, surface);
-+VKAPI_ATTR void vkDestroySurfaceKHR(VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator) {
-+    GetVtbl(instance).DestroySurfaceKHR(instance, surface, pAllocator);
- }
- 
- __attribute__((visibility("default")))
-@@ -752,13 +752,13 @@ VKAPI_ATTR VkResult vkGetPhysicalDeviceSurfacePresentModesKHR(VkPhysicalDevice p
- }
- 
- __attribute__((visibility("default")))
--VKAPI_ATTR VkResult vkCreateSwapchainKHR(VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, VkSwapchainKHR* pSwapchain) {
--    return GetVtbl(device).CreateSwapchainKHR(device, pCreateInfo, pSwapchain);
-+VKAPI_ATTR VkResult vkCreateSwapchainKHR(VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain) {
-+    return GetVtbl(device).CreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain);
- }
- 
- __attribute__((visibility("default")))
--VKAPI_ATTR void vkDestroySwapchainKHR(VkDevice device, VkSwapchainKHR swapchain) {
--    GetVtbl(device).DestroySwapchainKHR(device, swapchain);
-+VKAPI_ATTR void vkDestroySwapchainKHR(VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator) {
-+    GetVtbl(device).DestroySwapchainKHR(device, swapchain, pAllocator);
- }
- 
- __attribute__((visibility("default")))
-@@ -777,6 +777,6 @@ VKAPI_ATTR VkResult vkQueuePresentKHR(VkQueue queue, VkPresentInfoKHR* pPresentI
- }
- 
- __attribute__((visibility("default")))
--VKAPI_ATTR VkResult vkCreateAndroidSurfaceKHR(VkInstance instance, struct ANativeWindow* window, VkSurfaceKHR* pSurface) {
--    return GetVtbl(instance).CreateAndroidSurfaceKHR(instance, window, pSurface);
-+VKAPI_ATTR VkResult vkCreateAndroidSurfaceKHR(VkInstance instance, struct ANativeWindow* window, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) {
-+    return GetVtbl(instance).CreateAndroidSurfaceKHR(instance, window, pAllocator, pSurface);
- }
-diff --git a/vulkan/libvulkan/loader.h b/vulkan/libvulkan/loader.h
-index 6aa8673..35d0eaa 100644
---- a/vulkan/libvulkan/loader.h
-+++ b/vulkan/libvulkan/loader.h
-@@ -212,7 +212,7 @@ VkResult EnumerateInstanceExtensionProperties(
- VkResult EnumerateInstanceLayerProperties(uint32_t* count,
-                                           VkLayerProperties* properties);
- VkResult CreateInstance(const VkInstanceCreateInfo* create_info,
--                        const VkAllocationCallbacks* pAllocator,
-+                        const VkAllocationCallbacks* allocator,
-                         VkInstance* instance);
- PFN_vkVoidFunction GetInstanceProcAddr(VkInstance instance, const char* name);
- PFN_vkVoidFunction GetDeviceProcAddr(VkDevice drv_device, const char* name);
-@@ -224,7 +224,7 @@ VkResult AllocCommandBuffers(VkDevice device,
-                              const VkCommandBufferAllocateInfo* alloc_info,
-                              VkCommandBuffer* cmdbufs);
- VkResult DestroyDevice(VkDevice drv_device,
--                       const VkAllocationCallbacks* pAllocator);
-+                       const VkAllocationCallbacks* allocator);
- 
- void* AllocMem(VkInstance instance,
-                size_t size,
-@@ -261,10 +261,14 @@ bool LoadDeviceVtbl(VkDevice device,
- // -----------------------------------------------------------------------------
- // swapchain.cpp
- 
--VKAPI_ATTR VkResult CreateAndroidSurfaceKHR(VkInstance instance,
--                                            ANativeWindow* window,
--                                            VkSurfaceKHR* surface);
--VKAPI_ATTR void DestroySurfaceKHR(VkInstance instance, VkSurfaceKHR surface);
-+VKAPI_ATTR VkResult
-+CreateAndroidSurfaceKHR(VkInstance instance,
-+                        ANativeWindow* window,
-+                        const VkAllocationCallbacks* allocator,
-+                        VkSurfaceKHR* surface);
-+VKAPI_ATTR void DestroySurfaceKHR(VkInstance instance,
-+                                  VkSurfaceKHR surface,
-+                                  const VkAllocationCallbacks* allocator);
- VKAPI_ATTR VkResult GetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice pdev,
-                                                        uint32_t queue_family,
-                                                        VkSurfaceKHR surface,
-@@ -286,9 +290,11 @@ GetPhysicalDeviceSurfacePresentModesKHR(VkPhysicalDevice pdev,
- VKAPI_ATTR VkResult
- CreateSwapchainKHR(VkDevice device,
-                    const VkSwapchainCreateInfoKHR* create_info,
-+                   const VkAllocationCallbacks* allocator,
-                    VkSwapchainKHR* swapchain_handle);
--VKAPI_ATTR VkResult
--DestroySwapchainKHR(VkDevice device, VkSwapchainKHR swapchain_handle);
-+VKAPI_ATTR VkResult DestroySwapchainKHR(VkDevice device,
-+                                        VkSwapchainKHR swapchain_handle,
-+                                        const VkAllocationCallbacks* allocator);
- VKAPI_ATTR VkResult GetSwapchainImagesKHR(VkDevice device,
-                                           VkSwapchainKHR swapchain_handle,
-                                           uint32_t* count,
-diff --git a/vulkan/libvulkan/swapchain.cpp b/vulkan/libvulkan/swapchain.cpp
-index fa5ea59..ee15878 100644
---- a/vulkan/libvulkan/swapchain.cpp
-+++ b/vulkan/libvulkan/swapchain.cpp
-@@ -144,6 +144,7 @@ namespace vulkan {
- VKAPI_ATTR
- VkResult CreateAndroidSurfaceKHR(VkInstance instance,
-                                  ANativeWindow* window,
-+                                 const VkAllocationCallbacks* /*allocator*/,
-                                  VkSurfaceKHR* out_surface) {
-     void* mem = AllocMem(instance, sizeof(Surface), alignof(Surface),
-                          VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
-@@ -171,7 +172,9 @@ VkResult CreateAndroidSurfaceKHR(VkInstance instance,
- }
- 
- VKAPI_ATTR
--void DestroySurfaceKHR(VkInstance instance, VkSurfaceKHR surface_handle) {
-+void DestroySurfaceKHR(VkInstance instance,
-+                       VkSurfaceKHR surface_handle,
-+                       const VkAllocationCallbacks* /*allocator*/) {
-     Surface* surface = SurfaceFromHandle(surface_handle);
-     if (!surface)
-         return;
-@@ -184,8 +187,8 @@ VKAPI_ATTR
- VkResult GetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice /*pdev*/,
-                                             uint32_t /*queue_family*/,
-                                             VkSurfaceKHR /*surface*/,
--                                            VkBool32* pSupported) {
--    *pSupported = VK_TRUE;
-+                                            VkBool32* supported) {
-+    *supported = VK_TRUE;
-     return VK_SUCCESS;
- }
- 
-@@ -296,6 +299,7 @@ VkResult GetPhysicalDeviceSurfacePresentModesKHR(VkPhysicalDevice /*pdev*/,
- VKAPI_ATTR
- VkResult CreateSwapchainKHR(VkDevice device,
-                             const VkSwapchainCreateInfoKHR* create_info,
-+                            const VkAllocationCallbacks* /*allocator*/,
-                             VkSwapchainKHR* swapchain_handle) {
-     int err;
-     VkResult result = VK_SUCCESS;
-@@ -483,7 +487,9 @@ VkResult CreateSwapchainKHR(VkDevice device,
- }
- 
- VKAPI_ATTR
--VkResult DestroySwapchainKHR(VkDevice device, VkSwapchainKHR swapchain_handle) {
-+VkResult DestroySwapchainKHR(VkDevice device,
-+                             VkSwapchainKHR swapchain_handle,
-+                             const VkAllocationCallbacks* /*allocator*/) {
-     const DeviceVtbl& driver_vtbl = GetDriverVtbl(device);
-     Swapchain* swapchain = SwapchainFromHandle(swapchain_handle);
-     const std::shared_ptr<ANativeWindow>& window = swapchain->surface.window;
--- 
-2.6.0.rc2.230.g3dd15c0
-
diff --git a/vulkan/patches/frameworks_native-sdk_0.10/0026-vulkan-Update-from-version-0.205.0-to-0.206.0.patch b/vulkan/patches/frameworks_native-sdk_0.10/0026-vulkan-Update-from-version-0.205.0-to-0.206.0.patch
deleted file mode 100644
index 46cde4f..0000000
--- a/vulkan/patches/frameworks_native-sdk_0.10/0026-vulkan-Update-from-version-0.205.0-to-0.206.0.patch
+++ /dev/null
@@ -1,292 +0,0 @@
-From c7d7dcfffafda197458d6c4afebb486bd64e0d53 Mon Sep 17 00:00:00 2001
-From: Jesse Hall <jessehall@google.com>
-Date: Mon, 30 Nov 2015 14:25:46 -0800
-Subject: [PATCH] vulkan: Update from version 0.205.0 to 0.206.0
-
-Change-Id: I36370f6ec41abf235975a0c769c03c8f25851d14
----
- vulkan/api/vulkan.api          | 14 ++++++++------
- vulkan/include/vulkan/vulkan.h | 40 +++++++++++++++++++++-------------------
- vulkan/libvulkan/Android.mk    |  4 ++++
- vulkan/libvulkan/swapchain.cpp |  7 -------
- vulkan/tools/Android.mk        |  4 ++++
- 5 files changed, 37 insertions(+), 32 deletions(-)
-
-diff --git a/vulkan/api/vulkan.api b/vulkan/api/vulkan.api
-index 1c4bb8f..73f26e0 100644
---- a/vulkan/api/vulkan.api
-+++ b/vulkan/api/vulkan.api
-@@ -27,7 +27,7 @@ import platform "platform.api"
- 
- // API version (major.minor.patch)
- define VERSION_MAJOR 0
--define VERSION_MINOR 205
-+define VERSION_MINOR 206
- define VERSION_PATCH 0
- 
- // API limits
-@@ -1293,7 +1293,7 @@ class VkDeviceQueueCreateInfo {
-     const void*                                 pNext                     /// Pointer to next structure
-     VkDeviceQueueCreateFlags                    flags
-     u32                                         queueFamilyIndex
--    u32                                         queuePriorityCount
-+    u32                                         queueCount
-     const f32*                                  pQueuePriorities
- }
- 
-@@ -1301,8 +1301,8 @@ class VkDeviceCreateInfo {
-     VkStructureType                             sType                      /// Should be VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO
-     const void*                                 pNext                      /// Pointer to next structure
-     VkDeviceCreateFlags                         flags
--    u32                                         requestedQueueRecordCount
--    const VkDeviceQueueCreateInfo*              pRequestedQueues
-+    u32                                         queueCreateInfoCount
-+    const VkDeviceQueueCreateInfo*              pQueueCreateInfos
-     u32                                         enabledLayerNameCount
-     const char* const*                          ppEnabledLayerNames        /// Ordered list of layer names to be enabled
-     u32                                         enabledExtensionNameCount
-@@ -1642,7 +1642,7 @@ class VkShaderModuleCreateInfo {
- class VkDescriptorSetLayoutBinding {
-     u32                                         binding
-     VkDescriptorType                            descriptorType     /// Type of the descriptors in this binding
--    u32                                         arraySize          /// Number of descriptors in this binding
-+    u32                                         descriptorCount    /// Number of descriptors in this binding
-     VkShaderStageFlags                          stageFlags         /// Shader stages this binding is visible to
-     const VkSampler*                            pImmutableSamplers /// Immutable samplers (used if descriptor type is SAMPLER or COMBINED_IMAGE_SAMPLER, is either NULL or contains <count> number of elements)
- }
-@@ -2111,6 +2111,7 @@ class VkPhysicalDeviceLimits {
-     u32                                         maxPerStageDescriptorSampledImages        /// max num of sampled images allowed per-stage in a descriptor set
-     u32                                         maxPerStageDescriptorStorageImages        /// max num of storage images allowed per-stage in a descriptor set
-     u32                                         maxPerStageDescriptorInputAttachments
-+    u32                                         maxPerStageResources
-     u32                                         maxDescriptorSetSamplers                  /// max num of samplers allowed in all stages in a descriptor set
-     u32                                         maxDescriptorSetUniformBuffers            /// max num of uniform buffers allowed in all stages in a descriptor set
-     u32                                         maxDescriptorSetUniformBuffersDynamic     /// max num of dynamic uniform buffers allowed in all stages in a descriptor set
-@@ -2156,7 +2157,7 @@ class VkPhysicalDeviceLimits {
-     u32                                         mipmapPrecisionBits                       /// num bits of mipmap precision
- 
-     u32                                         maxDrawIndexedIndexValue                  /// max index value for indexed draw calls (for 32-bit indices)
--    u32                                         maxDrawIndirectInstanceCount              /// max instance count for indirect draw calls
-+    u32                                         maxDrawIndirectCount
- 
-     f32                                         maxSamplerLodBias                         /// max absolute sampler level of detail bias
-     f32                                         maxSamplerAnisotropy                      /// max degree of sampler anisotropy
-@@ -2212,6 +2213,7 @@ class VkPhysicalDeviceLimits {
- 
-     VkDeviceSize                                optimalBufferCopyOffsetAlignment
-     VkDeviceSize                                optimalBufferCopyRowPitchAlignment
-+    VkDeviceSize                                nonCoherentAtomSize
- }
- 
- class VkPhysicalDeviceSparseProperties {
-diff --git a/vulkan/include/vulkan/vulkan.h b/vulkan/include/vulkan/vulkan.h
-index b342285..ba749a1 100644
---- a/vulkan/include/vulkan/vulkan.h
-+++ b/vulkan/include/vulkan/vulkan.h
-@@ -41,7 +41,7 @@ extern "C" {
-     ((major << 22) | (minor << 12) | patch)
- 
- // Vulkan API version supported by this file
--#define VK_API_VERSION VK_MAKE_VERSION(0, 205, 0)
-+#define VK_API_VERSION VK_MAKE_VERSION(0, 206, 0)
- 
- 
- #define VK_NULL_HANDLE 0
-@@ -125,6 +125,12 @@ typedef enum VkResult {
-     VK_ERROR_INCOMPATIBLE_DRIVER = -9,
-     VK_ERROR_TOO_MANY_OBJECTS = -10,
-     VK_ERROR_FORMAT_NOT_SUPPORTED = -11,
-+    VK_ERROR_SURFACE_LOST_KHR = 0xC0000400,
-+    VK_SUBOPTIMAL_KHR = 0x40000403,
-+    VK_ERROR_OUT_OF_DATE_KHR = 0xC0000804,
-+    VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = 0xC0001002,
-+    VK_ERROR_INVALID_ANDROID_WINDOW_KHR = 0xC0002400,
-+    VK_ERROR_ANDROID_WINDOW_IN_USE_KHR = 0xC0002401,
-     VK_RESULT_BEGIN_RANGE = VK_ERROR_FORMAT_NOT_SUPPORTED,
-     VK_RESULT_END_RANGE = VK_INCOMPLETE,
-     VK_RESULT_RANGE_SIZE = (VK_INCOMPLETE - VK_ERROR_FORMAT_NOT_SUPPORTED + 1),
-@@ -180,6 +186,12 @@ typedef enum VkStructureType {
-     VK_STRUCTURE_TYPE_MEMORY_BARRIER = 45,
-     VK_STRUCTURE_TYPE_LAYER_INSTANCE_CREATE_INFO = 46,
-     VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO = 47,
-+    VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 0xC0000800,
-+    VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 0xC0000801,
-+    VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 0xC0000C00,
-+    VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 0xC0000C01,
-+    VK_STRUCTURE_TYPE_DISPLAY_SWAPCHAIN_CREATE_INFO_KHR = 0xC0001000,
-+    VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 0xC0001001,
-     VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO,
-     VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO,
-     VK_STRUCTURE_TYPE_RANGE_SIZE = (VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1),
-@@ -447,6 +459,7 @@ typedef enum VkImageLayout {
-     VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6,
-     VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7,
-     VK_IMAGE_LAYOUT_PREINITIALIZED = 8,
-+    VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 0xC0000802,
-     VK_IMAGE_LAYOUT_BEGIN_RANGE = VK_IMAGE_LAYOUT_UNDEFINED,
-     VK_IMAGE_LAYOUT_END_RANGE = VK_IMAGE_LAYOUT_PREINITIALIZED,
-     VK_IMAGE_LAYOUT_RANGE_SIZE = (VK_IMAGE_LAYOUT_PREINITIALIZED - VK_IMAGE_LAYOUT_UNDEFINED + 1),
-@@ -1204,6 +1217,7 @@ typedef struct VkPhysicalDeviceLimits {
-     uint32_t                                    maxPerStageDescriptorSampledImages;
-     uint32_t                                    maxPerStageDescriptorStorageImages;
-     uint32_t                                    maxPerStageDescriptorInputAttachments;
-+    uint32_t                                    maxPerStageResources;
-     uint32_t                                    maxDescriptorSetSamplers;
-     uint32_t                                    maxDescriptorSetUniformBuffers;
-     uint32_t                                    maxDescriptorSetUniformBuffersDynamic;
-@@ -1242,7 +1256,7 @@ typedef struct VkPhysicalDeviceLimits {
-     uint32_t                                    subTexelPrecisionBits;
-     uint32_t                                    mipmapPrecisionBits;
-     uint32_t                                    maxDrawIndexedIndexValue;
--    uint32_t                                    maxDrawIndirectInstanceCount;
-+    uint32_t                                    maxDrawIndirectCount;
-     float                                       maxSamplerLodBias;
-     float                                       maxSamplerAnisotropy;
-     uint32_t                                    maxViewports;
-@@ -1287,6 +1301,7 @@ typedef struct VkPhysicalDeviceLimits {
-     VkBool32                                    standardSampleLocations;
-     VkDeviceSize                                optimalBufferCopyOffsetAlignment;
-     VkDeviceSize                                optimalBufferCopyRowPitchAlignment;
-+    VkDeviceSize                                nonCoherentAtomSize;
- } VkPhysicalDeviceLimits;
- 
- typedef struct VkPhysicalDeviceSparseProperties {
-@@ -1338,7 +1353,7 @@ typedef struct VkDeviceQueueCreateInfo {
-     const void*                                 pNext;
-     VkDeviceQueueCreateFlags                    flags;
-     uint32_t                                    queueFamilyIndex;
--    uint32_t                                    queuePriorityCount;
-+    uint32_t                                    queueCount;
-     const float*                                pQueuePriorities;
- } VkDeviceQueueCreateInfo;
- 
-@@ -1346,8 +1361,8 @@ typedef struct VkDeviceCreateInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     VkDeviceCreateFlags                         flags;
--    uint32_t                                    requestedQueueCount;
--    const VkDeviceQueueCreateInfo*              pRequestedQueues;
-+    uint32_t                                    queueCreateInfoCount;
-+    const VkDeviceQueueCreateInfo*              pQueueCreateInfos;
-     uint32_t                                    enabledLayerNameCount;
-     const char*const*                           ppEnabledLayerNames;
-     uint32_t                                    enabledExtensionNameCount;
-@@ -1839,7 +1854,7 @@ typedef struct VkSamplerCreateInfo {
- typedef struct VkDescriptorSetLayoutBinding {
-     uint32_t                                    binding;
-     VkDescriptorType                            descriptorType;
--    uint32_t                                    arraySize;
-+    uint32_t                                    descriptorCount;
-     VkShaderStageFlags                          stageFlags;
-     const VkSampler*                            pImmutableSamplers;
- } VkDescriptorSetLayoutBinding;
-@@ -3071,7 +3086,6 @@ VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR)
- #define VK_KHR_SURFACE_REVISION           23
- #define VK_KHR_SURFACE_EXTENSION_NUMBER   1
- #define VK_KHR_SURFACE_EXTENSION_NAME     "VK_KHR_surface"
--#define VK_ERROR_SURFACE_LOST_KHR         ((VkResult)(int)0xc0000400)
- 
- 
- typedef enum VkSurfaceTransformKHR {
-@@ -3192,11 +3206,6 @@ VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSwapchainKHR)
- #define VK_KHR_SWAPCHAIN_REVISION         66
- #define VK_KHR_SWAPCHAIN_EXTENSION_NUMBER 2
- #define VK_KHR_SWAPCHAIN_EXTENSION_NAME   "VK_KHR_swapchain"
--#define VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR ((VkStructureType)(int)0xc0000800)
--#define VK_STRUCTURE_TYPE_PRESENT_INFO_KHR ((VkStructureType)(int)0xc0000801)
--#define VK_IMAGE_LAYOUT_PRESENT_SRC_KHR   ((VkImageLayout)(int)0xc0000802)
--#define VK_SUBOPTIMAL_KHR                 ((VkResult)(int)0x40000403)
--#define VK_ERROR_OUT_OF_DATE_KHR          ((VkResult)(int)0xc0000804)
- 
- typedef struct VkSwapchainCreateInfoKHR {
-     VkStructureType                             sType;
-@@ -3274,8 +3283,6 @@ VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayModeKHR)
- #define VK_KHR_DISPLAY_REVISION           19
- #define VK_KHR_DISPLAY_EXTENSION_NUMBER   3
- #define VK_KHR_DISPLAY_EXTENSION_NAME     "VK_KHR_display"
--#define VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR ((VkStructureType)(int)0xc0000c00)
--#define VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR ((VkStructureType)(int)0xc0000c01)
- 
- 
- typedef enum VkDisplayPlaneAlphaFlagBitsKHR {
-@@ -3395,9 +3402,6 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayPlaneSurfaceKHR(
- #define VK_KHR_DISPLAY_SWAPCHAIN_REVISION 8
- #define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NUMBER 4
- #define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME "VK_KHR_display_swapchain"
--#define VK_STRUCTURE_TYPE_DISPLAY_SWAPCHAIN_CREATE_INFO_KHR ((VkStructureType)(int)0xc0001000)
--#define VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR ((VkStructureType)(int)0xc0001001)
--#define VK_ERROR_INCOMPATIBLE_DISPLAY_KHR ((VkResult)(int)0xc0001002)
- 
- typedef struct VkDisplaySwapchainCreateInfoKHR {
-     VkStructureType                             sType;
-@@ -3528,8 +3532,6 @@ VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceMirPresentationSupportKHR(
- #define VK_KHR_ANDROID_SURFACE_REVISION   3
- #define VK_KHR_ANDROID_SURFACE_EXTENSION_NUMBER 9
- #define VK_KHR_ANDROID_SURFACE_EXTENSION_NAME "VK_KHR_android_surface"
--#define VK_ERROR_INVALID_ANDROID_WINDOW_KHR ((VkResult)(int)0xc0002400)
--#define VK_ERROR_ANDROID_WINDOW_IN_USE_KHR ((VkResult)(int)0xc0002401)
- 
- typedef VkResult (VKAPI_PTR *PFN_vkCreateAndroidSurfaceKHR)(VkInstance instance, ANativeWindow* window, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
- 
-diff --git a/vulkan/libvulkan/Android.mk b/vulkan/libvulkan/Android.mk
-index 7a2eb64..2f809c2 100644
---- a/vulkan/libvulkan/Android.mk
-+++ b/vulkan/libvulkan/Android.mk
-@@ -25,6 +25,10 @@ LOCAL_CPPFLAGS := -std=c++1y \
- 	-Wno-c99-extensions \
- 	-Wno-zero-length-array
- 
-+# TODO(jessehall): Very temporary, until VkResult values are defined as signed integers
-+# rather than unsigned hex values.
-+LOCAL_CFLAGS += -Wno-error=format
-+
- LOCAL_C_INCLUDES := \
- 	frameworks/native/vulkan/include \
- 	system/core/libsync/include
-diff --git a/vulkan/libvulkan/swapchain.cpp b/vulkan/libvulkan/swapchain.cpp
-index ee15878..ff02b35 100644
---- a/vulkan/libvulkan/swapchain.cpp
-+++ b/vulkan/libvulkan/swapchain.cpp
-@@ -569,10 +569,7 @@ VkResult AcquireNextImageKHR(VkDevice device,
-     if (idx == swapchain.num_images) {
-         ALOGE("dequeueBuffer returned unrecognized buffer");
-         window->cancelBuffer(window, buffer, fence);
--#pragma clang diagnostic push
--#pragma clang diagnostic ignored "-Wold-style-cast"
-         return VK_ERROR_OUT_OF_DATE_KHR;
--#pragma clang diagnostic pop
-     }
- 
-     int fence_clone = -1;
-@@ -616,13 +613,9 @@ VkResult AcquireNextImageKHR(VkDevice device,
- 
- VKAPI_ATTR
- VkResult QueuePresentKHR(VkQueue queue, VkPresentInfoKHR* present_info) {
--#pragma clang diagnostic push
--#pragma clang diagnostic ignored "-Wold-style-cast"
--#pragma clang diagnostic ignored "-Wsign-conversion"
-     ALOGV_IF(present_info->sType != VK_STRUCTURE_TYPE_PRESENT_INFO_KHR,
-              "vkQueuePresentKHR: invalid VkPresentInfoKHR structure type %d",
-              present_info->sType);
--#pragma clang diagnostic pop
-     ALOGV_IF(present_info->pNext, "VkPresentInfo::pNext != NULL");
- 
-     const DeviceVtbl& driver_vtbl = GetDriverVtbl(queue);
-diff --git a/vulkan/tools/Android.mk b/vulkan/tools/Android.mk
-index 31d6089..2c2309f 100644
---- a/vulkan/tools/Android.mk
-+++ b/vulkan/tools/Android.mk
-@@ -23,6 +23,10 @@ LOCAL_CPPFLAGS := -std=c++1y \
- 	-Wno-c++98-compat-pedantic \
- 	-Wno-c99-extensions
- 
-+# TODO(jessehall): Very temporary, until VkResult values are defined as signed integers
-+# rather than unsigned hex values.
-+LOCAL_CFLAGS += -Wno-error=format
-+
- LOCAL_C_INCLUDES := \
- 	frameworks/native/vulkan/include
- 
--- 
-2.6.0.rc2.230.g3dd15c0
-
diff --git a/vulkan/patches/frameworks_native-sdk_0.10/0027-vulkan-Update-from-version-0.206.0-to-0.209.0.patch b/vulkan/patches/frameworks_native-sdk_0.10/0027-vulkan-Update-from-version-0.206.0-to-0.209.0.patch
deleted file mode 100644
index 878a79e..0000000
--- a/vulkan/patches/frameworks_native-sdk_0.10/0027-vulkan-Update-from-version-0.206.0-to-0.209.0.patch
+++ /dev/null
@@ -1,1441 +0,0 @@
-From 91b3c3599ea5095388c4bdeb14f09529f3fbb9cc Mon Sep 17 00:00:00 2001
-From: Jesse Hall <jessehall@google.com>
-Date: Mon, 30 Nov 2015 16:04:55 -0800
-Subject: [PATCH] vulkan: Update from version 0.206.0 to 0.209.0
-
-Change-Id: Ieaf1c4c01f3376cde407bef193a9aa33e77ca123
----
- vulkan/api/vulkan.api          | 459 +++++++++++++++++++++--------------------
- vulkan/include/vulkan/vulkan.h | 437 ++++++++++++++++++++-------------------
- vulkan/libvulkan/entry.cpp     |   6 +-
- vulkan/libvulkan/loader.h      |   2 +-
- vulkan/libvulkan/swapchain.cpp |  16 +-
- 5 files changed, 469 insertions(+), 451 deletions(-)
-
-diff --git a/vulkan/api/vulkan.api b/vulkan/api/vulkan.api
-index 73f26e0..d35e11d 100644
---- a/vulkan/api/vulkan.api
-+++ b/vulkan/api/vulkan.api
-@@ -27,7 +27,7 @@ import platform "platform.api"
- 
- // API version (major.minor.patch)
- define VERSION_MAJOR 0
--define VERSION_MINOR 206
-+define VERSION_MINOR 209
- define VERSION_PATCH 0
- 
- // API limits
-@@ -45,15 +45,15 @@ define VK_FALSE       0
- // API keyword, but needs special handling by some templates
- define NULL_HANDLE 0
- 
--@extension("VK_KHR_surface") define VK_KHR_SURFACE_REVISION                     23
-+@extension("VK_KHR_surface") define VK_KHR_SURFACE_REVISION                     24
- @extension("VK_KHR_surface") define VK_KHR_SURFACE_EXTENSION_NUMBER             1
- @extension("VK_KHR_surface") define VK_KHR_SURFACE_EXTENSION_NAME               "VK_KHR_surface"
- 
--@extension("VK_KHR_swapchain") define VK_KHR_SWAPCHAIN_REVISION                 66
-+@extension("VK_KHR_swapchain") define VK_KHR_SWAPCHAIN_REVISION                 67
- @extension("VK_KHR_swapchain") define VK_KHR_SWAPCHAIN_EXTENSION_NUMBER         2
- @extension("VK_KHR_swapchain") define VK_KHR_SWAPCHAIN_EXTENSION_NAME           "VK_KHR_swapchain"
- 
--@extension("VK_KHR_display") define VK_KHR_DISPLAY_REVISION                     19
-+@extension("VK_KHR_display") define VK_KHR_DISPLAY_REVISION                     21
- @extension("VK_KHR_display") define VK_KHR_DISPLAY_EXTENSION_NUMBER             3
- @extension("VK_KHR_display") define VK_KHR_DISPLAY_EXTENSION_NAME               "VK_KHR_display"
- 
-@@ -77,7 +77,7 @@ define NULL_HANDLE 0
- @extension("VK_KHR_mir_surface") define VK_KHR_MIR_SURFACE_NUMBER               8
- @extension("VK_KHR_mir_surface") define VK_KHR_MIR_SURFACE_NAME                 "VK_KHR_mir_surface"
- 
--@extension("VK_KHR_android_surface") define VK_KHR_ANDROID_SURFACE_REVISION     3
-+@extension("VK_KHR_android_surface") define VK_KHR_ANDROID_SURFACE_REVISION     4
- @extension("VK_KHR_android_surface") define VK_KHR_ANDROID_SURFACE_NUMBER       8
- @extension("VK_KHR_android_surface") define VK_KHR_ANDROID_SURFACE_NAME         "VK_KHR_android_surface"
- 
-@@ -384,180 +384,191 @@ enum VkVertexInputRate {
- 
- /// Vulkan format definitions
- enum VkFormat {
--    VK_FORMAT_UNDEFINED                                     = 0x00000000,
--    VK_FORMAT_R4G4_UNORM                                    = 0x00000001,
--    VK_FORMAT_R4G4_USCALED                                  = 0x00000002,
--    VK_FORMAT_R4G4B4A4_UNORM                                = 0x00000003,
--    VK_FORMAT_R4G4B4A4_USCALED                              = 0x00000004,
--    VK_FORMAT_R5G6B5_UNORM                                  = 0x00000005,
--    VK_FORMAT_R5G6B5_USCALED                                = 0x00000006,
--    VK_FORMAT_R5G5B5A1_UNORM                                = 0x00000007,
--    VK_FORMAT_R5G5B5A1_USCALED                              = 0x00000008,
--    VK_FORMAT_R8_UNORM                                      = 0x00000009,
--    VK_FORMAT_R8_SNORM                                      = 0x0000000A,
--    VK_FORMAT_R8_USCALED                                    = 0x0000000B,
--    VK_FORMAT_R8_SSCALED                                    = 0x0000000C,
--    VK_FORMAT_R8_UINT                                       = 0x0000000D,
--    VK_FORMAT_R8_SINT                                       = 0x0000000E,
--    VK_FORMAT_R8_SRGB                                       = 0x0000000F,
--    VK_FORMAT_R8G8_UNORM                                    = 0x00000010,
--    VK_FORMAT_R8G8_SNORM                                    = 0x00000011,
--    VK_FORMAT_R8G8_USCALED                                  = 0x00000012,
--    VK_FORMAT_R8G8_SSCALED                                  = 0x00000013,
--    VK_FORMAT_R8G8_UINT                                     = 0x00000014,
--    VK_FORMAT_R8G8_SINT                                     = 0x00000015,
--    VK_FORMAT_R8G8_SRGB                                     = 0x00000016,
--    VK_FORMAT_R8G8B8_UNORM                                  = 0x00000017,
--    VK_FORMAT_R8G8B8_SNORM                                  = 0x00000018,
--    VK_FORMAT_R8G8B8_USCALED                                = 0x00000019,
--    VK_FORMAT_R8G8B8_SSCALED                                = 0x0000001A,
--    VK_FORMAT_R8G8B8_UINT                                   = 0x0000001B,
--    VK_FORMAT_R8G8B8_SINT                                   = 0x0000001C,
--    VK_FORMAT_R8G8B8_SRGB                                   = 0x0000001D,
--    VK_FORMAT_R8G8B8A8_UNORM                                = 0x0000001E,
--    VK_FORMAT_R8G8B8A8_SNORM                                = 0x0000001F,
--    VK_FORMAT_R8G8B8A8_USCALED                              = 0x00000020,
--    VK_FORMAT_R8G8B8A8_SSCALED                              = 0x00000021,
--    VK_FORMAT_R8G8B8A8_UINT                                 = 0x00000022,
--    VK_FORMAT_R8G8B8A8_SINT                                 = 0x00000023,
--    VK_FORMAT_R8G8B8A8_SRGB                                 = 0x00000024,
--    VK_FORMAT_R10G10B10A2_UNORM                             = 0x00000025,
--    VK_FORMAT_R10G10B10A2_SNORM                             = 0x00000026,
--    VK_FORMAT_R10G10B10A2_USCALED                           = 0x00000027,
--    VK_FORMAT_R10G10B10A2_SSCALED                           = 0x00000028,
--    VK_FORMAT_R10G10B10A2_UINT                              = 0x00000029,
--    VK_FORMAT_R10G10B10A2_SINT                              = 0x0000002A,
--    VK_FORMAT_R16_UNORM                                     = 0x0000002B,
--    VK_FORMAT_R16_SNORM                                     = 0x0000002C,
--    VK_FORMAT_R16_USCALED                                   = 0x0000002D,
--    VK_FORMAT_R16_SSCALED                                   = 0x0000002E,
--    VK_FORMAT_R16_UINT                                      = 0x0000002F,
--    VK_FORMAT_R16_SINT                                      = 0x00000030,
--    VK_FORMAT_R16_SFLOAT                                    = 0x00000031,
--    VK_FORMAT_R16G16_UNORM                                  = 0x00000032,
--    VK_FORMAT_R16G16_SNORM                                  = 0x00000033,
--    VK_FORMAT_R16G16_USCALED                                = 0x00000034,
--    VK_FORMAT_R16G16_SSCALED                                = 0x00000035,
--    VK_FORMAT_R16G16_UINT                                   = 0x00000036,
--    VK_FORMAT_R16G16_SINT                                   = 0x00000037,
--    VK_FORMAT_R16G16_SFLOAT                                 = 0x00000038,
--    VK_FORMAT_R16G16B16_UNORM                               = 0x00000039,
--    VK_FORMAT_R16G16B16_SNORM                               = 0x0000003A,
--    VK_FORMAT_R16G16B16_USCALED                             = 0x0000003B,
--    VK_FORMAT_R16G16B16_SSCALED                             = 0x0000003C,
--    VK_FORMAT_R16G16B16_UINT                                = 0x0000003D,
--    VK_FORMAT_R16G16B16_SINT                                = 0x0000003E,
--    VK_FORMAT_R16G16B16_SFLOAT                              = 0x0000003F,
--    VK_FORMAT_R16G16B16A16_UNORM                            = 0x00000040,
--    VK_FORMAT_R16G16B16A16_SNORM                            = 0x00000041,
--    VK_FORMAT_R16G16B16A16_USCALED                          = 0x00000042,
--    VK_FORMAT_R16G16B16A16_SSCALED                          = 0x00000043,
--    VK_FORMAT_R16G16B16A16_UINT                             = 0x00000044,
--    VK_FORMAT_R16G16B16A16_SINT                             = 0x00000045,
--    VK_FORMAT_R16G16B16A16_SFLOAT                           = 0x00000046,
--    VK_FORMAT_R32_UINT                                      = 0x00000047,
--    VK_FORMAT_R32_SINT                                      = 0x00000048,
--    VK_FORMAT_R32_SFLOAT                                    = 0x00000049,
--    VK_FORMAT_R32G32_UINT                                   = 0x0000004A,
--    VK_FORMAT_R32G32_SINT                                   = 0x0000004B,
--    VK_FORMAT_R32G32_SFLOAT                                 = 0x0000004C,
--    VK_FORMAT_R32G32B32_UINT                                = 0x0000004D,
--    VK_FORMAT_R32G32B32_SINT                                = 0x0000004E,
--    VK_FORMAT_R32G32B32_SFLOAT                              = 0x0000004F,
--    VK_FORMAT_R32G32B32A32_UINT                             = 0x00000050,
--    VK_FORMAT_R32G32B32A32_SINT                             = 0x00000051,
--    VK_FORMAT_R32G32B32A32_SFLOAT                           = 0x00000052,
--    VK_FORMAT_R64_SFLOAT                                    = 0x00000053,
--    VK_FORMAT_R64G64_SFLOAT                                 = 0x00000054,
--    VK_FORMAT_R64G64B64_SFLOAT                              = 0x00000055,
--    VK_FORMAT_R64G64B64A64_SFLOAT                           = 0x00000056,
--    VK_FORMAT_R11G11B10_UFLOAT                              = 0x00000057,
--    VK_FORMAT_R9G9B9E5_UFLOAT                               = 0x00000058,
--    VK_FORMAT_D16_UNORM                                     = 0x00000059,
--    VK_FORMAT_D24_UNORM_X8                                  = 0x0000005A,
--    VK_FORMAT_D32_SFLOAT                                    = 0x0000005B,
--    VK_FORMAT_S8_UINT                                       = 0x0000005C,
--    VK_FORMAT_D16_UNORM_S8_UINT                             = 0x0000005D,
--    VK_FORMAT_D24_UNORM_S8_UINT                             = 0x0000005E,
--    VK_FORMAT_D32_SFLOAT_S8_UINT                            = 0x0000005F,
--    VK_FORMAT_BC1_RGB_UNORM                                 = 0x00000060,
--    VK_FORMAT_BC1_RGB_SRGB                                  = 0x00000061,
--    VK_FORMAT_BC1_RGBA_UNORM                                = 0x00000062,
--    VK_FORMAT_BC1_RGBA_SRGB                                 = 0x00000063,
--    VK_FORMAT_BC2_UNORM                                     = 0x00000064,
--    VK_FORMAT_BC2_SRGB                                      = 0x00000065,
--    VK_FORMAT_BC3_UNORM                                     = 0x00000066,
--    VK_FORMAT_BC3_SRGB                                      = 0x00000067,
--    VK_FORMAT_BC4_UNORM                                     = 0x00000068,
--    VK_FORMAT_BC4_SNORM                                     = 0x00000069,
--    VK_FORMAT_BC5_UNORM                                     = 0x0000006A,
--    VK_FORMAT_BC5_SNORM                                     = 0x0000006B,
--    VK_FORMAT_BC6H_UFLOAT                                   = 0x0000006C,
--    VK_FORMAT_BC6H_SFLOAT                                   = 0x0000006D,
--    VK_FORMAT_BC7_UNORM                                     = 0x0000006E,
--    VK_FORMAT_BC7_SRGB                                      = 0x0000006F,
--    VK_FORMAT_ETC2_R8G8B8_UNORM                             = 0x00000070,
--    VK_FORMAT_ETC2_R8G8B8_SRGB                              = 0x00000071,
--    VK_FORMAT_ETC2_R8G8B8A1_UNORM                           = 0x00000072,
--    VK_FORMAT_ETC2_R8G8B8A1_SRGB                            = 0x00000073,
--    VK_FORMAT_ETC2_R8G8B8A8_UNORM                           = 0x00000074,
--    VK_FORMAT_ETC2_R8G8B8A8_SRGB                            = 0x00000075,
--    VK_FORMAT_EAC_R11_UNORM                                 = 0x00000076,
--    VK_FORMAT_EAC_R11_SNORM                                 = 0x00000077,
--    VK_FORMAT_EAC_R11G11_UNORM                              = 0x00000078,
--    VK_FORMAT_EAC_R11G11_SNORM                              = 0x00000079,
--    VK_FORMAT_ASTC_4x4_UNORM                                = 0x0000007A,
--    VK_FORMAT_ASTC_4x4_SRGB                                 = 0x0000007B,
--    VK_FORMAT_ASTC_5x4_UNORM                                = 0x0000007C,
--    VK_FORMAT_ASTC_5x4_SRGB                                 = 0x0000007D,
--    VK_FORMAT_ASTC_5x5_UNORM                                = 0x0000007E,
--    VK_FORMAT_ASTC_5x5_SRGB                                 = 0x0000007F,
--    VK_FORMAT_ASTC_6x5_UNORM                                = 0x00000080,
--    VK_FORMAT_ASTC_6x5_SRGB                                 = 0x00000081,
--    VK_FORMAT_ASTC_6x6_UNORM                                = 0x00000082,
--    VK_FORMAT_ASTC_6x6_SRGB                                 = 0x00000083,
--    VK_FORMAT_ASTC_8x5_UNORM                                = 0x00000084,
--    VK_FORMAT_ASTC_8x5_SRGB                                 = 0x00000085,
--    VK_FORMAT_ASTC_8x6_UNORM                                = 0x00000086,
--    VK_FORMAT_ASTC_8x6_SRGB                                 = 0x00000087,
--    VK_FORMAT_ASTC_8x8_UNORM                                = 0x00000088,
--    VK_FORMAT_ASTC_8x8_SRGB                                 = 0x00000089,
--    VK_FORMAT_ASTC_10x5_UNORM                               = 0x0000008A,
--    VK_FORMAT_ASTC_10x5_SRGB                                = 0x0000008B,
--    VK_FORMAT_ASTC_10x6_UNORM                               = 0x0000008C,
--    VK_FORMAT_ASTC_10x6_SRGB                                = 0x0000008D,
--    VK_FORMAT_ASTC_10x8_UNORM                               = 0x0000008E,
--    VK_FORMAT_ASTC_10x8_SRGB                                = 0x0000008F,
--    VK_FORMAT_ASTC_10x10_UNORM                              = 0x00000090,
--    VK_FORMAT_ASTC_10x10_SRGB                               = 0x00000091,
--    VK_FORMAT_ASTC_12x10_UNORM                              = 0x00000092,
--    VK_FORMAT_ASTC_12x10_SRGB                               = 0x00000093,
--    VK_FORMAT_ASTC_12x12_UNORM                              = 0x00000094,
--    VK_FORMAT_ASTC_12x12_SRGB                               = 0x00000095,
--    VK_FORMAT_B4G4R4A4_UNORM                                = 0x00000096,
--    VK_FORMAT_B5G5R5A1_UNORM                                = 0x00000097,
--    VK_FORMAT_B5G6R5_UNORM                                  = 0x00000098,
--    VK_FORMAT_B5G6R5_USCALED                                = 0x00000099,
--    VK_FORMAT_B8G8R8_UNORM                                  = 0x0000009A,
--    VK_FORMAT_B8G8R8_SNORM                                  = 0x0000009B,
--    VK_FORMAT_B8G8R8_USCALED                                = 0x0000009C,
--    VK_FORMAT_B8G8R8_SSCALED                                = 0x0000009D,
--    VK_FORMAT_B8G8R8_UINT                                   = 0x0000009E,
--    VK_FORMAT_B8G8R8_SINT                                   = 0x0000009F,
--    VK_FORMAT_B8G8R8_SRGB                                   = 0x000000A0,
--    VK_FORMAT_B8G8R8A8_UNORM                                = 0x000000A1,
--    VK_FORMAT_B8G8R8A8_SNORM                                = 0x000000A2,
--    VK_FORMAT_B8G8R8A8_USCALED                              = 0x000000A3,
--    VK_FORMAT_B8G8R8A8_SSCALED                              = 0x000000A4,
--    VK_FORMAT_B8G8R8A8_UINT                                 = 0x000000A5,
--    VK_FORMAT_B8G8R8A8_SINT                                 = 0x000000A6,
--    VK_FORMAT_B8G8R8A8_SRGB                                 = 0x000000A7,
--    VK_FORMAT_B10G10R10A2_UNORM                             = 0x000000A8,
--    VK_FORMAT_B10G10R10A2_SNORM                             = 0x000000A9,
--    VK_FORMAT_B10G10R10A2_USCALED                           = 0x000000AA,
--    VK_FORMAT_B10G10R10A2_SSCALED                           = 0x000000AB,
--    VK_FORMAT_B10G10R10A2_UINT                              = 0x000000AC,
--    VK_FORMAT_B10G10R10A2_SINT                              = 0x000000AD,
-+    VK_FORMAT_UNDEFINED                                     = 0,
-+    VK_FORMAT_R4G4_UNORM_PACK8                              = 1,
-+    VK_FORMAT_R4G4B4A4_UNORM_PACK16                         = 2,
-+    VK_FORMAT_B4G4R4A4_UNORM_PACK16                         = 3,
-+    VK_FORMAT_R5G6B5_UNORM_PACK16                           = 4,
-+    VK_FORMAT_B5G6R5_UNORM_PACK16                           = 5,
-+    VK_FORMAT_R5G5B5A1_UNORM_PACK16                         = 6,
-+    VK_FORMAT_B5G5R5A1_UNORM_PACK16                         = 7,
-+    VK_FORMAT_A1R5G5B5_UNORM_PACK16                         = 8,
-+    VK_FORMAT_R8_UNORM                                      = 9,
-+    VK_FORMAT_R8_SNORM                                      = 10,
-+    VK_FORMAT_R8_USCALED                                    = 11,
-+    VK_FORMAT_R8_SSCALED                                    = 12,
-+    VK_FORMAT_R8_UINT                                       = 13,
-+    VK_FORMAT_R8_SINT                                       = 14,
-+    VK_FORMAT_R8_SRGB                                       = 15,
-+    VK_FORMAT_R8G8_UNORM                                    = 16,
-+    VK_FORMAT_R8G8_SNORM                                    = 17,
-+    VK_FORMAT_R8G8_USCALED                                  = 18,
-+    VK_FORMAT_R8G8_SSCALED                                  = 19,
-+    VK_FORMAT_R8G8_UINT                                     = 20,
-+    VK_FORMAT_R8G8_SINT                                     = 21,
-+    VK_FORMAT_R8G8_SRGB                                     = 22,
-+    VK_FORMAT_R8G8B8_UNORM                                  = 23,
-+    VK_FORMAT_R8G8B8_SNORM                                  = 24,
-+    VK_FORMAT_R8G8B8_USCALED                                = 25,
-+    VK_FORMAT_R8G8B8_SSCALED                                = 26,
-+    VK_FORMAT_R8G8B8_UINT                                   = 27,
-+    VK_FORMAT_R8G8B8_SINT                                   = 28,
-+    VK_FORMAT_R8G8B8_SRGB                                   = 29,
-+    VK_FORMAT_B8G8R8_UNORM                                  = 30,
-+    VK_FORMAT_B8G8R8_SNORM                                  = 31,
-+    VK_FORMAT_B8G8R8_USCALED                                = 32,
-+    VK_FORMAT_B8G8R8_SSCALED                                = 33,
-+    VK_FORMAT_B8G8R8_UINT                                   = 34,
-+    VK_FORMAT_B8G8R8_SINT                                   = 35,
-+    VK_FORMAT_B8G8R8_SRGB                                   = 36,
-+    VK_FORMAT_R8G8B8A8_UNORM                                = 37,
-+    VK_FORMAT_R8G8B8A8_SNORM                                = 38,
-+    VK_FORMAT_R8G8B8A8_USCALED                              = 39,
-+    VK_FORMAT_R8G8B8A8_SSCALED                              = 40,
-+    VK_FORMAT_R8G8B8A8_UINT                                 = 41,
-+    VK_FORMAT_R8G8B8A8_SINT                                 = 42,
-+    VK_FORMAT_R8G8B8A8_SRGB                                 = 43,
-+    VK_FORMAT_B8G8R8A8_UNORM                                = 44,
-+    VK_FORMAT_B8G8R8A8_SNORM                                = 45,
-+    VK_FORMAT_B8G8R8A8_USCALED                              = 46,
-+    VK_FORMAT_B8G8R8A8_SSCALED                              = 47,
-+    VK_FORMAT_B8G8R8A8_UINT                                 = 48,
-+    VK_FORMAT_B8G8R8A8_SINT                                 = 49,
-+    VK_FORMAT_B8G8R8A8_SRGB                                 = 50,
-+    VK_FORMAT_A8B8G8R8_UNORM_PACK32                         = 51,
-+    VK_FORMAT_A8B8G8R8_SNORM_PACK32                         = 52,
-+    VK_FORMAT_A8B8G8R8_USCALED_PACK32                       = 53,
-+    VK_FORMAT_A8B8G8R8_SSCALED_PACK32                       = 54,
-+    VK_FORMAT_A8B8G8R8_UINT_PACK32                          = 55,
-+    VK_FORMAT_A8B8G8R8_SINT_PACK32                          = 56,
-+    VK_FORMAT_A8B8G8R8_SRGB_PACK32                          = 57,
-+    VK_FORMAT_A2R10G10B10_UNORM_PACK32                      = 58,
-+    VK_FORMAT_A2R10G10B10_SNORM_PACK32                      = 59,
-+    VK_FORMAT_A2R10G10B10_USCALED_PACK32                    = 60,
-+    VK_FORMAT_A2R10G10B10_SSCALED_PACK32                    = 61,
-+    VK_FORMAT_A2R10G10B10_UINT_PACK32                       = 62,
-+    VK_FORMAT_A2R10G10B10_SINT_PACK32                       = 63,
-+    VK_FORMAT_A2B10G10R10_UNORM_PACK32                      = 64,
-+    VK_FORMAT_A2B10G10R10_SNORM_PACK32                      = 65,
-+    VK_FORMAT_A2B10G10R10_USCALED_PACK32                    = 66,
-+    VK_FORMAT_A2B10G10R10_SSCALED_PACK32                    = 67,
-+    VK_FORMAT_A2B10G10R10_UINT_PACK32                       = 68,
-+    VK_FORMAT_A2B10G10R10_SINT_PACK32                       = 69,
-+    VK_FORMAT_R16_UNORM                                     = 70,
-+    VK_FORMAT_R16_SNORM                                     = 71,
-+    VK_FORMAT_R16_USCALED                                   = 72,
-+    VK_FORMAT_R16_SSCALED                                   = 73,
-+    VK_FORMAT_R16_UINT                                      = 74,
-+    VK_FORMAT_R16_SINT                                      = 75,
-+    VK_FORMAT_R16_SFLOAT                                    = 76,
-+    VK_FORMAT_R16G16_UNORM                                  = 77,
-+    VK_FORMAT_R16G16_SNORM                                  = 78,
-+    VK_FORMAT_R16G16_USCALED                                = 79,
-+    VK_FORMAT_R16G16_SSCALED                                = 80,
-+    VK_FORMAT_R16G16_UINT                                   = 81,
-+    VK_FORMAT_R16G16_SINT                                   = 82,
-+    VK_FORMAT_R16G16_SFLOAT                                 = 83,
-+    VK_FORMAT_R16G16B16_UNORM                               = 84,
-+    VK_FORMAT_R16G16B16_SNORM                               = 85,
-+    VK_FORMAT_R16G16B16_USCALED                             = 86,
-+    VK_FORMAT_R16G16B16_SSCALED                             = 87,
-+    VK_FORMAT_R16G16B16_UINT                                = 88,
-+    VK_FORMAT_R16G16B16_SINT                                = 89,
-+    VK_FORMAT_R16G16B16_SFLOAT                              = 90,
-+    VK_FORMAT_R16G16B16A16_UNORM                            = 91,
-+    VK_FORMAT_R16G16B16A16_SNORM                            = 92,
-+    VK_FORMAT_R16G16B16A16_USCALED                          = 93,
-+    VK_FORMAT_R16G16B16A16_SSCALED                          = 94,
-+    VK_FORMAT_R16G16B16A16_UINT                             = 95,
-+    VK_FORMAT_R16G16B16A16_SINT                             = 96,
-+    VK_FORMAT_R16G16B16A16_SFLOAT                           = 97,
-+    VK_FORMAT_R32_UINT                                      = 98,
-+    VK_FORMAT_R32_SINT                                      = 99,
-+    VK_FORMAT_R32_SFLOAT                                    = 100,
-+    VK_FORMAT_R32G32_UINT                                   = 101,
-+    VK_FORMAT_R32G32_SINT                                   = 102,
-+    VK_FORMAT_R32G32_SFLOAT                                 = 103,
-+    VK_FORMAT_R32G32B32_UINT                                = 104,
-+    VK_FORMAT_R32G32B32_SINT                                = 105,
-+    VK_FORMAT_R32G32B32_SFLOAT                              = 106,
-+    VK_FORMAT_R32G32B32A32_UINT                             = 107,
-+    VK_FORMAT_R32G32B32A32_SINT                             = 108,
-+    VK_FORMAT_R32G32B32A32_SFLOAT                           = 109,
-+    VK_FORMAT_R64_UINT                                      = 110,
-+    VK_FORMAT_R64_SINT                                      = 111,
-+    VK_FORMAT_R64_SFLOAT                                    = 112,
-+    VK_FORMAT_R64G64_UINT                                   = 113,
-+    VK_FORMAT_R64G64_SINT                                   = 114,
-+    VK_FORMAT_R64G64_SFLOAT                                 = 115,
-+    VK_FORMAT_R64G64B64_UINT                                = 116,
-+    VK_FORMAT_R64G64B64_SINT                                = 117,
-+    VK_FORMAT_R64G64B64_SFLOAT                              = 118,
-+    VK_FORMAT_R64G64B64A64_UINT                             = 119,
-+    VK_FORMAT_R64G64B64A64_SINT                             = 120,
-+    VK_FORMAT_R64G64B64A64_SFLOAT                           = 121,
-+    VK_FORMAT_B10G11R11_UFLOAT_PACK32                       = 122,
-+    VK_FORMAT_E5B9G9R9_UFLOAT_PACK32                        = 123,
-+    VK_FORMAT_D16_UNORM                                     = 124,
-+    VK_FORMAT_X8_D24_UNORM_PACK32                           = 125,
-+    VK_FORMAT_D32_SFLOAT                                    = 126,
-+    VK_FORMAT_S8_UINT                                       = 127,
-+    VK_FORMAT_D16_UNORM_S8_UINT                             = 128,
-+    VK_FORMAT_D24_UNORM_S8_UINT                             = 129,
-+    VK_FORMAT_D32_SFLOAT_S8_UINT                            = 130,
-+    VK_FORMAT_BC1_RGB_UNORM_BLOCK                           = 131,
-+    VK_FORMAT_BC1_RGB_SRGB_BLOCK                            = 132,
-+    VK_FORMAT_BC1_RGBA_UNORM_BLOCK                          = 133,
-+    VK_FORMAT_BC1_RGBA_SRGB_BLOCK                           = 134,
-+    VK_FORMAT_BC2_UNORM_BLOCK                               = 135,
-+    VK_FORMAT_BC2_SRGB_BLOCK                                = 136,
-+    VK_FORMAT_BC3_UNORM_BLOCK                               = 137,
-+    VK_FORMAT_BC3_SRGB_BLOCK                                = 138,
-+    VK_FORMAT_BC4_UNORM_BLOCK                               = 139,
-+    VK_FORMAT_BC4_SNORM_BLOCK                               = 140,
-+    VK_FORMAT_BC5_UNORM_BLOCK                               = 141,
-+    VK_FORMAT_BC5_SNORM_BLOCK                               = 142,
-+    VK_FORMAT_BC6H_UFLOAT_BLOCK                             = 143,
-+    VK_FORMAT_BC6H_SFLOAT_BLOCK                             = 144,
-+    VK_FORMAT_BC7_UNORM_BLOCK                               = 145,
-+    VK_FORMAT_BC7_SRGB_BLOCK                                = 146,
-+    VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK                       = 147,
-+    VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK                        = 148,
-+    VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK                     = 149,
-+    VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK                      = 150,
-+    VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK                     = 151,
-+    VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK                      = 152,
-+    VK_FORMAT_EAC_R11_UNORM_BLOCK                           = 153,
-+    VK_FORMAT_EAC_R11_SNORM_BLOCK                           = 154,
-+    VK_FORMAT_EAC_R11G11_UNORM_BLOCK                        = 155,
-+    VK_FORMAT_EAC_R11G11_SNORM_BLOCK                        = 156,
-+    VK_FORMAT_ASTC_4x4_UNORM_BLOCK                          = 157,
-+    VK_FORMAT_ASTC_4x4_SRGB_BLOCK                           = 158,
-+    VK_FORMAT_ASTC_5x4_UNORM_BLOCK                          = 159,
-+    VK_FORMAT_ASTC_5x4_SRGB_BLOCK                           = 160,
-+    VK_FORMAT_ASTC_5x5_UNORM_BLOCK                          = 161,
-+    VK_FORMAT_ASTC_5x5_SRGB_BLOCK                           = 162,
-+    VK_FORMAT_ASTC_6x5_UNORM_BLOCK                          = 163,
-+    VK_FORMAT_ASTC_6x5_SRGB_BLOCK                           = 164,
-+    VK_FORMAT_ASTC_6x6_UNORM_BLOCK                          = 165,
-+    VK_FORMAT_ASTC_6x6_SRGB_BLOCK                           = 166,
-+    VK_FORMAT_ASTC_8x5_UNORM_BLOCK                          = 167,
-+    VK_FORMAT_ASTC_8x5_SRGB_BLOCK                           = 168,
-+    VK_FORMAT_ASTC_8x6_UNORM_BLOCK                          = 169,
-+    VK_FORMAT_ASTC_8x6_SRGB_BLOCK                           = 170,
-+    VK_FORMAT_ASTC_8x8_UNORM_BLOCK                          = 171,
-+    VK_FORMAT_ASTC_8x8_SRGB_BLOCK                           = 172,
-+    VK_FORMAT_ASTC_10x5_UNORM_BLOCK                         = 173,
-+    VK_FORMAT_ASTC_10x5_SRGB_BLOCK                          = 174,
-+    VK_FORMAT_ASTC_10x6_UNORM_BLOCK                         = 175,
-+    VK_FORMAT_ASTC_10x6_SRGB_BLOCK                          = 176,
-+    VK_FORMAT_ASTC_10x8_UNORM_BLOCK                         = 177,
-+    VK_FORMAT_ASTC_10x8_SRGB_BLOCK                          = 178,
-+    VK_FORMAT_ASTC_10x10_UNORM_BLOCK                        = 179,
-+    VK_FORMAT_ASTC_10x10_SRGB_BLOCK                         = 180,
-+    VK_FORMAT_ASTC_12x10_UNORM_BLOCK                        = 181,
-+    VK_FORMAT_ASTC_12x10_SRGB_BLOCK                         = 182,
-+    VK_FORMAT_ASTC_12x12_UNORM_BLOCK                        = 183,
-+    VK_FORMAT_ASTC_12x12_SRGB_BLOCK                         = 184,
- }
- 
- /// Structure type enumerant
-@@ -567,7 +578,7 @@ enum VkStructureType {
-     VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO                  = 2,
-     VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO                        = 3,
-     VK_STRUCTURE_TYPE_SUBMIT_INFO                               = 4,
--    VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO                         = 5,
-+    VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO                      = 5,
-     VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE                       = 6,
-     VK_STRUCTURE_TYPE_BIND_SPARSE_INFO                          = 7,
-     VK_STRUCTURE_TYPE_FENCE_CREATE_INFO                         = 8,
-@@ -596,20 +607,20 @@ enum VkStructureType {
-     VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO                       = 31,
-     VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO         = 32,
-     VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO               = 33,
--    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOC_INFO                 = 34,
-+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO              = 34,
-     VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET                      = 35,
-     VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET                       = 36,
-     VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO                   = 37,
-     VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO                   = 38,
-     VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO                  = 39,
--    VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOC_INFO                 = 40,
-+    VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO              = 40,
-     VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO                 = 41,
-     VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO                    = 42,
-     VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER                     = 43,
-     VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER                      = 44,
-     VK_STRUCTURE_TYPE_MEMORY_BARRIER                            = 45,
--    VK_STRUCTURE_TYPE_LAYER_INSTANCE_CREATE_INFO                = 46,
--    VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO                  = 47,
-+    VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO               = 46,
-+    VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO                 = 47,
- 
-     //@extension("VK_KHR_swapchain")
-     VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR                 = 0xc0000801,
-@@ -665,8 +676,7 @@ enum VkResult {
-     VK_ERROR_INCOMPATIBLE_DISPLAY_KHR                       = 0xC0001002,
- 
-     //@extension("VK_KHR_android_surface")
--    VK_ERROR_INVALID_ANDROID_WINDOW_KHR                     = 0xC002400,
--    VK_ERROR_ANDROID_WINDOW_IN_USE_KHR                      = 0xC002401,
-+    VK_ERROR_NATIVE_WINDOW_IN_USE_KHR                       = 0xC0002400,
- }
- 
- enum VkDynamicState {
-@@ -681,19 +691,6 @@ enum VkDynamicState {
-     VK_DYNAMIC_STATE_STENCIL_REFERENCE                      = 0x00000008,
- }
- 
--@extension("VK_KHR_surface")
--enum VkSurfaceTransformKHR {
--    VK_SURFACE_TRANSFORM_NONE_KHR                           = 0x00000000,
--    VK_SURFACE_TRANSFORM_ROT90_KHR                          = 0x00000001,
--    VK_SURFACE_TRANSFORM_ROT180_KHR                         = 0x00000002,
--    VK_SURFACE_TRANSFORM_ROT270_KHR                         = 0x00000003,
--    VK_SURFACE_TRANSFORM_HMIRROR_KHR                        = 0x00000004,
--    VK_SURFACE_TRANSFORM_HMIRROR_ROT90_KHR                  = 0x00000005,
--    VK_SURFACE_TRANSFORM_HMIRROR_ROT180_KHR                 = 0x00000006,
--    VK_SURFACE_TRANSFORM_HMIRROR_ROT270_KHR                 = 0x00000007,
--    VK_SURFACE_TRANSFORM_INHERIT_KHR                        = 0x00000008,
--}
--
- @extension("VK_KHR_swapchain")
- enum VkPresentModeKHR {
-     VK_PRESENT_MODE_IMMEDIATE_KHR                           = 0x00000000,
-@@ -1171,15 +1168,28 @@ bitfield VkCompositeAlphaFlagBitsKHR {
-     VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR                      = 0x00000008,
- }
- 
-+@extension("VK_KHR_swapchain")
-+type VkFlags VkSwapchainCreateFlagsKHR
-+//@extension("VK_KHR_swapchain")
-+//bitfield VkSwapchainCreateFlagBitsKHR {
-+//}
-+
- @extension("VK_KHR_display")
- type VkFlags VkDisplayPlaneAlphaFlagsKHR
- @extension("VK_KHR_display")
- bitfield VkDisplayPlaneAlphaFlagBitsKHR {
--    VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR                   = 0x00000001,
--    VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR                = 0x00000002,
--    VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR  = 0x00000004,
-+    VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR                   = 0x00000001,
-+    VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR                   = 0x00000002,
-+    VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR                = 0x00000004,
-+    VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR  = 0x00000008,
- }
- 
-+@extension("VK_KHR_display")
-+type VkFlags VkDisplaySurfaceCreateFlagsKHR
-+//@extension("VK_KHR_display")
-+//bitfield VkDisplaySurfaceCreateFlagBitsKHR {
-+//}
-+
- 
- //////////////////
- //  Structures  //
-@@ -1336,7 +1346,7 @@ class VkPhysicalDeviceMemoryProperties {
- }
- 
- class VkMemoryAllocateInfo {
--    VkStructureType                             sType                      /// Must be VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO
-+    VkStructureType                             sType                      /// Must be VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO
-     const void*                                 pNext                      /// Pointer to next structure
-     VkDeviceSize                                allocationSize             /// Size of memory allocation
-     u32                                         memoryTypeIndex            /// Index of the of the memory type to allocate from
-@@ -1670,7 +1680,7 @@ class VkDescriptorPoolCreateInfo {
- }
- 
- class VkDescriptorSetAllocateInfo {
--    VkStructureType                             sType              /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOC_INFO
-+    VkStructureType                             sType              /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO
-     const void*                                 pNext              /// Pointer to next structure
-     VkDescriptorPool                            descriptorPool
-     u32                                         setCount
-@@ -1915,7 +1925,7 @@ class VkCommandPoolCreateInfo {
- }
- 
- class VkCommandBufferAllocateInfo {
--    VkStructureType                             sType      /// Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOC_INFO
-+    VkStructureType                             sType      /// Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO
-     const void*                                 pNext      /// Pointer to next structure
-     VkCommandPool                               commandPool
-     VkCommandBufferLevel                        level
-@@ -1929,6 +1939,9 @@ class VkCommandBufferBeginInfo {
-     VkRenderPass                                renderPass  /// Render pass for secondary command buffers
-     u32                                         subpass
-     VkFramebuffer                               framebuffer /// Framebuffer for secondary command buffers
-+    VkBool32                                    occlusionQueryEnable
-+    VkQueryControlFlags                         queryFlags
-+    VkQueryPipelineStatisticFlags               pipelineStatistics
- }
- 
- class VkRenderPassBeginInfo {
-@@ -2279,10 +2292,10 @@ class VkSurfaceCapabilitiesKHR {
-     VkExtent2D                                  currentExtent
-     VkExtent2D                                  minImageExtent
-     VkExtent2D                                  maxImageExtent
-+    u32                                         maxImageArrayLayers
-     VkSurfaceTransformFlagsKHR                  supportedTransforms
--    VkSurfaceTransformKHR                       currentTransform
-+    VkSurfaceTransformFlagBitsKHR               currentTransform
-     VkCompositeAlphaFlagsKHR                    supportedCompositeAlpha
--    u32                                         maxImageArraySize
-     VkImageUsageFlags                           supportedUsageFlags
- }
- 
-@@ -2296,21 +2309,22 @@ class VkSurfaceFormatKHR {
- class VkSwapchainCreateInfoKHR {
-     VkStructureType                             sType
-     const void*                                 pNext
-+    VkSwapchainCreateFlagsKHR                   flags
-     VkSurfaceKHR                                surface
-     u32                                         minImageCount
-     VkFormat                                    imageFormat
-     VkColorSpaceKHR                             imageColorSpace
-     VkExtent2D                                  imageExtent
--    VkImageUsageFlags                           imageUsageFlags
--    VkSurfaceTransformKHR                       preTransform
--    VkCompositeAlphaFlagBitsKHR                 compositeAlpha
--    u32                                         imageArraySize
-+    u32                                         imageArrayLayers
-+    VkImageUsageFlags                           imageUsage
-     VkSharingMode                               sharingMode
-     u32                                         queueFamilyIndexCount
-     const u32*                                  pQueueFamilyIndices
-+    VkSurfaceTransformFlagBitsKHR               preTransform
-+    VkCompositeAlphaFlagBitsKHR                 compositeAlpha
-     VkPresentModeKHR                            presentMode
--    VkSwapchainKHR                              oldSwapchain
-     VkBool32                                    clipped
-+    VkSwapchainKHR                              oldSwapchain
- }
- 
- @extension("VK_KHR_swapchain")
-@@ -2321,7 +2335,7 @@ class VkPresentInfoKHR {
-     const VkSemaphore*                          pWaitSemaphores
-     u32                                         swapchainCount
-     const VkSwapchainKHR*                       pSwapchains
--    const u32*                                  imageIndices
-+    const u32*                                  pImageIndices
-     VkResult*                                   pResults
- }
- 
-@@ -2378,13 +2392,14 @@ class VkDisplayPlaneCapabilitiesKHR {
- class VkDisplaySurfaceCreateInfoKHR {
-     VkStructureType                             sType
-     const void*                                 pNext
-+    VkDisplaySurfaceCreateFlagsKHR              flags
-     VkDisplayModeKHR                            displayMode
-     u32                                         planeIndex
-     u32                                         planeStackIndex
--    VkSurfaceTransformKHR                       transform
-+    VkSurfaceTransformFlagBitsKHR               transform
-     f32                                         globalAlpha
--    VkDisplayPlaneAlphaFlagsKHR                 alphaMode
--    VkExtent2D                                  imageSize
-+    VkDisplayPlaneAlphaFlagBitsKHR              alphaMode
-+    VkExtent2D                                  imageExtent
- }
- 
- @extension("VK_KHR_display_swapchain")
-@@ -2767,7 +2782,7 @@ cmd VkResult vkAllocateMemory(
-         const VkMemoryAllocateInfo*                 pAllocateInfo,
-         const VkAllocationCallbacks*                pAllocator,
-         VkDeviceMemory*                             pMemory) {
--    assert(pAllocateInfo.sType == VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO)
-+    assert(pAllocateInfo.sType == VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO)
-     deviceObject := GetDevice(device)
- 
-     memory := ?
-@@ -3830,7 +3845,7 @@ cmd VkResult vkAllocateCommandBuffers(
-         VkDevice                                    device,
-         const VkCommandBufferAllocateInfo*          pAllocateInfo,
-         VkCommandBuffer*                            pCommandBuffers) {
--    assert(pAllocateInfo[0].sType == VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOC_INFO)
-+    assert(pAllocateInfo[0].sType == VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO)
- 
-     count := pAllocateInfo[0].bufferCount
-     commandBuffers := pCommandBuffers[0:count]
-@@ -4545,7 +4560,7 @@ cmd void vkCmdPushConstants(
-         VkShaderStageFlags                          stageFlags,
-         u32                                         offset,
-         u32                                         size,
--        const void*                                 values) {
-+        const void*                                 pValues) {
-     commandBufferObject := GetCommandBuffer(commandBuffer)
-     layoutObject := GetPipelineLayout(layout)
-     assert(commandBufferObject.device == layoutObject.device)
-@@ -4738,7 +4753,7 @@ cmd VkResult vkAcquireNextImageKHR(
- @extension("VK_KHR_swapchain")
- cmd VkResult vkQueuePresentKHR(
-         VkQueue                                  queue,
--        VkPresentInfoKHR*                        pPresentInfo) {
-+        const VkPresentInfoKHR*                  pPresentInfo) {
-     queueObject := GetQueue(queue)
- 
-     presentInfo := ?
-@@ -4768,8 +4783,8 @@ cmd VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
- @extension("VK_KHR_display")
- cmd VkResult vkGetDisplayPlaneSupportedDisplaysKHR(
-         VkPhysicalDevice                        physicalDevice,
--        u32*                                    pPropertyCount,
--        VkDisplayKHR*                           pProperties) {
-+        u32*                                    pDisplayCount,
-+        VkDisplayKHR*                           pDisplays) {
-     physicalDeviceObject := GetPhysicalDevice(physicalDevice)
-     return ?
- }
-diff --git a/vulkan/include/vulkan/vulkan.h b/vulkan/include/vulkan/vulkan.h
-index ba749a1..a255e1f 100644
---- a/vulkan/include/vulkan/vulkan.h
-+++ b/vulkan/include/vulkan/vulkan.h
-@@ -41,11 +41,11 @@ extern "C" {
-     ((major << 22) | (minor << 12) | patch)
- 
- // Vulkan API version supported by this file
--#define VK_API_VERSION VK_MAKE_VERSION(0, 206, 0)
-+#define VK_API_VERSION VK_MAKE_VERSION(0, 209, 0)
- 
- 
- #define VK_NULL_HANDLE 0
--
-+        
- 
- 
- #define VK_DEFINE_HANDLE(object) typedef struct object##_T* object;
-@@ -56,7 +56,7 @@ extern "C" {
- #else
-         #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;
- #endif
--
-+        
- 
- 
- typedef uint32_t VkFlags;
-@@ -129,8 +129,7 @@ typedef enum VkResult {
-     VK_SUBOPTIMAL_KHR = 0x40000403,
-     VK_ERROR_OUT_OF_DATE_KHR = 0xC0000804,
-     VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = 0xC0001002,
--    VK_ERROR_INVALID_ANDROID_WINDOW_KHR = 0xC0002400,
--    VK_ERROR_ANDROID_WINDOW_IN_USE_KHR = 0xC0002401,
-+    VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = 0xC0002400,
-     VK_RESULT_BEGIN_RANGE = VK_ERROR_FORMAT_NOT_SUPPORTED,
-     VK_RESULT_END_RANGE = VK_INCOMPLETE,
-     VK_RESULT_RANGE_SIZE = (VK_INCOMPLETE - VK_ERROR_FORMAT_NOT_SUPPORTED + 1),
-@@ -143,7 +142,7 @@ typedef enum VkStructureType {
-     VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2,
-     VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3,
-     VK_STRUCTURE_TYPE_SUBMIT_INFO = 4,
--    VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO = 5,
-+    VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5,
-     VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6,
-     VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7,
-     VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8,
-@@ -172,20 +171,20 @@ typedef enum VkStructureType {
-     VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31,
-     VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32,
-     VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33,
--    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOC_INFO = 34,
-+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34,
-     VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35,
-     VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36,
-     VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37,
-     VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38,
-     VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39,
--    VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOC_INFO = 40,
-+    VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40,
-     VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 41,
-     VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 42,
-     VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 43,
-     VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 44,
-     VK_STRUCTURE_TYPE_MEMORY_BARRIER = 45,
--    VK_STRUCTURE_TYPE_LAYER_INSTANCE_CREATE_INFO = 46,
--    VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO = 47,
-+    VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 46,
-+    VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 47,
-     VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 0xC0000800,
-     VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 0xC0000801,
-     VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 0xC0000C00,
-@@ -193,8 +192,8 @@ typedef enum VkStructureType {
-     VK_STRUCTURE_TYPE_DISPLAY_SWAPCHAIN_CREATE_INFO_KHR = 0xC0001000,
-     VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 0xC0001001,
-     VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO,
--    VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO,
--    VK_STRUCTURE_TYPE_RANGE_SIZE = (VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1),
-+    VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,
-+    VK_STRUCTURE_TYPE_RANGE_SIZE = (VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1),
-     VK_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF
- } VkStructureType;
- 
-@@ -220,14 +219,14 @@ typedef enum VkInternalAllocationType {
- 
- typedef enum VkFormat {
-     VK_FORMAT_UNDEFINED = 0,
--    VK_FORMAT_R4G4_UNORM = 1,
--    VK_FORMAT_R4G4_USCALED = 2,
--    VK_FORMAT_R4G4B4A4_UNORM = 3,
--    VK_FORMAT_R4G4B4A4_USCALED = 4,
--    VK_FORMAT_R5G6B5_UNORM = 5,
--    VK_FORMAT_R5G6B5_USCALED = 6,
--    VK_FORMAT_R5G5B5A1_UNORM = 7,
--    VK_FORMAT_R5G5B5A1_USCALED = 8,
-+    VK_FORMAT_R4G4_UNORM_PACK8 = 1,
-+    VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2,
-+    VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3,
-+    VK_FORMAT_R5G6B5_UNORM_PACK16 = 4,
-+    VK_FORMAT_B5G6R5_UNORM_PACK16 = 5,
-+    VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6,
-+    VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7,
-+    VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8,
-     VK_FORMAT_R8_UNORM = 9,
-     VK_FORMAT_R8_SNORM = 10,
-     VK_FORMAT_R8_USCALED = 11,
-@@ -249,153 +248,164 @@ typedef enum VkFormat {
-     VK_FORMAT_R8G8B8_UINT = 27,
-     VK_FORMAT_R8G8B8_SINT = 28,
-     VK_FORMAT_R8G8B8_SRGB = 29,
--    VK_FORMAT_R8G8B8A8_UNORM = 30,
--    VK_FORMAT_R8G8B8A8_SNORM = 31,
--    VK_FORMAT_R8G8B8A8_USCALED = 32,
--    VK_FORMAT_R8G8B8A8_SSCALED = 33,
--    VK_FORMAT_R8G8B8A8_UINT = 34,
--    VK_FORMAT_R8G8B8A8_SINT = 35,
--    VK_FORMAT_R8G8B8A8_SRGB = 36,
--    VK_FORMAT_R10G10B10A2_UNORM = 37,
--    VK_FORMAT_R10G10B10A2_SNORM = 38,
--    VK_FORMAT_R10G10B10A2_USCALED = 39,
--    VK_FORMAT_R10G10B10A2_SSCALED = 40,
--    VK_FORMAT_R10G10B10A2_UINT = 41,
--    VK_FORMAT_R10G10B10A2_SINT = 42,
--    VK_FORMAT_R16_UNORM = 43,
--    VK_FORMAT_R16_SNORM = 44,
--    VK_FORMAT_R16_USCALED = 45,
--    VK_FORMAT_R16_SSCALED = 46,
--    VK_FORMAT_R16_UINT = 47,
--    VK_FORMAT_R16_SINT = 48,
--    VK_FORMAT_R16_SFLOAT = 49,
--    VK_FORMAT_R16G16_UNORM = 50,
--    VK_FORMAT_R16G16_SNORM = 51,
--    VK_FORMAT_R16G16_USCALED = 52,
--    VK_FORMAT_R16G16_SSCALED = 53,
--    VK_FORMAT_R16G16_UINT = 54,
--    VK_FORMAT_R16G16_SINT = 55,
--    VK_FORMAT_R16G16_SFLOAT = 56,
--    VK_FORMAT_R16G16B16_UNORM = 57,
--    VK_FORMAT_R16G16B16_SNORM = 58,
--    VK_FORMAT_R16G16B16_USCALED = 59,
--    VK_FORMAT_R16G16B16_SSCALED = 60,
--    VK_FORMAT_R16G16B16_UINT = 61,
--    VK_FORMAT_R16G16B16_SINT = 62,
--    VK_FORMAT_R16G16B16_SFLOAT = 63,
--    VK_FORMAT_R16G16B16A16_UNORM = 64,
--    VK_FORMAT_R16G16B16A16_SNORM = 65,
--    VK_FORMAT_R16G16B16A16_USCALED = 66,
--    VK_FORMAT_R16G16B16A16_SSCALED = 67,
--    VK_FORMAT_R16G16B16A16_UINT = 68,
--    VK_FORMAT_R16G16B16A16_SINT = 69,
--    VK_FORMAT_R16G16B16A16_SFLOAT = 70,
--    VK_FORMAT_R32_UINT = 71,
--    VK_FORMAT_R32_SINT = 72,
--    VK_FORMAT_R32_SFLOAT = 73,
--    VK_FORMAT_R32G32_UINT = 74,
--    VK_FORMAT_R32G32_SINT = 75,
--    VK_FORMAT_R32G32_SFLOAT = 76,
--    VK_FORMAT_R32G32B32_UINT = 77,
--    VK_FORMAT_R32G32B32_SINT = 78,
--    VK_FORMAT_R32G32B32_SFLOAT = 79,
--    VK_FORMAT_R32G32B32A32_UINT = 80,
--    VK_FORMAT_R32G32B32A32_SINT = 81,
--    VK_FORMAT_R32G32B32A32_SFLOAT = 82,
--    VK_FORMAT_R64_SFLOAT = 83,
--    VK_FORMAT_R64G64_SFLOAT = 84,
--    VK_FORMAT_R64G64B64_SFLOAT = 85,
--    VK_FORMAT_R64G64B64A64_SFLOAT = 86,
--    VK_FORMAT_R11G11B10_UFLOAT = 87,
--    VK_FORMAT_R9G9B9E5_UFLOAT = 88,
--    VK_FORMAT_D16_UNORM = 89,
--    VK_FORMAT_D24_UNORM_X8 = 90,
--    VK_FORMAT_D32_SFLOAT = 91,
--    VK_FORMAT_S8_UINT = 92,
--    VK_FORMAT_D16_UNORM_S8_UINT = 93,
--    VK_FORMAT_D24_UNORM_S8_UINT = 94,
--    VK_FORMAT_D32_SFLOAT_S8_UINT = 95,
--    VK_FORMAT_BC1_RGB_UNORM = 96,
--    VK_FORMAT_BC1_RGB_SRGB = 97,
--    VK_FORMAT_BC1_RGBA_UNORM = 98,
--    VK_FORMAT_BC1_RGBA_SRGB = 99,
--    VK_FORMAT_BC2_UNORM = 100,
--    VK_FORMAT_BC2_SRGB = 101,
--    VK_FORMAT_BC3_UNORM = 102,
--    VK_FORMAT_BC3_SRGB = 103,
--    VK_FORMAT_BC4_UNORM = 104,
--    VK_FORMAT_BC4_SNORM = 105,
--    VK_FORMAT_BC5_UNORM = 106,
--    VK_FORMAT_BC5_SNORM = 107,
--    VK_FORMAT_BC6H_UFLOAT = 108,
--    VK_FORMAT_BC6H_SFLOAT = 109,
--    VK_FORMAT_BC7_UNORM = 110,
--    VK_FORMAT_BC7_SRGB = 111,
--    VK_FORMAT_ETC2_R8G8B8_UNORM = 112,
--    VK_FORMAT_ETC2_R8G8B8_SRGB = 113,
--    VK_FORMAT_ETC2_R8G8B8A1_UNORM = 114,
--    VK_FORMAT_ETC2_R8G8B8A1_SRGB = 115,
--    VK_FORMAT_ETC2_R8G8B8A8_UNORM = 116,
--    VK_FORMAT_ETC2_R8G8B8A8_SRGB = 117,
--    VK_FORMAT_EAC_R11_UNORM = 118,
--    VK_FORMAT_EAC_R11_SNORM = 119,
--    VK_FORMAT_EAC_R11G11_UNORM = 120,
--    VK_FORMAT_EAC_R11G11_SNORM = 121,
--    VK_FORMAT_ASTC_4x4_UNORM = 122,
--    VK_FORMAT_ASTC_4x4_SRGB = 123,
--    VK_FORMAT_ASTC_5x4_UNORM = 124,
--    VK_FORMAT_ASTC_5x4_SRGB = 125,
--    VK_FORMAT_ASTC_5x5_UNORM = 126,
--    VK_FORMAT_ASTC_5x5_SRGB = 127,
--    VK_FORMAT_ASTC_6x5_UNORM = 128,
--    VK_FORMAT_ASTC_6x5_SRGB = 129,
--    VK_FORMAT_ASTC_6x6_UNORM = 130,
--    VK_FORMAT_ASTC_6x6_SRGB = 131,
--    VK_FORMAT_ASTC_8x5_UNORM = 132,
--    VK_FORMAT_ASTC_8x5_SRGB = 133,
--    VK_FORMAT_ASTC_8x6_UNORM = 134,
--    VK_FORMAT_ASTC_8x6_SRGB = 135,
--    VK_FORMAT_ASTC_8x8_UNORM = 136,
--    VK_FORMAT_ASTC_8x8_SRGB = 137,
--    VK_FORMAT_ASTC_10x5_UNORM = 138,
--    VK_FORMAT_ASTC_10x5_SRGB = 139,
--    VK_FORMAT_ASTC_10x6_UNORM = 140,
--    VK_FORMAT_ASTC_10x6_SRGB = 141,
--    VK_FORMAT_ASTC_10x8_UNORM = 142,
--    VK_FORMAT_ASTC_10x8_SRGB = 143,
--    VK_FORMAT_ASTC_10x10_UNORM = 144,
--    VK_FORMAT_ASTC_10x10_SRGB = 145,
--    VK_FORMAT_ASTC_12x10_UNORM = 146,
--    VK_FORMAT_ASTC_12x10_SRGB = 147,
--    VK_FORMAT_ASTC_12x12_UNORM = 148,
--    VK_FORMAT_ASTC_12x12_SRGB = 149,
--    VK_FORMAT_B4G4R4A4_UNORM = 150,
--    VK_FORMAT_B5G5R5A1_UNORM = 151,
--    VK_FORMAT_B5G6R5_UNORM = 152,
--    VK_FORMAT_B5G6R5_USCALED = 153,
--    VK_FORMAT_B8G8R8_UNORM = 154,
--    VK_FORMAT_B8G8R8_SNORM = 155,
--    VK_FORMAT_B8G8R8_USCALED = 156,
--    VK_FORMAT_B8G8R8_SSCALED = 157,
--    VK_FORMAT_B8G8R8_UINT = 158,
--    VK_FORMAT_B8G8R8_SINT = 159,
--    VK_FORMAT_B8G8R8_SRGB = 160,
--    VK_FORMAT_B8G8R8A8_UNORM = 161,
--    VK_FORMAT_B8G8R8A8_SNORM = 162,
--    VK_FORMAT_B8G8R8A8_USCALED = 163,
--    VK_FORMAT_B8G8R8A8_SSCALED = 164,
--    VK_FORMAT_B8G8R8A8_UINT = 165,
--    VK_FORMAT_B8G8R8A8_SINT = 166,
--    VK_FORMAT_B8G8R8A8_SRGB = 167,
--    VK_FORMAT_B10G10R10A2_UNORM = 168,
--    VK_FORMAT_B10G10R10A2_SNORM = 169,
--    VK_FORMAT_B10G10R10A2_USCALED = 170,
--    VK_FORMAT_B10G10R10A2_SSCALED = 171,
--    VK_FORMAT_B10G10R10A2_UINT = 172,
--    VK_FORMAT_B10G10R10A2_SINT = 173,
-+    VK_FORMAT_B8G8R8_UNORM = 30,
-+    VK_FORMAT_B8G8R8_SNORM = 31,
-+    VK_FORMAT_B8G8R8_USCALED = 32,
-+    VK_FORMAT_B8G8R8_SSCALED = 33,
-+    VK_FORMAT_B8G8R8_UINT = 34,
-+    VK_FORMAT_B8G8R8_SINT = 35,
-+    VK_FORMAT_B8G8R8_SRGB = 36,
-+    VK_FORMAT_R8G8B8A8_UNORM = 37,
-+    VK_FORMAT_R8G8B8A8_SNORM = 38,
-+    VK_FORMAT_R8G8B8A8_USCALED = 39,
-+    VK_FORMAT_R8G8B8A8_SSCALED = 40,
-+    VK_FORMAT_R8G8B8A8_UINT = 41,
-+    VK_FORMAT_R8G8B8A8_SINT = 42,
-+    VK_FORMAT_R8G8B8A8_SRGB = 43,
-+    VK_FORMAT_B8G8R8A8_UNORM = 44,
-+    VK_FORMAT_B8G8R8A8_SNORM = 45,
-+    VK_FORMAT_B8G8R8A8_USCALED = 46,
-+    VK_FORMAT_B8G8R8A8_SSCALED = 47,
-+    VK_FORMAT_B8G8R8A8_UINT = 48,
-+    VK_FORMAT_B8G8R8A8_SINT = 49,
-+    VK_FORMAT_B8G8R8A8_SRGB = 50,
-+    VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51,
-+    VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52,
-+    VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53,
-+    VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54,
-+    VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55,
-+    VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56,
-+    VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57,
-+    VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58,
-+    VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59,
-+    VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60,
-+    VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61,
-+    VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62,
-+    VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63,
-+    VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64,
-+    VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65,
-+    VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66,
-+    VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67,
-+    VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68,
-+    VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69,
-+    VK_FORMAT_R16_UNORM = 70,
-+    VK_FORMAT_R16_SNORM = 71,
-+    VK_FORMAT_R16_USCALED = 72,
-+    VK_FORMAT_R16_SSCALED = 73,
-+    VK_FORMAT_R16_UINT = 74,
-+    VK_FORMAT_R16_SINT = 75,
-+    VK_FORMAT_R16_SFLOAT = 76,
-+    VK_FORMAT_R16G16_UNORM = 77,
-+    VK_FORMAT_R16G16_SNORM = 78,
-+    VK_FORMAT_R16G16_USCALED = 79,
-+    VK_FORMAT_R16G16_SSCALED = 80,
-+    VK_FORMAT_R16G16_UINT = 81,
-+    VK_FORMAT_R16G16_SINT = 82,
-+    VK_FORMAT_R16G16_SFLOAT = 83,
-+    VK_FORMAT_R16G16B16_UNORM = 84,
-+    VK_FORMAT_R16G16B16_SNORM = 85,
-+    VK_FORMAT_R16G16B16_USCALED = 86,
-+    VK_FORMAT_R16G16B16_SSCALED = 87,
-+    VK_FORMAT_R16G16B16_UINT = 88,
-+    VK_FORMAT_R16G16B16_SINT = 89,
-+    VK_FORMAT_R16G16B16_SFLOAT = 90,
-+    VK_FORMAT_R16G16B16A16_UNORM = 91,
-+    VK_FORMAT_R16G16B16A16_SNORM = 92,
-+    VK_FORMAT_R16G16B16A16_USCALED = 93,
-+    VK_FORMAT_R16G16B16A16_SSCALED = 94,
-+    VK_FORMAT_R16G16B16A16_UINT = 95,
-+    VK_FORMAT_R16G16B16A16_SINT = 96,
-+    VK_FORMAT_R16G16B16A16_SFLOAT = 97,
-+    VK_FORMAT_R32_UINT = 98,
-+    VK_FORMAT_R32_SINT = 99,
-+    VK_FORMAT_R32_SFLOAT = 100,
-+    VK_FORMAT_R32G32_UINT = 101,
-+    VK_FORMAT_R32G32_SINT = 102,
-+    VK_FORMAT_R32G32_SFLOAT = 103,
-+    VK_FORMAT_R32G32B32_UINT = 104,
-+    VK_FORMAT_R32G32B32_SINT = 105,
-+    VK_FORMAT_R32G32B32_SFLOAT = 106,
-+    VK_FORMAT_R32G32B32A32_UINT = 107,
-+    VK_FORMAT_R32G32B32A32_SINT = 108,
-+    VK_FORMAT_R32G32B32A32_SFLOAT = 109,
-+    VK_FORMAT_R64_UINT = 110,
-+    VK_FORMAT_R64_SINT = 111,
-+    VK_FORMAT_R64_SFLOAT = 112,
-+    VK_FORMAT_R64G64_UINT = 113,
-+    VK_FORMAT_R64G64_SINT = 114,
-+    VK_FORMAT_R64G64_SFLOAT = 115,
-+    VK_FORMAT_R64G64B64_UINT = 116,
-+    VK_FORMAT_R64G64B64_SINT = 117,
-+    VK_FORMAT_R64G64B64_SFLOAT = 118,
-+    VK_FORMAT_R64G64B64A64_UINT = 119,
-+    VK_FORMAT_R64G64B64A64_SINT = 120,
-+    VK_FORMAT_R64G64B64A64_SFLOAT = 121,
-+    VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122,
-+    VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123,
-+    VK_FORMAT_D16_UNORM = 124,
-+    VK_FORMAT_X8_D24_UNORM_PACK32 = 125,
-+    VK_FORMAT_D32_SFLOAT = 126,
-+    VK_FORMAT_S8_UINT = 127,
-+    VK_FORMAT_D16_UNORM_S8_UINT = 128,
-+    VK_FORMAT_D24_UNORM_S8_UINT = 129,
-+    VK_FORMAT_D32_SFLOAT_S8_UINT = 130,
-+    VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131,
-+    VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132,
-+    VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133,
-+    VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134,
-+    VK_FORMAT_BC2_UNORM_BLOCK = 135,
-+    VK_FORMAT_BC2_SRGB_BLOCK = 136,
-+    VK_FORMAT_BC3_UNORM_BLOCK = 137,
-+    VK_FORMAT_BC3_SRGB_BLOCK = 138,
-+    VK_FORMAT_BC4_UNORM_BLOCK = 139,
-+    VK_FORMAT_BC4_SNORM_BLOCK = 140,
-+    VK_FORMAT_BC5_UNORM_BLOCK = 141,
-+    VK_FORMAT_BC5_SNORM_BLOCK = 142,
-+    VK_FORMAT_BC6H_UFLOAT_BLOCK = 143,
-+    VK_FORMAT_BC6H_SFLOAT_BLOCK = 144,
-+    VK_FORMAT_BC7_UNORM_BLOCK = 145,
-+    VK_FORMAT_BC7_SRGB_BLOCK = 146,
-+    VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147,
-+    VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148,
-+    VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149,
-+    VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150,
-+    VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151,
-+    VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152,
-+    VK_FORMAT_EAC_R11_UNORM_BLOCK = 153,
-+    VK_FORMAT_EAC_R11_SNORM_BLOCK = 154,
-+    VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155,
-+    VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156,
-+    VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157,
-+    VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158,
-+    VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159,
-+    VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160,
-+    VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161,
-+    VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162,
-+    VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163,
-+    VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164,
-+    VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165,
-+    VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166,
-+    VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167,
-+    VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168,
-+    VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169,
-+    VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170,
-+    VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171,
-+    VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172,
-+    VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173,
-+    VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174,
-+    VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175,
-+    VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176,
-+    VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177,
-+    VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178,
-+    VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179,
-+    VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180,
-+    VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181,
-+    VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182,
-+    VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183,
-+    VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184,
-     VK_FORMAT_BEGIN_RANGE = VK_FORMAT_UNDEFINED,
--    VK_FORMAT_END_RANGE = VK_FORMAT_B10G10R10A2_SINT,
--    VK_FORMAT_RANGE_SIZE = (VK_FORMAT_B10G10R10A2_SINT - VK_FORMAT_UNDEFINED + 1),
-+    VK_FORMAT_END_RANGE = VK_FORMAT_ASTC_12x12_SRGB_BLOCK,
-+    VK_FORMAT_RANGE_SIZE = (VK_FORMAT_ASTC_12x12_SRGB_BLOCK - VK_FORMAT_UNDEFINED + 1),
-     VK_FORMAT_MAX_ENUM = 0x7FFFFFFF
- } VkFormat;
- 
-@@ -1041,6 +1051,11 @@ typedef enum VkCommandBufferUsageFlagBits {
- } VkCommandBufferUsageFlagBits;
- typedef VkFlags VkCommandBufferUsageFlags;
- 
-+typedef enum VkQueryControlFlagBits {
-+    VK_QUERY_CONTROL_PRECISE_BIT = 0x00000001,
-+} VkQueryControlFlagBits;
-+typedef VkFlags VkQueryControlFlags;
-+
- typedef enum VkCommandBufferResetFlagBits {
-     VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
- } VkCommandBufferResetFlagBits;
-@@ -1054,11 +1069,6 @@ typedef enum VkStencilFaceFlagBits {
- } VkStencilFaceFlagBits;
- typedef VkFlags VkStencilFaceFlags;
- 
--typedef enum VkQueryControlFlagBits {
--    VK_QUERY_CONTROL_PRECISE_BIT = 0x00000001,
--} VkQueryControlFlagBits;
--typedef VkFlags VkQueryControlFlags;
--
- typedef void* (VKAPI_PTR *PFN_vkAllocationFunction)(
-     void*                                       pUserData,
-     size_t                                      size,
-@@ -1106,9 +1116,9 @@ typedef struct VkInstanceCreateInfo {
-     VkInstanceCreateFlags                       flags;
-     const VkApplicationInfo*                    pApplicationInfo;
-     uint32_t                                    enabledLayerNameCount;
--    const char*const*                           ppEnabledLayerNames;
-+    const char* const*                          ppEnabledLayerNames;
-     uint32_t                                    enabledExtensionNameCount;
--    const char*const*                           ppEnabledExtensionNames;
-+    const char* const*                          ppEnabledExtensionNames;
- } VkInstanceCreateInfo;
- 
- typedef struct VkAllocationCallbacks {
-@@ -1364,9 +1374,9 @@ typedef struct VkDeviceCreateInfo {
-     uint32_t                                    queueCreateInfoCount;
-     const VkDeviceQueueCreateInfo*              pQueueCreateInfos;
-     uint32_t                                    enabledLayerNameCount;
--    const char*const*                           ppEnabledLayerNames;
-+    const char* const*                          ppEnabledLayerNames;
-     uint32_t                                    enabledExtensionNameCount;
--    const char*const*                           ppEnabledExtensionNames;
-+    const char* const*                          ppEnabledExtensionNames;
-     const VkPhysicalDeviceFeatures*             pEnabledFeatures;
- } VkDeviceCreateInfo;
- 
-@@ -2012,6 +2022,9 @@ typedef struct VkCommandBufferBeginInfo {
-     VkRenderPass                                renderPass;
-     uint32_t                                    subpass;
-     VkFramebuffer                               framebuffer;
-+    VkBool32                                    occlusionQueryEnable;
-+    VkQueryControlFlags                         queryFlags;
-+    VkQueryPipelineStatisticFlags               pipelineStatistics;
- } VkCommandBufferBeginInfo;
- 
- typedef struct VkBufferCopy {
-@@ -2285,7 +2298,7 @@ typedef void (VKAPI_PTR *PFN_vkCmdEndQuery)(VkCommandBuffer commandBuffer, VkQue
- typedef void (VKAPI_PTR *PFN_vkCmdResetQueryPool)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount);
- typedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t entry);
- typedef void (VKAPI_PTR *PFN_vkCmdCopyQueryPoolResults)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags);
--typedef void (VKAPI_PTR *PFN_vkCmdPushConstants)(VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* values);
-+typedef void (VKAPI_PTR *PFN_vkCmdPushConstants)(VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues);
- typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents);
- typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass)(VkCommandBuffer commandBuffer, VkSubpassContents contents);
- typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass)(VkCommandBuffer commandBuffer);
-@@ -3060,7 +3073,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdPushConstants(
-     VkShaderStageFlags                          stageFlags,
-     uint32_t                                    offset,
-     uint32_t                                    size,
--    const void*                                 values);
-+    const void*                                 pValues);
- 
- VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass(
-     VkCommandBuffer                             commandBuffer,
-@@ -3083,27 +3096,11 @@ VKAPI_ATTR void VKAPI_CALL vkCmdExecuteCommands(
- #define VK_KHR_surface 1
- VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR)
- 
--#define VK_KHR_SURFACE_REVISION           23
-+#define VK_KHR_SURFACE_REVISION           24
- #define VK_KHR_SURFACE_EXTENSION_NUMBER   1
- #define VK_KHR_SURFACE_EXTENSION_NAME     "VK_KHR_surface"
- 
- 
--typedef enum VkSurfaceTransformKHR {
--    VK_SURFACE_TRANSFORM_NONE_KHR = 0,
--    VK_SURFACE_TRANSFORM_ROT90_KHR = 1,
--    VK_SURFACE_TRANSFORM_ROT180_KHR = 2,
--    VK_SURFACE_TRANSFORM_ROT270_KHR = 3,
--    VK_SURFACE_TRANSFORM_HMIRROR_KHR = 4,
--    VK_SURFACE_TRANSFORM_HMIRROR_ROT90_KHR = 5,
--    VK_SURFACE_TRANSFORM_HMIRROR_ROT180_KHR = 6,
--    VK_SURFACE_TRANSFORM_HMIRROR_ROT270_KHR = 7,
--    VK_SURFACE_TRANSFORM_INHERIT_KHR = 8,
--    VK_SURFACE_TRANSFORM_BEGIN_RANGE = VK_SURFACE_TRANSFORM_NONE_KHR,
--    VK_SURFACE_TRANSFORM_END_RANGE = VK_SURFACE_TRANSFORM_INHERIT_KHR,
--    VK_SURFACE_TRANSFORM_RANGE_SIZE = (VK_SURFACE_TRANSFORM_INHERIT_KHR - VK_SURFACE_TRANSFORM_NONE_KHR + 1),
--    VK_SURFACE_TRANSFORM_MAX_ENUM = 0x7FFFFFFF
--} VkSurfaceTransformKHR;
--
- typedef enum VkColorSpaceKHR {
-     VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0,
-     VK_COLORSPACE_BEGIN_RANGE = VK_COLORSPACE_SRGB_NONLINEAR_KHR,
-@@ -3151,10 +3148,10 @@ typedef struct VkSurfaceCapabilitiesKHR {
-     VkExtent2D                                  currentExtent;
-     VkExtent2D                                  minImageExtent;
-     VkExtent2D                                  maxImageExtent;
-+    uint32_t                                    maxImageArrayLayers;
-     VkSurfaceTransformFlagsKHR                  supportedTransforms;
--    VkSurfaceTransformKHR                       currentTransform;
-+    VkSurfaceTransformFlagBitsKHR               currentTransform;
-     VkCompositeAlphaFlagsKHR                    supportedCompositeAlpha;
--    uint32_t                                    maxImageArraySize;
-     VkImageUsageFlags                           supportedUsageFlags;
- } VkSurfaceCapabilitiesKHR;
- 
-@@ -3203,28 +3200,31 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModesKHR(
- #define VK_KHR_swapchain 1
- VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSwapchainKHR)
- 
--#define VK_KHR_SWAPCHAIN_REVISION         66
-+#define VK_KHR_SWAPCHAIN_REVISION         67
- #define VK_KHR_SWAPCHAIN_EXTENSION_NUMBER 2
- #define VK_KHR_SWAPCHAIN_EXTENSION_NAME   "VK_KHR_swapchain"
- 
-+typedef VkFlags VkSwapchainCreateFlagsKHR;
-+
- typedef struct VkSwapchainCreateInfoKHR {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-+    VkSwapchainCreateFlagsKHR                   flags;
-     VkSurfaceKHR                                surface;
-     uint32_t                                    minImageCount;
-     VkFormat                                    imageFormat;
-     VkColorSpaceKHR                             imageColorSpace;
-     VkExtent2D                                  imageExtent;
--    VkImageUsageFlags                           imageUsageFlags;
--    VkSurfaceTransformKHR                       preTransform;
--    VkCompositeAlphaFlagBitsKHR                 compositeAlpha;
--    uint32_t                                    imageArraySize;
--    VkSharingMode                               sharingMode;
-+    uint32_t                                    imageArrayLayers;
-+    VkImageUsageFlags                           imageUsage;
-+    VkSharingMode                               imageSharingMode;
-     uint32_t                                    queueFamilyIndexCount;
-     const uint32_t*                             pQueueFamilyIndices;
-+    VkSurfaceTransformFlagBitsKHR               preTransform;
-+    VkCompositeAlphaFlagBitsKHR                 compositeAlpha;
-     VkPresentModeKHR                            presentMode;
--    VkSwapchainKHR                              oldSwapchain;
-     VkBool32                                    clipped;
-+    VkSwapchainKHR                              oldSwapchain;
- } VkSwapchainCreateInfoKHR;
- 
- typedef struct VkPresentInfoKHR {
-@@ -3234,7 +3234,7 @@ typedef struct VkPresentInfoKHR {
-     const VkSemaphore*                          pWaitSemaphores;
-     uint32_t                                    swapchainCount;
-     const VkSwapchainKHR*                       pSwapchains;
--    const uint32_t*                             imageIndices;
-+    const uint32_t*                             pImageIndices;
-     VkResult*                                   pResults;
- } VkPresentInfoKHR;
- 
-@@ -3243,7 +3243,7 @@ typedef VkResult (VKAPI_PTR *PFN_vkCreateSwapchainKHR)(VkDevice  device, const V
- typedef void (VKAPI_PTR *PFN_vkDestroySwapchainKHR)(VkDevice  device, VkSwapchainKHR  swapchain, const VkAllocationCallbacks* pAllocator);
- typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainImagesKHR)(VkDevice  device, VkSwapchainKHR  swapchain, uint32_t*  pSwapchainImageCount, VkImage*  pSwapchainImages);
- typedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImageKHR)(VkDevice  device, VkSwapchainKHR  swapchain, uint64_t  timeout, VkSemaphore  semaphore, VkFence  fence, uint32_t*  pImageIndex);
--typedef VkResult (VKAPI_PTR *PFN_vkQueuePresentKHR)(VkQueue  queue, VkPresentInfoKHR*  pPresentInfo);
-+typedef VkResult (VKAPI_PTR *PFN_vkQueuePresentKHR)(VkQueue  queue, const VkPresentInfoKHR*  pPresentInfo);
- 
- #ifdef VK_PROTOTYPES
- VKAPI_ATTR VkResult VKAPI_CALL vkCreateSwapchainKHR(
-@@ -3273,24 +3273,26 @@ VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImageKHR(
- 
- VKAPI_ATTR VkResult VKAPI_CALL vkQueuePresentKHR(
-     VkQueue                                      queue,
--    VkPresentInfoKHR*                            pPresentInfo);
-+    const VkPresentInfoKHR*                      pPresentInfo);
- #endif
- 
- #define VK_KHR_display 1
- VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayKHR)
- VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayModeKHR)
- 
--#define VK_KHR_DISPLAY_REVISION           19
-+#define VK_KHR_DISPLAY_REVISION           21
- #define VK_KHR_DISPLAY_EXTENSION_NUMBER   3
- #define VK_KHR_DISPLAY_EXTENSION_NAME     "VK_KHR_display"
- 
- 
- typedef enum VkDisplayPlaneAlphaFlagBitsKHR {
--    VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 0x00000001,
--    VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0x00000002,
--    VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0x00000004,
-+    VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
-+    VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 0x00000002,
-+    VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0x00000004,
-+    VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0x00000008,
- } VkDisplayPlaneAlphaFlagBitsKHR;
- typedef VkFlags VkDisplayPlaneAlphaFlagsKHR;
-+typedef VkFlags VkDisplaySurfaceCreateFlagsKHR;
- 
- typedef struct VkDisplayPropertiesKHR {
-     VkDisplayKHR                                display;
-@@ -3338,19 +3340,20 @@ typedef struct VkDisplayPlanePropertiesKHR {
- typedef struct VkDisplaySurfaceCreateInfoKHR {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-+    VkDisplaySurfaceCreateFlagsKHR              flags;
-     VkDisplayModeKHR                            displayMode;
-     uint32_t                                    planeIndex;
-     uint32_t                                    planeStackIndex;
--    VkSurfaceTransformKHR                       transform;
-+    VkSurfaceTransformFlagBitsKHR               transform;
-     float                                       globalAlpha;
--    VkDisplayPlaneAlphaFlagsKHR                 alphaMode;
--    VkExtent2D                                  imageSize;
-+    VkDisplayPlaneAlphaFlagBitsKHR              alphaMode;
-+    VkExtent2D                                  imageExtent;
- } VkDisplaySurfaceCreateInfoKHR;
- 
- 
- typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPropertiesKHR* pProperties);
- typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties);
--typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneSupportedDisplaysKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayKHR* pProperties);
-+typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneSupportedDisplaysKHR)(VkPhysicalDevice physicalDevice, uint32_t* pDisplayCount, VkDisplayKHR* pDisplays);
- typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModePropertiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModePropertiesKHR* pProperties);
- typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayModeKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR*pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode);
- typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayModeCreateInfoKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities);
-@@ -3369,8 +3372,8 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
- 
- VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneSupportedDisplaysKHR(
-     VkPhysicalDevice                            physicalDevice,
--    uint32_t*                                   pPropertyCount,
--    VkDisplayKHR*                               pProperties);
-+    uint32_t*                                   pDisplayCount,
-+    VkDisplayKHR*                               pDisplays);
- 
- VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayModePropertiesKHR(
-     VkPhysicalDevice                            physicalDevice,
-@@ -3529,7 +3532,7 @@ VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceMirPresentationSupportKHR(
- #define VK_KHR_android_surface 1
- #include <android/native_window.h>
- 
--#define VK_KHR_ANDROID_SURFACE_REVISION   3
-+#define VK_KHR_ANDROID_SURFACE_REVISION   4
- #define VK_KHR_ANDROID_SURFACE_EXTENSION_NUMBER 9
- #define VK_KHR_ANDROID_SURFACE_EXTENSION_NAME "VK_KHR_android_surface"
- 
-diff --git a/vulkan/libvulkan/entry.cpp b/vulkan/libvulkan/entry.cpp
-index 67b8c38..9c0444f 100644
---- a/vulkan/libvulkan/entry.cpp
-+++ b/vulkan/libvulkan/entry.cpp
-@@ -702,8 +702,8 @@ VKAPI_ATTR void vkCmdCopyQueryPoolResults(VkCommandBuffer commandBuffer, VkQuery
- }
- 
- __attribute__((visibility("default")))
--VKAPI_ATTR void vkCmdPushConstants(VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* values) {
--    GetVtbl(commandBuffer).CmdPushConstants(commandBuffer, layout, stageFlags, offset, size, values);
-+VKAPI_ATTR void vkCmdPushConstants(VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues) {
-+    GetVtbl(commandBuffer).CmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues);
- }
- 
- __attribute__((visibility("default")))
-@@ -772,7 +772,7 @@ VKAPI_ATTR VkResult vkAcquireNextImageKHR(VkDevice device, VkSwapchainKHR swapch
- }
- 
- __attribute__((visibility("default")))
--VKAPI_ATTR VkResult vkQueuePresentKHR(VkQueue queue, VkPresentInfoKHR* pPresentInfo) {
-+VKAPI_ATTR VkResult vkQueuePresentKHR(VkQueue queue, const VkPresentInfoKHR* pPresentInfo) {
-     return GetVtbl(queue).QueuePresentKHR(queue, pPresentInfo);
- }
- 
-diff --git a/vulkan/libvulkan/loader.h b/vulkan/libvulkan/loader.h
-index 35d0eaa..1f777fc 100644
---- a/vulkan/libvulkan/loader.h
-+++ b/vulkan/libvulkan/loader.h
-@@ -305,7 +305,7 @@ VKAPI_ATTR VkResult AcquireNextImageKHR(VkDevice device,
-                                         VkSemaphore semaphore,
-                                         uint32_t* image_index);
- VKAPI_ATTR VkResult
--QueuePresentKHR(VkQueue queue, VkPresentInfoKHR* present_info);
-+QueuePresentKHR(VkQueue queue, const VkPresentInfoKHR* present_info);
- 
- }  // namespace vulkan
- 
-diff --git a/vulkan/libvulkan/swapchain.cpp b/vulkan/libvulkan/swapchain.cpp
-index ff02b35..39a581c 100644
---- a/vulkan/libvulkan/swapchain.cpp
-+++ b/vulkan/libvulkan/swapchain.cpp
-@@ -230,9 +230,9 @@ VkResult GetPhysicalDeviceSurfaceCapabilitiesKHR(
-     capabilities->supportedTransforms = VK_SURFACE_TRANSFORM_NONE_BIT_KHR;
- 
-     // TODO(jessehall): Implement based on NATIVE_WINDOW_TRANSFORM_HINT.
--    capabilities->currentTransform = VK_SURFACE_TRANSFORM_NONE_KHR;
-+    capabilities->currentTransform = VK_SURFACE_TRANSFORM_NONE_BIT_KHR;
- 
--    capabilities->maxImageArraySize = 1;
-+    capabilities->maxImageArrayLayers = 1;
- 
-     // TODO(jessehall): I think these are right, but haven't thought hard about
-     // it. Do we need to query the driver for support of any of these?
-@@ -314,7 +314,7 @@ VkResult CreateSwapchainKHR(VkDevice device,
-              "color spaces other than SRGB_NONLINEAR not yet implemented");
-     ALOGE_IF(create_info->oldSwapchain,
-              "swapchain re-creation not yet implemented");
--    ALOGE_IF(create_info->preTransform != VK_SURFACE_TRANSFORM_NONE_KHR,
-+    ALOGE_IF(create_info->preTransform != VK_SURFACE_TRANSFORM_NONE_BIT_KHR,
-              "swapchain preTransform not yet implemented");
-     ALOGE_IF(create_info->presentMode != VK_PRESENT_MODE_FIFO_KHR,
-              "present modes other than FIFO are not yet implemented");
-@@ -371,7 +371,7 @@ VkResult CreateSwapchainKHR(VkDevice device,
-     // TODO(jessehall): Remove conditional once all drivers have been updated
-     if (driver_vtbl.GetSwapchainGrallocUsageANDROID) {
-         result = driver_vtbl.GetSwapchainGrallocUsageANDROID(
--            device, create_info->imageFormat, create_info->imageUsageFlags,
-+            device, create_info->imageFormat, create_info->imageUsage,
-             &gralloc_usage);
-         if (result != VK_SUCCESS) {
-             ALOGE("vkGetSwapchainGrallocUsageANDROID failed: %d", result);
-@@ -418,9 +418,9 @@ VkResult CreateSwapchainKHR(VkDevice device,
-         .arrayLayers = 1,
-         .samples = VK_SAMPLE_COUNT_1_BIT,
-         .tiling = VK_IMAGE_TILING_OPTIMAL,
--        .usage = create_info->imageUsageFlags,
-+        .usage = create_info->imageUsage,
-         .flags = 0,
--        .sharingMode = create_info->sharingMode,
-+        .sharingMode = create_info->imageSharingMode,
-         .queueFamilyIndexCount = create_info->queueFamilyIndexCount,
-         .pQueueFamilyIndices = create_info->pQueueFamilyIndices,
-     };
-@@ -612,7 +612,7 @@ VkResult AcquireNextImageKHR(VkDevice device,
- }
- 
- VKAPI_ATTR
--VkResult QueuePresentKHR(VkQueue queue, VkPresentInfoKHR* present_info) {
-+VkResult QueuePresentKHR(VkQueue queue, const VkPresentInfoKHR* present_info) {
-     ALOGV_IF(present_info->sType != VK_STRUCTURE_TYPE_PRESENT_INFO_KHR,
-              "vkQueuePresentKHR: invalid VkPresentInfoKHR structure type %d",
-              present_info->sType);
-@@ -624,7 +624,7 @@ VkResult QueuePresentKHR(VkQueue queue, VkPresentInfoKHR* present_info) {
-         Swapchain& swapchain =
-             *SwapchainFromHandle(present_info->pSwapchains[sc]);
-         ANativeWindow* window = swapchain.surface.window.get();
--        uint32_t image_idx = present_info->imageIndices[sc];
-+        uint32_t image_idx = present_info->pImageIndices[sc];
-         Swapchain::Image& img = swapchain.images[image_idx];
-         VkResult result;
-         int err;
--- 
-2.6.0.rc2.230.g3dd15c0
-
diff --git a/vulkan/patches/frameworks_native-sdk_0.10/0028-vulkan-Update-from-version-0.209.0-to-0.210.0.patch b/vulkan/patches/frameworks_native-sdk_0.10/0028-vulkan-Update-from-version-0.209.0-to-0.210.0.patch
deleted file mode 100644
index 5fec73d..0000000
--- a/vulkan/patches/frameworks_native-sdk_0.10/0028-vulkan-Update-from-version-0.209.0-to-0.210.0.patch
+++ /dev/null
@@ -1,291 +0,0 @@
-From 5fa30181e473f9055884404545e7345c75440e64 Mon Sep 17 00:00:00 2001
-From: Jesse Hall <jessehall@google.com>
-Date: Mon, 30 Nov 2015 16:22:16 -0800
-Subject: [PATCH] vulkan: Update from version 0.209.0 to 0.210.0
-
-Change-Id: Ic5791cf1193de1e5d2ce355d9dcc4450b0def85a
----
- vulkan/api/vulkan.api                   | 53 +++++++++++++++++++--------------
- vulkan/include/vulkan/vulkan.h          | 45 +++++++++++++++-------------
- vulkan/libvulkan/get_proc_addr.cpp.tmpl | 15 +++++++++-
- 3 files changed, 70 insertions(+), 43 deletions(-)
-
-diff --git a/vulkan/api/vulkan.api b/vulkan/api/vulkan.api
-index d35e11d..243951d 100644
---- a/vulkan/api/vulkan.api
-+++ b/vulkan/api/vulkan.api
-@@ -27,7 +27,7 @@ import platform "platform.api"
- 
- // API version (major.minor.patch)
- define VERSION_MAJOR 0
--define VERSION_MINOR 209
-+define VERSION_MINOR 210
- define VERSION_PATCH 0
- 
- // API limits
-@@ -57,7 +57,7 @@ define NULL_HANDLE 0
- @extension("VK_KHR_display") define VK_KHR_DISPLAY_EXTENSION_NUMBER             3
- @extension("VK_KHR_display") define VK_KHR_DISPLAY_EXTENSION_NAME               "VK_KHR_display"
- 
--@extension("VK_KHR_display_swapchain") define VK_KHR_DISPLAY_SWAPCHAIN_REVISION         8
-+@extension("VK_KHR_display_swapchain") define VK_KHR_DISPLAY_SWAPCHAIN_REVISION         9
- @extension("VK_KHR_display_swapchain") define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NUMBER 4
- @extension("VK_KHR_display_swapchain") define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME   "VK_KHR_display_swapchain"
- 
-@@ -630,8 +630,7 @@ enum VkStructureType {
-     VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR           = 0xc0000c01,
- 
-     //@extension("VK_KHR_display_swapchain")
--    VK_STRUCTURE_TYPE_DISPLAY_SWAPCHAIN_CREATE_INFO_KHR         = 0xc0001000,
--    VK_STRUCTURE_TYPE_DISPLAY_DISPLAY_PRESENT_INFO_KHR          = 0xc0001001,
-+    VK_STRUCTURE_TYPE_DISPLAY_DISPLAY_PRESENT_INFO_KHR          = 0xc0001000,
- }
- 
- enum VkSubpassContents {
-@@ -673,7 +672,7 @@ enum VkResult {
-     VK_ERROR_OUT_OF_DATE_KHR                                = 0xC0000804,
- 
-     //@extension("VK_KHR_display_swapchain")
--    VK_ERROR_INCOMPATIBLE_DISPLAY_KHR                       = 0xC0001002,
-+    VK_ERROR_INCOMPATIBLE_DISPLAY_KHR                       = 0xC0001001,
- 
-     //@extension("VK_KHR_android_surface")
-     VK_ERROR_NATIVE_WINDOW_IN_USE_KHR                       = 0xC0002400,
-@@ -1147,15 +1146,15 @@ bitfield VkCullModeFlagBits {
- type VkFlags VkSurfaceTransformFlagsKHR
- @extension("VK_KHR_swapchain")
- bitfield VkSurfaceTransformFlagBitsKHR {
--    VK_SURFACE_TRANSFORM_NONE_BIT_KHR                       = 0x00000001,
--    VK_SURFACE_TRANSFORM_ROT90_BIT_KHR                      = 0x00000002,
--    VK_SURFACE_TRANSFORM_ROT180_BIT_KHR                     = 0x00000004,
--    VK_SURFACE_TRANSFORM_ROT270_BIT_KHR                     = 0x00000008,
--    VK_SURFACE_TRANSFORM_HMIRROR_BIT_KHR                    = 0x00000010,
--    VK_SURFACE_TRANSFORM_HMIRROR_ROT90_BIT_KHR              = 0x00000020,
--    VK_SURFACE_TRANSFORM_HMIRROR_ROT180_BIT_KHR             = 0x00000040,
--    VK_SURFACE_TRANSFORM_HMIRROR_ROT270_BIT_KHR             = 0x00000080,
--    VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR                    = 0x00000100,
-+    VK_SURFACE_TRANSFORM_NONE_BIT_KHR                           = 0x00000001,
-+    VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR                      = 0x00000002,
-+    VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR                     = 0x00000004,
-+    VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR                     = 0x00000008,
-+    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR              = 0x00000010,
-+    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR    = 0x00000020,
-+    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR   = 0x00000040,
-+    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR   = 0x00000080,
-+    VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR                        = 0x00000100,
- }
- 
- @extension("VK_KHR_swapchain")
-@@ -1190,6 +1189,12 @@ type VkFlags VkDisplaySurfaceCreateFlagsKHR
- //bitfield VkDisplaySurfaceCreateFlagBitsKHR {
- //}
- 
-+@extension("VK_KHR_display")
-+type VkFlags VkDisplayModeCreateFlagsKHR
-+//@extension("VK_KHR_display")
-+//bitfield VkDisplayModeCreateFlagBitsKHR {
-+//}
-+
- 
- //////////////////
- //  Structures  //
-@@ -2366,6 +2371,7 @@ class VkDisplayModePropertiesKHR {
- class VkDisplayModeCreateInfoKHR {
-     VkStructureType                             sType
-     const void*                                 pNext
-+    VkDisplayModeCreateFlagsKHR                 flags
-     VkDisplayModeParametersKHR                  parameters
- }
- 
-@@ -2403,13 +2409,6 @@ class VkDisplaySurfaceCreateInfoKHR {
- }
- 
- @extension("VK_KHR_display_swapchain")
--class VkDisplaySwapchainCreateInfoKHR {
--    VkStructureType                             sType
--    const void*                                 pNext
--    const VkSwapchainCreateInfoKHR*             pNextSwapchainCreateInfo
--}
--
--@extension("VK_KHR_display_swapchain")
- class VkDisplayPresentInfoKHR {
-     VkStructureType                             sType
-     const void*                                 pNext
-@@ -4813,7 +4812,7 @@ cmd VkResult vkCreateDisplayModeKHR(
- @extension("VK_KHR_display")
- cmd VkResult vkGetDisplayPlaneCapabilitiesKHR(
-         VkPhysicalDevice                        physicalDevice,
--        VkDisplayModeCreateInfoKHR              mode,
-+        VkDisplayModeKHR                        mode,
-         u32                                     planeIndex,
-         VkDisplayPlaneCapabilitiesKHR*          pCapabilities) {
-     physicalDeviceObject := GetPhysicalDevice(physicalDevice)
-@@ -4829,6 +4828,16 @@ cmd VkResult vkCreateDisplayPlaneSurfaceKHR(
-     return ?
- }
- 
-+@extension("VK_KHR_display_swapchain")
-+cmd VkResult vkCreateSharedSwapchainsKHR(
-+        VkDevice                                device,
-+        u32                                     swapchainCount,
-+        const VkSwapchainCreateInfoKHR*         pCreateInfos,
-+        const VkAllocationCallbacks*            pAllocator,
-+        VkSwapchainKHR*                         pSwapchains) {
-+    return ?
-+}
-+
- @extension("VK_KHR_xlib_surface")
- cmd VkResult vkCreateXlibSurfaceKHR(
-         VkInstance                              instance,
-diff --git a/vulkan/include/vulkan/vulkan.h b/vulkan/include/vulkan/vulkan.h
-index a255e1f..598d98e 100644
---- a/vulkan/include/vulkan/vulkan.h
-+++ b/vulkan/include/vulkan/vulkan.h
-@@ -41,7 +41,7 @@ extern "C" {
-     ((major << 22) | (minor << 12) | patch)
- 
- // Vulkan API version supported by this file
--#define VK_API_VERSION VK_MAKE_VERSION(0, 209, 0)
-+#define VK_API_VERSION VK_MAKE_VERSION(0, 210, 0)
- 
- 
- #define VK_NULL_HANDLE 0
-@@ -128,7 +128,7 @@ typedef enum VkResult {
-     VK_ERROR_SURFACE_LOST_KHR = 0xC0000400,
-     VK_SUBOPTIMAL_KHR = 0x40000403,
-     VK_ERROR_OUT_OF_DATE_KHR = 0xC0000804,
--    VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = 0xC0001002,
-+    VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = 0xC0001001,
-     VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = 0xC0002400,
-     VK_RESULT_BEGIN_RANGE = VK_ERROR_FORMAT_NOT_SUPPORTED,
-     VK_RESULT_END_RANGE = VK_INCOMPLETE,
-@@ -189,8 +189,7 @@ typedef enum VkStructureType {
-     VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 0xC0000801,
-     VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 0xC0000C00,
-     VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 0xC0000C01,
--    VK_STRUCTURE_TYPE_DISPLAY_SWAPCHAIN_CREATE_INFO_KHR = 0xC0001000,
--    VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 0xC0001001,
-+    VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 0xC0001000,
-     VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO,
-     VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,
-     VK_STRUCTURE_TYPE_RANGE_SIZE = (VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1),
-@@ -3123,13 +3122,13 @@ typedef enum VkPresentModeKHR {
- 
- typedef enum VkSurfaceTransformFlagBitsKHR {
-     VK_SURFACE_TRANSFORM_NONE_BIT_KHR = 0x00000001,
--    VK_SURFACE_TRANSFORM_ROT90_BIT_KHR = 0x00000002,
--    VK_SURFACE_TRANSFORM_ROT180_BIT_KHR = 0x00000004,
--    VK_SURFACE_TRANSFORM_ROT270_BIT_KHR = 0x00000008,
--    VK_SURFACE_TRANSFORM_HMIRROR_BIT_KHR = 0x00000010,
--    VK_SURFACE_TRANSFORM_HMIRROR_ROT90_BIT_KHR = 0x00000020,
--    VK_SURFACE_TRANSFORM_HMIRROR_ROT180_BIT_KHR = 0x00000040,
--    VK_SURFACE_TRANSFORM_HMIRROR_ROT270_BIT_KHR = 0x00000080,
-+    VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 0x00000002,
-+    VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 0x00000004,
-+    VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 0x00000008,
-+    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 0x00000010,
-+    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 0x00000020,
-+    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 0x00000040,
-+    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 0x00000080,
-     VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 0x00000100,
- } VkSurfaceTransformFlagBitsKHR;
- typedef VkFlags VkSurfaceTransformFlagsKHR;
-@@ -3291,6 +3290,7 @@ typedef enum VkDisplayPlaneAlphaFlagBitsKHR {
-     VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0x00000004,
-     VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0x00000008,
- } VkDisplayPlaneAlphaFlagBitsKHR;
-+typedef VkFlags VkDisplayModeCreateFlagsKHR;
- typedef VkFlags VkDisplayPlaneAlphaFlagsKHR;
- typedef VkFlags VkDisplaySurfaceCreateFlagsKHR;
- 
-@@ -3317,6 +3317,7 @@ typedef struct VkDisplayModePropertiesKHR {
- typedef struct VkDisplayModeCreateInfoKHR {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-+    VkDisplayModeCreateFlagsKHR                 flags;
-     VkDisplayModeParametersKHR                  parameters;
- } VkDisplayModeCreateInfoKHR;
- 
-@@ -3356,7 +3357,7 @@ typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)(V
- typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneSupportedDisplaysKHR)(VkPhysicalDevice physicalDevice, uint32_t* pDisplayCount, VkDisplayKHR* pDisplays);
- typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModePropertiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModePropertiesKHR* pProperties);
- typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayModeKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR*pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode);
--typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayModeCreateInfoKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities);
-+typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities);
- typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayPlaneSurfaceKHR)(VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
- 
- #ifdef VK_PROTOTYPES
-@@ -3390,7 +3391,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayModeKHR(
- 
- VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneCapabilitiesKHR(
-     VkPhysicalDevice                            physicalDevice,
--    VkDisplayModeCreateInfoKHR                  mode,
-+    VkDisplayModeKHR                            mode,
-     uint32_t                                    planeIndex,
-     VkDisplayPlaneCapabilitiesKHR*              pCapabilities);
- 
-@@ -3402,16 +3403,10 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayPlaneSurfaceKHR(
- #endif
- 
- #define VK_KHR_display_swapchain 1
--#define VK_KHR_DISPLAY_SWAPCHAIN_REVISION 8
-+#define VK_KHR_DISPLAY_SWAPCHAIN_REVISION 9
- #define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NUMBER 4
- #define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME "VK_KHR_display_swapchain"
- 
--typedef struct VkDisplaySwapchainCreateInfoKHR {
--    VkStructureType                             sType;
--    const void*                                 pNext;
--    const VkSwapchainCreateInfoKHR*             pNextSwapchainCreateInfo;
--} VkDisplaySwapchainCreateInfoKHR;
--
- typedef struct VkDisplayPresentInfoKHR {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-@@ -3421,6 +3416,16 @@ typedef struct VkDisplayPresentInfoKHR {
- } VkDisplayPresentInfoKHR;
- 
- 
-+typedef VkResult (VKAPI_PTR *PFN_vkCreateSharedSwapchainsKHR)(VkDevice device, uint32_t swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains);
-+
-+#ifdef VK_PROTOTYPES
-+VKAPI_ATTR VkResult VKAPI_CALL vkCreateSharedSwapchainsKHR(
-+    VkDevice                                    device,
-+    uint32_t                                    swapchainCount,
-+    const VkSwapchainCreateInfoKHR*             pCreateInfos,
-+    const VkAllocationCallbacks*                pAllocator,
-+    VkSwapchainKHR*                             pSwapchains);
-+#endif
- 
- #ifdef VK_USE_PLATFORM_XLIB_KHR
- #define VK_KHR_xlib_surface 1
-diff --git a/vulkan/libvulkan/get_proc_addr.cpp.tmpl b/vulkan/libvulkan/get_proc_addr.cpp.tmpl
-index aad177d..423dea4 100644
---- a/vulkan/libvulkan/get_proc_addr.cpp.tmpl
-+++ b/vulkan/libvulkan/get_proc_addr.cpp.tmpl
-@@ -217,8 +217,21 @@ bool LoadDeviceVtbl(VkDevice device,
-         success = false;
-     }
-     {{range $f := AllCommands $}}
-+      {{if and (eq (Macro "Vtbl" $f) "Device") (not (eq (Macro "FunctionName" $f) "vkGetDeviceProcAddr"))}}
-+        {{if not (GetAnnotation $f "extension")}}
-+    vtbl.{{TrimPrefix "vk" (Macro "FunctionName" $f)}} = §
-+        reinterpret_cast<{{Macro "FunctionPtrName" $f}}>(§
-+            get_proc_addr(device, "{{Macro "FunctionName" $f}}"));
-+    if (UNLIKELY(!vtbl.{{TrimPrefix "vk" (Macro "FunctionName" $f)}})) {
-+        ALOGE("missing device proc: %s", "{{Macro "FunctionName" $f}}");
-+        success = false;
-+    }
-+        {{end}}
-+      {{end}}
-+    {{end}}
-+    {{range $f := AllCommands $}}
-       {{if eq (Macro "Vtbl" $f) "Device"}}
--        {{if not (eq (Macro "FunctionName" $f) "vkGetDeviceProcAddr")}}
-+        {{if and (GetAnnotation $f "extension") (Macro "IsDispatched" $f)}}
-     vtbl.{{TrimPrefix "vk" (Macro "FunctionName" $f)}} = §
-         reinterpret_cast<{{Macro "FunctionPtrName" $f}}>(§
-             get_proc_addr(device, "{{Macro "FunctionName" $f}}"));
--- 
-2.6.0.rc2.230.g3dd15c0
-
diff --git a/vulkan/patches/frameworks_native-sdk_0.10/0029-vulkan-Assign-enums-to-the-correct-extension.patch b/vulkan/patches/frameworks_native-sdk_0.10/0029-vulkan-Assign-enums-to-the-correct-extension.patch
deleted file mode 100644
index 340254e..0000000
--- a/vulkan/patches/frameworks_native-sdk_0.10/0029-vulkan-Assign-enums-to-the-correct-extension.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From 727391c1b5b3de78128cd204373d14ecdab34801 Mon Sep 17 00:00:00 2001
-From: Jesse Hall <jessehall@google.com>
-Date: Mon, 30 Nov 2015 21:12:55 -0800
-Subject: [PATCH] vulkan: Assign enums to the correct extension
-
-Change-Id: I9ba61b9bfe349f7079833de89d66aa4a2e993e2f
----
- vulkan/api/vulkan.api | 14 +++++++-------
- 1 file changed, 7 insertions(+), 7 deletions(-)
-
-diff --git a/vulkan/api/vulkan.api b/vulkan/api/vulkan.api
-index 243951d..45a5eb6 100644
---- a/vulkan/api/vulkan.api
-+++ b/vulkan/api/vulkan.api
-@@ -690,7 +690,7 @@ enum VkDynamicState {
-     VK_DYNAMIC_STATE_STENCIL_REFERENCE                      = 0x00000008,
- }
- 
--@extension("VK_KHR_swapchain")
-+@extension("VK_KHR_surface")
- enum VkPresentModeKHR {
-     VK_PRESENT_MODE_IMMEDIATE_KHR                           = 0x00000000,
-     VK_PRESENT_MODE_MAILBOX_KHR                             = 0x00000001,
-@@ -698,7 +698,7 @@ enum VkPresentModeKHR {
-     VK_PRESENT_MODE_FIFO_RELAXED_KHR                        = 0x00000003,
- }
- 
--@extension("VK_KHR_swapchain")
-+@extension("VK_KHR_surface")
- enum VkColorSpaceKHR {
-     VK_COLORSPACE_SRGB_NONLINEAR_KHR                        = 0x00000000,
- }
-@@ -1142,9 +1142,9 @@ bitfield VkCullModeFlagBits {
-     VK_CULL_MODE_FRONT_AND_BACK                             = 0x00000003,
- }
- 
--@extension("VK_KHR_swapchain")
-+@extension("VK_KHR_surface")
- type VkFlags VkSurfaceTransformFlagsKHR
--@extension("VK_KHR_swapchain")
-+@extension("VK_KHR_surface")
- bitfield VkSurfaceTransformFlagBitsKHR {
-     VK_SURFACE_TRANSFORM_NONE_BIT_KHR                           = 0x00000001,
-     VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR                      = 0x00000002,
-@@ -1157,9 +1157,9 @@ bitfield VkSurfaceTransformFlagBitsKHR {
-     VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR                        = 0x00000100,
- }
- 
--@extension("VK_KHR_swapchain")
-+@extension("VK_KHR_surface")
- type VkFlags VkCompositeAlphaFlagsKHR
--@extension("VK_KHR_swapchain")
-+@extension("VK_KHR_surface")
- bitfield VkCompositeAlphaFlagBitsKHR {
-     VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR                       = 0x00000001,
-     VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR               = 0x00000002,
-@@ -4870,7 +4870,7 @@ cmd VkResult vkCreateXCBSurfaceKHR(
-     return ?
- }
- 
--@extension("VK_KHR_xlib_surface")
-+@extension("VK_KHR_xcb_surface")
- cmd VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR(
-         VkPhysicalDevice                        physicalDevice,
-         u32                                     queueFamilyIndex,
--- 
-2.6.0.rc2.230.g3dd15c0
-
diff --git a/vulkan/patches/frameworks_native-sdk_0.10/0030-vulkan-Update-from-version-0.210.0-to-0.210.1.patch b/vulkan/patches/frameworks_native-sdk_0.10/0030-vulkan-Update-from-version-0.210.0-to-0.210.1.patch
deleted file mode 100644
index 3953859..0000000
--- a/vulkan/patches/frameworks_native-sdk_0.10/0030-vulkan-Update-from-version-0.210.0-to-0.210.1.patch
+++ /dev/null
@@ -1,212 +0,0 @@
-From 871aab516eafee2ede88b095dad6670b06ab6f8a Mon Sep 17 00:00:00 2001
-From: Jesse Hall <jessehall@google.com>
-Date: Mon, 30 Nov 2015 21:44:14 -0800
-Subject: [PATCH] vulkan: Update from version 0.210.0 to 0.210.1
-
-Change-Id: I9adf217587a8b666bcf04818004dce4e97b87fd1
----
- vulkan/api/vulkan.api          | 59 +++++++++++++++++++++---------------------
- vulkan/include/vulkan/vulkan.h | 24 ++++++++---------
- vulkan/libvulkan/Android.mk    |  4 ---
- vulkan/tools/Android.mk        |  4 ---
- 4 files changed, 42 insertions(+), 49 deletions(-)
-
-diff --git a/vulkan/api/vulkan.api b/vulkan/api/vulkan.api
-index 45a5eb6..0d56145 100644
---- a/vulkan/api/vulkan.api
-+++ b/vulkan/api/vulkan.api
-@@ -28,7 +28,7 @@ import platform "platform.api"
- // API version (major.minor.patch)
- define VERSION_MAJOR 0
- define VERSION_MINOR 210
--define VERSION_PATCH 0
-+define VERSION_PATCH 1
- 
- // API limits
- define VK_MAX_PHYSICAL_DEVICE_NAME_SIZE 256
-@@ -148,7 +148,7 @@ enum VkImageLayout {
-     VK_IMAGE_LAYOUT_PREINITIALIZED                          = 0x00000008,   /// Initial layout used when the data is populated by the CPU
- 
-     //@extension("VK_KHR_swapchain")
--    VK_IMAGE_LAYOUT_PRESENT_SRC_KHR                         = 0xc0000802,
-+    VK_IMAGE_LAYOUT_PRESENT_SRC_KHR                         = 1000001002,
- }
- 
- enum VkAttachmentLoadOp {
-@@ -623,14 +623,15 @@ enum VkStructureType {
-     VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO                 = 47,
- 
-     //@extension("VK_KHR_swapchain")
--    VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR                 = 0xc0000801,
-+    VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR                 = 1000001000,
-+    VK_STRUCTURE_TYPE_PRESENT_INFO_KHR                          = 1000001001,
- 
-     //@extension("VK_KHR_display")
--    VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR              = 0xc0000c00,
--    VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR           = 0xc0000c01,
-+    VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR              = 1000002000,
-+    VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR           = 1000002001,
- 
-     //@extension("VK_KHR_display_swapchain")
--    VK_STRUCTURE_TYPE_DISPLAY_DISPLAY_PRESENT_INFO_KHR          = 0xc0001000,
-+    VK_STRUCTURE_TYPE_DISPLAY_DISPLAY_PRESENT_INFO_KHR          = 1000003000,
- }
- 
- enum VkSubpassContents {
-@@ -638,44 +639,44 @@ enum VkSubpassContents {
-     VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS           = 0x00000001,
- }
- 
--@lastUnused(-10)
-+@lastUnused(-11)
- /// Error and return codes
- enum VkResult {
-     // Return codes for successful operation execution (positive values)
--    VK_SUCCESS                                              = 0x00000000,
--    VK_NOT_READY                                            = 0x00000001,
--    VK_TIMEOUT                                              = 0x00000002,
--    VK_EVENT_SET                                            = 0x00000003,
--    VK_EVENT_RESET                                          = 0x00000004,
--    VK_INCOMPLETE                                           = 0x00000005,
-+    VK_SUCCESS                                              = 0,
-+    VK_NOT_READY                                            = 1,
-+    VK_TIMEOUT                                              = 2,
-+    VK_EVENT_SET                                            = 3,
-+    VK_EVENT_RESET                                          = 4,
-+    VK_INCOMPLETE                                           = 5,
- 
-     //@extension("VK_KHR_swapchain")
--    VK_SUBOPTIMAL_KHR                                       = 0x40000403,
-+    VK_SUBOPTIMAL_KHR                                       = 1000001003,
- 
-     // Error codes (negative values)
--    VK_ERROR_OUT_OF_HOST_MEMORY                             = 0xFFFFFFFF,
--    VK_ERROR_OUT_OF_DEVICE_MEMORY                           = 0xFFFFFFFE,
--    VK_ERROR_INITIALIZATION_FAILED                          = 0xFFFFFFFD,
--    VK_ERROR_DEVICE_LOST                                    = 0xFFFFFFFC,
--    VK_ERROR_MEMORY_MAP_FAILED                              = 0xFFFFFFFB,
--    VK_ERROR_LAYER_NOT_PRESENT                              = 0xFFFFFFFA,
--    VK_ERROR_EXTENSION_NOT_PRESENT                          = 0xFFFFFFF9,
--    VK_ERROR_FEATURE_NOT_PRESENT                            = 0xFFFFFFF8,
--    VK_ERROR_INCOMPATIBLE_DRIVER                            = 0xFFFFFFF7,
--    VK_ERROR_TOO_MANY_OBJECTS                               = 0xFFFFFFF6,
--    VK_ERROR_FORMAT_NOT_SUPPORTED                           = 0xFFFFFFF5,
-+    VK_ERROR_OUT_OF_HOST_MEMORY                             = 0xFFFFFFFF, // -1
-+    VK_ERROR_OUT_OF_DEVICE_MEMORY                           = 0xFFFFFFFE, // -2
-+    VK_ERROR_INITIALIZATION_FAILED                          = 0xFFFFFFFD, // -3
-+    VK_ERROR_DEVICE_LOST                                    = 0xFFFFFFFC, // -4
-+    VK_ERROR_MEMORY_MAP_FAILED                              = 0xFFFFFFFB, // -5
-+    VK_ERROR_LAYER_NOT_PRESENT                              = 0xFFFFFFFA, // -6
-+    VK_ERROR_EXTENSION_NOT_PRESENT                          = 0xFFFFFFF9, // -7
-+    VK_ERROR_FEATURE_NOT_PRESENT                            = 0xFFFFFFF8, // -8
-+    VK_ERROR_INCOMPATIBLE_DRIVER                            = 0xFFFFFFF7, // -9
-+    VK_ERROR_TOO_MANY_OBJECTS                               = 0xFFFFFFF6, // -10
-+    VK_ERROR_FORMAT_NOT_SUPPORTED                           = 0xFFFFFFF5, // -11
- 
-     //@extension("VK_KHR_surface")
--    VK_ERROR_SURFACE_LOST_KHR                               = 0xC0000400,
-+    VK_ERROR_SURFACE_LOST_KHR                               = 0xC4653600, // -1000000000
- 
-     //@extension("VK_KHR_swapchain")
--    VK_ERROR_OUT_OF_DATE_KHR                                = 0xC0000804,
-+    VK_ERROR_OUT_OF_DATE_KHR                                = 0xC4653214, // -1000001004
- 
-     //@extension("VK_KHR_display_swapchain")
--    VK_ERROR_INCOMPATIBLE_DISPLAY_KHR                       = 0xC0001001,
-+    VK_ERROR_INCOMPATIBLE_DISPLAY_KHR                       = 0xC4652A47, // -1000003001
- 
-     //@extension("VK_KHR_android_surface")
--    VK_ERROR_NATIVE_WINDOW_IN_USE_KHR                       = 0xC0002400,
-+    VK_ERROR_NATIVE_WINDOW_IN_USE_KHR                       = 0xC46516C0, // -1000008000
- }
- 
- enum VkDynamicState {
-diff --git a/vulkan/include/vulkan/vulkan.h b/vulkan/include/vulkan/vulkan.h
-index 598d98e..fa58c59 100644
---- a/vulkan/include/vulkan/vulkan.h
-+++ b/vulkan/include/vulkan/vulkan.h
-@@ -41,7 +41,7 @@ extern "C" {
-     ((major << 22) | (minor << 12) | patch)
- 
- // Vulkan API version supported by this file
--#define VK_API_VERSION VK_MAKE_VERSION(0, 210, 0)
-+#define VK_API_VERSION VK_MAKE_VERSION(0, 210, 1)
- 
- 
- #define VK_NULL_HANDLE 0
-@@ -125,11 +125,11 @@ typedef enum VkResult {
-     VK_ERROR_INCOMPATIBLE_DRIVER = -9,
-     VK_ERROR_TOO_MANY_OBJECTS = -10,
-     VK_ERROR_FORMAT_NOT_SUPPORTED = -11,
--    VK_ERROR_SURFACE_LOST_KHR = 0xC0000400,
--    VK_SUBOPTIMAL_KHR = 0x40000403,
--    VK_ERROR_OUT_OF_DATE_KHR = 0xC0000804,
--    VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = 0xC0001001,
--    VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = 0xC0002400,
-+    VK_ERROR_SURFACE_LOST_KHR = -1000000000,
-+    VK_SUBOPTIMAL_KHR = 1000001003,
-+    VK_ERROR_OUT_OF_DATE_KHR = -1000001004,
-+    VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001,
-+    VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000008000,
-     VK_RESULT_BEGIN_RANGE = VK_ERROR_FORMAT_NOT_SUPPORTED,
-     VK_RESULT_END_RANGE = VK_INCOMPLETE,
-     VK_RESULT_RANGE_SIZE = (VK_INCOMPLETE - VK_ERROR_FORMAT_NOT_SUPPORTED + 1),
-@@ -185,11 +185,11 @@ typedef enum VkStructureType {
-     VK_STRUCTURE_TYPE_MEMORY_BARRIER = 45,
-     VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 46,
-     VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 47,
--    VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 0xC0000800,
--    VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 0xC0000801,
--    VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 0xC0000C00,
--    VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 0xC0000C01,
--    VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 0xC0001000,
-+    VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000,
-+    VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001,
-+    VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000,
-+    VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001,
-+    VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 1000003000,
-     VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO,
-     VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,
-     VK_STRUCTURE_TYPE_RANGE_SIZE = (VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1),
-@@ -468,7 +468,7 @@ typedef enum VkImageLayout {
-     VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6,
-     VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7,
-     VK_IMAGE_LAYOUT_PREINITIALIZED = 8,
--    VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 0xC0000802,
-+    VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002,
-     VK_IMAGE_LAYOUT_BEGIN_RANGE = VK_IMAGE_LAYOUT_UNDEFINED,
-     VK_IMAGE_LAYOUT_END_RANGE = VK_IMAGE_LAYOUT_PREINITIALIZED,
-     VK_IMAGE_LAYOUT_RANGE_SIZE = (VK_IMAGE_LAYOUT_PREINITIALIZED - VK_IMAGE_LAYOUT_UNDEFINED + 1),
-diff --git a/vulkan/libvulkan/Android.mk b/vulkan/libvulkan/Android.mk
-index 2f809c2..7a2eb64 100644
---- a/vulkan/libvulkan/Android.mk
-+++ b/vulkan/libvulkan/Android.mk
-@@ -25,10 +25,6 @@ LOCAL_CPPFLAGS := -std=c++1y \
- 	-Wno-c99-extensions \
- 	-Wno-zero-length-array
- 
--# TODO(jessehall): Very temporary, until VkResult values are defined as signed integers
--# rather than unsigned hex values.
--LOCAL_CFLAGS += -Wno-error=format
--
- LOCAL_C_INCLUDES := \
- 	frameworks/native/vulkan/include \
- 	system/core/libsync/include
-diff --git a/vulkan/tools/Android.mk b/vulkan/tools/Android.mk
-index 2c2309f..31d6089 100644
---- a/vulkan/tools/Android.mk
-+++ b/vulkan/tools/Android.mk
-@@ -23,10 +23,6 @@ LOCAL_CPPFLAGS := -std=c++1y \
- 	-Wno-c++98-compat-pedantic \
- 	-Wno-c99-extensions
- 
--# TODO(jessehall): Very temporary, until VkResult values are defined as signed integers
--# rather than unsigned hex values.
--LOCAL_CFLAGS += -Wno-error=format
--
- LOCAL_C_INCLUDES := \
- 	frameworks/native/vulkan/include
- 
--- 
-2.6.0.rc2.230.g3dd15c0
-
diff --git a/vulkan/patches/frameworks_native-sdk_0.10/0031-libvulkan-Fix-missed-vkAllocateCommandBuffers-rename.patch b/vulkan/patches/frameworks_native-sdk_0.10/0031-libvulkan-Fix-missed-vkAllocateCommandBuffers-rename.patch
deleted file mode 100644
index 9e6311f..0000000
--- a/vulkan/patches/frameworks_native-sdk_0.10/0031-libvulkan-Fix-missed-vkAllocateCommandBuffers-rename.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-From 3b8513e831673417af2ad79baa6c73710742fa0f Mon Sep 17 00:00:00 2001
-From: Jesse Hall <jessehall@google.com>
-Date: Wed, 2 Dec 2015 15:40:12 -0800
-Subject: [PATCH] libvulkan: Fix missed vkAllocateCommandBuffers renames
-
-Change-Id: Ic3fee0d565009327f524084b14da498c8412155f
----
- vulkan/libvulkan/entry.cpp      |  2 +-
- vulkan/libvulkan/entry.cpp.tmpl |  2 +-
- vulkan/libvulkan/loader.cpp     | 10 +++++-----
- vulkan/libvulkan/loader.h       |  6 +++---
- 4 files changed, 10 insertions(+), 10 deletions(-)
-
-diff --git a/vulkan/libvulkan/entry.cpp b/vulkan/libvulkan/entry.cpp
-index 9c0444f..77dceef 100644
---- a/vulkan/libvulkan/entry.cpp
-+++ b/vulkan/libvulkan/entry.cpp
-@@ -483,7 +483,7 @@ VKAPI_ATTR VkResult vkResetCommandPool(VkDevice device, VkCommandPool commandPoo
- 
- __attribute__((visibility("default")))
- VKAPI_ATTR VkResult vkAllocateCommandBuffers(VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers) {
--    return GetVtbl(device).AllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers);
-+    return vulkan::AllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers);
- }
- 
- __attribute__((visibility("default")))
-diff --git a/vulkan/libvulkan/entry.cpp.tmpl b/vulkan/libvulkan/entry.cpp.tmpl
-index 5047741..c11b232 100644
---- a/vulkan/libvulkan/entry.cpp.tmpl
-+++ b/vulkan/libvulkan/entry.cpp.tmpl
-@@ -109,7 +109,7 @@ namespace {
- */}}
- {{define "IsSpecialEntry"}}
-   {{/* TODO: figure out how to do this in a cleaner or at least multi-line way */}}
--  {{if or (eq $ "vkGetInstanceProcAddr") (or (eq $ "vkGetDeviceProcAddr") (or (eq $ "vkGetDeviceQueue") (or (eq $ "vkCreateCommandBuffer") (eq $ "vkDestroyDevice"))))}}
-+  {{if or (eq $ "vkGetInstanceProcAddr") (or (eq $ "vkGetDeviceProcAddr") (or (eq $ "vkGetDeviceQueue") (or (eq $ "vkAllocateCommandBuffers") (eq $ "vkDestroyDevice"))))}}
-     true
-   {{end}}
- {{end}}
-diff --git a/vulkan/libvulkan/loader.cpp b/vulkan/libvulkan/loader.cpp
-index 2d45558..defd691 100644
---- a/vulkan/libvulkan/loader.cpp
-+++ b/vulkan/libvulkan/loader.cpp
-@@ -1121,8 +1121,8 @@ PFN_vkVoidFunction GetDeviceProcAddr(VkDevice device, const char* name) {
-     if (strcmp(name, "vkGetDeviceQueue") == 0) {
-         return reinterpret_cast<PFN_vkVoidFunction>(GetDeviceQueue);
-     }
--    if (strcmp(name, "vkAllocCommandBuffers") == 0) {
--        return reinterpret_cast<PFN_vkVoidFunction>(AllocCommandBuffers);
-+    if (strcmp(name, "vkAllocateCommandBuffers") == 0) {
-+        return reinterpret_cast<PFN_vkVoidFunction>(AllocateCommandBuffers);
-     }
-     if (strcmp(name, "vkDestroyDevice") == 0) {
-         return reinterpret_cast<PFN_vkVoidFunction>(DestroyDevice);
-@@ -1146,9 +1146,9 @@ void GetDeviceQueue(VkDevice drv_device,
-     *out_queue = queue;
- }
- 
--VkResult AllocCommandBuffers(VkDevice device,
--                             const VkCommandBufferAllocateInfo* alloc_info,
--                             VkCommandBuffer* cmdbufs) {
-+VkResult AllocateCommandBuffers(VkDevice device,
-+                                const VkCommandBufferAllocateInfo* alloc_info,
-+                                VkCommandBuffer* cmdbufs) {
-     const DeviceVtbl* vtbl = GetVtbl(device);
-     VkResult result = vtbl->AllocateCommandBuffers(device, alloc_info, cmdbufs);
-     if (result != VK_SUCCESS)
-diff --git a/vulkan/libvulkan/loader.h b/vulkan/libvulkan/loader.h
-index 1f777fc..e007f8d 100644
---- a/vulkan/libvulkan/loader.h
-+++ b/vulkan/libvulkan/loader.h
-@@ -220,9 +220,9 @@ void GetDeviceQueue(VkDevice drv_device,
-                     uint32_t family,
-                     uint32_t index,
-                     VkQueue* out_queue);
--VkResult AllocCommandBuffers(VkDevice device,
--                             const VkCommandBufferAllocateInfo* alloc_info,
--                             VkCommandBuffer* cmdbufs);
-+VkResult AllocateCommandBuffers(VkDevice device,
-+                                const VkCommandBufferAllocateInfo* alloc_info,
-+                                VkCommandBuffer* cmdbufs);
- VkResult DestroyDevice(VkDevice drv_device,
-                        const VkAllocationCallbacks* allocator);
- 
--- 
-2.6.0.rc2.230.g3dd15c0
-
diff --git a/vulkan/patches/frameworks_native-sdk_0.10/0032-libvulkan-Implement-new-VkFence-parameter-in-vkAcqui.patch b/vulkan/patches/frameworks_native-sdk_0.10/0032-libvulkan-Implement-new-VkFence-parameter-in-vkAcqui.patch
deleted file mode 100644
index 74dadaf..0000000
--- a/vulkan/patches/frameworks_native-sdk_0.10/0032-libvulkan-Implement-new-VkFence-parameter-in-vkAcqui.patch
+++ /dev/null
@@ -1,478 +0,0 @@
-From a7d7f27007e1e251b889b80c162e88507925fdff Mon Sep 17 00:00:00 2001
-From: Jesse Hall <jessehall@google.com>
-Date: Thu, 3 Dec 2015 16:12:51 -0800
-Subject: [PATCH] libvulkan: Implement new VkFence parameter in
- vkAcquireNextImageKHR
-
-This parameter was added recently but wasn't hooked up. This adds a
-new parameter to the vkAcquireImageANDROID extension function, and
-plumbs the fence through from vkAcquireNextImageKHR to it.
-
-This change also fixes some function signatures for API functions that
-are implemented in the loader bottom rather than the driver. These
-functions are only ever called through function pointers returned by
-vkGet*ProcAddr, and therefore pass through a cast to
-PFN_vkVoidFunction. So the compiler had no way to know they were
-supposed to match a particular prototype, and couldn't issue an error
-when they didn't. This change adds explicit static casts to the
-expected function pointer type before reinterpret casting to the
-generic function pointer type to enable compile errors.
-
-Change-Id: I8a7e065502f783d5f2381b43c880644868234f8f
----
- .../doc/implementors_guide/implementors_guide.adoc | 29 +++++++++++---
- .../doc/implementors_guide/implementors_guide.html | 39 ++++++++++++++++---
- vulkan/include/vulkan/vk_android_native_buffer.h   | 24 ++++++------
- vulkan/libvulkan/loader.cpp                        | 45 ++++++++++++++--------
- vulkan/libvulkan/loader.h                          | 29 +++++++-------
- vulkan/libvulkan/swapchain.cpp                     | 30 +++++++--------
- 6 files changed, 132 insertions(+), 64 deletions(-)
-
-diff --git a/vulkan/doc/implementors_guide/implementors_guide.adoc b/vulkan/doc/implementors_guide/implementors_guide.adoc
-index 60a6f61..97eff48 100644
---- a/vulkan/doc/implementors_guide/implementors_guide.adoc
-+++ b/vulkan/doc/implementors_guide/implementors_guide.adoc
-@@ -2,7 +2,7 @@
- = Vulkan on Android Implementor's Guide =
- :toc: right
- :numbered:
--:revnumber: 3
-+:revnumber: 4
- 
- This document is intended for GPU IHVs writing Vulkan drivers for Android, and OEMs integrating them for specific devices. It describes how a Vulkan driver interacts with the system, how GPU-specific tools should be installed, and Android-specific requirements.
- 
-@@ -99,7 +99,9 @@ When creating a gralloc-backed image, the +VkImageCreateInfo+ will have:
-   .pQueueFamilyIndices = VkSwapChainCreateInfoWSI::pQueueFamilyIndices
- ----
- 
--+vkAcquireImageANDROID+ acquires ownership of a swapchain image and imports an externally-signalled native fence into an existing +VkSemaphore+ object:
-++vkAcquireImageANDROID+ acquires ownership of a swapchain image and imports an
-+externally-signalled native fence into both an existing VkSemaphore object
-+and an existing VkFence object:
- 
- [source,c]
- ----
-@@ -107,12 +109,26 @@ VkResult VKAPI vkAcquireImageANDROID(
-     VkDevice            device,
-     VkImage             image,
-     int                 nativeFenceFd,
--    VkSemaphore         semaphore
--);
-+    VkSemaphore         semaphore,
-+    VkFence             fence
- );
- ----
- 
--This function is called during +vkAcquireNextImageWSI+ to import a native fence into the +VkSemaphore+ object provided by the application. The driver may also use this opportunity to recognize and handle any external changes to the gralloc buffer state; many drivers won't need to do anything here. This call puts the +VkSemaphore+ into the same "pending" state as +vkQueueSignalSemaphore+, so queues can wait on the semaphore. The +VkSemaphore+ signals when the underlying native fence signals; if the fence has already signalled, then the semaphore will be in the signalled state when this function returns. The driver takes ownership of the fence fd and is responsible for closing it when the +VkSemaphore+ is destroyed, when a different native fence is imported, or any other condition that replaces the +VkSemaphore+'s underlying synchronization object. If +fenceFd+ is -1, the +VkSemaphore+ will be considered signalled immediately, but it can still be passed to +vkQueueWaitSemaphore+.
-+This function is called during +vkAcquireNextImageWSI+ to import a native
-+fence into the +VkSemaphore+ and +VkFence+ objects provided by the
-+application. Both semaphore and fence objects are optional in this call. The
-+driver may also use this opportunity to recognize and handle any external
-+changes to the gralloc buffer state; many drivers won't need to do anything
-+here. This call puts the +VkSemaphore+ and +VkFence+ into the same "pending"
-+state as +vkQueueSignalSemaphore+ and +vkQueueSubmit+ respectively, so queues
-+can wait on the semaphore and the application can wait on the fence. Both
-+objects become signalled when the underlying native fence signals; if the
-+native fence has already signalled, then the semaphore will be in the signalled
-+state when this function returns. The driver takes ownership of the fence fd
-+and is responsible for closing it when no longer needed. It must do so even if
-+neither a semaphore or fence object is provided, or even if
-++vkAcquireImageANDROID+ fails and returns an error. If +fenceFd+ is -1, it
-+is as if the native fence was already signalled.
- 
- +vkQueueSignalReleaseImageANDROID+ prepares a swapchain image for external use, and creates a native fence and schedules it to be signalled when prior work on the queue has completed.
- 
-@@ -140,3 +156,6 @@ This will be called during +vkQueuePresentWSI+ on the provided queue. Effects ar
-    * Replaced vkImportNativeFenceANDROID and vkQueueSignalNativeFenceANDROID
-      with vkAcquireImageANDROID and vkQueueSignalReleaseImageANDROID, to allow
-      drivers to known the ownership state of swapchain images.
-+. *2015-12-03*
-+   * Added a VkFence parameter to vkAcquireImageANDROID corresponding to the
-+     parameter added to vkAcquireNextImageKHR.
-diff --git a/vulkan/doc/implementors_guide/implementors_guide.html b/vulkan/doc/implementors_guide/implementors_guide.html
-index 8d6297a..00efca8 100644
---- a/vulkan/doc/implementors_guide/implementors_guide.html
-+++ b/vulkan/doc/implementors_guide/implementors_guide.html
-@@ -843,7 +843,9 @@ http://www.gnu.org/software/src-highlite -->
-   .queueFamilyCount    = VkSwapChainCreateInfoWSI::queueFamilyCount
-   .pQueueFamilyIndices = VkSwapChainCreateInfoWSI::pQueueFamilyIndices</pre>
- </div></div>
--<div class="paragraph"><p><span class="monospaced">vkAcquireImageANDROID</span> acquires ownership of a swapchain image and imports an externally-signalled native fence into an existing <span class="monospaced">VkSemaphore</span> object:</p></div>
-+<div class="paragraph"><p><span class="monospaced">vkAcquireImageANDROID</span> acquires ownership of a swapchain image and imports an
-+externally-signalled native fence into both an existing VkSemaphore object
-+and an existing VkFence object:</p></div>
- <div class="listingblock">
- <div class="content"><!-- Generator: GNU source-highlight 3.1.6
- by Lorenzo Bettini
-@@ -853,10 +855,24 @@ http://www.gnu.org/software/src-highlite -->
-     <span style="color: #008080">VkDevice</span>            device<span style="color: #990000">,</span>
-     <span style="color: #008080">VkImage</span>             image<span style="color: #990000">,</span>
-     <span style="color: #009900">int</span>                 nativeFenceFd<span style="color: #990000">,</span>
--    VkSemaphore         semaphore
--<span style="color: #990000">);</span>
-+    <span style="color: #008080">VkSemaphore</span>         semaphore<span style="color: #990000">,</span>
-+    VkFence             fence
- <span style="color: #990000">);</span></tt></pre></div></div>
--<div class="paragraph"><p>This function is called during <span class="monospaced">vkAcquireNextImageWSI</span> to import a native fence into the <span class="monospaced">VkSemaphore</span> object provided by the application. The driver may also use this opportunity to recognize and handle any external changes to the gralloc buffer state; many drivers won&#8217;t need to do anything here. This call puts the <span class="monospaced">VkSemaphore</span> into the same "pending" state as <span class="monospaced">vkQueueSignalSemaphore</span>, so queues can wait on the semaphore. The <span class="monospaced">VkSemaphore</span> signals when the underlying native fence signals; if the fence has already signalled, then the semaphore will be in the signalled state when this function returns. The driver takes ownership of the fence fd and is responsible for closing it when the <span class="monospaced">VkSemaphore</span> is destroyed, when a different native fence is imported, or any other condition that replaces the <span class="monospaced">VkSemaphore</span>'s underlying synchronization object. If <span class="monospaced">fenceFd</span> is -1, the <span class="monospaced">VkSemaphore</span> will be considered signalled immediately, but it can still be passed to <span class="monospaced">vkQueueWaitSemaphore</span>.</p></div>
-+<div class="paragraph"><p>This function is called during <span class="monospaced">vkAcquireNextImageWSI</span> to import a native
-+fence into the <span class="monospaced">VkSemaphore</span> and <span class="monospaced">VkFence</span> objects provided by the
-+application. Both semaphore and fence objects are optional in this call. The
-+driver may also use this opportunity to recognize and handle any external
-+changes to the gralloc buffer state; many drivers won&#8217;t need to do anything
-+here. This call puts the <span class="monospaced">VkSemaphore</span> and <span class="monospaced">VkFence</span> into the same "pending"
-+state as <span class="monospaced">vkQueueSignalSemaphore</span> and <span class="monospaced">vkQueueSubmit</span> respectively, so queues
-+can wait on the semaphore and the application can wait on the fence. Both
-+objects become signalled when the underlying native fence signals; if the
-+native fence has already signalled, then the semaphore will be in the signalled
-+state when this function returns. The driver takes ownership of the fence fd
-+and is responsible for closing it when no longer needed. It must do so even if
-+neither a semaphore or fence object is provided, or even if
-+<span class="monospaced">vkAcquireImageANDROID</span> fails and returns an error. If <span class="monospaced">fenceFd</span> is -1, it
-+is as if the native fence was already signalled.</p></div>
- <div class="paragraph"><p><span class="monospaced">vkQueueSignalReleaseImageANDROID</span> prepares a swapchain image for external use, and creates a native fence and schedules it to be signalled when prior work on the queue has completed.</p></div>
- <div class="listingblock">
- <div class="content"><!-- Generator: GNU source-highlight 3.1.6
-@@ -926,6 +942,19 @@ Replaced vkImportNativeFenceANDROID and vkQueueSignalNativeFenceANDROID
- </li>
- </ul></div>
- </li>
-+<li>
-+<p>
-+<strong>2015-12-03</strong>
-+</p>
-+<div class="ulist"><ul>
-+<li>
-+<p>
-+Added a VkFence parameter to vkAcquireImageANDROID corresponding to the
-+     parameter added to vkAcquireNextImageKHR.
-+</p>
-+</li>
-+</ul></div>
-+</li>
- </ol></div>
- </div>
- </div>
-@@ -934,7 +963,7 @@ Replaced vkImportNativeFenceANDROID and vkQueueSignalNativeFenceANDROID
- <div id="footer">
- <div id="footer-text">
- Version 3<br>
--Last updated 2015-11-04 10:58:22 PST
-+Last updated 2015-12-03 15:47:36 PST
- </div>
- </div>
- </body>
-diff --git a/vulkan/include/vulkan/vk_android_native_buffer.h b/vulkan/include/vulkan/vk_android_native_buffer.h
-index bf4641e..2fb8c14 100644
---- a/vulkan/include/vulkan/vk_android_native_buffer.h
-+++ b/vulkan/include/vulkan/vk_android_native_buffer.h
-@@ -17,21 +17,22 @@
- #ifndef __VK_ANDROID_NATIVE_BUFFER_H__
- #define __VK_ANDROID_NATIVE_BUFFER_H__
- 
--#include <vulkan/vulkan.h>
- #include <system/window.h>
--
--// TODO(jessehall): Get a real extension number officially assigned.
--#define VK_ANDROID_NATIVE_BUFFER_EXTENSION_NUMBER 1024
--#define VK_ANDROID_NATIVE_BUFFER_REVISION         1
--#define VK_ANDROID_NATIVE_BUFFER_EXTENSION_NAME   "VK_ANDROID_native_buffer"
-+#include <vulkan/vulkan.h>
- 
- #ifdef __cplusplus
- extern "C" {
- #endif
- 
--// See https://gitlab.khronos.org/vulkan/vulkan/blob/master/doc/proposals/proposed/NVIDIA/VulkanRegistryProposal.txt
--// and Khronos bug 14154 for explanation of these magic numbers.
--#define VK_ANDROID_NATIVE_BUFFER_ENUM(type,id)    ((type)((int)0xc0000000 - VK_ANDROID_NATIVE_BUFFER_EXTENSION_NUMBER * -1024 + (id)))
-+#define VK_ANDROID_native_buffer 1
-+
-+// Extension number not yet official, reservation request at:
-+// https://gitlab.khronos.org/vulkan/vulkan/merge_requests/872
-+#define VK_ANDROID_NATIVE_BUFFER_EXTENSION_NUMBER 11
-+#define VK_ANDROID_NATIVE_BUFFER_REVISION         4
-+#define VK_ANDROID_NATIVE_BUFFER_EXTENSION_NAME   "VK_ANDROID_native_buffer"
-+
-+#define VK_ANDROID_NATIVE_BUFFER_ENUM(type,id)    ((type)(1000000000 + (1000 * (VK_ANDROID_NATIVE_BUFFER_EXTENSION_NUMBER - 1)) + (id)))
- #define VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID   VK_ANDROID_NATIVE_BUFFER_ENUM(VkStructureType, 0)
- 
- typedef struct {
-@@ -48,7 +49,7 @@ typedef struct {
- } VkNativeBufferANDROID;
- 
- typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainGrallocUsageANDROID)(VkDevice device, VkFormat format, VkImageUsageFlags imageUsage, int* grallocUsage);
--typedef VkResult (VKAPI_PTR *PFN_vkAcquireImageANDROID)(VkDevice device, VkImage image, int nativeFenceFd, VkSemaphore semaphore);
-+typedef VkResult (VKAPI_PTR *PFN_vkAcquireImageANDROID)(VkDevice device, VkImage image, int nativeFenceFd, VkSemaphore semaphore, VkFence fence);
- typedef VkResult (VKAPI_PTR *PFN_vkQueueSignalReleaseImageANDROID)(VkQueue queue, VkImage image, int* pNativeFenceFd);
- // -- DEPRECATED --
- typedef VkResult (VKAPI_PTR *PFN_vkImportNativeFenceANDROID)(VkDevice device, VkSemaphore semaphore, int nativeFenceFd);
-@@ -66,7 +67,8 @@ VKAPI_ATTR VkResult VKAPI_CALL vkAcquireImageANDROID(
-     VkDevice            device,
-     VkImage             image,
-     int                 nativeFenceFd,
--    VkSemaphore         semaphore
-+    VkSemaphore         semaphore,
-+    VkFence             fence
- );
- VKAPI_ATTR VkResult VKAPI_CALL vkQueueSignalReleaseImageANDROID(
-     VkQueue             queue,
-diff --git a/vulkan/libvulkan/loader.cpp b/vulkan/libvulkan/loader.cpp
-index defd691..ee9af85 100644
---- a/vulkan/libvulkan/loader.cpp
-+++ b/vulkan/libvulkan/loader.cpp
-@@ -539,33 +539,44 @@ VkBool32 LogDebugMessageCallback(VkFlags message_flags,
-     return false;
- }
- 
--VkResult Noop(...) {
-+VkResult Noop() {
-     return VK_SUCCESS;
- }
- 
- VKAPI_ATTR PFN_vkVoidFunction
- GetLayerDeviceProcAddr(VkDevice device, const char* name) {
-+    // The static_casts are used to ensure that our function actually
-+    // matches the API function prototype. Otherwise, if the API function
-+    // prototype changes (only a problem during API development), the compiler
-+    // has no way of knowing that the function is supposed to match the
-+    // prototype, so won't warn us if they don't.
-     if (strcmp(name, "vkGetDeviceProcAddr") == 0) {
--        return reinterpret_cast<PFN_vkVoidFunction>(GetLayerDeviceProcAddr);
-+        return reinterpret_cast<PFN_vkVoidFunction>(
-+            static_cast<PFN_vkGetDeviceProcAddr>(GetLayerDeviceProcAddr));
-     }
-     if (strcmp(name, "vkCreateDevice") == 0) {
-         return reinterpret_cast<PFN_vkVoidFunction>(Noop);
-     }
-     // WSI extensions are not in the driver so return the loader functions
-     if (strcmp(name, "vkCreateSwapchainKHR") == 0) {
--        return reinterpret_cast<PFN_vkVoidFunction>(CreateSwapchainKHR);
-+        return reinterpret_cast<PFN_vkVoidFunction>(
-+            static_cast<PFN_vkCreateSwapchainKHR>(CreateSwapchainKHR));
-     }
-     if (strcmp(name, "vkDestroySwapchainKHR") == 0) {
--        return reinterpret_cast<PFN_vkVoidFunction>(DestroySwapchainKHR);
-+        return reinterpret_cast<PFN_vkVoidFunction>(
-+            static_cast<PFN_vkDestroySwapchainKHR>(DestroySwapchainKHR));
-     }
-     if (strcmp(name, "vkGetSwapchainImagesKHR") == 0) {
--        return reinterpret_cast<PFN_vkVoidFunction>(GetSwapchainImagesKHR);
-+        return reinterpret_cast<PFN_vkVoidFunction>(
-+            static_cast<PFN_vkGetSwapchainImagesKHR>(GetSwapchainImagesKHR));
-     }
-     if (strcmp(name, "vkAcquireNextImageKHR") == 0) {
--        return reinterpret_cast<PFN_vkVoidFunction>(AcquireNextImageKHR);
-+        return reinterpret_cast<PFN_vkVoidFunction>(
-+            static_cast<PFN_vkAcquireNextImageKHR>(AcquireNextImageKHR));
-     }
-     if (strcmp(name, "vkQueuePresentKHR") == 0) {
--        return reinterpret_cast<PFN_vkVoidFunction>(QueuePresentKHR);
-+        return reinterpret_cast<PFN_vkVoidFunction>(
-+            static_cast<PFN_vkQueuePresentKHR>(QueuePresentKHR));
-     }
-     if (!device)
-         return GetGlobalDeviceProcAddr(name);
-@@ -927,7 +938,8 @@ PFN_vkVoidFunction GetInstanceProcAddrBottom(VkInstance, const char* name) {
-         return reinterpret_cast<PFN_vkVoidFunction>(Noop);
-     }
-     if (strcmp(name, "vkCreateInstance") == 0) {
--        return reinterpret_cast<PFN_vkVoidFunction>(CreateInstanceBottom);
-+        return reinterpret_cast<PFN_vkVoidFunction>(
-+            static_cast<PFN_vkCreateInstance>(CreateInstanceBottom));
-     }
-     return GetSpecificInstanceProcAddr(&kBottomInstanceFunctions, name);
- }
-@@ -1116,16 +1128,20 @@ PFN_vkVoidFunction GetDeviceProcAddr(VkDevice device, const char* name) {
-     if (!device)
-         return GetGlobalDeviceProcAddr(name);
-     if (strcmp(name, "vkGetDeviceProcAddr") == 0) {
--        return reinterpret_cast<PFN_vkVoidFunction>(GetDeviceProcAddr);
-+        return reinterpret_cast<PFN_vkVoidFunction>(
-+            static_cast<PFN_vkGetDeviceProcAddr>(GetDeviceProcAddr));
-     }
-     if (strcmp(name, "vkGetDeviceQueue") == 0) {
--        return reinterpret_cast<PFN_vkVoidFunction>(GetDeviceQueue);
-+        return reinterpret_cast<PFN_vkVoidFunction>(
-+            static_cast<PFN_vkGetDeviceQueue>(GetDeviceQueue));
-     }
-     if (strcmp(name, "vkAllocateCommandBuffers") == 0) {
--        return reinterpret_cast<PFN_vkVoidFunction>(AllocateCommandBuffers);
-+        return reinterpret_cast<PFN_vkVoidFunction>(
-+            static_cast<PFN_vkAllocateCommandBuffers>(AllocateCommandBuffers));
-     }
-     if (strcmp(name, "vkDestroyDevice") == 0) {
--        return reinterpret_cast<PFN_vkVoidFunction>(DestroyDevice);
-+        return reinterpret_cast<PFN_vkVoidFunction>(
-+            static_cast<PFN_vkDestroyDevice>(DestroyDevice));
-     }
-     return GetSpecificDeviceProcAddr(GetVtbl(device), name);
- }
-@@ -1164,8 +1180,8 @@ VkResult AllocateCommandBuffers(VkDevice device,
-     return VK_SUCCESS;
- }
- 
--VkResult DestroyDevice(VkDevice drv_device,
--                       const VkAllocationCallbacks* /*allocator*/) {
-+void DestroyDevice(VkDevice drv_device,
-+                   const VkAllocationCallbacks* /*allocator*/) {
-     const DeviceVtbl* vtbl = GetVtbl(drv_device);
-     Device* device = static_cast<Device*>(vtbl->device);
-     for (auto it = device->active_layers.begin();
-@@ -1174,7 +1190,6 @@ VkResult DestroyDevice(VkDevice drv_device,
-     }
-     vtbl->DestroyDevice(drv_device, device->instance->alloc);
-     DestroyDevice(device);
--    return VK_SUCCESS;
- }
- 
- void* AllocMem(VkInstance instance,
-diff --git a/vulkan/libvulkan/loader.h b/vulkan/libvulkan/loader.h
-index e007f8d..65f11f4 100644
---- a/vulkan/libvulkan/loader.h
-+++ b/vulkan/libvulkan/loader.h
-@@ -215,16 +215,18 @@ VkResult CreateInstance(const VkInstanceCreateInfo* create_info,
-                         const VkAllocationCallbacks* allocator,
-                         VkInstance* instance);
- PFN_vkVoidFunction GetInstanceProcAddr(VkInstance instance, const char* name);
--PFN_vkVoidFunction GetDeviceProcAddr(VkDevice drv_device, const char* name);
--void GetDeviceQueue(VkDevice drv_device,
--                    uint32_t family,
--                    uint32_t index,
--                    VkQueue* out_queue);
--VkResult AllocateCommandBuffers(VkDevice device,
--                                const VkCommandBufferAllocateInfo* alloc_info,
--                                VkCommandBuffer* cmdbufs);
--VkResult DestroyDevice(VkDevice drv_device,
--                       const VkAllocationCallbacks* allocator);
-+VKAPI_ATTR PFN_vkVoidFunction GetDeviceProcAddr(VkDevice drv_device,
-+                                                const char* name);
-+VKAPI_ATTR void GetDeviceQueue(VkDevice drv_device,
-+                               uint32_t family,
-+                               uint32_t index,
-+                               VkQueue* out_queue);
-+VKAPI_ATTR VkResult
-+AllocateCommandBuffers(VkDevice device,
-+                       const VkCommandBufferAllocateInfo* alloc_info,
-+                       VkCommandBuffer* cmdbufs);
-+VKAPI_ATTR void DestroyDevice(VkDevice drv_device,
-+                              const VkAllocationCallbacks* allocator);
- 
- void* AllocMem(VkInstance instance,
-                size_t size,
-@@ -292,9 +294,9 @@ CreateSwapchainKHR(VkDevice device,
-                    const VkSwapchainCreateInfoKHR* create_info,
-                    const VkAllocationCallbacks* allocator,
-                    VkSwapchainKHR* swapchain_handle);
--VKAPI_ATTR VkResult DestroySwapchainKHR(VkDevice device,
--                                        VkSwapchainKHR swapchain_handle,
--                                        const VkAllocationCallbacks* allocator);
-+VKAPI_ATTR void DestroySwapchainKHR(VkDevice device,
-+                                    VkSwapchainKHR swapchain_handle,
-+                                    const VkAllocationCallbacks* allocator);
- VKAPI_ATTR VkResult GetSwapchainImagesKHR(VkDevice device,
-                                           VkSwapchainKHR swapchain_handle,
-                                           uint32_t* count,
-@@ -303,6 +305,7 @@ VKAPI_ATTR VkResult AcquireNextImageKHR(VkDevice device,
-                                         VkSwapchainKHR swapchain_handle,
-                                         uint64_t timeout,
-                                         VkSemaphore semaphore,
-+                                        VkFence fence,
-                                         uint32_t* image_index);
- VKAPI_ATTR VkResult
- QueuePresentKHR(VkQueue queue, const VkPresentInfoKHR* present_info);
-diff --git a/vulkan/libvulkan/swapchain.cpp b/vulkan/libvulkan/swapchain.cpp
-index 39a581c..88e4d6f 100644
---- a/vulkan/libvulkan/swapchain.cpp
-+++ b/vulkan/libvulkan/swapchain.cpp
-@@ -487,9 +487,9 @@ VkResult CreateSwapchainKHR(VkDevice device,
- }
- 
- VKAPI_ATTR
--VkResult DestroySwapchainKHR(VkDevice device,
--                             VkSwapchainKHR swapchain_handle,
--                             const VkAllocationCallbacks* /*allocator*/) {
-+void DestroySwapchainKHR(VkDevice device,
-+                         VkSwapchainKHR swapchain_handle,
-+                         const VkAllocationCallbacks* /*allocator*/) {
-     const DeviceVtbl& driver_vtbl = GetDriverVtbl(device);
-     Swapchain* swapchain = SwapchainFromHandle(swapchain_handle);
-     const std::shared_ptr<ANativeWindow>& window = swapchain->surface.window;
-@@ -509,8 +509,6 @@ VkResult DestroySwapchainKHR(VkDevice device,
- 
-     swapchain->~Swapchain();
-     FreeMem(device, swapchain);
--
--    return VK_SUCCESS;
- }
- 
- VKAPI_ATTR
-@@ -538,6 +536,7 @@ VkResult AcquireNextImageKHR(VkDevice device,
-                              VkSwapchainKHR swapchain_handle,
-                              uint64_t timeout,
-                              VkSemaphore semaphore,
-+                             VkFence vk_fence,
-                              uint32_t* image_index) {
-     Swapchain& swapchain = *SwapchainFromHandle(swapchain_handle);
-     ANativeWindow* window = swapchain.surface.window.get();
-@@ -549,8 +548,8 @@ VkResult AcquireNextImageKHR(VkDevice device,
-         "vkAcquireNextImageKHR: non-infinite timeouts not yet implemented");
- 
-     ANativeWindowBuffer* buffer;
--    int fence;
--    err = window->dequeueBuffer(window, &buffer, &fence);
-+    int fence_fd;
-+    err = window->dequeueBuffer(window, &buffer, &fence_fd);
-     if (err != 0) {
-         // TODO(jessehall): Improve error reporting. Can we enumerate possible
-         // errors and translate them to valid Vulkan result codes?
-@@ -562,30 +561,31 @@ VkResult AcquireNextImageKHR(VkDevice device,
-     for (idx = 0; idx < swapchain.num_images; idx++) {
-         if (swapchain.images[idx].buffer.get() == buffer) {
-             swapchain.images[idx].dequeued = true;
--            swapchain.images[idx].dequeue_fence = fence;
-+            swapchain.images[idx].dequeue_fence = fence_fd;
-             break;
-         }
-     }
-     if (idx == swapchain.num_images) {
-         ALOGE("dequeueBuffer returned unrecognized buffer");
--        window->cancelBuffer(window, buffer, fence);
-+        window->cancelBuffer(window, buffer, fence_fd);
-         return VK_ERROR_OUT_OF_DATE_KHR;
-     }
- 
-     int fence_clone = -1;
--    if (fence != -1) {
--        fence_clone = dup(fence);
-+    if (fence_fd != -1) {
-+        fence_clone = dup(fence_fd);
-         if (fence_clone == -1) {
-             ALOGE("dup(fence) failed, stalling until signalled: %s (%d)",
-                   strerror(errno), errno);
--            sync_wait(fence, -1 /* forever */);
-+            sync_wait(fence_fd, -1 /* forever */);
-         }
-     }
- 
-     const DeviceVtbl& driver_vtbl = GetDriverVtbl(device);
-     if (driver_vtbl.AcquireImageANDROID) {
--        result = driver_vtbl.AcquireImageANDROID(
--            device, swapchain.images[idx].image, fence_clone, semaphore);
-+        result =
-+            driver_vtbl.AcquireImageANDROID(device, swapchain.images[idx].image,
-+                                            fence_clone, semaphore, vk_fence);
-     } else {
-         ALOG_ASSERT(driver_vtbl.ImportNativeFenceANDROID,
-                     "Have neither vkAcquireImageANDROID nor "
-@@ -601,7 +601,7 @@ VkResult AcquireNextImageKHR(VkDevice device,
-         // number between the time the driver closes it and the time we close
-         // it. We must assume one of: the driver *always* closes it even on
-         // failure, or *never* closes it on failure.
--        window->cancelBuffer(window, buffer, fence);
-+        window->cancelBuffer(window, buffer, fence_fd);
-         swapchain.images[idx].dequeued = false;
-         swapchain.images[idx].dequeue_fence = -1;
-         return result;
--- 
-2.6.0.rc2.230.g3dd15c0
-