| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
exceptions. Handles also XAWT BadMatch X_SetInputFocus.
X11ErrorHandler code now dumps proper information about the opcode and error message and the running Java thread.
Having propery "nativewindow.debug.X11Util.XErrorStackDump" or "nativewindow.debug=all' set,
a stack trace is dumped.
Since the X11ErrorHandler may catch an XAWT error: BadMatch X_SetInputFocus,
we cannot throw an exception and better keep running.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(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
|
|
|
|
|
|
|
| |
- Gears w/ 640x480 size and proper aspect ratio frustum
- query type of drawable.getNativeSurface() instead of auto-drawable itself
- RedSquareES2 allow setting no-rotation and aspect-ratio for frustum
- TestInitConcurrentNEWT: Don't use vsync
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It works now as follows:
Note: Remote connection tested using ssh to localhost or an actual remote
machine.
Test w/ proper X11 authentication, i.e. DISPLAY and xauth:
> cd projects/JOGL/jogl-bugs/597-headless/
> echo $DISPLAY
localhost:10.0
> xclock
'works'
T1.1 OK> java plop
jogamp.opengl.x11.glx.X11GLXDrawableFactory@f581593
T1.2 OK> java -Djava.awt.headless=true plop
jogamp.opengl.x11.glx.X11GLXDrawableFactory@6f34a7d8
+++
Test _without_ proper X11 authentication, i.e. DISPLAY and xauth:
> xclock
No protocol specified
No protocol specified
Error: Can't open display: :0.0
T2.1 OK> java plop
No protocol specified
No protocol specified
Exception in thread "main" java.lang.InternalError: Can't connect to X11 window
server using ':0.0' as the value of the DISPLAY variable.
(Stack trace from:
GLProfile.initProfilesForDefaultDevices(..) ->
NativeWindowFactory.initSingleton(..) ->
JAWTUtil.<clinit>->
sun.awt.X11.XToolkit.<clinit> ->
sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
T2.2 OK> java -Djava.awt.headless=true plop
No protocol specified
No protocol specified
...
jogamp.opengl.x11.glx.X11GLXDrawableFactory@394a8cd1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
setSwapInterval() deadlock; Reuse JAWT instance; Cleanup
- Fixes
- OSXUtil.CreateCALayer*(..): Pass layer target size (if known).
This fixes Bug #589
- MacOSXWindowSystemInterface-pbuffer.m:
- ALL: displayLink NULL check
- setSwapInterval(..): lock only for variable setting,
could deadlock when start/stop CVDisplayLink
- JAWTWindow.destroy(): use 'surfaceLock' instead of 'synchronized'
- Cleanup / Performance
- JAWTWindow.lockSurface(): Reuse JAWT instance
- MacOSXJAWTWindow: AttachJAWTSurfaceLayer0(..) -> SetJAWTRootSurfaceLayer0(..)
Reflects semantic better.
- DEBUG
- JAWTWindow.updateBounds(..) notify of bounds change
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
JAWTUtil.getJAWT(..):
- better local var names
- one time init
- add DEBUG trace
JAWTUtil.<init>:
- add offscreenLayer info
MacOSXWindowSystemInterface-pbuffer.m:
- remove warning: access of protected vars from outside class
- better local var names
- more DEBUG info (pbuffer texture)
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
| |
- This policy allows more simple destruction handling w/o validating on the top level.
- Hence 'unlockSurface()' shall not throw any exception.
- 'lockSurface()' keeps unchanges, clarified w/ explicit 'throws' declaration,
ie will fail-fast.
|
| |
|
|
|
|
| |
onscreen/offscreen-layer resize test.
|
|
|
|
| |
instance's volatile 'feature'
|
|
|
|
|
|
|
|
| |
bc7503c77892a9e14b10e8b8e9ce48b148c6fa4c).
NEWT GLWindow multithreading fix:
- Add required locking of display(), otherwise a drawable/context destruction of another threads
could lead to [still] use asynced data.
|
|
|
|
| |
1a91ec5c8b6fd9d9db7bc115569c369fe7b38e9b) ; AWT GLCanvas remove dead code.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
locking ; Revise threading code; Proper name for SWT unit tests.
SWT GLCanvas:
- Fix destroy()
drawable.setRealized(false); is being called within dispose() method
- Remove local concurrency hack
[MT-0] The hack: 'final GLContext ctx = getContext(); a = null != ctx ? ctx.something() : 0;'
is thread safe locally, however, w/o covering the hole use case of the caller
it makes no sense to add thread safe code here - would be only an illusion.
In case any of the methods are called outside of a locked state
extra care should be added. Maybe we shall expose locking facilities to the user.
However, since the user shall stick to the GLEventListener model while utilizing
GLAutoDrawable implementations, she is safe due to the implicit locked state.
- Removing out-of-process locking
[MT-1] Claiming the recursive lock in the dispose/display/.. methods
and _then_ issuing a complex off-thread GL task could lead to deadlock.
The GL task could involve calling GLEventListener methods, which itself
could try to manipulate the GLCanvas -> deadlock.
Similar to [MT-0] we may need to either find a proper locking mechanism
or simply ignore it and reduce functionality.
TBH .. the number of scenarious of the mentioned deadlock are very limited
and exotic.
- Revise threading code
[MT-2] Besides the other MT-* remarks, the logic whether to spawn off
the GL task and determination which thread to use is too complex and redundant.
(See isRenderThread(), runInGLThread() and runInDesignatedGLThread())
- Proper name for SWT unit tests.
Reflect the semantics.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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,
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
834b9e530e652b7ff7c5e222720bce3ad2b11c5f
- adapt to GlueGen Lock cleanup
- remove isSurfaceLocked(), use 'null != getSurfaceLockOwner()' instead
Misc:
- remove unused priv./impl. methods
- add @Override
|
|
|
|
|
|
| |
the windowLock. Avoiding deadlock when cmds issued from within locked code path.
This allows e.g. GLEventListener::display(..) { .. glWindow.setSize(100, 100); .. }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Derivation
- Depends on GlueGen commit 9a71703904ebfec343fb2c7266343d37a2e4c3db
JAR file name changes:
ALL JARs:
- jogl.all.jar -> jogl-all.jar
- jogl.all-noawt.jar -> jogl-all-noawt.jar
- jogl.all-mobile.jar -> jogl-all-mobile.jar
- jogl.all-android.jar -> jogl-all-android.jar
- jogl.all-android.apk -> jogl-all-android.apk
Atomic JARs:
- nativewindow.core.jar -> nativewindow-core.jar
- nativewindow.awt.jar -> nativewindow-awt.jar
- nativewindow.os.x11.jar -> nativewindow-os-x11.jar
- nativewindow.os.win.jar -> nativewindow-os-win.jar
- nativewindow.os.macosx.jar -> nativewindow-os-osx.jar
- jogl.core.jar -> jogl-core.jar
- jogl.sdk.jar -> jogl-sdk.jar
- jogl.glmobile.jar -> jogl-glmobile.jar
- jogl.glmobile.dbg.jar -> jogl-glmobile-dbg.jar
- jogl.util.jar -> jogl-util.jar
- jogl.glutess.jar -> jogl-glutess.jar
- jogl.glumipmap.jar -> jogl-glumipmap.jar
- jogl.util.fixedfuncemu.jar -> jogl-util-fixedfuncemu.jar
- jogl.awt.jar -> jogl-awt.jar
- jogl.swt.jar -> jogl-swt.jar
- jogl.util.awt.jar -> jogl-util-awt.jar
- jogl.os.x11.jar -> jogl-os-x11.jar
- jogl.os.win.jar -> jogl-os-win.jar
- jogl.os.osx.jar -> jogl-os-osx.jar
- jogl.os.android.jar -> jogl-os-android.jar
- jogl.gldesktop.jar -> jogl-gldesktop.jar
- jogl.gldesktop.dbg.jar -> jogl-gldesktop-dbg.jar
- jogl.glugldesktop.jar -> jogl-glu-gldesktop.jar
- jogl.util.gldesktop.jar -> jogl-util-gldesktop.jar
- jogl.omx.jar -> jogl-omx.jar
- jogl.cg.jar -> jogl-cg.jar
- newt.core.jar -> newt-core.jar
- newt.ogl.jar -> newt-ogl.jar
- newt.awt.jar -> newt-awt.jar
- newt.event.jar -> newt-event.jar
- newt.driver.x11.jar -> newt-driver-x11.jar
- newt.driver.win.jar -> newt-driver-win.jar
- newt.driver.macosx.jar -> newt-driver-osx.jar
- newt.driver.android.jar -> newt-driver-android.jar
- newt.driver.kd.jar -> newt-driver-kd.jar
- newt.driver.intelgdl.jar -> newt-driver-intelgdl.jar
- newt.driver.broadcomegl.jar -> newt-driver-broadcomegl.jar
Test JARs:
- jogl.test.jar -> jogl-test.jar
- jogl.test-android.jar -> jogl-test-android.jar
- jogl.test-android.apk -> jogl-test-android.apk
|
| |
|
|
|
|
|
|
| |
directory instead of tempdir, so they get archived (CI/jenkins).
Multisample/TestGLReadBufferUtilTextureIOWrite01NEWT: Add offscreen test
|
|
|
|
| |
'List<? extends CapabilitiesImmutable> l'
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Android implementation.
Note: Currently only w/ Android implementation.
Note: On Android there is no way to reliably be notified of the current keyboard state.
It would be best, if your code does not rely on this information
Window adds:
- setKeyboardVisible(boolean)
- isKeyboardVisible() // unreliable on Android
|
|
|
|
| |
channel (Luminance) read/write
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(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()
|
|
|
|
| |
'launcher'
|
|
|
|
| |
'com.jogamp.opengl.test.junit.jogl.util.texture'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
GL_ARB_half_float_pixel/GL_ARB_half_float_vertex and GL_OES_texture_half_float extensions
We mistakenly aliase the GL2 and GLES2 extensions:
- GL_ARB_half_float_pixel
- GL_HALF_FLOAT_ARB 0x140B
- GL_ARB_half_float_vertex
- GL_HALF_FLOAT 0x140B
- GL_OES_texture_half_float extensions
- GL_HALF_FLOAT_OES 0x8D61
This also leads to adding GL_HALF_FLOAT_OES
to com.jogamp.opengl.util.GLBuffers.sizeof(..).
|
|
|
|
| |
(IOUtil.createTempFile(..) change)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
specific classes for non Android platforms.
Adapt to GlueGen commits: b3c9951006f9bd863244f1db3d54ac7866d66f0a, 86c1df6fdca183454ff544857f4236b646c4730d
Ensure same Java JAR content regardless of build target (fix).
Separate Android compilation results: jogl.all-android.jar and jogl.test-android.jar
avoiding generating different content w/ non android builds.
Adding ${android.abi} to APK target name (jogl.all-android.apk -> jogl.all-android-armeabi-v7a.apk)
if not generic.
|
|
|
|
| |
w/o GLEventListener
|
|
|
|
| |
allowing custom pixelformat caps.
|
| |
|
|
|
|
| |
.. also adding missing (c) of other graph unit test.
|
| |
|
| |
|
|
|
|
|
| |
Font::getAdvancedWidth(..) allows applications to query a glyphs width
with a given pixel size, as it is being used for rendering.
|
| |
|
| |
|
|
|
|
| |
AWTTree deadlock
|
|
|
|
|
|
|
|
| |
Throw ClassNotFoundException in Display/Screen/Window factory if neither custom
nor default class is available.
Suppress Warning of non existing custom class (in non DEBUG mode),
rely on later ClassNotFoundException (see above).
|