summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/xcb/gl_integrations
Commit message (Collapse)AuthorAgeFilesLines
* xcb: ensure that available glx version is greater than requested one or ↵Aleksei Nikiforov2020-11-071-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | equal to it Otherwise xcb plugin may report that it's supported and later it'd be unable to create opengl context when requested due to too low xcb protocol version available, and thus some important xcb functions missing. Without such change when Qt application is running under x2go it exits with fatal error due to mismatch in requested and supported glx protocol versions. Qt requests glx protocol version 1.4, while x2go currently reports that it support glx protocol but only version 1.2, but Qt uses functions such as glXChooseFBConfig and glXGetVisualFromFBConfig which are available only starting with glx protocol version 1.3 according to glx documentation. With this change, when Qt application is running under x2go, xcb plugin reports that it's not supported and egl plugin is used instead. And egl plugin successfully allows to work with opengl, and thus Qt application is running normally. Pick-to: 5.15 Change-Id: I5c0fb10bd328da68054bfca8e8efde1144789566 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Rename the new platform APIs from QPlatformInterface to QNativeInterfaceTor Arne Vestbø2020-10-073-3/+3
| | | | | | | | | | | | We were already using the 'native' nomenclature when referring to these kinds of APIs, e.g. when talking about native handles, or the existing QPlatformNativeInterface on a QPA level. Using 'native' for the user facing APIs also distinguishes them from the 'platform' backend layer in QPA and elsewhere. Change-Id: I0f3273265904f0f19c0b6d62471f8820d3c3232e Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* CMake: Regenerate projects to use new qt_internal_ APIAlexandru Croitor2020-09-231-2/+2
| | | | | | | | | | | Modify special case locations to use the new API as well. Clean up some stale .prev files that are not needed anymore. Clean up some project files that are not used anymore. Task-number: QTBUG-86815 Change-Id: I9947da921f98686023c6bb053dfcc101851276b5 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Add QXcbWindow platform interfaceTor Arne Vestbø2020-07-201-0/+1
| | | | | | Task-number: QTBUG-84220 Change-Id: I8bb4288f1ac06d77fb4f43ae091fa1712f694eeb Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Move eglconvenience to QtGuiFriedemann Kleint2020-07-137-8/+36
| | | | | | | Task-number: QTBUG-83255 Change-Id: I8a008d8906308dd73a0793db5b88d3a1b6fdaf5c Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Move glxconvenience into QtGuiFriedemann Kleint2020-07-104-4/+2
| | | | | | | | | OpenGL is not quite as dead as initially assumed. Task-number: QTBUG-83255 Change-Id: I953040149812a5258caad5fe6bac0835e1982dd0 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Move qglxconvenience to QtOpenGLFriedemann Kleint2020-07-084-4/+4
| | | | | | Task-number: QTBUG-83255 Change-Id: I7640caf8afbae0a7310a264f333bb3a6cfa3c6ed Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Use QList instead of QVector in pluginsJarek Kobus2020-07-061-3/+3
| | | | | | Task-number: QTBUG-84469 Change-Id: Ic86f4a3000592a1c9ae62e4a83f4fe39832a6b24 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Introduce platform API abstraction for QOpenGLContextTor Arne Vestbø2020-07-027-103/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The API is available by including qopenglcontext.h as usual, but scoped in the QPlatformInterface namespace. The namespace exposes platform specific type-safe interfaces that provide: a) Factory functions for adopting native contexts, e.g. QCocoaGLContext::fromNative(nsContext, shareContext); b) Access to underlying native handles, e.g. openGLContext->platformInterface<QCocoaGLContext>->nativeContext() c) Platform specific functionality, e.g. static QWGLContext::openGLModuleHandle() openGLContext->platformInterface<QEGLContext>->doSomething(); The platform interfaces live close to the classes they extend, removing the need for complex indirection and plumbing, and avoids kitchen-sink modules and APIs such as the extras modules, QPlatformFunctions, or QPlatformNativeInterface. In the case of QOpenGLContext these platform APIs are backed by the platform plugin, so dynamic_cast is used to ensure the platform plugin supports the requested interface, but this is and implementation detail. The interface APIs are agnostic to where the implementation lives, while still being available to the user as part of the APIs they extend/augment. The documentation will be restored when the dust settles. Task-number: QTBUG-80233 Change-Id: Iac612403383991c4b24064332542a6e4bcbb3293 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* glx: Pull out screen numnber from GLXFBConfig instead of QXcbScreenTor Arne Vestbø2020-06-301-1/+7
| | | | | Change-Id: I6b87bb1c3c501613bc147c5f88e0f2d2222b0a50 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* glx: Remove assumption about supporting multiple displaysTor Arne Vestbø2020-06-301-17/+12
| | | | | | | | | We only support one display (X server connection), so there's no reason to have the user pass in the display. We can always use the one we know from the QXCbScreen (which also matches the QXcbIntegration connection). Change-Id: Ifc43dac4c74ba16490d3dee25fc3d43ee053a7d5 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* xcb: remove multi-connection code pathGatis Paeglis2020-06-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This code was introduced in 2011 as an experimental feature and have been untested/unmaintained ever since. It's time to remove it for the following reasons: - It has never been documented in QGuiApplication under "Supported Command Line Options". The intended command line was: ./app -platform xcb:address:display - I am not aware of other toolkits that would provide this functionality - connecting to several X displays simultaneously. - XCB plugin respects the "-display" command line and DISPLAY envvar which should be sufficient. So the "workaround" to get your window on 2 X displays is: ./app -display :0 ./app -display :1 - There are no JIRA bugs where users would complain that this feature does not work. AFAICT it has not worked for years. Almost all functions care only about the "default" connection, and don't attempt to support multi-connection. - This will stop confusing people who want to contribute to the XCB plugin. [ChangeLog][Platform Specific Changes][X11] Connecting to multiple X servers simultaneously within the same application is no longer supported. Task-number: QTBUG-52408 Change-Id: I61ce23480702bb89b02c6028fa0986fe63481978 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Add missing overrideAlexander Volkov2020-05-213-6/+6
| | | | | | Change-Id: I88000e82ecbdc55e621dc8e22aff5e8f55cf9d0e Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Allow multithreaded opengl to be disabledAllan Sandfeld Jensen2020-05-191-0/+4
| | | | | | Pick-to: 5.15 Change-Id: I5bffb6d6844c19adc575d86d5f9846af344a8679 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* CMake: Regenerate projects to match updated plugin APILeander Beernaert2020-04-272-2/+2
| | | | | Change-Id: Iafe0a953e74d7f36ec48fa075b3725dd6466c5e3 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Get rid of QT_OPENGL_ES*Eskil Abrahamsen Blomfeldt2020-04-171-1/+1
| | | | | | | | | | | The QT_OPENGL_ES* macros are leftovers from an earlier, ad hoc configuration system, which has since been replaced by QT_CONFIG. To clean things up in Qt 6, we use the new way instead. Task-number: QTBUG-83467 Change-Id: I578dc7695bff9d5ee303b22e44f60fee22fe0c28 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Regenerate projects to correctly handle private dependenciesAlexandru Croitor2020-02-052-12/+6
| | | | | | | Change-Id: I7d84bc9962bff5c89a90367ae704974c6ce2ec89 Reviewed-by: Qt CMake Build Bot Reviewed-by: Leander Beernaert <leander.beernaert@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Regenerate plugin projects to get new target namesAlexandru Croitor2020-01-272-8/+8
| | | | | | | | | And also to get the original output names (qmake's "TARGET"), so that the plugin file names are as they were in Qt 5. Change-Id: I96a060d1a81693652847857372bec334728cb549 Reviewed-by: Qt CMake Build Bot Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Merge remote-tracking branch 'origin/dev' into merge-devLeander Beernaert2020-01-244-31/+31
|\ | | | | | | Change-Id: I31b761cfd5ea01373c60d02a5da8c33398d34739
| * Replace usages of QVariant::value by qvariant_castOlivier Goffart2019-12-151-1/+1
| | | | | | | | | | | | | | This is done automatically with a clazy check Change-Id: I3b59511d3d36d416c8eda74858ead611d327b116 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * Tidy nullptr usageAllan Sandfeld Jensen2019-12-064-30/+30
| | | | | | | | | | | | | | | | | | | | | | Move away from using 0 as pointer literal. Done using clang-tidy. This is not complete as run-clang-tidy can't handle all of qtbase in one go. Change-Id: I1076a21f32aac0dab078af6f175f7508145eece0 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | Regenerate src/*Alexandru Croitor2019-11-142-4/+4
| | | | | | | | | | | | Change-Id: I0314b4faa1e4860e86198eea4189987e527dfec2 Reviewed-by: Qt CMake Build Bot Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Regenerate everything under ./srcAlexandru Croitor2019-11-122-6/+0
| | | | | | | | | | | | | | Change-Id: Ibdbdc17f8c2ee41356f490dd839a47e1bcf4c586 Reviewed-by: Leander Beernaert <leander.beernaert@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Qt CMake Build Bot
* | Merge remote-tracking branch 'origin/dev' into wip/cmakeAlexandru Croitor2019-10-141-1/+23
|\| | | | | | | Change-Id: I4a78428a8ea273b6960792e3b8043f816fa37fcf
| * Merge remote-tracking branch 'origin/5.13' into 5.14Qt Forward Merge Bot2019-09-131-1/+23
| |\ | | | | | | | | | Change-Id: Idcf8fc1d79bcd84b494d7f43308e6fe82d60e1a4
| | * Handle robustness with OpenGL < 4.0Allan Sandfeld Jensen2019-09-111-1/+23
| | | | | | | | | | | | | | | | | | | | | | | | We need to have the right idea of robustness, so check for extension. Fixes: QTBUG-78107 Change-Id: I26987269e5c50bee20e2e3cc6d75f91a6c9af25e Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* | | Merge remote-tracking branch 'origin/wip/qt6' into wip/cmakeAlexandru Croitor2019-10-111-5/+7
|\| | | | | | | | | | | Change-Id: I3a1d7673c3c20019ab12a2ea0a60f1619920a34c
| * | Merge remote-tracking branch 'origin/5.13' into devQt Forward Merge Bot2019-08-161-5/+7
| |\| | | | | | | | | | Change-Id: Ia3645f92b9debf3e1fe2d972300c7d0dbd649268
| | * Avoid querying unknown RESET_NOTIFICATION_STRATEGY value on GL < 4.0Laszlo Agocs2019-08-141-5/+7
| | | | | | | | | | | | | | | | | | Fixes: QTBUG-55759 Change-Id: Ie2758859a6862a214691a5011761bf549a31a93e Reviewed-by: Christian Strømme <christian.stromme@qt.io>
* | | Regenerate platforms plugins part 3Alexandru Croitor2019-10-083-7/+0
| | | | | | | | | | | | | | | | | | Change-Id: Ibc4feb3187fa1aaa1f073f23aecc1a7bd5a818c3 Reviewed-by: Qt CMake Build Bot Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | Merge remote-tracking branch 'origin/wip/qt6' into wip/cmakeAlexandru Croitor2019-07-112-4/+3
|\| | | | | | | | | | | Change-Id: I715b1d743d5f11560e7b3fbeb8fd64a5e5ddb277
| * | Merge remote-tracking branch 'origin/5.12' into devLiang Qi2019-06-252-4/+3
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: .qmake.conf src/gui/painting/qdrawhelper.cpp src/gui/text/qdistancefield.cpp src/gui/text/qdistancefield_p.h src/network/ssl/qsslsocket_openssl.cpp src/plugins/platforms/android/qandroidinputcontext.cpp src/widgets/styles/qstylesheetstyle.cpp Done-With: Timur Pocheptsov <timur.pocheptsov@qt.io> Change-Id: Ia7daad21f077ea889898f17734ec46303e71fe6b
| | * Track swap interval in QXcbWindowErik Kurzinger2019-06-132-4/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As per GLX_EXT_swap_control, the GLX swap interval is specified on a per-drawable basis. However, QGLXContext only tracks it per-context using the m_swapInterval member. If a new drawable is made current to a context, it is still necessary to call glXSwapIntervalEXT to change the swap interval, even if it has been previously called for the same context with a different drawable. However, currently, QGLXContext::makeCurrent doesn't do this if its m_swapInterval field matches the new swap interval. This change removes m_swapInterval from QGLXContext, instead tracking it in QXcbWindow. This still avoids unnecessary calls to glXSwapIntervalEXT, while ensuring the swap interval is always set for new window drawables. Change-Id: Idc34101476c6af618059f6f3d8925dee743994a3 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* | | Re-generate the CMakeLists.txt and add the prev filesSimon Hausmann2019-06-052-3/+7
| | | | | | | | | | | | | | | Change-Id: I93ea196bdd5807bccebf81e72332966288a35a4f Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* | | Merge remote-tracking branch 'origin/dev' into wip/cmakeAlexandru Croitor2019-06-031-1/+3
|\| | | | | | | | | | | | | | | | | Take 5. Change-Id: Ifb2d20e95ba824e45e667fba6c2ba45389991cc3
| * | Merge remote-tracking branch 'origin/5.13' into devLiang Qi2019-04-241-1/+3
| |\| | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/gui/util/qshaderformat.cpp src/gui/util/qshaderformat_p.h src/widgets/graphicsview/qgraphicsitem_p.h Change-Id: Idafd88eb9a0a15b4af29f6143d009c1ec8ceecca
| | * Fix threaded QOpenGL when robustness is requestedAllan Sandfeld Jensen2019-04-161-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | If the shared context had robustness set then all child contexts must as well, otherwise we will fallback to a non-shared context breaking threaded rendering. Change-Id: Ie5526e632ad21289b6164c1ca06e54ec714187c7 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* | | cmake: Fix xcb_glx buildAlbert Astals Cid2019-05-031-1/+1
| | | | | | | | | | | | | | | | | | | | | Use the actual cmake library target name Change-Id: Icda1d232e3b920bf33ebceb00f39682050f7dedd Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* | | cmake: add CMakeLists.txt files for xcb/gl_integrationsLiang Qi2019-05-023-0/+92
|/ / | | | | | | | | Change-Id: I34bc3c0ab4b4b686fe57149a3bb69e2d2cafd551 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* | Merge remote-tracking branch 'origin/5.13' into devFriedemann Kleint2019-03-261-0/+18
|\| | | | | | | Change-Id: I38389a69411f4549fed432f1181dbe23398b34a2
| * Blacklist nouveau and llvmpipe for multithreadingAllan Sandfeld Jensen2019-02-261-0/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | After removing Mesa drivers from being blank blacklisted, we still need to blacklist nouveau specifically due to their lack of proper locking: https://bugs.freedesktop.org/show_bug.cgi?id=91632 llvmpipe is similarly blacklisted for now, as we lack enough information to know if the underlying issue behind QTCREATORBUG-10666 has been solved. Fixes: QTBUG-73715 Change-Id: I1a60b562cd9db94fa8462b922d6bfeebf0088dc5 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* | Widen out parameter "result" of the native event filters for Qt 6Friedemann Kleint2019-03-221-0/+4
| | | | | | | | | | | | | | | | | | LRESULT on Windows 64 is a 64bit type, adapt filter functions of QAbstractNativeEventFilter and QAbstractEventDispatcher accordingly. Fixes: QTBUG-72968 Change-Id: Ie53193e355f0b8e9bd59fa377f43e2b4664a2ded Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | More nullptr usage in headersKevin Funk2019-03-141-1/+1
|/ | | | | | | | | | | Diff generated by running clang-tidy's modernize-use-nullptr checker on the CMake-based Qt version. Skipping src/3rdparty, examples/, tests/ Change-Id: Ib182074e2e2fd52f63093f73b3e2e4c0cb7af188 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* qtlite: Fix build libs with -no-feature-regularexpressionMikhail Svetkin2019-01-271-1/+5
| | | | | Change-Id: I427ff1f8f4986fbf466aba60a9d3de614c1e006f Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* configure: add XCB GL integration featuresGatis Paeglis2019-01-031-2/+2
| | | | | | | | | This way Qt builders can see if everything has been configured properly for XCB GL integrations at configure time, instead of at the end of the build process. Change-Id: I00740cc2edd7f6ecfcda0ddfb22649d1b4db4aa2 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
* Remove need for glXGetProcAddressARBMichal Klocek2018-11-221-42/+1
| | | | | | | | We do already require glXGetProcAddress in line 241. Fixes: QTBUG-71488 Change-Id: Id0f3bc256a71097241b99d2dcba927c1165e980e Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
* Merge remote-tracking branch 'origin/5.11' into 5.12Liang Qi2018-11-191-2/+0
|\ | | | | | | | | | | | | Conflicts: src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm Change-Id: I66a08c770767a93cd26535689e3e7806486aab06
| * Purge some unused code for the OpenGL library nameEdward Welbourne2018-11-121-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | We had a global static, a setter for it (that's nowhere used within Qt code) and a getter for it whose only use was commented out. Neither was declared in any header; the getter's commented-out client had a local extern declaration at the point of (non-)use. Found while reviewing a change to the next few lines of code after the commented-out use of the getter. Change-Id: I393d56219cb7dd7cf836ca80e1bdd605a2914003 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io> Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
* | White-list more recent Mesa version for multi-threadingAllan Sandfeld Jensen2018-11-061-35/+25
| | | | | | | | | | | | | | | | | | | | The issue we had has been fixed for years, but was unfortunately in libxcb which we can't check at runtime. Instead assume very recent Mesa drivers works. Change-Id: I5fdd726b480b77edbedc0f369ae82ab4acbb77c9 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io> Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* | xcb: cleanup QXcbConnection::handleXcbEvent()Gatis Paeglis2018-08-161-2/+2
|/ | | | | | | | | | | | | | | - the usage of 'handled' variable was a mess. - remove "generic" from API names. The naming was probably influenced too much from underlying C API (xcb_generic_event_t): - handleGenericEvent() -> handleNativeEvent() to be consistent with QWindow::nativeEvent(). - dropped unnecessary 'long *result' from signature. It is useful only on MS Windows. - genericEventFilterType() -> nativeEventType(), it *is* an event type, not a filter type. - XCB_CLIENT_MESSAGE was not passed to QWindow::nativeEvent(), which is done via HANDLE_PLATFORM_WINDOW_EVENT. - minor: added some 'auto's where it makes sense and improved some variable names. Change-Id: Id1c9896054e2dbd9a79bacd88394149c8cf2cdea Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>