https://bugs.kde.org/show_bug.cgi?id=458033

            Bug ID: 458033
           Summary: Failure to build with XSIMD support
           Product: krita
           Version: 5.1.0
          Platform: Other
                OS: Linux
            Status: REPORTED
          Severity: normal
          Priority: NOR
         Component: General
          Assignee: krita-bugs-n...@kde.org
          Reporter: timo.g...@gmail.com
  Target Milestone: ---

STEPS TO REPRODUCE
1.  Try to build with XSIMD

OBSERVED RESULT
Running into compile error (complete build log is attached as file).

[...]
-- Available architectures for xsimd: x86-64
-- Found xsimd: /usr/x86_64-pc-linux-gnu/lib64/cmake/xsimd/xsimdConfig.cmake
(found suitable version "8.1.0", minimum required is "8.1.0") 
[...]
[ 11%] Building CXX object
libs/pigment/CMakeFiles/kritapigment.dir/KoOptimizedCompositeOpFactoryPerArch_AVX.cpp.o
cd /var/tmp/paludis/build/media-gfx-krita-5.1.0/work/build/libs/pigment &&
/usr/bin/x86_64-pc-linux-gnu-c++ -DBOOST_ALL_NO_LIB -DHAVE_X11
-DQT_CONCURRENT_LIB -DQT_CORE_LIB -DQT_DEPRECATED_WARNINGS
-DQT_DISABLE_DEPRECATED_BEFORE=0x50900 -DQT_GUI_LIB -DQT_NO_DEBUG
-DQT_NO_SIGNALS_SLOTS_KEYWORDS -DQT_NO_URL_CAST_FROM_STRING -DQT_SQL_LIB
-DQT_STRICT_ITERATORS -DQT_USE_FAST_CONCATENATION -DQT_USE_FAST_OPERATOR_PLUS
-DQT_USE_QSTRINGBUILDER -DQT_WIDGETS_LIB -DQT_XML_LIB
-DTRANSLATION_DOMAIN=\"krita\" -D_GNU_SOURCE -D_LARGEFILE64_SOURCE
-Dkritapigment_EXPORTS -DXSIMD_IMPL=AVX
-I/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/build/libs/pigment
-I/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/krita-5.1.0/libs/pigment
-I/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/build/libs/pigment/kritapigment_autogen/include
-I/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/krita-5.1.0/interfaces
-I/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/build
-I/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/krita-5.1.0
-I/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/krita-5.1.0/libs/pigment/resources
-I/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/krita-5.1.0/libs/pigment/compositeops
-I/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/build/libs/koplugin
-I/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/krita-5.1.0/libs/koplugin
-I/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/build/libs/store
-I/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/krita-5.1.0/libs/store
-I/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/build/libs/global
-I/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/krita-5.1.0/libs/global
-I/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/build/libs/version
-I/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/krita-5.1.0/libs/version
-I/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/build/libs/resources
-I/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/krita-5.1.0/libs/resources
-I/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/krita-5.1.0/libs/multiarch
-I/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/build/libs/multiarch
-isystem /usr/x86_64-pc-linux-gnu/include/qt5 -isystem
/usr/x86_64-pc-linux-gnu/include/qt5/QtCore -isystem
/usr/x86_64-pc-linux-gnu/lib/qt5/mkspecs/linux-g++ -isystem
/usr/x86_64-pc-linux-gnu/include/qt5/QtConcurrent -isystem
/usr/x86_64-pc-linux-gnu/include/qt5/QtGui -isystem
/usr/x86_64-pc-linux-gnu/include/qt5/QtWidgets -isystem
/usr/x86_64-pc-linux-gnu/include/qt5/QtXml -isystem
/usr/x86_64-pc-linux-gnu/include/KF5/KI18n -isystem
/usr/x86_64-pc-linux-gnu/include/KF5 -isystem
/usr/x86_64-pc-linux-gnu/include/qt5/QtSql -isystem
/usr/x86_64-pc-linux-gnu/include/OpenEXR -isystem
/usr/x86_64-pc-linux-gnu/include/Imath -isystem
/usr/x86_64-pc-linux-gnu/include/KF5/KConfig -isystem
/usr/x86_64-pc-linux-gnu/include/KF5/KConfigCore -march=native -O2 -pipe
-DNDEBUG -DQT_NO_DEBUG -fno-operator-names -Wall -Wextra -Wcast-align
-Wchar-subscripts -Wformat-security -Wno-long-long -Wpointer-arith -Wundef
-Wnon-virtual-dtor -Woverloaded-virtual -Werror=return-type -Werror=init-self
-Wvla -Wdate-time -Wsuggest-override -Wlogical-op  -fext-numeric-literals
-fexceptions -fPIC -fvisibility=hidden -fvisibility-inlines-hidden
-Wno-suggest-override -Wextra -Wno-class-memaccess -fPIC -std=gnu++14  -Wabi
-fabi-version=0 -fabi-compat-version=0 -ffp-contract=fast -fPIC -mavx -MD -MT
libs/pigment/CMakeFiles/kritapigment.dir/KoOptimizedCompositeOpFactoryPerArch_AVX.cpp.o
-MF
CMakeFiles/kritapigment.dir/KoOptimizedCompositeOpFactoryPerArch_AVX.cpp.o.d -o
CMakeFiles/kritapigment.dir/KoOptimizedCompositeOpFactoryPerArch_AVX.cpp.o -c
/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/build/libs/pigment/KoOptimizedCompositeOpFactoryPerArch_AVX.cpp
In file included from
/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/krita-5.1.0/libs/global/KisHalfTraits.h:14,
                 from
