[PATCH i-g-t] tests/km_pm_brightness.c: check for flickers while adjusting the brightness.
Santhosh Reddy Guddati
santhosh.reddy.guddati at intel.com
Thu Jun 27 03:02:11 UTC 2024
The test is added to check for flickers on the panel while
changing brightness.Though changing the brightness doesn't have impact
on CRC,but if there is a flicker observed , the crc will change
and this test validates the crc.
---
tests/intel/kms_pm_backlight.c | 44 ++++++++++++++++++++++++++++++++++
1 file changed, 44 insertions(+)
diff --git a/tests/intel/kms_pm_backlight.c b/tests/intel/kms_pm_backlight.c
index 8672afa7a..e29fd7320 100644
--- a/tests/intel/kms_pm_backlight.c
+++ b/tests/intel/kms_pm_backlight.c
@@ -64,6 +64,10 @@
* SUBTEST: fade-with-suspend
* Description: Test the fade with suspend.
* Functionality: backlight, suspend
+ *
+ * SUBTEST: brightness-crc-change
+ * Description: Test the brightness change with CRC.
+ * Functionality: backlight, CRC
*/
struct context {
@@ -255,6 +259,44 @@ 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;
+
+ // Get the CRC before changing brightness
+ 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_info("Brightness: %d\n", brightness);
+
+ 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
+ if (igt_check_crc_equal(&out_crc_before, &out_crc_after)) {
+ igt_info("CRC values are same for brightness: %d\n", brightness);
+ } else {
+ igt_info("CRC values are different for brightness: %d\n", brightness);
+ }
+ }
+}
+
igt_main
{
int fd;
@@ -275,6 +317,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-crc-change", "test the brightness change with CRC.", test_brightness_crc, TEST_NONE },
};
igt_fixture {
@@ -288,6 +331,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