Moving offscreen rendering away from glReadPixels.

Instead offscreen rendering is done to an FBO which is then rendered as
a tile onto the screen, once the screen is full of tiles glSwapBuffers
is called. This allows allows a lot of rendering to occur before the
buffers are swapped and doesn't incur the overhead of a read back.

Change-Id: I420e6fb28bdd1d0f7c3dcd41063470f48e068e5b
19 files changed