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

Changes

Summary

  1. Bug 1024: Add fallback for native-jar-file location via classpath (details)
  2. Bug 1033: Guarantee atomicity of high-level GLAutoDrawable operations, (details)
  3. Fixed and Changed NVidia Windows Driver Threaded optimization bug (details)
  4. Bug 1035 - Allow Gamma [Brightness, Contrast] settings to be performed (details)
  5. Bug 1029 - Memory leak in GLDrawableHelper: 'perThreadInitAction' shall (details)
  6. Bug 1037 - FBObject/GLFBODrawable: Do not assume using a (details)
  7. Bug 1037 - FBObject: Add proper attachment size validation at init, (details)
  8. GLJPanel: Enhance the class API-doc (details)
  9. GLJPanel: Only dump verbose debug on frameCount each frame if property (details)
  10. GLJPanel: Enhance API doc on setSkipGLOrientationVerticalFlip(..) (details)
  11. Bug 1016 - GLJPanel Offscreen FBO size may exceed GL MAX TEXTURE SIZE, (details)
  12. WindowImpl: Fix intendation (details)
  13. Bug 1036: NVidia Windows Driver 'Threaded optimization' workaround. (details)
  14. WindowsWGLDrawableFactory: Fix html doc (details)
  15. GLContext.hasNoDefaultVAO(): Remove ES 3.x, fixing issues w/ ES 3.x (details)
  16. BuildComposablePipeline: Handle synthetic isGL* and getGL* more generic, (details)
  17. Fix ShaderCode.es3_default_precision_fp: ES 3.x requires same precision (details)
  18. FixedFuncHook: Use downstream gl.getGLProfile().getImpl() for custom (details)
  19. Bug 1038 - Allow skipping detection of certain GLProfiles: Skip native (details)
  20. GLContext: Don't map compatibility profiles to core profile if the (details)
  21. Bug 1038 - Allow skipping detection of certain GLProfiles: Skip (details)
  22. Revert "GLContext: Don't map compatibility profiles to core profile if (details)
  23. Bug 1038 - Fix: Allow skipping detection of certain GLProfiles: Skip (details)
  24. Bug 1036: NVidia's Windows Driver Threaded optimization: Alternative (details)
  25. Bug 830 - Add Heuristics for to query whether (details)
  26. Fix commit adf8e6e40aa9513036864489642cfef252804d08 (Bug 1036): long -> (details)
  27. Refine test ff5dba28610b4f680c9320e9e52669ed54d4de43: Perform context (details)
  28. GLDrawable: Expose getRequestedGLCapabilities() (Include to public API) (details)
  29. Bug 830 - Refine Heuristics for to query whether (details)
  30. Bug 1039 - Specify behavior of GLEventListener Exceptions occurring (details)
Commit 37760af388303834e359703aad9562ce6165845f by Sven Gothel
Bug 1024: Add fallback for native-jar-file location via classpath

Adapt to GlueGen commit f5c48efcf546ba4e08e197ccced6df83b57e1755
The file was modifiedsrc/nativewindow/classes/jogamp/nativewindow/Debug.java (diff)
The file was modifiedmake/build-jogl.xml (diff)
The file was modifiedmake/build-oculusvr.xml (diff)
The file was modifiedsrc/nativewindow/classes/jogamp/nativewindow/NWJNILibLoader.java (diff)
The file was addedmake/joglversion-all-natives
The file was modifiedsrc/newt/classes/jogamp/newt/NEWTJNILibLoader.java (diff)
The file was modifiedmake/build-nativewindow.xml (diff)
The file was modifiedsrc/newt/classes/jogamp/newt/Debug.java (diff)
The file was modifiedmake/build-newt.xml (diff)
The file was addedmake/joglversion-natives
The file was modifiedsrc/oculusvr/classes/com/jogamp/oculusvr/OVRDynamicLibraryBundleInfo.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/opengl/Debug.java (diff)
The file was addedsrc/jogl/classes/jogamp/opengl/cg/CgPackagePlaceholder.java
The file was modifiedmake/scripts/tests.sh (diff)
The file was modifiedmake/build.xml (diff)
The file was addedmake/nativewindowversion-natives
The file was addedmake/newtversion-natives
The file was modifiedsrc/jogl/classes/javax/media/opengl/GLProfile.java (diff)
The file was addedmake/oculusvrversion-natives
The file was modifiedsrc/jogl/classes/com/jogamp/opengl/cg/CgDynamicLibraryBundleInfo.java (diff)
Commit c77b8f586cb2553582a42f5b90aeee5ef85f1efe by Sven Gothel
Bug 1033: Guarantee atomicity of high-level GLAutoDrawable operations, avoiding race conditions.

