4 years agoGLRendererQuirks: Add GLSharedContextBuggy ('Mesa Intel 9.2.1' and 'Hisilicon Immersi... v2.1.2
Sven Gothel [Fri, 1 Nov 2013 11:40:35 +0000 (12:40 +0100)]
GLRendererQuirks: Add GLSharedContextBuggy ('Mesa Intel 9.2.1' and 'Hisilicon Immersion.16')

Note: Even though Mesa Intel driver crashes w/ heavy multithreading (Bug 873),
it works well w/ our multithreaded GLMediaPlayer.

4 years agoBug 885 - GLMediaPlayer: Allow single threaded mode - Especially where multiple media...
Sven Gothel [Fri, 1 Nov 2013 11:38:54 +0000 (12:38 +0100)]
Bug 885 - GLMediaPlayer: Allow single threaded mode - Especially where multiple media textures (Android) or shared GL context are not usable.

- GLMediaPlayer:
  - TEXTURE_COUNT_MIN is the new minimum: '1' - i.e. no multithreading, single threaded player
  - TEXTURE_COUNT_DEFAULT is '4' - multithreaded

- GLMediaPlayerImpl:
  - Add Single threaded mode, but perform initStreamImpl(..) off-thread.

4 years agoBug 852: Add unit test TestCPUSourcingAPINEWT validating CPU sourcing, i.e. expecting...
Sven Gothel [Fri, 1 Nov 2013 04:55:27 +0000 (05:55 +0100)]
Bug 852: Add unit test TestCPUSourcingAPINEWT validating CPU sourcing, i.e. expecting exception w/ core profile!

4 years agoClarify Bug 692: Unbinding a VAO does _not_ imply unbinding of set VBOs (spec doesn...
Sven Gothel [Fri, 1 Nov 2013 04:24:23 +0000 (05:24 +0100)]
Clarify Bug 692: Unbinding a VAO does _not_ imply unbinding of set VBOs (spec doesn't mention it, and it does not show results w/ CPU sourced rendering) ; Clean up GLBuffer*Tracker

+ * Note that VAO initialization does unbind the VBO .. since otherwise they are still bound
+ * and the CPU_SRC test will fail!<br/>
+ * The OpenGL spec does not mention that unbinding a VAO will also unbind the bound VBOs
+ * during their setup.<br/>
+ * Local tests here on NV and AMD proprietary driver resulted in <i>no ourput image</i>
+ * when not unbinding said VBOs before the CPU_SRC tests.<br/>
+ * Hence Bug 692 Comment 5 is invalid, i.e. <>,
+ * and we should throw an exception to give users a hint!

Leaving uncommented code in GLBufferStateTracker ..


- Clean up GLBuffer*Tracker
  - Use final
  - Use static final keyNotFound value.

4 years agoBug 881 - Add 'Application-Name' in Jar's manifest to avoid Java6 NPEs ..
Sven Gothel [Fri, 1 Nov 2013 00:27:27 +0000 (01:27 +0100)]
Bug 881 - Add 'Application-Name' in Jar's manifest to avoid Java6 NPEs ..

4 years agoBug 882 - Crash on OSX when closing NEWT window - Fix: Release NewtMacWindow manuall...
Sven Gothel [Fri, 1 Nov 2013 00:25:32 +0000 (01:25 +0100)]
Bug 882 - Crash on OSX when closing NEWT window - Fix: Release NewtMacWindow  manually in close0()

Release NewtMacWindow  manually in close0()
  - Mark [NewtMacWindow setReleasedWhenClosed: NO] in init0(..)
  - Release NewtMacWindow manually in close0(..)

Check pointer args in close0(..)

4 years agoBug 882 - Crash on OSX when closing NEWT window - Check JavaVM and JNIEnv handles...
Sven Gothel [Fri, 1 Nov 2013 00:03:39 +0000 (01:03 +0100)]
Bug 882 - Crash on OSX when closing NEWT window - Check JavaVM and JNIEnv handles before usage in NewtMacWindow (Not the culprit .. but more safe)

4 years agoEGLDrawableFactory.createDummySurfaceImpl: fix caps to pbuffer - since we do use...
Sven Gothel [Thu, 31 Oct 2013 12:59:25 +0000 (13:59 +0100)]
EGLDrawableFactory.createDummySurfaceImpl: fix caps to pbuffer - since we do use EGLDummyUpstreamSurfaceHook .. a pbuffer offscreen

fixOffscreenBitOnly(..) may yield FBO queries / chosing .. usually doesn't matter (on devices here),
but not accurate.

4 years agoGLDrawableFactory: createDummy*(..) Pass GLCapabilitiesImmutable + GLCapabilitiesChoo...
Sven Gothel [Thu, 31 Oct 2013 12:12:10 +0000 (13:12 +0100)]
GLDrawableFactory: createDummy*(..) Pass GLCapabilitiesImmutable + GLCapabilitiesChooser instead of GLProfile, allowing using same or similar caps - important for sharing ctx

4 years agoTestBinary16NOUI: Remove hardship from test node - Disable 'verbose' avoids 'out...
Sven Gothel [Thu, 31 Oct 2013 10:26:53 +0000 (11:26 +0100)]
TestBinary16NOUI: Remove hardship from test node - Disable 'verbose' avoids 'out of memory' and saves most of the time; Also run test exclusively.

4 years agoAndroidGLMediaPlayerAPI14: Avoid possible NPEs
Sven Gothel [Thu, 31 Oct 2013 09:47:23 +0000 (10:47 +0100)]
AndroidGLMediaPlayerAPI14: Avoid possible NPEs

4 years agoBug 754 - Remove Ubuntu fonts from jogl-all.jar, provide it separately to reduce...
Sven Gothel [Thu, 31 Oct 2013 09:46:47 +0000 (10:46 +0100)]
Bug 754 - Remove Ubuntu fonts from jogl-all.jar, provide it separately to reduce footprint for the masses.

Remove the ubuntu fonts from atomic/jogl-util-graph.jar and hence all derivated 'all' JAR files.
The Android jar files still contain the fonts as assets!

atomic/jogl-util-graph-fonts-p0.jar contains the fonts and is either referenced by:
  - UbuntuFontLoader: Using class based Jar URI derivation using TempJarCache to [down]load
    and extract the jar file (similar to native lib-loading).

  - Explicitly via traditional classpath, see jnlp-files/jogl-applet-runner-newt-GraphTextDemo01b-napplet.html

The pack200 jogl-all.jar file is now below 1MB

4 years agoFix Bug 878 - JAWTWindow's HierarchyListener doesn't set component visible (again...
Sven Gothel [Thu, 31 Oct 2013 03:34:28 +0000 (04:34 +0100)]
Fix Bug 878 - JAWTWindow's HierarchyListener doesn't set component visible (again) on 'addNotify(..)' - GLCanvas in JtabbedPane disappear

Regression of commit e33e6374e0be0454f7e9732b5f897f84dbc3c4dc (Fix for Bug 729 and Bug 849) !


JAWTWindow's HierarchyListener doesn't set component visible (again) on 'addNotify(..)'

It only renders the component invisible after removeNotify() which is performed implicit anyways ..

Case java.awt.event.HierarchyEvent.DISPLAYABILITY_CHANGED
shall perform similar as our java.awt.event.HierarchyEvent.SHOWING_CHANGED impl.


Tested on Gnu/Linux X11 and OSX incl. re-test Bug 729 and Bug 849 unit tests.

4 years agoTest Rename: Add Bug 729 / Bug 849 to Bug 816 Unit Test Names - Allowing a better...
Sven Gothel [Thu, 31 Oct 2013 03:32:28 +0000 (04:32 +0100)]
Test Rename: Add Bug 729 / Bug 849 to Bug 816 Unit Test Names - Allowing a better unit test lookup

4 years agoRename Binary*Test -> TestBinary*NOUI to get picked up by build-test.xml's junit...
Sven Gothel [Thu, 31 Oct 2013 01:51:04 +0000 (02:51 +0100)]
Rename Binary*Test -> TestBinary*NOUI to get picked up by build-test.xml's

4 years agoMerge remote-tracking branch 'mraynsford/mark'
Sven Gothel [Thu, 31 Oct 2013 01:28:06 +0000 (02:28 +0100)]
Merge remote-tracking branch 'mraynsford/mark'

4 years agoAdd functions for converting to and from binary16 half-precision floating point value...
Mark Raynsford [Thu, 31 Oct 2013 01:07:48 +0000 (01:07 +0000)]
Add functions for converting to and from binary16 half-precision floating point values. Derived from, of which I am the original author.

4 years agoTestSharedContextVBOES2NEWT1: Fix copy/paste (mistakenly used sharedGears), add print...
Sven Gothel [Wed, 30 Oct 2013 23:57:14 +0000 (00:57 +0100)]
TestSharedContextVBOES2NEWT1: Fix copy/paste (mistakenly used sharedGears), add println; GearsES: Add init/shared state to 'toString()'

4 years agoFix Unit Test Regression (commit 9f2a9df0a4b7093925c8854b37fba053469a4b35): GearsObje...
Sven Gothel [Wed, 30 Oct 2013 19:27:11 +0000 (20:27 +0100)]
Fix Unit Test Regression (commit 9f2a9df0a4b7093925c8854b37fba053469a4b35): GearsObject used getGL2ES2(), which is not allowed.

4 years agoAdd GLES1Impl 'finalizeInit()' to avoid a 'catched exception roundtrip'
Sven Gothel [Wed, 30 Oct 2013 18:14:53 +0000 (19:14 +0100)]
Add GLES1Impl 'finalizeInit()' to avoid a 'catched exception roundtrip'

4 years agoAndroid NEWT.ScreenDriver MonitorSize: Use xdpi for for width (fix); Add DEBUG output.
Sven Gothel [Wed, 30 Oct 2013 17:28:22 +0000 (18:28 +0100)]
Android NEWT.ScreenDriver MonitorSize: Use xdpi for for width (fix); Add DEBUG output.

4 years agoFix Bug 875 - Cleanup branch using VersionNumber (fix 'Int' check strictMatch minor...
Sven Gothel [Wed, 30 Oct 2013 17:26:24 +0000 (18:26 +0100)]
Fix Bug 875 - Cleanup branch using VersionNumber (fix 'Int' check strictMatch minor) and reuse isES; EGLContext: Use strictMatch for setGLFunctionAvailability() and handle failure; EGLDrawableFactory: Either detect ES3 or ES2.

- Cleanup branch using VersionNumber (fix 'Int' check strictMatch minor) and reuse isES

- EGLContext: Use strictMatch for setGLFunctionAvailability() and handle failure
  On ES, we require strictMatch, cleanup if failing.

- EGLDrawableFactory: Either detect ES3 or ES2.
  Both only available with proper EGL context creation for ES profiles (TODO)

4 years agoBug 875: Safeguard setGLFunctionAvailability(.. strictMatch=false.. ) operation,...
Sven Gothel [Wed, 30 Oct 2013 10:50:24 +0000 (11:50 +0100)]
Bug 875: Safeguard setGLFunctionAvailability(.. strictMatch=false.. ) operation, throw InternalError if failing

4 years agoMerge pull request #72 from masterzen/tickets/875
Sven Gothel [Wed, 30 Oct 2013 01:03:40 +0000 (18:03 -0700)]
Merge pull request #72 from masterzen/tickets/875

Fix #875 - ES version should be strictly validated

4 years agoBug 776 GLContext Sharing: GLSharedContextSetter API Doc: Add 'glFinish()' to lifecyc...
Sven Gothel [Wed, 30 Oct 2013 00:57:34 +0000 (01:57 +0100)]
Bug 776 GLContext Sharing: GLSharedContextSetter API Doc: Add 'glFinish()' to lifecycle considerations ; GearsES2: Add glFinish() after init().

4 years agoBug 776 GLContext Sharing: GLSharedContextSetter API Doc: No 'Driver stability constr...
Sven Gothel [Tue, 29 Oct 2013 23:58:58 +0000 (00:58 +0100)]
Bug 776 GLContext Sharing: GLSharedContextSetter API Doc: No 'Driver stability constraints' ; Fixing Test cases: Enable all, GearsObject*: Check VBO

- GLSharedContextSetter API Doc: No 'Driver stability constraints'
  - No driver issues ..
  - Use 'Lifecycle Considerations' to describe usage issues ..

- Fixing Test cases: Enable all, GearsObject*: Check VBO
  - GearsObject* needs to check whether VBO is 'still alive'
    if sharing is enabled.

  - Enable all unit tests.

4 years agoBug 776 GLContext Sharing: Fix copy-ctor GLArrayDataClient: Create new instance of...
Sven Gothel [Tue, 29 Oct 2013 23:27:08 +0000 (00:27 +0100)]
Bug 776 GLContext Sharing: Fix copy-ctor GLArrayDataClient: Create new instance of GLArrayHandler of same type; Simplify GLArrayHandler inheritance.

Refines commit 9f2a9df0a4b7093925c8854b37fba053469a4b35

4 years agoBug 877 Concurrency Discussion: Update doc MultiThreading.txt, volatile field usage...
Sven Gothel [Tue, 29 Oct 2013 22:28:28 +0000 (23:28 +0100)]
Bug 877 Concurrency Discussion: Update doc MultiThreading.txt, volatile field usage; GLDrawableImpl: Make read-only fields final.

4 years agoFix #875 - ES version should be strictly validated
Brice Figureau [Tue, 29 Oct 2013 13:49:25 +0000 (14:49 +0100)]
Fix #875 - ES version should be strictly validated

When initializing the context in GLContextImpl.setGLFuncAvailability
ES devices must be validated by strictly matching the major version,
otherwise on ES3 devices we were mixing ES1 implementation with ES3
contexts, ultimately crashing in a safeguard.

Signed-off-by: Brice Figureau <>
4 years agoBug 776 GLContext Sharing: Add copy-ctor to GLArrayData* w/ sliced Buffer; Refine...
Sven Gothel [Tue, 29 Oct 2013 12:51:32 +0000 (13:51 +0100)]
Bug 776 GLContext Sharing: Add copy-ctor to GLArrayData* w/ sliced Buffer; Refine GearsObject* GLArrayDataServer copying; GearsES*: Init VBO eagerly

Add copy-ctor to GLArrayData* w/ sliced Buffer to allow general sharing of VBO via these high-level types.

Refine GearsObject* GLArrayDataServer copying (commit bcfaa149b9803ce33c5a356cbcb45f7dfd3e4361):
  Utilize new GLArrayData* copy-ctor.

GearsES*: Init VBO eagerly, allowing VBO usage after init(..).

4 years agoGLDrawableFactory: Add 'GLAutoDrawable createDummyAutoDrawable(..)' for convenience
Sven Gothel [Tue, 29 Oct 2013 10:13:01 +0000 (11:13 +0100)]
GLDrawableFactory: Add 'GLAutoDrawable createDummyAutoDrawable(..)' for convenience

  GLAutoDrawable createDummyAutoDrawable(AbstractGraphicsDevice deviceReq, boolean createNewDevice, GLProfile glp)

4 years agoBug 876: BuildComposablePipeline: getGL*() shall not return downstream.getGL*() ...
Sven Gothel [Tue, 29 Oct 2013 10:10:58 +0000 (11:10 +0100)]
Bug 876: BuildComposablePipeline: getGL*() shall not return downstream.getGL*() [TraceGL* / DebugGL*] ; Simplify GLContextImpl's set Debug/Trace Pipeline

Regression of commit 0002fccdcd6383874b2813dc6bbe3e33f5f00924:
  "Trace/Debug shall utilize downstream identification for isGL*() and getGL*() methods."

  Using the downstream identification commit is right for the isGL*() case,
  however, getGL*() returned the downstream object which makes the caller loosing the pipeline!

  Instead, we shall produce !GEN_GL_IDENTITY_BY_ASSIGNABLE_CLASS:

     "if( isGL<type>() ) { return this; }
     throw new GLException("Not a <type> implementation");"


     "return this;"

4 years agoFix TestSharedContextNewtAWTBug523: Don't use VAO's w/ GL2 context - No VAO on GL2...
Sven Gothel [Tue, 29 Oct 2013 02:08:19 +0000 (03:08 +0100)]
Fix TestSharedContextNewtAWTBug523: Don't use VAO's w/ GL2 context - No VAO on GL2 ctx on OSX ; GLWindow #2 shall also use sharedDrawable; Cleanup  ..

4 years agoGLDrawableHelper.reshape(): Catch pre-existing GL errors before glViewport(..) and...
Sven Gothel [Tue, 29 Oct 2013 02:06:57 +0000 (03:06 +0100)]
GLDrawableHelper.reshape(): Catch pre-existing GL errors before glViewport(..) and dump it (Add stack trace if DEBUG)

4 years agoBug 776 GLContext Sharing: Add GLSharedContextSetter to SWT GLCanvas
Sven Gothel [Mon, 28 Oct 2013 18:34:20 +0000 (19:34 +0100)]
Bug 776 GLContext Sharing: Add GLSharedContextSetter to SWT GLCanvas

4 years agoBug 776 GLContext Sharing: Add note about driver stability (destruction order) ;...
Sven Gothel [Mon, 28 Oct 2013 02:58:01 +0000 (03:58 +0100)]
Bug 776 GLContext Sharing: Add note about driver stability (destruction order) ; Fix unit tests (Shared Gears, wait for created context and destruction order)

- Add note about driver stability (destruction order)
  - See GLSharedContextSetter: Don't destroy master context before slaves!

- Fix spec-overview.html#SHARED links, add link to GLSharedContextSetter in SHARED subsection.

- Fix unit tests (Shared Gears, wait for created context and destruction order)
  - The GearsObject sharing was completly bogus!
    It simply used the _same_ GLArrayDataServer instance for sharing,
    but it should use a _copy_ of the shared GLArrayDataServer while
    only preserving the VBO object!
    Fixed, while adding required methods to GLArrayDataServer.

  - Waiting for the created GLContext of a GLAutoDrawable required us
    to pass the latter _and_ check whether it's GLContext exists and is natively created.

  - Accomodated the destruction order - see above!

4 years agoBug 776 GLContext Sharing: Add GLSharedContextSetter to GLJPanel
Sven Gothel [Sun, 27 Oct 2013 17:57:02 +0000 (18:57 +0100)]
Bug 776 GLContext Sharing: Add GLSharedContextSetter to GLJPanel

4 years agoFix GLCanvas ctor shared GLContext: Use helper.setSharedContext(..) remove local...
Sven Gothel [Sun, 27 Oct 2013 17:52:00 +0000 (18:52 +0100)]
Fix GLCanvas ctor shared GLContext: Use helper.setSharedContext(..) remove local shared ctx fields.

Regression of 7f7a23dd0ddf106e6f0c69fc2a05ff92ac56200e

4 years agoBug 776 GLContext Sharing: Refine API for relaxed and lazy GLContext sharing ; Fix...
Sven Gothel [Sun, 27 Oct 2013 16:51:08 +0000 (17:51 +0100)]
Bug 776 GLContext Sharing: Refine API for relaxed and lazy GLContext sharing ; Fix GLContext memory contract (volatile)

(Unit test remarks see below)

- Add shared GLContext queries
  - Refined GLContextShareSet:
    - Use IdentityHashMap since GLContext's can only be identical w/ same reference (footprint, performance)
    - Add API doc for clarification
    - Add methods:
       - ArrayList<GLContext> getCreatedShares(final GLContext context)
       - ArrayList<GLContext> getDestroyedShares(final GLContext context)
    - Use 'final' where possible

  - Add GLContext methods:
      - boolean isShared()
      - List<GLContext> getCreatedShares()
      - List<GLContext> getDestroyedShares()

- Add GLSharedContextSetter interface defining setting a shared GLContext
  directly (GLContext) or via a GLAutoDrawable:
  - setSharedContext(GLContext)
  - setSharedAutoDrawable(GLAutoDrawable)

  Both cause initialization/creation of GLAutoDrawable's drawable/context to be postponed,
  if the shared GLContext is not yet created natively or
  the shared GLAutoDrawable's GLContext does not yet exist.

  Most of impl. resides in GLDrawableHelper

  Implemented in:
    - GLAutoDrawableBase, GLOffscreenAutoDrawable
    - GLWindow
    - AWT GLCanvas

    - GLJPanel
    - SWT GLCanvas

- GLDrawableFactory:
   - Add 'GLOffscreenAutoDrawable createOffscreenAutoDrawable(..)' variant w/o passing the
     optional shared GLContext _and_ specifying lazy GLContext
     creation. This allows to benefit from GLSharedContextSetter contract.
     Lazy GLContext creation is performed at 2st display() call at the latest.

     All JOGL code and unit tests use this new method now.

  - Mark 'createOffscreenAutoDrawable(..)' w/ shared GLContext argument
    and immediate GLContext creation deprecated - shall be removed in 2.2.0

- Make reference to GLContext and it's native handle volatile
  Since we rely on the query 'GLContext.isCreated()' to properly allow GLAutoDrawable's to query whether
  a shared GLContext is natively created (already), the handle must be volatile
  since such query and the actual creation may operate on different threads.


- Add/Refine shared GLContext unit tests demonstrating diff. sharing methods.

  All variants of using shared GLContext:

  Most convenient way to share via setSharedAutoDrawable(GLAutoDrawable):

  AWT use w/ JTabbedPane using setSharedAutoDrawable(GLAutoDrawable):

4 years agospec-overview.html: Shared OpenGL context must be supported .. (GL spec)
Sven Gothel [Sun, 27 Oct 2013 09:16:25 +0000 (10:16 +0100)]
spec-overview.html: Shared OpenGL context must be supported .. (GL spec)

4 years agoAPI doc: GLStateKeeper (wording), GLAutoDrawable (enh. init desc.), GLDrawable (Share...
Sven Gothel [Sun, 27 Oct 2013 09:15:48 +0000 (10:15 +0100)]
API doc: GLStateKeeper (wording), GLAutoDrawable (enh. init desc.), GLDrawable (Shared Context)

4 years agoTestGLProfile00NEWT: Dump Desktop's and EGL's default-device GLProfiles
Sven Gothel [Fri, 25 Oct 2013 02:44:39 +0000 (04:44 +0200)]
TestGLProfile00NEWT: Dump Desktop's and EGL's default-device GLProfiles

4 years agoFix Bug 872: ES3 and ES3-GLSL Version not properly Handled
Sven Gothel [Fri, 25 Oct 2013 02:44:06 +0000 (04:44 +0200)]
Fix Bug 872: ES3 and ES3-GLSL Version not properly Handled

  - Proper API doc for Version* fields

  - getStaticGLSLVersionNumber(): ES3 -> Version300

  - hasGLSL(): Add ES3

  - addDefaultShaderPrecision():
    - ES2 default precision: Don't 'tune up' default precision for fragment shader, use 'mediump'
    - Add ES3 default precision (equal to ES2 default precision)

  - requiresDefaultPrecision(): Shall returns 'true' for ES3 as well!

4 years agoFix regression of commit 34b35c5a0a379a6b4c0b23b9d347a0b1338f0239 - GLContextImpl...
Sven Gothel [Fri, 25 Oct 2013 01:35:24 +0000 (03:35 +0200)]
Fix regression of commit 34b35c5a0a379a6b4c0b23b9d347a0b1338f0239 - GLContextImpl.createContextARBVersions(..) erroneous upper bounds check.

4 years agoMerge remote-tracking branch 'hharrison/master'
Sven Gothel [Thu, 24 Oct 2013 23:50:34 +0000 (01:50 +0200)]
Merge remote-tracking branch 'hharrison/master'

4 years agoGLProfile: Fix native profile mapping, i.e. use actual mapped profile-impl as detecte...
Sven Gothel [Thu, 24 Oct 2013 23:39:51 +0000 (01:39 +0200)]
GLProfile: Fix native profile mapping, i.e. use actual mapped profile-impl as detected and mapped by GLContext ; Enhance glAvailabilityToString(..)

We shall not map profile == profile-impl, i.e. GL3 -> GL3,
but use GLContext.getAvailableGLProfileName(device, reqMajor, reqProfileBits).
The latter reflects the actual mapped context as detected.

  - Partition result in [Natives, Common and Mappings]

  - Mappings dumps mapped keys to profiles, while excluding default.
    Default is added at last.

  - Add count.

4 years agoJoglVersion: "Default Profiles on device" -> "GLProfiles on device" - Since we do...
Sven Gothel [Thu, 24 Oct 2013 23:30:08 +0000 (01:30 +0200)]
JoglVersion: "Default Profiles on device" -> "GLProfiles on device" - Since we do use the named device

4 years agoFix GLContext: getGLProfile() add missing GLES3; getAvailableGLProfile(device, ....
Sven Gothel [Thu, 24 Oct 2013 23:29:24 +0000 (01:29 +0200)]
Fix GLContext: getGLProfile() add missing GLES3; getAvailableGLProfile(device, ..) shall use GLProfile.get(device, ..)

4 years agoUse org.junit.Assert instead of deprecated junit.framework.Assert
Sven Gothel [Thu, 24 Oct 2013 22:01:34 +0000 (00:01 +0200)]
Use org.junit.Assert instead of deprecated junit.framework.Assert

4 years agoBug 867 OSX [Common Code]: Trigger GLRendererQuirks.GL4NeedsGL3Request and make it...
Sven Gothel [Thu, 24 Oct 2013 22:01:12 +0000 (00:01 +0200)]
Bug 867 OSX [Common Code]: Trigger GLRendererQuirks.GL4NeedsGL3Request and make it sticky; Only alias profiles if HW-Accelerated!

Only alias profiles if HW-Accelerated!
GLContextImpl.mapGLVersions(..) shall not map a higher profile to a lower if it is a software renderer.


GLContextImpl.mapGLVersions(..) attempts to trigger GLRendererQuirks.GL4NeedsGL3Request if OSX 10.9
by creating a GL3 core context first.


  - On OSX 10.9: Detect GLRendererQuirks.GL4NeedsGL3Request and make it sticky (per device)
    while 'withinGLVersionsMapping'

  - Merge sticky quirks w/ local quirks


TestGearsES2NEWT: Add cmdline '-gl2' to force GL2 profile.

4 years agoBug 867 - OSX: Allow core >=4 if isMavericksOrLater; Use [kCGLOGLPVersion_GL4_Core...
Sven Gothel [Thu, 24 Oct 2013 21:48:55 +0000 (23:48 +0200)]
Bug 867 - OSX: Allow core >=4 if isMavericksOrLater; Use [kCGLOGLPVersion_GL4_Core, kCGLOGLPVersion_GL3_Core] for major==4 depending on sticky GLRendererQuirks.GL4NeedsGL3Request

4 years agoBug 871 - Add optional xcode.clang support for all modules (Extends Bug 837 w/ xcode...
Sven Gothel [Thu, 24 Oct 2013 21:43:43 +0000 (23:43 +0200)]
Bug 871 - Add optional xcode.clang support for all modules (Extends Bug 837 w/ xcode's xcrun) - Remove abs. include path.

#include </usr/include/machine/types.h> -> #include <machine/types.h>

4 years agoBug 867 - OSX 10.9: Recognize OpenGL Core Profile > 3.0 - Add GLRendererQuirks: Quirk...
Sven Gothel [Thu, 24 Oct 2013 21:42:01 +0000 (23:42 +0200)]
Bug 867 - OSX 10.9: Recognize OpenGL Core Profile > 3.0 - Add GLRendererQuirks: Quirk GL4NeedsGL3Request and 'sticky device quirks'

The 'sticky device quirks' are required to share quirks among devices
as collected while mapping the GL versions (audit).

Those are context independent and may only be detected for certain contexts.

They can be pushed/added to the context's quirks, but also queried at context
creation (after mapping) - before the local quirks are being created.

4 years agojogl: add generics annotations to lists in the waveout code
Harvey Harrison [Wed, 23 Oct 2013 07:33:24 +0000 (00:33 -0700)]
jogl: add generics annotations to lists in the waveout code

Signed-off-by: Harvey Harrison <>
4 years agojogl: add generic annotations to the packed rectangle utility package
Harvey Harrison [Wed, 23 Oct 2013 07:01:48 +0000 (00:01 -0700)]
jogl: add generic annotations to the packed rectangle utility package

Signed-off-by: Harvey Harrison <>
4 years agoGLContext CTX_IMPL_* bits: Use 10 cached bits (+1), and 6 uncached (-1) ; CTX_IMPL_FP...
Sven Gothel [Thu, 24 Oct 2013 02:56:08 +0000 (04:56 +0200)]
GLContext CTX_IMPL_* bits: Use 10 cached bits (+1), and 6 uncached (-1) ; CTX_IMPL_FP32_COMPAT_API: "FP32 compat-api" -> "FP32 compat"

4 years agojogl: indent trace statements in the Trace pipelines when we hit glBegin
Harvey Harrison [Wed, 23 Oct 2013 20:25:59 +0000 (13:25 -0700)]
jogl: indent trace statements in the Trace pipelines when we hit glBegin

The indent was being reduced on glEnd/glEndList but was never being incremented.
The intent appeared to be to indent all statements between glBEgin/glEnd pairs to
show the nested context of those calls.  Add the increment after printing the glBegin
trace statement.

Signed-off-by: Harvey Harrison <>
4 years agojogl: add final to Debug wrapper error code and fix indentation
Harvey Harrison [Wed, 23 Oct 2013 17:25:17 +0000 (10:25 -0700)]
jogl: add final to Debug wrapper error code and fix indentation

Make the indentation consistent in each function wrapper.

Signed-off-by: Harvey Harrison <>
4 years agoMacOSXJAWTWindow.CALayer DEBUG: Only Dump AWT location-on-screen if property DEBUG_CA...
Sven Gothel [Wed, 23 Oct 2013 16:18:44 +0000 (18:18 +0200)]
MacOSXJAWTWindow.CALayer DEBUG: Only Dump AWT location-on-screen if property DEBUG_CALAYER_POS_CRITICAL is explicitly set.

- DEBUG_CALAYER_POS_CRITICAL = nativewindow.debug.JAWT.OSXCALayerPos

Since AWT's location-on-screen query can cause an AWT deadlock,
which is the sole purpose of our custom lock-free impl,
don't enable it's DEBUG output w/ default DEBUG flags.

4 years agoFix Bug 866 - Frequent IndexOutOfBoundsException in jogamp.opengl.egl.EGLGraphicsConf...
Brice Figureau [Wed, 23 Oct 2013 14:58:16 +0000 (16:58 +0200)]
Fix Bug 866 - Frequent IndexOutOfBoundsException in jogamp.opengl.egl.EGLGraphicsConfigurationFactory: Add missing 'else' in branch

4 years agojogl: pass format and arguments directly to the printGLError function
Harvey Harrison [Wed, 23 Oct 2013 05:50:42 +0000 (22:50 -0700)]
jogl: pass format and arguments directly to the printGLError function

This saves us a bit more code size as the String.format is now in the common
helper rather than in every GL wrapper function.

Signed-off-by: Harvey Harrison <>
4 years agojogl: save on class size in the Debug pipelines
Harvey Harrison [Wed, 23 Oct 2013 05:23:53 +0000 (22:23 -0700)]
jogl: save on class size in the Debug pipelines

Using a format String and arg list produces smaller class files for the Debug classes
as many of the format strings are identical and shared.

Signed-off-by: Harvey Harrison <>
4 years agojogl: do not generate an extra String for the Debug pipeline wrappers
Harvey Harrison [Tue, 22 Oct 2013 07:20:06 +0000 (00:20 -0700)]
jogl: do not generate an extra String for the Debug pipeline wrappers

Build the caller string directly and don't wrap it in an extra constructor.

Update the indentation level for the newly added if-block from the previous commit.

Signed-off-by: Harvey Harrison <>
4 years agojogl: change code generation for Debug pipelines to avoid building large strings
Harvey Harrison [Tue, 22 Oct 2013 07:12:44 +0000 (00:12 -0700)]
jogl: change code generation for Debug pipelines to avoid building large strings

- split the check for a GL error from the output of the error string
- only build the caller String when there is an error to report
- wrap String building in an if() block rather than using an early return as we
don't know the return type in the postDownstreamCallHook

Signed-off-by: Harvey Harrison <>
4 years agojogl: use .format() to build the method signature when generating pipeline code
Harvey Harrison [Mon, 21 Oct 2013 07:43:46 +0000 (00:43 -0700)]
jogl: use .format() to build the method signature when generating pipeline code

Signed-off-by: Harvey Harrison <>
4 years agojogl: adapt code generator to output @Override annotations in various places
Harvey Harrison [Mon, 21 Oct 2013 07:02:17 +0000 (00:02 -0700)]
jogl: adapt code generator to output @Override annotations in various places

This adds the @Override to methods in the GL implementations (debug, trace, etc) for methods
implementing a GL Profile.  It also adds @Override for the toString() method.

Signed-off-by: Harvey Harrison <>
4 years agojogl: enable generics annotations on TextRenderer
Harvey Harrison [Fri, 18 Oct 2013 15:35:23 +0000 (08:35 -0700)]
jogl: enable generics annotations on TextRenderer

These were already here, enable them.

Signed-off-by: Harvey Harrison <>
4 years agojogl: remove clone() version that can only ever fail
Harvey Harrison [Fri, 18 Oct 2013 15:13:03 +0000 (08:13 -0700)]
jogl: remove clone() version that can only ever fail

d75835796900cac602f7e5789601ffba0a27efe2 (Graph: More std. functionality (equals, clone) / Better in-place transformation (cubic -> quadratic))

Added a clone method, but did not implement Cloneable, meaning Object.clone() will
always throw CloneNotSupportedException.  This method never returns anythng but null.

Signed-off-by: Harvey Harrison <>
4 years agojogl: remove clone() method that only throws Exceptions
Harvey Harrison [Fri, 18 Oct 2013 15:06:46 +0000 (08:06 -0700)]
jogl: remove clone() method that only throws Exceptions

a4e3f241cfba55e407c68eba91ffcc4beb0758b5 (Analysis of glXMakeCurrent freeze on ATI fglrx 8.78.6; Misc ..)

Removed 'implements Clonable' from NamedDisplay, which means Object.clone() will
always throw CloneNotSupportedException. Kill clone().

Signed-off-by: Harvey Harrison <>
4 years agojogl: replce more unneeded String() construction
Harvey Harrison [Fri, 18 Oct 2013 14:55:37 +0000 (07:55 -0700)]
jogl: replce more unneeded String() construction

Signed-off-by: Harvey Harrison <>
4 years agoPinchToZoomGesture: Add ctor arg 'allowMorePointer', should be false to be more stabl... v2.1.1
Sven Gothel [Sat, 19 Oct 2013 01:40:31 +0000 (03:40 +0200)]
PinchToZoomGesture: Add ctor arg 'allowMorePointer', should be false to be more stable (i.e. only 2 pointer pressed)

4 years agoFix Bug 827 - ShaderProgam helper class reports errors incorrectly
Sven Gothel [Sat, 19 Oct 2013 01:11:04 +0000 (03:11 +0200)]
Fix Bug 827 - ShaderProgam helper class reports errors incorrectly

4 years agoFix Bug 862: Fix GL Version Validation / NVidia GTX550 driver 331.13 - 64bit Linux...
Sven Gothel [Sat, 19 Oct 2013 00:49:15 +0000 (02:49 +0200)]
Fix Bug 862: Fix GL Version Validation / NVidia GTX550 driver 331.13 - 64bit Linux - No compatibility GLProfile (GL2, >= GL3bc)

Fix GL Version Validation:
  We shall not rely on our known good versions when validating a queried GL context version,
  but allow some 'room' for a higher version post JOGL release while still
  cutting off 'odd versions'.

  While GL version detection, we always iterate from the highest known version
  down to the lowest. Hence 'GLContext.isValidGLVersion(..)' is satisfied
  by validating the lowest version number but allowing a higher than known one.

  Now we would return 'invalid' for a version >= 6.

  It is enough to clip to the maximum known version when iterating,
  allowing the highest unknown version to be available.

    Returns true, if the major.minor is not inferior to the lowest
    valid version and does not exceed the highest known major number by more than one.

    The minor version number is ignored by the upper limit validation
    and the major version number may exceed by one.

    The upper limit check is relaxed since we don't want to cut-off
    unforseen new GL version since the release of JOGL.

    Hence it is important to iterate through GL version from the upper limit
    and 'decrementGLVersion(..)' until invalid.

Add GL Version 4.4 to valid known versions.

Remove ES3 desktop detection, which is impossible
  Regression of commit 3a0d7703da32e9a5ddf08a334f18588a78038d88 (ES3 support)

4 years agoMerge remote-tracking branch 'hharrison/master'
Sven Gothel [Fri, 18 Oct 2013 07:43:24 +0000 (09:43 +0200)]
Merge remote-tracking branch 'hharrison/master'

4 years agojogl: allow short-circuited comparison in comparison
Harvey Harrison [Fri, 18 Oct 2013 07:26:18 +0000 (00:26 -0700)]
jogl: allow short-circuited comparison in comparison

For this case && and & work equivalently, but using && allows the second comparison
to be omitted if the first comparison is false.  Likely just a typo.

Signed-off-by: Harvey Harrison <>
4 years agojogl: avoid creating a second String object, one is enough
Harvey Harrison [Fri, 18 Oct 2013 07:16:51 +0000 (00:16 -0700)]
jogl: avoid creating a second String object, one is enough

One String is already being built, passing it to new String() is just wasteful as
the temp String can be returned just as easily.

Signed-off-by: Harvey Harrison <>
4 years agojogl: fix typo in RandomTileRenderer, range chack was for tY, not tX again
Harvey Harrison [Fri, 18 Oct 2013 06:39:11 +0000 (23:39 -0700)]
jogl: fix typo in RandomTileRenderer, range chack was for tY, not tX again

Signed-off-by: Harvey Harrison <>
4 years agojogl: allow case statements to fall through to same block
Harvey Harrison [Fri, 18 Oct 2013 06:37:54 +0000 (23:37 -0700)]
jogl: allow case statements to fall through to same block

This block is falling through to the next cases where there two variables are
set to the same values.  Just remove this block and let all cases fall through to
the same block.

Signed-off-by: Harvey Harrison <>
4 years agojogl: fix two impossible comparisons in glu/tessellator
Harvey Harrison [Fri, 18 Oct 2013 06:30:56 +0000 (23:30 -0700)]
jogl: fix two impossible comparisons in glu/tessellator

The comparison to Long.MAX_VALUE will never trigger as it is coparing with an int.
The intent of this code appears to be to check against Integer.MAX_VALUE which is
used as an error code (unable to allocate sufficiently large array) from the

Signed-off-by: Harvey Harrison <>
4 years agoMerge remote-tracking branch 'hharrison/master'
Sven Gothel [Fri, 18 Oct 2013 06:11:19 +0000 (08:11 +0200)]
Merge remote-tracking branch 'hharrison/master'

4 years agojogl: add missing @Override annotations
Harvey Harrison [Fri, 18 Oct 2013 05:51:47 +0000 (22:51 -0700)]
jogl: add missing @Override annotations

Signed-off-by: Harvey Harrison <>
4 years agoBump 7u45
Sven Gothel [Fri, 18 Oct 2013 05:36:38 +0000 (07:36 +0200)]
Bump 7u45

4 years agojogl: remove all trailing whitespace
Harvey Harrison [Fri, 18 Oct 2013 05:27:27 +0000 (22:27 -0700)]
jogl: remove all trailing whitespace

Signed-off-by: Harvey Harrison <>
4 years agoMouseEvent: Clarify button-number and pointer-ID relation incl. case 'no button/point...
Sven Gothel [Fri, 18 Oct 2013 00:27:33 +0000 (02:27 +0200)]
MouseEvent: Clarify button-number and pointer-ID relation incl. case 'no button/pointer', i.e. button == 0, pointer-ID == -1

  - allow id==-1 -> button==0 for no button, i.e. mouse move

  - keep button 0 value, i.e. map to pointer-ID -1

4 years agoAWTPrintLifecycle.setupPrint(..): Fix regression of commit a05b87a369441d9ef38f97929f...
Sven Gothel [Thu, 17 Oct 2013 23:21:46 +0000 (01:21 +0200)]
AWTPrintLifecycle.setupPrint(..): Fix regression of commit a05b87a369441d9ef38f97929f866b3d4ced0e57: NULL printGLAD of GLCanvas and NewtCanvasAWT

We have to pre-init printGLAD w/ current GLAD (similiar w/ GLJPanel).

Also properly define reqNewGLAD:
   reqNewGLAD = !caps.getSampleBuffers() && ( reqNewGLADOnscrn || reqNewGLADSamples || reqNewGLADSize );

where '!caps.getSampleBuffers() && ( .. )' is due to Bug 830,
swapGLContextAndAllGLEventListener and onscreen MSAA w/ NV/GLX does not work.

4 years agoBug 800: Windows 7 Touch Event Support for NEWT: Fix Focus and LBUTTON[DOWN|UP] issues
Sven Gothel [Thu, 17 Oct 2013 21:02:04 +0000 (23:02 +0200)]
Bug 800: Windows 7 Touch Event Support for NEWT: Fix Focus and LBUTTON[DOWN|UP] issues

- w/ TOUCH, Win8 may steal focus (KILLFOCUS), quickly grab FOCUS again when on TOUCH operation

- track 'touchDownLastUp', and don't act on LBUTTON[UP|DOWN] and MOUSEMOVE if just lifted last finger

- don't use GetMessageExtraInfo() to distinguish MOUSE/TOUCH, simply use tracked touchDownCount

- Also track mouseInside in TOUCH operation, i.e. true if _all_ fingers are inside,
  otherwise don't send TOUCH event

4 years agoWindowImpl: Fix DEBUG output's method name of doPointerEvent and consumePointerEvent
Sven Gothel [Thu, 17 Oct 2013 20:58:13 +0000 (22:58 +0200)]
WindowImpl: Fix DEBUG output's method name of doPointerEvent and consumePointerEvent

4 years agoBug 800: Add Windows 7 Touch Event Support for NEWT
Sven Gothel [Thu, 17 Oct 2013 18:03:04 +0000 (20:03 +0200)]
Bug 800: Add Windows 7 Touch Event Support for NEWT

 - WindowUserData tracks:
    - window size
    - mouse inside
    - pointer touch-down count
   and flags whether multiple-touch is supported.

 - Suppress WM_*BUTTON* events if within TOUCH operations, e.g. fingers are pressed, or
   if event is determined as TOUCH (0 != GetMessageExtraInfo())

 - MOUSEMOVE issues NewtWindows_trackPointerLeave(..) directly
   if no TOUCH operation is in process.
   Removes need for MouseListener on Java side.

 - TOUCH events are send as follows:
     - PRIMARY first
     - 1 MOVE 2nd (if not sent already)
     - UP/DOWN (if not sent already)

   We only send max. one MOVE event, since Win7 / Win8
   assignes MOVE per default, even if no actual move happened.
   Hence a single MOVE event shall suffice and is compatible
   w/ e.g. Android (AFAIK).

 - TOUCH pointer names are mapped to consecutive IDs
   on the java side.

4 years agoWindowImpl.doPointerEvent(..) Simplify pointer name->ID mapping, fix DEBUG.
Sven Gothel [Thu, 17 Oct 2013 17:37:31 +0000 (19:37 +0200)]
WindowImpl.doPointerEvent(..) Simplify pointer name->ID mapping, fix DEBUG.

4 years agoRegression of commit a90bf31f8747dd38c61d518f8af4d4d4a64a8e90: 'consume<Type>Event...
Sven Gothel [Thu, 17 Oct 2013 16:02:07 +0000 (18:02 +0200)]
Regression of commit a90bf31f8747dd38c61d518f8af4d4d4a64a8e90: 'consume<Type>Event(<Type>Event ..)' must be protected and non-final

Overriding by impl. class allowed.

4 years agoNEWT Multiple-Pointer API: Use PointerType[] instead of ordinal int[], implementer...
Sven Gothel [Thu, 17 Oct 2013 15:57:31 +0000 (17:57 +0200)]
NEWT Multiple-Pointer API: Use PointerType[] instead of ordinal int[], implementer can use PointerType.valuesOf(int[] ordinals) to convert. Enhanced API doc. Methods 'final'

4 years agoRefine Int -> Enum conversion (commit 40863632d1428de015099b5967e5136425e99f25),...
Sven Gothel [Thu, 17 Oct 2013 15:25:38 +0000 (17:25 +0200)]
Refine Int -> Enum conversion (commit 40863632d1428de015099b5967e5136425e99f25), throw IllegalArgumentException if ordinal is out-of-range. Add API doc.

- FFMPEGNatives
- MouseEvent.PointerType

4 years agoPinchToZoomGesture: Validate pointer-IDs, skip if invalid.
Sven Gothel [Thu, 17 Oct 2013 05:57:02 +0000 (07:57 +0200)]
PinchToZoomGesture: Validate pointer-IDs, skip if invalid.

4 years agoNEWT PointerEvent: Unify event processing in new doPointerEvent(..) and consumePointe...
Sven Gothel [Thu, 17 Oct 2013 05:56:20 +0000 (07:56 +0200)]
NEWT PointerEvent: Unify event processing in new doPointerEvent(..) and consumePointerEvent(..) - Unifies native mouse and Android's pointer event, ready for Win7 touch

Unify event processing in new doPointerEvent(..), which is also invoked from doMouseEvent(..),
and consumePointerEvent().

doPointerEvent(..): Validates and modifies event data and finally creates the event,
where consumePointerEvent(..) calls gesture handlers and may synthesize events.

Unifies native mouse and Android's pointer event, ready for Win7 touch.
AndroidNewtEventFactory calls doPointerEvent(..) directly.

Removed lots of duplicated pointer event handling code.

4 years agoInt -> Enum using EnumClass.values()[ordinal] instead of for-loop - FFMPEGNatives...
Sven Gothel [Thu, 17 Oct 2013 03:25:59 +0000 (05:25 +0200)]
Int -> Enum using EnumClass.values()[ordinal] instead of for-loop - FFMPEGNatives's Enums and new MouseEvent.PointerType.valueOf(int)

4 years agoMouseEvent: Clarify 'Multiple-Pointer' w/ button[mask] semantics, ; InputEvent: getBu...
Sven Gothel [Thu, 17 Oct 2013 02:56:31 +0000 (04:56 +0200)]
MouseEvent: Clarify 'Multiple-Pointer' w/ button[mask] semantics, ; InputEvent: getButtonDownCount() and isAnyButtonDown();

- Clarify 'Multiple-Pointer' w/ button[mask] semantics

  - Pointer IDs start w/ 0 and are consecutive numbers.

  - 'button' == triggering pointer-ID

  - buttonMask in modifiers show pressed button _and_ pointer-IDs

- deprecated BUTTON_NUMBER -> use BUTTON_COUNT (name semantics)

4 years agoAdd efficient set(..all..) to Dimension, Insets, Point and Rectangle of NativeWindow...
Sven Gothel [Wed, 16 Oct 2013 12:28:27 +0000 (14:28 +0200)]
Add efficient set(..all..) to Dimension, Insets, Point and Rectangle of NativeWindow's util types.

4 years agoValidate codebase in jnlp files, add missing codebase entries.
Sven Gothel [Wed, 16 Oct 2013 10:03:10 +0000 (12:03 +0200)]
Validate codebase in jnlp files, add missing codebase entries.

4 years agoAWTPrintLifecycle.setupPrint(..): Add optional tileWidth and tileHeight, allowing...
Sven Gothel [Tue, 15 Oct 2013 15:04:35 +0000 (17:04 +0200)]
AWTPrintLifecycle.setupPrint(..): Add optional tileWidth and tileHeight, allowing user to set custom tile size for performance evaluation/tweak

4 years agoBug 861 - NEWT: Unify MouseEvent Processing incl. gesture processing
Sven Gothel [Tue, 15 Oct 2013 13:36:03 +0000 (15:36 +0200)]
Bug 861 - NEWT: Unify MouseEvent Processing incl. gesture processing

We processed MouseEvents within NEWT as follows:

  sendMouseEvent/enqueueMouseEvent -> doMouseEvent,
     - called by native code to be delivered via consumeMouseEvent (now or later)
     - events are validated (move/drag, boundaries)
     - missing events are synthesized (click, enter, ..)

as well as in several factories, i.e.:
    - AWTNewtEventFactory (1:1)

    - AndroidNewtEventFactory
       - synthesized events .. (click, ..)
       - android typed gesture detection (drag -> 1 finger scroll..)

The latter enqueues events do Window/Display directly to be consumed by WindowImpl.

Then users may have their own gesture detection etc.


This change unifies mouse/pointer event processing within NEWT within consumeEvent(..)
which represents a common entry point.

Gesture processing is now realized w/ a public API
  - GestureHandler
  - GestureHandler.GestureListener
  - GestureHandler.GesureEvent

which supplies:
  - default impl. of optional gesture handlers (scroll, .. - default: enabled)
  - public API to add/remove gesture-handler and -listener


This allows our impl. to scale better in support of
more multiple pointer devices (-> Win7/Win8, X11, ..). git info: FAQ, tutorial and man pages.