Skip to contentSkip to conversation

cogl: make cogl be able to build on ARM arch

PATCH In review [email protected] 2 participants 3 messages Jun 14, 2013

lore
Share & tools
lore
#0 lore raw

cover cogl: make cogl be able to build on ARM arch

From: "Roy.Li" <[email protected]>

The following changes since commit 1aeecaeee9bb1eee779973fce7f15cc7fad269a0:

classes/qmake_base: allow parallel make (2013-06-13 17:37:58 +0100)

are available in the git repository at:

git://git.pokylinux.org/poky-contrib roy/cogl
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=roy/cogl

Roy.Li (1):
cogl: make cogl be able to build on ARM arch

 meta/recipes-graphics/cogl/cogl-1.0.inc            |    4 +++
 .../cogl/files/cogl-fixed-thumb.patch              |   30 ++++++++++++++++++++
 .../cogl/files/cogl_fixed_mul-constraint.patch     |   22 ++++++++++++++
 3 files changed, 56 insertions(+)
 create mode 100644 meta/recipes-graphics/cogl/files/cogl-fixed-thumb.patch
 create mode 100644 meta/recipes-graphics/cogl/files/cogl_fixed_mul-constraint.patch
Signature · 1 line
1.7.10.4
#1 lore raw

PATCH 1/1 cogl: make cogl be able to build on ARM arch

From: "Roy.Li" <[email protected]>

1. Fix asm() register constraints in cogl when building for ARM.
2. Fix cogl to handle Thumb builds.

---
 meta/recipes-graphics/cogl/cogl-1.0.inc            |    4 +++
 .../cogl/files/cogl-fixed-thumb.patch              |   30 ++++++++++++++++++++
 .../cogl/files/cogl_fixed_mul-constraint.patch     |   22 ++++++++++++++
 3 files changed, 56 insertions(+)
 create mode 100644 meta/recipes-graphics/cogl/files/cogl-fixed-thumb.patch
 create mode 100644 meta/recipes-graphics/cogl/files/cogl_fixed_mul-constraint.patch
meta/recipes-graphics/cogl/cogl-1.0.inc +4 -0
index a44e6c4..c9c6165 100644
@@ -2,6 +2,10 @@ DESCRIPTION = "a modern 3D graphics API with associated utility APIs"
 HOMEPAGE = "http://wiki.clutter-project.org/wiki/Cogl"
 LICENSE = "LGPLv2.1+"
 
+SRC_URI += "file://cogl_fixed_mul-constraint.patch \
+            file://cogl-fixed-thumb.patch \
+            "
+
 inherit clutter
 
 DEPENDS = "pango glib-2.0 gdk-pixbuf"
meta/recipes-graphics/cogl/files/cogl-fixed-thumb.patch new file +30 -0
new file mode 100644
index 0000000..77b0db2
@@ -0,0 +1,30 @@
+Upstream-Status: Inappropriate [cogl-fixed.c disappears in cogl 2.0]
+
+There are two asm() statements in cogl-fixed.c that can't be assembled
+in Thumb mode.  Add a patch to switch to the generic code in Thumb mode.
+
+Signed-off-by: Donn Seeley <[email protected]>
+---
+ cogl/cogl-fixed.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/cogl/cogl-fixed.c
++++ b/cogl/cogl-fixed.c
+@@ -626,7 +626,7 @@ cogl_fixed_sqrt (CoglFixed x)
+ 	/*
+ 	 * Find the highest bit set
+ 	 */
+-#if defined (__arm__) && !defined(__ARM_ARCH_4T__)
++#if defined (__arm__) && !defined(__ARM_ARCH_4T__) && !defined(__thumb__)
+ 	/* This actually requires at least arm v5, but gcc does not seem
+ 	 * to set the architecture defines correctly, and it is I think
+ 	 * very unlikely that anyone will want to use clutter on anything
+@@ -804,7 +804,7 @@ CoglFixed
+ cogl_fixed_mul (CoglFixed a,
+                 CoglFixed b)
+ {
+-#ifdef __arm__
++#if defined(__arm__) && !defined(__thumb__)
+   /* This provides about 12% speedeup on the gcc -O2 optimised
+    * C version
+    *
meta/recipes-graphics/cogl/files/cogl_fixed_mul-constraint.patch new file +22 -0
new file mode 100644
index 0000000..7eb9da3
@@ -0,0 +1,22 @@
+Upstream-Status: Inappropriate [cogl-fixed.c disappears in cogl 2.0]
+
+Add register constraints to prevent asm statement complaints like:
+
+  {standard input}:382: rdhi, rdlo and rm must all be different
+
+Signed-off-by: Donn Seeley <[email protected]>
+---
+ cogl/cogl-fixed.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/cogl/cogl-fixed.c
++++ b/cogl/cogl-fixed.c
+@@ -816,7 +816,7 @@ cogl_fixed_mul (CoglFixed a,
+   __asm__ ("smull %0, %1, %2, %3     \n"
+            "mov   %0, %0,     lsr %4 \n"
+            "add   %1, %0, %1, lsl %5 \n"
+-           : "=r"(res_hi), "=r"(res_low) \
++           : "=&r"(res_hi), "=&r"(res_low) \
+            : "r"(a), "r"(b), "i"(COGL_FIXED_Q), "i"(32 - COGL_FIXED_Q));
+ 
+   return (CoglFixed) res_low;
Signature · 1 line
1.7.10.4
#2 lore raw
Quoted 1 line · On 14 June 2013 09:37, <[email protected]> wrote:

+Upstream-Status: Inappropriate [cogl-fixed.c disappears in cogl 2.0]

Whilst it's true that this file doesn't exist in cogl 2.0, cogl 1.x is still maintained. I've forwarded this mail to the maintainers and it's been merged into both the 1.14.x and 1.16.x release branches:

https://git.gnome.org/browse/cogl/log/?h=cogl-1.14

I encourage everyone to only consider a patch "inappropriate" in the most extreme situations, as every patch we carry means upstream doesn't have it, and we have the cost of forward-porting it.

Ross