summaryrefslogtreecommitdiffstats
path: root/src/hardwareintegration/client
Commit message (Collapse)AuthorAgeFilesLines
...
* | Merge remote-tracking branch 'origin/5.15' into devLiang Qi2020-04-293-3/+3
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: tests/auto/client/xdgoutput/tst_xdgoutput.cpp Regenerated CMake projects. Removed duplicate wayland source in tests/auto/client/xdgoutput/xdgoutput.pro. It's still referenced via the included shared.pri file. Regenerated the CMake project to adapt to that. Otherwise the CMake project fails to configure due to duplicate rules with a error like the one below CMake Error at src/compositor/Qt6WaylandCompositorMacros.cmake:13 (add_custom_command): Attempt to add a custom rule to output tests/auto/client/xdgoutput/wayland-xdg-output-unstable-v1-server-protocol.h.rule Also use a workaround fix for configuring CMake standalone tests due to regression introduced by dd7e40b1086020f6a054957f4972720cd684 in qtbase. Change-Id: Ib364b851a1fa828c153efbf8653c9e4ef5e618cd
| * Test the EGL wayland platform extensions before using themSamuli Piippo2020-03-053-3/+3
| | | | | | | | | | | | | | | | | | The Khronos headers may be recent enough to have the ifdefs but implementation might still be missing on some platforms. Don't use the extensions unless the configure test passes. Change-Id: I23129115729567fa92bc23da099d27df598fc206 Reviewed-by: James McDonnell <jmcdonnell@blackberry.com>
* | Replace QT_OPENGL_ES_2 with QT_CONFIGEskil Abrahamsen Blomfeldt2020-04-171-1/+1
| | | | | | | | | | | | | | | | | | QT_CONFIG is the new and robust way of checking the build configuration of Qt. Task-number: QTBUG-83467 Change-Id: Ia58b308b9b8a242df479cbd01d088204eed73a75 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | Merge remote-tracking branch 'origin/dev' into wip/cmakeAlexandru Croitor2020-03-2611-15/+27
|\ \ | | | | | | | | | Change-Id: Ia76896a4d06240ccc3d95ba478b6ce273c7a0be2
| * | Fix build after QOpenGLShaderProgram library moveSimon Hausmann2020-03-161-1/+1
| | | | | | | | | | | | | | | | | | | | | The class is now in QtOpenGL. Change-Id: Ifef8dfa753fb5d337d516a33fc49e610c7c8c6eb Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
| * | Fix build: Add dependency on OpenGL moduleJohan Klokkhammer Helsing2020-01-306-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Several of the QOpenGL* classes we depend on has moved to QtOpenGL, add the dependency and fix the include paths. Task-number: QTBUG-74409 Change-Id: Iab7949dd67befaa71cf2cfa041771e93f4e47160 Reviewed-by: Johan Helsing <johan.helsing@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * | Merge remote-tracking branch 'origin/5.15' into devQt Forward Merge Bot2020-01-183-1/+13
| |\| | | | | | | | | | Change-Id: Ibd911372386f9f5fddb13afa05b84af6fe422fdd
| | * Enable QtWayland for QNXJames McDonnell2020-01-133-1/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make EGL 1.5 with EGL_PLATFORM_WAYLAND_EXT a requirement for QNX and add some EGL 1.5 code alternatives. Avoids the need to deal with incompatibility problems between the QNX native display/window type and Wayland display/window type. Change-Id: Ib26a020e1f8c7f570c6af08697d8c8153c887294 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> Reviewed-by: Johan Helsing <johan.helsing@qt.io> Reviewed-by: Dan Cape <dcape@qnx.com>
| * | Merge remote-tracking branch 'qt/5.15' into devPaul Olav Tvete2020-01-096-7/+7
| |\| | | | | | | | | | Change-Id: Id0bb84667482232cb648f4984e9f9e2ea4c360c6
| | * Merge remote-tracking branch 'origin/5.14' into 5.15Qt Forward Merge Bot2019-12-101-1/+1
| | |\ | | | | | | | | | | | | Change-Id: I1f9418f4f5783291286417f6faf6277e0679007c
| | | * Client: really use OpenGL ES 2 API for decoration blitterPeter Seiderer2019-12-041-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Really use (as the comment states) the OpenGL ES 2 API for the decoration blitter. Task-number: QTBUG-80356 Change-Id: I4c923343e721a824521fb9b2b36be5d2de984325 Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io> Reviewed-by: Johan Helsing <johan.helsing@qt.io>
| | * | Client: Support running with no screensJohan Klokkhammer Helsing2019-11-125-6/+6
| | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | [ChangeLog][QPA plugin] The QPA plugin now supports running with no screens attached. This is handled by adding a fake screen when the last screen is disconnected, similarly to what the other QPA plugins do. Fixes: QTBUG-79111 Change-Id: I4a0e023ae784217dd030f0c62f12487fdff4825c Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* | / Configure: Remove libs.glxJohan Klokkhammer Helsing2019-09-251-1/+1
|/ / | | | | | | | | | | | | | | | | | | | | | | libs.glx just checks if we can can link against x11 and gl, this should already be covered by features.xlib and features.opengl. Also, it probably makes sense to not build these plugins if Qt is configured with no-feature-xlib. Task-number: QTBUG-78177 Change-Id: I56ccdc80a4601ccbf03cc5e65abe0adb3a579f99 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* / Bump module version to 6.0.0Simon Hausmann2019-07-113-10/+10
|/ | | | | | | And fix the build at the same time. Change-Id: I71f1ef2b8777fe514107a27c9ef6ee4c702a74c0 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Merge remote-tracking branch 'origin/5.13' into devJohan Klokkhammer Helsing2019-05-073-16/+13
|\ | | | | | | | | | | | | | | Conflicts: src/client/qwaylanddisplay_p.h src/client/qwaylandwindow.cpp Change-Id: I50eb5c83a8b81e4bdb032b68d41f429b17d0a74d
| * Merge remote-tracking branch 'origin/5.12' into 5.13Liang Qi2019-05-023-16/+13
| |\ | | | | | | | | | | | | | | | | | | Conflicts: src/client/qwaylandwindow_p.h Change-Id: Ic4104c48267d1682bb58d6b38afc833c39515eae
| | * Client: Full implementation for frame callbacks (second try)Johan Klokkhammer Helsing2019-04-243-16/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Wayland plugin now takes full control over delivering update request and implement frame callbacks for both egl and shm. [ChangeLog][QPA plugin] The non-blocking version of eglSwapBuffers is now used, if supported. This fixed a bug where minimized windows would block the event loop. [ChangeLog][QPA plugin] Windows that don't get frame callbacks from the compositor within 100 ms are now set as not exposed. This should stop most clients from rendering unnecessary frames to minimized or hidden windows. Also, when we relied on the QPA version of requestUpdate, we would sometimes deliver one update request while we were waiting for a frame callback. When we implement the fallback timer ourselves we can make sure we only deliver the fallback if there are no pending frame callbacks. QtQuick and other applications often depend on blocking swapBuffers to throttle animations. If the context's surface format has a non-zero swapInterval, try to emulate a blocking swap. Fixes: QTBUG-69077 Change-Id: I3c6964f31a16e9aff70b8ec3c5340e640a30fef2 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* | | Merge remote-tracking branch 'origin/5.13' into devLiang Qi2019-04-102-148/+59
|\| | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5.cpp Done-with: Johan Klokkhammer Helsing <johan.helsing@qt.io> Change-Id: Ia6fa28454f681b4965b5e18f635cb8c40da316f3
| * | Use a dedicated EGLContext for the decorations blitterGiulio Camuffo2019-04-052-148/+59
| | | | | | | | | | | | | | | | | | | | | | | | | | | This allows to drop all the StateGuard code, reduce OpenGL state changes when blitting and to also support windows that requested an OpenGL Core context. Change-Id: Ie507a14a04b3d26cdf31f68973057553fa8493bf Reviewed-by: Johan Helsing <johan.helsing@qt.io>
* | | Merge remote-tracking branch 'origin/5.13' into devQt Forward Merge Bot2019-03-292-2/+3
|\| | | | | | | | | | | Change-Id: I735eb66a8469216029a1225080f49bfdcd3f0732
| * | BRCM: fix namespace confusionGeorg Leugner2019-03-222-2/+3
| | | | | | | | | | | | | | | Change-Id: I146dd41d54889af694b829bf1e6d47e03e892b27 Reviewed-by: Johan Helsing <johan.helsing@qt.io>
* | | Merge remote-tracking branch 'qt/5.13' into devPaul Olav Tvete2019-03-211-0/+1
|\| | | | | | | | | | | Change-Id: I3dc204fcaa71c01a80b0c622443012eb07964431
| * | Merge remote-tracking branch 'origin/5.12' into 5.13Qt Forward Merge Bot2019-02-161-0/+1
| |\| | | | | | | | | | Change-Id: Ifb1c6c64abbb5c453092eeb1aff91572b57de410
| | * Client xdg-shell: Fix crash when switching popupsJohan Klokkhammer Helsing2019-02-121-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The call to flushWindowSystemEvents() sometimes caused new popups to be shown in the middle of hiding another. I.e. if multiple events show and hide surfaces, they would be shown/hidden in opposite order of their corresponding events. QMenus sometimes suffered from this (can be seen with the qopenglwidget example from qtbase). When the flush was added 5 years ago in 50f43a0c5, it was to "reduce the chances of seeing a bad frame". I don't see any rendering artifacts, though, and I can't find any bug report on it. So let's hope it's safe to remove the hack. [ChangeLog][QPA plugin] Fixed a crash that sometimes happened when switching popups. Also adds more info to the workaround warning message that appears when a popup grab is attempted and there already is another grabbing popup that is not the parent. Fixes: QTBUG-73524 Change-Id: Ibfcbb48c4bbe295c2be1a30add2d7e05cad398c5 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* | | Add server buffer integration based on VulkanPaul Olav Tvete2019-03-183-0/+327
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Using NVIDIA's Vulkan/GL interop function: glGetVkProcAddrNV [ChangeLog] Added Vulkan-based server buffer integration for NVIDIA EGLStreams. Change-Id: I500f80ff3b00a9585178976d8e400baa38e89ef6 Reviewed-by: Johan Helsing <johan.helsing@qt.io>
* | | Client: Make QWaylandWindow's wl_surface inheritance privateJohan Klokkhammer Helsing2019-03-141-3/+2
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QWaylandWindow inheriting wl_surface is a leftover from the old days, and today it is sometimes causing great problems. Especially on xdg_shell and other shells where the wl_surface needs to recreated with a different role if the QWindow::type changes. This is currently worked around by calling reset() on the surface, which will destroy the wl_surface, and emit some necessary events and signals. However, much of the rest of the code still assumes that a QWaylandWindow maps directly to a single wl_surface which won't change over the lifetime of the QWaylandWindow. Today, it would make sense to implement this with composition rather than inheritance. This is a major undertaking and so this is the first small step; hide the inheritance in QWaylandWindow's public API. This makes it much more visible when and where the rest of the QPA plugin is using it, so we can eventually move it into its own class later. Task-number: QTBUG-74373 Change-Id: I257729e33c3a5368cef4bb1e16148ba392e65bd2 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
* | Client: Fix incorrect decoration size when QT_SCALE_FACTOR is setJohan Klokkhammer Helsing2019-01-301-2/+2
| | | | | | | | | | | | | | | | | | [ChangeLog][QPA plugin] Fixed a bug where window decorations were to small for for the content when QT_SCALE_FACTOR was set. Fixes: QTBUG-72993 Change-Id: I1ed26e038c27f7c4454a6bcc04f0849e4af789e7 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* | Merge remote-tracking branch 'origin/5.12' into devLiang Qi2019-01-221-8/+21
|\| | | | | | | | | | | | | | | | | Conflicts: .qmake.conf src/3rdparty/protocol/qt_attribution.json src/client/qwaylandintegration.cpp Change-Id: I475889f2817c7094b68a2948fdd34ddf8b0c486f
| * Fix black client windows when not using window decorations on NVIDIADominik Holland2019-01-081-1/+6
| | | | | | | | | | | | | | | | | | | | QWaylandGlContext::makeCurrent() tries to be smart and only call eglMakeCurrent() if really needed. This causes problems on NVIDIA where the call is always needed. Change-Id: I08d881d69f79a0fd4ea83a65780052e269a566be Task-number: QTBUG-71697 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
| * Revert "Client: Full implementation for frame callbacks"Johan Klokkhammer Helsing2019-01-081-7/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This caused regressions because QtQuick depends on swapBuffers for throttling animations. We probably need to emulate a blocking swapBuffers and continue after a timeout, but until we have a patch for this, revert this to avoid releasing a regression. This brings back the bug with a frozen event loop when a surface is waiting for a frame callback, but this is preferable to a regression. This reverts commit 1dc85b95ab0adc1e805d059e2c35c671ef790011. Fixes: QTBUG-72578 Change-Id: If6435a947aae5e9fd775404649a392bfafe9130a Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* | Member init for some variables that are not covered by constructorsJohan Klokkhammer Helsing2019-01-166-8/+8
| | | | | | | | | | | | | | Where it makes sense, default init variables to sensible values Change-Id: Ie2aa6ab79a6a3c8322bb0ff804f340f7ffd1c1d1 Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
* | Merge remote-tracking branch 'origin/5.12' into devLiang Qi2018-12-223-18/+14
|\| | | | | | | | | | | | | | | Conflicts: README src/hardwareintegration/client/xcomposite_share/xcomposite_share.pri Change-Id: I7cbbf39916821f0f1749e3ccab3151f68f4aa1ac
| * Client: Full implementation for frame callbacksJohan Klokkhammer Helsing2018-12-131-15/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Wayland plugin now takes full control over delivering update request and implement frame callbacks for both egl and shm. Fixes two bugs: [ChangeLog][Client] The non-blocking version of eglSwapBuffers is now used. This fixed a bug where minimized windows would block the event loop. Also, when we relied on the QPA version of requestUpdate, we would sometimes deliver one update request while we were waiting for a frame callback. When we implement the fallback timer ourselves we can make sure we only deliver the fallback if there are no pending frame callbacks. Fixes: QTBUG-69077 Change-Id: I2d3a6896c32e63d8520b57448a3601a817816a91 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
| * Specify X11 dependency explicitlyPaul Olav Tvete2018-12-131-1/+1
| | | | | | | | | | | | | | Fixing build issue now that XComposite no longer pulls in X11. Change-Id: I4c5e77188cf167716aa64f2575d70ac2ca37608b Reviewed-by: Johan Helsing <johan.helsing@qt.io>
| * Fix scaling if wrong attached window size is returnedKimmo Ollila2018-12-111-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | Some drivers may return wrong size from wl_egl_window_get_attached_size and can therefore ignore wl_egl_window_resize calls. This patch introduces a new env variable QT_WAYLAND_DISABLE_RESIZECHECK to skip the size check and to force resizing of egl window on create and resize events. Task-number: QTBUG-70079 Change-Id: I9be97480088c63ae0a6dc3d1d1e026b0683a627e Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> Reviewed-by: Johan Helsing <johan.helsing@qt.io>
* | Client: Improve logging for wayland-eglJohan Klokkhammer Helsing2018-11-071-4/+4
| | | | | | | | | | | | | | Use logging categories, and print error code when eglInitialize fails. Change-Id: Iacba3b74a5dad23aba2309919fac7662967c94d7 Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
* | Merge remote-tracking branch 'origin/5.12' into devQt Forward Merge Bot2018-10-092-10/+10
|\| | | | | | | Change-Id: Ib4c65db63c2f3119fc7c157d4353c4e0ecebefb0
| * Clean up ShmServerBuffer's unused and shadowing membersv5.12.0-beta2Johan Klokkhammer Helsing2018-10-092-10/+10
| | | | | | | | | | Change-Id: I588ccc782f593ec83a87f75bd88d98f873366395 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* | Don't include system versions of wayland protocolJohan Klokkhammer Helsing2018-10-0310-12/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | wayland-client.h and wayland-server.h includes protocol generated for the version of wayland.xml corresponding to the libwayland version. This becomes a problem when we want to support a version of wayland.xml that's newer than the system libwayland. The solution is to include wayland-client-core.h and wayland-client-server.h instead. These headers don't include any wayland-scanner generated code, so we can safely compile and link code generated against the version of wayland.xml that we ship. [ChangeLog] Code generated by qtwaylandscanner now includes wayland-client-core.h and wayland-server-core.h instead of wayland-client.h and wayland-server.h. This might break source compatibility for code using custom wayland extensions. Fixes: QTBUG-70553 Change-Id: Ice0cdb60ecc4f936acc0e158b96f7978549f62c1 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* | Merge remote-tracking branch 'origin/5.12' into devQt Forward Merge Bot2018-10-021-1/+2
|\| | | | | | | Change-Id: I4bd7389958fcee8b16d131625280c7d125894212
| * Client: Fix deadlock for xdg-shell when makeCurrent is called earlyJohan Klokkhammer Helsing2018-09-261-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | If makeCurrent was called before the window was exposed, it would disable resizing, which would block the window from applying the configure which the client needs to ack in order to be exposed. Fixes the issue by locking resizing only if the window is exposed. Change-Id: I0e6b30bc4b08886fb95d502cac0b735d4bb732d2 Fixes: QTBUG-70646 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* | Merge remote-tracking branch 'origin/5.12' into devQt Forward Merge Bot2018-09-253-0/+346
|\| | | | | | | Change-Id: I66c91dfde14a7c252a02777cfcf0396b1d05e854
| * Add server buffer integration using Linux dma-bufPaul Olav Tvete2018-09-213-0/+346
| | | | | | | | | | | | Fixes: QTBUG-70494 Change-Id: Iaa4990fe9d39a1f9fb81f5e5f19039aa2e52dcac Reviewed-by: Johan Helsing <johan.helsing@qt.io>
* | Merge remote-tracking branch 'origin/5.12' into devQt Forward Merge Bot2018-09-181-0/+3
|\| | | | | | | Change-Id: I27420ad626a0c6a18b9a11c6ffdc102006fe78e0
| * Workaround for crash in QWaylandGlContext::makeCurrentv5.12.0-alpha1Johan Klokkhammer Helsing2018-09-121-0/+3
| | | | | | | | | | | | | | | | | | | | QOpenGLContext::makeCurrent no longer sets the current context before calling the platform function. Task-number: QTBUG-70511 Change-Id: I67766d43b1142b0742f655b5c2728f4c87fbfb5f Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* | Merge remote-tracking branch 'origin/5.12' into devQt Forward Merge Bot2018-09-112-4/+7
|\| | | | | | | Change-Id: I40724946222f7e51b3cf36a2ce1cd60d7801f41a
| * Fix eglGetError call in error handlingJohan Klokkhammer Helsing2018-09-071-1/+1
| | | | | | | | | | Change-Id: I215db1d8bb321e0fe9d49d09c8b5f0d2492e901d Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
| * Fix regression in QWaylandGlContext::makeCurrent for offscreen surfacesJohan Klokkhammer Helsing2018-09-042-4/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [ChangeLog][QPA plugin] Fixed a bug where offscreen surfaces would get surfaceless EGL contexts. Fixes a regression in in bf09c7a1. The call, window->updateSurface(window->isExposed()), is problematic because offscreen textures are never exposed, and consequently, eglSurface will be EGL_NO_SURFACE, which will then create a surfaceless context in the call: eglMakeCurrent(m_eglDisplay, eglSurface, eglSurface, m_context) This reverts to the old behavior of always trying to create an EGL surface, unless the window doesn't have a valid wl_surface, in which case it doesn't make sense (which is what bf09c7a1 fixed, QTBUG-65553). Task-number: QTBUG-70242 Task-number: QTBUG-68605 Task-number: QTBUG-67601 Change-Id: I44b07bb8bf4b33c73c6379a1de8e9e5cfd220b51 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* | Remove redundant virtualJohan Klokkhammer Helsing2018-09-051-1/+1
|/ | | | | Change-Id: Ie8b76534a1c7904abd6b2e1e594174004847b28c Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Fix renderableType of requested wayland surfaceMichal Klocek2018-06-151-1/+1
| | | | | | | | | Commit 815206 fixed renderableType of wayland gl context, keep for sanity also correct renderableType for surface. This is most likely never used, but makes more sense to keep it in sync. Change-Id: I8e8cae1feba20054aac94be246e449ccb0974240 Reviewed-by: Johan Helsing <johan.helsing@qt.io>