| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- New FBObject implementation handling FBO and it's attachments *** API CHANGE: Util -> Core ***
while it's size and sample-count can be reconfigured on the fly.
- com.jogamp.opengl.util.FBObject -> com.jogamp.opengl.FBObject
- agnostic to texture unit
- separate attachments using OO hierarchy reflecting FBO
- handling MSAA and blitting
- no FBO destruction for reconfig (attach/detach)
- New GLFBODrawableImpl impl. an FBObject based GLDrawable
- Instantiated by a dummy native surface (onscreen and invisible)
hooked up to a dummy GLDrawable, which is the delegation for context creation.
- Utilizies ProxySurface.UpstreamSurfaceHook for dummy surface
avoiding specialization for native platforms.
- TODO: Allow to utilize common surface interface as a
dummy-surface to supporting API seperation of
windowing/GL. The latter allows impl. of createGLDrawable(NativeSurface)
with FBO.
- New OffscreenAutoDrawable (extends GLAutoDrawableDelegate)
for all offscreen drawables. Shall replace GLPbuffer.
- New GLCapabilities*.isFBO() / setFBO(boolean) to request FBO offscreen,
similar to isPBuffer(). Rule: if both are requested, FBO shall be favored.
- GLContext adds raw FBO availability query (min. FBO avail),
FBObject contains fine grained queries (TODO: Move parts to GLContext for efficiency).
- Add framebuffer tracking, allowing fast querying:
- GLBase/GLContext:
public int getBoundFramebuffer(int target);
public int getDefaultDrawFramebuffer();
public int getDefaultReadFramebuffer();
- GLContextImpl
public final void setBoundFramebuffer(int target, int framebufferName)
.. called by GL impl bind framebuffer
- GL: getDefaultDrawFramebuffer(), getDefaultReadFramebuffer()
Adding default framebuffer queries being issued by
GL.glBindFramebuffer(target, 0) w/ a default framebuffer, o.e. zero.
This allows a transparent use of a custom FBO even in case the applications
attempts to reset FBO to zero.
Value flow: GL <- GLContext <- GLDrawable,
- GLCapabilities handle fbo/pbuffer seperate, don't disable the other
- GLContext/GL track read/write framebuffer to be queried by FBObject
to determine whether to bind/unbind a framebuffer
- Test cases for multiple FBO w/ and w/o MSAA
Other Features:
- New interface ProxySurface.UpstreamSurfaceHook,
allowing to hook an upstream surface of unknown type
providing lifecycle and information (size, ..) callbacks.
Used for all new dummy NativeSurface impl and SWT GLCanvas.
- GLContext -> GLDrawable propagation context/drawable lifecycle
via ProxySurface.UpstreamSurfaceHook allowing dynamic resources
to react (create, init, ..)
- contextRealized()
- contextMadeCurrent()
- SurfaceChangeable -> MutableSurface
currently only contains setting the surface handle.
TODO: May need to move ProxySurface.UpstreamSurfaceHook -> MutableSurface.UpstreamSurfaceHook,
allowing other impl. classes (NEWT OffscreenWindow) to utilize the new
upstream hookup mechanism - will allow FBO/Dummy window to work.
- SWT GLCanvas using ProxySurface.UpstreamSurfaceHook for proper size
propagation.
- New GLAutoDrawable::getUpstreamWidget(), allowing GLEventListener
to fetch the owning Java side UI element (NEWT, SWT, AWT, ..).
- GLDrawableFactory: Removed createOffscreenSurface() - unused and not GL related
- EGLDrawableFactory handles device/profile avail. mapping
while actually creating context/drawable.
This allows us to learn whether the ES context is software/hardware as well as FBO avail.
- EGLDrawable: Removed secret buckets of EGL configs :)
Employ native surface (X11, WGL, ..) to EGL 'mapping' in
EGLDrawableFactory utilizing new EGLUpstreamSurfaceHook (implements ProxySurface.UpstreamSurfaceHook).
Other Bugs:
- Add CTX_OPTION_DEBUG to ctx/extension cache key since only a debug ctx
may expose the ARB debug capability.
This bug caused lack of ARB/AMD debug functionality.
- Fix GLProfile deadlock (debug mode, w/ EGL/ES, no X11),
dump availability information _after_ lock.
- ImmModeSink draw(): Use GL's glDrawElements(..), don't cast for GL2ES1.
Fixes use for GL2ES2.
- Fix KeyEvent.getKeyChar() comment (-> only stable for keyTyped(..))
Misc:
- Refined alot of API doc
- New GLExtensions holds commonly used GL extension strings,
allows better referencing and usage lookup.
- Move GL (interface) decl. to GLBase
- GLBuffers: Cleanup API doc (format, types)
- TextureIO: Add PAM and PPM static suffix identifier
- GLCapabilities getNumSamples() returns 0 if sampleBuffers is disabled, this seems to be more natural.
- finalized a lot
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Based on Andres Colubri's initiative and commit 218d67fc0222d7709b21c45792d44501351939c4.
- Reading real screen refresh rate ('stolen' from NEWT)
- Properly handling swap-interval and vsync-to in native code
- Increasing accuracy vsync-to to microseconds
Tested manually w/ TestGearsES2AWT.
|
|
|
|
|
|
|
|
|
|
|
| |
GLMediaPlayer impl. to be compiled (LGPL terms)
Libav header:
libavutil 51.22.1
libavformat 53.21.0
libavcodec 53.35.0
.. just to ease our compile time setup.
|
|
|
|
|
|
|
|
|
|
| |
functions: eglCreateImageKHR, eglCreatePbufferFromClientBuffer
Unique typedef for: EGLConfig, EGLContext, EGLDisplay, EGLSurface,
EGLNativeDisplayType, EGLNativeWindowType, EGLNativePixmapType,
EGLImageKHR, GLeglImageOES and EGLSyncKHR
allowing to render them individually opaque (long) and keep EGLClientBuffer as NIO buffer.
|
|
|
|
|
|
|
| |
common name win32 (same as stub_include)
Utilizing dlopen/dlsym in an efficient way relaxes the platform requirement of having Xinerama available.
This allows using Nokia N9 MeeGo out of the box.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- New EGL/ES headers from 2012-01-xx
- Subsuming ES extensions to core,
allowing aliasing of more enums/funcs to GL or GL2ES1/GL2ES2:
GL_EXT_color_buffer_half_float
GL_EXT_occlusion_query_boolean
GL_EXT_robustness
GL_ARB_robustness
GL_EXT_separate_shader_objects
GL_EXT_shadow_samplers
GL_EXT_sRGB
GL_EXT_texture_array
GL_EXT_texture_rg
GL_EXT_texture_type_2_10_10_10_REV
GL_NV_draw_buffers
GL_NV_fbo_color_attachments
GL_EXT_packed_float
GL_EXT_texture_storage
|
|
|
|
|
|
|
|
|
| |
Note: EXT_shader_image_load_store is dropped to favor ARB_shader_image_load_store
Since no new (4.2) extension still does not require >= 3.1
all extensions are visible within the common profile GL2GL3.
Please review!
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
is the default.
The following 5 GDI functions have their 'wgl' counterparts
which 'shall' being used in case the OpenGL DLL is being loaded dynamically.
(So reads the documentation & FAQ).
This seems to be required only in case the std. opengl32.dll is not being used.
This use case is called GDI/ICD.
If using a non std. OpenGL DLL, is called MCD.
We dynamically load the OpenGL DLL and fetch the address pointer.
Since we generally use the std. opengl32.dll, our use of the GDI callbacks
seems to be legal. However, to test using the 'wgl' method WGLUtil is introduced.
You can test using the 'wgl' variants
by defining the property: 'jogl.windows.useWGLVersionOf5WGLGDIFuncSet'.
In case you have troubles, ie crashes within pixelformat setup etc,
it might be interesting if this may impact your behavior.
- ChoosePixelFormat(long, PIXELFORMATDESCRIPTOR)
- DescribePixelFormat(long, int, int, PIXELFORMATDESCRIPTOR)
- GetPixelFormat(long)
- SetPixelFormat(long, int, PIXELFORMATDESCRIPTOR)
- SwapBuffers(long)
|
|
|
|
|
|
| |
RegisteredClassFactory: Reference the factories itself instead of the RegisteredClass.
This enables the shutdown hook to clear the factories state,
which is required for proper recreation.
|
|
|
|
| |
provide required locking in multithreading environment
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Undo 368cbf4462d7f3635c1ef4497424c360b5ccc203:
- "use SurfaceUpdateListener() to notify layer", simply use MacOSXCGLContext's swap impl.
MacOSXCGLContext:
- NSOpenGLImpl.create():
- issues createNSOpenGLLayer() using tex-size (maybe POT) as args
- attaches the NSOpenGLLayer to the JAWT layered surface host
- NSOpenGLImpl.setSwapInterval() propagates interval to our NSOpenGLLayer impl.
- NSOpenGLImpl.swapBuffer() (layer case):
- waits for v-sync if enabled (v-sync), or until native 'draw' is finished (tearing)
using our pthread/ NSOpenGLLayer synchronization.
The latter uses CADisplayLink or CVDisplayLinkRef for v-sync synchronization.
- flushes our local ctx
- triggers our NSOpenGLLayer to 'draw'
- MacOSXPbufferCGLContext create() sets the texture size independently of pbuffer size (POT/NPOT)
|
|
|
|
|
|
|
|
|
| |
- attributes +NSOpenGLPFANoRecovery +NSOpenGLPFAAccelerated
- use SurfaceUpdateListener() to notify layer
- swapBufferImpl() adapt to 0038e2d41825c22bdd18a7b86a8229a3fab674a3
- pbuffer: don't enforce POT tex-size to surface size, but pbuffer only
- FIXME: Check POT pbuffer/tex-size for X11/Win32/.. !
-
|
|
|
|
|
|
|
|
|
| |
- Use proper OSX types for NS/CGL prototypes (gluegen) and impl.
- Impl layeredSurface (native):
- OSXUtil: NSView backing creation
- OSXUtil: AttachJAWTSurfaceLayer
- CGL: NSOpenGLLayer type impl. and hook
|
|
|
|
| |
support.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
flags (-d32/-d64) ; glxext.h uses 'gl-64bit-types.h'
Cleanup dependencies and linker args
- JOGL/NEWT: remove Xxf86vm dependency
- NativeWindow Solaris: Use std 'Xinerama' and 'xf86vmode'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
lifecycle deterministic; Remove warnings
Fix shared ctx release [onMainThread]
- Releasing the shared contexts caused a freeze of about 10s from one of the shared release operations.
[NSOpenGLContext release]
- Thorough triage concluded the workaround to release the shared ctx on the main thread.
- Using enhanced GLContextShareSet, see below
Make GLContextShareSet lifecycle deterministic
- Programmatically control the lifecycle of tracked shared ctx allows us using 'hard' references.
- Features queries for isShared() and ofc unregister a share set if all are destroyed.
Remove warnings
- MacOSXWindowSystemInterface.m used 'long', where 'GLint' was requested.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
which only holds the 'update' state now.
Avoid calling updater() for every makeCurrent(), but if view's frame has changed only.
This solves the pixel flickering experienced on OSX.
- GLContextImpl:update() -> drawableUpdatedNotify() w/ comments
- ContextUpdater holds context, view, old view frame and the update state.
It doesn't issue NSOpenGLContext update() by itself, but allows querying and clearing the update flag.
- MacOSXOnscreenCGLContext impl drawableUpdatedNotify()
- register via ContextUpdater, and use it if available.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Feature related:
- Added always-on-top
- Added translucency
- Child Window Position
- AWT parent: manual traverse up the tree and calc position on screen
(Problem: the parent view rect is not at the proper position,
but covers the whole frame)
EDTUtil related:
- Works now w/ AWT ot headless (again)
- OSX native JNI callbacks gathering JNIEnv properly
and attaches/detaches thread.
- AWT case: using AWT-Event which properly dispatches our cocoa events
- MainThread (headless) case: Fork off thread w/ main class
and kick off NSApp run().
This leads to same behavior as w/ AWT case.
- Using DefaultEDTUtil
- Cleanup MainThread (implements EDTUtil)
- Currently not used as EDTUtil (osx), just as launcher
- Removed EDTUtil impl code, reuse DefaultEDTUtil
- Cleanup AWTEDTUtil (implements EDTUtil)
- Currently not used as EDTUtil (osx)
|
|
|
|
|
|
|
| |
https://jogamp.org/bugzilla/show_bug.cgi?id=517
- Adding some Windows DWM entries to GDI (manual) for translucency support
- Add translucency setting in WindowsWGLGraphicsConfiguration*
|
|
|
|
| |
XRenderFindVisualFormat for translucent window config
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
separation ; android cleanup
remaining all-in-one jnlp's / jars:
jogl-all-awt.jnlp -> jogl.all.jar
jogl-all-noawt.jnlp -> jogl.all-noawt.jar
jogl-all-mobile.jnlp -> jogl.all-mobile.jar
native for all above: jogl-all-natives-linux-amd64.jar
jogl.all-android.apk jogl.all-android.jar
more may follow for each supported platfrom
++++
- newt: proper 'driver' separation
- all drivers reside now in jogamp.newt.driver.*
- remove intptr.cfg / use gluegen's
|
|
|
|
|
|
|
| |
.. (remove local copy)
- Use them for gluegen code generation
- Use them for native compilation (cc)
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- ProxySurface -> abstract javax.media.nativewindow.ProxySurface,
implemented by
jogamp.nativewindow.WrappedSurface, just wrapping surface handle
jogamp.nativewindow.windows.GDISurface, using HWND and get/release HDC on lock/unlock
- Unifying NativeSurface's lockSurface/unlockSurface implementations
- NEWT's WindowImpl
- NativeWindow's ProxySurface, WrappedWindow, GDIWindow and JAWTWindow
- wingdi/GDI: Add 'WindowFromDC' and 'GetClientRect' to GDI
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Windows for javaws/applets.
It has been observed that for some combinations, eg:
- Windows 7 64bit (other variants may apply too)
- NVIDIA 8600M GT
- 260.99
the NVIDIA setting of 'Threaded optimization' := 'auto' (default) causes the JVM to simply crash
in case of javaws and [jnlp] applets.
'Threaded Optimization' := 'off' works reliable
'Threaded Optimization' := 'on' never works with javaws and applets on the above configuration
A user could workaround this by setting 'Threaded Optimization' := 'off',
however, this would disable many users on the spot,
since you cannot ask the average user for such a task, if she only wants to see a web page.
This patch 'fixes' the 'auto' mode by running the eager GL profile initialization
within a block of single CPU affinity:
SetProcessAffinityMask(pid, 1);
try {
initProfilesForDeviceImpl(device);
} finally {
SetProcessAffinityMask(pid, sysValue);
}
Hopefully we can remove this hack with a driver fix.
However this workaround is as little invasive as possible.
|
|
|
|
|
|
|
|
|
|
|
| |
In conjunction with the gluegen investigation (gluegen: fbdedff789077b5ffa07811590f771b6f9a4f3a7),
on Windows the type LONG is always 32bit, hence we have to declare:
typedef __int32 LONG;
Besides, WGL_DRAW_TO_PBUFFER_ARB and WGL_DRAW_TO_BITMAP_ARB were missing in the
WGL/ARB attribute query, and the latter was not set in caps -> attributes.
Added fail safe exception for null chosen caps, if X11/WGL algo fails to determine.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
| |
factory method.
|
| |
|
|
|
|
| |
NativeWindow+JOGL/Windows: Complete Opaque types
|
| |
|
|
|
|
| |
NEWT WindowsWindow GetRelativeLocation() native implementation to GDI as well.
|
| |
|
| |
|
| |
|
|
|
|
| |
package's mingw64/x86_64-w64-mingw32/include/wingdi.h (Public Domain) ; Fix wglext.h RECT
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
- ifndef GLAPI
- GLES2/gl2ext.h add a few basic extensions
- gl-64bit-types.h: use khronos 64bit types
|
|
|
|
| |
generation)
|
|
|
|
| |
Needs GlueGen 6b6b9b3b81cdc85b7260664ebec547756a6be5d7, branch sgothel_wip_fixes01.
|
| |
|
|
|
|
|
|
| |
- KD: use sys include
- KD: use KHR/khrplatform.h
- KHR/khrplatform.h: Use stddef.h ptrdiff_t and size_t if possible (fix)
|
| |
|
|
|
|
| |
In case we still need these extensions, add them manually.
|