GLAutoDrawable (API CHANGE) allowing atomic operations:
  - Add class API-doc chapter about 'GLAutoDrawable Locking'

  - Add method invoke(..) API-doc description about throwing IllegalStateException in case of a detected deadlock situation ahead
    (Note: Implemented in GLDrawableHelper.invoke(..) for all implementations)

  - Add new methods for proper multithread handling:
    - public RecursiveLock getUpstreamLock();
    - public boolean isThreadGLCapable();

+++

GLEventListenerState/GLDrawableUtil:

  - Perform operation in a atomic fashion,
    i.e. lock GLAutoDrawable during whole operations:
      - GLDrawableUtil.swapGLContext(..)
      - GLDrawableUtil.swapGLContextAndAllGLEventListener(..)
      - GLEventListenerState.moveFrom(..)
      - GLEventListenerState.moveTo(..)

  - ReshapeGLEventListener:
    - Moved from GLEventListenerState.ReshapeGLEventListener -> GLDrawableUtil.ReshapeGLEventListener
    - Takes 'displayAfterReshape' case into account.

+++

javax.media.opengl.Threading Clarifications:
  - Public 'enum Mode', i.e. Threading.Mode

  - Public getMode()

  - Clarified 'isOpenGLThread()':
    - Take 'singleThreaded' into account directly,
      i.e. always return 'true' if singleThreaded == false
The file was modifiedsrc/jogl/classes/com/jogamp/opengl/GLAutoDrawableDelegate.java (diff)
The file was modifiedsrc/jogl/classes/javax/media/opengl/GLAutoDrawable.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/opengl/awt/AWTThreadingPlugin.java (diff)
The file was modifiedsrc/jogl/classes/com/jogamp/opengl/GLEventListenerState.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/opengl/GLContextImpl.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/opengl/ThreadingImpl.java (diff)
The file was modifiedsrc/jogl/classes/javax/media/opengl/awt/GLJPanel.java (diff)
The file was modifiedsrc/nativewindow/classes/javax/media/nativewindow/NativeSurface.java (diff)
The file was modifiedsrc/newt/classes/com/jogamp/newt/opengl/GLWindow.java (diff)
The file was modifiedsrc/jogl/classes/javax/media/opengl/awt/GLCanvas.java (diff)
The file was modifiedsrc/jogl/classes/com/jogamp/opengl/util/GLDrawableUtil.java (diff)
The file was modifiedmake/scripts/tests.sh (diff)
The file was modifiedsrc/jogl/classes/javax/media/opengl/GLContext.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/opengl/GLAutoDrawableBase.java (diff)
The file was modifiedsrc/jogl/classes/javax/media/opengl/Threading.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/opengl/GLDrawableHelper.java (diff)
The file was modifiedsrc/jogl/classes/com/jogamp/opengl/swt/GLCanvas.java (diff)
Commit 007f120cd8d33e4231ef4d207b85ed156d1e0c82 by Sven Gothel
Fixed and Changed NVidia Windows Driver Threaded optimization bug workaround of commit 5166d6a6b617ccb15c40fcb8d4eac2800527aa7b

Commit 5166d6a6b617ccb15c40fcb8d4eac2800527aa7b added a workaround
for the NVidia driver 260.99 for Window from 2010-12-11 issue.

[1] The workaround sets a process affinity while JOGL initialization
to mitigate NVidia driver's 'Threaded optimization := On' race conditions.
The process affinity is reset reset after initialization.

[2] The process affinity reset code had a bug, i.e. instead to restore the
original process's affinity mask, we restored the system's default affinity mask.

[3] Further more, there seem to be issues with changing a process affinity mask
regarding the process group.

This patch:
  - Solves issue [2] by using the original process affinity mask

  - Solves issue [3] by allowing a custom
    affinity mode via the property 'jogl.debug.windows.cpu_affinity_mode':

      - 0 - none (default, no affinity required for Windows NV driver >= 266.58 from 2011-01-24)
      - 1 - process affinity (was required w/ Windows NV driver 260.99 from 2010-12-11, see commit 5166d6a6b617ccb15c40fcb8d4eac2800527aa7b)
      - 2 - thread affinity (experimental)

    Hence the workaround is disabled by default,
    since the crash as dicumented in commit 5166d6a6b617ccb15c40fcb8d4eac2800527aa7b
    could not be reproduced with NV driver 266.58 from 2011-01-24.