/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/krita-5.1.0/libs/pigment/KoColorSpaceMaths.h:109,
                 from
/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/krita-5.1.0/libs/pigment/compositeops/KoCompositeOpFunctions.h:10,
                 from
/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/krita-5.1.0/libs/pigment/compositeops/KoCompositeOpBase.h:11,
                 from
/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/krita-5.1.0/libs/pigment/compositeops/KoOptimizedCompositeOpAlphaDarken32.h:12,
                 from
/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/build/libs/pigment/KoOptimizedCompositeOpFactoryPerArch_AVX.cpp:11:
/usr/x86_64-pc-linux-gnu/include/Imath/halfLimits.h:17:2: warning: #warning
"ImathLimits is deprecated; use #include <half.h>" [-Wcpp]
   17 | #warning "ImathLimits is deprecated; use #include <half.h>"
      |  ^~~~~~~
In file included from
/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/krita-5.1.0/libs/pigment/compositeops/KoStreamedMath.h:14,
                 from
/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/krita-5.1.0/libs/pigment/compositeops/KoOptimizedCompositeOpAlphaDarken32.h:14,
                 from
/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/build/libs/pigment/KoOptimizedCompositeOpFactoryPerArch_AVX.cpp:11:
/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/krita-5.1.0/libs/pigment/compositeops/KoRgbaInterleavers.h:
In instantiation of 'static void KoRgbaInterleavers<16>::deinterleave(const
void*, xsimd::batch<T, A>&, xsimd::batch<T, A>&) [with T = unsigned int; A =
xsimd::avx; bool aligned = false]':
/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/krita-5.1.0/libs/pigment/compositeops/KoStreamedMath.h:610:45:
  required from 'void PixelWrapper<short unsigned int, _impl>::read(const
void*, PixelWrapper<short unsigned int, _impl>::float_v&, PixelWrapper<short
unsigned int, _impl>::float_v&, PixelWrapper<short unsigned int,
_impl>::float_v&, PixelWrapper<short unsigned int, _impl>::float_v&) [with
_impl = xsimd::avx; PixelWrapper<short unsigned int, _impl>::float_v =
xsimd::batch<float, xsimd::avx>]'
/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/krita-5.1.0/libs/pigment/compositeops/KoOptimizedCompositeOpAlphaDarken128.h:52:25:
  required from 'static void AlphaDarkenCompositor128<channels_type,
