summaryrefslogtreecommitdiffstats
path: root/src/hardwareintegration
Commit message (Collapse)AuthorAgeFilesLines
* Workaround for i.MX6 Wayland client crashwip-compositor-apiPaul Olav Tvete2016-03-031-1/+4
| | | | | | | | | | | | | | There is a bug in some versions of the Vivante driver, causing clients to crash when a window is closed. This patch avoids a crash on startup, confirmed with GL version "OpenGL ES 3.0 V5.0.11.p4.25762". The crash happens with both Weston and Qt-based compositors. Since we do not yet know exactly which versions are affected, we avoid destroying the temporary surface for all Vivante versions. Change-Id: I4b5b0ebb04b8441559aebb54a6ec3eb534c5c8e0 Reviewed-by: Jan Arne Petersen <jan.petersen@kdab.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
* Proper fix for buffer destructionPaul Olav Tvete2016-02-291-5/+12
| | | | | | | | | | | | | | The previous fix (93ca929fb9caf347150) would always crash on client exit. It tried use the same destroy_listener on several buffers. Due to the way linked lists are implemented in Wayland, a listener can only be listening to one signal at the time. The correct way to do this is to create a new listener for each buffer. Change-Id: Ie94dd8cd2d3dc7f93a0526c5c585a8feab3b7354 Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com> Reviewed-by: Louai Al-Khanji <louai.al-khanji@theqtcompany.com> (cherry picked from commit d6fe7b6165859e17f0308cd28ab0cd2e2e3db294)
* Fix destroy listener signal connectionLaszlo Agocs2016-02-291-1/+1
| | | | | | | | | | Remove it from the list in the callback, not when a new buffer is created later on. Change-Id: I2328edec9728752d18efaecede19eb4527d0f578 Reviewed-by: Louai Al-Khanji <louai.al-khanji@theqtcompany.com> (cherry picked from commit 93ca929fb9caf34715012dec608afd42e6ccf1e5) Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
* Merge remote-tracking branch 'qt/5.6' into wip-compositor-apiPaul Olav Tvete2015-12-0214-28/+39
|\ | | | | | | Change-Id: Ie70fdd03e1259a8cb75bbdbf1324e3e4a2b51807
| * Get rid of the egl config test and use what qtbase providesLaszlo Agocs2015-11-119-20/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | contains(QT_CONFIG, egl) and CONFIG += egl is the only sane way to test for and pull in EGL headers and libs. This is particularly important when trying to be robust and guard against half-broken sysroots on embedded where a naive PKGCONFIG += egl breaks. Also add an EGL_WAYLAND_BUFFER_WL define to keep wayland-egl compiling. We are not testing for that in any config tests may cause a failure in sysroots that have parts of Mesa thrown in but pick ip an older EGL header from the vendor's driver. Change-Id: I7b7e6a7a91e78dbda5b6954ad08761298c538efc Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
| * RPi: Resolve all BRCM functions dynamicallyLaszlo Agocs2015-11-115-8/+6
| | | | | | | | | | | | | | | | | | | | | | | | Directly calling eglCreateGlobalImageBRCM and friends is not ideal due to the messy RPi distro setups: shipping Mesa (sw rasterizer only) in standard locations may cause picking up those EGL/GLES libs instead of the Broadcom ones from /opt/vc when building Qt. While this is something that should be fixed in the sysroot (since it is a problem at runtime anyway), let's make life easier by resolving via eglGetProcAddress, which is the right approach in any case. Change-Id: I73f7698b638691d97743a6f819bc7c8ee6ebd245 Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
* | Fix crash on client exitPaul Olav Tvete2015-11-091-0/+2
| | | | | | | | | | | | | | | | | | | | Wayland linked lists are implemented by having next and prev pointers in the objects themselves. This means that an object can only be in one list at the time. If the object is not removed from a list before being inserted into another, the original list is corrupted. Change-Id: Idc6cfc507f7d7ff30a365fda01c4f9729335ae09 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
* | Merge branch '5.6' into wip-compositor-apiLaszlo Agocs2015-10-272-29/+205
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | qwindow-compositor changes from 5.6 will be adapted separately. The traditional wayland-egl path is tested and is functional like before. The EGLStream support will be verified separately once the qwindow-compositor changes are ready. Conflicts: examples/wayland/qwindow-compositor/qwindowcompositor.cpp examples/wayland/qwindow-compositor/textureblitter.cpp examples/wayland/qwindow-compositor/textureblitter.h examples/wayland/server-buffer/client/client.pro examples/wayland/server-buffer/compositor/compositor.pro src/compositor/compositor_api/qwaylandbufferref.cpp src/compositor/compositor_api/qwaylandbufferref.h src/compositor/hardware_integration/qwlclientbufferintegration_p.h src/compositor/wayland_wrapper/qwlkeyboard.cpp src/compositor/wayland_wrapper/qwlkeyboard_p.h src/compositor/wayland_wrapper/qwlsurfacebuffer.cpp src/compositor/wayland_wrapper/qwlsurfacebuffer_p.h src/hardwareintegration/compositor/wayland-egl/waylandeglclientbufferintegration.cpp src/hardwareintegration/compositor/wayland-egl/waylandeglclientbufferintegration.h src/plugins/hardwareintegration/compositor/wayland-egl/wayland-egl.pro Change-Id: Ic2e3a6e8f74606c35b1e27cd4016fa133527d7ba
| * Support EGLStream in wayland-eglLaszlo Agocs2015-10-202-30/+248
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For Wayland on NVIDIA. Tested with a Jetson TK1 Pro and Vibrante Linux. With just the hw integration no compositors would work out of the box since EGL_KHR_stream_consumer_gltexture only allows connecting to the texture bound to GL_TEXTURE_EXTERNAL_OES, meaning that assumptions about the target always being GL_TEXTURE_2D break horribly both in C++ and in shader code. In addition, buffers have to be extended with an additional updateTexture() operation as EGLStream requires to call ConsumerAcquire on every frame. Previously there was no concept of this as calling createTexture() on attach() was sufficient. Qt Quick bits are omitted since the refactored compositor API is pretty different. This means that QML compositors will not currently function in this environment. The qwindow-compositor example is enhanced to support the external texture target, but this won't apply for the refactored branch either. It is provided for testing purposes for the time being, and to show how C++ compositors can support different texture targets and correct operation with EGLStreams. Done-with: Louai Al-Khanji <louai.al-khanji@theqtcompany.com> Change-Id: I0e209fc0cbcf435cca83528d938eb50e4bdceb82 Reviewed-by: Louai Al-Khanji <louai.al-khanji@theqtcompany.com>
* | Merge branch 'qt/5.6' into wip-compositor-apiPaul Olav Tvete2015-10-133-6/+19
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: examples/wayland/pure-qml/main.cpp examples/wayland/pure-qml/qml/Chrome.qml examples/wayland/pure-qml/qml/main.qml src/client/qwaylanddnd_p.h src/compositor/compositor_api/qwaylandquicksurface.cpp src/compositor/compositor_api/qwaylandsurface_p.h src/compositor/compositor_api/qwaylandsurfaceitem.cpp src/compositor/extensions/qwlinputmethodcontext_p.h src/compositor/hardware_integration/qwlclientbufferintegration_p.h src/compositor/hardware_integration/qwlclientbufferintegrationfactory_p.h src/compositor/hardware_integration/qwlclientbufferintegrationplugin_p.h src/compositor/hardware_integration/qwlhwintegration_p.h src/compositor/hardware_integration/qwlserverbufferintegrationfactory_p.h src/compositor/hardware_integration/qwlserverbufferintegrationplugin_p.h src/compositor/wayland_wrapper/qwlcompositor_p.h src/compositor/wayland_wrapper/qwldatadevice_p.h src/compositor/wayland_wrapper/qwldatadevicemanager_p.h src/compositor/wayland_wrapper/qwldatasource_p.h src/compositor/wayland_wrapper/qwlextendedsurface_p.h src/compositor/wayland_wrapper/qwlinputdevice_p.h src/compositor/wayland_wrapper/qwlinputmethod_p.h src/compositor/wayland_wrapper/qwlinputpanel_p.h src/compositor/wayland_wrapper/qwlinputpanelsurface_p.h src/compositor/wayland_wrapper/qwlkeyboard.cpp src/compositor/wayland_wrapper/qwlkeyboard_p.h src/compositor/wayland_wrapper/qwloutput_p.h src/compositor/wayland_wrapper/qwlpointer_p.h src/compositor/wayland_wrapper/qwlregion_p.h src/compositor/wayland_wrapper/qwlshellsurface_p.h src/compositor/wayland_wrapper/qwlsubsurface_p.h src/compositor/wayland_wrapper/qwlsurface.cpp src/compositor/wayland_wrapper/qwlsurface_p.h src/compositor/wayland_wrapper/qwltextinput_p.h src/compositor/wayland_wrapper/qwltextinputmanager_p.h src/compositor/wayland_wrapper/qwltouch_p.h src/compositor/windowmanagerprotocol/waylandwindowmanagerintegration_p.h src/imports/compositor/WaylandCursorItem.qml Change-Id: I4e63ef295b297022d4970b3c68b3d565843086bd
| * QtCompositor: Work around driver issue on iMX6 devicesLouai Al-Khanji2015-09-251-6/+11
| | | | | | | | | | Change-Id: I75eda7e766182025b54f8df851ff1d5a72eefb17 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
| * Fix deadlock when hiding and showing EGL windowsv5.5.1Giulio Camuffo2015-09-092-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | When hiding a window we attach a NULL buffer, which means that any frame callback that is still waiting will not be sent. In the SHM case we just destroy it, but we cannot do that in the EGL case, since we don't have a hold of it. So destroy the EGLSurface, which will in turn destroy the callback. Task-number: QTBUG-46921 Change-Id: I20e0d1ca7b53fb88096101d46979996dd944d429 Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
* | Avoid crash on window closePaul Olav Tvete2015-10-121-2/+3
| | | | | | | | | | Change-Id: Ic6aad5c0d51b2ae9ee078d3935db3daa642f9b32 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
* | Rename QtCompositor to QtWaylandCompositorJørgen Lind2015-09-1012-19/+19
| | | | | | | | | | | | | | enable building QtWaylandCompositor by default Change-Id: I7cf34052b304ca9fef55b7e30ef6a6367b5d75f1 Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
* | compilefix for removed qwlcompositor_p.h header in HW integrationsJørgen Lind2015-08-314-10/+7
| | | | | | | | | | | | and other api adjustments Change-Id: Idda1bfa314d401f59029f2adafbb245a47c267ac
* | Make sure to update the content fbo for QWaylandGLContextJørgen Lind2015-08-282-1/+2
| | | | | | | | Change-Id: I09f34fe3ea6bb3b57e49c63284f48d8af908ec1a
* | Remove QtWayland::Compositor and add QWaylandCompositorPrivateJørgen Lind2015-08-288-14/+16
| | | | | | | | | | | | Embrace PIMPL Change-Id: I8c8b5971e15c208317ff33231bda1513e7b8d489
* | Remove QtWayland::SurfaceJørgen Lind2015-08-281-1/+0
| | | | | | | | | | | | | | | | Its enough to have QWaylandSurface and QWaylandSurfacePrivate. Also don't pass QWaylandSurfacePrivate around, but pass QWaylandSurface and then use the QWaylandSurfacePrivate::get function. Change-Id: I915cc9d7b4497ad1c6f1f2dee61d9d0db069ba6b
* | Move the texture ownership from the QWaylandSurfaceJørgen Lind2015-08-286-13/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | to the respective QWaylandSurfaceView. For all GL applications this will have no significant impact, but will cause a memory regression for shm surfaces with multiple views. This is done to simplify the creation and destruction of textures, especially in multi-threaded environments. Also the same patch removes the y_inverted property and replaces it with a origin property. Its done in the same patch as a lot of the code was overlapping. Change-Id: I4bce50c614c9ac3ba0580e0560339476eac03433
* | LGPL v3 license change for Qt Wayland CompositorJørgen Lind2015-07-2419-513/+437
|/ | | | Change-Id: I84ed248b471464214d935352768f300d4b90dec3
* Fix crash when resizing a window in brcm-eglOlivier Blin2015-06-121-0/+3
| | | | | | | | | | | | | | | | This occurs for example when a Qt Quick2 application calls showFullScreen() while a rendering is already in progress. The GUI thread was calling destroyEglSurfaces() from setGeometry() and thus destroying the buffers, while the render thread was trying to use the buffers from swapBuffers(). There was a division by zero in swapBuffers() with the modulo m_count operation, because EGL surfaces were destroyed and m_count was 0. This fix is quite fragile, proper locking on buffers would be better. Change-Id: I41fcb2fcebec84c0dfc82ce56c6e323d3722b30a Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
* Remove unused m_mutex variable in brcm-eglOlivier Blin2015-06-121-2/+0
| | | | | Change-Id: I0c6b59eb9d59d6db4a71811562cdf740bfb0a06e Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
* Fix wl_buffer leak in the brcm-egl client integrationOlivier Blin2015-06-121-0/+1
| | | | | | | | | | They were not destroyed until the client quit, so this could be significant after many resize operations. This was also leaked server-side as a result. Change-Id: If9b84a06e3f9c79af92a949bc67e81ef9e00a230 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
* Fix typo in xcomposite-egl integration fatal messagesOlivier Blin2015-06-122-2/+2
| | | | | | Change-Id: I8944c176f12932eb51e867bc39820b2553a5d3ba Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
* Fix threaded OpenGL rendering on Mesa and possibly other EGLsGiulio Camuffo2015-05-143-4/+14
| | | | | | | | | eglBindAPI's docs says "defines the current rendering API for EGL in the thread it is called from". We were instead just calling it in the thread the context was created in, not in the thread used for rendering. Change-Id: Iba8ffe75a6f4f8b9d1bba59c0e7cce34499e9c48 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
* Merge remote-tracking branch 'origin/5.4' into 5.5Liang Qi2015-04-153-4/+4
|\ | | | | | | | | | | | | | | Conflicts: src/client/qwaylandshmbackingstore.cpp src/client/qwaylandwindow.cpp Change-Id: I795fd08f0fc5d3cb5ed55bf16e724f66b7567723
| * brcm-egl: Avoid conflicts with GLES3v5.4.2Pier Luigi Fiorini2015-04-111-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | qopengl.h includes GLES3 which conflicts with GLES2 declarations. Might happen because Qt is built with desktop GL. This patch fixes the following build error. In file included from ../../../../hardwareintegration/compositor/brcm-egl/brcmeglintegration.cpp:61:0: /opt/vc/include/GLES2/gl2.h:600:125: error: conflicting declaration of C function 'void glShaderSource(GLuint, GLsizei, const GLchar**, const GLint*)' GL_APICALL void GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar** string, const GLint* length); ^ In file included from /usr/include/qt/QtGui/qopengl.h:97:0, from ../../../../../include/QtCompositor/5.5.0/QtCompositor/private/../../../../../src/compositor/hardware_integration/qwlclientbufferintegration_p.h:46, from ../../../../../include/QtCompositor/5.5.0/QtCompositor/private/qwlclientbufferintegration_p.h:1, from ../../../../hardwareintegration/compositor/brcm-egl/brcmeglintegration.h:44, from ../../../../hardwareintegration/compositor/brcm-egl/brcmeglintegration.cpp:44: /usr/include/GLES3/gl3.h:475:29: note: previous declaration 'void glShaderSource(GLuint, GLsizei, const GLchar* const*, const GLint*)' GL_APICALL void GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length); Change-Id: I49ae11457b70b05f740ce70b8c1cfa5d6aa554bb Reviewed-by: Olivier Blin <qt@blino.org> Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
| * Fix build for brcm-egl integrationPier Luigi Fiorini2015-03-301-3/+0
| | | | | | | | | | | | Change-Id: I5540dfb8e115ab6b3c90bb78618b277783a912f3 Reviewed-by: Olivier Blin <qt@blino.org> Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
| * brcm-egl: Disambiguate wl_registryPier Luigi Fiorini2015-03-301-0/+1
| | | | | | | | | | | | | | | | | | Include wayland-client.h to disambiguate between QtWaylandClient::wl_registry and wl_registry. Change-Id: Idf33fd56a6b2c2436f5cbabc953980d05826ebba Reviewed-by: Olivier Blin <qt@blino.org> Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
| * Fix BrcmBuffer buildOlivier Blin2015-03-271-1/+1
| | | | | | | | | | | | | | | | | | | | | | It got broken after commit b332630c86014eada07990acf66c13e000b3482b: Fix generated code for interface names not starting with qt_ or wl_ Like done in xcompositebuffer.h Change-Id: Ib9b44536d4214737d8d68d62c8512e18a80d5b5d Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com> Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
* | Update copyright headersJani Heikkinen2015-02-1751-780/+524
| | | | | | | | | | | | | | | | | | Qt copyrights are now in The Qt Company, so we could update the source code headers accordingly. In the same go we should also fix the links to point to qt.io. Change-Id: I5a74d32515c3f1fe7aa1916f4241c92832510f8c Reviewed-by: Antti Kokko <antti.kokko@theqtcompany.com>
* | Add QWaylandOutput to support multiple outputsPier Luigi Fiorini2015-02-086-11/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a new QWaylandOutput class to support multiple outputs. Each QWaylandOutput need a window for rendering. Rename OutputGlobal to Output and Output to OutputResource. Add support for physical size, mode and available geometry. Use better defaults for geometry and refreshRate from the QWindow if available. A window is no longer passed to QWaylandCompositor constructor and all output related methods are removed, however one or more outputs are required for hardware integration. QWaylandCompositor returns a list of outputs and offers an API to add or remove outputs. Hardware integrations can run headless. Change-Id: I742996571ddb78328f7bfa4f79b25a81995279e1 Done-with: Jan Arne Petersen <jan.petersen@kdab.com> Done-with: Jørgen Lind <jorgen.lind@theqtcompany.com> Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
* | Namespace the platform pluginsGiulio Camuffo2015-01-2931-6/+136
| | | | | | | | | | | | | | | | | | | | | | | | There currently is a QWaylandInputDevice class both in the wayland QPA plugin and in the QtCompositor API. This causes the qwindow-compositor example to crash when running nested in a wayland session due to a mismatch between the two classes. By namespacing all the plugin code we make sure that name clashes will not happen anymore. Change-Id: I17497cff697599200bea68bf01dfde474526390f Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
* | Implement high-dpi supportMorten Johan Sorvig2014-12-172-4/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Wayland 1.2 added support for display scaling, where wl_output has a "scale" event informing the the client that the compositor will scale the output surfaces by the given factor. The client then has the option of providing large surfaces to match the target pixel densety and bypass the compositor's scaling. This is done by calling wl_surface::set_buffer_scale. Re-use the current high-dpi support in Qt by implementing devicePixelRatio() for QWaylandScreen and QWaylandWindow. Provide high resolution buffers both for raster and OpenGL graphics. Introduce a new coordinate system: buffer coordinates, which is related to the window coordinate system via an "int scale" scale factor. This scale factor corresponds to Qts qreal devicePixelRatio, but we keep the name and the type in the QtWayland implementation. Change-Id: Ie10d7e5b4833480a9a25d96a26ad02150eb6e83f Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
* | Enable Qt WebEngine on WaylandLaszlo Agocs2014-12-042-0/+30
|/ | | | | | | | | The native resource getters that are supported by eglfs will have to be supported by the wayland platform plugin too. (on wayland-egl at least) Change-Id: Ibbab649c04785dbde177342c45b9bc6f1edd954d Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com> Reviewed-by: Andras Becsi <andras.becsi@theqtcompany.com>
* Fix the compositor's wayland versioningGiulio Camuffo2014-10-096-8/+8
| | | | | | | | | We cannot just assume all clients implement the same version of the various interfaces as the compositor does. Keep track of them, and react accordingly when creating a resource or sending an event. Change-Id: I9792433a14d49c5c4df0c892fc1349ce0dfb0d43 Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* Support the creation of >= 3.x OpenGL contextsGiulio Camuffo2014-09-305-118/+281
| | | | | | | | | Use the EGL_KHR_create_context extension if available to create modern gl contexts. We disable window decorations on core profiles because that mandates a VAO to be used. Change-Id: Id6044e64f6736244ae9d593af4d68c4000a31de6 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Rename QWaylandDecoration => QWaylandAbstractDecorationRobin Burchell2014-09-231-1/+1
| | | | | | | This is in preparation for decoration plugins. Change-Id: Idb322a7a5cbc2eb5bf2cce019073f9f4fb46297f Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
* Fix window decorations for GL appsLaszlo Agocs2014-09-062-4/+13
| | | | | | | | | | | | You cannot have rounded corners with an alpha-less config. To make OpenGL applications appearing with the correct decoration, alpha must be enabled. With this fix the OpenGL apps' decoration will now look identical to the SHM apps'. Change-Id: I24431ddab63146f7f697c85277f00f41e5c55e85 Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com> Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
* Warn when EGLContext could not be created.Gunnar Sletta2014-08-291-0/+4
| | | | | Change-Id: Id840ace3d762e47c0076745301e8012755077770 Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
* Remove the unused context parameter from lock/unlockLaszlo Agocs2014-08-262-4/+4
| | | | | | | Nothing relies on it and we are anyway passing null. Change-Id: I2543650441c7f97d23b52bc7a4caa555b0777676 Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
* Returns false for window decoration support in xcomposite and brcmLaszlo Agocs2014-08-253-0/+3
| | | | | Change-Id: Ibc8eae85219da044812d22967c46b4bebb5e27bf Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
* Indicate from the client buffer integration if decorations are supportedLaszlo Agocs2014-08-252-0/+6
| | | | | | | | | | | | | | Custom client buffer integrations may not care about window decorations. Setting QT_WAYLAND_DISABLE_WINDOWDECORATION is tedious and error-prone. And it cannot be omitted since things like input events will be off if the common client code thinks decorations are in use but the client buffer integration does not render them at all. Therefore add a supportsWindowDecoration() virtual in addition to the environment variable. Change-Id: If8f621182d5c230f4d8d679c050f5d27aed6c2fb Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
* Support RasterGLSurface windowsLaszlo Agocs2014-08-253-9/+22
| | | | | | | | | | | | | | | | | In an attempt to make QOpenGLWidget and QQuickWidget working on Wayland. Since Qt 5.3 all widget windows are of type RasterGLSurface (given that the plugin reports this capability which wayland will, with this patch). Such a window can behave either like a raster or an OpenGL window. This concept maps badly to platform plugins that have a rigid separation between raster and OpenGL platform window implementations. From now on, the OpenGL window implementation, that is used pretty much always, except for raw RasterSurface windows, must be prepared to behave like a raster window too, which involves having a backingstore. Change-Id: I0226704b8d5893843fcae68059c5fe9ad2f5e761 Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
* Fix return type conflict with libhybrisYen-Chin Lee2014-08-251-2/+2
| | | | | | | | | | The return type in 'PFNEGLHYBRISGETNATIVEBUFFERINFOPROC' and 'PFNEGLHYBRISSERIALIZENATIVEBUFFERPROC' conflict with hybris_native.h, it is void while it should be EGLBoolean. Change-Id: Ia23ab4da59b3a904eb5b2884398ab5dd207f415b Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com> Reviewed-by: Yen-Chin Lee <coldnew.tw@gmail.com>
* Fix build with desktop OpenGLGiulio Camuffo2014-08-231-15/+19
| | | | | Change-Id: I6a21f447f31e9eeeafed81275c33b0c2c79e1c8a Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Explicitly define the interface versionsGiulio Camuffo2014-08-232-2/+2
| | | | | | | | | | Currently a global is bound with the version the interface has in the xml file. This is a problem for apps that explicitly link to libwayland-client because they may link to a newer libwayland, so the version of some interface may be higher than the one that it is actually implemented. Change-Id: Id0dbe6c0f1e05fe91954b9d8d9472d42d2053cdc Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Save and restore the state when doing decorationsLaszlo Agocs2014-08-221-15/+126
| | | | | | | | | | | | | | | The idea that swapBuffers() randomly changes the state is ridiculous and breaks even Qt's own OpenGL examples. An application, that has full control over its context and rendering, is not necessarily prepared for random state changes in its context. To overcome this, save and restore all the interesting state. This is fragile and applications can break it in different ways by setting all sorts of exotic state, esp. when using modern OpenGL. For GLES2 level stuff it should be sufficient, though. Change-Id: I52e7ba4072b241eb92f5f04b81d707ad5bc68f6d Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
* Do not request the highest color buffer sizeLaszlo Agocs2014-08-212-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | That third parameter is dangerous and should never be set to true, unless you know what you are doing. eglfs does not set this flag either. Do the same in wayland-egl, otherwise certain context/window creation patterns (in particular with QOffscrenSurface, which is often created with an existing context's format()) will end up with incompatible contexts and surfaces on systems that offer both 565 and 888 configs. Long story short, setting the flag ignores the extra check in the EGL config selection logic that ensures that you get a config you asked for, i.e. that a 888 config will not be returned (unless there is no other choice) if 565 was explicitly requested in the input QSurfaceFormat. The result is that we may get a 888 config even when explicitly asking for 565. However asking for unspecified will give 565. In the QOffscreenSurface case this means having an 565 context and a 888 window -> bad match. Not setting the flag brings the expected behavior: not specifying the color buffer sizes chooses the lower buffer size (565), explicitly specifying 565 chooses 565, while explicitly specifying 888 prioritizes 888 configs. Change-Id: Ia78086a9f255f2933cda7de4f5787d71d58a1356 Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
* Avoid allocating and (failing to) manage our own texture cacheGunnar Sletta2014-08-202-7/+2
| | | | | | | | | | There is no reason we should be allocating and managing our own set of window decorations. This is only going to add to the total texture memory used and because it is managed as a shared GL resource, it would have needed some care during cleanup to clean it up correctly. Change-Id: I19651837da6b3dfde0f78a964982f3f67e577493 Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>