The file was modifiedmake/stub_includes/win32/wingdi.h (diff)
The file was modifiedsrc/jogl/classes/jogamp/opengl/windows/wgl/WindowsWGLDrawableFactory.java (diff)
Commit 15b9e36e80d6f62f7dfb5c45d00cd04de2007ee5 by Sven Gothel
Bug 1035 - Allow Gamma [Brightness, Contrast] settings to be performed on display/screen of a NativeSurface

Currently GLDrawableFactoryImpl's gamma settings are performed
only on the main screen.

Allow passing a NativeSurface, so it's display/screen
gamma values will be changed.

Further, promote low-level gamma settings to GLDrawableFactory
for direct usage.

Change com.jogamp.opengl.util.Gamma to use a GLDrawable
instead of a GL object to clarify that we use the drawable.

Also add a GLAutoDrawable variant, allowing proper locking
of its 'upstream-lock' to guarantee atomicity.

+++

Tested manually w/ TestGearsES2NEWT on X11 and Windows
using the 'g' and 'G' to modify gamma.
Value is properly reset on exit.
The file was modifiedmake/scripts/tests-win.bat (diff)
The file was modifiedmake/scripts/tests.sh (diff)
The file was modifiedsrc/jogl/classes/javax/media/opengl/GLDrawableFactory.java (diff)
The file was modifiedsrc/jogl/classes/com/jogamp/opengl/util/Gamma.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/opengl/GLDrawableFactoryImpl.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/opengl/macosx/cgl/MacOSXCGLDrawableFactory.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/opengl/windows/wgl/WindowsWGLDrawableFactory.java (diff)
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/jogl/demos/es2/newt/TestGearsES2NEWT.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/opengl/x11/glx/X11GLXDrawableFactory.java (diff)
Commit 876a168f6757454e8a02543b53e32b89e54282bd by Sven Gothel
Bug 1029 - Memory leak in GLDrawableHelper: 'perThreadInitAction' shall use a WeakReference

Static ThreadLocal 'perThreadInitAction' leaks memory if using a hard reference,
utilizing a WeakReference allows the passed 'initAction' owner to be garbage collected.
The file was modifiedsrc/jogl/classes/jogamp/opengl/GLDrawableHelper.java (diff)
Commit e96882ae569c681e1b28da6701bf547f6dd9eda8 by Sven Gothel
Bug 1037 - FBObject/GLFBODrawable: Do not assume using a TextureAttachment for a Colorbuffer, also make DEPTH optional.

API Change

+++

In certain cases a TextureAttachment for the FBO's color buffer
is not desired, either for performance reasons where texture functionality
is not required or to avoid texture restrictions like size, etc.

+++

GLFBODrawable shall use TextureAttachment for the FBO's color buffer
and a DEPTH buffer per default.
However, the user shall be allowed to use a plain ColorAttachment (renderbuffer)
and also no DEPTH buffer.

+++

FBObject Details:
- Colorbuffer interface exposes Attachment details
   like format, size, etc as well as it's implementation
   specifics, isTextureAttachment() and getTextureAttachment() allowing a clean cast and type query.

- Allow ColorAttachment to be used for non MSAA

- Make TextureAttachment optional for method 'use(GL, TextureAttachment)'

- Only validate size against MAX_TEXTURESIZE if using a TextureAttachment

- API Change:
   - rename: getColorAttachmentCount() -> getColorbufferCount()
   - add: getTextureAttachmentCount()
   - change 'TextureAttachment getSamplingSink()' -> 'Colorbuffer getSamplingSink()'
