summaryrefslogtreecommitdiffstats
path: root/Common/interface
diff options
context:
space:
mode:
authorassiduous <assiduous@diligentgraphics.com>2020-10-18 17:02:51 +0000
committerassiduous <assiduous@diligentgraphics.com>2020-10-18 17:02:51 +0000
commit849d2758d7b9e0f3b5c1c11ef2f8f7a06d012c2d (patch)
treea5d04d0f19a0bc883425a8461cbbcbe93c8d4d19 /Common/interface
parentMerge branch 'master' into pso_refactoring (diff)
downloadDiligentCore-849d2758d7b9e0f3b5c1c11ef2f8f7a06d012c2d.tar.gz
DiligentCore-849d2758d7b9e0f3b5c1c11ef2f8f7a06d012c2d.zip
Implemented Align for pointers; added tests
Diffstat (limited to 'Common/interface')
-rw-r--r--Common/interface/Align.hpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/Common/interface/Align.hpp b/Common/interface/Align.hpp
index 1d0d43cc..658ec7ca 100644
--- a/Common/interface/Align.hpp
+++ b/Common/interface/Align.hpp
@@ -30,6 +30,8 @@
/// \file
/// Alignment utilities
+#include <cstdint>
+
#include "../../Platforms/Basic/interface/DebugUtilities.hpp"
namespace Diligent
@@ -49,10 +51,22 @@ inline T Align(T val, T alignment)
}
template <typename T>
+inline T* Align(T* val, size_t alignment)
+{
+ return reinterpret_cast<T*>(Align(reinterpret_cast<uintptr_t>(val), static_cast<uintptr_t>(alignment)));
+}
+
+template <typename T>
inline T AlignDown(T val, T alignment)
{
VERIFY(IsPowerOfTwo(alignment), "Alignment (", alignment, ") must be power of 2");
return val & ~(alignment - 1);
}
+template <typename T>
+inline T* AlignDown(T* val, size_t alignment)
+{
+ return reinterpret_cast<T*>(AlignDown(reinterpret_cast<uintptr_t>(val), static_cast<uintptr_t>(alignment)));
+}
+
} // namespace Diligent