| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
(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)
|
| |
|
| |
|
|
|
|
| |
NSView realization for DummyDrawable
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
| |
a shared Gears* object
|
|
|
|
| |
info-string creation; MacOSXCGLContext: Fix intendation
|
| |
|
| |
|
| |
|
|
|
|
| |
773d96584b4edc13eb6ff689eaf891aab09aa5a4
|
| |
|
|
|
|
| |
readability (140 chars width)
|
|\ |
|
| |
| |
| |
| | |
consistent, adds a method to convert an attribute list into a capabilities object with no check in order to display some information about skipped capabilities objects and fixes a NullPointerException when skipping a capabilities object
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
size panel size
This is a regression due to commit 84f367a73c5b16dcebfd877e82e1c2cb90ae74ce:
GLJPanel Cleanup: Remove initial FBO reshape;
** Propagate reshape only if differs from panel-size; ** <- this one
Use pre-fetched panel-size.
Above commit only issued 'sendReshape'
if the reshape-size differs from the actual panel-size.
Note: The reshape-size is propagated to panel-size either in
[1] initializeBackendImpl(..) or
[2] handleReshape(..) @ paintComponent.
While printing w/ an invisible GLJPanel the reshape-size
has not yet propagated to the panel-size (see above)
and two consecutive reshape calls will cause the last one to be dropped.
With this patch we have:
GLJPanel.addNotify()
GLJPanel.reshape.0 null resize [paint] [ this 0x0, pixelScale 1x1, panel 560x420] -> 0x0 * 1x1 -> 0x0, reshapeSize 0x0
GLJPanel.reshape.0 null resize [paint] [ this 560x420, pixelScale 1x1, panel 560x420] -> 560x420 * 1x1 -> 560x420, reshapeSize 560x420
GLJPanel.setupPrint: scale 1.000000 / 1.000000, samples 0, tileSz -1 x -1
GLJPanel.createAndInitializeBackend.1: [printing] 560x420 @ scale 1x1 -> 560x420 @ scale 1x1
A
|
|/
|
|
| |
regression during print
|
|
|
|
|
|
| |
(GLRendererQuirks.NoPBufferWithAccum): Accum buffer allowed if !usePBuffer; Avoid NPE.
99f91f8b28d42cdf341533736e878056bcae4708
|
|\ |
|
| | |
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
software/hardware attribute of all profiles
GLProfile's mapping code does not consider the following combination:
- GL4 software
- GL3 hardware
and hence maps GL4-software -> [GL2ES2, GL2GL3],
where GL3-hardware -> [GL2ES2, GL2GL3] is desired.
This combination has recently been observed on
Mac OSX 10.9.5, which includes a software GL 4.1 implementation.
However, other systems could be affected as well.
+++
Fix GLProfile.computeProfileImpl(..):
Only use the higher profile, if hardware-accelerated or none of the
lower profiles offers hardware-acceleration!
This extra condition was missing for certain profiles,
e.g. GL4, GL4bc, GL3, GL3bc and GL2.
Conflicts:
make/scripts/tests.sh
|
|
|
|
| |
printGLAD in NewtCanvasAWT.setupPrint()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
if Offscreen-GLAD Realization throws an Exception (Stability)
- GLDrawableFactoryImpl: createOffscreenDrawable(..) and createDummyAutoDrawable(..)
Temporary catch exception during setRealized(true) of newly created GLDrawable,
to unrealize the instance before propagating the exception.
This handling removes a memory leak in case the exception of this method is handled
and application continues to operate, e.g. as in AWTPrintLifecycle.setupPrint().
The underlying drawable gets unrealized, since it's setRealized(boolean)
implementation toggles its realize-state before delegating the realize-operation.
Hence this is functional.
- AWTPrintLifecycle.setupPrint() Stability
Catch exception thrown by factory.createOffscreenAutoDrawable(..)'s setRealize(true)
to continue operation w/ onscreen GLAD.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
628509b39ea7c16210315d191860511d6be4aa69)
FontFactory Remove:
- Font get(final URLConnection conn)
- Font get(final InputStream stream)
FontFactory Add:
- [1] Font get(final InputStream stream, final int streamLen, final boolean closeStream)
- Direct usage of font InputStream w/ determined length,
may instantiate BufferedInputStream in case given stream
doesn't support mark/reset!
- [2] Font get(final InputStream stream, final boolean closeStream)
- Copy font InputStream w/o determined length,
resulting in BufferedInputStream supporting mark/reset!
Security Related:
- Only perform priviledged code on determine InputStream,
_not_ when parsing the font stream itself!
- Hence PrivilegedAction only happens in FontFactory's
InputStream preparation.
Misc:
- Use Uri class
|
|\ |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
546f9b1a03c46b63f8bb18c1b8e2c80a8b66cf7c)
- GLFBODrawable:
- Remove FBOMODE_DEFAULT
- GLRendererQuirks:
- Remove COUNT
- Add getCount() method for future compatibility.
- Animator
- Hide local fields (private or package private)
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Refines commit cef7ba607ad7e8eb1ff2a438d77710a29aa0bda6
- The animator monitor-lock was still hold in the post finally block
issuing flushGLRunnables(), due to intrinsic monitor release (in finally):
- <http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html#jvms-2.11.10>
- <http://stackoverflow.com/questions/10743285/behavior-of-a-synchronized-method-with-try-and-finally>
- Further: AnimatorBase.flushGLRunnables() acquired the lock itself (duh!)
This commit removes the requirement for finally altogether
by simply return a boolean from handleUncaughtException(caughtException),
where false denotes the caller to propagate the exception itself (no handler).
Post synchronized block then issues flushGLRunnables() and
exceptation propagation as required.
AnimatorBase.flushGLRunnables() 'synchronized' modifier is removed.
Further, ThreadDeath is being propagated if caught.
Here the finally block is also removed - redundant.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- GLContextImpl.setRendererQuirks(..) in called in GLContextImpl.setGLFunctionAvailability(..)
- GLContextImpl.setRendererQuirks(..) was called before fixing CTX_IMPL_ACCEL_SOFT
via isCurrentContextHardwareRasterizer().
The latter set CTX_IMPL_ACCEL_SOFT based on known software renderer string within GL_RENDERER.
This lead to incorrect hwAccel assumption and hence wrong setting of GLRendererQuirks:
- NoDoubleBufferedPBuffer (was selected even w/ later CTX_IMPL_ACCEL_SOFT)
- BuggyColorRenderbuffer (was never selected)
- Fix performs GLContextImpl.setRendererQuirks(..) _after_
fixing CTX_IMPL_ACCEL_SOFT via isCurrentContextHardwareRasterizer().
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
rare deadlock with animator-exception and invoke(wait=true, ..)
Fix synchronization issues in GLDrawableHelper.flushGLRunnables():
- Querying 'glRunnables.size()' is not synchronized, only its reference is volatile,
not the instance's own states.
- 'flushGLRunnable()' must operates while acquired the 'glRunnable' lock.
- 'glRunnables' are no more volatile
- introduced volatile 'glRunnableCount', allowing 'display(..)' method
to pre-query whether blocking 'execGLRunnables(..)' must be called.
This is risk (deadlock) free.
Also fixes rare deadlock in animator display-exception / GLAD.invoke(wait=true, ..) case:
- 'GLDrawableHelper.invoke(.., GLRunnable)' acquires the 'glRunnable' lock.
- Then it queries animator state, which is blocking.
- Hence animator's 'flushGLRunnable()' call must happen outside the animator lock
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
'closure'
GLDrawable.invoke(..) regression of commit c77b8f586cb2553582a42f5b90aeee5ef85f1efe:
'wait' was not set to false, if 'deferredHere' was forced to 'false'.
This could lead to the situation where GLRunnableTask
will catch the exception and supresses it.
Animator/FPSAnimator post exception propagation code
animThread = null; notifyAll();
must be complete to finalize animator state in case of an exception.
Decorate 'handleUncaughtException(..)' w/ try { } finally { }
where the latter ensures the mentioned 'closure'.
|
| |
| |
| |
| | |
Only check error if DEBUG || GLContext.DEBUG_GL in GLDrawableHelper.reshape(.., setViewport==true)
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- GLFBODrawableImpl
- cache getMaxRenderbufferSamples() result from initialize call,
method checks glGetError()
- FBObject
- init(..): Remove one redundant checkPreGLError()
- Allow reset(..) / modify-attachment-operations w/o glGetError():
- Only check error if DEBUG || GLContext.DEBUG_GL:
- RenderAttachment.initialize()
- TexureAttachment.initialize()
- syncSamplingSink(gl)
|
| |
| |
| |
| | |
implicit GLProfile.initSingleton() is being tested
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- dual-use reset(..), use dedicated init(..) and reset(..)
- GLFBODrawable.FBOMODE_USE_DEPTH: Use GLCapabilities.[get|set]DepthBits(int)
Note: Applications shall use _requested_ GLCapabilities,
if passing caps down to the GLFBODrawable.
Otherwise (using _chosen_ caps) we may end up in requesting
properties not desired, e.g. stencil bits, if driver has chosen.
|
| |
| |
| |
| | |
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
Conflicts:
src/test/com/jogamp/opengl/test/junit/jogl/acore/TestVersionSemanticsNOUI.java
|
| |
| |
| |
| | |
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(..)
|
| |
| |
| |
| | |
init call
|
| | |
|