The file was modifiedsrc/jogl/classes/com/jogamp/opengl/util/stereo/StereoClientRenderer.java (diff)
The file was modifiedsrc/jogl/classes/javax/media/opengl/awt/GLJPanel.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/opengl/macosx/cgl/MacOSXCGLContext.java (diff)
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/jogl/acore/TestFBOOffThreadSharedContextMix2DemosES2NEWT.java (diff)
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/jogl/acore/TestFBOOnThreadSharedContext1DemoES2NEWT.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/opengl/GLOffscreenAutoDrawableImpl.java (diff)
The file was modifiedmake/scripts/tests.sh (diff)
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/jogl/demos/es2/FBOMix2DemosES2.java (diff)
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/jogl/demos/es2/TextureDraw02ES2ListenerFBO.java (diff)
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/jogl/acore/TestFBOAutoDrawableFactoryNEWT.java (diff)
The file was modifiedsrc/jogl/classes/com/jogamp/opengl/FBObject.java (diff)
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/graph/demos/ui/GLEventListenerButton.java (diff)
The file was modifiedsrc/jogl/classes/javax/media/opengl/GLFBODrawable.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/graph/curve/opengl/VBORegion2PMSAAES2.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/opengl/GLFBODrawableImpl.java (diff)
Commit 1d813dbb19ee20c7d0a3a4614c88e3733fd489dc by Sven Gothel
Bug 1037 - FBObject: Add proper attachment size validation at init, reset and attachColorbuffer(..) / attachRenderbuffer(..)
The file was modifiedsrc/jogl/classes/com/jogamp/opengl/FBObject.java (diff)
Commit c223c64a195fb543167d66b7e9ce3661eb48d772 by Sven Gothel
GLJPanel: Enhance the class API-doc
The file was modifiedsrc/jogl/classes/javax/media/opengl/awt/GLJPanel.java (diff)
Commit 9e05d25c2ec65ddc6454d1b5d29a6726678a4b3f by Sven Gothel
GLJPanel: Only dump verbose debug on frameCount each frame if property 'jogl.debug.GLJPanel.Frames' is defined
The file was modifiedsrc/jogl/classes/javax/media/opengl/awt/GLJPanel.java (diff)
Commit 6361d12c0b03132c57d326750b7911b313f3664b by Sven Gothel
GLJPanel: Enhance API doc on setSkipGLOrientationVerticalFlip(..)
The file was modifiedsrc/jogl/classes/javax/media/opengl/awt/GLJPanel.java (diff)
Commit 9be28a33fa92cfa52bdf13ad5c21f8317f66c319 by Sven Gothel
Bug 1016 - GLJPanel Offscreen FBO size may exceed GL MAX TEXTURE SIZE, only use an FBO TextureAttachment if required

We only require an FBO TextureAttachment if using GLSL vertical flip,
otherwise we simply requires a color renderbuffer.

Further, the 'FBO fboFlipped' in GLSL vertical flip mode also simply requires a color renderbuffer.
The file was modifiedmake/scripts/tests.sh (diff)
The file was modifiedsrc/jogl/classes/javax/media/opengl/awt/GLJPanel.java (diff)
Commit 3fe8ce051d6d0d2da456434a3f6e7bc4e95c9281 by Sven Gothel
WindowImpl: Fix intendation
The file was modifiedsrc/newt/classes/jogamp/newt/WindowImpl.java (diff)
Commit 70c6a54fa2b8dec880b5808d87b31f4afb09dd3b by Sven Gothel
Bug 1036: NVidia Windows Driver 'Threaded optimization' workaround. [3/3]

Commit 5166d6a6b617ccb15c40fcb8d4eac2800527aa7b added a workaround for
NVidia's Windows Driver Threaded optimization bug
existing in NVidia driver 260.99 for Window from 2010-12-11.

Commit 007f120cd8d33e4231ef4d207b85ed156d1e0c82
fixed the workaround and made it optional, default: turned off!

Rational of turning the workaround off was due to testing
against the original test-case 'Applet and Webstart'
with drivers >= 266.58 from 2011-01-24,
which did not reproduce this issue.

However, our unit tests reproduced the issue,
e.g. test: com.jogamp.opengl.test.junit.jogl.caps.TestTranslucencyNEWT

Hence we have to re-enable the workaround per default.

Added the following documentation of the issue:

+++

Since NV driver 260.99 from 2010-12-11 a 'Threaded optimization' feature has been introduced.
The driver spawns off a dedicated thread to off-load certain OpenGL tasks from the calling thread
to perform them async and off-thread.

If 'Threaded optimization' is manually enabled 'on', the driver may crash with JOGL's consistent
multi-threaded usage - this is a driver bug.

If 'Threaded optimization' is manually disabled 'off', the driver always works correctly.

'Threaded optimization' default setting is 'auto' and the driver may crash without this workaround.

If setting the process affinity to '1' (1st CPU) while initialization and launching
the  SharedResourceRunner, the driver does not crash anymore in 'auto' mode.
This might be either because the driver does not enable 'Threaded optimization'
or because the driver's worker thread is bound to the same CPU.

Property integer value <code>jogl.debug.windows.cpu_affinity_mode</code>:
  0 - none (no affinity, may cause driver crash with 'Threaded optimization' = ['auto', 'on'])
  1 - process affinity (default, workaround for driver crash for 'Threaded optimization' = 'auto', still crashes if set to 'on')

+++

