meson: Do not use GLX_USE_TLS on Android.
authorBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Sat, 3 Aug 2019 16:13:52 +0000 (18:13 +0200)
committerBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Sat, 3 Aug 2019 16:40:04 +0000 (18:40 +0200)
The asm code expects a specific kind of implementation, but Android
uses something different (emutls).

Turns out mesa has a fallback with pthread_getspecific, with an
optimizaiton if only a single thread is used. emutls also uses
getspecific, so lets just use the optimized mesa implementation.

Fixes: 20294dceebc "mesa: Enable asm unconditionally, now that gen_matypes is gone."
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
meson.build

index 7e8fee2ee2a1c62efe199f06babdbbccecff8b5a..2ca672e492f9c41ba486be637111231e97987bc5 100644 (file)
@@ -375,7 +375,11 @@ if with_egl and not (with_platform_drm or with_platform_surfaceless or with_plat
   endif
 endif
 
-pre_args += '-DGLX_USE_TLS'
+# Android uses emutls for versions <= P/28. For GLX_USE_TLS we need ELF TLS.
+if not with_platform_android or get_option('platform-sdk-version') >= 29
+  pre_args += '-DGLX_USE_TLS'
+endif
+
 if with_glx != 'disabled'
   if not (with_platform_x11 and with_any_opengl)
     error('Cannot build GLX support without X11 platform support and at least one OpenGL API')