Support NoGapps style package signature faking

Unfortunately due to GMSCore libraries for clients carrying out signature checks on the GMS app,
users are not able to use open source equivalents, and are being strong-armed (by apps) into using
non-free libraries for these functions. NoGapps is an open source implementation of these libraries.

Unfortunately, a patch like this is necessary in order to permit apps to be convinced they are talking
to the closed-source GMSCore. As this "DRM" is implemented at app-level, it's possible to do this,
without the Android OS itself being "fooled" by the faked signatures.

This commit is from the NoGapps project, I am just submitting it on their behalf.
Originates from https://github.com/microg/android_packages_apps_GmsCore

Change-Id: Ic8aaa0728a43936cd4c62382734342ba8f0fbf5b
Base: Fix crash of SystemUI

Change-Id: Ie18faac4dce45eb2fe9ca07d628bed7cd0eafaab
Revert "Optimize drawBitmapMesh using TRIANGLE_STRIP"

This reverts commit 1bf315e3d233d878066e4d5308434251a7d264c8.

Change-Id: Ia40dab77038ebbdf8407a591579d6a32fffe1af3
Optimize drawBitmapMesh using TRIANGLE_STRIP

Draw BitmapMesh using STRIP instead of TRIANGLES.
Depending on where the bottleneck is located in the pipeline,
there is a potential for saving two-thirds of the time spent rendering.
The speedup is due to avoiding redundant operations,
i.e., mapping each vertex four times to texture and color attribute,
sending each vertex twice to the GPU, vertex processing of GPU ...

In this patch:
1. Refactoring mesh using Strip.
2. Batch triangles by adding degenerate triangles.
3. Optimize computing positions of texture and color attribute.

Benchmark: Drawing Bitmap(1152x768 px) with 200x200 meshes
Performance is doubled (from 26.4 fps to 53 fps, Nexus10).
Memory footprint: only 17% of original method.
(from 240000 to 40401 vertices with xy, uv, rgba data.)

Change-Id: If4a4452efb491d3fddfc2da607b9fc7ae13bf631
Signed-off-by: kui.zheng <kui.zheng@arm.com>