Improvement in VmaAlignUp, VmaAlignDown
diff --git a/src/vk_mem_alloc.h b/src/vk_mem_alloc.h
index 893c6b2..a880c10 100644
--- a/src/vk_mem_alloc.h
+++ b/src/vk_mem_alloc.h
@@ -4243,28 +4243,6 @@
     return c;

 }

 

-// Aligns given value up to nearest multiply of align value. For example: VmaAlignUp(11, 8) = 16.

-// Use types like uint32_t, uint64_t as T.

-template <typename T>

-static inline T VmaAlignUp(T val, T align)

-{

-    return (val + align - 1) / align * align;

-}

-// Aligns given value down to nearest multiply of align value. For example: VmaAlignUp(11, 8) = 8.

-// Use types like uint32_t, uint64_t as T.

-template <typename T>

-static inline T VmaAlignDown(T val, T align)

-{

-    return val / align * align;

-}

-

-// Division with mathematical rounding to nearest number.

-template <typename T>

-static inline T VmaRoundDiv(T x, T y)

-{

-    return (x + (y / (T)2)) / y;

-}

-

 /*

 Returns true if given number is a power of two.

 T must be unsigned integer number or signed integer but always nonnegative.

@@ -4276,6 +4254,30 @@
     return (x & (x-1)) == 0;

 }

 

+// Aligns given value up to nearest multiply of align value. For example: VmaAlignUp(11, 8) = 16.

+// Use types like uint32_t, uint64_t as T.

+template <typename T>

+static inline T VmaAlignUp(T val, T alignment)

+{

+    VMA_HEAVY_ASSERT(VmaIsPow2(alignment));

+    return (val + alignment - 1) & ~(alignment - 1);

+}

+// Aligns given value down to nearest multiply of align value. For example: VmaAlignUp(11, 8) = 8.

+// Use types like uint32_t, uint64_t as T.

+template <typename T>

+static inline T VmaAlignDown(T val, T alignment)

+{

+    VMA_HEAVY_ASSERT(VmaIsPow2(alignment));

+    return val & ~(alignment - 1);

+}

+

+// Division with mathematical rounding to nearest number.

+template <typename T>

+static inline T VmaRoundDiv(T x, T y)

+{

+    return (x + (y / (T)2)) / y;

+}

+

 // Returns smallest power of 2 greater or equal to v.

 static inline uint32_t VmaNextPow2(uint32_t v)

 {