summaryrefslogtreecommitdiff
path: root/src/gallium
diff options
context:
space:
mode:
authorTim Rowley <timothy.o.rowley@intel.com>2017-07-07 13:58:09 -0500
committerTim Rowley <timothy.o.rowley@intel.com>2017-07-19 15:12:07 -0500
commit1cb5a6061ce4b7f0cf5a9e5938bc1a11fe24b9ca (patch)
treedacc5d03adf64e6054a8ebcfb18f7d310bb20822 /src/gallium
parentf42186b01dbc78357ace1bf47feb69696471b580 (diff)
configure/swr: add KNL and SKX architecture targets
Not built by default. Currently only builds with icc. v2: * document knl,skx possibilities for swr_archs * merge with changed loader lib selection code Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Diffstat (limited to 'src/gallium')
-rw-r--r--src/gallium/drivers/swr/Makefile.am38
-rw-r--r--src/gallium/drivers/swr/swr_loader.cpp20
2 files changed, 58 insertions, 0 deletions
diff --git a/src/gallium/drivers/swr/Makefile.am b/src/gallium/drivers/swr/Makefile.am
index f38ce7b1d97..64950214572 100644
--- a/src/gallium/drivers/swr/Makefile.am
+++ b/src/gallium/drivers/swr/Makefile.am
@@ -63,6 +63,14 @@ if HAVE_SWR_AVX2
libmesaswr_la_CXXFLAGS += -DHAVE_SWR_AVX2
endif
+if HAVE_SWR_KNL
+libmesaswr_la_CXXFLAGS += -DHAVE_SWR_KNL
+endif
+
+if HAVE_SWR_SKX
+libmesaswr_la_CXXFLAGS += -DHAVE_SWR_SKX
+endif
+
COMMON_SOURCES = \
$(ARCHRAST_CXX_SOURCES) \
$(COMMON_CXX_SOURCES) \
@@ -263,6 +271,36 @@ libswrAVX2_la_LDFLAGS = \
$(COMMON_LDFLAGS)
endif
+if HAVE_SWR_KNL
+lib_LTLIBRARIES += libswrKNL.la
+
+libswrKNL_la_CXXFLAGS = \
+ $(SWR_KNL_CXXFLAGS) \
+ -DKNOB_ARCH=KNOB_ARCH_AVX512 -DAVX512F_STRICT \
+ $(COMMON_CXXFLAGS)
+
+libswrKNL_la_SOURCES = \
+ $(COMMON_SOURCES)
+
+libswrKNL_la_LDFLAGS = \
+ $(COMMON_LDFLAGS)
+endif
+
+if HAVE_SWR_SKX
+lib_LTLIBRARIES += libswrSKX.la
+
+libswrSKX_la_CXXFLAGS = \
+ $(SWR_SKX_CXXFLAGS) \
+ -DKNOB_ARCH=KNOB_ARCH_AVX512 \
+ $(COMMON_CXXFLAGS)
+
+libswrSKX_la_SOURCES = \
+ $(COMMON_SOURCES)
+
+libswrSKX_la_LDFLAGS = \
+ $(COMMON_LDFLAGS)
+endif
+
include $(top_srcdir)/install-gallium-links.mk
# Generated gen_builder.hpp is not backwards compatible. So ship only one
diff --git a/src/gallium/drivers/swr/swr_loader.cpp b/src/gallium/drivers/swr/swr_loader.cpp
index 4aa850a6b8d..e205fe2d7ef 100644
--- a/src/gallium/drivers/swr/swr_loader.cpp
+++ b/src/gallium/drivers/swr/swr_loader.cpp
@@ -38,6 +38,26 @@ swr_create_screen(struct sw_winsys *winsys)
util_cpu_detect();
+ if (!strlen(filename) &&
+ util_cpu_caps.has_avx512f && util_cpu_caps.has_avx512er) {
+#if HAVE_SWR_KNL
+ fprintf(stderr, "KNL ");
+ sprintf(filename, "%s%s%s", UTIL_DL_PREFIX, "swrKNL", UTIL_DL_EXT);
+#else
+ fprintf(stderr, "KNL (not built) ");
+#endif
+ }
+
+ if (!strlen(filename) &&
+ util_cpu_caps.has_avx512f && util_cpu_caps.has_avx512bw) {
+#if HAVE_SWR_SKX
+ fprintf(stderr, "SKX ");
+ sprintf(filename, "%s%s%s", UTIL_DL_PREFIX, "swrSKX", UTIL_DL_EXT);
+#else
+ fprintf(stderr, "SKX (not built) ");
+#endif
+ }
+
if (!strlen(filename) && util_cpu_caps.has_avx2) {
#if HAVE_SWR_AVX2
fprintf(stderr, "AVX2 ");