Note: WindowsThreadAffinity does _not_ work.
The file was modifiedmake/scripts/tests-win.bat (diff)
The file was modifiedmake/scripts/tests-x64-dbg.bat (diff)
The file was modifiedmake/scripts/tests-x32-dbg.bat (diff)
The file was modifiedsrc/jogl/classes/jogamp/opengl/windows/wgl/WindowsWGLDrawableFactory.java (diff)
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/jogl/caps/TestTranslucencyNEWT.java (diff)
The file was modifiedmake/scripts/tests.sh (diff)
Commit 3ad880dfe3d5eb1eaa9db9860acdf24a3f159a58 by Sven Gothel
WindowsWGLDrawableFactory: Fix html doc
The file was modifiedsrc/jogl/classes/jogamp/opengl/windows/wgl/WindowsWGLDrawableFactory.java (diff)
Commit 67444b99f42e5a6db282e8a7dbc0e633713d0d48 by Sven Gothel
GLContext.hasNoDefaultVAO(): Remove ES 3.x, fixing issues w/ ES 3.x client side vertex arrays

Commit 6136457f10d020c779adc78641d0048f77ab1635 defined hasNoDefaultVAO() as [ GL4, GL3, GLES3 ],
however ES 3.x still supports (deprecated):
  - client side vertex arrays
  - default vertex array object (VAO)

Setting a custom VAO leads to GL_INVALID_OPERATION for client side vertex arrays
used w/ glVertexPointer(..).

Hence removing GLES3 from hasNoDefaultVAO().
The file was modifiedsrc/jogl/classes/javax/media/opengl/GLContext.java (diff)
Commit 323fd68b6cce41de4980a909ef55273a98a8aad9 by Sven Gothel
BuildComposablePipeline: Handle synthetic isGL* and getGL* more generic, allow FixedFunctionHook to properly determine it's identity

BuildComposablePipeline: Handle synthetic isGL* and getGL* more generic, allow using a prologue hook
as needed for FixedFunctionHook's 'isGL*core()', 'isGLES*Compatible()' and 'getGLProfile()' methods.

The latter FixedFunctionHook take the emulated GL profile GL2ES1 into account,
allowing JOGL code to assume only having GL2ES1 available.
Otherwise methods like Texture.enable(..) would skip the glEnable(TEXTURE_2D)
call and FixedFunctionHook could not enable it's usage.

GLProfile received a 'public static GLProfile createCustomGLProfile(final String profile, final GLProfile profileImpl)'
allowing utilities like FixedFunctionHook to create a generic profile.

BuildComposablePipeline sorts the methods before emitting for better readability.
The file was modifiedmake/scripts/tests.sh (diff)
The file was modifiedsrc/jogl/classes/javax/media/opengl/GLProfile.java (diff)
The file was modifiedsrc/jogl/classes/com/jogamp/gluegen/opengl/BuildComposablePipeline.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/opengl/util/glsl/fixedfunc/FixedFuncHook.java (diff)
Commit c391da73631aa551ad73d88068efebdb1e67e650 by Sven Gothel
Fix ShaderCode.es3_default_precision_fp: ES 3.x requires same precision for uniforms -> re-use es3_default_precision_vp; Fixes PointsDemoES2
The file was modifiedmake/scripts/tests.sh (diff)
The file was modifiedsrc/jogl/classes/com/jogamp/opengl/util/glsl/ShaderCode.java (diff)
Commit 53c6a6cde3b57b54c71b9c1dc341c46854e33487 by Sven Gothel
FixedFuncHook: Use downstream gl.getGLProfile().getImpl() for custom GL2ES1 impl. profile, reflecting true implementing profile.
The file was modifiedsrc/jogl/classes/jogamp/opengl/util/glsl/fixedfunc/FixedFuncHook.java (diff)
Commit d55f1061a64f92d702a7f218d2f866fa4d5fa9dc by Sven Gothel
Bug 1038 - Allow skipping detection of certain GLProfiles: Skip native core profiles via property 'jogl.disable.openglcore'

Also moved all GL profile properties to GLProfile class and made them public for better documentation.
The file was modifiedsrc/jogl/classes/jogamp/opengl/egl/EGLDrawableFactory.java (diff)
The file was modifiedsrc/jogl/classes/javax/media/opengl/GLProfile.java (diff)
The file was modifiedsrc/jogl/classes/javax/media/opengl/GLDrawableFactory.java (diff)
The file was modifiedmake/scripts/tests.sh (diff)
The file was modifiedsrc/jogl/classes/jogamp/opengl/GLContextImpl.java (diff)
Commit c8b99d197769eaec53c2def562c0ef3fc0e6a9d2 by Sven Gothel
GLContext: Don't map compatibility profiles to core profile if the latter are not available (restrict profile aliasing) ; GLProfile does this - Simplification.

