From 32fdbf184b7478f83e4d6ff4dba3dbe150eb9e9b Mon Sep 17 00:00:00 2001 From: Jorgen Lind Date: Tue, 17 Jul 2012 13:38:16 +0200 Subject: [PATCH] Config tests for gl integration Change-Id: Ie7d80e7591d11aa5df87ca5d5de4cd6c03928c83 Reviewed-by: Paul Olav Tvete --- config.tests/egl/egl.pro | 12 ++++ config.tests/egl/main.cpp | 47 +++++++++++++ config.tests/glx/glx.pro | 12 ++++ config.tests/glx/main.cpp | 50 +++++++++++++ config.tests/wayland_egl/main.cpp | 48 +++++++++++++ config.tests/wayland_egl/wayland_egl.pro | 12 ++++ config.tests/xcomposite/main.cpp | 48 +++++++++++++ config.tests/xcomposite/xcomposite.pro | 12 ++++ config.tests/xkbcommon/xkbcommon.pro | 3 +- qtwayland.pro | 4 ++ .../hardware_integration/hardware_integration.pri | 49 ++++++------- .../wayland/gl_integration/gl_integration.pri | 81 +++++++++------------- 12 files changed, 299 insertions(+), 79 deletions(-) create mode 100644 config.tests/egl/egl.pro create mode 100644 config.tests/egl/main.cpp create mode 100644 config.tests/glx/glx.pro create mode 100644 config.tests/glx/main.cpp create mode 100644 config.tests/wayland_egl/main.cpp create mode 100644 config.tests/wayland_egl/wayland_egl.pro create mode 100644 config.tests/xcomposite/main.cpp create mode 100644 config.tests/xcomposite/xcomposite.pro diff --git a/config.tests/egl/egl.pro b/config.tests/egl/egl.pro new file mode 100644 index 0000000..f95e3c7 --- /dev/null +++ b/config.tests/egl/egl.pro @@ -0,0 +1,12 @@ +TARGET = egl +QT = core + +!contains(QT_CONFIG, no-pkg-config) { + CONFIG += link_pkgconfig + PKGCONFIG += egl +} else { + LIBS += -lEGL +} + +# Input +SOURCES += main.cpp diff --git a/config.tests/egl/main.cpp b/config.tests/egl/main.cpp new file mode 100644 index 0000000..d97107b --- /dev/null +++ b/config.tests/egl/main.cpp @@ -0,0 +1,47 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the Qt Compositor. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +int main(int argc, char **argv) +{ + EGLDisplay display = eglGetDisplay(0); + return 0; +} diff --git a/config.tests/glx/glx.pro b/config.tests/glx/glx.pro new file mode 100644 index 0000000..26f048f --- /dev/null +++ b/config.tests/glx/glx.pro @@ -0,0 +1,12 @@ +TARGET = glx +QT = core + +!contains(QT_CONFIG, no-pkg-config) { + CONFIG += link_pkgconfig + PKGCONFIG += x11 gl +} else { + LIBS += -lX11 -lGL +} + +# Input +SOURCES += main.cpp diff --git a/config.tests/glx/main.cpp b/config.tests/glx/main.cpp new file mode 100644 index 0000000..589b6c0 --- /dev/null +++ b/config.tests/glx/main.cpp @@ -0,0 +1,50 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the Qt Compositor. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +int main(int argc, char **argv) +{ + Display *dpy = XOpenDisplay(0); + + int items = 0; + GLXFBConfig *fbc = glXChooseFBConfig(dpy, DefaultScreen(dpy), 0 , &items); + return 0; +} diff --git a/config.tests/wayland_egl/main.cpp b/config.tests/wayland_egl/main.cpp new file mode 100644 index 0000000..7abb159 --- /dev/null +++ b/config.tests/wayland_egl/main.cpp @@ -0,0 +1,48 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the Qt Compositor. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +int main() +{ + struct wl_egl_pixmap *pm = wl_egl_pixmap_create(100,100,0); + + return 0; +} diff --git a/config.tests/wayland_egl/wayland_egl.pro b/config.tests/wayland_egl/wayland_egl.pro new file mode 100644 index 0000000..76d92b1 --- /dev/null +++ b/config.tests/wayland_egl/wayland_egl.pro @@ -0,0 +1,12 @@ +TARGET = wayland_egl +QT = core + +!contains(QT_CONFIG, no-pkg-config) { + CONFIG += link_pkgconfig + PKGCONFIG += wayland-egl +} else { + LIBS += -lwayland-egl +} + +# Input +SOURCES += main.cpp diff --git a/config.tests/xcomposite/main.cpp b/config.tests/xcomposite/main.cpp new file mode 100644 index 0000000..296b5a5 --- /dev/null +++ b/config.tests/xcomposite/main.cpp @@ -0,0 +1,48 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the Qt Compositor. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +int main (int argc, char **argv) +{ + XCompositeRedirectWindow((Display *)0,(Window) 0,CompositeRedirectManual); + + return 0; +} diff --git a/config.tests/xcomposite/xcomposite.pro b/config.tests/xcomposite/xcomposite.pro new file mode 100644 index 0000000..1c88535 --- /dev/null +++ b/config.tests/xcomposite/xcomposite.pro @@ -0,0 +1,12 @@ +TARGET = xcomposite +QT = core + +!contains(QT_CONFIG, no-pkg-config) { + CONFIG += link_pkgconfig + PKGCONFIG += xcomposite +} else { + LIBS += -lXcomposite +} + +# Input +SOURCES += main.cpp diff --git a/config.tests/xkbcommon/xkbcommon.pro b/config.tests/xkbcommon/xkbcommon.pro index 1fc3534..af6668b 100644 --- a/config.tests/xkbcommon/xkbcommon.pro +++ b/config.tests/xkbcommon/xkbcommon.pro @@ -1,9 +1,8 @@ TARGET = xkbcommon QT = core -CONFIG += link_pkgconfig - !contains(QT_CONFIG, no-pkg-config) { + CONFIG += link_pkgconfig PKGCONFIG += xkbcommon } else { LIBS += -lxkbcommon diff --git a/qtwayland.pro b/qtwayland.pro index fa2822b..651045e 100644 --- a/qtwayland.pro +++ b/qtwayland.pro @@ -1,5 +1,9 @@ load(configure) qtCompileTest(xkbcommon) qtCompileTest(brcm_egl) +qtCompileTest(egl) +qtCompileTest(glx) +qtCompileTest(wayland_egl) +qtCompileTest(xcomposite) load(qt_parts) diff --git a/src/compositor/hardware_integration/hardware_integration.pri b/src/compositor/hardware_integration/hardware_integration.pri index 372a1e1..c008521 100644 --- a/src/compositor/hardware_integration/hardware_integration.pri +++ b/src/compositor/hardware_integration/hardware_integration.pri @@ -1,6 +1,6 @@ isEmpty(QT_WAYLAND_GL_CONFIG):QT_WAYLAND_GL_CONFIG = $$(QT_WAYLAND_GL_CONFIG) -!mac:!isEqual(QT_WAYLAND_GL_CONFIG,nogl) { +!isEqual(QT_WAYLAND_GL_CONFIG,nogl) { HEADERS += \ $$PWD/graphicshardwareintegration.h @@ -12,37 +12,32 @@ isEmpty(QT_WAYLAND_GL_CONFIG):QT_WAYLAND_GL_CONFIG = $$(QT_WAYLAND_GL_CONFIG) isEqual(QT_WAYLAND_GL_CONFIG, custom) { QT_WAYLAND_GL_INTEGRATION = $$QT_WAYLAND_GL_CONFIG } else { - contains(QT_CONFIG, opengles2) { - isEqual(QT_WAYLAND_GL_CONFIG, xcomposite_egl) { + equals(QT_WAYLAND_GL_CONFIG, brcm_egl) { + CONFIG -= config_wayland_egl config_xcomposite + } + + equals(QT_WAYLAND_GL_CONFIG, xcomposite) { + CONFIG -= config_wayland_egl config_brcm_egl + } + + config_wayland_egl { + include (wayland_egl/wayland_egl.pri) + QT_WAYLAND_GL_INTEGRATION = wayland_egl + }else:config_brcm_egl { + include (brcm_egl/brcm_egl.pri) + QT_WAYLAND_GL_INTEGRATION = brcm_egl + }else:config_xcomposite{ + config_egl{ + include (xcomposite_egl/xcomposite_egl.pri) QT_WAYLAND_GL_INTEGRATION = xcomposite_egl - CONFIG += xcomposite_egl - } else:isEqual(QT_WAYLAND_GL_CONFIG, brcm_egl)|isEmpty(QT_WAYLAND_GL_CONFIG):config_brcm_egl { - QT_WAYLAND_GL_INTEGRATION = brcm_egl - CONFIG += brcm_egl - } else { - QT_WAYLAND_GL_INTEGRATION = wayland_egl - CONFIG += wayland_egl - DEFINES += MESA_EGL_NO_X11_HEADERS + }else:config_glx{ + include (xcomposite_glx/xcomposite_glx.pri) + QT_WAYLAND_GL_INTEGRATION = xcomposite_glx } - } else { - QT_WAYLAND_GL_INTEGRATION = xcomposite_glx - CONFIG += xcomposite_glx } } - system(echo "Qt-Compositor configured with openGL: $$QT_WAYLAND_GL_INTEGRATION") + system(echo "Qt-Compositor configured with openGL integration: $$QT_WAYLAND_GL_INTEGRATION") } else { system(echo "Qt-Compositor configured as raster only compositor") } -brcm_egl { - include (brcm_egl/brcm_egl.pri) -} -wayland_egl { - include (wayland_egl/wayland_egl.pri) -} -xcomposite_egl { - include (xcomposite_egl/xcomposite_egl.pri) -} -xcomposite_glx { - include (xcomposite_glx/xcomposite_glx.pri) -} diff --git a/src/plugins/platforms/wayland/gl_integration/gl_integration.pri b/src/plugins/platforms/wayland/gl_integration/gl_integration.pri index 720f304..5fc7c43 100644 --- a/src/plugins/platforms/wayland/gl_integration/gl_integration.pri +++ b/src/plugins/platforms/wayland/gl_integration/gl_integration.pri @@ -1,4 +1,4 @@ -QT_WAYLAND_GL_CONFIG = $$(QT_WAYLAND_GL_CONFIG) +isEmpty(QT_WAYLAND_GL_CONFIG):QT_WAYLAND_GL_CONFIG = $$(QT_WAYLAND_GL_CONFIG) contains(QT_CONFIG, opengl):!equals(QT_WAYLAND_GL_CONFIG, nogl) { DEFINES += QT_WAYLAND_GL_SUPPORT @@ -9,61 +9,42 @@ contains(QT_CONFIG, opengl):!equals(QT_WAYLAND_GL_CONFIG, nogl) { SOURCES += \ $$PWD/qwaylandglintegration.cpp - contains(QT_CONFIG, opengles2) { - isEqual(QT_WAYLAND_GL_CONFIG, xcomposite_egl) { + equals(QT_WAYLAND_GL_CONFIG, brcm_egl) { + CONFIG -= config_wayland_egl config_xcomposite + } + + equals(QT_WAYLAND_GL_CONFIG, xcomposite) { + CONFIG -= config_wayland_egl config_brcm_egl + } + + config_wayland_egl { + include ($$PWD/wayland_egl/wayland_egl.pri) + QT_WAYLAND_GL_INTEGRATION = wayland_egl + }else:config_brcm_egl { + include ($$PWD/brcm_egl/brcm_egl.pri) + QT_WAYLAND_GL_INTEGRATION = brcm_egl + }else:config_xcomposite { + config_egl { + include ($$PWD/xcomposite_egl/xcomposite_egl.pri) QT_WAYLAND_GL_INTEGRATION = xcomposite_egl - CONFIG += xcomposite_egl - } else:isEqual(QT_WAYLAND_GL_CONFIG,readback) { - QT_WAYLAND_GL_INTEGRATION = readback_egl - CONFIG += readback_egl - } else:isEqual(QT_WAYLAND_GL_CONFIG, brcm_egl)|isEmpty(QT_WAYLAND_GL_CONFIG):config_brcm_egl { - QT_WAYLAND_GL_INTEGRATION = brcm_egl - CONFIG += brcm_egl - } else { - QT_WAYLAND_GL_INTEGRATION = wayland_egl - CONFIG += wayland_egl + }else:config_glx { + include ($$PWD/xcomposite_glx/xcomposite_glx.pri) + QT_WAYLAND_GL_INTEGRATION = xcomposite_glx } - } else:mac { - QT_WAYLAND_GL_INTEGRATION = readback_cgl - CONFIG += readback_cgl - } else { - isEqual(QT_WAYLAND_GL_CONFIG, readback) { + }else:mac { + include ($$PWD/readback_cgl/readback_cgl.pri) + QT_WAYLAND_GL_INTEGRATION = readback_cgl + }else { + config_egl { + include ($$PWD/readback_egl/readback_egl.pri) + QT_WAYLAND_GL_INTEGRATION = readback_egl + }else:config_glx { + include ($$PWD/readback_glx/readback_glx.pri) QT_WAYLAND_GL_INTEGRATION = readback_glx - CONFIG += readback_glx - } else { - QT_WAYLAND_GL_INTEGRATION = xcomposite_glx - CONFIG += xcomposite_glx } } - message("Wayland GL Integration: $$QT_WAYLAND_GL_INTEGRATION") -} + system(echo "Qt Wayland plugin configured with openGL integration: $$QT_WAYLAND_GL_INTEGRATION") - -wayland_egl { - include ($$PWD/wayland_egl/wayland_egl.pri) } -readback_egl { - include ($$PWD/readback_egl/readback_egl.pri) -} - -brcm_egl { - include ($$PWD/brcm_egl/brcm_egl.pri) -} - -readback_glx { - include ($$PWD/readback_glx/readback_glx.pri) -} - -readback_cgl { - include ($$PWD/readback_cgl/readback_cgl.pri) -} - -xcomposite_glx { - include ($$PWD/xcomposite_glx/xcomposite_glx.pri) -} - -xcomposite_egl { - include ($$PWD/xcomposite_egl/xcomposite_egl.pri) -} -- 2.7.4