[PATCH i-g-t] tests/intel/km_pm_brightness: Check for flickers with changes in brightness
Santhosh Reddy Guddati
santhosh.reddy.guddati at intel.com
Fri Sep 6 02:54:23 UTC 2024
The test is added to check for flickers on the panel while
changing brightness.
If there is any flicker observed on the panel while changing
the brightness then crc will change.This patch set is trying
to address the flickers observed using crc when brightness
is being changed.
v3: Addressed review feedback - Kamil , thasleem
Signed-off-by: Santhosh Reddy Guddati <santhosh.reddy.guddati at intel.com>
---
tests/intel/kms_pm_backlight.c | 41 ++++++++++++++++++++++++++++++++++
1 file changed, 41 insertions(+)
diff --git a/tests/intel/kms_pm_backlight.c b/tests/intel/kms_pm_backlight.c
index 140a95bcc..ae0ef8462 100644
--- a/tests/intel/kms_pm_backlight.c
+++ b/tests/intel/kms_pm_backlight.c
@@ -66,6 +66,10 @@
* SUBTEST: fade-with-suspend
* Description: Test the fade with suspend.
* Functionality: backlight, suspend
+ *
+ * SUBTEST: brightness-with-crc
+ * Description: Test the brightness change with CRC.
+ * Functionality: backlight, CRC
*/
struct context {
@@ -257,6 +261,41 @@ static void test_setup(igt_display_t display, igt_output_t *output)
}
}
+static void test_brightness_crc(struct context *context)
+{
+ int min = 0;
+ int max = context->max;
+ int step = (max - min) / 10;
+ int brightness;
+ igt_crc_t out_crc_before, out_crc_after;
+ igt_display_t *display = context->output->display;
+ char *crc_str;
+ igt_pipe_crc_t *ref_crc;
+ bool crc_ok;
+
+ /* create the pipe_crc object for this pipe */
+ ref_crc = igt_pipe_crc_new(display->drm_fd, context->output->config.pipe, IGT_PIPE_CRC_SOURCE_AUTO);
+ igt_assert(ref_crc);
+
+ for (brightness = min; brightness <= max; brightness += step) {
+ igt_pipe_crc_collect_crc(ref_crc, &out_crc_before);
+ crc_str = igt_crc_to_string(&out_crc_before);
+ igt_debug("CRC before write: %s\n", crc_str);
+
+ igt_assert_eq(backlight_write(brightness, "brightness", context), 0);
+ igt_debug("Brightness after write: %d\n", brightness);
+
+ igt_pipe_crc_collect_crc(ref_crc, &out_crc_after);
+ crc_str = igt_crc_to_string(&out_crc_after);
+ igt_debug("CRC after write: %s\n", crc_str);
+
+ /* compare the crc values before and after changing brightness */
+ crc_ok = igt_check_crc_equal(&out_crc_before, &out_crc_after);
+ igt_debug("brightness: %d flicker: %s\n", brightness, crc_ok ? "none" : "detected");
+ igt_assert_f(crc_ok, "Flicker observed for brightness %d\n", brightness);
+ }
+}
+
igt_main
{
int fd;
@@ -277,6 +316,7 @@ igt_main
{ "fade", "test basic fade.", test_fade, TEST_NONE },
{ "fade-with-dpms", "test the fade with DPMS.", test_fade, TEST_DPMS },
{ "fade-with-suspend", "test the fade with suspend.", test_fade, TEST_SUSPEND },
+ { "brightness-with-crc", "test the brightness change with CRC.", test_brightness_crc, TEST_NONE },
};
igt_fixture {
@@ -290,6 +330,7 @@ igt_main
*/
kmstest_set_vt_graphics_mode();
igt_display_require(&display, drm_open_driver(DRIVER_INTEL | DRIVER_XE));
+ igt_require_pipe_crc(display.drm_fd);
for_each_connected_output(&display, output) {
if (output->config.connector->connector_type != DRM_MODE_CONNECTOR_eDP)
--
2.34.1
More information about the igt-dev
mailing list