summaryrefslogtreecommitdiffstats
path: root/mkspecs/devices
diff options
context:
space:
mode:
Diffstat (limited to 'mkspecs/devices')
-rw-r--r--mkspecs/devices/linux-arm-hisilicon-hix5hd2-g++/qeglfshooks_hix5hd2.cpp110
-rw-r--r--mkspecs/devices/linux-arm-hisilicon-hix5hd2-g++/qmake.conf4
-rw-r--r--mkspecs/devices/linux-imx6-g++/qeglfshooks_imx6.cpp101
-rw-r--r--mkspecs/devices/linux-imx6-g++/qmake.conf5
-rw-r--r--mkspecs/devices/linux-rasp-pi-g++/qeglfshooks_pi.cpp154
-rw-r--r--mkspecs/devices/linux-rasp-pi-g++/qmake.conf4
-rw-r--r--mkspecs/devices/linux-rasp-pi2-g++/qmake.conf4
7 files changed, 10 insertions, 372 deletions
diff --git a/mkspecs/devices/linux-arm-hisilicon-hix5hd2-g++/qeglfshooks_hix5hd2.cpp b/mkspecs/devices/linux-arm-hisilicon-hix5hd2-g++/qeglfshooks_hix5hd2.cpp
deleted file mode 100644
index 9100a97646..0000000000
--- a/mkspecs/devices/linux-arm-hisilicon-hix5hd2-g++/qeglfshooks_hix5hd2.cpp
+++ /dev/null
@@ -1,110 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2015 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the qmake spec of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL21$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see http://www.qt.io/terms-conditions. For further
-** information use the contact form at http://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 or version 3 as published by the Free
-** Software Foundation and appearing in the file LICENSE.LGPLv21 and
-** LICENSE.LGPLv3 included in the packaging of this file. Please review the
-** following information to ensure the GNU Lesser General Public License
-** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** As a special exception, The Qt Company gives you certain additional
-** rights. These rights are described in The Qt Company LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qeglfshooks.h"
-#include <EGL/fbdev_window.h>
-
-#include <unistd.h>
-#include <fcntl.h>
-#include <sys/ioctl.h>
-#include <linux/fb.h>
-
-#include <private/qcore_unix_p.h>
-
-QT_BEGIN_NAMESPACE
-
-class QEglFSHiX5Hd2Hooks : public QEglFSHooks
-{
-private:
- void fbInit();
-public:
- void platformInit() Q_DECL_OVERRIDE;
- EGLNativeWindowType createNativeWindow(QPlatformWindow *window, const QSize &size, const QSurfaceFormat &format) Q_DECL_OVERRIDE;
- void destroyNativeWindow(EGLNativeWindowType window) Q_DECL_OVERRIDE;
-};
-
-void QEglFSHiX5Hd2Hooks::fbInit()
-{
- int fd = qt_safe_open("/dev/fb0", O_RDWR, 0);
- if (fd == -1)
- qWarning("Failed to open fb to detect screen resolution!");
-
- struct fb_var_screeninfo vinfo;
- memset(&vinfo, 0, sizeof(vinfo));
- if (ioctl(fd, FBIOGET_VSCREENINFO, &vinfo) == -1)
- qWarning("Could not get variable screen info");
-
- vinfo.bits_per_pixel = 32;
- vinfo.red.length = 8;
- vinfo.green.length = 8;
- vinfo.blue.length = 8;
- vinfo.transp.length = 8;
- vinfo.blue.offset = 0;
- vinfo.green.offset = 8;
- vinfo.red.offset = 16;
- vinfo.transp.offset = 24;
- vinfo.yres_virtual = 2 * vinfo.yres;
-
- if (ioctl(fd, FBIOPUT_VSCREENINFO, &vinfo) == -1)
- qErrnoWarning(errno, "Unable to set double buffer mode!");
-
- qt_safe_close(fd);
- return;
-}
-
-void QEglFSHiX5Hd2Hooks::platformInit()
-{
- QEglFSHooks::platformInit();
- fbInit();
-}
-
-EGLNativeWindowType QEglFSHiX5Hd2Hooks::createNativeWindow(QPlatformWindow *window, const QSize &size, const QSurfaceFormat &format)
-{
- fbdev_window *fbwin = reinterpret_cast<fbdev_window *>(malloc(sizeof(fbdev_window)));
- if (NULL == fbwin)
- return 0;
-
- fbwin->width = size.width();
- fbwin->height = size.height();
- return (EGLNativeWindowType)fbwin;
-}
-
-void QEglFSHiX5Hd2Hooks::destroyNativeWindow(EGLNativeWindowType window)
-{
- free(window);
-}
-
-QEglFSHiX5Hd2Hooks eglFSHiX5Hd2Hooks;
-QEglFSHooks *platformHooks = &eglFSHiX5Hd2Hooks;
-
-QT_END_NAMESPACE
diff --git a/mkspecs/devices/linux-arm-hisilicon-hix5hd2-g++/qmake.conf b/mkspecs/devices/linux-arm-hisilicon-hix5hd2-g++/qmake.conf
index 851d08600f..71ff90c9f8 100644
--- a/mkspecs/devices/linux-arm-hisilicon-hix5hd2-g++/qmake.conf
+++ b/mkspecs/devices/linux-arm-hisilicon-hix5hd2-g++/qmake.conf
@@ -18,7 +18,6 @@
# -prefix /home/abc/project/sysbase/qt_install
include(../common/linux_device_pre.conf)
-EGLFS_PLATFORM_HOOKS_SOURCES = $$PWD/qeglfshooks_hix5hd2.cpp
QMAKE_INCDIR += /usr/arm-linux-gnueabihf/include
QMAKE_LIBDIR += /usr/arm-linux-gnueabihf/lib
@@ -39,6 +38,9 @@ DISTRO_OPTS += hard-float
QMAKE_CFLAGS +=-march=armv7-a -mcpu=cortex-a9 -mfpu=vfpv3-d16
QMAKE_CXXFLAGS += $$QMAKE_CFLAGS
+# Preferred eglfs backend
+EGLFS_DEVICE_INTEGRATION = eglfs_mali
+
include(../common/linux_arm_device_post.conf)
load(qt_config)
diff --git a/mkspecs/devices/linux-imx6-g++/qeglfshooks_imx6.cpp b/mkspecs/devices/linux-imx6-g++/qeglfshooks_imx6.cpp
deleted file mode 100644
index b5ddafefdc..0000000000
--- a/mkspecs/devices/linux-imx6-g++/qeglfshooks_imx6.cpp
+++ /dev/null
@@ -1,101 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2015 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the qmake spec of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL21$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see http://www.qt.io/terms-conditions. For further
-** information use the contact form at http://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 or version 3 as published by the Free
-** Software Foundation and appearing in the file LICENSE.LGPLv21 and
-** LICENSE.LGPLv3 included in the packaging of this file. Please review the
-** following information to ensure the GNU Lesser General Public License
-** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** As a special exception, The Qt Company gives you certain additional
-** rights. These rights are described in The Qt Company LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qeglfshooks.h"
-#include <EGL/eglvivante.h>
-#include <QDebug>
-
-QT_BEGIN_NAMESPACE
-
-class QEglFSImx6Hooks : public QEglFSHooks
-{
-public:
- QEglFSImx6Hooks();
- virtual QSize screenSize() const;
- virtual EGLNativeWindowType createNativeWindow(QPlatformWindow *window, const QSize &size, const QSurfaceFormat &format);
- virtual void destroyNativeWindow(EGLNativeWindowType window);
- virtual EGLNativeDisplayType platformDisplay() const;
-
-private:
- QSize mScreenSize;
- EGLNativeDisplayType mNativeDisplay;
-};
-
-
-QEglFSImx6Hooks::QEglFSImx6Hooks()
-{
- int width, height;
-
- bool multiBufferNotEnabledYet = qEnvironmentVariableIsEmpty("FB_MULTI_BUFFER");
- bool multiBuffer = qEnvironmentVariableIsEmpty("QT_EGLFS_IMX6_NO_FB_MULTI_BUFFER");
- if (multiBufferNotEnabledYet && multiBuffer) {
- qWarning() << "QEglFSImx6Hooks will set environment variable FB_MULTI_BUFFER=2 to enable double buffering and vsync.\n"
- << "If this is not desired, you can override this via: export QT_EGLFS_IMX6_NO_FB_MULTI_BUFFER=1";
- qputenv("FB_MULTI_BUFFER", "2");
- }
-
- mNativeDisplay = fbGetDisplayByIndex(framebufferIndex());
- fbGetDisplayGeometry(mNativeDisplay, &width, &height);
- mScreenSize.setHeight(height);
- mScreenSize.setWidth(width);
-}
-
-QSize QEglFSImx6Hooks::screenSize() const
-{
- return mScreenSize;
-}
-
-EGLNativeDisplayType QEglFSImx6Hooks::platformDisplay() const
-{
- return mNativeDisplay;
-}
-
-EGLNativeWindowType QEglFSImx6Hooks::createNativeWindow(QPlatformWindow *window, const QSize &size, const QSurfaceFormat &format)
-{
- Q_UNUSED(window)
- Q_UNUSED(format)
-
- EGLNativeWindowType eglWindow = fbCreateWindow(mNativeDisplay, 0, 0, size.width(), size.height());
- return eglWindow;
-}
-
-
-void QEglFSImx6Hooks::destroyNativeWindow(EGLNativeWindowType window)
-{
- fbDestroyWindow(window);
-}
-
-QEglFSImx6Hooks eglFSImx6Hooks;
-QEglFSHooks *platformHooks = &eglFSImx6Hooks;
-
-QT_END_NAMESPACE
diff --git a/mkspecs/devices/linux-imx6-g++/qmake.conf b/mkspecs/devices/linux-imx6-g++/qmake.conf
index c8b6741e9a..1646c5fe77 100644
--- a/mkspecs/devices/linux-imx6-g++/qmake.conf
+++ b/mkspecs/devices/linux-imx6-g++/qmake.conf
@@ -4,8 +4,6 @@
include(../common/linux_device_pre.conf)
-EGLFS_PLATFORM_HOOKS_SOURCES = $$PWD/qeglfshooks_imx6.cpp
-
QMAKE_INCDIR += $$[QT_SYSROOT]/usr/include
QMAKE_LIBDIR += $$[QT_SYSROOT]/usr/lib
@@ -21,6 +19,9 @@ QMAKE_CXXFLAGS += $$IMX6_CFLAGS
DISTRO_OPTS += hard-float
+# Preferred eglfs backend
+EGLFS_DEVICE_INTEGRATION = eglfs_viv
+
include(../common/linux_arm_device_post.conf)
load(qt_config)
diff --git a/mkspecs/devices/linux-rasp-pi-g++/qeglfshooks_pi.cpp b/mkspecs/devices/linux-rasp-pi-g++/qeglfshooks_pi.cpp
deleted file mode 100644
index 64a9617c48..0000000000
--- a/mkspecs/devices/linux-rasp-pi-g++/qeglfshooks_pi.cpp
+++ /dev/null
@@ -1,154 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2015 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the qmake spec of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL21$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see http://www.qt.io/terms-conditions. For further
-** information use the contact form at http://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 or version 3 as published by the Free
-** Software Foundation and appearing in the file LICENSE.LGPLv21 and
-** LICENSE.LGPLv3 included in the packaging of this file. Please review the
-** following information to ensure the GNU Lesser General Public License
-** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** As a special exception, The Qt Company gives you certain additional
-** rights. These rights are described in The Qt Company LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qeglfshooks.h"
-
-#include <QtDebug>
-
-#include <QtPlatformSupport/private/qeglconvenience_p.h>
-#include <QtPlatformSupport/private/qeglplatformcontext_p.h>
-
-#include <bcm_host.h>
-
-QT_BEGIN_NAMESPACE
-
-static DISPMANX_DISPLAY_HANDLE_T dispman_display = 0;
-
-static EGLNativeWindowType createDispmanxLayer(const QPoint &pos, const QSize &size, int z, DISPMANX_FLAGS_ALPHA_T flags)
-{
- VC_RECT_T dst_rect;
- dst_rect.x = pos.x();
- dst_rect.y = pos.y();
- dst_rect.width = size.width();
- dst_rect.height = size.height();
-
- VC_RECT_T src_rect;
- src_rect.x = 0;
- src_rect.y = 0;
- src_rect.width = size.width() << 16;
- src_rect.height = size.height() << 16;
-
- DISPMANX_UPDATE_HANDLE_T dispman_update = vc_dispmanx_update_start(0);
-
- VC_DISPMANX_ALPHA_T alpha;
- alpha.flags = flags;
- alpha.opacity = 0xFF;
- alpha.mask = 0;
-
- DISPMANX_ELEMENT_HANDLE_T dispman_element = vc_dispmanx_element_add(
- dispman_update, dispman_display, z, &dst_rect, 0, &src_rect,
- DISPMANX_PROTECTION_NONE, &alpha, (DISPMANX_CLAMP_T *)NULL, (DISPMANX_TRANSFORM_T)0);
-
- vc_dispmanx_update_submit_sync(dispman_update);
-
- EGL_DISPMANX_WINDOW_T *eglWindow = new EGL_DISPMANX_WINDOW_T;
- eglWindow->element = dispman_element;
- eglWindow->width = size.width();
- eglWindow->height = size.height();
-
- return eglWindow;
-}
-
-static void destroyDispmanxLayer(EGLNativeWindowType window)
-{
- EGL_DISPMANX_WINDOW_T *eglWindow = static_cast<EGL_DISPMANX_WINDOW_T *>(window);
- DISPMANX_UPDATE_HANDLE_T dispman_update = vc_dispmanx_update_start(0);
- vc_dispmanx_element_remove(dispman_update, eglWindow->element);
- vc_dispmanx_update_submit_sync(dispman_update);
- delete eglWindow;
-}
-
-class QEglFSPiHooks : public QEglFSHooks
-{
-public:
- virtual void platformInit();
- virtual void platformDestroy();
- virtual EGLNativeDisplayType platformDisplay() const;
- virtual QSize screenSize() const;
- virtual EGLNativeWindowType createNativeWindow(QPlatformWindow *window, const QSize &size, const QSurfaceFormat &format);
- virtual void destroyNativeWindow(EGLNativeWindowType window);
- virtual bool hasCapability(QPlatformIntegration::Capability cap) const;
-
-};
-
-void QEglFSPiHooks::platformInit()
-{
- bcm_host_init();
-}
-
-EGLNativeDisplayType QEglFSPiHooks::platformDisplay() const
-{
- dispman_display = vc_dispmanx_display_open(0/* LCD */);
- return EGL_DEFAULT_DISPLAY;
-}
-
-void QEglFSPiHooks::platformDestroy()
-{
- vc_dispmanx_display_close(dispman_display);
-}
-
-QSize QEglFSPiHooks::screenSize() const
-{
- uint32_t width, height;
- graphics_get_display_size(0 /* LCD */, &width, &height);
- return QSize(width, height);
-}
-
-EGLNativeWindowType QEglFSPiHooks::createNativeWindow(QPlatformWindow *window, const QSize &size, const QSurfaceFormat &format)
-{
- Q_UNUSED(window)
- return createDispmanxLayer(QPoint(0, 0), size, 1, format.hasAlpha() ? DISPMANX_FLAGS_ALPHA_FROM_SOURCE : DISPMANX_FLAGS_ALPHA_FIXED_ALL_PIXELS);
-}
-
-void QEglFSPiHooks::destroyNativeWindow(EGLNativeWindowType window)
-{
- destroyDispmanxLayer(window);
-}
-
-bool QEglFSPiHooks::hasCapability(QPlatformIntegration::Capability cap) const
-{
- switch (cap) {
- case QPlatformIntegration::ThreadedPixmaps:
- case QPlatformIntegration::OpenGL:
- case QPlatformIntegration::ThreadedOpenGL:
- case QPlatformIntegration::BufferQueueingOpenGL:
- return true;
- default:
- return false;
- }
-}
-
-QEglFSPiHooks eglFSPiHooks;
-QEglFSHooks *platformHooks = &eglFSPiHooks;
-
-QT_END_NAMESPACE
diff --git a/mkspecs/devices/linux-rasp-pi-g++/qmake.conf b/mkspecs/devices/linux-rasp-pi-g++/qmake.conf
index 38e4b36cdd..20f8212f8f 100644
--- a/mkspecs/devices/linux-rasp-pi-g++/qmake.conf
+++ b/mkspecs/devices/linux-rasp-pi-g++/qmake.conf
@@ -36,8 +36,8 @@ QMAKE_CFLAGS += \
QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
-EGLFS_PLATFORM_HOOKS_SOURCES = $$PWD/qeglfshooks_pi.cpp
-EGLFS_PLATFORM_HOOKS_LIBS = -lbcm_host
+# Preferred eglfs backend
+EGLFS_DEVICE_INTEGRATION = eglfs_brcm
include(../common/linux_arm_device_post.conf)
diff --git a/mkspecs/devices/linux-rasp-pi2-g++/qmake.conf b/mkspecs/devices/linux-rasp-pi2-g++/qmake.conf
index bf6749534d..9be3f401ce 100644
--- a/mkspecs/devices/linux-rasp-pi2-g++/qmake.conf
+++ b/mkspecs/devices/linux-rasp-pi2-g++/qmake.conf
@@ -18,8 +18,8 @@ QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
DISTRO_OPTS += hard-float
-EGLFS_PLATFORM_HOOKS_SOURCES = $$PWD/../linux-rasp-pi-g++/qeglfshooks_pi.cpp
-EGLFS_PLATFORM_HOOKS_LIBS = -lbcm_host
+# Preferred eglfs backend
+EGLFS_DEVICE_INTEGRATION = eglfs_brcm
include(../common/linux_arm_device_post.conf)