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 @@
 
 // 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 @@
     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 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 @@
     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 @@
 @threadSafety("app")
 cmd void vkCmdWriteTimestamp(
         VkCmdBuffer                                 cmdBuffer,
-        VkTimestampType                             timestampType,
+        VkPipelineStageFlagBits                     pipelineStage,
         VkBuffer                                    destBuffer,
         VkDeviceSize                                destOffset) {
     cmdBufferObject := GetCmdBuffer(cmdBuffer)
