From 5bc464f610c91b59214304c9f970393c3971a4bd Mon Sep 17 00:00:00 2001
From: Allan Sandfeld Jensen <allan.jensen@qt.io>
Date: Mon, 20 Mar 2017 11:33:38 +0100
Subject: [PATCH] Fix OpenGL for embedded builds

Sets the external ozone platform and make sure we don't set bad
QT_LIBDIR defines for libEGL and libGLESv2 when not doing cross builds.

Change-Id: I60eada3c93224a3aa3a105b007d669932516d331
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
---
 src/3rdparty                                  |  2 +-
 src/core/config/embedded_linux.pri            |  2 ++
 src/core/gl_surface_qt.cpp                    |  4 ++--
 tools/qmake/mkspecs/features/gn_generator.prf | 15 +++++++++++----
 4 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/src/3rdparty b/src/3rdparty
index aad9dc4fd..049134677 160000
--- a/src/3rdparty
+++ b/src/3rdparty
@@ -1 +1 @@
-Subproject commit aad9dc4fd2f2b25d45cdb6851dc6e1169c43a195
+Subproject commit 049134677a607781ab9508e7b769b2055d714543
diff --git a/src/core/config/embedded_linux.pri b/src/core/config/embedded_linux.pri
index 51d7e2671..f9b8a35d5 100644
--- a/src/core/config/embedded_linux.pri
+++ b/src/core/config/embedded_linux.pri
@@ -12,6 +12,8 @@ use?(gn) {
         enable_notifications=false \
         ozone_auto_platforms=false \
         ozone_platform_headless=true \
+        ozone_platform_external=true \
+        ozone_platform=\"eglfs\" \
         toolkit_views=false
 
     use?(icecc) {
diff --git a/src/core/gl_surface_qt.cpp b/src/core/gl_surface_qt.cpp
index 30a915598..64395d219 100644
--- a/src/core/gl_surface_qt.cpp
+++ b/src/core/gl_surface_qt.cpp
@@ -641,13 +641,13 @@ CreateOffscreenGLSurface(const gfx::Size& size)
             if (surface->Initialize())
                 return surface;
         }
-
+        LOG(WARNING) << "Failed to create offscreen GL surface";
         break;
     }
     default:
         break;
     }
-    LOG(ERROR) << "Requested OpenGL platform is not supported.";
+    LOG(ERROR) << "Requested OpenGL implementation is not supported. Implementation: " << GetGLImplementation();
     Q_UNREACHABLE();
     return NULL;
 }
diff --git a/tools/qmake/mkspecs/features/gn_generator.prf b/tools/qmake/mkspecs/features/gn_generator.prf
index 57c53935c..24a9b6716 100644
--- a/tools/qmake/mkspecs/features/gn_generator.prf
+++ b/tools/qmake/mkspecs/features/gn_generator.prf
@@ -146,10 +146,17 @@ for (define, DEFINES): {
   define = $$replace(define,\',)
   GN_CONTENTS += "    \"$$define\","
 }
-!isEmpty(QMAKE_LIBDIR_EGL):
-    GN_CONTENTS += "    \"QT_LIBDIR_EGL=\\\"$${QMAKE_DIR_SEP}$$relative_path($$QMAKE_LIBDIR_EGL, $$[QT_SYSROOT])\\\"\","
-!isEmpty(QMAKE_LIBDIR_OPENGL_ES2)
-    GN_CONTENTS += "    \"QT_LIBDIR_GLES2=\\\"$${QMAKE_DIR_SEP}$$relative_path($$QMAKE_LIBDIR_OPENGL_ES2, $$[QT_SYSROOT])\\\"\","
+!isEmpty(QT_SYSROOT) {
+    !isEmpty(QMAKE_LIBDIR_EGL):
+        GN_CONTENTS += "    \"QT_LIBDIR_EGL=\\\"$${QMAKE_DIR_SEP}$$relative_path($$QMAKE_LIBDIR_EGL, $$[QT_SYSROOT])\\\"\","
+    !isEmpty(QMAKE_LIBDIR_OPENGL_ES2)
+        GN_CONTENTS += "    \"QT_LIBDIR_GLES2=\\\"$${QMAKE_DIR_SEP}$$relative_path($$QMAKE_LIBDIR_OPENGL_ES2, $$[QT_SYSROOT])\\\"\","
+} else {
+    !isEmpty(QMAKE_LIBDIR_EGL):
+        GN_CONTENTS += "    \"QT_LIBDIR_EGL=\\\"$$QMAKE_LIBDIR_EGL\\\"\","
+    !isEmpty(QMAKE_LIBDIR_OPENGL_ES2)
+        GN_CONTENTS += "    \"QT_LIBDIR_GLES2=\\\"$$QMAKE_LIBDIR_OPENGL_ES2\\\"\","
+}
 GN_CONTENTS += "  ]"
 
 # Source files to compile
-- 
GitLab