| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
'List<? extends CapabilitiesImmutable> l'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(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()
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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)
|
|
|
|
| |
allowing to remove EGL/ES based factory
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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)
|
|
|
|
| |
one of a set must be available.
|
|
|
|
| |
implementations.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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 :)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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);
|
|
|
|
| |
Capabilities/GLContext API 'toString(StringBuilder)'
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
-
|
|
|
|
| |
atomic JAR and not core)
|
|
|
|
|
|
|
|
| |
- Partially reverting commit de2b129a56335262a44a05541a3ab2e35668cc6e
- ProjectFloat and FloatUtil must reside in core, not util
- Moved slice2float -> GlueGen's Buffers
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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'
|
|
|
|
| |
GL_OES_EGL_image_external for plain ES2.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
Move texture to jogl jar/apk for accessibility.
|
|
|
|
|
| |
- 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.
|
|
|
|
| |
connected URL. API doc: Useing html table for state chart
|
|
|
|
|
|
|
|
|
| |
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 ..
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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, ..)
|
| |
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
| |
Android API 14 MediaPlayer impl of GLMediaPlayer.
Android API 14 MediaPlayer allows usage of OMX AL direct decode to texture via libstagefright (OMX AL usage included).
Status: Untested, not working - Need to fix native OMX IL (stream detect and split) and/or GStreamer implementation.
|
|
|
|
| |
instancing using sliced nio-buffer/primitive-array
|
| |
|
|
|
|
|
|
|
|
|
| |
Reusing the native EGLConfig handle of another EGLDisplay is invalid,
hence the EGLCapabilities cfg-handle value shall be 'refreshed'
using the immutable cfg-id and the new EGLDisplay.
Also fix EGLError value in createSurface() exception
and don't override EGLCapabilities transparency value for a given EGLConfig ID.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Threading*:
- add invoke(..) generalizing the Therading decision
GLCanvas:
- remove 'manual' Threading decision, simply call Threading.invoke(..)
- use anonymous Runnable instances
- remove drawable lock, drawable is volatile instead
GLJPanel:
- remove 'manual' Threading decision, simply call Threading.invoke(..)
- use anonymous Runnable instances
- DEBUG: Use getThreadName() prefix
GLContextImpl:
- Remove GLWorkerThread idle command on makeCurrent(),
no holding of context in worker thread while idle.
- DEBUG: Use getThreadName() prefix
X11GLXContext:
- DEBUG: Use getThreadName() prefix
TODO: Validate whether it's OK for GLCanvas and GLJPanel to set Threading.Mode.MT as the default mode!
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Tolerate a buggy ARB createContext impl (always failing to create a context).
Now we only reset the GLContext state and
set the context/device availability flag if ARB create context actually was successful.
Otherwise the fallback 'old' context is being used w/o having it's context state cleared
and context/device availability is set later on.
This makes the general use of ARB_create_context more stable.
+++
Minor changes:
- Non compatibility fallback: Try forward context instead.
- Limit ARB context 'seeking' to >= OpenGL 2.0
|
|
|
|
| |
to add thread-name info; GLWorkerThread: Use ArrayList and generics.
|
|
|
|
| |
singlethreading if requested, fix doc: -Dopengl.1thread -> -Djogl.1thread
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
X11/Mesa 8.0.1 offers a GL 3.0 context w/o
having the GLX_ARB_create_context extension available
(even though the func-ptr glXCreateContextAttribsARB is not null).
We assumed that if no GLContext device availability is set,
it can be only GL 2.0 or ES1/ES2.
Fix: Relaxed these (false) constrains and map the created context
reflecting using it's actual attributes.
|
|
|
|
| |
or a stack trace may be helpful.
|
|
|
|
| |
f4ac27e177f6deb444280d3b375e7d343e38bd080 and eedb4b530fb83fc59a26962bcf7847a1404092a0
|
|
|
|
|
|
| |
and desktop (undefined).
*GLContext.setSwapIntervalImpl: Simple return success, set state in GLContext.
|
|
|
|
|
|
|
|
|
|
| |
4.0.3, Pandaboard ES, PowerVR SGX 540 Bug
GLContextImpl: Expose GL_RENDERER for impl.
- This allows reusing the 'early' string.
EGLContext workaround Android 4.0.3, Pandaboard ES, PowerVR SGX 540 Bug
- On mentioned platform, the app crashes when eglSwapInterval() has been called.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
proper utilization.
- VisualIDHolder: Update documentation (Exception case, etc)
- NativeVisualID -> VisualIDHolder (public)
- incl. generic Comparator
- better doc and enum values
- VID_UNDEFINED == 0
- methods shall not throw exception, but return UNDEFINED
- CapabilitiesImmutable extends VisualIDHolder
- All Capabilties impl.
- use VID_UNDEFINED for undef. value
- use final private (immutable) fields
- AbstractGraphicsConfiguration extends VisualIDHolder
- X11 CreateDummyWindow takes (int) visualID
|
|
|
|
| |
(javax.media.nativewindow.<impl> -> com.jogamp.nativewindow.<impl>) 2/3
|