aboutsummaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Bug 1107 - Refine PixelFormat, GLPixelBuffer and ↵Sven Gothel2014-12-0626-635/+2114
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | DirectDataBufferInt/BufferedImageInt - PixelFormat Refine definition allowing complete format conversion by its attributes instead of static 'knowledge'. - PixelFormat has_a *new* PixelFormat.Composition - PixelFormat.Composition contains all pixel component layout information as required for inspection and conversion. Component names are enumerated via PixelFormat.CType. - PixelFormatUtil.convert(..) utilizes generic conversion based on PixelFormat.Composition rather static type mapping. However, a int32 RGBA static conversion is still supported for performance. Utilizes Bitstream for varying pixel component bit-width. - Complete w/ hashCode() and equals(..) - GLPixelBuffer - Take 'pack' mode into account when determine GLPixelAttributes, i.e. on GLES pack=true (e.g. glReadPixel) only RGBA is guaranteed to work. Hence querying GLPixelAttributes requires the GLProfile, PixelFormat and pack mode. - Complete GLPixelAttributes conversions from PixelFormat or GL format/data-type, while taking GL data-type into account, as well as pack-mode. - Complete w/ hashCode() and equals(..) - SingletonGLPixelBufferProvider queries singleton GLPixelBuffer via - PixelFormat.Composition hostPixelComp, - GLPixelAttributes pixelAttributes, - boolean pack which comprise a unique key, allowing the implementation to utilize a hash map. This is implemented in AWTSingletonGLPixelBufferProvider. This allows distinct singleton GLPixelBuffer for different host PixelFormat (conversion) and GLPixelAttributes (depending on GLProfile). - Removes field 'componentCount' which was 'hacked in' to pass information about an optional host memory layout. Implementations utilizing conversion, e.g. AWTGLPixelBuffer, can implement GLPixelBufferProvider's 'PixelFormat.Composition getHostPixelComp(final GLProfile glp, final int componentCount)' and manage such implementation details, see use-case GLJPanel. - DirectDataBufferInt/BufferedImageInt: Expose underlying NIO ByteBuffer - AWTMisc.createCursor(..) uses DirectDataBufferInt.BufferedImageInt exposed NIO ByteBuffer, allowing to use generic PixelFormatUtil.convert(..).
* Bug 1106: JPEGDecoder adopt to GlueGen Bitstream change commit ↵Sven Gothel2014-12-061-2/+2
| | | | 9e13e8c78ed69bb7afcd49abe8bf69340dc06223
* Minor Cleanup (FBObject, GLBase)Sven Gothel2014-12-062-4/+13
| | | | | | FBObject: Remove redudant case GLBase: Add API doc reference to GLContext implementation
* Use ExceptionUtils.dumpStack(..) instead of Thread.dumpStack()Sven Gothel2014-10-2635-103/+140
|
* GLContext.Version* VersionNumber Constants: Clarify names, avoiding ↵Sven Gothel2014-10-254-34/+34
| | | | mis-interpretation alike Version130 -> [ 1.3.0 | 1.30.0 ] ?
* FloatUtil.makeFrustum(..): Add throws GLException API doc / Add GLException ↵Sven Gothel2014-10-254-11/+42
| | | | | | | | | | | | | if zNear == zFar throws GLException with GL_INVALID_VALUE if zNear is <= 0, or zFar < 0, or if left == right, or bottom == top, or zNear == zFar Add note on callers: - FloatUtil.makePerspective(..) - Matrix4.* - PMVMatrix.* - ProjectFloat.*
* Fix GLContext.Version* regression: Use Version1_1 and Version1_2 for 1.1 and ↵Sven Gothel2014-10-124-17/+29
| | | | | | | | | | | | | | | 1.2 (Version110 and Version120 are for 1.10 and 1.20 GLSL) Following commit introduced the wrong version usage, where a comparison w/ 1.1 and 1.2 was intended. Commit 6363fccee219ce238b0b2ded39c116e2bc8613d5 GLBuffers.sizeof(..): Add support for ES3, reading supported glPixelStorei states Commit 73a4d809f92126228b64a3bded75686db806be64 Don't utilize glPixelStorei's PACK/UNPACK IMAGE_HEIGHT and SKIP_IMAGES for Desktop GL < 1.2, avoiding GL-Error Commit f358c49418e95c622d50eb29f53c60dc4dbdee5b Bug 1047 - jogamp.opengl.glu.mipmap.Mipmap now uses already parsed GL version number and GL profile selection
* Bug 1093 - NEWT PointerIcon swizzled on X11 and OSX; WindowIcon swizzled on ↵Sven Gothel2014-10-106-17/+197
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | OSX ([R] -> [B]) Following mistakes were made in native PixelFormat for PointerIcon and WindowIcon: PointerIcon: X11: RGBA8888 -> BGRA8888 OSX: BGRA8888 -> RGBA8888 WindowIcon: OSX: BGRA8888 -> RGBA8888 Test case: TestWindowAndPointerIconNEWT (requires visual validation) +++ Summary: PointerIcon: BGRA8888: X11, Win32 RGBA8888: OSX WindowIcon: BGRA8888: X11, Win32 RGBA8888: OSX +++ Reported by 'LT' <http://forum.jogamp.org/Mac-OSX-newt-pointer-and-window-icon-displays-incorrectly-tp4033294.html>
* Graph/Math: Fix minor apidoc issuesSven Gothel2014-10-096-17/+42
|
* Graph: Fix minor apidoc issuesSven Gothel2014-10-092-3/+7
|
* FontFactory: Fix SecurityException as regression of commit ↵Sven Gothel2014-10-091-1/+6
| | | | | | bd24599b21f9787ac989e65b44dc1ba762162f22 - add missing PrivilegedAction around tempFile[0].delete()
* Graph Font: Fix API doc (parameter) ; GPUUISceneGLListener0A forward ↵Sven Gothel2014-10-093-8/+14
| | | | FontFactory.get(..) exception, we cannot recover in this demo
* Newt ScreenMode Tests: Return XRandR error-code, allowing fall-back ↵Sven Gothel2014-10-094-54/+78
| | | | (OpenIndiana has issues); Min delay 4s before next setScreenMode(..)
* Newt Screen viewport in windows units: Add missing setup in overriden ↵Sven Gothel2014-10-098-0/+30
| | | | calcVirtualScreenOriginAndSize(..) method (duplicate pixel unit)
* TestLandscapeES2NewtCanvasAWT: Enforce landscape shader to be ↵Sven Gothel2014-10-082-6/+10
| | | | compiled/linked upfront AWT migration, since it takes a long time on Mesa/AMD
* ShaderCode: Fix link to create(..) methodSven Gothel2014-10-081-3/+3
|
* TestTessellationShader01GL4NEWT: Add robustness, i.e. case where ↵Sven Gothel2014-10-083-18/+64
| | | | tessellation failed to compile/link (on unsupported platforms)
* Unit Tests: Increase minimum manual set timeout to 10sSven Gothel2014-10-085-9/+9
|
* GLException.dumpThrowable(..) -> GlueGen's ExceptionUtils.dumpThrowable(..)Sven Gothel2014-10-083-16/+10
|
* Bug 1087: Set default framebuffer for OSX DummyDrawable, hence enforce ↵Sven Gothel2014-10-082-2/+9
| | | | NSView realization for DummyDrawable
* Bug 1088: Add GLRendererQuirks.NeedSharedObjectSync; Tests: Synchronize GL ↵Sven Gothel2014-10-088-33/+147
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | objects if GLRendererQuirks.NeedSharedObjectSync is set. GLSharedContextSetter#synchronization GL Object Synchronization Usually synchronization of shared GL objects should not be required, if the shared GL objects are created and immutable before concurrent usage. However, using drivers exposing GLRendererQuirks.NeedSharedObjectSync always require the user to synchronize access of shared GL objects. Synchronization can be avoided if accessing the shared GL objects exclusively via a queue or com.jogamp.common.util.Ringbuffer, see GLMediaPlayerImpl as an example. +++ GLRendererQuirks.NeedSharedObjectSync is set for all OSX versions +++ Handle GLRendererQuirks.NeedSharedObjectSync in user code! +++ All shared context tests passed on OSX 10.9.5, and GNU/Linux w/ Nvidia + Mesa/AMD driver.
* GLRendererQuirks: Align wording in API docSven Gothel2014-10-081-13/+19
|
* Bug 1088: Shared Gears* Unit Tests: Align all 3 Gears* implementation to use ↵Sven Gothel2014-10-0811-110/+141
| | | | a shared Gears* object
* GLContextImpl: Unify common TRACE_SWITCH and DEBUG_TRACE_SWITCH base ↵Sven Gothel2014-10-082-33/+26
| | | | info-string creation; MacOSXCGLContext: Fix intendation
* NEWT Display: Fix typo in API docSven Gothel2014-10-071-1/+1
|
* NativeWindow's ToolkitLock TRACE_LOCK: Show more usable detailsSven Gothel2014-10-074-13/+28
|
* AnimatorBase thread-name: Add instance sequence numberSven Gothel2014-10-071-2/+5
|
* SingletonTestCase -> SingletonJunitCase: Adapt to GlueGen commit ↵Sven Gothel2014-10-032-4/+4
| | | | 773d96584b4edc13eb6ff689eaf891aab09aa5a4
* UITestCase now extends GlueGen's test-util SingletonTestCaseSven Gothel2014-10-032-83/+6
|
* WindowsWGLGraphicsConfiguration[Factory]: Refine indentation to increase ↵Sven Gothel2014-10-032-45/+78
| | | | readability (140 chars width)
* Merge remote-tracking branch 'gouessej/master'Sven Gothel2014-10-023-8/+49
|\
| * Uses System.err instead of System.out in order to drive the debug logs more ↵unknown2014-10-023-8/+49
| | | | | | | | consistent, adds a method to convert an attribute list into a capabilities object with no check in order to display some information about skipped capabilities objects and fixes a NullPointerException when skipping a capabilities object
* | Bug 1085: Fix GLJPanel regression while printing w/ invisible GLJPanel: Zero ↵Sven Gothel2014-10-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | size panel size This is a regression due to commit 84f367a73c5b16dcebfd877e82e1c2cb90ae74ce: GLJPanel Cleanup: Remove initial FBO reshape; ** Propagate reshape only if differs from panel-size; ** <- this one Use pre-fetched panel-size. Above commit only issued 'sendReshape' if the reshape-size differs from the actual panel-size. Note: The reshape-size is propagated to panel-size either in [1] initializeBackendImpl(..) or [2] handleReshape(..) @ paintComponent. While printing w/ an invisible GLJPanel the reshape-size has not yet propagated to the panel-size (see above) and two consecutive reshape calls will cause the last one to be dropped. With this patch we have: GLJPanel.addNotify() GLJPanel.reshape.0 null resize [paint] [ this 0x0, pixelScale 1x1, panel 560x420] -> 0x0 * 1x1 -> 0x0, reshapeSize 0x0 GLJPanel.reshape.0 null resize [paint] [ this 560x420, pixelScale 1x1, panel 560x420] -> 560x420 * 1x1 -> 560x420, reshapeSize 560x420 GLJPanel.setupPrint: scale 1.000000 / 1.000000, samples 0, tileSz -1 x -1 GLJPanel.createAndInitializeBackend.1: [printing] 560x420 @ scale 1x1 -> 560x420 @ scale 1x1 A
* | Bug 1085: Increase and fix DEBUG verbosity in GLJPanel to catch reshape ↵Sven Gothel2014-10-021-9/+13
|/ | | | regression during print
* Bug 1078: Fix commit 99f91f8b28d42cdf341533736e878056bcae4708 ↵Sven Gothel2014-10-023-26/+39
| | | | | | (GLRendererQuirks.NoPBufferWithAccum): Accum buffer allowed if !usePBuffer; Avoid NPE. 99f91f8b28d42cdf341533736e878056bcae4708
* Merge remote-tracking branch 'gouessej/master'Sven Gothel2014-10-023-4/+28
|\
| * Fix of the bug 1078Julien Gouesse2014-10-013-4/+28
| |
* | Bug 1084: Fix GLProfile Mapping regarding hardware priority, honor ↵Sven Gothel2014-10-011-64/+110
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | software/hardware attribute of all profiles GLProfile's mapping code does not consider the following combination: - GL4 software - GL3 hardware and hence maps GL4-software -> [GL2ES2, GL2GL3], where GL3-hardware -> [GL2ES2, GL2GL3] is desired. This combination has recently been observed on Mac OSX 10.9.5, which includes a software GL 4.1 implementation. However, other systems could be affected as well. +++ Fix GLProfile.computeProfileImpl(..): Only use the higher profile, if hardware-accelerated or none of the lower profiles offers hardware-acceleration! This extra condition was missing for certain profiles, e.g. GL4, GL4bc, GL3, GL3bc and GL2. Conflicts: make/scripts/tests.sh
* Bug 1078, Bug 1082: Fix regression (typo), add missing assignment of ↵Sven Gothel2014-10-011-0/+1
| | | | printGLAD in NewtCanvasAWT.setupPrint()
* Bug 1081: Fix GLJPanel Regression: Honor pre-init reshape-size at ↵Sven Gothel2014-10-013-59/+355
| | | | | | | | | | | | | | initializeBackendImpl() Commit 84f367a73c5b16dcebfd877e82e1c2cb90ae74ce removed utilization of reshape-size in case panel-size is valid, even if a reshape event happened in between: - addNotify - paintComponent initializeBackendImpl() includes now uses reshape-size IFF handleReshape is set. Before it was using reshape-size only if panel-size was invalid. TestAWT03GLJPanelRecreate01 covers this issue.
* Bug 1078: Add Fallback in AWTPrintLifecycle.setupPrint(): Use Onscreen GLAD ↵Sven Gothel2014-09-305-18/+67
| | | | | | | | | | | | | | | | | | | if Offscreen-GLAD Realization throws an Exception (Stability) - GLDrawableFactoryImpl: createOffscreenDrawable(..) and createDummyAutoDrawable(..) Temporary catch exception during setRealized(true) of newly created GLDrawable, to unrealize the instance before propagating the exception. This handling removes a memory leak in case the exception of this method is handled and application continues to operate, e.g. as in AWTPrintLifecycle.setupPrint(). The underlying drawable gets unrealized, since it's setRealized(boolean) implementation toggles its realize-state before delegating the realize-operation. Hence this is functional. - AWTPrintLifecycle.setupPrint() Stability Catch exception thrown by factory.createOffscreenAutoDrawable(..)'s setRealize(true) to continue operation w/ onscreen GLAD.
* Refine Graph/Font InputStream Capabilities (commit ↵Sven Gothel2014-09-309-174/+249
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 628509b39ea7c16210315d191860511d6be4aa69) FontFactory Remove: - Font get(final URLConnection conn) - Font get(final InputStream stream) FontFactory Add: - [1] Font get(final InputStream stream, final int streamLen, final boolean closeStream) - Direct usage of font InputStream w/ determined length, may instantiate BufferedInputStream in case given stream doesn't support mark/reset! - [2] Font get(final InputStream stream, final boolean closeStream) - Copy font InputStream w/o determined length, resulting in BufferedInputStream supporting mark/reset! Security Related: - Only perform priviledged code on determine InputStream, _not_ when parsing the font stream itself! - Hence PrivilegedAction only happens in FontFactory's InputStream preparation. Misc: - Use Uri class
* Merge remote-tracking branch 'picoworm/master'Sven Gothel2014-09-244-4/+44
|\
| * Added possibility to load font using InputStream parameterRoman2014-07-244-4/+44
| |
* | Fix future compatibility issues (analog to b22x commit ↵Sven Gothel2014-09-245-30/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 546f9b1a03c46b63f8bb18c1b8e2c80a8b66cf7c) - GLFBODrawable: - Remove FBOMODE_DEFAULT - GLRendererQuirks: - Remove COUNT - Add getCount() method for future compatibility. - Animator - Hide local fields (private or package private)
* | Fix synchronization issues in Animator* Exception caseSven Gothel2014-09-233-74/+77
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Refines commit cef7ba607ad7e8eb1ff2a438d77710a29aa0bda6 - The animator monitor-lock was still hold in the post finally block issuing flushGLRunnables(), due to intrinsic monitor release (in finally): - <http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html#jvms-2.11.10> - <http://stackoverflow.com/questions/10743285/behavior-of-a-synchronized-method-with-try-and-finally> - Further: AnimatorBase.flushGLRunnables() acquired the lock itself (duh!) This commit removes the requirement for finally altogether by simply return a boolean from handleUncaughtException(caughtException), where false denotes the caller to propagate the exception itself (no handler). Post synchronized block then issues flushGLRunnables() and exceptation propagation as required. AnimatorBase.flushGLRunnables() 'synchronized' modifier is removed. Further, ThreadDeath is being propagated if caught. Here the finally block is also removed - redundant.
* | Fix GLContextImpl.setRendererQuirks(..) CTX_IMPL_ACCEL_SOFT profile stateSven Gothel2014-09-221-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - GLContextImpl.setRendererQuirks(..) in called in GLContextImpl.setGLFunctionAvailability(..) - GLContextImpl.setRendererQuirks(..) was called before fixing CTX_IMPL_ACCEL_SOFT via isCurrentContextHardwareRasterizer(). The latter set CTX_IMPL_ACCEL_SOFT based on known software renderer string within GL_RENDERER. This lead to incorrect hwAccel assumption and hence wrong setting of GLRendererQuirks: - NoDoubleBufferedPBuffer (was selected even w/ later CTX_IMPL_ACCEL_SOFT) - BuggyColorRenderbuffer (was never selected) - Fix performs GLContextImpl.setRendererQuirks(..) _after_ fixing CTX_IMPL_ACCEL_SOFT via isCurrentContextHardwareRasterizer().
* | Fix synchronization issues in GLDrawableHelper.flushGLRunnables(), fixes ↵Sven Gothel2014-09-224-66/+78
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | rare deadlock with animator-exception and invoke(wait=true, ..) Fix synchronization issues in GLDrawableHelper.flushGLRunnables(): - Querying 'glRunnables.size()' is not synchronized, only its reference is volatile, not the instance's own states. - 'flushGLRunnable()' must operates while acquired the 'glRunnable' lock. - 'glRunnables' are no more volatile - introduced volatile 'glRunnableCount', allowing 'display(..)' method to pre-query whether blocking 'execGLRunnables(..)' must be called. This is risk (deadlock) free. Also fixes rare deadlock in animator display-exception / GLAD.invoke(wait=true, ..) case: - 'GLDrawableHelper.invoke(.., GLRunnable)' acquires the 'glRunnable' lock. - Then it queries animator state, which is blocking. - Hence animator's 'flushGLRunnable()' call must happen outside the animator lock
* | Stabilize, fix regression: GLDrawable.invoke(..) and Animator* display-loop ↵Sven Gothel2014-09-223-8/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 'closure' GLDrawable.invoke(..) regression of commit c77b8f586cb2553582a42f5b90aeee5ef85f1efe: 'wait' was not set to false, if 'deferredHere' was forced to 'false'. This could lead to the situation where GLRunnableTask will catch the exception and supresses it. Animator/FPSAnimator post exception propagation code animThread = null; notifyAll(); must be complete to finalize animator state in case of an exception. Decorate 'handleUncaughtException(..)' w/ try { } finally { } where the latter ensures the mentioned 'closure'.
* | Bug 1066: Reduce glGetError() in GLDrawableHelper.reshape(.., setViewport==true)Sven Gothel2014-09-211-5/+4
| | | | | | | | Only check error if DEBUG || GLContext.DEBUG_GL in GLDrawableHelper.reshape(.., setViewport==true)