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

github.com/ValveSoftware/vkd3d.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJózef Kucia <jkucia@codeweavers.com>2019-07-04 17:41:09 +0300
committerAlexandre Julliard <julliard@winehq.org>2019-07-05 18:52:04 +0300
commiteb340126b615b764254cc230a95575c563976221 (patch)
tree9b21df6233084fddee24514771e98445285f917a /include
parent8589935420b4934046911cb1928f0ee89d89912c (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.h17
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)
{