summaryrefslogtreecommitdiffstats
path: root/src/hardwareintegration
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote-tracking branch 'qt/5.6' into 5.7Paul Olav Tvete2016-03-084-0/+4
|\ | | | | | | Change-Id: Iada0e076ee33e8d39ecc4f40edfd9764ba610c03
| * Fix SHM drawing logicGiulio Camuffo2016-03-074-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The old logic didn't care to listen for wl_buffer.release events so it always drew in the same buffer, potentially resulting in tearing if the compositor was scanning out the buffer at the same time. Instead properly cycle between a few buffers and don't reuse the same one until the release event was received. The old code also used to throttle the redraws, unless the buffer was changing, that is unless the window was getting resized. This is now lost, and no throttling is ever done. Doing it properly, by waiting for the frame callback before committing the new buffer shows very noticeable lags with many applications when resizing, because they paint many times per resize event, so they fall behind the cursor. A proper fix will be to implement the support for requestUpdate(), and using it in the applications. Change-Id: I02732c34769a5c75a6ad68c095bae916e4b274d3 Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
* | Use getProcAddress(const char*) to work with updates in QOpenGLContextErik Larsson2016-03-026-9/+9
| | | | | | | | | | | | | | | | | | QOpenGLContext changed the getProcAddress overload to use const char* instead of QByteArray in commit (qtbase 29d8159c4478a5275d2ea102daf270a91ed7e92e). Change-Id: Idce613ebd06daeb111fd76ebee89a82182d028d5 Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
* | Proper fix for buffer destructionPaul Olav Tvete2016-02-251-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>
* | Fix querying the buffer size on some platformsGiulio Camuffo2016-02-081-14/+14
| | | | | | | | | | | | | | | | On Mesa/Intel apparently querying a buffer's size can return bogus values if an EGLImage was not created from it yet. Change-Id: I186dcc70f64d310ef3f5e9f908267a8c28b113f2 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
* | Fix destroy listener signal connectionLaszlo Agocs2016-02-041-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>
* | Add missing lib when pkg-config is not usedLaszlo Agocs2016-01-281-1/+1
| | | | | | | | | | | | | | | | | | Some embedded SDKs will not have pkg-config available for Wayland. Hence we need to keep the manual LIBS+=... path functional. Change-Id: I3815267254ce5c137918e817ade434cffba9f20b Reviewed-by: Erik Larsson <erik@ortogonal.com> Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
* | Updated license headersAntti Kokko2016-01-2032-448/+640
| | | | | | | | | | | | | | | | | | | | From Qt 5.7 -> LGPL v2.1 isn't an option anymore, see http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/ Updated license headers to use new LGPL header instead of LGPL21 one (in those files which will be under LGPL v3) Change-Id: I76ae5d3e64f096eb3163d6163a38d68c7c1ca756 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* | Merge branch 'wip-compositor-api' into devPaul Olav Tvete2015-12-0221-664/+549
|\ \ | | | | | | | | | | | | | | | | | | This introduces the new compositor API, removing the old API (which was never officially supported). Change-Id: I1dc01f0fb4edc749e34ed8356e56ad87d7d64913
| * | Merge remote-tracking branch 'qt/5.6' into wip-compositor-apiPaul Olav Tvete2015-12-0214-28/+39
| |\| | | | | | | | | | Change-Id: Ie70fdd03e1259a8cb75bbdbf1324e3e4a2b51807
| * | 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
| * \ \ 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
| * | | | 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
* | | | | Merge remote-tracking branch 'origin/5.6' into devLiang Qi2015-12-0114-28/+39
|\ \ \ \ \ | | |_|_|/ | |/| | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/client/qwaylanddisplay_p.h Change-Id: I602b90a055d1322af369fb7b77a68583154b660f
| * | | | 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>
* / | | Make swap buffer call non-blocking for subsurfacesMikko Levonmaa2015-11-122-1/+30
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | Allows clients that use subsurfaces in synchronized mode to continue processing the event loop even in cases where a frame callback is not delivered from the compositor pending a parent surface commit Change-Id: I7df38afc4080546b60184dacecde321ba8062fac Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
* | / 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>
* | 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>
* 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>