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