Bug 151188

Summary: [EFL] Fix EFL 1.16 with enabled NEON support
Product: WebKit Reporter: Csaba Osztrogonác <ossy>
Component: New BugsAssignee: Csaba Osztrogonác <ossy>
Status: RESOLVED FIXED    
Severity: Normal CC: gyuyoung.kim, hs85.jeong, jh718.park, ossy
Priority: P2    
Version: Other   
Hardware: Unspecified   
OS: Unspecified   
Bug Depends on:    
Bug Blocks: 108645, 150228    
Attachments:
Description Flags
Patch none

Csaba Osztrogonác
Reported 2015-11-12 05:16:33 PST
http://trac.webkit.org/changeset/192358 bumped the EFL version from 1.15 to 1.16, but unfortunately 1.16 build is broken on ARM with enabled NEON support. :( lib/ector/software/ector_drawhelper_neon.c: In function 'comp_func_solid_source_over_neon': lib/ector/software/ector_drawhelper_neon.c:46:4: error: unknown type name 'DATA32' DATA32 *start = dest; ^ lib/ector/software/ector_drawhelper_neon.c:46:20: warning: pointer targets in initialization differ in signedness [-Wpointer-sign] DATA32 *start = dest; ^ lib/ector/software/ector_drawhelper_neon.c:48:4: error: unknown type name 'DATA32' DATA32 *end = start + (size & ~7); ^ lib/ector/software/ector_drawhelper_neon.c:58:9: warning: pointer targets in passing argument 1 of 'vld1q_u32' differ in signedness [-Wpointer-sign] d0_32x4 = vld1q_u32(start); ^ In file included from lib/ector/software/ector_drawhelper_neon.c:9:0: /usr/lib/gcc/aarch64-linux-gnu/4.8/include/arm_neon.h:19989:1: note: expected 'const uint32_t *' but argument is of type 'int *' vld1q_u32 (const uint32_t *a) ^ lib/ector/software/ector_drawhelper_neon.c:59:9: warning: pointer targets in passing argument 1 of 'vld1q_u32' differ in signedness [-Wpointer-sign] d1_32x4 = vld1q_u32(start+4); ^ In file included from lib/ector/software/ector_drawhelper_neon.c:9:0: /usr/lib/gcc/aarch64-linux-gnu/4.8/include/arm_neon.h:19989:1: note: expected 'const uint32_t *' but argument is of type 'int *' vld1q_u32 (const uint32_t *a) ^ lib/ector/software/ector_drawhelper_neon.c:87:9: warning: pointer targets in passing argument 1 of 'vst1q_u32' differ in signedness [-Wpointer-sign] vst1q_u32(start, d0_32x4); ^ CC lib/ecore/lib_ecore_libecore_la-ecore.lo In file included from lib/ector/software/ector_drawhelper_neon.c:9:0: /usr/lib/gcc/aarch64-linux-gnu/4.8/include/arm_neon.h:24488:1: note: expected 'uint32_t *' but argument is of type 'int *' vst1q_u32 (uint32_t *a, uint32x4_t b) ^ lib/ector/software/ector_drawhelper_neon.c:88:9: warning: pointer targets in passing argument 1 of 'vst1q_u32' differ in signedness [-Wpointer-sign] vst1q_u32(start+4, d1_32x4); ^ In file included from lib/ector/software/ector_drawhelper_neon.c:9:0: /usr/lib/gcc/aarch64-linux-gnu/4.8/include/arm_neon.h:24488:1: note: expected 'uint32_t *' but argument is of type 'int *' vst1q_u32 (uint32_t *a, uint32x4_t b) ^ lib/ector/software/ector_drawhelper_neon.c:95:9: warning: implicit declaration of function 'MUL_256' [-Wimplicit-function-declaration] *start = color + MUL_256(alpha, *start); ^ lib/ector/software/ector_drawhelper_neon.c: In function 'comp_func_source_over_sse2': lib/ector/software/ector_drawhelper_neon.c:138:4: error: unknown type name 'DATA32' DATA32 *start; ^ lib/ector/software/ector_drawhelper_neon.c:139:4: error: unknown type name 'DATA32' DATA32 *end; ^ lib/ector/software/ector_drawhelper_neon.c:151:10: warning: pointer targets in assignment differ in signedness [-Wpointer-sign] start = dest; ^ lib/ector/software/ector_drawhelper_neon.c:152:11: error: 'l' undeclared (first use in this function) size = l; ^ lib/ector/software/ector_drawhelper_neon.c:152:11: note: each undeclared identifier is reported only once for each function it appears in lib/ector/software/ector_drawhelper_neon.c:160:9: warning: pointer targets in passing argument 1 of 'vld1q_u32' differ in signedness [-Wpointer-sign] d_32x4 = vld1q_u32(start); ^ In file included from lib/ector/software/ector_drawhelper_neon.c:9:0: /usr/lib/gcc/aarch64-linux-gnu/4.8/include/arm_neon.h:19989:1: note: expected 'const uint32_t *' but argument is of type 'int *' vld1q_u32 (const uint32_t *a) ^ lib/ector/software/ector_drawhelper_neon.c:198:9: warning: pointer targets in passing argument 1 of 'vst1q_u32' differ in signedness [-Wpointer-sign] vst1q_u32(start, d_32x4); ^ In file included from lib/ector/software/ector_drawhelper_neon.c:9:0: /usr/lib/gcc/aarch64-linux-gnu/4.8/include/arm_neon.h:24488:1: note: expected 'uint32_t *' but argument is of type 'int *' vst1q_u32 (uint32_t *a, uint32x4_t b) ^ lib/ector/software/ector_drawhelper_neon.c:207:9: error: unknown type name 'DATA32' DATA32 sc = MUL4_SYM(color, *s); ^ lib/ector/software/ector_drawhelper_neon.c:207:9: warning: implicit declaration of function 'MUL4_SYM' [-Wimplicit-function-declaration] lib/ector/software/ector_drawhelper_neon.c:207:38: error: 's' undeclared (first use in this function) DATA32 sc = MUL4_SYM(color, *s); ^ lib/ector/software/ector_drawhelper_neon.c:208:9: error: unknown type name 'DATA32' DATA32 alpha = 256 - (sc >> 24); ^ lib/ector/software/ector_drawhelper_neon.c:103:85: warning: unused parameter 'length' [-Wunused-parameter] comp_func_source_over_sse2(uint * __restrict dest, const uint * __restrict src, int length, uint color, uint const_alpha) ^ lib/ector/software/ector_drawhelper_neon.c: In function 'init_draw_helper_neon': lib/ector/software/ector_drawhelper_neon.c:228:42: error: 'comp_func_source_over_neon' undeclared (first use in this function) func_for_mode[ECTOR_ROP_BLEND] = comp_func_source_over_neon; ^ lib/ector/software/ector_drawhelper_neon.c: At top level: lib/ector/software/ector_drawhelper_neon.c:103:1: warning: 'comp_func_source_over_sse2' defined but not used [-Wunused-function] comp_func_source_over_sse2(uint * __restrict dest, const uint * __restrict src, int length, uint color, uint const_alpha) ^ make[4]: *** [lib/ector/software/lib_ector_libector_la-ector_drawhelper_neon.lo] Error 1 make[4]: *** Waiting for unfinished jobs.... make[3]: *** [all-recursive] Error 1 make[2]: *** [all] Error 2 make[1]: *** [all-recursive] Error 1 make: *** [all] Error 2
Attachments
Patch (4.82 KB, patch)
2015-11-16 05:44 PST, Csaba Osztrogonác
no flags
Csaba Osztrogonác
Comment 1 2015-11-12 05:22:30 PST
I disabled NEON to fix the build - http://trac.webkit.org/changeset/192360. But it would be great to fix this build issue in upstream EFL.
Csaba Osztrogonác
Comment 2 2015-11-12 05:42:10 PST
Maybe the following patch fixes this issue: diff --git a/src/lib/ector/software/ector_drawhelper_private.h b/src/lib/ector/software/ector_drawhelper_private.h index d15a8f6..d62830a 100644 --- a/src/lib/ector/software/ector_drawhelper_private.h +++ b/src/lib/ector/software/ector_drawhelper_private.h @@ -11,6 +11,10 @@ #define MAX( a, b ) ( (a) > (b) ? (a) : (b) ) #endif +#ifndef DATA32 +typedef unsigned int DATA32; +#endif + #ifndef uint typedef unsigned int uint; #endif I'll try it later and will submit if it is enough.
Csaba Osztrogonác
Comment 3 2015-11-16 05:44:00 PST
Created attachment 265585 [details] Patch This patch fixes the EFL NEON build for me, but I'm not sure if it is functionally right or not. I let EFL maintainers to fix this bug themself - https://phab.enlightenment.org/T2851 .
Csaba Osztrogonác
Comment 4 2015-11-17 05:12:01 PST
(In reply to comment #3) > Created attachment 265585 [details] > Patch > > This patch fixes the EFL NEON build for me, but I'm not sure if it is > functionally right or not. I let EFL maintainers to fix this bug themself - > https://phab.enlightenment.org/T2851 . NEON build was disabled in ector, so we can enable NEON again once 1.16.1 is released or we can add the patch to jhbuild.
Csaba Osztrogonác
Comment 5 2016-01-15 06:21:30 PST
We already use 1.16.1 since https://trac.webkit.org/changeset/194571 (bug152688) (and 1.17 is coming soon)
Note You need to log in before you can comment on or make changes to this bug.