Thanks Chuck! Reviewed-by: Bruce Cherniak <bruce.chern...@intel.com>
> On Jan 18, 2018, at 1:57 PM, Chuck Atkins <chuck.atk...@kitware.com> wrote: > > Part 1 of 2 (part 1 is autoconf changes, part 2 is C++ changes) > > When only a single SWR architecture is being used, this allows that > architecture to be builtin rather than as a separate libswrARCH.so that > gets loaded via dlopen. Since there are now several different code > paths for each detected CPU architecture, the log output is also > adjusted to convey where the backend is getting loaded from. > > This allows SWR to be used for static mesa builds which are still > important for large HPC environments where shared libraries can impose > unacceptable application startup times as hundreds of thousands of copies > of the libs are loaded from a shared parallel filesystem. > > Based on an initial implementation by Tim Rowley. > > v2: Fix comment placement pointed out by Bruce C. > > Signed-off-by: Chuck Atkins <chuck.atk...@kitware.com> > Reviewed-by: Bruce Cherniak <bruce.chern...@intel.com> > CC: Tim Rowley <timothy.o.row...@intel.com> > --- > configure.ac | 12 ++++++++- > src/gallium/drivers/swr/Makefile.am | 50 +++++++++++++++++++++++++++++-------- > 2 files changed, 50 insertions(+), 12 deletions(-) > > diff --git a/configure.ac b/configure.ac > index e236a3c54f..7c1fbe0ed1 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -2640,6 +2640,11 @@ if test -n "$with_gallium_drivers"; then > AC_MSG_ERROR([swr enabled but no swr architectures selected]) > fi > > + # test if more than one swr arch configured > + if test `echo $swr_archs | wc -w` -eq 1; then > + HAVE_SWR_BUILTIN=yes > + fi > + > HAVE_GALLIUM_SWR=yes > ;; > xvc4) > @@ -2689,6 +2694,7 @@ AM_CONDITIONAL(HAVE_SWR_AVX, test "x$HAVE_SWR_AVX" = > xyes) > AM_CONDITIONAL(HAVE_SWR_AVX2, test "x$HAVE_SWR_AVX2" = xyes) > AM_CONDITIONAL(HAVE_SWR_KNL, test "x$HAVE_SWR_KNL" = xyes) > AM_CONDITIONAL(HAVE_SWR_SKX, test "x$HAVE_SWR_SKX" = xyes) > +AM_CONDITIONAL(HAVE_SWR_BUILTIN, test "x$HAVE_SWR_BUILTIN" = xyes) > > dnl We need to validate some needed dependencies for renderonly drivers. > > @@ -3153,7 +3159,11 @@ fi > > echo "" > if test "x$HAVE_GALLIUM_SWR" != x; then > - echo " SWR archs: $swr_archs" > + if test "x$HAVE_SWR_BUILTIN" = xyes; then > + echo " SWR archs: $swr_archs (builtin)" > + else > + echo " SWR archs: $swr_archs" > + fi > fi > > dnl Libraries > diff --git a/src/gallium/drivers/swr/Makefile.am > b/src/gallium/drivers/swr/Makefile.am > index c995f1b84a..ace4e1d4e4 100644 > --- a/src/gallium/drivers/swr/Makefile.am > +++ b/src/gallium/drivers/swr/Makefile.am > @@ -26,13 +26,9 @@ AM_CXXFLAGS = $(GALLIUM_DRIVER_CFLAGS) $(CXX11_CXXFLAGS) > > noinst_LTLIBRARIES = libmesaswr.la > > -# gen_knobs.* included here to provide driver access to swr configuration > libmesaswr_la_SOURCES = \ > $(CXX_SOURCES) \ > - $(COMMON_CXX_SOURCES) \ > $(JITTER_CXX_SOURCES) \ > - rasterizer/codegen/gen_knobs.cpp \ > - rasterizer/codegen/gen_knobs.h \ > $(LOADER_SOURCES) > > COMMON_CXXFLAGS = \ > @@ -243,8 +239,6 @@ COMMON_LDFLAGS = \ > lib_LTLIBRARIES = > > if HAVE_SWR_AVX > -lib_LTLIBRARIES += libswrAVX.la > - > libswrAVX_la_CXXFLAGS = \ > $(PTHREAD_CFLAGS) \ > $(SWR_AVX_CXXFLAGS) \ > @@ -262,7 +256,6 @@ libswrAVX_la_LDFLAGS = \ > endif > > if HAVE_SWR_AVX2 > -lib_LTLIBRARIES += libswrAVX2.la > libswrAVX2_la_CXXFLAGS = \ > $(PTHREAD_CFLAGS) \ > $(SWR_AVX2_CXXFLAGS) \ > @@ -280,8 +273,6 @@ libswrAVX2_la_LDFLAGS = \ > endif > > if HAVE_SWR_KNL > -lib_LTLIBRARIES += libswrKNL.la > - > libswrKNL_la_CXXFLAGS = \ > $(PTHREAD_CFLAGS) \ > $(SWR_KNL_CXXFLAGS) \ > @@ -299,8 +290,6 @@ libswrKNL_la_LDFLAGS = \ > endif > > if HAVE_SWR_SKX > -lib_LTLIBRARIES += libswrSKX.la > - > libswrSKX_la_CXXFLAGS = \ > $(PTHREAD_CFLAGS) \ > $(SWR_SKX_CXXFLAGS) \ > @@ -317,6 +306,45 @@ libswrSKX_la_LDFLAGS = \ > $(COMMON_LDFLAGS) > endif > > +if HAVE_SWR_BUILTIN > +libmesaswr_la_CXXFLAGS += -DHAVE_SWR_BUILTIN > +libmesaswr_la_LIBADD = > +if HAVE_SWR_AVX > +noinst_LTLIBRARIES += libswrAVX.la > +libmesaswr_la_LIBADD += libswrAVX.la > +endif > +if HAVE_SWR_AVX2 > +noinst_LTLIBRARIES += libswrAVX2.la > +libmesaswr_la_LIBADD += libswrAVX2.la > +endif > +if HAVE_SWR_KNL > +noinst_LTLIBRARIES += libswrKNL.la > +libmesaswr_la_LIBADD += libswrKNL.la > +endif > +if HAVE_SWR_SKX > +noinst_LTLIBRARIES += libswrSKX.la > +libmesaswr_la_LIBADD += libswrSKX.la > +endif > +else # !HAVE_SWR_BUILTIN > +# gen_knobs.* included here to provide driver access to swr configuration > +libmesaswr_la_SOURCES += \ > + $(COMMON_CXX_SOURCES) \ > + rasterizer/codegen/gen_knobs.cpp \ > + rasterizer/codegen/gen_knobs.h > +if HAVE_SWR_AVX > +lib_LTLIBRARIES += libswrAVX.la > +endif > +if HAVE_SWR_AVX2 > +lib_LTLIBRARIES += libswrAVX2.la > +endif > +if HAVE_SWR_KNL > +lib_LTLIBRARIES += libswrKNL.la > +endif > +if HAVE_SWR_SKX > +lib_LTLIBRARIES += libswrSKX.la > +endif > +endif > + > include $(top_srcdir)/install-gallium-links.mk > > # Generated gen_builder.hpp is not backwards compatible. So ship only one > -- > 2.14.3 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev