summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Kocialkowski <paul.kocialkowski@bootlin.com>2018-12-13 16:39:10 +0100
committerPaul Kocialkowski <paul.kocialkowski@bootlin.com>2019-02-26 09:45:54 +0100
commitad4b1a45e2baf15db0613137635dde8ac496300a (patch)
tree794b0df3a0e727ea3906605ef4c1c43be09a3e01
parent562f51cea4abd49208a7876facb711c1a13b0650 (diff)
lib/igt_kms: Add helpers to count and iterate planes from output
With helpers to count and iterate among planes of a given type from the pipe in place, we can use them with the current pipe for the output to make it possible for tests to use them (the pipe struct is not currently easily exposed to tests and exposing it adds unnecessary complexity). Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com> Reviewed-by: Lyude Paul <lyude@redhat.com> Reviewed-by: Maxime Ripard <maxime.ripard@bootlin.com>
-rw-r--r--lib/igt_kms.c36
-rw-r--r--lib/igt_kms.h3
2 files changed, 39 insertions, 0 deletions
diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 5bde391fd..62c7cf579 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -3717,6 +3717,42 @@ igt_plane_t *igt_output_get_plane_type(igt_output_t *output, int plane_type)
}
/**
+ * igt_output_count_plane_type:
+ * @output: Target output
+ * @plane_type: Cursor, primary or an overlay plane
+ *
+ * Counts the number of planes of type @plane_type for the provided @output.
+ *
+ * Returns: The number of planes that match the requested plane type
+ */
+int igt_output_count_plane_type(igt_output_t *output, int plane_type)
+{
+ igt_pipe_t *pipe = igt_output_get_driving_pipe(output);
+ igt_assert(pipe);
+
+ return igt_pipe_count_plane_type(pipe, plane_type);
+}
+
+/**
+ * igt_output_get_plane_type_index:
+ * @output: Target output
+ * @plane_type: Cursor, primary or an overlay plane
+ * @index: the index of the plane among planes of the same type
+ *
+ * Get the @index th plane of type @plane_type for the provided @output.
+ *
+ * Returns: The @index th plane that matches the requested plane type
+ */
+igt_plane_t *igt_output_get_plane_type_index(igt_output_t *output,
+ int plane_type, int index)
+{
+ igt_pipe_t *pipe = igt_output_get_driving_pipe(output);
+ igt_assert(pipe);
+
+ return igt_pipe_get_plane_type_index(pipe, plane_type, index);
+}
+
+/**
* igt_plane_set_fb:
* @plane: Plane
* @fb: Framebuffer pointer
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index df8b07c13..90e1f1681 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -403,6 +403,9 @@ void igt_output_override_mode(igt_output_t *output, drmModeModeInfo *mode);
void igt_output_set_pipe(igt_output_t *output, enum pipe pipe);
igt_plane_t *igt_output_get_plane(igt_output_t *output, int plane_idx);
igt_plane_t *igt_output_get_plane_type(igt_output_t *output, int plane_type);
+int igt_output_count_plane_type(igt_output_t *output, int plane_type);
+igt_plane_t *igt_output_get_plane_type_index(igt_output_t *output,
+ int plane_type, int index);
igt_output_t *igt_output_from_connector(igt_display_t *display,
drmModeConnector *connector);