[Mesa-dev] [PATCH] i965: Compile the driver with -march=core2.

Eric Anholt eric at anholt.net
Thu Jan 24 19:33:44 PST 2013


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



More information about the mesa-dev mailing list