ParamsWrapperT>::compositeVector(const quint8*, quint8*, const quint8*, float,
const ParamsWrapper&) [with bool haveMask = true; bool src_aligned = true;
_impl = xsimd::avx; channels_type = short unsigned int; ParamsWrapperT =
KoAlphaDarkenParamsWrapperCreamy; quint8 = unsigned char;
AlphaDarkenCompositor128<channels_type, ParamsWrapperT>::ParamsWrapper =
KoAlphaDarkenParamsWrapperCreamy]'
/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/krita-5.1.0/libs/pigment/compositeops/KoStreamedMath.h:424:75:
  required from 'static void KoStreamedMath<_impl>::genericComposite(const
KoCompositeOp::ParameterInfo&) [with bool useMask = true; bool useFlow = true;
Compositor = AlphaDarkenCompositor128<short unsigned int,
KoAlphaDarkenParamsWrapperCreamy>; int pixelSize = 8; _impl = xsimd::avx]'
/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/krita-5.1.0/libs/pigment/compositeops/KoStreamedMath.h:500:58:
  required from 'static void KoStreamedMath<_impl>::genericComposite64(const
KoCompositeOp::ParameterInfo&) [with bool useMask = true; bool useFlow = true;
Compositor = AlphaDarkenCompositor128<short unsigned int,
KoAlphaDarkenParamsWrapperCreamy>; _impl = xsimd::avx]'
/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/krita-5.1.0/libs/pigment/compositeops/KoOptimizedCompositeOpAlphaDarken128.h:248:126:
  required from 'void KoOptimizedCompositeOpAlphaDarkenU64Impl<_impl,
ParamsWrapper>::composite(const KoCompositeOp::ParameterInfo&) const [with
_impl = xsimd::avx; ParamsWrapper = KoAlphaDarkenParamsWrapperCreamy]'
/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/krita-5.1.0/libs/pigment/compositeops/KoOptimizedCompositeOpAlphaDarken128.h:245:10:
  required from here
/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/krita-5.1.0/libs/pigment/compositeops/KoRgbaInterleavers.h:176:37:
error: no matching function for call to
'KoRgbaInterleavers<16>::deinterleave<false>(const void*&,
xsimd::batch<unsigned int, xsimd::avx>&, xsimd::batch<unsigned int,
xsimd::avx>&, xsimd::avx)'
  176 |         return deinterleave<aligned>(src, a, b, A{});
      |                ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/krita-5.1.0/libs/pigment/compositeops/KoRgbaInterleavers.h:131:24:
note: candidate: 'template<bool aligned, class T, class A, typename
std::enable_if<(std::is_integral<_Size>::value && (sizeof (T) == 4)),
int>::type <anonymous>, typename std::enable_if<(xsimd::batch<T, A>::size ==
4), int>::type <anonymous> > static void
KoRgbaInterleavers<16>::deinterleave(const void*, xsimd::batch<T, A>&,
xsimd::batch<T, A>&, xsimd::kernel::requires_arch<xsimd::generic>)'
  131 |     static inline void deinterleave(const void *src, batch<T, A> &dst1,
batch<T, A> &dst2, kernel::requires_arch<generic>)
      |                        ^~~~~~~~~~~~
/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/krita-5.1.0/libs/pigment/compositeops/KoRgbaInterleavers.h:131:24:
note:   template argument deduction/substitution failed:
/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/krita-5.1.0/libs/pigment/compositeops/KoRgbaInterleavers.h:130:120:
error: no type named 'type' in 'struct std::enable_if<false, int>'
  130 |     template<bool aligned, typename T, typename A,
enable_sized_integral_t<T, 4> = 0, enable_sized_vector_t<T, A, 4> = 0>
      |                                                                        
                                               ^
