emugl: Simplify RenderChannel interface.
This patch simplifies the RenderChannel interface and its
implementation (a.k.a. RenderChannelImpl). This has several
benefits:
- The interface is now much closer to the one expected by
an AndroidPipe instance, making EmuglPipe easier to implement
(e.g. get rid of atomic variables in it).
- RenderChannelImpl only uses a single lock instead of three,
and doesn't use atomic variables anymore, thanks to the
BufferQueue class. This makes the code a lot less confusing
and removes risks of thread-racy behaviour due to the use
of multiple locks and atomics at the same time.
Performance wise, this seems to be comparable to the current
implementation. The following numbers corresponds to the
frames/s collected when running the Antutu3D 6.0 "Garden" benchmark,
on an Android API level 23/x86 system image, 1920x1080 resultion,
running on an HPz620 (32 cores at 2.7 GHz) with the "performance"
scaling governor set on all CPUs:
Official Current
release Tip-of-tree With this patch
15.07 17.13 17.52
15.35 17.36 17.52
15.06 17.34 17.37
Change-Id: I1f0e998b23c38051c8de519a3cab3f6a961be930
9 files changed