summaryrefslogtreecommitdiffstats
path: root/meta-html5-framework/recipes-wam/chromium/chromium68/0001-skia-Build-skcms-with-mfp16-format-ieee-on-GCC-ARM-b.patch
diff options
context:
space:
mode:
authorJacobo Aragunde Pérez <jaragunde@igalia.com>2019-06-17 13:12:00 +0200
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>2019-06-20 12:57:47 +0000
commite6cc8d4e0977b4a3dda28c70caea3515f9d07edd (patch)
tree37493398c6f35728ca73cc36c64e91e9bed33c1a /meta-html5-framework/recipes-wam/chromium/chromium68/0001-skia-Build-skcms-with-mfp16-format-ieee-on-GCC-ARM-b.patch
parent13e42025cf8c2b6f5b8d10666353e60da7d52370 (diff)
chromium68: custom toolchain, target v8 snapshot
Modify the chromium68 recipe to make it more like the one available in meta-browser: https://github.com/OSSystems/meta-browser Instead of passing Yocto's build flags to the cros (=ChromeOS) toolchain, generate a toolchain definition file specifically for this build. For the generation of the V8 memory snapshot, build the required files for the target architecture, then use qemu-native to run them. Upstream chromium addresses this problem by downloading a specific native toolchain for every target platform, which we cannot do in this context. The toolchain changes trigger an issue with ARMv7 builds; backported one patch to address that specific issue. This changes also triggered a problem with 32 bit targets, the generated binaries were too big. Forced the DEBUG_ARGS to use -g1 (or -g0 otherwise). Bug-AGL: SPEC-2514 Change-Id: Ib18431b628415c58a3c29595bfff10057e355a4b Signed-off-by: Jacobo Aragunde Pérez <jaragunde@igalia.com>
Diffstat (limited to 'meta-html5-framework/recipes-wam/chromium/chromium68/0001-skia-Build-skcms-with-mfp16-format-ieee-on-GCC-ARM-b.patch')
-rw-r--r--meta-html5-framework/recipes-wam/chromium/chromium68/0001-skia-Build-skcms-with-mfp16-format-ieee-on-GCC-ARM-b.patch60
1 files changed, 60 insertions, 0 deletions
diff --git a/meta-html5-framework/recipes-wam/chromium/chromium68/0001-skia-Build-skcms-with-mfp16-format-ieee-on-GCC-ARM-b.patch b/meta-html5-framework/recipes-wam/chromium/chromium68/0001-skia-Build-skcms-with-mfp16-format-ieee-on-GCC-ARM-b.patch
new file mode 100644
index 00000000..22f50266
--- /dev/null
+++ b/meta-html5-framework/recipes-wam/chromium/chromium68/0001-skia-Build-skcms-with-mfp16-format-ieee-on-GCC-ARM-b.patch
@@ -0,0 +1,60 @@
+From a01fb357a1ce755834779c905a14c3376e1a6239 Mon Sep 17 00:00:00 2001
+From: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
+Date: Tue, 17 Jul 2018 11:56:52 +0000
+Subject: [PATCH] skia: Build skcms with -mfp16-format=ieee on GCC ARM builds
+
+skcms' Transform_inl.h assumes support for 16-bit floating point in the
+__ARM_FP macro means the __fp16 (and corresponding SIMD data type) is
+present.
+
+While this is currently true for LLVM, which always sets the equivalent of
+GCC's -mfp16-format=ieee internally on ARM builds, GCC explicitly needs that
+option to be specified in order to enable support for __fp16. Doing so
+allows GCC ARM builds to proceed without the following error:
+
+ ../../third_party/skia/third_party/skcms/src/Transform_inl.h: In function 'F_from_Half_':
+ ../../third_party/skia/third_party/skcms/src/Transform_inl.h:101:72: error: 'float16x4_t' undeclared (first use in this function); did you mean 'float32x4_t'?
+ SI ATTR F NS(F_from_Half_(U16 half)) { return vcvt_f32_f16((float16x4_t)half); }
+ ^~~~~~~~~~~
+ float32x4_t
+ ../../third_party/skia/third_party/skcms/src/Transform_inl.h:101:72: note: each undeclared identifier is reported only once for each function it appears in
+ ../../third_party/skia/third_party/skcms/src/Transform_inl.h:101:84: error: expected ')' before 'half'
+ SI ATTR F NS(F_from_Half_(U16 half)) { return vcvt_f32_f16((float16x4_t)half); }
+ ^~~~
+ )
+ ../../third_party/skia/third_party/skcms/src/Transform_inl.h: In function 'Half_from_F_':
+ ../../third_party/skia/third_party/skcms/src/Transform_inl.h:102:5: error: can't convert a value of type 'int' to vector type '__vector(4) short unsigned int' which has different size
+ SI ATTR U16 NS(Half_from_F_(F f)) { return (U16)vcvt_f16_f32( f); }
+ ^~
+
+Bug: 819294
+Change-Id: Ib7417fb9bdc6bd93553084053ba69f9d3409b112
+Reviewed-on: https://chromium-review.googlesource.com/1138251
+Reviewed-by: Florin Malita <fmalita@chromium.org>
+Commit-Queue: Raphael Kubo da Costa (CET) <raphael.kubo.da.costa@intel.com>
+Cr-Commit-Position: refs/heads/master@{#575608}
+---
+ src/skia/BUILD.gn | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/src/skia/BUILD.gn b/src/skia/BUILD.gn
+index 294b9ac16..6efada326 100644
+--- a/src/skia/BUILD.gn
++++ b/src/skia/BUILD.gn
+@@ -242,6 +242,13 @@ source_set("skcms") {
+ ]
+ }
+
++ # LLVM automatically sets the equivalent of GCC's -mfp16-format=ieee on ARM
++ # builds by default, while GCC itself does not. We need it to enable support
++ # for half-precision floating point data types used by SKCMS on ARM.
++ if (is_linux && !is_clang && current_cpu == "arm") {
++ cflags += [ "-mfp16-format=ieee" ]
++ }
++
+ public = [
+ "//third_party/skia/third_party/skcms/skcms.h",
+ ]
+--
+2.11.0
+