-->Any specific reason to cover this for 3 outputs?Each suspend test is executed per output. Limit number of outputs tested to 3 by default. Add command-line option enabling execution on every output.
v2->v3
- add patch
Signed-off-by: Michał Grzelak <michal.grzelak@intel.com>
---
tests/kms_hdr.c | 30 ++++++++++++++++++++++++++++--
1 file changed, 28 insertions(+), 2 deletions(-)
diff --git a/tests/kms_hdr.c b/tests/kms_hdr.c
index e23d5e4691..95a7344ceb 100644
--- a/tests/kms_hdr.c
+++ b/tests/kms_hdr.c
@@ -74,6 +74,8 @@ IGT_TEST_DESCRIPTION("Test HDR metadata interfaces and bpc switch");
#define BACKLIGHT_PATH "/sys/class/backlight"
+#define OUTPUT_LIMIT 2
-->if intention to run on 3 pipes as per subject make it as 3
+
/* HDR test formats: 10bpc + FP16 */
static const uint32_t hdr_test_formats[] = {
DRM_FORMAT_XRGB2101010,
@@ -110,6 +112,7 @@ typedef struct data {
int w;
int h;
igt_fb_t afb;
+ bool all_outputs;
} data_t;
/* Common test cleanup. */
@@ -250,6 +253,7 @@ static void test_bpc_switch(data_t *data, uint32_t flags)
{
igt_display_t *display = &data->display;
igt_output_t *output;
+ int output_count = 0;
igt_display_reset(display);
@@ -273,6 +277,11 @@ static void test_bpc_switch(data_t *data, uint32_t flags)
continue;
}
+ if (!data->all_outputs && flags & TEST_SUSPEND && output_count > OUTPUT_LIMIT)
-->add parens around flags & TEST_SUSPEND
--> should be :output_count >= OUTPUT_LIMIT
-->One more subtest: test_hdr also covering SUSPEND don’t we need this check for it?
+ continue;
+
+ output_count++;
+
for_each_crtc(display, crtc) {
igt_output_set_crtc(output,
crtc);
@@ -674,10 +683,27 @@ static void test_hdr(data_t *data, uint32_t flags)
}
}
-int igt_main()
+static int opt_handler(int opt, int opt_index, void *opt_data)
{
- data_t data = {};
+ data_t *data = opt_data;
+
+ switch (opt) {
+ case 'o':
+ data->all_outputs = true;
+ break;
+ default:
+ return IGT_OPT_HANDLER_ERROR;
+ }
+
+ return IGT_OPT_HANDLER_SUCCESS;
+}
+static const char help_str[] = " -o \tRun on all outputs instead of 3 when testing suspend.\n";
+
+data_t data = {};
-->make it as static
+
+int igt_main_args("o", NULL, help_str, opt_handler, &data)
+{
igt_fixture() {
data.fd = drm_open_driver_master(DRIVER_ANY);