[PATCH i-g-t] tests/kms_histogram: Add test to count the number of histogram events
Mohammed Thasleem
mohammed.thasleem at intel.com
Wed Dec 11 15:34:23 UTC 2024
This test to count the number of histogram events during color flips.
Signed-off-by: Mohammed Thasleem <mohammed.thasleem at intel.com>
---
tests/kms_histogram.c | 45 ++++++++++++++++++++++++++++++-------------
1 file changed, 32 insertions(+), 13 deletions(-)
diff --git a/tests/kms_histogram.c b/tests/kms_histogram.c
index c25aa022b..63549ec20 100644
--- a/tests/kms_histogram.c
+++ b/tests/kms_histogram.c
@@ -29,6 +29,7 @@
#define GLOBAL_HIST_ENABLE 1
#define GLOBAL_HIST_DELAY 2
#define FLIP_COUNT 20
+#define CHK_FLIP_COUNT 200
/**
* SUBTEST: global-basic
@@ -229,9 +230,10 @@ static void flip_fb(data_t *data, enum pipe pipe, igt_output_t *output, struct i
igt_display_commit2(&data->display, COMMIT_ATOMIC);
}
-static void prepare_pipe(data_t *data, enum pipe pipe, igt_output_t *output, bool color_fb)
+static void prepare_pipe(data_t *data, enum pipe pipe, igt_output_t *output,
+ bool color_fb, bool count_events)
{
- int i;
+ int i, count, events = 0;
struct udev_monitor *mon = igt_watch_uevents();
drmModeModeInfo *mode = igt_output_get_mode(output);
bool event_detected = false;
@@ -246,26 +248,37 @@ static void prepare_pipe(data_t *data, enum pipe pipe, igt_output_t *output, boo
enable_and_verify_global_histogram(data, pipe);
igt_flush_uevents(mon);
- for (i = 1; i <= FLIP_COUNT; i++) {
+ count = (count_events > 0) ? CHK_FLIP_COUNT : FLIP_COUNT;
+ for (i = 1; i <= count; i++) {
flip_fb(data, pipe, output, &data->fb[i % fb_count]);
+ if (count_events)
+ igt_wait_for_vblank(data->drm_fd, data->display.pipes[pipe].crtc_offset);
/* Check for histogram event on every flip and break the loop if detected. */
if (igt_global_histogram_event_detected(mon, 0)) {
- event_detected = true;
- break;
+ if (count_events)
+ events++;
+ else {
+ event_detected = true;
+ break;
+ }
}
}
igt_cleanup_uevents(mon);
- igt_assert_f(event_detected, "Histogram event not generated.\n");
+ if (count_events) {
+ igt_info("Number of histogram events received = %d\n", events);
+ igt_assert_f(events, "Histogram event not generated.\n");
+ } else
+ igt_assert_f(event_detected, "Histogram event not generated.\n");
}
static void run_global_histogram_pipeline(data_t *data, enum pipe pipe, igt_output_t *output,
- bool color_fb, test_t test_pixel_factor)
+ bool color_fb, test_t test_pixel_factor, bool count_events)
{
drmModePropertyBlobRes *global_hist_blob = NULL;
- prepare_pipe(data, pipe, output, color_fb);
+ prepare_pipe(data, pipe, output, color_fb, count_events);
read_global_histogram(data, pipe, &global_hist_blob);
@@ -277,7 +290,8 @@ static void run_global_histogram_pipeline(data_t *data, enum pipe pipe, igt_outp
}
static void run_tests_for_global_histogram(data_t *data, bool color_fb,
- test_t test_pixel_factor)
+ test_t test_pixel_factor,
+ bool count_events)
{
enum pipe pipe;
igt_output_t *output;
@@ -294,7 +308,7 @@ static void run_tests_for_global_histogram(data_t *data, bool color_fb,
continue;
igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output))
- run_global_histogram_pipeline(data, pipe, output, color_fb, test_pixel_factor);
+ run_global_histogram_pipeline(data, pipe, output, color_fb, test_pixel_factor, count_events);
}
}
}
@@ -302,7 +316,7 @@ static void run_tests_for_global_histogram(data_t *data, bool color_fb,
static void run_algo_test(data_t *data, bool color_fb)
{
#ifdef HAVE_LIBGHE
- run_tests_for_global_histogram(data, color_fb, algo_image_enhancement_factor);
+ run_tests_for_global_histogram(data, color_fb, algo_image_enhancement_factor, false);
#else
igt_skip("Histogram algorithm library not found.\n");
#endif
@@ -320,15 +334,20 @@ igt_main
igt_require(data.display.is_atomic);
}
+ igt_describe("Test to enable histogram, flip color fbs, count histogram "
+ "event.");
+ igt_subtest_with_dynamic("global-color-event")
+ run_tests_for_global_histogram(&data, true, NULL, true);
+
igt_describe("Test to enable histogram, flip monochrome fbs, wait for histogram "
"event and then read the histogram data.");
igt_subtest_with_dynamic("global-basic")
- run_tests_for_global_histogram(&data, false, NULL);
+ run_tests_for_global_histogram(&data, false, NULL, false);
igt_describe("Test to enable histogram, flip color fbs, wait for histogram event "
"and then read the histogram data.");
igt_subtest_with_dynamic("global-color")
- run_tests_for_global_histogram(&data, true, NULL);
+ run_tests_for_global_histogram(&data, true, NULL, false);
igt_describe("Test to enable histogram, flip monochrome fbs, wait for histogram "
"event and then read the histogram data and enhance pixels by multiplying "
--
2.25.1
More information about the igt-dev
mailing list