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