ReactOS 0.4.17-dev-923-g4c9a150
vkd3d_common.h File Reference
#include "config.h"
#include "windows.h"
#include "vkd3d_types.h"
#include <ctype.h>
#include <limits.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
Include dependency graph for vkd3d_common.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  vkd3d_debug_option
 
struct  vkd3d_mutex
 
struct  vkd3d_cond
 

Macros

#define WIN32_LEAN_AND_MEAN
 
#define ARRAY_SIZE(x)   (sizeof(x) / sizeof(*(x)))
 
#define DIV_ROUND_UP(a, b)   ((a) % (b) == 0 ? (a) / (b) : (a) / (b) + 1)
 
#define STATIC_ASSERT(e)   extern void __VKD3D_STATIC_ASSERT__(int [(e) ? 1 : -1])
 
#define VKD3D_ASSERT(cond)
 
#define MEMBER_SIZE(t, m)   sizeof(((t *)0)->m)
 
#define VKD3D_MAKE_TAG(ch0, ch1, ch2, ch3)
 
#define VKD3D_EXPAND(x)   x
 
#define VKD3D_STRINGIFY(x)   #x
 
#define VKD3D_EXPAND_AND_STRINGIFY(x)   VKD3D_EXPAND(VKD3D_STRINGIFY(x))
 
#define vkd3d_clamp(value, lower, upper)   max(min(value, upper), lower)
 
#define TAG_AON9   VKD3D_MAKE_TAG('A', 'o', 'n', '9')
 
#define TAG_DXBC   VKD3D_MAKE_TAG('D', 'X', 'B', 'C')
 
#define TAG_DXIL   VKD3D_MAKE_TAG('D', 'X', 'I', 'L')
 
#define TAG_FX10   VKD3D_MAKE_TAG('F', 'X', '1', '0')
 
#define TAG_ISG1   VKD3D_MAKE_TAG('I', 'S', 'G', '1')
 
#define TAG_ISGN   VKD3D_MAKE_TAG('I', 'S', 'G', 'N')
 
#define TAG_OSG1   VKD3D_MAKE_TAG('O', 'S', 'G', '1')
 
#define TAG_OSG5   VKD3D_MAKE_TAG('O', 'S', 'G', '5')
 
#define TAG_OSGN   VKD3D_MAKE_TAG('O', 'S', 'G', 'N')
 
#define TAG_PCSG   VKD3D_MAKE_TAG('P', 'C', 'S', 'G')
 
#define TAG_PSG1   VKD3D_MAKE_TAG('P', 'S', 'G', '1')
 
#define TAG_RD11   VKD3D_MAKE_TAG('R', 'D', '1', '1')
 
#define TAG_RDEF   VKD3D_MAKE_TAG('R', 'D', 'E', 'F')
 
#define TAG_RTS0   VKD3D_MAKE_TAG('R', 'T', 'S', '0')
 
#define TAG_SDBG   VKD3D_MAKE_TAG('S', 'D', 'B', 'G')
 
#define TAG_SFI0   VKD3D_MAKE_TAG('S', 'F', 'I', '0')
 
#define TAG_SHDR   VKD3D_MAKE_TAG('S', 'H', 'D', 'R')
 
#define TAG_SHEX   VKD3D_MAKE_TAG('S', 'H', 'E', 'X')
 
#define TAG_STAT   VKD3D_MAKE_TAG('S', 'T', 'A', 'T')
 
#define TAG_TEXT   VKD3D_MAKE_TAG('T', 'E', 'X', 'T')
 
#define TAG_XNAP   VKD3D_MAKE_TAG('X', 'N', 'A', 'P')
 
#define TAG_XNAS   VKD3D_MAKE_TAG('X', 'N', 'A', 'S')
 
#define TAG_RD11_REVERSE   0x25441313
 
#define VKD3D_NORETURN
 
#define VKD3D_PRINTF_FUNC(fmt, args)
 
#define VKD3D_UNUSED
 
#define VKD3D_UNREACHABLE   (void)0
 
#define vkd3d_unreachable()
 
#define VKD3D_DBG_LOG(level)
 
#define VKD3D_DBG_LOG_ONCE(first_time_level, level)
 
#define VKD3D_DBG_PRINTF(...)    vkd3d_dbg_printf(vkd3d_dbg_level, __FUNCTION__, __VA_ARGS__); } while (0)
 
#define VKD3D_DBG_PRINTF_TRACE(...)   VKD3D_DBG_PRINTF(__VA_ARGS__)
 
#define VKD3D_DBG_PRINTF_WARN(...)   VKD3D_DBG_PRINTF(__VA_ARGS__)
 
#define VKD3D_DBG_PRINTF_FIXME(...)   VKD3D_DBG_PRINTF(__VA_ARGS__)
 
#define VKD3D_DBG_PRINTF_MESSAGE(...)   VKD3D_DBG_PRINTF(__VA_ARGS__)
 
#define VKD3D_DBG_PRINTF_ERR(...)   VKD3D_DBG_PRINTF(__VA_ARGS__)
 
#define TRACE   VKD3D_DBG_LOG(TRACE)
 
#define WARN   VKD3D_DBG_LOG(WARN)
 
#define FIXME   VKD3D_DBG_LOG(FIXME)
 
#define ERR   VKD3D_DBG_LOG(ERR)
 
#define MESSAGE   VKD3D_DBG_LOG(MESSAGE)
 
#define TRACE_ON()   (vkd3d_dbg_get_level() == VKD3D_DBG_LEVEL_TRACE)
 
#define WARN_ON()   (vkd3d_dbg_get_level() >= VKD3D_DBG_LEVEL_WARN)
 
#define FIXME_ONCE   VKD3D_DBG_LOG_ONCE(FIXME, WARN)
 
#define VKD3D_DEBUG_ENV_NAME(name)   const char *const vkd3d_dbg_env_name = name
 
#define TO_STR(u)   case u: return #u;
 
#define VKD3D_BITMAP_SIZE(x)   (((x) + 0x1f) >> 5)
 
#define VKD3D_MUTEX_INITIALIZER   PTHREAD_MUTEX_INITIALIZER
 

Enumerations

enum  vkd3d_dbg_level {
  VKD3D_DBG_LEVEL_NONE , VKD3D_DBG_LEVEL_MESSAGE , VKD3D_DBG_LEVEL_ERR , VKD3D_DBG_LEVEL_FIXME ,
  VKD3D_DBG_LEVEL_WARN , VKD3D_DBG_LEVEL_TRACE , VKD3D_DBG_LEVEL_NONE , VKD3D_DBG_LEVEL_ERR ,
  VKD3D_DBG_LEVEL_FIXME , VKD3D_DBG_LEVEL_WARN , VKD3D_DBG_LEVEL_TRACE
}
 

Functions

static uint64_t align (uint64_t addr, size_t alignment)
 
enum vkd3d_dbg_level vkd3d_dbg_get_level (void)
 