GLContext shall not map compatibility profiles to core profile if the latter is are not available (restrict profile aliasing).

If a user requests a straight GL3 core profile, don't answer with a compatibility profile, e.g. GL4bc.

Hence this patch exposes the true GL profile situation more honestly the the user!

User can already query profile mappings via GLProfile, i.e.
  - GL2GL3,
  - GL4ES3, or via
  - getMaximum
  - getMaxFixedFunc
  - getMaxProgrammable
  - getMaxProgrammableCore

This also fixes an issue when a user requests 'getMaxProgrammableCore'
but would receive a GL4bc profile.
The file was modifiedsrc/jogl/classes/jogamp/opengl/GLContextImpl.java (diff)
Commit e5a55ede324ce500f50991d56491758803063a58 by Sven Gothel
Bug 1038 - Allow skipping detection of certain GLProfiles: Skip 'ARB_create_context' context creation extension via property 'jogl.disable.openglarbcontext'; ...

Only allow the exclusions if platform OS is not OSX:
  - jogl.disable.openglcore
  - jogl.disable.openglarbcontext

Since on OSX they are known to work reliable and there is not other method
if receiving a higher GL profile than core and ARB.

This also removes the restrictions on X11 and Windows,
where profiles >= GL3 must be created using ARB_create_context.
Hence this is allowed now.
The file was modifiedmake/scripts/tests.sh (diff)
The file was modifiedsrc/jogl/classes/jogamp/opengl/GLContextImpl.java (diff)
The file was modifiedmake/scripts/tests-x64-dbg.bat (diff)
The file was modifiedmake/scripts/tests-win.bat (diff)
The file was modifiedsrc/jogl/classes/javax/media/opengl/GLProfile.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/opengl/windows/wgl/WindowsWGLContext.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/opengl/x11/glx/X11GLXContext.java (diff)
Commit 7314b47ae1e42997e9e6974b84709640f0ac2a1b by Sven Gothel
Revert "GLContext: Don't map compatibility profiles to core profile if the latter are not available (restrict profile aliasing) ; GLProfile does this - Simplification."

This reverts commit c8b99d197769eaec53c2def562c0ef3fc0e6a9d2.
The file was modifiedsrc/jogl/classes/jogamp/opengl/GLContextImpl.java (diff)
Commit 830feb65f4c3d0c633556fd39787328834ee51d2 by Sven Gothel
Bug 1038 - Fix: Allow skipping detection of certain GLProfiles: Skip 'ARB_create_context'

Commit e5a55ede324ce500f50991d56491758803063a58 was incomplete,
i.e. it lacked the required mappings for the non ARB profile, i.e.:
  GL4bc -> GL3bc, etc.

These profile mappings have been added now.

+++

Further more, GLContext's profile queries, isGL*()
test the ctxOptions for CTX_IS_ARB_CREATED.
This has to be removed to properly work w/ Skip 'ARB_create_context'.

To remove the risk of inconcistency, i.e. context created via ARB and non-ARB,
the 'GLX/WGL profile >= GL3 via non ARB' validation removed
in commit e5a55ede324ce500f50991d56491758803063a58 has been brought back
and refined. Note:
  if( glp.isGL3() && createContextARBTried ) {
    // We shall not allow context creation >= GL3 w/ non ARB methods if ARB is used,
    // otherwise context of similar profile but different creation method may not be share-able.
    .. THROW EXCEPTON ..
  }
This limited validation removes the possibility of such having a context
of same profile, one created via ARB and one without.
Hence also validates the isGL*() change, where the CTX_IS_ARB_CREATED criteria is removed.

+++

Note regarding commit 7314b47ae1e42997e9e6974b84709640f0ac2a1b (revert):

While analyzing the mapping, it turns out that commit c8b99d197769eaec53c2def562c0ef3fc0e6a9d2
  "Don't map compatibility profiles to core profile if the latter are not available (restrict profile aliasing)"
