Order-2: [a] - GL display [b] - readPixels [c] - GL swapBuffers (always due to single-buffer non-MSAA or MSAA offscreen drawable)
since [a] and [b] happened in Updater's display method, and [c] followed the same triggered by GLAutoDrawableHelper.
+++
The proof, commit d46d9ad8f998a7128d9f023294d5f489673d6d8a, is faulty, since it always included the 'snapshot' GL event listener which turned-off auto-swap and swapped before read-pixels. TL;DR it enforced proper Order-1.
+++
This fix allows the Backend to intercept disable GLDrawableHelper's setAutoSwapBufferMode(..) and perform the auto-swap mode itself in the proper Order-1.
The unit test has been refined to optionally disable the snapshot to validate auto-swap mode.
+++
Refined GLBase and GLContext's API doc for 'getDefaultReadBuffer()'
+++
Add GLDrawableUtil.swapBuffersBeforeRead(..) and reuse it for TileRendererBase (original impl.).