void vkd3d_dbg_printf (enum vkd3d_dbg_level level, const char *function, const char *fmt,...) VKD3D_PRINTF_FUNC(3
 
void void vkd3d_dbg_set_log_callback (PFN_vkd3d_log callback)
 
const char * vkd3d_dbg_sprintf (const char *fmt,...) VKD3D_PRINTF_FUNC(1
 
const char const char * vkd3d_dbg_vsprintf (const char *fmt, va_list args)
 
const char * debugstr_a (const char *str)
 
const char * debugstr_an (const char *str, size_t n)
 
const char * debugstr_w (const WCHAR *wstr, size_t wchar_size)
 
static const char * debugstr_guid (const GUID *guid)
 
static const char * debugstr_hresult (HRESULT hr)
 
unsigned int vkd3d_env_var_as_uint (const char *name, unsigned int default_value)
 
bool vkd3d_debug_list_has_member (const char *string, const char *member)
 
uint64_t vkd3d_parse_debug_options (const char *string, const struct vkd3d_debug_option *options, unsigned int option_count)
 
void vkd3d_set_thread_name (const char *name)
 
static unsigned int vkd3d_popcount (unsigned int v)
 
static bool vkd3d_bitmask_is_contiguous (unsigned int mask)
 
static unsigned int vkd3d_log2i (unsigned int x)
 
static void * vkd3d_memmem (const void *haystack, size_t haystack_len, const void *needle, size_t needle_len)
 
static bool vkd3d_bound_range (size_t start, size_t count, size_t limit)
 
static bool vkd3d_object_range_overflow (size_t start, size_t count, size_t size)
 
static uint16_t vkd3d_make_u16 (uint8_t low, uint8_t high)
 
static uint32_t vkd3d_make_u32 (uint16_t low, uint16_t high)
 
static int vkd3d_u32_compare (uint32_t x, uint32_t y)
 
static int vkd3d_u64_compare (uint64_t x, uint64_t y)
 
static bool bitmap_clear (uint32_t *map, unsigned int idx)
 
static bool bitmap_set (uint32_t *map, unsigned int idx)
 
static bool bitmap_is_set (const uint32_t *map, unsigned int idx)
 
static int ascii_isupper (int c)
 
static int ascii_tolower (int c)
 
static int ascii_strncasecmp (const char *a, const char *b, size_t n)
 
static int ascii_strcasecmp (const char *a, const char *b)
 
static uint64_t vkd3d_atomic_add_fetch_u64 (uint64_t volatile *x, uint64_t val)
 
static uint32_t vkd3d_atomic_add_fetch_u32 (uint32_t volatile *x, uint32_t val)
 
static uint64_t vkd3d_atomic_increment_u64 (uint64_t volatile *x)
 
static uint32_t vkd3d_atomic_decrement_u32 (uint32_t volatile *x)
 
static uint32_t vkd3d_atomic_increment_u32 (uint32_t volatile *x)
 
static bool vkd3d_atomic_compare_exchange_u32 (uint32_t volatile *x, uint32_t expected, uint32_t val)
 
static bool vkd3d_atomic_compare_exchange_ptr (void *volatile *x, void *expected, void *val)
 
static uint32_t vkd3d_atomic_exchange_u32 (uint32_t volatile *x, uint32_t val)
 
static void * vkd3d_atomic_exchange_ptr (void *volatile *x, void *val)
 
static void vkd3d_mutex_init (struct vkd3d_mutex *lock)
 
static void vkd3d_mutex_lock (struct vkd3d_mutex *lock)
 
static void vkd3d_mutex_unlock (struct vkd3d_mutex *lock)
 
static void vkd3d_mutex_destroy (struct vkd3d_mutex *lock)
 
static void vkd3d_cond_init (struct vkd3d_cond *cond)
 
static void vkd3d_cond_signal (struct vkd3d_cond *cond)
 
static void vkd3d_cond_broadcast (struct vkd3d_cond *cond)
 
static void vkd3d_cond_wait (struct vkd3d_cond *cond, struct vkd3d_mutex *lock)
 
static void vkd3d_cond_destroy (struct vkd3d_cond *cond)
 
static void vkd3d_parse_version (const char *version, int *major, int *minor)
 
HRESULT hresult_from_vkd3d_result (int vkd3d_result)
 
static void * vkd3d_dlopen (const char *name)
 
static void * vkd3d_dlsym (void *handle, const char *symbol)
 
static int vkd3d_dlclose (void *handle)
 
static const char * vkd3d_dlerror (void)
 

Macro Definition Documentation

◆ ARRAY_SIZE

#define ARRAY_SIZE (   x)    (sizeof(x) / sizeof(*(x)))

Definition at line 42 of file vkd3d_common.h.

◆ DIV_ROUND_UP

#define DIV_ROUND_UP (   a,
  b 
)    ((a) % (b) == 0 ? (a) / (b) : (a) / (b) + 1)

Definition at line 45 of file vkd3d_common.h.

◆ ERR

#define ERR   VKD3D_DBG_LOG(ERR)

Definition at line 212 of file vkd3d_common.h.

◆ FIXME

#define FIXME   VKD3D_DBG_LOG(FIXME)

Definition at line 208 of file vkd3d_common.h.

◆ FIXME_ONCE

#define FIXME_ONCE   VKD3D_DBG_LOG_ONCE(FIXME, WARN)

Definition at line 228 of file vkd3d_common.h.

◆ MEMBER_SIZE

#define MEMBER_SIZE (   t,
  m 
)    sizeof(((t *)0)->m)

Definition at line 55 of file vkd3d_common.h.

◆ MESSAGE

#define MESSAGE   VKD3D_DBG_LOG(MESSAGE)

Definition at line 216 of file vkd3d_common.h.

◆ STATIC_ASSERT

#define STATIC_ASSERT (   e)    extern void __VKD3D_STATIC_ASSERT__(int [(e) ? 1 : -1])

Definition at line 47 of file vkd3d_common.h.

◆ TAG_AON9

#define TAG_AON9   VKD3D_MAKE_TAG('A', 'o', 'n', '9')

Definition at line 67 of file vkd3d_common.h.

◆ TAG_DXBC

#define TAG_DXBC   VKD3D_MAKE_TAG('D', 'X', 'B', 'C')

Definition at line 68 of file vkd3d_common.h.

◆ TAG_DXIL

#define TAG_DXIL   VKD3D_MAKE_TAG('D', 'X', 'I', 'L')

Definition at line 69 of file vkd3d_common.h.

◆ TAG_FX10

#define TAG_FX10   VKD3D_MAKE_TAG('F', 'X', '1', '0')

Definition at line 70 of file vkd3d_common.h.

◆ TAG_ISG1

#define TAG_ISG1   VKD3D_MAKE_TAG('I', 'S', 'G', '1')

Definition at line 71 of file vkd3d_common.h.

◆ TAG_ISGN

#define TAG_ISGN   VKD3D_MAKE_TAG('I', 'S', 'G', 'N')

Definition at line 72 of file vkd3d_common.h.

◆ TAG_OSG1

#define TAG_OSG1   VKD3D_MAKE_TAG('O', 'S', 'G', '1')

Definition at line 73 of file vkd3d_common.h.

◆ TAG_OSG5

#define TAG_OSG5   VKD3D_MAKE_TAG('O', 'S', 'G', '5')

Definition at line 74 of file vkd3d_common.h.

◆ TAG_OSGN

#define TAG_OSGN   VKD3D_MAKE_TAG('O', 'S', 'G', 'N')

Definition at line 75 of file vkd3d_common.h.

◆ TAG_PCSG

#define TAG_PCSG   VKD3D_MAKE_TAG('P', 'C', 'S', 'G')

Definition at line 76 of file vkd3d_common.h.

◆ TAG_PSG1

#define TAG_PSG1   VKD3D_MAKE_TAG('P', 'S', 'G', '1')

Definition at line 77 of file vkd3d_common.h.

◆ TAG_RD11

#define TAG_RD11   VKD3D_MAKE_TAG('R', 'D', '1', '1')

Definition at line 78 of file vkd3d_common.h.

◆ TAG_RD11_REVERSE

#define TAG_RD11_REVERSE   0x25441313

Definition at line 90 of file vkd3d_common.h.

◆ TAG_RDEF

#define TAG_RDEF   VKD3D_MAKE_TAG('R', 'D', 'E', 'F')

Definition at line 79 of file vkd3d_common.h.

◆ TAG_RTS0

#define TAG_RTS0   VKD3D_MAKE_TAG('R', 'T', 'S', '0')

Definition at line 80 of file vkd3d_common.h.

◆ TAG_SDBG

#define TAG_SDBG   VKD3D_MAKE_TAG('S', 'D', 'B', 'G')

Definition at line 81 of file vkd3d_common.h.

◆ TAG_SFI0

#define TAG_SFI0   VKD3D_MAKE_TAG('S', 'F', 'I', '0')

Definition at line 82 of file vkd3d_common.h.

◆ TAG_SHDR

#define TAG_SHDR   VKD3D_MAKE_TAG('S', 'H', 'D', 'R')

Definition at line 83 of file vkd3d_common.h.

◆ TAG_SHEX

#define TAG_SHEX   VKD3D_MAKE_TAG('S', 'H', 'E', 'X')

Definition at line 84 of file vkd3d_common.h.

◆ TAG_STAT

#define TAG_STAT   VKD3D_MAKE_TAG('S', 'T', 'A', 'T')

Definition at line 85 of file vkd3d_common.h.

◆ TAG_TEXT

#define TAG_TEXT   VKD3D_MAKE_TAG('T', 'E', 'X', 'T')

Definition at line 86 of file vkd3d_common.h.

◆ TAG_XNAP

#define TAG_XNAP   VKD3D_MAKE_TAG('X', 'N', 'A', 'P')

Definition at line 87 of file vkd3d_common.h.

◆ TAG_XNAS

