Presently, we are investigating a move to Android with our i.MX6 platforms that are running 1080p displays. I've been studying up on Android and figuring out how the graphics stack works. From what I have learned, what we see on the display is comprised of multiple "layers" that get composited by an Android SW block called the hwcomposer. The hwcomposer takes all these layers from the Android surfaceflinger SW block and determines how to composite the layers in preparation for final display through the IPU based on the capabilities of the particular SoC Android is running on.
Any amount of layers can be composited by the 3D GPU but this is expensive in both power and memory bandwidth so typically the hwcomposer attempts to use the platforms 2D GPU or some other HW compositer IP core when available. Once the number of layers to be displayed exceeds the capabilities of the platforms HW, the hwcomposer reverts to using the 3D HW to do the composition.
With the i.MX6, the GC320 is the 2D GPU that does layer compositing and it supports compositing a maximum of 2 layers together according to Freescale document EB810.pdf. From what I am reading in this document, there are two paths that can be taken to overcome this layer compositing limitation with the existing i.MX6:
1) Perform multiple passes with the GC320. (Basically, composite 2 layers at a time.) Document EB810.pdf states the following about this workaround: "The GC320 in i.MX 6Dual/6Quad only supports composition on two layers, so there will be multiple composition operations required to support multiple overlays if the GC320 is used as the composition engine. This causes a lot of extra read/write accesses to the DRAM."
2) Perform the composition using the 3D GPU. Just like multiple passes with the 2D GPU, using the 3D GPU to perform the composition will consume a lot of extra read/write accesses to the DRAM.
With the mx6qp, the GC320 has been upgraded to support compositing up to 8 layers at a time which seems to be of great benefit when running Android. Do you have any additional information on this subject? For example any user experiences where the mx6qp helped with GUI rendering in Android? (My belief is that the mx6qp will solve problems that we are likely to bump into with Android but I don't have enough data at this time to steer us to the mx6qp or not due to not spending sufficient time with Android yet.)
Any help will be greatly appreciated.