summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/igt_kms.c26
-rw-r--r--lib/igt_kms.h2
2 files changed, 28 insertions, 0 deletions
diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index df90ca72..b6cb299b 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -1686,6 +1686,32 @@ int igt_display_get_n_pipes(igt_display_t *display)
return display->n_pipes;
}
+/**
+ * igt_output_from_connector:
+ * @display: a pointer to an #igt_display_t structure
+ * @connector: a pointer to a drmModeConnector
+ *
+ * Finds the output corresponding to the given connector
+ *
+ * Returns: A #igt_output_t structure configured to use the connector, or NULL
+ * if none was found
+ */
+igt_output_t *igt_output_from_connector(igt_display_t *display,
+ drmModeConnector *connector)
+{
+ igt_output_t *output, *found = NULL;
+
+ for_each_connected_output(display, output) {
+ if (output->config.connector->connector_id ==
+ connector->connector_id) {
+ found = output;
+ break;
+ }
+ }
+
+ return found;
+}
+
static void igt_pipe_fini(igt_pipe_t *pipe)
{
int i;
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 72ed6a3e..fd9ff87a 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -353,6 +353,8 @@ void igt_output_override_mode(igt_output_t *output, drmModeModeInfo *mode);
void igt_output_set_pipe(igt_output_t *output, enum pipe pipe);
void igt_output_set_scaling_mode(igt_output_t *output, uint64_t scaling_mode);
igt_plane_t *igt_output_get_plane(igt_output_t *output, enum igt_plane plane);
+igt_output_t *igt_output_from_connector(igt_display_t *display,
+ drmModeConnector *connector);
bool igt_pipe_get_property(igt_pipe_t *pipe, const char *name,
uint32_t *prop_id, uint64_t *value,
drmModePropertyPtr *prop);