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 @@
 
 // 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 @@
     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 @@
 @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 @@
         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 @@
     ((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(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 @@
 } 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_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 @@
 
 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 @@
 }
 
 __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 @@
     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 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);
