Quoting Nicolai Hähnle (2017-10-10 09:30:31) > On 10.10.2017 04:45, Timothy Arceri wrote: > > While modern pthread mutexes are very fast, they still incur a call to an > > external DSO and overhead of the generality and features of pthread mutexes. > > Most mutexes in mesa only needs lock/unlock, and the idea here is that we > > can > > inline the atomic operation and make the fast case just two intructions. > > Mutexes are subtle and finicky to implement, so we carefully copy the > > implementation from Ulrich Dreppers well-written and well-reviewed paper: > > > > "Futexes Are Tricky" > > http://www.akkadia.org/drepper/futex.pdf > > > > We implement "mutex3", which gives us a mutex that has no syscalls on > > uncontended lock or unlock. Further, the uncontended case boils down to a > > cmpxchg and an untaken branch and the uncontended unlock is just a locked > > decr > > and an untaken branch. We use __builtin_expect() to indicate that > > contention > > is unlikely so that gcc will put the contention code out of the main code > > flow. > > > > A fast mutex only supports lock/unlock, can't be recursive or used with > > condition variables. We keep the pthread mutex implementation around as > > full_mtx_t for the few places where we use condition variables or recursive > > locking. For platforms or compilers where futex and atomics aren't > > available, > > mtx_t falls back to the pthread mutex. > > > > The pthread mutex lock/unlock overhead shows up on benchmarks for CPU bound > > applications. Most CPU bound cases are helped and some of our internal > > bind_buffer_object heavy benchmarks gain up to 10%. > > > > Signed-off-by: Kristian Høgsberg <[email protected]> > > Signed-off-by: Timothy Arceri <[email protected]> > > --- > > configure.ac | 3 ++ > > src/util/simple_mtx.h | 146 > > ++++++++++++++++++++++++++++++++++++++++++++++++++ > > Add to util/Makefile.sources
Also add to util/meson.build Dylan
signature.asc
Description: signature
_______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
