--- /usr/portage/media-libs/mesa/mesa-18.3.0_rc2.ebuild 2018-11-12 22:09:34.000000000 +0300 +++ mesa-18.3.0_rc2.ebuild 2018-11-14 21:01:51.247243610 +0300 @@ -5,7 +5,7 @@ EAPI=6 PYTHON_COMPAT=( python3_4 python3_5 python3_6 python3_7 ) -inherit llvm meson multilib-minimal pax-utils python-any-r1 +inherit llvm meson multilib-minimal pax-utils python-any-r1 toolchain-funcs OPENGL_DIR="xorg-x11" @@ -38,7 +38,8 @@ done IUSE="${IUSE_VIDEO_CARDS} +classic d3d9 debug +dri3 +egl +gallium +gbm gles1 gles2 +llvm lm_sensors opencl osmesa pax_kernel pic selinux test unwind vaapi valgrind vdpau - vulkan wayland xa xvmc" + vulkan wayland xa xvmc cpu_flags_x86_avx cpu_flags_x86_avx2 + cpu_flags_x86_avx512f cpu_flags_x86_avx512er cpu_flags_x86_avx512bw" REQUIRED_USE=" d3d9? ( dri3 || ( video_cards_r300 video_cards_r600 video_cards_radeonsi video_cards_nouveau video_cards_vmware ) ) @@ -313,6 +314,12 @@ pkg_setup() { python-any-r1_pkg_setup } +src_prepare(){ + default + # must be regenerated + rm -f "src/gallium/drivers/swr/rasterizer/jitter/gen_builder.hpp" +} + multilib_src_configure() { local emesonargs=() @@ -437,6 +444,36 @@ multilib_src_configure() { fi if use gallium; then + local swr= + # build swr feature modules from CFLAGS to useflags cpu_flags_x86_* + # less then CFLAGS - never be used, more - can (upgrade or bindist) + if [[ ${ABI} == amd64 ]] && use llvm; then + local i test='#if defined(__AVX512F__) && defined(__AVX512ER__) +#error knl +#elif defined(__AVX512F__) && defined(__AVX512BW__) +#error skx +#elif defined(__AVX2__) +#error avx2 +#elif defined(__AVX__) +#error avx +#endif' + test=$(echo "$test"|$(tc-getCPP) - -o /dev/null ${CFLAGS} 2>&1|head -n 1) + test=${test##* } + for i in knl skx avx2 avx; do + case $i in + knl)use cpu_flags_x86_avx512f && use cpu_flags_x86_avx512er || continue;; + skx)use cpu_flags_x86_avx512f && use cpu_flags_x86_avx512bw || continue;; + *)use cpu_flags_x86_$i || continue;; + esac + swr+=,$i + [[ "$test" == $i ]] && break + done + swr=${swr#,} + fi + if [[ -n "$swr" ]]; then + gallium_enable -- swr + emesonargs+=( -Dswr-arches=$swr ) + fi gallium_enable -- swrast emesonargs+=( -Dosmesa=$(usex osmesa gallium none) ) else