diff options
author | Józef Kucia <jkucia@codeweavers.com> | 2019-07-04 17:41:09 +0300 |
---|---|---|
committer | Alexandre Julliard <julliard@winehq.org> | 2019-07-05 18:52:04 +0300 |
commit | eb340126b615b764254cc230a95575c563976221 (patch) | |
tree | 9b21df6233084fddee24514771e98445285f917a /include | |
parent | 8589935420b4934046911cb1928f0ee89d89912c (diff) |
vkd3d-common: Move vkd3d_write_mask_is_contiguous() from vkd3d-shader.
Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/private/vkd3d_common.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/include/private/vkd3d_common.h b/include/private/vkd3d_common.h index c696f885..1ac8a63b 100644 --- a/include/private/vkd3d_common.h +++ b/include/private/vkd3d_common.h @@ -23,6 +23,8 @@ #include "vkd3d_windows.h" #include <ctype.h> +#include <limits.h> +#include <stdbool.h> #ifndef ARRAY_SIZE # define ARRAY_SIZE(x) (sizeof(x) / sizeof(*(x))) @@ -58,6 +60,21 @@ static inline unsigned int vkd3d_popcount(unsigned int v) #endif } +static inline bool vkd3d_bitmask_is_contiguous(unsigned int mask) +{ + unsigned int i, j; + + for (i = 0, j = 0; i < sizeof(mask) * CHAR_BIT; ++i) + { + if (mask & (1u << i)) + ++j; + else if (j) + break; + } + + return vkd3d_popcount(mask) == j; +} + /* Undefined for x == 0. */ static inline unsigned int vkd3d_log2i(unsigned int x) { |