#define TAG_XNAS   VKD3D_MAKE_TAG('X', 'N', 'A', 'S')

Definition at line 88 of file vkd3d_common.h.

◆ TO_STR

#define TO_STR (   u)    case u: return #u;

◆ TRACE

#define TRACE   VKD3D_DBG_LOG(TRACE)

Definition at line 200 of file vkd3d_common.h.

◆ TRACE_ON

#define TRACE_ON ( )    (vkd3d_dbg_get_level() == VKD3D_DBG_LEVEL_TRACE)

Definition at line 220 of file vkd3d_common.h.

◆ VKD3D_ASSERT

#define VKD3D_ASSERT (   cond)
Value:
do { \
if (!(cond)) \
ERR("Failed assertion: %s\n", #cond); \
} while (0)

Definition at line 49 of file vkd3d_common.h.

◆ VKD3D_BITMAP_SIZE

#define VKD3D_BITMAP_SIZE (   x)    (((x) + 0x1f) >> 5)

Definition at line 396 of file vkd3d_common.h.

◆ vkd3d_clamp

#define vkd3d_clamp (   value,
  lower,
  upper 
)    max(min(value, upper), lower)

Definition at line 65 of file vkd3d_common.h.

◆ VKD3D_DBG_LOG

#define VKD3D_DBG_LOG (   level)
Value:
do { \
const enum vkd3d_dbg_level vkd3d_dbg_level = VKD3D_DBG_LEVEL_##level; \
VKD3D_DBG_PRINTF_##level
GLint level
Definition: gl.h:1546
vkd3d_dbg_level
Definition: vkd3d_common.h:143

Definition at line 163 of file vkd3d_common.h.

◆ VKD3D_DBG_LOG_ONCE

#define VKD3D_DBG_LOG_ONCE (   first_time_level,
  level 
)
Value:
do { \
static bool vkd3d_dbg_next_time; \
const enum vkd3d_dbg_level vkd3d_dbg_level = vkd3d_dbg_next_time \
? VKD3D_DBG_LEVEL_##level : VKD3D_DBG_LEVEL_##first_time_level; \
vkd3d_dbg_next_time = true; \
VKD3D_DBG_PRINTF_##level

Definition at line 168 of file vkd3d_common.h.

◆ VKD3D_DBG_PRINTF

#define VKD3D_DBG_PRINTF (   ...)     vkd3d_dbg_printf(vkd3d_dbg_level, __FUNCTION__, __VA_ARGS__); } while (0)

Definition at line 176 of file vkd3d_common.h.

◆ VKD3D_DBG_PRINTF_ERR

#define VKD3D_DBG_PRINTF_ERR (   ...)    VKD3D_DBG_PRINTF(__VA_ARGS__)

Definition at line 190 of file vkd3d_common.h.

◆ VKD3D_DBG_PRINTF_FIXME

#define VKD3D_DBG_PRINTF_FIXME (   ...)    VKD3D_DBG_PRINTF(__VA_ARGS__)

Definition at line 181 of file vkd3d_common.h.

◆ VKD3D_DBG_PRINTF_MESSAGE

#define VKD3D_DBG_PRINTF_MESSAGE (   ...)    VKD3D_DBG_PRINTF(__VA_ARGS__)

Definition at line 182 of file vkd3d_common.h.

◆ VKD3D_DBG_PRINTF_TRACE

#define VKD3D_DBG_PRINTF_TRACE (   ...)    VKD3D_DBG_PRINTF(__VA_ARGS__)

Definition at line 179 of file vkd3d_common.h.

◆ VKD3D_DBG_PRINTF_WARN

#define VKD3D_DBG_PRINTF_WARN (   ...)    VKD3D_DBG_PRINTF(__VA_ARGS__)

Definition at line 180 of file vkd3d_common.h.

◆ VKD3D_DEBUG_ENV_NAME

#define VKD3D_DEBUG_ENV_NAME (   name)    const char *const vkd3d_dbg_env_name = name

Definition at line 231 of file vkd3d_common.h.

◆ VKD3D_EXPAND

#define VKD3D_EXPAND (   x)    x

Definition at line 61 of file vkd3d_common.h.

◆ VKD3D_EXPAND_AND_STRINGIFY

#define VKD3D_EXPAND_AND_STRINGIFY (   x)    VKD3D_EXPAND(VKD3D_STRINGIFY(x))

Definition at line 63 of file vkd3d_common.h.

◆ VKD3D_MAKE_TAG

#define VKD3D_MAKE_TAG (   ch0,
  ch1,
  ch2,
  ch3 
)
Value:
((uint32_t)(ch0) | ((uint32_t)(ch1) << 8) \
| ((uint32_t)(ch2) << 16) | ((uint32_t)(ch3) << 24))
UINT32 uint32_t
Definition: types.h:75
#define uint32_t
Definition: nsiface.idl:61

Definition at line 57 of file vkd3d_common.h.

◆ VKD3D_MUTEX_INITIALIZER

#define VKD3D_MUTEX_INITIALIZER   PTHREAD_MUTEX_INITIALIZER

Definition at line 557 of file vkd3d_common.h.

◆ VKD3D_NORETURN

#define VKD3D_NORETURN

Definition at line 113 of file vkd3d_common.h.

◆ VKD3D_PRINTF_FUNC

#define VKD3D_PRINTF_FUNC (   fmt,
  args 
)

Definition at line 114 of file vkd3d_common.h.

◆ VKD3D_STRINGIFY

#define VKD3D_STRINGIFY (   x)    #x

Definition at line 62 of file vkd3d_common.h.

◆ VKD3D_UNREACHABLE

#define VKD3D_UNREACHABLE   (void)0

Definition at line 116 of file vkd3d_common.h.

◆ vkd3d_unreachable

#define vkd3d_unreachable ( )
Value:
do { \
ERR("%s:%u: Unreachable code reached.\n", __FILE__, __LINE__); \
} while (0)
#define VKD3D_UNREACHABLE
Definition: vkd3d_common.h:116

Definition at line 119 of file vkd3d_common.h.

◆ VKD3D_UNUSED

#define VKD3D_UNUSED

Definition at line 115 of file vkd3d_common.h.

◆ WARN

#define WARN   VKD3D_DBG_LOG(WARN)

Definition at line 204 of file vkd3d_common.h.

◆ WARN_ON

#define WARN_ON ( )    (vkd3d_dbg_get_level() >= VKD3D_DBG_LEVEL_WARN)

Definition at line 224 of file vkd3d_common.h.

◆ WIN32_LEAN_AND_MEAN

#define WIN32_LEAN_AND_MEAN

Definition at line 23 of file vkd3d_common.h.

Enumeration Type Documentation

◆ vkd3d_dbg_level

Enumerator
VKD3D_DBG_LEVEL_NONE 
VKD3D_DBG_LEVEL_MESSAGE 
VKD3D_DBG_LEVEL_ERR 
VKD3D_DBG_LEVEL_FIXME 
VKD3D_DBG_LEVEL_WARN 
VKD3D_DBG_LEVEL_TRACE 
VKD3D_DBG_LEVEL_NONE 
VKD3D_DBG_LEVEL_ERR 
VKD3D_DBG_LEVEL_FIXME 
VKD3D_DBG_LEVEL_WARN 
VKD3D_DBG_LEVEL_TRACE 

Definition at line 142 of file vkd3d_common.h.

143{
150};
@ VKD3D_DBG_LEVEL_WARN
Definition: vkd3d_common.h:148
@ VKD3D_DBG_LEVEL_NONE
Definition: vkd3d_common.h:144
@ VKD3D_DBG_LEVEL_TRACE
Definition: vkd3d_common.h:149
@ VKD3D_DBG_LEVEL_MESSAGE
Definition: vkd3d_common.h:145
@ VKD3D_DBG_LEVEL_ERR
Definition: vkd3d_common.h:146
@ VKD3D_DBG_LEVEL_FIXME
Definition: vkd3d_common.h:147

Function Documentation

◆ align()

static uint64_t align ( uint64_t  addr,
size_t  alignment 
)
inlinestatic

Definition at line 92 of file vkd3d_common.h.

93{
94 return (addr + (alignment - 1)) & ~(alignment - 1);
95}
_Check_return_ _Ret_maybenull_ _In_ size_t alignment
Definition: align.cpp:48
GLenum const GLvoid * addr
Definition: glext.h:9621

◆ ascii_isupper()

