Skip to content
The Jenkins Controller is preparing for shutdown. No new builds can be started.
Success

Changes

Summary

  1. NEWT WindowImpl: Don't waitForPosition(..) if child window - issues w/ (details)
  2. JOGLNewtApplet3Run: Don't set position if normal child window. (details)
  3. Bug 970: NEWT OSX ChildWindow setVisible(..) does not hide child window (details)
  4. Bug 972 - Reduce ClassLoader Lookup, i.e. Class.forName(..): GLProfile, (details)
  5. Bug 973: NativeWindowFactory: Needs service provider interface (SPI) for (details)
  6. Bug 973: NativeWindowFactory: Needs service provider interface (SPI) for (details)
  7. TextureIO: Support PNGTextureWriter w/ TextureData IntBuffer (via (details)
  8. Bug 962 - AWTGLReadBufferUtil should use aligned BufferedImage [for (details)
  9. TextureIO: Fix PNGTextureWriter Vertical-Flip, i.e. pass TextureData's (details)
  10. Bug 974 - Add missing [GL4] glMultiDrawArraysIndirect(int mode, int (details)
  11. SurfaceUpdatedListener: Order methods in impl. Class; (details)
  12. Bug 975 - GLJPanel's OffscreenDrawable shall not double swap (custom (details)
  13. GLPixelStorageModes: Safe and restore GL2ES3 modes, i.e. add missing (details)
  14. GLReadBufferUtil: Set PACK_ROW_LENGTH for ES3 as well - also set (details)
  15. Bug 975 - GLJPanel's OffscreenDrawable shall not double swap - Use (details)
  16. Bug 927 - Multithreading (MT) issues with ALAudioSink (openal-soft) (details)
  17. doc/HowToBuild.html: Complete Debian package list, add note on multiarch (details)
  18. Graph: RendereState: Create own PMVMatrix if passed value is null; (details)
  19. Extract TextRendererGLELBase (demo) - Utilize general text rendering for (details)
  20. Movie* Demo: Utilize TextRendererGLELBase (fps, vsync, ..) (details)
  21. doc/HowToBuild.html: Remove duplicate line (details)
  22. Add make/scripts/make.jogl.all.macosx-clang.sh (details)
Commit 2aa8d4bbaf93c6bdf9188d9a88b5a28af43b112e by Sven Gothel
NEWT WindowImpl: Don't waitForPosition(..) if child window - issues w/ different toolkits!

With Applet3 plugin (firefox - using GTK), our child window seems to receives the absolute position,
or 'arbitrary' values (?).
Will need to figure out how to properly determine these cases.

In the meantime, simply turn off waitForPosition(..) for child windows,
which shall not harm NEWT.

Impacts following actions as child window:
- createNativeWindow
- reparent
- fullscreen
The file was modifiedsrc/newt/classes/jogamp/newt/WindowImpl.java (diff)
Commit c7ef2bf610ad3310aa9785820489f980c223cdb0 by Sven Gothel
JOGLNewtApplet3Run: Don't set position if normal child window.
The file was modifiedsrc/newt/classes/com/jogamp/newt/util/applet/JOGLNewtApplet3Run.java (diff)
Commit c3c204a2e374c1dc4c1fb51f15444e5b92850839 by Sven Gothel
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]]
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/newt/parenting/TestParenting01NEWT.java (diff)
The file was modifiedsrc/newt/native/MacWindow.m (diff)
Commit c5964bf2e3ebd6e05a7d551b033355c21ca9eea9 by Sven Gothel
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
The file was modifiedsrc/jogl/classes/javax/media/opengl/GLProfile.java (diff)
The file was modifiedmake/scripts/tests-win.bat (diff)
The file was modifiedmake/scripts/tests-x64-dbg.bat (diff)
The file was modifiedsrc/newt/classes/jogamp/newt/DisplayImpl.java (diff)
The file was modifiedmake/scripts/tests.sh (diff)
The file was modifiedsrc/jogl/classes/jogamp/opengl/GLContextImpl.java (diff)
Commit 84930529068062d29d48924b37953ecb1ee30bdd by Sven Gothel
Bug 973: NativeWindowFactory: Needs service provider interface (SPI) for TK specific implementations (Scaling)

Add FIXME note ..
The file was modifiedsrc/nativewindow/classes/javax/media/nativewindow/NativeWindowFactory.java (diff)
Commit 0666a9ee8332e8ab59d533c65552dae8c58cf267 by Sven Gothel
Bug 973: NativeWindowFactory: Needs service provider interface (SPI) for TK specific implementations (Scaling)
The file was modifiedsrc/nativewindow/classes/javax/media/nativewindow/NativeWindowFactory.java (diff)
Commit 21b68a5e73a672da34b37b5641b779aa1e3fa41d by Sven Gothel
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.
The file was modifiedsrc/jogl/classes/com/jogamp/opengl/util/PNGPixelRect.java (diff)
The file was modifiedsrc/nativewindow/classes/javax/media/nativewindow/util/PixelFormatUtil.java (diff)
The file was modifiedsrc/jogl/classes/com/jogamp/opengl/util/texture/TextureIO.java (diff)
Commit 1d2515da352a79c239efecdfa3e0fade47779781 by Sven Gothel
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)

+++
The file was addedsrc/test/com/jogamp/opengl/test/junit/jogl/awt/TestGLJPanelResize02AWT.java
The file was modifiedsrc/jogl/classes/com/jogamp/opengl/util/GLReadBufferUtil.java (diff)
The file was modifiedmake/scripts/tests-win.bat (diff)
The file was modifiedsrc/jogl/classes/com/jogamp/opengl/util/GLPixelBuffer.java (diff)
The file was modifiedmake/scripts/tests.sh (diff)
The file was modifiedsrc/jogl/classes/com/jogamp/opengl/util/awt/AWTGLReadBufferUtil.java (diff)
Commit 8631e403aa0c02c53b06819ef9b112af1885d4f7 by Sven Gothel
TextureIO: Fix PNGTextureWriter Vertical-Flip, i.e. pass TextureData's getMustFlipVertically() to PNGPixelRect
The file was modifiedsrc/jogl/classes/com/jogamp/opengl/util/texture/TextureIO.java (diff)
Commit 325986eb0b14e90d9ef35cbb0ca57c9c91df4827 by Sven Gothel
Bug 974 - Add missing [GL4] glMultiDrawArraysIndirect(int mode, int type, long indirect_offset, int drawcount, int stride)
The file was modifiedmake/config/jogl/gl-common.cfg (diff)
The file was modifiedmake/config/jogl/gl4bc-common-cpubufferJavaCode.java (diff)
The file was modifiedmake/config/jogl/gl-common-gpubufferonly.cfg (diff)
Commit 8be9d9b5bd71854f4da15294b47125a8a4975e31 by Sven Gothel
SurfaceUpdatedListener: Order methods in impl. Class; SurfaceUpdatedListener: Mark methods final, use volatile 'isEmpty' to bail out early @ surfaceUpdated.
The file was modifiedsrc/newt/classes/jogamp/newt/WindowImpl.java (diff)
The file was modifiedsrc/nativewindow/classes/com/jogamp/nativewindow/awt/JAWTWindow.java (diff)
The file was modifiedsrc/nativewindow/classes/jogamp/nativewindow/SurfaceUpdatedHelper.java (diff)
The file was modifiedsrc/newt/classes/com/jogamp/newt/opengl/GLWindow.java (diff)
Commit 908ebd99d1eb57ce773a1fdd67c76886da86b9e6 by Sven Gothel
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.
The file was addedsrc/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLReadBuffer01GLJPanelAWT.java
The file was modifiedmake/scripts/tests-win.bat (diff)
The file was removedsrc/test/com/jogamp/opengl/test/junit/jogl/awt/TestGLJPanelResize02AWT.java
The file was addedsrc/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLReadBuffer01GLWindowNEWT.java
The file was addedsrc/test/com/jogamp/opengl/test/junit/jogl/acore/GLReadBuffer00Base.java
The file was modifiedsrc/jogl/classes/javax/media/opengl/awt/GLJPanel.java (diff)
The file was modifiedmake/scripts/tests.sh (diff)
Commit d55fa82fe6f236523dd4f701a15057b1a0ca8e36 by Sven Gothel
GLPixelStorageModes: Safe and restore GL2ES3 modes, i.e. add missing GLES3 modes. GLStateTracker: Use proper GL names for enums
The file was modifiedsrc/jogl/classes/jogamp/opengl/GLStateTracker.java (diff)
The file was modifiedsrc/jogl/classes/com/jogamp/opengl/util/GLPixelStorageModes.java (diff)
Commit fb12b0b6fa37d3a4136bb04597b3c32b15832c82 by Sven Gothel
GLReadBufferUtil: Set PACK_ROW_LENGTH for ES3 as well - also set ReadBuffer to default.
The file was modifiedsrc/jogl/classes/com/jogamp/opengl/util/GLReadBufferUtil.java (diff)
Commit 82f679b064784213591b460fc5eaa1f5f196fbd1 by Sven Gothel
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.
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLReadBuffer01GLJPanelAWT.java (diff)
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLReadBuffer01GLWindowNEWT.java (diff)
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/util/UITestCase.java (diff)
The file was modifiedmake/scripts/tests.sh (diff)
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/jogl/acore/GLReadBuffer00Base.java (diff)
The file was modifiedsrc/jogl/classes/javax/media/opengl/awt/GLJPanel.java (diff)
Commit 938fbc9e4cb58c1ab6a6f66f128189ed7b634955 by Sven Gothel
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
The file was modifiedsrc/jogl/classes/jogamp/opengl/openal/av/ALAudioSink.java (diff)
The file was modifiedmake/scripts/tests.sh (diff)
Commit 1638fb3e80a1102670b5d216647ee6fce0031d7f by Sven Gothel
doc/HowToBuild.html: Complete Debian package list, add note on multiarch packages
The file was modifieddoc/HowToBuild.html (diff)
Commit 1e1b408ba1527edc2ee5ceede92816ee87e4c461 by Sven Gothel
Graph: RendereState: Create own PMVMatrix if passed value is null; Renderer: Add reshapeNotify(..) for NOP PMV reshape notification
The file was modifiedsrc/jogl/classes/jogamp/graph/curve/opengl/RenderStateImpl.java (diff)
The file was modifiedmake/scripts/tests.sh (diff)
The file was modifiedsrc/jogl/classes/com/jogamp/graph/curve/opengl/Renderer.java (diff)
The file was modifiedsrc/jogl/classes/com/jogamp/graph/curve/opengl/RenderState.java (diff)
Commit 82c0cb4bfcd62a718699cafcd9cf6fe53a0802e5 by Sven Gothel
Extract TextRendererGLELBase (demo) - Utilize general text rendering for demos.
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/jogl/demos/es2/TextureSequenceCubeES2.java (diff)
The file was addedsrc/test/com/jogamp/opengl/test/junit/graph/TextRendererGLELBase.java
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/jogl/acore/GLReadBuffer00Base.java (diff)
Commit 1b301c128b25d825ac1ca8acf1795d43a4ca6a38 by Sven Gothel
Movie* Demo: Utilize TextRendererGLELBase (fps, vsync, ..)
The file was modifiedsrc/test/com/jogamp/opengl/test/android/MovieCubeActivity0.java (diff)
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/jogl/demos/es2/av/MovieSimple.java (diff)
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/jogl/demos/es2/av/MovieCube.java (diff)
Commit 1866f2c54a76ba979ebc6608d1fca1293c527fc6 by Sven Gothel
doc/HowToBuild.html: Remove duplicate line
The file was modifieddoc/HowToBuild.html (diff)
Commit a6acce1be19060a6a4801582f0534e0d6887467a by Sven Gothel
Add make/scripts/make.jogl.all.macosx-clang.sh
The file was modifiedmake/scripts/make.jogl.all.macosx-clang.sh (diff)