JOGL Embedded Device Status (p1)

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view

JOGL Embedded Device Status (p1)

Sven Gothel
Here is a 1st update on embedded devices .. as mentioned below, more to come.
(if you like to check the links..)


JOGL Embedded Device Status (p1)

To perform the JogAmp embedded device development for our SIGGRAPH2011 BOF,
Rami and I setup up the following embedded devices:

    GNU/Linux ARM Distribution (Debian/Ubuntu 11.04)
        Beagleboard – ARM/OMAP3
        Toshiba AC100 – ARM/TEGRA2*
    Android Distribution (Gingerbread)
        Beagleboard – Ti Rowboat – ARM/OMAP3
        Samsung Galaxy S2 – ARM/PowerVR SGX
        Samsung Galaxy S2 – ARM/Exynos 4210 (Mali-400 MP)
        Advent Vega / POV – ARM/Tegra2*

* The marked machines are currently being set up and didn’t make it to our SIGGRAPH2011 BOF

The above machines cover the variety of currently used mobile GNU/Linux derivatives,
and the following set of up-to-date hardware:

    PowerVR SGX
    Ti OMAP3
    ARM Mali-400MP
    NVidia Tegra2

Since we already achieved cross-compilation and cross-junit-testing for GNU/Linux and Android/Linux,
soon we will be able to drop at least one of each OS representations into our Jenkins matrix.

GlueGen passed all junit tests on both platforms.

We could also demonstrate our infamous gears demo (es1) running on all above listed embedded platforms.

We will follow up w/ more details incl. videos after this weeks cleanup phase.
Until then the slides of our presentation will follow up as well – enhanced w/ screenshots.
Reply | Threaded
Open this post in threaded view

Re: JOGL Embedded Device Status (p1)

You made a great job :) Applications using JogAmp on Android Market could increase the visibility of this set of APIs. Will you provide a running demo (.apk)? I would like to give it a try on Android 2.1.
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view

Re: JOGL Embedded Device Status (p1)

Sven Gothel
On Wednesday, August 17, 2011 12:03:00 PM gouessej [via jogamp] wrote:
> You made a great job :) Applications using JogAmp on Android Market could
> increase the visibility of this set of APIs. Will you provide a running demo
> (.apk)? I would like to give it a try on Android 2.1.

Sorry .. Gingerbread is the lowest version we can support,
due to it's new NDK Surface JNI binding, we require.

However, after cleanup the next 1-3 days, we will have a new RC ready,
including Android and Linux (ARM).

Reply | Threaded
Open this post in threaded view

Re: JOGL Embedded Device Status (p1)

Wade Walker
So how was the response to the Birds of a Feather session? Any interesting information to share with those of us who unfortunately couldn't make it?
Reply | Threaded
Open this post in threaded view

Re: JOGL Embedded Device Status (p1)

Sven Gothel
On Thursday, August 18, 2011 04:17:38 AM Wade Walker [via jogamp] wrote:
> So how was the response to the Birds of a Feather session? Any interesting
> information to share with those of us who unfortunately couldn't make it?

OK .. right, so let me just write up the maybe entertaining, not so technical
little story of this, our last little adventure :)

(I will post this w/ demo stuff later on .. sure)


Our work and walk to SIGGRAPH2011

Rami Santina's and Sven Gothel's hustle to 'bring up' JOGL
on embedded devices (Android/ARM & Linux/ARM) and to show off
the new graph/curve based UI.

Forgive me my 'personal' and story-telling approach here,
but maybe it helps describing our impressions and gives you also some technical details.

~Sven Gothel

July 4th, 2011 ...
Rami and I launched mobile development here in Bremerhaven
in the week of July 4th - 7th 2011.

We simply started w/ 2 beagleboards/OMAP3 utilizing
single core ARM7 and PowerVR SGX (530 I guess).