static int ascii_isupper ( int  c)
inlinestatic

Definition at line 413 of file vkd3d_common.h.

414{
415 return 'A' <= c && c <= 'Z';
416}
const GLubyte * c
Definition: glext.h:8905

Referenced by ascii_tolower().

◆ ascii_strcasecmp()

◆ ascii_strncasecmp()

static int ascii_strncasecmp ( const char *  a,
const char *  b,
size_t  n 
)
inlinestatic

Definition at line 423 of file vkd3d_common.h.

424{
425 int c_a, c_b;
426
427 while (n--)
428 {
429 c_a = ascii_tolower(*a++);
430 c_b = ascii_tolower(*b++);
431 if (c_a != c_b || !c_a)
432 return c_a - c_b;
433 }
434 return 0;
435}
GLdouble n
Definition: glext.h:7729

Referenced by sm4_sysval_semantic_from_semantic_name().

◆ ascii_tolower()

static int ascii_tolower ( int  c)
inlinestatic

Definition at line 418 of file vkd3d_common.h.

419{
420 return ascii_isupper(c) ? c - 'A' + 'a' : c;
421}
#define c
Definition: ke_i.h:80
static int ascii_isupper(int c)
Definition: vkd3d_common.h:413

Referenced by ascii_strcasecmp(), and ascii_strncasecmp().

◆ bitmap_clear()

static bool bitmap_clear ( uint32_t *  map,
unsigned int  idx 
)
inlinestatic

Definition at line 398 of file vkd3d_common.h.

399{
400 return map[idx >> 5] &= ~(1u << (idx & 0x1f));
401}
Definition: _map.h:48
unsigned int idx
Definition: utils.c:40

Referenced by vsir_cfg_compute_dominators_recurse().

◆ bitmap_is_set()

static bool bitmap_is_set ( const uint32_t *  map,
unsigned int  idx 
)
inlinestatic

Definition at line 408 of file vkd3d_common.h.

409{
410 return map[idx >> 5] & (1u << (idx & 0x1f));
411}

Referenced by get_external_constant_count(), sm6_parser_dcl_register_builtin(), vsir_block_dominates(), and vsir_cfg_compute_dominators_recurse().

◆ bitmap_set()

static bool bitmap_set ( uint32_t *  map,
unsigned int  idx 
)
inlinestatic

Definition at line 403 of file vkd3d_common.h.

404{
405 return map[idx >> 5] |= (1u << (idx & 0x1f));
406}

◆ debugstr_a()

const char * debugstr_a ( const char *  str)

Definition at line 222 of file debug.c.

223{
224 return debugstr_an(str, SIZE_MAX);
225}
#define SIZE_MAX
Definition: limits.h:49
const WCHAR * str
const char * debugstr_an(const char *str, size_t n)
Definition: debug.c:173

◆ debugstr_an()

const char * debugstr_an ( const char *  str,
size_t  n 
)

Definition at line 173 of file debug.c.

174{
175 char *buffer, *ptr;
176 int escape_char;
177 char c;
178
179 if (!str)
180 return "(null)";
181 if (n == SIZE_MAX)
182 n = strlen(str);
183
184 ptr = buffer = get_buffer();
185
186 *ptr++ = '"';
187 while (n-- && ptr <= buffer + VKD3D_DEBUG_BUFFER_SIZE - 8)
188 {
189 c = *str++;
190
191 if ((escape_char = get_escape_char(c)))
192 {
193 *ptr++ = '\\';
194 *ptr++ = escape_char;
195 continue;
196 }
197
198 if (isprint(c))
199 {
200 *ptr++ = c;
201 }
202 else
203 {
204 *ptr++ = '\\';
205 sprintf(ptr, "%02x", c);
206 ptr += 2;
207 }
208 }
209 *ptr++ = '"';
210
211 if (++n)
212 {
213 *ptr++ = '.';
214 *ptr++ = '.';
215 *ptr++ = '.';
216 }
217 *ptr = '\0';
218
219 return buffer;
220}
#define isprint(c)
Definition: acclib.h:73
_ACRTIMP size_t __cdecl strlen(const char *)
Definition: string.c:1597
GLuint buffer
Definition: glext.h:5915
static PVOID ptr
Definition: dispmode.c:27
#define sprintf
Definition: sprintf.c:45
#define VKD3D_DEBUG_BUFFER_SIZE
Definition: debug.c:41
static char * get_buffer(void)
Definition: debug.c:124
static int get_escape_char(int c)
Definition: debug.c:155

◆ debugstr_guid()

static const char * debugstr_guid ( const GUID *  guid)
inlinestatic

Definition at line 233 of file vkd3d_common.h.

