aboutsummaryrefslogtreecommitdiffstats
path: root/src/jogl
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #96 from gohai/vc4-moduleSven Gothel2018-01-151-1/+17
|\ | | | | Change BCM VC IV detection to handle presence of vc4 DRI module
| * Change library search order for Broadcom VC IV graphicsgohai2017-02-161-1/+17
| | | | | | | | When the VC4 DRM driver isn't loaded, we want to load the VC IV GLES2 driver, which is - unfortunately - only available as libGLESv2.so.
* | Shows all information of the default graphics device in JoglVersion, bug 1294bug1294Julien Gouesse2016-04-051-2/+1
|/
* Bug 1270 - Fix OSX El Capitan 10.11 stuttering: ALAudioSink: DEBUG: Show ↵Sven Gothel2015-11-152-12/+27
| | | | OpenAL Version
* Bug 1268: Adapt to GlueGen commit 2034bbfac88b7d1360f9c939e173ff758f7f47acSven Gothel2015-11-154-1/+31
|
* Remove deprectated classes and methodsSven Gothel2015-10-159-243/+62
|
* Streamline Composed Pipeline's interfaces and implementations (Trace* Debug*)Sven Gothel2015-10-121-27/+8
| | | | | | | Only add the required direct interfaces / implementations to interface / class derivations, not polluting overview in IDEs. Aligns w/ commit bf76b6b77f078178fc5e6a42c70d354369004b94
* Bug 1189 - Add OpenGL ES 3.2 and new GL 4.5 Extensions support - Part5: ↵Sven Gothel2015-10-074-33/+73
| | | | GL_ARB_ES3_2_compatibility -> [GL|GLContext].isGLES32Compatible()
* Bug 1189 - Add OpenGL ES 3.2 and new GL 4.5 Extensions support - Part4: Fix ↵Sven Gothel2015-10-071-3/+6
| | | | GLNameResolver: Add all known vendor extensions
* Bug 1189 - Add OpenGL ES 3.2 and new GL 4.5 Extensions support - Part3: ↵Sven Gothel2015-10-072-20/+32
| | | | GLEmitter: Don't RenameExtensionIntoCore for IgnoredExtensions
* Bug 1239: Fix comment in c-code 'how to set preferred pixel_format'Sven Gothel2015-10-051-1/+1
|
* Bug 1239: Support OSX input via 'avfoundation' ; Use remaining camera ID ↵Sven Gothel2015-10-052-3/+6
| | | | (index) as filename for OSX
* Bug 1239: Update FFMPEGMediaPlayer API doc (versions and OSX resources)Sven Gothel2015-10-051-5/+14
|
* Bug 1239: Add support for UYVY422 (swizzled YUYV422)Sven Gothel2015-10-053-5/+32
|
* Bug 1239: Fix GLMediaPlayer.CameraInputScheme API doc; ↵Sven Gothel2015-10-052-7/+19
| | | | GLMediaPlayerImpl.updateAttributes avoid div-by-zero (fps inf)
* Bug 1206 - Security: Clear exposed framebuffer after creation and before ↵Sven Gothel2015-10-051-31/+33
| | | | | | | | | | | | | | | | | | | | | | | | | visibility Experimenting w/ no GLEventListener attached to an GLAutoDrawable, e.g. GLWindow (onscreen), GLJPanel (fbo offscreen), indeed on some GL implementations the default framebuffer is uninitialized and hence shows garbage. GLDrawableHelper.setViewportAndClear(..) - Clear framebuffer after setting viewport - Called from: - public final void init(..) - public final void reshape(..) - Method is used independent of GLEventListener, hence this simplifies implementation: removes 'setViewport' criteria for init, display, reshape: it is always performed! Note: We only attempt to help against leaking un-initialized framebuffer content not against user-app faults, we do not clear a 2nd-buffer (double-buffering). Note: We may still be late at resize, i.e. small noisy flickering might be visible. This might be due to lack of proper vsync.
* GLContextImpl: clarify surfacelessOK -> isSurfacelessSven Gothel2015-10-052-7/+7
|
* Bug 1237: Adopt GlueGen's clarification of IOUtil.getResource(..), commit ↵Sven Gothel2015-10-035-13/+11
| | | | | | | | d78bb1be0a6290cb94918b21865a023c01825048 - Skip relative lookup for IOUtil.ClassResources using 'asset' only (from JAR file) - Tested w/ jar file and build-dir, see scripts/tests.sh 'USE_BUILDDIR'
* Bug 1241 - Util's Texture.coords (image coordinates) not updated properlySven Gothel2015-10-021-22/+29
| | | | | | | | | Adding 'imageTarget', i.e. GL target for this texture or its sub-components if cubemap The imageTarget preserves the used 2D image type for the 2D Texture coordinates. Note: 'Texture.updateImage(final GL gl, final TextureData data, final int targetOverride)' needs an overhaul targeted for 2.4.0.
* Bug 1232 - NEWT Translucent Decorated Windows Not Working On Windows >= 8 ↵Sven Gothel2015-10-011-18/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (Lack of Aero / Blur ) Adopting new undocumented user32.dll Windows >= 8 API: - SetWindowCompositionAttribute / AccentState See: - <https://github.com/riverar/sample-win10-aeroglass/blob/master/MainWindow.xaml.cs> - <http://withinrafael.com/adding-the-aero-glass-blur-to-your-windows-10-apps/> - <http://undoc.airesoft.co.uk/user32.dll/SetWindowCompositionAttribute.php> - <http://undoc.airesoft.co.uk/user32.dll/GetWindowCompositionAttribute.php> +++ Cleaning up WindowsDWM.h, use on header file (in stub_includes) for GlueGen and implementation. +++ Merge java implementation within GDIUtil.DwmSetupTranslucency(..), to be utilized by NEWT and JOGL. NEWT issues GDIUtil.DwmSetupTranslucency(..) at creation and when toggling decoration. Toggling decoration on Win >= 8 leads to lost of translucency when returning to decorated window. On Win 7, this may work .. but is also buggy. +++ Followup patch is needed for NEWT to _not_ clear the background!
* Bug 1234 - GLReadBufferUtil.readPixelsImpl(..) not using [xy] offset in ↵Sven Gothel2015-09-281-2/+2
| | | | | | | | | | | | | readTexture.updateSubImage(..) The passed inX and inY x/y offset for readPixel -> [textureData] buffer, must be passed to readTexture.updateSubImage(..)'s destination offset. I.e. the buffer's content starting at beginning is filled via glReadPixels w/ offset applied. Hence the texture update must pass the offset as the destination offset, i.e. to be used for glTexSubImage2D's offset.
* Bug 1232 - NEWT Translucent Decorated Windows Not Working On Windows >= 8 ↵Sven Gothel2015-09-261-2/+3
| | | | | | | | | | | | (Lack of Aero / Blur ) - Wrap GDI::DwmIsCompositionEnabled() in GDIUtil, so it always returns true if Windows >= 8 (even if not manifested) - Nothing we seem to be able to do about the lack of Aero, i.e. blur effect of decorated windows - Undecorated windows work well though ..
* Bug 1226 - GLPixelBuffer.GLPixelAttributes.getPixelFormat() doesn't handle ↵Sven Gothel2015-09-261-0/+4
| | | | glDataType GL_UNSIGNED_INT_8_8_8_8_REV
* FFMPEGDynamicLibraryBundleInfo.initSymbols(): Just return null instead of ↵Sven Gothel2015-09-171-4/+8
| | | | throwing an exception, it is OK not to have ffmpeg/libav
* Bug 1211: Fix regression of GLMediaPlayerImpl caused by commit ↵Sven Gothel2015-09-171-3/+12
| | | | | | | | | | | 68c8e39fa8d6e700f0a99241c1a01a435b7f6284 GLMediaPlayerImpl.updateAttributes(..): - always set state -> Initialized if it was Uninitialized, regardless whether we start StreamWorker. - No need to handle exceptions here, just throw/pass/propagate them, since called catches them and deals w/ 'em.
* Bug 1211: Hardening Condition-Wait from Spurious-Wakeups and unintended ↵Sven Gothel2015-09-1513-279/+402
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | InterruptedException(s) Below is an updated list of Condition-Wait classifications as described in Bug 1211. This list includes recent changes on GlueGen regarding this Bug 1211. A followup commit will address the unit tests. - Noncancelable + Persistent-Wait - GLMediaPlayerImpl.StreamWorker thread (changed) - pauses thread in case of intr - Cancelable + Persistent-Wait: - LFRingbuffer.getImpl(..) - LFRingbuffer.waitForFreeSlots(int) - SyncedRingbuffer.getImpl(..) - SyncedRingbuffer.waitForFreeSlots(int) - FunctionTask.invokeOnNewThread(..) (changed) - RunnableTask.invokeOnNewThread(..) (changed) - SharedResourceRunner.run() - SharedResourceRunner.doAndWait() (changed) - SharedResourceRunner.start() (changed) - SharedResourceRunner.stop() (changed) - GLMediaPlayerImpl.StreamWorker ctor (changed) - GLMediaPlayerImpl caller thread actions do*() (changed) - AndroidGLMediaPlayerAPI14.getNextTextureImpl(..) (changed) - DisplayImpl.enqueueEvent(..) (changed) -> Persistent-Wait -> Cancels wait and NEWTEvent -> dispatchMessage(NEWTEventTask): always notifyCaller! - GLDrawableHelper.invoke(..) (changed) - DefaultEDTUtil.waitUntilIdle() (changed) - DefaultEDTUtil.waitUntilStopped() (changed) - DefaultEDTUtil.invokeImpl(..) (changed) - DefaultEDTUtil.NEDT.run(..) (changed) - AWTEDTUtil.waitUntilStopped(..) (changed) - AWTEDTUtil.invokeImpl(..) (changed) - AWTEDTUtil.NEDT.run(..) (changed) - SWTEDTUtil.invokeImpl(..) (changed) - SWTEDTUtil.waitUntilStopped(..) (changed) - SWTEDTUtil.NEDT.run(..) (changed) - GLWorkerThread.invokeAndWait(..) - GLWorkerThread.start() (changed) - GLWorkerThread.WorkerRunnable.run() (changed) - Animator.run() (changed) - AnimatorBase.finishLifecycleAction() (changed) - OSXUtil.RunOnMainThread(..) (changed) - SingletonInstanceServerSocket.Server.shutdown() (changed) - SingletonInstanceServerSocket.Server.start() (changed) - com.jogamp.audio.windows.waveout.Mixer.shutdown() (changed) - Extending/Using InterruptSource.Thread (changed) - DefaultEDTUtil.NEDT - AWTEDTUtil.NEDT - SWTEDTUtil.NEDT - GLWorkerThread.thread - Mixer.FillerThread - Mixer.MixerThread - Using InterruptSource.Thread (changed) - TempFileCache - LauncherTempFileCache - Animator.thread - SingletonInstanceServerSocket.Server.serverThread Deprecated: - FunctionTask.invoke(..) (changed) -> on current thread, no wait -> deprecated - RunnableTask.invoke(..) (changed) -> on current thread, no wait -> deprecated
* Bug 1202: Fix vsync regression on OSX when using CALayerSven Gothel2015-09-015-3/+20
| | | | | | | | On OSX using CALayer for onscreen rendering, the drawable is utilizing an offscreen FBO. Hence we need to move the vsync-skip-operation criteria, i.e. skip if offscreen, down to the implementation.
* Bug 1210 - Use manual impl. XRenderFindVisualFormat instead of buggy ↵Sven Gothel2015-08-311-15/+0
| | | | | | | | | | | | | | | | | | | | generated version - XRenderDirectFormat XVisual2XRenderMask(..): - Move from JOGL's X11GLXGraphicsConfiguration -> Nativewindow X11GraphicsConfiguration - Always use manual impl. of XRenderFindVisualFormat Additionally: - Add X11GraphicsConfiguration.XVisualInfo2X11Capabilities(..) allowing to properly setup the resulting Capabilities instance as used in X11GraphicsConfigurationFactory.chooseGraphicsConfigurationImpl(..) - XVisualInfo: - Add 'String toString()' - 'XVisualInfo create(XVisualInfo s)' uses source buffer size! - XGetVisualInfo: Use returned buffer-capacity/count for element-size and also bail out if count<=0
* Bug 1203: Add missing constraints in desktop *GLContext.create* methods: ↵Sven Gothel2015-08-304-9/+34
| | | | | | | | | | | | | | | | | Bail out if GL ES is requested ; Fix test case *GLContext.createImpl(..) shall throw an GLException: *GLContext.createContextARBImpl(..) shall return 0: - Desktop implementation: if GL ES is requested - EGL implementation: if GL Desktop is requested, but not available Otherwise GLContextImpl may mistake a desktop context for an ES one. +++ Fix unit test TestGLAutoDrawableFactoryGLProfileDeviceNEWT.test11ES2OnDesktop(): We have to query the factory by desired profile, since the desktop factory cannot produce an GL ES context.
* Bug 1203: OpenGL ES 3.1 NVIDIA 355.06's EGL impl. is unstable requires ↵Sven Gothel2015-08-302-5/+6
| | | | | | | | | | GLRendererQuirk.SingletonEGLDisplayOnly Test cases with multiple EGLDisplay init/terminate result to crashes due to NVidia's 355.06 driver. Hence enable GLRendererQuirk.SingletonEGLDisplayOnly if EGL vendor is NVIDIA until a good driver version is known.
* Bug 1207 - GLDebugMessageHandler: Support GL_KHR_debug for Desktop and ES ↵Sven Gothel2015-08-304-32/+72
| | | | | | | | | | | | | | | | profile GL_KHR_debug <https://www.opengl.org/registry/specs/KHR/debug.txt> GL_KHR_debug shall be favorized before - GL_ARB_debug_output - GL_AMD_debug_output Allow GL_KHR_debug for GL2GL3 and GL2ES2 profiles, i.e. including ES profiles: GLES2, GLES3. GL_ARB_debug_output and GL_AMD_debug_output are only allowed for desktop GL2GL3 profiles.
* Bug 1203: Optimize OpenGL Profile probing/mapping (Skip redundant queries)Sven Gothel2015-08-308-50/+194
| | | | | | | | | | | | | | | Via GLDrawableFactory[Impl] the following details are considered while GLContextImpl.mapGLVersions(..): - hasOpenGLDesktopSupport If false, skip OpenGL Desktop queries - hasOpenGLESSupport If false, skip OpenGL ES queries - hasMajorMinorCreateContextARB If false, reduce [maxMajor.maxMinor..minMajor.minMinor] iteration, reducing to [maxMajor..minMajor], usually only one query.
* Bug 1203: Fix regression: Handle GLRendererQuirks.GLES3ViaEGLES2ConfigSven Gothel2015-08-301-1/+4
| | | | | | Need to handle GLRendererQuirks.GLES3ViaEGLES2Config, i.e. a created ES3 context via ES2 request must result in mapping ES3 as well.
* Bug 1203: Fix regression of ES3 minMajor constraint lack (commit ↵Sven Gothel2015-08-291-7/+3
| | | | | | | | b8ba30a0bc7cbd36abba37d72b45f78eb989e994) commit b8ba30a0bc7cbd36abba37d72b45f78eb989e994's GLContextImpl.createContextARBMapVersionsAvailable(..) accepted minMajor=2 for ES3 detection -> wrong of course.
* Bug 1202 (related): Fix SEMVER regressions mostly due to Bug 1202 commits ↵Sven Gothel2015-08-298-8/+27
| | | | | | | | | (adding dummy methods) Commits deff49c901915e007f43a1df1a0d217a786e9f06 and 6ab634654f58afcf4549fcd1a796a0f9fd13298c changed/removed a few protected methods of public classes .. Re-added dummy methods .. shall be removed for next 2.4.* version
* *AnimatorImpl: Catch concurrent pulling of GLAutoDrawable instancesSven Gothel2015-08-292-24/+37
| | | | | | | | | | | | | | | It may happen that an GLAutoDrawable is being pulled concurrently from the animators list, in which case an IndexOutOfBoundsException might be thrown. Example: [junit] *** AWTRobotUtil: UncaughtException (this Thread main-AWTAnimator#00) : Thread <main-AWTAnimator#00>, java.lang.IndexOutOfBoundsException: Index: 1, Size: 1 [junit] java.lang.IndexOutOfBoundsException: Index: 1, Size: 1 [junit] at java.util.ArrayList.rangeCheck(ArrayList.java:653) [junit] at java.util.ArrayList.get(ArrayList.java:429) [junit] at com.jogamp.opengl.util.AWTAnimatorImpl.display(AWTAnimatorImpl.java:68) [junit] at com.jogamp.opengl.util.AnimatorBase.display(AnimatorBase.java:451) [junit] at com.jogamp.opengl.util.Animator$MainLoop.run(Animator.java:198) [junit] at java.lang.Thread.run(Thread.java:745)
* Bug 1203: EGLDrawableFactory.mapAvailableEGLESConfig(..): Add missing close ↵Sven Gothel2015-08-291-52/+53
| | | | on device (surfaceless); Remove one try-finally block
* FloatUtil: Remove '@deprecated' for 'matrixToString' 'FloatBuffer' variantSven Gothel2015-08-291-1/+0
|
* Bug 1203: Implement regular EGL OpenGL Profile probing (ES* + GL*)Sven Gothel2015-08-294-272/+385
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - GLProfile - Add 'hasGL234OnEGLImpl' handling, i.e. GL* profiles on EGL devices - Properly handle EGL's 'GLDynamicLookupHelper' queries for ES2, ES1 and GL* profiles, i.e. allow each one to fail seperately. - Merge computed EGL-Profile-Map (1) and Desktop-Profile-Map (2) per device, instead of just using the last computation, preserving and favoratizing the Desktop-Profile-Map. - GLContextImpl.mapGLVersions(..): Map ES* profiles if having an EGLGraphicsDevice and not disabled via GLProfile.disableOpenGLES. - EGLContext - createContextARBImpl(..): Use the EGL_CONTEXT_MINOR_VERSION_KHR if supported - GLContext* accessibility: Remove unused entries, add newly used ones - EGLDrawableFactory - Fix a bug regarding detection of 'OpenGL' API for EGL - SharedResource: Use detailed knowledge of each profile - Only create one drawable and context for probing maximum, utilizing 'GLContextImpl.MappedGLVersionListener' to detect all mapped profiles for 'SharedResource' instance. - Detect whether the probed/mapped device can be mapped to the default-EGL-device, i.e.: - current device is not the default-EGL-device - default-EGL-device is valid and could be mapped (beforehand) - same connection In this case, no probing/mapping is performed and the default-EGL-device mapped data being reused and remapped to the requested device. - When mapping/probing, attempt to use a surfaceless context first, allowing same codepath for default-EGL-device and native-device (X11, ..). This avoids using pbuffer if using default-EGL-device and a dummy onscreen window if using a native-device (X11, ..). If this fails, continue as usual .. - default-EGL-device -> pbuffer - native-device (X11, ..) -> dummy onscreen window
* Bug 1200: Refine fix for crash on GNU/Linux x86_64 'NVidia beta driver ↵Sven Gothel2015-08-291-10/+11
| | | | | | | | | | | | | | | | 355.06' @ probeSurfacelessCtx Refine commit e88216bd03a41480b81345ed9afc45ddea5ecfcd, i.e. restrict new 'NoSurfacelessCtx' NVidia-Vendor criteria in GLContextImpl.setRendererQuirks(..) to - isX11 (new) - isDriverNVIDIAGeForce (kept) - !(adevice instanceof EGLGraphicsDevice) (new) Surfaceless context seems to work on NVidia 355.06 for EGL+[ES+GL]. It does not work for GLX+GL though! TODO: Validate changing a GLContext's GLDrawable from 'onscreen' or 'offscreen' to 'zero' (Surfaceless).
* Bug 1203: Cleanup and Prepare for regular EGL Profile probingSven Gothel2015-08-294-124/+274
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | - GLContextImpl - add 'MappedGLVersion' type, preserving information from GL profile mapping - add 'MappedGLVersion mapAvailableGLVersion(..)' - add 'setMappedGLVersionListener(final MappedGLVersionListener mvl)', allowing implementations to register successfully mapped profiled. - add 'void remapAvailableGLVersions(final AbstractGraphicsDevice fromDevice, final AbstractGraphicsDevice toDevice)', allowing implementations to fully map one-devices profiles to another one avoiding a redundant profile mapping (probe operation). - 'mapGLVersions(..)' - disable desktop-core profile mapping if GLProfile.disableOpenGLDesktop - disable desktop-desktop profile mapping if GLProfile.disableOpenGLDesktop - EGLDrawableFactory - remove jogl.debug.EGLDrawableFactory.QueryNativeTK, since it shall not be used anymore. - Use 'NativeWindowFactory.getDefaultDisplayConnection(..)' for default EGLGraphicsDevcie - add 'hasFullOpenGLAPISupport()' - Use 'EGLSurface' return type if appropriate.
* Bug 1203: Refine DEBUG outputSven Gothel2015-08-296-19/+56
|
* Bug 1203: EGLGraphicsDevice.nativeDisplayID: Differentiate upstream device's ↵Sven Gothel2015-08-293-6/+19
| | | | native handle via own ctor, reducing redundancy
* Bug 1203: GLDrawable-Stateless operations in GLContextImpl, using ctxVersion ↵Sven Gothel2015-08-2912-87/+193
| | | | | | | | | | | | | | | | | | | | | | | | and ctxOptions - State-less operation during profile probing (mapGLVersions). While probing the GLDrawable/GLProfile and GL instance may not reflect the currently probed OpenGL profile. Hence stateless operation by passing required information is required for: - GLDynamicLookupHelper must be fetched via 'major-version and contextOptions'. - GLContextImpl.resetProcAddress(..) - GLContextImpl.updateGLXProcAddressTable() - GLContextImpl.setGLFunctionAvailability(..) - ExtensionAvailabilityCache TODO: Add replacement for GLProfile validation, which is disabled right now.: drawable.getGLProfile().verifyEquality(gl.getGLProfile()) The GLDrawable.GLProfile maybe less than GL's GLProfile due to current context-version and options. Hence we would need a 'GLProfile.bwCompatibleWith(GLProfile)'.
* Bug 1203: SharedResourceRunner.Implementation impl. shall use ↵Sven Gothel2015-08-294-91/+56
| | | | | | | | | | AbstractGraphicsDevice's uniqueID instead of connection AbstractGraphicsDevice's uniqueID supports multiple device types and units while including the connection. This is required for proper EGLDrawableFactory's profile probing on different native platform devices. Using common abstract implementation 'AImplementation' for WindowsWGL's, X11GLX's and EGL's DrawableFactory.
* Bug 1200: Fix crash on GNU/Linux x86_64 'NVidia beta driver 355.06' @ ↵Sven Gothel2015-08-271-0/+10
| | | | | | | | probeSurfacelessCtx Since no known NVidia driver is know properly supporting surfaceless context, i.e. current context w/o drawable attached, we set quirk NoSurfacelessCtx for all NVidia drivers until a 'good one' is known!
* Bug 1203: Properly format DEBUG output related to mapGLVersions: Use ↵Sven Gothel2015-08-272-23/+31
| | | | '-MapGLVersions' suffix.
* Bug 1203 (Related): Only attempt to retrieve getGLIntVersion(..) if requiredSven Gothel2015-08-271-37/+38
| | | | | i.e. major >= 3 || hasGLVersionByString.compareTo(Version3_0) >= 0. Otherwise the 'VersionNumber hasGLVersionByInt' was never used -> reduce possible GL_ERRORs.
* Bug 1202 - Move GLContextImpl.*SwapInterval* into its own sectionSven Gothel2015-08-271-28/+32
|
* Bug 1202 - Add support of Adaptive Vsync via [GLX|WGL]_EXT_swap_control_tearSven Gothel2015-08-278-103/+208
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [GLX|WGL]_EXT_swap_control_tear extensions support asynchronous buffer swaps, i.e. adaptive Vsync. <https://www.opengl.org/wiki/SwapInterval_aka_vsync#Adaptive_Vsync> <https://www.opengl.org/registry/specs/EXT/wgl_swap_control_tear.txt> <https://www.opengl.org/registry/specs/EXT/glx_swap_control_tear.txt> <http://keithp.com/blogs/async_flip/> The extensions utilizes a negative interval value, enabling late swaps to occur without synchronization to the video frame. Hence '-1' has new semantics, previously it was the 'default value' of 'untouched vsync interval'. New default is: - 0 for unrealized context - 1 for realized context +++ It requires [GLX|WGL]_EXT_swap_control, hence we shall ensure to use use this extension in the implementation of GLContext.setSwapInterval(..). +++ Mesa3D seems to support GLX_SGI_swap_control only. +++ Implemented on Windows and X11. +++ On GNU/Linux using NVidia driver w/ my setup(*), sadly the query GLX.glXQueryDrawable(displayHandle, drawable.getHandle(), GLX.GLX_LATE_SWAPS_TEAR_EXT, val); always returns zero here, indicating async vsync is not supported. (Queried the attribute for every frame in windowed or fullscreen mode) Fullscreen (*) - Debian 8 - Kernel 3.16 - KDE/Kwin - GL Version 4.5 (Core profile, arb, compat[ES2, ES3, ES31], FBO, hardware) - 4.5.0 NVIDIA 355.06 [GL 4.5.0, vendor 355.6.0 (NVIDIA 355.06)] - GL_RENDERER GeForce GTX 660/PCIe/SSE2 - Samsung U28D590 (DFP-4): Internal DisplayPort +++