[Mesa-dev] [PATCH 1/2] swr: (autoconf) allow a single swr architecture to be builtin
Cherniak, Bruce
bruce.cherniak at intel.com
Thu Jan 18 20:19:57 UTC 2018
Thanks Chuck!
Reviewed-by: Bruce Cherniak <bruce.cherniak at intel.com>
> On Jan 18, 2018, at 1:57 PM, Chuck Atkins <chuck.atkins at 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.atkins at kitware.com>
> Reviewed-by: Bruce Cherniak <bruce.cherniak at intel.com>
> CC: Tim Rowley <timothy.o.rowley at 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 at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list