URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b921da3b74d71598c47da2bc46e445e3813d7933
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:39:05 2017 +0200
radeonsi: use a threaded context even for debug contexts
Reviewed-by: Marek Olšák <[email protected]>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=1a6d9e087a2171ae4d0f2ac2697ba4042fbad4c1
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:39:05 2017 +0200
radeonsi: record and dump time of flush
Reviewed-by: Marek Olšák <[email protected]>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b07569ad8b7bbe6ea33c984013a2f2607cd7ddaf
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:39:01 2017 +0200
ddebug: optionally handle transfer commands like draws
Transfer commands can have associated GPU operations.
Enabled by passing GALLIUM_DDEBUG=transfers.
Reviewed-by: Marek Olšák <[email protected]>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=18fd2a859de51353187f993ea2852bebe1ea5734
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:39:01 2017 +0200
ddebug: dump context and before/after times of draws
Reviewed-by: Marek Olšák <[email protected]>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ba2f2b6f2aa05dab01389cf27a5001d0d43adcb4
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:39:00 2017 +0200
ddebug: generalize print_named_xxx via a PRINT_NAMED macro
Reviewed-by: Marek Olšák <[email protected]>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=c9fefa062b369056eb4c3ef82b529b0acc4cc88a
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:38:59 2017 +0200
ddebug: rewrite to always use a threaded approach
This patch has multiple goals:
1. Off-load the writing of records in 'always' mode to another thread
for performance.
2. Allow using ddebug with threaded contexts. This really forces us to
move some of the "after_draw" handling into another thread.
3. Simplify the different modes of ddebug, both in the code and in
the user interface, i.e. GALLIUM_DDEBUG. In particular, there's
no 'pipelined' anymore, since we're always pipelined; and 'noflush'
is replaced by 'flush', since we no longer flush by default.
4. Fix the fences in pipelining mode. They previously relied on writes
via pipe_context::clear_buffer. However, on radeonsi, those could
(quite reasonably) end up in the SDMA buffer. So we use the newly
added PIPE_FLUSH_{TOP,BOTTOM}_OF_PIPE fences instead.
5. Improve pipelined mode overall, using the finer grained information
provided by the new fences.
Overall, the result is that pipelined mode should be more useful, and
using ddebug in default mode is much less invasive, in the sense that
it changes the overall driver behavior less (which is kind of crucial
for a driver debugging tool).
An example of the new hang debug output:
Gallium debugger active.
Hang detection timeout is 1000ms.
GPU hang detected, collecting information...
Draw # driver prev BOP TOP BOP dump file
-------------------------------------------------------------
2 YES YES YES NO
/home/nha/ddebug_dumps/shader_runner_19919_00000000
3 YES NO YES NO
/home/nha/ddebug_dumps/shader_runner_19919_00000001
4 YES NO YES NO
/home/nha/ddebug_dumps/shader_runner_19919_00000002
5 YES NO YES NO
/home/nha/ddebug_dumps/shader_runner_19919_00000003
Done.
We can see that there were almost certainly 4 draws in flight when
the hang happened: the top-of-pipe fence was signaled for all 4 draws,
the bottom-of-pipe fence for none of them. In virtually all cases,
we'd expect the first draw in the list to be at fault, but due to the
GPU parallelism, it's possible (though highly unlikely) that one of
the later draws causes a component to get stuck in a way that prevents
the earlier draws from making progress as well.
(In the above example, there were actually only 3 draws truly in flight:
the last draw is a blit that waits for the earlier draws; however, its
top-of-pipe fence is emitted before the cache flush and wait, and so
the fact that the draw hasn't truly started yet can only be seen from a
closer inspection of GPU state.)
Acked-by: Marek Olšák <[email protected]>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e8bb8758ddfa884b55abf8648af9cb7239bc1f66
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:38:58 2017 +0200
ddebug: use an atomic increment when numbering files
Reviewed-by: Marek Olšák <[email protected]>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d6710fe874cce4c01d48279e25210279a06c7543
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:38:58 2017 +0200
dd/util: extract dd_get_debug_filename_and_mkdir
Reviewed-by: Marek Olšák <[email protected]>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8491fcafab2e5e534c5b38606eef4873adac4987
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:38:57 2017 +0200
gallium/u_dump: add and use util_dump_transfer_usage
Reviewed-by: Marek Olšák <[email protected]>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=9b8033a4a7e52a4db4d60ce6e70fb30c9a9224fe
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:38:56 2017 +0200
gallium/u_dump: add util_dump_ns
Reviewed-by: Marek Olšák <[email protected]>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=6f4a03b08acc58945d717324e88b3d2bcec5d354
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:38:55 2017 +0200
gallium/u_dump: export util_dump_ptr
Change format to %p while we're at it.
Reviewed-by: Marek Olšák <[email protected]>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=125a915052757f906c872e3fa2952e455bb646f3
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:38:54 2017 +0200
radeonsi: implement PIPE_FLUSH_{TOP,BOTTOM}_OF_PIPE
v2: use uncached system memory for the fence, and use the CPU to
clear it so we never read garbage when checking the fence
Reviewed-by: Marek Olšák <[email protected]>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e4627ac8fb5422e98311724cce04f31b65cc2b3e
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:38:53 2017 +0200
radeonsi: document some subtle details of fence_finish & fence_server_sync
v2: remove the change to si_fence_server_sync, we'll handle that more
robustly
Reviewed-by: Marek Olšák <[email protected]>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=14b9fa75e4c35ccccb767004ba19212901aae404
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:38:53 2017 +0200
gallium: add pipe_context::callback
For running post-draw operations inside the driver thread. ddebug will
use it.
Reviewed-by: Marek Olšák <[email protected]>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=2bdfbb0e5380f63f044151a12e149745fa672a77
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:38:52 2017 +0200
gallium/u_threaded: implement pipe_context::set_log_context
Reviewed-by: Marek Olšák <[email protected]>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=244536d3d6b40c1763d1e2b3e7676665afa69101
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:38:51 2017 +0200
gallium/u_threaded: avoid syncs for get_query_result
Queries should still get marked as flushed when flushes are executed
asynchronously in the driver thread.
To this end, the management of the unflushed_queries list is moved into
the driver thread.
Reviewed-by: Marek Olšák <[email protected]>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=609a230375cae7710b2a9f40a42341b4cd853a3e
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:38:50 2017 +0200
gallium/u_threaded: implement asynchronous flushes
This requires out-of-band creation of fences, and will be signaled to
the pipe_context::flush implementation by a special TC_FLUSH_ASYNC flag.
v2:
- remove an incorrect assertion
- handle fence_server_sync for unsubmitted fences by
relying on the improved cs_add_fence_dependency
- only implement asynchronous flushes on amdgpu
Reviewed-by: Marek Olšák <[email protected]>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=11b380ed0c61344b461ad2d1b66bf81e2c46b84b
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:38:50 2017 +0200
gallium/u_threaded: mark queries flushed only for non-deferred flushes
The driver uses (and must use) the flushed flag of queries as a hint that
it does not have to check for synchronization with currently queued up
commands. Deferred flushes do not actually flush queued up commands, so
we must not set the flushed flag for them.
Found by inspection.
Reviewed-by: Marek Olšák <[email protected]>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=78a4750d9155bf810348e2b2bf05ee3366f56f43
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:38:49 2017 +0200
radeonsi: move fence functions to si_fence.c
Reviewed-by: Marek Olšák <[email protected]>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e6dbc804a87aef34db138c607ba435d701703bc6
Author: Nicolai Hähnle <[email protected]>
Date: Thu Nov 9 14:00:22 2017 +0100
winsys/amdgpu: handle cs_add_fence_dependency for deferred/unsubmitted
fences
The idea is to fix the following interleaving of operations
that can arise from deferred fences:
Thread 1 / Context 1 Thread 2 / Context 2
-------------------- --------------------
f = deferred flush
<------- application-side synchronization ------->
fence_server_sync(f)
...
flush()
flush()
We will now stall in fence_server_sync until the flush of context 1
has completed.
This scenario was unlikely to occur previously, because applications
seem to be doing
Thread 1 / Context 1 Thread 2 / Context 2
-------------------- --------------------
f = glFenceSync()
glFlush()
<------- application-side synchronization ------->
glWaitSync(f)
... and indeed they probably *have* to use this ordering to avoid
deadlocks in the GLX model, where all GL operations conceptually
go through a single connection to the X server. However, it's less
clear whether applications have to do this with other WSI (i.e. EGL).
Besides, even this sequence of GL commands can be translated into
the Gallium-level sequence outlined above when Gallium threading
and asynchronous flushes are used. So it makes sense to be more
robust.
As a side effect, we no longer busy-wait on submission_in_progress.
We won't enable asynchronous flushes on radeon, but add a
cs_add_fence_dependency stub anyway to document the potential
issue.
Reviewed-by: Marek Olšák <[email protected]>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=1e5c9cf5902e31d3e038c565588527be35434306
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:38:48 2017 +0200
gallium: add PIPE_FLUSH_{TOP,BOTTOM}_OF_PIPE bits
These bits are intended to be used by the ddebug hang detection and are
named in analogy to the Vulkan stage bits (and the corresponding Radeon
pipeline event).
Hang detection needs fences on the granularity of individual commands,
which nothing else really covers. The closest alternative would have
been PIPE_QUERY_GPU_FINISHED, but (a) queries are a per-context object
and we really want a per-screen object, (b) queries don't offer a
wait with timeout, and (c) in any case, PIPE_QUERY_GPU_FINISHED is
meant to imply that GPU caches are flushed, which the new bits
explicitly aren't.
Reviewed-by: Marek Olšák <[email protected]>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ea6df1ce37a53f039a28782114062b1ab7cebab4
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:38:47 2017 +0200
gallium: add PIPE_FLUSH_ASYNC and PIPE_FLUSH_HINT_FINISH
Also document some subtleties of pipe_context::flush.
Reviewed-by: Marek Olšák <[email protected]>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e3a8013de8ca854d21225be00f123ccf63f9060f
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:38:46 2017 +0200
util/u_queue: add util_queue_fence_wait_timeout
v2:
- style fixes
- fix missing timeout handling in futex path
Reviewed-by: Marek Olšák <[email protected]>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f1a364878431c8c5f4fd38b40b9766449e49f552
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:38:45 2017 +0200
threads: update for late C11 changes
C11 threads were changed to use struct timespec instead of xtime, and
thrd_sleep got a second argument.
See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1554.htm and
http://en.cppreference.com/w/c/thread/{thrd_sleep,cnd_timedwait,mtx_timedlock}
Note that cnd_timedwait is spec'd to be relative to TIME_UTC /
CLOCK_REALTIME.
v2: Fix Windows build errors. Tested with a default Appveyor config
that uses Visual Studio 2013. Judging from Brian's email and
random internet sources, Visual Studio 2015 does have timespec
and timespec_get, hence the _MSC_VER-based guard which I have
not tested.
Cc: Jose Fonseca <[email protected]>
Cc: Brian Paul <[email protected]>
Reviewed-by: Marek Olšák <[email protected]> (v1)
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=c50743f61c533fe8bfed0a432ef74fcf6b4cea24
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:38:44 2017 +0200
gallium: remove unused and deprecated u_time.h
Cc: Jose Fonseca <[email protected]>
Reviewed-by: Marek Olšák <[email protected]>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=222a2fb99859f3ac237def59d40413bb1a464f11
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:38:44 2017 +0200
util: move os_time.[ch] to src/util
Reviewed-by: Marek Olšák <[email protected]>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f76a6cb337f979fb26d3233d7e0ff208ec8885bb
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:38:43 2017 +0200
radeonsi: always use async compiles when creating shader/compute states
With Gallium threaded contexts, creating shader/compute states is
effectively a screen operation, so we should not use context state.
In particular, this allows us to avoid using the context's LLVM
TargetMachine.
This isn't an issue yet because u_threaded_context filters out non-async
debug callbacks, and we disable threaded contexts for debug contexts.
However, we may want to change that in the future.
Reviewed-by: Marek Olšák <[email protected]>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b650fc09c3a35ca624aad5fe4b5c34867708f116
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:38:42 2017 +0200
radeonsi: fix potential use-after-free of debug callbacks
Found by inspection.
Reviewed-by: Marek Olšák <[email protected]>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=dd7c273e873f20474e2af1959ab2928292020941
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:38:39 2017 +0200
radeonsi: move pipe debug callback to si_context
Reviewed-by: Marek Olšák <[email protected]>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=185061aef41401bead9e5d15aa00ffa2fcf7ef8c
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:38:41 2017 +0200
u_queue: add util_queue_finish for waiting for previously added jobs
Schedule one job for every thread, and wait on a barrier inside the job
execution function.
v2: avoid alloca (fixes Windows build error)
Reviewed-by: Marek Olšák <[email protected]> (v1)
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f0d3a4de75fdb865c058aba8614f0fe6ba5f0969
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:38:40 2017 +0200
util: move pipe_barrier into src/util and rename to util_barrier
The #if guard is probably not 100% equivalent to the previous PIPE_OS
check, but if anything it should be an over-approximation (are there
pthread implementations without barriers?), so people will get either
a good implementation or compile errors that are easy to fix.
Reviewed-by: Marek Olšák <[email protected]>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=28c95cdb299f56c8224446368fb464b7b1d44a6c
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:38:38 2017 +0200
gallium: add async debug message forwarding helper
v2: use util_vasprintf for Windows portability
Reviewed-by: Marek Olšák <[email protected]> (v1)
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=637240d824051b8b99f35c165cabe31106612f2a
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:38:36 2017 +0200
st/mesa: guard sampler views changes with a mutex
Some locking is unfortunately required, because well-formed GL programs
can have multiple threads racing to access the same texture, e.g.: two
threads/contexts rendering from the same texture, or one thread destroying
a context while the other is rendering from or modifying a texture.
Since even the simple mutex caused noticable slowdowns in the piglit
drawoverhead micro-benchmark, this patch uses a slightly more involved
approach to keep locks out of the fast path:
- the initial lookup of sampler views happens without taking a lock
- a per-texture lock is only taken when we have to modify the sampler
view(s)
- since each thread mostly operates only on the entry corresponding to
its context, the main issue is re-allocation of the sampler view array
when it needs to be grown, but the old copy is not freed
Old copies of the sampler views array are kept around in a linked list
until the entire texture object is deleted. The total memory wasted
in this way is roughly equal to the size of the current sampler views
array.
Fixes non-deterministic memory corruption in some
dEQP-EGL.functional.sharing.gles2.multithread.* tests, e.g.
dEQP-EGL.functional.sharing.gles2.multithread.simple.images.texture_source.create_texture_render
Reviewed-by: Marek Olšák <[email protected]>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8d20c660a9831c367d98ed2fea25e5276e6466f2
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:38:34 2017 +0200
st/mesa: re-arrange st_finalize_texture
Move the early-out for surface-based textures earlier. This narrows the
scope of the locking added in a follow-up commit.
Fix one remaining case of initializing a surface-based texture
without properly finalizing it.
Reviewed-by: Marek Olšák <[email protected]>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0dcf30e55091a0c78fc84d98f5ea36286f3f1961
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:38:33 2017 +0200
gallium: clarify the constraints on sampler_view_destroy
r600 expects the context that created the sampler view to still be alive
(there is a per-context list of sampler views).
svga currently bails when the context of destruction is not the same as
creation.
The GL state tracker, which is the only one that runs into the
multi-context subtleties (due to share groups), already guarantees that
sampler views are destroyed before their context of creation is destroyed.
Most drivers are context-agnostic, so the warning message in
pipe_sampler_view_release doesn't really make sense.
Reviewed-by: Marek Olšák <[email protected]>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0f54ee6072d067027c389d61abc7aea8956b2c1e
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:38:32 2017 +0200
radeonsi: reduce the scope of sel->mutex in si_shader_select_with_key
We only need the lock to guard changes in the variant linked list. The
actual compilation can happen outside the lock, since we use the ready
fence as a guard.
v2: fix double-unlock
Reviewed-by: Marek Olšák <[email protected]>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4f493c79eee01724152b6e56c71b81303e3bc54e
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:38:32 2017 +0200
radeonsi: use ready fences on all shaders, not just optimized ones
There's a race condition between si_shader_select_with_key and
si_bind_XX_shader:
Thread 1 Thread 2
-------- --------
si_shader_select_with_key
begin compiling the first
variant
(guarded by sel->mutex)
si_bind_XX_shader
select first_variant by default
as state->current
si_shader_select_with_key
match state->current and early-out
Since thread 2 never takes sel->mutex, it may go on rendering without a
PM4 for that shader, for example.
The solution taken by this patch is to broaden the scope of
shader->optimized_ready to a fence shader->ready that applies to
all shaders. This does not hurt the fast path (if anything it makes
it faster, because we don't explicitly check is_optimized).
It will also allow reducing the scope of sel->mutex locks, but this is
deferred to a later commit for better bisectability.
Fixes
dEQP-EGL.functional.sharing.gles2.multithread.simple.buffers.bufferdata_render
Reviewed-by: Marek Olšák <[email protected]>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d1ff0826370cb1cfbcf741c8eb35caf1fddd7d52
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:38:31 2017 +0200
u_queue: add a futex-based implementation of fences
Fences are now 4 bytes instead of 96 bytes (on my 64-bit system).
Signaling a fence is a single atomic operation in the fast case plus a
syscall in the slow case.
Testing if a fence is signaled is the same as before (a simple comparison),
but waiting on a fence is now no more expensive than just testing it in
the fast (already signaled) case.
v2:
- style fixes
- use p_atomic_xxx macros with the right barriers
Acked-by: Marek Olšák <[email protected]>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=574c59d4f935cccfa18f7054c660200f8be791ad
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:38:30 2017 +0200
u_queue: add util_queue_fence_reset
Reviewed-by: Marek Olšák <[email protected]>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=1b9d5ece557bc4ac1d69cc133dc533bb5a863dde
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:38:29 2017 +0200
u_queue: export util_queue_fence_signal
Reviewed-by: Marek Olšák <[email protected]>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b20f955bc17960736f333006dd8c2f0c9aa20e68
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:38:29 2017 +0200
u_queue: group fence functions together
Reviewed-by: Marek Olšák <[email protected]>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0a7f17cf5b591330a257ed0485f759d4e600972c
Author: Nicolai Hähnle <[email protected]>
Date: Fri Nov 3 15:19:57 2017 +0100
util/u_atomic: add p_atomic_xchg
The closest to it in the old-style gcc builtins is __sync_lock_test_and_set,
however, that is only guaranteed to work with values 0 and 1 and only
provides an acquire barrier. I also don't know about other OSes, so we
provide a simple & stupid emulation via p_atomic_cmpxchg.
Reviewed-by: Marek Olšák <[email protected]>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b4b2a951c8b4c1315c06cb4d58dbc787949daa4c
Author: Nicolai Hähnle <[email protected]>
Date: Sun Oct 22 17:38:26 2017 +0200
util: move futex helpers into futex.h
v2: style fixes
Reviewed-by: Marek Olšák <[email protected]> (v1)
_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit