| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
avoid remove/add of GL component on Window when moving splitter.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
GLContext/GLDrawable
- Fix Bug 642 TestJSplitPaneMixHwLw01AWT
On Windows platform when mixing hw/lw JSplitPanel,
the GLCanvas is removed and added when splitter is moved.
The lack of robustness (see below) lead to an exception.
Note: Only w/ GLJPanel (no hw/lw mixing) the splitter can be moved
in both direction. Only here it is guaranteed that the GL component
will survive the action.
- Fix AWT-GLCanvas EDT Runnable: swapBuffer().. / display(..)
- Check drawable.isRealized() within the lock on the performing thread.
This is not possible before issuing the EDT Runnable action
since we cannot hold the lock beforehand.
- Robustness GLDrawableImpl
- boolean realized -> volatile boolean realized
- remove 'synchronized' on isRealized() and setRealized(..)
- Use dbl-checked locking on 'realized' test for swapBuffers() and setRealized(..)
- Robustness GLContextImpl
- Catch createImpl(..) exception and properly return CONTEXT_NOT_CURRENT
|
| |
|
|
|
|
| |
GL2ES2.GL_MAX_COLOR_ATTACHMENTS
|
|
|
|
| |
robost while detecting erroneous queried GL version
|
|
|
|
|
|
|
|
|
|
| |
glGetIntegerv(pname=GL_MAX_TEXTURE_IMAGE_UNITS) ; Add unit test / bisect Mesa3D
This bug lies within Mesa3D (any renderer) and is fixed in
commit 8dc79ae7d73cf6711c2182ff9a5d37ef6c989d23.
Mesa3D Version 9.0 still exposes this bug,
where 9.0.1 has it fixed w/ above commit.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
GLDrawableFactory.createOffscreenDrawable(..) for common OffscreenBackend (dropping pbuffer/software); Flip FBO w/ GLSL texture renderer.
- Implementation is GLProfile agnostic
- Shall work on ES2, GL2, .. etc
- Use GLDrawableFactory.createOffscreenDrawable(..) for common OffscreenBackend (dropping pbuffer/software)
- Leave offscreen selection to common factory code, favoring FBO
- Flip FBO w/ GLSL texture renderer
- Faster on low CPU machines
- Enabled if GL2ES2 and FBO offscreen
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
operating w/o it; ShaderState: Remove notion of GL context attachment, use pass-through or object association; GLArrayData/GLUniformData: Add basic GLSL location methods
- GLArrayData/GLUniformData: Add basic GLSL location methods
- GLArrayData
- add: setLocation(..) for attribute location/index retrieval (post link) and binding (pre link)
- GLUniformData
- add: setLocation(..) for attribute location/index retrieval (post link)
- GLArrayData/ImmModeSink: Remove implicit dependency on ShaderState - allow operating w/o it
- GLArrayData
- add: 'public void associate(Object obj, boolean enable)', allows setting ShaderState usage
- ShaderState: Remove notion of GL context attachment, use pass-through or object association
- ownsAttribute(..) associates the attribute w/ ShaderState
- removed GL context ShaderState attachment
Tested:
- ImmModeSink w/ GLSL/ES2 w/ and w/o ShaderState
- GLArrayData* w/ and w/o ShaderState
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
getOffscreenContextReadBuffer(), .. ; Add GLFBODrawable API entries for multi buffering (no impl. yet); GLJPanel 1st simplification using offscreen drawable
- Cleanup GLContext special entries: getOffscreenContextPixelDataType(), getOffscreenContextReadBuffer(), .. ;
- add: getDefaultReadBuffer() (-> exposed via GLBase as well)
- add: isGLOrientationFlippedVertical()
- add: getDefaultPixelDataType()
- removed impl: getOffscreenContextPixelDataType()
- removed impl: getOffscreenContextReadBuffer()
- removed impl: offscreenImageNeedsVerticalFlip()
- Add GLFBODrawable API entries for multi buffering (no impl. yet);
- TODO: Add implementation code in GLFBODrawableImpl
- GLJPanel 1st simplification using FBO
- Use above new GL/GLContext entries
- Fix: getNativeSurface() and getHandle()
- TODO:
- Remove distinction of 'pbuffer' and 'software',
- Use GLDrawableFactory.createOffscreenDrawable(..)
- Use GL for FBO swapping
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
GLCapabilities on X11 (feature complete)
To allow custom GLCapabilities, we had to use native parenting on X11 w/ a new child window.
The desired visualID chosen by the users GLCapabilities is passed to the new child window.
The redraw drops must be caused by the original GDK or the new child GDK window.
Now we use a plain X11 child window similar to NEWT's X11 window and NewtCanvasSWT,
which doesn't expose this bug.
(Note: SWTAccessor/GLCanvas still contains the uncommented GDK code path for further inspection, if desired)
Also added SWTNewtEventFactory to test event handling on the SWT GLCanvas w/ GearsES2.
TestSWTJOGLGLCanvas01GLn tests custom GLCapabilities now.
SWTEDTUtil has been moved to private: com.jogamp.newt.swt -> jogamp.newt.swt.
|
|
|
|
| |
successfull claim; Also fix intendations of block.
|
|
|
|
|
|
|
|
|
|
| |
remove just introduced setVisible(false) and adapt to setEDTUtil() changes. ; Enhance Bug 643 unit test: Also test NEWT EDT and pre-visible GLWindow.
- SWT GLCanvas/NewtCanvasSWT: Check isVisible() @ validation
- NewtCanvasSWT remove just introduced setVisible(false) and adapt to setEDTUtil() changes
- Enhance Bug 643 unit test: Also test NEWT EDT and pre-visible GLWindow.
|
|
|
|
| |
Simplify DefaultEDTUtil impl. and fix concurrency leak w/ 'shouldStop'
|
|
|
|
|
|
|
|
|
|
|
|
| |
executed on Windows
Turns out that the NEWT Windows impl. didn't properly validated the client region @ WM_PAINT
and hence 'exhausted' the message pipeline, i.e. never reached an IDLE state.
The latter caused SWT to never reach a point where deferred asyncExec(..) Runnables
got processed.
Besides this SWT effect, this also caused a NEWT window on Windows to always repaint itself (?).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
waitForVisible(.., fastFail:=false); waitForSize(..) @ setSize; reparent definePosition(..);
- surfaceLockCount-- if native lock fails
In case native lock fails, not only remove the windowLock but also decr. surfaceLockCount (proper roll back) - was a BUG!
- waitForVisible(.., fastFail:=false)
Don't fail fast if visibility wasn't reached.
- waitForSize(..) @ setSize
Wait for size change - otherwise an SWT child won't reach desired size.
- reparent definePosition(..);
Position might not get updated by WM events (SWT parent apparently)
- Windows WindowDriver: Cleanup code a bit.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
defineSize(..); Don't set persitent undecorated flag if child window at creation; Use local 'screen' directly.
- Don't issue native resize if invisible, simply use defineSize(..)
Invisible windows may not promote size change natively,
hence simply setting the size via defineSize(..) is appropriate.
Latter setVisible(true) will take size into account.
- Don't set persitent undecorated flag if child window at creation
Even if a window is a child at creation, it maybe reparented to top-level
where the default behavior is to be expected.
Undecorated top-level window shall require explicit setUndecorated(true).
- Use local 'screen' directly.
No need to make code more complicate ..
|
|
|
|
| |
i.e. SWTEDTUtil set and parented; Recognize pending resize.
|
|
|
|
|
|
| |
even if on EDT thread.
DEBUG: Name EDTUtil impl, e.g. Default, AWT and SWT
|
|
|
|
|
|
|
|
|
|
|
| |
NewtCanvasSWT asyncExec(..) bug w/ native parenting
The unit test shows, that while using JOGL's SWT GLCanvas Display's asyncExec(..) works properly,
but w/ NewtCanvasSWT on Windows does not.
NewtCanvasSWT differs w/:
- Using native parenting [Newt GLWindow to SWT Canvas]
- Processing native events in own NEWT EDT, w/ own Windows dispatch hook [For the child GLWindow only]
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
DisposeListener; Run GL tasks on current thread w/o restrictions
Fix dispose bug, check for isDisposed() and add DisposeListener
- Don't issue SWTAccessor.setRealized(..), since it's called implicit via super.dispose()
- Check isDisposed() ..
- add DisposeListener to act on parent's disposal (Shell, Composition, ..)
Run GL tasks on current thread w/o restrictions
+ * The current thread seems to be valid for all platforms,
+ * since no SWT lifecycle tasks are being performed w/ this call.
+ * Only GL task, which are independent from the SWT threading model.
|
| |
|
| |
|
|
|
|
| |
'sendReshape' for onscreen drawables as well.
|
|
|
|
|
|
|
|
|
| |
from Java ensuring to overwrite other TKs handler
SWT sets it's error handler, which exits application in case of an X11 error (e.g. n/a GL3 impl.).
We need to allow overwriting it, hence allowing multiple calls (NEWT, GLContext).
This patch also makes native NativewindowCommon_x11ErrorHandlerEnable(..) function static.
|
|
|
|
|
|
|
|
|
|
| |
TestNewtCanvasSWTBug628ResizeDeadlock
- Fix deadlock situation in waitUntilStopped/Idle(), skip if on AWT/SWT EDT
- Use RunnableTask for sync task invocation, don't block AWT/SWT EDT.
- Cleanup TestNewtCanvasSWTBug628ResizeDeadlock (works on OSX as well)
|
|
|
|
| |
PrivilegedAction for static initSingleton block (SWTAccessor, NewtFactory, NativeWindowFactory)
|
|
|
|
|
|
| |
wrap task execution (or enqueing) into status-sync 'edtLock'
This fixes the disparity w/ DefaultEDTUtil, i.e. aligns it's implementation/semantics.
|
| |
|
|
|
|
|
|
| |
possible triggered locking action, i.e. display(). Do the same for AWTEDTUtil.
This fix actually clarifies the annotated FIXME :)
|
|
|
|
|
|
|
| |
rounds of multi-threaded display.
If a NEWT Window locking operation is performed from within NEWT's EDT (native event dispatch)
and a mutable SWT operation performed via NEWT's display invoke - a deadlock occurs.
|
|\
| |
| |
| |
| |
| | |
Fix Bug : Quaternion multiplication unexpected behavior
Matches description in Bug 631
https://jogamp.org/bugzilla/show_bug.cgi?id=636
|
| | |
|
|/
|
|
|
|
|
|
|
|
| |
caps/pixelformat w/ chosen GLProfile only
Using a pixelformat w/ chosen stencil for CALayer does corrupt rendering for an unknown reason,
probably due to incompatible pixelformat w/ CALayer composition.
This patch simply discards any special chosen caps, while only recognizing the desired GLProfile
for the FBO CALayer pixelformat.
|
| |
|
|
|
|
|
|
|
|
|
| |
references
Clarify method names:
- update(..) -> updateByPMV(..), updateByPlanes(..)
- isOutside(AABBox) -> isAABBoxOutside(AABBox)
- .. same for point/sphere, while adding 'Location classifyType(..)'
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Frustum: Cleanup / update
- Remove ctor w/ PMV, use update(..) instead - avoid API explosion
- Add update(Plane[]) to copy existing Frustum planes
- Mention world-coordinates in update(PMV)
PMVMatrix: Fix mulPMV
- P*Mv in column major order is correct for Frustum
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the original paper
Paper:
Fast Extraction of Viewing Frustum Planes from the World-View-Projection Matrix
http://graphics.cs.ucf.edu/cap4720/fall2008/plane_extraction.pdf
Authors (in alphabetical order):
Gil Gribb <[email protected]>
Klaus Hartmann <[email protected]>
06/15/2001
Fix:
- Column Major Order PMV (Passing to Frustum and in calculation itself) according to paper coeff. calculation of plane
- Plane's signed distance function (only add d, don't multiply)
- Normalization: divide by lenght, not multiply
|
| |
|
| |
|
|
|
|
| |
non-hardware-accelerated capabilities are requested, because only updateGraphicsConfigurationGDI provides software rendering capabilities.
|
| |
|
|
|
|
| |
/ check size() > 0, since List can be modified by listener itself
|
|
|
|
|
|
|
|
|
| |
methodology as for Mvi and Mvit
Allows user to derive Frustum from updated P + MV
Clarify method name for clearing all update request:
- disableMviMvitUpdate() -> clearAllUpdateRequests()
|
|
|
|
| |
Don't store passing PMV reference. isInside() -> isOutside()
|