diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2019-06-17 02:31:28 +0300 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2022-06-09 22:51:47 +0300 |
commit | 74d60e252839a03a2f179d82126d1e0db1b4184e (patch) | |
tree | b16af81cd62b007518d6440e92987e38a5072d63 /kms++util | |
parent | 2236a8ccacdfed5ff5f6873ed6618eccf570193d (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 'kms++util')
-rw-r--r-- | kms++util/meson.build | 2 | ||||
-rw-r--r-- | kms++util/src/resourcemanager.cpp | 5 |
2 files changed, 6 insertions, 1 deletions
diff --git a/kms++util/meson.build b/kms++util/meson.build index 1b226f3..94718d6 100644 --- a/kms++util/meson.build +++ b/kms++util/meson.build @@ -32,7 +32,7 @@ if thread_dep.found() libkmsxxutil_args += [ '-DHAS_PTHREAD' ] endif -libkmsxxutil_deps = [ libkmsxx_dep, libfmt_dep, thread_dep ] +libkmsxxutil_deps = [ libkmsxx_dep, libdrm_dep, libfmt_dep, thread_dep ] libkmsxxutil = library('kms++util', libkmsxxutil_sources, diff --git a/kms++util/src/resourcemanager.cpp b/kms++util/src/resourcemanager.cpp index 5a9f016..01edaf3 100644 --- a/kms++util/src/resourcemanager.cpp +++ b/kms++util/src/resourcemanager.cpp @@ -2,6 +2,8 @@ #include <algorithm> #include <kms++util/strhelpers.h> +#include <xf86drmMode.h> + using namespace kms; using namespace std; @@ -20,6 +22,9 @@ void ResourceManager::reset() static Connector* find_connector(Card& card, const set<Connector*> reserved) { for (Connector* conn : card.get_connectors()) { + if (conn->connector_type() == DRM_MODE_CONNECTOR_WRITEBACK) + continue; + if (!conn->connected()) continue; |