diff options
author | Pier Luigi Fiorini <pierluigi.fiorini@gmail.com> | 2013-01-27 09:53:32 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-08-06 11:00:23 +0200 |
commit | 888bfb09da4367a2eebe41a1a086a802449d2af6 (patch) | |
tree | efac1063f12a4c8f4199e558f99b3da577e96b22 /src/platformsupport | |
parent | ea14a6308394ded16b4666ddc19f9c95c4e60658 (diff) |
Find primary GPU only
Some systems may have multiple DRM devices attached to a single seat and we are
not guaranteed to pick up the primary GPU. With this flag we can control how
DRM devices are detected and consider only the primary GPU.
This is very useful for the kms plugin or QtCompositors running on kms in order
to use the right DRM device.
Change-Id: I8b91e78f148b25aaa4e40724e39e0ed0918ca100
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
Diffstat (limited to 'src/platformsupport')
-rw-r--r-- | src/platformsupport/devicediscovery/qdevicediscovery_p.h | 3 | ||||
-rw-r--r-- | src/platformsupport/devicediscovery/qdevicediscovery_udev.cpp | 12 |
2 files changed, 12 insertions, 3 deletions
diff --git a/src/platformsupport/devicediscovery/qdevicediscovery_p.h b/src/platformsupport/devicediscovery/qdevicediscovery_p.h index c78c57b86f..d9bd9a78e4 100644 --- a/src/platformsupport/devicediscovery/qdevicediscovery_p.h +++ b/src/platformsupport/devicediscovery/qdevicediscovery_p.h @@ -72,7 +72,8 @@ public: Device_Touchscreen = 0x04, Device_Keyboard = 0x08, Device_DRM = 0x10, - Device_Tablet = 0x20, + Device_DRM_PrimaryGPU = 0x20, + Device_Tablet = 0x40, Device_InputMask = Device_Mouse | Device_Touchpad | Device_Touchscreen | Device_Keyboard | Device_Tablet, Device_VideoMask = Device_DRM }; diff --git a/src/platformsupport/devicediscovery/qdevicediscovery_udev.cpp b/src/platformsupport/devicediscovery/qdevicediscovery_udev.cpp index 9e0ce47e18..ac902b4140 100644 --- a/src/platformsupport/devicediscovery/qdevicediscovery_udev.cpp +++ b/src/platformsupport/devicediscovery/qdevicediscovery_udev.cpp @@ -149,8 +149,16 @@ QStringList QDeviceDiscovery::scanConnectedDevices() QString candidate = QString::fromUtf8(udev_device_get_devnode(udevice)); if ((m_types & Device_InputMask) && candidate.startsWith(QLatin1String(QT_EVDEV_DEVICE))) devices << candidate; - if ((m_types & Device_VideoMask) && candidate.startsWith(QLatin1String(QT_DRM_DEVICE))) - devices << candidate; + if ((m_types & Device_VideoMask) && candidate.startsWith(QLatin1String(QT_DRM_DEVICE))) { + if (m_types & Device_DRM_PrimaryGPU) { + udev_device *pci = udev_device_get_parent_with_subsystem_devtype(udevice, "pci", 0); + if (pci) { + if (qstrcmp(udev_device_get_sysattr_value(pci, "boot_vga"), "1") == 0) + devices << candidate; + } + } else + devices << candidate; + } udev_device_unref(udevice); } |