234{
235 if (!guid)
236 return "(null)";
237
238 return vkd3d_dbg_sprintf("{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
239 (unsigned long)guid->Data1, guid->Data2, guid->Data3, guid->Data4[0],
240 guid->Data4[1], guid->Data4[2], guid->Data4[3], guid->Data4[4],
241 guid->Data4[5], guid->Data4[6], guid->Data4[7]);
242}
GUID guid
Definition: version.c:147
const char * vkd3d_dbg_sprintf(const char *fmt,...) VKD3D_PRINTF_FUNC(1

◆ debugstr_hresult()

static const char * debugstr_hresult ( HRESULT  hr)
inlinestatic

Definition at line 244 of file vkd3d_common.h.

245{
246 switch (hr)
247 {
248#define TO_STR(u) case u: return #u;
249 TO_STR(S_OK)
261#undef TO_STR
262 default:
263 return vkd3d_dbg_sprintf("%#x", (int)hr);
264 }
265}
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_INVALIDARG
Definition: ddrawi.h:101
#define E_NOTIMPL
Definition: ddrawi.h:99
#define E_FAIL
Definition: ddrawi.h:102
HRESULT hr
Definition: delayimp.cpp:582
#define S_OK
Definition: intsafe.h:52
#define TO_STR(u)
#define S_FALSE
Definition: winerror.h:3451
#define DXGI_ERROR_NOT_FOUND
Definition: winerror.h:7122
#define DXGI_ERROR_UNSUPPORTED
Definition: winerror.h:7125
#define E_NOINTERFACE
Definition: winerror.h:3479
#define DXGI_ERROR_MORE_DATA
Definition: winerror.h:7123
#define E_POINTER
Definition: winerror.h:3480
#define E_ABORT
Definition: winerror.h:3481

Referenced by d3d12_command_list_copy_incompatible_texture_region(), d3d12_command_queue_submit_locked(), d3d12_device_init(), d3d12_device_mark_as_removed(), d3d12_pipeline_state_find_and_init_uav_counters(), d3d12_pipeline_state_init_compute(), vkd3d_create_compute_pipeline(), vkd3d_create_device(), vkd3d_create_vk_device(), vkd3d_init_null_resources(), vkd3d_instance_init(), vkd3d_join_thread(), vkd3d_serialize_root_signature(), vkd3d_serialize_versioned_root_signature(), vkd3d_uav_clear_state_init(), and vkd3d_wait_for_gpu_fence().

◆ debugstr_w()

const char * debugstr_w ( const WCHAR *  wstr,
size_t  wchar_size 
)

Definition at line 319 of file debug.c.

320{
321 if (wchar_size == 2)
322 return debugstr_w16((const uint16_t *)wstr);
323 return debugstr_w32((const uint32_t *)wstr);
324}
unsigned short uint16_t
Definition: stdint.h:35
static const char * debugstr_w32(const uint32_t *wstr)
Definition: debug.c:273
static const char * debugstr_w16(const uint16_t *wstr)
Definition: debug.c:227

◆ hresult_from_vkd3d_result()

HRESULT hresult_from_vkd3d_result ( int  vkd3d_result)

Definition at line 21 of file error.c.

22{
23 switch (vkd3d_result)
24 {
25 case VKD3D_OK:
26 return S_OK;
28 WARN("Invalid shader.\n");
29 /* fall-through */
30 case VKD3D_ERROR:
31 return E_FAIL;
33 return E_OUTOFMEMORY;
35 return E_INVALIDARG;
37 return E_NOTIMPL;
44 default:
45 FIXME("Unhandled vkd3d result %d.\n", vkd3d_result);
46 return E_FAIL;
47 }
48}
#define FIXME(fmt,...)
Definition: precomp.h:53
#define WARN(fmt,...)
Definition: precomp.h:61
vkd3d_result
Definition: vkd3d_types.h:41
@ VKD3D_ERROR_INVALID_ARGUMENT
Definition: vkd3d_types.h:51
@ VKD3D_ERROR_NOT_IMPLEMENTED
Definition: vkd3d_types.h:55
@ VKD3D_ERROR_KEY_ALREADY_EXISTS
Definition: vkd3d_types.h:57
@ VKD3D_ERROR_INVALID_SHADER
Definition: vkd3d_types.h:53
@ VKD3D_ERROR_MORE_DATA
Definition: vkd3d_types.h:61
@ VKD3D_ERROR
Definition: vkd3d_types.h:47
@ VKD3D_OK
Definition: vkd3d_types.h:43
@ VKD3D_ERROR_OUT_OF_MEMORY
Definition: vkd3d_types.h:49
@ VKD3D_ERROR_NOT_FOUND
Definition: vkd3d_types.h:59
#define DXGI_ERROR_ALREADY_EXISTS
Definition: winerror.h:7160

◆ vkd3d_atomic_add_fetch_u32()

static uint32_t vkd3d_atomic_add_fetch_u32 ( uint32_t volatile *  x,
uint32_t  val 
)
inlinestatic

Definition at line 461 of file vkd3d_common.h.

462{
463#if HAVE_SYNC_ADD_AND_FETCH
464 return __sync_add_and_fetch(x, val);
465#elif defined(_WIN32)
466 return InterlockedAdd((LONG *)x, val);
467#else
468# error "vkd3d_atomic_add_fetch_u32() not implemented for this platform"
469#endif
470}
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
GLuint GLfloat * val
Definition: glext.h:7180
#define InterlockedAdd
Definition: interlocked.h:66
long LONG
Definition: pedump.c:60

Referenced by vkd3d_atomic_decrement_u32(), and vkd3d_atomic_increment_u32().

◆ vkd3d_atomic_add_fetch_u64()

static uint64_t vkd3d_atomic_add_fetch_u64 ( uint64_t volatile *  x,
uint64_t  val 
)
inlinestatic

Definition at line 450 of file vkd3d_common.h.

451{
452#if HAVE_SYNC_ADD_AND_FETCH
453 return __sync_add_and_fetch(x, val);
454#elif defined(_WIN32)
455 return InterlockedAdd64((LONG64 *)x, val);
456#else
457# error "vkd3d_atomic_add_fetch_u64() not implemented for this platform"
458#endif
459}
#define InterlockedAdd64
Definition: interlocked.h:72
int64_t LONG64
Definition: typedefs.h:68

Referenced by vkd3d_atomic_increment_u64().

◆ vkd3d_atomic_compare_exchange_ptr()

static bool vkd3d_atomic_compare_exchange_ptr ( void *volatile *  x,
void *  expected,
void *  val 
)
inlinestatic

Definition at line 498 of file vkd3d_common.h.

499{
500#if HAVE_SYNC_BOOL_COMPARE_AND_SWAP
501 return __sync_bool_compare_and_swap(x, expected, val);
502#elif defined(_WIN32)
504#else
505# error "vkd3d_atomic_compare_exchange_ptr() not implemented for this platform"
506#endif
507}
#define InterlockedCompareExchangePointer
Definition: interlocked.h:144
BOOL expected
Definition: store.c:2000

Referenced by vkd3d_atomic_exchange_ptr().

◆ vkd3d_atomic_compare_exchange_u32()

static bool vkd3d_atomic_compare_exchange_u32 ( uint32_t volatile *  x,
uint32_t  expected,
uint32_t  val 
)
inlinestatic

Definition at line 487 of file vkd3d_common.h.

488{
489#if HAVE_SYNC_BOOL_COMPARE_AND_SWAP
490 return __sync_bool_compare_and_swap(x, expected, val);
491#elif defined(_WIN32)
493#else
494# error "vkd3d_atomic_compare_exchange_u32() not implemented for this platform"
495#endif
496}
#define InterlockedCompareExchange
Definition: interlocked.h:119

Referenced by d3d12_desc_mark_as_modified(), vkd3d_atomic_exchange_u32(), vkd3d_desc_object_cache_get(), vkd3d_desc_object_cache_push(), and vkd3d_view_incref().

◆ vkd3d_atomic_decrement_u32()

static uint32_t vkd3d_atomic_decrement_u32 ( uint32_t volatile *  x)
inlinestatic

Definition at line 477 of file vkd3d_common.h.

478{
479 return vkd3d_atomic_add_fetch_u32(x, ~0u);
480}
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
Definition: glfuncs.h:240
static uint32_t vkd3d_atomic_add_fetch_u32(uint32_t volatile *x, uint32_t val)
Definition: vkd3d_common.h:461

Referenced by d3d12_cache_session_Release(), d3d12_command_allocator_Release(), d3d12_command_list_Release(), d3d12_command_queue_Release(), d3d12_command_signature_decref(), d3d12_command_signature_Release(), d3d12_descriptor_heap_Release(), d3d12_device_Release(), d3d12_fence_decref(), d3d12_fence_Release(), d3d12_heap_Release(), d3d12_heap_resource_destroyed(), d3d12_pipeline_state_Release(), d3d12_query_heap_Release(), d3d12_resource_decref(), d3d12_resource_Release(), d3d12_root_signature_deserializer_Release(), d3d12_root_signature_Release(), d3d12_versioned_root_signature_deserializer_Release(), vkd3d_blob_Release(), vkd3d_desc_object_cache_get(), vkd3d_instance_decref(), vkd3d_shader_cache_decref(), and vkd3d_view_decref().

◆ vkd3d_atomic_exchange_ptr()

static void * vkd3d_atomic_exchange_ptr ( void *volatile *  x,
void *  val 
)
inlinestatic

Definition at line 527 of file vkd3d_common.h.

528{
529#if HAVE_ATOMIC_EXCHANGE_N
530 return __atomic_exchange_n(x, val, __ATOMIC_SEQ_CST);
531#elif defined(_WIN32)
533#else
534 void *expected;
535
536 do
537 {
538 expected = *x;
540
541 return expected;
542#endif
543}
#define InterlockedExchangePointer(Target, Value)
Definition: dshow.h:45
static bool vkd3d_atomic_compare_exchange_ptr(void *volatile *x, void *expected, void *val)
Definition: vkd3d_common.h:498

Referenced by d3d12_desc_replace().

◆ vkd3d_atomic_exchange_u32()

static uint32_t vkd3d_atomic_exchange_u32 ( uint32_t volatile *  x,
uint32_t  val 
)
inlinestatic

Definition at line 509 of file vkd3d_common.h.

510{
511#if HAVE_ATOMIC_EXCHANGE_N
512 return __atomic_exchange_n(x, val, __ATOMIC_SEQ_CST);
513#elif defined(_WIN32)
514 return InterlockedExchange((LONG *)x, val);
515#else
517
518 do
519 {
520 expected = *x;
522
523 return expected;
524#endif
525}
#define InterlockedExchange
Definition: armddk.h:54
static bool vkd3d_atomic_compare_exchange_u32(uint32_t volatile *x, uint32_t expected, uint32_t val)
Definition: vkd3d_common.h:487

Referenced by d3d12_desc_flush_vk_heap_updates_locked(), d3d12_desc_mark_as_modified(), vkd3d_desc_object_cache_get(), and vkd3d_desc_object_cache_push().

◆ vkd3d_atomic_increment_u32()

◆ vkd3d_atomic_increment_u64()

static uint64_t vkd3d_atomic_increment_u64 ( uint64_t volatile *  x)
inlinestatic

Definition at line 472 of file vkd3d_common.h.

473{
474 return vkd3d_atomic_add_fetch_u64(x, 1);
475}
static uint64_t vkd3d_atomic_add_fetch_u64(uint64_t volatile *x, uint64_t val)
Definition: vkd3d_common.h:450

Referenced by d3d12_descriptor_heap_init().

◆ vkd3d_bitmask_is_contiguous()

static bool vkd3d_bitmask_is_contiguous ( unsigned int  mask)
inlinestatic

Definition at line 293 of file vkd3d_common.h.

294{
295 unsigned int i, j;
296
297 for (i = 0, j = 0; i < sizeof(mask) * CHAR_BIT; ++i)
298 {
299 if (mask & (1u << i))
300 ++j;
301 else if (j)
302 break;
303 }
304
305 return vkd3d_popcount(mask) == j;
306}
#define CHAR_BIT
Definition: cabinet.h:45
GLenum GLint GLuint mask
Definition: glext.h:6028
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
static unsigned int vkd3d_popcount(unsigned int v)
Definition: vkd3d_common.h:280

Referenced by shader_sm4_parser_validate_signature(), and vsir_validate_signature_element().

◆ vkd3d_bound_range()

static bool vkd3d_bound_range ( size_t  start,
size_t  count,
size_t  limit 
)
inlinestatic

Definition at line 360 of file vkd3d_common.h.

361{
362#ifdef HAVE_BUILTIN_ADD_OVERFLOW
363 size_t sum;
364
365 return !__builtin_add_overflow(start, count, &sum) && sum <= limit;
366#else
367 return start <= limit && count <= limit - start;
368#endif
369}
GLuint start
Definition: gl.h:1545
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLint limit
Definition: glext.h:10326
static int sum(int x_, int y_)
Definition: ptr2_test.cpp:35

Referenced by bytecode_set_bytes(), d3d12_command_list_IASetVertexBuffers(), d3d12_command_list_SOSetTargets(), d3d12_device_get_copyable_footprints(), d3d12_root_signature_info_count_descriptors(), d3d12_root_signature_init_root_descriptor_tables(), pipeline_state_desc_from_d3d12_stream_desc(), and sm6_parser_resources_load_register_range().

◆ vkd3d_cond_broadcast()

static void vkd3d_cond_broadcast ( struct vkd3d_cond *  cond)
inlinestatic

Definition at line 641 of file vkd3d_common.h.

642{
643#ifdef _WIN32
645#else
646 int ret;
647
648 if ((ret = pthread_cond_broadcast(&cond->cond)))
649 ERR("Failed to broadcast the condition variable, ret %d.\n", ret);
650#endif
651}
VOID WINAPI WakeAllConditionVariable(PCONDITION_VARIABLE ConditionVariable)
Definition: sync.c:91
return ret
Definition: mutex.c:147
pthread_cond_t cond
Definition: vkd3d_common.h:613
#define ERR
Definition: vkd3d_common.h:212

Referenced by d3d12_fence_signal_external_events_locked().

◆ vkd3d_cond_destroy()

static void vkd3d_cond_destroy ( struct vkd3d_cond *  cond)
inlinestatic

Definition at line 666 of file vkd3d_common.h.

667{
668#ifdef _WIN32
669 /* Nothing to do. */
670#else
671 int ret;
672
673 if ((ret = pthread_cond_destroy(&cond->cond)))
674 ERR("Failed to destroy the condition variable, ret %d.\n", ret);
675#endif
676}

Referenced by d3d12_fence_decref(), d3d12_fence_init(), device_worker_stop(), vkd3d_fence_worker_start(), and vkd3d_fence_worker_stop().

◆ vkd3d_cond_init()

static void vkd3d_cond_init ( struct vkd3d_cond *  cond)
inlinestatic

Definition at line 617 of file vkd3d_common.h.

618{
619#ifdef _WIN32
621#else
622 int ret;
623
624 if ((ret = pthread_cond_init(&cond->cond, NULL)))
625 ERR("Failed to initialise the condition variable, ret %d.\n", ret);
626#endif
627}
#define NULL
Definition: types.h:112
VOID WINAPI InitializeConditionVariable(PCONDITION_VARIABLE ConditionVariable)
Definition: sync.c:22

Referenced by d3d12_device_init(), d3d12_fence_init(), and vkd3d_fence_worker_start().

◆ vkd3d_cond_signal()

static void vkd3d_cond_signal ( struct vkd3d_cond *  cond)
inlinestatic

Definition at line 629 of file vkd3d_common.h.

630{
631#ifdef _WIN32
633#else
634 int ret;
635
636 if ((ret = pthread_cond_signal(&cond->cond)))
637 ERR("Failed to signal the condition variable, ret %d.\n", ret);
638#endif
639}
VOID WINAPI WakeConditionVariable(PCONDITION_VARIABLE ConditionVariable)
Definition: sync.c:98

Referenced by d3d12_command_list_update_compute_pipeline(), d3d12_command_list_update_graphics_pipeline(), device_worker_stop(), vkd3d_enqueue_gpu_fence(), vkd3d_enqueue_timeline_semaphore(), and vkd3d_fence_worker_stop().

◆ vkd3d_cond_wait()

static void vkd3d_cond_wait ( struct vkd3d_cond *  cond,
struct vkd3d_mutex *  lock 
)
inlinestatic

Definition at line 653 of file vkd3d_common.h.

654{
655#ifdef _WIN32
657 ERR("Failed to wait on the condition variable, error %lu.\n", GetLastError());
658#else
659 int ret;
660
661 if ((ret = pthread_cond_wait(&cond->cond, &lock->lock)))
662 ERR("Failed to wait on the condition variable, ret %d.\n", ret);
663#endif
664}
BOOL WINAPI SleepConditionVariableCS(PCONDITION_VARIABLE ConditionVariable, PCRITICAL_SECTION CriticalSection, DWORD Timeout)
Definition: sync.c:59
#define INFINITE
Definition: serial.h:102
volatile unsigned int lock
Definition: linux.h:833
rwlock_t lock
Definition: tcpcore.h:0
DWORD WINAPI GetLastError(void)
Definition: except.c:1042

Referenced by d3d12_fence_SetEventOnCompletion(), device_worker_main(), and vkd3d_fence_worker_main().

◆ vkd3d_dbg_get_level()

enum vkd3d_dbg_level vkd3d_dbg_get_level ( void  )

Definition at line 55 of file debug.c.

56{
57 static unsigned int level = ~0u;
58 const char *vkd3d_debug;
59 unsigned int i;
60
61 if (level != ~0u)
62 return level;
63
64 if (!(vkd3d_debug = getenv(vkd3d_dbg_env_name)))
65 vkd3d_debug = "";
66
67 for (i = 0; i < ARRAY_SIZE(debug_level_names); ++i)
68 {
69 if (!strcmp(debug_level_names[i], vkd3d_debug))
70 {
71 level = i;
72 return level;
73 }
74 }
75
76 /* Default debug level. */
78 return level;
79}
#define ARRAY_SIZE(A)
Definition: main.h:20
char *CDECL getenv(const char *name)
Definition: environ.c:227
_ACRTIMP int __cdecl strcmp(const char *, const char *)
Definition: string.c:3324
static const char *const debug_level_names[]
Definition: debug.c:45
const char *const vkd3d_dbg_env_name

◆ vkd3d_dbg_printf()

void vkd3d_dbg_printf ( enum vkd3d_dbg_level  level,
const char *  function,
const char *  fmt,
  ... 
)

◆ vkd3d_dbg_set_log_callback()

void void vkd3d_dbg_set_log_callback ( PFN_vkd3d_log  callback)

Definition at line 119 of file debug.c.

120{
122}
static IPrintDialogCallback callback
Definition: printdlg.c:325
static PFN_vkd3d_log log_callback
Definition: debug.c:81

Referenced by vkd3d_set_log_callback(), and vkd3d_shader_set_log_callback().

◆ vkd3d_dbg_sprintf()

◆ vkd3d_dbg_vsprintf()

const char const char * vkd3d_dbg_vsprintf ( const char *  fmt,
va_list  args 
)

Definition at line 134 of file debug.c.

135{
136 char *buffer;
137
138 buffer = get_buffer();
141 return buffer;
142}
#define vsnprintf
Definition: acwin.h:108
Definition: match.c:390
Definition: dsound.c:943

Referenced by d3d12_command_list_mark_as_invalid(), and d3d12_device_mark_as_removed().

◆ vkd3d_debug_list_has_member()

bool vkd3d_debug_list_has_member ( const char *  string,
const char *  member 
)

Definition at line 348 of file debug.c.

349{
350 char prev_char, next_char;
351 const char *p;
352
353 p = string;
354 while (p)
355 {
356 if ((p = strstr(p, member)))
357 {
358 prev_char = p > string ? p[-1] : 0;
359 p += strlen(member);
360 next_char = *p;
361
362 if (is_option_separator(prev_char) && is_option_separator(next_char))
363 return true;
364 }
365 }
366
367 return false;
368}
_ACRTIMP char *__cdecl strstr(const char *, const char *)
Definition: string.c:3420
GLfloat GLfloat p
Definition: glext.h:8902
char string[160]
Definition: util.h:11
static bool is_option_separator(char c)
Definition: debug.c:343

Referenced by is_extension_disabled().

◆ vkd3d_dlclose()

static int vkd3d_dlclose ( void *  handle)
inlinestatic

Definition at line 751 of file vkd3d_common.h.

752{
753 return 0;
754}

Referenced by vkd3d_destroy_instance(), vkd3d_init_vk_global_procs(), and vkd3d_instance_init().

◆ vkd3d_dlerror()

static const char * vkd3d_dlerror ( void  )
inlinestatic

Definition at line 756 of file vkd3d_common.h.

757{
758 return "Not implemented for this platform.\n";
759}

Referenced by vkd3d_init_vk_global_procs().

◆ vkd3d_dlopen()

static void * vkd3d_dlopen ( const char *  name)
inlinestatic

Definition at line 741 of file vkd3d_common.h.

742{
743 return NULL;
744}

Referenced by vkd3d_init_vk_global_procs().

◆ vkd3d_dlsym()

static void * vkd3d_dlsym ( void *  handle,
const char *  symbol 
)
inlinestatic

Definition at line 746 of file vkd3d_common.h.

747{
748 return NULL;
749}

Referenced by vkd3d_init_vk_global_procs().

◆ vkd3d_env_var_as_uint()

unsigned int vkd3d_env_var_as_uint ( const char *  name,
unsigned int  default_value 
)

Definition at line 326 of file debug.c.

327{
328 const char *value = getenv(name);
329 unsigned long r;
330 char *end_ptr;
331
332 if (value)
333 {
334 errno = 0;
335 r = strtoul(value, &end_ptr, 0);
336 if (!errno && end_ptr != value)
337 return min(r, UINT_MAX);
338 }
339
340 return default_value;
341}
#define errno
Definition: errno.h:120
#define UINT_MAX
Definition: limits.h:27
_ACRTIMP __msvcrt_ulong __cdecl strtoul(const char *, char **, int)
Definition: string.c:1864
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
#define min(a, b)
Definition: monoChain.cc:55
Definition: name.c:39
Definition: pdh_main.c:64

Referenced by vkd3d_create_vk_device().

◆ vkd3d_log2i()

static unsigned int vkd3d_log2i ( unsigned int  x)
inlinestatic

Definition at line 309 of file vkd3d_common.h.

310{
311#ifdef _WIN32
312 /* _BitScanReverse returns the index of the highest set bit,
313 * unlike clz which is 31 - index. */
316 return (unsigned int)result;
317#elif defined(HAVE_BUILTIN_CLZ)
318 return __builtin_clz(x) ^ 0x1f;
319#else
320 static const unsigned int l[] =
321 {
322 ~0u, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3,
323 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
324 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
325 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
326 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
327 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
328 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
329 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
330 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
331 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
332 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
333 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
334 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
335 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
336 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
337 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
338 };
339 unsigned int i;
340
341 return (i = x >> 16) ? (x = i >> 8) ? l[x] + 24
342 : l[i] + 16 : (i = x >> 8) ? l[i] + 8 : l[x];
343#endif
344}
r l[0]
Definition: byte_order.h:168
GLuint64EXT * result
Definition: glext.h:11304
unsigned char _BitScanReverse(unsigned long *_Index, unsigned long _Mask)
Definition: intrin_arm.h:180
uint32_t ULONG
Definition: typedefs.h:59

Referenced by max_miplevel_count().

◆ vkd3d_make_u16()

static uint16_t vkd3d_make_u16 ( uint8_t  low,
uint8_t  high 
)
inlinestatic

Definition at line 376 of file vkd3d_common.h.

377{
378 return low | ((uint16_t)high << 8);
379}
#define uint16_t
Definition: nsiface.idl:60

Referenced by byte_reverse(), sm1_version(), tpf_write_signature(), and write_sm4_rdef().

◆ vkd3d_make_u32()

static uint32_t vkd3d_make_u32 ( uint16_t  low,
uint16_t  high 
)
inlinestatic

Definition at line 381 of file vkd3d_common.h.

382{
383 return low | ((uint32_t)high << 16);
384}

Referenced by byte_reverse(), sm1_version(), tpf_write_shdr(), write_sm1_type(), write_sm1_uniforms(), write_sm4_rdef(), and write_sm4_type().

◆ vkd3d_memmem()

static void * vkd3d_memmem ( const void *  haystack,
size_t  haystack_len,
const void *  needle,
size_t  needle_len 
)
inlinestatic

Definition at line 346 of file vkd3d_common.h.

347{
348 const char *str = haystack;
349
350 while (haystack_len >= needle_len)
351 {
352 if (!memcmp(str, needle, needle_len))
353 return (char *)str;
354 ++str;
355 --haystack_len;
356 }
357 return NULL;
358}
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
Definition: string.c:2807
static const char haystack[]
Definition: editor.c:190

◆ vkd3d_mutex_destroy()

static void vkd3d_mutex_destroy ( struct vkd3d_mutex *  lock)
inlinestatic

◆ vkd3d_mutex_init()

static void vkd3d_mutex_init ( struct vkd3d_mutex *  lock)
inlinestatic

Definition at line 560 of file vkd3d_common.h.

561{
562#ifdef _WIN32
564#else
565 int ret;
566
567 if ((ret = pthread_mutex_init(&lock->lock, NULL)))
568 ERR("Failed to initialise the mutex, ret %d.\n", ret);
569#endif
570}
VOID WINAPI InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection)
Definition: synch.c:687

Referenced by d3d12_command_queue_init(), d3d12_descriptor_heap_init(), d3d12_device_init(), d3d12_device_init_pipeline_cache(), d3d12_fence_init(), d3d12_heap_init(), vkd3d_fence_worker_start(), vkd3d_gpu_va_allocator_init(), vkd3d_private_store_init(), vkd3d_queue_create(), and vkd3d_shader_open_cache().

◆ vkd3d_mutex_lock()

static void vkd3d_mutex_lock ( struct vkd3d_mutex *  lock)
inlinestatic

Definition at line 572 of file vkd3d_common.h.

573{
574#ifdef _WIN32
576#else
577 int ret;
578
579 if ((ret = pthread_mutex_lock(&lock->lock)))
580 ERR("Failed to lock the mutex, ret %d.\n", ret);
581#endif
582}
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)

Referenced by command_list_add_descriptor_heap(), command_list_flush_vk_heap_updates(), d3d12_cache_session_destroy(), d3d12_cache_session_init(), d3d12_command_list_bind_descriptor_heap(), d3d12_command_queue_CopyTileMappings(), d3d12_command_queue_ExecuteCommandLists(), d3d12_command_queue_flush_ops(), d3d12_command_queue_flush_ops_locked(), d3d12_command_queue_record_as_blocked(), d3d12_command_queue_Signal(), d3d12_command_queue_UpdateTileMappings(), d3d12_command_queue_Wait(), d3d12_device_add_descriptor_heap(), d3d12_device_flush_blocked_queues_once(), d3d12_device_remove_descriptor_heap(), d3d12_fence_add_pending_timeline_signal(), d3d12_fence_add_vk_semaphore(), d3d12_fence_create_vk_fence(), d3d12_fence_destroy_vk_objects(), d3d12_fence_GetCompletedValue(), d3d12_fence_release_vk_semaphore(), d3d12_fence_remove_vk_semaphore(), d3d12_fence_SetEventOnCompletion(), d3d12_fence_signal(), d3d12_fence_signal_cpu_timeline_semaphore(), d3d12_fence_signal_timeline_semaphore(), d3d12_fence_update_pending_value(), d3d12_pipeline_state_find_compiled_pipeline(), d3d12_pipeline_state_put_pipeline_to_cache(), device_worker_main(), device_worker_stop(), vkd3d_bind_heap_memory(), vkd3d_enqueue_gpu_fence(), vkd3d_enqueue_timeline_semaphore(), vkd3d_fence_worker_main(), vkd3d_fence_worker_stop(), vkd3d_get_private_data(), vkd3d_gpu_va_allocator_allocate(), vkd3d_gpu_va_allocator_cleanup(), vkd3d_gpu_va_allocator_dereference(), vkd3d_gpu_va_allocator_free(), vkd3d_queue_acquire(), vkd3d_queue_destroy(), vkd3d_queue_update_sequence_number(), vkd3d_render_pass_cache_find(), vkd3d_set_private_data(), vkd3d_set_private_data_interface(), and vkd3d_shader_cache_lock().

◆ vkd3d_mutex_unlock()

static void vkd3d_mutex_unlock ( struct vkd3d_mutex *  lock)
inlinestatic

Definition at line 584 of file vkd3d_common.h.

585{
586#ifdef _WIN32
588#else
589 int ret;
590
591 if ((ret = pthread_mutex_unlock(&lock->lock)))
592 ERR("Failed to unlock the mutex, ret %d.\n", ret);
593#endif
594}
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)

