If the user/builder has a setup capable of using sse4.1 it's their responsibility to enable it.
Let's unconditionally include main/streaming-load-memcpy.c, as it already features a ifdef __SSE4_1__ check and add a stub implementation for people that don't have -msse4.1 enabled at compile-time. This resolves undefined references to _mesa_streaming_load_memcpy for the Android build and compilers not capable of sse4.1 optimizations. Note: if your compiler is capable of -msse4.1 and you are interested in using such optimisations, enable them explicitly. Cc: Matt Turner <matts...@gmail.com> Cc: Adrian Negreanu <adrian.m.negre...@intel.com> Cc: "10.1 10.2" <mesa-sta...@lists.freedesktop.org> Signed-off-by: Emil Velikov <emil.l.veli...@gmail.com> --- configure.ac | 6 ------ src/mesa/Android.libmesa_dricore.mk | 5 ----- src/mesa/Makefile.am | 13 +------------ src/mesa/Makefile.sources | 1 + src/mesa/main/streaming-load-memcpy.h | 8 ++++++++ 5 files changed, 10 insertions(+), 23 deletions(-) diff --git a/configure.ac b/configure.ac index 6d364dc..2b8df5b 100644 --- a/configure.ac +++ b/configure.ac @@ -235,12 +235,6 @@ AC_SUBST([VISIBILITY_CFLAGS]) AC_SUBST([VISIBILITY_CXXFLAGS]) dnl -dnl Optional flags, check for compiler support -dnl -AX_CHECK_COMPILE_FLAG([-msse4.1], [SSE41_SUPPORTED=1], [SSE41_SUPPORTED=0]) -AM_CONDITIONAL([SSE41_SUPPORTED], [test x$SSE41_SUPPORTED = x1]) - -dnl dnl Hacks to enable 32 or 64 bit build dnl AC_ARG_ENABLE([32-bit], diff --git a/src/mesa/Android.libmesa_dricore.mk b/src/mesa/Android.libmesa_dricore.mk index 217f649..1332ebf 100644 --- a/src/mesa/Android.libmesa_dricore.mk +++ b/src/mesa/Android.libmesa_dricore.mk @@ -47,11 +47,6 @@ ifeq ($(TARGET_ARCH),x86) endif # x86 endif # MESA_ENABLE_ASM -ifeq ($(ARCH_X86_HAVE_SSE4_1),true) -LOCAL_SRC_FILES += \ - $(SRCDIR)main/streaming-load-memcpy.c -endif - LOCAL_C_INCLUDES := \ $(call intermediates-dir-for STATIC_LIBRARIES,libmesa_program,,) \ $(MESA_TOP)/src/mapi \ diff --git a/src/mesa/Makefile.am b/src/mesa/Makefile.am index 88eeff9..d59af99 100644 --- a/src/mesa/Makefile.am +++ b/src/mesa/Makefile.am @@ -81,7 +81,7 @@ main/get_hash.h: $(GLAPI)/gl_and_es_API.xml main/get_hash_params.py \ -f $< > $@.tmp; \ mv $@.tmp $@; -noinst_LTLIBRARIES = $(ARCH_LIBS) +noinst_LTLIBRARIES = if NEED_LIBMESA noinst_LTLIBRARIES += libmesa.la else @@ -95,11 +95,6 @@ AM_CPPFLAGS = $(DEFINES) $(INCLUDE_DIRS) AM_CFLAGS = $(LLVM_CFLAGS) $(VISIBILITY_CFLAGS) AM_CXXFLAGS = $(LLVM_CFLAGS) $(VISIBILITY_CXXFLAGS) -ARCH_LIBS = - -if SSE41_SUPPORTED -ARCH_LIBS += libmesa_sse41.la -endif MESA_ASM_FILES_FOR_ARCH = @@ -129,7 +124,6 @@ libmesa_la_SOURCES = \ libmesa_la_LIBADD = \ $(top_builddir)/src/glsl/libglsl.la \ - $(ARCH_LIBS) \ $() libmesagallium_la_SOURCES = \ @@ -139,13 +133,8 @@ libmesagallium_la_SOURCES = \ libmesagallium_la_LIBADD = \ $(top_builddir)/src/glsl/libglsl.la \ - $(ARCH_LIBS) \ $() -libmesa_sse41_la_SOURCES = \ - main/streaming-load-memcpy.c -libmesa_sse41_la_CFLAGS = $(AM_CFLAGS) -msse4.1 - pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = gl.pc diff --git a/src/mesa/Makefile.sources b/src/mesa/Makefile.sources index f4904fb..e0ff80b 100644 --- a/src/mesa/Makefile.sources +++ b/src/mesa/Makefile.sources @@ -91,6 +91,7 @@ MAIN_FILES = \ $(SRCDIR)main/shared.c \ $(SRCDIR)main/state.c \ $(SRCDIR)main/stencil.c \ + $(SRCDIR)main/streaming-load-memcpy.c \ $(SRCDIR)main/syncobj.c \ $(SRCDIR)main/texcompress.c \ $(SRCDIR)main/texcompress_cpal.c \ diff --git a/src/mesa/main/streaming-load-memcpy.h b/src/mesa/main/streaming-load-memcpy.h index 41eeeec..80f0830 100644 --- a/src/mesa/main/streaming-load-memcpy.h +++ b/src/mesa/main/streaming-load-memcpy.h @@ -29,5 +29,13 @@ /* Copies memory from src to dst, using SSE 4.1's MOVNTDQA to get streaming * read performance from uncached memory. */ + +#ifdef __SSE4_1__ void _mesa_streaming_load_memcpy(void *restrict dst, void *restrict src, size_t len); + +#else +static void +_mesa_streaming_load_memcpy(void *restrict dst, void *restrict src, size_t len) {} + +#endif -- 2.0.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev