aboutsummaryrefslogtreecommitdiffstats
path: root/src/jogl/classes/jogamp
Commit message (Collapse)AuthorAgeFilesLines
* EGLGraphicsDevice adds desctruction callback and nativeDisplayID; ↵Sven Gothel2012-07-094-93/+133
| | | | | | | | | | | EGLDisplayUtil adds creation of EGLGraphicsDevice. Due to EGL's location in JOGL, supporting destruction of an EGLGraphicsDevice is solved (hack) temporary by passing an eglTerminate callback to it's ctor. Using EGLGraphicsDevice's close() method to also issue eglTerminate() simplifies the code. In future we shall move EGL to nativewindow!
* Enhance Bootsrapping of JOGL around 37% - 40% (1st start in new JVM) - ↵Sven Gothel2012-07-062-22/+88
| | | | | | | | | | | | | | | | | | | | | | | | GLProfile and GLContext* GLProfile: Enhance bootsrapping performance of loading GL*Impl class - Offthread classloading of all GL*Impl via reflection at startup reduces startup time here around 12% (800ms down to 700ms). GLContext*: Enhance bootsrapping performance of querying available GL profiles - Add PROFILE_ALIASING mode, defaults to true - can be disabled w/ property 'jogl.debug.GLContext.NoProfileAliasing' - PROFILE_ALIASING: If true (default), bootstrapping the available GL profiles will use the highest compatible GL context for each profile, hence skipping querying lower profiles if a compatible higher one is found. Linux x86_64 - Nvidia: 28%, 700ms down to 500ms Linux x86_64 - AMD : 40%, 1500ms down to 900ms - GL*Impl: - make fields final: glProfile, _context, buffer*Tracker and glStateTracker - allow null _context/glProfile in initialization (bootstrapping) - JoglVersion.getDefaultOpenGLInfo(..) - add arg: 'boolean withCapabilitiesInfo', allowing to suppres the list of caps
* GLContext adds FBO availability to profile mapping; Fix ↵Sven Gothel2012-07-053-39/+70
| | | | | | | | | | | | | | | | GL[Auto]Drawable/GLContext re-association (switch) incl. unit test. - GLContext adds FBO availability to profile mapping - GLContext added 'GLDrawable setGLDrawable(GLDrawable readWrite, boolean setWriteOnly)' allowing to set the write GLDrawable. This method enables switching context/drawable. Fix GL[Auto]Drawable/GLContext re-association (switch) incl. unit test Commit eed8508ae1132e5f45f788e9cb3f3d5a1050ac70 impl. of GLAutoDrawable's setContext(..) enabled proper setting of the GLAutoDrawable context incl. updating the context's drawables. Test covers: - remove/set (GLContext, GLEventListener) of GL[Auto]Drawable - switch (GLContext, GLEventListener) of 2 GLAutoDrawables
* GLAutoDrawable* refinement of abstraction / generalization - API Change!Sven Gothel2012-07-0418-130/+269
| | | | | | | | | | | | | | | | | | | | | | | | - GLAutoDrawable (compat change - recompile): - 'void invoke(boolean wait, GLRunnable glRunnable)' -> 'boolean invoke(boolean wait, GLRunnable glRunnable)' Allows notifying caller whether the task has been executed or at least enqueued. - GLAutoDrawable add 'GLEventListener removeGLEventListener(int index)' - This allow one to remove a specific GLEventListener and reusing it (return value). - GLDrawableImpl remove 'destroy()' to favor 'setRealized(false)' - Using more common code of GLAutoDrawableBase, i.e. GLPbufferImpl can use defaultDestroyOp(). - Removes redundancy of methods - GLAutoDrawableBase/Delegate - better 'default' names to emphasize it's purpose, adding API doc - includes more generic functionality - defaultWindowDestroyNotify() - defaultDestroyOp() - TestGLAutoDrawableDelegateNEWT demonstrates a simple example w/ all window events handled. - Fix TestParenting01cSwingAWT's threading use (gl disturbance thread)
* GLAutoDrawable: Refine API doc; Use new abstract impl. GLAutoDrawableBase ↵Sven Gothel2012-07-023-233/+389
| | | | | | | | | | | | | | | (GLWindow, ..); Add new GLAutoDrawableDelegate. - Refine API doc - 'void setContext(GLContext)' -> 'GLContext setContext(GLContext)' - Add note to createContext(GLContext) override -Use new abstract impl. GLAutoDrawableBase, used by: - GLWindow - GLAutoDrawableDelegate - GLPbufferImpl - Add new GLAutoDrawableDelegate incl. unit test
* GLContextImpl/GLDrawableImpl: More fail-safe, cleanup, mark some methods finalSven Gothel2012-06-293-19/+25
| | | | | | | | | | | GLContextImpl: Cleanup - release(): simplify the conditions - destroy(): allow locked twice before (destroy case) GLDrawableImpl: - fail safe: swapBuffers - final methods: getFactoryImpl, toHexString, getGLProfile, getRequestedGLCapabilities, getFactory, isRealized, lockSurface, unlockSurface
* Minor cleanupSven Gothel2012-06-292-12/+14
|
* GLContext* TRACE_SWITCH: Add GLContext instance hash value to allow tracking.Sven Gothel2012-06-281-11/+13
|
* GLDrawable* cleanup: Add @Override, remove trailing whitespace, ..Sven Gothel2012-06-2818-224/+401
|
* Capabilities cleanup: make most get*() final, impl. Comparable to ↵Sven Gothel2012-06-273-19/+28
| | | | | | | | | | | | | | | | CapabilitiesImmutable, Misc .. - Comparable<CapabilitiesImmutable> to CapabilitiesImmutable: "interface CapabilitiesImmutable extends VisualIDHolder, WriteCloneable" -> "interface CapabilitiesImmutable extends VisualIDHolder, WriteCloneable, Comparable<CapabilitiesImmutable>" - CapabilitiesImmutable and GLCapabilitiesImmutable get-methods final (most) - GLCapabilitiesImmutable.compareTo: add doubleBuffered (between stereo and samples) Misc: - Add @Override - remove trailing whitespace,
* Misc cleanup: Add @Override, remove trailing whitespaceSven Gothel2012-06-2717-356/+494
|
* Misc cleanup: Add @Override, remove trailing whitespaceSven Gothel2012-06-2722-238/+329
|
* NativeSurface Cleanup (API Change) - Adapt to GlueGen Lock cleanup commit: ↵Sven Gothel2012-06-273-11/+3
| | | | | | | | | | | | 834b9e530e652b7ff7c5e222720bce3ad2b11c5f - adapt to GlueGen Lock cleanup - remove isSurfaceLocked(), use 'null != getSurfaceLockOwner()' instead Misc: - remove unused priv./impl. methods - add @Override
* JOGL CapabilitiesChooser-API and impl.: Cleanup using generics: 'List l' -> ↵Sven Gothel2012-06-218-36/+37
| | | | 'List<? extends CapabilitiesImmutable> l'
* Texture Unit Tests: AWT/NEWT GL2/ES2 PNGJ/AWT-PNG-Loading and Rendering ↵Sven Gothel2012-06-181-1/+1
| | | | | | | | | | | | | | (TestPNGTextureFromFile[AWT/NEWT]) Properly test combinations of TextureIO usage w/ - NEWT / AWT usage - GL2 / ES2 usage - PNG implementations: PNGJ (internal) and AWT - adding screenshots of result for later analysis Misc: - IOUtil.getResource(..) usage CLASS.class.getClassLoader() -> this.getClass().getClassLoader()
* Adapt to GlueGen commit 1468286bf569a493e4fdb887d5f3732f88c8cec3 ↵Sven Gothel2012-06-161-1/+1
| | | | (IOUtil.createTempFile(..) change)
* Java Source Files: dos -> unix formatSven Gothel2012-05-154-434/+434
|
* graph/font: Add "public float getAdvanceWidth(int i, float pixelSize);"Sven Gothel2012-05-152-1/+6
| | | | | Font::getAdvancedWidth(..) allows applications to query a glyphs width with a given pixel size, as it is being used for rendering.
* Graph/Glyph: Clarify public Font.Glyph and private FontInt.GlyphIntSven Gothel2012-05-153-11/+7
|
* GLContext.destroy() error case: Lock hold > 1 - More explicit error message.Sven Gothel2012-05-141-2/+2
|
* GLContext*: Remove '[set/is]Synchronized(..)' - Defaults to wait for locks: ↵Sven Gothel2012-05-135-74/+49
| | | | | | | | | | | | | | | | | | | | | | | | 1. Drawable, 2. GLContext Remove deadlock situation where thread-1 (Animator Thread) holds the GLContext-Lock and acquires the Surface-Lock, while thread-2 (UI/Main/EDT) holds the Surface-Lock and attempts to create the GLContext and hence acquires the GLContext-Lock. A GLContext-Lock and hence makeing the GLContext current requires to hold the Surface-Lock. The prev. code acquired the locks in reverse order and allowed the deadlock as described above. This fix acquires the locks in the proper natural order 1 - Surface-Lock 2 - GLContext-Lock This fix also renders the use of the non-synchronized behavior invalid, since it is bogus not to wait for the GLContext lock where it waits for the Surface lock. It also seems nonsense not to wait for any of both locks and our code always waited for both (synchronized := true). The GLContext [set/is]Synchronized(..) methods are removed and waiting for the lock per default is the correct behavior.
* Fix regression of commit de2b129a56335262a44a05541a3ab2e35668cc6e: ↵Sven Gothel2012-05-111-5/+5
| | | | | | | | | | | | | | | ProjectFloat Matrix Multiplication of gluUnProject(..) impl. ProjectFloat's previous gluMultMatricesf(..) used row-major order, but the replacement multMatrixf(..) uses column-major order (like OpenGL, ..). Note: The replaced 'gluMultMatrixVecf' by multMatrixVecf() already used column-major order. Fix: Reverse the arguments of matrix multiplication m1 x m2 -> m2 x m1 Added proper API documentation in FloatUtil -> Column Major Order of Linear Matrix Layout
* GLProfile/EGLDrawableFactory: Detect ANGLE (Windows D3D ES2 Emulation) and ↵Sven Gothel2012-05-011-16/+42
| | | | | | | | | | | | | disable support per default. We have to disable support for ANGLE, the D3D ES2 emulation on Windows provided w/ Firefox and Chrome. When run in the mentioned browsers, the eglInitialize(..) implementation crashes. This behavior can be overridden by explicitly enabling ANGLE on Windows by setting the property 'jogl.enable.ANGLE'. EGLDrawableFactory: - destroy(): clear references and unregister factory, maybe triggered by GLProfile (ANGLE case) - getAvailableCapabilitiesImpl(): return empty list in case EGL/ES is n/a (ANGLE case)
* EGLGraphicsConfigurationFactory: Add 'unregisterFactory()' static entry ↵Sven Gothel2012-05-011-1/+16
| | | | allowing to remove EGL/ES based factory
* Completing swap-interval implementation for OSX's CALayer usage. Closing Bug 555Sven Gothel2012-04-221-13/+12
| | | | | | | | | | | | - Based on Andres Colubri's initiative and commit 218d67fc0222d7709b21c45792d44501351939c4. - Reading real screen refresh rate ('stolen' from NEWT) - Properly handling swap-interval and vsync-to in native code - Increasing accuracy vsync-to to microseconds Tested manually w/ TestGearsES2AWT.
* Recognize swap-interval in NSOpenGLLayer modeAndres Colubri2012-04-221-2/+12
|
* FFMPEGDynamicLibraryBundleInfo: Adding notes ..Sven Gothel2012-04-211-0/+5
|
* FFMPEGMediaPlayer: Fix NPE; Add remarks about binary incompatibility in ↵Sven Gothel2012-04-211-1/+9
| | | | | | | | | | | upcoming version (master branch) We need native structure access methods to deal with API changes in the libav headers, which break binary compatibility! Currently we are binary compatible w/ [0.6 ?, ] 0.7 and 0.8 but not w/ trunk. Tested: Linux, Windows and OSX (self compiled binary)
* FFmpeg Dyn. Symbol Validation: Proper check for alternative symbols where ↵Sven Gothel2012-04-211-25/+63
| | | | one of a set must be available.
* GLMediaPlayer: Add Class / Package API doc incl. detailed info in the ↵Sven Gothel2012-04-184-5/+88
| | | | implementations.
* TextureSequence Shader Support; GLMediaPlayer uses 'int' where possible; ↵Sven Gothel2012-04-165-175/+339
| | | | | | | | | | | | | General enhancments. For details about TextureSequence/GLMediaPlayer shader collaboration w/ your own shader source, see TextureSequence and TexCubeES2 / MovieSimple demo. TextureSequence allows implementations to provide their own texture lookup function which may provide color space conversion (YUV) .. or other runtime hw-accel features. Have a look at the next commit, which provides an Libav/FFMpeg implementation w/ YUV/RGB shader conversion. MovieCube adds keyboard control (Android: firm touch on display to launch keyboard, don't break it though :)
* Add native tests for libav/ffmpeg and gstSven Gothel2012-04-162-0/+722
|
* API Change ShaderCode/ShaderUtil: Enable optional mutable shader source / ↵Sven Gothel2012-04-163-16/+16
| | | | | | | | | | | | | | | | | | | | | | generalize shader source storage type to CharSequence[] Benefits: - Allows code injection and general shader source editing (before compilation) - Uses mutable StringBuilder only if editing is intended, hence reduces memory footprint and String conversion at compilation in such case. - ShaderCode.create(..) factory methods add nw attribute 'mutableStringBuilder' if true method returns a mutable StringBuilder instance which can be edited later on at the costs of a String conversion when passing to 'glShaderSource(int, int, String[], IntBuffer)'. If <code>false</code> method returns an immutable <code>String</code> instance, which can be passed to {@link GL2ES2#glShaderSource(int, int, String[], IntBuffer)} at no additional costs. - New 'edit' methods in ShaderCode: ' - int insertShaderSource(int shaderIdx, String tag, int fromIndex, CharSequence data); - int insertShaderSource(int shaderIdx, int position, CharSequence data);
* StringBuffer -> StringBuilder (Local objects, no concurrency) ; Impacts: ↵Sven Gothel2012-04-1644-73/+72
| | | | Capabilities/GLContext API 'toString(StringBuilder)'
* Reloc OMXGLMediaPlayer jogamp.opengl.omx -> jogamp.opengl.util.av.implSven Gothel2012-04-121-5/+1
|
* Refine API docSven Gothel2012-04-111-1/+0
|
* Refine GLMediaPlayer/TextureSequence, add MovieCube demo, fix minor bug in ↵Sven Gothel2012-04-115-81/+78
| | | | | | | | | | | | | | | | | | | | Texture - Add TextureSequence, base interface of GLMediaPlayer to genralize texture streams - TextureSequence / GLMediaPlayer: Use inner classes for event and texture data - getLastTexture() shall never return 'null', initialization of TextureSequence (initGLStream(..), etc) shall provide a TextureFrame w/ the stream's dimension. - GLMediaPlayerImpl.createTexImageImpl() y-flip defaults to 'false' impl. shall define y-flip, if required. - Added MovieCube demo - Fix Texture: initialize aspectRation for 'wrapping' ctor -
* GLArrayData: Fix 'growBuffer()' / clarify 'initialSize' -> 'initialElementCount'Sven Gothel2012-04-112-11/+11
| | | | | - growBuffer() was using '(osize+additional) * components' -> 'osize + (additional * components )' - added jogl.debug.GLArrayData - notifying growBuffer()
* Move com.jogamp.opengl.av -> com.jogamp.opengl.util.av (it's in the util ↵Sven Gothel2012-04-113-0/+0
| | | | atomic JAR and not core)
* Move ProjectFloat back to private, exposing basic math in FloatUtilSven Gothel2012-04-091-0/+940
| | | | | | | | - Partially reverting commit de2b129a56335262a44a05541a3ab2e35668cc6e - ProjectFloat and FloatUtil must reside in core, not util - Moved slice2float -> GlueGen's Buffers
* GLMediaPlayer*: Revised - Working on buggy MediaPlayer impl. (Android ICS Tegra)Sven Gothel2012-04-095-157/+178
| | | | | | | | | | | | | GLMediaPlayer: Merging 'initStream()' and 'initGL()' to 'initGLStream()' due to incompatible/buggy implementations (Android/Tegra) requiring the GL texture being setup before preparing the stream. This also implies that w/o an GL context we cannot fetch the stream information (size, ..) hence we need to evaluate this detail (FIXME). 'getNextTexture(GL gl, boolean blocking)' can request the impl. to block GLMediaEventListener: The TextureFrame not yet available, adding 'when'
* GLMediaPlayer: Fix destruction (NPE) / Fix MovieSimple shader, no ↵Sven Gothel2012-04-071-3/+5
| | | | GL_OES_EGL_image_external for plain ES2.
* Merge PNGJ 0.85 into namespaceSven Gothel2012-04-0744-0/+4525
| | | | | | | | | | | | | | | | | PNGJ Version 0.85 (1 April 2012) Apache 2.0 License http://code.google.com/p/pngj/ Merged code: - Changed namespace ar.com.hjg.pngj -> jogamp.opengl.util.pngj to avoid collision when using a different version of PNGJ. - Removed test and lossy packages and helper classes to reduce footprint. License information is added in main LICENSE.txt file.
* NullGLMediaPlayer: Use low-res PNG instead of TGA texture to save footprint. ↵Sven Gothel2012-04-071-3/+14
| | | | Move texture to jogl jar/apk for accessibility.
* GLMediaPlayer: Add (c) tag; Add NullGLMediaPlayer (dummy texture);Sven Gothel2012-04-064-3/+249
| | | | | - Factory falls back to NullGLMediaPlayer allowing to test on platforms where no player is available. - MovieSimple (c) to JogAmp since it is no more derived from the old project.
* GLMediaPlayer: Use URLConnection to clarify emphasize passing an available ↵Sven Gothel2012-04-053-33/+17
| | | | connected URL. API doc: Useing html table for state chart
* GLMediaPlayer/MovieSimple: Refine API (split setStream(GL, URL) -> ↵Sven Gothel2012-04-033-118/+118
| | | | | | | | | initStream(URL) + initGL(GL)) .. IllegalStateException if wrong. Using internet streams of BigBuckBunny, if avail. - Splitting the initialization in stream and GL allows using the stream information (eg: size, ..) for setting the GLDrawable properties .. - Make the impl. more bullet proof ..
* GLMediaPlayer: API and implementation update. First working version on ↵Sven Gothel2012-04-033-146/+242
| | | | | | | | | | | | | | Android API 14 - Introduce states - Customize / Access texture target,count,features. - Expose TextureFrame. - Use 'long' for all time values in msec. - Mark information optional in API doc (fps, bps, ..)
* GLContext: Don't enable TRACE_SWITCH if DEBUG is enabled.Sven Gothel2012-04-031-2/+2
|
* EGLConfig2Capabilities: Add flag 'forceTransparentFlag' allowing to pass ↵Sven Gothel2012-04-034-22/+25
| | | | | | | through transparency flag from higher API The above is necessary to reflect transparency in chosen Capabilities from a higher level API (native windowing) in case the EGL impl. does not (buggy). This is currently true for Android.