Add utils
This commit is contained in:
@@ -61,5 +61,35 @@ namespace openVulkanoCpp
|
||||
{
|
||||
return (size + alignment - 1) & ~(alignment - 1);
|
||||
}
|
||||
|
||||
static inline constexpr size_t AlignPage(size_t size)
|
||||
{
|
||||
return Align(size, 4096); //TODO detect system page size instead of relying on hardcoded value
|
||||
}
|
||||
|
||||
template<typename T, typename = std::enable_if_t<std::is_unsigned_v<T>>>
|
||||
static inline constexpr bool IsPow2(T i)
|
||||
{
|
||||
return ((i - 1) & i) == 0;
|
||||
}
|
||||
|
||||
template<typename T, typename = std::enable_if_t<std::is_unsigned_v<T>>>
|
||||
static inline constexpr T Log2OfPow2(T n)
|
||||
{
|
||||
assert(n != 0);
|
||||
assert(IsPow2(n));
|
||||
|
||||
T log = 0;
|
||||
while(true)
|
||||
{
|
||||
n >>= 1;
|
||||
if (n == 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
log++;
|
||||
}
|
||||
return log;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user