/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/krita-5.1.0/libs/pigment/compositeops/KoRgbaInterleavers.h:146:24:
note: candidate: 'template<bool aligned, class T, class A, typename
std::enable_if<(sizeof (T) == 4), int>::type <anonymous> > static void
KoRgbaInterleavers<16>::deinterleave(const void*, xsimd::batch<T, A>&,
xsimd::batch<T, A>&, xsimd::kernel::requires_arch<xsimd::avx2>)'
  146 |     static inline void deinterleave(const void *src, batch<T, A> &a,
batch<T, A> &b, kernel::requires_arch<avx2>)
      |                        ^~~~~~~~~~~~
/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/krita-5.1.0/libs/pigment/compositeops/KoRgbaInterleavers.h:146:24:
note:   template argument deduction/substitution failed:
/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/krita-5.1.0/libs/pigment/compositeops/KoRgbaInterleavers.h:176:37:
note:   cannot convert 'xsimd::avx()' (type 'xsimd::avx') to type
'xsimd::kernel::requires_arch<xsimd::avx2>' {aka 'const xsimd::avx2&'}
  176 |         return deinterleave<aligned>(src, a, b, A{});
      |                ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/krita-5.1.0/libs/pigment/compositeops/KoRgbaInterleavers.h:174:24:
note: candidate: 'template<class T, class A, bool aligned> static void
KoRgbaInterleavers<16>::deinterleave(const void*, xsimd::batch<T, A>&,
xsimd::batch<T, A>&)'
  174 |     static inline void deinterleave(const void *src, batch<T, A> &a,
batch<T, A> &b)
      |                        ^~~~~~~~~~~~
/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/krita-5.1.0/libs/pigment/compositeops/KoRgbaInterleavers.h:174:24:
note:   template argument deduction/substitution failed:
/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/krita-5.1.0/libs/pigment/compositeops/KoRgbaInterleavers.h:176:37:
error: type/value mismatch at argument 1 in template parameter list for
'template<class T, class A, bool aligned> static void
KoRgbaInterleavers<16>::deinterleave(const void*, xsimd::batch<T, A>&,
xsimd::batch<T, A>&)'
  176 |         return deinterleave<aligned>(src, a, b, A{});
      |                ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/krita-5.1.0/libs/pigment/compositeops/KoRgbaInterleavers.h:176:37:
note:   expected a type, got 'false'

Error:
  * In program cave perform install --hooks --managed-output
--output-exclusivity with-others =media-gfx/krita-5.1.0:0::kde --destination
installed --replacing =media-gfx/krita-5.1.0:0::installed --x-of-y 1 of 1:
  * When installing 'media-gfx/krita-5.1.0:0::kde' replacing {
'media-gfx/krita-5.1.0:0::installed' }:
  * When running an ebuild command on 'media-gfx/krita-5.1.0:0::kde':
  * Install failed for 'media-gfx/krita-5.1.0:0::kde'
(paludis::ActionFailedError)

make[2]: Leaving directory
'/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/build'
make[1]: Leaving directory
'/var/tmp/paludis/build/media-gfx-krita-5.1.0/work/build'
make[2]: *** [libs/pigment/CMakeFiles/kritapigment.dir/build.make:908:
libs/pigment/CMakeFiles/kritapigment.dir/KoOptimizedCompositeOpFactoryPerArch_AVX.cpp.o]
Error 1
make[1]: *** [CMakeFiles/Makefile2:9887:
libs/pigment/CMakeFiles/kritapigment.dir/all] Error 2
make: *** [Makefile:149: all] Error 2



EXPECTED RESULT
Compile with no error. Note: Disabling XSIMD support by passing
-DCMAKE_DISABLE_FIND_PACKAGE_xsimd:BOOL=TRUE allows krita 5.1.0 to compile just
fine.

SOFTWARE/OS VERSIONS
Operating System: Exherbo Linux
KDE Plasma Version: 5.25.4
KDE Frameworks Version: 5.96.0
Qt Version: 5.15.5
Kernel Version: 5.19.0 (64-bit)
Graphics Platform: X11
Processors: 4 × Intel® Core™ i5-6500 CPU @ 3.20GHz
Memory: 11.5 GiB of RAM
Graphics Processor: Mesa Intel® HD Graphics 530

ADDITIONAL INFORMATION

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to