Patchwork [1/1] cogl: make cogl be able to build on ARM arch

login
register
mail settings
Submitter rongqing.li@windriver.com
Date June 14, 2013, 8:37 a.m.
Message ID <7d251cf9fa6bcd406bb56863936275331b8b9cde.1371198970.git.rongqing.li@windriver.com>
Download mbox | patch
Permalink /patch/51721/
State New
Headers show

Comments

rongqing.li@windriver.com - June 14, 2013, 8:37 a.m.
From: "Roy.Li" <rongqing.li@windriver.com>

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

Signed-off-by: Roy.Li <rongqing.li@windriver.com>
---
 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
Ross Burton - June 14, 2013, 11:28 a.m.
On 14 June 2013 09:37,  <rongqing.li@windriver.com> 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

Patch

diff --git a/meta/recipes-graphics/cogl/cogl-1.0.inc b/meta/recipes-graphics/cogl/cogl-1.0.inc
index a44e6c4..c9c6165 100644
--- a/meta/recipes-graphics/cogl/cogl-1.0.inc
+++ b/meta/recipes-graphics/cogl/cogl-1.0.inc
@@ -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"
diff --git a/meta/recipes-graphics/cogl/files/cogl-fixed-thumb.patch b/meta/recipes-graphics/cogl/files/cogl-fixed-thumb.patch
new file mode 100644
index 0000000..77b0db2
--- /dev/null
+++ b/meta/recipes-graphics/cogl/files/cogl-fixed-thumb.patch
@@ -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 <donn.seeley@windriver.com>
+---
+ 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
+    *
diff --git a/meta/recipes-graphics/cogl/files/cogl_fixed_mul-constraint.patch b/meta/recipes-graphics/cogl/files/cogl_fixed_mul-constraint.patch
new file mode 100644
index 0000000..7eb9da3
--- /dev/null
+++ b/meta/recipes-graphics/cogl/files/cogl_fixed_mul-constraint.patch
@@ -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 <donn.seeley@windriver.com>
+---
+ 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;