[PATCH i-g-t v5 7/8] benchmarks/kms_fb_stress: Optionally enable the overlay planes

Arthur Grillo arthurgrillo at riseup.net
Mon Apr 22 22:18:22 UTC 2024


In the future, we would like to not use overlay planes, so make them
optional.

Signed-off-by: Arthur Grillo <arthurgrillo at riseup.net>
---
 benchmarks/kms_fb_stress.c | 40 ++++++++++++++++++++++++++--------------
 1 file changed, 26 insertions(+), 14 deletions(-)

diff --git a/benchmarks/kms_fb_stress.c b/benchmarks/kms_fb_stress.c
index 8775fabdd164..d2d6b3e65eae 100644
--- a/benchmarks/kms_fb_stress.c
+++ b/benchmarks/kms_fb_stress.c
@@ -37,6 +37,7 @@ struct data_t {
 	igt_output_t *wb_output;
 	drmModeModeInfo *mode;
 	struct kms_t kms;
+	bool use_overlay;
 };
 
 static void plane_setup(struct plane_t *plane, int index)
@@ -75,8 +76,10 @@ static void gen_fbs(struct data_t *data)
 
 	for (int i = 0; i < NUM_FBS; i++) {
 		create_fb(data->fd, &kms->primary, i, !i, i, i);
-		create_fb(data->fd, &kms->overlay_a, i, i, !i, i);
-		create_fb(data->fd, &kms->overlay_b, i, i, i, !i);
+		if (data->use_overlay) {
+			create_fb(data->fd, &kms->overlay_a, i, i, !i, i);
+			create_fb(data->fd, &kms->overlay_b, i, i, i, !i);
+		}
 
 		kms->writeback.rect.width = mode->hdisplay;
 		kms->writeback.rect.height = mode->vdisplay;
@@ -150,12 +153,14 @@ static void stress_driver(struct data_t *data)
 	igt_info("\tprimary:\n");
 	igt_info("\t\tformat: %s\n", igt_format_str(data->kms.primary.format));
 	igt_info("\t\trectangle: " RECT_FMT "\n", RECT_ARG(&data->kms.primary.rect));
-	igt_info("\toverlay A:\n");
-	igt_info("\t\tformat: %s\n", igt_format_str(data->kms.overlay_a.format));
-	igt_info("\t\trectangle: " RECT_FMT "\n", RECT_ARG(&data->kms.overlay_a.rect));
-	igt_info("\toverlay B:\n");
-	igt_info("\t\tformat: %s\n", igt_format_str(data->kms.overlay_b.format));
-	igt_info("\t\trectangle: " RECT_FMT "\n", RECT_ARG(&data->kms.overlay_b.rect));
+	if (data->use_overlay) {
+		igt_info("\toverlay A:\n");
+		igt_info("\t\tformat: %s\n", igt_format_str(data->kms.overlay_a.format));
+		igt_info("\t\trectangle: " RECT_FMT "\n", RECT_ARG(&data->kms.overlay_a.rect));
+		igt_info("\toverlay B:\n");
+		igt_info("\t\tformat: %s\n", igt_format_str(data->kms.overlay_b.format));
+		igt_info("\t\trectangle: " RECT_FMT "\n", RECT_ARG(&data->kms.overlay_b.rect));
+	}
 	igt_info("\twriteback:\n");
 	igt_info("\t\tformat: %s\n", igt_format_str(data->kms.writeback.format));
 	igt_info("\t\trectangle: " RECT_FMT "\n", RECT_ARG(&data->kms.writeback.rect));
@@ -169,9 +174,11 @@ static void stress_driver(struct data_t *data)
 
 		plane_setup(&data->kms.primary, fb_index);
 
-		plane_setup(&data->kms.overlay_a, fb_index);
+		if (data->use_overlay) {
+			plane_setup(&data->kms.overlay_a, fb_index);
 
-		plane_setup(&data->kms.overlay_b, fb_index);
+			plane_setup(&data->kms.overlay_b, fb_index);
+		}
 
 		igt_output_set_writeback_fb(data->wb_output, &data->kms.writeback.fbs[fb_index]);
 
@@ -187,14 +194,18 @@ static void stress_driver(struct data_t *data)
 	elapsed = igt_time_elapsed(&then, &now);
 
 	igt_plane_set_fb(data->kms.primary.base, NULL);
-	igt_plane_set_fb(data->kms.overlay_a.base, NULL);
-	igt_plane_set_fb(data->kms.overlay_b.base, NULL);
+	if (data->use_overlay) {
+		igt_plane_set_fb(data->kms.overlay_a.base, NULL);
+		igt_plane_set_fb(data->kms.overlay_b.base, NULL);
+	}
 	igt_output_set_writeback_fb(data->wb_output, NULL);
 
 	for (int i = 0; i < NUM_FBS; i++) {
 		igt_remove_fb(data->fd, &data->kms.primary.fbs[i]);
-		igt_remove_fb(data->fd, &data->kms.overlay_a.fbs[i]);
-		igt_remove_fb(data->fd, &data->kms.overlay_b.fbs[i]);
+		if (data->use_overlay) {
+			igt_remove_fb(data->fd, &data->kms.overlay_a.fbs[i]);
+			igt_remove_fb(data->fd, &data->kms.overlay_b.fbs[i]);
+		}
 		igt_remove_fb(data->fd, &data->kms.writeback.fbs[i]);
 	}
 
@@ -279,6 +290,7 @@ igt_main
 	}
 
 	igt_subtest("default-stress") {
+		data.use_overlay = true;
 		stress_driver(&data);
 
 	}

-- 
2.44.0



More information about the igt-dev mailing list