Add utils

This commit is contained in:
2020-11-25 21:21:21 +01:00
parent 6f00cedfbc
commit b76cbeb32f

View File

@@ -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;
}
};
}