Referenced by command_list_add_descriptor_heap(), command_list_flush_vk_heap_updates(), d3d12_cache_session_destroy(), d3d12_cache_session_init(), d3d12_command_list_bind_descriptor_heap(), d3d12_command_queue_CopyTileMappings(), d3d12_command_queue_ExecuteCommandLists(), d3d12_command_queue_flush_ops(), d3d12_command_queue_flush_ops_locked(), d3d12_command_queue_record_as_blocked(), d3d12_command_queue_Signal(), d3d12_command_queue_UpdateTileMappings(), d3d12_command_queue_Wait(), d3d12_command_queue_wait_binary_semaphore_locked(), d3d12_command_queue_wait_locked(), d3d12_device_add_descriptor_heap(), d3d12_device_flush_blocked_queues_once(), d3d12_device_remove_descriptor_heap(), d3d12_fence_add_pending_timeline_signal(), d3d12_fence_add_vk_semaphore(), d3d12_fence_create_vk_fence(), d3d12_fence_destroy_vk_objects(), d3d12_fence_GetCompletedValue(), d3d12_fence_release_vk_semaphore(), d3d12_fence_remove_vk_semaphore(), d3d12_fence_SetEventOnCompletion(), d3d12_fence_signal(), d3d12_fence_signal_cpu_timeline_semaphore(), d3d12_fence_signal_timeline_semaphore(), d3d12_fence_update_pending_value(), d3d12_pipeline_state_find_compiled_pipeline(), d3d12_pipeline_state_put_pipeline_to_cache(), device_worker_main(), device_worker_stop(), vkd3d_bind_heap_memory(), vkd3d_enqueue_gpu_fence(), vkd3d_enqueue_timeline_semaphore(), vkd3d_fence_worker_main(), vkd3d_fence_worker_stop(), vkd3d_get_private_data(), vkd3d_gpu_va_allocator_allocate(), vkd3d_gpu_va_allocator_cleanup(), vkd3d_gpu_va_allocator_dereference(), vkd3d_gpu_va_allocator_free(), vkd3d_queue_destroy(), vkd3d_queue_release(), vkd3d_queue_update_sequence_number(), vkd3d_render_pass_cache_find(), vkd3d_set_private_data(), vkd3d_set_private_data_interface(), and vkd3d_shader_cache_unlock().

