| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| |
| | |
Change-Id: I31b761cfd5ea01373c60d02a5da8c33398d34739
|
| |\
| | |
| | |
| | | |
Change-Id: Ia2ce994c42adc010c453edaeea57f672556958f6
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
...not the connector. Passing the connector id to drmModeGetEncoder()
is clearly an oversight.
Task-number: QTBUG-80976
Change-Id: I80a6088fca558d1637bd01b0aca8c4a8ba3b25f5
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
|
| |\|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
src/corelib/tools/qhash.h
src/gui/kernel/qevent.h
src/widgets/kernel/qshortcut.cpp
src/widgets/kernel/qshortcut.h
Change-Id: If61c206ee43ad1d97f5b07f58ac93c4583ce5620
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This was used to support QFlags f = 0 initialization, but with 0 used
as a pointer literal now considered bad form, it had been changed many
places to QFlags f = nullptr, which is meaningless and confusing.
Change-Id: I4bc592151c255dc5cab1a232615caecc520f02e8
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The atomic modesetting support was not prepared for page flips being
issued from different (per-screen) threads.
This could be seen with the threaded render loop of Qt Quick: having a
QQuickWindow per screen means having a dedicated render thread for each
screen. QKmsDevice used simply instance variables to keep track of the
request. This leads to the commit failing with EBUSY sooner or later.
Make the atomic request and related variables thread local.
This prevents failing drmModeAtomicCommit() with 2 or more screens and
the threaded render loop. It does not fix other potential issues when
waiting for page flips to complete, that is to be tackled separately.
Task-number: QTBUG-74953
Change-Id: I2dac10d5e9bdc0cb556ac78c9643c96d40d692e4
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Otherwise we end up with using the same plane for multiple crtcs, which
fails (with atomic - planes have no importance when atomic is not enabled).
This fixes systems where we run with atomic enabled and there are multiple
primary planes with their possible_crtcs matching multiple crtcs.
Task-number: QTBUG-74953
Change-Id: I8bcbdd389265d09f8851187881102fb5b9a83b5c
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
With atomic enabled (QT_QPA_EGLFS_KMS_ATOMIC=1) the plane chosen for
a crtc becomes important. The current logic is pretty broken when there
are multiple planes available with many of them marked as being supported
by multiple CRTCs. Choosing the same plane for multiple crtcs results in
failing the atomic commit. This happens with a RPi4 with two screens
connected, for example. (because there are 2*3 planes: one primary, one
overlay, one cursor for each screen, but Qt is trying to use the same
primary plane with both CRTCs)
The issue does not surface in special environments where there is one
(dedicated) plane per crtc exposed by drm, but becomes apparent on a PC
or on the RPi where the setup described above is the common case.
As a temporary solution allow doing the following:
export QT_QPA_EGLFS_KMS_PLANES_FOR_CRTCS="49,28:78,57"
This would then force using plane id 28 for crtc id 49, and plane id 57
for crtc id 78. (the ids can be discovered either from the eglfs debug
logs, or by checking /sys/kernel/debug/dri/<N>/state)
This is to be complemented with a fix for picking a unique primary plane
for all CRTCs but that's going to be a separate patch. Allowing a manual
override is important regardless since it helps troubleshooting.
Task-number: QTBUG-74953
Change-Id: Ie03f80dac31813f2c4489235d435769dd3d3883e
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | | |
Change-Id: I0314b4faa1e4860e86198eea4189987e527dfec2
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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
|
|\| |
| | |
| | |
| | | |
Change-Id: I4a78428a8ea273b6960792e3b8043f816fa37fcf
|
| |\ \
| | |/
| |/|
| | |
| | |
| | |
| | | |
Conflicts:
src/gui/image/qpicture.cpp
Change-Id: Iecf79f96f54dc23bd703e6c4c634f909b796d7b3
|
| |\ \
| | |/
| |/|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
src/corelib/codecs/qicucodec.cpp
src/dbus/qdbusserver.cpp
src/gui/painting/qbezier.cpp
src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmscreen.cpp
src/plugins/printsupport/cups/qppdprintdevice.cpp
Change-Id: I2703128bb64baf5580fbc2c2061b55b0f0611d2a
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Follow up to 091a386eaf91ad8932332a8aefc2df793de59f6c
Defaulting to querying from the egl config is fine, but dropping support
for the "format" key in the output list in the json config file is not
ideal.
Task-number: QTBUG-76748
Change-Id: I25dc99369d118c300cdef25b464426f6be85453b
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
|\| |
| | |
| | |
| | | |
Change-Id: I3a1d7673c3c20019ab12a2ea0a60f1619920a34c
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Add support for specifying the blend operation used when alpha-
blending KMS planes. Only available with atomic modesetting.
Set the environment variable QT_QPA_EGLFS_KMS_BLEND_OP to
the enum value of the 'blend_op' property.
Task-number: QTBUG-75659
Change-Id: If0ef5ba314b88adb530113b608d20fc9c027c5ec
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
No point in warning on every application startup that framebuffer size
setting is not available. Just ignore it then.
Change-Id: Id36ff0ab9560b99cc3f2d56a4ee51455cfa43cb7
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | | |
Change-Id: I6f9d6b09a0b62171adedffa326b86f57e42ad449
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Qt CMake Build Bot
|
|\| |
| | |
| | |
| | | |
Change-Id: I50ac36b8803c296998149e98cc61e38687cdd14b
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This is basically a backport from weston:
https://github.com/wayland-project/weston/commit/75487c2560dfca033d8d23649914efb4199356dd
It states that:
- preserving the existing CRTC -> encoder -> connector routing will
make the startup faster
- the existing routing may be set according to some device limitations
Since the QtWayland implementation appears to be based off an old
version of weston (maybe pre-2.0), this patch might look different from
the latest weston implementation. But the idea stays the same.
FWIW, this works around the issue I've seen on Renesas R-Car E3 (aka
Ebisu) board. Without this patch, VGA1+HDMI1 setup would fail because
the device reported possible_crtcs=1 (meaning {crtcs[0]}) for the second
screen "HDMI1", but the crtcs[0] was already taken by the first screen
"VGA1".
No usable crtc/encoder pair for connector "HDMI1"
With this patch, the crtcs[1] is paired with "VGA1" (as it is the
existing routing), so the crtcs[0] can be allocated for "HDMI1".
Change-Id: Ibd304a8b5efbe4a8aa94b2c5697fe2b399386280
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Generate a pri file for public and private interfaces, but map CONFIG +=
internal_module to a cmake option and skip the former if set.
Task-number: QTBUG-75666
Change-Id: I3f4baf1277094f4c22149a9e8769734baf9a235f
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
|
| | |
| | |
| | |
| | |
| | | |
Change-Id: I93ea196bdd5807bccebf81e72332966288a35a4f
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
|
|\| |
| | |
| | |
| | |
| | |
| | | |
Take 5.
Change-Id: Ifb2d20e95ba824e45e667fba6c2ba45389991cc3
|
| |\|
| | |
| | |
| | | |
Change-Id: Ia279fc4a8226626041c772902a07b2f90f37b53b
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Atomic being supported and atomic being requested are two different things.
(the latter is only true when QT_QPA_EGLFS_KMS_ATOMIC is set)
Log accordingly since this can be very important to know when investigating
problems.
Change-Id: I6947d18e7c0eaef3fe160095cb046770f9c93efe
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
| |\|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
src/corelib/global/qfloat16.cpp
src/corelib/global/qfloat16.h
src/plugins/platforms/windows/qwindowswindow.cpp
Change-Id: I0938aaa6a9771f55e48c95ed29f6f5291431b947
|
| | |
| | |
| | |
| | |
| | |
| | | |
Change-Id: I3519447af657bdbb7304aca272de416104dca0f9
Fixes: QTBUG-75730
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
| |\|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
src/gui/util/qshaderformat.cpp
src/gui/util/qshaderformat_p.h
src/widgets/graphicsview/qgraphicsitem_p.h
Change-Id: Idafd88eb9a0a15b4af29f6143d009c1ec8ceecca
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
"off" is not quite suitable because that turns the output off, as the name suggests.
Disconnected outputs are skipped automatically - it is natural to have a way to
request the same for connected outputs as well.
Task-number: QTBUG-74871
Change-Id: I8bea83428ae0424601b19482b6e6ef809491d0fb
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
| | |
| | |
| | |
| | |
| | | |
Change-Id: I2608275ca7cd5315e7ffdffbb25f78e98fbf9bc3
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This change introduces a new function called qt_find_package()
which can take an extra option called PROVIDED_TARGETS, which
associates targets with the package that defines those targets.
This is done by setting the INTERFACE_QT_PACKAGE_NAME and
INTERFACE_QT_PACKAGE_VERSION properties on the imported targets.
This information allows us to generate appropriate find_dependency()
calls in a module's Config file for third party libraries.
For example when an application links against QtCore, it should also
link against zlib and atomic libraries. In order to do that, the
library locations first have to be found by CMake. This is achieved by
embedding find_dependency(ZLIB) and find_dependency(Atomic) in
Qt5CoreDependencies.cmake which is included by Qt5CoreConfig.cmake.
The latter is picked up when an application project contains
find_package(Qt5Core), and thus all linking dependencies are resolved.
The information 'which package provides which targets' is contained
in the python json2cmake conversion script. The generated output of
the script contains qt_find_package() calls that represent that
information.
The Qt5CoreDependencies.cmake file and which which dependencies it
contains is generated at the QtPostProcess stop.
Note that for non-static Qt builds, we only need to propagate public
3rd party libraries. For static builds, we need all third party
libraries.
In order for the INTERFACE_QT_PACKAGE_NAME property to be read in any
scope, the targets on which the property is set, have to be GLOBAL.
Also for applications and other modules to find all required third
party libraries, we have to install all our custom Find modules, and
make sure they define INTERFACE IMPORTED libraries, and not just
IMPORTED libraries.
Change-Id: I694d6e32d05b96d5e241df0156fc79d0029426aa
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
|
|\| |
| | |
| | |
| | | |
Change-Id: I176c40d031be26a1dd1cf08843e448a660598783
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Mark obsolete functions in QString as deprecated so they can be removed
with Qt6:
- QString::sprintf()
- QString::vsprintf()
Change-Id: I9b7748db95291c34b95ff3ad3e3aabc8215aeaae
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: If0d734f80f3c6252c6cd7dedcba77352ee909178
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
|
|/
|
|
|
| |
Change-Id: I3e1cdb4b9dd26a74262a183d8137ed2011a6e52d
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
src/plugins/platforms/cocoa/qcocoawindow.mm
src/plugins/platforms/xcb/qxcbintegration.cpp
Conflicts git missed:
src/plugins/platforms/qnx/qqnxglcontext.cpp
Change-Id: I0582cdc9e66e43efe79038b9c43d4f9572ac88fc
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The types have the same size. So it's stupid for it to make the issue a
warning...
qkmsdevice.cpp:737:88: error: format specifies type 'unsigned long long' but the argument has type '__u64' (aka 'unsigned long') [-Werror,-Wformat]
Change-Id: I117816bf0f5e469b8d34fffd153e640b62bef635
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This adds the ability to specify a ZPOS property for the eglfs plane
ZPOS will allow to control the relative position between eglfs layer
and the other layers.
It is bound to using QT_QPA_EGLFS_KMS_ZPOS environment variable to determine
its value.
Change-Id: I51986ccb22a9dbaeef20165ac5feb7dbe8047373
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The 0 values should be default for X,Y both on plane and crtc.
But atomic implementation can have flaws on some devices so
we don't assume they are defaulted right and set them to 0.
Change-Id: I2f7dc98fdba523eb46eb86b97568d18b6cfd1277
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This commit will add the possibility to have a different sizes between
framebuffer and videomode using DRM atomic, which is not possible with
DRM legacy.
The main goal of this change is to allow to get decent performance on
embedded devices which can support high resolution display (ie UHD),
and which don't have a GPU able to achieve decent framerate in such
resolutions.
This patch adds a "size" member to the output configuration in KMS
configuration file. The GBM framebuffer will be created with that
size and the GBM screen will report that size so that EGLFS can do
everything normally.
Scaling planes with different size than the video mode size is not
something supported consistently with DRM legacy, so that feature
will be only available when using the DRM atomic API.
This was tested on Rock64 device, both with drm legacy and atomic.
Change-Id: I8ba5bae35e61fcb7d9fc58234504bdfd647b43f6
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Reviewed-by: Lionel CHAZALLON <longchair@hotmail.com>
|
| |
| |
| |
| |
| |
| |
| |
| | |
We need to make sure we update the eglfs plane properly even
when we are forcing the rendering plane index.
Change-Id: I0cd19fbc53c34f28d55708ba2c8e84278e1d7e7d
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This patch will allow to set the video mode with DRM atomic API when available.
Using Atomic ModeSetting will allow further to enable framebuffer upscaling which is
something not possible with DRM legacy API or at least not supported on all devices
in a reliable way.
Change-Id: Ie340585cf4cbf5d65555c9a7c547dcbadb327fc0
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This commit adds support for DRM atomic to qtbase eglfs/KMS QPA when
libdrm and device supports it.
Compared To legacy DRM API, atomic API allows to update multiple planes
in one vsync. This is the first part of some work that should follow
and allow:
- DRM framebuffer upscaling for embedded devices that have weaker GPUs
- Sharing the drm atomic request if the KMSDevice so that applications
in userland can blend content on overlay in the same vsync loop.
One of the application for DRM atomic and Qt is typically videoplayer
integration at high resolutions (UHD) on embedded devices which cannot
use their GPU to render such videos, but are able to render it to a drm
overlay.
Change-Id: I047adf3e3d07a53440d52c2a7073c9ed054adf34
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
examples/network/fortuneclient/client.cpp
examples/network/fortuneserver/server.cpp
src/platformsupport/platformcompositor/qopenglcompositorbackingstore_p.h
src/plugins/platforms/cocoa/qcocoabackingstore.h
src/plugins/platforms/cocoa/qcocoaintegration.h
src/plugins/platforms/cocoa/qcocoascreen.h
src/plugins/platforms/ios/qiosbackingstore.h
src/plugins/sqldrivers/oci/qsql_oci.cpp
src/widgets/kernel/qwidgetwindow.cpp
Change-Id: Ia6dd2c52d4a691b671cf9a2ffca70deccece8f10
|
| |\
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
src/corelib/global/qconfig-bootstrapped.h
src/corelib/global/qglobal.h
src/corelib/tools/qcryptographichash.cpp
src/corelib/tools/qcryptographichash.h
src/corelib/tools/qmessageauthenticationcode.cpp
src/plugins/platforms/windows/qwindowswindow.h
tests/auto/gui/kernel/qwindow/BLACKLIST
tests/auto/widgets/itemviews/qitemdelegate/BLACKLIST
Change-Id: Ib68112de985a3d714c2071f47c10e907e4f0229a
|
| | |
| | |
| | |
| | |
| | | |
Change-Id: Ibf5046ff88cbad1f03966f39f62183b0bd750221
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
qkmsdevice.cpp:737:40: error: lambda capture 'this' is not used [-Werror,-Wunused-lambda-capture]
Change-Id: I90f0281baeb7bd8216d62515e4b087070c98c235
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Similar to cfe1a295fc which was in a different file.
Change-Id: I40e204f8603a2d4c10a6c737192957653f537d1a
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Remaining uses of Q_NULLPTR are in:
src/corelib/global/qcompilerdetection.h
(definition and documentation of Q_NULLPTR)
tests/manual/qcursor/qcursorhighdpi/main.cpp
(a test executable compilable both under Qt4 and Qt5)
Change-Id: If6b074d91486e9b784138f4514f5c6d072acda9a
Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Task-number: QTBUG-63058
Change-Id: I655384916bedbeb0da516e2eaa177d1128272d1c
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
|