diff options
3 files changed, 62 insertions, 42 deletions
diff --git a/src/jogl/classes/jogamp/opengl/egl/EGLDynamicLibraryBundleInfo.java b/src/jogl/classes/jogamp/opengl/egl/EGLDynamicLibraryBundleInfo.java index 1b433cc30..8d993abc4 100644 --- a/src/jogl/classes/jogamp/opengl/egl/EGLDynamicLibraryBundleInfo.java +++ b/src/jogl/classes/jogamp/opengl/egl/EGLDynamicLibraryBundleInfo.java @@ -34,6 +34,8 @@ import java.util.List; import jogamp.common.os.PlatformPropsImpl; import jogamp.opengl.GLDynamicLibraryBundleInfo; +import jogamp.nativewindow.BcmVCArtifacts; + import com.jogamp.common.os.AndroidVersion; import com.jogamp.common.os.Platform; import com.jogamp.opengl.egl.EGL; @@ -97,16 +99,26 @@ public abstract class EGLDynamicLibraryBundleInfo extends GLDynamicLibraryBundle protected final List<String> getEGLLibNamesList() { final List<String> eglLibNames = new ArrayList<String>(); - // this is the default EGL lib name, according to the spec - eglLibNames.add("libEGL.so.1"); + /** + * Prefer libbrcmEGL.so over libEGL.so.1 for proprietary + * Broadcom graphics when the VC4 DRM Xorg driver isn't present + */ + final boolean bcm_vc_iv_quirk = BcmVCArtifacts.guessVCIVUsed(false); + + if(!bcm_vc_iv_quirk) { + // this is the default EGL lib name, according to the spec + eglLibNames.add("libEGL.so.1"); - // try these as well, if spec fails - eglLibNames.add("libEGL.so"); - eglLibNames.add("EGL"); + // try these as well, if spec fails + eglLibNames.add("libEGL.so"); + eglLibNames.add("EGL"); - // for windows distributions using the 'unlike' lib prefix, - // where our tool does not add it. - eglLibNames.add("libEGL"); + // for windows distributions using the 'unlike' lib prefix, + // where our tool does not add it. + eglLibNames.add("libEGL"); + } else { + eglLibNames.add("libbrcmEGL.so"); + } return eglLibNames; } diff --git a/src/jogl/classes/jogamp/opengl/egl/EGLES2DynamicLibraryBundleInfo.java b/src/jogl/classes/jogamp/opengl/egl/EGLES2DynamicLibraryBundleInfo.java index 866e57ad7..401b3b6e9 100644 --- a/src/jogl/classes/jogamp/opengl/egl/EGLES2DynamicLibraryBundleInfo.java +++ b/src/jogl/classes/jogamp/opengl/egl/EGLES2DynamicLibraryBundleInfo.java @@ -52,48 +52,46 @@ public final class EGLES2DynamicLibraryBundleInfo extends EGLDynamicLibraryBundl final List<String> libsGL = new ArrayList<String>(); /** - * Prefer libGLESv2.so over libGLESv2.so.2 for proprietary + * Prefer libbrcmGLESv2.so over libGLESv2.so.2 for proprietary * Broadcom graphics when the VC4 DRM Xorg driver isn't present */ final boolean bcm_vc_iv_quirk = BcmVCArtifacts.guessVCIVUsed(false); - // ES3: This is the default lib name, according to the spec - libsGL.add("libGLESv3.so.3"); + if (bcm_vc_iv_quirk) { + libsGL.add("libbrcmGLESv2.so"); + } else { + // ES3: This is the default lib name, according to the spec + libsGL.add("libGLESv3.so.3"); - // ES3: Try these as well, if spec fails - libsGL.add("libGLESv3.so"); - libsGL.add("GLESv3"); + // ES3: Try these as well, if spec fails + libsGL.add("libGLESv3.so"); + libsGL.add("GLESv3"); - // ES3: Alternative names - libsGL.add("GLES30"); + // ES3: Alternative names + libsGL.add("GLES30"); - // ES3: For windows distributions using the 'unlike' lib prefix - // where our tool does not add it. - libsGL.add("libGLESv3"); - libsGL.add("libGLES30"); + // ES3: For windows distributions using the 'unlike' lib prefix + // where our tool does not add it. + libsGL.add("libGLESv3"); + libsGL.add("libGLES30"); - // ES2: This is the default lib name, according to the spec - if (!bcm_vc_iv_quirk) { + // ES2: This is the default lib name, according to the spec libsGL.add("libGLESv2.so.2"); - } - // ES2: Try these as well, if spec fails - libsGL.add("libGLESv2.so"); - libsGL.add("GLESv2"); + // ES2: Try these as well, if spec fails + libsGL.add("libGLESv2.so"); + libsGL.add("GLESv2"); - if (bcm_vc_iv_quirk) { - libsGL.add("libGLESv2.so.2"); - } - - // ES2: Alternative names - libsGL.add("GLES20"); - libsGL.add("GLESv2_CM"); + // ES2: Alternative names + libsGL.add("GLES20"); + libsGL.add("GLESv2_CM"); - // ES2: For windows distributions using the 'unlike' lib prefix - // where our tool does not add it. - libsGL.add("libGLESv2"); - libsGL.add("libGLESv2_CM"); - libsGL.add("libGLES20"); + // ES2: For windows distributions using the 'unlike' lib prefix + // where our tool does not add it. + libsGL.add("libGLESv2"); + libsGL.add("libGLESv2_CM"); + libsGL.add("libGLES20"); + } libsList.add(libsGL); } diff --git a/src/nativewindow/classes/com/jogamp/nativewindow/NativeWindowFactory.java b/src/nativewindow/classes/com/jogamp/nativewindow/NativeWindowFactory.java index d4249d404..bedf15c7b 100644 --- a/src/nativewindow/classes/com/jogamp/nativewindow/NativeWindowFactory.java +++ b/src/nativewindow/classes/com/jogamp/nativewindow/NativeWindowFactory.java @@ -174,7 +174,20 @@ public abstract class NativeWindowFactory { guessGBM(true); BcmVCArtifacts.guessVCIVUsed(true); } - + if( BcmVCArtifacts.guessVCIVUsed(false) ) { + /* Broadcom VC IV can be used from + * both console and from inside X11 + * + * When used from inside X11 + * rendering is done on an DispmanX overlay surface + * while keeping an X11 nativewindow under as input. + * + * When Broadcom VC IV is guessed + * only the Broadcom DispmanX EGL driver is loaded. + * Therefore standard TYPE_X11 EGL can not be used. + */ + return TYPE_BCM_VC_IV; + } if( guessX(false) ) { return TYPE_X11; } @@ -185,9 +198,6 @@ public abstract class NativeWindowFactory { if( guessGBM(false) ) { return TYPE_DRM_GBM; } - if( BcmVCArtifacts.guessVCIVUsed(false) ) { - return TYPE_BCM_VC_IV; - } return TYPE_X11; } } |