diff --git a/VulkanMemoryAllocator.cabal b/VulkanMemoryAllocator.cabal
--- a/VulkanMemoryAllocator.cabal
+++ b/VulkanMemoryAllocator.cabal
@@ -1,11 +1,11 @@
 cabal-version: 2.2
 
--- This file has been generated from package.yaml by hpack version 0.34.4.
+-- This file has been generated from package.yaml by hpack version 0.34.5.
 --
 -- see: https://github.com/sol/hpack
 
 name:           VulkanMemoryAllocator
-version:        0.7.4
+version:        0.7.5
 synopsis:       Bindings to the VulkanMemoryAllocator library
 category:       Graphics
 homepage:       https://github.com/expipiplus1/vulkan#readme
@@ -96,7 +96,7 @@
     , bytestring
     , transformers
     , vector
-    , vulkan >=3.6 && <3.14
+    , vulkan >=3.6 && <3.15
   if flag(safe-foreign-calls)
     cpp-options: -DSAFE_FOREIGN_CALLS
   if flag(vma-ndebug)
diff --git a/VulkanMemoryAllocator/include/vk_mem_alloc.h b/VulkanMemoryAllocator/include/vk_mem_alloc.h
--- a/VulkanMemoryAllocator/include/vk_mem_alloc.h
+++ b/VulkanMemoryAllocator/include/vk_mem_alloc.h
@@ -150,6 +150,13 @@
     #include <vulkan/vulkan.h>
 #endif
 
+#if !defined(VK_VERSION_1_2)
+    // This one is tricky. Vulkan specification defines this code as available since
+    // Vulkan 1.0, but doesn't actually define it in Vulkan SDK earlier than 1.2.131.
+    // See pull request #207.
+    #define VK_ERROR_UNKNOWN ((VkResult)-13)
+#endif
+
 // Define this macro to declare maximum supported Vulkan version in format AAABBBCCC,
 // where AAA = major, BBB = minor, CCC = patch.
 // If you want to use version > 1.0, it still needs to be enabled via VmaAllocatorCreateInfo::vulkanApiVersion.
@@ -1571,6 +1578,17 @@
     VmaAllocator VMA_NOT_NULL allocator,
     VmaAllocation VMA_NULLABLE * VMA_NOT_NULL pAllocation);
 
