From 93094928489adb0b12889f7b35c75a28303e18e8 Mon Sep 17 00:00:00 2001 From: gohai <gottfried.haider@gmail.com> Date: Wed, 10 Feb 2016 15:52:13 +0100 Subject: Change BCM VC IV detection to handle presence of vc4 DRI module The recent Raspbian release comes with a vc4 kernel module that can be activated with a device tree overlay. In this case, we want to use the DRI & Mesa / Gallium3D driver instead of the BCM VC IV one, whose userspace library remains in /opt/vc. --- .../classes/com/jogamp/nativewindow/NativeWindowFactory.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/nativewindow/classes/com/jogamp/nativewindow/NativeWindowFactory.java b/src/nativewindow/classes/com/jogamp/nativewindow/NativeWindowFactory.java index 5da7974b0..cf3819b85 100644 --- a/src/nativewindow/classes/com/jogamp/nativewindow/NativeWindowFactory.java +++ b/src/nativewindow/classes/com/jogamp/nativewindow/NativeWindowFactory.java @@ -140,9 +140,11 @@ public abstract class NativeWindowFactory { return AccessController.doPrivileged(new PrivilegedAction<Boolean>() { private final File vcliblocation = new File( "/opt/vc/lib/libbcm_host.so"); + private final File vc4modlocation = new File( + "/sys/module/vc4"); @Override public Boolean run() { - if ( vcliblocation.isFile() ) { + if ( vcliblocation.isFile() && !vc4modlocation.isDirectory() ) { return Boolean.TRUE; } return Boolean.FALSE; -- cgit v1.2.3 From 6665ecc942fff70667a2c3ca3d25eba54b909faa Mon Sep 17 00:00:00 2001 From: gohai <gottfried.haider@gmail.com> Date: Thu, 16 Feb 2017 11:47:14 +0100 Subject: Change library search order for Broadcom VC IV graphics 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. --- .../opengl/egl/EGLES2DynamicLibraryBundleInfo.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/jogl/classes/jogamp/opengl/egl/EGLES2DynamicLibraryBundleInfo.java b/src/jogl/classes/jogamp/opengl/egl/EGLES2DynamicLibraryBundleInfo.java index d37efc455..6b4a3ea99 100644 --- a/src/jogl/classes/jogamp/opengl/egl/EGLES2DynamicLibraryBundleInfo.java +++ b/src/jogl/classes/jogamp/opengl/egl/EGLES2DynamicLibraryBundleInfo.java @@ -28,6 +28,7 @@ package jogamp.opengl.egl; +import java.io.File; import java.util.ArrayList; import java.util.List; @@ -43,6 +44,15 @@ public final class EGLES2DynamicLibraryBundleInfo extends EGLDynamicLibraryBundl @Override public final List<List<String>> getToolLibNames() { + + // Prefer libGLESv2.so over libGLESv2.so.2 for Broadcom graphics + // when the VC4 DRM driver isn't present + final File vcliblocation = new File( + "/opt/vc/lib/libbcm_host.so"); + final File vc4modlocation = new File( + "/sys/module/vc4"); + final boolean bcm_vc_iv_quirk = vcliblocation.isFile() && !vc4modlocation.isDirectory(); + final List<List<String>> libsList = new ArrayList<List<String>>(); { final List<String> libsGL = new ArrayList<String>(); @@ -63,12 +73,18 @@ public final class EGLES2DynamicLibraryBundleInfo extends EGLDynamicLibraryBundl libsGL.add("libGLES30"); // ES2: This is the default lib name, according to the spec - libsGL.add("libGLESv2.so.2"); + if (!bcm_vc_iv_quirk) { + libsGL.add("libGLESv2.so.2"); + } // 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"); -- cgit v1.2.3