[PATCH i-g-t 1/3] benchmarks/kms_fb_stress: Assert that we have an supported pipe
Arthur Grillo
arthurgrillo at riseup.net
Mon Feb 26 19:42:17 UTC 2024
Some driver may not support overlay planes. Add a check for that.
Signed-off-by: Arthur Grillo <arthurgrillo at riseup.net>
---
benchmarks/kms_fb_stress.c | 36 +++++++++++++++++++++++++++---------
1 file changed, 27 insertions(+), 9 deletions(-)
diff --git a/benchmarks/kms_fb_stress.c b/benchmarks/kms_fb_stress.c
index 9a0e98bed8ad..8fea10ef069f 100644
--- a/benchmarks/kms_fb_stress.c
+++ b/benchmarks/kms_fb_stress.c
@@ -87,6 +87,27 @@ static igt_output_t *find_wb_output(struct data_t *data)
return NULL;
}
+static void set_wb_pipe(struct data_t *data)
+{
+ enum pipe pipe = PIPE_NONE;
+
+ for_each_pipe(&data->display, pipe) {
+ igt_pipe_t *pipe_obj = &data->display.pipes[pipe];
+
+ if (igt_pipe_count_plane_type(pipe_obj, DRM_PLANE_TYPE_OVERLAY) < 2)
+ continue;
+
+ igt_debug("Selecting pipe %s to %s\n",
+ kmstest_pipe_name(pipe),
+ igt_output_name(data->wb_output));
+ igt_output_set_pipe(data->wb_output, pipe);
+
+ return;
+ }
+
+ igt_assert_f(0, "No pipe supports this benchmark\n");
+}
+
static void set_crtc_size(struct data_t *data)
{
drmModeModeInfo *mode;
@@ -142,7 +163,6 @@ static struct kms_t default_kms = {
igt_simple_main
{
struct data_t data = {0};
- enum pipe pipe = PIPE_NONE;
struct timespec then, now;
double elapsed;
@@ -163,24 +183,22 @@ igt_simple_main
data.wb_output = find_wb_output(&data);
igt_require(data.wb_output);
-
- for_each_pipe(&data.display, pipe) {
- igt_debug("Selecting pipe %s to %s\n",
- kmstest_pipe_name(pipe),
- igt_output_name(data.wb_output));
- igt_output_set_pipe(data.wb_output, pipe);
- break;
- }
+ set_wb_pipe(&data);
set_crtc_size(&data);
gen_fbs(&data);
data.kms.primary.base = igt_output_get_plane_type(data.wb_output, DRM_PLANE_TYPE_PRIMARY);
+ igt_assert(data.kms.primary.base != NULL);
+
data.kms.overlay_a.base = igt_output_get_plane_type_index(data.wb_output,
DRM_PLANE_TYPE_OVERLAY, 0);
+ igt_assert(data.kms.overlay_a.base != NULL);
+
data.kms.overlay_b.base = igt_output_get_plane_type_index(data.wb_output,
DRM_PLANE_TYPE_OVERLAY, 1);
+ igt_assert(data.kms.overlay_b.base != NULL);
igt_assert_eq(igt_gettime(&then), 0);
--
2.43.0
More information about the igt-dev
mailing list