I picked the easiest task of installing GNU/Linux/Debian/Ubuntu
on one board using one of the <> SD card images :)
"Device Bring Up" was done in hours, mostly just waiting for the slow SD memory.
Depending on the board, you have to adjust the CPU clock a bit.
After 'apt-get install' a few more basic components and fixing the boot sequence
plus fixating the NIC mac address you are pretty much done (see attached file <ubuntu-omap.txt>).
The simplicity of Debian/Ubuntu, having a full fledged system up and running
seduced us to just compiling and testing GlueGen on it :)
Even though most test went through, the host == target approach didn't seem to be fit
due to the pretty long compilation time on the poor board.
Of course, we need proper cross compilation and testing later on, especially for the Android system.

Rami started the Android endeavor, and it turns out it took us a few days achieve this task.
Sadly there was no simple, get image and run solution. However, it was a very good experience
to get a bit deeper into the Linux/Android build system.
The problem was to find a good existing distribution. After we failed using 0xdroid,
due to lack of USB NIC support we moved to Ti's rowboat Gingerbread. Which was a good hunch,
since later it turns out Gingerbread is a min. requirement for JOGL.
Besides patching the kernel for a fixed NIC mac address, the procedure was pretty straight
forward even though far more complicated than just installing and using Debian/Ubuntu :)
See attached file <android-omap.txt> which documents this journey a bit.

We continued gathering more experience w/ the board and OS,
enabling us to outline the task to port GlueGen and JOGL.

July 8th, 2011 ...

While brainstorming about the best approach to tackle such a beast of
including embedded board to our build/test system, I raised concerns about
our GlueGen Java to native type matching.
Initial simple tests proved that indeed we were inaccurate in regards to
some ARM, x86 and x86_64 native types plus structure alignment.
This is what happens if you just conveniently ignore well known bugs
like this one <> :)

Hence we need to enhance the native type tests required to pass on all
our old platforms and the new ARM ones.

This task was a good use-case for cross compilation and testing as well,
enhancing our build system.

The main idea now is to enhance GlueGen 1st to an almost perfect 1st citizen
for the new embedded platforms.
Besides GlueGen is a requirement anyways, this allows us to start the JOGL work
on a solid basis.

July 21st, 2011

Finally closing the GlueGen native type issue.


Now we are also able to cross compile/test on Linux/ARM, quite a quality breakthrough.

July 25th, 2011

All GlueGen unit tests passed on all platform incl. Linux/ARM and Android/ARM.

The race to SIGGRAPH, adrenalin levels are running high :)


Starting w/ JOGL - 12 days left until our BOF.
Minimum goal is to show 'a' gears demo on all platforms using NEWT
and any ES profile (ES1 or ES2).

- 2011-07-31: Linux/ARM: We see available GLCapabilities and debug output.

- 2011-08-01: ES1 Gears 'somehow' runs on Linux/ARM

- 2011-08-03: GlueGen Android APK Test works

- 2011-08-05: Deployment Restructuring: JAR combine nativewindow/jogl/newt ; newt: 'driver' separation

TBH, before departure I had many doubts if we can deliver it on time,
which I had to suppressed for my own sake.

Especially the native EGL/ES library usage on Android,
which were solved just hours before .. seemed to break our neck.
Problem here is, if you use the dlsym looked up function entries of the native libs,
you have to favor the global system wide ones on Android.
It seems that only those have proper initialized entry points to Android's
wrapping /system/lib/ etc instantiations.

I tried to use the vendor specific ones before, but ofc, they don't have the
Android JNI Surface's ANativeWindow abstraction.

August 7th, 2011

The team is complete in Vancouver, Canada.
I arrived with the complete set of our development kit, Monitor, boards, Wifi-Router,
cables and power bar in one piece of luggage.
My few t-shirts and shorts were useful to help dampening the equipment :)

We set up the whole thing in my hotel room, which actually was the River Rock Casino.
Maybe a good choice considering the gamble to achieve our task :)

Now it's definitely crunch time, being in 'demo mode' - having all excuses for dirty code.
Later it turned out, we actually didn't have to code dirty at all.
Only our 'Android Demo' APK file packaging was a hack we haven't committed in the SCM.

Rami and I were had to manage our work/rest cycles well
and I guess we did a great job in not loosing our nerves completely
and staying alive :)

Our dear colleague from Greece, Justin, who accompanied us,
actually helped us with his calm 'n relaxed demeanor.

August 9th, 2011

