use futexes in Mesa on archs with atomics
tested by matthieu@ naddy@ and myself
This commit is contained in:
parent
ea9d0bc072
commit
e374dad6a5
@ -1,4 +1,4 @@
|
||||
# $OpenBSD: Makefile.bsd-wrapper,v 1.29 2020/01/22 02:49:17 jsg Exp $
|
||||
# $OpenBSD: Makefile.bsd-wrapper,v 1.30 2020/02/20 02:55:46 jsg Exp $
|
||||
|
||||
.include <bsd.own.mk>
|
||||
.include <bsd.xconf.mk>
|
||||
@ -31,11 +31,19 @@ VULKAN_DRIVERS= radeon
|
||||
WITH_LLVM= --enable-llvm
|
||||
.endif
|
||||
|
||||
.if ${MACHINE_ARCH} == "hppa" || ${MACHINE_ARCH} == "m88k" || \
|
||||
${MACHINE_ARCH} == "sh"
|
||||
WITH_FUTEX= --disable-futex
|
||||
.else
|
||||
WITH_FUTEX= --enable-futex
|
||||
.endif
|
||||
|
||||
CONFIGURE_ARGS= --with-dri-drivers=${DRI_DRIVERS} \
|
||||
--with-gallium-drivers=${GALLIUM_DRIVERS} \
|
||||
--with-vulkan-drivers=${VULKAN_DRIVERS} \
|
||||
--disable-silent-rules \
|
||||
${WITH_LLVM} \
|
||||
${WITH_FUTEX} \
|
||||
--disable-glx-tls \
|
||||
--disable-regen-sources \
|
||||
--enable-gles1 --enable-gles2 \
|
||||
|
@ -1044,6 +1044,16 @@ LIBS="$save_LIBS"
|
||||
dnl Check for futex for fast inline simple_mtx_t.
|
||||
AC_CHECK_HEADER([linux/futex.h], [DEFINES="$DEFINES -DHAVE_LINUX_FUTEX_H"])
|
||||
|
||||
AC_ARG_ENABLE([futex],
|
||||
[AS_HELP_STRING([--disable-futex],
|
||||
[disable futex use @<:@default=enabled@:>@])],
|
||||
[enable_futex="$enableval"],
|
||||
[enable_futex=yes])
|
||||
|
||||
if test "x$enable_futex" = xyes; then
|
||||
DEFINES="$DEFINES -DUSE_FUTEX"
|
||||
fi
|
||||
|
||||
dnl SELinux awareness.
|
||||
AC_ARG_ENABLE([selinux],
|
||||
[AS_HELP_STRING([--enable-selinux],
|
||||
|
@ -1040,6 +1040,8 @@ foreach h : ['xlocale.h', 'sys/sysctl.h', 'linux/futex.h', 'endian.h', 'dlfcn.h'
|
||||
endif
|
||||
endforeach
|
||||
|
||||
pre_args += '-DUSE_FUTEX'
|
||||
|
||||
foreach f : ['strtof', 'mkostemp', 'posix_memalign', 'timespec_get', 'memfd_create', 'random_r', 'flock', 'arc4random_buf']
|
||||
if cc.has_function(f)
|
||||
pre_args += '-DHAVE_@0@'.format(f.to_upper())
|
||||
|
@ -28,7 +28,7 @@
|
||||
|
||||
#include "c11/threads.h"
|
||||
|
||||
#if defined(__GNUC__) && defined(HAVE_LINUX_FUTEX_H)
|
||||
#if defined(__GNUC__) && defined(USE_FUTEX)
|
||||
|
||||
/* mtx_t - Fast, simple mutex
|
||||
*
|
||||
|
@ -50,7 +50,7 @@ extern "C" {
|
||||
#define UTIL_QUEUE_INIT_RESIZE_IF_FULL (1 << 1)
|
||||
#define UTIL_QUEUE_INIT_SET_FULL_THREAD_AFFINITY (1 << 2)
|
||||
|
||||
#if defined(__GNUC__) && defined(HAVE_LINUX_FUTEX_H)
|
||||
#if defined(__GNUC__) && defined(USE_FUTEX)
|
||||
#define UTIL_QUEUE_FENCE_FUTEX
|
||||
#else
|
||||
#define UTIL_QUEUE_FENCE_STANDARD
|
||||
|
Loading…
Reference in New Issue
Block a user