is not fully consistent with GLProfile's and GLContext's profile queries, i.e. isGL*().
We may reiterate over this change .. but have it be reverted for now.
The file was modifiedsrc/jogl/classes/javax/media/opengl/GLContext.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/opengl/x11/glx/X11GLXContext.java (diff)
The file was modifiedmake/scripts/tests.sh (diff)
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLProfile01NEWT.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/opengl/GLContextImpl.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/opengl/windows/wgl/WindowsWGLContext.java (diff)
Commit adf8e6e40aa9513036864489642cfef252804d08 by Sven Gothel
Bug 1036: NVidia's Windows Driver Threaded optimization: Alternative affinity mask setting on all threads of process - Didn't work (disabled)
The file was modifiedsrc/nativewindow/classes/jogamp/nativewindow/windows/GDIUtil.java (diff)
The file was modifiedsrc/nativewindow/native/win32/GDImisc.c (diff)
Commit ff5dba28610b4f680c9320e9e52669ed54d4de43 by Sven Gothel
Bug 830 - Add Heuristics for to query whether GLDrawableUtil.swapGLContextAndAllGLEventListener is safe (Doesn't work w/ pre MSAA onscreen drawable)

GLDrawableUtil.isSwapGLContextSafe(..) allows user to query whether 'we think' it's safe
to utilize swapping of GLContext between GLAutoDrawable instances.

Currently known unsafe cases are:
  - between on- and offscreen and one of the following:
    - MSAA involved, or
    - STEREO involved

Enhanced unit tests in this regard:
  - TestGLContextDrawableSwitch02AWT
    - using GLContextDrawableSwitchBase0
  - TestGLContextDrawableSwitch02NEWT
    - using GLContextDrawableSwitchBase0

Utilized safe query for setupPrint(..) action in:
  - AWT GLCanvas
  - AWT GLJPanel
  - NewtCanvasAWT
The file was modifiedsrc/jogl/classes/javax/media/opengl/awt/GLCanvas.java (diff)
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/jogl/acore/glels/TestBug722GLContextDrawableSwitchNewt2AWT.java (diff)
The file was modifiedmake/scripts/tests.sh (diff)
The file was modifiedsrc/jogl/classes/javax/media/opengl/awt/GLJPanel.java (diff)
The file was addedsrc/test/com/jogamp/opengl/test/junit/jogl/acore/glels/GLContextDrawableSwitchBase1.java
The file was removedsrc/test/com/jogamp/opengl/test/junit/jogl/acore/glels/TestGLContextDrawableSwitch21Newt2AWT.java
The file was removedsrc/test/com/jogamp/opengl/test/junit/jogl/acore/glels/GLContextDrawableSwitchBase.java
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/jogl/acore/glels/TestGLContextDrawableSwitch02AWT.java (diff)
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/jogl/acore/glels/TestGLContextDrawableSwitch11NewtAWT.java (diff)
The file was modifiedsrc/newt/classes/com/jogamp/newt/awt/NewtCanvasAWT.java (diff)
The file was modifiedsrc/jogl/classes/com/jogamp/opengl/util/GLDrawableUtil.java (diff)
The file was addedsrc/test/com/jogamp/opengl/test/junit/jogl/acore/glels/TestGLContextDrawableSwitch02NEWT.java
The file was addedsrc/test/com/jogamp/opengl/test/junit/jogl/acore/glels/GLContextDrawableSwitchBase0.java
The file was addedsrc/test/com/jogamp/opengl/test/junit/jogl/acore/glels/TestGLContextDrawableSwitch13Newt2AWT.java
The file was modifiedmake/scripts/tests-win.bat (diff)
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/jogl/acore/glels/TestGLContextDrawableSwitch12AWT.java (diff)
Commit 6a130e4468fce954ac469e2e5fd78c8496fafe24 by Sven Gothel
Fix commit adf8e6e40aa9513036864489642cfef252804d08 (Bug 1036): long -> jlong in JNI func spec
The file was modifiedsrc/nativewindow/native/win32/GDImisc.c (diff)
Commit 289ba90b9ce118ba987b47ee70870cca77287cc0 by Sven Gothel
Refine test ff5dba28610b4f680c9320e9e52669ed54d4de43: Perform context switch on GL capable thread if required. Add API doc note about this requirement.
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/jogl/acore/glels/GLContextDrawableSwitchBase0.java (diff)
The file was modifiedsrc/jogl/classes/com/jogamp/opengl/util/GLDrawableUtil.java (diff)
The file was modifiedmake/scripts/tests.sh (diff)
Commit a8ccbdf228727d8eef7e6684b738a118610b5744 by Sven Gothel
GLDrawable: Expose getRequestedGLCapabilities() (Include to public API)

In certain cases, it is required to read the user requested capabilities
from places other than the user code.

Hence adding public method to GLDrawable interface.

This removes the need to cast to private GLDrawableImpl,
which included such method.
The file was modifiedsrc/jogl/classes/com/jogamp/opengl/swt/GLCanvas.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/opengl/GLAutoDrawableBase.java (diff)
The file was modifiedsrc/jogl/classes/javax/media/opengl/GLDrawable.java (diff)
The file was modifiedsrc/jogl/classes/javax/media/opengl/awt/GLJPanel.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/opengl/GLDrawableImpl.java (diff)
The file was modifiedsrc/jogl/classes/javax/media/opengl/awt/GLCanvas.java (diff)
Commit 2e1484f4c25605c6dc0307f12f3e4e434c429a37 by Sven Gothel
Bug 830 - Refine Heuristics for to query whether GLDrawableUtil.swapGLContextAndAllGLEventListener is safe: Add Accumulator Buffer bits
The file was modifiedsrc/jogl/classes/javax/media/opengl/awt/GLJPanel.java (diff)
The file was modifiedsrc/jogl/classes/javax/media/opengl/awt/GLCanvas.java (diff)
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/jogl/acore/glels/GLContextDrawableSwitchBase0.java (diff)
The file was modifiedsrc/jogl/classes/com/jogamp/opengl/util/GLDrawableUtil.java (diff)
The file was modifiedsrc/newt/classes/com/jogamp/newt/awt/NewtCanvasAWT.java (diff)
Commit ba1ffe66697c3175b423cb7ab9b686d73959708d by Sven Gothel
Bug 1039 - Specify behavior of GLEventListener Exceptions occurring while GLAutoDrawable processing [part-1]

Implements Specification as described on 'Bug 1039 Comment 1'
  <https://jogamp.org/bugzilla/show_bug.cgi?id=1039#c1>

TODO:
  - Offthread exception handler

++++

GLDrawableHelper is used in all GLAutoDrawable implementations
and for most operations.

GLAutoDrawable/GLDrawableHelper invoke(..) method:

- invoke(..) forwards a caught exception
  - if blocking, it forwards an exception
    happening within the passed GLRunnable(s).
    Here the exception is caught, printed
    and then thrown by invoke itself.

  - if non-blocking, an exception
    happening within the passed GLRunnable(s)
    will be thrown in the thread issuing it's execution,
    i.e. display() call.
    Here the exception is not caught and simply thrown
    by the GLRunnable.

GLAutoDrawable.destroy() -> GLDrawableHelper.disposeGL(..) method:

- disposeAllGLEventListener() being invoked by disposeGL(..),
  catches exception thrown by GLEventListener.dispose(..)
  and prints them to stderr.
  The first caught exception is re-thrown at the end as an GLException.

- disposeGL() catches re-thrown GLException by disposeAllGLEventListener()
  for GLEventListener.dispose(..)
  and re-throws it when operation is complete.

- disposeGL() catches an exception thrown at context destruction or release
  and re-throws it when operation is complete.
  An early exception at context.makeCurrent() is _not_ caught,
  since it is the first operation which simply shall unwind the stack.

GLAutoDrawable.display() -> GLDrawableHelper.invokeGLImpl(..) method:

- invokeGLImpl(..) for display() follows disposeGL() mechanism, i.e.
  it catches exception thrown at
  GLEventListener's init(..), reshape(..) and display(..) methods
  and re-throws it when operation is complete.

  It also catches an exception thrown at context release
  and re-throws it when operation is complete.
  An early exception at context.makeCurrent() is _not_ caught,
  since it is the first operation which simply shall unwind the stack.

++++

None of the above thrown exception shall be caught and suppressed
on the caller side.

If an operation must be completed while an exception is caught,
it shall be cached and re-thrown after the operations.

In case multiple exception at multiple places are caught within
an operation, they all shall be cached and the first one
shall be re-thrown.

In case of multiple exception from the same place,
i.e. a loop through all GLEventListener,
the first shall be cached and re-thrown after operation is completed.

It has to be determined, whether we like to dump the exceptions,
especially the ones who get suppressed in case of multiple exceptions.
The file was modifiedsrc/jogl/classes/jogamp/opengl/GLAutoDrawableBase.java (diff)
The file was modifiedsrc/jogl/classes/javax/media/opengl/awt/GLCanvas.java (diff)
The file was modifiedsrc/jogl/classes/javax/media/opengl/GLException.java (diff)
The file was modifiedsrc/jogl/classes/javax/media/opengl/awt/GLJPanel.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/opengl/GLDrawableHelper.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/opengl/GLFBODrawableImpl.java (diff)
The file was addedsrc/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLException01NEWT.java
The file was modifiedsrc/jogl/classes/com/jogamp/opengl/swt/GLCanvas.java (diff)
The file was modifiedmake/scripts/tests.sh (diff)