Besides lots of commits in regards to Android and EGL,
we also managed to structure a proper UI API incl. necessary basic changes:

We actually regard these changes to be JogAmp's new 'selling point',
since the new UI/Graph/Curve package has the potential to allow you creating an AWT free
application (using NEWT) and integrating UI, Curves and Fonts into your 3D scene!


Dominik (DemoPassivist) also delivered his promise and
emailed his PC 4k intro competition entry for Revision 2011,
see here <> and here <>.
He ported his demo to be solely NEWT and JOGL based, removing dependencies to his toolkits.
Sadly we ran out of time to integrate it, since it needed further porting,
i.e. the complete removal of fixed function pipeline (compatibility layer) non GL2ES2 artifacts.
Besides the ES2 Gears port, I have completed this task on the plane home
and you will soon see this one within our unit tests.

Dominik is the artist who designed all our Logos and created all those cool demo videos.


Final commits one hour before BOF - ES1 Gears runs on Android (Beagle and Samsung Galaxy S and S2)

This commit marks our breakthrough. Later we cleaned up stuff a bit and added missing files.

Hurray, it's working on the Android machines, the beagle and the phones.
Literally .. last minute.


Now we had to sack and pack - hurry.
Stuffing all equipment into the luggage and jumping into the cap (bad choice, since pretty slow).
Justin helps me carrying the luggage (THANK YOU JUSTIN). No, not that I am too weak or so,
but my arms are just not long enough for my height to comfortably dragging it on the wheels :)
I still had to get my ticket .. Rami gets the coffee.

We are the 1st in the BOF room, right on time.
While unpacking everything Rami starts to rake care of the projector.
Glad we brought on of our own for the boards (HDMI connector).
The SIGGRAPH provided one sadly only had VGA .. duh :)

Suddenly it was time to actually start the talk, but the big projector is still offline.
Rami still fighting with it and the service personnel :)

So I start my stand up comedy in a freestyle manner explaining the equipment
to the 20-30 people waiting for some great news - or just taking the chance
to relax in the air conditioned room :)

Mentioned the infamous gears demo did the trick, folks were smiling.
After showing it on the 2 devices, while trusting me it runs on a desktop PC.
I had to continue to elaborate on some dev-board setup details .. while my dear friend Rami
was still fighting with the projector.

Finally he made it happen .. even though he missed my show.
So we started w/ the slides - he glued together in minutes.

After showing off the new UI and completing the embedded devices part
we gladly realized people had a good interest in the details
and we guess the got the message.

<--- (marketing)

"JogAmp allows you to develop complete platform and API agnostic stuff
for desktop and mobile."

Sounds simple, but you know it ..

With NEWT and Android on the low end, and the new UI/Graph/Curve on the high end,
we can deliver this promise finally.
No AWT/Swing, SWT or Android specific vendor lock in API's are required.
Further more, not using those but our open source API's, you will be enabled
to run a 3D application with UI in the scene on any device.

Sure .. we have to refine it, and you might need to help porting (eg on blackberry, etc),
but it is possible today already.


Good .. enough of that :)

Totally exhausted we had some food and dinner, and finally got some rest.

Sorry for anybody we have missed or ignored.
But as you have read above .. we really had no time.


Later we saw the Khronos BOF's incl. WebGL realizing that they all
try to promise same goals - compatibility. Great stuff.
Indeed we have to work more closely with them, at least in regards
the mobile profiles. Since we actually bring all the pieces together
where you .. OK I stop marketing for good now :)

It was a great time .. and thank you all to make this happen.

Cheers, Sven

ubuntu-omap.txt (3K) Download Attachment
android-omap.txt (5K) Download Attachment
Reply | Threaded
Open this post in threaded view

Re: JOGL Embedded Device Status (p1)

Demoscene Passivist
Hehe  ... really sounds like a fun and geekish crunchtime session lasting a whole month

Guess I need to buy some Android device now  ...
Reply | Threaded
Open this post in threaded view

Re: JOGL Embedded Device Status (p1)

Wade Walker
Thanks for the detailed story of how it all worked out! I'm glad to hear everything came together well (even if it was stressful to finish only at the last moment ). Hopefully you also got a chance to relax a bit and enjoy Vancouver.