mirror of
https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git
synced 2024-11-10 10:41:52 +00:00
Improvement in VmaAlignUp, VmaAlignDown
This commit is contained in:
parent
376ada32fc
commit
7cb859d3a0
@ -4243,28 +4243,6 @@ static inline uint32_t VmaCountBitsSet(uint32_t v)
|
||||
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 @@ inline bool VmaIsPow2(T x)
|
||||
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)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user