While most of our development and testing is on x86-64, some of our major consumers of the driver are on i386 still. This meant they aren't taking advantage of SSE for floating point math or cmov instructions, unless the user went out of their way to choose a -march flag (unlikely). Given that the driver can only get probed on i965 and newer chipsets, which only support core2 and above CPUs, this is safe.
Improves (32-bit) GLbenchmark 2.1 offscreen performance by .76 +/- 0.35% (n=19) --- configure.ac | 17 +++++++++++++++++ src/mesa/drivers/dri/i965/Makefile.am | 3 ++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index e769eda..0af3176 100644 --- a/configure.ac +++ b/configure.ac @@ -492,6 +492,23 @@ if test "x$enable_asm" = xyes; then fi AC_SUBST([MESA_ASM_FILES]) +# If the user hasn't set an explicit -march flag, then autodetect a few for +# use by the i965 driver. +if echo $CFLAGS | grep -v march > /dev/null; then + case "$host_cpu" in + i?86 | x86_64) + save_CFLAGS="$CFLAGS" + AC_MSG_CHECKING([whether $CC supports -march=core2]) + CFLAGS="$save_CFLAGS -march=core2" + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[]])], + [AC_MSG_RESULT([yes]); MARCH_CORE2="-march=core2"], + [AC_MSG_RESULT([no]); MARCH_CORE2=""]) + CFLAGS="$save_CFLAGS" + ;; + esac +fi +AC_SUBST([MARCH_CORE2]) + dnl Check to see if dlopen is in default libraries (like Solaris, which dnl has it in libc), or if libdl is needed to get it. AC_CHECK_FUNC([dlopen], [DEFINES="$DEFINES -DHAVE_DLOPEN"], diff --git a/src/mesa/drivers/dri/i965/Makefile.am b/src/mesa/drivers/dri/i965/Makefile.am index dc140df..d5d0631 100644 --- a/src/mesa/drivers/dri/i965/Makefile.am +++ b/src/mesa/drivers/dri/i965/Makefile.am @@ -38,7 +38,8 @@ AM_CFLAGS = \ $(DEFINES) \ $(API_DEFINES) \ $(VISIBILITY_CFLAGS) \ - $(INTEL_CFLAGS) + $(INTEL_CFLAGS) \ + $(MARCH_CORE2) AM_CXXFLAGS = $(AM_CFLAGS) -- 1.7.10.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev