aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2019-12-04 16:07:12 +0100
committerSven Gothel <[email protected]>2019-12-04 16:07:12 +0100
commitc81252bd25e29f05ba41f8350dc098c9ca4f821d (patch)
tree12bf5c3b43e886324e973c69116d13bce666f41b
parent0094f906b423ea4ad21da5de34076e066b9122b9 (diff)
parent164db661e2688bfbc53fec3357fc6885b14ab893 (diff)
Merge remote-tracking branch 'xranby/master'
-rw-r--r--src/jogl/classes/jogamp/opengl/egl/EGLDynamicLibraryBundleInfo.java28
-rw-r--r--src/jogl/classes/jogamp/opengl/egl/EGLES2DynamicLibraryBundleInfo.java58
-rw-r--r--src/nativewindow/classes/com/jogamp/nativewindow/NativeWindowFactory.java18
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;
}
}