mesa/src/util
Yonggang Luo 296eb2918c util: Remove the need of _MTX_INITIALIZER_NP in simple_mtx.h
The usage of _MTX_INITIALIZER_NP is a problem. Sure, the code builds on
Linux and Windows, and it even usually works, but is problematic.
It means that Windows lock debugging tools cannot be used with that code.
So we remove _MTX_INITIALIZER_NP to gain the following benefit:
  Aligning to the C11 standard threads.h definitions.
  Improving portability of the threading code to better support Windows.
This change removes one of the most prolific uses of _MTX_INITIALIZER_NP by
slightly increasing the cost of simple_mtx_lock when targeting platforms that
don't support futex, but it's cost are far less than the cost of syscall,
so the affect are negligible.

The futex code path are not affected. And Windows 8 and upper also
supports the futex codepath, so it's only affect the Windows version < 8, MacOS
or other platforms that doesn't support for futex.

Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17122>
2022-08-31 15:40:20 +00:00
..
format util/format,vulkan/format: update p_format for Vulkan vertex buffers 2022-08-30 19:02:11 +00:00
indices util: add missing c99_compat.h includes 2022-06-02 13:09:15 +00:00
perf util/perf: support and prefer perfetto for cpu trace 2022-08-26 21:47:44 +00:00
sha1 util: trim trailing space for files src/util/**/* 2022-03-21 17:57:15 +00:00
tests util: Fix [-Wdeprecated-declarations] in mesa-sha1_test.cpp 2022-08-23 15:19:16 +00:00
00-mesa-defaults.conf radeonsi: remove the prim_restart_tri_strips_only option 2022-08-30 04:57:43 +00:00
anon_file.c util: Add os_create_anonymous_file support on win32 2022-08-12 16:34:32 +00:00
anon_file.h util: Add os_create_anonymous_file support on win32 2022-08-12 16:34:32 +00:00
bigmath.h
bitpack_helpers.h util: Add util_bitpack_[su]fixed_clamp helpers 2022-08-30 04:28:34 +00:00
bitscan.c
bitscan.h util: remove needless c99_compat.h includes 2022-06-02 13:09:16 +00:00
bitset.h util: Constify __bitset_test_range 2022-07-19 19:19:33 +00:00
blob.c util/blob: use memcpy in read functions 2022-07-07 12:25:05 +00:00
blob.h util/blob: Add align helpers 2022-04-22 19:38:52 +00:00
build_id.c
build_id.h
cnd_monotonic.h c11/threads: Re-align return values for timed waits 2021-11-16 10:02:08 -06:00
compiler.h util: remove needless c99_compat.h includes 2022-06-02 13:09:16 +00:00
compress.c meson, util: Make zlib optional again 2021-03-19 19:33:59 +00:00
compress.h meson, util: Make zlib optional again 2021-03-19 19:33:59 +00:00
crc32.c util: trim trailing space for files src/util/**/* 2022-03-21 17:57:15 +00:00
crc32.h util: trim trailing space for files src/util/**/* 2022-03-21 17:57:15 +00:00
dag.c util/dag: Add dag_add_edge_max_data 2021-11-17 13:41:47 +00:00
dag.h util/dag: Add dag_add_edge_max_data 2021-11-17 13:41:47 +00:00
debug.c util/debug: add an enable parsing helper 2022-05-26 07:14:45 +00:00
debug.h util/debug: add an enable parsing helper 2022-05-26 07:14:45 +00:00
detect_os.h
disk_cache.c util/disk_cache: Add new mesa-db cache type 2022-08-04 17:52:49 +00:00
disk_cache.h util/disk_cache: Add new mesa-db cache type 2022-08-04 17:52:49 +00:00
disk_cache_os.c util: Fixes memory leak in create_cache_item_header_and_blob 2022-08-12 18:06:36 +00:00
disk_cache_os.h util/disk_cache: Add new mesa-db cache type 2022-08-04 17:52:49 +00:00
double.c
double.h
driconf.h gallium/dri2: make protected buffer checks opt-in 2022-08-09 14:38:06 +00:00
driconf_static.py driconf: Fix unhandled tags in static conf 2022-01-14 22:09:50 +00:00
enum_operators.h util: tune signatures of generated enum operators 2021-05-14 11:00:52 +00:00
fast_idiv_by_const.c util: Use util_sign_extend in fast_idiv_by_const 2022-07-06 11:23:18 +00:00
fast_idiv_by_const.h
fast_urem_by_const.h
format_r11g11b10f.h
format_rgb9e5.h include: drop c99_math.h 2022-06-02 13:09:16 +00:00
format_srgb.h util: remove needless c99_compat.h includes 2022-06-02 13:09:16 +00:00
format_srgb.py python: drop python2 support 2021-08-14 21:44:32 +00:00
fossilize_db.c util/fossilize_db: Fix double free in error handling. 2022-01-24 01:09:21 +00:00
fossilize_db.h util/fossilize_db: Add extra flock mutex. 2021-08-08 13:34:42 +02:00
futex.h util: Fix vs2019 build error 2022-08-17 21:17:17 +00:00
half_float.c util: Keep quiet NaNs quiet when converting to half float. 2022-05-02 23:36:50 +00:00
half_float.h util: Add accessor for util_cpu_caps 2021-02-26 18:31:19 +00:00
hash_table.c util/hash_table: Clear special 0/1 entries for u64 hash table too 2021-11-02 11:02:18 -07:00
hash_table.h util: remove needless c99_compat.h includes 2022-06-02 13:09:16 +00:00
libsync.h libsync: Fix compiler warning 2022-08-02 00:59:48 +00:00
list.h util/list: rename LIST_ENTRY() to list_entry() 2022-07-28 10:10:44 +00:00
log.c util/log: Don't print an extra \n if the format string had one. 2022-04-05 21:37:46 +00:00
log.h util/perf: add cpu_trace.h 2022-08-26 21:47:44 +00:00
macros.h util: Disable usage of __attribute__((__const__)) when the compiler is clang 2022-08-12 18:33:24 +00:00
memstream.c util: open_memstream also support on MacOS 2022-08-09 17:23:17 +00:00
memstream.h includes: add windows lean and mean guard. 2022-01-19 21:54:58 +00:00
mesa-sha1.c util: add SHA1 printing and comparison functions 2021-11-26 11:58:27 +00:00
mesa-sha1.h util: remove needless c99_compat.h includes 2022-06-02 13:09:16 +00:00
mesa_cache_db.c util/disk_cache: Add new mesa-db cache type 2022-08-04 17:52:49 +00:00
mesa_cache_db.h util/disk_cache: Add new mesa-db cache type 2022-08-04 17:52:49 +00:00
meson.build util: Remove the need of _MTX_INITIALIZER_NP in simple_mtx.h 2022-08-31 15:40:20 +00:00
os_file.c util: replaced ENODATA with ENOATTR for non-Linux systems 2021-06-28 21:12:24 +03:00
os_file.h misc: replace #ifdef\s\s__cplusplus with #ifdef\s__cplusplus 2022-04-21 14:43:39 +00:00
os_memory.h
os_memory_aligned.h util: trim trailing space for files src/util/**/* 2022-03-21 17:57:15 +00:00
os_memory_debug.h util: trim trailing space for files src/util/**/* 2022-03-21 17:57:15 +00:00
os_memory_fd.c util: trim trailing space for files src/util/**/* 2022-03-21 17:57:15 +00:00
os_memory_fd.h util: trim trailing space for files src/util/**/* 2022-03-21 17:57:15 +00:00
os_memory_stdc.h util: trim trailing space for files src/util/**/* 2022-03-21 17:57:15 +00:00
os_misc.c util: Implement os_get_available_system_memory on Win32 2022-08-12 15:05:47 +00:00
os_misc.h misc: replace #ifdef\s\s__cplusplus with #ifdef\s__cplusplus 2022-04-21 14:43:39 +00:00
os_socket.c
os_socket.h
os_time.c util: trim trailing space for files src/util/**/* 2022-03-21 17:57:15 +00:00
os_time.h util: trim trailing space for files src/util/**/* 2022-03-21 17:57:15 +00:00
ptralloc.h util: remove needless c99_compat.h includes 2022-06-02 13:09:16 +00:00
ralloc.c util: add freelist allocator with mark/sweep 2022-08-30 18:21:44 +00:00
ralloc.h util: add freelist allocator with mark/sweep 2022-08-30 18:21:44 +00:00
rand_xor.c
rand_xor.h
rb_tree.c
rb_tree.h util: Convert rb_tree_test to gtest 2021-10-20 21:40:31 -07:00
reallocarray.h util/reallocarray: add errno.h include. 2022-07-29 06:47:28 +10:00
register_allocate.c util/ra: Fix numeric overflow during bitset allocation 2021-12-19 13:10:26 -08:00
register_allocate.h ra: Add fast-path support for register classes of contiguous regs. 2021-06-04 19:08:57 +00:00
register_allocate_internal.h util/ra: use adjacency matrix for undirected graph 2021-12-14 09:19:01 +00:00
rgtc.c util: trim trailing space for files src/util/**/* 2022-03-21 17:57:15 +00:00
rgtc.h
rounding.h include: drop c99_math.h 2022-06-02 13:09:16 +00:00
rwlock.h
set.c util/set: Respect found in search_or_add_pre_hashed 2022-04-22 19:38:52 +00:00
set.h util/set: add macro for destructively iterating set entries 2021-04-07 22:57:27 +00:00
simple_mtx.c util: Remove the need of _MTX_INITIALIZER_NP in simple_mtx.h 2022-08-31 15:40:20 +00:00
simple_mtx.h util: Remove the need of _MTX_INITIALIZER_NP in simple_mtx.h 2022-08-31 15:40:20 +00:00
slab.c util/slab: add slab_zalloc 2022-03-09 08:48:59 +00:00
slab.h util/slab: add slab_zalloc 2022-03-09 08:48:59 +00:00
softfloat.c util: Keep quiet NaNs quiet when converting to half float. 2022-05-02 23:36:50 +00:00
softfloat.h
sparse_array.c
sparse_array.h util: use c11 alignas instead of rolling our own 2022-06-14 15:08:37 +00:00
streaming-load-memcpy.c streaming-memcpy: move to src/util/ and compile unconditionally 2022-06-07 03:33:20 +00:00
streaming-load-memcpy.h streaming-memcpy: move to src/util/ and compile unconditionally 2022-06-07 03:33:20 +00:00
string_buffer.c
string_buffer.h
strndup.h
strtod.c
strtod.h
texcompress_rgtc_tmp.h util: trim trailing space for files src/util/**/* 2022-03-21 17:57:15 +00:00
timespec.h util: Remove unused function timespec_passed 2022-06-09 17:23:34 +00:00
u_atomic.c util/u_atomic: fix build on clang archs without 64-bit atomics 2022-02-28 14:28:23 +00:00
u_atomic.h u_atomic: Add a helper for pointer compare-exchange 2022-08-30 17:27:48 +00:00
u_call_once.c util: Add api util_call_once_with_context 2022-08-31 15:40:20 +00:00
u_call_once.h util: Add api util_call_once_with_context 2022-08-31 15:40:20 +00:00
u_cpu_detect.c util: Move detect_done out of struct util_cpu_caps_t 2022-08-29 18:06:07 +00:00
u_cpu_detect.h util: Move detect_done out of struct util_cpu_caps_t 2022-08-29 18:06:07 +00:00
u_debug.c util: remove now unused debug_assert 2022-07-10 00:50:35 +00:00
u_debug.h util: remove now unused debug_assert 2022-07-10 00:50:35 +00:00
u_debug_describe.c util: import u_debug_refcnt, u_hash_table, u_debug_describe from gallium 2021-10-01 14:51:23 +00:00
u_debug_describe.h util: import u_debug_refcnt, u_hash_table, u_debug_describe from gallium 2021-10-01 14:51:23 +00:00
u_debug_memory.c util/list: rename LIST_ENTRY() to list_entry() 2022-07-28 10:10:44 +00:00
u_debug_refcnt.c u_debug_refcnt: Don't loop for initial refcounts if the initial value is huge 2022-05-02 16:58:20 +00:00
u_debug_refcnt.h util: import u_debug_refcnt, u_hash_table, u_debug_describe from gallium 2021-10-01 14:51:23 +00:00
u_debug_stack.c util/u_debug: Use 'initialized' instead of 'first' 2022-06-10 06:56:04 +00:00
u_debug_stack.h misc: Replace #ifdef\t__cplusplus with #ifdef\s\s__cplusplus 2022-04-21 14:43:39 +00:00
u_debug_stack_android.cpp
u_debug_symbol.c u_debug_symbol: Allow re-init of DbgHelp to work around already-initialized issues 2022-05-02 16:58:20 +00:00
u_debug_symbol.h misc: Replace #ifdef\t__cplusplus with #ifdef\s\s__cplusplus 2022-04-21 14:43:39 +00:00
u_dl.c gallium/util: Move u_dl and u_pointer to src/util 2022-07-01 21:15:07 +00:00
u_dl.h gallium/util: Move u_dl and u_pointer to src/util 2022-07-01 21:15:07 +00:00
u_drm.h
u_dynarray.h replace 0 with NULL for NULL pointers 2022-01-10 22:53:32 +00:00
u_endian.h util: trim trailing space for files src/util/**/* 2022-03-21 17:57:15 +00:00
u_fifo.h util/u_trace: make u_trace usable for other than gallium drivers 2021-09-10 14:58:28 +03:00
u_hash_table.c util: import u_debug_refcnt, u_hash_table, u_debug_describe from gallium 2021-10-01 14:51:23 +00:00
u_hash_table.h util: import u_debug_refcnt, u_hash_table, u_debug_describe from gallium 2021-10-01 14:51:23 +00:00
u_idalloc.c util/idalloc: add util_idalloc_alloc_range 2021-07-09 10:05:46 +00:00
u_idalloc.h util/idalloc: add util_idalloc_alloc_range 2021-07-09 10:05:46 +00:00
u_math.c util: trim trailing space for files src/util/**/* 2022-03-21 17:57:15 +00:00
u_math.h util,nir: Move mask_sign_extend from opt_load_store_vectorize to util 2022-07-06 11:23:18 +00:00
u_memory.h util: trim trailing space for files src/util/**/* 2022-03-21 17:57:15 +00:00
u_memset.h util: add optimised memset64 2021-02-22 00:30:46 +00:00
u_mm.c util: trim trailing space for files src/util/**/* 2022-03-21 17:57:15 +00:00
u_mm.h util: trim trailing space for files src/util/**/* 2022-03-21 17:57:15 +00:00
u_pointer.h gallium/util: Move u_dl and u_pointer to src/util 2022-07-01 21:15:07 +00:00
u_printf.c printf: extract clovers printf impl 2022-08-04 23:53:49 +00:00
u_printf.h printf: extract clovers printf impl 2022-08-04 23:53:49 +00:00
u_process.c util: Use DETECT_OS_WINDOWS instead WIN32 in u_process.c 2022-08-12 15:05:47 +00:00
u_process.h util/u_process: protect entrypoints for c++ 2022-01-14 20:17:44 +00:00
u_qsort.cpp util: trim trailing space for files src/util/**/* 2022-03-21 17:57:15 +00:00
u_qsort.h util: Add qsort_r/s args adapter for MSVC and BSD/macOS 2021-06-24 20:05:12 +00:00
u_queue.c util: Use literal instead call to list_inithead in u_queue.c 2022-08-22 20:22:50 +00:00
u_queue.h util/queue: use simple_mtx_t for finish_lock 2021-10-05 23:46:14 +00:00
u_string.h util: fix gcc vsnprintf overflow 2021-02-19 11:05:38 +00:00
u_thread.h util: Implement util_thread_get_time_nano on win32 2022-08-12 15:05:47 +00:00
u_vector.c util/vector: make util_vector_init harder to misuse 2021-10-08 00:15:11 +00:00
u_vector.h util: trim trailing space for files src/util/**/* 2022-03-21 17:57:15 +00:00
u_worklist.c util: Add a generic worklist implementation 2022-04-25 23:50:57 +00:00
u_worklist.h util: Add a generic worklist implementation 2022-04-25 23:50:57 +00:00
vl_rbsp.h util/vl: move gallium vl_vlc.h and vl_rbsp.h to shared code. 2021-11-15 21:57:28 +00:00
vl_vlc.h util/vl_vlc: Support compiling in C++ 2022-05-17 21:02:24 +00:00
vma.c
vma.h
xmlconfig.c util/xmlconfig: allow drivers to override option values 2022-08-12 06:06:48 +00:00
xmlconfig.h util: trim trailing space for files src/util/**/* 2022-03-21 17:57:15 +00:00
xxd.py python: drop python2 support 2021-08-14 21:44:32 +00:00
xxhash.h xxhash: update fallthrough comments 2020-12-01 10:04:41 +01:00