◆ vkd3d_object_range_overflow()

static bool vkd3d_object_range_overflow ( size_t  start,
size_t  count,
size_t  size 
)
inlinestatic

Definition at line 371 of file vkd3d_common.h.

372{
373 return (~(size_t)0 - start) / size < count;
374}
GLsizeiptr size
Definition: glext.h:5919

Referenced by sm6_parser_type_table_init().

◆ vkd3d_parse_debug_options()

uint64_t vkd3d_parse_debug_options ( const char *  string,
const struct vkd3d_debug_option *  options,
unsigned int  option_count 
)

Definition at line 370 of file debug.c.

372{
373 uint64_t flags = 0;
374 unsigned int i;
375
376 for (i = 0; i < option_count; ++i)
377 {
378 const struct vkd3d_debug_option *opt = &options[i];
379
380 if (vkd3d_debug_list_has_member(string, opt->name))
381 flags |= opt->flag;
382 }
383
384 return flags;
385}
UINT64 uint64_t
Definition: types.h:77
GLbitfield flags
Definition: glext.h:7161
bool vkd3d_debug_list_has_member(const char *string, const char *member)
Definition: debug.c:348
const char * name
Definition: vkd3d_common.h:271

Referenced by vkd3d_init_config_flags(), and vkd3d_shader_init_config_flags().

