aboutsummaryrefslogtreecommitdiffstats
path: root/make/scripts
Commit message (Collapse)AuthorAgeFilesLines
* Bug 904: 'User Vertical Flip' for GLJPanel w/o vertical flip must be ↵Sven Gothel2013-12-102-4/+4
| | | | considered in AWTTilePainter: 'Origin of GL image is still on Bottom'
* TestNewtKeyEventAutoRepeatAWT: Fix regression of commit ↵Sven Gothel2013-12-042-5/+5
| | | | 8512777873461ee33d8ed913ee26bafc00a08a02
* Bug 919 - TestNewtKeyCodesAWT w/ NewtCanvasAWT Fails on Windows Due to ↵Sven Gothel2013-12-043-6/+7
| | | | | | | | | | | | | | Clogged Key-Release Event by AWT Robot Impact: Only unit test code - TestNewtKeyCodesAWT: Fix Bug 919 - Move mouse bacl/forth while waiting for events .. - Use common wait for key timeout/polling using constants in NEWTKeyUtil - InputEventCountAdapter: 'getQueued()' -> 'copyQueue()' - ensuring queue is copied while instance is locked.
* Bug 914: Newt OSX: Don't use exclusive fullscreen mode (captured display) in ↵Sven Gothel2013-12-021-1/+1
| | | | favor of proper WM incl. ALT-TAB app-switching
* Bug 914 - Don't allow 'alwaysontop' in fullscreen mode, always allow ↵Sven Gothel2013-12-012-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | switching to other applications via ALT-TAB As described @ <http://forum.jogamp.org/Regression-of-alwaysOnTopBug-tp4030735p4030738.html>, we shall not steal the desktop in fullscreen mode via 'alwaysontop'. Latest tests on X11/GNU/Linux and Windows7 - before this patch: With default settings, i.e. alwaysontop (atop) disabled, it works as expected here, i.e.: - ALT-TAB triggers WM dialog, switching between apps. - ALT-TAB can actually switch to other apps. However, with enabled atop: - ALT-TAB triggers WM dialog, switching between apps. - ALT-TAB does _not_ switch to other apps. (*) I consider this a serious issue, since we shall not steal the desktop in fullscreen mode. This patch disables atop in fullscreen mode, i.e. (*) will switch to other apps again!
* GLJPanel.initializeBackend(offthread=true): Enable on Windows, thanks to Bug ↵Sven Gothel2013-12-012-4/+4
| | | | | | | 907 impl. DummyDispatchThread (DDT) Bug 907 implemented DDT used to create and destroy offscreen surface's dummy drawable on Windows. This enables offscreen initialization on Windows running from a short lived arbitrary thread.
* Bug 907 - Refine DummyDispatchThread (DDT) Handling: Proper OO integration ↵Sven Gothel2013-11-293-17/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | in RegisteredClass; Safe DDT Post/WaitForReady handling and error cases ; ... Proper OO integration of DDT in RegisteredClass - DDT is optional to RegisteredClass[Factory], i.e. NEWT without DDT and DummyWindow with DDT. - Using native type DummyThreadContext per DDT passed as DDT handle to java referenced in RegisteredClass - Passing DDT handle to related native methods, if not null use DDT - otherwise work on current thread. The latter impacts CreateDummyWindow0 and DestroyWindow0. Safe DDT Post/WaitForReady handling and error cases ; ... - Wait until command it complete using a 3s timeout - Terminate thread if errors occur and throw an exception +++ Discussion: DDT Native Implementation Due to original code, the DDT is implemented in native code. Usually we should favor running the DDT from a java thread. However, since it's main purpose is _not_ to interact w/ java and the native implementation has less footprint (performance and memory) we shall be OK w/ it for now - as long the implementation IS SAFE.
* Fix Bug 902: FFMPEGMediaPlayer uses IOUtil.decodeURIIfFilePath(uri) to ↵Sven Gothel2013-11-283-8/+9
| | | | decode proper file-scheme if applicable - otherwise encoded ASCII URI.
* Bug 672 (NewtCanvasSWT): Reuse SWTAccessor.isOS_TYPE ; Impl ↵Sven Gothel2013-11-252-4/+8
| | | | | | | | | | | | | | | | | | | | | NW.getLocationOnScreen(..) for X11 and Windows ; Allow unit test to run on all platforms. - Reuse SWTAccessor.isOS_TYPE (public now) - Impl NW.getLocationOnScreen(..) for X11 and Windows reusing existing native code - Allow unit test to run on all platforms. Note: NewtCanvasSWT unit tests require a 'wait for realized' while SWT dispatching. Otherwise the 'sash unit test' will fail since realiziation happens later, at least on X11. Hence extended AWTRobotUtil.waitForRealized(..) to use a 'waitAction' which is used here w/ special SWT dispatch Runnable. AWTRobotUtil.waitForRealized(..) operates on time-delta instead of iteration-counter, allowing above 'waitAction' Runnable. AWTRobotUtil.waitForRealized(..) removed 2nd 'glad.isRealized()' loop ..
* Bug 909 - Reccreate GLJPanel's BufferedImage is no more sourced by singleton ↵Sven Gothel2013-11-211-2/+4
| | | | | | | | | | | | AWTGLPixelBuffer GLJPanel must validate whether it's local BufferedImage's DataBuffer is sourced by the current singleton AWTGLPixelBuffer. Case: GLJPanel-B has created a new singleton AWTGLPixelBuffer w/ increased size. Previous created GLJPanel-A's local BufferedImage's DataBuffer is no more sourced by the singleton AWTGLPixelBuffer and hence must be re-created.
* Fix Bug 893 - NewtCanvasAWT Lifecycle Race Condition (NPE on shutdown ↵Sven Gothel2013-11-181-4/+4
| | | | | | periodically) As suggested: Employ synchronization on lifecycle actions _and_ perform destroyImpl(..) always on AWT-EDT to avoid a deadlock.
* Bug 890 - GLContextImpl's Version Validation: Only validate Integer based ↵Sven Gothel2013-11-182-5/+5
| | | | | | Version if requested context or string-version is >= 3.0 .. otherwise, spec doesn't require integer based version to work!
* NEWT Event Tests: Move TestParentingFocus* to event test packageSven Gothel2013-11-182-8/+7
|
* NewtCanvasAWT: Add method of 'isAWTEventPassThrough()', used in unit tests ↵Sven Gothel2013-11-181-2/+2
| | | | to fix event validation for offscreen mode (OSX/CALayer)
* NewtCanvasAWT: Use final AWT[Key|Mouse]Adapter and set downstream lazily; ↵Sven Gothel2013-11-181-2/+2
| | | | Consume AWT KeyEvents in downstream mode; Test respects 'consumed' key events.
* Fix Bug 879 Regression (2/2) - NewtCanvasAWT.FocusAction must take focus ↵Sven Gothel2013-11-183-7/+4
| | | | | | | | | when in offscreen-mode (OSX/CALayer) NewtCanvasAWT.FocusAction must take focus when in offscreen-mode (OSX/CALayer) since the NEWT window _is_ offscreen (no input events) and AWT events are translated to NEWT. Regression of commit 0be87f241c0f0b2f5881d9a602ce12378b8e453d
* Use 'gluegen-clang.properties' for generic clang and ↵Sven Gothel2013-11-173-2/+127
| | | | 'gluegen-xcode_clang.properties' for OSX xcode-clang ; Add GNU/Linux LLVM/clang build scripts
* Fix Bug 879 - Threads deadlock in native keyboardfocus calls made form ↵Sven Gothel2013-11-172-6/+6
| | | | | | | | | | | | | | | | | multiple threads; Fix Bug 892: Reduce Focus Hopping Since we manage focus key traversal ourselves w/o requiring the AWT component to have the focus[1], we simply can drop requesting the focus for 'focus hopping' NEWT -> AWT -> NEWT[2]. Further more, 'MenuSelectionManager.defaultManager().clearSelectedPath()' must be performed on AWT-EDT w/o blocking. Otherwise it may perform blocking tasks on AWT-EDT. [1] Commit cb7118fc875b6722803e4b11d5681671962a8d3a introduced function to query the next or previous 'to be focused' component: AWTMisc.getNextFocus(..) .. etc. [2] Focus hopping is also addressed in Bug 892
* Bug 903 - NEWT: Support 'Continue Drag on Exit'; Consistent Mouse ENTER/EXITSven Gothel2013-11-173-5/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | - Support 'Continue Drag on Exit' - Track dragging operation, allow exterior dragging - Hence track EXIT (see below) - Windows: - Capture mouse for exterior dragging - Only 'NewtWindows_trackPointerLeave' if 'entering' - Simplify touch: No 'inside' check - Not required. - Consistent Mouse ENTER/EXIT - Track ENTER/EXIT and synthesize if required, drop duplicate - OSX benefits, since it never produced ENTER/EXIT events - AWT (or other TK) translated events beahve equal now. - Required for EXIT event after ending exterior dragging and final RELEASE Tests: Passed unit tests 'junit.run.newt.event' on - GNU/Linux - Windows7 - OSX 10.7 Tested exterior tracking manually w/ NEWT TestGearsES2NEWT and TestGearsES2NewtCanvasAWT: - GNU/Linux - Windows7 (mouse) - Windows8.1 (touch) - OSX 10.7
* Bug 904 - GLJPanel: Add property to skip isGLOriented() based vertical flip ↵Sven Gothel2013-11-142-0/+4
| | | | | | by default (2/2) Property 'jogl.gljpanel.noverticalflip' will set the skipGLOrientationVerticalFlip default to true - intended for perf. testing of existing applications
* Bug 904 - GLJPanel: Allow user to skip isGLOriented() based vertical flip of ↵Sven Gothel2013-11-142-4/+4
| | | | | | | | | | | | | | | | | | | | | | | offscreen backend Add new GLJPanel method 'setSkipGLOrientationVerticalFlip(..)': /** * Set skipping {@link #isGLOriented()} based vertical flip, * which usually is required by the offscreen backend, * see details about <a href="#verticalFlip">vertical flip</a> * and <a href="#fboGLSLVerticalFlip">FBO / GLSL vertical flip</a>. * <p> * If set to <code>true</code>, user needs to flip the OpenGL rendered scene * <i>if {@link #isGLOriented()} == true</i>, e.g. via the PMV matrix.<br/> * See constraints of {@link #isGLOriented()}. * </p> */ public final void setSkipGLOrientationVerticalFlip(boolean v) { GearsES2: Handles 'flipVerticalInGLOrientation' Unit test 'TestPerf001GLJPanelInit02AWT' validates and measures performance.
* Fix Bug 889 [Related: Bug 816, Bug 849, Bug 729] - GLCanvas disappear when ↵Sven Gothel2013-11-101-1/+2
| | | | | | | | | moves between two JFrame When JAWTWindow's visibility tracker updates component's local visibility, it should read it's local visibility state instead 'trusting' the passed state. Make JAWTWindow's visibility tracker DEBUG output more brief for readability.
* Add TestGLWindows03NEWTAnimResize: Test NEWT basic resize while holding ↵Sven Gothel2013-11-101-1/+2
| | | | position .. (to be refined)
* Tests: Align NEWT parenting focus tests (package and class names) using ↵Sven Gothel2013-11-102-10/+13
| | | | NewtCanvasAWT
* Simplify Animator* Synchronization: Remove barrier 'stateSync' and favor ↵Sven Gothel2013-11-101-3/+2
| | | | | | | | | | | | simple 'synchronized' on Animator for field-get, which is already used in most methods Utilizing a 2nd synchronization object 'stateSync' besides the main sync object, Animator itself, is hard to maintain. It's performance advantages for querying states ae questionable and may even introduce bugs. Use synchronization on Animator instance for all field read/write access. Fix unsynchronized write access of 'animThread' in Animator.MainLoop.run().
* Tests: Add com/jogamp/opengl/test/junit/jogl/acore/anim Animator test packageSven Gothel2013-11-092-66/+84
|
* TestPerf001GLJPanelInit02AWT: Add overlapping test ..Sven Gothel2013-11-081-2/+2
|
* Bug 898: Apply best efford on Animator operation's finishLifecycleAction(..) ↵Sven Gothel2013-11-071-1/+2
| | | | in !blocking mode, i.e. notifyAll() if waitCondition holds and test again
* Bug 890 - Fix GLES3 Profile Mapping, i.e. GL2ES2 queries and mappings; ↵Sven Gothel2013-11-071-2/+2
| | | | | | | | | | | | | | | | | | | | Validate isGLES*() usage and definition ; Add and use ShaderCode.createExtensionDirective(..) - Fix GLES3 Profile Mapping, i.e. GL2ES2 queries and mappings - GLProfile: Add GL2ES2 -> ES3 mapping - EGLContext: Reuqest major '3' for ES3 - EGLGLCapabilities/EGLGraphicsConfiguration: Consider EGLExt.EGL_OPENGL_ES3_BIT_KHR - Validate isGLES*() usage and definition - Fix BuildComposablePipeline's isGLES() code - For GLSL related queries use isGLES() instead of isGLES2(), which would exclude ES3 - Add and use ShaderCode.createExtensionDirective(..) - Supporting creating GLSL extension directives while reusing strings from GLExtensions - Minor cleanup of GLContextImpl.setGLFuncAvail(..)
* Bug 894 - GLJPanel: Expose 'initializeBackend(boolean offthread)' allowing ↵Sven Gothel2013-11-063-2/+5
| | | | | | user to trigger backend initialization eagerly and offthread (optional, !WINDOWS) TestPerf001GLJPanelInit02AWT compares all variations: no-gl, glcanvas, gljpanel and gljpanel-initMT (offthread)
* Bug 888 / Bug 891- Enhance GLCapabilities-Query: Refine unit testsSven Gothel2013-11-052-4/+4
|
* Bug 888 / Bug 891- Enhance GLCapabilities-Query: Add raw perf. test case ↵Sven Gothel2013-11-052-4/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 'choose' only and 'full' offscreen-drawable w/ context test01ChooseOnly exposes X11/GLX perf. enhancement of 613e33ee8ffc1f2b9c5db1e1b5bb5253a159ed6d: PRE CHANGE: ++++ UITestCase.setUp: com.jogamp.opengl.test.junit.jogl.perf.TestPerf001RawInit00NEWT - test01ChooseOnly INIT START #0 Run: 0, count 50/50 raw: choose 503/t 10.06/1 INIT END #0 INIT START #1 Run: 1, count 50/50 raw: choose 384/t 7.68/1 INIT END #1 INIT START #2 Run: 2, count 50/50 raw: choose 344/t 6.88/1 INIT END #2 POST CHANGE: ++++ UITestCase.setUp: com.jogamp.opengl.test.junit.jogl.perf.TestPerf001RawInit00NEWT - test01ChooseOnly INIT START #0 Run: 0, count 50/50 raw: choose 49/t 0.98/1 INIT END #0 INIT START #1 Run: 1, count 50/50 raw: choose 43/t 0.86/1 INIT END #1 INIT START #2 Run: 2, count 50/50 raw: choose 38/t 0.76/1 INIT END #2
* Bug 888 / Bug 891- Enhance GLCapabilities-Query: Add perf. test caseSven Gothel2013-11-052-3/+9
| | | | | | | | | Even though the test case itself cannot show the proper initialization time, it can be used w/ an attached profiler i.e. Test w/ 50 X11GLXGraphicsConfigurationFactory.chooseGraphicsConfigurationFBConfig() invocations: - pre change: 1.708 ms - post change: 650 ms (613e33ee8ffc1f2b9c5db1e1b5bb5253a159ed6d)
* Bug 888 / Bug 891 - Enhance GLCapabilities-Query: Apply changes of commit ↵Sven Gothel2013-11-053-5/+9
| | | | | | | 613e33ee8ffc1f2b9c5db1e1b5bb5253a159ed6d to EGL and WGL. Note: WGL config query is already performed as a bulk operation. Note: OSX does not perform such queries.
* GLContextImpl: Move sharedContextHandle check to makeCurrentWithinLock(..) ↵Sven Gothel2013-11-021-3/+4
| | | | and let it fail there instead of within impl. class, only pass the handle - simplifies and removes redundancy.
* Bug 885 - GLMediaPlayer: Allow single threaded mode - Especially where ↵Sven Gothel2013-11-012-4/+5
| | | | | | | | | | | | multiple media textures (Android) or shared GL context are not usable. - GLMediaPlayer: - TEXTURE_COUNT_MIN is the new minimum: '1' - i.e. no multithreading, single threaded player - TEXTURE_COUNT_DEFAULT is '4' - multithreaded - GLMediaPlayerImpl: - Add Single threaded mode, but perform initStreamImpl(..) off-thread. -
* Bug 852: Add unit test TestCPUSourcingAPINEWT validating CPU sourcing, i.e. ↵Sven Gothel2013-11-011-2/+3
| | | | expecting exception w/ core profile!
* Clarify Bug 692: Unbinding a VAO does _not_ imply unbinding of set VBOs ↵Sven Gothel2013-11-011-4/+5
| | | | | | | | | | | | | | | | | | | | | (spec doesn't mention it, and it does not show results w/ CPU sourced rendering) ; Clean up GLBuffer*Tracker + * Note that VAO initialization does unbind the VBO .. since otherwise they are still bound + * and the CPU_SRC test will fail!<br/> + * The OpenGL spec does not mention that unbinding a VAO will also unbind the bound VBOs + * during their setup.<br/> + * Local tests here on NV and AMD proprietary driver resulted in <i>no ourput image</i> + * when not unbinding said VBOs before the CPU_SRC tests.<br/> + * Hence Bug 692 Comment 5 is invalid, i.e. <https://jogamp.org/bugzilla/show_bug.cgi?id=692#c5>, + * and we should throw an exception to give users a hint! Leaving uncommented code in GLBufferStateTracker .. +++ - Clean up GLBuffer*Tracker - Use final - Use static final keyNotFound value.
* Bug 882 - Crash on OSX when closing NEWT window - Fix: Release NewtMacWindow ↵Sven Gothel2013-11-011-1/+3
| | | | | | | | | | manually in close0() Release NewtMacWindow manually in close0() - Mark [NewtMacWindow setReleasedWhenClosed: NO] in init0(..) - Release NewtMacWindow manually in close0(..) Check pointer args in close0(..)
* GLDrawableFactory: createDummy*(..) Pass GLCapabilitiesImmutable + ↵Sven Gothel2013-10-311-2/+2
| | | | GLCapabilitiesChooser instead of GLProfile, allowing using same or similar caps - important for sharing ctx
* TestBinary16NOUI: Remove hardship from test node - Disable 'verbose' avoids ↵Sven Gothel2013-10-311-2/+3
| | | | 'out of memory' and saves most of the time; Also run test exclusively.
* Bug 754 - Remove Ubuntu fonts from jogl-all.jar, provide it separately to ↵Sven Gothel2013-10-311-2/+3
| | | | | | | | | | | | | | | reduce footprint for the masses. Remove the ubuntu fonts from atomic/jogl-util-graph.jar and hence all derivated 'all' JAR files. The Android jar files still contain the fonts as assets! atomic/jogl-util-graph-fonts-p0.jar contains the fonts and is either referenced by: - UbuntuFontLoader: Using class based Jar URI derivation using TempJarCache to [down]load and extract the jar file (similar to native lib-loading). - Explicitly via traditional classpath, see jnlp-files/jogl-applet-runner-newt-GraphTextDemo01b-napplet.html The pack200 jogl-all.jar file is now below 1MB
* Test Rename: Add Bug 729 / Bug 849 to Bug 816 Unit Test Names - Allowing a ↵Sven Gothel2013-10-311-4/+7
| | | | better unit test lookup
* Bug 776 GLContext Sharing: GLSharedContextSetter API Doc: Add 'glFinish()' ↵Sven Gothel2013-10-301-2/+2
| | | | to lifecycle considerations ; GearsES2: Add glFinish() after init().
* Bug 776 GLContext Sharing: GLSharedContextSetter API Doc: No 'Driver ↵Sven Gothel2013-10-301-3/+5
| | | | | | | | | | | | | | stability constraints' ; Fixing Test cases: Enable all, GearsObject*: Check VBO - GLSharedContextSetter API Doc: No 'Driver stability constraints' - No driver issues .. - Use 'Lifecycle Considerations' to describe usage issues .. - Fixing Test cases: Enable all, GearsObject*: Check VBO - GearsObject* needs to check whether VBO is 'still alive' if sharing is enabled. - Enable all unit tests.
* Bug 776 GLContext Sharing: Add GLSharedContextSetter to SWT GLCanvasSven Gothel2013-10-282-4/+4
|
* Bug 776 GLContext Sharing: Add note about driver stability (destruction ↵Sven Gothel2013-10-282-17/+33
| | | | | | | | | | | | | | | | | | | | | order) ; Fix unit tests (Shared Gears, wait for created context and destruction order) - Add note about driver stability (destruction order) - See GLSharedContextSetter: Don't destroy master context before slaves! - Fix spec-overview.html#SHARED links, add link to GLSharedContextSetter in SHARED subsection. - Fix unit tests (Shared Gears, wait for created context and destruction order) - The GearsObject sharing was completly bogus! It simply used the _same_ GLArrayDataServer instance for sharing, but it should use a _copy_ of the shared GLArrayDataServer while only preserving the VBO object! Fixed, while adding required methods to GLArrayDataServer. - Waiting for the created GLContext of a GLAutoDrawable required us to pass the latter _and_ check whether it's GLContext exists and is natively created. - Accomodated the destruction order - see above!
* Bug 776 GLContext Sharing: Add GLSharedContextSetter to GLJPanelSven Gothel2013-10-271-1/+2
|
* Bug 776 GLContext Sharing: Refine API for relaxed and lazy GLContext sharing ↵Sven Gothel2013-10-271-12/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ; Fix GLContext memory contract (volatile) (Unit test remarks see below) - Add shared GLContext queries - Refined GLContextShareSet: - Use IdentityHashMap since GLContext's can only be identical w/ same reference (footprint, performance) - Add API doc for clarification - Add methods: - ArrayList<GLContext> getCreatedShares(final GLContext context) - ArrayList<GLContext> getDestroyedShares(final GLContext context) - Use 'final' where possible - Add GLContext methods: - boolean isShared() - List<GLContext> getCreatedShares() - List<GLContext> getDestroyedShares() - Add GLSharedContextSetter interface defining setting a shared GLContext directly (GLContext) or via a GLAutoDrawable: - setSharedContext(GLContext) - setSharedAutoDrawable(GLAutoDrawable) Both cause initialization/creation of GLAutoDrawable's drawable/context to be postponed, if the shared GLContext is not yet created natively or the shared GLAutoDrawable's GLContext does not yet exist. Most of impl. resides in GLDrawableHelper Implemented in: - GLAutoDrawableBase, GLOffscreenAutoDrawable - GLWindow - AWT GLCanvas TODO: - GLJPanel - SWT GLCanvas - GLDrawableFactory: - Add 'GLOffscreenAutoDrawable createOffscreenAutoDrawable(..)' variant w/o passing the optional shared GLContext _and_ specifying lazy GLContext creation. This allows to benefit from GLSharedContextSetter contract. Lazy GLContext creation is performed at 2st display() call at the latest. All JOGL code and unit tests use this new method now. - Mark 'createOffscreenAutoDrawable(..)' w/ shared GLContext argument and immediate GLContext creation deprecated - shall be removed in 2.2.0 - Make reference to GLContext and it's native handle volatile Since we rely on the query 'GLContext.isCreated()' to properly allow GLAutoDrawable's to query whether a shared GLContext is natively created (already), the handle must be volatile since such query and the actual creation may operate on different threads. +++++ - Add/Refine shared GLContext unit tests demonstrating diff. sharing methods. All variants of using shared GLContext: com.jogamp.opengl.test.junit.jogl.acore.TestSharedContextVBO* Most convenient way to share via setSharedAutoDrawable(GLAutoDrawable): com.jogamp.opengl.test.junit.jogl.acore.TestSharedContextVBOES2[NEWT|AWT]3 AWT use w/ JTabbedPane using setSharedAutoDrawable(GLAutoDrawable): com.jogamp.opengl.test.junit.jogl.acore.TestSharedContextWithJTabbedPaneAWT
* GLProfile: Fix native profile mapping, i.e. use actual mapped profile-impl ↵Sven Gothel2013-10-251-2/+2
| | | | | | | | | | | | | | | | as detected and mapped by GLContext ; Enhance glAvailabilityToString(..) We shall not map profile == profile-impl, i.e. GL3 -> GL3, but use GLContext.getAvailableGLProfileName(device, reqMajor, reqProfileBits). The latter reflects the actual mapped context as detected. glAvailabilityToString(..) - Partition result in [Natives, Common and Mappings] - Mappings dumps mapped keys to profiles, while excluding default. Default is added at last. - Add count.