From a9fbb54c7832765b761880ac99b36b98d47383bd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tomi=20Korpip=C3=A4=C3=A4?= <tomi.korpipaa@digia.com>
Date: Thu, 6 Nov 2014 09:07:34 +0200
Subject: [PATCH] Removed obsolete QT_OPENGL_ES_2 flags
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Check for ES using isOpenGLES() instead. The method was introduced in
Qt 5.3.

Change-Id: Id21659fcaa1e1854c07df38147ad666207778cb2
Reviewed-by: Pasi Keränen <pasi.keranen@digia.com>
---
 src/canvas3d.cpp  | 27 +++++++++++++++------------
 src/canvas3d_p.h  |  1 +
 src/context3d.cpp | 13 +++++++------
 src/context3d_p.h |  3 ++-
 4 files changed, 25 insertions(+), 19 deletions(-)

diff --git a/src/canvas3d.cpp b/src/canvas3d.cpp
index dad073e..39b458a 100644
--- a/src/canvas3d.cpp
+++ b/src/canvas3d.cpp
@@ -90,12 +90,9 @@ Canvas::Canvas(QQuickItem *parent):
     m_glContext(0),
     m_glContextQt(0),
     m_contextWindow(0),
-    #if defined(QT_OPENGL_ES_2)
     m_maxSamples(0),
-    #else
-    m_maxSamples(4),
-    #endif
     m_devicePixelRatio(1.0f),
+    m_isOpenGLES2(false),
     m_isSoftwareRendered(false),
     m_isContextAttribsSet(false),
     m_antialiasFbo(0),
@@ -320,12 +317,13 @@ CanvasContext *Canvas::getContext(const QString &type, const QVariantMap &option
         }
 
         QSurfaceFormat surfaceFormat = m_glContextQt->format();
-#if defined(QT_OPENGL_ES_2)
-        surfaceFormat.setMajorVersion(2);
-        surfaceFormat.setMinorVersion(0);
-#endif
-        surfaceFormat.setSwapBehavior(QSurfaceFormat::SingleBuffer);
-        surfaceFormat.setSwapInterval(0);
+        if (m_isOpenGLES2) {
+            surfaceFormat.setMajorVersion(2);
+            surfaceFormat.setMinorVersion(0);
+        } else {
+            surfaceFormat.setSwapBehavior(QSurfaceFormat::SingleBuffer);
+            surfaceFormat.setSwapInterval(0);
+        }
 
         if (m_contextAttribs.antialias() && !m_isSoftwareRendered)
             surfaceFormat.setSamples(m_maxSamples);
@@ -382,8 +380,10 @@ CanvasContext *Canvas::getContext(const QString &type, const QVariantMap &option
             m_antialiasFbo = new QOpenGLFramebufferObject(m_initialisedSize, antialiasFboFormat);
         }
 
-        m_context3D = new CanvasContext(m_glContext, m_offscreenSurface, m_initialisedSize.width() * m_devicePixelRatio,
-                                        m_initialisedSize.height() * m_devicePixelRatio);
+        m_context3D = new CanvasContext(m_glContext, m_offscreenSurface,
+                                        m_initialisedSize.width() * m_devicePixelRatio,
+                                        m_initialisedSize.height() * m_devicePixelRatio,
+                                        m_isOpenGLES2);
         m_context3D->setCanvas(this);
         m_context3D->setDevicePixelRatio(m_devicePixelRatio);
         m_context3D->setContextAttributes(m_contextAttribs);
@@ -513,6 +513,9 @@ QSGNode *Canvas::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *data)
 
     if (!m_glContextQt) {
         m_glContextQt = window()->openglContext();
+        m_isOpenGLES2 = m_glContextQt->isOpenGLES();
+        if (!m_isOpenGLES2)
+            m_maxSamples = 4;
         ready();
         return 0;
     }
diff --git a/src/canvas3d_p.h b/src/canvas3d_p.h
index fec9f80..b5179d3 100644
--- a/src/canvas3d_p.h
+++ b/src/canvas3d_p.h
@@ -127,6 +127,7 @@ private:
     int m_maxSamples;
     float m_devicePixelRatio;
 
+    bool m_isOpenGLES2;
     bool m_isSoftwareRendered;
     bool m_runningInDesigner;
     CanvasContextAttributes m_contextAttribs;
diff --git a/src/context3d.cpp b/src/context3d.cpp
index e7013d6..9a11442 100644
--- a/src/context3d.cpp
+++ b/src/context3d.cpp
@@ -77,7 +77,7 @@
 
 // Owned by the SG Render Thread!
 CanvasContext::CanvasContext(QOpenGLContext *context, QSurface *surface,
-                             int width, int height, QObject *parent) :
+                             int width, int height, bool isES2, QObject *parent) :
     CanvasAbstractObject(parent),
     QOpenGLFunctions(context),
     m_unpackFlipYEnabled(false),
@@ -95,7 +95,8 @@ CanvasContext::CanvasContext(QOpenGLContext *context, QSurface *surface,
     m_currentFramebuffer(0),
     m_map(EnumToStringMap::newInstance()),
     m_canvas(0),
-    m_maxVertexAttribs(0)
+    m_maxVertexAttribs(0),
+    m_isOpenGLES2(isES2)
 {
     int value = 0;
     glGetIntegerv(MAX_VERTEX_ATTRIBS, &value);
@@ -2390,11 +2391,11 @@ void CanvasContext::deleteShader(CanvasShader *shader)
  */
 void CanvasContext::shaderSource(CanvasShader *shader, const QString &shaderSource)
 {
-#if defined(QT_OPENGL_ES_2)
-    QString modSource = shaderSource;
-#else
     QString modSource = "#version 120 \n#define precision \n"+ shaderSource;
-#endif
+
+    if (m_isOpenGLES2)
+        modSource = shaderSource;
+
     if (m_logAllCalls) qDebug() << "Context3D::" << __FUNCTION__
                                 << "(shader:" << shader
                                 << ", shaderSource"
diff --git a/src/context3d_p.h b/src/context3d_p.h
index 344356e..a18207b 100644
--- a/src/context3d_p.h
+++ b/src/context3d_p.h
@@ -940,7 +940,7 @@ public:
     ENUM_AS_PROPERTY(BROWSER_DEFAULT_WEBGL)
 
     CanvasContext(QOpenGLContext *context, QSurface *surface,
-                  int width, int height, QObject *parent = 0);
+                  int width, int height, bool isES2, QObject *parent = 0);
     ~CanvasContext();
 
     void setCanvas(Canvas *canvas);
@@ -1231,6 +1231,7 @@ private:
     Canvas *m_canvas;
     uint m_maxVertexAttribs;
     float **m_vertexAttribPointers;
+    bool m_isOpenGLES2;
 };
 
 #endif // CONTEXT3D_P_H
-- 
GitLab