diff options
Diffstat (limited to 'recipes-qt/qt5/qtwebengine/chromium/0006-chromium-aarch64-skia-build-fix.patch')
-rw-r--r-- | recipes-qt/qt5/qtwebengine/chromium/0006-chromium-aarch64-skia-build-fix.patch | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/recipes-qt/qt5/qtwebengine/chromium/0006-chromium-aarch64-skia-build-fix.patch b/recipes-qt/qt5/qtwebengine/chromium/0006-chromium-aarch64-skia-build-fix.patch new file mode 100644 index 00000000..b97b2dca --- /dev/null +++ b/recipes-qt/qt5/qtwebengine/chromium/0006-chromium-aarch64-skia-build-fix.patch @@ -0,0 +1,62 @@ +From 564eb25c70160f6b3f20a6eb5727427efc78b695 Mon Sep 17 00:00:00 2001 +From: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com> +Date: Thu, 8 Mar 2018 15:39:55 +0100 +Subject: [PATCH] chromium: aarch64 skia build fix + +Upstream-Status: Inappropriate + +GCC (tested rocko's 7.3.0) cannot find these intrinsics and the build fails: + +../../third_party/skia/src/opts/SkRasterPipeline_opts.h: In function 'neon::F neon::from_half(neon::U16)': +../../third_party/skia/src/opts/SkRasterPipeline_opts.h:657:26: error: cannot convert 'neon::U16 {aka short unsigned int}' to 'float16x4_ t {aka __vector(4) __ fp16}' for argument '1' to ' +float32x4_t vcvt_f32_f16(float16x4_t)' + return vcvt_f32_f16(h); + ^ +../../third_party/skia/src/opts/SkRasterPipeline_opts.h: In function 'neon::U16 neon::to_half(neon::F)': +../../third_party/skia/src/opts/SkRasterPipeline_opts.h:677:26: error: cannot convert 'neon::F {aka float}' to 'float32x4_t {aka __vector (4) float}' for argum ent '1' to 'float16x4_t vcvt +_f16_f32(float32x4_t)' + return vcvt_f16_f32(f); + ^ + +Upstream seems to have had similar issues according to +https://skia-review.googlesource.com/c/skia/+/84222, but there is no fix at the +moment. + +Signed-off-by: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com> +--- + .../skia/src/opts/SkRasterPipeline_opts.h | 15 ++------------- + 1 file changed, 2 insertions(+), 13 deletions(-) + +diff --git a/chromium/third_party/skia/src/opts/SkRasterPipeline_opts.h b/chromium/third_party/skia/src/opts/SkRasterPipeline_opts.h +index de14e65b94e..b8be7852086 100644 +--- a/chromium/third_party/skia/src/opts/SkRasterPipeline_opts.h ++++ b/chromium/third_party/skia/src/opts/SkRasterPipeline_opts.h +@@ -729,12 +729,7 @@ SI F approx_powf(F x, F y) { + } + + SI F from_half(U16 h) { +-#if defined(SK_CPU_ARM64) && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds. +- __fp16 fp16; +- memcpy(&fp16, &h, sizeof(U16)); +- return float(fp16); +- +-#elif defined(JUMPER_IS_HSW) || defined(JUMPER_IS_AVX512) ++#if defined(JUMPER_IS_HSW) || defined(JUMPER_IS_AVX512) + return _mm256_cvtph_ps(h); + + #else +@@ -751,13 +746,7 @@ SI F from_half(U16 h) { + } + + SI U16 to_half(F f) { +-#if defined(SK_CPU_ARM64) && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds. +- __fp16 fp16 = __fp16(f); +- U16 u16; +- memcpy(&u16, &fp16, sizeof(U16)); +- return u16; +- +-#elif defined(JUMPER_IS_HSW) || defined(JUMPER_IS_AVX512) ++#if defined(JUMPER_IS_HSW) || defined(JUMPER_IS_AVX512) + return _mm256_cvtps_ph(f, _MM_FROUND_CUR_DIRECTION); + + #else |