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

--- Comment #4 from Timo Gurr <timo.g...@gmail.com> ---
(In reply to amyspark from comment #2)
> Can you check what your compiler returns for the size of `unsigned int`?
Sorry I've no  idea how to do that.

> Alternatively, can you replace the definitions in
> libs\pigment\compositeops\KoStreamedMath.h as follows, and try building
> Krita again? Replace "int" and "unsigned int" for "int32_t" and "uint32_t"
> respectively, in`struct PixelWrapper<quint16, ...>` and `struct
> PixelWrapper<float, ...>`.

I'm attaching the patch I'm using as krita-5.1.0-xsimd.patch, maybe I did
something wrong, with it applied I get the following error:

/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'

In regards to what tomtomtomreportin...@gmail.com just posted I want to note
that we currently compile our xsimd package with xtl support disabled by
passing -DENABLE_XTL_COMPLEX:BOOL=FALSE since we didn't package
https://github.com/xtensor-stack/xtl yet.

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

Reply via email to