| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
Conflicts:
make/scripts/tests-win.bat
|
|
|
|
| |
(OpenIndiana has issues); Min delay 4s before next setScreenMode(..)
|
|
|
|
| |
calcVirtualScreenOriginAndSize(..) method (duplicate pixel unit)
|
|
|
|
| |
compiled/linked upfront AWT migration, since it takes a long time on Mesa/AMD
|
|
|
|
| |
tessellation failed to compile/link (on unsupported platforms)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
Conflicts:
src/jogl/classes/com/jogamp/opengl/GLRendererQuirks.java
|
|
|
|
| |
a shared Gears* object
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Preserve fields, but make them deprecated and don't use them anymore.
Using a new version with less visibility.
- Revert incompatible method prototype changes
- GLFBODrawable:
- Completly remove FBOMODE_DEFAULT and FBOMODE_USE_DEPTH usage
and deprecate them
- GLRendererQuirks:
- Completly remove COUNT usage and deprecate it.
- Add getCount() method for future compatibility.
|
|
|
|
| |
GLFBODrawable.FBOMODE_DEFAULT
|
|
|
|
| |
testing (offscreen, ..); Clean up GL2 Gears and Teapot state enable/disable
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Fix depth- and stencil bit count selection for attachRenderbuffer(..)
- Add generic values: DEFAULT_BITS, REQUESTED_BITS, CHOSEN_BITS, MAXIMUM_BITS
- Refactor depth- and stencil bit-count -> format into own method
- Allow depth- and stencil bit-count select a higher bit-count if required (fix)
- GLFBODrawable.FBOMODE_USE_DEPTH is deprecated, using GLCapabilities.[get|set]DepthBits(..)
- It was an oversight to introduce the bit flag in the first place,
since we should have used the capabilities depth bit-count
- Graph Test: GLEventListenerButton shall use requested capabilities for FBO drawable.
|
|
|
|
|
|
|
|
|
|
|
|
| |
exclusions)
Enable tests:
- V220->V221
- V221->V222 (w/ 2 extra exclusions)
- GLRendererQuirks COUNT has been increased (-> use a method, FIXME)
- Animator pauseIssued is volatile now
|
|
|
|
| |
GLEventListener.reshape(..)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
resetSamplingSink(..) if required; Fix resetSamplingSink(..), isBound(), ..
- Simplify API (init/reset)
- use new unique methods for init and reset:
- void init(final GL gl, final int newWidth, final int newHeight, final int newSamples)
- does not issue resetSamplingSink(..)
- boolean reset(final GL gl, final int newWidth, final int newHeight, final int newSamples)
- always issues resetSamplingSink(..)
- deprecated dual-use (init/reset):
- boolean reset(final GL gl, final int newWidth, final int newHeight)
- boolean reset(final GL gl, int newWidth, int newHeight, int newSamples, final boolean resetSamplingSink)
- reset(..) no more creates a dummy 'samplingSink' instance if sampling > 0,
left up to resetSamplingSink(..)
- Track 'modified' state of FBObject,
if size, format or any attachment has been changed since last
- use(..)
- syncSamplingSink(..)
- resetSamplingSink(..)
- Only issue resetSamplingSink(..) from syncSamplingSink(..)/use(..)
if 'modified == true'
+++
- Fix setSamplingSink(..), i.e. samplingSink state handling:
- Validated whether given samplingSink is initialized,
throws Exception if not.
- Fix resetSamplingSink(..)
- resets the bound state, i.e. leaves it untouched
- also unbinds the samplingSink
- sampleSinkDepthStencilMismatch() also returns true if
this.depth/stencil == null, but samplingSink is not.
- Newly created colorbuffer/-texture matches
exiting colorbuffer's internal-format, if exists.
- Using simplified resetSizeImpl(..) for size mismatch
- Simplified samplingColorSink init check
- Fix isBound()
was: 'bound = bound && fbName != gl.getBoundFramebuffer(GL.GL_FRAMEBUFFER)'
fix: 'bound = bound && fbName == gl.getBoundFramebuffer(GL.GL_FRAMEBUFFER)'
- Fix detachRenderbuffer(..) validates whether detachment was successful,
similar to detachColorbuffer(..)
Conflicts:
src/jogl/classes/com/jogamp/opengl/FBObject.java
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Offscreen's GLCapabilitiesImmutable reconfiguration will dispose a realized instance
and issues recreation via initializeBackendImpl() immedietly.
Implementation performs operation on AWT-EDT.
Tests:
- TestGearsES2GLJPanelAWT:
- Toggle MSAA via 'm'
- TestGearsGLJPanelAWT:
- Toggle MSAA via 'm'
- Toggle Bitmap via 'b'
|
|
|
|
| |
default Z values, allow Z customization (StereoDemo01)
|
|
|
|
| |
initialized
|
|
|
|
|
|
|
|
|
|
|
| |
c78ceb642d0ef5bb5bf27ff8ff1495175ee2e983
Commit c78ceb642d0ef5bb5bf27ff8ff1495175ee2e983 changed:
- public static final String GL4 = "GL4";
+ public static final String GL4 = "GL4".intern();
which is identified by semver as incompatible,
due to Bug 1059 (no more inlining of interned string references).
|
|
|
|
|
| |
- Add GL4.GL_TESS_CONTROL_SHADER and GL4.GL_TESS_EVALUATION_SHADER support for GLSL util class ShaderCode
- Add unit test TestTessellationShader01GL4NEWT, testing TessellationShader01aGL4 and TessellationShader01bGL4
|
|
|
|
|
|
|
| |
OSX/[Java7-Java8]
- Using our PNGJ writer results in proper images (RGB and RGBA) on all platforms
- Seems to be a bug w/ AWT/ImageIO
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
working
Enhance following performance test cases, adding NewtCanvasAWT,
beside GLCanvas and GLJPanel, 25 instances:
com.jogamp.opengl.test.junit.jogl.perf.TestPerf001GLJPanelInit01AWT
com.jogamp.opengl.test.junit.jogl.perf.TestPerf001GLJPanelInit02AWT
Adding simple com.jogamp.opengl.test.junit.newt.TestMultipleNewtCanvasAWT
w/ two instances.
Manually tested on GNU/Linux and OSX (java7 and java8).
|
|
|
|
|
|
|
|
| |
implementation - Part 2/2
- TestGLProfile01NEWT: Allow ctx.isGLES3Compatible() and hence GL4ES3 on GL3bc and GL3
- GLProfile: Remove GL4ES3 mapping using GL3bc and GL3, only GL4bc, GL4 and GLES3 are allowed in static mapping.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
implementation - Part 1/2
Test enhancements triggering issue 'Bug 1052 - OpenGL ES 3.0 Mesa 10.1.3 Caught GLException: Not a GL4ES3 implementation'
- TestGLProfile01NEWT: Complete GLProfile and GL-object and GLContext validation
- On OpenGL ES 3.0 Mesa 10.1.4 it produces:
1) test06GLProfileGL4ES3(com.jogamp.opengl.test.junit.jogl.acore.TestGLProfile01NEWT)
javax.media.opengl.GLException: GL4ES3 is neither GL4bc, GL4 nor GLES3
at com.jogamp.opengl.test.junit.jogl.acore.TestGLProfile01NEWT.validateGLProfileGL4ES3(TestGLProfile01NEWT.java:531)
at com.jogamp.opengl.test.junit.jogl.acore.TestGLProfile01NEWT.validateOffline(TestGLProfile01NEWT.java:708)
at com.jogamp.opengl.test.junit.jogl.acore.TestGLProfile01NEWT.test06GLProfileGL4ES3(TestGLProfile01NEWT.java:948)
i.e. wrong mapping of request GL4ES3 -> GL3
|
| |
|
| |
|
|
|
|
|
|
| |
read-pixels (non-MSAA and MSAA) Bugs: 841, 975 and 1020
.. add Platform and GL info !
|
|
|
|
| |
read-pixels (non-MSAA and MSAA) Bugs: 841, 975 and 1020
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
fashion ; Don't use arbitrary shared context as 'master'.
GLContext* passes the shared-master to GLContextShareSet,
which only creates a sets of shared contexts
without differentiating the master context.
GLContext*'s shared-slave attempts to lock
the realized shared-master's surface at creation.
Currently only an arbitrary shared context is selected
due to the missing 'master' identity.
The arbitrary shared context's surface is locked
and its shared context handle used to create the slave context.
Lacking of using the user given shared-master
can lead to deadlock situations - and locking a 'wrong' surface.
+++
The patch:
- Allows query the user given shared-master!
- Use the user given shared-master for locking and it's
context handle for the slave's creation.
- The shared-context mapping maps each shared-master
to a shared-slave within one shared-context-set,
allowing deterministic and individual shared-master queries.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
movie playback and OSX usage (HiDPI surfaceSize)
- StereoDevice.DeviceType: Add API doc
- StereoDevice: Add getFactory()
- GenericStereoDevice
- Use common static vars for configurations for simplicity
- Fix createRenderer(..)'s eyeViewport in case no post-processing
is performed, i.e. needs viewport X offset.
- StereoDemo01
- Use 'movie' eyePosition instead of default if:
- using a movie player _and_ using lenses!
- Fix NEWT window pixel-unit size after window creation!
|
|
|
|
| |
GLAnimatorControl.UncaughtExceptionHandler
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
GLAutoDrawable processing [part-3]
Add GLAnimatorControl.UncaughtGLAnimatorExceptionHandler interface to optionally handle
uncaught exception within an animator thread by the user.
Implementation also requires to flush all enqueued GLRunnable instances
via GLAutoDrawable.invoked(..) in case such exception occurs.
Hence 'GLAutoDrawable.flushGLRunnables()' has been added.
Only subsequent exceptions, which cannot be thrown are dumped to System.stderr.
+++
Handling of exceptions during dispose()
Exception in NEWT's disposeGL*() are also caught and re-thrown after
the NEWT window has been destroyed in WindowImpl.destroyAction:
- GLEventListener.dispose(..)
- GLDrawableHelper.disposeAllGLEventListener(..)
- GLDrawableHelper.disposeGL(..)
- GLAutoDrawableBase.destroyImplInLock(..)
- GLWindow.GLLifecycleHook.destroyActionInLock(..)
- WindowImpl.destroyAction on NEWT-EDT
- WindowImpl.destroy
Further more, exceptions occuring in native windowing toolkit triggered destroy()
are ignored:
- GLAutoDrawableBase.defaultWindowDestroyNotifyOp(..)
It has to be seen whether such exception handling for
dispose() shall be added to AWT/SWT.
+++
TestGLException01NEWT covers all GLEventListener exception cases
on-thread and off-thread (via animator).
+++
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
GLAutoDrawable processing [part-1]
Implements Specification as described on 'Bug 1039 Comment 1'
<https://jogamp.org/bugzilla/show_bug.cgi?id=1039#c1>
TODO:
- Offthread exception handler
++++
GLDrawableHelper is used in all GLAutoDrawable implementations
and for most operations.
GLAutoDrawable/GLDrawableHelper invoke(..) method:
- invoke(..) forwards a caught exception
- if blocking, it forwards an exception
happening within the passed GLRunnable(s).
Here the exception is caught, printed
and then thrown by invoke itself.
- if non-blocking, an exception
happening within the passed GLRunnable(s)
will be thrown in the thread issuing it's execution,
i.e. display() call.
Here the exception is not caught and simply thrown
by the GLRunnable.
GLAutoDrawable.destroy() -> GLDrawableHelper.disposeGL(..) method:
- disposeAllGLEventListener() being invoked by disposeGL(..),
catches exception thrown by GLEventListener.dispose(..)
and prints them to stderr.
The first caught exception is re-thrown at the end as an GLException.
- disposeGL() catches re-thrown GLException by disposeAllGLEventListener()
for GLEventListener.dispose(..)
and re-throws it when operation is complete.
- disposeGL() catches an exception thrown at context destruction or release
and re-throws it when operation is complete.
An early exception at context.makeCurrent() is _not_ caught,
since it is the first operation which simply shall unwind the stack.
GLAutoDrawable.display() -> GLDrawableHelper.invokeGLImpl(..) method:
- invokeGLImpl(..) for display() follows disposeGL() mechanism, i.e.
it catches exception thrown at
GLEventListener's init(..), reshape(..) and display(..) methods
and re-throws it when operation is complete.
It also catches an exception thrown at context release
and re-throws it when operation is complete.
An early exception at context.makeCurrent() is _not_ caught,
since it is the first operation which simply shall unwind the stack.
++++
None of the above thrown exception shall be caught and suppressed
on the caller side.
If an operation must be completed while an exception is caught,
it shall be cached and re-thrown after the operations.
In case multiple exception at multiple places are caught within
an operation, they all shall be cached and the first one
shall be re-thrown.
In case of multiple exception from the same place,
i.e. a loop through all GLEventListener,
the first shall be cached and re-thrown after operation is completed.
It has to be determined, whether we like to dump the exceptions,
especially the ones who get suppressed in case of multiple exceptions.
|
|
|
|
| |
GLDrawableUtil.swapGLContextAndAllGLEventListener is safe: Add Accumulator Buffer bits
|
|
|
|
| |
on GL capable thread if required. Add API doc note about this requirement.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
GLDrawableUtil.swapGLContextAndAllGLEventListener is safe (Doesn't work w/ pre MSAA onscreen drawable)
GLDrawableUtil.isSwapGLContextSafe(..) allows user to query whether 'we think' it's safe
to utilize swapping of GLContext between GLAutoDrawable instances.
Currently known unsafe cases are:
- between on- and offscreen and one of the following:
- MSAA involved, or
- STEREO involved
Enhanced unit tests in this regard:
- TestGLContextDrawableSwitch02AWT
- using GLContextDrawableSwitchBase0
- TestGLContextDrawableSwitch02NEWT
- using GLContextDrawableSwitchBase0
Utilized safe query for setupPrint(..) action in:
- AWT GLCanvas
- AWT GLJPanel
- NewtCanvasAWT
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
'ARB_create_context'
Commit e5a55ede324ce500f50991d56491758803063a58 was incomplete,
i.e. it lacked the required mappings for the non ARB profile, i.e.:
GL4bc -> GL3bc, etc.
These profile mappings have been added now.
+++
Further more, GLContext's profile queries, isGL*()
test the ctxOptions for CTX_IS_ARB_CREATED.
This has to be removed to properly work w/ Skip 'ARB_create_context'.
To remove the risk of inconcistency, i.e. context created via ARB and non-ARB,
the 'GLX/WGL profile >= GL3 via non ARB' validation removed
in commit e5a55ede324ce500f50991d56491758803063a58 has been brought back
and refined. Note:
if( glp.isGL3() && createContextARBTried ) {
// We shall not allow context creation >= GL3 w/ non ARB methods if ARB is used,
// otherwise context of similar profile but different creation method may not be share-able.
.. THROW EXCEPTON ..
}
This limited validation removes the possibility of such having a context
of same profile, one created via ARB and one without.
Hence also validates the isGL*() change, where the CTX_IS_ARB_CREATED criteria is removed.
+++
Note regarding commit 7314b47ae1e42997e9e6974b84709640f0ac2a1b (revert):
While analyzing the mapping, it turns out that commit c8b99d197769eaec53c2def562c0ef3fc0e6a9d2
"Don't map compatibility profiles to core profile if the latter are not available (restrict profile aliasing)"
is not fully consistent with GLProfile's and GLContext's profile queries, i.e. isGL*().
We may reiterate over this change .. but have it be reverted for now.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Commit 5166d6a6b617ccb15c40fcb8d4eac2800527aa7b added a workaround for
NVidia's Windows Driver Threaded optimization bug
existing in NVidia driver 260.99 for Window from 2010-12-11.
Commit 007f120cd8d33e4231ef4d207b85ed156d1e0c82
fixed the workaround and made it optional, default: turned off!
Rational of turning the workaround off was due to testing
against the original test-case 'Applet and Webstart'
with drivers >= 266.58 from 2011-01-24,
which did not reproduce this issue.
However, our unit tests reproduced the issue,
e.g. test: com.jogamp.opengl.test.junit.jogl.caps.TestTranslucencyNEWT
Hence we have to re-enable the workaround per default.
Added the following documentation of the issue:
+++
Since NV driver 260.99 from 2010-12-11 a 'Threaded optimization' feature has been introduced.
The driver spawns off a dedicated thread to off-load certain OpenGL tasks from the calling thread
to perform them async and off-thread.
If 'Threaded optimization' is manually enabled 'on', the driver may crash with JOGL's consistent
multi-threaded usage - this is a driver bug.
If 'Threaded optimization' is manually disabled 'off', the driver always works correctly.
'Threaded optimization' default setting is 'auto' and the driver may crash without this workaround.
If setting the process affinity to '1' (1st CPU) while initialization and launching
the SharedResourceRunner, the driver does not crash anymore in 'auto' mode.
This might be either because the driver does not enable 'Threaded optimization'
or because the driver's worker thread is bound to the same CPU.
Property integer value <code>jogl.debug.windows.cpu_affinity_mode</code>:
0 - none (no affinity, may cause driver crash with 'Threaded optimization' = ['auto', 'on'])
1 - process affinity (default, workaround for driver crash for 'Threaded optimization' = 'auto', still crashes if set to 'on')
+++
Note: WindowsThreadAffinity does _not_ work.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
for a Colorbuffer, also make DEPTH optional.
API Change
+++
In certain cases a TextureAttachment for the FBO's color buffer
is not desired, either for performance reasons where texture functionality
is not required or to avoid texture restrictions like size, etc.
+++
GLFBODrawable shall use TextureAttachment for the FBO's color buffer
and a DEPTH buffer per default.
However, the user shall be allowed to use a plain ColorAttachment (renderbuffer)
and also no DEPTH buffer.
+++
FBObject Details:
- Colorbuffer interface exposes Attachment details
like format, size, etc as well as it's implementation
specifics, isTextureAttachment() and getTextureAttachment() allowing a clean cast and type query.
- Allow ColorAttachment to be used for non MSAA
- Make TextureAttachment optional for method 'use(GL, TextureAttachment)'
- Only validate size against MAX_TEXTURESIZE if using a TextureAttachment
- API Change:
- rename: getColorAttachmentCount() -> getColorbufferCount()
- add: getTextureAttachmentCount()
- change 'TextureAttachment getSamplingSink()' -> 'Colorbuffer getSamplingSink()'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
display/screen of a NativeSurface
Currently GLDrawableFactoryImpl's gamma settings are performed
only on the main screen.
Allow passing a NativeSurface, so it's display/screen
gamma values will be changed.
Further, promote low-level gamma settings to GLDrawableFactory
for direct usage.
Change com.jogamp.opengl.util.Gamma to use a GLDrawable
instead of a GL object to clarify that we use the drawable.
Also add a GLAutoDrawable variant, allowing proper locking
of its 'upstream-lock' to guarantee atomicity.
+++
Tested manually w/ TestGearsES2NEWT on X11 and Windows
using the 'g' and 'G' to modify gamma.
Value is properly reset on exit.
|
|
|
|
| |
'setSharedAutoDrawable(sharedAutoDrawable)' where possible; Fix/Refine API doc.
|
| |
|