summaryrefslogtreecommitdiffstats
path: root/src/jogl
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #76 from esemplare/masterSven Gothel2013-12-151-1/+32
|\ | | | | Fix Bug 362: calculated dimensions for MipMaps smaller than 16x16
| * Fix Bug 362: calculated dimensions for MipMaps smaller than 16x16Michael Esemplare2013-12-111-1/+32
| | | | | | | | | | Added method to calculate mipmap blocksize for uncompressed and DXTn images
* | Bug 918: Fix EOS Regression: Only use pts>duration for EOS if duration > 0 ↵Sven Gothel2013-12-111-2/+2
| | | | | | | | | | | | (camera or other sources may not have duration) Regression of commit 8a8ed735f6631b2da7bf605c5c3dda4e0fc13905
* | ALAudioSink: Fix stop and flush of OpenAL sourceSven Gothel2013-12-111-115/+125
| | | | | | | | | | | | | | | | | | | | - stopImpl() shall always issue alSourceStop(..) if state is not STOPPED - Remove 'flush' hint for dequeueBuffer(..), we perform proper flush in respective method, see below - flush() needs to issue: - stopImpl() - which should already dequeue all buffers - Explicitly dequeue all buffers: via 'alSourcei(alSource[0], AL.AL_BUFFER, 0)' - Then dequeue manually processed buffers: dequeueBuffer( false /* wait */ ); - And dequeue _all_ buffers: dequeueForceAll();
* | Bug 918 (2/2): Determine StreamWorker usage after stream-init ; Fix seek(..) ↵Sven Gothel2013-12-113-93/+189
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ; Fallback for EOS Detection ; MovieSimple uses full GLEventListener for 'Audio Only' as well to test seek Determine StreamWorker usage after init - To support audio only files, we need to determine to use StreamWorker after completion of stream-init. Fix seek(..) - FFMPeg: pos0 needs to use aPTS for audio-only - Clip target time [0..duration[ Fallback for EOS Detection In case the backend does not report proper EOS: - Utilize 'nullFramesCount >= MAX' -> EOS, where MAX is number of frames for 3s play duraction and where 'nullFramesCount' is increased if no valid packet is available and no decoded-video or -audio in the queue. - Utilize pts > duration -> EOS MovieSimple uses full GLEventListener for 'Audio Only' as well to test seek - Matroska seek for audio-only leads to EOS .. http://video.webmfiles.org/big-buck-bunny_trailer.webm - MP4 audio-only seek works http://download.blender.org/peach/bigbuckbunny_movies/BigBuckBunny_320x180.mp4 MovieSimple/MovieCube: - Use audio-pts in audio-only to calc target time Tested: - A, V and A+V - Pause, Stop and Seek - GNU/Linux
* | Bug 918: GLMediaPlayer: Fix Deadlock if EOS happens after pause/resume ↵Sven Gothel2013-12-111-10/+18
| | | | | | | | | | | | | | | | | | (seek) - Tested w/ seeking 'Audio Only' and Matroska Test stream was default of MovieSimple: http://video.webmfiles.org/big-buck-bunny_trailer.webm while disabling video (-vid -2)
* | Bug 918 (1/2): Use StreamWorker in 'Audio Only' mode, since no ↵Sven Gothel2013-12-112-7/+2
|/ | | | | | | | 'getNextTexture(..)' is issued here! Thanks to Xerxes to analyze this issue thoroughly. TODO: Implement EOS for 'Audio Only' and test seek, pause, etc .. - Apply manual tests in MovieSimple
* Bug 904: 'User Vertical Flip' for GLJPanel w/o vertical flip must be ↵Sven Gothel2013-12-103-7/+18
| | | | considered in AWTTilePainter: 'Origin of GL image is still on Bottom'
* Bug 747: VectorUtil: Make scale(..) creating new float[] deprecated, adding ↵Sven Gothel2013-12-101-5/+33
| | | | | | | | | | 'in place' variant w/ passing result float[] ; TODO: Replace all variations with 'in place' version to be more memory efficient. Make scale(..) creating new float[] deprecated, adding 'in place' variant w/ passing result float[] TODO: Replace all variations with 'in place' version to be more memory efficient. See Bug747: Validate memory footprint and usage / General performance
* GLJPanel.initializeBackend(offthread=true): Enable on Windows, thanks to Bug ↵Sven Gothel2013-12-011-10/+0
| | | | | | | 907 impl. DummyDispatchThread (DDT) Bug 907 implemented DDT used to create and destroy offscreen surface's dummy drawable on Windows. This enables offscreen initialization on Windows running from a short lived arbitrary thread.
* GLDrawableFactory.shutdown0() Add DEBUG line at the endSven Gothel2013-11-291-0/+3
|
* GLDrawableFactory: destroy() -> shutdownImpl() - Add DEBUG output in ↵Sven Gothel2013-11-285-8/+19
| | | | implementation
* Fix Bug 902: FFMPEGMediaPlayer uses IOUtil.decodeURIIfFilePath(uri) to ↵Sven Gothel2013-11-281-2/+7
| | | | decode proper file-scheme if applicable - otherwise encoded ASCII URI.
* Bug 909 - Reccreate GLJPanel's BufferedImage is no more sourced by singleton ↵Sven Gothel2013-11-212-21/+27
| | | | | | | | | | | | AWTGLPixelBuffer GLJPanel must validate whether it's local BufferedImage's DataBuffer is sourced by the current singleton AWTGLPixelBuffer. Case: GLJPanel-B has created a new singleton AWTGLPixelBuffer w/ increased size. Previous created GLJPanel-A's local BufferedImage's DataBuffer is no more sourced by the singleton AWTGLPixelBuffer and hence must be re-created.
* Bug 890 - GLContextImpl's Version Validation: Only validate Integer based ↵Sven Gothel2013-11-181-7/+17
| | | | | | Version if requested context or string-version is >= 3.0 .. otherwise, spec doesn't require integer based version to work!
* EGLGraphicsConfiguration: Add deauled DEBUG output for failed EGL-Config QueriesSven Gothel2013-11-181-4/+41
|
* Bug 906 - JAWTWindow Component- and HierarchyListener must be detached at ↵Sven Gothel2013-11-161-0/+9
| | | | | | | | | | JAWTWindow.destroy() - GLCanvas Recreation Case In case a JAWTWindow owner recreates itself, destroying JAWTWindow must detach the Component- and HierarchyListener from the AWT component! Test TestBug816GLCanvasFrameHoppingB849B889AWT shows properly detaching listener at jawtWindow destruction.
* Bug 904 - GLJPanel: Add property to skip isGLOriented() based vertical flip ↵Sven Gothel2013-11-141-2/+6
| | | | | | by default (2/2) Property 'jogl.gljpanel.noverticalflip' will set the skipGLOrientationVerticalFlip default to true - intended for perf. testing of existing applications
* Bug 904 - GLJPanel: Allow user to skip isGLOriented() based vertical flip of ↵Sven Gothel2013-11-141-39/+74
| | | | | | | | | | | | | | | | | | | | | | | offscreen backend Add new GLJPanel method 'setSkipGLOrientationVerticalFlip(..)': /** * Set skipping {@link #isGLOriented()} based vertical flip, * which usually is required by the offscreen backend, * see details about <a href="#verticalFlip">vertical flip</a> * and <a href="#fboGLSLVerticalFlip">FBO / GLSL vertical flip</a>. * <p> * If set to <code>true</code>, user needs to flip the OpenGL rendered scene * <i>if {@link #isGLOriented()} == true</i>, e.g. via the PMV matrix.<br/> * See constraints of {@link #isGLOriented()}. * </p> */ public final void setSkipGLOrientationVerticalFlip(boolean v) { GearsES2: Handles 'flipVerticalInGLOrientation' Unit test 'TestPerf001GLJPanelInit02AWT' validates and measures performance.
* GLJPanel: Remove unused importSven Gothel2013-11-131-1/+0
|
* Fix javadoc: TileRendererBase (links to manual anchors) and ↵Sven Gothel2013-11-122-7/+8
| | | | GLSharedContextSetter (remove <> in links, more details on Immersion.16.
* Simplify Animator* Synchronization: Remove barrier 'stateSync' and favor ↵Sven Gothel2013-11-103-162/+81
| | | | | | | | | | | | simple 'synchronized' on Animator for field-get, which is already used in most methods Utilizing a 2nd synchronization object 'stateSync' besides the main sync object, Animator itself, is hard to maintain. It's performance advantages for querying states ae questionable and may even introduce bugs. Use synchronization on Animator instance for all field read/write access. Fix unsynchronized write access of 'animThread' in Animator.MainLoop.run().
* Android ES3 Movie Demos: Add workaround for: P0003: Extension ↵Sven Gothel2013-11-072-3/+3
| | | | | | | | | 'GL_OES_EGL_image_external' not supported + // Bug on Nexus 10, ES3 - Android 4.3, where + // GL_OES_EGL_image_external extension directive leads to a failure _with_ '#version 300 es' ! + // P0003: Extension 'GL_OES_EGL_image_external' not supported + preludeGLSLVersion = false;
* GLJPanel: Don't ctor DefaultGLCapabilitiesChooser() if null chooser is ↵Sven Gothel2013-11-071-1/+1
| | | | passed, this allows native GLCaps/config query to follow fast-path
* WindowsWGLGraphicsConfigurationFactory: Fix chosenPFDID -> recommendedIndex ↵Sven Gothel2013-11-071-20/+33
| | | | | | | | (!skipCapsChooser mode) Regression of commit cf1163fc88976e7087d3a17524a49139e35a4708: Commit dropped seeking recommendedIndex of chosenPFDID within cleaned-up availableCaps when in !skipCapsChooser mode.
* WGLGLCapabilities: Print pfdID as decimal (convention)Sven Gothel2013-11-071-1/+1
|
* GLJPanel: Remove redundant !isInitialized [double-]check in ↵Sven Gothel2013-11-071-33/+29
| | | | initializeBackendImpl(), already tested before function entry!
* Bug 898: Apply best efford on Animator operation's finishLifecycleAction(..) ↵Sven Gothel2013-11-071-19/+41
| | | | in !blocking mode, i.e. notifyAll() if waitCondition holds and test again
* Bug 890 - Fix GLES3 Profile Mapping, i.e. GL2ES2 queries and mappings; ↵Sven Gothel2013-11-0716-67/+109
| | | | | | | | | | | | | | | | | | | | Validate isGLES*() usage and definition ; Add and use ShaderCode.createExtensionDirective(..) - Fix GLES3 Profile Mapping, i.e. GL2ES2 queries and mappings - GLProfile: Add GL2ES2 -> ES3 mapping - EGLContext: Reuqest major '3' for ES3 - EGLGLCapabilities/EGLGraphicsConfiguration: Consider EGLExt.EGL_OPENGL_ES3_BIT_KHR - Validate isGLES*() usage and definition - Fix BuildComposablePipeline's isGLES() code - For GLSL related queries use isGLES() instead of isGLES2(), which would exclude ES3 - Add and use ShaderCode.createExtensionDirective(..) - Supporting creating GLSL extension directives while reusing strings from GLExtensions - Minor cleanup of GLContextImpl.setGLFuncAvail(..)
* Bug 894 - GLJPanel: Expose 'initializeBackend(boolean offthread)' allowing ↵Sven Gothel2013-11-061-30/+88
| | | | | | user to trigger backend initialization eagerly and offthread (optional, !WINDOWS) TestPerf001GLJPanelInit02AWT compares all variations: no-gl, glcanvas, gljpanel and gljpanel-initMT (offthread)
* Bug 894 - GLDrawableFactory* [dummy|offscreen] Surface creation w/ own ↵Sven Gothel2013-11-065-36/+41
| | | | device does _not_ require locking on global shared device.
* JNI Code: Call DeleteLocalRef(..) manually.Sven Gothel2013-11-051-0/+1
|
* Bug 888 / Bug 891- Enhance GLCapabilities-Query: Add perf. test caseSven Gothel2013-11-051-4/+3
| | | | | | | | | Even though the test case itself cannot show the proper initialization time, it can be used w/ an attached profiler i.e. Test w/ 50 X11GLXGraphicsConfigurationFactory.chooseGraphicsConfigurationFBConfig() invocations: - pre change: 1.708 ms - post change: 650 ms (613e33ee8ffc1f2b9c5db1e1b5bb5253a159ed6d)
* Bug 888 - Validate CPU Runtime Performance: Only use one HashMap to collect ↵Sven Gothel2013-11-051-30/+38
| | | | | | | | unified gl- and glx-extension strings. - HashMap is more efficient than HashSet - No need to use sub HashSet's .. we can use global HashMap. 'Loosing' duplicate GLX entries due to GL duplicates is acceptable.
* Bug 888 / Bug 891 - Enhance GLCapabilities-Query: Apply changes of commit ↵Sven Gothel2013-11-057-105/+192
| | | | | | | 613e33ee8ffc1f2b9c5db1e1b5bb5253a159ed6d to EGL and WGL. Note: WGL config query is already performed as a bulk operation. Note: OSX does not perform such queries.
* Bug 888 - Validate CPU Runtime Performance: ↵Sven Gothel2013-11-042-61/+129
| | | | | | | | | | | | | | | | | | | | X11GLXGraphicsConfiguration.GLXFBConfig2GLCapabilities(..) X11GLXGraphicsConfiguration.GLXFBConfig2GLCapabilities(..) ran over all FB configs and for each it grabbed native config values separately. Fetching them in bulk mode saves around 7% of this function's cost. Also reuse XRenderPictFormat instance for 'XRenderDirectFormat XRenderFindVisualFormat(..)' call, saving a few NIO creation cycles w/ StructAccessor. Biggest savior is X11GLXGraphicsConfigurationFactory.chooseGraphicsConfigurationFBConfig()'s fast path w/o chooser and usable 1st FBConfig. Here we only issue 'GLXFBConfig2GLCapabilities(..)' on the first valid entry. Test w/ 50 X11GLXGraphicsConfigurationFactory.chooseGraphicsConfigurationFBConfig() invocations: - pre change: 1.708 ms - post change: 650 ms Time is no spent almost solely on native glXChooseFBConfig (546ms).
* GLContextImpl: Move sharedContextHandle check to makeCurrentWithinLock(..) ↵Sven Gothel2013-11-028-90/+54
| | | | and let it fail there instead of within impl. class, only pass the handle - simplifies and removes redundancy.
* GLRendererQuirks: Add GLSharedContextBuggy ('Mesa Intel 9.2.1' and ↵v2.1.2Sven Gothel2013-11-012-8/+63
| | | | | | | 'Hisilicon Immersion.16') Note: Even though Mesa Intel driver crashes w/ heavy multithreading (Bug 873), it works well w/ our multithreaded GLMediaPlayer.
* Bug 885 - GLMediaPlayer: Allow single threaded mode - Especially where ↵Sven Gothel2013-11-014-58/+139
| | | | | | | | | | | | 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. -
* Clarify Bug 692: Unbinding a VAO does _not_ imply unbinding of set VBOs ↵Sven Gothel2013-11-012-11/+30
| | | | | | | | | | | | | | | | | | | | | (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. <https://jogamp.org/bugzilla/show_bug.cgi?id=692#c5>, + * 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.
* EGLDrawableFactory.createDummySurfaceImpl: fix caps to pbuffer - since we do ↵Sven Gothel2013-10-312-1/+2
| | | | | | | use EGLDummyUpstreamSurfaceHook .. a pbuffer offscreen fixOffscreenBitOnly(..) may yield FBO queries / chosing .. usually doesn't matter (on devices here), but not accurate.
* GLDrawableFactory: createDummy*(..) Pass GLCapabilitiesImmutable + ↵Sven Gothel2013-10-314-18/+43
| | | | GLCapabilitiesChooser instead of GLProfile, allowing using same or similar caps - important for sharing ctx
* AndroidGLMediaPlayerAPI14: Avoid possible NPEsSven Gothel2013-10-311-44/+50
|
* Bug 754 - Remove Ubuntu fonts from jogl-all.jar, provide it separately to ↵Sven Gothel2013-10-311-11/+78
| | | | | | | | | | | | | | | 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
* Add functions for converting to and from binary16 half-precision floating ↵Mark Raynsford2013-10-313-0/+801
| | | | point values. Derived from http://mvn.io7m.com/ieee754b16, of which I am the original author.
* Fix Bug 875 - Cleanup branch using VersionNumber (fix 'Int' check ↵Sven Gothel2013-10-303-59/+89
| | | | | | | | | | | | 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)
* Bug 875: Safeguard setGLFunctionAvailability(.. strictMatch=false.. ) ↵Sven Gothel2013-10-306-8/+19
| | | | operation, throw InternalError if failing
* Merge pull request #72 from masterzen/tickets/875Sven Gothel2013-10-291-9/+17
|\ | | | | Fix #875 - ES version should be strictly validated
| * Fix #875 - ES version should be strictly validatedBrice Figureau2013-10-291-9/+17
| | | | | | | | | | | | | | | | | | 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 <[email protected]>
* | Bug 776 GLContext Sharing: GLSharedContextSetter API Doc: Add 'glFinish()' ↵Sven Gothel2013-10-301-0/+5
| | | | | | | | to lifecycle considerations ; GearsES2: Add glFinish() after init().