vulkan: Update from version 0.183.0 to 0.184.0

Change-Id: I11802010d9171877e3fc8cc6e0931f8c746660c4
(cherry picked from commit 821c3aebdbac594a9b977e8183a863bed7419132)
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 @@
 
 // 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 @@
 
 /// 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 @@
     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 @@
     VkCullMode                                  cullMode
     VkFrontFace                                 frontFace
     VkBool32                                    depthBiasEnable
-    f32                                         depthBias
+    f32                                         depthBiasConstantFactor
     f32                                         depthBiasClamp
-    f32                                         slopeScaledDepthBias
+    f32                                         depthBiasSlopeFactor
     f32                                         lineWidth
 }
 
@@ -1844,6 +1844,7 @@
     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 @@
     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 @@
     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 @@
         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 @@
     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 @@
 @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 @@
         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 @@
     ((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 @@
 #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 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 @@
     VkBool32                                    fillModeNonSolid;
     VkBool32                                    depthBounds;
     VkBool32                                    wideLines;
+    VkBool32                                    strictLines;
     VkBool32                                    largePoints;
     VkBool32                                    alphaToOne;
     VkBool32                                    multiViewport;
@@ -1260,7 +1261,7 @@
     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 @@
     float                                       lineWidthRange[2];
     float                                       pointSizeGranularity;
     float                                       lineWidthGranularity;
+    uint32_t                                    recommendedBufferCopyOffsetAlignment;
+    uint32_t                                    recommendedBufferCopyRowPitchAlignment;
 } VkPhysicalDeviceLimits;
 
 typedef struct {
@@ -1521,7 +1524,7 @@
     VkStructureType                             sType;
     const void*                                 pNext;
     size_t                                      codeSize;
-    const void*                                 pCode;
+    const uint32_t*                             pCode;
     VkShaderModuleCreateFlags                   flags;
 } VkShaderModuleCreateInfo;
 
@@ -1640,9 +1643,9 @@
     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_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 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_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_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 @@
     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 @@
     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 vkCmdSetDepthBias(
     VkCmdBuffer                                 cmdBuffer,
-    float                                       depthBias,
+    float                                       depthBiasConstantFactor,
     float                                       depthBiasClamp,
-    float                                       slopeScaledDepthBias);
+    float                                       depthBiasSlopeFactor);
 
 void VKAPI vkCmdSetBlendConstants(
     VkCmdBuffer                                 cmdBuffer,
@@ -2973,7 +2972,7 @@
     uint32_t                                    queryCount,
     VkBuffer                                    destBuffer,
     VkDeviceSize                                destOffset,
-    VkDeviceSize                                destStride,
+    VkDeviceSize                                stride,
     VkQueryResultFlags                          flags);
 
 void VKAPI vkCmdPushConstants(
@@ -3317,8 +3316,8 @@
 
 
 
-#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 @@
 #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 @@
 #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 @@
 #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 @@
 #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 @@
 #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 @@
 }
 
 __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 @@
 }
 
 __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 @@
 }
 
 __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 @@
 }
 
 __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 @@
     {"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 @@
     {"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 @@
         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 @@
     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 @@
 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 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 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 @@
 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 @@
     {"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))},