Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/prusa3d/PrusaSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'xs/src/libslic3r/Utils.hpp')
-rw-r--r--xs/src/libslic3r/Utils.hpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/xs/src/libslic3r/Utils.hpp b/xs/src/libslic3r/Utils.hpp
index 5e55ccd2b..5bbf1b624 100644
--- a/xs/src/libslic3r/Utils.hpp
+++ b/xs/src/libslic3r/Utils.hpp
@@ -6,6 +6,33 @@ namespace Slic3r {
extern void set_logging_level(unsigned int level);
extern void trace(unsigned int level, const char *message);
+// Compute the next highest power of 2 of 32-bit v
+// http://graphics.stanford.edu/~seander/bithacks.html
+inline uint32_t next_highest_power_of_2(uint32_t v)
+{
+ if (v != 0)
+ -- v;
+ v |= v >> 1;
+ v |= v >> 2;
+ v |= v >> 4;
+ v |= v >> 8;
+ v |= v >> 16;
+ return ++ v;
+}
+
+inline uint64_t next_highest_power_of_2(uint64_t v)
+{
+ if (v != 0)
+ -- v;
+ v |= v >> 1;
+ v |= v >> 2;
+ v |= v >> 4;
+ v |= v >> 8;
+ v |= v >> 16;
+ v |= v >> 32;
+ return ++ v;
+}
+
} // namespace Slic3r
#endif // slic3r_Utils_hpp_