◆ vkd3d_parse_version()

static void vkd3d_parse_version ( const char *  version,
int *  major,
int *  minor 
)
inlinestatic

Definition at line 678 of file vkd3d_common.h.

679{
680 *major = atoi(version);
681
682 while (isdigit(*version))
683 ++version;
684 if (*version == '.')
685 ++version;
686
687 *minor = atoi(version);
688}
#define isdigit(c)
Definition: acclib.h:68
static const WCHAR version[]
Definition: asmname.c:66
_ACRTIMP int __cdecl atoi(const char *)
Definition: string.c:1720
#define minor(rdev)
Definition: propsheet.cpp:929
#define major(rdev)
Definition: propsheet.cpp:928

Referenced by vkd3d_get_vk_version(), and vkd3d_shader_get_version().

◆ vkd3d_popcount()

static unsigned int vkd3d_popcount ( unsigned int  v)
inlinestatic

Definition at line 280 of file vkd3d_common.h.

281{
282#ifdef _MSC_VER
283 return __popcnt(v);
284#elif defined(__MINGW32__)
285 return __builtin_popcount(v);
286#else
287 v -= (v >> 1) & 0x55555555;
288 v = (v & 0x33333333) + ((v >> 2) & 0x33333333);
289 return (((v + (v >> 4)) & 0x0f0f0f0f) * 0x01010101) >> 24;
290#endif
291}
const GLdouble * v
Definition: gl.h:2040
__INTRIN_INLINE unsigned int __popcnt(unsigned int value)
Definition: intrin_x86.h:1458

Referenced by allocate_register(), d3d12_pipeline_state_init_uav_counters(), insert_clip_planes_before_ret(), spirv_compiler_emit_shader_signature_outputs(), spirv_compiler_emit_store_shader_output(), vkd3d_bitmask_is_contiguous(), vsir_program_insert_clip_planes(), and vsir_write_mask_component_count().

◆ vkd3d_set_thread_name()

void vkd3d_set_thread_name ( const char *  name)

Definition at line 405 of file debug.c.

406{
407#ifdef _WIN32
409 WCHAR *wname;
410 int ret;
411
412 InitOnceExecuteOnce(&init_once, resolve_SetThreadDescription, NULL, NULL);
413 if (!pfn_SetThreadDescription)
414 return;
415
416 if ((ret = MultiByteToWideChar(CP_UTF8, 0, name, -1, NULL, 0)) <= 0)
417 return;
418
419 if (!(wname = vkd3d_malloc(ret * sizeof(*wname))))
420 return;
421
422 if ((ret = MultiByteToWideChar(CP_UTF8, 0, name, -1, wname, ret)) > 0)
423 pfn_SetThreadDescription(GetCurrentThread(), wname);
424
425 vkd3d_free(wname);
426#elif defined(HAVE_PTHREAD_SETNAME_NP_2)
427 pthread_setname_np(pthread_self(), name);
428#elif defined(HAVE_PTHREAD_SETNAME_NP_1)
429 pthread_setname_np(name);
430#endif
431}
#define MultiByteToWideChar
Definition: compat.h:110
BOOL WINAPI InitOnceExecuteOnce(_Inout_ PINIT_ONCE InitOnce, _In_ __callback PINIT_ONCE_FN InitFn, _Inout_opt_ PVOID Parameter, _Outptr_opt_result_maybenull_ LPVOID *Context)
Definition: InitOnce.c:12
short WCHAR
Definition: pedump.c:58
#define CP_UTF8
Definition: nls.h:20
static INIT_ONCE init_once
Definition: vfwcapture.c:981
static void vkd3d_free(void *ptr)
Definition: vkd3d_memory.h:52
static void * vkd3d_malloc(size_t size)
Definition: vkd3d_memory.h:28
HANDLE WINAPI GetCurrentThread(void)
Definition: proc.c:1195
RTL_RUN_ONCE INIT_ONCE
Definition: winbase.h:3654
#define INIT_ONCE_STATIC_INIT
Definition: winbase.h:591

Referenced by device_worker_main(), and vkd3d_fence_worker_main().

◆ vkd3d_u32_compare()

◆ vkd3d_u64_compare()

static int vkd3d_u64_compare ( uint64_t  x,
uint64_t  y 
)
inlinestatic

Definition at line 391 of file vkd3d_common.h.

392{
393 return (x > y) - (x < y);
394}

Referenced by vkd3d_shader_cache_compare_key().