From e2223107cc54e08031bd9505ce8a9ccc72673be0 Mon Sep 17 00:00:00 2001 From: Sven Gothel Date: Sat, 28 Dec 2019 04:16:18 +0100 Subject: Bug 1347: Resolve Merged EGL/Desktop Profile Mapping GLProfile.computeProfileImpl(..) as of Bug 1084 is not the culprit here and its hardware criteria filter works. The issue is commit 99a064327bf991318841c858d21d13e55d6b39db of Bug 1203, in particular the change in GLProfile re: "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." Here the Desktop-Profile-Map overwrites the EGL-Profile-Map and hence the software mapping gets used. Indeed, this is a regression cause by the work of Bug 1203. +++ Resolution is to revert the explicit 'union mapping' and rely on an enhanced 'GLContextImpl.remapAvailableGLVersions(fromDevice, toDevice)' function. Here the EGLDrawableFactory _already_ maps the EGL device's GL Versions to the 'host' device (e.g. X11). This has to be refined so that the remap will not overwrite the 'host' device's already detected GL Versions. That alone is enough, so that GLProfile can simply use the 'mappedEGLProfiles' of the 'host' device if detected, which already is a merged mapping of X11 host- and EGL sub-device. In case no 'mappedEGLProfiles' are available, we simply use the 'mappedDesktopProfiles'. --- src/jogl/classes/jogamp/opengl/egl/EGLDrawableFactory.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/jogl/classes/jogamp/opengl/egl/EGLDrawableFactory.java') diff --git a/src/jogl/classes/jogamp/opengl/egl/EGLDrawableFactory.java b/src/jogl/classes/jogamp/opengl/egl/EGLDrawableFactory.java index 026776769..b0c5d1928 100644 --- a/src/jogl/classes/jogamp/opengl/egl/EGLDrawableFactory.java +++ b/src/jogl/classes/jogamp/opengl/egl/EGLDrawableFactory.java @@ -659,7 +659,9 @@ public class EGLDrawableFactory extends GLDrawableFactoryImpl { } if( mappedToDefaultDevice[0] ) { - EGLContext.remapAvailableGLVersions(defaultDevice, adevice); + // map all GL versions (ES, CORE or COMPAT) to 'adevice' if not existing (no overwrite) + EGLContext.remapAvailableGLVersions(defaultDevice, adevice, false /* overwrite */, + EGLContext.CTX_PROFILE_ES | EGLContext.CTX_PROFILE_CORE | EGLContext.CTX_PROFILE_COMPAT ); sr = defaultSharedResource; } else { if( hasX11 ) { -- cgit v1.2.3