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>
This commit is contained in:
Józef Kucia
2019-07-04 16:41:09 +02:00
committed by Alexandre Julliard
parent 8589935420
commit eb340126b6
3 changed files with 89 additions and 17 deletions

View File

@@ -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)
{