| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
(X11 error on nvidia); reenable GLJPanel test
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This solves the issue when an applet is started/stop and started again,
or another applet runs in the same JVM.
Also soves the issue for multiple JVMs.
RegisteredClassFactory can be instanced to manage one shared window class,
currently in use for GDI's dummy window and NEWT.
A class base name and a window proc handle must be passed in the factory cstr.
Before registering, the class is tested if already exists,
eg another applet in the same JVM.
If registration fails, the class name will iterate until successful or MAX_INT reached,
eg if multiple JVMs are running.
Added NativeWindow Common Native Code.
|
|
|
|
|
| |
It seems necessary to use off thread shared resources (dummy window, drawable and context)
to keep them alive in Java Webstart.
|
|
|
|
| |
redundant, since it's static DC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- AWT/WGL:
- Using sun.awt.Win32GraphicsConfig via reflection, if supported, else we may fail.
- Preselection of PFD as follows:
- 1st choice is to create our own AWT GraphicsConfig (GC) based on PFD/GLCaps,
ignoring WGL_SUPPORT_GDI_ARB, PFD_SUPPORT_GDI
- 2nd choice is to use AWT PFD pool of GC's
- else we fail -> use NewtCanvasAWT instead (TODO: Other JDK/AWT implementations ?)
- Set PFD will be performed at setRealized(..)
- SharedContext (X11/WGL) is synchronized to allow multithreaded access, if required
- Simplified and unified (X11/WGL) GraphicsConfigurationFactory
- WGL 'external' drawables will be determined with given arguments right away
|
|
|
|
|
|
|
|
|
| |
key for cached table, since
the GLX/WGL/etc function entry pointers are GL profile agnostic.
Hence createContextARBImpl(..) (WGL/GLX) does not need a sharedContext,
but just can issue the inexpensive updateGLXProcAddressTable(..) call.
|
|
|
|
| |
release HDC
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
WindowsWGLGraphicsConfiguration:
If updateGraphicsConfigurationARB fails, continue with updateGraphicsConfigurationGDI
WindowsDummyWGLDrawable:
Utilize proper GraphicsConfiguration selection using updateGraphicsConfiguration()
|
|
|
|
| |
to all GLEventListeners at destroy()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Finish API change using the AbstractGraphicsDevice, which denotes the target device
for the desired NativeSurface / GLDrawable.
The AbstractGraphicsDevice argument may be null to reflect the platform's default device.
Clarified API documentation.
This move is necessary to make the API coherent.
- createOffscreenDrawable(..) may create a Pbuffer drawable if caps and supported.
This unifies the functionality with createGLDrawable(..).
Further more, a Pbuffer drawable is an offscreen as well.
- added createOffscreenSurface(..) following the same behavior as createOffscreenDrawable(..),
this is a convenient native offscreen surface factory entry.
- removed createGLPbufferDrawable(..), use createOffscreenDrawable(..),
since it is redundant!
Implementation Details:
- EGLDrawableFactory holds a shared native EGLGraphicsDevice,
being used by the offscreen EGL drawable (no more multiple creation).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Read Drawable feature reflects the make context current API
having a seperate read drawable next to the write drawable (default).
glXMakeContextCurrent(write, read, ..)
On X11 a ready drawable is only supported for GLX >= 1.3,
on Windows only if extension WGL_ARB_make_current_read is available,
on EGL it's always supported, on OSX not at all.
API cleanup GLContext:
changes: setGLDrawableRead(GLDrawable) -> setGLReadDrawable(GLDrawable)
new: isGLReadDrawableAvailable()
new: getGLExtensionsString();
Access qualifier cleanup.
GLContextImpl: GLVersionNumber moved out.
|
| |
|
| |
|
| |
|
|
|
|
| |
SUCCESS
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
429, 428 and 405
Fixes bugs WGL pixelformat related bugs:
http://jogamp.org/bugzilla/show_bug.cgi?id=397
http://jogamp.org/bugzilla/show_bug.cgi?id=410
http://jogamp.org/bugzilla/show_bug.cgi?id=429
http://jogamp.org/bugzilla/show_bug.cgi?id=428
http://jogamp.org/bugzilla/show_bug.cgi?id=405
Tested on Window7-x86 (amd/nvidia), WinXP-x32-VirtualBox.
Solution:
Cleaned up X11/GLX code to use it as a correct boilerplate
for the new WGL selection, which now duplicates the same behavior.
X11/GLX and WGL follow the common logic:
- 1st try:
- get GLCapabilities based on users GLCapabilities
- setting recommendedIndex as preferred choice
- 2nd try:
- get all GLCapabilities available
- no preferred recommendedIndex available
If no recommendedIndex has been selected and no chooser has been passed,
we use the DefaultGLCapabilitiesChooser.
Choose the GLCapabilities if a chooser is given (or see above).
|
|
|
|
| |
class HINSTANCE is acquired at static initialization
|
|
|
|
| |
cause a SIGSEGV at JVM exit.
|
|
|
|
| |
SIGSEGV on AMD
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Consider use cases with many drawables and no drawables at start,
this had to be reflected all over this patch set, implementation,
usage and test cases.
- GLAnimatorControl
- refine API doc / states
- add 'void remove(GLAutoDrawable drawable);'
- Animator*:
- using RecursiveLock 'stateSync' for all actions out of the big synchronized (animator) block:
- get status methods (thread, isPaused, ..), hence no more synchronized
- display drawables change, utilizing synced ArrayList swap
This removes the need for volatiles usage shouldPause/shouldStop within the display method.
- added blocking wait for state change for add(GLAutoDrawable)/remove(GLAutoDrawable) method
- remove flawed double checked locking in anim thread (pause/idle condition)
- thread is now a daemon thread, hence it won't hinder the JVM from shutdown
-
- Animator use change:
- Always resume after pause, except in case of final destroy -> NEWT invalidate / GLCanvas,
this considers use cases with many drawables and no drawables at start.
- GLDrawableHelper: Don't pause at implicit dispose()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
for Canvas. ; Adding FSAA test.
Canvas/X11:
The Canvas GraphicsConfiguraton should be chosen before the native peer is being created.
Choosing AWT GraphicsConfiguration (all platforms):
Don't filter our capabilities with 'AWTGraphicsConfiguration.setupCapabilitiesRGBABits(capsChosen, gc)',
not necessary (see above) and it would remove ourrequired alpha channel.
Canvas display():
Don't render if drawable is not realized (yet).
|
| |
|
| |
|
|\ |
|
| |
| |
| |
| | |
and getChosenCapabilities() return immutable instances. Add cloneCapabilities() to create a mutable clone of an immutable set of capabilities.
|
|/
|
|
| |
NEWT WindowsWindow GetRelativeLocation() native implementation to GDI as well.
|
|
|
|
| |
not available ..
|
|
|
|
|
|
|
|
|
|
| |
Preparation to support multiple devices on one machine,
hence adding the unitID a unique ID/index of the associated GPU, or GPU affinity.
Adding getUniqueID() to return a cached semantic unique string id for the device.
This was removed from the temp. impl in JOGL's GLContext, added unitID.
All other changes just adapt to the above.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
device.
AbstractGraphicsDevice's 'connection' and 'type' attribute is used as a unique key
to map GLProfiles and GLContext's major/profile -> major/minor/profile mapping.
Eager initialiaztion as well as lazy is supported to maintain a simple API.
This is currently tested on X11, where one app display NEWT/GL window and content
on the local and remote device.
See TestRemoteWindow01NEWT.java and TestRemoteGLWindows01NEWT.java
|
| |
|
|
|
|
| |
Add threadName to DEBUG output
|
| |
|
|
|
|
|
|
|
|
|
|
| |
support multi devices & displays.
Currently only the X11 Display connection is implemented to support multiple device connections.
Other platforms may follow.
This allows correct mapping and caching of higher level resources,
eg. ProcAddressTable, GL version mapping etc with respect to the display device.
|
|
|
|
| |
won't exit
|
|
|
|
|
|
|
|
|
|
| |
fail-fast hash cache, ..
Relates to GlueGen 6b6b9b3b81cdc85b7260664ebec547756a6be5d7, branch sgothel_wip_fixes01.
Memory object size is ptrdiff_t, hence long (64bit).
The hash value must include size as well, otherwise boundaries cannot be verified. (security)
Double check hash collisions while adding a new MemoryObject.
|
| |
|
|
|
|
| |
makeCurrentImpl/releaseImpl with X11 Error Handle
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fix context scanning
---------------------
Ie on 3.0 NVidia systems, trying to create a 4.1 context leads
to a BadAlloc X11 error.
A prev patch disabled the X11 error handler, to reduce sideeffects.
In case AWT is not being used, the BadAlloc isn't catched and the JVM freezes
within the native function call.
Decorating context scanning with NativeWindow's 'setX11ErrorHandler' solves this issue.
Simplifications
-----------------
X11: always try a direct context. If this is not possible due to the display connection,
an indirect is being used anyways. Hence 'createContext(boolean direct)' -> 'createImpl()'.
X11/WGL: Simplify the context creation logic a bit.
|
|
|
|
|
|
| |
'setGLFunctionAvailability' call while scanning all available context.
.. also reorder context scanning from low -> high
|
|
|
|
| |
.. and a little cleanup in the X11 SharedResourceRunner
|
|
|
|
|
|
|
|
|
|
| |
DEBUG strings w/ thread name
nativewindow.TraceLock -> nativewindow.debug.ToolkitLock.TraceLock
Sync Xmisc (DummyWindow) with NEWT's creation
test scripts: awt and non-awt usage
|
|
|
|
|
|
|
| |
Reduce (performance/footprint) overhead of ProcAddressTable recreation,
instead use a hashmap (major, minor, profile) -> ProcAddressTable.
Remove GL2ES12 implementation profile, redundant.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
X11Util:
Removed TLS semantics, since TLS name -> dpy mapping is erroneous at this point.
Added lists for open connections (for optional later shutdown).
AbstractGraphicsDevice interface and implementations:
Adding 'close()' method allowing native implementations the ability
to close the native resource, ie X11GraphicsDevice.
This becomes necessary for 'on the fly' created X11 Display connections,
ie in X11AWTGLXGraphicsConfigurationFactory, which enables closing.
Utilize 'close' call in use cases: GLCanvas, GLJPanel and AWTCanvas.
Remove active X11 Display creation in X11JAWTWindow,
as a last resort, use the X11SunJDKReflection method.
Used for reference only, not active rendering etc,
mostly for on the fly AWT parenting in NewtFactoryAWT.
However, these 'on the fly' references are erroneous and should be remodelled,
ie passice and active X11GraphicsDevice's ..
|
|
|
|
|
| |
Each GLDrawableFactory implementation provides a shutdownInstance() method,
issued by GLProfile.
|