Graph minor linear optimization: Passing array storage (reduce temp array) and use array ref access.
Graph minor linear optimization: use vertexInTriangle3(..) reduces redundant computations
graph test: TestTextRendererNEWT10 cleanup
Bug 970: NEWT OSX ChildWindow setVisible(..) does not hide child window appropriately

Instead of using [mWin orderBack: mWin] for child windows,
utilize [mWin orderWindow: NSWindowOut relativeTo: [pWin windowNumber]]
Bug 972 - Reduce ClassLoader Lookup, i.e. Class.forName(..): GLProfile, GLContextImpl, DisplayImpl

GLProfile, GLContextImpl:
  - ReflectionUtil.DEBUG_STATS_FORNAME: Dump forName stats if set
  - Cache GL*Impl and GL*ProcAddressTable Constructor<?> for GLContextImpl's createInstance(..)
  - Remove off-thread early classloading thread which only adds complications

DisplayImpl:
  - Remove one redundant availability test
Bug 973: NativeWindowFactory: Needs service provider interface (SPI) for TK specific implementations (Scaling)

Add FIXME note ..
Bug 973: NativeWindowFactory: Needs service provider interface (SPI) for TK specific implementations (Scaling)
TextureIO: Support PNGTextureWriter w/ TextureData IntBuffer (via PNGPixelRect and PixelFormatUtil)

TextureData IntBuffer could be caused by AWT read-pixels
but is not seamlessly supported via PNGPixelRect since the latter
uses a hardcoded ByteBuffer.

Add static PNGPixelRect.write(..) supporting IntBuffer
to support this case for now.
PNGPixelRect instances do not support any Buffer type to avoid
a bloated implementation.

PixelFormatUtil adds support for int32 pixel format conversion.
Bug 962 - AWTGLReadBufferUtil should use aligned BufferedImage [for resized images]; Fix GLReadBufferUtil GL_PACK_ROW_LENGTH

AWTGLPixelBuffer is being reused when used via AWTGLPixelBufferProvider
even when resized.

AWTGLPixelBufferProvider uses  GLPixelBufferProvider's requiresNewBuffer(..)
which returns true if
  - allowRowStride==true and pixel-buffer size < required-size, or
  - allowRowStride==false and pixel-buffer size < required _or_ width doesn't match

otherwise it returns true, i.e. the AWTGLPixelBuffer is reused.

Hence the used BufferedImage might need to be aligned,
i.e. using AWTGLPixelBuffer's getAlignedImage(..).

+++

GLReadBufferUtil shall use current texture-data width for GL_PACK_ROW_LENGTH,
not the static GLPixelBuffer's width, which may not reflect image dimension (resize)

+++
TextureIO: Fix PNGTextureWriter Vertical-Flip, i.e. pass TextureData's getMustFlipVertically() to PNGPixelRect
Bug 974 - Add missing [GL4] glMultiDrawArraysIndirect(int mode, int type, long indirect_offset, int drawcount, int stride)
SurfaceUpdatedListener: Order methods in impl. Class; SurfaceUpdatedListener: Mark methods final, use volatile 'isEmpty' to bail out early @ surfaceUpdated.
Bug 975 - GLJPanel's OffscreenDrawable shall not double swap (custom swap by GLEventListener using [AWT]GLReadBufferUtil)

When utilizing [AWT]GLReadBufferUtil it is usually desired to read from the front-buffer
instead the back-buffer. The latter may not be defined, e.g. when using MSAA.

A GLEventListener utilizing [AWT]GLReadBufferUtil,
must perform the drawable.swapBuffers() to be able to read from the front-buffer.

Usually GLAutoDrawable.setAutoSwapBuffer(false) should be called here,
to avoid a double swap - however GLJPanel does not support toggling auto-swap
since it requires to control swap for it's own read-pixels.

Remedy for GLJPanel:
  - GLJPanel issues helper.setAutoSwapBufferMode(false) - immutable

  - Enable GLJPanel.swapBuffer() if initializes
    This was previously disabled.

  - GLJPanel's OffscreenBackend listens to  surfaceUpdated,
    to be notified whether postGL needs to swap buffer
    or the drawable.swapBuffer() was already called between preGL and postGL.

See unit tests adding/removing a snapshot GLEventListener
performing swapBuffers() and setting auto-swap accordingly.
GLPixelStorageModes: Safe and restore GL2ES3 modes, i.e. add missing GLES3 modes. GLStateTracker: Use proper GL names for enums
GLReadBufferUtil: Set PACK_ROW_LENGTH for ES3 as well - also set ReadBuffer to default.
Bug 975 - GLJPanel's OffscreenDrawable shall not double swap - Use default auto-swap mechanims

Refines commit 908ebd99d1eb57ce773a1fdd67c76886da86b9e6

Note that the test case decide whether to auto-swap (after read-pixels)
or not auto-swap (manual swap before read-pixels).

See UITestCase.swapBuffersBeforeRead(GLCapabilitiesImmutable chosenCaps):
   Determines whether the chosen GLCapabilitiesImmutable requires a swap-buffers before reading pixels.

   Usually one uses the default-read-buffer, i.e. GL.GL_FRONT for single-buffer
   and GL.GL_BACK for double-buffer GLDrawables
   and GL.GL_COLOR_ATTACHMENT0 for offscreen framebuffer objects.
   Here swap-buffers shall happen after calling reading pixels, the default.

   However, multisampling offscreen GLFBODrawables utilize swap-buffers to downsample
   the multisamples into the readable sampling sink.
   In this case, we require a swap-buffers before reading pixels.

   Returns:  chosenCaps.isFBO() && chosenCaps.getSampleBuffers()

+++

- GLJPanel:
  - Remove SurfaceUpdatedListener mechanism in favor of
    default auto-swap-buffer via GLDrawableHelper.
    This removes complexity.

  - postGL does not need to perform explicit swapBuffer operation,
    but rely on GLDrawableHelper and the default mechanism.
    This is also compatible w/ J2D backend.

  - Use GLDrawableHelper for setAutoSwapBufferMode(..) and getAutoSwapBufferMode()

+++

UnitTests:

- UITestCase:
  - Add 'boolean swapBuffersBeforeRead(GLCapabilitiesImmutable chosenCaps)'
    to determine whether swapBuffers() must occure before read-pixels. See above.

- GLReadBuffer00Base*
  - remove explicit addSnapshotGLEL/removeSnapshotGLEL

  - add TextRendererGLEL, to display frame-count and -dimension

  - SnapshotGLEL*
    - simply toggle auto-swap in their init(..) and dispose(..) method!

    - clear back-buffer if 'swapBuffersBeforeRead'
      to test whether the right buffer is being used for read-pixels.
Bug 927 - Multithreading (MT) issues with ALAudioSink (openal-soft)

- Using update openal-soft (commit 7297c3214a4c648aaee81a9877da15b88f798197)

- Analyzed openal-soft threading issues:
  - a global-lock would have removed the issue

  - turns out that using ALC_EXT_thread_local_context's alcSetThreadContext(..)
    instead of alcMakeContextCurrent(..) solves the issue

- Cleaned up al*GetError() queries and handling

- Simplified flush/dequeue buffers
doc/HowToBuild.html: Complete Debian package list, add note on multiarch packages
Graph: RendereState: Create own PMVMatrix if passed value is null; Renderer: Add reshapeNotify(..) for NOP PMV reshape notification
Extract TextRendererGLELBase (demo) - Utilize general text rendering for demos.