I made another interesting discovery today.

It's related to the Insignal graphics stack I tried to merge last year.
So, last year, Insignal released their jb-mr1.1 source for Exynos 4412 that was insanely great because their graphics stack is entirely revamped from the ground up, looking a lot like what's found in the Nexus 10 which uses an Exynos 5 SoC. When doing the diff, it turns out this SoC is not so different from our Exynos 4, so the code is like 95% similar.
The first thing to do was to merge the userspace code. That's a slightly modified gralloc with an entirely new hwcomposer that does the job. After testing it, it was barely working, crashing a lot, and after some inspection it turned out that we needed to update some kernel drivers.
The Insignal kernel is based on the 3.4 Android kernel reference, s3cfb driver is nuked and replaced by a new s3c-fb framebuffer driver that interacts with the new hwcomposer and uses dmabuf/ION. This new driver in turn depends on a new 3.4 ION driver and Mali blobs with UMP disabled and dmabuf enabled (r3p2).
I could merge the new ION driver without much problems, and the Mali driver was just a matter of replacing the blobs. However, removing the old s3cfb driver meant that the panel driver was also gone (the Origen board uses a LCD, which is completely different), and I had no idea how to get the panel working at this point. Also, merging the s3c-fb driver meant that the kernel was crashing early with no way to debug it. I was hitting a wall...
This morning I looked at the i9500 (S4) kernel code and guess what... Everything's there, the new framebuffer driver with all the panel drivers, even OUR panel driver! It includes: s3c-fb, MIPI-DSI driver, lcdfreq driver, s6e8aa0 panel driver. I know how to merge this sh*t. And we have three reference sources: exynos4 insignal, exynos5 nexus, exynos5 i9500 that share almost the same code.
One problem though, Insignal has taken down the sources and binaries a few months ago. However, we have it all backed up:
kernel source, userspace code (
1,
2), and the last missing piece, the
blobs (thanks
@sbrissen !).
This is our chance to get a graphics stack that
surpasses what Samsung ships and will ever ship with Touchwiz for i9100/N7000/i9300/N7100 :victory:
Edit: I'm writing this wall of text to help other developers understand what's going on. This is something I needed when I started developing... It is very hard to get any documentation, so I hope it will help others that would like to take part of this.
Edit2: by looking at gralloc_priv.h, it seems Insignal's gralloc is based on r3p2-01rel0 release.