From 3792ab804dc803f8cbb167178e499f9d5d9b6310 Mon Sep 17 00:00:00 2001 From: Pier Luigi Fiorini Date: Wed, 14 Dec 2016 07:21:44 +0100 Subject: eglfs_kms: Decode EDID blob Retrieve and parse EDID blob. Return screen product information from EDID. [ChangeLog][QPA][eglfs][kms] Add screen product information from EDID. Change-Id: I766999afd9298e82f6147fdeba5d14757bfb4b03 Reviewed-by: Laszlo Agocs --- .../eglfs_kms_support/qeglfskmsscreen.cpp | 33 +++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) (limited to 'src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsscreen.cpp') diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsscreen.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsscreen.cpp index 6c8fffd8d9..7414495f07 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsscreen.cpp +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsscreen.cpp @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2015 Pier Luigi Fiorini +** Copyright (C) 2017 Pier Luigi Fiorini ** Copyright (C) 2016 The Qt Company Ltd. ** Copyright (C) 2016 Pelagicore AG ** Contact: https://www.qt.io/licensing/ @@ -76,6 +76,22 @@ QEglFSKmsScreen::QEglFSKmsScreen(QKmsDevice *device, const QKmsOutput &output) , m_interruptHandler(new QEglFSKmsInterruptHandler(this)) { m_siblings << this; // gets overridden later + + if (m_output.edid_blob) { + QByteArray edid(reinterpret_cast(m_output.edid_blob->data), m_output.edid_blob->length); + if (m_edid.parse(edid)) + qCDebug(qLcEglfsKmsDebug, "EDID data for output \"%s\": identifier '%s', manufacturer '%s', model '%s', serial '%s', physical size: %.2fx%.2f", + name().toLatin1().constData(), + m_edid.identifier.toLatin1().constData(), + m_edid.manufacturer.toLatin1().constData(), + m_edid.model.toLatin1().constData(), + m_edid.serialNumber.toLatin1().constData(), + m_edid.physicalSize.width(), m_edid.physicalSize.height()); + else + qCWarning(qLcEglfsKmsDebug) << "Failed to parse EDID data for output" << name(); + } else { + qCWarning(qLcEglfsKmsDebug) << "No EDID data for output" << name(); + } } QEglFSKmsScreen::~QEglFSKmsScreen() @@ -146,6 +162,21 @@ QString QEglFSKmsScreen::name() const return m_output.name; } +QString QEglFSKmsScreen::manufacturer() const +{ + return m_edid.manufacturer; +} + +QString QEglFSKmsScreen::model() const +{ + return m_edid.model.isEmpty() ? m_edid.identifier : m_edid.model; +} + +QString QEglFSKmsScreen::serialNumber() const +{ + return m_edid.serialNumber; +} + void QEglFSKmsScreen::destroySurface() { } -- cgit v1.2.3