> -----Original Message----- > From: tf (mobile) [mailto:tfo...@sci.utah.edu] > Sent: Wednesday, February 15, 2012 8:53 PM > To: zhigang.g...@linux.intel.com > Cc: dbn.li...@gmail.com; nob...@dreamwidth.org; > mesa-dev@lists.freedesktop.org > Subject: Re: [Mesa-dev] [PATCH v3 1/2] configure.ac: Enable GLX_USE_TLS > if possible. > > Even if the system supports tls, the x server may not have been built with it. > As i recall, there is an issue with mismatching tls between x and drivers... > Can a non-tls server load a tls driver? AFAIK, a mesa built without TLS can work with a xserver built with TLS enabled, Actually, this is current situation. Xserver will enable TLS if the system support It, but mesa will not enable TLS by default no matter the system support it.
IMO, the only relevant part may be the indirect GLX in xserver which will load DRI driver and thus mesa. But xserver has its own glapi.c and will not share the mesa's glapi.c, then the mismatch will not be a big issue. If I missed anything, please correct me. Anyway, I still think it's better to keep the xserver and mesa have the same configuration when they are built/running on the same system. Right? Besides that issue, I think mesa should check whether the system support TLS and tls model before enable it. So I still want this patchset get accepted. Any comment? > > Anyway, if there's an issue there, this check must be more complicated -- it > can't be just, "does the system support this", it would instead need to be > "can the system support this and is it enabled in the x server." > > IIRC Eric and ajax and Dan know more, but there should also be a > discussion of this in the xorg-devel and/or mesa archives. > > -tom > > On 15.02.2012, at 12:41, zhigang.g...@linux.intel.com wrote: > > > From: Zhigang Gong <zhigang.g...@linux.intel.com> > > > > If the system support tls, we prefer to enable it by default just as > > xserver does. Actually, the checking code is copied from > > xserver/configure.ac. > > According to nobled's suggestion, move the checking before > enable_asm. > > As if tls_model is not supported, then asm may can't work correctly. > > Then we check the tls model first, and if doesn't support it, we need > > to disable the asm code. > > Here is the reference: > > https://bugs.freedesktop.org/show_bug.cgi?id=35268 > > > > Signed-off-by: Zhigang Gong <zhigang.g...@linux.intel.com> > > Reviewed-by: Dan Nicholson <dbn.li...@gmail.com> > > --- > > acinclude.m4 | 41 > +++++++++++++++++++++++++++++++++++++++++ > > configure.ac | 25 ++++++++++++++++++++++--- > > 2 files changed, 63 insertions(+), 3 deletions(-) > > > > diff --git a/acinclude.m4 b/acinclude.m4 index a5b389d..23805f3 > 100644 > > --- a/acinclude.m4 > > +++ b/acinclude.m4 > > @@ -117,3 +117,44 @@ if test "$enable_pic" != no; then fi > > AC_SUBST([PIC_FLAGS]) > > ])# MESA_PIC_FLAGS > > + > > +dnl TLS detection > > +AC_DEFUN([MESA_TLS], > > +[AC_MSG_CHECKING(for thread local storage (TLS) support) > > +AC_CACHE_VAL(ac_cv_tls, [ > > + ac_cv_tls=none > > + keywords="__thread __declspec(thread)" > > + for kw in $keywords ; do > > + AC_TRY_COMPILE([int $kw test;], [], ac_cv_tls=$kw) > > + done > > +]) > > +AC_MSG_RESULT($ac_cv_tls) > > + > > +if test "$ac_cv_tls" != "none"; then > > + STRICT_CFLAGS="-pedantic -Werror" > > + # Add -Werror=attributes if supported (gcc 4.2 & later) > > + AC_MSG_CHECKING([if $CC supports -Werror=attributes]) > > + save_CFLAGS="$CFLAGS" > > + CFLAGS="$CFLAGS $STRICT_CFLAGS -Werror=attributes" > > + AC_TRY_COMPILE([int test;], [], > > + [STRICT_CFLAGS="$STRICT_CFLAGS > -Werror=attributes" > > + AC_MSG_RESULT([yes])], > > + [AC_MSG_RESULT([no])]) > > + CFLAGS="$save_CFLAGS $STRICT_CFLAGS" > > + > > + AC_MSG_CHECKING(for tls_model attribute support) > > + AC_CACHE_VAL(ac_cv_tls_model, [ > > + AC_TRY_COMPILE([int $ac_cv_tls > __attribute__((tls_model("initial-exec"))) test;], [], > > + ac_cv_tls_model=yes, ac_cv_tls_model=no) > > + ]) > > + AC_MSG_RESULT($ac_cv_tls_model) > > + > > + if test "x$ac_cv_tls_model" = "xyes" ; then > > + TLS=$ac_cv_tls' __attribute__((tls_model(\"initial-exec\")))' > > + else > > + TLS=$ac_cv_tls > > + fi > > + DEFINES="$DEFINES -DTLS=\"$TLS\"" > > + CFLAGS="$save_CFLAGS" > > +fi > > +]) > > diff --git a/configure.ac b/configure.ac index b2b1ab8..3226a09 100644 > > --- a/configure.ac > > +++ b/configure.ac > > @@ -433,6 +433,11 @@ AC_SUBST([VG_LIB_GLOB]) > > AC_SUBST([GLAPI_LIB_GLOB]) > > > > dnl > > +dnl Check tls model support > > +dnl > > +MESA_TLS > > + > > +dnl > > dnl Arch/platform-specific settings > > dnl > > AC_ARG_ENABLE([asm], > > @@ -446,6 +451,14 @@ ASM_FLAGS="" > > MESA_ASM_SOURCES="" > > GLAPI_ASM_SOURCES="" > > AC_MSG_CHECKING([whether to enable assembly]) > > + > > +if test "x$ac_cv_tls_model" = "xno" ; then dnl dnl If tls model is > > +not supported, disable asm. > > +dnl > > + enable_asm=no > > +fi > > + > > test "x$enable_asm" = xno && AC_MSG_RESULT([no]) # disable if cross > > compiling on x86/x86_64 since we must run gen_matypes if test > > "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then @@ > > -1102,9 +1115,15 @@ dnl > > > > AC_ARG_ENABLE([glx-tls], > > [AS_HELP_STRING([--enable-glx-tls], > > - [enable TLS support in GLX @<:@default=disabled@:>@])], > > - [GLX_USE_TLS="$enableval"], > > - [GLX_USE_TLS=no]) > > + [enable TLS support in GLX @<:@default=auto@:>@])], > > + [GLX_USE_TLS=$enableval > > + if test "x$GLX_USE_TLS" = "xyes" && test "${ac_cv_tls}" = "none" ; > then > > + AC_MSG_ERROR([GLX with TLS support requested, but the > compiler does not support it.]) > > + fi], > > + [GLX_USE_TLS=no > > + if test "${ac_cv_tls}" != "none" ; then > > + GLX_USE_TLS=yes > > + fi]) > > AC_SUBST(GLX_TLS, ${GLX_USE_TLS}) > > > > AS_IF([test "x$GLX_USE_TLS" = xyes], > > -- > > 1.7.4.4 > > > > _______________________________________________ > > mesa-dev mailing list > > mesa-dev@lists.freedesktop.org > > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev