u_queue: add a futex-based implementation of fences
authorNicolai Hähnle <nicolai.haehnle@amd.com>
Sun, 22 Oct 2017 15:38:31 +0000 (17:38 +0200)
committerNicolai Hähnle <nicolai.haehnle@amd.com>
Thu, 9 Nov 2017 10:37:39 +0000 (11:37 +0100)
commitd1ff0826370cb1cfbcf741c8eb35caf1fddd7d52
tree26f2e7b1c5f19cb9092fddfc1ce94797c7b9ce4a
parent574c59d4f935cccfa18f7054c660200f8be791ad
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 <marek.olsak@amd.com>
src/util/u_queue.c
src/util/u_queue.h