+/**
+\brief Given an allocation, returns Property Flags of its memory type.
+
+This is just a convenience function. Same information can be obtained using
+vmaGetAllocationInfo() + vmaGetMemoryProperties().
+*/
+VMA_CALL_PRE void VMA_CALL_POST vmaGetAllocationMemoryProperties(
+    VmaAllocator VMA_NOT_NULL allocator,
+    VmaAllocation VMA_NOT_NULL allocation,
+    VkMemoryPropertyFlags* VMA_NOT_NULL pFlags);
+
 /** \brief Maps memory represented by given allocation and returns pointer to it.
 
 Maps memory represented by given allocation to make it accessible to CPU code.
@@ -17665,6 +17683,16 @@
 #endif
 }
 
+VMA_CALL_PRE void VMA_CALL_POST vmaGetAllocationMemoryProperties(
+    VmaAllocator VMA_NOT_NULL allocator,
+    VmaAllocation VMA_NOT_NULL allocation,
+    VkMemoryPropertyFlags* VMA_NOT_NULL pFlags)
+{
+    VMA_ASSERT(allocator && allocation && pFlags);
+    const uint32_t memTypeIndex = allocation->GetMemoryTypeIndex();
+    *pFlags = allocator->m_MemProps.memoryTypes[memTypeIndex].propertyFlags;
+}
+
 VMA_CALL_PRE VkResult VMA_CALL_POST vmaMapMemory(
     VmaAllocator allocator,
     VmaAllocation allocation,
@@ -18893,8 +18921,8 @@
 
 You can detect this case and map such allocation to access its memory on CPU directly,
 instead of launching a transfer operation.
-In order to do that: inspect `allocInfo.memoryType`, call vmaGetMemoryTypeProperties(),
-and look for `VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT` flag in properties of that memory type.
+In order to do that: call vmaGetAllocationMemoryProperties()
+and look for `VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT` flag.
 
 \code
 VkBufferCreateInfo bufCreateInfo = { VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO };
@@ -18907,11 +18935,10 @@
 
 VkBuffer buf;
 VmaAllocation alloc;
-VmaAllocationInfo allocInfo;
-vmaCreateBuffer(allocator, &bufCreateInfo, &allocCreateInfo, &buf, &alloc, &allocInfo);
+vmaCreateBuffer(allocator, &bufCreateInfo, &allocCreateInfo, &buf, &alloc, nullptr);
 
 VkMemoryPropertyFlags memFlags;
-vmaGetMemoryTypeProperties(allocator, allocInfo.memoryType, &memFlags);
+vmaGetAllocationMemoryProperties(allocator, alloc, &memFlags);
 if((memFlags & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT) != 0)
 {
     // Allocation ended up in mappable memory. You can map it and access it directly.
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -2,6 +2,10 @@
 
 ## WIP
 
+## [0.7.5] - 2021-11-25
+- Bump VMA, adds `getAllocationMemoryProperties`
+- Raise upper bound on `vulkan`
+
 ## [0.7.4] - 2021-11-08
 - Bump VMA, documentation changes
 
diff --git a/package.yaml b/package.yaml
--- a/package.yaml
+++ b/package.yaml
@@ -1,5 +1,5 @@
 name: VulkanMemoryAllocator
-version: "0.7.4"
+version: "0.7.5"
 synopsis: Bindings to the VulkanMemoryAllocator library
 category: Graphics
 maintainer: Ellie Hermaszewska <live.long.and.prosper@monoid.al>
@@ -20,7 +20,7 @@
     src/lib.cpp
   dependencies:
     - base <5
-    - vulkan >= 3.6 && < 3.14
+    - vulkan >= 3.6 && < 3.15
     - bytestring
     - transformers
     - vector
diff --git a/src/VulkanMemoryAllocator.hs b/src/VulkanMemoryAllocator.hs
--- a/src/VulkanMemoryAllocator.hs
+++ b/src/VulkanMemoryAllocator.hs
@@ -38,6 +38,7 @@
                               , setAllocationUserData
                               , createLostAllocation
                               , withLostAllocation
+                              , getAllocationMemoryProperties
                               , mapMemory
                               , withMappedMemory
                               , unmapMemory
@@ -1396,6 +1397,31 @@
 withLostAllocation allocator b =
   b (createLostAllocation allocator)
     (\(o0) -> freeMemory allocator o0)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vmaGetAllocationMemoryProperties" ffiVmaGetAllocationMemoryProperties
+  :: Allocator -> Allocation -> Ptr MemoryPropertyFlags -> IO ()
+
+-- | Given an allocation, returns Property Flags of its memory type.
+--
+-- This is just a convenience function. Same information can be obtained
+-- using 'getAllocationInfo' + 'getMemoryProperties'.
+getAllocationMemoryProperties :: forall io
+                               . (MonadIO io)
+                              => -- No documentation found for Nested "vmaGetAllocationMemoryProperties" "allocator"
+                                 Allocator
+                              -> -- No documentation found for Nested "vmaGetAllocationMemoryProperties" "allocation"
+                                 Allocation
+                              -> io (MemoryPropertyFlags)
+getAllocationMemoryProperties allocator allocation = liftIO . evalContT $ do
+  pPFlags <- ContT $ bracket (callocBytes @MemoryPropertyFlags 4) free
+  lift $ traceAroundEvent "vmaGetAllocationMemoryProperties" ((ffiVmaGetAllocationMemoryProperties) (allocator) (allocation) (pPFlags))
+  pFlags <- lift $ peek @MemoryPropertyFlags pPFlags
+  pure $ (pFlags)
 
 
 foreign import ccall
