summaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2019-06-17 02:31:28 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2022-06-09 22:51:47 +0300
commit74d60e252839a03a2f179d82126d1e0db1b4184e (patch)
treeb16af81cd62b007518d6440e92987e38a5072d63 /utils
parent2236a8ccacdfed5ff5f6873ed6618eccf570193d (diff)
card: Add support for writeback connectors
Enable enumeration of writeback connectors if both libdrm and the device support it. The new Card::has_writeback() method report if the card support writeback connectors. Existing code that expect all connectors to model an output may be confused by the sudden availability of new connectors. To handle this issue, - add a KMSXX_DISABLE_WRITEBACK_CONNECTORS environment variable to disable enumeration of writeback connectors, similarly to universal planes ; and - ignore writeback connectors where no specific connector is requested (Card::get_first_connected_connector(), ResourceManager::reserve_connector() if no connector name is specified, and applications that use all connected outputs). Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'utils')
-rw-r--r--utils/kmsblank.cpp5
-rw-r--r--utils/kmstest.cpp4
-rw-r--r--utils/meson.build2
3 files changed, 10 insertions, 1 deletions
diff --git a/utils/kmsblank.cpp b/utils/kmsblank.cpp
index d9a3460..207d807 100644
--- a/utils/kmsblank.cpp
+++ b/utils/kmsblank.cpp
@@ -5,6 +5,8 @@
#include <kms++/kms++.h>
#include <kms++util/kms++util.h>
+#include <xf86drmMode.h>
+
using namespace std;
using namespace kms;
@@ -74,6 +76,9 @@ int main(int argc, char** argv)
while (true) {
for (Connector* conn : conns) {
+ if (conn->connector_type() == DRM_MODE_CONNECTOR_WRITEBACK)
+ continue;
+
if (!conn->connected()) {
printf("Connector %u not connected\n", conn->idx());
continue;
diff --git a/utils/kmstest.cpp b/utils/kmstest.cpp
index 3f1716f..15db072 100644
--- a/utils/kmstest.cpp
+++ b/utils/kmstest.cpp
@@ -17,6 +17,8 @@
#include <kms++util/kms++util.h>
+#include <xf86drmMode.h>
+
using namespace std;
using namespace kms;
@@ -618,6 +620,8 @@ static vector<OutputInfo> setups_to_outputs(Card& card, ResourceManager& resman,
if (outputs.empty()) {
// no outputs defined, show a pattern on all connected screens
for (Connector* conn : card.get_connectors()) {
+ if (conn->connector_type() == DRM_MODE_CONNECTOR_WRITEBACK)
+ continue;
if (!conn->connected())
continue;
diff --git a/utils/meson.build b/utils/meson.build
index ac73b5b..39ee7db 100644
--- a/utils/meson.build
+++ b/utils/meson.build
@@ -1,4 +1,4 @@
-common_deps = [ libkmsxx_dep, libkmsxxutil_dep, libfmt_dep ]
+common_deps = [ libkmsxx_dep, libkmsxxutil_dep, libdrm_dep, libfmt_dep ]
libevdev_dep = dependency('libevdev', required : false)