mirror of
https://gitee.com/openharmony/third_party_mesa3d
synced 2025-01-30 22:33:29 +00:00
swr: (autoconf) allow a single swr architecture to be builtin
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@kitware.com> Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com> CC: Tim Rowley <timothy.o.rowley@intel.com> Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
This commit is contained in:
parent
8ff8c82630
commit
2ed8b6f827
12
configure.ac
12
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
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user