summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* GLJPanel Cleanup: Remove initial FBO reshape; Propagate reshape only if ↵Sven Gothel2014-09-181-17/+17
| | | | differs from panel-size; Use pre-fetched panel-size.
* Tests: Util NEWTGLContext: Utilize common createWindow(..) function, switch ↵Sven Gothel2014-09-149-62/+30
| | | | | | | | | | on-/offscreen via capabilities (Fixes TestTextRendererNEWTBugXXXX) TestTextRendererNEWTBugXXXX used NEWTGLContext.createOffscreenWindow(..) which created an pbuffer based offscreen not capable of ES2 rendering etc. Offscreen tests use NEWTGLContext.createWindow(..) w/ caps.setOnscreen(false), hence favor FBO instances.
* GLJPanel: Allow reconfiguration of offscreen's GLCapabilitiesImmutableSven Gothel2014-09-143-14/+119
| | | | | | | | | | | | | | | Offscreen's GLCapabilitiesImmutable reconfiguration will dispose a realized instance and issues recreation via initializeBackendImpl() immedietly. Implementation performs operation on AWT-EDT. Tests: - TestGearsES2GLJPanelAWT: - Toggle MSAA via 'm' - TestGearsGLJPanelAWT: - Toggle MSAA via 'm' - Toggle Bitmap via 'b'
* Gears* Demos: Spin at same speed (0.5f tan per frame) ; GearsES2: Bring back ↵Sven Gothel2014-09-144-5/+12
| | | | default Z values, allow Z customization (StereoDemo01)
* FPSAnimator: Remove toString() override as accidently added in commit ↵Sven Gothel2014-09-141-5/+0
| | | | fa0115efb3989c28af21fc5f570ae49723566107
* FPSAnimator: Align code and pause/resume conditions w/ Animator, simplifying ↵Sven Gothel2014-09-131-29/+37
| | | | review.
* AnimatorBase.finishLifecycleAction(): Non blocking call shall return true, ↵Sven Gothel2014-09-134-15/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | success - otherwise pause()/.. return value is inconsistent. Caller of e.g. pause() running on the anim-thread or AWT-EDT (AWTAnimatorImpl) will be non-blocking. Before this change, a non-blocking simply did not wait until the 'hold' condition is reached and returned its negated value. This ofc is 'false', indicated unsuccessful operation. Caller use the return value to determine whether the call actually paused (or ..) the animator. Despite the non-blocking nature, the pause state was set, even if not reached. Hence a resume() would be required to continue operation after a temporary pause. +++ This change ignores the non-blocking nature's unmet condition. finishLifecycleAction() returns !nok || !blocking, i.e. either true for the reached condition (blocking) or true if non-blocking. Blocking calls with unmet condition still return false. +++ In case an animated GLAutoDrawableis being pulled after a non-blocking animator pause() call, the GLAutoDrawable's implementation thread-safety must ensure proper operation. +++
* GLBuffers.sizeof(..): Add support for ES3, reading supported glPixelStorei ↵Sven Gothel2014-09-091-5/+9
| | | | states
* TestVersionSemanticsNOUI: v2.3.0 is not backward compatible w/ 2.2.*Sven Gothel2014-09-091-2/+2
|
* GLPixelStorageModes: Emphasize reset*() usage; setUnpackRowLength: GL2ES2 -> ↵Sven Gothel2014-09-094-34/+16
| | | | | | | | | | GL2ES3; Better adoption of GLPixelStorageModes (GLJPanel, GLReadBufferUtil, TextureIO) - Emphasize reset*() is being called when saving modes for 1st modification; - setUnpackRowLength: GL2ES2 -> GL2ES3; Actually GL2ES3 is required for UNPACK_ROW_LENGTH - Better adoption of GLPixelStorageModes (GLJPanel, GLReadBufferUtil, TextureIO)
* Don't utilize glPixelStorei's PACK/UNPACK IMAGE_HEIGHT and SKIP_IMAGES for ↵Sven Gothel2014-09-092-8/+16
| | | | | | | | | | | | | | Desktop GL < 1.2, avoiding GL-Error Commit fc1e98790a02b4fa7922f3cdd9d437f87d7c99e5 added handling of PACK/UNPACK IMAGE_HEIGHT and SKIP_IMAGES in GLPixelStorageModes. However, it has been overseen that the four states are not available in OpenGL 1.1. Adding exclusion of the same if desktop GL < 1.2 and hence avoiding GL errors. Same applies to GLBuffers.sizeof(..) method.
* Bug 1063: Uri adoptionSven Gothel2014-09-0816-109/+113
| | | | | | | | | - ShaderCode: - Using Uri - Also encode the rel. 'includeFile' (was missing earlier) - GLMediaPlayer - Exposes Uri in API, removed URI
* Bug 1065: Handle NULL result of TISGetInputSourceProperty(keyboard, ↵v2.2.1Sven Gothel2014-09-081-2/+7
| | | | kTISPropertyUnicodeKeyLayoutData), avoiding crash
* Bug 1047 - jogamp.opengl.glu.mipmap.Mipmap now uses already parsed GL ↵Sven Gothel2014-09-081-2/+3
| | | | | | version number and GL profile selection Since Bug 1047 didn't provide a unit tests, this must be fine for now.
* Bug 1060 - Add GLProfile.isInitialized(): Returns true if JOGL has been ↵Sven Gothel2014-09-032-0/+26
| | | | initialized
* Adding missing '@since 2.2.1' tags to ShaderCode and GLContextSven Gothel2014-09-032-4/+21
|
* Bug 1059 _and_ version-compat breackage of commit ↵Sven Gothel2014-09-032-15/+28
| | | | | | | | | | | c78ceb642d0ef5bb5bf27ff8ff1495175ee2e983 Commit c78ceb642d0ef5bb5bf27ff8ff1495175ee2e983 changed: - public static final String GL4 = "GL4"; + public static final String GL4 = "GL4".intern(); which is identified by semver as incompatible, due to Bug 1059 (no more inlining of interned string references).
* Bug 1058 - Fix GLContext.getGLSLVersionString(): Add 'profile' after version ↵Sven Gothel2014-09-021-5/+16
| | | | for GLSL >= 150 allowing GLSL compatibility profile
* Bug 1043 - Add Tessellation Control and Evaluation Shader SupportSven Gothel2014-09-028-16/+544
| | | | | - Add GL4.GL_TESS_CONTROL_SHADER and GL4.GL_TESS_EVALUATION_SHADER support for GLSL util class ShaderCode - Add unit test TestTessellationShader01GL4NEWT, testing TessellationShader01aGL4 and TessellationShader01bGL4
* Bug1044: Offscreen drawable AWT/ImageIO results in black image on ↵Sven Gothel2014-09-021-0/+106
| | | | | | | OSX/[Java7-Java8] - Using our PNGJ writer results in proper images (RGB and RGBA) on all platforms - Seems to be a bug w/ AWT/ImageIO
* Bug 1048: Add unit tests demonstrating multiple NewtCanvasAWT instances are ↵Sven Gothel2014-09-023-69/+389
| | | | | | | | | | | | | | working Enhance following performance test cases, adding NewtCanvasAWT, beside GLCanvas and GLJPanel, 25 instances: com.jogamp.opengl.test.junit.jogl.perf.TestPerf001GLJPanelInit01AWT com.jogamp.opengl.test.junit.jogl.perf.TestPerf001GLJPanelInit02AWT Adding simple com.jogamp.opengl.test.junit.newt.TestMultipleNewtCanvasAWT w/ two instances. Manually tested on GNU/Linux and OSX (java7 and java8).
* GLProfile: Use String.intern() on static final profile strings ('GL4bc', ↵Sven Gothel2014-09-021-30/+32
| | | | | | | | | 'GL4', ..) consequently using reference comparison. GLProfile already compared profile strings by reference, hence interning those strings to become canonical references was missing! Consequently using reference comparison for all profile strings in GLProfile.
* Bug 1052 - OpenGL ES 3.0 Mesa 10.1.3 Caught GLException: Not a GL4ES3 ↵Sven Gothel2014-09-022-19/+20
| | | | | | | | implementation - Part 2/2 - TestGLProfile01NEWT: Allow ctx.isGLES3Compatible() and hence GL4ES3 on GL3bc and GL3 - GLProfile: Remove GL4ES3 mapping using GL3bc and GL3, only GL4bc, GL4 and GLES3 are allowed in static mapping.
* Bug 1052 - OpenGL ES 3.0 Mesa 10.1.3 Caught GLException: Not a GL4ES3 ↵Sven Gothel2014-09-021-208/+753
| | | | | | | | | | | | | | | | | | implementation - Part 1/2 Test enhancements triggering issue 'Bug 1052 - OpenGL ES 3.0 Mesa 10.1.3 Caught GLException: Not a GL4ES3 implementation' - TestGLProfile01NEWT: Complete GLProfile and GL-object and GLContext validation - On OpenGL ES 3.0 Mesa 10.1.4 it produces: 1) test06GLProfileGL4ES3(com.jogamp.opengl.test.junit.jogl.acore.TestGLProfile01NEWT) javax.media.opengl.GLException: GL4ES3 is neither GL4bc, GL4 nor GLES3 at com.jogamp.opengl.test.junit.jogl.acore.TestGLProfile01NEWT.validateGLProfileGL4ES3(TestGLProfile01NEWT.java:531) at com.jogamp.opengl.test.junit.jogl.acore.TestGLProfile01NEWT.validateOffline(TestGLProfile01NEWT.java:708) at com.jogamp.opengl.test.junit.jogl.acore.TestGLProfile01NEWT.test06GLProfileGL4ES3(TestGLProfile01NEWT.java:948) i.e. wrong mapping of request GL4ES3 -> GL3
* Bug 1017 - TextureIO.write(Texture, File) throws GLException Not a GL2 ↵Sven Gothel2014-09-011-1/+5
| | | | | | implementation on GL3 contexts _gl.getGL2() -> _gl.getGL2GL3()
* TestSharedContextNewtAWTBug523: Fix junit usage ..Sven Gothel2014-08-311-14/+1
|
* Bug 1020 - First MSAA FBO frame on a mac osx nvidia card not antialiasedSven Gothel2014-08-312-2/+18
| | | | | | | | | | | | | | | | | | OSX/Nvidia's FBO needs to be cleared before blitting, otherwise first MSAA frame lacks antialiasing. GLFBODrawableImpl.initialize(..) can clear GL.GL_COLOR_BUFFER_BIT and GL.GL_DEPTH_BUFFER_BIT, if used. FBObject cannot clear the buffer(s) due to it's low-level API, i.e. it cannot know when the first bind occurs _after_ user completed FBO setup (attaching buffers). Hence plain FBObject usage required manual injection of glClear(..) after setup as demonstrated in GLJPanel. We may need to elaborate in this case, i.e. add an FBObject API entry like 'fbo.postInitNotify()'.
* TestGLReadBuffer01GLJPanelAWT: Add keyFrame-wait after initSven Gothel2014-08-311-0/+3
|
* FBObject Cleanup: Add comments about maxSamples > 0 implies fullFBOSupport; ↵Sven Gothel2014-08-311-14/+11
| | | | | | | | | bind(): Set dedicated read/write if fullFBOSupport - Add comments about maxSamples > 0 implies fullFBOSupport - bind(): Set dedicated read/write if fullFBOSupport as done in syncSamplingSink() and unbind()
* Refine test cases for synchronous GLAutoDrawable display, swap-buffer and ↵Sven Gothel2014-08-303-0/+64
| | | | | | read-pixels (non-MSAA and MSAA) Bugs: 841, 975 and 1020 .. add Platform and GL info !
* Refine test cases for synchronous GLAutoDrawable display, swap-buffer and ↵Sven Gothel2014-08-306-174/+195
| | | | read-pixels (non-MSAA and MSAA) Bugs: 841, 975 and 1020
* Bug 1054: Revert dfb9ed47ac6d8e85f6ae5fe166e7a6e28ca8ff83: Cannot change ↵Sven Gothel2014-08-303-36/+36
| | | | protected field name w/o breaking backward compatibility
* Bug 1055 - Access and query shared master GLContext in a deterministic ↵Sven Gothel2014-08-3013-236/+486
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | fashion ; Don't use arbitrary shared context as 'master'. GLContext* passes the shared-master to GLContextShareSet, which only creates a sets of shared contexts without differentiating the master context. GLContext*'s shared-slave attempts to lock the realized shared-master's surface at creation. Currently only an arbitrary shared context is selected due to the missing 'master' identity. The arbitrary shared context's surface is locked and its shared context handle used to create the slave context. Lacking of using the user given shared-master can lead to deadlock situations - and locking a 'wrong' surface. +++ The patch: - Allows query the user given shared-master! - Use the user given shared-master for locking and it's context handle for the slave's creation. - The shared-context mapping maps each shared-master to a shared-slave within one shared-context-set, allowing deterministic and individual shared-master queries.
* Bug 1054: GLContext: makeCurrent() needs a null-check of [mutable] ↵Sven Gothel2014-08-305-326/+406
| | | | | | | | | | | | | | | | | | | | | | | | drawable; Review null checks and synchronization/locking. 'drawable' field of GLContextImpl is mutable via setGLDrawable(..), which requires high-level locking as documented. The required high-level locking allows us to _not_ add special synchronization to this field (and drawableRead). A simple null-check in makeCurrent() shall be sufficient, plus ensuring mentioned high-level locking is applied. GLContextImpl 'drawable' and 'drawableRead' synchronization: - commit ad79bd072b600a3f2416cc6f0c61e2925000069d check of null drawable is sufficient - Add GLAutoDrawable upstream-lock locking to: - AWT GLCanvas setupPrint/releasePrint - AWT GLJPanel (was missing) Misc: - validate shared-context native-surface locking, throw exception if not successful - pixelDataEvaluated does not need to be synchronized, since it's being called while context is current, locking - GLDrawableHelper.recreateGLDrawable(..): Remove redundant glFinish() call
* Bug 1054: Cleanup GLContext: 'lock' -> 'contextLock'Sven Gothel2014-08-293-36/+36
|
* Bug 1054: Cleanup GLContext 'lock' and 'drawable' usage, perform drawable ↵Sven Gothel2014-08-291-65/+84
| | | | | | | | | | | | | | | | | null check in constructor. This patch merely cleans up 'lock' and 'drawable' usage, while fixing: - constructor: Add drawable null check -> IllegalArgumentException - setGLReadDrawable: Proper precondition checks - setGLDrawable: Proper precondition checks Affected methods of mutable drawable for which we have to consider locking: - setGLReadDrawable - setGLDrawable - release - destroy - makeCurrent
* GLSharedContextSetter: Fix API doc and all html references (fix URL and ↵Sven Gothel2014-08-298-11/+50
| | | | complete notes in all implementations)
* glsl.sdk.CompileShader: Use IOUtil.StreamMonitorSven Gothel2014-08-281-33/+1
|
* TestVersionSemantics: BACKWARD_COMPATIBLE_USER current vs 2.2.0Sven Gothel2014-08-281-5/+10
|
* Graph/Text: Prepare unit tests for font rendering validation (WIP)Sven Gothel2014-08-281-2/+2
|
* Graph/Text: Prepare unit tests for font rendering validation (WIP)Sven Gothel2014-08-2816-24/+425
|
* graph/font: Use 'pixelSize' var-name, remove redundanciesSven Gothel2014-08-283-47/+76
|
* Fix commit b5910f18f0b82a8a1f6f6252dc19971d5e487f39 for toString(): Call ↵Sven Gothel2014-08-282-0/+11
| | | | super.hashCode(), due to InternalError("hashCode not designed")
* GLStateTracker: Avoid private access wrapper, reuse fetched pixelStateMapSven Gothel2014-08-281-6/+6
|
* NEWT Window setSurfaceSize(..): Add API doc comment about setting pixel-unit ↵v2.2.0Sven Gothel2014-08-071-0/+5
| | | | size after creation in multiple monitor mode.
* Bug 1021: Refine Stereo API; Fix GenericStereoDevice; Fix StereoDemo01 for ↵Sven Gothel2014-08-078-48/+116
| | | | | | | | | | | | | | | | | | | | movie playback and OSX usage (HiDPI surfaceSize) - StereoDevice.DeviceType: Add API doc - StereoDevice: Add getFactory() - GenericStereoDevice - Use common static vars for configurations for simplicity - Fix createRenderer(..)'s eyeViewport in case no post-processing is performed, i.e. needs viewport X offset. - StereoDemo01 - Use 'movie' eyePosition instead of default if: - using a movie player _and_ using lenses! - Fix NEWT window pixel-unit size after window creation!
* Bug 1021: Fix OculusVR detection, need to probe HMD count, otherwise native ↵Sven Gothel2014-08-071-1/+4
| | | | SDK code crashes w/ NPE
* Bug 1039: Rename GLAnimatorControl.UncaughtGLAnimatorExceptionHandler -> ↵Sven Gothel2014-08-063-17/+17
| | | | GLAnimatorControl.UncaughtExceptionHandler
* Bug 1039 - Specify behavior of GLEventListener Exceptions occurring while ↵Sven Gothel2014-08-0617-104/+502
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | GLAutoDrawable processing [part-3] Add GLAnimatorControl.UncaughtGLAnimatorExceptionHandler interface to optionally handle uncaught exception within an animator thread by the user. Implementation also requires to flush all enqueued GLRunnable instances via GLAutoDrawable.invoked(..) in case such exception occurs. Hence 'GLAutoDrawable.flushGLRunnables()' has been added. Only subsequent exceptions, which cannot be thrown are dumped to System.stderr. +++ Handling of exceptions during dispose() Exception in NEWT's disposeGL*() are also caught and re-thrown after the NEWT window has been destroyed in WindowImpl.destroyAction: - GLEventListener.dispose(..) - GLDrawableHelper.disposeAllGLEventListener(..) - GLDrawableHelper.disposeGL(..) - GLAutoDrawableBase.destroyImplInLock(..) - GLWindow.GLLifecycleHook.destroyActionInLock(..) - WindowImpl.destroyAction on NEWT-EDT - WindowImpl.destroy Further more, exceptions occuring in native windowing toolkit triggered destroy() are ignored: - GLAutoDrawableBase.defaultWindowDestroyNotifyOp(..) It has to be seen whether such exception handling for dispose() shall be added to AWT/SWT. +++ TestGLException01NEWT covers all GLEventListener exception cases on-thread and off-thread (via animator). +++
* Bug 1039 - Specify behavior of GLEventListener Exceptions occurring while ↵Sven Gothel2014-08-053-6/+47
| | | | | | | | | | | | | GLAutoDrawable processing [part-2] In case of an exception thrown within an GLEventListener called off-thread by Animator: - Animator shall stop - Animator shall forward the exception GLDrawableHelper shall also flush all queued GLRunnable tasks in case of an exception, so that another thread waiting until it's completion is notified and continues processing.