[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