mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
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:
committed by
Alexandre Julliard
parent
8589935420
commit
eb340126b6
@@ -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)
|
||||
{
|
||||
|
Reference in New Issue
Block a user