Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [i-g-t 0/5] Optimize kms tesplan documentation
@ 2023-11-24  9:35 Bhanuprakash Modem
  2023-11-24  9:35 ` [igt-dev] [i-g-t 1/5] tests/kms/testplan: Move testplan documentation to beginning of the file Bhanuprakash Modem
                   ` (8 more replies)
  0 siblings, 9 replies; 15+ messages in thread
From: Bhanuprakash Modem @ 2023-11-24  9:35 UTC (permalink / raw)
  To: igt-dev, swati2.sharma

Optimizations:
- Move common stuff to TEST level
- Move documentation to beginning of the file
- Align Mega features to internal tools
- Avoid duplicate names on Mega feature vs Functionality

V2: Rebase

Bhanuprakash Modem (5):
  tests/kms/testplan: Move testplan documentation to beginning of the
    file
  tests/kms/testplan: Regroup testplan documentation
  tests/kms/testplan: Optimize KMS testplan documentation
  tests/kms/testplan: Fix Mega Feature in testplan documentation
  tests/kms/testplan: Avoid duplicate names on Mega feature vs
    Functionality

 tests/chamelium/kms_chamelium_audio.c  |   68 +-
 tests/chamelium/kms_chamelium_color.c  |   59 +-
 tests/chamelium/kms_chamelium_edid.c   |  181 +-
 tests/chamelium/kms_chamelium_frames.c |  181 +-
 tests/chamelium/kms_chamelium_hpd.c    |  362 +-
 tests/intel/kms_big_fb.c               |  275 +-
 tests/intel/kms_big_joiner.c           |   42 +-
 tests/intel/kms_busy.c                 |   90 +-
 tests/intel/kms_ccs.c                  |   16 +-
 tests/intel/kms_cdclk.c                |   41 +-
 tests/intel/kms_dirtyfb.c              |   24 +-
 tests/intel/kms_draw_crc.c             |   72 +-
 tests/intel/kms_dsc.c                  |    9 +-
 tests/intel/kms_fb_coherency.c         |   21 +-
 tests/intel/kms_fbcon_fbt.c            |   26 +-
 tests/intel/kms_fence_pin_leak.c       |   11 +-
 tests/intel/kms_flip_scaled_crc.c      |   71 +-
 tests/intel/kms_flip_tiling.c          |   11 +-
 tests/intel/kms_frontbuffer_tracking.c | 5746 +++++++++++-------------
 tests/intel/kms_legacy_colorkey.c      |   18 +-
 tests/intel/kms_mmap_write_crc.c       |   13 +-
 tests/intel/kms_pipe_b_c_ivb.c         |   29 +-
 tests/intel/kms_pm_backlight.c         |   33 +-
 tests/intel/kms_pm_dc.c                |   43 +-
 tests/intel/kms_pm_lpsp.c              |   20 +-
 tests/intel/kms_pm_rpm.c               |    4 +
 tests/intel/kms_psr.c                  |  155 +-
 tests/intel/kms_psr2_sf.c              |   49 +-
 tests/intel/kms_psr2_su.c              |   20 +-
 tests/intel/kms_psr_stress_test.c      |   22 +-
 tests/intel/kms_pwrite_crc.c           |   10 +-
 tests/kms_3d.c                         |    9 +-
 tests/kms_addfb_basic.c                |  356 +-
 tests/kms_async_flips.c                |   82 +-
 tests/kms_atomic.c                     |  141 +-
 tests/kms_atomic_interruptible.c       |   88 +-
 tests/kms_atomic_transition.c          |  157 +-
 tests/kms_bw.c                         |   19 +-
 tests/kms_color.c                      |  124 +-
 tests/kms_concurrent.c                 |    9 +-
 tests/kms_content_protection.c         |  120 +-
 tests/kms_cursor_crc.c                 |  131 +-
 tests/kms_cursor_edge_walk.c           |   20 +-
 tests/kms_cursor_legacy.c              |  426 +-
 tests/kms_display_modes.c              |   34 +-
 tests/kms_dither.c                     |   28 +-
 tests/kms_dp_aux_dev.c                 |   11 +-
 tests/kms_feature_discovery.c          |   43 +-
 tests/kms_flip.c                       |  229 +-
 tests/kms_flip_event_leak.c            |   10 +-
 tests/kms_force_connector_basic.c      |   52 +-
 tests/kms_getfb.c                      |  139 +-
 tests/kms_hdmi_inject.c                |   25 +-
 tests/kms_hdr.c                        |  106 +-
 tests/kms_invalid_mode.c               |    9 +-
 tests/kms_lease.c                      |   88 +-
 tests/kms_multipipe_modeset.c          |    7 +-
 tests/kms_panel_fitting.c              |   23 +-
 tests/kms_pipe_crc_basic.c             |  120 +-
 tests/kms_plane.c                      |  114 +-
 tests/kms_plane_alpha_blend.c          |   82 +-
 tests/kms_plane_cursor.c               |   20 +-
 tests/kms_plane_lowres.c               |   47 +-
 tests/kms_plane_multiple.c             |   51 +-
 tests/kms_plane_scaling.c              |  400 +-
 tests/kms_prime.c                      |   26 +-
 tests/kms_prop_blob.c                  |   84 +-
 tests/kms_properties.c                 |   43 +-
 tests/kms_rmfb.c                       |   25 +-
 tests/kms_rotation_crc.c               |  202 +-
 tests/kms_scaling_modes.c              |   13 +-
 tests/kms_selftest.c                   |   13 +-
 tests/kms_sequence.c                   |   56 +-
 tests/kms_setmode.c                    |   40 +-
 tests/kms_sysfs_edid_timing.c          |   12 +-
 tests/kms_tiled_display.c              |   10 +-
 tests/kms_tv_load_detect.c             |    7 +-
 tests/kms_universal_plane.c            |   33 +-
 tests/kms_vblank.c                     |   61 +-
 tests/kms_vrr.c                        |   33 +-
 tests/kms_writeback.c                  |   43 +-
 tests/testdisplay.c                    |   12 +-
 82 files changed, 5026 insertions(+), 6729 deletions(-)

--
2.40.0

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [igt-dev] [i-g-t 1/5] tests/kms/testplan: Move testplan documentation to beginning of the file
  2023-11-24  9:35 [igt-dev] [i-g-t 0/5] Optimize kms tesplan documentation Bhanuprakash Modem
@ 2023-11-24  9:35 ` Bhanuprakash Modem
  2023-11-24 17:07   ` Sharma, Swati2
  2023-11-24  9:35 ` [igt-dev] [i-g-t 2/5] tests/kms/testplan: Regroup testplan documentation Bhanuprakash Modem
                   ` (7 subsequent siblings)
  8 siblings, 1 reply; 15+ messages in thread
From: Bhanuprakash Modem @ 2023-11-24  9:35 UTC (permalink / raw)
  To: igt-dev, swati2.sharma

To maintain the uniformness, move testplan documentation
to beginning of the file.

Move TEST block to before the #includes, and SUBTEST block
to after the #includes.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/chamelium/kms_chamelium_audio.c  |   74 +-
 tests/chamelium/kms_chamelium_color.c  |   59 +-
 tests/chamelium/kms_chamelium_edid.c   |  199 +-
 tests/chamelium/kms_chamelium_frames.c |  208 +-
 tests/chamelium/kms_chamelium_hpd.c    |  425 +-
 tests/intel/kms_big_fb.c               |  320 +-
 tests/intel/kms_big_joiner.c           |   50 +-
 tests/intel/kms_busy.c                 |  108 +-
 tests/intel/kms_ccs.c                  |    1 +
 tests/intel/kms_cdclk.c                |   49 +-
 tests/intel/kms_dirtyfb.c              |   24 +-
 tests/intel/kms_draw_crc.c             |   81 +-
 tests/intel/kms_dsc.c                  |    1 +
 tests/intel/kms_fb_coherency.c         |   21 +-
 tests/intel/kms_fbcon_fbt.c            |   12 +-
 tests/intel/kms_fence_pin_leak.c       |   11 +-
 tests/intel/kms_flip_scaled_crc.c      |    1 +
 tests/intel/kms_flip_tiling.c          |   11 +-
 tests/intel/kms_frontbuffer_tracking.c | 7361 ++++++++++++------------
 tests/intel/kms_legacy_colorkey.c      |   10 +-
 tests/intel/kms_mmap_write_crc.c       |   13 +-
 tests/intel/kms_pipe_b_c_ivb.c         |    7 +-
 tests/intel/kms_pm_backlight.c         |   11 +-
 tests/intel/kms_pm_dc.c                |   10 +-
 tests/intel/kms_pm_lpsp.c              |   11 +-
 tests/intel/kms_psr.c                  |   68 +-
 tests/intel/kms_psr2_sf.c              |   13 +-
 tests/intel/kms_psr2_su.c              |   11 +-
 tests/intel/kms_psr_stress_test.c      |   10 +-
 tests/intel/kms_pwrite_crc.c           |   10 +-
 tests/kms_3d.c                         |    9 +-
 tests/kms_addfb_basic.c                |  411 +-
 tests/kms_async_flips.c                |  100 +-
 tests/kms_atomic.c                     |  176 +-
 tests/kms_atomic_interruptible.c       |  100 +-
 tests/kms_atomic_transition.c          |  179 +-
 tests/kms_bw.c                         |   11 +-
 tests/kms_color.c                      |  140 +-
 tests/kms_concurrent.c                 |    9 +-
 tests/kms_content_protection.c         |  141 +-
 tests/kms_cursor_crc.c                 |  141 +-
 tests/kms_cursor_edge_walk.c           |   13 +-
 tests/kms_cursor_legacy.c              |  493 +-
 tests/kms_display_modes.c              |   37 +-
 tests/kms_dither.c                     |   32 +-
 tests/kms_dp_aux_dev.c                 |   11 +-
 tests/kms_feature_discovery.c          |   22 +-
 tests/kms_flip.c                       |   93 +-
 tests/kms_flip_event_leak.c            |   10 +-
 tests/kms_force_connector_basic.c      |   62 +-
 tests/kms_getfb.c                      |  161 +-
 tests/kms_hdmi_inject.c                |   14 +-
 tests/kms_hdr.c                        |  127 +-
 tests/kms_invalid_mode.c               |    1 +
 tests/kms_multipipe_modeset.c          |    7 +-
 tests/kms_panel_fitting.c              |   11 +-
 tests/kms_pipe_crc_basic.c             |  149 +-
 tests/kms_plane.c                      |  131 +-
 tests/kms_plane_alpha_blend.c          |   94 +-
 tests/kms_plane_cursor.c               |    8 +-
 tests/kms_plane_lowres.c               |   50 +-
 tests/kms_plane_multiple.c             |   54 +-
 tests/kms_plane_scaling.c              |  476 +-
 tests/kms_prime.c                      |   11 +-
 tests/kms_prop_blob.c                  |   96 +-
 tests/kms_properties.c                 |   39 +-
 tests/kms_rmfb.c                       |   13 +-
 tests/kms_rotation_crc.c               |  237 +-
 tests/kms_scaling_modes.c              |    7 +-
 tests/kms_selftest.c                   |    9 +-
 tests/kms_sequence.c                   |   60 +-
 tests/kms_setmode.c                    |   13 +-
 tests/kms_sysfs_edid_timing.c          |   12 +-
 tests/kms_tiled_display.c              |    1 +
 tests/kms_tv_load_detect.c             |    7 +-
 tests/kms_universal_plane.c            |   14 +-
 tests/kms_vblank.c                     |   31 +-
 tests/kms_vrr.c                        |   11 +-
 tests/kms_writeback.c                  |   17 +-
 tests/testdisplay.c                    |   12 +-
 80 files changed, 6697 insertions(+), 6556 deletions(-)

diff --git a/tests/chamelium/kms_chamelium_audio.c b/tests/chamelium/kms_chamelium_audio.c
index 34ba0cb64..f86610861 100644
--- a/tests/chamelium/kms_chamelium_audio.c
+++ b/tests/chamelium/kms_chamelium_audio.c
@@ -24,14 +24,48 @@
  *    Lyude Paul <lyude@redhat.com>
  */
 
+/**
+ * TEST: kms chamelium audio
+ * Category: Display
+ * Description: Testing Audio with a Chamelium board
+ */
+
 #include "igt_eld.h"
 #include "igt_infoframe.h"
 #include "kms_chamelium_helper.h"
 
 /**
- * TEST: kms chamelium audio
- * Category: Display
- * Description: Testing Audio with a Chamelium board
+ * SUBTEST: dp-audio
+ * Description: Playback various audio signals with various audio formats/rates,
+ *              capture them and check they are correct
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, dp_audio
+ * Mega feature: Audio, DP
+ * Test category: functionality test
+ *
+ * SUBTEST: hdmi-audio
+ * Description: Playback various audio signals with various audio formats/rates,
+ *              capture them and check they are correct
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, hdmi_audio
+ * Mega feature: Audio, HDMI
+ * Test category: functionality test
+ *
+ * SUBTEST: dp-audio-edid
+ * Description: Plug a connector with an EDID suitable for audio, check ALSA's
+ *              EDID-Like Data reports the correct audio parameters
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, dp_audio
+ * Mega feature: Audio, DP
+ * Test category: functionality test
+ *
+ * SUBTEST: hdmi-audio-edid
+ * Description: Plug a connector with an EDID suitable for audio, check ALSA's
+ *              EDID-Like Data reports the correct audio parameters
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, hdmi_audio
+ * Mega feature: Audio, HDMI
+ * Test category: functionality test
  */
 
 /* Playback parameters control the audio signal we synthesize and send */
@@ -675,23 +709,6 @@ static bool check_audio_configuration(struct alsa *alsa,
 	return true;
 }
 
-/**
- * SUBTEST: dp-audio
- * Description: Playback various audio signals with various audio formats/rates,
- *              capture them and check they are correct
- * Functionality: chamelium, dp_audio
- * Mega feature: Audio, DP
- * Test category: functionality test
- * Driver requirement: i915, xe
- *
- * SUBTEST: hdmi-audio
- * Description: Playback various audio signals with various audio formats/rates,
- *              capture them and check they are correct
- * Functionality: chamelium, hdmi_audio
- * Mega feature: Audio, HDMI
- * Test category: functionality test
- * Driver requirement: i915, xe
- */
 static const char test_display_audio_desc[] =
 	"Playback various audio signals with various audio formats/rates, "
 	"capture them and check they are correct";
@@ -786,23 +803,6 @@ static void test_display_audio(chamelium_data_t *data,
 	free(alsa);
 }
 
-/**
- * SUBTEST: dp-audio-edid
- * Description: Plug a connector with an EDID suitable for audio, check ALSA's
- *              EDID-Like Data reports the correct audio parameters
- * Functionality: chamelium, dp_audio
- * Mega feature: Audio, DP
- * Test category: functionality test
- * Driver requirement: i915, xe
- *
- * SUBTEST: hdmi-audio-edid
- * Description: Plug a connector with an EDID suitable for audio, check ALSA's
- *              EDID-Like Data reports the correct audio parameters
- * Functionality: chamelium, hdmi_audio
- * Mega feature: Audio, HDMI
- * Test category: functionality test
- * Driver requirement: i915, xe
- */
 static const char test_display_audio_edid_desc[] =
 	"Plug a connector with an EDID suitable for audio, check ALSA's "
 	"EDID-Like Data reports the correct audio parameters";
diff --git a/tests/chamelium/kms_chamelium_color.c b/tests/chamelium/kms_chamelium_color.c
index 0a9788214..6123e8a5f 100644
--- a/tests/chamelium/kms_chamelium_color.c
+++ b/tests/chamelium/kms_chamelium_color.c
@@ -30,16 +30,43 @@
 
 #include "kms_color_helper.h"
 
-IGT_TEST_DESCRIPTION("Test Color Features at Pipe level using Chamelium to verify instead of CRC");
-
 /**
  * SUBTEST: degamma
  * Description: Verify that degamma LUT transformation works correctly
+ * Driver requirement: i915, xe
  * Functionality: chamelium, colorspace
  * Mega feature: Color mgmt
  * Test category: functionality test
+ *
+ * SUBTEST: gamma
+ * Description: Verify that gamma LUT transformation works correctly
  * Driver requirement: i915, xe
+ * Functionality: chamelium, colorspace
+ * Mega feature: Color mgmt
+ * Test category: functionality test
+ *
+ * SUBTEST: ctm-%s
+ * Description: Check the color transformation %arg[1]
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, colorspace
+ * Mega feature: Color mgmt
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @0-25:            for 0.25 transparancy
+ * @0-50:            for 0.50 transparancy
+ * @0-75:            for 0.75 transparancy
+ * @blue-to-red:     from blue to red
+ * @green-to-red:    from green to red
+ * @limited-range:   with identity matrix
+ * @max:             for max transparancy
+ * @negative:        for negative transparancy
+ * @red-to-blue:     from red to blue
  */
+
+IGT_TEST_DESCRIPTION("Test Color Features at Pipe level using Chamelium to verify instead of CRC");
+
 /*
  * Draw 3 gradient rectangles in red, green and blue, with a maxed out
  * degamma LUT and verify we have the same frame dump as drawing solid color
@@ -129,14 +156,6 @@ static bool test_pipe_degamma(data_t *data,
 	return ret;
 }
 
-/**
- * SUBTEST: gamma
- * Description: Verify that gamma LUT transformation works correctly
- * Functionality: chamelium, colorspace
- * Mega feature: Color mgmt
- * Test category: functionality test
- * Driver requirement: i915, xe
- */
 /*
  * Draw 3 gradient rectangles in red, green and blue, with a maxed out
  * gamma LUT and verify we have the same frame dump as drawing solid
@@ -487,26 +506,6 @@ run_gamma_degamma_tests_for_pipe(data_t *data, enum pipe p,
 		igt_assert(test_t(data, data->primary, data->ports[port_idx]));
 }
 
-/**
- * SUBTEST: ctm-%s
- * Description: Check the color transformation %arg[1]
- * Functionality: chamelium, colorspace
- * Mega feature: Color mgmt
- * Test category: functionality test
- * Driver requirement: i915, xe
- *
- * arg[1]:
- *
- * @0-25:            for 0.25 transparancy
- * @0-50:            for 0.50 transparancy
- * @0-75:            for 0.75 transparancy
- * @blue-to-red:     from blue to red
- * @green-to-red:    from green to red
- * @limited-range:   with identity matrix
- * @max:             for max transparancy
- * @negative:        for negative transparancy
- * @red-to-blue:     from red to blue
- */
 static void
 run_ctm_tests_for_pipe(data_t *data, enum pipe p,
 		       color_t *expected_colors,
diff --git a/tests/chamelium/kms_chamelium_edid.c b/tests/chamelium/kms_chamelium_edid.c
index de8e51a04..f3f0b1e50 100644
--- a/tests/chamelium/kms_chamelium_edid.c
+++ b/tests/chamelium/kms_chamelium_edid.c
@@ -48,6 +48,106 @@
 #include "monitor_edids/hdmi_edids.h"
 #include "monitor_edids/monitor_edids_helper.h"
 
+/**
+ * SUBTEST: dp-edid-read
+ * Description: Make sure the EDID exposed by KMS is the same as the screen's
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ * Functionality: chamelium, dp_edid
+ * Mega feature: DP
+ *
+ * SUBTEST: hdmi-edid-read
+ * Description: Make sure the EDID exposed by KMS is the same as the screen's
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ * Functionality: chamelium, hdmi_edid
+ * Mega feature: HDMI
+ *
+ * SUBTEST: vga-edid-read
+ * Description: Make sure the EDID exposed by KMS is the same as the screen's
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ * Functionality: chamelium, vga_edid
+ * Mega feature: VGA
+ *
+ * SUBTEST: dp-edid-resolution-list
+ * Description: Get an EDID with many modes of different configurations, set
+ *              them on the screen and check the screen resolution matches the
+ *              mode resolution.
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, dp_edid
+ * Mega feature: DP
+ * Test category: functionality test
+ *
+ * SUBTEST: dp-mode-timings
+ * Description: For each mode of the IGT base EDID, perform a modeset and check
+ *              the mode detected by the Chamelium receiver matches the mode we
+ *              set
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, dp_edid
+ * Mega feature: DP
+ * Test category: functionality test
+ *
+ * SUBTEST: hdmi-mode-timings
+ * Description: For each mode of the IGT base EDID, perform a modeset and check
+ *              the mode detected by the Chamelium receiver matches the mode we
+ *              set
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, dp_edid
+ * Mega feature: DP
+ * Test category: functionality test
+ */
+
+/**
+ * SUBTEST: dp-edid-stress-resolution-%s
+ * Description: Stress test the DUT by testing multiple EDIDs, one right after
+ *              the other, and ensure their validity by check the real screen
+ *              resolution vs the advertised mode (%arg[1]) resolution.
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, dp_edid
+ * Mega feature: DP
+ * Test category: functionality test
+ *
+ * SUBTEST: hdmi-edid-stress-resolution-%s
+ * Description: Stress test the DUT by testing multiple EDIDs, one right after
+ *              the other, and ensure their validity by check the real screen
+ *              resolution vs the advertised mode (%arg[1]) resolution.
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, hdmi_edid
+ * Mega feature: HDMI
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @4k:      4K
+ * @non-4k:  Non 4K
+ */
+
+/**
+ * SUBTEST: dp-edid-change-during-%s
+ * Description: Simulate a screen being unplugged and another screen being
+ *              plugged during suspend, check that a uevent is sent and
+ *              connector status is updated during %arg[1]
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, dp_edid
+ * Mega feature: DP
+ * Test category: functionality test
+ *
+ * SUBTEST: hdmi-edid-change-during-%s
+ * Description: Simulate a screen being unplugged and another screen being
+ *              plugged during suspend, check that a uevent is sent and
+ *              connector status is updated during %arg[1]
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, dp_edid
+ * Mega feature: DP
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @hibernate:    hibernation
+ * @suspend:      suspend
+ */
+
 #define MODE_CLOCK_ACCURACY 0.05 /* 5% */
 
 static void get_connectors_link_status_failed(chamelium_data_t *data,
@@ -145,28 +245,6 @@ static void check_mode(struct chamelium *chamelium, struct chamelium_port *port,
 	igt_assert(video_params.vsync_polarity == mode_vsync_polarity);
 }
 
-/**
- * SUBTEST: dp-edid-read
- * Description: Make sure the EDID exposed by KMS is the same as the screen's
- * Test category: functionality test
- * Functionality: chamelium, dp_edid
- * Mega feature: DP
- * Driver requirement: i915, xe
- *
- * SUBTEST: hdmi-edid-read
- * Description: Make sure the EDID exposed by KMS is the same as the screen's
- * Test category: functionality test
- * Functionality: chamelium, hdmi_edid
- * Mega feature: HDMI
- * Driver requirement: i915, xe
- *
- * SUBTEST: vga-edid-read
- * Description: Make sure the EDID exposed by KMS is the same as the screen's
- * Test category: functionality test
- * Functionality: chamelium, vga_edid
- * Mega feature: VGA
- * Driver requirement: i915, xe
- */
 static const char igt_custom_edid_type_read_desc[] =
 	"Make sure the EDID exposed by KMS is the same as the screen's";
 static void igt_custom_edid_type_read(chamelium_data_t *data,
@@ -206,30 +284,6 @@ static void igt_custom_edid_type_read(chamelium_data_t *data,
 	drmModeFreeConnector(connector);
 }
 
-/**
- * SUBTEST: dp-edid-stress-resolution-%s
- * Description: Stress test the DUT by testing multiple EDIDs, one right after
- *              the other, and ensure their validity by check the real screen
- *              resolution vs the advertised mode (%arg[1]) resolution.
- * Test category: functionality test
- * Functionality: chamelium, dp_edid
- * Mega feature: DP
- * Driver requirement: i915, xe
- *
- * SUBTEST: hdmi-edid-stress-resolution-%s
- * Description: Stress test the DUT by testing multiple EDIDs, one right after
- *              the other, and ensure their validity by check the real screen
- *              resolution vs the advertised mode (%arg[1]) resolution.
- * Test category: functionality test
- * Functionality: chamelium, hdmi_edid
- * Mega feature: HDMI
- * Driver requirement: i915, xe
- *
- * arg[1]:
- *
- * @4k:      4K
- * @non-4k:  Non 4K
- */
 static const char igt_edid_stress_resolution_desc[] =
 	"Stress test the DUT by testing multiple EDIDs, one right after the other, "
 	"and ensure their validity by check the real screen resolution vs the "
@@ -299,16 +353,6 @@ static void edid_stress_resolution(chamelium_data_t *data,
 			      data->ports, data->port_count);
 }
 
-/**
- * SUBTEST: dp-edid-resolution-list
- * Description: Get an EDID with many modes of different configurations, set
- *              them on the screen and check the screen resolution matches the
- *              mode resolution.
- * Test category: functionality test
- * Functionality: chamelium, dp_edid
- * Mega feature: DP
- * Driver requirement: i915, xe
- */
 static const char igt_edid_resolution_list_desc[] =
 	"Get an EDID with many modes of different configurations, set them on the screen and check the"
 	" screen resolution matches the mode resolution.";
@@ -372,30 +416,6 @@ static void edid_resolution_list(chamelium_data_t *data,
 	drmModeFreeConnector(connector);
 }
 
-/**
- * SUBTEST: dp-edid-change-during-%s
- * Description: Simulate a screen being unplugged and another screen being
- *              plugged during suspend, check that a uevent is sent and
- *              connector status is updated during %arg[1]
- * Test category: functionality test
- * Functionality: chamelium, dp_edid
- * Mega feature: DP
- * Driver requirement: i915, xe
- *
- * SUBTEST: hdmi-edid-change-during-%s
- * Description: Simulate a screen being unplugged and another screen being
- *              plugged during suspend, check that a uevent is sent and
- *              connector status is updated during %arg[1]
- * Test category: functionality test
- * Functionality: chamelium, dp_edid
- * Mega feature: DP
- * Driver requirement: i915, xe
- *
- * arg[1]:
- *
- * @hibernate:    hibernation
- * @suspend:      suspend
- */
 static const char test_suspend_resume_edid_change_desc[] =
 	"Simulate a screen being unplugged and another screen being plugged "
 	"during suspend, check that a uevent is sent and connector status is "
@@ -448,25 +468,6 @@ static void test_suspend_resume_edid_change(chamelium_data_t *data,
 			    link_status_failed[1][p]);
 }
 
-/**
- * SUBTEST: dp-mode-timings
- * Description: For each mode of the IGT base EDID, perform a modeset and check
- *              the mode detected by the Chamelium receiver matches the mode we
- *              set
- * Test category: functionality test
- * Functionality: chamelium, dp_edid
- * Mega feature: DP
- * Driver requirement: i915, xe
- *
- * SUBTEST: hdmi-mode-timings
- * Description: For each mode of the IGT base EDID, perform a modeset and check
- *              the mode detected by the Chamelium receiver matches the mode we
- *              set
- * Test category: functionality test
- * Functionality: chamelium, dp_edid
- * Mega feature: DP
- * Driver requirement: i915, xe
- */
 static const char test_mode_timings_desc[] =
 	"For each mode of the IGT base EDID, perform a modeset and check the "
 	"mode detected by the Chamelium receiver matches the mode we set";
diff --git a/tests/chamelium/kms_chamelium_frames.c b/tests/chamelium/kms_chamelium_frames.c
index a313cd433..490ab3fe9 100644
--- a/tests/chamelium/kms_chamelium_frames.c
+++ b/tests/chamelium/kms_chamelium_frames.c
@@ -29,10 +29,114 @@
  * Category: Display
  * Description: Tests requiring a Chamelium board
  */
+
 #include "igt_eld.h"
 #include "igt_infoframe.h"
 #include "kms_chamelium_helper.h"
 
+/**
+ * SUBTEST: dp-crc-fast
+ * Description: Pick the first mode of the IGT base EDID, display and capture
+ * 		a few frames, then check captured frames are correct
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, frame_integrity
+ * Mega feature: DP
+ * Test category: functionality test
+ *
+ * SUBTEST: hdmi-crc-fast
+ * Description: Pick the first mode of the IGT base EDID, display and capture
+ * 		a few frames, then check captured frames are correct
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, frame_integrity
+ * Mega feature: HDMI
+ * Test category: functionality test
+ *
+ * SUBTEST: hdmi-%s-formats
+ * Description: Pick the first mode of the IGT base EDID, display and capture a
+ *              few frames, then check captured frames are correct
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, frame_integrity
+ * Mega feature: HDMI
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @crc-nonplanar:     CRC with non planar formats
+ * @cmp-planar:        Compare with planar formats
+ */
+
+/**
+ * SUBTEST: vga-frame-dump
+ * Description: For each mode of the IGT base EDID, display and capture a few
+ *              frames, then check captured frames are correct
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, frame_integrity
+ * Mega feature: VGA
+ * Test category: functionality test
+ *
+ * SUBTEST: dp-crc-%s
+ * Description: For each mode of the IGT base EDID, display and capture a %arg[1]
+ *              frame(s), then check captured frame(s) are correct
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, frame_integrity
+ * Mega feature: DP
+ * Test category: functionality test
+ *
+ * SUBTEST: hdmi-crc-%s
+ * Description: For each mode of the IGT base EDID, display and capture a %arg[1]
+ *              frame(s), then check captured frame(s) are correct
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, frame_integrity
+ * Mega feature: HDMI
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @single:    single
+ * @multiple:  multiple
+ */
+
+/**
+ * SUBTEST: dp-frame-dump
+ * Description: For each mode of the IGT base EDID, display and capture a few
+ *              frames, then download the captured frames and compare them
+ *              bit-by-bit to the sent ones
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, frame_integrity
+ * Mega feature: DP
+ * Test category: functionality test
+ *
+ * SUBTEST: hdmi-frame-dump
+ * Description: For each mode of the IGT base EDID, display and capture a few
+ *              frames, then download the captured frames and compare them
+ *              bit-by-bit to the sent ones
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, frame_integrity
+ * Mega feature: HDMI
+ * Test category: functionality test
+ *
+ * SUBTEST: hdmi-aspect-ratio
+ * Description: Pick a mode with a picture aspect-ratio, capture AVI InfoFrames
+ *              and check they include the relevant fields
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, frame_integrity
+ * Mega feature: HDMI
+ * Test category: functionality test
+ *
+ * SUBTEST: hdmi-%s-planes-random
+ * Description: Setup a few overlay planes with random parameters, capture the
+ *              frame and check it matches the expected output
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, frame_integrity
+ * Mega feature: HDMI
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @crc:     CRC check
+ * @cmp:     Compare
+ */
+
 #define connector_dynamic_subtest(name__, type__)                   \
 	igt_subtest_with_dynamic(name__)                            \
 	for_each_port(p, port) if (chamelium_port_get_type(port) == \
@@ -539,38 +643,6 @@ static void prepare_randomized_plane(chamelium_data_t *data,
 	igt_remove_fb(data->drm_fd, &pattern_fb);
 }
 
-/**
- * SUBTEST: dp-crc-fast
- * Description: Pick the first mode of the IGT base EDID, display and capture
- * 		a few frames, then check captured frames are correct
- * Test category: functionality test
- * Functionality: chamelium, frame_integrity
- * Mega feature: DP
- * Driver requirement: i915, xe
- *
- * SUBTEST: hdmi-crc-fast
- * Description: Pick the first mode of the IGT base EDID, display and capture
- * 		a few frames, then check captured frames are correct
- * Test category: functionality test
- * Functionality: chamelium, frame_integrity
- * Mega feature: HDMI
- * Driver requirement: i915, xe
- */
-
-/**
- * SUBTEST: hdmi-%s-formats
- * Description: Pick the first mode of the IGT base EDID, display and capture a
- *              few frames, then check captured frames are correct
- * Test category: functionality test
- * Functionality: chamelium, frame_integrity
- * Mega feature: HDMI
- * Driver requirement: i915, xe
- *
- * arg[1]:
- *
- * @crc-nonplanar:     CRC with non planar formats
- * @cmp-planar:        Compare with planar formats
- */
 static const char test_display_one_mode_desc[] =
 	"Pick the first mode of the IGT base EDID, display and capture a few "
 	"frames, then check captured frames are correct";
@@ -607,36 +679,6 @@ static void test_display_one_mode(chamelium_data_t *data,
 	drmModeFreeConnector(connector);
 }
 
-/**
- * SUBTEST: vga-frame-dump
- * Description: For each mode of the IGT base EDID, display and capture a few
- *              frames, then check captured frames are correct
- * Test category: functionality test
- * Functionality: chamelium, frame_integrity
- * Mega feature: VGA
- * Driver requirement: i915, xe
- *
- * SUBTEST: dp-crc-%s
- * Description: For each mode of the IGT base EDID, display and capture a %arg[1]
- *              frame(s), then check captured frame(s) are correct
- * Test category: functionality test
- * Functionality: chamelium, frame_integrity
- * Mega feature: DP
- * Driver requirement: i915, xe
- *
- * SUBTEST: hdmi-crc-%s
- * Description: For each mode of the IGT base EDID, display and capture a %arg[1]
- *              frame(s), then check captured frame(s) are correct
- * Test category: functionality test
- * Functionality: chamelium, frame_integrity
- * Mega feature: HDMI
- * Driver requirement: i915, xe
- *
- * arg[1]:
- *
- * @single:    single
- * @multiple:  multiple
- */
 static const char test_display_all_modes_desc[] =
 	"For each mode of the IGT base EDID, display and capture a few "
 	"frames, then check captured frames are correct";
@@ -695,25 +737,6 @@ static void test_display_all_modes(chamelium_data_t *data,
 	} while (++i < count_modes);
 }
 
-/**
- * SUBTEST: dp-frame-dump
- * Description: For each mode of the IGT base EDID, display and capture a few
- *              frames, then download the captured frames and compare them
- *              bit-by-bit to the sent ones
- * Test category: functionality test
- * Functionality: chamelium, frame_integrity
- * Mega feature: DP
- * Driver requirement: i915, xe
- *
- * SUBTEST: hdmi-frame-dump
- * Description: For each mode of the IGT base EDID, display and capture a few
- *              frames, then download the captured frames and compare them
- *              bit-by-bit to the sent ones
- * Test category: functionality test
- * Functionality: chamelium, frame_integrity
- * Mega feature: HDMI
- * Driver requirement: i915, xe
- */
 static const char test_display_frame_dump_desc[] =
 	"For each mode of the IGT base EDID, display and capture a few "
 	"frames, then download the captured frames and compare them "
@@ -782,15 +805,6 @@ static void test_display_frame_dump(chamelium_data_t *data,
 	} while (++i < count_modes);
 }
 
-/**
- * SUBTEST: hdmi-aspect-ratio
- * Description: Pick a mode with a picture aspect-ratio, capture AVI InfoFrames
- *              and check they include the relevant fields
- * Test category: functionality test
- * Functionality: chamelium, frame_integrity
- * Mega feature: HDMI
- * Driver requirement: i915, xe
- */
 static const char test_display_aspect_ratio_desc[] =
 	"Pick a mode with a picture aspect-ratio, capture AVI InfoFrames and "
 	"check they include the relevant fields";
@@ -871,20 +885,6 @@ static void test_display_aspect_ratio(chamelium_data_t *data,
 	drmModeFreeConnector(connector);
 }
 
-/**
- * SUBTEST: hdmi-%s-planes-random
- * Description: Setup a few overlay planes with random parameters, capture the
- *              frame and check it matches the expected output
- * Test category: functionality test
- * Functionality: chamelium, frame_integrity
- * Mega feature: HDMI
- * Driver requirement: i915, xe
- *
- * arg[1]:
- *
- * @crc:     CRC check
- * @cmp:     Compare
- */
 static const char test_display_planes_random_desc[] =
 	"Setup a few overlay planes with random parameters, capture the frame "
 	"and check it matches the expected output";
diff --git a/tests/chamelium/kms_chamelium_hpd.c b/tests/chamelium/kms_chamelium_hpd.c
index f7a9422a9..360694c76 100644
--- a/tests/chamelium/kms_chamelium_hpd.c
+++ b/tests/chamelium/kms_chamelium_hpd.c
@@ -32,6 +32,217 @@
 
 #include "kms_chamelium_helper.h"
 
+/**
+ * SUBTEST: dp-hpd-fast
+ * Description: Check that we get uevents and updated connector status on
+ * 		hotplug and unplug
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, hotplug
+ * Mega feature: DP
+ * Test category: functionality test
+ *
+ * SUBTEST: hdmi-hpd-fast
+ * Description: Check that we get uevents and updated connector status on
+ * 		hotplug and unplug
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, hotplug
+ * Mega feature: HDMI
+ * Test category: functionality test
+ *
+ * SUBTEST: vga-hpd-fast
+ * Description: Check that we get uevents and updated connector status on
+ * 		hotplug and unplug
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, hotplug
+ * Mega feature: VGA
+ * Test category: functionality test
+ *
+ * SUBTEST: dp-hpd
+ * Description: Check that we get uevents and updated connector status on
+ *              hotplug and unplug
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, hotplug
+ * Mega feature: DP
+ * Test category: functionality test
+ *
+ * SUBTEST: hdmi-hpd
+ * Description: Check that we get uevents and updated connector status on
+ *              hotplug and unplug
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, hotplug
+ * Mega feature: HDMI
+ * Test category: functionality test
+ *
+ * SUBTEST: vga-hpd
+ * Description: Check that we get uevents and updated connector status on
+ *              hotplug and unplug
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, hotplug
+ * Mega feature: VGA
+ * Test category: functionality test
+ *
+ * SUBTEST: dp-hpd-%s
+ * Description: Check that we get uevents and updated connector status on
+ *              hotplug and unplug
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, hotplug
+ * Mega feature: DP
+ * Test category: functionality test
+ *
+ * SUBTEST: hdmi-hpd-%s
+ * Description: Check that we get uevents and updated connector status on
+ *              hotplug and unplug
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, hotplug
+ * Mega feature: HDMI
+ * Test category: functionality test
+ *
+ * SUBTEST: vga-hpd-%s
+ * Description: Check that we get uevents and updated connector status on
+ *              hotplug and unplug
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, hotplug
+ * Mega feature: VGA
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @enable-disable-mode:     Toggle the mode
+ * @with-enabled-mode:       Enabling the mode
+ */
+
+/**
+ * SUBTEST: dp-hpd-for-each-pipe
+ * Description: Check that we get uevents and updated connector status on
+ *              hotplug and unplug for each pipe with valid output
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, hotplug
+ * Mega feature: DP
+ * Test category: functionality test
+ *
+ * SUBTEST: hdmi-hpd-for-each-pipe
+ * Description: Check that we get uevents and updated connector status on
+ *              hotplug and unplug for each pipe with valid output
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, hotplug
+ * Mega feature: HDMI
+ * Test category: functionality test
+ *
+ * SUBTEST: vga-hpd-for-each-pipe
+ * Description: Check that we get uevents and updated connector status on
+ *              hotplug and unplug for each pipe with valid output
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, hotplug
+ * Mega feature: VGA
+ * Test category: functionality test
+ *
+ * SUBTEST: dp-hpd-after-hibernate
+ * Description: Toggle HPD during Hibernation, check that uevents are sent and
+ *              connector status is updated
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, hotplug, hibernation
+ * Mega feature: DP
+ * Test category: functionality test
+ *
+ * SUBTEST: hdmi-hpd-after-hibernate
+ * Description: Toggle HPD during Hibernation, check that uevents are sent and
+ *              connector status is updated
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, hotplug, hibernation
+ * Mega feature: HDMI
+ * Test category: functionality test
+ *
+ * SUBTEST: vga-hpd-after-hibernate
+ * Description: Toggle HPD during Hibernation, check that uevents are sent and
+ *              connector status is updated
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, hotplug, hibernation
+ * Mega feature: VGA
+ * Test category: functionality test
+ *
+ * SUBTEST: dp-hpd-after-suspend
+ * Description: Toggle HPD during Suspend, check that uevents are sent and
+ *              connector status is updated
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, hotplug, suspend
+ * Mega feature: DP
+ * Test category: functionality test
+ *
+ * SUBTEST: hdmi-hpd-after-suspend
+ * Description: Toggle HPD during Suspend, check that uevents are sent and
+ *              connector status is updated
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, hotplug, suspend
+ * Mega feature: HDMI
+ * Test category: functionality test
+ *
+ * SUBTEST: vga-hpd-after-suspend
+ * Description: Toggle HPD during Suspend, check that uevents are sent and
+ *              connector status is updated
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, hotplug, suspend
+ * Mega feature: VGA
+ * Test category: functionality test
+ *
+ * SUBTEST: common-hpd-after-suspend
+ * Description: Toggle HPD during suspend on all connectors, check that uevents
+ * 		are sent and connector status is updated
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, hotplug, suspend
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: common-hpd-after-hibernate
+ * Description: Toggle HPD during suspend on all connectors, check that uevents
+ *              are sent and connector status is updated
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, hotplug, hibernation
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: vga-hpd-without-ddc
+ * Description: Disable DDC on a VGA connector, check we still get a uevent on
+ *              hotplug
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, hotplug
+ * Mega feature: VGA
+ * Test category: functionality test
+ *
+ * SUBTEST: dp-hpd-storm
+ * Description: Trigger a series of hotplugs in a very small timeframe to
+ *              simulate abad cable, check the kernel falls back to polling
+ *              to avoid a hotplug storm
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, hotplug
+ * Mega feature: DP
+ * Test category: functionality test
+ *
+ * SUBTEST: hdmi-hpd-storm
+ * Description: Trigger a series of hotplugs in a very small timeframe to
+ *              simulate abad cable, check the kernel falls back to polling
+ *              to avoid a hotplug storm
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, hotplug
+ * Mega feature: HDMI
+ * Test category: functionality test
+ *
+ * SUBTEST: dp-hpd-storm-disable
+ * Description: Disable HPD storm detection, trigger a storm and check the
+ *              kernel doesn't detect one
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, hotplug
+ * Mega feature: DP
+ * Test category: functionality test
+ *
+ * SUBTEST: hdmi-hpd-storm-disable
+ * Description: Disable HPD storm detection, trigger a storm and check the
+ *              kernel doesn't detect one
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, hotplug
+ * Mega feature: HDMI
+ * Test category: functionality test
+ */
+
 #define HPD_STORM_PULSE_INTERVAL_DP 100 /* ms */
 #define HPD_STORM_PULSE_INTERVAL_HDMI 200 /* ms */
 
@@ -110,84 +321,6 @@ static void try_suspend_resume_hpd(chamelium_data_t *data,
 	}
 }
 
-/**
- * SUBTEST: dp-hpd-fast
- * Description: Check that we get uevents and updated connector status on
- * 		hotplug and unplug
- * Test category: functionality test
- * Functionality: chamelium, hotplug
- * Mega feature: DP
- * Driver requirement: i915, xe
- *
- * SUBTEST: hdmi-hpd-fast
- * Description: Check that we get uevents and updated connector status on
- * 		hotplug and unplug
- * Test category: functionality test
- * Functionality: chamelium, hotplug
- * Mega feature: HDMI
- * Driver requirement: i915, xe
- *
- * SUBTEST: vga-hpd-fast
- * Description: Check that we get uevents and updated connector status on
- * 		hotplug and unplug
- * Test category: functionality test
- * Functionality: chamelium, hotplug
- * Mega feature: VGA
- * Driver requirement: i915, xe
- *
- * SUBTEST: dp-hpd
- * Description: Check that we get uevents and updated connector status on
- *              hotplug and unplug
- * Test category: functionality test
- * Functionality: chamelium, hotplug
- * Mega feature: DP
- * Driver requirement: i915, xe
- *
- * SUBTEST: hdmi-hpd
- * Description: Check that we get uevents and updated connector status on
- *              hotplug and unplug
- * Test category: functionality test
- * Functionality: chamelium, hotplug
- * Mega feature: HDMI
- * Driver requirement: i915, xe
- *
- * SUBTEST: vga-hpd
- * Description: Check that we get uevents and updated connector status on
- *              hotplug and unplug
- * Test category: functionality test
- * Functionality: chamelium, hotplug
- * Mega feature: VGA
- * Driver requirement: i915, xe
- *
- * SUBTEST: dp-hpd-%s
- * Description: Check that we get uevents and updated connector status on
- *              hotplug and unplug
- * Test category: functionality test
- * Functionality: chamelium, hotplug
- * Mega feature: DP
- * Driver requirement: i915, xe
- *
- * SUBTEST: hdmi-hpd-%s
- * Description: Check that we get uevents and updated connector status on
- *              hotplug and unplug
- * Test category: functionality test
- * Functionality: chamelium, hotplug
- * Mega feature: HDMI
- * Driver requirement: i915, xe
- *
- * SUBTEST: vga-hpd-%s
- * Description: Check that we get uevents and updated connector status on
- *              hotplug and unplug
- * Test category: functionality test
- * Functionality: chamelium, hotplug
- * Mega feature: VGA
- * Driver requirement: i915, xe
- *
- * arg[1]:
- *
- * @enable-disable-mode:     Toggle the mode
- * @with-enabled-mode:       Enabling the mode
- */
 static const char test_basic_hotplug_desc[] =
 	"Check that we get uevents and updated connector status on "
 	"hotplug and unplug";
@@ -254,31 +387,6 @@ static void test_hotplug(chamelium_data_t *data, struct chamelium_port *port,
 	igt_remove_fb(data->drm_fd, &fb);
 }
 
-/**
- * SUBTEST: dp-hpd-for-each-pipe
- * Description: Check that we get uevents and updated connector status on
- *              hotplug and unplug for each pipe with valid output
- * Test category: functionality test
- * Functionality: chamelium, hotplug
- * Mega feature: DP
- * Driver requirement: i915, xe
- *
- * SUBTEST: hdmi-hpd-for-each-pipe
- * Description: Check that we get uevents and updated connector status on
- *              hotplug and unplug for each pipe with valid output
- * Test category: functionality test
- * Functionality: chamelium, hotplug
- * Mega feature: HDMI
- * Driver requirement: i915, xe
- *
- * SUBTEST: vga-hpd-for-each-pipe
- * Description: Check that we get uevents and updated connector status on
- *              hotplug and unplug for each pipe with valid output
- * Test category: functionality test
- * Functionality: chamelium, hotplug
- * Mega feature: VGA
- * Driver requirement: i915, xe
- */
 static const char test_hotplug_for_each_pipe_desc[] =
 	"Check that we get uevents and updated connector status on "
 	"hotplug and unplug for each pipe with valid output";
@@ -324,55 +432,6 @@ static void test_hotplug_for_each_pipe(chamelium_data_t *data,
 	igt_hpd_storm_reset(data->drm_fd);
 }
 
-/**
- * SUBTEST: dp-hpd-after-hibernate
- * Description: Toggle HPD during Hibernation, check that uevents are sent and
- *              connector status is updated
- * Test category: functionality test
- * Functionality: chamelium, hotplug, hibernation
- * Mega feature: DP
- * Driver requirement: i915, xe
- *
- * SUBTEST: hdmi-hpd-after-hibernate
- * Description: Toggle HPD during Hibernation, check that uevents are sent and
- *              connector status is updated
- * Test category: functionality test
- * Functionality: chamelium, hotplug, hibernation
- * Mega feature: HDMI
- * Driver requirement: i915, xe
- *
- * SUBTEST: vga-hpd-after-hibernate
- * Description: Toggle HPD during Hibernation, check that uevents are sent and
- *              connector status is updated
- * Test category: functionality test
- * Functionality: chamelium, hotplug, hibernation
- * Mega feature: VGA
- * Driver requirement: i915, xe
- *
- * SUBTEST: dp-hpd-after-suspend
- * Description: Toggle HPD during Suspend, check that uevents are sent and
- *              connector status is updated
- * Test category: functionality test
- * Functionality: chamelium, hotplug, suspend
- * Mega feature: DP
- * Driver requirement: i915, xe
- *
- * SUBTEST: hdmi-hpd-after-suspend
- * Description: Toggle HPD during Suspend, check that uevents are sent and
- *              connector status is updated
- * Test category: functionality test
- * Functionality: chamelium, hotplug, suspend
- * Mega feature: HDMI
- * Driver requirement: i915, xe
- *
- * SUBTEST: vga-hpd-after-suspend
- * Description: Toggle HPD during Suspend, check that uevents are sent and
- *              connector status is updated
- * Test category: functionality test
- * Functionality: chamelium, hotplug, suspend
- * Mega feature: VGA
- * Driver requirement: i915, xe
- */
 static const char test_suspend_resume_hpd_desc[] =
 	"Toggle HPD during suspend, check that uevents are sent and connector "
 	"status is updated";
@@ -396,23 +455,6 @@ static void test_suspend_resume_hpd(chamelium_data_t *data,
 	igt_cleanup_uevents(mon);
 }
 
-/**
- * SUBTEST: common-hpd-after-suspend
- * Description: Toggle HPD during suspend on all connectors, check that uevents
- * 		are sent and connector status is updated
- * Test category: functionality test
- * Functionality: chamelium, hotplug, suspend
- * Mega feature: General Display Features
- * Driver requirement: i915, xe
- *
- * SUBTEST: common-hpd-after-hibernate
- * Description: Toggle HPD during suspend on all connectors, check that uevents
- *              are sent and connector status is updated
- * Test category: functionality test
- * Functionality: chamelium, hotplug, hibernation
- * Mega feature: General Display Features
- * Driver requirement: i915, xe
- */
 static const char test_suspend_resume_hpd_common_desc[] =
 	"Toggle HPD during suspend on all connectors, check that uevents are "
 	"sent and connector status is updated";
@@ -442,15 +484,6 @@ static void test_suspend_resume_hpd_common(chamelium_data_t *data,
 	igt_cleanup_uevents(mon);
 }
 
-/**
- * SUBTEST: vga-hpd-without-ddc
- * Description: Disable DDC on a VGA connector, check we still get a uevent on
- *              hotplug
- * Test category: functionality test
- * Functionality: chamelium, hotplug
- * Mega feature: VGA
- * Driver requirement: i915, xe
- */
 static const char test_hpd_without_ddc_desc[] =
 	"Disable DDC on a VGA connector, check we still get a uevent on hotplug";
 static void test_hpd_without_ddc(chamelium_data_t *data,
@@ -477,25 +510,6 @@ static void test_hpd_without_ddc(chamelium_data_t *data,
 	igt_cleanup_uevents(mon);
 }
 
-/**
- * SUBTEST: dp-hpd-storm
- * Description: Trigger a series of hotplugs in a very small timeframe to
- *              simulate abad cable, check the kernel falls back to polling
- *              to avoid a hotplug storm
- * Test category: functionality test
- * Functionality: chamelium, hotplug
- * Mega feature: DP
- * Driver requirement: i915, xe
- *
- * SUBTEST: hdmi-hpd-storm
- * Description: Trigger a series of hotplugs in a very small timeframe to
- *              simulate abad cable, check the kernel falls back to polling
- *              to avoid a hotplug storm
- * Test category: functionality test
- * Functionality: chamelium, hotplug
- * Mega feature: HDMI
- * Driver requirement: i915, xe
- */
 static const char test_hpd_storm_detect_desc[] =
 	"Trigger a series of hotplugs in a very small timeframe to simulate a"
 	"bad cable, check the kernel falls back to polling to avoid a hotplug "
@@ -530,23 +544,6 @@ static void test_hpd_storm_detect(chamelium_data_t *data,
 	igt_hpd_storm_reset(data->drm_fd);
 }
 
-/**
- * SUBTEST: dp-hpd-storm-disable
- * Description: Disable HPD storm detection, trigger a storm and check the
- *              kernel doesn't detect one
- * Test category: functionality test
- * Functionality: chamelium, hotplug
- * Mega feature: DP
- * Driver requirement: i915, xe
- *
- * SUBTEST: hdmi-hpd-storm-disable
- * Description: Disable HPD storm detection, trigger a storm and check the
- *              kernel doesn't detect one
- * Test category: functionality test
- * Functionality: chamelium, hotplug
- * Mega feature: HDMI
- * Driver requirement: i915, xe
- */
 static const char test_hpd_storm_disable_desc[] =
 	"Disable HPD storm detection, trigger a storm and check the kernel "
 	"doesn't detect one";
diff --git a/tests/intel/kms_big_fb.c b/tests/intel/kms_big_fb.c
index 035c936d9..2fb435ff4 100644
--- a/tests/intel/kms_big_fb.c
+++ b/tests/intel/kms_big_fb.c
@@ -37,6 +37,168 @@
 #include "xe/xe_ioctl.h"
 #include "xe/xe_query.h"
 
+/**
+ * SUBTEST: linear-%dbpp-rotate-%d
+ * Description: Sanity check if addfb ioctl works correctly for given combination
+ *              of Linear modifier with %arg[1]-bpp & %arg[2]-rotation
+ * Driver requirement: i915, xe
+ * Functionality: big_fbs, kms_gem_interop, rotation
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1].values:       8, 16, 32, 64
+ * arg[2].values:       0, 90, 180, 270
+ */
+
+/**
+ * SUBTEST: %s-%dbpp-rotate-%d
+ * Description: Sanity check if addfb ioctl works correctly for given combination
+ *              of %arg[1] with %arg[2]-bpp & %arg[3]-rotation
+ * Driver requirement: i915, xe
+ * Functionality: big_fbs, kms_gem_interop, rotation, tiling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @4-tiled:            TILE-4 modifier
+ * @x-tiled:            TILE-X modifier
+ * @y-tiled:            TILE-Y modifier
+ * @yf-tiled:           TILE-YF modifier
+ *
+ * arg[2].values:       8, 16, 32, 64
+ * arg[3].values:       0, 90, 180, 270
+ */
+
+/**
+ * SUBTEST: linear-max-hw-stride-%dbpp-rotate-%d
+ * Description: Test maximum hardware supported stride length for given combination
+ *              of linear modifier with max hardware stride length, %arg[1]-bpp,
+ *              and %arg[2]-rotation
+ * Driver requirement: i915, xe
+ * Functionality: big_fbs, kms_gem_interop, rotation
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1].values:       32, 64
+ * arg[2].values:       0, 180
+ */
+
+/**
+ * SUBTEST: %s-max-hw-stride-%dbpp-rotate-%d
+ * Description: Test maximum hardware supported stride length for given combination
+ *              of %arg[1] modifier with max hardware stride length, %arg[2]-bpp,
+ *              and %arg[3]-rotation
+ * Driver requirement: i915, xe
+ * Functionality: big_fbs, kms_gem_interop, rotation, tiling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @4-tiled:            TILE-4 modifier
+ * @x-tiled:            TILE-X modifier
+ * @y-tiled:            TILE-Y modifier
+ * @yf-tiled:           TILE-YF modifier
+ *
+ * arg[2].values:       32, 64
+ * arg[3].values:       0, 180
+ */
+
+/**
+ * SUBTEST: %s-max-hw-stride-%dbpp-rotate-%d-hflip
+ * Description: Test maximum hardware supported stride length for given combination
+ *              of %arg[1] modifier with max hardware stride length, %arg[2]-bpp,
+ *              and %arg[3]-rotation with H-flip mode
+ * Driver requirement: i915, xe
+ * Functionality: big_fbs, kms_gem_interop, rotation, tiling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: %s-max-hw-stride-%dbpp-rotate-%d-%s
+ * Description: Test maximum hardware supported stride length for given combination
+ *              of %arg[1] modifier with max hardware stride length, %arg[2]-bpp,
+ *              and %arg[3]-rotation with %arg[4] mode
+ * Driver requirement: i915, xe
+ * Functionality: async_flips, big_fbs, kms_gem_interop, rotation, tiling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @4-tiled:            TILE-4 modifier
+ * @x-tiled:            TILE-X modifier
+ * @y-tiled:            TILE-Y modifier
+ * @yf-tiled:           TILE-YF modifier
+ *
+ * arg[2].values:       32, 64
+ * arg[3].values:       0, 180
+ *
+ * arg[4]:
+ *
+ * @async-flip:         Async flip
+ * @hflip-async-flip:   Async & H-flip
+ */
+
+/**
+ * SUBTEST: %s-addfb-size-overflow
+ * Description: Sanity check if addfb ioctl fails correctly for (%arg[1]) modifier
+ *              with small bo.
+ * Driver requirement: i915, xe
+ * Functionality: big_fbs, kms_gem_interop, tiling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @4-tiled:    TILE-4
+ * @x-tiled:    TILE-X
+ * @y-tiled:    TILE-Y
+ * @yf-tiled:   TILE-YF
+ */
+
+/**
+ * SUBTEST: %s-addfb-size-offset-overflow
+ * Description: Sanity check if addfb ioctl fails correctly for (%arg[1]) modifier
+ *              and offsets with small bo
+ * Driver requirement: i915, xe
+ * Functionality: big_fbs, kms_gem_interop, tiling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @4-tiled:    TILE-4
+ * @x-tiled:    TILE-X
+ * @y-tiled:    TILE-Y
+ * @yf-tiled:   TILE-YF
+ */
+
+/**
+ * SUBTEST: linear-addfb
+ * Description: Sanity check if addfb ioctl works correctly with Linear modifier
+ *              for given size and strides of fb
+ * Driver requirement: i915, xe
+ * Functionality: big_fbs, kms_gem_interop
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: %s-addfb
+ * Description: Sanity check if addfb ioctl works correctly with %arg[1] modifier
+ *              for given size and strides of fb
+ * Driver requirement: i915, xe
+ * Functionality: big_fbs, kms_gem_interop, tiling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @4-tiled:    TILE-4
+ * @x-tiled:    TILE-X
+ * @y-tiled:    TILE-Y
+ * @yf-tiled:   TILE-YF
+ */
+
 IGT_TEST_DESCRIPTION("Test big framebuffers");
 
 typedef struct {
@@ -588,108 +750,6 @@ max_hw_stride_async_flip_test(data_t *data)
 	return true;
 }
 
-/**
- * SUBTEST: linear-%dbpp-rotate-%d
- * Description: Sanity check if addfb ioctl works correctly for given combination
- *              of Linear modifier with %arg[1]-bpp & %arg[2]-rotation
- * Driver requirement: i915, xe
- * Functionality: big_fbs, kms_gem_interop, rotation
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1].values:       8, 16, 32, 64
- * arg[2].values:       0, 90, 180, 270
- */
-
-/**
- * SUBTEST: %s-%dbpp-rotate-%d
- * Description: Sanity check if addfb ioctl works correctly for given combination
- *              of %arg[1] with %arg[2]-bpp & %arg[3]-rotation
- * Driver requirement: i915, xe
- * Functionality: big_fbs, kms_gem_interop, rotation, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @4-tiled:            TILE-4 modifier
- * @x-tiled:            TILE-X modifier
- * @y-tiled:            TILE-Y modifier
- * @yf-tiled:           TILE-YF modifier
- *
- * arg[2].values:       8, 16, 32, 64
- * arg[3].values:       0, 90, 180, 270
- */
-
-/**
- * SUBTEST: linear-max-hw-stride-%dbpp-rotate-%d
- * Description: Test maximum hardware supported stride length for given combination
- *              of linear modifier with max hardware stride length, %arg[1]-bpp,
- *              and %arg[2]-rotation
- * Driver requirement: i915, xe
- * Functionality: big_fbs, kms_gem_interop, rotation
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1].values:       32, 64
- * arg[2].values:       0, 180
- */
-
-/**
- * SUBTEST: %s-max-hw-stride-%dbpp-rotate-%d
- * Description: Test maximum hardware supported stride length for given combination
- *              of %arg[1] modifier with max hardware stride length, %arg[2]-bpp,
- *              and %arg[3]-rotation
- * Driver requirement: i915, xe
- * Functionality: big_fbs, kms_gem_interop, rotation, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @4-tiled:            TILE-4 modifier
- * @x-tiled:            TILE-X modifier
- * @y-tiled:            TILE-Y modifier
- * @yf-tiled:           TILE-YF modifier
- *
- * arg[2].values:       32, 64
- * arg[3].values:       0, 180
- */
-
-/**
- * SUBTEST: %s-max-hw-stride-%dbpp-rotate-%d-hflip
- * Description: Test maximum hardware supported stride length for given combination
- *              of %arg[1] modifier with max hardware stride length, %arg[2]-bpp,
- *              and %arg[3]-rotation with H-flip mode
- * Driver requirement: i915, xe
- * Functionality: big_fbs, kms_gem_interop, rotation, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: %s-max-hw-stride-%dbpp-rotate-%d-%s
- * Description: Test maximum hardware supported stride length for given combination
- *              of %arg[1] modifier with max hardware stride length, %arg[2]-bpp,
- *              and %arg[3]-rotation with %arg[4] mode
- * Driver requirement: i915, xe
- * Functionality: async_flips, big_fbs, kms_gem_interop, rotation, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @4-tiled:            TILE-4 modifier
- * @x-tiled:            TILE-X modifier
- * @y-tiled:            TILE-Y modifier
- * @yf-tiled:           TILE-YF modifier
- *
- * arg[2].values:       32, 64
- * arg[3].values:       0, 180
- *
- * arg[4]:
- *
- * @async-flip:         Async flip
- * @hflip-async-flip:   Async & H-flip
- */
 static void test_scanout(data_t *data)
 {
 	igt_output_t *output;
@@ -735,22 +795,6 @@ static void test_scanout(data_t *data)
 	igt_skip("unsupported configuration\n");
 }
 
-/**
- * SUBTEST: %s-addfb-size-overflow
- * Description: Sanity check if addfb ioctl fails correctly for (%arg[1]) modifier
- *              with small bo.
- * Driver requirement: i915, xe
- * Functionality: big_fbs, kms_gem_interop, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @4-tiled:    TILE-4
- * @x-tiled:    TILE-X
- * @y-tiled:    TILE-Y
- * @yf-tiled:   TILE-YF
- */
 static void
 test_size_overflow(data_t *data)
 {
@@ -795,22 +839,6 @@ test_size_overflow(data_t *data)
 	gem_close(data->drm_fd, bo);
 }
 
-/**
- * SUBTEST: %s-addfb-size-offset-overflow
- * Description: Sanity check if addfb ioctl fails correctly for (%arg[1]) modifier
- *              and offsets with small bo
- * Driver requirement: i915, xe
- * Functionality: big_fbs, kms_gem_interop, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @4-tiled:    TILE-4
- * @x-tiled:    TILE-X
- * @y-tiled:    TILE-Y
- * @yf-tiled:   TILE-YF
- */
 static void
 test_size_offset_overflow(data_t *data)
 {
@@ -869,30 +897,6 @@ static int rmfb(int fd, uint32_t id)
 	return err;
 }
 
-/**
- * SUBTEST: linear-addfb
- * Description: Sanity check if addfb ioctl works correctly with Linear modifier
- *              for given size and strides of fb
- * Driver requirement: i915, xe
- * Functionality: big_fbs, kms_gem_interop
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: %s-addfb
- * Description: Sanity check if addfb ioctl works correctly with %arg[1] modifier
- *              for given size and strides of fb
- * Driver requirement: i915, xe
- * Functionality: big_fbs, kms_gem_interop, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @4-tiled:    TILE-4
- * @x-tiled:    TILE-X
- * @y-tiled:    TILE-Y
- * @yf-tiled:   TILE-YF
- */
 static void
 test_addfb(data_t *data)
 {
diff --git a/tests/intel/kms_big_joiner.c b/tests/intel/kms_big_joiner.c
index 3b6dc530b..3f2091723 100644
--- a/tests/intel/kms_big_joiner.c
+++ b/tests/intel/kms_big_joiner.c
@@ -29,8 +29,33 @@
  * Category: Display
  * Description: Test big joiner
  */
+
 #include "igt.h"
 
+/**
+ * SUBTEST: invalid-modeset
+ * Description: Verify if the modeset on the adjoining pipe is rejected when
+ *              the pipe is active with a big joiner modeset
+ * Driver requirement: i915, xe
+ * Functionality: 2p1p
+ * Mega feature: Bigjoiner
+ * Test category: functionality test
+ *
+ * SUBTEST: basic
+ * Description: Verify the basic modeset on big joiner mode on all pipes
+ * Driver requirement: i915, xe
+ * Functionality: 2p1p
+ * Mega feature: Bigjoiner
+ * Test category: functionality test
+ *
+ * SUBTEST: 2x-modeset
+ * Description: Verify simultaneous modeset on 2 big joiner outputs
+ * Driver requirement: i915, xe
+ * Functionality: 2p1p
+ * Mega feature: Bigjoiner
+ * Test category: functionality test
+ */
+
 IGT_TEST_DESCRIPTION("Test big joiner");
 
 struct bigjoiner_output {
@@ -50,15 +75,6 @@ typedef struct {
 
 static int max_dotclock;
 
-/**
- * SUBTEST: invalid-modeset
- * Description: Verify if the modeset on the adjoining pipe is rejected when
- *              the pipe is active with a big joiner modeset
- * Driver requirement: i915, xe
- * Functionality: 2p1p
- * Mega feature: Bigjoiner
- * Test category: functionality test
- */
 static void test_invalid_modeset(data_t *data)
 {
 	igt_output_t *output;
@@ -99,14 +115,6 @@ static void test_invalid_modeset(data_t *data)
 	igt_assert_lt(ret, 0);
 }
 
-/**
- * SUBTEST: basic
- * Description: Verify the basic modeset on big joiner mode on all pipes
- * Driver requirement: i915, xe
- * Functionality: 2p1p
- * Mega feature: Bigjoiner
- * Test category: functionality test
- */
 static void test_basic_modeset(data_t *data)
 {
 	drmModeModeInfo *mode;
@@ -143,14 +151,6 @@ static void test_basic_modeset(data_t *data)
 	igt_display_commit2(display, COMMIT_ATOMIC);
 }
 
-/**
- * SUBTEST: 2x-modeset
- * Description: Verify simultaneous modeset on 2 big joiner outputs
- * Driver requirement: i915, xe
- * Functionality: 2p1p
- * Mega feature: Bigjoiner
- * Test category: functionality test
- */
 static void test_dual_display(data_t *data)
 {
 	drmModeModeInfo *mode;
diff --git a/tests/intel/kms_busy.c b/tests/intel/kms_busy.c
index fe450160f..c65d71b19 100644
--- a/tests/intel/kms_busy.c
+++ b/tests/intel/kms_busy.c
@@ -26,6 +26,7 @@
  * Category: Display
  * Description: Basic check of KMS ABI with busy framebuffers.
  */
+
 #include <sys/poll.h>
 #include <signal.h>
 #include <time.h>
@@ -33,6 +34,61 @@
 #include "i915/gem.h"
 #include "igt.h"
 
+/**
+ * SUBTEST: basic
+ * Description: Test for basic check of KMS ABI with busy framebuffers.
+ * Driver requirement: i915
+ * Functionality: kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: basic-hang
+ * Description: Test for basic check of KMS ABI with busy framebuffers.
+ * Driver requirement: i915
+ * Functionality: kms_core, hang
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ */
+
+/**
+ * SUBTEST: extended-modeset-hang-%s
+ * Description: Test for basic check of KMS ABI with busy framebuffers.
+ * Driver requirement: i915
+ * Functionality: kms_core, hang
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @newfb:                New framebuffer
+ * @oldfb:                Old framebuffer
+ * @newfb-with-reset:     New framebuffer with reset
+ * @oldfb-with-reset:     Old framebuffer with reset
+ */
+
+/**
+ * SUBTEST: extended-pageflip-hang-%s
+ * Description: Test for basic check of KMS ABI with busy framebuffers.
+ * Driver requirement: i915
+ * Functionality: kms_core, hang
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @newfb:     New framebuffer
+ * @oldfb:     Old framebuffer
+ */
+
+/**
+ * SUBTEST: extended-pageflip-modeset-hang-oldfb
+ * Description: Test for basic check of KMS ABI with busy framebuffers.
+ * Driver requirement: i915
+ * Functionality: kms_core, hang
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ */
+
 IGT_TEST_DESCRIPTION("Basic check of KMS ABI with busy framebuffers.");
 
 static bool all_pipes = false;
@@ -136,21 +192,6 @@ static void flip_to_fb(igt_display_t *dpy, int pipe,
 	put_ahnd(ahnd);
 }
 
-/**
- * SUBTEST: basic
- * Description: Test for basic check of KMS ABI with busy framebuffers.
- * Driver requirement: i915
- * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: basic-hang
- * Description: Test for basic check of KMS ABI with busy framebuffers.
- * Driver requirement: i915
- * Functionality: kms_core, hang
- * Mega feature: General Display Features
- * Test category: functionality test
- */
 static void test_flip(igt_display_t *dpy, int pipe,
 		      igt_output_t *output, bool modeset)
 {
@@ -243,35 +284,6 @@ static void test_atomic_commit_hang(igt_display_t *dpy, igt_plane_t *primary,
 	put_ahnd(ahnd);
 }
 
-/**
- * SUBTEST: extended-modeset-hang-%s
- * Description: Test for basic check of KMS ABI with busy framebuffers.
- * Driver requirement: i915
- * Functionality: kms_core, hang
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @newfb:                New framebuffer
- * @oldfb:                Old framebuffer
- * @newfb-with-reset:     New framebuffer with reset
- * @oldfb-with-reset:     Old framebuffer with reset
- */
-
-/**
- * SUBTEST: extended-pageflip-hang-%s
- * Description: Test for basic check of KMS ABI with busy framebuffers.
- * Driver requirement: i915
- * Functionality: kms_core, hang
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @newfb:     New framebuffer
- * @oldfb:     Old framebuffer
- */
 static void test_hang(igt_display_t *dpy,
 		      enum pipe pipe, igt_output_t *output,
 		      bool modeset, bool hang_newfb)
@@ -319,14 +331,6 @@ static void test_hang(igt_display_t *dpy,
 	igt_remove_fb(dpy->drm_fd, &fb[0]);
 }
 
-/**
- * SUBTEST: extended-pageflip-modeset-hang-oldfb
- * Description: Test for basic check of KMS ABI with busy framebuffers.
- * Driver requirement: i915
- * Functionality: kms_core, hang
- * Mega feature: General Display Features
- * Test category: functionality test
- */
 static void
 test_pageflip_modeset_hang(igt_display_t *dpy,
 			   igt_output_t *output, enum pipe pipe)
diff --git a/tests/intel/kms_ccs.c b/tests/intel/kms_ccs.c
index f21a53082..d1eb735fa 100644
--- a/tests/intel/kms_ccs.c
+++ b/tests/intel/kms_ccs.c
@@ -29,6 +29,7 @@
  *              complemented by a color control surface (CCS) that the display
  *              uses to interpret the compressed data.
  */
+
 #include "igt.h"
 
 #include "i915/gem_create.h"
diff --git a/tests/intel/kms_cdclk.c b/tests/intel/kms_cdclk.c
index 74bb254b9..97cb615c5 100644
--- a/tests/intel/kms_cdclk.c
+++ b/tests/intel/kms_cdclk.c
@@ -29,8 +29,33 @@
  * Category: Display
  * Description: Test cdclk features : crawling and squashing
  */
+
 #include "igt.h"
 
+/**
+ * SUBTEST: mode-transition-all-outputs
+ * Description: Mode transition (low to high) test to validate cdclk frequency
+ *              change by simultaneous modesets on all pipes with valid outputs.
+ * Driver requirement: i915, xe
+ * Functionality: kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: mode-transition
+ * Description: Mode transition (low to high) test to validate cdclk frequency change.
+ * Driver requirement: i915, xe
+ * Functionality: kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: plane-scaling
+ * Description: Plane scaling test to validate cdclk frequency change.
+ * Driver requirement: i915, xe
+ * Functionality: kms_core, plane, scaling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ */
+
 IGT_TEST_DESCRIPTION("Test cdclk features : crawling and squashing");
 
 #define HDISPLAY_4K	3840
@@ -253,15 +278,6 @@ static void test_mode_transition(data_t *data, enum pipe pipe, igt_output_t *out
 	igt_remove_fb(display->drm_fd, &fb);
 }
 
-/**
- * SUBTEST: mode-transition-all-outputs
- * Description: Mode transition (low to high) test to validate cdclk frequency
- *              change by simultaneous modesets on all pipes with valid outputs.
- * Driver requirement: i915, xe
- * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- */
 static void test_mode_transition_on_all_outputs(data_t *data)
 {
 	igt_display_t *display = &data->display;
@@ -358,21 +374,6 @@ static void test_mode_transition_on_all_outputs(data_t *data)
 	igt_remove_fb(data->drm_fd, &fb);
 }
 
-/**
- * SUBTEST: mode-transition
- * Description: Mode transition (low to high) test to validate cdclk frequency change.
- * Driver requirement: i915, xe
- * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: plane-scaling
- * Description: Plane scaling test to validate cdclk frequency change.
- * Driver requirement: i915, xe
- * Functionality: kms_core, plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
- */
 static void run_cdclk_test(data_t *data, uint32_t flags)
 {
 	igt_display_t *display = &data->display;
diff --git a/tests/intel/kms_dirtyfb.c b/tests/intel/kms_dirtyfb.c
index a6424dd8f..3318f8128 100644
--- a/tests/intel/kms_dirtyfb.c
+++ b/tests/intel/kms_dirtyfb.c
@@ -3,6 +3,16 @@
  * Copyright © 2023 Intel Corporation
  */
 
+/**
+ * TEST: kms dirtyfb
+ * Category: Display
+ * Description: Test DIRTYFB ioctl functionality.
+ * Driver requirement: i915, xe
+ * Functionality: dirtyfb
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ */
+
 #include <sys/types.h>
 
 #include "igt.h"
@@ -13,18 +23,7 @@
 
 #include "xe/xe_query.h"
 
-IGT_TEST_DESCRIPTION("Test the DIRTYFB ioctl is working properly with "
-		     "its related features: FBC, PSR and DRRS");
-
 /**
- * TEST: kms dirtyfb
- * Category: Display
- * Description: Test DIRTYFB ioctl functionality.
- * Driver requirement: i915, xe
- * Functionality: dirtyfb
- * Mega feature: General Display Features
- * Test category: functionality test
- *
  * SUBTEST: default-dirtyfb-ioctl
  * Description: Test DIRTYFB ioctl is working properly using GPU
  *              frontbuffer rendering with features like FBC, PSR
@@ -42,6 +41,9 @@ IGT_TEST_DESCRIPTION("Test the DIRTYFB ioctl is working properly with "
  * @psr:     psr1
  */
 
+IGT_TEST_DESCRIPTION("Test the DIRTYFB ioctl is working properly with "
+		     "its related features: FBC, PSR and DRRS");
+
 #ifndef PAGE_ALIGN
 #ifndef PAGE_SIZE
 #define PAGE_SIZE 4096
diff --git a/tests/intel/kms_draw_crc.c b/tests/intel/kms_draw_crc.c
index 4bde8fa59..7cd4c3ff1 100644
--- a/tests/intel/kms_draw_crc.c
+++ b/tests/intel/kms_draw_crc.c
@@ -27,9 +27,51 @@
  * Category: Display
  * Description: Tests whether the igt_draw library actually works.
  */
+
 #include "i915/gem.h"
 #include "igt.h"
 
+/**
+ * SUBTEST: draw-method-%s
+ * Description: Verify that igt draw library works for the %arg[1] method with
+ *              different modifiers & DRM formats.
+ * Driver requirement: i915, xe
+ * Functionality: kms_core, tiling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @blt:          Blitter
+ * @mmap-wc:      MMAP-WC
+ * @render:       Render
+ */
+
+/**
+ * SUBTEST: draw-method-%s
+ * Description: Verify that igt draw library works for the %arg[1] method with
+ *              different modifiers & DRM formats.
+ * Driver requirement: i915
+ * Functionality: kms_core, tiling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @mmap-cpu:     MMAP-CPU
+ * @mmap-gtt:     MMAP-GTT
+ * @pwrite:       PWRITE
+ */
+
+/**
+ * SUBTEST: fill-fb
+ * Description: This subtest verifies CRC after filling fb with x-tiling or none.
+ * Driver requirement: i915, xe
+ * Functionality: kms_core, tiling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ */
+
 #define MAX_CONNECTORS 32
 
 int drm_fd;
@@ -143,37 +185,6 @@ static void get_method_crc(enum igt_draw_method method, uint32_t drm_format,
 	igt_remove_fb(drm_fd, &fb);
 }
 
-/**
- * SUBTEST: draw-method-%s
- * Description: Verify that igt draw library works for the %arg[1] method with
- *              different modifiers & DRM formats.
- * Driver requirement: i915, xe
- * Functionality: kms_core, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @blt:          Blitter
- * @mmap-wc:      MMAP-WC
- * @render:       Render
- */
-
-/**
- * SUBTEST: draw-method-%s
- * Description: Verify that igt draw library works for the %arg[1] method with
- *              different modifiers & DRM formats.
- * Driver requirement: i915
- * Functionality: kms_core, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @mmap-cpu:     MMAP-CPU
- * @mmap-gtt:     MMAP-GTT
- * @pwrite:       PWRITE
- */
 static void draw_method_subtest(enum igt_draw_method method,
 				uint32_t format_index, uint64_t modifier)
 {
@@ -213,14 +224,6 @@ static void get_fill_crc(uint64_t modifier, igt_crc_t *crc)
 	igt_remove_fb(drm_fd, &fb);
 }
 
-/**
- * SUBTEST: fill-fb
- * Description: This subtest verifies CRC after filling fb with x-tiling or none.
- * Driver requirement: i915, xe
- * Functionality: kms_core, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
- */
 static void fill_fb_subtest(void)
 {
 	int rc;
diff --git a/tests/intel/kms_dsc.c b/tests/intel/kms_dsc.c
index 183944ef7..0df3613b3 100644
--- a/tests/intel/kms_dsc.c
+++ b/tests/intel/kms_dsc.c
@@ -35,6 +35,7 @@
  * Category: Display
  * Description: Test to validate display stream compression
  */
+
 #include "kms_dsc_helper.h"
 
 /**
diff --git a/tests/intel/kms_fb_coherency.c b/tests/intel/kms_fb_coherency.c
index cd6b5da4b..c05bd0508 100644
--- a/tests/intel/kms_fb_coherency.c
+++ b/tests/intel/kms_fb_coherency.c
@@ -18,6 +18,17 @@
 #include "igt.h"
 #include "xe/xe_ioctl.h"
 
+/**
+ * SUBTEST: memset-crc
+ * Description: Use display controller CRC hardware to validate (non)coherency
+ *		of memset operations on future scanout buffer objects
+ *		mmapped with different mmap methods and different caching modes.
+ * Mega feature: General Display Features
+ * Functionality: kms_core
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ */
+
 typedef struct {
 	int drm_fd;
 	igt_display_t display;
@@ -243,16 +254,6 @@ igt_main
 		select_valid_pipe_output_combo(&data);
 	}
 
-	/**
-	 * SUBTEST: memset-crc
-	 * Description: Use display controller CRC hardware to validate (non)coherency
-	 *		of memset operations on future scanout buffer objects
-	 *		mmapped with different mmap methods and different caching modes.
-	 * Mega feature: General Display Features
-	 * Functionality: kms_core
-	 * Driver requirement: i915, xe
-	 * Test category: functionality test
-	 */
 	igt_subtest_with_dynamic("memset-crc") {
 		if (igt_draw_supports_method(data.drm_fd, IGT_DRAW_MMAP_GTT)) {
 			igt_dynamic("mmap-gtt")
diff --git a/tests/intel/kms_fbcon_fbt.c b/tests/intel/kms_fbcon_fbt.c
index 4078309d9..d437d70f6 100644
--- a/tests/intel/kms_fbcon_fbt.c
+++ b/tests/intel/kms_fbcon_fbt.c
@@ -24,6 +24,13 @@
  *
  */
 
+/**
+ * TEST: kms fbcon fbt
+ * Category: Display
+ * Description: Test the relationship between fbcon and the frontbuffer tracking
+ *              infrastructure.
+ */
+
 #include "igt.h"
 #include "igt_device.h"
 #include "igt_psr.h"
@@ -33,11 +40,6 @@
 #include <fcntl.h>
 
 /**
- * TEST: kms fbcon fbt
- * Category: Display
- * Description: Test the relationship between fbcon and the frontbuffer tracking
- *              infrastructure.
- *
  * SUBTEST: fbc
  * Description: Test the relationship between fbcon and the frontbuffer tracking
  *              infrastructure with fbc enabled.
diff --git a/tests/intel/kms_fence_pin_leak.c b/tests/intel/kms_fence_pin_leak.c
index 47808800f..24e7b011c 100644
--- a/tests/intel/kms_fence_pin_leak.c
+++ b/tests/intel/kms_fence_pin_leak.c
@@ -22,6 +22,12 @@
  *
  */
 
+/**
+ * TEST: kms fence pin leak
+ * Category: Display
+ * Description: Exercises full ppgtt fence pin_count leak in the kernel.
+ */
+
 #include <errno.h>
 #include <limits.h>
 #include <stdbool.h>
@@ -30,11 +36,8 @@
 
 #include "i915/gem.h"
 #include "igt.h"
+
 /**
- * TEST: kms fence pin leak
- * Category: Display
- * Description: Exercises full ppgtt fence pin_count leak in the kernel.
- *
  * SUBTEST:
  * Description: Along with the modeset, validate fence pin_count leakage.
  * Driver requirement: i915
diff --git a/tests/intel/kms_flip_scaled_crc.c b/tests/intel/kms_flip_scaled_crc.c
index d3489c478..8f37299ea 100644
--- a/tests/intel/kms_flip_scaled_crc.c
+++ b/tests/intel/kms_flip_scaled_crc.c
@@ -27,6 +27,7 @@
  * Category: Display
  * Description: Test flipping between scaled/nonscaled framebuffers
  */
+
 #include "igt.h"
 
 /**
diff --git a/tests/intel/kms_flip_tiling.c b/tests/intel/kms_flip_tiling.c
index a6c6514a6..3bf02564e 100644
--- a/tests/intel/kms_flip_tiling.c
+++ b/tests/intel/kms_flip_tiling.c
@@ -24,17 +24,20 @@
  *   Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
  */
 
+/**
+ * TEST: kms flip tiling
+ * Category: Display
+ * Description: Test page flips and tiling scenarios
+ */
+
 #include <errno.h>
 #include <stdbool.h>
 #include <stdio.h>
 #include <string.h>
 
 #include "igt.h"
+
 /**
- * TEST: kms flip tiling
- * Category: Display
- * Description: Test page flips and tiling scenarios
- *
  * SUBTEST: flip-change-tiling
  * Description: Check pageflip between modifiers
  * Driver requirement: i915, xe
diff --git a/tests/intel/kms_frontbuffer_tracking.c b/tests/intel/kms_frontbuffer_tracking.c
index 213069947..085adc5b1 100644
--- a/tests/intel/kms_frontbuffer_tracking.c
+++ b/tests/intel/kms_frontbuffer_tracking.c
@@ -29,6 +29,7 @@
  * Category: Display
  * Description: Test the Kernel's frontbuffer tracking mechanism and its related features: FBC, PSR and DRRS
  */
+
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>
@@ -45,3785 +46,4170 @@
 #include "igt_psr.h"
 
 /**
+ * SUBTEST: basic
+ * Description: Do some basic operations regardless of which features are enabled
+ * Driver requirement: i915, xe
+ * Functionality: fbt
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
  * SUBTEST: plane-fbc-rte
  * Description: Sanity test to enable FBC on a plane.
  * Driver requirement: i915, xe
  * Functionality: fbc
  * Mega feature: General Display Features
  * Test category: functionality test
+ *
+ * SUBTEST: drrs-%dp-rte
+ * Description: Sanity test to enable DRRS with %arg[1] panels.
+ * Driver requirement: i915, xe
+ * Functionality: fbt, drrs
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbc-%dp-rte
+ * Description: Sanity test to enable FBC with %arg[1] panels.
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psr-%dp-rte
+ * Description: Sanity test to enable PSR with %arg[1] panels.
+ * Driver requirement: i915, xe
+ * Functionality: fbt, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcdrrs-%dp-rte
+ * Description: Sanity test to enable FBC & DRRS with %arg[1] panels.
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsr-%dp-rte
+ * Description: Sanity test to enable FBC & PSR with %arg[1] panels.
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psrdrrs-%dp-rte
+ * Description: Sanity test to enable PSR & DRRS with %arg[1] panels.
+ * Driver requirement: i915, xe
+ * Functionality: fbt, drrs, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsrdrrs-%dp-rte
+ * Description: Sanity test to enable FBC, PSR & DRRS with %arg[1] panels.
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt, drrs, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1].values:   1, 2
  */
 
-#define TIME SLOW_QUICK(1000, 10000)
-
-IGT_TEST_DESCRIPTION("Test the Kernel's frontbuffer tracking mechanism and "
-		     "its related features: FBC, PSR and DRRS");
-
-/*
- * One of the aspects of this test is that, for every subtest, we try different
- * combinations of the parameters defined by the struct below. Because of this,
- * a single addition of a new parameter or subtest function can lead to hundreds
- * of new subtests.
+/**
+ * SUBTEST: drrs-1p-offscren-pri-%s-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
  *
- * In order to reduce the number combinations we cut the cases that don't make
- * sense, such as writing on the secondary screen when there is only a single
- * pipe, or flipping when the target is the offscreen buffer. We also hide some
- * combinations that are somewhat redundant and don't add much value to the
- * test. For example, since we already do the offscreen testing with a single
- * pipe enabled, there's no much value in doing it again with dual pipes. If you
- * still want to try these redundant tests, you need to use the --show-hidden
- * option.
+ * SUBTEST: fbc-1p-offscren-pri-%s-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
  *
- * The most important hidden thing is the FEATURE_NONE set of tests. Whenever
- * you get a failure on any test, it is important to check whether the same test
- * fails with FEATURE_NONE - replace the feature name for "nop". If the nop test
- * also fails, then it's likely the problem will be on the IGT side instead of
- * the Kernel side. We don't expose this set of tests by default because (i)
- * they take a long time to test; and (ii) if the feature tests work, then it's
- * very likely that the nop tests will also work.
+ * SUBTEST: psr-1p-offscren-pri-%s-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915, xe
+ * Functionality: fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcdrrs-1p-offscren-pri-%s-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsr-1p-offscren-pri-%s-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psrdrrs-1p-offscren-pri-%s-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsrdrrs-1p-offscren-pri-%s-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @indfb:          Individual fb
+ * @shrfb:          Shared fb
+ *
+ * arg[2]:
+ *
+ * @blt:            Blitter
+ * @mmap-wc:        MMAP-WC
+ * @render:         Render
  */
-struct test_mode {
-	/* Are we going to enable just one monitor, or are we going to setup a
-	 * dual screen environment for the test? */
-	enum {
-		PIPE_SINGLE = 0,
-		PIPE_DUAL,
-		PIPE_COUNT,
-	} pipes;
-
-	/* The primary screen is the one that's supposed to have the "feature"
-	 * enabled on, but we have the option to draw on the secondary screen or
-	 * on some offscreen buffer. We also only theck the CRC of the primary
-	 * screen. */
-	enum {
-		SCREEN_PRIM = 0,
-		SCREEN_SCND,
-		SCREEN_OFFSCREEN,
-		SCREEN_COUNT,
-	} screen;
-
-	/* When we draw, we can draw directly on the primary plane, on the
-	 * cursor or on the sprite plane. */
-	enum {
-		PLANE_PRI = 0,
-		PLANE_CUR,
-		PLANE_SPR,
-		PLANE_COUNT,
-	} plane;
-
-	/* We can organize the screens in a way that each screen has its own
-	 * framebuffer, or in a way that all screens point to the same
-	 * framebuffer, but on different places. This includes the offscreen
-	 * screen. */
-	enum {
-		FBS_INDIVIDUAL = 0,
-		FBS_SHARED,
-		FBS_COUNT,
-	} fbs;
 
-	/* Which features are we going to test now? This is a mask!
-	 * FEATURE_DEFAULT is a special value which instruct the test to just
-	 * keep what's already enabled by default in the Kernel. */
-	enum {
-		FEATURE_NONE  = 0,
-		FEATURE_FBC   = 1,
-		FEATURE_PSR   = 2,
-		FEATURE_DRRS  = 4,
-		FEATURE_COUNT = 8,
-		FEATURE_DEFAULT = 8,
-	} feature;
+/**
+ * SUBTEST: drrs-1p-offscren-pri-%s-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915
+ * Functionality: drrs, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbc-1p-offscren-pri-%s-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915
+ * Functionality: fbc, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psr-1p-offscren-pri-%s-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915
+ * Functionality: fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcdrrs-1p-offscren-pri-%s-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915
+ * Functionality: drrs, fbc, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsr-1p-offscren-pri-%s-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915
+ * Functionality: fbc, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psrdrrs-1p-offscren-pri-%s-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915
+ * Functionality: drrs, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsrdrrs-1p-offscren-pri-%s-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915
+ * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @indfb:          Individual fb
+ * @shrfb:          Shared fb
+ *
+ * arg[2]:
+ *
+ * @mmap-cpu:       MMAP-CPU
+ * @mmap-gtt:       MMAP-GTT
+ * @pwrite:         PWRITE
+ */
 
-	/* Possible pixel formats. We just use FORMAT_DEFAULT for most tests and
-	 * only test a few things on the other formats. */
-	enum pixel_format {
-		FORMAT_RGB888 = 0,
-		FORMAT_RGB565,
-		FORMAT_RGB101010,
-		FORMAT_COUNT,
-		FORMAT_DEFAULT = FORMAT_RGB888,
-	} format;
-
-	/* There are multiple APIs where we can do the equivalent of a page flip
-	 * and they exercise slightly different codepaths inside the Kernel. */
-	enum flip_type {
-		FLIP_PAGEFLIP,
-		FLIP_MODESET,
-		FLIP_PLANES,
-		FLIP_COUNT,
-	} flip;
-
-	enum tiling_type {
-		TILING_LINEAR = 0,
-		TILING_X,
-		TILING_Y,
-		TILING_4,
-		TILING_COUNT,
-		TILING_DEFAULT = TILING_X,
-	} tiling;
-
-	enum igt_draw_method method;
-};
-
-enum color {
-	COLOR_RED,
-	COLOR_GREEN,
-	COLOR_BLUE,
-	COLOR_MAGENTA,
-	COLOR_CYAN,
-	COLOR_SCND_BG,
-	COLOR_PRIM_BG = COLOR_BLUE,
-	COLOR_OFFSCREEN_BG = COLOR_SCND_BG,
-};
-
-struct rect {
-	int x;
-	int y;
-	int w;
-	int h;
-	uint32_t color;
-};
-
-struct {
-	int fd;
-	int debugfs;
-	igt_display_t display;
-
-	struct buf_ops *bops;
-} drm;
-
-struct {
-	bool can_test;
-
-	bool supports_last_action;
-
-	struct timespec last_action;
-} fbc = {
-	.can_test = false,
-	.supports_last_action = false,
-};
-
-struct {
-	bool can_test;
-} psr = {
-	.can_test = false,
-};
-
-#define MAX_DRRS_STATUS_BUF_LEN 256
-
-struct {
-	bool can_test;
-} drrs = {
-	.can_test = false,
-};
-
-igt_pipe_crc_t *pipe_crc;
-igt_crc_t *wanted_crc;
-struct {
-	bool initialized;
-	igt_crc_t crc;
-} blue_crcs[FORMAT_COUNT];
-
-/* The goal of this structure is to easily allow us to deal with cases where we
- * have a big framebuffer and the CRTC is just displaying a subregion of this
- * big FB. */
-struct fb_region {
-	igt_plane_t *plane;
-	struct igt_fb *fb;
-	int x;
-	int y;
-	int w;
-	int h;
-};
-
-struct draw_pattern_info {
-	bool frames_stack;
-	int n_rects;
-	struct rect (*get_rect)(struct fb_region *fb, int r);
-
-	bool initialized[FORMAT_COUNT];
-	igt_crc_t *crcs[FORMAT_COUNT];
-};
-
-/* Draw big rectangles on the screen. */
-struct draw_pattern_info pattern1;
-/* 64x64 rectangles at x:0,y:0, just so we can draw on the cursor and sprite. */
-struct draw_pattern_info pattern2;
-/* 64x64 rectangles at different positions, same color, for the move test. */
-struct draw_pattern_info pattern3;
-/* Just a fullscreen green square. */
-struct draw_pattern_info pattern4;
-
-/* Command line parameters. */
-struct {
-	bool check_status;
-	bool check_crc;
-	bool fbc_check_compression;
-	bool fbc_check_last_action;
-	bool no_edp;
-	bool small_modes;
-	bool show_hidden;
-	int step;
-	int only_pipes;
-	int shared_fb_x_offset;
-	int shared_fb_y_offset;
-	enum tiling_type tiling;
-} opt = {
-	.check_status = true,
-	.check_crc = true,
-	.fbc_check_compression = true,
-	.fbc_check_last_action = true,
-	.no_edp = false,
-	.small_modes = false,
-	.show_hidden= false,
-	.step = 0,
-	.only_pipes = PIPE_COUNT,
-	.shared_fb_x_offset = 248,
-	.shared_fb_y_offset = 500,
-	.tiling = TILING_DEFAULT,
-};
-
-struct modeset_params {
-	enum pipe pipe;
-	igt_output_t *output;
-	drmModeModeInfo mode;
-
-	struct fb_region primary;
-	struct fb_region cursor;
-	struct fb_region sprite;
-};
-
-struct modeset_params prim_mode_params;
-struct modeset_params scnd_mode_params;
-
-struct fb_region offscreen_fb;
-struct screen_fbs {
-	bool initialized;
-
-	struct igt_fb prim_pri;
-	struct igt_fb prim_cur;
-	struct igt_fb prim_spr;
-
-	struct igt_fb scnd_pri;
-	struct igt_fb scnd_cur;
-	struct igt_fb scnd_spr;
-
-	struct igt_fb offscreen;
-	struct igt_fb big;
-} fbs[FORMAT_COUNT];
-
-struct {
-	pthread_t thread;
-	bool stop;
-
-	uint32_t handle;
-	uint32_t size;
-	uint32_t stride;
-	int width;
-	int height;
-	uint32_t color;
-	int bpp;
-	uint32_t tiling;
-} busy_thread = {
-	.stop = true,
-};
-
-static drmModeModeInfo *get_connector_smallest_mode(igt_output_t *output)
-{
-	drmModeConnector *c = output->config.connector;
-	const drmModeModeInfo *smallest = NULL;
-	int i;
-
-	if (c->connector_type == DRM_MODE_CONNECTOR_eDP)
-		return igt_std_1024_mode_get(igt_output_preferred_vrefresh(output));
-
-	for (i = 0; i < c->count_modes; i++) {
-		const drmModeModeInfo *mode = &c->modes[i];
-
-		if (!smallest ||
-		    mode->hdisplay * mode->vdisplay <
-		    smallest->hdisplay * smallest->vdisplay)
-			smallest = mode;
-	}
-
-	if (smallest)
-		return igt_memdup(smallest, sizeof(*smallest));
-	else
-		return igt_std_1024_mode_get(60);
-}
-
-static drmModeModeInfo *connector_get_mode(igt_output_t *output)
-{
-	/* On HSW the CRC WA is so awful that it makes you think everything is
-	  * bugged. */
-	if (IS_HASWELL(intel_get_drm_devid(drm.fd)) &&
-	    output->config.connector->connector_type == DRM_MODE_CONNECTOR_eDP)
-		return igt_std_1024_mode_get(igt_output_preferred_vrefresh(output));
-
-	if (opt.small_modes)
-		return get_connector_smallest_mode(output);
-	else
-		return igt_memdup(&output->config.default_mode,
-				  sizeof(output->config.default_mode));
-}
-
-static void init_mode_params(struct modeset_params *params,
-			     igt_output_t *output, enum pipe pipe)
-{
-	drmModeModeInfo *mode;
-
-	igt_output_override_mode(output, NULL);
-	mode = connector_get_mode(output);
-
-	params->pipe = pipe;
-	params->output = output;
-	params->mode = *mode;
-
-	params->primary.plane = igt_pipe_get_plane_type(&drm.display.pipes[pipe], DRM_PLANE_TYPE_PRIMARY);
-	params->primary.fb = NULL;
-	params->primary.x = 0;
-	params->primary.y = 0;
-	params->primary.w = mode->hdisplay;
-	params->primary.h = mode->vdisplay;
-
-	params->cursor.plane = igt_pipe_get_plane_type(&drm.display.pipes[pipe], DRM_PLANE_TYPE_CURSOR);
-	params->cursor.fb = NULL;
-	params->cursor.x = 0;
-	params->cursor.y = 0;
-	params->cursor.w = 64;
-	params->cursor.h = 64;
-
-	params->sprite.plane = igt_pipe_get_plane_type(&drm.display.pipes[pipe], DRM_PLANE_TYPE_OVERLAY);
-	igt_require(params->sprite.plane);
-	params->sprite.fb = NULL;
-	params->sprite.x = 0;
-	params->sprite.y = 0;
-	params->sprite.w = 64;
-	params->sprite.h = 64;
-
-	free(mode);
-}
-
-static bool find_connector(bool edp_only, bool pipe_a,
-			   igt_output_t *forbidden_output,
-			   enum pipe forbidden_pipe,
-			   igt_output_t **ret_output,
-			   enum pipe *ret_pipe)
-{
-	igt_output_t *output;
-	enum pipe pipe;
-
-	for_each_pipe_with_valid_output(&drm.display, pipe, output) {
-		drmModeConnectorPtr c = output->config.connector;
-
-		if (edp_only && c->connector_type != DRM_MODE_CONNECTOR_eDP)
-			continue;
-
-		if (pipe_a && pipe != PIPE_A)
-			continue;
-
-		if (output == forbidden_output || pipe == forbidden_pipe) {
-			igt_output_set_pipe(output, pipe);
-			igt_output_override_mode(output, connector_get_mode(output));
-
-			continue;
-		}
-
-		if (c->connector_type == DRM_MODE_CONNECTOR_eDP && opt.no_edp)
-			continue;
-
-		igt_output_set_pipe(output, pipe);
-		igt_output_override_mode(output, connector_get_mode(output));
-		if (intel_pipe_output_combo_valid(&drm.display)) {
-			*ret_output = output;
-			*ret_pipe = pipe;
-			return true;
-		}
-	}
-
-	return false;
-}
-
-static bool init_modeset_cached_params(void)
-{
-	igt_output_t *prim_output = NULL, *scnd_output = NULL;
-	enum pipe prim_pipe, scnd_pipe;
-
-	/*
-	 * We have this problem where PSR is only present on eDP monitors and
-	 * FBC is only present on pipe A for some platforms. So we search first
-	 * for the ideal case of eDP supporting pipe A, and try the less optimal
-	 * configs later, sacrificing  one of the features.
-	 * TODO: refactor the code in a way that allows us to have different
-	 * sets of prim/scnd structs for different features.
-	 */
-	find_connector(true, true, NULL, PIPE_NONE, &prim_output, &prim_pipe);
-	if (!prim_output)
-		find_connector(true, false, NULL, PIPE_NONE, &prim_output, &prim_pipe);
-	if (!prim_output)
-		find_connector(false, true, NULL, PIPE_NONE, &prim_output, &prim_pipe);
-	if (!prim_output)
-		find_connector(false, false, NULL, PIPE_NONE, &prim_output, &prim_pipe);
-
-	if (!prim_output)
-		return false;
-
-	find_connector(false, false, prim_output, prim_pipe,
-		       &scnd_output, &scnd_pipe);
-
-	init_mode_params(&prim_mode_params, prim_output, prim_pipe);
-
-	if (!scnd_output) {
-		scnd_mode_params.pipe = PIPE_NONE;
-		scnd_mode_params.output = NULL;
-		return true;
-	}
-
-	init_mode_params(&scnd_mode_params, scnd_output, scnd_pipe);
-	return true;
-}
-
-static uint64_t tiling_to_modifier(enum tiling_type tiling)
-{
-	switch (tiling) {
-	case TILING_LINEAR:
-		return DRM_FORMAT_MOD_LINEAR;
-	case TILING_X:
-		return I915_FORMAT_MOD_X_TILED;
-	case TILING_Y:
-		return I915_FORMAT_MOD_Y_TILED;
-	case TILING_4:
-		return I915_FORMAT_MOD_4_TILED;
-	default:
-		igt_assert(false);
-	}
-}
-
-static void create_fb(enum pixel_format pformat, int width, int height,
-		      enum tiling_type tiling, int plane, struct igt_fb *fb)
-{
-	uint32_t format;
-	uint64_t size, modifier;
-	unsigned int stride;
-
-	switch (pformat) {
-	case FORMAT_RGB888:
-		if (plane == PLANE_CUR)
-			format = DRM_FORMAT_ARGB8888;
-		else
-			format = DRM_FORMAT_XRGB8888;
-		break;
-	case FORMAT_RGB565:
-		/* Only the primary plane supports 16bpp! */
-		if (plane == PLANE_PRI)
-			format = DRM_FORMAT_RGB565;
-		else if (plane == PLANE_CUR)
-			format = DRM_FORMAT_ARGB8888;
-		else
-			format = DRM_FORMAT_XRGB8888;
-		break;
-	case FORMAT_RGB101010:
-		if (plane == PLANE_PRI)
-			format = DRM_FORMAT_XRGB2101010;
-		else if (plane == PLANE_CUR)
-			format = DRM_FORMAT_ARGB8888;
-		else
-			format = DRM_FORMAT_XRGB8888;
-		break;
-	default:
-		igt_assert(false);
-	}
-
-	modifier = tiling_to_modifier(tiling);
-
-	igt_warn_on(plane == PLANE_CUR && tiling != TILING_LINEAR);
-
-	igt_calc_fb_size(drm.fd, width, height, format, modifier, &size,
-			 &stride);
-
-	igt_create_fb_with_bo_size(drm.fd, width, height, format, modifier,
-				   IGT_COLOR_YCBCR_BT709,
-				   IGT_COLOR_YCBCR_LIMITED_RANGE,
-				   fb, size, stride);
-}
-
-static uint32_t pick_color(struct igt_fb *fb, enum color ecolor)
-{
-	uint32_t color, r, g, b, b2, a;
-	bool alpha = false;
-
-	switch (fb->drm_format) {
-	case DRM_FORMAT_RGB565:
-		a =  0x0;
-		r =  0x1F << 11;
-		g =  0x3F << 5;
-		b =  0x1F;
-		b2 = 0x10;
-		break;
-	case DRM_FORMAT_ARGB8888:
-		alpha = true;
-	case DRM_FORMAT_XRGB8888:
-		a =  0xFF << 24;
-		r =  0xFF << 16;
-		g =  0xFF << 8;
-		b =  0xFF;
-		b2 = 0x80;
-		break;
-	case DRM_FORMAT_ARGB2101010:
-		alpha = true;
-	case DRM_FORMAT_XRGB2101010:
-		a = 0x3 << 30;
-		r = 0x3FF << 20;
-		g = 0x3FF << 10;
-		b = 0x3FF;
-		b2 = 0x200;
-		break;
-	default:
-		igt_assert(false);
-	}
-
-	switch (ecolor) {
-	case COLOR_RED:
-		color = r;
-		break;
-	case COLOR_GREEN:
-		color = g;
-		break;
-	case COLOR_BLUE:
-		color = b;
-		break;
-	case COLOR_MAGENTA:
-		color = r | b;
-		break;
-	case COLOR_CYAN:
-		color = g | b;
-		break;
-	case COLOR_SCND_BG:
-		color = b2;
-		break;
-	default:
-		igt_assert(false);
-	}
-
-	if (alpha)
-		color |= a;
+/**
+ * SUBTEST: drrs-%dp-primscrn-%s-indfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915
+ * Functionality: drrs, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbc-%dp-primscrn-%s-indfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915
+ * Functionality: fbc, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psr-%dp-primscrn-%s-indfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915
+ * Functionality: fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcdrrs-%dp-primscrn-%s-indfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915
+ * Functionality: drrs, fbc, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsr-%dp-primscrn-%s-indfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915
+ * Functionality: fbc, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psrdrrs-%dp-primscrn-%s-indfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915
+ * Functionality: drrs, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-indfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915
+ * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1].values:   1, 2
+ *
+ * arg[2]:
+ *
+ * @cur:            Cursor plane
+ * @pri:            Primary plane
+ * @spr:            Sprite plane
+ *
+ * arg[3]:
+ *
+ * @mmap-cpu:       MMAP-CPU
+ * @mmap-gtt:       MMAP-GTT
+ * @pwrite:         PWRITE
+ */
 
-	return color;
-}
+/**
+ * SUBTEST: drrs-%dp-primscrn-%s-indfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbc-%dp-primscrn-%s-indfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psr-%dp-primscrn-%s-indfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915, xe
+ * Functionality: fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcdrrs-%dp-primscrn-%s-indfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsr-%dp-primscrn-%s-indfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psrdrrs-%dp-primscrn-%s-indfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-indfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1].values:   1, 2
+ *
+ * arg[2]:
+ *
+ * @cur:            Cursor plane
+ * @pri:            Primary plane
+ * @spr:            Sprite plane
+ *
+ * arg[3]:
+ *
+ * @blt:            Blitter
+ * @mmap-wc:        MMAP-WC
+ * @render:         Render
+ */
 
-static void fill_fb(struct igt_fb *fb, enum color ecolor)
-{
-	igt_draw_fill_fb(drm.fd, fb, pick_color(fb, ecolor));
-}
+/**
+ * SUBTEST: drrs-%dp-primscrn-pri-shrfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbc-%dp-primscrn-pri-shrfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psr-%dp-primscrn-pri-shrfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915, xe
+ * Functionality: fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcdrrs-%dp-primscrn-pri-shrfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsr-%dp-primscrn-pri-shrfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psrdrrs-%dp-primscrn-pri-shrfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsrdrrs-%dp-primscrn-pri-shrfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1].values:   1, 2
+ *
+ * arg[2]:
+ *
+ * @blt:            Blitter
+ * @mmap-wc:        MMAP-WC
+ * @render:         Render
+ */
 
-/*
- * This is how the prim, scnd and offscreen FBs should be positioned inside the
- * shared FB. The prim buffer starts at the X and Y offsets defined by
- * opt.shared_fb_{x,y}_offset, then scnd starts at the same X pixel offset,
- * right after prim ends on the Y axis, then the offscreen fb starts after scnd
- * ends. Just like the picture:
+/**
+ * SUBTEST: drrs-%dp-primscrn-pri-shrfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915
+ * Functionality: drrs, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbc-%dp-primscrn-pri-shrfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915
+ * Functionality: fbc, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psr-%dp-primscrn-pri-shrfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915
+ * Functionality: fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcdrrs-%dp-primscrn-pri-shrfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915
+ * Functionality: drrs, fbc, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsr-%dp-primscrn-pri-shrfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915
+ * Functionality: fbc, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psrdrrs-%dp-primscrn-pri-shrfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915
+ * Functionality: drrs, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
  *
- * +-------------------------+
- * | shared fb               |
- * |   +------------------+  |
- * |   | prim             |  |
- * |   |                  |  |
- * |   |                  |  |
- * |   |                  |  |
- * |   +------------------+--+
- * |   | scnd                |
- * |   |                     |
- * |   |                     |
- * |   +---------------+-----+
- * |   | offscreen     |     |
- * |   |               |     |
- * |   |               |     |
- * +---+---------------+-----+
+ * SUBTEST: fbcpsrdrrs-%dp-primscrn-pri-shrfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915
+ * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
  *
- * We do it vertically instead of the more common horizontal case in order to
- * avoid super huge strides not supported by FBC.
+ * arg[1].values:   1, 2
+ *
+ * arg[2]:
+ *
+ * @mmap-cpu:       MMAP-CPU
+ * @mmap-gtt:       MMAP-GTT
+ * @pwrite:         PWRITE
  */
-static void create_shared_fb(enum pixel_format format, enum tiling_type tiling)
-{
-	int prim_w, prim_h, scnd_w, scnd_h, offs_w, offs_h, big_w, big_h;
-	struct screen_fbs *s = &fbs[format];
-
-	prim_w = prim_mode_params.mode.hdisplay;
-	prim_h = prim_mode_params.mode.vdisplay;
-
-	if (scnd_mode_params.output) {
-		scnd_w = scnd_mode_params.mode.hdisplay;
-		scnd_h = scnd_mode_params.mode.vdisplay;
-	} else {
-		scnd_w = 0;
-		scnd_h = 0;
-	}
-	offs_w = offscreen_fb.w;
-	offs_h = offscreen_fb.h;
-
-	big_w = prim_w;
-	if (scnd_w > big_w)
-		big_w = scnd_w;
-	if (offs_w > big_w)
-		big_w = offs_w;
-	big_w += opt.shared_fb_x_offset;
-
-	big_h = prim_h + scnd_h + offs_h + opt.shared_fb_y_offset;
-
-	create_fb(format, big_w, big_h, tiling, PLANE_PRI, &s->big);
-}
-
-static void destroy_fbs(enum pixel_format format)
-{
-	struct screen_fbs *s = &fbs[format];
-
-	if (!s->initialized)
-		return;
-
-	if (scnd_mode_params.output) {
-		igt_remove_fb(drm.fd, &s->scnd_pri);
-		igt_remove_fb(drm.fd, &s->scnd_cur);
-		igt_remove_fb(drm.fd, &s->scnd_spr);
-	}
-	igt_remove_fb(drm.fd, &s->prim_pri);
-	igt_remove_fb(drm.fd, &s->prim_cur);
-	igt_remove_fb(drm.fd, &s->prim_spr);
-	igt_remove_fb(drm.fd, &s->offscreen);
-	igt_remove_fb(drm.fd, &s->big);
-}
-
-static void create_fbs(enum pixel_format format, enum tiling_type tiling)
-{
-	struct screen_fbs *s = &fbs[format];
-
-	if (s->initialized)
-		destroy_fbs(format);
-
-	s->initialized = true;
-
-	create_fb(format, prim_mode_params.mode.hdisplay,
-		  prim_mode_params.mode.vdisplay, tiling, PLANE_PRI,
-		  &s->prim_pri);
-	create_fb(format, prim_mode_params.cursor.w,
-		  prim_mode_params.cursor.h, DRM_FORMAT_MOD_LINEAR,
-		  PLANE_CUR, &s->prim_cur);
-	create_fb(format, prim_mode_params.sprite.w,
-		  prim_mode_params.sprite.h, tiling, PLANE_SPR, &s->prim_spr);
-
-	create_fb(format, offscreen_fb.w, offscreen_fb.h, tiling, PLANE_PRI,
-		  &s->offscreen);
-
-	create_shared_fb(format, tiling);
-
-	if (!scnd_mode_params.output)
-		return;
-
-	create_fb(format, scnd_mode_params.mode.hdisplay,
-		  scnd_mode_params.mode.vdisplay, tiling, PLANE_PRI,
-		  &s->scnd_pri);
-	create_fb(format, scnd_mode_params.cursor.w, scnd_mode_params.cursor.h,
-		  DRM_FORMAT_MOD_LINEAR, PLANE_CUR, &s->scnd_cur);
-	create_fb(format, scnd_mode_params.sprite.w, scnd_mode_params.sprite.h,
-		  tiling, PLANE_SPR, &s->scnd_spr);
-}
-
-static void __set_prim_plane_for_params(struct modeset_params *params)
-{
-	igt_plane_set_fb(params->primary.plane, params->primary.fb);
-	igt_plane_set_position(params->primary.plane, 0, 0);
-	igt_plane_set_size(params->primary.plane, params->mode.hdisplay, params->mode.vdisplay);
-	igt_fb_set_position(params->primary.fb, params->primary.plane,
-			    params->primary.x, params->primary.y);
-	igt_fb_set_size(params->primary.fb, params->primary.plane,
-			params->mode.hdisplay, params->mode.vdisplay);
-}
-
-static void __set_mode_for_params(struct modeset_params *params)
-{
-	igt_output_override_mode(params->output, &params->mode);
-	igt_output_set_pipe(params->output, params->pipe);
-
-	__set_prim_plane_for_params(params);
-}
-
-static void set_mode_for_params(struct modeset_params *params)
-{
-	__set_mode_for_params(params);
-	igt_display_commit(&drm.display);
-}
 
-static void __debugfs_read_crtc(const char *param, char *buf, int len)
-{
-	int dir;
-	enum pipe pipe;
+/**
+ * SUBTEST: drrs-2p-scndscrn-%s-indfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbc-2p-scndscrn-%s-indfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psr-2p-scndscrn-%s-indfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915, xe
+ * Functionality: fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcdrrs-2p-scndscrn-%s-indfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsr-2p-scndscrn-%s-indfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psrdrrs-2p-scndscrn-%s-indfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-indfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @cur:            Cursor plane
+ * @pri:            Primary plane
+ * @spr:            Sprite plane
+ *
+ * arg[2]:
+ *
+ * @blt:            Blitter
+ * @mmap-wc:        MMAP-WC
+ * @render:         Render
+ */
 
-	pipe = prim_mode_params.pipe;
-	dir = igt_debugfs_pipe_dir(drm.fd, pipe, O_DIRECTORY);
-	igt_require_fd(dir);
-	igt_debugfs_simple_read(dir, param, buf, len);
-	close(dir);
-}
+/**
+ * SUBTEST: drrs-2p-scndscrn-%s-indfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915
+ * Functionality: drrs, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbc-2p-scndscrn-%s-indfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915
+ * Functionality: fbc, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psr-2p-scndscrn-%s-indfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915
+ * Functionality: fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcdrrs-2p-scndscrn-%s-indfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915
+ * Functionality: drrs, fbc, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsr-2p-scndscrn-%s-indfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915
+ * Functionality: fbc, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psrdrrs-2p-scndscrn-%s-indfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915
+ * Functionality: drrs, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-indfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915
+ * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @cur:            Cursor plane
+ * @pri:            Primary plane
+ * @spr:            Sprite plane
+ *
+ * arg[2]:
+ *
+ * @mmap-cpu:       MMAP-CPU
+ * @mmap-gtt:       MMAP-GTT
+ * @pwrite:         PWRITE
+ */
 
-#define debugfs_read_crtc(p, arr) __debugfs_read_crtc(p, arr, sizeof(arr))
-#define debugfs_write_crtc(p, arr) __debugfs_write_crtc(p, arr, sizeof(arr))
-#define debugfs_read_connector(p, arr) __debugfs_read_connector(p, arr, sizeof(arr))
+/**
+ * SUBTEST: drrs-2p-scndscrn-pri-shrfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbc-2p-scndscrn-pri-shrfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psr-2p-scndscrn-pri-shrfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915, xe
+ * Functionality: fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcdrrs-2p-scndscrn-pri-shrfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsr-2p-scndscrn-pri-shrfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psrdrrs-2p-scndscrn-pri-shrfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsrdrrs-2p-scndscrn-pri-shrfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @blt:            Blitter
+ * @mmap-wc:        MMAP-WC
+ * @render:         Render
+ */
 
-static bool is_drrs_high(void)
-{
-	char buf[MAX_DRRS_STATUS_BUF_LEN];
+/**
+ * SUBTEST: drrs-2p-scndscrn-pri-shrfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915
+ * Functionality: drrs, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbc-2p-scndscrn-pri-shrfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915
+ * Functionality: fbc, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psr-2p-scndscrn-pri-shrfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915
+ * Functionality: fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcdrrs-2p-scndscrn-pri-shrfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915
+ * Functionality: drrs, fbc, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsr-2p-scndscrn-pri-shrfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915
+ * Functionality: fbc, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psrdrrs-2p-scndscrn-pri-shrfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915
+ * Functionality: drrs, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsrdrrs-2p-scndscrn-pri-shrfb-draw-%s
+ * Description: Draw a set of rectangles on the screen using the provided method
+ * Driver requirement: i915
+ * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @mmap-cpu:       MMAP-CPU
+ * @mmap-gtt:       MMAP-GTT
+ * @pwrite:         PWRITE
+ */
 
-	debugfs_read_crtc("i915_drrs_status", buf);
-	return strstr(buf, "DRRS refresh rate: high");
-}
+/**
+ * SUBTEST: drrs-%dp-pri-indfb-multidraw
+ * Description: Draw a set of rectangles on the screen using alternated drawing methods
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbc-%dp-pri-indfb-multidraw
+ * Description: Draw a set of rectangles on the screen using alternated drawing methods
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psr-%dp-pri-indfb-multidraw
+ * Description: Draw a set of rectangles on the screen using alternated drawing methods
+ * Driver requirement: i915, xe
+ * Functionality: fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcdrrs-%dp-pri-indfb-multidraw
+ * Description: Draw a set of rectangles on the screen using alternated drawing methods
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsr-%dp-pri-indfb-multidraw
+ * Description: Draw a set of rectangles on the screen using alternated drawing methods
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psrdrrs-%dp-pri-indfb-multidraw
+ * Description: Draw a set of rectangles on the screen using alternated drawing methods
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsrdrrs-%dp-pri-indfb-multidraw
+ * Description: Draw a set of rectangles on the screen using alternated drawing methods
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1].values:   1, 2
+ */
 
-static bool is_drrs_low(void)
-{
-	char buf[MAX_DRRS_STATUS_BUF_LEN];
+/**
+ * SUBTEST: drrs-%s-draw-%s
+ * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbc-%s-draw-%s
+ * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psr-%s-draw-%s
+ * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
+ * Driver requirement: i915, xe
+ * Functionality: fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcdrrs-%s-draw-%s
+ * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsr-%s-draw-%s
+ * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psrdrrs-%s-draw-%s
+ * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsrdrrs-%s-draw-%s
+ * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @rgb101010:      FORMAT_RGB101010
+ * @rgb565:         FORMAT_RGB565
+ *
+ * arg[2]:
+ *
+ * @blt:            Blitter
+ * @mmap-wc:        MMAP-WC
+ * @render:         Render
+ */
 
-	debugfs_read_crtc("i915_drrs_status", buf);
-	return strstr(buf, "DRRS refresh rate: low");
-}
+/**
+ * SUBTEST: drrs-%s-draw-%s
+ * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
+ * Driver requirement: i915
+ * Functionality: drrs, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbc-%s-draw-%s
+ * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
+ * Driver requirement: i915
+ * Functionality: fbc, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psr-%s-draw-%s
+ * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
+ * Driver requirement: i915
+ * Functionality: fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcdrrs-%s-draw-%s
+ * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
+ * Driver requirement: i915
+ * Functionality: drrs, fbc, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsr-%s-draw-%s
+ * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
+ * Driver requirement: i915
+ * Functionality: fbc, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psrdrrs-%s-draw-%s
+ * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
+ * Driver requirement: i915
+ * Functionality: drrs, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsrdrrs-%s-draw-%s
+ * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
+ * Driver requirement: i915
+ * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @rgb101010:      FORMAT_RGB101010
+ * @rgb565:         FORMAT_RGB565
+ *
+ * arg[2]:
+ *
+ * @mmap-cpu:       MMAP-CPU
+ * @mmap-gtt:       MMAP-GTT
+ * @pwrite:         PWRITE
+ */
 
-static void drrs_print_status(void)
-{
-	char buf[MAX_DRRS_STATUS_BUF_LEN];
+/**
+ * SUBTEST: drrs-slowdraw
+ * Description: Sleep a little bit between drawing operations with DRRS
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psr-slowdraw
+ * Description: Sleep a little bit between drawing operations with PSR
+ * Driver requirement: i915, xe
+ * Functionality: fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcdrrs-slowdraw
+ * Description: Sleep a little bit between drawing operations with FBC & DRRS
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsr-slowdraw
+ * Description: Sleep a little bit between drawing operations with FBC & PSR
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psrdrrs-slowdraw
+ * Description: Sleep a little bit between drawing operations with PSR & DRRS
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsrdrrs-slowdraw
+ * Description: Sleep a little bit between drawing operations with FBC, PSR & DRRS
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ */
 
-	debugfs_read_crtc("i915_drrs_status", buf);
-	igt_info("DRRS STATUS :\n%s\n", buf);
-}
+/**
+ * SUBTEST: drrs-%dp-primscrn-%s-%sflip-blt
+ * Description: Just exercise page flips with the patterns we have
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbc-%dp-primscrn-%s-%sflip-blt
+ * Description: Just exercise page flips with the patterns we have
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psr-%dp-primscrn-%s-%sflip-blt
+ * Description: Just exercise page flips with the patterns we have
+ * Driver requirement: i915, xe
+ * Functionality: fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcdrrs-%dp-primscrn-%s-%sflip-blt
+ * Description: Just exercise page flips with the patterns we have
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsr-%dp-primscrn-%s-%sflip-blt
+ * Description: Just exercise page flips with the patterns we have
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psrdrrs-%dp-primscrn-%s-%sflip-blt
+ * Description: Just exercise page flips with the patterns we have
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-%sflip-blt
+ * Description: Just exercise page flips with the patterns we have
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1].values:   1, 2
+ *
+ * arg[2]:
+ *
+ * @indfb:          Individual fb
+ * @shrfb:          Shared fb
+ *
+ * arg[3]:
+ *
+ * @ms:             Modeset
+ * @pg:             Page flip
+ * @pl:             Plane change
+ */
 
-static struct timespec fbc_get_last_action(void)
-{
-	struct timespec ret = { 0, 0 };
-	char buf[128];
-	char *action;
-	ssize_t n_read;
+/**
+ * SUBTEST: drrs-2p-scndscrn-%s-%sflip-blt
+ * Description: Just exercise page flips with the patterns we have
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbc-2p-scndscrn-%s-%sflip-blt
+ * Description: Just exercise page flips with the patterns we have
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psr-2p-scndscrn-%s-%sflip-blt
+ * Description: Just exercise page flips with the patterns we have
+ * Driver requirement: i915, xe
+ * Functionality: fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcdrrs-2p-scndscrn-%s-%sflip-blt
+ * Description: Just exercise page flips with the patterns we have
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsr-2p-scndscrn-%s-%sflip-blt
+ * Description: Just exercise page flips with the patterns we have
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psrdrrs-2p-scndscrn-%s-%sflip-blt
+ * Description: Just exercise page flips with the patterns we have
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-%sflip-blt
+ * Description: Just exercise page flips with the patterns we have
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @indfb:          Individual fb
+ * @shrfb:          Shared fb
+ *
+ * arg[2]:
+ *
+ * @ms:             Modeset
+ * @pg:             Page flip
+ * @pl:             Plane change
+ */
 
+/**
+ * SUBTEST: fbc-%dp-%s-fliptrack-mmap-gtt
+ * Description: Check if the hardware tracking works after page flips
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcdrrs-%dp-%s-fliptrack-mmap-gtt
+ * Description: Check if the hardware tracking works after page flips
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsr-%dp-%s-fliptrack-mmap-gtt
+ * Description: Check if the hardware tracking works after page flips
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsrdrrs-%dp-%s-fliptrack-mmap-gtt
+ * Description: Check if the hardware tracking works after page flips
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1].values:   1, 2
+ *
+ * arg[2]:
+ *
+ * @indfb:          Individual fb
+ * @shrfb:          Shared fb
+ */
 
-	debugfs_read_crtc("i915_fbc_status", buf);
-	action = strstr(buf, "\nLast action:");
-	igt_assert(action);
+/**
+ * SUBTEST: drrs-%dp-primscrn-%s-indfb-move
+ * Description: Just move the %arg[2] around
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbt
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbc-%dp-primscrn-%s-indfb-move
+ * Description: Just move the %arg[2] around
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psr-%dp-primscrn-%s-indfb-move
+ * Description: Just move the %arg[2] around
+ * Driver requirement: i915, xe
+ * Functionality: fbt, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcdrrs-%dp-primscrn-%s-indfb-move
+ * Description: Just move the %arg[2] around
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsr-%dp-primscrn-%s-indfb-move
+ * Description: Just move the %arg[2] around
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psrdrrs-%dp-primscrn-%s-indfb-move
+ * Description: Just move the %arg[2] around
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbt, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-indfb-move
+ * Description: Just move the %arg[2] around
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1].values:   1, 2
+ *
+ * arg[2]:
+ *
+ * @spr:            Sprite plane
+ * @cur:            Cursor plane
+ */
 
-	n_read = sscanf(action, "Last action: %ld.%ld",
-			&ret.tv_sec, &ret.tv_nsec);
-	igt_assert(n_read == 2);
+/**
+ * SUBTEST: drrs-2p-scndscrn-%s-indfb-move
+ * Description: Just move the %arg[1] around
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbt
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbc-2p-scndscrn-%s-indfb-move
+ * Description: Just move the %arg[1] around
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psr-2p-scndscrn-%s-indfb-move
+ * Description: Just move the %arg[1] around
+ * Driver requirement: i915, xe
+ * Functionality: fbt, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcdrrs-2p-scndscrn-%s-indfb-move
+ * Description: Just move the %arg[1] around
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsr-2p-scndscrn-%s-indfb-move
+ * Description: Just move the %arg[1] around
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psrdrrs-2p-scndscrn-%s-indfb-move
+ * Description: Just move the %arg[1] around
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbt, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-indfb-move
+ * Description: Just move the %arg[1] around
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @spr:            Sprite plane
+ * @cur:            Cursor plane
+ */
 
-	return ret;
-}
+/**
+ * SUBTEST: drrs-%dp-primscrn-%s-indfb-onoff
+ * Description: Just enable and disable the %arg[2] a few times
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbt
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbc-%dp-primscrn-%s-indfb-onoff
+ * Description: Just enable and disable the %arg[2] a few times
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psr-%dp-primscrn-%s-indfb-onoff
+ * Description: Just enable and disable the %arg[2] a few times
+ * Driver requirement: i915, xe
+ * Functionality: fbt, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcdrrs-%dp-primscrn-%s-indfb-onoff
+ * Description: Just enable and disable the %arg[2] a few times
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsr-%dp-primscrn-%s-indfb-onoff
+ * Description: Just enable and disable the %arg[2] a few times
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psrdrrs-%dp-primscrn-%s-indfb-onoff
+ * Description: Just enable and disable the %arg[2] a few times
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbt, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-indfb-onoff
+ * Description: Just enable and disable the %arg[2] a few times
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1].values:   1, 2
+ *
+ * arg[2]:
+ *
+ * @spr:            Sprite plane
+ * @cur:            Cursor plane
+ */
 
-static bool fbc_last_action_changed(void)
-{
-	struct timespec t_new, t_old;
+/**
+ * SUBTEST: drrs-2p-scndscrn-%s-indfb-onoff
+ * Description: Just enable and disable the %arg[1] a few times
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbt
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbc-2p-scndscrn-%s-indfb-onoff
+ * Description: Just enable and disable the %arg[1] a few times
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psr-2p-scndscrn-%s-indfb-onoff
+ * Description: Just enable and disable the %arg[1] a few times
+ * Driver requirement: i915, xe
+ * Functionality: fbt, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcdrrs-2p-scndscrn-%s-indfb-onoff
+ * Description: Just enable and disable the %arg[1] a few times
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsr-2p-scndscrn-%s-indfb-onoff
+ * Description: Just enable and disable the %arg[1] a few times
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psrdrrs-2p-scndscrn-%s-indfb-onoff
+ * Description: Just enable and disable the %arg[1] a few times
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbt, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-indfb-onoff
+ * Description: Just enable and disable the %arg[1] a few times
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @spr:            Sprite plane
+ * @cur:            Cursor plane
+ */
 
-	t_old = fbc.last_action;
-	t_new = fbc_get_last_action();
+/**
+ * SUBTEST: drrs-%dp-primscrn-spr-indfb-fullscreen
+ * Description: Put a fullscreen plane covering the whole screen
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbt
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbc-%dp-primscrn-spr-indfb-fullscreen
+ * Description: Put a fullscreen plane covering the whole screen
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psr-%dp-primscrn-spr-indfb-fullscreen
+ * Description: Put a fullscreen plane covering the whole screen
+ * Driver requirement: i915, xe
+ * Functionality: fbt, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcdrrs-%dp-primscrn-spr-indfb-fullscreen
+ * Description: Put a fullscreen plane covering the whole screen
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsr-%dp-primscrn-spr-indfb-fullscreen
+ * Description: Put a fullscreen plane covering the whole screen
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psrdrrs-%dp-primscrn-spr-indfb-fullscreen
+ * Description: Put a fullscreen plane covering the whole screen
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbt, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsrdrrs-%dp-primscrn-spr-indfb-fullscreen
+ * Description: Put a fullscreen plane covering the whole screen
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: drrs-2p-scndscrn-spr-indfb-fullscreen
+ * Description: Put a fullscreen plane covering the whole screen
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbt
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbc-2p-scndscrn-spr-indfb-fullscreen
+ * Description: Put a fullscreen plane covering the whole screen
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psr-2p-scndscrn-spr-indfb-fullscreen
+ * Description: Put a fullscreen plane covering the whole screen
+ * Driver requirement: i915, xe
+ * Functionality: fbt, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcdrrs-2p-scndscrn-spr-indfb-fullscreen
+ * Description: Put a fullscreen plane covering the whole screen
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsr-2p-scndscrn-spr-indfb-fullscreen
+ * Description: Put a fullscreen plane covering the whole screen
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psrdrrs-2p-scndscrn-spr-indfb-fullscreen
+ * Description: Put a fullscreen plane covering the whole screen
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbt, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsrdrrs-2p-scndscrn-spr-indfb-fullscreen
+ * Description: Put a fullscreen plane covering the whole screen
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1].values:   1, 2
+ */
 
-	fbc.last_action = t_new;
+/**
+ * SUBTEST: drrs-%s-scaledprimary
+ * Description: Try different primary plane scaling strategies
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbt, scaling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbc-%s-scaledprimary
+ * Description: Try different primary plane scaling strategies
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt, scaling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psr-%s-scaledprimary
+ * Description: Try different primary plane scaling strategies
+ * Driver requirement: i915, xe
+ * Functionality: fbt, psr, scaling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcdrrs-%s-scaledprimary
+ * Description: Try different primary plane scaling strategies
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt, scaling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsr-%s-scaledprimary
+ * Description: Try different primary plane scaling strategies
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt, psr, scaling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psrdrrs-%s-scaledprimary
+ * Description: Try different primary plane scaling strategies
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbt, psr, scaling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsrdrrs-%s-scaledprimary
+ * Description: Try different primary plane scaling strategies
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt, psr, scaling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @indfb:          Individual fb
+ * @shrfb:          Shared fb
+ */
 
-#if 0
-	igt_info("old: %ld.%ld\n", t_old.tv_sec, t_old.tv_nsec);
-	igt_info("new: %ld.%ld\n", t_new.tv_sec, t_new.tv_nsec);
-#endif
+/**
+ * SUBTEST: drrs-modesetfrombusy
+ * Description: Modeset from a busy buffer to a non-busy buffer with DRRS
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbt, scaling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbc-modesetfrombusy
+ * Description: Modeset from a busy buffer to a non-busy buffer with FBC
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt, scaling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psr-modesetfrombusy
+ * Description: Modeset from a busy buffer to a non-busy buffer with PSR
+ * Driver requirement: i915, xe
+ * Functionality: fbt, psr, scaling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcdrrs-modesetfrombusy
+ * Description: Modeset from a busy buffer to a non-busy buffer with FBC & DRRS
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt, scaling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsr-modesetfrombusy
+ * Description: Modeset from a busy buffer to a non-busy buffer with FBC & PSR
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt, psr, scaling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psrdrrs-modesetfrombusy
+ * Description: Modeset from a busy buffer to a non-busy buffer with PSR & DRRS
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbt, psr, scaling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsrdrrs-modesetfrombusy
+ * Description: Modeset from a busy buffer to a non-busy buffer with FBC, PSR & DRRS
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt, psr, scaling
+ * Mega feature: General Display Features
+ */
 
-	return t_old.tv_sec != t_new.tv_sec ||
-	       t_old.tv_nsec != t_new.tv_nsec;
-}
+/**
+ * SUBTEST: drrs-suspend
+ * Description: Make sure suspend/resume keeps us on the same state of DRRS
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbt, suspend
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbc-suspend
+ * Description: Make sure suspend/resume keeps us on the same state of FBC
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt, suspend
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psr-suspend
+ * Description: Make sure suspend/resume keeps us on the same state of PSR
+ * Driver requirement: i915, xe
+ * Functionality: fbt, psr, suspend
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcdrrs-suspend
+ * Description: Make sure suspend/resume keeps us on the same state of FBC & DRRS
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt, suspend
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsr-suspend
+ * Description: Make sure suspend/resume keeps us on the same state of FBC & PSR
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt, psr, suspend
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psrdrrs-suspend
+ * Description: Make sure suspend/resume keeps us on the same state of PSR & DRRS
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbt, psr, suspend
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsrdrrs-suspend
+ * Description: Make sure suspend/resume keeps us on the same state of FBC, PSR & DRRS
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt, psr, suspend
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ */
 
-static void fbc_update_last_action(void)
-{
-	if (!fbc.supports_last_action)
-		return;
+/**
+ * SUBTEST: drrs-farfromfence-mmap-gtt
+ * Description: Test drawing as far from the fence start as possible
+ * Driver requirement: i915
+ * Functionality: drrs, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbc-farfromfence-mmap-gtt
+ * Description: Test drawing as far from the fence start as possible
+ * Driver requirement: i915
+ * Functionality: fbc, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psr-farfromfence-mmap-gtt
+ * Description: Test drawing as far from the fence start as possible
+ * Driver requirement: i915
+ * Functionality: fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcdrrs-farfromfence-mmap-gtt
+ * Description: Test drawing as far from the fence start as possible
+ * Driver requirement: i915
+ * Functionality: drrs, fbc, fbt, kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsr-farfromfence-mmap-gtt
+ * Description: Test drawing as far from the fence start as possible
+ * Driver requirement: i915
+ * Functionality: fbc, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: psrdrrs-farfromfence-mmap-gtt
+ * Description: Test drawing as far from the fence start as possible
+ * Driver requirement: i915
+ * Functionality: drrs, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsrdrrs-farfromfence-mmap-gtt
+ * Description: Test drawing as far from the fence start as possible
+ * Driver requirement: i915
+ * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ */
 
-	fbc.last_action = fbc_get_last_action();
+/**
+ * SUBTEST: fbc-stridechange
+ * Description: Change the frontbuffer stride by doing a modeset
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcdrrs-stridechange
+ * Description: Change the frontbuffer stride by doing a modeset
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsr-stridechange
+ * Description: Change the frontbuffer stride by doing a modeset
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsrdrrs-stridechange
+ * Description: Change the frontbuffer stride by doing a modeset
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt, psr
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ */
 
-#if 0
-	igt_info("Last action: %ld.%ld\n",
-		 fbc.last_action.tv_sec, fbc.last_action.tv_nsec);
-#endif
-}
+/**
+ * SUBTEST: fbc-tiling-%s
+ * Description: Test %arg[1] formats, if the tiling format supports FBC do the
+ *              basic drawing test, else set the mode & test if FBC is disabled
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt, tiling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcdrrs-tiling-%s
+ * Description: Test %arg[1] formats, if the tiling format supports FBC do the
+ *              basic drawing test, else set the mode & test if FBC is disabled
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt, tiling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsr-tiling-%s
+ * Description: Test %arg[1] formats, if the tiling format supports FBC do the
+ *              basic drawing test, else set the mode & test if FBC is disabled
+ * Driver requirement: i915, xe
+ * Functionality: fbc, fbt, psr, tiling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fbcpsrdrrs-tiling-%s
+ * Description: Test %arg[1] formats, if the tiling format supports FBC do the
+ *              basic drawing test, else set the mode & test if FBC is disabled
+ * Driver requirement: i915, xe
+ * Functionality: drrs, fbc, fbt, psr, tiling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @4:              4 tiling
+ * @linear:         Linear tiling
+ * @y:              Y tiling
+ */
 
-static void fbc_setup_last_action(void)
-{
-	ssize_t n_read;
-	char buf[128];
-	char *action;
+#define TIME SLOW_QUICK(1000, 10000)
 
+IGT_TEST_DESCRIPTION("Test the Kernel's frontbuffer tracking mechanism and "
+		     "its related features: FBC, PSR and DRRS");
 
-	debugfs_read_crtc("i915_fbc_status", buf);
-	action = strstr(buf, "\nLast action:");
-	if (!action) {
-		igt_info("FBC last action not supported\n");
-		return;
-	}
+/*
+ * One of the aspects of this test is that, for every subtest, we try different
+ * combinations of the parameters defined by the struct below. Because of this,
+ * a single addition of a new parameter or subtest function can lead to hundreds
+ * of new subtests.
+ *
+ * In order to reduce the number combinations we cut the cases that don't make
+ * sense, such as writing on the secondary screen when there is only a single
+ * pipe, or flipping when the target is the offscreen buffer. We also hide some
+ * combinations that are somewhat redundant and don't add much value to the
+ * test. For example, since we already do the offscreen testing with a single
+ * pipe enabled, there's no much value in doing it again with dual pipes. If you
+ * still want to try these redundant tests, you need to use the --show-hidden
+ * option.
+ *
+ * The most important hidden thing is the FEATURE_NONE set of tests. Whenever
+ * you get a failure on any test, it is important to check whether the same test
+ * fails with FEATURE_NONE - replace the feature name for "nop". If the nop test
+ * also fails, then it's likely the problem will be on the IGT side instead of
+ * the Kernel side. We don't expose this set of tests by default because (i)
+ * they take a long time to test; and (ii) if the feature tests work, then it's
+ * very likely that the nop tests will also work.
+ */
+struct test_mode {
+	/* Are we going to enable just one monitor, or are we going to setup a
+	 * dual screen environment for the test? */
+	enum {
+		PIPE_SINGLE = 0,
+		PIPE_DUAL,
+		PIPE_COUNT,
+	} pipes;
 
-	fbc.supports_last_action = true;
+	/* The primary screen is the one that's supposed to have the "feature"
+	 * enabled on, but we have the option to draw on the secondary screen or
+	 * on some offscreen buffer. We also only theck the CRC of the primary
+	 * screen. */
+	enum {
+		SCREEN_PRIM = 0,
+		SCREEN_SCND,
+		SCREEN_OFFSCREEN,
+		SCREEN_COUNT,
+	} screen;
 
-	n_read = sscanf(action, "Last action: %ld.%ld",
-			&fbc.last_action.tv_sec, &fbc.last_action.tv_nsec);
-	igt_assert(n_read == 2);
-}
+	/* When we draw, we can draw directly on the primary plane, on the
+	 * cursor or on the sprite plane. */
+	enum {
+		PLANE_PRI = 0,
+		PLANE_CUR,
+		PLANE_SPR,
+		PLANE_COUNT,
+	} plane;
 
-static bool fbc_is_compressing(void)
-{
-	char buf[128];
+	/* We can organize the screens in a way that each screen has its own
+	 * framebuffer, or in a way that all screens point to the same
+	 * framebuffer, but on different places. This includes the offscreen
+	 * screen. */
+	enum {
+		FBS_INDIVIDUAL = 0,
+		FBS_SHARED,
+		FBS_COUNT,
+	} fbs;
 
-	debugfs_read_crtc("i915_fbc_status", buf);
-	return strstr(buf, "\nCompressing: yes\n") != NULL;
-}
+	/* Which features are we going to test now? This is a mask!
+	 * FEATURE_DEFAULT is a special value which instruct the test to just
+	 * keep what's already enabled by default in the Kernel. */
+	enum {
+		FEATURE_NONE  = 0,
+		FEATURE_FBC   = 1,
+		FEATURE_PSR   = 2,
+		FEATURE_DRRS  = 4,
+		FEATURE_COUNT = 8,
+		FEATURE_DEFAULT = 8,
+	} feature;
 
-static bool fbc_wait_for_compression(void)
-{
-	return igt_wait(fbc_is_compressing(), 2000, 1);
-}
+	/* Possible pixel formats. We just use FORMAT_DEFAULT for most tests and
+	 * only test a few things on the other formats. */
+	enum pixel_format {
+		FORMAT_RGB888 = 0,
+		FORMAT_RGB565,
+		FORMAT_RGB101010,
+		FORMAT_COUNT,
+		FORMAT_DEFAULT = FORMAT_RGB888,
+	} format;
 
-static bool fbc_not_enough_stolen(void)
-{
-	char buf[128];
+	/* There are multiple APIs where we can do the equivalent of a page flip
+	 * and they exercise slightly different codepaths inside the Kernel. */
+	enum flip_type {
+		FLIP_PAGEFLIP,
+		FLIP_MODESET,
+		FLIP_PLANES,
+		FLIP_COUNT,
+	} flip;
 
-	debugfs_read_crtc("i915_fbc_status", buf);
-	return strstr(buf, "FBC disabled: not enough stolen memory\n");
-}
+	enum tiling_type {
+		TILING_LINEAR = 0,
+		TILING_X,
+		TILING_Y,
+		TILING_4,
+		TILING_COUNT,
+		TILING_DEFAULT = TILING_X,
+	} tiling;
 
-static bool fbc_stride_not_supported(void)
-{
-	char buf[128];
+	enum igt_draw_method method;
+};
 
-	debugfs_read_crtc("i915_fbc_status", buf);
-	return strstr(buf, "FBC disabled: framebuffer stride not supported\n");
-}
+enum color {
+	COLOR_RED,
+	COLOR_GREEN,
+	COLOR_BLUE,
+	COLOR_MAGENTA,
+	COLOR_CYAN,
+	COLOR_SCND_BG,
+	COLOR_PRIM_BG = COLOR_BLUE,
+	COLOR_OFFSCREEN_BG = COLOR_SCND_BG,
+};
 
-static bool fbc_mode_too_large(void)
-{
-	char buf[128];
+struct rect {
+	int x;
+	int y;
+	int w;
+	int h;
+	uint32_t color;
+};
 
-	debugfs_read_crtc("i915_fbc_status", buf);
-	return strstr(buf, "FBC disabled: mode too large for compression\n");
-}
+struct {
+	int fd;
+	int debugfs;
+	igt_display_t display;
 
-static bool fbc_enable_per_plane(int plane_index, enum pipe pipe)
-{
-	char buf[PATH_MAX];
-	char buf_plane[128];
+	struct buf_ops *bops;
+} drm;
 
-	sprintf(buf_plane, "%d%s", plane_index, kmstest_pipe_name(pipe));
+struct {
+	bool can_test;
 
-	debugfs_read_crtc("i915_fbc_status", buf);
-	return strstr(strstr(buf, "*"), buf_plane);
-}
+	bool supports_last_action;
 
-static bool drrs_wait_until_rr_switch_to_low(void)
-{
-	return igt_wait(is_drrs_low(), 5000, 1);
-}
+	struct timespec last_action;
+} fbc = {
+	.can_test = false,
+	.supports_last_action = false,
+};
 
-static struct rect pat1_get_rect(struct fb_region *fb, int r)
-{
-	struct rect rect;
+struct {
+	bool can_test;
+} psr = {
+	.can_test = false,
+};
 
-	switch (r) {
-	case 0:
-		rect.x = 0;
-		rect.y = 0;
-		rect.w = fb->w / 8;
-		rect.h = fb->h / 8;
-		rect.color = pick_color(fb->fb, COLOR_GREEN);
-		break;
-	case 1:
-		rect.x = fb->w / 8 * 4;
-		rect.y = fb->h / 8 * 4;
-		rect.w = fb->w / 8 * 2;
-		rect.h = fb->h / 8 * 2;
-		rect.color = pick_color(fb->fb, COLOR_RED);
-		break;
-	case 2:
-		rect.x = fb->w / 16 + 1;
-		rect.y = fb->h / 16 + 1;
-		rect.w = fb->w / 8 + 1;
-		rect.h = fb->h / 8 + 1;
-		rect.color = pick_color(fb->fb, COLOR_MAGENTA);
-		break;
-	case 3:
-		rect.x = fb->w - 1;
-		rect.y = fb->h - 1;
-		rect.w = 1;
-		rect.h = 1;
-		rect.color = pick_color(fb->fb, COLOR_CYAN);
-		break;
-	default:
-		igt_assert(false);
-	}
+#define MAX_DRRS_STATUS_BUF_LEN 256
 
-	return rect;
-}
+struct {
+	bool can_test;
+} drrs = {
+	.can_test = false,
+};
 
-static struct rect pat2_get_rect(struct fb_region *fb, int r)
-{
-	struct rect rect;
+igt_pipe_crc_t *pipe_crc;
+igt_crc_t *wanted_crc;
+struct {
+	bool initialized;
+	igt_crc_t crc;
+} blue_crcs[FORMAT_COUNT];
 
-	rect.x = 0;
-	rect.y = 0;
-	rect.w = 64;
-	rect.h = 64;
+/* The goal of this structure is to easily allow us to deal with cases where we
+ * have a big framebuffer and the CRTC is just displaying a subregion of this
+ * big FB. */
+struct fb_region {
+	igt_plane_t *plane;
+	struct igt_fb *fb;
+	int x;
+	int y;
+	int w;
+	int h;
+};
 
-	switch (r) {
-	case 0:
-		rect.color = pick_color(fb->fb, COLOR_GREEN);
-		break;
-	case 1:
-		rect.x = 31;
-		rect.y = 31;
-		rect.w = 31;
-		rect.h = 31;
-		rect.color = pick_color(fb->fb, COLOR_RED);
-		break;
-	case 2:
-		rect.x = 16;
-		rect.y = 16;
-		rect.w = 32;
-		rect.h = 32;
-		rect.color = pick_color(fb->fb, COLOR_MAGENTA);
-		break;
-	case 3:
-		rect.color = pick_color(fb->fb, COLOR_CYAN);
-		break;
-	default:
-		igt_assert(false);
-	}
+struct draw_pattern_info {
+	bool frames_stack;
+	int n_rects;
+	struct rect (*get_rect)(struct fb_region *fb, int r);
 
-	return rect;
-}
+	bool initialized[FORMAT_COUNT];
+	igt_crc_t *crcs[FORMAT_COUNT];
+};
 
-static struct rect pat3_get_rect(struct fb_region *fb, int r)
-{
-	struct rect rect;
+/* Draw big rectangles on the screen. */
+struct draw_pattern_info pattern1;
+/* 64x64 rectangles at x:0,y:0, just so we can draw on the cursor and sprite. */
+struct draw_pattern_info pattern2;
+/* 64x64 rectangles at different positions, same color, for the move test. */
+struct draw_pattern_info pattern3;
+/* Just a fullscreen green square. */
+struct draw_pattern_info pattern4;
 
-	rect.w = 64;
-	rect.h = 64;
-	rect.color = pick_color(fb->fb, COLOR_GREEN);
+/* Command line parameters. */
+struct {
+	bool check_status;
+	bool check_crc;
+	bool fbc_check_compression;
+	bool fbc_check_last_action;
+	bool no_edp;
+	bool small_modes;
+	bool show_hidden;
+	int step;
+	int only_pipes;
+	int shared_fb_x_offset;
+	int shared_fb_y_offset;
+	enum tiling_type tiling;
+} opt = {
+	.check_status = true,
+	.check_crc = true,
+	.fbc_check_compression = true,
+	.fbc_check_last_action = true,
+	.no_edp = false,
+	.small_modes = false,
+	.show_hidden= false,
+	.step = 0,
+	.only_pipes = PIPE_COUNT,
+	.shared_fb_x_offset = 248,
+	.shared_fb_y_offset = 500,
+	.tiling = TILING_DEFAULT,
+};
 
-	switch (r) {
-	case 0:
-		rect.x = 0;
-		rect.y = 0;
-		break;
-	case 1:
-		rect.x = 64;
-		rect.y = 64;
-		break;
-	case 2:
-		rect.x = 1;
-		rect.y = 1;
-		break;
-	case 3:
-		rect.x = fb->w - 64;
-		rect.y = fb->h - 64;
-		break;
-	case 4:
-		rect.x = fb->w / 2 - 32;
-		rect.y = fb->h / 2 - 32;
-		break;
-	default:
-		igt_assert(false);
-	}
+struct modeset_params {
+	enum pipe pipe;
+	igt_output_t *output;
+	drmModeModeInfo mode;
 
-	return rect;
-}
+	struct fb_region primary;
+	struct fb_region cursor;
+	struct fb_region sprite;
+};
 
-static struct rect pat4_get_rect(struct fb_region *fb, int r)
-{
-	struct rect rect;
+struct modeset_params prim_mode_params;
+struct modeset_params scnd_mode_params;
 
-	igt_assert_eq(r, 0);
+struct fb_region offscreen_fb;
+struct screen_fbs {
+	bool initialized;
 
-	rect.x = 0;
-	rect.y = 0;
-	rect.w = fb->w;
-	rect.h = fb->h;
-	rect.color = pick_color(fb->fb, COLOR_GREEN);
+	struct igt_fb prim_pri;
+	struct igt_fb prim_cur;
+	struct igt_fb prim_spr;
 
-	return rect;
-}
+	struct igt_fb scnd_pri;
+	struct igt_fb scnd_cur;
+	struct igt_fb scnd_spr;
 
-static void fb_dirty_ioctl(struct fb_region *fb, struct rect *rect)
-{
-	int rc;
-	drmModeClip clip = {
-		.x1 = rect->x,
-		.x2 = rect->x + rect->w,
-		.y1 = rect->y,
-		.y2 = rect->y + rect->h,
-	};
+	struct igt_fb offscreen;
+	struct igt_fb big;
+} fbs[FORMAT_COUNT];
 
-	rc = drmModeDirtyFB(drm.fd, fb->fb->fb_id, &clip, 1);
+struct {
+	pthread_t thread;
+	bool stop;
 
-	igt_assert(rc == 0 || rc == -ENOSYS);
-}
+	uint32_t handle;
+	uint32_t size;
+	uint32_t stride;
+	int width;
+	int height;
+	uint32_t color;
+	int bpp;
+	uint32_t tiling;
+} busy_thread = {
+	.stop = true,
+};
 
-static void draw_rect(struct draw_pattern_info *pattern, struct fb_region *fb,
-		      enum igt_draw_method method, int r)
+static drmModeModeInfo *get_connector_smallest_mode(igt_output_t *output)
 {
-	struct rect rect = pattern->get_rect(fb, r);
+	drmModeConnector *c = output->config.connector;
+	const drmModeModeInfo *smallest = NULL;
+	int i;
 
-	igt_draw_rect_fb(drm.fd, drm.bops, 0, fb->fb, method,
-			 fb->x + rect.x, fb->y + rect.y,
-			 rect.w, rect.h, rect.color);
+	if (c->connector_type == DRM_MODE_CONNECTOR_eDP)
+		return igt_std_1024_mode_get(igt_output_preferred_vrefresh(output));
 
-	fb_dirty_ioctl(fb, &rect);
-}
+	for (i = 0; i < c->count_modes; i++) {
+		const drmModeModeInfo *mode = &c->modes[i];
 
-static void draw_rect_igt_fb(struct draw_pattern_info *pattern,
-			     struct igt_fb *fb, enum igt_draw_method method,
-			     int r)
-{
-	struct fb_region region = {
-		.fb = fb,
-		.x = 0,
-		.y = 0,
-		.w = fb->width,
-		.h = fb->height,
-	};
+		if (!smallest ||
+		    mode->hdisplay * mode->vdisplay <
+		    smallest->hdisplay * smallest->vdisplay)
+			smallest = mode;
+	}
 
-	draw_rect(pattern, &region, method, r);
+	if (smallest)
+		return igt_memdup(smallest, sizeof(*smallest));
+	else
+		return igt_std_1024_mode_get(60);
 }
 
-static void fill_fb_region(struct fb_region *region,
-			   enum igt_draw_method method,
-			   enum color ecolor)
+static drmModeModeInfo *connector_get_mode(igt_output_t *output)
 {
-	uint32_t color = pick_color(region->fb, ecolor);
+	/* On HSW the CRC WA is so awful that it makes you think everything is
+	  * bugged. */
+	if (IS_HASWELL(intel_get_drm_devid(drm.fd)) &&
+	    output->config.connector->connector_type == DRM_MODE_CONNECTOR_eDP)
+		return igt_std_1024_mode_get(igt_output_preferred_vrefresh(output));
 
-	igt_draw_rect_fb(drm.fd, drm.bops, 0, region->fb, method,
-			 region->x, region->y, region->w, region->h,
-			 color);
+	if (opt.small_modes)
+		return get_connector_smallest_mode(output);
+	else
+		return igt_memdup(&output->config.default_mode,
+				  sizeof(output->config.default_mode));
 }
 
-static void _fb_dirty_ioctl(struct fb_region *region)
+static void init_mode_params(struct modeset_params *params,
+			     igt_output_t *output, enum pipe pipe)
 {
-	struct rect rect;
-
-	rect.x = region->x;
-	rect.y = region->y;
-	rect.w = region->w;
-	rect.h = region->h;
-	fb_dirty_ioctl(region, &rect);
-}
+	drmModeModeInfo *mode;
 
-static void unset_all_crtcs(void)
-{
-	igt_display_reset(&drm.display);
-	igt_display_commit(&drm.display);
-}
+	igt_output_override_mode(output, NULL);
+	mode = connector_get_mode(output);
 
-static bool disable_features(const struct test_mode *t)
-{
-	if (t->feature == FEATURE_DEFAULT)
-		return false;
+	params->pipe = pipe;
+	params->output = output;
+	params->mode = *mode;
 
-	intel_fbc_disable(drm.fd);
-	intel_drrs_disable(drm.fd, prim_mode_params.pipe);
+	params->primary.plane = igt_pipe_get_plane_type(&drm.display.pipes[pipe], DRM_PLANE_TYPE_PRIMARY);
+	params->primary.fb = NULL;
+	params->primary.x = 0;
+	params->primary.y = 0;
+	params->primary.w = mode->hdisplay;
+	params->primary.h = mode->vdisplay;
 
-	return psr.can_test ? psr_disable(drm.fd, drm.debugfs) : false;
-}
+	params->cursor.plane = igt_pipe_get_plane_type(&drm.display.pipes[pipe], DRM_PLANE_TYPE_CURSOR);
+	params->cursor.fb = NULL;
+	params->cursor.x = 0;
+	params->cursor.y = 0;
+	params->cursor.w = 64;
+	params->cursor.h = 64;
 
-static void *busy_thread_func(void *data)
-{
-	while (!busy_thread.stop)
-		igt_draw_rect(drm.fd, drm.bops, 0, busy_thread.handle,
-			      busy_thread.size, busy_thread.stride,
-			      busy_thread.tiling, IGT_DRAW_BLT, 0, 0,
-			      busy_thread.width, busy_thread.height,
-			      busy_thread.color, busy_thread.bpp);
+	params->sprite.plane = igt_pipe_get_plane_type(&drm.display.pipes[pipe], DRM_PLANE_TYPE_OVERLAY);
+	igt_require(params->sprite.plane);
+	params->sprite.fb = NULL;
+	params->sprite.x = 0;
+	params->sprite.y = 0;
+	params->sprite.w = 64;
+	params->sprite.h = 64;
 
-	pthread_exit(0);
+	free(mode);
 }
 
-static void start_busy_thread(struct igt_fb *fb)
+static bool find_connector(bool edp_only, bool pipe_a,
+			   igt_output_t *forbidden_output,
+			   enum pipe forbidden_pipe,
+			   igt_output_t **ret_output,
+			   enum pipe *ret_pipe)
 {
-	int rc;
+	igt_output_t *output;
+	enum pipe pipe;
 
-	igt_assert(busy_thread.stop == true);
-	busy_thread.stop = false;
-	busy_thread.handle = fb->gem_handle;
-	busy_thread.size = fb->size;
-	busy_thread.stride = fb->strides[0];
-	busy_thread.width = fb->width;
-	busy_thread.height = fb->height;
-	busy_thread.color = pick_color(fb, COLOR_PRIM_BG);
-	busy_thread.bpp = igt_drm_format_to_bpp(fb->drm_format);
-	busy_thread.tiling = igt_fb_mod_to_tiling(fb->modifier);
+	for_each_pipe_with_valid_output(&drm.display, pipe, output) {
+		drmModeConnectorPtr c = output->config.connector;
 
-	rc = pthread_create(&busy_thread.thread, NULL, busy_thread_func, NULL);
-	igt_assert_eq(rc, 0);
-}
+		if (edp_only && c->connector_type != DRM_MODE_CONNECTOR_eDP)
+			continue;
 
-static void stop_busy_thread(void)
-{
-	if (!busy_thread.stop) {
-		busy_thread.stop = true;
-		igt_assert(pthread_join(busy_thread.thread, NULL) == 0);
-	}
-}
+		if (pipe_a && pipe != PIPE_A)
+			continue;
 
-static void print_crc(const char *str, igt_crc_t *crc)
-{
-	char *pipe_str;
+		if (output == forbidden_output || pipe == forbidden_pipe) {
+			igt_output_set_pipe(output, pipe);
+			igt_output_override_mode(output, connector_get_mode(output));
 
-	pipe_str = igt_crc_to_string(crc);
+			continue;
+		}
 
-	igt_debug("%s pipe:[%s]\n", str, pipe_str);
+		if (c->connector_type == DRM_MODE_CONNECTOR_eDP && opt.no_edp)
+			continue;
 
-	free(pipe_str);
-}
+		igt_output_set_pipe(output, pipe);
+		igt_output_override_mode(output, connector_get_mode(output));
+		if (intel_pipe_output_combo_valid(&drm.display)) {
+			*ret_output = output;
+			*ret_pipe = pipe;
+			return true;
+		}
+	}
 
-static void collect_crc(igt_crc_t *crc)
-{
-	igt_pipe_crc_collect_crc(pipe_crc, crc);
+	return false;
 }
 
-static void init_blue_crc(enum pixel_format format, enum tiling_type tiling)
+static bool init_modeset_cached_params(void)
 {
-	struct igt_fb blue;
-
-	if (blue_crcs[format].initialized)
-		return;
-
-	create_fb(format, prim_mode_params.mode.hdisplay,
-		  prim_mode_params.mode.vdisplay, tiling, PLANE_PRI,
-		  &blue);
-
-	fill_fb(&blue, COLOR_PRIM_BG);
-
-	igt_output_set_pipe(prim_mode_params.output, prim_mode_params.pipe);
-	igt_output_override_mode(prim_mode_params.output, &prim_mode_params.mode);
-	igt_plane_set_fb(prim_mode_params.primary.plane, &blue);
-	igt_display_commit(&drm.display);
+	igt_output_t *prim_output = NULL, *scnd_output = NULL;
+	enum pipe prim_pipe, scnd_pipe;
 
-	if (!pipe_crc) {
-		pipe_crc = igt_pipe_crc_new(drm.fd, prim_mode_params.pipe,
-					    IGT_PIPE_CRC_SOURCE_AUTO);
-		igt_assert(pipe_crc);
-	}
+	/*
+	 * We have this problem where PSR is only present on eDP monitors and
+	 * FBC is only present on pipe A for some platforms. So we search first
+	 * for the ideal case of eDP supporting pipe A, and try the less optimal
+	 * configs later, sacrificing  one of the features.
+	 * TODO: refactor the code in a way that allows us to have different
+	 * sets of prim/scnd structs for different features.
+	 */
+	find_connector(true, true, NULL, PIPE_NONE, &prim_output, &prim_pipe);
+	if (!prim_output)
+		find_connector(true, false, NULL, PIPE_NONE, &prim_output, &prim_pipe);
+	if (!prim_output)
+		find_connector(false, true, NULL, PIPE_NONE, &prim_output, &prim_pipe);
+	if (!prim_output)
+		find_connector(false, false, NULL, PIPE_NONE, &prim_output, &prim_pipe);
 
-	collect_crc(&blue_crcs[format].crc);
+	if (!prim_output)
+		return false;
 
-	print_crc("Blue CRC:  ", &blue_crcs[format].crc);
+	find_connector(false, false, prim_output, prim_pipe,
+		       &scnd_output, &scnd_pipe);
 
-	igt_display_reset(&drm.display);
+	init_mode_params(&prim_mode_params, prim_output, prim_pipe);
 
-	igt_remove_fb(drm.fd, &blue);
+	if (!scnd_output) {
+		scnd_mode_params.pipe = PIPE_NONE;
+		scnd_mode_params.output = NULL;
+		return true;
+	}
 
-	blue_crcs[format].initialized = true;
+	init_mode_params(&scnd_mode_params, scnd_output, scnd_pipe);
+	return true;
 }
 
-static void init_crcs(enum pixel_format format, enum tiling_type tiling,
-		      struct draw_pattern_info *pattern)
+static uint64_t tiling_to_modifier(enum tiling_type tiling)
 {
-	int r, r_;
-	struct igt_fb tmp_fbs[pattern->n_rects];
-
-	if (pattern->initialized[format])
-		return;
-
-	pattern->crcs[format] = calloc(pattern->n_rects,
-				       sizeof(*(pattern->crcs[format])));
-
-	for (r = 0; r < pattern->n_rects; r++)
-		create_fb(format, prim_mode_params.mode.hdisplay,
-			  prim_mode_params.mode.vdisplay, tiling,
-			  PLANE_PRI, &tmp_fbs[r]);
-
-	for (r = 0; r < pattern->n_rects; r++)
-		fill_fb(&tmp_fbs[r], COLOR_PRIM_BG);
-
-	if (pattern->frames_stack) {
-		for (r = 0; r < pattern->n_rects; r++)
-			for (r_ = 0; r_ <= r; r_++)
-				draw_rect_igt_fb(pattern, &tmp_fbs[r],
-						 igt_draw_supports_method(drm.fd, IGT_DRAW_PWRITE) ?
-						 IGT_DRAW_PWRITE : IGT_DRAW_BLT,
-						 r_);
-	} else {
-		for (r = 0; r < pattern->n_rects; r++)
-			draw_rect_igt_fb(pattern, &tmp_fbs[r], igt_draw_supports_method(drm.fd, IGT_DRAW_PWRITE) ?
-					 IGT_DRAW_PWRITE : IGT_DRAW_BLT, r);
+	switch (tiling) {
+	case TILING_LINEAR:
+		return DRM_FORMAT_MOD_LINEAR;
+	case TILING_X:
+		return I915_FORMAT_MOD_X_TILED;
+	case TILING_Y:
+		return I915_FORMAT_MOD_Y_TILED;
+	case TILING_4:
+		return I915_FORMAT_MOD_4_TILED;
+	default:
+		igt_assert(false);
 	}
+}
 
-	igt_output_set_pipe(prim_mode_params.output, prim_mode_params.pipe);
-	igt_output_override_mode(prim_mode_params.output, &prim_mode_params.mode);
-	for (r = 0; r < pattern->n_rects; r++) {
-		igt_plane_set_fb(prim_mode_params.primary.plane, &tmp_fbs[r]);
-		igt_display_commit(&drm.display);
+static void create_fb(enum pixel_format pformat, int width, int height,
+		      enum tiling_type tiling, int plane, struct igt_fb *fb)
+{
+	uint32_t format;
+	uint64_t size, modifier;
+	unsigned int stride;
 
-		collect_crc(&pattern->crcs[format][r]);
+	switch (pformat) {
+	case FORMAT_RGB888:
+		if (plane == PLANE_CUR)
+			format = DRM_FORMAT_ARGB8888;
+		else
+			format = DRM_FORMAT_XRGB8888;
+		break;
+	case FORMAT_RGB565:
+		/* Only the primary plane supports 16bpp! */
+		if (plane == PLANE_PRI)
+			format = DRM_FORMAT_RGB565;
+		else if (plane == PLANE_CUR)
+			format = DRM_FORMAT_ARGB8888;
+		else
+			format = DRM_FORMAT_XRGB8888;
+		break;
+	case FORMAT_RGB101010:
+		if (plane == PLANE_PRI)
+			format = DRM_FORMAT_XRGB2101010;
+		else if (plane == PLANE_CUR)
+			format = DRM_FORMAT_ARGB8888;
+		else
+			format = DRM_FORMAT_XRGB8888;
+		break;
+	default:
+		igt_assert(false);
 	}
 
-	for (r = 0; r < pattern->n_rects; r++) {
-		igt_debug("Rect %d CRC:", r);
-		print_crc("", &pattern->crcs[format][r]);
-	}
+	modifier = tiling_to_modifier(tiling);
 
-	igt_display_reset(&drm.display);
+	igt_warn_on(plane == PLANE_CUR && tiling != TILING_LINEAR);
 
-	for (r = 0; r < pattern->n_rects; r++)
-		igt_remove_fb(drm.fd, &tmp_fbs[r]);
+	igt_calc_fb_size(drm.fd, width, height, format, modifier, &size,
+			 &stride);
 
-	pattern->initialized[format] = true;
+	igt_create_fb_with_bo_size(drm.fd, width, height, format, modifier,
+				   IGT_COLOR_YCBCR_BT709,
+				   IGT_COLOR_YCBCR_LIMITED_RANGE,
+				   fb, size, stride);
 }
 
-static void setup_drm(void)
+static uint32_t pick_color(struct igt_fb *fb, enum color ecolor)
 {
-	drm.fd = drm_open_driver_master(DRIVER_INTEL | DRIVER_XE);
-	drm.debugfs = igt_debugfs_dir(drm.fd);
+	uint32_t color, r, g, b, b2, a;
+	bool alpha = false;
 
-	kmstest_set_vt_graphics_mode();
-	igt_display_require(&drm.display, drm.fd);
+	switch (fb->drm_format) {
+	case DRM_FORMAT_RGB565:
+		a =  0x0;
+		r =  0x1F << 11;
+		g =  0x3F << 5;
+		b =  0x1F;
+		b2 = 0x10;
+		break;
+	case DRM_FORMAT_ARGB8888:
+		alpha = true;
+	case DRM_FORMAT_XRGB8888:
+		a =  0xFF << 24;
+		r =  0xFF << 16;
+		g =  0xFF << 8;
+		b =  0xFF;
+		b2 = 0x80;
+		break;
+	case DRM_FORMAT_ARGB2101010:
+		alpha = true;
+	case DRM_FORMAT_XRGB2101010:
+		a = 0x3 << 30;
+		r = 0x3FF << 20;
+		g = 0x3FF << 10;
+		b = 0x3FF;
+		b2 = 0x200;
+		break;
+	default:
+		igt_assert(false);
+	}
 
-	drm.bops = buf_ops_create(drm.fd);
-}
+	switch (ecolor) {
+	case COLOR_RED:
+		color = r;
+		break;
+	case COLOR_GREEN:
+		color = g;
+		break;
+	case COLOR_BLUE:
+		color = b;
+		break;
+	case COLOR_MAGENTA:
+		color = r | b;
+		break;
+	case COLOR_CYAN:
+		color = g | b;
+		break;
+	case COLOR_SCND_BG:
+		color = b2;
+		break;
+	default:
+		igt_assert(false);
+	}
 
-static void teardown_drm(void)
-{
-	buf_ops_destroy(drm.bops);
-	igt_display_fini(&drm.display);
-	drm_close_driver(drm.fd);
-}
+	if (alpha)
+		color |= a;
 
-static void setup_modeset(void)
-{
-	igt_require(init_modeset_cached_params());
-	offscreen_fb.fb = NULL;
-	offscreen_fb.w = 1024;
-	offscreen_fb.h = 1024;
-	create_fbs(FORMAT_DEFAULT, opt.tiling);
+	return color;
 }
 
-static void teardown_modeset(void)
+static void fill_fb(struct igt_fb *fb, enum color ecolor)
 {
-	enum pixel_format f;
-
-	for (f = 0; f < FORMAT_COUNT; f++)
-		destroy_fbs(f);
+	igt_draw_fill_fb(drm.fd, fb, pick_color(fb, ecolor));
 }
 
-static void setup_crcs(void)
+/*
+ * This is how the prim, scnd and offscreen FBs should be positioned inside the
+ * shared FB. The prim buffer starts at the X and Y offsets defined by
+ * opt.shared_fb_{x,y}_offset, then scnd starts at the same X pixel offset,
+ * right after prim ends on the Y axis, then the offscreen fb starts after scnd
+ * ends. Just like the picture:
+ *
+ * +-------------------------+
+ * | shared fb               |
+ * |   +------------------+  |
+ * |   | prim             |  |
+ * |   |                  |  |
+ * |   |                  |  |
+ * |   |                  |  |
+ * |   +------------------+--+
+ * |   | scnd                |
+ * |   |                     |
+ * |   |                     |
+ * |   +---------------+-----+
+ * |   | offscreen     |     |
+ * |   |               |     |
+ * |   |               |     |
+ * +---+---------------+-----+
+ *
+ * We do it vertically instead of the more common horizontal case in order to
+ * avoid super huge strides not supported by FBC.
+ */
+static void create_shared_fb(enum pixel_format format, enum tiling_type tiling)
 {
-	enum pixel_format f;
-
-	for (f = 0; f < FORMAT_COUNT; f++)
-		blue_crcs[f].initialized = false;
+	int prim_w, prim_h, scnd_w, scnd_h, offs_w, offs_h, big_w, big_h;
+	struct screen_fbs *s = &fbs[format];
 
-	pattern1.frames_stack = true;
-	pattern1.n_rects = 4;
-	pattern1.get_rect = pat1_get_rect;
-	for (f = 0; f < FORMAT_COUNT; f++) {
-		pattern1.initialized[f] = false;
-		pattern1.crcs[f] = NULL;
-	}
+	prim_w = prim_mode_params.mode.hdisplay;
+	prim_h = prim_mode_params.mode.vdisplay;
 
-	pattern2.frames_stack = true;
-	pattern2.n_rects = 4;
-	pattern2.get_rect = pat2_get_rect;
-	for (f = 0; f < FORMAT_COUNT; f++) {
-		pattern2.initialized[f] = false;
-		pattern2.crcs[f] = NULL;
+	if (scnd_mode_params.output) {
+		scnd_w = scnd_mode_params.mode.hdisplay;
+		scnd_h = scnd_mode_params.mode.vdisplay;
+	} else {
+		scnd_w = 0;
+		scnd_h = 0;
 	}
+	offs_w = offscreen_fb.w;
+	offs_h = offscreen_fb.h;
 
-	pattern3.frames_stack = false;
-	pattern3.n_rects = 5;
-	pattern3.get_rect = pat3_get_rect;
-	for (f = 0; f < FORMAT_COUNT; f++) {
-		pattern3.initialized[f] = false;
-		pattern3.crcs[f] = NULL;
-	}
+	big_w = prim_w;
+	if (scnd_w > big_w)
+		big_w = scnd_w;
+	if (offs_w > big_w)
+		big_w = offs_w;
+	big_w += opt.shared_fb_x_offset;
 
-	pattern4.frames_stack = false;
-	pattern4.n_rects = 1;
-	pattern4.get_rect = pat4_get_rect;
-	for (f = 0; f < FORMAT_COUNT; f++) {
-		pattern4.initialized[f] = false;
-		pattern4.crcs[f] = NULL;
-	}
+	big_h = prim_h + scnd_h + offs_h + opt.shared_fb_y_offset;
+
+	create_fb(format, big_w, big_h, tiling, PLANE_PRI, &s->big);
 }
 
-static void teardown_crcs(void)
+static void destroy_fbs(enum pixel_format format)
 {
-	enum pixel_format f;
+	struct screen_fbs *s = &fbs[format];
 
-	for (f = 0; f < FORMAT_COUNT; f++) {
-		if (pattern1.crcs[f])
-			free(pattern1.crcs[f]);
-		if (pattern2.crcs[f])
-			free(pattern2.crcs[f]);
-		if (pattern3.crcs[f])
-			free(pattern3.crcs[f]);
-		if (pattern4.crcs[f])
-			free(pattern4.crcs[f]);
-	}
+	if (!s->initialized)
+		return;
 
-	igt_pipe_crc_free(pipe_crc);
+	if (scnd_mode_params.output) {
+		igt_remove_fb(drm.fd, &s->scnd_pri);
+		igt_remove_fb(drm.fd, &s->scnd_cur);
+		igt_remove_fb(drm.fd, &s->scnd_spr);
+	}
+	igt_remove_fb(drm.fd, &s->prim_pri);
+	igt_remove_fb(drm.fd, &s->prim_cur);
+	igt_remove_fb(drm.fd, &s->prim_spr);
+	igt_remove_fb(drm.fd, &s->offscreen);
+	igt_remove_fb(drm.fd, &s->big);
 }
 
-static void setup_fbc(void)
+static void create_fbs(enum pixel_format format, enum tiling_type tiling)
 {
-	if (!intel_fbc_supported_on_chipset(drm.fd, prim_mode_params.pipe)) {
-		igt_info("Can't test FBC: not supported on this chipset\n");
-		return;
-	}
+	struct screen_fbs *s = &fbs[format];
 
-	fbc.can_test = true;
+	if (s->initialized)
+		destroy_fbs(format);
 
-	fbc_setup_last_action();
-}
+	s->initialized = true;
 
-static void teardown_fbc(void)
-{
-}
+	create_fb(format, prim_mode_params.mode.hdisplay,
+		  prim_mode_params.mode.vdisplay, tiling, PLANE_PRI,
+		  &s->prim_pri);
+	create_fb(format, prim_mode_params.cursor.w,
+		  prim_mode_params.cursor.h, DRM_FORMAT_MOD_LINEAR,
+		  PLANE_CUR, &s->prim_cur);
+	create_fb(format, prim_mode_params.sprite.w,
+		  prim_mode_params.sprite.h, tiling, PLANE_SPR, &s->prim_spr);
 
-static void setup_psr(void)
-{
-	if (prim_mode_params.output->config.connector->connector_type !=
-	    DRM_MODE_CONNECTOR_eDP) {
-		igt_info("Can't test PSR: no usable eDP screen.\n");
-		return;
-	}
+	create_fb(format, offscreen_fb.w, offscreen_fb.h, tiling, PLANE_PRI,
+		  &s->offscreen);
 
-	if (!psr_sink_support(drm.fd, drm.debugfs, PSR_MODE_1, NULL)) {
-		igt_info("Can't test PSR: not supported by sink.\n");
+	create_shared_fb(format, tiling);
+
+	if (!scnd_mode_params.output)
 		return;
-	}
-	psr.can_test = true;
+
+	create_fb(format, scnd_mode_params.mode.hdisplay,
+		  scnd_mode_params.mode.vdisplay, tiling, PLANE_PRI,
+		  &s->scnd_pri);
+	create_fb(format, scnd_mode_params.cursor.w, scnd_mode_params.cursor.h,
+		  DRM_FORMAT_MOD_LINEAR, PLANE_CUR, &s->scnd_cur);
+	create_fb(format, scnd_mode_params.sprite.w, scnd_mode_params.sprite.h,
+		  tiling, PLANE_SPR, &s->scnd_spr);
 }
 
-static void teardown_psr(void)
+static void __set_prim_plane_for_params(struct modeset_params *params)
 {
+	igt_plane_set_fb(params->primary.plane, params->primary.fb);
+	igt_plane_set_position(params->primary.plane, 0, 0);
+	igt_plane_set_size(params->primary.plane, params->mode.hdisplay, params->mode.vdisplay);
+	igt_fb_set_position(params->primary.fb, params->primary.plane,
+			    params->primary.x, params->primary.y);
+	igt_fb_set_size(params->primary.fb, params->primary.plane,
+			params->mode.hdisplay, params->mode.vdisplay);
 }
 
-static void setup_drrs(void)
+static void __set_mode_for_params(struct modeset_params *params)
 {
-	if (!intel_output_has_drrs(drm.fd, prim_mode_params.output)) {
-		igt_info("Can't test DRRS: no usable screen.\n");
-		return;
-	}
-
-	if (!intel_is_drrs_supported(drm.fd, prim_mode_params.pipe)) {
-		igt_info("Can't test DRRS: Not supported.\n");
-		return;
-	}
+	igt_output_override_mode(params->output, &params->mode);
+	igt_output_set_pipe(params->output, params->pipe);
 
-	drrs.can_test = true;
+	__set_prim_plane_for_params(params);
 }
 
-static void setup_environment(void)
+static void set_mode_for_params(struct modeset_params *params)
 {
-	setup_drm();
-	setup_modeset();
+	__set_mode_for_params(params);
+	igt_display_commit(&drm.display);
+}
 
-	setup_fbc();
-	setup_psr();
-	setup_drrs();
+static void __debugfs_read_crtc(const char *param, char *buf, int len)
+{
+	int dir;
+	enum pipe pipe;
 
-	setup_crcs();
+	pipe = prim_mode_params.pipe;
+	dir = igt_debugfs_pipe_dir(drm.fd, pipe, O_DIRECTORY);
+	igt_require_fd(dir);
+	igt_debugfs_simple_read(dir, param, buf, len);
+	close(dir);
 }
 
-static void teardown_environment(void)
+#define debugfs_read_crtc(p, arr) __debugfs_read_crtc(p, arr, sizeof(arr))
+#define debugfs_write_crtc(p, arr) __debugfs_write_crtc(p, arr, sizeof(arr))
+#define debugfs_read_connector(p, arr) __debugfs_read_connector(p, arr, sizeof(arr))
+
+static bool is_drrs_high(void)
 {
-	stop_busy_thread();
+	char buf[MAX_DRRS_STATUS_BUF_LEN];
 
-	teardown_crcs();
-	teardown_psr();
-	teardown_fbc();
-	teardown_modeset();
-	teardown_drm();
+	debugfs_read_crtc("i915_drrs_status", buf);
+	return strstr(buf, "DRRS refresh rate: high");
 }
 
-static void wait_user(int step, const char *msg)
+static bool is_drrs_low(void)
 {
-	if (opt.step < step)
-		return;
+	char buf[MAX_DRRS_STATUS_BUF_LEN];
 
-	igt_info("%s Press enter...\n", msg);
-	while (getchar() != '\n')
-		;
+	debugfs_read_crtc("i915_drrs_status", buf);
+	return strstr(buf, "DRRS refresh rate: low");
 }
 
-static struct modeset_params *pick_params(const struct test_mode *t)
+static void drrs_print_status(void)
 {
-	switch (t->screen) {
-	case SCREEN_PRIM:
-		return &prim_mode_params;
-	case SCREEN_SCND:
-		return &scnd_mode_params;
-	case SCREEN_OFFSCREEN:
-		return NULL;
-	default:
-		igt_assert(false);
-	}
+	char buf[MAX_DRRS_STATUS_BUF_LEN];
+
+	debugfs_read_crtc("i915_drrs_status", buf);
+	igt_info("DRRS STATUS :\n%s\n", buf);
 }
 
-static struct fb_region *pick_target(const struct test_mode *t,
-				     struct modeset_params *params)
+static struct timespec fbc_get_last_action(void)
 {
-	if (!params)
-		return &offscreen_fb;
+	struct timespec ret = { 0, 0 };
+	char buf[128];
+	char *action;
+	ssize_t n_read;
 
-	switch (t->plane) {
-	case PLANE_PRI:
-		return &params->primary;
-	case PLANE_CUR:
-		return &params->cursor;
-	case PLANE_SPR:
-		return &params->sprite;
-	default:
-		igt_assert(false);
-	}
+
+	debugfs_read_crtc("i915_fbc_status", buf);
+	action = strstr(buf, "\nLast action:");
+	igt_assert(action);
+
+	n_read = sscanf(action, "Last action: %ld.%ld",
+			&ret.tv_sec, &ret.tv_nsec);
+	igt_assert(n_read == 2);
+
+	return ret;
 }
 
-static void do_flush(const struct test_mode *t)
+static bool fbc_last_action_changed(void)
 {
-	struct modeset_params *params = pick_params(t);
-	struct fb_region *target = pick_target(t, params);
+	struct timespec t_new, t_old;
 
-	if (is_i915_device(drm.fd))
-		gem_set_domain(drm.fd, target->fb->gem_handle, I915_GEM_DOMAIN_GTT, 0);
-}
+	t_old = fbc.last_action;
+	t_new = fbc_get_last_action();
 
-#define DONT_ASSERT_CRC			(1 << 0)
-#define DONT_ASSERT_FEATURE_STATUS	(1 << 1)
-#define DONT_ASSERT_FBC_STATUS		(1 << 12)
+	fbc.last_action = t_new;
 
-#define FBC_ASSERT_FLAGS		(0xF << 2)
-#define ASSERT_FBC_ENABLED		(1 << 2)
-#define ASSERT_FBC_DISABLED		(1 << 3)
-#define ASSERT_LAST_ACTION_CHANGED	(1 << 4)
-#define ASSERT_NO_ACTION_CHANGE		(1 << 5)
+#if 0
+	igt_info("old: %ld.%ld\n", t_old.tv_sec, t_old.tv_nsec);
+	igt_info("new: %ld.%ld\n", t_new.tv_sec, t_new.tv_nsec);
+#endif
 
-#define PSR_ASSERT_FLAGS		(3 << 6)
-#define ASSERT_PSR_ENABLED		(1 << 6)
-#define ASSERT_PSR_DISABLED		(1 << 7)
+	return t_old.tv_sec != t_new.tv_sec ||
+	       t_old.tv_nsec != t_new.tv_nsec;
+}
 
-#define DRRS_ASSERT_FLAGS		(7 << 8)
-#define ASSERT_DRRS_HIGH		(1 << 8)
-#define ASSERT_DRRS_LOW			(1 << 9)
-#define ASSERT_DRRS_INACTIVE		(1 << 10)
+static void fbc_update_last_action(void)
+{
+	if (!fbc.supports_last_action)
+		return;
+
+	fbc.last_action = fbc_get_last_action();
 
-#define ASSERT_NO_IDLE_GPU		(1 << 11)
+#if 0
+	igt_info("Last action: %ld.%ld\n",
+		 fbc.last_action.tv_sec, fbc.last_action.tv_nsec);
+#endif
+}
 
-static int adjust_assertion_flags(const struct test_mode *t, int flags)
+static void fbc_setup_last_action(void)
 {
-	if (!(flags & DONT_ASSERT_FEATURE_STATUS)) {
-		if (!(flags & ASSERT_FBC_DISABLED))
-			flags |= ASSERT_FBC_ENABLED;
-		if (!(flags & ASSERT_PSR_DISABLED))
-			flags |= ASSERT_PSR_ENABLED;
-		if (!((flags & ASSERT_DRRS_LOW) ||
-		    (flags & ASSERT_DRRS_INACTIVE)))
-			flags |= ASSERT_DRRS_HIGH;
+	ssize_t n_read;
+	char buf[128];
+	char *action;
+
+
+	debugfs_read_crtc("i915_fbc_status", buf);
+	action = strstr(buf, "\nLast action:");
+	if (!action) {
+		igt_info("FBC last action not supported\n");
+		return;
 	}
 
-	if ((t->feature & FEATURE_FBC) == 0 || (flags & DONT_ASSERT_FBC_STATUS))
-		flags &= ~FBC_ASSERT_FLAGS;
-	if ((t->feature & FEATURE_PSR) == 0)
-		flags &= ~PSR_ASSERT_FLAGS;
-	if ((t->feature & FEATURE_DRRS) == 0)
-		flags &= ~DRRS_ASSERT_FLAGS;
+	fbc.supports_last_action = true;
 
-	return flags;
+	n_read = sscanf(action, "Last action: %ld.%ld",
+			&fbc.last_action.tv_sec, &fbc.last_action.tv_nsec);
+	igt_assert(n_read == 2);
 }
 
-static void do_crc_assertions(int flags)
+static bool fbc_is_compressing(void)
 {
-	igt_crc_t crc;
-
-	if (!opt.check_crc || (flags & DONT_ASSERT_CRC))
-		return;
+	char buf[128];
 
-	collect_crc(&crc);
-	print_crc("Calculated CRC:", &crc);
+	debugfs_read_crtc("i915_fbc_status", buf);
+	return strstr(buf, "\nCompressing: yes\n") != NULL;
+}
 
-	igt_assert(wanted_crc);
-	igt_assert_crc_equal(&crc, wanted_crc);
+static bool fbc_wait_for_compression(void)
+{
+	return igt_wait(fbc_is_compressing(), 2000, 1);
 }
 
-static void do_status_assertions(int flags)
+static bool fbc_not_enough_stolen(void)
 {
-	if (!opt.check_status) {
-		/* Make sure we settle before continuing. */
-		sleep(1);
-		return;
-	}
+	char buf[128];
 
-	if (flags & ASSERT_DRRS_HIGH) {
-		if (!is_drrs_high()) {
-			drrs_print_status();
-			igt_assert_f(false, "DRRS HIGH\n");
-		}
-	} else if (flags & ASSERT_DRRS_LOW) {
-		if (!drrs_wait_until_rr_switch_to_low()) {
-			drrs_print_status();
-			igt_assert_f(false, "DRRS LOW\n");
-		}
-	} else if (flags & ASSERT_DRRS_INACTIVE) {
-		if (!intel_is_drrs_inactive(drm.fd, prim_mode_params.pipe)) {
-			drrs_print_status();
-			igt_assert_f(false, "DRRS INACTIVE\n");
-		}
-	}
+	debugfs_read_crtc("i915_fbc_status", buf);
+	return strstr(buf, "FBC disabled: not enough stolen memory\n");
+}
 
-	if (flags & ASSERT_FBC_ENABLED) {
-		igt_require(!fbc_not_enough_stolen());
-		igt_require(!fbc_stride_not_supported());
-		igt_require(!fbc_mode_too_large());
-		if (!intel_fbc_wait_until_enabled(drm.fd, prim_mode_params.pipe)) {
-			igt_assert_f(intel_fbc_is_enabled(drm.fd,
-						    prim_mode_params.pipe,
-						    IGT_LOG_WARN),
-				     "FBC disabled\n");
-		}
+static bool fbc_stride_not_supported(void)
+{
+	char buf[128];
 
-		if (opt.fbc_check_compression)
-			igt_assert(fbc_wait_for_compression());
-	} else if (flags & ASSERT_FBC_DISABLED) {
-		igt_assert(!intel_fbc_wait_until_enabled(drm.fd,
-						   prim_mode_params.pipe));
-	}
+	debugfs_read_crtc("i915_fbc_status", buf);
+	return strstr(buf, "FBC disabled: framebuffer stride not supported\n");
+}
 
-	if (flags & ASSERT_PSR_ENABLED)
-		igt_assert_f(psr_wait_entry(drm.debugfs, PSR_MODE_1, NULL),
-			     "PSR still disabled\n");
-	else if (flags & ASSERT_PSR_DISABLED)
-		igt_assert_f(psr_wait_update(drm.debugfs, PSR_MODE_1, NULL),
-			     "PSR still enabled\n");
+static bool fbc_mode_too_large(void)
+{
+	char buf[128];
+
+	debugfs_read_crtc("i915_fbc_status", buf);
+	return strstr(buf, "FBC disabled: mode too large for compression\n");
 }
 
-static void __do_assertions(const struct test_mode *t, int flags,
-			    int line)
+static bool fbc_enable_per_plane(int plane_index, enum pipe pipe)
 {
-	flags = adjust_assertion_flags(t, flags);
+	char buf[PATH_MAX];
+	char buf_plane[128];
 
-	/* Make sure any submitted rendering is now idle. */
-	if (!(flags & ASSERT_NO_IDLE_GPU))
-		gem_quiescent_gpu(drm.fd);
+	sprintf(buf_plane, "%d%s", plane_index, kmstest_pipe_name(pipe));
 
-	igt_debug("checking asserts in line %i\n", line);
+	debugfs_read_crtc("i915_fbc_status", buf);
+	return strstr(strstr(buf, "*"), buf_plane);
+}
 
-	wait_user(2, "Paused before assertions.");
+static bool drrs_wait_until_rr_switch_to_low(void)
+{
+	return igt_wait(is_drrs_low(), 5000, 1);
+}
 
-	/* Check the CRC to make sure the drawing operations work
-	 * immediately, independently of the features being enabled. */
-	do_crc_assertions(flags);
+static struct rect pat1_get_rect(struct fb_region *fb, int r)
+{
+	struct rect rect;
 
-	/* Now we can flush things to make the test faster. */
-	do_flush(t);
+	switch (r) {
+	case 0:
+		rect.x = 0;
+		rect.y = 0;
+		rect.w = fb->w / 8;
+		rect.h = fb->h / 8;
+		rect.color = pick_color(fb->fb, COLOR_GREEN);
+		break;
+	case 1:
+		rect.x = fb->w / 8 * 4;
+		rect.y = fb->h / 8 * 4;
+		rect.w = fb->w / 8 * 2;
+		rect.h = fb->h / 8 * 2;
+		rect.color = pick_color(fb->fb, COLOR_RED);
+		break;
+	case 2:
+		rect.x = fb->w / 16 + 1;
+		rect.y = fb->h / 16 + 1;
+		rect.w = fb->w / 8 + 1;
+		rect.h = fb->h / 8 + 1;
+		rect.color = pick_color(fb->fb, COLOR_MAGENTA);
+		break;
+	case 3:
+		rect.x = fb->w - 1;
+		rect.y = fb->h - 1;
+		rect.w = 1;
+		rect.h = 1;
+		rect.color = pick_color(fb->fb, COLOR_CYAN);
+		break;
+	default:
+		igt_assert(false);
+	}
 
-	do_status_assertions(flags);
+	return rect;
+}
 
-	/* Check CRC again to make sure the compressed screen is ok,
-	 * except if we're not drawing on the primary screen. On this
-	 * case, the first check should be enough and a new CRC check
-	 * would only delay the test suite while adding no value to the
-	 * test suite. */
-	if (t->screen == SCREEN_PRIM)
-		do_crc_assertions(flags);
+static struct rect pat2_get_rect(struct fb_region *fb, int r)
+{
+	struct rect rect;
 
-	if (fbc.supports_last_action && opt.fbc_check_last_action) {
-		if (flags & ASSERT_LAST_ACTION_CHANGED)
-			igt_assert(fbc_last_action_changed());
-		else if (flags & ASSERT_NO_ACTION_CHANGE)
-			igt_assert(!fbc_last_action_changed());
+	rect.x = 0;
+	rect.y = 0;
+	rect.w = 64;
+	rect.h = 64;
+
+	switch (r) {
+	case 0:
+		rect.color = pick_color(fb->fb, COLOR_GREEN);
+		break;
+	case 1:
+		rect.x = 31;
+		rect.y = 31;
+		rect.w = 31;
+		rect.h = 31;
+		rect.color = pick_color(fb->fb, COLOR_RED);
+		break;
+	case 2:
+		rect.x = 16;
+		rect.y = 16;
+		rect.w = 32;
+		rect.h = 32;
+		rect.color = pick_color(fb->fb, COLOR_MAGENTA);
+		break;
+	case 3:
+		rect.color = pick_color(fb->fb, COLOR_CYAN);
+		break;
+	default:
+		igt_assert(false);
 	}
 
-	wait_user(1, "Paused after assertions.");
+	return rect;
 }
 
-#define do_assertions(__flags) __do_assertions(t, (__flags), __LINE__)
-
-static void enable_prim_screen_and_wait(const struct test_mode *t)
+static struct rect pat3_get_rect(struct fb_region *fb, int r)
 {
-	fill_fb_region(&prim_mode_params.primary, t->method, COLOR_PRIM_BG);
-	set_mode_for_params(&prim_mode_params);
+	struct rect rect;
 
-	wanted_crc = &blue_crcs[t->format].crc;
-	fbc_update_last_action();
+	rect.w = 64;
+	rect.h = 64;
+	rect.color = pick_color(fb->fb, COLOR_GREEN);
+
+	switch (r) {
+	case 0:
+		rect.x = 0;
+		rect.y = 0;
+		break;
+	case 1:
+		rect.x = 64;
+		rect.y = 64;
+		break;
+	case 2:
+		rect.x = 1;
+		rect.y = 1;
+		break;
+	case 3:
+		rect.x = fb->w - 64;
+		rect.y = fb->h - 64;
+		break;
+	case 4:
+		rect.x = fb->w / 2 - 32;
+		rect.y = fb->h / 2 - 32;
+		break;
+	default:
+		igt_assert(false);
+	}
 
-	do_assertions(ASSERT_NO_ACTION_CHANGE);
+	return rect;
 }
 
-static void update_modeset_cached_params(enum igt_draw_method method)
+static struct rect pat4_get_rect(struct fb_region *fb, int r)
 {
-	bool found = false;
-
-	igt_output_set_pipe(prim_mode_params.output, prim_mode_params.pipe);
-	igt_output_set_pipe(scnd_mode_params.output, scnd_mode_params.pipe);
-
-	found = igt_override_all_active_output_modes_to_fit_bw(&drm.display);
-	igt_require_f(found, "No valid mode combo found.\n");
-
-	prim_mode_params.mode = *igt_output_get_mode(prim_mode_params.output);
-	prim_mode_params.primary.w = prim_mode_params.mode.hdisplay;
-	prim_mode_params.primary.h = prim_mode_params.mode.vdisplay;
+	struct rect rect;
 
-	scnd_mode_params.mode = *igt_output_get_mode(scnd_mode_params.output);
-	scnd_mode_params.primary.w = scnd_mode_params.mode.hdisplay;
-	scnd_mode_params.primary.h = scnd_mode_params.mode.vdisplay;
+	igt_assert_eq(r, 0);
 
-	fill_fb_region(&prim_mode_params.primary, method, COLOR_PRIM_BG);
-	fill_fb_region(&scnd_mode_params.primary, method, COLOR_SCND_BG);
+	rect.x = 0;
+	rect.y = 0;
+	rect.w = fb->w;
+	rect.h = fb->h;
+	rect.color = pick_color(fb->fb, COLOR_GREEN);
 
-	__set_mode_for_params(&prim_mode_params);
-	__set_mode_for_params(&scnd_mode_params);
+	return rect;
 }
 
-static void enable_both_screens_and_wait(const struct test_mode *t)
+static void fb_dirty_ioctl(struct fb_region *fb, struct rect *rect)
 {
-	int ret;
-
-	fill_fb_region(&prim_mode_params.primary, t->method, COLOR_PRIM_BG);
-	fill_fb_region(&scnd_mode_params.primary, t->method, COLOR_SCND_BG);
-
-	__set_mode_for_params(&prim_mode_params);
-	__set_mode_for_params(&scnd_mode_params);
+	int rc;
+	drmModeClip clip = {
+		.x1 = rect->x,
+		.x2 = rect->x + rect->w,
+		.y1 = rect->y,
+		.y2 = rect->y + rect->h,
+	};
 
-	if (drm.display.is_atomic)
-		ret = igt_display_try_commit_atomic(&drm.display,
-				DRM_MODE_ATOMIC_TEST_ONLY |
-				DRM_MODE_ATOMIC_ALLOW_MODESET,
-				NULL);
-	else
-		ret = igt_display_try_commit2(&drm.display, COMMIT_LEGACY);
+	rc = drmModeDirtyFB(drm.fd, fb->fb->fb_id, &clip, 1);
 
-	if (ret)
-		update_modeset_cached_params(t->method);
+	igt_assert(rc == 0 || rc == -ENOSYS);
+}
 
-	igt_display_commit2(&drm.display, drm.display.is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
+static void draw_rect(struct draw_pattern_info *pattern, struct fb_region *fb,
+		      enum igt_draw_method method, int r)
+{
+	struct rect rect = pattern->get_rect(fb, r);
 
-	wanted_crc = &blue_crcs[t->format].crc;
-	fbc_update_last_action();
+	igt_draw_rect_fb(drm.fd, drm.bops, 0, fb->fb, method,
+			 fb->x + rect.x, fb->y + rect.y,
+			 rect.w, rect.h, rect.color);
 
-	do_assertions(ASSERT_NO_ACTION_CHANGE);
+	fb_dirty_ioctl(fb, &rect);
 }
 
-static void set_region_for_test(const struct test_mode *t,
-				struct fb_region *reg)
+static void draw_rect_igt_fb(struct draw_pattern_info *pattern,
+			     struct igt_fb *fb, enum igt_draw_method method,
+			     int r)
 {
-	fill_fb_region(reg, t->method, COLOR_PRIM_BG);
-
-	igt_plane_set_fb(reg->plane, reg->fb);
-	igt_plane_set_position(reg->plane, 0, 0);
-	igt_plane_set_size(reg->plane, reg->w, reg->h);
-	igt_fb_set_size(reg->fb, reg->plane, reg->w, reg->h);
+	struct fb_region region = {
+		.fb = fb,
+		.x = 0,
+		.y = 0,
+		.w = fb->width,
+		.h = fb->height,
+	};
 
-	igt_display_commit(&drm.display);
-	do_assertions(ASSERT_NO_ACTION_CHANGE);
+	draw_rect(pattern, &region, method, r);
 }
 
-static void set_plane_for_test_fbc(const struct test_mode *t, igt_plane_t *plane)
+static void fill_fb_region(struct fb_region *region,
+			   enum igt_draw_method method,
+			   enum color ecolor)
 {
-	struct igt_fb fb;
-	uint32_t color;
-
-	igt_info("Testing fbc on plane %i%s\n", plane->index + 1, kmstest_pipe_name(prim_mode_params.pipe));
+	uint32_t color = pick_color(region->fb, ecolor);
 
-	create_fb(t->format, prim_mode_params.mode.hdisplay, prim_mode_params.mode.vdisplay, t->tiling, t->plane, &fb);
-	color = pick_color(&fb, COLOR_PRIM_BG);
-	igt_draw_rect_fb(drm.fd, drm.bops, 0, &fb, t->method,
-			 0, 0, fb.width, fb.height,
+	igt_draw_rect_fb(drm.fd, drm.bops, 0, region->fb, method,
+			 region->x, region->y, region->w, region->h,
 			 color);
+}
 
-	igt_plane_set_fb(plane, &fb);
-	igt_plane_set_position(plane, 0, 0);
-	igt_plane_set_size(plane, prim_mode_params.mode.hdisplay, prim_mode_params.mode.vdisplay);
-	igt_fb_set_size(&fb, plane, prim_mode_params.mode.hdisplay, prim_mode_params.mode.vdisplay);
-	igt_display_commit_atomic(&drm.display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
-
-	fbc_update_last_action();
-	do_assertions(ASSERT_FBC_ENABLED | ASSERT_NO_ACTION_CHANGE);
-	igt_assert_f(fbc_enable_per_plane(plane->index + 1, prim_mode_params.pipe), "FBC disabled\n");
+static void _fb_dirty_ioctl(struct fb_region *region)
+{
+	struct rect rect;
 
-	igt_remove_fb(drm.fd, &fb);
-	igt_plane_set_fb(plane, NULL);
-	igt_display_commit2(&drm.display, COMMIT_ATOMIC);
+	rect.x = region->x;
+	rect.y = region->y;
+	rect.w = region->w;
+	rect.h = region->h;
+	fb_dirty_ioctl(region, &rect);
 }
 
-static bool enable_features_for_test(const struct test_mode *t)
+static void unset_all_crtcs(void)
 {
-	bool ret = false;
+	igt_display_reset(&drm.display);
+	igt_display_commit(&drm.display);
+}
 
+static bool disable_features(const struct test_mode *t)
+{
 	if (t->feature == FEATURE_DEFAULT)
 		return false;
 
-	if (t->feature & FEATURE_FBC)
-		intel_fbc_enable(drm.fd);
-	if (t->feature & FEATURE_PSR)
-		ret = psr_enable(drm.fd, drm.debugfs, PSR_MODE_1);
-	if (t->feature & FEATURE_DRRS)
-		intel_drrs_enable(drm.fd, prim_mode_params.pipe);
+	intel_fbc_disable(drm.fd);
+	intel_drrs_disable(drm.fd, prim_mode_params.pipe);
 
-	return ret;
+	return psr.can_test ? psr_disable(drm.fd, drm.debugfs) : false;
 }
 
-static void check_test_requirements(const struct test_mode *t)
+static void *busy_thread_func(void *data)
 {
-	int ver;
-
-	if (t->pipes == PIPE_DUAL)
-		igt_require_f(scnd_mode_params.output,
-			    "Can't test dual pipes with the current outputs\n");
-
-	if (t->feature & FEATURE_FBC)
-		igt_require_f(fbc.can_test,
-			      "Can't test FBC with this chipset\n");
-
-	if (t->feature & FEATURE_PSR) {
-		igt_require_f(psr.can_test,
-			      "Can't test PSR with the current outputs\n");
-	}
-
-	if (t->feature & FEATURE_DRRS)
-		igt_require_f(drrs.can_test,
-			      "Can't test DRRS with the current outputs\n");
-
-	/*
-	 * In kernel, When PSR is enabled, DRRS will be disabled. So If a test
-	 * case needs DRRS + PSR enabled, that will be skipped.
-	 */
-	igt_require_f(!((t->feature & FEATURE_PSR) &&
-		      (t->feature & FEATURE_DRRS)),
-		      "Can't test PSR and DRRS together\n");
-
-	if (opt.only_pipes != PIPE_COUNT)
-		igt_require(t->pipes == opt.only_pipes);
-
-	/* Kernel disables fbc for display versions 12 and 13 if psr is enabled. */
-	ver = intel_display_ver(intel_get_drm_devid(drm.fd));
-	if (ver >= 12 && ver <= 13)
-		igt_require_f(!((t->feature & FEATURE_PSR) &&
-				(t->feature & FEATURE_FBC)),
-			      "Can't test PSR and FBC together\n");
+	while (!busy_thread.stop)
+		igt_draw_rect(drm.fd, drm.bops, 0, busy_thread.handle,
+			      busy_thread.size, busy_thread.stride,
+			      busy_thread.tiling, IGT_DRAW_BLT, 0, 0,
+			      busy_thread.width, busy_thread.height,
+			      busy_thread.color, busy_thread.bpp);
 
+	pthread_exit(0);
 }
 
-static void set_crtc_fbs(const struct test_mode *t)
+static void start_busy_thread(struct igt_fb *fb)
 {
-	struct screen_fbs *s = &fbs[t->format];
+	int rc;
 
-	create_fbs(t->format, t->tiling);
+	igt_assert(busy_thread.stop == true);
+	busy_thread.stop = false;
+	busy_thread.handle = fb->gem_handle;
+	busy_thread.size = fb->size;
+	busy_thread.stride = fb->strides[0];
+	busy_thread.width = fb->width;
+	busy_thread.height = fb->height;
+	busy_thread.color = pick_color(fb, COLOR_PRIM_BG);
+	busy_thread.bpp = igt_drm_format_to_bpp(fb->drm_format);
+	busy_thread.tiling = igt_fb_mod_to_tiling(fb->modifier);
 
-	switch (t->fbs) {
-	case FBS_INDIVIDUAL:
-		prim_mode_params.primary.fb = &s->prim_pri;
-		scnd_mode_params.primary.fb = &s->scnd_pri;
-		offscreen_fb.fb = &s->offscreen;
+	rc = pthread_create(&busy_thread.thread, NULL, busy_thread_func, NULL);
+	igt_assert_eq(rc, 0);
+}
 
-		prim_mode_params.primary.x = 0;
-		scnd_mode_params.primary.x = 0;
-		offscreen_fb.x = 0;
+static void stop_busy_thread(void)
+{
+	if (!busy_thread.stop) {
+		busy_thread.stop = true;
+		igt_assert(pthread_join(busy_thread.thread, NULL) == 0);
+	}
+}
 
-		prim_mode_params.primary.y = 0;
-		scnd_mode_params.primary.y = 0;
-		offscreen_fb.y = 0;
-		break;
-	case FBS_SHARED:
-		/* Please see the comment at the top of create_shared_fb(). */
-		prim_mode_params.primary.fb = &s->big;
-		scnd_mode_params.primary.fb = &s->big;
-		offscreen_fb.fb = &s->big;
+static void print_crc(const char *str, igt_crc_t *crc)
+{
+	char *pipe_str;
 
-		prim_mode_params.primary.x = opt.shared_fb_x_offset;
-		scnd_mode_params.primary.x = opt.shared_fb_x_offset;
-		offscreen_fb.x = opt.shared_fb_x_offset;
+	pipe_str = igt_crc_to_string(crc);
 
-		prim_mode_params.primary.y = opt.shared_fb_y_offset;
-		scnd_mode_params.primary.y = prim_mode_params.primary.y +
-					prim_mode_params.primary.h;
-		offscreen_fb.y = scnd_mode_params.primary.y + scnd_mode_params.primary.h;
-		break;
-	default:
-		igt_assert(false);
-	}
+	igt_debug("%s pipe:[%s]\n", str, pipe_str);
 
-	prim_mode_params.cursor.fb = &s->prim_cur;
-	prim_mode_params.sprite.fb = &s->prim_spr;
-	scnd_mode_params.cursor.fb = &s->scnd_cur;
-	scnd_mode_params.sprite.fb = &s->scnd_spr;
+	free(pipe_str);
 }
 
-static void prepare_subtest_data(const struct test_mode *t,
-				 struct draw_pattern_info *pattern)
+static void collect_crc(igt_crc_t *crc)
 {
-	bool need_modeset;
+	igt_pipe_crc_collect_crc(pipe_crc, crc);
+}
 
-	check_test_requirements(t);
+static void init_blue_crc(enum pixel_format format, enum tiling_type tiling)
+{
+	struct igt_fb blue;
 
-	stop_busy_thread();
+	if (blue_crcs[format].initialized)
+		return;
 
-	need_modeset = disable_features(t);
-	set_crtc_fbs(t);
+	create_fb(format, prim_mode_params.mode.hdisplay,
+		  prim_mode_params.mode.vdisplay, tiling, PLANE_PRI,
+		  &blue);
 
-	if (t->screen == SCREEN_OFFSCREEN)
-		fill_fb_region(&offscreen_fb, t->method, COLOR_OFFSCREEN_BG);
+	fill_fb(&blue, COLOR_PRIM_BG);
 
-	igt_display_reset(&drm.display);
-	if (need_modeset)
-		igt_display_commit(&drm.display);
+	igt_output_set_pipe(prim_mode_params.output, prim_mode_params.pipe);
+	igt_output_override_mode(prim_mode_params.output, &prim_mode_params.mode);
+	igt_plane_set_fb(prim_mode_params.primary.plane, &blue);
+	igt_display_commit(&drm.display);
 
-	init_blue_crc(t->format, t->tiling);
-	if (pattern)
-		init_crcs(t->format, t->tiling, pattern);
+	if (!pipe_crc) {
+		pipe_crc = igt_pipe_crc_new(drm.fd, prim_mode_params.pipe,
+					    IGT_PIPE_CRC_SOURCE_AUTO);
+		igt_assert(pipe_crc);
+	}
 
-	need_modeset = enable_features_for_test(t);
-	if (need_modeset)
-		igt_display_commit(&drm.display);
-}
+	collect_crc(&blue_crcs[format].crc);
 
-static void prepare_subtest_screens(const struct test_mode *t)
-{
-	if (t->pipes == PIPE_DUAL)
-		enable_both_screens_and_wait(t);
-	else
-		enable_prim_screen_and_wait(t);
+	print_crc("Blue CRC:  ", &blue_crcs[format].crc);
 
-	if (t->screen == SCREEN_PRIM) {
-		if (t->plane == PLANE_CUR)
-			set_region_for_test(t, &prim_mode_params.cursor);
-		if (t->plane == PLANE_SPR)
-			set_region_for_test(t, &prim_mode_params.sprite);
-	}
+	igt_display_reset(&drm.display);
 
-	if (t->pipes == PIPE_DUAL && t->screen == SCREEN_SCND) {
-		if (t->plane == PLANE_CUR)
-			set_region_for_test(t, &scnd_mode_params.cursor);
-		if (t->plane == PLANE_SPR)
-			set_region_for_test(t, &scnd_mode_params.sprite);
-	}
-}
+	igt_remove_fb(drm.fd, &blue);
 
-static void prepare_subtest(const struct test_mode *t,
-			    struct draw_pattern_info *pattern)
-{
-	prepare_subtest_data(t, pattern);
-	prepare_subtest_screens(t);
+	blue_crcs[format].initialized = true;
 }
 
-/**
- * SUBTEST: drrs-%dp-rte
- * Description: Sanity test to enable DRRS with %arg[1] panels.
- * Driver requirement: i915, xe
- * Functionality: fbt, drrs
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbc-%dp-rte
- * Description: Sanity test to enable FBC with %arg[1] panels.
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psr-%dp-rte
- * Description: Sanity test to enable PSR with %arg[1] panels.
- * Driver requirement: i915, xe
- * Functionality: fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcdrrs-%dp-rte
- * Description: Sanity test to enable FBC & DRRS with %arg[1] panels.
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsr-%dp-rte
- * Description: Sanity test to enable FBC & PSR with %arg[1] panels.
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psrdrrs-%dp-rte
- * Description: Sanity test to enable PSR & DRRS with %arg[1] panels.
- * Driver requirement: i915, xe
- * Functionality: fbt, drrs, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsrdrrs-%dp-rte
- * Description: Sanity test to enable FBC, PSR & DRRS with %arg[1] panels.
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt, drrs, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1].values:   1, 2
- */
-
-/*
- * rte - the basic sanity test
- *
- * METHOD
- *   Just disable all screens, assert everything is disabled, then enable all
- *   screens - including primary, cursor and sprite planes - and assert that
- *   the tested feature is enabled.
- *
- * EXPECTED RESULTS
- *   Blue screens and t->feature enabled.
- *
- * FAILURES
- *   A failure here means that every other subtest will probably fail too. It
- *   probably means that the Kernel is just not enabling the feature we want.
- */
-static void rte_subtest(const struct test_mode *t)
+static void init_crcs(enum pixel_format format, enum tiling_type tiling,
+		      struct draw_pattern_info *pattern)
 {
-	prepare_subtest_data(t, NULL);
+	int r, r_;
+	struct igt_fb tmp_fbs[pattern->n_rects];
 
-	unset_all_crtcs();
-	do_assertions(ASSERT_FBC_DISABLED | ASSERT_PSR_DISABLED |
-		      DONT_ASSERT_CRC | ASSERT_DRRS_INACTIVE);
+	if (pattern->initialized[format])
+		return;
 
-	if (t->pipes == PIPE_SINGLE)
-		enable_prim_screen_and_wait(t);
-	else
-		enable_both_screens_and_wait(t);
+	pattern->crcs[format] = calloc(pattern->n_rects,
+				       sizeof(*(pattern->crcs[format])));
 
-	set_region_for_test(t, &prim_mode_params.cursor);
-	set_region_for_test(t, &prim_mode_params.sprite);
+	for (r = 0; r < pattern->n_rects; r++)
+		create_fb(format, prim_mode_params.mode.hdisplay,
+			  prim_mode_params.mode.vdisplay, tiling,
+			  PLANE_PRI, &tmp_fbs[r]);
 
-	if (t->pipes == PIPE_DUAL) {
-		set_region_for_test(t, &scnd_mode_params.cursor);
-		set_region_for_test(t, &scnd_mode_params.sprite);
+	for (r = 0; r < pattern->n_rects; r++)
+		fill_fb(&tmp_fbs[r], COLOR_PRIM_BG);
+
+	if (pattern->frames_stack) {
+		for (r = 0; r < pattern->n_rects; r++)
+			for (r_ = 0; r_ <= r; r_++)
+				draw_rect_igt_fb(pattern, &tmp_fbs[r],
+						 igt_draw_supports_method(drm.fd, IGT_DRAW_PWRITE) ?
+						 IGT_DRAW_PWRITE : IGT_DRAW_BLT,
+						 r_);
+	} else {
+		for (r = 0; r < pattern->n_rects; r++)
+			draw_rect_igt_fb(pattern, &tmp_fbs[r], igt_draw_supports_method(drm.fd, IGT_DRAW_PWRITE) ?
+					 IGT_DRAW_PWRITE : IGT_DRAW_BLT, r);
 	}
-}
 
-static bool is_valid_plane(igt_plane_t *plane)
-{
-	int index = plane->index;
+	igt_output_set_pipe(prim_mode_params.output, prim_mode_params.pipe);
+	igt_output_override_mode(prim_mode_params.output, &prim_mode_params.mode);
+	for (r = 0; r < pattern->n_rects; r++) {
+		igt_plane_set_fb(prim_mode_params.primary.plane, &tmp_fbs[r]);
+		igt_display_commit(&drm.display);
 
-	if (plane->type == DRM_PLANE_TYPE_CURSOR)
-		return false;
-	/*
-	 * Execute test only on first three planes
-	 */
-	return ((index >= 0) && (index < 3));
-}
+		collect_crc(&pattern->crcs[format][r]);
+	}
 
-/**
- * plane-fbc-rte - the basic sanity test
- *
- * METHOD
- *   Just disable primary screen, assert everything is disabled, then enable single
- *   screens and single plane one by one  and assert that the tested fbc is enabled
- *   for the particular plane.
- *
- * EXPECTED RESULTS
- *   Blue screens and t->feature enabled.
- *
- * FAILURES
- *   A failure here means that fbc is not getting enabled for requested plane. It means
- *   kernel is not able to enable fbc on the requested plane.
- */
+	for (r = 0; r < pattern->n_rects; r++) {
+		igt_debug("Rect %d CRC:", r);
+		print_crc("", &pattern->crcs[format][r]);
+	}
 
-static void plane_fbc_rte_subtest(const struct test_mode *t)
-{
-	int ver;
-	igt_plane_t *plane;
+	igt_display_reset(&drm.display);
 
-	ver = intel_display_ver(intel_get_drm_devid(drm.fd));
-	igt_require_f((ver >= 20), "Can't test fbc for each plane\n");
+	for (r = 0; r < pattern->n_rects; r++)
+		igt_remove_fb(drm.fd, &tmp_fbs[r]);
 
-	prepare_subtest_data(t, NULL);
-	unset_all_crtcs();
-	do_assertions(ASSERT_FBC_DISABLED | DONT_ASSERT_CRC);
+	pattern->initialized[format] = true;
+}
 
-	igt_output_override_mode(prim_mode_params.output, &prim_mode_params.mode);
-	igt_output_set_pipe(prim_mode_params.output, prim_mode_params.pipe);
+static void setup_drm(void)
+{
+	drm.fd = drm_open_driver_master(DRIVER_INTEL | DRIVER_XE);
+	drm.debugfs = igt_debugfs_dir(drm.fd);
 
-	wanted_crc = &blue_crcs[t->format].crc;
+	kmstest_set_vt_graphics_mode();
+	igt_display_require(&drm.display, drm.fd);
 
-	for_each_plane_on_pipe(&drm.display, prim_mode_params.pipe, plane) {
-		if (!is_valid_plane(plane))
-			continue;
+	drm.bops = buf_ops_create(drm.fd);
+}
 
-		set_plane_for_test_fbc(t, plane);
-	}
+static void teardown_drm(void)
+{
+	buf_ops_destroy(drm.bops);
+	igt_display_fini(&drm.display);
+	drm_close_driver(drm.fd);
+}
 
-	igt_display_reset(&drm.display);
+static void setup_modeset(void)
+{
+	igt_require(init_modeset_cached_params());
+	offscreen_fb.fb = NULL;
+	offscreen_fb.w = 1024;
+	offscreen_fb.h = 1024;
+	create_fbs(FORMAT_DEFAULT, opt.tiling);
 }
 
-static void update_wanted_crc(const struct test_mode *t, igt_crc_t *crc)
+static void teardown_modeset(void)
 {
-	if (t->screen == SCREEN_PRIM)
-		wanted_crc = crc;
+	enum pixel_format f;
+
+	for (f = 0; f < FORMAT_COUNT; f++)
+		destroy_fbs(f);
 }
 
-static bool op_disables_psr(const struct test_mode *t,
-			    enum igt_draw_method method)
+static void setup_crcs(void)
 {
-	if (method != IGT_DRAW_MMAP_GTT)
-		return false;
-	if (t->screen == SCREEN_PRIM)
-		return true;
-	/* On FBS_SHARED, even if the target is not the PSR screen
-	 * (SCREEN_PRIM), all primary planes share the same frontbuffer, so a
-	 * write to the second screen primary plane - or offscreen plane - will
-	 * touch the framebuffer that's also used by the primary screen. */
-	if (t->fbs == FBS_SHARED && t->plane == PLANE_PRI)
-		return true;
+	enum pixel_format f;
 
-	return false;
-}
+	for (f = 0; f < FORMAT_COUNT; f++)
+		blue_crcs[f].initialized = false;
 
-/**
- * SUBTEST: drrs-1p-offscren-pri-%s-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
- * Functionality: drrs, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbc-1p-offscren-pri-%s-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psr-1p-offscren-pri-%s-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
- * Functionality: fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcdrrs-1p-offscren-pri-%s-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsr-1p-offscren-pri-%s-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psrdrrs-1p-offscren-pri-%s-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
- * Functionality: drrs, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsrdrrs-1p-offscren-pri-%s-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @indfb:          Individual fb
- * @shrfb:          Shared fb
- *
- * arg[2]:
- *
- * @blt:            Blitter
- * @mmap-wc:        MMAP-WC
- * @render:         Render
- */
+	pattern1.frames_stack = true;
+	pattern1.n_rects = 4;
+	pattern1.get_rect = pat1_get_rect;
+	for (f = 0; f < FORMAT_COUNT; f++) {
+		pattern1.initialized[f] = false;
+		pattern1.crcs[f] = NULL;
+	}
 
-/**
- * SUBTEST: drrs-1p-offscren-pri-%s-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915
- * Functionality: drrs, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbc-1p-offscren-pri-%s-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915
- * Functionality: fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psr-1p-offscren-pri-%s-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915
- * Functionality: fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcdrrs-1p-offscren-pri-%s-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915
- * Functionality: drrs, fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsr-1p-offscren-pri-%s-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915
- * Functionality: fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psrdrrs-1p-offscren-pri-%s-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915
- * Functionality: drrs, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsrdrrs-1p-offscren-pri-%s-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915
- * Functionality: drrs, fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @indfb:          Individual fb
- * @shrfb:          Shared fb
- *
- * arg[2]:
- *
- * @mmap-cpu:       MMAP-CPU
- * @mmap-gtt:       MMAP-GTT
- * @pwrite:         PWRITE
- */
+	pattern2.frames_stack = true;
+	pattern2.n_rects = 4;
+	pattern2.get_rect = pat2_get_rect;
+	for (f = 0; f < FORMAT_COUNT; f++) {
+		pattern2.initialized[f] = false;
+		pattern2.crcs[f] = NULL;
+	}
 
-/**
- * SUBTEST: drrs-%dp-primscrn-%s-indfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915
- * Functionality: drrs, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbc-%dp-primscrn-%s-indfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915
- * Functionality: fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psr-%dp-primscrn-%s-indfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915
- * Functionality: fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcdrrs-%dp-primscrn-%s-indfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915
- * Functionality: drrs, fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsr-%dp-primscrn-%s-indfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915
- * Functionality: fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psrdrrs-%dp-primscrn-%s-indfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915
- * Functionality: drrs, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-indfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915
- * Functionality: drrs, fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1].values:   1, 2
- *
- * arg[2]:
- *
- * @cur:            Cursor plane
- * @pri:            Primary plane
- * @spr:            Sprite plane
- *
- * arg[3]:
- *
- * @mmap-cpu:       MMAP-CPU
- * @mmap-gtt:       MMAP-GTT
- * @pwrite:         PWRITE
- */
+	pattern3.frames_stack = false;
+	pattern3.n_rects = 5;
+	pattern3.get_rect = pat3_get_rect;
+	for (f = 0; f < FORMAT_COUNT; f++) {
+		pattern3.initialized[f] = false;
+		pattern3.crcs[f] = NULL;
+	}
+
+	pattern4.frames_stack = false;
+	pattern4.n_rects = 1;
+	pattern4.get_rect = pat4_get_rect;
+	for (f = 0; f < FORMAT_COUNT; f++) {
+		pattern4.initialized[f] = false;
+		pattern4.crcs[f] = NULL;
+	}
+}
+
+static void teardown_crcs(void)
+{
+	enum pixel_format f;
+
+	for (f = 0; f < FORMAT_COUNT; f++) {
+		if (pattern1.crcs[f])
+			free(pattern1.crcs[f]);
+		if (pattern2.crcs[f])
+			free(pattern2.crcs[f]);
+		if (pattern3.crcs[f])
+			free(pattern3.crcs[f]);
+		if (pattern4.crcs[f])
+			free(pattern4.crcs[f]);
+	}
 
-/**
- * SUBTEST: drrs-%dp-primscrn-%s-indfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
- * Functionality: drrs, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbc-%dp-primscrn-%s-indfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psr-%dp-primscrn-%s-indfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
- * Functionality: fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcdrrs-%dp-primscrn-%s-indfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsr-%dp-primscrn-%s-indfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psrdrrs-%dp-primscrn-%s-indfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
- * Functionality: drrs, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-indfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1].values:   1, 2
- *
- * arg[2]:
- *
- * @cur:            Cursor plane
- * @pri:            Primary plane
- * @spr:            Sprite plane
- *
- * arg[3]:
- *
- * @blt:            Blitter
- * @mmap-wc:        MMAP-WC
- * @render:         Render
- */
+	igt_pipe_crc_free(pipe_crc);
+}
 
-/**
- * SUBTEST: drrs-%dp-primscrn-pri-shrfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
- * Functionality: drrs, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbc-%dp-primscrn-pri-shrfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psr-%dp-primscrn-pri-shrfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
- * Functionality: fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcdrrs-%dp-primscrn-pri-shrfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsr-%dp-primscrn-pri-shrfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psrdrrs-%dp-primscrn-pri-shrfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
- * Functionality: drrs, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsrdrrs-%dp-primscrn-pri-shrfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1].values:   1, 2
- *
- * arg[2]:
- *
- * @blt:            Blitter
- * @mmap-wc:        MMAP-WC
- * @render:         Render
- */
+static void setup_fbc(void)
+{
+	if (!intel_fbc_supported_on_chipset(drm.fd, prim_mode_params.pipe)) {
+		igt_info("Can't test FBC: not supported on this chipset\n");
+		return;
+	}
 
-/**
- * SUBTEST: drrs-%dp-primscrn-pri-shrfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915
- * Functionality: drrs, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbc-%dp-primscrn-pri-shrfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915
- * Functionality: fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psr-%dp-primscrn-pri-shrfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915
- * Functionality: fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcdrrs-%dp-primscrn-pri-shrfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915
- * Functionality: drrs, fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsr-%dp-primscrn-pri-shrfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915
- * Functionality: fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psrdrrs-%dp-primscrn-pri-shrfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915
- * Functionality: drrs, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsrdrrs-%dp-primscrn-pri-shrfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915
- * Functionality: drrs, fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1].values:   1, 2
- *
- * arg[2]:
- *
- * @mmap-cpu:       MMAP-CPU
- * @mmap-gtt:       MMAP-GTT
- * @pwrite:         PWRITE
- */
+	fbc.can_test = true;
 
-/**
- * SUBTEST: drrs-2p-scndscrn-%s-indfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
- * Functionality: drrs, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbc-2p-scndscrn-%s-indfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psr-2p-scndscrn-%s-indfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
- * Functionality: fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcdrrs-2p-scndscrn-%s-indfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsr-2p-scndscrn-%s-indfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psrdrrs-2p-scndscrn-%s-indfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
- * Functionality: drrs, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-indfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @cur:            Cursor plane
- * @pri:            Primary plane
- * @spr:            Sprite plane
- *
- * arg[2]:
- *
- * @blt:            Blitter
- * @mmap-wc:        MMAP-WC
- * @render:         Render
- */
+	fbc_setup_last_action();
+}
 
-/**
- * SUBTEST: drrs-2p-scndscrn-%s-indfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915
- * Functionality: drrs, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbc-2p-scndscrn-%s-indfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915
- * Functionality: fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psr-2p-scndscrn-%s-indfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915
- * Functionality: fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcdrrs-2p-scndscrn-%s-indfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915
- * Functionality: drrs, fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsr-2p-scndscrn-%s-indfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915
- * Functionality: fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psrdrrs-2p-scndscrn-%s-indfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915
- * Functionality: drrs, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-indfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915
- * Functionality: drrs, fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @cur:            Cursor plane
- * @pri:            Primary plane
- * @spr:            Sprite plane
- *
- * arg[2]:
- *
- * @mmap-cpu:       MMAP-CPU
- * @mmap-gtt:       MMAP-GTT
- * @pwrite:         PWRITE
- */
+static void teardown_fbc(void)
+{
+}
 
-/**
- * SUBTEST: drrs-2p-scndscrn-pri-shrfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
- * Functionality: drrs, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbc-2p-scndscrn-pri-shrfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psr-2p-scndscrn-pri-shrfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
- * Functionality: fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcdrrs-2p-scndscrn-pri-shrfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsr-2p-scndscrn-pri-shrfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psrdrrs-2p-scndscrn-pri-shrfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
- * Functionality: drrs, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsrdrrs-2p-scndscrn-pri-shrfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @blt:            Blitter
- * @mmap-wc:        MMAP-WC
- * @render:         Render
- */
+static void setup_psr(void)
+{
+	if (prim_mode_params.output->config.connector->connector_type !=
+	    DRM_MODE_CONNECTOR_eDP) {
+		igt_info("Can't test PSR: no usable eDP screen.\n");
+		return;
+	}
 
-/**
- * SUBTEST: drrs-2p-scndscrn-pri-shrfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915
- * Functionality: drrs, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbc-2p-scndscrn-pri-shrfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915
- * Functionality: fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psr-2p-scndscrn-pri-shrfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915
- * Functionality: fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcdrrs-2p-scndscrn-pri-shrfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915
- * Functionality: drrs, fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsr-2p-scndscrn-pri-shrfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915
- * Functionality: fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psrdrrs-2p-scndscrn-pri-shrfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915
- * Functionality: drrs, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsrdrrs-2p-scndscrn-pri-shrfb-draw-%s
- * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915
- * Functionality: drrs, fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @mmap-cpu:       MMAP-CPU
- * @mmap-gtt:       MMAP-GTT
- * @pwrite:         PWRITE
- */
+	if (!psr_sink_support(drm.fd, drm.debugfs, PSR_MODE_1, NULL)) {
+		igt_info("Can't test PSR: not supported by sink.\n");
+		return;
+	}
+	psr.can_test = true;
+}
 
-/*
- * draw - draw a set of rectangles on the screen using the provided method
- *
- * METHOD
- *   Just set the screens as appropriate and then start drawing a series of
- *   rectangles on the target screen. The important guy here is the drawing
- *   method used.
- *
- * EXPECTED RESULTS
- *   The feature either stays enabled or gets reenabled after the oprations. You
- *   will also see the rectangles on the target screen.
- *
- * FAILURES
- *   A failure here indicates a problem somewhere between the Kernel's
- *   frontbuffer tracking infrastructure or the feature itself. You need to pay
- *   attention to which drawing method is being used.
- */
-static void draw_subtest(const struct test_mode *t)
+static void teardown_psr(void)
 {
-	int r;
-	int assertions = 0;
-	struct draw_pattern_info *pattern;
-	struct modeset_params *params = pick_params(t);
-	struct fb_region *target;
+}
+
+static void setup_drrs(void)
+{
+	if (!intel_output_has_drrs(drm.fd, prim_mode_params.output)) {
+		igt_info("Can't test DRRS: no usable screen.\n");
+		return;
+	}
+
+	if (!intel_is_drrs_supported(drm.fd, prim_mode_params.pipe)) {
+		igt_info("Can't test DRRS: Not supported.\n");
+		return;
+	}
+
+	drrs.can_test = true;
+}
+
+static void setup_environment(void)
+{
+	setup_drm();
+	setup_modeset();
+
+	setup_fbc();
+	setup_psr();
+	setup_drrs();
+
+	setup_crcs();
+}
+
+static void teardown_environment(void)
+{
+	stop_busy_thread();
+
+	teardown_crcs();
+	teardown_psr();
+	teardown_fbc();
+	teardown_modeset();
+	teardown_drm();
+}
+
+static void wait_user(int step, const char *msg)
+{
+	if (opt.step < step)
+		return;
+
+	igt_info("%s Press enter...\n", msg);
+	while (getchar() != '\n')
+		;
+}
 
+static struct modeset_params *pick_params(const struct test_mode *t)
+{
 	switch (t->screen) {
 	case SCREEN_PRIM:
-		if (t->method != IGT_DRAW_MMAP_GTT && t->plane == PLANE_PRI)
-			assertions |= ASSERT_LAST_ACTION_CHANGED;
-		else
-			assertions |= ASSERT_NO_ACTION_CHANGE;
-		break;
+		return &prim_mode_params;
 	case SCREEN_SCND:
+		return &scnd_mode_params;
 	case SCREEN_OFFSCREEN:
-		assertions |= ASSERT_NO_ACTION_CHANGE;
-		break;
+		return NULL;
 	default:
 		igt_assert(false);
 	}
+}
+
+static struct fb_region *pick_target(const struct test_mode *t,
+				     struct modeset_params *params)
+{
+	if (!params)
+		return &offscreen_fb;
 
 	switch (t->plane) {
 	case PLANE_PRI:
-		pattern = &pattern1;
-		break;
+		return &params->primary;
 	case PLANE_CUR:
+		return &params->cursor;
 	case PLANE_SPR:
-		pattern = &pattern2;
-		break;
+		return &params->sprite;
 	default:
 		igt_assert(false);
 	}
+}
 
-	if (op_disables_psr(t, t->method))
-		assertions |= ASSERT_PSR_DISABLED;
+static void do_flush(const struct test_mode *t)
+{
+	struct modeset_params *params = pick_params(t);
+	struct fb_region *target = pick_target(t, params);
 
-	/*
-	 * On FBS_INDIVIDUAL, write to offscreen plane will not touch the
-	 * current frambuffer. Hence assert for DRRS_LOW.
-	 */
-	if ((t->fbs == FBS_INDIVIDUAL) && (t->screen == SCREEN_OFFSCREEN))
-		assertions |= ASSERT_DRRS_LOW;
+	if (is_i915_device(drm.fd))
+		gem_set_domain(drm.fd, target->fb->gem_handle, I915_GEM_DOMAIN_GTT, 0);
+}
 
-	prepare_subtest(t, pattern);
-	target = pick_target(t, params);
+#define DONT_ASSERT_CRC			(1 << 0)
+#define DONT_ASSERT_FEATURE_STATUS	(1 << 1)
+#define DONT_ASSERT_FBC_STATUS		(1 << 12)
 
-	for (r = 0; r < pattern->n_rects; r++) {
-		igt_debug("Drawing rect %d\n", r);
-		draw_rect(pattern, target, t->method, r);
-		update_wanted_crc(t, &pattern->crcs[t->format][r]);
-		do_assertions(assertions);
+#define FBC_ASSERT_FLAGS		(0xF << 2)
+#define ASSERT_FBC_ENABLED		(1 << 2)
+#define ASSERT_FBC_DISABLED		(1 << 3)
+#define ASSERT_LAST_ACTION_CHANGED	(1 << 4)
+#define ASSERT_NO_ACTION_CHANGE		(1 << 5)
+
+#define PSR_ASSERT_FLAGS		(3 << 6)
+#define ASSERT_PSR_ENABLED		(1 << 6)
+#define ASSERT_PSR_DISABLED		(1 << 7)
+
+#define DRRS_ASSERT_FLAGS		(7 << 8)
+#define ASSERT_DRRS_HIGH		(1 << 8)
+#define ASSERT_DRRS_LOW			(1 << 9)
+#define ASSERT_DRRS_INACTIVE		(1 << 10)
+
+#define ASSERT_NO_IDLE_GPU		(1 << 11)
+
+static int adjust_assertion_flags(const struct test_mode *t, int flags)
+{
+	if (!(flags & DONT_ASSERT_FEATURE_STATUS)) {
+		if (!(flags & ASSERT_FBC_DISABLED))
+			flags |= ASSERT_FBC_ENABLED;
+		if (!(flags & ASSERT_PSR_DISABLED))
+			flags |= ASSERT_PSR_ENABLED;
+		if (!((flags & ASSERT_DRRS_LOW) ||
+		    (flags & ASSERT_DRRS_INACTIVE)))
+			flags |= ASSERT_DRRS_HIGH;
 	}
+
+	if ((t->feature & FEATURE_FBC) == 0 || (flags & DONT_ASSERT_FBC_STATUS))
+		flags &= ~FBC_ASSERT_FLAGS;
+	if ((t->feature & FEATURE_PSR) == 0)
+		flags &= ~PSR_ASSERT_FLAGS;
+	if ((t->feature & FEATURE_DRRS) == 0)
+		flags &= ~DRRS_ASSERT_FLAGS;
+
+	return flags;
 }
 
-/**
- * SUBTEST: drrs-%dp-pri-indfb-multidraw
- * Description: Draw a set of rectangles on the screen using alternated drawing methods
- * Driver requirement: i915, xe
- * Functionality: drrs, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbc-%dp-pri-indfb-multidraw
- * Description: Draw a set of rectangles on the screen using alternated drawing methods
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psr-%dp-pri-indfb-multidraw
- * Description: Draw a set of rectangles on the screen using alternated drawing methods
- * Driver requirement: i915, xe
- * Functionality: fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcdrrs-%dp-pri-indfb-multidraw
- * Description: Draw a set of rectangles on the screen using alternated drawing methods
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsr-%dp-pri-indfb-multidraw
- * Description: Draw a set of rectangles on the screen using alternated drawing methods
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psrdrrs-%dp-pri-indfb-multidraw
- * Description: Draw a set of rectangles on the screen using alternated drawing methods
- * Driver requirement: i915, xe
- * Functionality: drrs, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsrdrrs-%dp-pri-indfb-multidraw
- * Description: Draw a set of rectangles on the screen using alternated drawing methods
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1].values:   1, 2
- */
+static void do_crc_assertions(int flags)
+{
+	igt_crc_t crc;
+
+	if (!opt.check_crc || (flags & DONT_ASSERT_CRC))
+		return;
+
+	collect_crc(&crc);
+	print_crc("Calculated CRC:", &crc);
+
+	igt_assert(wanted_crc);
+	igt_assert_crc_equal(&crc, wanted_crc);
+}
+
+static void do_status_assertions(int flags)
+{
+	if (!opt.check_status) {
+		/* Make sure we settle before continuing. */
+		sleep(1);
+		return;
+	}
+
+	if (flags & ASSERT_DRRS_HIGH) {
+		if (!is_drrs_high()) {
+			drrs_print_status();
+			igt_assert_f(false, "DRRS HIGH\n");
+		}
+	} else if (flags & ASSERT_DRRS_LOW) {
+		if (!drrs_wait_until_rr_switch_to_low()) {
+			drrs_print_status();
+			igt_assert_f(false, "DRRS LOW\n");
+		}
+	} else if (flags & ASSERT_DRRS_INACTIVE) {
+		if (!intel_is_drrs_inactive(drm.fd, prim_mode_params.pipe)) {
+			drrs_print_status();
+			igt_assert_f(false, "DRRS INACTIVE\n");
+		}
+	}
+
+	if (flags & ASSERT_FBC_ENABLED) {
+		igt_require(!fbc_not_enough_stolen());
+		igt_require(!fbc_stride_not_supported());
+		igt_require(!fbc_mode_too_large());
+		if (!intel_fbc_wait_until_enabled(drm.fd, prim_mode_params.pipe)) {
+			igt_assert_f(intel_fbc_is_enabled(drm.fd,
+						    prim_mode_params.pipe,
+						    IGT_LOG_WARN),
+				     "FBC disabled\n");
+		}
+
+		if (opt.fbc_check_compression)
+			igt_assert(fbc_wait_for_compression());
+	} else if (flags & ASSERT_FBC_DISABLED) {
+		igt_assert(!intel_fbc_wait_until_enabled(drm.fd,
+						   prim_mode_params.pipe));
+	}
+
+	if (flags & ASSERT_PSR_ENABLED)
+		igt_assert_f(psr_wait_entry(drm.debugfs, PSR_MODE_1, NULL),
+			     "PSR still disabled\n");
+	else if (flags & ASSERT_PSR_DISABLED)
+		igt_assert_f(psr_wait_update(drm.debugfs, PSR_MODE_1, NULL),
+			     "PSR still enabled\n");
+}
+
+static void __do_assertions(const struct test_mode *t, int flags,
+			    int line)
+{
+	flags = adjust_assertion_flags(t, flags);
+
+	/* Make sure any submitted rendering is now idle. */
+	if (!(flags & ASSERT_NO_IDLE_GPU))
+		gem_quiescent_gpu(drm.fd);
+
+	igt_debug("checking asserts in line %i\n", line);
+
+	wait_user(2, "Paused before assertions.");
+
+	/* Check the CRC to make sure the drawing operations work
+	 * immediately, independently of the features being enabled. */
+	do_crc_assertions(flags);
+
+	/* Now we can flush things to make the test faster. */
+	do_flush(t);
+
+	do_status_assertions(flags);
+
+	/* Check CRC again to make sure the compressed screen is ok,
+	 * except if we're not drawing on the primary screen. On this
+	 * case, the first check should be enough and a new CRC check
+	 * would only delay the test suite while adding no value to the
+	 * test suite. */
+	if (t->screen == SCREEN_PRIM)
+		do_crc_assertions(flags);
+
+	if (fbc.supports_last_action && opt.fbc_check_last_action) {
+		if (flags & ASSERT_LAST_ACTION_CHANGED)
+			igt_assert(fbc_last_action_changed());
+		else if (flags & ASSERT_NO_ACTION_CHANGE)
+			igt_assert(!fbc_last_action_changed());
+	}
+
+	wait_user(1, "Paused after assertions.");
+}
+
+#define do_assertions(__flags) __do_assertions(t, (__flags), __LINE__)
+
+static void enable_prim_screen_and_wait(const struct test_mode *t)
+{
+	fill_fb_region(&prim_mode_params.primary, t->method, COLOR_PRIM_BG);
+	set_mode_for_params(&prim_mode_params);
 
-/*
- * multidraw - draw a set of rectangles on the screen using alternated drawing
- *             methods
- *
- * METHOD
- *   This is just like the draw subtest, but now we keep alternating between two
- *   drawing methods. Each time we run multidraw_subtest we will test all the
- *   possible pairs of drawing methods.
- *
- * EXPECTED RESULTS
- *   The same as the draw subtest.
- *
- * FAILURES
- *   If you get a failure here, first you need to check whether you also get
- *   failures on the individual draw subtests. If yes, then go fix every single
- *   draw subtest first. If all the draw subtests pass but this one fails, then
- *   you have to study how one drawing method is stopping the other from
- *   properly working.
- */
-static void multidraw_subtest(const struct test_mode *t)
+	wanted_crc = &blue_crcs[t->format].crc;
+	fbc_update_last_action();
+
+	do_assertions(ASSERT_NO_ACTION_CHANGE);
+}
+
+static void update_modeset_cached_params(enum igt_draw_method method)
 {
-	int r;
-	int assertions = 0;
-	struct draw_pattern_info *pattern;
-	struct modeset_params *params = pick_params(t);
-	struct fb_region *target;
-	enum igt_draw_method m1, m2, used_method;
-	bool wc_used = false;
+	bool found = false;
 
-	switch (t->plane) {
-	case PLANE_PRI:
-		pattern = &pattern1;
-		break;
-	case PLANE_CUR:
-	case PLANE_SPR:
-		pattern = &pattern2;
-		break;
-	default:
-		igt_assert(false);
-	}
+	igt_output_set_pipe(prim_mode_params.output, prim_mode_params.pipe);
+	igt_output_set_pipe(scnd_mode_params.output, scnd_mode_params.pipe);
 
-	prepare_subtest(t, pattern);
-	target = pick_target(t, params);
+	found = igt_override_all_active_output_modes_to_fit_bw(&drm.display);
+	igt_require_f(found, "No valid mode combo found.\n");
 
-	for (m1 = 0; m1 < IGT_DRAW_METHOD_COUNT; m1++) {
-		for (m2 = m1 + 1; m2 < IGT_DRAW_METHOD_COUNT; m2++) {
+	prim_mode_params.mode = *igt_output_get_mode(prim_mode_params.output);
+	prim_mode_params.primary.w = prim_mode_params.mode.hdisplay;
+	prim_mode_params.primary.h = prim_mode_params.mode.vdisplay;
 
-			igt_debug("Methods %s and %s\n",
-				  igt_draw_get_method_name(m1),
-				  igt_draw_get_method_name(m2));
+	scnd_mode_params.mode = *igt_output_get_mode(scnd_mode_params.output);
+	scnd_mode_params.primary.w = scnd_mode_params.mode.hdisplay;
+	scnd_mode_params.primary.h = scnd_mode_params.mode.vdisplay;
 
-			if (!igt_draw_supports_method(drm.fd, m1) ||
-			    !igt_draw_supports_method(drm.fd, m2))
-				continue;
+	fill_fb_region(&prim_mode_params.primary, method, COLOR_PRIM_BG);
+	fill_fb_region(&scnd_mode_params.primary, method, COLOR_SCND_BG);
 
-			for (r = 0; r < pattern->n_rects; r++) {
-				used_method = (r % 2 == 0) ? m1 : m2;
+	__set_mode_for_params(&prim_mode_params);
+	__set_mode_for_params(&scnd_mode_params);
+}
 
-				igt_debug("Used method %s\n",
-					igt_draw_get_method_name(used_method));
+static void enable_both_screens_and_wait(const struct test_mode *t)
+{
+	int ret;
 
-				draw_rect(pattern, target, used_method, r);
+	fill_fb_region(&prim_mode_params.primary, t->method, COLOR_PRIM_BG);
+	fill_fb_region(&scnd_mode_params.primary, t->method, COLOR_SCND_BG);
 
-				if (used_method == IGT_DRAW_MMAP_WC ||
-				    used_method == IGT_DRAW_MMAP_GTT)
-					wc_used = true;
+	__set_mode_for_params(&prim_mode_params);
+	__set_mode_for_params(&scnd_mode_params);
 
-				update_wanted_crc(t,
-						  &pattern->crcs[t->format][r]);
+	if (drm.display.is_atomic)
+		ret = igt_display_try_commit_atomic(&drm.display,
+				DRM_MODE_ATOMIC_TEST_ONLY |
+				DRM_MODE_ATOMIC_ALLOW_MODESET,
+				NULL);
+	else
+		ret = igt_display_try_commit2(&drm.display, COMMIT_LEGACY);
 
-				assertions = used_method != IGT_DRAW_MMAP_GTT ?
-					     ASSERT_LAST_ACTION_CHANGED :
-					     ASSERT_NO_ACTION_CHANGE;
-				if (op_disables_psr(t, used_method) &&
-				    !wc_used)
-					assertions |= ASSERT_PSR_DISABLED;
+	if (ret)
+		update_modeset_cached_params(t->method);
 
-				do_assertions(assertions);
-			}
+	igt_display_commit2(&drm.display, drm.display.is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
 
-			fill_fb_region(target, m2, COLOR_PRIM_BG);
-			_fb_dirty_ioctl(target);
+	wanted_crc = &blue_crcs[t->format].crc;
+	fbc_update_last_action();
 
-			update_wanted_crc(t, &blue_crcs[t->format].crc);
-			do_assertions(ASSERT_NO_ACTION_CHANGE);
-		}
-	}
+	do_assertions(ASSERT_NO_ACTION_CHANGE);
 }
 
-static bool format_is_valid(int feature_flags,
-			    enum pixel_format format)
+static void set_region_for_test(const struct test_mode *t,
+				struct fb_region *reg)
 {
-	int devid = intel_get_drm_devid(drm.fd);
+	fill_fb_region(reg, t->method, COLOR_PRIM_BG);
 
-	if (!(feature_flags & FEATURE_FBC))
-		return true;
+	igt_plane_set_fb(reg->plane, reg->fb);
+	igt_plane_set_position(reg->plane, 0, 0);
+	igt_plane_set_size(reg->plane, reg->w, reg->h);
+	igt_fb_set_size(reg->fb, reg->plane, reg->w, reg->h);
 
-	switch (format) {
-	case FORMAT_RGB888:
-		return true;
-	case FORMAT_RGB565:
-		if (IS_GEN2(devid) || IS_G4X(devid))
-			return false;
-		return true;
-	case FORMAT_RGB101010:
-		return false;
-	default:
-		igt_assert(false);
-	}
+	igt_display_commit(&drm.display);
+	do_assertions(ASSERT_NO_ACTION_CHANGE);
 }
 
-/*
- * badformat - test pixel formats that are not supported by at least one feature
- *
- * METHOD
- *   We just do a modeset on a buffer with the given pixel format and check the
- *   status of the relevant features.
- *
- * EXPECTED RESULTS
- *   No assertion failures :)
- *
- * FAILURES
- *   If you get a feature enabled/disabled assertion failure, then you should
- *   probably check the Kernel code for the feature that checks the pixel
- *   formats. If you get a CRC assertion failure, then you should use the
- *   appropriate command line arguments that will allow you to look at the
- *   screen, then judge what to do based on what you see.
- */
-static void badformat_subtest(const struct test_mode *t)
+static void set_plane_for_test_fbc(const struct test_mode *t, igt_plane_t *plane)
 {
-	bool fbc_valid = format_is_valid(FEATURE_FBC, t->format);
-	bool psr_valid = format_is_valid(FEATURE_PSR, t->format);
-	int assertions = ASSERT_NO_ACTION_CHANGE;
+	struct igt_fb fb;
+	uint32_t color;
 
-	prepare_subtest_data(t, NULL);
+	igt_info("Testing fbc on plane %i%s\n", plane->index + 1, kmstest_pipe_name(prim_mode_params.pipe));
 
-	fill_fb_region(&prim_mode_params.primary, t->method, COLOR_PRIM_BG);
-	set_mode_for_params(&prim_mode_params);
+	create_fb(t->format, prim_mode_params.mode.hdisplay, prim_mode_params.mode.vdisplay, t->tiling, t->plane, &fb);
+	color = pick_color(&fb, COLOR_PRIM_BG);
+	igt_draw_rect_fb(drm.fd, drm.bops, 0, &fb, t->method,
+			 0, 0, fb.width, fb.height,
+			 color);
 
-	wanted_crc = &blue_crcs[t->format].crc;
+	igt_plane_set_fb(plane, &fb);
+	igt_plane_set_position(plane, 0, 0);
+	igt_plane_set_size(plane, prim_mode_params.mode.hdisplay, prim_mode_params.mode.vdisplay);
+	igt_fb_set_size(&fb, plane, prim_mode_params.mode.hdisplay, prim_mode_params.mode.vdisplay);
+	igt_display_commit_atomic(&drm.display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
 
-	if (!fbc_valid)
-		assertions |= ASSERT_FBC_DISABLED;
-	if (!psr_valid)
-		assertions |= ASSERT_PSR_DISABLED;
-	do_assertions(assertions);
-}
+	fbc_update_last_action();
+	do_assertions(ASSERT_FBC_ENABLED | ASSERT_NO_ACTION_CHANGE);
+	igt_assert_f(fbc_enable_per_plane(plane->index + 1, prim_mode_params.pipe), "FBC disabled\n");
 
-/**
- * SUBTEST: drrs-%s-draw-%s
- * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
- * Driver requirement: i915, xe
- * Functionality: drrs, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbc-%s-draw-%s
- * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psr-%s-draw-%s
- * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
- * Driver requirement: i915, xe
- * Functionality: fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcdrrs-%s-draw-%s
- * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsr-%s-draw-%s
- * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psrdrrs-%s-draw-%s
- * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
- * Driver requirement: i915, xe
- * Functionality: drrs, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsrdrrs-%s-draw-%s
- * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @rgb101010:      FORMAT_RGB101010
- * @rgb565:         FORMAT_RGB565
- *
- * arg[2]:
- *
- * @blt:            Blitter
- * @mmap-wc:        MMAP-WC
- * @render:         Render
- */
+	igt_remove_fb(drm.fd, &fb);
+	igt_plane_set_fb(plane, NULL);
+	igt_display_commit2(&drm.display, COMMIT_ATOMIC);
+}
 
-/**
- * SUBTEST: drrs-%s-draw-%s
- * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
- * Driver requirement: i915
- * Functionality: drrs, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbc-%s-draw-%s
- * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
- * Driver requirement: i915
- * Functionality: fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psr-%s-draw-%s
- * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
- * Driver requirement: i915
- * Functionality: fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcdrrs-%s-draw-%s
- * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
- * Driver requirement: i915
- * Functionality: drrs, fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsr-%s-draw-%s
- * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
- * Driver requirement: i915
- * Functionality: fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psrdrrs-%s-draw-%s
- * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
- * Driver requirement: i915
- * Functionality: drrs, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsrdrrs-%s-draw-%s
- * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
- * Driver requirement: i915
- * Functionality: drrs, fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @rgb101010:      FORMAT_RGB101010
- * @rgb565:         FORMAT_RGB565
- *
- * arg[2]:
- *
- * @mmap-cpu:       MMAP-CPU
- * @mmap-gtt:       MMAP-GTT
- * @pwrite:         PWRITE
- */
+static bool enable_features_for_test(const struct test_mode *t)
+{
+	bool ret = false;
 
-/*
- * format_draw - test pixel formats that are not FORMAT_DEFAULT
- *
- * METHOD
- *   The real subtest to be executed depends on whether the pixel format is
- *   supported by the features being tested or not. Check the documentation of
- *   each subtest.
- *
- * EXPECTED RESULTS
- *   See the documentation for each subtest.
- *
- * FAILURES
- *   See the documentation for each subtest.
- */
-static void format_draw_subtest(const struct test_mode *t)
+	if (t->feature == FEATURE_DEFAULT)
+		return false;
+
+	if (t->feature & FEATURE_FBC)
+		intel_fbc_enable(drm.fd);
+	if (t->feature & FEATURE_PSR)
+		ret = psr_enable(drm.fd, drm.debugfs, PSR_MODE_1);
+	if (t->feature & FEATURE_DRRS)
+		intel_drrs_enable(drm.fd, prim_mode_params.pipe);
+
+	return ret;
+}
+
+static void check_test_requirements(const struct test_mode *t)
 {
-	if (format_is_valid(t->feature, t->format))
-		draw_subtest(t);
-	else
-		badformat_subtest(t);
+	int ver;
+
+	if (t->pipes == PIPE_DUAL)
+		igt_require_f(scnd_mode_params.output,
+			    "Can't test dual pipes with the current outputs\n");
+
+	if (t->feature & FEATURE_FBC)
+		igt_require_f(fbc.can_test,
+			      "Can't test FBC with this chipset\n");
+
+	if (t->feature & FEATURE_PSR) {
+		igt_require_f(psr.can_test,
+			      "Can't test PSR with the current outputs\n");
+	}
+
+	if (t->feature & FEATURE_DRRS)
+		igt_require_f(drrs.can_test,
+			      "Can't test DRRS with the current outputs\n");
+
+	/*
+	 * In kernel, When PSR is enabled, DRRS will be disabled. So If a test
+	 * case needs DRRS + PSR enabled, that will be skipped.
+	 */
+	igt_require_f(!((t->feature & FEATURE_PSR) &&
+		      (t->feature & FEATURE_DRRS)),
+		      "Can't test PSR and DRRS together\n");
+
+	if (opt.only_pipes != PIPE_COUNT)
+		igt_require(t->pipes == opt.only_pipes);
+
+	/* Kernel disables fbc for display versions 12 and 13 if psr is enabled. */
+	ver = intel_display_ver(intel_get_drm_devid(drm.fd));
+	if (ver >= 12 && ver <= 13)
+		igt_require_f(!((t->feature & FEATURE_PSR) &&
+				(t->feature & FEATURE_FBC)),
+			      "Can't test PSR and FBC together\n");
+
 }
 
-static bool tiling_is_valid(int feature_flags, enum tiling_type tiling)
+static void set_crtc_fbs(const struct test_mode *t)
 {
-	int devid = intel_get_drm_devid(drm.fd);
+	struct screen_fbs *s = &fbs[t->format];
 
-	if (!(feature_flags & FEATURE_FBC))
-		return true;
+	create_fbs(t->format, t->tiling);
 
-	switch (tiling) {
-	case TILING_LINEAR:
-		return AT_LEAST_GEN(devid, 9);
-	case TILING_X:
-	case TILING_Y:
-		return true;
-	case TILING_4:
-		return AT_LEAST_GEN(devid, 12);
+	switch (t->fbs) {
+	case FBS_INDIVIDUAL:
+		prim_mode_params.primary.fb = &s->prim_pri;
+		scnd_mode_params.primary.fb = &s->scnd_pri;
+		offscreen_fb.fb = &s->offscreen;
+
+		prim_mode_params.primary.x = 0;
+		scnd_mode_params.primary.x = 0;
+		offscreen_fb.x = 0;
+
+		prim_mode_params.primary.y = 0;
+		scnd_mode_params.primary.y = 0;
+		offscreen_fb.y = 0;
+		break;
+	case FBS_SHARED:
+		/* Please see the comment at the top of create_shared_fb(). */
+		prim_mode_params.primary.fb = &s->big;
+		scnd_mode_params.primary.fb = &s->big;
+		offscreen_fb.fb = &s->big;
+
+		prim_mode_params.primary.x = opt.shared_fb_x_offset;
+		scnd_mode_params.primary.x = opt.shared_fb_x_offset;
+		offscreen_fb.x = opt.shared_fb_x_offset;
+
+		prim_mode_params.primary.y = opt.shared_fb_y_offset;
+		scnd_mode_params.primary.y = prim_mode_params.primary.y +
+					prim_mode_params.primary.h;
+		offscreen_fb.y = scnd_mode_params.primary.y + scnd_mode_params.primary.h;
+		break;
 	default:
 		igt_assert(false);
-		return false;
 	}
-}
 
-/**
- * SUBTEST: drrs-slowdraw
- * Description: Sleep a little bit between drawing operations with DRRS
- * Driver requirement: i915, xe
- * Functionality: drrs, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psr-slowdraw
- * Description: Sleep a little bit between drawing operations with PSR
- * Driver requirement: i915, xe
- * Functionality: fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcdrrs-slowdraw
- * Description: Sleep a little bit between drawing operations with FBC & DRRS
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsr-slowdraw
- * Description: Sleep a little bit between drawing operations with FBC & PSR
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psrdrrs-slowdraw
- * Description: Sleep a little bit between drawing operations with PSR & DRRS
- * Driver requirement: i915, xe
- * Functionality: drrs, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsrdrrs-slowdraw
- * Description: Sleep a little bit between drawing operations with FBC, PSR & DRRS
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- */
+	prim_mode_params.cursor.fb = &s->prim_cur;
+	prim_mode_params.sprite.fb = &s->prim_spr;
+	scnd_mode_params.cursor.fb = &s->scnd_cur;
+	scnd_mode_params.sprite.fb = &s->scnd_spr;
+}
 
-/*
- * slow_draw - sleep a little bit between drawing operations
- *
- * METHOD
- *   This test is basically the same as the draw subtest, except that we sleep a
- *   little bit after each drawing operation. The goal is to detect problems
- *   that can happen in case a drawing operation is done while the machine is in
- *   some deep sleep states.
- *
- * EXPECTED RESULTS
- *   The pattern appears on the screen as expected.
- *
- * FAILURES
- *   I've seen this happen in a SKL machine and still haven't investigated it.
- *   My guess would be that preventing deep sleep states fixes the problem.
- */
-static void slow_draw_subtest(const struct test_mode *t)
+static void prepare_subtest_data(const struct test_mode *t,
+				 struct draw_pattern_info *pattern)
 {
-	int r;
-	struct draw_pattern_info *pattern = &pattern1;
-	struct modeset_params *params = pick_params(t);
-	struct fb_region *target;
+	bool need_modeset;
+
+	check_test_requirements(t);
+
+	stop_busy_thread();
 
-	prepare_subtest(t, pattern);
-	sleep(2);
-	target = pick_target(t, params);
+	need_modeset = disable_features(t);
+	set_crtc_fbs(t);
 
-	for (r = 0; r < pattern->n_rects; r++) {
-		sleep(2);
-		draw_rect(pattern, target, t->method, r);
-		sleep(2);
+	if (t->screen == SCREEN_OFFSCREEN)
+		fill_fb_region(&offscreen_fb, t->method, COLOR_OFFSCREEN_BG);
 
-		update_wanted_crc(t, &pattern->crcs[t->format][r]);
+	igt_display_reset(&drm.display);
+	if (need_modeset)
+		igt_display_commit(&drm.display);
 
-		if (t->feature & FEATURE_DRRS)
-			do_assertions(ASSERT_DRRS_LOW);
-		else
-			do_assertions(0);
-	}
-}
+	init_blue_crc(t->format, t->tiling);
+	if (pattern)
+		init_crcs(t->format, t->tiling, pattern);
 
-static void flip_handler(int fd, unsigned int sequence, unsigned int tv_sec,
-			 unsigned int tv_usec, void *data)
-{
-	igt_debug("Flip event received.\n");
+	need_modeset = enable_features_for_test(t);
+	if (need_modeset)
+		igt_display_commit(&drm.display);
 }
 
-static void wait_flip_event(void)
+static void prepare_subtest_screens(const struct test_mode *t)
 {
-	int rc;
-	drmEventContext evctx;
-	struct pollfd pfd;
-
-	evctx.version = 2;
-	evctx.vblank_handler = NULL;
-	evctx.page_flip_handler = flip_handler;
+	if (t->pipes == PIPE_DUAL)
+		enable_both_screens_and_wait(t);
+	else
+		enable_prim_screen_and_wait(t);
 
-	pfd.fd = drm.fd;
-	pfd.events = POLLIN;
-	pfd.revents = 0;
+	if (t->screen == SCREEN_PRIM) {
+		if (t->plane == PLANE_CUR)
+			set_region_for_test(t, &prim_mode_params.cursor);
+		if (t->plane == PLANE_SPR)
+			set_region_for_test(t, &prim_mode_params.sprite);
+	}
 
-	rc = poll(&pfd, 1, TIME);
-	switch (rc) {
-	case 0:
-		igt_assert_f(false, "Poll timeout\n");
-		break;
-	case 1:
-		rc = drmHandleEvent(drm.fd, &evctx);
-		igt_assert_eq(rc, 0);
-		break;
-	default:
-		igt_assert_f(false, "Unexpected poll rc %d\n", rc);
-		break;
+	if (t->pipes == PIPE_DUAL && t->screen == SCREEN_SCND) {
+		if (t->plane == PLANE_CUR)
+			set_region_for_test(t, &scnd_mode_params.cursor);
+		if (t->plane == PLANE_SPR)
+			set_region_for_test(t, &scnd_mode_params.sprite);
 	}
 }
 
-static void set_prim_plane_for_params(struct modeset_params *params)
+static void prepare_subtest(const struct test_mode *t,
+			    struct draw_pattern_info *pattern)
 {
-	__set_prim_plane_for_params(params);
-	igt_display_commit2(&drm.display, COMMIT_UNIVERSAL);
+	prepare_subtest_data(t, pattern);
+	prepare_subtest_screens(t);
 }
 
-static void page_flip_for_params(struct modeset_params *params,
-				 enum flip_type type)
+/*
+ * rte - the basic sanity test
+ *
+ * METHOD
+ *   Just disable all screens, assert everything is disabled, then enable all
+ *   screens - including primary, cursor and sprite planes - and assert that
+ *   the tested feature is enabled.
+ *
+ * EXPECTED RESULTS
+ *   Blue screens and t->feature enabled.
+ *
+ * FAILURES
+ *   A failure here means that every other subtest will probably fail too. It
+ *   probably means that the Kernel is just not enabling the feature we want.
+ */
+static void rte_subtest(const struct test_mode *t)
 {
-	int rc;
+	prepare_subtest_data(t, NULL);
 
-	switch (type) {
-	case FLIP_PAGEFLIP:
-		rc = drmModePageFlip(drm.fd, drm.display.pipes[params->pipe].crtc_id,
-				     params->primary.fb->fb_id,
-				     DRM_MODE_PAGE_FLIP_EVENT, NULL);
-		igt_assert_eq(rc, 0);
-		wait_flip_event();
-		break;
-	case FLIP_MODESET:
-		set_mode_for_params(params);
-		break;
-	case FLIP_PLANES:
-		set_prim_plane_for_params(params);
-		break;
-	default:
-		igt_assert(false);
+	unset_all_crtcs();
+	do_assertions(ASSERT_FBC_DISABLED | ASSERT_PSR_DISABLED |
+		      DONT_ASSERT_CRC | ASSERT_DRRS_INACTIVE);
+
+	if (t->pipes == PIPE_SINGLE)
+		enable_prim_screen_and_wait(t);
+	else
+		enable_both_screens_and_wait(t);
+
+	set_region_for_test(t, &prim_mode_params.cursor);
+	set_region_for_test(t, &prim_mode_params.sprite);
+
+	if (t->pipes == PIPE_DUAL) {
+		set_region_for_test(t, &scnd_mode_params.cursor);
+		set_region_for_test(t, &scnd_mode_params.sprite);
 	}
 }
 
-/**
- * SUBTEST: drrs-%dp-primscrn-%s-%sflip-blt
- * Description: Just exercise page flips with the patterns we have
- * Driver requirement: i915, xe
- * Functionality: drrs, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbc-%dp-primscrn-%s-%sflip-blt
- * Description: Just exercise page flips with the patterns we have
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psr-%dp-primscrn-%s-%sflip-blt
- * Description: Just exercise page flips with the patterns we have
- * Driver requirement: i915, xe
- * Functionality: fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcdrrs-%dp-primscrn-%s-%sflip-blt
- * Description: Just exercise page flips with the patterns we have
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsr-%dp-primscrn-%s-%sflip-blt
- * Description: Just exercise page flips with the patterns we have
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psrdrrs-%dp-primscrn-%s-%sflip-blt
- * Description: Just exercise page flips with the patterns we have
- * Driver requirement: i915, xe
- * Functionality: drrs, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-%sflip-blt
- * Description: Just exercise page flips with the patterns we have
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1].values:   1, 2
- *
- * arg[2]:
- *
- * @indfb:          Individual fb
- * @shrfb:          Shared fb
- *
- * arg[3]:
- *
- * @ms:             Modeset
- * @pg:             Page flip
- * @pl:             Plane change
- */
+static bool is_valid_plane(igt_plane_t *plane)
+{
+	int index = plane->index;
+
+	if (plane->type == DRM_PLANE_TYPE_CURSOR)
+		return false;
+	/*
+	 * Execute test only on first three planes
+	 */
+	return ((index >= 0) && (index < 3));
+}
 
 /**
- * SUBTEST: drrs-2p-scndscrn-%s-%sflip-blt
- * Description: Just exercise page flips with the patterns we have
- * Driver requirement: i915, xe
- * Functionality: drrs, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbc-2p-scndscrn-%s-%sflip-blt
- * Description: Just exercise page flips with the patterns we have
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psr-2p-scndscrn-%s-%sflip-blt
- * Description: Just exercise page flips with the patterns we have
- * Driver requirement: i915, xe
- * Functionality: fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcdrrs-2p-scndscrn-%s-%sflip-blt
- * Description: Just exercise page flips with the patterns we have
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsr-2p-scndscrn-%s-%sflip-blt
- * Description: Just exercise page flips with the patterns we have
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psrdrrs-2p-scndscrn-%s-%sflip-blt
- * Description: Just exercise page flips with the patterns we have
- * Driver requirement: i915, xe
- * Functionality: drrs, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-%sflip-blt
- * Description: Just exercise page flips with the patterns we have
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @indfb:          Individual fb
- * @shrfb:          Shared fb
+ * plane-fbc-rte - the basic sanity test
  *
- * arg[2]:
+ * METHOD
+ *   Just disable primary screen, assert everything is disabled, then enable single
+ *   screens and single plane one by one  and assert that the tested fbc is enabled
+ *   for the particular plane.
  *
- * @ms:             Modeset
- * @pg:             Page flip
- * @pl:             Plane change
+ * EXPECTED RESULTS
+ *   Blue screens and t->feature enabled.
+ *
+ * FAILURES
+ *   A failure here means that fbc is not getting enabled for requested plane. It means
+ *   kernel is not able to enable fbc on the requested plane.
  */
 
+static void plane_fbc_rte_subtest(const struct test_mode *t)
+{
+	int ver;
+	igt_plane_t *plane;
+
+	ver = intel_display_ver(intel_get_drm_devid(drm.fd));
+	igt_require_f((ver >= 20), "Can't test fbc for each plane\n");
+
+	prepare_subtest_data(t, NULL);
+	unset_all_crtcs();
+	do_assertions(ASSERT_FBC_DISABLED | DONT_ASSERT_CRC);
+
+	igt_output_override_mode(prim_mode_params.output, &prim_mode_params.mode);
+	igt_output_set_pipe(prim_mode_params.output, prim_mode_params.pipe);
+
+	wanted_crc = &blue_crcs[t->format].crc;
+
+	for_each_plane_on_pipe(&drm.display, prim_mode_params.pipe, plane) {
+		if (!is_valid_plane(plane))
+			continue;
+
+		set_plane_for_test_fbc(t, plane);
+	}
+
+	igt_display_reset(&drm.display);
+}
+
+static void update_wanted_crc(const struct test_mode *t, igt_crc_t *crc)
+{
+	if (t->screen == SCREEN_PRIM)
+		wanted_crc = crc;
+}
+
+static bool op_disables_psr(const struct test_mode *t,
+			    enum igt_draw_method method)
+{
+	if (method != IGT_DRAW_MMAP_GTT)
+		return false;
+	if (t->screen == SCREEN_PRIM)
+		return true;
+	/* On FBS_SHARED, even if the target is not the PSR screen
+	 * (SCREEN_PRIM), all primary planes share the same frontbuffer, so a
+	 * write to the second screen primary plane - or offscreen plane - will
+	 * touch the framebuffer that's also used by the primary screen. */
+	if (t->fbs == FBS_SHARED && t->plane == PLANE_PRI)
+		return true;
+
+	return false;
+}
+
 /*
- * flip - just exercise page flips with the patterns we have
+ * draw - draw a set of rectangles on the screen using the provided method
  *
  * METHOD
- *   We draw the pattern on a backbuffer using the provided method, then we
- *   flip, making this the frontbuffer. We can flip both using the dedicated
- *   pageflip IOCTL or the modeset IOCTL.
+ *   Just set the screens as appropriate and then start drawing a series of
+ *   rectangles on the target screen. The important guy here is the drawing
+ *   method used.
  *
  * EXPECTED RESULTS
- *   Everything works as expected, screen contents are properly updated.
+ *   The feature either stays enabled or gets reenabled after the oprations. You
+ *   will also see the rectangles on the target screen.
  *
  * FAILURES
- *   On a failure here you need to go directly to the Kernel's flip code and see
- *   how it interacts with the feature being tested.
+ *   A failure here indicates a problem somewhere between the Kernel's
+ *   frontbuffer tracking infrastructure or the feature itself. You need to pay
+ *   attention to which drawing method is being used.
  */
-static void flip_subtest(const struct test_mode *t)
+static void draw_subtest(const struct test_mode *t)
 {
 	int r;
 	int assertions = 0;
-	struct igt_fb fb2, *orig_fb;
+	struct draw_pattern_info *pattern;
 	struct modeset_params *params = pick_params(t);
-	struct draw_pattern_info *pattern = &pattern1;
-	enum color bg_color;
+	struct fb_region *target;
 
 	switch (t->screen) {
 	case SCREEN_PRIM:
-		assertions |= ASSERT_LAST_ACTION_CHANGED;
-		bg_color = COLOR_PRIM_BG;
+		if (t->method != IGT_DRAW_MMAP_GTT && t->plane == PLANE_PRI)
+			assertions |= ASSERT_LAST_ACTION_CHANGED;
+		else
+			assertions |= ASSERT_NO_ACTION_CHANGE;
 		break;
 	case SCREEN_SCND:
+	case SCREEN_OFFSCREEN:
 		assertions |= ASSERT_NO_ACTION_CHANGE;
-		bg_color = COLOR_SCND_BG;
 		break;
 	default:
 		igt_assert(false);
 	}
 
-	prepare_subtest(t, pattern);
+	switch (t->plane) {
+	case PLANE_PRI:
+		pattern = &pattern1;
+		break;
+	case PLANE_CUR:
+	case PLANE_SPR:
+		pattern = &pattern2;
+		break;
+	default:
+		igt_assert(false);
+	}
 
-	create_fb(t->format, params->primary.fb->width, params->primary.fb->height,
-		  t->tiling, t->plane, &fb2);
-	fill_fb(&fb2, bg_color);
-	orig_fb = params->primary.fb;
+	if (op_disables_psr(t, t->method))
+		assertions |= ASSERT_PSR_DISABLED;
+
+	/*
+	 * On FBS_INDIVIDUAL, write to offscreen plane will not touch the
+	 * current frambuffer. Hence assert for DRRS_LOW.
+	 */
+	if ((t->fbs == FBS_INDIVIDUAL) && (t->screen == SCREEN_OFFSCREEN))
+		assertions |= ASSERT_DRRS_LOW;
+
+	prepare_subtest(t, pattern);
+	target = pick_target(t, params);
 
 	for (r = 0; r < pattern->n_rects; r++) {
-		params->primary.fb = (r % 2 == 0) ? &fb2 : orig_fb;
+		igt_debug("Drawing rect %d\n", r);
+		draw_rect(pattern, target, t->method, r);
+		update_wanted_crc(t, &pattern->crcs[t->format][r]);
+		do_assertions(assertions);
+	}
+}
+
+/*
+ * multidraw - draw a set of rectangles on the screen using alternated drawing
+ *             methods
+ *
+ * METHOD
+ *   This is just like the draw subtest, but now we keep alternating between two
+ *   drawing methods. Each time we run multidraw_subtest we will test all the
+ *   possible pairs of drawing methods.
+ *
+ * EXPECTED RESULTS
+ *   The same as the draw subtest.
+ *
+ * FAILURES
+ *   If you get a failure here, first you need to check whether you also get
+ *   failures on the individual draw subtests. If yes, then go fix every single
+ *   draw subtest first. If all the draw subtests pass but this one fails, then
+ *   you have to study how one drawing method is stopping the other from
+ *   properly working.
+ */
+static void multidraw_subtest(const struct test_mode *t)
+{
+	int r;
+	int assertions = 0;
+	struct draw_pattern_info *pattern;
+	struct modeset_params *params = pick_params(t);
+	struct fb_region *target;
+	enum igt_draw_method m1, m2, used_method;
+	bool wc_used = false;
+
+	switch (t->plane) {
+	case PLANE_PRI:
+		pattern = &pattern1;
+		break;
+	case PLANE_CUR:
+	case PLANE_SPR:
+		pattern = &pattern2;
+		break;
+	default:
+		igt_assert(false);
+	}
+
+	prepare_subtest(t, pattern);
+	target = pick_target(t, params);
+
+	for (m1 = 0; m1 < IGT_DRAW_METHOD_COUNT; m1++) {
+		for (m2 = m1 + 1; m2 < IGT_DRAW_METHOD_COUNT; m2++) {
+
+			igt_debug("Methods %s and %s\n",
+				  igt_draw_get_method_name(m1),
+				  igt_draw_get_method_name(m2));
+
+			if (!igt_draw_supports_method(drm.fd, m1) ||
+			    !igt_draw_supports_method(drm.fd, m2))
+				continue;
+
+			for (r = 0; r < pattern->n_rects; r++) {
+				used_method = (r % 2 == 0) ? m1 : m2;
+
+				igt_debug("Used method %s\n",
+					igt_draw_get_method_name(used_method));
+
+				draw_rect(pattern, target, used_method, r);
+
+				if (used_method == IGT_DRAW_MMAP_WC ||
+				    used_method == IGT_DRAW_MMAP_GTT)
+					wc_used = true;
+
+				update_wanted_crc(t,
+						  &pattern->crcs[t->format][r]);
+
+				assertions = used_method != IGT_DRAW_MMAP_GTT ?
+					     ASSERT_LAST_ACTION_CHANGED :
+					     ASSERT_NO_ACTION_CHANGE;
+				if (op_disables_psr(t, used_method) &&
+				    !wc_used)
+					assertions |= ASSERT_PSR_DISABLED;
+
+				do_assertions(assertions);
+			}
+
+			fill_fb_region(target, m2, COLOR_PRIM_BG);
+			_fb_dirty_ioctl(target);
+
+			update_wanted_crc(t, &blue_crcs[t->format].crc);
+			do_assertions(ASSERT_NO_ACTION_CHANGE);
+		}
+	}
+}
+
+static bool format_is_valid(int feature_flags,
+			    enum pixel_format format)
+{
+	int devid = intel_get_drm_devid(drm.fd);
+
+	if (!(feature_flags & FEATURE_FBC))
+		return true;
+
+	switch (format) {
+	case FORMAT_RGB888:
+		return true;
+	case FORMAT_RGB565:
+		if (IS_GEN2(devid) || IS_G4X(devid))
+			return false;
+		return true;
+	case FORMAT_RGB101010:
+		return false;
+	default:
+		igt_assert(false);
+	}
+}
+
+/*
+ * badformat - test pixel formats that are not supported by at least one feature
+ *
+ * METHOD
+ *   We just do a modeset on a buffer with the given pixel format and check the
+ *   status of the relevant features.
+ *
+ * EXPECTED RESULTS
+ *   No assertion failures :)
+ *
+ * FAILURES
+ *   If you get a feature enabled/disabled assertion failure, then you should
+ *   probably check the Kernel code for the feature that checks the pixel
+ *   formats. If you get a CRC assertion failure, then you should use the
+ *   appropriate command line arguments that will allow you to look at the
+ *   screen, then judge what to do based on what you see.
+ */
+static void badformat_subtest(const struct test_mode *t)
+{
+	bool fbc_valid = format_is_valid(FEATURE_FBC, t->format);
+	bool psr_valid = format_is_valid(FEATURE_PSR, t->format);
+	int assertions = ASSERT_NO_ACTION_CHANGE;
 
-		if (r != 0)
-			draw_rect(pattern, &params->primary, t->method, r - 1);
-		draw_rect(pattern, &params->primary, t->method, r);
-		update_wanted_crc(t, &pattern->crcs[t->format][r]);
+	prepare_subtest_data(t, NULL);
 
-		page_flip_for_params(params, t->flip);
+	fill_fb_region(&prim_mode_params.primary, t->method, COLOR_PRIM_BG);
+	set_mode_for_params(&prim_mode_params);
 
-		do_assertions(assertions);
-	}
+	wanted_crc = &blue_crcs[t->format].crc;
 
-	igt_remove_fb(drm.fd, &fb2);
+	if (!fbc_valid)
+		assertions |= ASSERT_FBC_DISABLED;
+	if (!psr_valid)
+		assertions |= ASSERT_PSR_DISABLED;
+	do_assertions(assertions);
 }
 
-/**
- * SUBTEST: fbc-%dp-%s-fliptrack-mmap-gtt
- * Description: Check if the hardware tracking works after page flips
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcdrrs-%dp-%s-fliptrack-mmap-gtt
- * Description: Check if the hardware tracking works after page flips
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsr-%dp-%s-fliptrack-mmap-gtt
- * Description: Check if the hardware tracking works after page flips
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsrdrrs-%dp-%s-fliptrack-mmap-gtt
- * Description: Check if the hardware tracking works after page flips
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
+/*
+ * format_draw - test pixel formats that are not FORMAT_DEFAULT
  *
- * arg[1].values:   1, 2
+ * METHOD
+ *   The real subtest to be executed depends on whether the pixel format is
+ *   supported by the features being tested or not. Check the documentation of
+ *   each subtest.
  *
- * arg[2]:
+ * EXPECTED RESULTS
+ *   See the documentation for each subtest.
  *
- * @indfb:          Individual fb
- * @shrfb:          Shared fb
+ * FAILURES
+ *   See the documentation for each subtest.
  */
+static void format_draw_subtest(const struct test_mode *t)
+{
+	if (format_is_valid(t->feature, t->format))
+		draw_subtest(t);
+	else
+		badformat_subtest(t);
+}
+
+static bool tiling_is_valid(int feature_flags, enum tiling_type tiling)
+{
+	int devid = intel_get_drm_devid(drm.fd);
+
+	if (!(feature_flags & FEATURE_FBC))
+		return true;
+
+	switch (tiling) {
+	case TILING_LINEAR:
+		return AT_LEAST_GEN(devid, 9);
+	case TILING_X:
+	case TILING_Y:
+		return true;
+	case TILING_4:
+		return AT_LEAST_GEN(devid, 12);
+	default:
+		igt_assert(false);
+		return false;
+	}
+}
 
 /*
- * fliptrack - check if the hardware tracking works after page flips
+ * slow_draw - sleep a little bit between drawing operations
  *
  * METHOD
- *   Flip to a new buffer, then draw on it using MMAP_GTT and check the CRC to
- *   make sure the hardware tracking detected the write.
+ *   This test is basically the same as the draw subtest, except that we sleep a
+ *   little bit after each drawing operation. The goal is to detect problems
+ *   that can happen in case a drawing operation is done while the machine is in
+ *   some deep sleep states.
  *
  * EXPECTED RESULTS
- *   Everything works as expected, screen contents are properly updated.
+ *   The pattern appears on the screen as expected.
  *
  * FAILURES
- *   First you need to check if the draw and flip subtests pass. Only after both
- *   are passing this test can be useful. If we're failing only on this subtest,
- *   then maybe we are not properly updating the hardware tracking registers
- *   during the flip operations.
+ *   I've seen this happen in a SKL machine and still haven't investigated it.
+ *   My guess would be that preventing deep sleep states fixes the problem.
  */
-static void fliptrack_subtest(const struct test_mode *t, enum flip_type type)
+static void slow_draw_subtest(const struct test_mode *t)
 {
 	int r;
-	struct igt_fb fb2, *orig_fb;
-	struct modeset_params *params = pick_params(t);
 	struct draw_pattern_info *pattern = &pattern1;
+	struct modeset_params *params = pick_params(t);
+	struct fb_region *target;
 
 	prepare_subtest(t, pattern);
-
-	create_fb(t->format, params->primary.fb->width, params->primary.fb->height,
-		  t->tiling, t->plane, &fb2);
-	fill_fb(&fb2, COLOR_PRIM_BG);
-	orig_fb = params->primary.fb;
+	sleep(2);
+	target = pick_target(t, params);
 
 	for (r = 0; r < pattern->n_rects; r++) {
-		params->primary.fb = (r % 2 == 0) ? &fb2 : orig_fb;
-
-		if (r != 0)
-			draw_rect(pattern, &params->primary, t->method, r - 1);
-
-		page_flip_for_params(params, type);
-		do_assertions(0);
+		sleep(2);
+		draw_rect(pattern, target, t->method, r);
+		sleep(2);
 
-		draw_rect(pattern, &params->primary, t->method, r);
 		update_wanted_crc(t, &pattern->crcs[t->format][r]);
 
-		do_assertions(ASSERT_PSR_DISABLED);
+		if (t->feature & FEATURE_DRRS)
+			do_assertions(ASSERT_DRRS_LOW);
+		else
+			do_assertions(0);
+	}
+}
+
+static void flip_handler(int fd, unsigned int sequence, unsigned int tv_sec,
+			 unsigned int tv_usec, void *data)
+{
+	igt_debug("Flip event received.\n");
+}
+
+static void wait_flip_event(void)
+{
+	int rc;
+	drmEventContext evctx;
+	struct pollfd pfd;
+
+	evctx.version = 2;
+	evctx.vblank_handler = NULL;
+	evctx.page_flip_handler = flip_handler;
+
+	pfd.fd = drm.fd;
+	pfd.events = POLLIN;
+	pfd.revents = 0;
+
+	rc = poll(&pfd, 1, TIME);
+	switch (rc) {
+	case 0:
+		igt_assert_f(false, "Poll timeout\n");
+		break;
+	case 1:
+		rc = drmHandleEvent(drm.fd, &evctx);
+		igt_assert_eq(rc, 0);
+		break;
+	default:
+		igt_assert_f(false, "Unexpected poll rc %d\n", rc);
+		break;
+	}
+}
+
+static void set_prim_plane_for_params(struct modeset_params *params)
+{
+	__set_prim_plane_for_params(params);
+	igt_display_commit2(&drm.display, COMMIT_UNIVERSAL);
+}
+
+static void page_flip_for_params(struct modeset_params *params,
+				 enum flip_type type)
+{
+	int rc;
+
+	switch (type) {
+	case FLIP_PAGEFLIP:
+		rc = drmModePageFlip(drm.fd, drm.display.pipes[params->pipe].crtc_id,
+				     params->primary.fb->fb_id,
+				     DRM_MODE_PAGE_FLIP_EVENT, NULL);
+		igt_assert_eq(rc, 0);
+		wait_flip_event();
+		break;
+	case FLIP_MODESET:
+		set_mode_for_params(params);
+		break;
+	case FLIP_PLANES:
+		set_prim_plane_for_params(params);
+		break;
+	default:
+		igt_assert(false);
 	}
-
-	igt_remove_fb(drm.fd, &fb2);
 }
 
-/**
- * SUBTEST: drrs-%dp-primscrn-%s-indfb-move
- * Description: Just move the %arg[2] around
- * Driver requirement: i915, xe
- * Functionality: drrs, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbc-%dp-primscrn-%s-indfb-move
- * Description: Just move the %arg[2] around
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psr-%dp-primscrn-%s-indfb-move
- * Description: Just move the %arg[2] around
- * Driver requirement: i915, xe
- * Functionality: fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcdrrs-%dp-primscrn-%s-indfb-move
- * Description: Just move the %arg[2] around
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsr-%dp-primscrn-%s-indfb-move
- * Description: Just move the %arg[2] around
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psrdrrs-%dp-primscrn-%s-indfb-move
- * Description: Just move the %arg[2] around
- * Driver requirement: i915, xe
- * Functionality: drrs, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-indfb-move
- * Description: Just move the %arg[2] around
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1].values:   1, 2
- *
- * arg[2]:
- *
- * @spr:            Sprite plane
- * @cur:            Cursor plane
- */
-
-/**
- * SUBTEST: drrs-2p-scndscrn-%s-indfb-move
- * Description: Just move the %arg[1] around
- * Driver requirement: i915, xe
- * Functionality: drrs, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbc-2p-scndscrn-%s-indfb-move
- * Description: Just move the %arg[1] around
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psr-2p-scndscrn-%s-indfb-move
- * Description: Just move the %arg[1] around
- * Driver requirement: i915, xe
- * Functionality: fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcdrrs-2p-scndscrn-%s-indfb-move
- * Description: Just move the %arg[1] around
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsr-2p-scndscrn-%s-indfb-move
- * Description: Just move the %arg[1] around
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psrdrrs-2p-scndscrn-%s-indfb-move
- * Description: Just move the %arg[1] around
- * Driver requirement: i915, xe
- * Functionality: drrs, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-indfb-move
- * Description: Just move the %arg[1] around
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @spr:            Sprite plane
- * @cur:            Cursor plane
- */
-
 /*
- * move - just move the sprite or cursor around
+ * flip - just exercise page flips with the patterns we have
  *
  * METHOD
- *   Move the surface around, following the defined pattern.
+ *   We draw the pattern on a backbuffer using the provided method, then we
+ *   flip, making this the frontbuffer. We can flip both using the dedicated
+ *   pageflip IOCTL or the modeset IOCTL.
  *
  * EXPECTED RESULTS
- *   The move operations are properly detected by the Kernel, and the screen is
- *   properly updated every time.
+ *   Everything works as expected, screen contents are properly updated.
  *
  * FAILURES
- *   If you get a failure here, check how the Kernel is enabling or disabling
- *   your feature when it moves the planes around.
+ *   On a failure here you need to go directly to the Kernel's flip code and see
+ *   how it interacts with the feature being tested.
  */
-static void move_subtest(const struct test_mode *t)
+static void flip_subtest(const struct test_mode *t)
 {
 	int r;
-	int assertions = ASSERT_NO_ACTION_CHANGE;
+	int assertions = 0;
+	struct igt_fb fb2, *orig_fb;
 	struct modeset_params *params = pick_params(t);
-	struct draw_pattern_info *pattern = &pattern3;
-	struct fb_region *reg = pick_target(t, params);
-	bool repeat = false;
-
-	prepare_subtest(t, pattern);
+	struct draw_pattern_info *pattern = &pattern1;
+	enum color bg_color;
 
-	/* Just paint the right color since we start at 0x0. */
-	draw_rect(pattern, reg, t->method, 0);
-	update_wanted_crc(t, &pattern->crcs[t->format][0]);
+	switch (t->screen) {
+	case SCREEN_PRIM:
+		assertions |= ASSERT_LAST_ACTION_CHANGED;
+		bg_color = COLOR_PRIM_BG;
+		break;
+	case SCREEN_SCND:
+		assertions |= ASSERT_NO_ACTION_CHANGE;
+		bg_color = COLOR_SCND_BG;
+		break;
+	default:
+		igt_assert(false);
+	}
 
-	do_assertions(assertions);
+	prepare_subtest(t, pattern);
 
-	for (r = 1; r < pattern->n_rects; r++) {
-		struct rect rect = pattern->get_rect(&params->primary, r);
+	create_fb(t->format, params->primary.fb->width, params->primary.fb->height,
+		  t->tiling, t->plane, &fb2);
+	fill_fb(&fb2, bg_color);
+	orig_fb = params->primary.fb;
 
-		igt_plane_set_fb(reg->plane, reg->fb);
-		igt_plane_set_position(reg->plane, rect.x, rect.y);
-		igt_plane_set_size(reg->plane, rect.w, rect.h);
-		igt_fb_set_size(reg->fb, reg->plane, rect.w, rect.h);
-		igt_display_commit2(&drm.display, COMMIT_UNIVERSAL);
+	for (r = 0; r < pattern->n_rects; r++) {
+		params->primary.fb = (r % 2 == 0) ? &fb2 : orig_fb;
 
+		if (r != 0)
+			draw_rect(pattern, &params->primary, t->method, r - 1);
+		draw_rect(pattern, &params->primary, t->method, r);
 		update_wanted_crc(t, &pattern->crcs[t->format][r]);
 
-		do_assertions(assertions);
+		page_flip_for_params(params, t->flip);
 
-		/* "Move" the last rect to the same position just to make sure
-		 * this works too. */
-		if (r+1 == pattern->n_rects && !repeat) {
-			repeat = true;
-			r--;
-		}
+		do_assertions(assertions);
 	}
+
+	igt_remove_fb(drm.fd, &fb2);
 }
 
-/**
- * SUBTEST: drrs-%dp-primscrn-%s-indfb-onoff
- * Description: Just enable and disable the %arg[2] a few times
- * Driver requirement: i915, xe
- * Functionality: drrs, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbc-%dp-primscrn-%s-indfb-onoff
- * Description: Just enable and disable the %arg[2] a few times
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psr-%dp-primscrn-%s-indfb-onoff
- * Description: Just enable and disable the %arg[2] a few times
- * Driver requirement: i915, xe
- * Functionality: fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcdrrs-%dp-primscrn-%s-indfb-onoff
- * Description: Just enable and disable the %arg[2] a few times
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsr-%dp-primscrn-%s-indfb-onoff
- * Description: Just enable and disable the %arg[2] a few times
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psrdrrs-%dp-primscrn-%s-indfb-onoff
- * Description: Just enable and disable the %arg[2] a few times
- * Driver requirement: i915, xe
- * Functionality: drrs, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-indfb-onoff
- * Description: Just enable and disable the %arg[2] a few times
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
+/*
+ * fliptrack - check if the hardware tracking works after page flips
  *
- * arg[1].values:   1, 2
+ * METHOD
+ *   Flip to a new buffer, then draw on it using MMAP_GTT and check the CRC to
+ *   make sure the hardware tracking detected the write.
  *
- * arg[2]:
+ * EXPECTED RESULTS
+ *   Everything works as expected, screen contents are properly updated.
  *
- * @spr:            Sprite plane
- * @cur:            Cursor plane
+ * FAILURES
+ *   First you need to check if the draw and flip subtests pass. Only after both
+ *   are passing this test can be useful. If we're failing only on this subtest,
+ *   then maybe we are not properly updating the hardware tracking registers
+ *   during the flip operations.
  */
+static void fliptrack_subtest(const struct test_mode *t, enum flip_type type)
+{
+	int r;
+	struct igt_fb fb2, *orig_fb;
+	struct modeset_params *params = pick_params(t);
+	struct draw_pattern_info *pattern = &pattern1;
 
-/**
- * SUBTEST: drrs-2p-scndscrn-%s-indfb-onoff
- * Description: Just enable and disable the %arg[1] a few times
- * Driver requirement: i915, xe
- * Functionality: drrs, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbc-2p-scndscrn-%s-indfb-onoff
- * Description: Just enable and disable the %arg[1] a few times
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psr-2p-scndscrn-%s-indfb-onoff
- * Description: Just enable and disable the %arg[1] a few times
- * Driver requirement: i915, xe
- * Functionality: fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcdrrs-2p-scndscrn-%s-indfb-onoff
- * Description: Just enable and disable the %arg[1] a few times
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsr-2p-scndscrn-%s-indfb-onoff
- * Description: Just enable and disable the %arg[1] a few times
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psrdrrs-2p-scndscrn-%s-indfb-onoff
- * Description: Just enable and disable the %arg[1] a few times
- * Driver requirement: i915, xe
- * Functionality: drrs, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
+	prepare_subtest(t, pattern);
+
+	create_fb(t->format, params->primary.fb->width, params->primary.fb->height,
+		  t->tiling, t->plane, &fb2);
+	fill_fb(&fb2, COLOR_PRIM_BG);
+	orig_fb = params->primary.fb;
+
+	for (r = 0; r < pattern->n_rects; r++) {
+		params->primary.fb = (r % 2 == 0) ? &fb2 : orig_fb;
+
+		if (r != 0)
+			draw_rect(pattern, &params->primary, t->method, r - 1);
+
+		page_flip_for_params(params, type);
+		do_assertions(0);
+
+		draw_rect(pattern, &params->primary, t->method, r);
+		update_wanted_crc(t, &pattern->crcs[t->format][r]);
+
+		do_assertions(ASSERT_PSR_DISABLED);
+	}
+
+	igt_remove_fb(drm.fd, &fb2);
+}
+
+/*
+ * move - just move the sprite or cursor around
  *
- * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-indfb-onoff
- * Description: Just enable and disable the %arg[1] a few times
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
+ * METHOD
+ *   Move the surface around, following the defined pattern.
  *
- * arg[1]:
+ * EXPECTED RESULTS
+ *   The move operations are properly detected by the Kernel, and the screen is
+ *   properly updated every time.
  *
- * @spr:            Sprite plane
- * @cur:            Cursor plane
+ * FAILURES
+ *   If you get a failure here, check how the Kernel is enabling or disabling
+ *   your feature when it moves the planes around.
  */
+static void move_subtest(const struct test_mode *t)
+{
+	int r;
+	int assertions = ASSERT_NO_ACTION_CHANGE;
+	struct modeset_params *params = pick_params(t);
+	struct draw_pattern_info *pattern = &pattern3;
+	struct fb_region *reg = pick_target(t, params);
+	bool repeat = false;
+
+	prepare_subtest(t, pattern);
+
+	/* Just paint the right color since we start at 0x0. */
+	draw_rect(pattern, reg, t->method, 0);
+	update_wanted_crc(t, &pattern->crcs[t->format][0]);
+
+	do_assertions(assertions);
+
+	for (r = 1; r < pattern->n_rects; r++) {
+		struct rect rect = pattern->get_rect(&params->primary, r);
+
+		igt_plane_set_fb(reg->plane, reg->fb);
+		igt_plane_set_position(reg->plane, rect.x, rect.y);
+		igt_plane_set_size(reg->plane, rect.w, rect.h);
+		igt_fb_set_size(reg->fb, reg->plane, rect.w, rect.h);
+		igt_display_commit2(&drm.display, COMMIT_UNIVERSAL);
+
+		update_wanted_crc(t, &pattern->crcs[t->format][r]);
+
+		do_assertions(assertions);
+
+		/* "Move" the last rect to the same position just to make sure
+		 * this works too. */
+		if (r+1 == pattern->n_rects && !repeat) {
+			repeat = true;
+			r--;
+		}
+	}
+}
 
 /*
  * onoff - just enable and disable the sprite or cursor plane a few times
@@ -3884,108 +4270,6 @@ static bool prim_plane_disabled(void)
 	return !prim_mode_params.primary.plane->values[IGT_PLANE_FB_ID];
 }
 
-/**
- * SUBTEST: drrs-%dp-primscrn-spr-indfb-fullscreen
- * Description: Put a fullscreen plane covering the whole screen
- * Driver requirement: i915, xe
- * Functionality: drrs, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbc-%dp-primscrn-spr-indfb-fullscreen
- * Description: Put a fullscreen plane covering the whole screen
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psr-%dp-primscrn-spr-indfb-fullscreen
- * Description: Put a fullscreen plane covering the whole screen
- * Driver requirement: i915, xe
- * Functionality: fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcdrrs-%dp-primscrn-spr-indfb-fullscreen
- * Description: Put a fullscreen plane covering the whole screen
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsr-%dp-primscrn-spr-indfb-fullscreen
- * Description: Put a fullscreen plane covering the whole screen
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psrdrrs-%dp-primscrn-spr-indfb-fullscreen
- * Description: Put a fullscreen plane covering the whole screen
- * Driver requirement: i915, xe
- * Functionality: drrs, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsrdrrs-%dp-primscrn-spr-indfb-fullscreen
- * Description: Put a fullscreen plane covering the whole screen
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: drrs-2p-scndscrn-spr-indfb-fullscreen
- * Description: Put a fullscreen plane covering the whole screen
- * Driver requirement: i915, xe
- * Functionality: drrs, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbc-2p-scndscrn-spr-indfb-fullscreen
- * Description: Put a fullscreen plane covering the whole screen
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psr-2p-scndscrn-spr-indfb-fullscreen
- * Description: Put a fullscreen plane covering the whole screen
- * Driver requirement: i915, xe
- * Functionality: fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcdrrs-2p-scndscrn-spr-indfb-fullscreen
- * Description: Put a fullscreen plane covering the whole screen
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsr-2p-scndscrn-spr-indfb-fullscreen
- * Description: Put a fullscreen plane covering the whole screen
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psrdrrs-2p-scndscrn-spr-indfb-fullscreen
- * Description: Put a fullscreen plane covering the whole screen
- * Driver requirement: i915, xe
- * Functionality: drrs, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsrdrrs-2p-scndscrn-spr-indfb-fullscreen
- * Description: Put a fullscreen plane covering the whole screen
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1].values:   1, 2
- */
-
 /*
  * fullscreen_plane - put a fullscreen plane covering the whole screen
  *
@@ -4021,87 +4305,31 @@ static void fullscreen_plane_subtest(const struct test_mode *t)
 	igt_display_commit(&drm.display);
 	update_wanted_crc(t, &pattern->crcs[t->format][0]);
 
-	switch (t->screen) {
-	case SCREEN_PRIM:
-		assertions = ASSERT_LAST_ACTION_CHANGED;
-
-		if (prim_plane_disabled())
-			assertions |= ASSERT_FBC_DISABLED;
-		break;
-	case SCREEN_SCND:
-		assertions = ASSERT_NO_ACTION_CHANGE;
-		break;
-	default:
-		igt_assert(false);
-	}
-	do_assertions(assertions);
-
-	igt_plane_set_fb(params->sprite.plane, NULL);
-	igt_display_commit(&drm.display);
-
-	if (t->screen == SCREEN_PRIM)
-		assertions = ASSERT_LAST_ACTION_CHANGED;
-	update_wanted_crc(t, &blue_crcs[t->format].crc);
-	do_assertions(assertions);
-
-	igt_remove_fb(drm.fd, &fullscreen_fb);
-}
-
-/**
- * SUBTEST: drrs-%s-scaledprimary
- * Description: Try different primary plane scaling strategies
- * Driver requirement: i915, xe
- * Functionality: drrs, fbt, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbc-%s-scaledprimary
- * Description: Try different primary plane scaling strategies
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psr-%s-scaledprimary
- * Description: Try different primary plane scaling strategies
- * Driver requirement: i915, xe
- * Functionality: fbt, psr, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcdrrs-%s-scaledprimary
- * Description: Try different primary plane scaling strategies
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsr-%s-scaledprimary
- * Description: Try different primary plane scaling strategies
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt, psr, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psrdrrs-%s-scaledprimary
- * Description: Try different primary plane scaling strategies
- * Driver requirement: i915, xe
- * Functionality: drrs, fbt, psr, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsrdrrs-%s-scaledprimary
- * Description: Try different primary plane scaling strategies
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt, psr, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @indfb:          Individual fb
- * @shrfb:          Shared fb
- */
+	switch (t->screen) {
+	case SCREEN_PRIM:
+		assertions = ASSERT_LAST_ACTION_CHANGED;
+
+		if (prim_plane_disabled())
+			assertions |= ASSERT_FBC_DISABLED;
+		break;
+	case SCREEN_SCND:
+		assertions = ASSERT_NO_ACTION_CHANGE;
+		break;
+	default:
+		igt_assert(false);
+	}
+	do_assertions(assertions);
+
+	igt_plane_set_fb(params->sprite.plane, NULL);
+	igt_display_commit(&drm.display);
+
+	if (t->screen == SCREEN_PRIM)
+		assertions = ASSERT_LAST_ACTION_CHANGED;
+	update_wanted_crc(t, &blue_crcs[t->format].crc);
+	do_assertions(assertions);
+
+	igt_remove_fb(drm.fd, &fullscreen_fb);
+}
 
 /*
  * scaledprimary - try different primary plane scaling strategies
@@ -4209,56 +4437,6 @@ static void scaledprimary_subtest(const struct test_mode *t)
 	igt_remove_fb(drm.fd, &new_fb);
 }
 
-/**
- * SUBTEST: drrs-modesetfrombusy
- * Description: Modeset from a busy buffer to a non-busy buffer with DRRS
- * Driver requirement: i915, xe
- * Functionality: drrs, fbt, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbc-modesetfrombusy
- * Description: Modeset from a busy buffer to a non-busy buffer with FBC
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psr-modesetfrombusy
- * Description: Modeset from a busy buffer to a non-busy buffer with PSR
- * Driver requirement: i915, xe
- * Functionality: fbt, psr, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcdrrs-modesetfrombusy
- * Description: Modeset from a busy buffer to a non-busy buffer with FBC & DRRS
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsr-modesetfrombusy
- * Description: Modeset from a busy buffer to a non-busy buffer with FBC & PSR
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt, psr, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psrdrrs-modesetfrombusy
- * Description: Modeset from a busy buffer to a non-busy buffer with PSR & DRRS
- * Driver requirement: i915, xe
- * Functionality: drrs, fbt, psr, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsrdrrs-modesetfrombusy
- * Description: Modeset from a busy buffer to a non-busy buffer with FBC, PSR & DRRS
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt, psr, scaling
- * Mega feature: General Display Features
- */
-
 /**
  * modesetfrombusy - modeset from a busy buffer to a non-busy buffer
  *
@@ -4302,57 +4480,6 @@ static void modesetfrombusy_subtest(const struct test_mode *t)
 	igt_remove_fb(drm.fd, &fb2);
 }
 
-/**
- * SUBTEST: drrs-suspend
- * Description: Make sure suspend/resume keeps us on the same state of DRRS
- * Driver requirement: i915, xe
- * Functionality: drrs, fbt, suspend
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbc-suspend
- * Description: Make sure suspend/resume keeps us on the same state of FBC
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt, suspend
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psr-suspend
- * Description: Make sure suspend/resume keeps us on the same state of PSR
- * Driver requirement: i915, xe
- * Functionality: fbt, psr, suspend
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcdrrs-suspend
- * Description: Make sure suspend/resume keeps us on the same state of FBC & DRRS
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt, suspend
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsr-suspend
- * Description: Make sure suspend/resume keeps us on the same state of FBC & PSR
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt, psr, suspend
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psrdrrs-suspend
- * Description: Make sure suspend/resume keeps us on the same state of PSR & DRRS
- * Driver requirement: i915, xe
- * Functionality: drrs, fbt, psr, suspend
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsrdrrs-suspend
- * Description: Make sure suspend/resume keeps us on the same state of FBC, PSR & DRRS
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt, psr, suspend
- * Mega feature: General Display Features
- * Test category: functionality test
- */
-
 /**
  * suspend - make sure suspend/resume keeps us on the same state
  *
@@ -4385,57 +4512,6 @@ static void suspend_subtest(const struct test_mode *t)
 	do_assertions(0);
 }
 
-/**
- * SUBTEST: drrs-farfromfence-mmap-gtt
- * Description: Test drawing as far from the fence start as possible
- * Driver requirement: i915
- * Functionality: drrs, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbc-farfromfence-mmap-gtt
- * Description: Test drawing as far from the fence start as possible
- * Driver requirement: i915
- * Functionality: fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psr-farfromfence-mmap-gtt
- * Description: Test drawing as far from the fence start as possible
- * Driver requirement: i915
- * Functionality: fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcdrrs-farfromfence-mmap-gtt
- * Description: Test drawing as far from the fence start as possible
- * Driver requirement: i915
- * Functionality: drrs, fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsr-farfromfence-mmap-gtt
- * Description: Test drawing as far from the fence start as possible
- * Driver requirement: i915
- * Functionality: fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: psrdrrs-farfromfence-mmap-gtt
- * Description: Test drawing as far from the fence start as possible
- * Driver requirement: i915
- * Functionality: drrs, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsrdrrs-farfromfence-mmap-gtt
- * Description: Test drawing as far from the fence start as possible
- * Driver requirement: i915
- * Functionality: drrs, fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- */
-
 /**
  * farfromfence - test drawing as far from the fence start as possible
  *
@@ -4509,36 +4585,6 @@ static void farfromfence_subtest(const struct test_mode *t)
 	igt_remove_fb(drm.fd, &tall_fb);
 }
 
-/**
- * SUBTEST: fbc-stridechange
- * Description: Change the frontbuffer stride by doing a modeset
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcdrrs-stridechange
- * Description: Change the frontbuffer stride by doing a modeset
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsr-stridechange
- * Description: Change the frontbuffer stride by doing a modeset
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsrdrrs-stridechange
- * Description: Change the frontbuffer stride by doing a modeset
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
- */
-
 /**
  * stridechange - change the frontbuffer stride by doing a modeset
  *
@@ -4603,46 +4649,6 @@ static void stridechange_subtest(const struct test_mode *t)
 	do_assertions(rc ? 0 : DONT_ASSERT_FBC_STATUS);
 }
 
-/**
- * SUBTEST: fbc-tiling-%s
- * Description: Test %arg[1] formats, if the tiling format supports FBC do the
- *              basic drawing test, else set the mode & test if FBC is disabled
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcdrrs-tiling-%s
- * Description: Test %arg[1] formats, if the tiling format supports FBC do the
- *              basic drawing test, else set the mode & test if FBC is disabled
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsr-tiling-%s
- * Description: Test %arg[1] formats, if the tiling format supports FBC do the
- *              basic drawing test, else set the mode & test if FBC is disabled
- * Driver requirement: i915, xe
- * Functionality: fbc, fbt, psr, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fbcpsrdrrs-tiling-%s
- * Description: Test %arg[1] formats, if the tiling format supports FBC do the
- *              basic drawing test, else set the mode & test if FBC is disabled
- * Driver requirement: i915, xe
- * Functionality: drrs, fbc, fbt, psr, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @4:              4 tiling
- * @linear:         Linear tiling
- * @y:              Y tiling
- */
-
 /**
  * tiling_disable_fbc_subtest - Check if tiling is unsupported by FBC
  *
@@ -4692,15 +4698,6 @@ static void tiling_disable_fbc_subtest(const struct test_mode *t)
 	igt_remove_fb(drm.fd, &new_fb);
 }
 
-/**
- * SUBTEST: basic
- * Description: Do some basic operations regardless of which features are enabled
- * Driver requirement: i915, xe
- * Functionality: fbt
- * Mega feature: General Display Features
- * Test category: functionality test
- */
-
 /*
  * basic - do some basic operations regardless of which features are enabled
  *
diff --git a/tests/intel/kms_legacy_colorkey.c b/tests/intel/kms_legacy_colorkey.c
index 877a6799a..69539f558 100644
--- a/tests/intel/kms_legacy_colorkey.c
+++ b/tests/intel/kms_legacy_colorkey.c
@@ -21,14 +21,16 @@
  * IN THE SOFTWARE.
  */
 
-#include "igt.h"
-#include <errno.h>
-
 /**
  * TEST: kms legacy colorkey
  * Category: Display
  * Description: Test to check the legacy set colorkey ioctl on sprite planes.
- *
+ */
+
+#include "igt.h"
+#include <errno.h>
+
+/**
  * SUBTEST: basic
  * Description: Check that the legacy set colorkey ioctl only works on sprite planes.
  * Driver requirement: i915
diff --git a/tests/intel/kms_mmap_write_crc.c b/tests/intel/kms_mmap_write_crc.c
index c8ff39ef0..59a838fe4 100644
--- a/tests/intel/kms_mmap_write_crc.c
+++ b/tests/intel/kms_mmap_write_crc.c
@@ -24,6 +24,13 @@
  *    Tiago Vignatti <tiago.vignatti at intel.com>
  */
 
+/**
+ * TEST: kms mmap write crc
+ * Category: Display
+ * Description: Use the display CRC support to validate mmap write to an already
+ *              uncached future scanout buffer.
+ */
+
 #include <errno.h>
 #include <limits.h>
 #include <stdbool.h>
@@ -37,12 +44,8 @@
 #include "intel_chipset.h"
 #include "ioctl_wrappers.h"
 #include "igt_aux.h"
+
 /**
- * TEST: kms mmap write crc
- * Category: Display
- * Description: Use the display CRC support to validate mmap write to an already
- *              uncached future scanout buffer.
- *
  * SUBTEST: main
  * Description: Tests that caching mode has become UC/WT and flushed using mmap write
  * Driver requirement: i915, xe
diff --git a/tests/intel/kms_pipe_b_c_ivb.c b/tests/intel/kms_pipe_b_c_ivb.c
index 386f3003a..c1a1e6610 100644
--- a/tests/intel/kms_pipe_b_c_ivb.c
+++ b/tests/intel/kms_pipe_b_c_ivb.c
@@ -24,13 +24,16 @@
  *   Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
  */
 
-#include "igt.h"
 /**
  * TEST: kms pipe b c ivb
  * Category: Display
  * Description: Exercise the FDI lane bifurcation code for IVB in the kernel by
  *              setting different combinations of modes for pipes B and C.
- *
+ */
+
+#include "igt.h"
+
+/**
  * SUBTEST: disable-pipe-B-enable-pipe-C
  * Description: Tests pipe-B and pipe-C interactions in IVB by disabling pipe-B
  *              and then setting mode on pipe-C.
diff --git a/tests/intel/kms_pm_backlight.c b/tests/intel/kms_pm_backlight.c
index f6e7db0b2..68f4dc3d1 100644
--- a/tests/intel/kms_pm_backlight.c
+++ b/tests/intel/kms_pm_backlight.c
@@ -25,6 +25,12 @@
  *
  */
 
+/**
+ * TEST: kms pm backlight
+ * Category: Display
+ * Description: Basic backlight sysfs test
+ */
+
 #include "igt.h"
 #include <limits.h>
 #include <sys/types.h>
@@ -36,11 +42,8 @@
 #include <time.h>
 #include "igt_device.h"
 #include "igt_device_scan.h"
+
 /**
- * TEST: kms pm backlight
- * Category: Display
- * Description: Basic backlight sysfs test
- *
  * SUBTEST: bad-brightness
  * Description: Test the bad brightness.
  * Driver requirement: i915, xe
diff --git a/tests/intel/kms_pm_dc.c b/tests/intel/kms_pm_dc.c
index a3c7c4018..1c33206fc 100644
--- a/tests/intel/kms_pm_dc.c
+++ b/tests/intel/kms_pm_dc.c
@@ -22,6 +22,12 @@
  *
  */
 
+/**
+ * TEST: kms pm dc
+ * Category: Display
+ * Description: Tests to validate display power DC states.
+ */
+
 #include <errno.h>
 #include <fcntl.h>
 #include <stdbool.h>
@@ -39,10 +45,6 @@
 #include "xe/xe_query.h"
 
 /**
- * TEST: kms pm dc
- * Category: Display
- * Description: Tests to validate display power DC states.
- *
  * SUBTEST: dc3co-vpb-simulation
  * Description: Make sure that system enters DC3CO when PSR2 is active and system
  *              is in SLEEP state
diff --git a/tests/intel/kms_pm_lpsp.c b/tests/intel/kms_pm_lpsp.c
index a85e4e795..4ac99faf7 100644
--- a/tests/intel/kms_pm_lpsp.c
+++ b/tests/intel/kms_pm_lpsp.c
@@ -24,6 +24,12 @@
  *
  */
 
+/**
+ * TEST: kms pm lpsp
+ * Description: These tests validates display Low Power Single Pipe configurations
+ * Category: Display
+ */
+
 #include "igt.h"
 #include "igt_kmod.h"
 #include "igt_pm.h"
@@ -32,11 +38,8 @@
 #include <sys/stat.h>
 #include <fcntl.h>
 #include <unistd.h>
+
 /**
- * TEST: kms pm lpsp
- * Description: These tests validates display Low Power Single Pipe configurations
- * Category: Display
- *
  * SUBTEST: kms-lpsp
  * Description: This test validates lpsp on all connected outputs on low power pipes
  * Driver requirement: i915, xe
diff --git a/tests/intel/kms_psr.c b/tests/intel/kms_psr.c
index afd74eaff..1586d3bf0 100644
--- a/tests/intel/kms_psr.c
+++ b/tests/intel/kms_psr.c
@@ -237,18 +237,14 @@
  * Functionality: dpms, pr
  * Mega feature: Panel Replay
  * Test category: functionality test
- */
-
-/**
+ *
  * SUBTEST: pr_no_drrs
  * Description: Check if pr is detecting changes when drrs is disabled
  * Driver requirement: i915, xe
  * Functionality: drrs, pr
  * Mega feature: Panel Replay
  * Test category: functionality test
- */
-
-/**
+ *
  * SUBTEST: pr_suspend
  * Description: Check if pr is detecting changes when plane operation is
  *              performed with suspend resume cycles
@@ -256,9 +252,7 @@
  * Functionality: pr, suspend
  * Mega feature: Panel Replay
  * Test category: functionality test
- */
-
-/**
+ *
  * SUBTEST: pr_basic
  * Description: Basic check for pr if it is detecting changes made in planes
  * Driver requirement: i915, xe
@@ -296,9 +290,7 @@
  * Functionality: plane, pr
  * Mega feature: Panel Replay
  * Test category: functionality test
- */
-
-/**
+ *
  * SUBTEST: pr_primary_%s
  * Description: Check if pr is detecting memory mapping, rendering and plane
  *              operations performed on primary planes
@@ -335,6 +327,32 @@
  * @plane_move:         Move plane position
  */
 
+/**
+ * SUBTEST: psr_cursor_plane_move
+ * Description: Check if psr is detecting the plane operations performed on
+ *		cursor planes
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ * Functionality: psr
+ * Mega feature: PSR
+ *
+ * SUBTEST: psr_primary_page_flip
+ * Description: Check if psr is detecting page-flipping operations performed
+ *		on primary planes
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ * Functionality: psr
+ * Mega feature: PSR
+ *
+ * SUBTEST: psr_sprite_plane_onoff
+ * Description: Check if psr is detecting the plane operations performed on
+ *		sprite planes
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ * Functionality: psr
+ * Mega feature: PSR
+ */
+
 enum operations {
 	PAGE_FLIP,
 	MMAP_GTT,
@@ -576,32 +594,6 @@ static void fb_dirty_fb_ioctl(data_t *data, struct igt_fb *fb)
 	igt_assert(ret == 0 || ret == -ENOSYS);
 }
 
-/**
- * SUBTEST: psr_cursor_plane_move
- * Description: Check if psr is detecting the plane operations performed on
- *		cursor planes
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: psr
- * Mega feature: PSR
- *
- * SUBTEST: psr_primary_page_flip
- * Description: Check if psr is detecting page-flipping operations performed
- *		on primary planes
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: psr
- * Mega feature: PSR
- *
- * SUBTEST: psr_sprite_plane_onoff
- * Description: Check if psr is detecting the plane operations performed on
- *		sprite planes
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: psr
- * Mega feature: PSR
- */
-
 static void run_test(data_t *data)
 {
 	uint32_t handle = data->fb_white.gem_handle;
diff --git a/tests/intel/kms_psr2_sf.c b/tests/intel/kms_psr2_sf.c
index a597c8701..a93d496e8 100644
--- a/tests/intel/kms_psr2_sf.c
+++ b/tests/intel/kms_psr2_sf.c
@@ -22,6 +22,13 @@
  *
  */
 
+/**
+ * TEST: kms psr2 sf
+ * Category: Display
+ * Description: Tests to varify PSR2 selective fetch by sending multiple damaged
+ *              areas
+ */
+
 #include "igt.h"
 #include "igt_sysfs.h"
 #include "igt_psr.h"
@@ -30,12 +37,8 @@
 #include <stdbool.h>
 #include <stdio.h>
 #include <string.h>
+
 /**
- * TEST: kms psr2 sf
- * Category: Display
- * Description: Tests to varify PSR2 selective fetch by sending multiple damaged
- *              areas
- *
  * SUBTEST: %s-plane-move-continuous-%s
  * Description: Test that selective fetch works on moving %arg[1] plane %arg[2]
  *              visible area (no update)
diff --git a/tests/intel/kms_psr2_su.c b/tests/intel/kms_psr2_su.c
index 1969c6fa7..56f35622e 100644
--- a/tests/intel/kms_psr2_su.c
+++ b/tests/intel/kms_psr2_su.c
@@ -22,6 +22,12 @@
  *
  */
 
+/**
+ * TEST: kms psr2 su
+ * Category: Display
+ * Description: Test PSR2 selective update
+ */
+
 #include "igt.h"
 #include "igt_sysfs.h"
 #include "igt_psr.h"
@@ -30,11 +36,8 @@
 #include <stdio.h>
 #include <string.h>
 #include <sys/timerfd.h>
+
 /**
- * TEST: kms psr2 su
- * Category: Display
- * Description: Test PSR2 selective update
- *
  * SUBTEST: frontbuffer-XRGB8888
  * Description: Test that selective update works when screen changes
  * Driver requirement: i915, xe
diff --git a/tests/intel/kms_psr_stress_test.c b/tests/intel/kms_psr_stress_test.c
index 6a3d2918c..21814f35b 100644
--- a/tests/intel/kms_psr_stress_test.c
+++ b/tests/intel/kms_psr_stress_test.c
@@ -1,3 +1,9 @@
+
+/**
+ * TEST: kms psr stress test
+ * Category: Display
+ */
+
 #include "igt.h"
 #include "igt_sysfs.h"
 #include "igt_psr.h"
@@ -7,10 +13,8 @@
 #include <stdio.h>
 #include <string.h>
 #include <sys/timerfd.h>
+
 /**
- * TEST: kms psr stress test
- * Category: Display
- *
  * SUBTEST: flip-primary-invalidate-overlay
  * Description: Mix page flips in primary plane and frontbuffer writes to overlay
  *              plane and check for warnings, underruns or PSR state changes
diff --git a/tests/intel/kms_pwrite_crc.c b/tests/intel/kms_pwrite_crc.c
index ee6b4f3e4..12add5da6 100644
--- a/tests/intel/kms_pwrite_crc.c
+++ b/tests/intel/kms_pwrite_crc.c
@@ -22,6 +22,12 @@
  *
  */
 
+/**
+ * TEST: kms pwrite crc
+ * Category: Display
+ * Description: Test to validate pwrite buffer using the display CRC
+ */
+
 #include "igt.h"
 #include <errno.h>
 #include <limits.h>
@@ -30,10 +36,6 @@
 #include <string.h>
 
 /**
- * TEST: kms pwrite crc
- * Category: Display
- * Description: Test to validate pwrite buffer using the display CRC
- *
  * SUBTEST:
  * Description: Use the display CRC support to validate pwrite to an already
  *              uncached future scanout buffer.
diff --git a/tests/kms_3d.c b/tests/kms_3d.c
index fa73d0cc6..ad6c45e9b 100644
--- a/tests/kms_3d.c
+++ b/tests/kms_3d.c
@@ -22,13 +22,16 @@
  *
  */
 
-#include "igt.h"
-#include "xe/xe_query.h"
 /**
  * TEST: kms 3d
  * Category: Display
  * Description: Tests 3D mode setting.
- *
+ */
+
+#include "igt.h"
+#include "xe/xe_query.h"
+
+/**
  * SUBTEST:
  * Description: Tests 3D mode setting.
  * Driver requirement: i915, xe
diff --git a/tests/kms_addfb_basic.c b/tests/kms_addfb_basic.c
index fc16b8814..9f8bf4275 100644
--- a/tests/kms_addfb_basic.c
+++ b/tests/kms_addfb_basic.c
@@ -50,22 +50,6 @@
 #include "xe/xe_ioctl.h"
 #include "xe/xe_query.h"
 
-static uint32_t gem_bo;
-static uint32_t gem_bo_small;
-static igt_display_t display;
-
-static int legacy_addfb(int fd, struct drm_mode_fb_cmd *arg)
-{
-	int err;
-
-	err = 0;
-	if (igt_ioctl(fd, DRM_IOCTL_MODE_ADDFB, arg))
-		err = -errno;
-
-	errno = 0;
-	return err;
-}
-
 /**
  * SUBTEST: unused-%s
  * Description: Test that addfb2 call fails correctly for unused %arg[1]
@@ -109,6 +93,216 @@ static int legacy_addfb(int fd, struct drm_mode_fb_cmd *arg)
  * @pitches:      Pitches
  * @offsets:      Offsets
  */
+
+/**
+ * SUBTEST: no-handle
+ * Description: Test that addfb2 call fails correctly without handle
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ * Functionality: kms_gem_interop
+ * Mega feature: General Display Features
+ *
+ * SUBTEST: basic
+ * Description: Check if addfb2 call works with given handle
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ * Functionality: kms_gem_interop
+ * Mega feature: General Display Features
+ *
+ * SUBTEST: bad-pitch-%i
+ * Description: bad-pitch-%arg[1]: Test that addfb2 call fails correctly for bad-pitches
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ * Functionality: kms_gem_interop
+ * Mega feature: General Display Features
+ *
+ * arg[1].values: 0, 32, 63, 128, 256, 999, 1024, 65536
+ */
+
+/**
+ * SUBTEST: basic-%s-tiled-legacy
+ * Description: Check if addfb2 and rmfb call works for basic %arg[1] test
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ * Functionality: kms_gem_interop, tiling
+ * Mega feature: General Display Features
+ *
+ * SUBTEST: framebuffer-vs-set-tiling
+ * Description: Check if addfb2 call works for x and y tiling
+ * Driver requirement: i915
+ * Test category: functionality test
+ * Functionality: kms_gem_interop, tiling
+ * Mega feature: General Display Features
+ *
+ * SUBTEST: tile-pitch-mismatch
+ * Description: Test that addfb2 call fails correctly for pitches mismatch
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ * Functionality: kms_gem_interop, tiling
+ * Mega feature: General Display Features
+ *
+ * arg[1]:
+ *
+ * @x:        x-tiling
+ * @y:        y-tiling
+ */
+
+/**
+ * SUBTEST: size-max
+ * Description: Check if addfb2 call works with max size of buffer object
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ * Functionality: kms_gem_interop
+ * Mega feature: General Display Features
+ *
+ * SUBTEST: too-wide
+ * Description: Test that addfb2 call fails correctly with increased width of fb
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ * Functionality: kms_gem_interop
+ * Mega feature: General Display Features
+ *
+ * SUBTEST: too-high
+ * Description: Test that addfb2 call fails correctly with increased height of fb
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ * Functionality: kms_gem_interop
+ * Mega feature: General Display Features
+ *
+ * SUBTEST: bo-too-small
+ * Description: Test that addfb2 call fails correctly with small size of buffer object
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ * Functionality: kms_gem_interop
+ * Mega feature: General Display Features
+ *
+ * SUBTEST: small-bo
+ * Description: Check if addfb2 call works for given height
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ * Functionality: kms_gem_interop
+ * Mega feature: General Display Features
+ *
+ * SUBTEST: bo-too-small-due-to-tiling
+ * Description: Test that addfb2 call fails correctly with small buffer object
+ *              after changing tile
+ * Driver requirement: i915
+ * Test category: functionality test
+ * Functionality: kms_gem_interop, tiling
+ * Mega feature: General Display Features
+ */
+
+/**
+ * SUBTEST: addfb25-modifier-no-flag
+ * Description: Test that addfb2 call fails correctly for x-tiling with given modifier
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ * Functionality: kms_gem_interop, tiling
+ * Mega feature: General Display Features
+ *
+ * SUBTEST: addfb25-bad-modifier
+ * Description: Test that addfb2 call fails correctly for irrelevant modifier
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ * Functionality: kms_gem_interop, tiling
+ * Mega feature: General Display Features
+ *
+ * SUBTEST: addfb25-x-tiled-mismatch-legacy
+ * Description: Test that addfb2 call fails correctly for irrelevant x-tiling
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ * Functionality: kms_gem_interop, tiling
+ * Mega feature: General Display Features
+ *
+ * SUBTEST: addfb25-x-tiled-legacy
+ * Description: Check if addfb2 call works for x-tiling
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ * Functionality: kms_gem_interop, tiling
+ * Mega feature: General Display Features
+ *
+ * SUBTEST: addfb25-framebuffer-vs-set-tiling
+ * Description: Check if addfb2 call works for relevant combination of tiling and fbs
+ * Driver requirement: i915
+ * Test category: functionality test
+ * Functionality: kms_gem_interop, tiling
+ * Mega feature: General Display Features
+ */
+
+/**
+ * SUBTEST: addfb25-y-tiled-%s
+ * Description: Check if addfb2 call works for y-tiling %arg[1]
+ * Driver requirement: i915, xe
+ * Functionality: kms_gem_interop, tiling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: addfb25-yf-tiled-legacy
+ * Description: Check if addfb2 call works for yf-tiling
+ * Driver requirement: i915, xe
+ * Functionality: kms_gem_interop, tiling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @legacy:               with default size
+ * @small-legacy:         with given size & modifier
+ */
+
+/**
+ * SUBTEST: addfb25-4-tiled
+ * Description: Check if addfb2 call works for tiling-4
+ * Driver requirement: i915, xe
+ * Functionality: kms_gem_interop, tiling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ */
+
+/**
+ * SUBTEST: invalid-%s-%s
+ * Description: Test that %arg[1] ioctl call fails correctly for %arg[2] object
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ * Functionality: kms_gem_interop
+ * Mega feature: General Display Features
+ *
+ * arg[1]:
+ *
+ * @get:           get-properties
+ * @set:           set-properties
+ *
+ * arg[2]:
+ *
+ * @prop:          fb mode
+ * @prop-any:      invalid
+ */
+
+/**
+ * SUBTEST: master-rmfb
+ * Description: Check that only master can rmfb
+ * Driver requirement: i915, xe
+ * Functionality: kms_gem_interop
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ */
+
+static uint32_t gem_bo;
+static uint32_t gem_bo_small;
+static igt_display_t display;
+
+static int legacy_addfb(int fd, struct drm_mode_fb_cmd *arg)
+{
+	int err;
+
+	err = 0;
+	if (igt_ioctl(fd, DRM_IOCTL_MODE_ADDFB, arg))
+		err = -errno;
+
+	errno = 0;
+	return err;
+}
+
 static void invalid_tests(int fd)
 {
 	struct drm_mode_fb_cmd2 f = {};
@@ -322,30 +516,6 @@ static void invalid_tests(int fd)
 	}
 }
 
-/**
- * SUBTEST: no-handle
- * Description: Test that addfb2 call fails correctly without handle
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: kms_gem_interop
- * Mega feature: General Display Features
- *
- * SUBTEST: basic
- * Description: Check if addfb2 call works with given handle
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: kms_gem_interop
- * Mega feature: General Display Features
- *
- * SUBTEST: bad-pitch-%i
- * Description: bad-pitch-%arg[1]: Test that addfb2 call fails correctly for bad-pitches
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: kms_gem_interop
- * Mega feature: General Display Features
- *
- * arg[1].values: 0, 32, 63, 128, 256, 999, 1024, 65536
- */
 static void pitch_tests(int fd)
 {
 	struct drm_mode_fb_cmd2 f = {};
@@ -393,33 +563,6 @@ static void pitch_tests(int fd)
 		gem_close(fd, gem_bo);
 }
 
-/**
- * SUBTEST: basic-%s-tiled-legacy
- * Description: Check if addfb2 and rmfb call works for basic %arg[1] test
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: kms_gem_interop, tiling
- * Mega feature: General Display Features
- *
- * SUBTEST: framebuffer-vs-set-tiling
- * Description: Check if addfb2 call works for x and y tiling
- * Driver requirement: i915
- * Test category: functionality test
- * Functionality: kms_gem_interop, tiling
- * Mega feature: General Display Features
- *
- * SUBTEST: tile-pitch-mismatch
- * Description: Test that addfb2 call fails correctly for pitches mismatch
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: kms_gem_interop, tiling
- * Mega feature: General Display Features
- *
- * arg[1]:
- *
- * @x:        x-tiling
- * @y:        y-tiling
- */
 static void tiling_tests(int fd)
 {
 	struct drm_mode_fb_cmd2 f = {};
@@ -506,50 +649,6 @@ static void tiling_tests(int fd)
 	}
 }
 
-/**
- * SUBTEST: size-max
- * Description: Check if addfb2 call works with max size of buffer object
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: kms_gem_interop
- * Mega feature: General Display Features
- *
- * SUBTEST: too-wide
- * Description: Test that addfb2 call fails correctly with increased width of fb
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: kms_gem_interop
- * Mega feature: General Display Features
- *
- * SUBTEST: too-high
- * Description: Test that addfb2 call fails correctly with increased height of fb
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: kms_gem_interop
- * Mega feature: General Display Features
- *
- * SUBTEST: bo-too-small
- * Description: Test that addfb2 call fails correctly with small size of buffer object
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: kms_gem_interop
- * Mega feature: General Display Features
- *
- * SUBTEST: small-bo
- * Description: Check if addfb2 call works for given height
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: kms_gem_interop
- * Mega feature: General Display Features
- *
- * SUBTEST: bo-too-small-due-to-tiling
- * Description: Test that addfb2 call fails correctly with small buffer object
- *              after changing tile
- * Driver requirement: i915
- * Test category: functionality test
- * Functionality: kms_gem_interop, tiling
- * Mega feature: General Display Features
- */
 static void size_tests(int fd)
 {
 	struct drm_mode_fb_cmd2 f = {};
@@ -665,42 +764,6 @@ static void size_tests(int fd)
 	}
 }
 
-/**
- * SUBTEST: addfb25-modifier-no-flag
- * Description: Test that addfb2 call fails correctly for x-tiling with given modifier
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: kms_gem_interop, tiling
- * Mega feature: General Display Features
- *
- * SUBTEST: addfb25-bad-modifier
- * Description: Test that addfb2 call fails correctly for irrelevant modifier
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: kms_gem_interop, tiling
- * Mega feature: General Display Features
- *
- * SUBTEST: addfb25-x-tiled-mismatch-legacy
- * Description: Test that addfb2 call fails correctly for irrelevant x-tiling
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: kms_gem_interop, tiling
- * Mega feature: General Display Features
- *
- * SUBTEST: addfb25-x-tiled-legacy
- * Description: Check if addfb2 call works for x-tiling
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: kms_gem_interop, tiling
- * Mega feature: General Display Features
- *
- * SUBTEST: addfb25-framebuffer-vs-set-tiling
- * Description: Check if addfb2 call works for relevant combination of tiling and fbs
- * Driver requirement: i915
- * Test category: functionality test
- * Functionality: kms_gem_interop, tiling
- * Mega feature: General Display Features
- */
 static void addfb25_tests(int fd)
 {
 	struct drm_mode_fb_cmd2 f = {};
@@ -786,26 +849,6 @@ static int addfb_expected_ret(igt_display_t *disp, struct drm_mode_fb_cmd2 *f)
 					  f->modifier[0]) ? 0 : -1;
 }
 
-/**
- * SUBTEST: addfb25-y-tiled-%s
- * Description: Check if addfb2 call works for y-tiling %arg[1]
- * Driver requirement: i915, xe
- * Functionality: kms_gem_interop, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: addfb25-yf-tiled-legacy
- * Description: Check if addfb2 call works for yf-tiling
- * Driver requirement: i915, xe
- * Functionality: kms_gem_interop, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @legacy:               with default size
- * @small-legacy:         with given size & modifier
- */
 static void addfb25_ytile(int fd)
 {
 	struct drm_mode_fb_cmd2 f = {};
@@ -872,14 +915,6 @@ static void addfb25_ytile(int fd)
 	}
 }
 
-/**
- * SUBTEST: addfb25-4-tiled
- * Description: Check if addfb2 call works for tiling-4
- * Driver requirement: i915, xe
- * Functionality: kms_gem_interop, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
- */
 static void addfb25_4tile(int fd)
 {
 	struct drm_mode_fb_cmd2 f = {};
@@ -918,24 +953,6 @@ static void addfb25_4tile(int fd)
 		gem_close(fd, gem_bo);
 }
 
-/**
- * SUBTEST: invalid-%s-%s
- * Description: Test that %arg[1] ioctl call fails correctly for %arg[2] object
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: kms_gem_interop
- * Mega feature: General Display Features
- *
- * arg[1]:
- *
- * @get:           get-properties
- * @set:           set-properties
- *
- * arg[2]:
- *
- * @prop:          fb mode
- * @prop-any:      invalid
- */
 static void prop_tests(int fd)
 {
 	struct drm_mode_fb_cmd2 f = {};
@@ -1001,14 +1018,6 @@ static void prop_tests(int fd)
 	}
 }
 
-/**
- * SUBTEST: master-rmfb
- * Description: Check that only master can rmfb
- * Driver requirement: i915, xe
- * Functionality: kms_gem_interop
- * Mega feature: General Display Features
- * Test category: functionality test
- */
 static void master_tests(int fd)
 {
 	struct drm_mode_fb_cmd2 f = {};
diff --git a/tests/kms_async_flips.c b/tests/kms_async_flips.c
index f29c46645..82a8f5ef3 100644
--- a/tests/kms_async_flips.c
+++ b/tests/kms_async_flips.c
@@ -30,6 +30,7 @@
  * Category: Display
  * Description: Test asynchronous page flips.
  */
+
 #include "igt.h"
 #include "igt_aux.h"
 #include "igt_psr.h"
@@ -37,6 +38,54 @@
 #include <sys/time.h>
 #include <poll.h>
 
+/**
+ * SUBTEST: alternate-sync-async-flip
+ * Description: Verify the async flip functionality and the fps during async flips
+ *              Alternate between sync and async flips
+ * Driver requirement: i915, xe
+ * Functionality: async_flips, vblank
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: async-flip-with-page-flip-events
+ * Description: Verify the async flip functionality and the fps during async flips
+ *              Wait for page flip events in between successive asynchronous flips
+ * Driver requirement: i915, xe
+ * Functionality: async_flips, vblank
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: test-time-stamp
+ * Description: Verify the async flip functionality and the fps during async flips
+ *              Verify that the async flip timestamp does not coincide with either
+ *              previous or next vblank
+ * Driver requirement: i915, xe
+ * Functionality: async_flips, vblank
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: test-cursor
+ * Description: Verify that the DRM_IOCTL_MODE_CURSOR passes after async flip
+ * Driver requirement: i915, xe
+ * Functionality: async_flips, cursor, vblank
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: crc
+ * Description: Use CRC to verify async flip scans out the correct framebuffer
+ * Driver requirement: i915, xe
+ * Functionality: async_flips, crc, vblank
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: invalid-async-flip
+ * Description: Negative case to verify if changes in fb are rejected from kernel as expected
+ * Driver requirement: i915, xe
+ * Functionality: async_flips, vblank
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ */
+
 #define CURSOR_POS 128
 
 /*
@@ -203,23 +252,6 @@ static void test_init_fbs(data_t *data)
 	igt_display_commit2(&data->display, data->display.is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
 }
 
-/**
- * SUBTEST: alternate-sync-async-flip
- * Description: Verify the async flip functionality and the fps during async flips
- *              Alternate between sync and async flips
- * Driver requirement: i915, xe
- * Functionality: async_flips, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: async-flip-with-page-flip-events
- * Description: Verify the async flip functionality and the fps during async flips
- *              Wait for page flip events in between successive asynchronous flips
- * Driver requirement: i915, xe
- * Functionality: async_flips, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
- */
 static void test_async_flip(data_t *data)
 {
 	int ret, frame;
@@ -315,16 +347,6 @@ static void wait_for_vblank(data_t *data, unsigned long *vbl_time, unsigned int
 	*seq = wait_vbl.reply.sequence;
 }
 
-/**
- * SUBTEST: test-time-stamp
- * Description: Verify the async flip functionality and the fps during async flips
- *              Verify that the async flip timestamp does not coincide with either
- *              previous or next vblank
- * Driver requirement: i915, xe
- * Functionality: async_flips, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
- */
 static void test_timestamp(data_t *data)
 {
 	int flags = DRM_MODE_PAGE_FLIP_ASYNC | DRM_MODE_PAGE_FLIP_EVENT;
@@ -369,14 +391,6 @@ static void test_timestamp(data_t *data)
 		     "Async flip time stamp is expected to be in between 2 vblank time stamps\n");
 }
 
-/**
- * SUBTEST: test-cursor
- * Description: Verify that the DRM_IOCTL_MODE_CURSOR passes after async flip
- * Driver requirement: i915, xe
- * Functionality: async_flips, cursor, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
- */
 static void test_cursor(data_t *data)
 {
 	int flags = DRM_MODE_PAGE_FLIP_ASYNC | DRM_MODE_PAGE_FLIP_EVENT;
@@ -529,14 +543,6 @@ static unsigned int clock_ms(void)
 	return ts.tv_sec * 1000 + ts.tv_nsec / 1000000;
 }
 
-/**
- * SUBTEST: crc
- * Description: Use CRC to verify async flip scans out the correct framebuffer
- * Driver requirement: i915, xe
- * Functionality: async_flips, crc, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
- */
 static void test_crc(data_t *data)
 {
 	unsigned int frame = 0;
@@ -599,14 +605,6 @@ static void test_crc(data_t *data)
 	igt_assert_lt(data->frame_count * 2, data->flip_count);
 }
 
-/**
- * SUBTEST: invalid-async-flip
- * Description: Negative case to verify if changes in fb are rejected from kernel as expected
- * Driver requirement: i915, xe
- * Functionality: async_flips, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
- */
 static void run_test(data_t *data, void (*test)(data_t *))
 {
 	igt_display_t *display = &data->display;
diff --git a/tests/kms_atomic.c b/tests/kms_atomic.c
index a47539e48..28af27f22 100644
--- a/tests/kms_atomic.c
+++ b/tests/kms_atomic.c
@@ -48,6 +48,94 @@
 #include "igt_aux.h"
 #include "sw_sync.h"
 
+/**
+ * SUBTEST: plane-primary-overlay-mutable-zpos
+ * Description: Verify that the overlay plane can cover the primary one (and
+ *              vice versa) by changing their zpos property.
+ * Driver requirement: i915, xe
+ * Functionality: kms_core, plane
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: plane-immutable-zpos
+ * Description: Verify the reported zpos property of planes by making sure only
+ *              higher zpos planes cover the lower zpos ones.
+ * Driver requirement: i915, xe
+ * Functionality: kms_core, plane
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: plane-%s-legacy
+ * Description: Test for KMS atomic modesetting on %arg[1] and ensure coherency
+ *              between legacy and atomic interfaces.
+ * Driver requirement: i915, xe
+ * Functionality: kms_core, plane
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @cursor:         Cursor plane
+ * @overlay:        Overlay plane
+ * @primary:        Primary plane
+ */
+
+/**
+ * SUBTEST: test-only
+ * Description: Test to ensure that DRM_MODE_ATOMIC_TEST_ONLY really only touches
+ *              the free-standing state objects and nothing else.
+ * Driver requirement: i915, xe
+ * Functionality: kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ */
+
+/**
+ * SUBTEST: plane-invalid-%s
+ * Description: Test error handling when invalid %arg[1] are passed
+ * Driver requirement: i915, xe
+ * Functionality: kms_core, plane
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @params:           plane parameters
+ * @params-fence:     plane fence parameters
+ */
+
+/**
+ * SUBTEST: crtc-invalid-%s
+ * Description: Test error handling when invalid %arg[1] are passed
+ * Driver requirement: i915, xe
+ * Functionality: kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @params:           crtc parameters
+ * @params-fence:     crtc fence parameters
+ */
+
+/**
+ * SUBTEST: atomic-invalid-params
+ * Description: Test abuse the atomic ioctl directly in order to test various
+ *              invalid conditions which the libdrm wrapper won't allow us to
+ *              create.
+ * Driver requirement: i915, xe
+ * Functionality: kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: atomic-plane-damage
+ * Description: Simple test cases to use FB_DAMAGE_CLIPS plane property
+ * Driver requirement: i915, xe
+ * Functionality: kms_core, plane
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ */
+
 #ifndef DRM_CAP_CURSOR_WIDTH
 #define DRM_CAP_CURSOR_WIDTH 0x8
 #endif
@@ -302,15 +390,6 @@ static uint32_t plane_get_igt_format(igt_plane_t *plane)
 	return 0;
 }
 
-/**
- * SUBTEST: plane-primary-overlay-mutable-zpos
- * Description: Verify that the overlay plane can cover the primary one (and
- *              vice versa) by changing their zpos property.
- * Driver requirement: i915, xe
- * Functionality: kms_core, plane
- * Mega feature: General Display Features
- * Test category: functionality test
- */
 static void
 plane_primary_overlay_mutable_zpos(data_t *data, igt_output_t *output, igt_plane_t *overlay,
 				   uint32_t format_primary, uint32_t format_overlay)
@@ -392,15 +471,6 @@ plane_primary_overlay_mutable_zpos(data_t *data, igt_output_t *output, igt_plane
 	igt_assert_eq_u64(igt_plane_get_prop(overlay, IGT_PLANE_ZPOS), 1);
 }
 
-/**
- * SUBTEST: plane-immutable-zpos
- * Description: Verify the reported zpos property of planes by making sure only
- *              higher zpos planes cover the lower zpos ones.
- * Driver requirement: i915, xe
- * Functionality: kms_core, plane
- * Mega feature: General Display Features
- * Test category: functionality test
- */
 static void
 plane_immutable_zpos(data_t *data, igt_output_t *output, enum pipe pipe, int n_planes)
 {
@@ -530,21 +600,6 @@ plane_immutable_zpos(data_t *data, igt_output_t *output, enum pipe pipe, int n_p
 	igt_remove_fb(data->drm_fd, &fb_upper);
 }
 
-/**
- * SUBTEST: plane-%s-legacy
- * Description: Test for KMS atomic modesetting on %arg[1] and ensure coherency
- *              between legacy and atomic interfaces.
- * Driver requirement: i915, xe
- * Functionality: kms_core, plane
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @cursor:         Cursor plane
- * @overlay:        Overlay plane
- * @primary:        Primary plane
- */
 static void plane_overlay(data_t *data, igt_output_t *output, igt_plane_t *plane,
 			  uint32_t format)
 {
@@ -631,16 +686,6 @@ static void plane_primary(data_t *data)
 	plane_commit(data->primary, COMMIT_UNIVERSAL, ATOMIC_RELAX_NONE);
 }
 
-/**
- * SUBTEST: test-only
- * Description: Test to ensure that DRM_MODE_ATOMIC_TEST_ONLY really only touches
- *              the free-standing state objects and nothing else.
- * Driver requirement: i915, xe
- * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- */
-
 /*
  * Test to ensure that DRM_MODE_ATOMIC_TEST_ONLY really only touches the
  * free-standing state objects and nothing else.
@@ -749,19 +794,6 @@ static void plane_cursor(data_t *data, igt_output_t *output, igt_plane_t *cursor
 	plane_commit(cursor, COMMIT_LEGACY, ATOMIC_RELAX_NONE);
 }
 
-/**
- * SUBTEST: plane-invalid-%s
- * Description: Test error handling when invalid %arg[1] are passed
- * Driver requirement: i915, xe
- * Functionality: kms_core, plane
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @params:           plane parameters
- * @params-fence:     plane fence parameters
- */
 static void plane_invalid_params(data_t *data, igt_output_t *output)
 {
 	struct igt_fb fb2;
@@ -846,19 +878,6 @@ static void plane_invalid_params_fence(data_t *data, igt_output_t *output)
 	close(timeline);
 }
 
-/**
- * SUBTEST: crtc-invalid-%s
- * Description: Test error handling when invalid %arg[1] are passed
- * Driver requirement: i915, xe
- * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @params:           crtc parameters
- * @params-fence:     crtc fence parameters
- */
 static void crtc_invalid_params(data_t *data, igt_output_t *output)
 {
 	uint64_t old_mode_id = data->pipe->values[IGT_CRTC_MODE_ID];
@@ -999,17 +1018,6 @@ static void crtc_invalid_params_fence(data_t *data, igt_output_t *output)
 	igt_assert(data->pipe->out_fence_fd != -1);
 }
 
-/**
- * SUBTEST: atomic-invalid-params
- * Description: Test abuse the atomic ioctl directly in order to test various
- *              invalid conditions which the libdrm wrapper won't allow us to
- *              create.
- * Driver requirement: i915, xe
- * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- */
-
 /*
  * Abuse the atomic ioctl directly in order to test various invalid conditions,
  * which the libdrm wrapper won't allow us to create.
@@ -1148,14 +1156,6 @@ static void atomic_invalid_params(data_t *data, igt_output_t *output)
 	do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT);
 }
 
-/**
- * SUBTEST: atomic-plane-damage
- * Description: Simple test cases to use FB_DAMAGE_CLIPS plane property
- * Driver requirement: i915, xe
- * Functionality: kms_core, plane
- * Mega feature: General Display Features
- * Test category: functionality test
- */
 static void atomic_plane_damage(data_t *data)
 {
 	struct drm_mode_rect damage[2];
diff --git a/tests/kms_atomic_interruptible.c b/tests/kms_atomic_interruptible.c
index c86db7149..7419e0746 100644
--- a/tests/kms_atomic_interruptible.c
+++ b/tests/kms_atomic_interruptible.c
@@ -26,59 +26,13 @@
  * Category: Display
  * Description: Tests that interrupt various atomic ioctls.
  */
+
 #include <signal.h>
 
 #include "igt.h"
 #include "drmtest.h"
 #include "sw_sync.h"
 
-IGT_TEST_DESCRIPTION("Tests that interrupt various atomic ioctls.");
-
-enum plane_test_type
-{
-	test_legacy_modeset,
-	test_atomic_modeset,
-	test_legacy_dpms,
-	test_setplane,
-	test_setcursor,
-	test_pageflip
-};
-
-static int block_plane(igt_display_t *display, igt_output_t *output, enum plane_test_type test_type, igt_plane_t *plane)
-{
-	int timeline = sw_sync_timeline_create();
-
-	igt_fork(child, 1) {
-		/* Ignore the signal helper, we need to block indefinitely on the fence. */
-		signal(SIGCONT, SIG_IGN);
-
-		if (test_type == test_legacy_modeset || test_type == test_atomic_modeset) {
-			igt_output_set_pipe(output, PIPE_NONE);
-		}
-		igt_plane_set_fence_fd(plane, sw_sync_timeline_create_fence(timeline, 1));
-
-		igt_display_commit2(display, COMMIT_ATOMIC);
-	}
-
-	return timeline;
-}
-
-static void unblock(int block)
-{
-	sw_sync_timeline_inc(block, 1);
-	close(block);
-}
-
-static void ev_page_flip(int fd, unsigned seq, unsigned tv_sec, unsigned tv_usec, void *user_data)
-{
-	igt_debug("Retrieved vblank seq: %u on unk\n", seq);
-}
-
-static drmEventContext drm_events = {
-	.version = 2,
-	.page_flip_handler = ev_page_flip
-};
-
 /**
  * SUBTEST: %s-setmode
  * Description: Tests the interrupt properties of %arg[1] modeset
@@ -114,9 +68,7 @@ static drmEventContext drm_events = {
  * Functionality: kms_core
  * Mega feature: General Display Features
  * Test category: functionality test
- */
-
-/**
+ *
  * SUBTEST: universal-setplane-%s
  * Description: Tests the interrupt properties for %arg[1]
  * Driver requirement: i915, xe
@@ -129,6 +81,54 @@ static drmEventContext drm_events = {
  * @cursor:         Cursor plane
  * @primary:        Primary plane
  */
+
+IGT_TEST_DESCRIPTION("Tests that interrupt various atomic ioctls.");
+
+enum plane_test_type
+{
+	test_legacy_modeset,
+	test_atomic_modeset,
+	test_legacy_dpms,
+	test_setplane,
+	test_setcursor,
+	test_pageflip
+};
+
+static int block_plane(igt_display_t *display, igt_output_t *output, enum plane_test_type test_type, igt_plane_t *plane)
+{
+	int timeline = sw_sync_timeline_create();
+
+	igt_fork(child, 1) {
+		/* Ignore the signal helper, we need to block indefinitely on the fence. */
+		signal(SIGCONT, SIG_IGN);
+
+		if (test_type == test_legacy_modeset || test_type == test_atomic_modeset) {
+			igt_output_set_pipe(output, PIPE_NONE);
+		}
+		igt_plane_set_fence_fd(plane, sw_sync_timeline_create_fence(timeline, 1));
+
+		igt_display_commit2(display, COMMIT_ATOMIC);
+	}
+
+	return timeline;
+}
+
+static void unblock(int block)
+{
+	sw_sync_timeline_inc(block, 1);
+	close(block);
+}
+
+static void ev_page_flip(int fd, unsigned seq, unsigned tv_sec, unsigned tv_usec, void *user_data)
+{
+	igt_debug("Retrieved vblank seq: %u on unk\n", seq);
+}
+
+static drmEventContext drm_events = {
+	.version = 2,
+	.page_flip_handler = ev_page_flip
+};
+
 static void run_plane_test(igt_display_t *display, enum pipe pipe, igt_output_t *output,
 			   enum plane_test_type test_type, unsigned plane_type)
 {
diff --git a/tests/kms_atomic_transition.c b/tests/kms_atomic_transition.c
index 1ec96ce5e..b8053acf7 100644
--- a/tests/kms_atomic_transition.c
+++ b/tests/kms_atomic_transition.c
@@ -25,6 +25,7 @@
  * TEST: kms atomic transition
  * Category: Display
  */
+
 #include "igt.h"
 #include "igt_rand.h"
 #include "drmtest.h"
@@ -37,6 +38,95 @@
 #include <time.h>
 #include <poll.h>
 
+/**
+ * SUBTEST: plane-primary-toggle-with-vblank-wait
+ * Description: Check toggling of primary plane with vblank
+ * Driver requirement: i915, xe
+ * Functionality: plane, vblank, watermark
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: plane-all-modeset-%s
+ * Description: Modeset test for all plane combinations %arg[1]
+ * Driver requirement: i915, xe
+ * Functionality: plane, watermark
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @transition:                           default
+ * @transition-fencing:                   with fencing commit
+ */
+
+/**
+ * SUBTEST: plane-all-modeset-%s
+ * Description: Modeset test for all plane combinations %arg[1]
+ * Driver requirement: i915, xe
+ * Functionality: plane, watermark
+ * Mega feature: eDP
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @transition-fencing-internal-panels:   on internal panels with fencing commit
+ * @transition-internal-panels:           on internal panels
+ */
+
+/**
+ * SUBTEST: plane-all-%s
+ * Description: Transition test for all plane combinations %arg[1]
+ * Driver requirement: i915, xe
+ * Functionality: plane, watermark
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @transition:                           default
+ * @transition-fencing:                   with fencing commit
+ * @transition-nonblocking:               with non-blocking commit
+ * @transition-nonblocking-fencing:       with non-blocking & fencing commit
+ */
+
+/**
+ * SUBTEST: plane-toggle-modeset-transition
+ * Description: Check toggling and modeset transition on plane
+ * Driver requirement: i915, xe
+ * Functionality: plane, watermark
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: plane-use-after-nonblocking-%s
+ * Description: Transition test with non %arg[1] and make sure commit of disabled
+ *              plane has to complete before atomic commit on that plane
+ * Driver requirement: i915, xe
+ * Functionality: plane, watermark
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @unbind:           blocking commit
+ * @unbind-fencing:   blocking commit with fencing
+ */
+
+/**
+ * SUBTEST: modeset-%s
+ * Description: Modeset transition tests for combinations of %arg[1]
+ * Driver requirement: i915, xe
+ * Functionality: plane, watermark
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @transition:                     crtc enabled
+ * @transition-fencing:             crtc enabled with fencing commit
+ * @transition-nonblocking:         crtc enabled with nonblocking commit
+ * @transition-nonblocking-fencing: crtc enabled with nonblocking & fencing commit
+ */
+
 #ifndef DRM_CAP_CURSOR_WIDTH
 #define DRM_CAP_CURSOR_WIDTH 0x8
 #endif
@@ -62,14 +152,6 @@ int *timeline;
 pthread_t *thread;
 int *seqno;
 
-/**
- * SUBTEST: plane-primary-toggle-with-vblank-wait
- * Description: Check toggling of primary plane with vblank
- * Driver requirement: i915, xe
- * Functionality: plane, vblank, watermark
- * Mega feature: General Display Features
- * Test category: functionality test
- */
 static void
 run_primary_test(data_t *data, enum pipe pipe, igt_output_t *output)
 {
@@ -482,72 +564,6 @@ static void wait_for_transition(data_t *data, enum pipe pipe, bool nonblocking,
 	}
 }
 
-/**
- * SUBTEST: plane-all-modeset-%s
- * Description: Modeset test for all plane combinations %arg[1]
- * Driver requirement: i915, xe
- * Functionality: plane, watermark
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @transition:                           default
- * @transition-fencing:                   with fencing commit
- */
-
-/**
- * SUBTEST: plane-all-modeset-%s
- * Description: Modeset test for all plane combinations %arg[1]
- * Driver requirement: i915, xe
- * Functionality: plane, watermark
- * Mega feature: eDP
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @transition-fencing-internal-panels:   on internal panels with fencing commit
- * @transition-internal-panels:           on internal panels
- */
-
-/**
- * SUBTEST: plane-all-%s
- * Description: Transition test for all plane combinations %arg[1]
- * Driver requirement: i915, xe
- * Functionality: plane, watermark
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @transition:                           default
- * @transition-fencing:                   with fencing commit
- * @transition-nonblocking:               with non-blocking commit
- * @transition-nonblocking-fencing:       with non-blocking & fencing commit
- */
-
-/**
- * SUBTEST: plane-toggle-modeset-transition
- * Description: Check toggling and modeset transition on plane
- * Driver requirement: i915, xe
- * Functionality: plane, watermark
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: plane-use-after-nonblocking-%s
- * Description: Transition test with non %arg[1] and make sure commit of disabled
- *              plane has to complete before atomic commit on that plane
- * Driver requirement: i915, xe
- * Functionality: plane, watermark
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @unbind:           blocking commit
- * @unbind-fencing:   blocking commit with fencing
- */
-
 /*
  * 1. Set primary plane to a known fb.
  * 2. Make sure getcrtc returns the correct fb id.
@@ -1041,21 +1057,6 @@ retry:
 	}
 }
 
-/**
- * SUBTEST: modeset-%s
- * Description: Modeset transition tests for combinations of %arg[1]
- * Driver requirement: i915, xe
- * Functionality: plane, watermark
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @transition:                     crtc enabled
- * @transition-fencing:             crtc enabled with fencing commit
- * @transition-nonblocking:         crtc enabled with nonblocking commit
- * @transition-nonblocking-fencing: crtc enabled with nonblocking & fencing commit
- */
 static void run_modeset_transition(data_t *data, int requested_outputs, bool nonblocking, bool fencing)
 {
 	igt_output_t *outputs[IGT_MAX_PIPES] = {};
diff --git a/tests/kms_bw.c b/tests/kms_bw.c
index 896114a3a..0199b5675 100644
--- a/tests/kms_bw.c
+++ b/tests/kms_bw.c
@@ -20,16 +20,19 @@
  * OTHER DEALINGS IN THE SOFTWARE.
  */
 
+/**
+ * TEST: kms bw
+ * Category: Display
+ * Description: BW test with different resolutions
+ */
+
 #include "drm_mode.h"
 #include "igt.h"
 #include "drm.h"
 #include <stdio.h>
 #include <xf86drmMode.h>
+
 /**
- * TEST: kms bw
- * Category: Display
- * Description: BW test with different resolutions
- *
  * SUBTEST: linear-tiling-%d-displays-%s
  * Description: bw test with %arg[2]
  * Driver requirement: i915, xe
diff --git a/tests/kms_color.c b/tests/kms_color.c
index f59feabd4..119dfc1f4 100644
--- a/tests/kms_color.c
+++ b/tests/kms_color.c
@@ -27,9 +27,8 @@
  * Category: Display
  * Description: Test Color Features at Pipe level
  */
-#include "kms_color_helper.h"
 
-IGT_TEST_DESCRIPTION("Test Color Features at Pipe level");
+#include "kms_color_helper.h"
 
 /**
  * SUBTEST: degamma
@@ -38,7 +37,73 @@ IGT_TEST_DESCRIPTION("Test Color Features at Pipe level");
  * Functionality: colorspace
  * Mega feature: Color mgmt
  * Test category: functionality test
+ *
+ * SUBTEST: gamma
+ * Description: Verify that gamma LUT transformation works correctly
+ * Driver requirement: i915, xe
+ * Functionality: colorspace
+ * Mega feature: Color mgmt
+ * Test category: functionality test
+ *
+ * SUBTEST: legacy-gamma
+ * Description: Verify that legacy gamma LUT transformation works correctly
+ * Driver requirement: i915, xe
+ * Functionality: colorspace
+ * Mega feature: Color mgmt
+ * Test category: functionality test
+ *
+ * SUBTEST: legacy-gamma-reset
+ * Description: Verify that setting the legacy gamma LUT resets the gamma LUT
+ *              set through GAMMA_LUT property
+ * Driver requirement: i915, xe
+ * Functionality: colorspace
+ * Mega feature: Color mgmt
+ * Test category: functionality test
+ *
+ * SUBTEST: ctm-%s
+ * Description: Check the color transformation %arg[1]
+ * Driver requirement: i915, xe
+ * Functionality: colorspace
+ * Mega feature: Color mgmt
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @0-25:           for 0.25 transparency
+ * @0-50:           for 0.50 transparency
+ * @0-75:           for 0.75 transparency
+ * @blue-to-red:    from blue to red
+ * @green-to-red:   from green to red
+ * @max:            for maximum transparency
+ * @negative:       for negative transparency
+ * @red-to-blue:    from red to blue
+ * @signed:         for correct signed handling
+ */
+
+/**
+ * SUBTEST: deep-color
+ * Description: Verify that deep color works correctly
+ * Driver requirement: i915, xe
+ * Functionality: colorspace
+ * Mega feature: Color mgmt
+ * Test category: functionality test
+ *
+ * SUBTEST: invalid-%s-sizes
+ * Description: Negative check for %arg[1] sizes
+ * Driver requirement: i915, xe
+ * Functionality: colorspace
+ * Mega feature: Color mgmt
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @ctm-matrix:         Color transformation matrix
+ * @degamma-lut:        Degamma LUT
+ * @gamma-lut:          Gamma LUT
  */
+
+IGT_TEST_DESCRIPTION("Test Color Features at Pipe level");
+
 static bool test_pipe_degamma(data_t *data,
 			      igt_plane_t *primary)
 {
@@ -127,15 +192,6 @@ static bool test_pipe_degamma(data_t *data,
 	return ret;
 }
 
-/**
- * SUBTEST: gamma
- * Description: Verify that gamma LUT transformation works correctly
- * Driver requirement: i915, xe
- * Functionality: colorspace
- * Mega feature: Color mgmt
- * Test category: functionality test
- */
-
 /*
  * Draw 3 gradient rectangles in red, green and blue, with a maxed out gamma
  * LUT and verify we have the same CRC as drawing solid color rectangles.
@@ -224,15 +280,6 @@ static bool test_pipe_gamma(data_t *data,
 	return ret;
 }
 
-/**
- * SUBTEST: legacy-gamma
- * Description: Verify that legacy gamma LUT transformation works correctly
- * Driver requirement: i915, xe
- * Functionality: colorspace
- * Mega feature: Color mgmt
- * Test category: functionality test
- */
-
 /*
  * Draw 3 gradient rectangles in red, green and blue, with a maxed out legacy
  * gamma LUT and verify we have the same CRC as drawing solid color rectangles
@@ -345,16 +392,6 @@ static bool test_pipe_legacy_gamma(data_t *data,
 	return ret;
 }
 
-/**
- * SUBTEST: legacy-gamma-reset
- * Description: Verify that setting the legacy gamma LUT resets the gamma LUT
- *              set through GAMMA_LUT property
- * Driver requirement: i915, xe
- * Functionality: colorspace
- * Mega feature: Color mgmt
- * Test category: functionality test
- */
-
 /*
  * Verify that setting the legacy gamma LUT resets the gamma LUT set
  * through the GAMMA_LUT property.
@@ -489,27 +526,6 @@ end:
 	return ret;
 }
 
-/**
- * SUBTEST: ctm-%s
- * Description: Check the color transformation %arg[1]
- * Driver requirement: i915, xe
- * Functionality: colorspace
- * Mega feature: Color mgmt
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @0-25:           for 0.25 transparency
- * @0-50:           for 0.50 transparency
- * @0-75:           for 0.75 transparency
- * @blue-to-red:    from blue to red
- * @green-to-red:   from green to red
- * @max:            for maximum transparency
- * @negative:       for negative transparency
- * @red-to-blue:    from red to blue
- * @signed:         for correct signed handling
- */
-
 /*
  * Draw 3 rectangles using before colors with the ctm matrix apply and verify
  * the CRC is equal to using after colors with an identify ctm matrix.
@@ -869,14 +885,6 @@ out:
 	test_cleanup(data);
 }
 
-/**
- * SUBTEST: deep-color
- * Description: Verify that deep color works correctly
- * Driver requirement: i915, xe
- * Functionality: colorspace
- * Mega feature: Color mgmt
- * Test category: functionality test
- */
 static void
 run_deep_color_tests_for_pipe(data_t *data, enum pipe p)
 {
@@ -978,20 +986,6 @@ run_deep_color_tests_for_pipe(data_t *data, enum pipe p)
 	test_cleanup(data);
 }
 
-/**
- * SUBTEST: invalid-%s-sizes
- * Description: Negative check for %arg[1] sizes
- * Driver requirement: i915, xe
- * Functionality: colorspace
- * Mega feature: Color mgmt
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @ctm-matrix:         Color transformation matrix
- * @degamma-lut:        Degamma LUT
- * @gamma-lut:          Gamma LUT
- */
 static void
 run_invalid_tests_for_pipe(data_t *data)
 {
diff --git a/tests/kms_concurrent.c b/tests/kms_concurrent.c
index d1a83d14e..ce0261287 100644
--- a/tests/kms_concurrent.c
+++ b/tests/kms_concurrent.c
@@ -22,14 +22,17 @@
  *
  */
 
-#include "igt.h"
-#include "drmtest.h"
 /**
  * TEST: kms concurrent
  * Category: Display
  * Description: Test atomic mode setting concurrently with multiple planes and
  *              screen resolution
- *
+ */
+
+#include "igt.h"
+#include "drmtest.h"
+
+/**
  * SUBTEST: multi-plane-atomic-lowres
  * Description: Test atomic mode setting concurrently with multiple planes and
  *              screen resolution.
diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c
index 9a0583d96..988f370f9 100644
--- a/tests/kms_content_protection.c
+++ b/tests/kms_content_protection.c
@@ -27,6 +27,7 @@
  * Category: Display
  * Description: Test content protection (HDCP)
  */
+
 #include <poll.h>
 #include <fcntl.h>
 #include <sys/epoll.h>
@@ -37,6 +38,77 @@
 #include "igt_kms.h"
 #include "igt_kmod.h"
 
+/**
+ * SUBTEST: lic
+ * Description: Test for the integrity of link.
+ * Driver requirement: i915, xe
+ * Functionality: hdcp1.4
+ * Mega feature: HDCP
+ * Test category: functionality test
+ *
+ * SUBTEST: content-type-change
+ * Description: Test the content type change when the content protection already
+ *              enabled
+ * Driver requirement: i915, xe
+ * Functionality: hdcp1.4, hdcp2.2
+ * Mega feature: HDCP
+ * Test category: functionality test
+ *
+ * SUBTEST: mei-interface
+ * Description: Test the teardown and rebuild of the interface between Intel
+ *              and mei hdcp.
+ * Driver requirement: i915, xe
+ * Functionality: hdcp1.4, hdcp2.2
+ * Mega feature: HDCP
+ * Test category: functionality test
+ *
+ * SUBTEST: srm
+ * Description: This test writes the facsimile SRM into the /lib/firmware/ and
+ *              check the kernel parsing of it by invoking the hdcp authentication.
+ * Driver requirement: i915, xe
+ * Functionality: hdcp1.4
+ * Mega feature: HDCP
+ * Test category: functionality test
+ *
+ * SUBTEST: uevent
+ * Description: Test to detect the HDCP status change when we are reading the
+ *              uevent sent with the corresponding connector id and property id.
+ * Driver requirement: i915, xe
+ * Functionality: hdcp1.4
+ * Mega feature: HDCP
+ * Test category: functionality test
+ *
+ * SUBTEST: %s
+ * Description: Test content protection with %arg[1]
+ * Driver requirement: i915, xe
+ * Functionality: hdcp1.4
+ * Mega feature: HDCP
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @atomic:         atomic modesetting
+ * @atomic-dpms:    DPMS ON/OFF during atomic modesetting.
+ * @legacy:         legacy style commit
+ * @type1:          content type 1 that can be handled only through HDCP2.2.
+ */
+
+/**
+ * SUBTEST: dp-mst-%s
+ * Description: Test Content protection %arg[1] over DP MST.
+ * Driver requirement: i915, xe
+ * Functionality: hdcp1.4, mst
+ * Mega feature: HDCP
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @lic-type-0:   Type 0 with LIC
+ * @lic-type-1:   Type 1 with LIC.
+ * @type-0:       Type 0
+ * @type-1:       Type 1
+ */
+
 IGT_TEST_DESCRIPTION("Test content protection (HDCP)");
 
 struct data {
@@ -490,60 +562,6 @@ test_fini(igt_output_t *output, enum igt_commit_style s)
 	igt_display_commit2(&data.display, s);
 }
 
-/**
- * SUBTEST: lic
- * Description: Test for the integrity of link.
- * Driver requirement: i915, xe
- * Functionality: hdcp1.4
- * Mega feature: HDCP
- * Test category: functionality test
- *
- * SUBTEST: content-type-change
- * Description: Test the content type change when the content protection already
- *              enabled
- * Driver requirement: i915, xe
- * Functionality: hdcp1.4, hdcp2.2
- * Mega feature: HDCP
- * Test category: functionality test
- *
- * SUBTEST: mei-interface
- * Description: Test the teardown and rebuild of the interface between Intel
- *              and mei hdcp.
- * Driver requirement: i915, xe
- * Functionality: hdcp1.4, hdcp2.2
- * Mega feature: HDCP
- * Test category: functionality test
- *
- * SUBTEST: srm
- * Description: This test writes the facsimile SRM into the /lib/firmware/ and
- *              check the kernel parsing of it by invoking the hdcp authentication.
- * Driver requirement: i915, xe
- * Functionality: hdcp1.4
- * Mega feature: HDCP
- * Test category: functionality test
- *
- * SUBTEST: uevent
- * Description: Test to detect the HDCP status change when we are reading the
- *              uevent sent with the corresponding connector id and property id.
- * Driver requirement: i915, xe
- * Functionality: hdcp1.4
- * Mega feature: HDCP
- * Test category: functionality test
- *
- * SUBTEST: %s
- * Description: Test content protection with %arg[1]
- * Driver requirement: i915, xe
- * Functionality: hdcp1.4
- * Mega feature: HDCP
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @atomic:         atomic modesetting
- * @atomic-dpms:    DPMS ON/OFF during atomic modesetting.
- * @legacy:         legacy style commit
- * @type1:          content type 1 that can be handled only through HDCP2.2.
- */
 static void
 test_content_protection(enum igt_commit_style s, int content_type)
 {
@@ -631,21 +649,6 @@ static void test_cp_lic_on_mst(igt_output_t *mst_outputs[], int valid_outputs, b
 	}
 }
 
-/**
- * SUBTEST: dp-mst-%s
- * Description: Test Content protection %arg[1] over DP MST.
- * Driver requirement: i915, xe
- * Functionality: hdcp1.4, mst
- * Mega feature: HDCP
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @lic-type-0:   Type 0 with LIC
- * @lic-type-1:   Type 1 with LIC.
- * @type-0:       Type 0
- * @type-1:       Type 1
- */
 static void
 test_content_protection_mst(int content_type)
 {
diff --git a/tests/kms_cursor_crc.c b/tests/kms_cursor_crc.c
index d2f10356b..3d1c3bcd3 100644
--- a/tests/kms_cursor_crc.c
+++ b/tests/kms_cursor_crc.c
@@ -22,13 +22,6 @@
  *
  */
 
-#include "igt.h"
-#include <errno.h>
-#include <limits.h>
-#include <stdbool.h>
-#include <stdio.h>
-#include <string.h>
-
 /**
  * TEST: kms cursor crc
  * Category: Display
@@ -42,6 +35,77 @@
  *              software.
  */
 
+#include "igt.h"
+#include <errno.h>
+#include <limits.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <string.h>
+
+/**
+ * SUBTEST: cursor-dpms
+ * Description: Check random placement of a cursor with DPMS.
+ * Driver requirement: i915, xe
+ * Functionality: cursor, dpms
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: cursor-suspend
+ * Description: Check random placement of a cursor with suspend.
+ * Driver requirement: i915, xe
+ * Functionality: cursor, suspend
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: cursor-%s
+ * Description: %arg[1]
+ * Driver requirement: i915, xe
+ * Functionality: cursor
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @alpha-opaque:       Validates the composition of a fully opaque cursor plane,
+ *                      i.e., alpha channel equal to 1.0.
+ * @alpha-transparent:  Validates the composition of a fully transparent cursor
+ *                      plane, i.e., alpha channel equal to 0.0.
+ * @size-change:        Create a maximum size cursor, then change the size in
+ *                      flight to smaller ones to see that the size is applied
+ *                      correctly.
+ */
+
+/**
+ * SUBTEST: cursor-%s-%s
+ * Description: Check if a %arg[2] cursor is %arg[1].
+ * Driver requirement: i915, xe
+ * Functionality: cursor
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @offscreen:             well-positioned outside the screen
+ * @onscreen:              well-positioned inside the screen
+ * @random:                randomly placed
+ * @rapid-movement:        rapidly udates for movements
+ * @sliding:               smooth for horizontal, vertical & diagonal movements
+ *
+ * arg[2]:
+ *
+ * @128x128:               128x128 size
+ * @128x42:                128x42 size
+ * @256x256:               256x256 size
+ * @256x85:                256x85 size
+ * @32x10:                 32x10 size
+ * @32x32:                 32x32 size
+ * @512x170:               512x170 size
+ * @512x512:               512x512 size
+ * @64x21:                 64x21 size
+ * @64x64:                 64x64 size
+ * @max-size:              Max supported size
+ */
+
 IGT_TEST_DESCRIPTION(
    "Use the display CRC support to validate cursor plane functionality. "
    "The test will position the cursor plane either fully onscreen, "
@@ -667,38 +731,6 @@ static bool require_cursor_size(data_t *data, int w, int h)
 	return !!ret;
 }
 
-/**
- * SUBTEST: cursor-dpms
- * Description: Check random placement of a cursor with DPMS.
- * Driver requirement: i915, xe
- * Functionality: cursor, dpms
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: cursor-suspend
- * Description: Check random placement of a cursor with suspend.
- * Driver requirement: i915, xe
- * Functionality: cursor, suspend
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: cursor-%s
- * Description: %arg[1]
- * Driver requirement: i915, xe
- * Functionality: cursor
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @alpha-opaque:       Validates the composition of a fully opaque cursor plane,
- *                      i.e., alpha channel equal to 1.0.
- * @alpha-transparent:  Validates the composition of a fully transparent cursor
- *                      plane, i.e., alpha channel equal to 0.0.
- * @size-change:        Create a maximum size cursor, then change the size in
- *                      flight to smaller ones to see that the size is applied
- *                      correctly.
- */
 static void run_test(data_t *data, void (*testfunc)(data_t *), int cursor_w, int cursor_h)
 {
 	prepare_crtc(data, cursor_w, cursor_h);
@@ -795,37 +827,6 @@ static bool execution_constraint(enum pipe pipe)
 	return false;
 }
 
-
-/**
- * SUBTEST: cursor-%s-%s
- * Description: Check if a %arg[2] cursor is %arg[1].
- * Driver requirement: i915, xe
- * Functionality: cursor
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @offscreen:             well-positioned outside the screen
- * @onscreen:              well-positioned inside the screen
- * @random:                randomly placed
- * @rapid-movement:        rapidly udates for movements
- * @sliding:               smooth for horizontal, vertical & diagonal movements
- *
- * arg[2]:
- *
- * @128x128:               128x128 size
- * @128x42:                128x42 size
- * @256x256:               256x256 size
- * @256x85:                256x85 size
- * @32x10:                 32x10 size
- * @32x32:                 32x32 size
- * @512x170:               512x170 size
- * @512x512:               512x512 size
- * @64x21:                 64x21 size
- * @64x64:                 64x64 size
- * @max-size:              Max supported size
- */
 static void run_size_tests(data_t *data, int w, int h)
 {
 	enum pipe pipe;
diff --git a/tests/kms_cursor_edge_walk.c b/tests/kms_cursor_edge_walk.c
index e284fc4d8..d9d140409 100644
--- a/tests/kms_cursor_edge_walk.c
+++ b/tests/kms_cursor_edge_walk.c
@@ -22,18 +22,21 @@
  *
  */
 
+/**
+ * TEST: kms cursor edge walk
+ * Category: Display
+ * Description: Exercise CHV pipe C cursor fail
+ * Description: Test to check different cursor sizes by walking different edges of screen
+ */
+
 #include "igt.h"
 #include <errno.h>
 #include <limits.h>
 #include <stdbool.h>
 #include <stdio.h>
 #include <string.h>
+
 /**
- * TEST: kms cursor edge walk
- * Category: Display
- * Description: Exercise CHV pipe C cursor fail
- * Description: Test to check different cursor sizes by walking different edges of screen
- *
  * SUBTEST: %s-%s
  * Description: Checking cursor size %arg[1] by walking %arg[2] of screen
  * Driver requirement: i915, xe
diff --git a/tests/kms_cursor_legacy.c b/tests/kms_cursor_legacy.c
index d0d752e5e..6a4955ef1 100644
--- a/tests/kms_cursor_legacy.c
+++ b/tests/kms_cursor_legacy.c
@@ -37,6 +37,256 @@
 #include "igt_rand.h"
 #include "igt_stats.h"
 
+/**
+ * SUBTEST: %s-%s
+ * Description: Test checks how many cursor updates we can fit between vblanks
+ *              on single/all pipes with different modes, priority and number
+ *              of processes
+ * Driver requirement: i915, xe
+ * Functionality: cursor
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @single:      Single
+ * @torture:     Torture
+ * @forked:      Forked
+ *
+ * arg[2]:
+ *
+ * @bo:          BO
+ * @move:        Move
+ */
+
+/**
+ * SUBTEST: basic-busy-flip-before-cursor-%s
+ * Description: Cursor test with %arg[1] mode
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ * Functionality: cursor
+ * Mega feature: General Display Features
+ *
+ * SUBTEST: basic-busy-flip-before-cursor-varying-size
+ * Description: Change the size of cursor b/w 64*64 to maxw x maxh.
+ * Driver requirement: i915, xe
+ * Functionality: cursor
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @atomic:	atomic
+ * @legacy:	legacy
+ */
+
+/**
+ * SUBTEST: basic-flip-after-cursor-%s
+ * Description: Cursor test with %arg[1]
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ * Functionality: cursor
+ * Mega feature: General Display Features
+ *
+ * SUBTEST: basic-flip-before-cursor-%s
+ * Description: Cursor test with %arg[1]
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ * Functionality: cursor
+ * Mega feature: General Display Features
+ *
+ * arg[1]:
+ *
+ * @atomic:        atomic mode
+ * @legacy:        legacy mode
+ * @varying-size:  varying size
+ */
+
+/**
+ * SUBTEST: %s-flip-before-cursor-%s
+ * Description: Adds variety of tests:
+ *		- varying-size: change the size of cursor b/w 64*64 to maxw x maxh.\n
+ *		- atomic-transition: alternates between a full screen sprite plane
+ *		                     and full screen primary plane.\n"
+ *		- toggle: which toggles cursor visibility and make sure cursor moves
+ *		          between updates.
+ * Driver requirement: i915, xe
+ * Functionality: cursor
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @short:
+ * @short-busy:
+ *
+ * arg[2]:
+ *
+ * @atomic-transitions:
+ * @atomic-transitions-varying-size:
+ * @toggle:
+ */
+
+/**
+ * SUBTEST: short-flip-after-cursor-%s
+ * Description: Adds variety of tests:
+ *		- varying-size: change the size of cursor b/w 64*64 to maxw x maxh.\n
+ *		- atomic-transition: alternates between a full screen sprite plane
+ *		                     and full screen primary plane.\n"
+ *		- toggle: which toggles cursor visibility and make sure cursor moves
+ *		          between updates.
+ * Driver requirement: i915, xe
+ * Functionality: cursor
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @atomic-transitions:
+ * @atomic-transitions-varying-size:
+ * @toggle:
+ */
+
+/**
+ * SUBTEST: long-nonblocking-modeset-vs-cursor-atomic
+ * Description: Test checks how many cursor updates we can fit between vblanks
+ *              on all pipes with different modes, priority and number of processes
+ * Driver requirement: i915, xe
+ * Functionality: cursor
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: nonblocking-modeset-vs-cursor-atomic
+ * Description: Test checks how many cursor updates we can fit between vblanks
+ *              on all pipes with different modes, priority and number of processes
+ * Driver requirement: i915, xe
+ * Functionality: cursor
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: 2x-%s-%s
+ * Description: This test executes flips on both CRTCs while running cursor
+ *              updates in parallel
+ * Driver requirement: i915, xe
+ * Functionality: cursor
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @flip-vs-cursor:
+ * @flip-vs-cursor:
+ * @long-flip-vs-cursor:
+ * @long-flip-vs-cursor:
+ *
+ * arg[2]:
+ *
+ * @atomic:
+ * @legacy:
+ */
+
+/**
+ * SUBTEST: 2x-%s-atomic
+ * Description: This test executes flips on both CRTCs while running cursor
+ *              updates in parallel
+ * Driver requirement: i915, xe
+ * Functionality: cursor
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @long-nonblocking-modeset-vs-cursor:
+ * @nonblocking-modeset-vs-cursor:
+ */
+
+/**
+ * SUBTEST: %s-%s
+ * Description: The essence of the basic test is that neither the cursor nor the
+ *              nonblocking flip stall the application of the next
+ * Driver requirement: i915, xe
+ * Functionality: cursor
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @cursor-vs-flip:
+ * @cursorA-vs-flipA:
+ * @cursorA-vs-flipB:
+ * @cursorB-vs-flipA:
+ * @cursorB-vs-flipB:
+ * @flip-vs-cursor:
+ *
+ * arg[2]:
+ *
+ * @atomic:
+ * @atomic-transitions:
+ * @atomic-transitions-varying-size:
+ * @legacy:
+ * @toggle:
+ * @varying-size:
+ */
+
+/**
+ * SUBTEST: 2x-%s-%s
+ * Description: This test executes flips on both CRTCs while running cursor updates in parallel
+ * Driver requirement: i915, xe
+ * Functionality: cursor
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @cursor-vs-flip:
+ * @cursor-vs-flip:
+ * @long-cursor-vs-flip:
+ * @long-cursor-vs-flip:
+ *
+ * arg[2]:
+ *
+ * @atomic:
+ * @legacy:
+ */
+
+/**
+ * SUBTEST: flip-vs-cursor-crc-%s
+ * Description: this test perform a page flip followed by a cursor update
+ * Driver requirement: i915, xe
+ * Functionality: cursor
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @atomic:
+ * @legacy:
+ */
+
+/**
+ * SUBTEST: flip-vs-cursor-busy-crc-%s
+ * Description: this test perform a busy bo update followed by a cursor update
+ * Driver requirement: i915, xe
+ * Functionality: cursor
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @atomic:
+ * @legacy:
+ */
+
+/**
+ * SUBTEST: modeset-atomic-cursor-hotspot
+ * Description: Test changes the cursor hotspot and checks that the property is
+ *              updated accordignly
+ * Driver requirement: i915, xe
+ * Functionality: cursor
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ */
+
 #if defined(__x86_64__) || defined(__i386__)
 #define cpu_relax()	__builtin_ia32_pause()
 #else
@@ -78,27 +328,6 @@ static void override_output_modes(igt_display_t *display,
 	igt_output_set_pipe(output2, PIPE_NONE);
 }
 
-/**
- * SUBTEST: %s-%s
- * Description: Test checks how many cursor updates we can fit between vblanks
- *              on single/all pipes with different modes, priority and number
- *              of processes
- * Driver requirement: i915, xe
- * Functionality: cursor
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @single:      Single
- * @torture:     Torture
- * @forked:      Forked
- *
- * arg[2]:
- *
- * @bo:          BO
- * @move:        Move
- */
 static void stress(igt_display_t *display,
 		   enum pipe pipe, int num_children, unsigned mode,
 		   int timeout)
@@ -569,93 +798,6 @@ enum basic_flip_cursor {
 
 #define BASIC_BUSY 0x1
 
-/**
- * SUBTEST: basic-busy-flip-before-cursor-%s
- * Description: Cursor test with %arg[1] mode
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: cursor
- * Mega feature: General Display Features
- *
- * SUBTEST: basic-busy-flip-before-cursor-varying-size
- * Description: Change the size of cursor b/w 64*64 to maxw x maxh.
- * Driver requirement: i915, xe
- * Functionality: cursor
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @atomic:	atomic
- * @legacy:	legacy
- */
-
-/**
- * SUBTEST: basic-flip-after-cursor-%s
- * Description: Cursor test with %arg[1]
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: cursor
- * Mega feature: General Display Features
- *
- * SUBTEST: basic-flip-before-cursor-%s
- * Description: Cursor test with %arg[1]
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: cursor
- * Mega feature: General Display Features
- *
- * arg[1]:
- *
- * @atomic:        atomic mode
- * @legacy:        legacy mode
- * @varying-size:  varying size
- */
-
-/**
- * SUBTEST: %s-flip-before-cursor-%s
- * Description: Adds variety of tests:
- *		- varying-size: change the size of cursor b/w 64*64 to maxw x maxh.\n
- *		- atomic-transition: alternates between a full screen sprite plane
- *		                     and full screen primary plane.\n"
- *		- toggle: which toggles cursor visibility and make sure cursor moves
- *		          between updates.
- * Driver requirement: i915, xe
- * Functionality: cursor
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @short:
- * @short-busy:
- *
- * arg[2]:
- *
- * @atomic-transitions:
- * @atomic-transitions-varying-size:
- * @toggle:
- */
-
-/**
- * SUBTEST: short-flip-after-cursor-%s
- * Description: Adds variety of tests:
- *		- varying-size: change the size of cursor b/w 64*64 to maxw x maxh.\n
- *		- atomic-transition: alternates between a full screen sprite plane
- *		                     and full screen primary plane.\n"
- *		- toggle: which toggles cursor visibility and make sure cursor moves
- *		          between updates.
- * Driver requirement: i915, xe
- * Functionality: cursor
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @atomic-transitions:
- * @atomic-transitions-varying-size:
- * @toggle:
- */
 static void basic_flip_cursor(igt_display_t *display,
 			      enum flip_test mode,
 			      enum basic_flip_cursor order,
@@ -977,23 +1119,6 @@ static void flip_vs_cursor(igt_display_t *display, enum flip_test mode, int nloo
 		igt_remove_fb(display->drm_fd, &cursor_fb2);
 }
 
-/**
- * SUBTEST: long-nonblocking-modeset-vs-cursor-atomic
- * Description: Test checks how many cursor updates we can fit between vblanks
- *              on all pipes with different modes, priority and number of processes
- * Driver requirement: i915, xe
- * Functionality: cursor
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: nonblocking-modeset-vs-cursor-atomic
- * Description: Test checks how many cursor updates we can fit between vblanks
- *              on all pipes with different modes, priority and number of processes
- * Driver requirement: i915, xe
- * Functionality: cursor
- * Mega feature: General Display Features
- * Test category: functionality test
- */
 static void nonblocking_modeset_vs_cursor(igt_display_t *display, int loops)
 {
 	struct igt_fb fb_info, cursor_fb;
@@ -1093,42 +1218,6 @@ static void wait_for_modeset(igt_display_t *display, unsigned flags, int timeout
 	igt_reset_timeout();
 }
 
-/**
- * SUBTEST: 2x-%s-%s
- * Description: This test executes flips on both CRTCs while running cursor
- *              updates in parallel
- * Driver requirement: i915, xe
- * Functionality: cursor
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @flip-vs-cursor:
- * @flip-vs-cursor:
- * @long-flip-vs-cursor:
- * @long-flip-vs-cursor:
- *
- * arg[2]:
- *
- * @atomic:
- * @legacy:
- */
-
-/**
- * SUBTEST: 2x-%s-atomic
- * Description: This test executes flips on both CRTCs while running cursor
- *              updates in parallel
- * Driver requirement: i915, xe
- * Functionality: cursor
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @long-nonblocking-modeset-vs-cursor:
- * @nonblocking-modeset-vs-cursor:
- */
 static void two_screens_flip_vs_cursor(igt_display_t *display, int nloops, bool modeset, bool atomic)
 {
 	struct drm_mode_cursor arg1[2], arg2[2];
@@ -1316,33 +1405,6 @@ done:
 	munmap((void *)shared, PAGE_SIZE);
 }
 
-/**
- * SUBTEST: %s-%s
- * Description: The essence of the basic test is that neither the cursor nor the
- *              nonblocking flip stall the application of the next
- * Driver requirement: i915, xe
- * Functionality: cursor
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @cursor-vs-flip:
- * @cursorA-vs-flipA:
- * @cursorA-vs-flipB:
- * @cursorB-vs-flipA:
- * @cursorB-vs-flipB:
- * @flip-vs-cursor:
- *
- * arg[2]:
- *
- * @atomic:
- * @atomic-transitions:
- * @atomic-transitions-varying-size:
- * @legacy:
- * @toggle:
- * @varying-size:
- */
 static void cursor_vs_flip(igt_display_t *display, enum flip_test mode, int nloops)
 {
 	struct drm_mode_cursor arg[2];
@@ -1455,26 +1517,6 @@ static void cursor_vs_flip(igt_display_t *display, enum flip_test mode, int nloo
 		igt_remove_fb(display->drm_fd, &cursor_fb2);
 }
 
-/**
- * SUBTEST: 2x-%s-%s
- * Description: This test executes flips on both CRTCs while running cursor updates in parallel
- * Driver requirement: i915, xe
- * Functionality: cursor
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @cursor-vs-flip:
- * @cursor-vs-flip:
- * @long-cursor-vs-flip:
- * @long-cursor-vs-flip:
- *
- * arg[2]:
- *
- * @atomic:
- * @legacy:
- */
 static void two_screens_cursor_vs_flip(igt_display_t *display, int nloops, bool atomic)
 {
 	struct drm_mode_cursor arg[2][2];
@@ -1603,19 +1645,6 @@ static void two_screens_cursor_vs_flip(igt_display_t *display, int nloops, bool
 	munmap((void *)shared, PAGE_SIZE);
 }
 
-/**
- * SUBTEST: flip-vs-cursor-crc-%s
- * Description: this test perform a page flip followed by a cursor update
- * Driver requirement: i915, xe
- * Functionality: cursor
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @atomic:
- * @legacy:
- */
 static void flip_vs_cursor_crc(igt_display_t *display, bool atomic)
 {
 	struct drm_mode_cursor arg[2];
@@ -1688,19 +1717,6 @@ static void flip_vs_cursor_crc(igt_display_t *display, bool atomic)
 	igt_remove_fb(display->drm_fd, &cursor_fb);
 }
 
-/**
- * SUBTEST: flip-vs-cursor-busy-crc-%s
- * Description: this test perform a busy bo update followed by a cursor update
- * Driver requirement: i915, xe
- * Functionality: cursor
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @atomic:
- * @legacy:
- */
 static void flip_vs_cursor_busy_crc(igt_display_t *display, bool atomic)
 {
 	struct drm_mode_cursor arg[2];
@@ -1813,15 +1829,6 @@ static void flip_vs_cursor_busy_crc(igt_display_t *display, bool atomic)
 	put_ahnd(ahnd);
 }
 
-/**
- * SUBTEST: modeset-atomic-cursor-hotspot
- * Description: Test changes the cursor hotspot and checks that the property is
- *              updated accordignly
- * Driver requirement: i915, xe
- * Functionality: cursor
- * Mega feature: General Display Features
- * Test category: functionality test
- */
 static void modeset_atomic_cursor_hotspot(igt_display_t *display)
 {
 	struct igt_fb cursor_fb;
diff --git a/tests/kms_display_modes.c b/tests/kms_display_modes.c
index aff2a93bc..a0a831724 100644
--- a/tests/kms_display_modes.c
+++ b/tests/kms_display_modes.c
@@ -29,8 +29,27 @@
  * Category: Display
  * Description: Test Display Modes
  */
+
 #include "igt.h"
 
+/**
+ * SUBTEST: extended-mode-basic
+ * Description: Test for validating display extended mode with a pair of connected
+ *              displays
+ * Driver requirement: i915, xe
+ * Functionality: kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: mst-extended-mode-negative
+ * Description: Negative test for validating display extended mode with a pair
+ *		of connected 2k-4k or 4k-4k displays.
+ * Driver requirement: i915, xe
+ * Functionality: kms_core, mst
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ */
+
 #define HDISPLAY_4K	3840
 #define VDISPLAY_4K	2160
 
@@ -205,15 +224,6 @@ static void run_extendedmode_basic(data_t *data,
 	for_each_connected_output_local((display), (output)) \
 		for_each_if (igt_pipe_connector_valid((pipe), (output)))
 
-/**
- * SUBTEST: extended-mode-basic
- * Description: Test for validating display extended mode with a pair of connected
- *              displays
- * Driver requirement: i915, xe
- * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- */
 static void run_extendedmode_test(data_t *data) {
 	enum pipe pipe1, pipe2;
 	igt_output_t *output1, *output2;
@@ -259,15 +269,6 @@ static void run_extendedmode_test(data_t *data) {
 	}
 }
 
-/**
- * SUBTEST: mst-extended-mode-negative
- * Description: Negative test for validating display extended mode with a pair
- *		of connected 2k-4k or 4k-4k displays.
- * Driver requirement: i915, xe
- * Functionality: kms_core, mst
- * Mega feature: General Display Features
- * Test category: functionality test
- */
 static void run_extendedmode_negative(data_t *data, int pipe1, int pipe2)
 {
 	struct igt_fb fbs[2];
diff --git a/tests/kms_dither.c b/tests/kms_dither.c
index 3387a3b10..5683fe5c5 100644
--- a/tests/kms_dither.c
+++ b/tests/kms_dither.c
@@ -30,11 +30,28 @@
  * Category: Display
  * Description: Test Dithering block status
  */
+
 #include "igt.h"
 #include <fcntl.h>
 #include <termios.h>
 #include <unistd.h>
 
+/**
+ * SUBTEST: fb-8bpc-vs-panel-6bpc
+ * Description: Framebuffer BPC:8, Panel BPC:6, Expected Dither:Enable
+ * Driver requirement: i915, xe
+ * Functionality: colorspace, kms_gem_interop
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: fb-8bpc-vs-panel-8bpc
+ * Description: Framebuffer BPC:8, Panel BPC:8, Expected Dither:Disable
+ * Driver requirement: i915, xe
+ * Functionality: colorspace, kms_gem_interop
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ */
+
 IGT_TEST_DESCRIPTION("Test Dithering block status");
 
 /* Connector BPC */
@@ -186,21 +203,6 @@ static bool is_supported(igt_output_t *output)
 		igt_output_get_prop(output, IGT_CONNECTOR_MAX_BPC);
 }
 
-/**
- * SUBTEST: fb-8bpc-vs-panel-6bpc
- * Description: Framebuffer BPC:8, Panel BPC:6, Expected Dither:Enable
- * Driver requirement: i915, xe
- * Functionality: colorspace, kms_gem_interop
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: fb-8bpc-vs-panel-8bpc
- * Description: Framebuffer BPC:8, Panel BPC:8, Expected Dither:Disable
- * Driver requirement: i915, xe
- * Functionality: colorspace, kms_gem_interop
- * Mega feature: General Display Features
- * Test category: functionality test
- */
 static void
 run_dither_test(data_t *data, int fb_bpc, int fb_format, int output_bpc)
 {
diff --git a/tests/kms_dp_aux_dev.c b/tests/kms_dp_aux_dev.c
index e6a67e22e..597d4c2ef 100644
--- a/tests/kms_dp_aux_dev.c
+++ b/tests/kms_dp_aux_dev.c
@@ -22,6 +22,12 @@
  *
  */
 
+/**
+ * TEST: kms dp aux dev
+ * Category: Display
+ * Description: Test that /dev/drm_dp_aux reads work
+ */
+
 #include "config.h"
 
 #include <sys/types.h>
@@ -31,11 +37,8 @@
 
 #include "igt.h"
 #include "igt_kms.h"
+
 /**
- * TEST: kms dp aux dev
- * Category: Display
- * Description: Test that /dev/drm_dp_aux reads work
- *
  * SUBTEST:
  * Description: Test that /dev/drm_dp_aux reads work
  * Driver requirement: i915, xe
diff --git a/tests/kms_feature_discovery.c b/tests/kms_feature_discovery.c
index 1baa93f5f..7aec4e78c 100644
--- a/tests/kms_feature_discovery.c
+++ b/tests/kms_feature_discovery.c
@@ -28,7 +28,18 @@
  * Description: A metatest that checks for \"features\" presence.
  *		The subtests here should only skip or pass,
  *		anything else means we have a serious problem.
- *
+ */
+
+#include "igt.h"
+#ifdef HAVE_CHAMELIUM
+#include "igt_chamelium.h"
+#endif
+#include "igt_kms.h"
+#include "igt_psr.h"
+#include "igt_sysfs.h"
+#include "igt_types.h"
+
+/**
  * SUBTEST: display
  * Description: Make sure that we have display support.
  * Driver requirement: i915, xe
@@ -75,15 +86,6 @@
  * arg[1].values: 1, 2, 3, 4
  */
 
-#include "igt.h"
-#ifdef HAVE_CHAMELIUM
-#include "igt_chamelium.h"
-#endif
-#include "igt_kms.h"
-#include "igt_psr.h"
-#include "igt_sysfs.h"
-#include "igt_types.h"
-
 static igt_display_t display;
 
 IGT_TEST_DESCRIPTION("A metatest that checks for \"features\" presence. "
diff --git a/tests/kms_flip.c b/tests/kms_flip.c
index c427f22e6..798103682 100755
--- a/tests/kms_flip.c
+++ b/tests/kms_flip.c
@@ -42,6 +42,18 @@
 #include <sys/time.h>
 #include <sys/ioctl.h>
 
+#ifdef HAVE_LINUX_KD_H
+#include <linux/kd.h>
+#elif HAVE_SYS_KD_H
+#include <sys/kd.h>
+#endif
+#include <time.h>
+#include <pthread.h>
+
+#include "i915/gem_create.h"
+#include "igt_stats.h"
+#include "xe/xe_query.h"
+
 /**
  * SUBTEST: 2x-flip-vs-fences
  * Description: Test to validate pageflips along with avialable fences on a pair
@@ -280,17 +292,40 @@
  * @modeset-vs-vblank-race:       modeset and check for vblank
  */
 
-#ifdef HAVE_LINUX_KD_H
-#include <linux/kd.h>
-#elif HAVE_SYS_KD_H
-#include <sys/kd.h>
-#endif
-#include <time.h>
-#include <pthread.h>
-
-#include "i915/gem_create.h"
-#include "igt_stats.h"
-#include "xe/xe_query.h"
+/**
+ * SUBTEST: basic-flip-vs-dpms
+ * Description: Basic test to valide pageflip with dpms
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ * Functionality: dpms, vblank
+ * Mega feature: General Display Features
+ *
+ * SUBTEST: basic-flip-vs-%s
+ * Description: Basic test to valide pageflip with %arg[1]
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ * Functionality: vblank
+ * Mega feature: General Display Features
+ *
+ * arg[1]:
+ *
+ * @modeset:      modeset
+ * @wf_vblank:    wait for vblank
+ *
+ * SUBTEST: basic-plain-flip
+ * Description: Basic test for validating page flip
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ * Functionality: vblank
+ * Mega feature: General Display Features
+ *
+ * SUBTEST: nonblocking-read
+ * Description: Tests that nonblocking reading fails correctly
+ * Driver requirement: i915, xe
+ * Functionality: vblank
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ */
 
 #define TEST_DPMS		(1 << 0)
 
@@ -1811,34 +1846,6 @@ test:
 		__run_test_on_crtc_set(o, crtc_idxs, crtc_count, duration_ms);
 }
 
-/**
- * SUBTEST: basic-flip-vs-dpms
- * Description: Basic test to valide pageflip with dpms
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: dpms, vblank
- * Mega feature: General Display Features
- *
- * SUBTEST: basic-flip-vs-%s
- * Description: Basic test to valide pageflip with %arg[1]
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: vblank
- * Mega feature: General Display Features
- *
- * arg[1]:
- *
- * @modeset:      modeset
- * @wf_vblank:    wait for vblank
- *
- * SUBTEST: basic-plain-flip
- * Description: Basic test for validating page flip
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: vblank
- * Mega feature: General Display Features
- */
-
 static void run_test(int duration, int flags)
 {
 	struct test_output o;
@@ -2023,14 +2030,6 @@ static void kms_flip_exit_handler(int sig)
 		kmstest_set_connector_dpms(drm_fd, last_connector, DRM_MODE_DPMS_ON);
 }
 
-/**
- * SUBTEST: nonblocking-read
- * Description: Tests that nonblocking reading fails correctly
- * Driver requirement: i915, xe
- * Functionality: vblank
- * Mega feature: General Display Features
- * Test category: functionality test
- */
 static void test_nonblocking_read(int in)
 {
 	char buffer[1024];
diff --git a/tests/kms_flip_event_leak.c b/tests/kms_flip_event_leak.c
index f526a0ca9..a668b1da3 100644
--- a/tests/kms_flip_event_leak.c
+++ b/tests/kms_flip_event_leak.c
@@ -22,6 +22,12 @@
  *
  */
 
+/**
+ * TEST: kms flip event leak
+ * Category: Display
+ * Description: Test to validate flip event leak
+ */
+
 #include "igt.h"
 #include <errno.h>
 #include <stdbool.h>
@@ -32,10 +38,6 @@
 #include "xe/xe_query.h"
 
 /**
- * TEST: kms flip event leak
- * Category: Display
- * Description: Test to validate flip event leak
- *
  * SUBTEST: basic
  * Description: This test tries to provoke the kernel into leaking a pending
  *              page flip event when the fd is closed before the flip has
diff --git a/tests/kms_force_connector_basic.c b/tests/kms_force_connector_basic.c
index e3b9034db..55e6a7767 100644
--- a/tests/kms_force_connector_basic.c
+++ b/tests/kms_force_connector_basic.c
@@ -30,6 +30,36 @@
 
 #include "igt.h"
 
+/**
+ * SUBTEST: force-load-detect
+ * Description: Test to detect forced load.
+ * Driver requirement: i915
+ * Functionality: force_connector, vga
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: force-connector-state
+ * Description: Test to check the forced connector state
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ * Functionality: force_connector
+ * Mega feature: General Display Features
+ *
+ * SUBTEST: force-edid
+ * Description: Test to check the values after forcing edid
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ * Functionality: force_connector
+ * Mega feature: General Display Features
+ *
+ * SUBTEST: prune-stale-modes
+ * Description: Tests pruning of stale modes
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ * Functionality: force_connector
+ * Mega feature: General Display Features
+ */
+
 IGT_TEST_DESCRIPTION("Check the debugfs force connector/edid features work"
 		     " correctly.");
 
@@ -69,14 +99,6 @@ static void reset_connectors(void)
 	drm_close_driver(drm_fd);
 }
 
-/**
- * SUBTEST: force-load-detect
- * Description: Test to detect forced load.
- * Driver requirement: i915
- * Functionality: force_connector, vga
- * Mega feature: General Display Features
- * Test category: functionality test
- */
 static void force_load_detect(int drm_fd, drmModeConnectorPtr connector, drmModeRes *res)
 {
 	int i, j, w = 64, h = 64;
@@ -165,14 +187,6 @@ static void force_load_detect(int drm_fd, drmModeConnectorPtr connector, drmMode
 	}
 }
 
-/**
- * SUBTEST: force-connector-state
- * Description: Test to check the forced connector state
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: force_connector
- * Mega feature: General Display Features
- */
 static void force_connector_state(int drm_fd, drmModeConnectorPtr connector)
 {
 	igt_display_t display;
@@ -212,14 +226,6 @@ static void force_connector_state(int drm_fd, drmModeConnectorPtr connector)
 	igt_display_fini(&display);
 }
 
-/**
- * SUBTEST: force-edid
- * Description: Test to check the values after forcing edid
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: force_connector
- * Mega feature: General Display Features
- */
 static void force_edid(int drm_fd, drmModeConnectorPtr connector)
 {
 	drmModeConnector *temp;
@@ -261,14 +267,6 @@ static void force_edid(int drm_fd, drmModeConnectorPtr connector)
 
 }
 
-/**
- * SUBTEST: prune-stale-modes
- * Description: Tests pruning of stale modes
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: force_connector
- * Mega feature: General Display Features
- */
 static void prune_stale_modes(int drm_fd, drmModeConnectorPtr connector)
 {
 	int i;
diff --git a/tests/kms_getfb.c b/tests/kms_getfb.c
index 059f66d99..b4a155e2d 100644
--- a/tests/kms_getfb.c
+++ b/tests/kms_getfb.c
@@ -32,6 +32,7 @@
  * Category: Display
  * Description: Tests GETFB and GETFB2 ioctls.
  */
+
 #include "igt.h"
 #include <unistd.h>
 #include <stdlib.h>
@@ -50,6 +51,88 @@
 #include "xe/xe_query.h"
 #include "xe/xe_ioctl.h"
 
+/**
+ * SUBTEST: getfb-handle-%s
+ * Description: Tests error handling %arg[1]
+ * Driver requirement: i915, xe
+ * Functionality: kms_gem_interop
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @closed:       when passing a handle that has been closed.
+ * @not-fb:       when passing an invalid handle.
+ * @valid:        when passing an valid handle.
+ * @zero:         for a zero'd input.
+ */
+
+/**
+ * SUBTEST: getfb-reject-ccs
+ * Description: Tests error handling while requesting CCS buffers it should
+ *              refuse because getfb supports returning a single buffer handle.
+ * Driver requirement: i915, xe
+ * Functionality: ccs, kms_gem_interop, tiling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: getfb-%s-different-handles
+ * Description: Tests error handling while requesting for two different handles
+ *              from %arg[1].
+ * Driver requirement: i915, xe
+ * Functionality: kms_gem_interop
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @addfb:           same fd
+ * @repeated:        different fd
+ */
+
+/**
+ * SUBTEST: getfb2-accept-ccs
+ * Description: Tests outputs are correct when retrieving a CCS framebuffer.
+ * Driver requirement: i915, xe
+ * Functionality: ccs, kms_gem_interop, tiling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: getfb2-into-addfb2
+ * Description: Output check by passing the output of GETFB2 into ADDFB2.
+ * Driver requirement: i915, xe
+ * Functionality: kms_gem_interop
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: getfb2-handle-%s
+ * Description: Tests error handling %arg[1].
+ * Driver requirement: i915, xe
+ * Functionality: kms_gem_interop
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @closed:                  when passing a handle that has been closed
+ * @not-fb:                  when passing an invalid handle
+ * @zero:                    for a zero'd input
+ */
+
+/**
+ * SUBTEST: %s-handle-protection
+ * Description: Make sure %arg[1] return handles if caller is non-root or non-master.
+ * Driver requirement: i915, xe
+ * Functionality: kms_gem_interop
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @getfb:      GETFB ioctl
+ * @getfb2:     GETFB2 ioctl
+ */
+
 IGT_TEST_DESCRIPTION("Tests GETFB and GETFB2 ioctls.");
 
 static bool has_getfb_iface(int fd)
@@ -178,21 +261,6 @@ static uint32_t get_any_prop_id(int fd)
 	return 0;
 }
 
-/**
- * SUBTEST: getfb-handle-%s
- * Description: Tests error handling %arg[1]
- * Driver requirement: i915, xe
- * Functionality: kms_gem_interop
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @closed:       when passing a handle that has been closed.
- * @not-fb:       when passing an invalid handle.
- * @valid:        when passing an valid handle.
- * @zero:         for a zero'd input.
- */
 static void test_handle_input(int fd)
 {
 	struct drm_mode_fb_cmd2 add = {};
@@ -248,28 +316,6 @@ static void test_handle_input(int fd)
 		gem_close(fd, add.handles[0]);
 }
 
-/**
- * SUBTEST: getfb-reject-ccs
- * Description: Tests error handling while requesting CCS buffers it should
- *              refuse because getfb supports returning a single buffer handle.
- * Driver requirement: i915, xe
- * Functionality: ccs, kms_gem_interop, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: getfb-%s-different-handles
- * Description: Tests error handling while requesting for two different handles
- *              from %arg[1].
- * Driver requirement: i915, xe
- * Functionality: kms_gem_interop
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @addfb:           same fd
- * @repeated:        different fd
- */
 static void test_duplicate_handles(int fd)
 {
 	struct drm_mode_fb_cmd2 add = {};
@@ -335,34 +381,6 @@ static void test_duplicate_handles(int fd)
 	}
 }
 
-/**
- * SUBTEST: getfb2-accept-ccs
- * Description: Tests outputs are correct when retrieving a CCS framebuffer.
- * Driver requirement: i915, xe
- * Functionality: ccs, kms_gem_interop, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: getfb2-into-addfb2
- * Description: Output check by passing the output of GETFB2 into ADDFB2.
- * Driver requirement: i915, xe
- * Functionality: kms_gem_interop
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: getfb2-handle-%s
- * Description: Tests error handling %arg[1].
- * Driver requirement: i915, xe
- * Functionality: kms_gem_interop
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @closed:                  when passing a handle that has been closed
- * @not-fb:                  when passing an invalid handle
- * @zero:                    for a zero'd input
- */
 static void test_getfb2(int fd)
 {
 	struct drm_mode_fb_cmd2 add_basic = {};
@@ -471,19 +489,6 @@ static void test_getfb2(int fd)
 	}
 }
 
-/**
- * SUBTEST: %s-handle-protection
- * Description: Make sure %arg[1] return handles if caller is non-root or non-master.
- * Driver requirement: i915, xe
- * Functionality: kms_gem_interop
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @getfb:      GETFB ioctl
- * @getfb2:     GETFB2 ioctl
- */
 static void test_handle_protection(void) {
 	int non_master_fd;
 	struct drm_mode_fb_cmd2 non_master_add = {};
diff --git a/tests/kms_hdmi_inject.c b/tests/kms_hdmi_inject.c
index 61f62fa7c..3a279e2c9 100644
--- a/tests/kms_hdmi_inject.c
+++ b/tests/kms_hdmi_inject.c
@@ -22,6 +22,14 @@
  *
  */
 
+/**
+ * TEST: kms hdmi inject
+ * Category: Display
+ * Description: Test that in-kernel EDID parsing is producing expected results
+ *              by forcing a HDMI connector with a known EDID and checking that
+ *              the metadata exposed to user space matches.
+ */
+
 #include "config.h"
 
 #include <dirent.h>
@@ -32,12 +40,6 @@
 #include "xe/xe_query.h"
 
 /**
- * TEST: kms hdmi inject
- * Category: Display
- * Description: Test that in-kernel EDID parsing is producing expected results
- *              by forcing a HDMI connector with a known EDID and checking that
- *              the metadata exposed to user space matches.
- *
  * SUBTEST: inject-4k
  * Description: Make sure that 4K modes exposed by DRM match the forced EDID and
  *              modesetting using it succeed.
diff --git a/tests/kms_hdr.c b/tests/kms_hdr.c
index ed98a0c26..215f81892 100644
--- a/tests/kms_hdr.c
+++ b/tests/kms_hdr.c
@@ -25,12 +25,76 @@
  * Category: Display
  * Description: Test HDR metadata interfaces and bpc switch
  */
+
 #include "igt.h"
 #include <fcntl.h>
 #include <termios.h>
 #include <unistd.h>
 #include "igt_edid.h"
 
+/**
+ * SUBTEST: bpc-switch
+ * Description: Tests switching between different display output bpc modes
+ * Driver requirement: i915, xe
+ * Functionality: colorspace, hdr
+ * Mega feature: HDR
+ * Test category: functionality test
+ *
+ * SUBTEST: bpc-switch-dpms
+ * Description: Tests switching between different display output bpc modes with dpms
+ * Driver requirement: i915, xe
+ * Functionality: colorspace, dpms, hdr
+ * Mega feature: HDR
+ * Test category: functionality test
+ *
+ * SUBTEST: bpc-switch-suspend
+ * Description: Tests switching between different display output bpc modes with suspend
+ * Driver requirement: i915, xe
+ * Functionality: colorspace, hdr, suspend
+ * Mega feature: HDR
+ * Test category: functionality test
+ *
+ * SUBTEST: invalid-hdr
+ * Description: Test to ensure HDR is not enabled on non-HDR panel
+ * Driver requirement: i915, xe
+ * Functionality: colorspace, hdr
+ * Mega feature: HDR
+ * Test category: functionality test
+ *
+ * SUBTEST: invalid-metadata-sizes
+ * Description: Tests invalid HDR metadata sizes
+ * Driver requirement: i915, xe
+ * Functionality: colorspace, hdr
+ * Mega feature: HDR
+ * Test category: functionality test
+ *
+ * SUBTEST: static-toggle-dpms
+ * Description: Tests static toggle with dpms
+ * Driver requirement: i915, xe
+ * Functionality: colorspace, dpms, hdr
+ * Mega feature: HDR
+ * Test category: functionality test
+ *
+ * SUBTEST: static-toggle-suspend
+ * Description: Tests static toggle with suspend
+ * Driver requirement: i915, xe
+ * Functionality: colorspace, hdr, suspend
+ * Mega feature: HDR
+ * Test category: functionality test
+ *
+ * SUBTEST: static-%s
+ * Description: Tests %arg[1].
+ * Driver requirement: i915, xe
+ * Functionality: colorspace, hdr
+ * Mega feature: HDR
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @swap:                    swapping static HDR metadata
+ * @toggle:                  entering and exiting HDR mode
+ */
+
 IGT_TEST_DESCRIPTION("Test HDR metadata interfaces and bpc switch");
 
 /* HDR EDID parsing. */
@@ -213,28 +277,6 @@ static bool has_max_bpc(igt_output_t *output)
 	       igt_output_get_prop(output, IGT_CONNECTOR_MAX_BPC);
 }
 
-/**
- * SUBTEST: bpc-switch
- * Description: Tests switching between different display output bpc modes
- * Driver requirement: i915, xe
- * Functionality: colorspace, hdr
- * Mega feature: HDR
- * Test category: functionality test
- *
- * SUBTEST: bpc-switch-dpms
- * Description: Tests switching between different display output bpc modes with dpms
- * Driver requirement: i915, xe
- * Functionality: colorspace, dpms, hdr
- * Mega feature: HDR
- * Test category: functionality test
- *
- * SUBTEST: bpc-switch-suspend
- * Description: Tests switching between different display output bpc modes with suspend
- * Driver requirement: i915, xe
- * Functionality: colorspace, hdr, suspend
- * Mega feature: HDR
- * Test category: functionality test
- */
 static void test_bpc_switch(data_t *data, uint32_t flags)
 {
 	igt_display_t *display = &data->display;
@@ -588,47 +630,6 @@ static bool has_hdr(igt_output_t *output)
 	return igt_output_has_prop(output, IGT_CONNECTOR_HDR_OUTPUT_METADATA);
 }
 
-/**
- * SUBTEST: invalid-hdr
- * Description: Test to ensure HDR is not enabled on non-HDR panel
- * Driver requirement: i915, xe
- * Functionality: colorspace, hdr
- * Mega feature: HDR
- * Test category: functionality test
- *
- * SUBTEST: invalid-metadata-sizes
- * Description: Tests invalid HDR metadata sizes
- * Driver requirement: i915, xe
- * Functionality: colorspace, hdr
- * Mega feature: HDR
- * Test category: functionality test
- *
- * SUBTEST: static-toggle-dpms
- * Description: Tests static toggle with dpms
- * Driver requirement: i915, xe
- * Functionality: colorspace, dpms, hdr
- * Mega feature: HDR
- * Test category: functionality test
- *
- * SUBTEST: static-toggle-suspend
- * Description: Tests static toggle with suspend
- * Driver requirement: i915, xe
- * Functionality: colorspace, hdr, suspend
- * Mega feature: HDR
- * Test category: functionality test
- *
- * SUBTEST: static-%s
- * Description: Tests %arg[1].
- * Driver requirement: i915, xe
- * Functionality: colorspace, hdr
- * Mega feature: HDR
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @swap:                    swapping static HDR metadata
- * @toggle:                  entering and exiting HDR mode
- */
 static void test_hdr(data_t *data, uint32_t flags)
 {
 	igt_display_t *display = &data->display;
diff --git a/tests/kms_invalid_mode.c b/tests/kms_invalid_mode.c
index 55b7fea8f..77cf4d609 100644
--- a/tests/kms_invalid_mode.c
+++ b/tests/kms_invalid_mode.c
@@ -28,6 +28,7 @@
  * Description: Make sure all modesets are rejected when the requested mode is
  *              invalid
  */
+
 #include "igt.h"
 #include <limits.h>
 #include <stdbool.h>
diff --git a/tests/kms_multipipe_modeset.c b/tests/kms_multipipe_modeset.c
index a968a3513..e67392668 100644
--- a/tests/kms_multipipe_modeset.c
+++ b/tests/kms_multipipe_modeset.c
@@ -24,12 +24,15 @@
  *  Karthik B S <karthik.b.s@intel.com>
  */
 
-#include "igt.h"
 /**
  * TEST: kms multipipe modeset
  * Category: Display
  * Description: Test simultaneous modeset on all the supported pipes
- *
+ */
+
+#include "igt.h"
+
+/**
  * SUBTEST: basic-max-pipe-crc-check
  * Description: Verify if simultaneous modesets on all the supported pipes is
  *              successful. Validate using CRC verification
diff --git a/tests/kms_panel_fitting.c b/tests/kms_panel_fitting.c
index a583e1435..af0c756ed 100644
--- a/tests/kms_panel_fitting.c
+++ b/tests/kms_panel_fitting.c
@@ -22,15 +22,18 @@
  *
  */
 
+/**
+ * TEST: kms panel fitting
+ * Category: Display
+ * Description: Test display panel fitting
+ */
+
 #include "igt.h"
 #include <limits.h>
 #include <math.h>
 #include <sys/stat.h>
+
 /**
- * TEST: kms panel fitting
- * Category: Display
- * Description: Test display panel fitting
- *
  * SUBTEST: atomic-fastset
  * Description: Tests panel fitting usages with atomic fastset.
  * Driver requirement: i915, xe
diff --git a/tests/kms_pipe_crc_basic.c b/tests/kms_pipe_crc_basic.c
index 94252415b..4fed582b4 100644
--- a/tests/kms_pipe_crc_basic.c
+++ b/tests/kms_pipe_crc_basic.c
@@ -36,6 +36,81 @@
 #include <string.h>
 #include <fcntl.h>
 
+/**
+ * SUBTEST: bad-source
+ * Description: Tests error handling when the bad source is set.
+ * Driver requirement: i915, xe
+ * Functionality: crc
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: read-crc
+ * Description: Test for pipe CRC reads
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ * Functionality: crc
+ * Mega feature: General Display Features
+ *
+ * SUBTEST: read-crc-frame-sequence
+ * Description: Tests the pipe CRC read and ensure frame sequence
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ * Functionality: crc
+ * Mega feature: General Display Features
+ *
+ * SUBTEST: nonblocking-crc
+ * Description: Test for O_NONBLOCK CRC reads
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ * Functionality: crc
+ * Mega feature: General Display Features
+ *
+ * SUBTEST: nonblocking-crc-frame-sequence
+ * Description: Test for O_NONBLOCK CRC reads and ensure frame sequence
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ * Functionality: crc
+ * Mega feature: General Display Features
+ *
+ * SUBTEST: suspend-read-crc
+ * Description: Suspend test for pipe CRC reads
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ * Functionality: crc, suspend
+ * Mega feature: General Display Features
+ *
+ * SUBTEST: hang-read-crc
+ * Description: Hang test for pipe CRC read
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ * Functionality: crc, hang
+ * Mega feature: General Display Features
+ */
+
+/**
+ * SUBTEST: compare-crc-sanitycheck-%s
+ * Description: Basic sanity check for CRC mismatches with %arg[1]
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ * Functionality: crc, pixel_format
+ * Mega feature: General Display Features
+ *
+ * arg[1]:
+ *
+ * @xr24:	XR24 format
+ * @nv12:	NV12 format
+ */
+
+/**
+ * SUBTEST: disable-crc-after-crtc
+ * Description: Check that disabling CRCs on a CRTC after having disabled the
+ *              CRTC does not cause issues.
+ * Driver requirement: i915, xe
+ * Functionality: crc
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ */
+
 static bool extended;
 static enum pipe active_pipes[IGT_MAX_PIPES];
 static uint32_t last_pipe;
@@ -65,14 +140,6 @@ static bool simulation_constraint(enum pipe pipe)
 	return false;
 }
 
-/**
- * SUBTEST: bad-source
- * Description: Tests error handling when the bad source is set.
- * Driver requirement: i915, xe
- * Functionality: crc
- * Mega feature: General Display Features
- * Test category: functionality test
- */
 static void test_bad_source(data_t *data)
 {
 	errno = 0;
@@ -94,49 +161,6 @@ enum {
 	TEST_HANG = 1 << 3,
 };
 
-/**
- * SUBTEST: read-crc
- * Description: Test for pipe CRC reads
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: crc
- * Mega feature: General Display Features
- *
- * SUBTEST: read-crc-frame-sequence
- * Description: Tests the pipe CRC read and ensure frame sequence
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: crc
- * Mega feature: General Display Features
- *
- * SUBTEST: nonblocking-crc
- * Description: Test for O_NONBLOCK CRC reads
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: crc
- * Mega feature: General Display Features
- *
- * SUBTEST: nonblocking-crc-frame-sequence
- * Description: Test for O_NONBLOCK CRC reads and ensure frame sequence
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: crc
- * Mega feature: General Display Features
- *
- * SUBTEST: suspend-read-crc
- * Description: Suspend test for pipe CRC reads
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: crc, suspend
- * Mega feature: General Display Features
- *
- * SUBTEST: hang-read-crc
- * Description: Hang test for pipe CRC read
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: crc, hang
- * Mega feature: General Display Features
- */
 static void test_read_crc(data_t *data, enum pipe pipe,
 			  igt_output_t *output, unsigned flags)
 {
@@ -234,20 +258,6 @@ static void test_read_crc(data_t *data, enum pipe pipe,
 	igt_display_commit(display);
 }
 
-/**
- * SUBTEST: compare-crc-sanitycheck-%s
- * Description: Basic sanity check for CRC mismatches with %arg[1]
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: crc, pixel_format
- * Mega feature: General Display Features
- *
- * arg[1]:
- *
- * @xr24:	XR24 format
- * @nv12:	NV12 format
- */
-
 /*
  * CRC-sanity test, to make sure there would be no CRC mismatches
  *
@@ -313,15 +323,6 @@ static void test_compare_crc(data_t *data, enum pipe pipe, igt_output_t *output,
 	igt_remove_fb(data->drm_fd, &fb1);
 }
 
-/**
- * SUBTEST: disable-crc-after-crtc
- * Description: Check that disabling CRCs on a CRTC after having disabled the
- *              CRTC does not cause issues.
- * Driver requirement: i915, xe
- * Functionality: crc
- * Mega feature: General Display Features
- * Test category: functionality test
- */
 static void test_disable_crc_after_crtc(data_t *data, enum pipe pipe,
 					igt_output_t *output)
 {
diff --git a/tests/kms_plane.c b/tests/kms_plane.c
index c561bf6ba..17550e168 100644
--- a/tests/kms_plane.c
+++ b/tests/kms_plane.c
@@ -29,6 +29,7 @@
  * Category: Display
  * Description: Testes for KMS Plane
  */
+
 #include "igt.h"
 #include "igt_vec.h"
 #include <errno.h>
@@ -37,6 +38,73 @@
 #include <string.h>
 #include "xe/xe_query.h"
 
+/**
+ * SUBTEST: plane-position-%s
+ * Description: Verify plane position using two planes to create a %arg[1]
+ * Driver requirement: i915, xe
+ * Functionality: plane
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: plane-position-hole-dpms
+ * Description: Verify plane position using two planes to create a partially
+ *              covered screen and check for DPMS
+ * Driver requirement: i915, xe
+ * Functionality: dpms, plane
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @covered:           fully covered screen
+ * @hole:              partially covered screen
+ */
+
+/**
+ * SUBTEST: plane-panning-%s
+ * Description: Verify plane panning at %arg[1] using primary plane
+ * Driver requirement: i915, xe
+ * Functionality: plane
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: plane-panning-bottom-right-suspend
+ * Description: Verify plane panning at bottom-right position with suspend using
+ *              primary plane
+ * Driver requirement: i915, xe
+ * Functionality: plane, suspend
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @bottom-right:               bottom-right position
+ * @top-left:                   top-left position
+ */
+
+/**
+ * SUBTEST: pixel-%s
+ * Description: verify the pixel formats for given plane and pipe
+ * Driver requirement: i915, xe
+ * Functionality: pixel_format, plane
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @format:
+ * @format-source-clamping:          with source clamping
+ */
+
+/**
+ * SUBTEST: planar-pixel-format-settings
+ * Description: verify planar settings for pixel format are handled correctly
+ * Driver requirement: i915, xe
+ * Functionality: pixel_format, plane
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ */
+
 /*
  * Throw away enough lsbs in pixel formats tests
  * to get a match despite some differences between
@@ -287,27 +355,6 @@ test_plane_position_with_output(data_t *data,
 	igt_remove_fb(data->drm_fd, &sprite_fb);
 }
 
-/**
- * SUBTEST: plane-position-%s
- * Description: Verify plane position using two planes to create a %arg[1]
- * Driver requirement: i915, xe
- * Functionality: plane
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: plane-position-hole-dpms
- * Description: Verify plane position using two planes to create a partially
- *              covered screen and check for DPMS
- * Driver requirement: i915, xe
- * Functionality: dpms, plane
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @covered:           fully covered screen
- * @hole:              partially covered screen
- */
 static void
 test_plane_position(data_t *data, enum pipe pipe)
 {
@@ -416,27 +463,6 @@ test_plane_panning_with_output(data_t *data,
 	igt_remove_fb(data->drm_fd, &primary_fb);
 }
 
-/**
- * SUBTEST: plane-panning-%s
- * Description: Verify plane panning at %arg[1] using primary plane
- * Driver requirement: i915, xe
- * Functionality: plane
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: plane-panning-bottom-right-suspend
- * Description: Verify plane panning at bottom-right position with suspend using
- *              primary plane
- * Driver requirement: i915, xe
- * Functionality: plane, suspend
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @bottom-right:               bottom-right position
- * @top-left:                   top-left position
- */
 static void
 test_plane_panning(data_t *data, enum pipe pipe)
 {
@@ -1162,19 +1188,6 @@ static bool skip_plane(data_t *data, igt_plane_t *plane)
 	return index != 0 && index != 3 && index != 5;
 }
 
-/**
- * SUBTEST: pixel-%s
- * Description: verify the pixel formats for given plane and pipe
- * Driver requirement: i915, xe
- * Functionality: pixel_format, plane
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @format:
- * @format-source-clamping:          with source clamping
- */
 static void
 test_pixel_formats(data_t *data, enum pipe pipe)
 {
@@ -1231,14 +1244,6 @@ test_pixel_formats(data_t *data, enum pipe pipe)
 	igt_assert_f(result, "At least one CRC mismatch happened\n");
 }
 
-/**
- * SUBTEST: planar-pixel-format-settings
- * Description: verify planar settings for pixel format are handled correctly
- * Driver requirement: i915, xe
- * Functionality: pixel_format, plane
- * Mega feature: General Display Features
- * Test category: functionality test
- */
 static void test_planar_settings(data_t *data)
 {
 	enum pipe pipe = PIPE_A;
diff --git a/tests/kms_plane_alpha_blend.c b/tests/kms_plane_alpha_blend.c
index f023fae74..d37407150 100644
--- a/tests/kms_plane_alpha_blend.c
+++ b/tests/kms_plane_alpha_blend.c
@@ -29,8 +29,56 @@
  * Category: Display
  * Description: Test plane alpha and blending mode properties
  */
+
 #include "igt.h"
 
+/**
+ * SUBTEST: alpha-%s
+ * Description: Test to %arg[1]
+ * Driver requirement: i915, xe
+ * Functionality: plane
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @7efc:                validate alpha values 0x7e and 0xfc are swappable on
+ *                       pre-multiplied blend mode.
+ * @basic:               basic plane alpha properties.
+ * @opaque-fb:           alpha properties with opaque fb.
+ * @transparent-fb:      alpha property with transparent fb.
+ */
+
+/**
+ * SUBTEST: coverage-vs-premult-vs-constant
+ * Description: Tests pipe coverage blending properties.
+ * Driver requirement: i915, xe
+ * Functionality: plane
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: coverage-7efc
+ * Description: Uses alpha values 0x7e and 0xfc to validate fg.alpha and
+ *              plane_alpha are swappable on coverage blend mode.
+ * Driver requirement: i915, xe
+ * Functionality: plane
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: constant-alpha-%s
+ * Description: Tests plane alpha and blending properties with %arg[1].
+ * Driver requirement: i915, xe
+ * Functionality: plane
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @max:            maximum alpha value
+ * @mid:            medium  alpha value
+ * @min:            minimum alpha value
+ */
+
 IGT_TEST_DESCRIPTION("Test plane alpha and blending mode properties");
 
 static bool extended;
@@ -482,52 +530,6 @@ static void coverage_premult_constant(data_t *data, enum pipe pipe, igt_plane_t
 	igt_pipe_crc_stop(data->pipe_crc);
 }
 
-/**
- * SUBTEST: alpha-%s
- * Description: Test to %arg[1]
- * Driver requirement: i915, xe
- * Functionality: plane
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @7efc:                validate alpha values 0x7e and 0xfc are swappable on
- *                       pre-multiplied blend mode.
- * @basic:               basic plane alpha properties.
- * @opaque-fb:           alpha properties with opaque fb.
- * @transparent-fb:      alpha property with transparent fb.
- */
-
-/**
- * SUBTEST: coverage-vs-premult-vs-constant
- * Description: Tests pipe coverage blending properties.
- * Driver requirement: i915, xe
- * Functionality: plane
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: coverage-7efc
- * Description: Uses alpha values 0x7e and 0xfc to validate fg.alpha and
- *              plane_alpha are swappable on coverage blend mode.
- * Driver requirement: i915, xe
- * Functionality: plane
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: constant-alpha-%s
- * Description: Tests plane alpha and blending properties with %arg[1].
- * Driver requirement: i915, xe
- * Functionality: plane
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @max:            maximum alpha value
- * @mid:            medium  alpha value
- * @min:            minimum alpha value
- */
 static void run_test_on_pipe_planes(data_t *data, enum pipe pipe, igt_output_t *output,
 				    bool blend, bool must_multiply,
 				    void(*test)(data_t *, enum pipe, igt_plane_t *))
diff --git a/tests/kms_plane_cursor.c b/tests/kms_plane_cursor.c
index bc89414d8..55ddffe44 100644
--- a/tests/kms_plane_cursor.c
+++ b/tests/kms_plane_cursor.c
@@ -20,13 +20,15 @@
  * OTHER DEALINGS IN THE SOFTWARE.
  */
 
-#include "igt.h"
-
 /**
  * TEST: kms plane cursor
  * Category: Display
  * Description: Tests cursor interactions with primary and overlay planes.
- *
+ */
+
+#include "igt.h"
+
+/**
  * SUBTEST: overlay
  * Description: Tests atomic cursor positioning on primary plane and overlay plane
  * Driver requirement: i915, xe
diff --git a/tests/kms_plane_lowres.c b/tests/kms_plane_lowres.c
index 3bb92cdd9..13158bf99 100644
--- a/tests/kms_plane_lowres.c
+++ b/tests/kms_plane_lowres.c
@@ -28,6 +28,7 @@
  * Description: Test atomic mode setting with a plane by switching between high
  *              and low resolutions
  */
+
 #include "igt.h"
 #include "drmtest.h"
 #include <errno.h>
@@ -36,6 +37,31 @@
 #include <string.h>
 #include <time.h>
 
+/**
+ * SUBTEST: tiling-none
+ * Description: Tests the visibility of the planes when switching between high
+ *              and low resolution with Linear buffer (no tiling)
+ * Driver requirement: i915, xe
+ * Functionality: plane
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: tiling-%s
+ * Description: Tests the visibility of the planes when switching between high
+ *              and low resolution with %arg[1]
+ * Driver requirement: i915, xe
+ * Functionality: plane, tiling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @4:           4-tiling
+ * @x:           x-tiling
+ * @y:           y-tiling
+ * @yf:          yf-tiling
+ */
+
 IGT_TEST_DESCRIPTION("Test atomic mode setting with a plane by switching between high and low resolutions");
 
 #define SDR_PLANE_BASE 3
@@ -267,30 +293,6 @@ static void test_cleanup(data_t *data)
 	igt_display_commit2(&data->display, COMMIT_ATOMIC);
 }
 
-/**
- * SUBTEST: tiling-none
- * Description: Tests the visibility of the planes when switching between high
- *              and low resolution with Linear buffer (no tiling)
- * Driver requirement: i915, xe
- * Functionality: plane
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: tiling-%s
- * Description: Tests the visibility of the planes when switching between high
- *              and low resolution with %arg[1]
- * Driver requirement: i915, xe
- * Functionality: plane, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @4:           4-tiling
- * @x:           x-tiling
- * @y:           y-tiling
- * @yf:          yf-tiling
- */
 static void run_test(data_t *data, uint64_t modifier)
 {
 	enum pipe pipe;
diff --git a/tests/kms_plane_multiple.c b/tests/kms_plane_multiple.c
index 28791560f..6239e225a 100644
--- a/tests/kms_plane_multiple.c
+++ b/tests/kms_plane_multiple.c
@@ -27,6 +27,7 @@
  * Category: Display
  * Description: Test atomic mode setting with multiple planes.
  */
+
 #include "igt.h"
 #include "drmtest.h"
 #include <errno.h>
@@ -35,6 +36,33 @@
 #include <string.h>
 #include <time.h>
 
+/**
+ * SUBTEST: tiling-none
+ * Description: Check that the kernel handles atomic updates of multiple planes
+ *              correctly by changing their geometry and making sure the changes
+ *              are reflected immediately after each commit.
+ * Driver requirement: i915, xe
+ * Functionality: plane
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: tiling-%s
+ * Description: Check that the kernel handles atomic updates of multiple planes
+ *              correctly by changing their geometry and making sure the changes
+ *              are reflected immediately after each commit.
+ * Driver requirement: i915, xe
+ * Functionality: plane, tiling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @4:           4-tiling
+ * @x:           x-tiling
+ * @y:           y-tiling
+ * @yf:          yf-tiling
+ */
+
 IGT_TEST_DESCRIPTION("Test atomic mode setting with multiple planes.");
 
 #define SIZE_PLANE      256
@@ -378,32 +406,6 @@ test_plane_position(data_t *data, enum pipe pipe, igt_output_t *output, uint64_t
 					n_planes, modifier);
 }
 
-/**
- * SUBTEST: tiling-none
- * Description: Check that the kernel handles atomic updates of multiple planes
- *              correctly by changing their geometry and making sure the changes
- *              are reflected immediately after each commit.
- * Driver requirement: i915, xe
- * Functionality: plane
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: tiling-%s
- * Description: Check that the kernel handles atomic updates of multiple planes
- *              correctly by changing their geometry and making sure the changes
- *              are reflected immediately after each commit.
- * Driver requirement: i915, xe
- * Functionality: plane, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @4:           4-tiling
- * @x:           x-tiling
- * @y:           y-tiling
- * @yf:          yf-tiling
- */
 static void run_test(data_t *data, uint64_t modifier)
 {
 	enum pipe pipe;
diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c
index 67da91b1e..e175c75d8 100644
--- a/tests/kms_plane_scaling.c
+++ b/tests/kms_plane_scaling.c
@@ -27,10 +27,250 @@
  * Category: Display
  * Description: Test display plane scaling
  */
+
 #include "igt.h"
 #include "igt_vec.h"
 #include <math.h>
 
+/**
+ * SUBTEST: plane-scaler-unity-scaling-with-modifiers
+ * Description: Tests scaling with modifiers, unity scaling.
+ * Driver requirement: i915, xe
+ * Functionality: plane, scaling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: plane-scaler-with-clipping-clamping-modifiers
+ * Description: Tests scaling with clipping and clamping, modifiers.
+ * Driver requirement: i915, xe
+ * Functionality: plane, scaling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: plane-upscale-%s-with-modifiers
+ * Description: Tests upscaling with modifiers %arg[1].
+ * Driver requirement: i915, xe
+ * Functionality: plane, scaling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @20x20:          from 20x20 fb
+ * @factor-0-25:    for 0.25 scaling factor
+ */
+
+/**
+ * SUBTEST: plane-downscale-factor-%s-with-modifiers
+ * Description: Tests downscaling with modifiers for %arg[1] scaling factor.
+ * Driver requirement: i915, xe
+ * Functionality: plane, scaling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @0-25:   0.25
+ * @0-5:    0.5
+ * @0-75:   0.75
+ */
+
+/**
+ * SUBTEST: plane-scaler-unity-scaling-with-rotation
+ * Description: Tests scaling with rotation, unity scaling.
+ * Driver requirement: i915, xe
+ * Functionality: plane, scaling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: plane-scaler-with-clipping-clamping-rotation
+ * Description: Tests scaling with clipping and clamping, rotation.
+ * Driver requirement: i915, xe
+ * Functionality: plane, scaling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: plane-upscale-%s-with-rotation
+ * Description: Tests upscaling with rotation %arg[1].
+ * Driver requirement: i915, xe
+ * Functionality: plane, scaling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @20x20:          from 20x20 fb
+ * @factor-0-25:    for 0.25 scaling factor
+ */
+
+/**
+ * SUBTEST: plane-downscale-factor-%s-with-rotation
+ * Description: Tests downscaling with rotation for %arg[1] scaling factor.
+ * Driver requirement: i915, xe
+ * Functionality: plane, scaling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @0-25:   0.25
+ * @0-5:    0.5
+ * @0-75:   0.75
+ */
+
+/**
+ * SUBTEST: plane-scaler-unity-scaling-with-pixel-format
+ * Description: Tests scaling with pixel formats, unity scaling.
+ * Driver requirement: i915, xe
+ * Functionality: pixel_formats, plane, scaling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: plane-scaler-with-clipping-clamping-pixel-formats
+ * Description: Tests scaling with clipping and clamping, pixel formats.
+ * Driver requirement: i915, xe
+ * Functionality: pixel_formats, plane, scaling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: plane-upscale-%s-with-pixel-format
+ * Description: Tests upscaling with pixel formats %arg[1].
+ * Driver requirement: i915, xe
+ * Functionality: pixel_formats, plane, scaling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @20x20:          from 20x20 fb
+ * @factor-0-25:    for 0.25 scaling factor
+ */
+
+/**
+ * SUBTEST: plane-downscale-factor-%s-with-pixel-format
+ * Description: Tests downscaling with pixel formats for %arg[1] scaling factor.
+ * Driver requirement: i915, xe
+ * Functionality: pixel_formats, plane, scaling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @0-25:   0.25
+ * @0-5:    0.5
+ * @0-75:   0.75
+ */
+
+/**
+ * SUBTEST: planes-downscale-factor-%s
+ * Description: Tests downscaling of 2 planes for %arg[1] scaling factor.
+ * Driver requirement: i915, xe
+ * Functionality: plane, scaling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @0-25:  0.25
+ * @0-5:   0.5
+ * @0-75:  0.75
+ */
+
+/**
+ * SUBTEST: planes-downscale-factor-%s-%s
+ * Description: Tests downscaling (scaling factor %arg[1]) and upscaling (%arg[2])
+ *              of 2 planes.
+ * Driver requirement: i915, xe
+ * Functionality: plane, scaling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @0-25:  0.25
+ * @0-5:   0.5
+ * @0-75:  0.75
+ *
+ * arg[2]:
+ *
+ * @upscale-20x20:           upscale 20x20
+ * @upscale-factor-0-25:     scaling factor 0.25
+ * @unity-scaling:           Unity
+ */
+
+/**
+ * SUBTEST: planes-scaler-unity-scaling
+ * Description: Tests scaling of 2 planes, unity scaling.
+ * Driver requirement: i915, xe
+ * Functionality: plane, scaling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: planes-upscale-%s
+ * Description: Tests upscaling of 2 planes %arg[1].
+ * Driver requirement: i915, xe
+ * Functionality: plane, scaling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @20x20:          from 20x20 fb
+ * @factor-0-25:    for 0.25 scaling factor
+ */
+
+/**
+ * SUBTEST: planes-%s-downscale-factor-%s
+ * Description: Tests scaling (%arg[1]) and downscaling (scaling factor %arg[2])
+ *              of 2 planes.
+ * Driver requirement: i915, xe
+ * Functionality: plane, scaling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @unity-scaling:           Unity
+ * @upscale-factor-0-25:     scaling factor 0.25
+ * @upscale-20x20:           upscale 20x20
+ *
+ * arg[2]:
+ *
+ * @0-25:  0.25
+ * @0-5:   0.5
+ * @0-75:  0.75
+ */
+
+/**
+ * SUBTEST: invalid-num-scalers
+ * Description: Negative test for number of scalers per pipe.
+ * Driver requirement: i915, xe
+ * Functionality: plane, scaling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: 2x-scaler-multi-pipe
+ * Description: Tests scaling with multi-pipe.
+ * Driver requirement: i915, xe
+ * Functionality: plane, scaling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: invalid-parameters
+ * Description: Test parameters which should not be accepted
+ * Driver requirement: i915, xe
+ * Functionality: plane, scaling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: intel-max-src-size
+ * Description: Test for validating max source size.
+ * Driver requirement: i915, xe
+ * Functionality: plane, scaling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ */
+
 IGT_TEST_DESCRIPTION("Test display plane scaling");
 
 enum scaler_combo_test_type {
@@ -529,48 +769,6 @@ static const uint64_t modifiers[] = {
 	I915_FORMAT_MOD_4_TILED
 };
 
-/**
- * SUBTEST: plane-scaler-unity-scaling-with-modifiers
- * Description: Tests scaling with modifiers, unity scaling.
- * Driver requirement: i915, xe
- * Functionality: plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: plane-scaler-with-clipping-clamping-modifiers
- * Description: Tests scaling with clipping and clamping, modifiers.
- * Driver requirement: i915, xe
- * Functionality: plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: plane-upscale-%s-with-modifiers
- * Description: Tests upscaling with modifiers %arg[1].
- * Driver requirement: i915, xe
- * Functionality: plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @20x20:          from 20x20 fb
- * @factor-0-25:    for 0.25 scaling factor
- */
-
-/**
- * SUBTEST: plane-downscale-factor-%s-with-modifiers
- * Description: Tests downscaling with modifiers for %arg[1] scaling factor.
- * Driver requirement: i915, xe
- * Functionality: plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @0-25:   0.25
- * @0-5:    0.5
- * @0-75:   0.75
- */
 static void test_scaler_with_modifier_pipe(data_t *d,
 					   int width, int height,
 					   bool is_upscale,
@@ -603,48 +801,6 @@ static void test_scaler_with_modifier_pipe(data_t *d,
 	}
 }
 
-/**
- * SUBTEST: plane-scaler-unity-scaling-with-rotation
- * Description: Tests scaling with rotation, unity scaling.
- * Driver requirement: i915, xe
- * Functionality: plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: plane-scaler-with-clipping-clamping-rotation
- * Description: Tests scaling with clipping and clamping, rotation.
- * Driver requirement: i915, xe
- * Functionality: plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: plane-upscale-%s-with-rotation
- * Description: Tests upscaling with rotation %arg[1].
- * Driver requirement: i915, xe
- * Functionality: plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @20x20:          from 20x20 fb
- * @factor-0-25:    for 0.25 scaling factor
- */
-
-/**
- * SUBTEST: plane-downscale-factor-%s-with-rotation
- * Description: Tests downscaling with rotation for %arg[1] scaling factor.
- * Driver requirement: i915, xe
- * Functionality: plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @0-25:   0.25
- * @0-5:    0.5
- * @0-75:   0.75
- */
 static void test_scaler_with_rotation_pipe(data_t *d,
 					   int width, int height,
 					   bool is_upscale,
@@ -678,48 +834,6 @@ static void test_scaler_with_rotation_pipe(data_t *d,
 	}
 }
 
-/**
- * SUBTEST: plane-scaler-unity-scaling-with-pixel-format
- * Description: Tests scaling with pixel formats, unity scaling.
- * Driver requirement: i915, xe
- * Functionality: pixel_formats, plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: plane-scaler-with-clipping-clamping-pixel-formats
- * Description: Tests scaling with clipping and clamping, pixel formats.
- * Driver requirement: i915, xe
- * Functionality: pixel_formats, plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: plane-upscale-%s-with-pixel-format
- * Description: Tests upscaling with pixel formats %arg[1].
- * Driver requirement: i915, xe
- * Functionality: pixel_formats, plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @20x20:          from 20x20 fb
- * @factor-0-25:    for 0.25 scaling factor
- */
-
-/**
- * SUBTEST: plane-downscale-factor-%s-with-pixel-format
- * Description: Tests downscaling with pixel formats for %arg[1] scaling factor.
- * Driver requirement: i915, xe
- * Functionality: pixel_formats, plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @0-25:   0.25
- * @0-5:    0.5
- * @0-75:   0.75
- */
 static void test_scaler_with_pixel_format_pipe(data_t *d, int width, int height, bool is_upscale,
 					       enum pipe pipe, igt_output_t *output)
 {
@@ -855,83 +969,6 @@ static void setup_fb(int fd, int width, int height, struct igt_fb *fb)
 		      fb);
 }
 
-/**
- * SUBTEST: planes-downscale-factor-%s
- * Description: Tests downscaling of 2 planes for %arg[1] scaling factor.
- * Driver requirement: i915, xe
- * Functionality: plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @0-25:  0.25
- * @0-5:   0.5
- * @0-75:  0.75
- */
-/**
- * SUBTEST: planes-downscale-factor-%s-%s
- * Description: Tests downscaling (scaling factor %arg[1]) and upscaling (%arg[2])
- *              of 2 planes.
- * Driver requirement: i915, xe
- * Functionality: plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @0-25:  0.25
- * @0-5:   0.5
- * @0-75:  0.75
- *
- * arg[2]:
- *
- * @upscale-20x20:           upscale 20x20
- * @upscale-factor-0-25:     scaling factor 0.25
- * @unity-scaling:           Unity
- */
-/**
- * SUBTEST: planes-scaler-unity-scaling
- * Description: Tests scaling of 2 planes, unity scaling.
- * Driver requirement: i915, xe
- * Functionality: plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: planes-upscale-%s
- * Description: Tests upscaling of 2 planes %arg[1].
- * Driver requirement: i915, xe
- * Functionality: plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @20x20:          from 20x20 fb
- * @factor-0-25:    for 0.25 scaling factor
- */
-/**
- * SUBTEST: planes-%s-downscale-factor-%s
- * Description: Tests scaling (%arg[1]) and downscaling (scaling factor %arg[2])
- *              of 2 planes.
- * Driver requirement: i915, xe
- * Functionality: plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @unity-scaling:           Unity
- * @upscale-factor-0-25:     scaling factor 0.25
- * @upscale-20x20:           upscale 20x20
- *
- * arg[2]:
- *
- * @0-25:  0.25
- * @0-5:   0.5
- * @0-75:  0.75
- */
-
 static void
 test_planes_scaling_combo(data_t *d, int w1, int h1, int w2, int h2,
 			  enum pipe pipe, igt_output_t *output,
@@ -990,14 +1027,6 @@ test_planes_scaling_combo(data_t *d, int w1, int h1, int w2, int h2,
 	cleanup_fbs(d);
 }
 
-/**
- * SUBTEST: invalid-num-scalers
- * Description: Negative test for number of scalers per pipe.
- * Driver requirement: i915, xe
- * Functionality: plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
- */
 static void
 test_invalid_num_scalers(data_t *d, enum pipe pipe, igt_output_t *output)
 {
@@ -1063,14 +1092,6 @@ test_invalid_num_scalers(data_t *d, enum pipe pipe, igt_output_t *output)
 	cleanup_fbs(d);
 }
 
-/**
- * SUBTEST: 2x-scaler-multi-pipe
- * Description: Tests scaling with multi-pipe.
- * Driver requirement: i915, xe
- * Functionality: plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
- */
 static void test_scaler_with_multi_pipe_plane(data_t *d)
 {
 	igt_display_t *display = &d->display;
@@ -1158,14 +1179,6 @@ static void test_scaler_with_multi_pipe_plane(data_t *d)
 	igt_assert_eq(ret1 && ret2, 0);
 }
 
-/**
- * SUBTEST: invalid-parameters
- * Description: Test parameters which should not be accepted
- * Driver requirement: i915, xe
- * Functionality: plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
- */
 static void invalid_parameter_tests(data_t *d)
 {
 	enum pipe pipe = PIPE_A;
@@ -1248,15 +1261,6 @@ static drmModeModeInfo *find_mode(data_t *data, igt_output_t *output, const uint
 	return mode;
 }
 
-/**
- * SUBTEST: intel-max-src-size
- * Description: Test for validating max source size.
- * Driver requirement: i915, xe
- * Functionality: plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
- */
-
 /*
  *	Max source/destination width/height for intel driver.
  *	These numbers are coming from
diff --git a/tests/kms_prime.c b/tests/kms_prime.c
index b06365cbc..1e985fdc4 100644
--- a/tests/kms_prime.c
+++ b/tests/kms_prime.c
@@ -21,6 +21,12 @@
  * IN THE SOFTWARE.
  */
 
+/**
+ * TEST: kms prime
+ * Category: Display
+ * Description: Prime tests, focusing on KMS side
+ */
+
 #include "igt.h"
 #include "igt_device.h"
 #include "igt_debugfs.h"
@@ -30,11 +36,8 @@
 #include <sys/ioctl.h>
 #include <sys/poll.h>
 #include <time.h>
+
 /**
- * TEST: kms prime
- * Category: Display
- * Description: Prime tests, focusing on KMS side
- *
  * SUBTEST: D3hot
  * Description: Validate pci state of dGPU when dGPU is idle and  scanout is on iGPU
  * Driver requirement: i915, xe
diff --git a/tests/kms_prop_blob.c b/tests/kms_prop_blob.c
index c92525227..199c673e3 100644
--- a/tests/kms_prop_blob.c
+++ b/tests/kms_prop_blob.c
@@ -30,12 +30,61 @@
  * Category: Display
  * Description: Tests behaviour of mass-data 'blob' properties.
  */
+
 #include "igt.h"
 #include <errno.h>
 #include <stdbool.h>
 #include <stdio.h>
 #include <string.h>
 
+/**
+ * SUBTEST: blob-multiple
+ * Description: Test validates destroying multiple properties explicitly works as needed.
+ * Driver requirement: i915, xe
+ * Functionality: kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: blob-prop-%s
+ * Description: Tests validates the %arg[1] of the properties created.
+ * Driver requirement: i915, xe
+ * Functionality: kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @core:        validity
+ * @lifetime:    lifetime
+ * @validate:    blob size
+ */
+
+/**
+ * SUBTEST: basic
+ * Description: Test to ensure property support exists
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ * Functionality: kms_core
+ * Mega feature: General Display Features
+ *
+ * SUBTEST: invalid-%s-%s
+ * Description: Tests error handling when invalid properties are %ar[1] with %arg[2].
+ * Driver requirement: i915, xe
+ * Functionality: kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @get:            fetched
+ * @set:            set
+ *
+ * arg[2]:
+ *
+ * @prop:           blob object type
+ * @prop-any:       object of any type
+ */
+
 IGT_TEST_DESCRIPTION("Tests behaviour of mass-data 'blob' properties.");
 
 static const struct drm_mode_modeinfo test_mode_valid = {
@@ -123,27 +172,6 @@ destroy_prop(int fd, uint32_t prop_id)
 	return 0;
 }
 
-/**
- * SUBTEST: blob-multiple
- * Description: Test validates destroying multiple properties explicitly works as needed.
- * Driver requirement: i915, xe
- * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: blob-prop-%s
- * Description: Tests validates the %arg[1] of the properties created.
- * Driver requirement: i915, xe
- * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @core:        validity
- * @lifetime:    lifetime
- * @validate:    blob size
- */
 static void
 test_validate(int fd)
 {
@@ -264,14 +292,6 @@ test_core(int fd)
 	igt_assert_eq(validate_prop(fd, 0), ENOENT);
 }
 
-/**
- * SUBTEST: basic
- * Description: Test to ensure property support exists
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: kms_core
- * Mega feature: General Display Features
- */
 static void
 test_basic(int fd)
 {
@@ -282,24 +302,6 @@ test_basic(int fd)
 	igt_assert_eq(destroy_prop(fd, prop_id), 0);
 }
 
-/**
- * SUBTEST: invalid-%s-%s
- * Description: Tests error handling when invalid properties are %ar[1] with %arg[2].
- * Driver requirement: i915, xe
- * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @get:            fetched
- * @set:            set
- *
- * arg[2]:
- *
- * @prop:           blob object type
- * @prop-any:       object of any type
- */
 static void prop_tests(int fd)
 {
 	struct drm_mode_obj_get_properties get_props = {};
diff --git a/tests/kms_properties.c b/tests/kms_properties.c
index 1a58717e1..33c4156bf 100644
--- a/tests/kms_properties.c
+++ b/tests/kms_properties.c
@@ -21,6 +21,12 @@
  * IN THE SOFTWARE.
  */
 
+/**
+ * TEST: kms properties
+ * Category: Display
+ * Description: Test to validate the properties of all planes, crtc and connectors
+ */
+
 #include "igt.h"
 #include "drmtest.h"
 #include <errno.h>
@@ -28,11 +34,8 @@
 #include <stdio.h>
 #include <string.h>
 #include <time.h>
+
 /**
- * TEST: kms properties
- * Category: Display
- * Description: Test to validate the properties of all planes, crtc and connectors
- *
  * SUBTEST: %s-properties-%s
  * Description: Tests %arg[1] properties with %arg[2] commit
  * Driver requirement: i915, xe
@@ -53,6 +56,20 @@
  * @legacy:          legacy
  */
 
+/**
+ * SUBTEST: get_properties-sanity-%s
+ * Description: Test validates the properties of all planes, crtc and connectors
+ *              with %arg[1] commit
+ * Driver requirement: i915, xe
+ * Functionality: kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @atomic:          atomic
+ * @non-atomic:      legacy
+ */
 
 struct additional_test {
 	const char *name;
@@ -712,20 +729,6 @@ static void expect_no_props(int fd, uint32_t obj_type, uint32_t obj_id)
 	igt_assert_neq(drmIoctl(fd, DRM_IOCTL_MODE_OBJ_GETPROPERTIES, &properties), 0);
 }
 
-/**
- * SUBTEST: get_properties-sanity-%s
- * Description: Test validates the properties of all planes, crtc and connectors
- *              with %arg[1] commit
- * Driver requirement: i915, xe
- * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @atomic:          atomic
- * @non-atomic:      legacy
- */
 static void get_prop_sanity(igt_display_t *display, bool atomic)
 {
 	int fd = display->drm_fd;
diff --git a/tests/kms_rmfb.c b/tests/kms_rmfb.c
index 5281370f0..c102c9583 100644
--- a/tests/kms_rmfb.c
+++ b/tests/kms_rmfb.c
@@ -21,6 +21,13 @@
  * IN THE SOFTWARE.
  */
 
+/**
+ * TEST: kms rmfb
+ * Category: Display
+ * Description: This tests rmfb and close-fd behavior. In these casesthe
+ *              framebuffers should be removed from the crtc.
+ */
+
 #include "igt.h"
 #include "drmtest.h"
 #include <errno.h>
@@ -28,12 +35,8 @@
 #include <stdio.h>
 #include <string.h>
 #include <time.h>
+
 /**
- * TEST: kms rmfb
- * Category: Display
- * Description: This tests rmfb and close-fd behavior. In these casesthe
- *              framebuffers should be removed from the crtc.
- *
  * SUBTEST: close-fd
  * Description: RMFB is supposed to free the framebuffers from any and all planes
  *              so test this and make sure it works with fd close and reopen.
diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c
index 864ab7b03..b2e877a4b 100644
--- a/tests/kms_rotation_crc.c
+++ b/tests/kms_rotation_crc.c
@@ -27,10 +27,130 @@
  * Category: Display
  * Description: Tests different rotations with different planes & formats
  */
+
 #include "igt.h"
 #include "igt_vec.h"
 #include <math.h>
 
+/**
+ * SUBTEST: %s-rotation-180
+ * Description: Rotation test with 180 degree for %arg[1] planes
+ * Driver requirement: i915, xe
+ * Functionality: plane, rotation
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @primary:    primary
+ * @sprite:     sprite
+ * @cursor:     cursor
+ */
+
+/**
+ * SUBTEST: %s-rotation-%d
+ * Description: Rotation test with %arg[2] degree for %arg[1] planes of gen9+
+ * Driver requirement: i915, xe
+ * Functionality: plane, rotation
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @primary:    primary
+ * @sprite:     sprite
+ *
+ * arg[2].values: 90, 270
+ */
+
+/**
+ * SUBTEST: bad-pixel-format
+ * Description: Checking unsupported pixel format for gen9+ with 90 degree of rotation
+ * Driver requirement: i915, xe
+ * Functionality: plane, rotation
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: bad-tiling
+ * Description: Checking unsupported tiling for gen9+ with 90 degree of rotation
+ * Driver requirement: i915, xe
+ * Functionality: plane, rotation, tiling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ */
+
+/**
+ * SUBTEST: primary-%s-tiled-reflect-x-%d
+ * Description: Test for %arg[1] & %arg[2] degree rotation on primary plane
+ * Driver requirement: i915, xe
+ * Functionality: plane, rotation, tiling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @4:      4 tiling
+ * @x:      x tiling
+ * @y:      y tiling
+ * @yf:     yf tiling
+ *
+ * arg[2].values: 0, 180
+ */
+
+/**
+ * SUBTEST: primary-%s-tiled-reflect-x-%d
+ * Description: Test for %arg[1] & %arg[2] degree rotation on primary plane
+ * Driver requirement: i915, xe
+ * Functionality: plane, rotation, tiling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @y:      y tiling
+ * @yf:     yf tiling
+ *
+ * arg[2].values: 90, 270
+ *
+ * SUBTEST: sprite-rotation-90-pos-100-0
+ * Description: Rotation test with 90 degree for a plane of gen9+ with given position
+ * Driver requirement: i915, xe
+ * Functionality: plane, rotation
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ */
+
+/**
+ * SUBTEST: multiplane-rotation
+ * Description: Rotation test on both planes by making them fully visible
+ * Driver requirement: i915, xe
+ * Functionality: plane, rotation
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: multiplane-rotation-cropping-%s
+ * Description: Rotation test on both planes by cropping left/%arg[1] corner of
+ *              primary plane and right/%arg[1] corner of sprite plane
+ * Driver requirement: i915, xe
+ * Functionality: plane, rotation
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @bottom:   bottom
+ * @top:      top
+ */
+
+/**
+ * SUBTEST: exhaust-fences
+ * Description: This test intends to check for fence leaks exhaustively
+ * Driver requirement: i915
+ * Functionality: plane, rotation
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ */
+
 #define MAX_FENCES 32
 #define MAXMULTIPLANESAMOUNT 2
 #define TEST_MAX_WIDTH 640
@@ -479,93 +599,6 @@ static bool test_format(data_t *data,
 	return true;
 }
 
-/**
- * SUBTEST: %s-rotation-180
- * Description: Rotation test with 180 degree for %arg[1] planes
- * Driver requirement: i915, xe
- * Functionality: plane, rotation
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @primary:    primary
- * @sprite:     sprite
- * @cursor:     cursor
- */
-
-/**
- * SUBTEST: %s-rotation-%d
- * Description: Rotation test with %arg[2] degree for %arg[1] planes of gen9+
- * Driver requirement: i915, xe
- * Functionality: plane, rotation
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @primary:    primary
- * @sprite:     sprite
- *
- * arg[2].values: 90, 270
- */
-
-/**
- * SUBTEST: bad-pixel-format
- * Description: Checking unsupported pixel format for gen9+ with 90 degree of rotation
- * Driver requirement: i915, xe
- * Functionality: plane, rotation
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: bad-tiling
- * Description: Checking unsupported tiling for gen9+ with 90 degree of rotation
- * Driver requirement: i915, xe
- * Functionality: plane, rotation, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
- */
-
-/**
- * SUBTEST: primary-%s-tiled-reflect-x-%d
- * Description: Test for %arg[1] & %arg[2] degree rotation on primary plane
- * Driver requirement: i915, xe
- * Functionality: plane, rotation, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @4:      4 tiling
- * @x:      x tiling
- * @y:      y tiling
- * @yf:     yf tiling
- *
- * arg[2].values: 0, 180
- */
-
-/**
- * SUBTEST: primary-%s-tiled-reflect-x-%d
- * Description: Test for %arg[1] & %arg[2] degree rotation on primary plane
- * Driver requirement: i915, xe
- * Functionality: plane, rotation, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @y:      y tiling
- * @yf:     yf tiling
- *
- * arg[2].values: 90, 270
- *
- * SUBTEST: sprite-rotation-90-pos-100-0
- * Description: Rotation test with 90 degree for a plane of gen9+ with given position
- * Driver requirement: i915, xe
- * Functionality: plane, rotation
- * Mega feature: General Display Features
- * Test category: functionality test
- */
 static void test_plane_rotation(data_t *data, int plane_type, bool test_bad_format)
 {
 	igt_display_t *display = &data->display;
@@ -885,28 +918,6 @@ static bool reusecrcfromlastround(planeinfos p[2], int lastroundp1format,
 	return true;
 }
 
-/**
- * SUBTEST: multiplane-rotation
- * Description: Rotation test on both planes by making them fully visible
- * Driver requirement: i915, xe
- * Functionality: plane, rotation
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: multiplane-rotation-cropping-%s
- * Description: Rotation test on both planes by cropping left/%arg[1] corner of
- *              primary plane and right/%arg[1] corner of sprite plane
- * Driver requirement: i915, xe
- * Functionality: plane, rotation
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @bottom:   bottom
- * @top:      top
- */
-
 /*
  * Here is pipe parameter which is now used only for first pipe.
  * It is left here if this test ever was wanted to be run on
@@ -1104,14 +1115,6 @@ static void test_multi_plane_rotation(data_t *data, enum pipe pipe)
 	igt_require_f(found, "No valid pipe/output combo found.\n");
 }
 
-/**
- * SUBTEST: exhaust-fences
- * Description: This test intends to check for fence leaks exhaustively
- * Driver requirement: i915
- * Functionality: plane, rotation
- * Mega feature: General Display Features
- * Test category: functionality test
- */
 static void test_plane_rotation_exhaust_fences(data_t *data,
 					       enum pipe pipe,
 					       igt_output_t *output,
diff --git a/tests/kms_scaling_modes.c b/tests/kms_scaling_modes.c
index eb10f7386..960e7d84b 100644
--- a/tests/kms_scaling_modes.c
+++ b/tests/kms_scaling_modes.c
@@ -24,12 +24,15 @@
  *     Swati Sharma <swati2.sharma@intel.com>
  */
 
-#include "igt.h"
 /**
  * TEST: kms scaling modes
  * Category: Display
  * Description: Test display scaling modes
- *
+ */
+
+#include "igt.h"
+
+/**
  * SUBTEST: scaling-mode-%s
  * Description: Tests %arg[1] display scaling mode
  * Driver requirement: i915, xe
diff --git a/tests/kms_selftest.c b/tests/kms_selftest.c
index 6618dbe50..30fc58d90 100644
--- a/tests/kms_selftest.c
+++ b/tests/kms_selftest.c
@@ -21,13 +21,16 @@
  * IN THE SOFTWARE.
  */
 
-#include "igt.h"
-#include "igt_kmod.h"
 /**
  * TEST: kms selftest
  * Category: Display
  * Description: Basic sanity check of KMS selftests.
- *
+ */
+
+#include "igt.h"
+#include "igt_kmod.h"
+
+/**
  * SUBTEST: %s
  * Description: Basic sanity check of KMS selftest %arg[1].
  * Driver requirement: i915, xe
diff --git a/tests/kms_sequence.c b/tests/kms_sequence.c
index 011733bc8..7dbcca643 100644
--- a/tests/kms_sequence.c
+++ b/tests/kms_sequence.c
@@ -27,6 +27,7 @@
  * Category: Display
  * Description: Test CrtcGetSequence and CrtcQueueSequence.
  */
+
 #include "igt.h"
 #include <stdlib.h>
 #include <stdio.h>
@@ -42,6 +43,36 @@
 
 #include <drm.h>
 
+/**
+ * SUBTEST: get-%s
+ * Description: This is a test of drmCrtcGetSequence with %arg[1]
+ * Driver requirement: i915, xe
+ * Functionality: vblank
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @busy:         busy
+ * @forked:       forked bo
+ * @forked-busy:  forked bo & busy
+ * @idle:         idle
+ */
+
+/**
+ * SUBTEST: queue-%s
+ * Description: This is a test of drmCrtcQueueSequence with %arg[1]
+ * Driver requirement: i915, xe
+ * Functionality: vblank
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @busy:         busy
+ * @idle:         idle
+ */
+
 IGT_TEST_DESCRIPTION("Test CrtcGetSequence and CrtcQueueSequence.");
 
 typedef struct {
@@ -136,35 +167,6 @@ static int crtc_queue_sequence(int fd, struct drm_crtc_queue_sequence *cqs)
 	return err;
 }
 
-/**
- * SUBTEST: get-%s
- * Description: This is a test of drmCrtcGetSequence with %arg[1]
- * Driver requirement: i915, xe
- * Functionality: vblank
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @busy:         busy
- * @forked:       forked bo
- * @forked-busy:  forked bo & busy
- * @idle:         idle
- */
-
-/**
- * SUBTEST: queue-%s
- * Description: This is a test of drmCrtcQueueSequence with %arg[1]
- * Driver requirement: i915, xe
- * Functionality: vblank
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * arg[1]:
- *
- * @busy:         busy
- * @idle:         idle
- */
 static void run_test(data_t *data, int fd, void (*testfunc)(data_t *, int, int))
 {
 	int nchildren =
diff --git a/tests/kms_setmode.c b/tests/kms_setmode.c
index d66ee97c8..7fd1667d7 100644
--- a/tests/kms_setmode.c
+++ b/tests/kms_setmode.c
@@ -20,6 +20,14 @@
  * Authors:
  *    Imre Deak <imre.deak@intel.com>
  */
+
+/**
+ * TEST: kms setmode
+ * Category: Display
+ * Description: Tests the mode by iterating through all valid/invalid crtc/connector
+ *              combinations
+ */
+
 #include "config.h"
 
 #include "igt.h"
@@ -35,11 +43,6 @@
 #include "xe/xe_query.h"
 
 /**
- * TEST: kms setmode
- * Category: Display
- * Description: Tests the mode by iterating through all valid/invalid crtc/connector
- *              combinations
- *
  * SUBTEST: basic
  * Description: Tests the vblank timing by iterating through all valid crtc/connector
  *              combinations
diff --git a/tests/kms_sysfs_edid_timing.c b/tests/kms_sysfs_edid_timing.c
index ee47a024e..b36f383e5 100644
--- a/tests/kms_sysfs_edid_timing.c
+++ b/tests/kms_sysfs_edid_timing.c
@@ -20,16 +20,20 @@
  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
  * IN THE SOFTWARE.
  */
+
+/**
+ * TEST: kms sysfs edid timing
+ * Category: Display
+ * Description: Test to check the time it takes to reprobe each connector.
+ */
+
 #include "igt.h"
 
 #include <dirent.h>
 #include <fcntl.h>
 #include <sys/stat.h>
+
 /**
- * TEST: kms sysfs edid timing
- * Category: Display
- * Description: Test to check the time it takes to reprobe each connector.
- *
  * SUBTEST:
  * Description: This test checks the time it takes to reprobe each connector and
  *              fails if either the time it takes for one reprobe is too long or
diff --git a/tests/kms_tiled_display.c b/tests/kms_tiled_display.c
index bb29a4ca7..a094f4df3 100644
--- a/tests/kms_tiled_display.c
+++ b/tests/kms_tiled_display.c
@@ -41,6 +41,7 @@
  * Category: Display
  * Description: Test for Transcoder Port Sync for Display Port Tiled Displays
  */
+
 #include "igt.h"
 #include "poll.h"
 #include "drm_mode.h"
diff --git a/tests/kms_tv_load_detect.c b/tests/kms_tv_load_detect.c
index 67dbb242e..13394f2c6 100644
--- a/tests/kms_tv_load_detect.c
+++ b/tests/kms_tv_load_detect.c
@@ -22,12 +22,15 @@
  *
  */
 
-#include "igt.h"
 /**
  * TEST: kms tv load detect
  * Category: Display
  * Description: Test to check tv load detection.
- *
+ */
+
+#include "igt.h"
+
+/**
  * SUBTEST: load-detect
  * Description: Check tv load detection works correctly.
  * Driver requirement: i915, xe
diff --git a/tests/kms_universal_plane.c b/tests/kms_universal_plane.c
index 7178bebc0..b79b3d3e3 100644
--- a/tests/kms_universal_plane.c
+++ b/tests/kms_universal_plane.c
@@ -21,6 +21,12 @@
  * IN THE SOFTWARE.
  */
 
+/**
+ * TEST: kms universal plane
+ * Category: Display
+ * Description: Check pageflip & modeset on universal plane
+ */
+
 #include "igt.h"
 #include <errno.h>
 #include <stdbool.h>
@@ -29,10 +35,6 @@
 #include <fcntl.h>
 
 /**
- * TEST: kms universal plane
- * Category: Display
- * Description: Check pageflip & modeset on universal plane
- *
  * SUBTEST: cursor-fb-leak
  * Description: Check for cursor leaks after performing cursor operations
  * Driver requirement: i915, xe
@@ -54,9 +56,7 @@
  * Functionality: plane
  * Mega feature: General Display Features
  * Test category: functionality test
- */
-
-/**
+ *
  * SUBTEST: universal-plane-%s
  * Description: Check %arg[1]
  * Driver requirement: i915, xe
diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
index 549a959ad..5994e682c 100644
--- a/tests/kms_vblank.c
+++ b/tests/kms_vblank.c
@@ -21,6 +21,12 @@
  * IN THE SOFTWARE.
  */
 
+/**
+ * TEST: kms vblank
+ * Category: Display
+ * Description: Test speed of WaitVblank.
+ */
+
 #include "igt.h"
 #include <stdlib.h>
 #include <stdio.h>
@@ -35,11 +41,8 @@
 #include <sys/wait.h>
 
 #include <drm.h>
+
 /**
- * TEST: kms vblank
- * Category: Display
- * Description: Test speed of WaitVblank.
- *
  * SUBTEST: crtc-id
  * Description: Check the vblank and flip events works with given crtc id
  * Driver requirement: i915, xe
@@ -53,9 +56,7 @@
  * Functionality: vblank
  * Mega feature: General Display Features
  * Test category: functionality test
- */
-
-/**
+ *
  * SUBTEST: ts-continuation-dpms-rpm
  * Description: Test TS continuty with DPMS & RPM while hanging by introducing
  *              NOHANG flag
@@ -63,9 +64,7 @@
  * Functionality: dpms, hang, rpm, vblank
  * Mega feature: General Display Features
  * Test category: functionality test
- */
-
-/**
+ *
  * SUBTEST: ts-continuation-dpms-suspend
  * Description: Test TS continuty with DPMS & Suspend while hanging by introducing
  *              NOHANG flag
@@ -73,9 +72,7 @@
  * Functionality: dpms, hang, suspend, vblank
  * Mega feature: General Display Features
  * Test category: functionality test
- */
-
-/**
+ *
  * SUBTEST: ts-continuation-suspend
  * Description: Test TS continuty with Suspend while hanging by introducing NOHANG
  *              flag
@@ -83,9 +80,7 @@
  * Functionality: hang, suspend, vblank
  * Mega feature: General Display Features
  * Test category: functionality test
- */
-
-/**
+ *
  * SUBTEST: ts-continuation-modeset-rpm
  * Description: Test TS continuty during Modeset with Suspend while hanging by
  *              introducing NOHANG flag
@@ -93,9 +88,7 @@
  * Functionality: hang, rpm, vblank
  * Mega feature: General Display Features
  * Test category: functionality test
- */
-
-/**
+ *
  * SUBTEST: accuracy-idle
  * Description: Test Accuracy of vblank events while hanging by introducing NOHANG
  *              flag
diff --git a/tests/kms_vrr.c b/tests/kms_vrr.c
index f26adbccf..23aebb0f2 100644
--- a/tests/kms_vrr.c
+++ b/tests/kms_vrr.c
@@ -20,15 +20,18 @@
  * OTHER DEALINGS IN THE SOFTWARE.
  */
 
+/**
+ * TEST: kms vrr
+ * Category: Display
+ * Description: Test to validate diffent features of VRR
+ */
+
 #include "igt.h"
 #include "sw_sync.h"
 #include <fcntl.h>
 #include <signal.h>
+
 /**
- * TEST: kms vrr
- * Category: Display
- * Description: Test to validate diffent features of VRR
- *
  * SUBTEST: flip-basic
  * Description: Tests that VRR is enabled and that the difference between flip
  *              timestamps converges to the requested rate
diff --git a/tests/kms_writeback.c b/tests/kms_writeback.c
index 25b49eccd..6b436b7ab 100644
--- a/tests/kms_writeback.c
+++ b/tests/kms_writeback.c
@@ -22,6 +22,15 @@
  *
  */
 
+/**
+ * TEST: kms writeback
+ * Category: Display
+ * Description: This test validates the expected behavior of the writeback
+ *              connectors feature by checking if the target device support
+ *              writeback; it validates bad and good combination, check color
+ *              format, and check the output result by using CRC.
+ */
+
 #include <errno.h>
 #include <stdbool.h>
 #include <stdio.h>
@@ -32,14 +41,8 @@
 #include "igt_core.h"
 #include "igt_fb.h"
 #include "sw_sync.h"
+
 /**
- * TEST: kms writeback
- * Category: Display
- * Description: This test validates the expected behavior of the writeback
- *              connectors feature by checking if the target device support
- *              writeback; it validates bad and good combination, check color
- *              format, and check the output result by using CRC.
- *
  * SUBTEST: writeback-check-output-XRGB2101010
  * Description: Check XRGB2101010 writeback output with CRC validation
  * Functionality: kms_core
diff --git a/tests/testdisplay.c b/tests/testdisplay.c
index 42218210f..109ed496a 100644
--- a/tests/testdisplay.c
+++ b/tests/testdisplay.c
@@ -45,6 +45,13 @@
  *  - DP commands (e.g. poweroff)
  * - verify outputs against VBT/physical connectors
  */
+
+/**
+ * TEST: testdisplay
+ * Category: Display
+ * Description: Tests basic display functionality.
+ */
+
 #include "config.h"
 
 #include "igt.h"
@@ -70,10 +77,6 @@
 #include <signal.h>
 
 /**
- * TEST: testdisplay
- * Category: Display
- * Description: Tests basic display functionality.
- *
  * SUBTEST:
  * Description: This test is intended for testing of display functionality like
  *              modeset, clone modes, test patterns & pixel generators etc..
@@ -82,6 +85,7 @@
  * Mega feature: General Display Features
  * Test category: functionality test
  */
+
 IGT_TEST_DESCRIPTION("Tests basic display functionality.");
 
 enum {
-- 
2.40.0

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [igt-dev] [i-g-t 2/5] tests/kms/testplan: Regroup testplan documentation
  2023-11-24  9:35 [igt-dev] [i-g-t 0/5] Optimize kms tesplan documentation Bhanuprakash Modem
  2023-11-24  9:35 ` [igt-dev] [i-g-t 1/5] tests/kms/testplan: Move testplan documentation to beginning of the file Bhanuprakash Modem
@ 2023-11-24  9:35 ` Bhanuprakash Modem
  2023-11-24 17:08   ` Sharma, Swati2
  2023-11-24  9:36 ` [igt-dev] [i-g-t 3/5] tests/kms/testplan: Optimize KMS " Bhanuprakash Modem
                   ` (6 subsequent siblings)
  8 siblings, 1 reply; 15+ messages in thread
From: Bhanuprakash Modem @ 2023-11-24  9:35 UTC (permalink / raw)
  To: igt-dev, swati2.sharma

For redability purpose, re-group testplan documentation.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/intel/kms_big_fb.c   |  46 +++++----------
 tests/intel/kms_busy.c     |  33 ++++++-----
 tests/intel/kms_draw_crc.c |  16 +++--
 tests/kms_atomic.c         |  75 ++++++++++--------------
 tests/kms_cursor_legacy.c  |   7 ---
 tests/kms_flip.c           | 116 ++++++++++++++++---------------------
 tests/kms_plane.c          |  16 +++--
 tests/kms_rotation_crc.c   |  16 +++--
 8 files changed, 133 insertions(+), 192 deletions(-)

diff --git a/tests/intel/kms_big_fb.c b/tests/intel/kms_big_fb.c
index 2fb435ff4..cce7027e9 100644
--- a/tests/intel/kms_big_fb.c
+++ b/tests/intel/kms_big_fb.c
@@ -141,51 +141,33 @@
  */
 
 /**
- * SUBTEST: %s-addfb-size-overflow
- * Description: Sanity check if addfb ioctl fails correctly for (%arg[1]) modifier
- *              with small bo.
+ * SUBTEST: linear-addfb
+ * Description: Sanity check if addfb ioctl works correctly with Linear modifier
+ *              for given size and strides of fb
  * Driver requirement: i915, xe
- * Functionality: big_fbs, kms_gem_interop, tiling
+ * Functionality: big_fbs, kms_gem_interop
  * Mega feature: General Display Features
  * Test category: functionality test
  *
- * arg[1]:
- *
- * @4-tiled:    TILE-4
- * @x-tiled:    TILE-X
- * @y-tiled:    TILE-Y
- * @yf-tiled:   TILE-YF
- */
-
-/**
- * SUBTEST: %s-addfb-size-offset-overflow
- * Description: Sanity check if addfb ioctl fails correctly for (%arg[1]) modifier
- *              and offsets with small bo
+ * SUBTEST: %s-addfb
+ * Description: Sanity check if addfb ioctl works correctly with %arg[1] modifier
+ *              for given size and strides of fb
  * Driver requirement: i915, xe
  * Functionality: big_fbs, kms_gem_interop, tiling
  * Mega feature: General Display Features
  * Test category: functionality test
  *
- * arg[1]:
- *
- * @4-tiled:    TILE-4
- * @x-tiled:    TILE-X
- * @y-tiled:    TILE-Y
- * @yf-tiled:   TILE-YF
- */
-
-/**
- * SUBTEST: linear-addfb
- * Description: Sanity check if addfb ioctl works correctly with Linear modifier
- *              for given size and strides of fb
+ * SUBTEST: %s-addfb-size-overflow
+ * Description: Sanity check if addfb ioctl fails correctly for (%arg[1]) modifier
+ *              with small bo.
  * Driver requirement: i915, xe
- * Functionality: big_fbs, kms_gem_interop
+ * Functionality: big_fbs, kms_gem_interop, tiling
  * Mega feature: General Display Features
  * Test category: functionality test
  *
- * SUBTEST: %s-addfb
- * Description: Sanity check if addfb ioctl works correctly with %arg[1] modifier
- *              for given size and strides of fb
+ * SUBTEST: %s-addfb-size-offset-overflow
+ * Description: Sanity check if addfb ioctl fails correctly for (%arg[1]) modifier
+ *              and offsets with small bo
  * Driver requirement: i915, xe
  * Functionality: big_fbs, kms_gem_interop, tiling
  * Mega feature: General Display Features
diff --git a/tests/intel/kms_busy.c b/tests/intel/kms_busy.c
index c65d71b19..63d1bbf71 100644
--- a/tests/intel/kms_busy.c
+++ b/tests/intel/kms_busy.c
@@ -48,25 +48,14 @@
  * Functionality: kms_core, hang
  * Mega feature: General Display Features
  * Test category: functionality test
- */
-
-/**
- * SUBTEST: extended-modeset-hang-%s
+ *
+ * SUBTEST: extended-pageflip-modeset-hang-oldfb
  * Description: Test for basic check of KMS ABI with busy framebuffers.
  * Driver requirement: i915
  * Functionality: kms_core, hang
  * Mega feature: General Display Features
  * Test category: functionality test
  *
- * arg[1]:
- *
- * @newfb:                New framebuffer
- * @oldfb:                Old framebuffer
- * @newfb-with-reset:     New framebuffer with reset
- * @oldfb-with-reset:     Old framebuffer with reset
- */
-
-/**
  * SUBTEST: extended-pageflip-hang-%s
  * Description: Test for basic check of KMS ABI with busy framebuffers.
  * Driver requirement: i915
@@ -74,19 +63,31 @@
  * Mega feature: General Display Features
  * Test category: functionality test
  *
+ * SUBTEST: extended-modeset-hang-%s
+ * Description: Test for basic check of KMS ABI with busy framebuffers.
+ * Driver requirement: i915
+ * Functionality: kms_core, hang
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
  * arg[1]:
  *
- * @newfb:     New framebuffer
- * @oldfb:     Old framebuffer
+ * @newfb:                New framebuffer
+ * @oldfb:                Old framebuffer
  */
 
 /**
- * SUBTEST: extended-pageflip-modeset-hang-oldfb
+ * SUBTEST: extended-modeset-hang-%s
  * Description: Test for basic check of KMS ABI with busy framebuffers.
  * Driver requirement: i915
  * Functionality: kms_core, hang
  * Mega feature: General Display Features
  * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @newfb-with-reset:     New framebuffer with reset
+ * @oldfb-with-reset:     Old framebuffer with reset
  */
 
 IGT_TEST_DESCRIPTION("Basic check of KMS ABI with busy framebuffers.");
diff --git a/tests/intel/kms_draw_crc.c b/tests/intel/kms_draw_crc.c
index 7cd4c3ff1..b9d9cd6e4 100644
--- a/tests/intel/kms_draw_crc.c
+++ b/tests/intel/kms_draw_crc.c
@@ -32,6 +32,13 @@
 #include "igt.h"
 
 /**
+ * SUBTEST: fill-fb
+ * Description: This subtest verifies CRC after filling fb with x-tiling or none.
+ * Driver requirement: i915, xe
+ * Functionality: kms_core, tiling
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
  * SUBTEST: draw-method-%s
  * Description: Verify that igt draw library works for the %arg[1] method with
  *              different modifiers & DRM formats.
@@ -63,15 +70,6 @@
  * @pwrite:       PWRITE
  */
 
-/**
- * SUBTEST: fill-fb
- * Description: This subtest verifies CRC after filling fb with x-tiling or none.
- * Driver requirement: i915, xe
- * Functionality: kms_core, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
- */
-
 #define MAX_CONNECTORS 32
 
 int drm_fd;
diff --git a/tests/kms_atomic.c b/tests/kms_atomic.c
index 28af27f22..9b69fc892 100644
--- a/tests/kms_atomic.c
+++ b/tests/kms_atomic.c
@@ -49,6 +49,30 @@
 #include "sw_sync.h"
 
 /**
+ * SUBTEST: atomic-invalid-params
+ * Description: Test abuse the atomic ioctl directly in order to test various
+ *              invalid conditions which the libdrm wrapper won't allow us to
+ *              create.
+ * Driver requirement: i915, xe
+ * Functionality: kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: atomic-plane-damage
+ * Description: Simple test cases to use FB_DAMAGE_CLIPS plane property
+ * Driver requirement: i915, xe
+ * Functionality: kms_core, plane
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
+ * SUBTEST: test-only
+ * Description: Test to ensure that DRM_MODE_ATOMIC_TEST_ONLY really only touches
+ *              the free-standing state objects and nothing else.
+ * Driver requirement: i915, xe
+ * Functionality: kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
  * SUBTEST: plane-primary-overlay-mutable-zpos
  * Description: Verify that the overlay plane can cover the primary one (and
  *              vice versa) by changing their zpos property.
@@ -81,18 +105,8 @@
  */
 
 /**
- * SUBTEST: test-only
- * Description: Test to ensure that DRM_MODE_ATOMIC_TEST_ONLY really only touches
- *              the free-standing state objects and nothing else.
- * Driver requirement: i915, xe
- * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- */
-
-/**
- * SUBTEST: plane-invalid-%s
- * Description: Test error handling when invalid %arg[1] are passed
+ * SUBTEST: %s-invalid-%s
+ * Description: Test error handling when invalid %arg[1] %arg[2] are passed
  * Driver requirement: i915, xe
  * Functionality: kms_core, plane
  * Mega feature: General Display Features
@@ -100,41 +114,16 @@
  *
  * arg[1]:
  *
- * @params:           plane parameters
- * @params-fence:     plane fence parameters
- */
-
-/**
- * SUBTEST: crtc-invalid-%s
- * Description: Test error handling when invalid %arg[1] are passed
- * Driver requirement: i915, xe
- * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
+ * @crtc:             CRTC
+ * @plane:            Plane
  *
- * arg[1]:
+ * arg[2]:
  *
- * @params:           crtc parameters
- * @params-fence:     crtc fence parameters
+ * @params:           parameters
+ * @params-fence:     fence parameters
  */
 
-/**
- * SUBTEST: atomic-invalid-params
- * Description: Test abuse the atomic ioctl directly in order to test various
- *              invalid conditions which the libdrm wrapper won't allow us to
- *              create.
- * Driver requirement: i915, xe
- * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: atomic-plane-damage
- * Description: Simple test cases to use FB_DAMAGE_CLIPS plane property
- * Driver requirement: i915, xe
- * Functionality: kms_core, plane
- * Mega feature: General Display Features
- * Test category: functionality test
- */
+
 
 #ifndef DRM_CAP_CURSOR_WIDTH
 #define DRM_CAP_CURSOR_WIDTH 0x8
diff --git a/tests/kms_cursor_legacy.c b/tests/kms_cursor_legacy.c
index 6a4955ef1..2e2710ae4 100644
--- a/tests/kms_cursor_legacy.c
+++ b/tests/kms_cursor_legacy.c
@@ -257,13 +257,6 @@
  * Mega feature: General Display Features
  * Test category: functionality test
  *
- * arg[1]:
- *
- * @atomic:
- * @legacy:
- */
-
-/**
  * SUBTEST: flip-vs-cursor-busy-crc-%s
  * Description: this test perform a busy bo update followed by a cursor update
  * Driver requirement: i915, xe
diff --git a/tests/kms_flip.c b/tests/kms_flip.c
index 798103682..9afb78757 100755
--- a/tests/kms_flip.c
+++ b/tests/kms_flip.c
@@ -55,63 +55,53 @@
 #include "xe/xe_query.h"
 
 /**
- * SUBTEST: 2x-flip-vs-fences
- * Description: Test to validate pageflips along with avialable fences on a pair
- *              of connected displays
+ * SUBTEST: %s
+ * Description: %arg[1] test to validate pageflips with available fences
  * Driver requirement: i915
  * Functionality: gtt, vblank
  * Mega feature: General Display Features
  * Test category: functionality test
  *
- * SUBTEST: 2x-flip-vs-fences-interruptible
- * Description: Interrupt test to validate pageflips along with available fences
+ * SUBTEST: 2x-%s
+ * Description: %arg[1] test to validate pageflips along with available fences
  *              on a pair of connected displays
- * Driver requirement: i915, xe
- * Functionality: gtt, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: flip-vs-fences
- * Description: Basic test to validate pageflips with avialable fences
  * Driver requirement: i915
  * Functionality: gtt, vblank
  * Mega feature: General Display Features
  * Test category: functionality test
  *
- * SUBTEST: flip-vs-fences-interruptible
- * Description: Interrupt test to validate pageflips with available fences
- * Driver requirement: i915
- * Functionality: gtt, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
+ * arg[1]:
  *
- * SUBTEST: dpms-off-confusion
- * Description: Basic test to validate pageflips by disabling other connectors usng dpms
+ * @flip-vs-fences:                 Basic
+ * @flip-vs-fences-interruptible:   Interrupt
+ */
+
+/**
+ * SUBTEST: dpms-off-%s
+ * Description: %arg[1] test to validate pageflips by disabling other connectors usng dpms
  * Driver requirement: i915, xe
  * Functionality: dpms, vblank
  * Mega feature: General Display Features
  * Test category: functionality test
  *
- * SUBTEST: dpms-off-confusion-interruptible
- * Description: Interrupt test to validate pageflips by disabling other connectors using dpms
- * Driver requirement: i915, xe
- * Functionality: dpms, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
+ * arg[1]:
  *
- * SUBTEST: bo-too-big
- * Description: Basic test to validate pageflips with large BO in size
+ * @confusion:                      Basic
+ * @confusion-interruptible:        Interrupt
+ */
+
+/**
+ * SUBTEST: %s
+ * Description: %arg[1] test to validate pageflips with large BO in size
  * Driver requirement: i915, xe
  * Functionality: kms_gem_interop, vblank
  * Mega feature: General Display Features
  * Test category: functionality test
  *
- * SUBTEST: bo-too-big-interruptible
- * Description: Interrupt test to validate pageflips with large BO in size
- * Driver requirement: i915, xe
- * Functionality: kms_gem_interop, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
+ * arg[1]:
+ *
+ * @bo-too-big:                     Basic
+ * @bo-too-big-interruptible:       Interrupt
  */
 
 /**
@@ -169,36 +159,28 @@
  */
 
 /**
- * SUBTEST: flip-vs-suspend
- * Description: Basic test to validate pageflips with suspend cycle
- * Driver requirement: i915, xe
- * Functionality: suspend, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: 2x-flip-vs-suspend
- * Description: Basic test to validate pageflips with suspend cycle on a pair of
- *              connected displays
- * Driver requirement: i915, xe
- * Functionality: suspend, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
- *
- * SUBTEST: flip-vs-suspend-interruptible
- * Description: Interrupt test to validate pageflips with suspend cycle
+ * SUBTEST: %s
+ * Description: %arg[1] test to validate pageflips with suspend cycle
  * Driver requirement: i915, xe
  * Functionality: suspend, vblank
  * Mega feature: General Display Features
  * Test category: functionality test
  *
- * SUBTEST: 2x-flip-vs-suspend-interruptible
- * Description: Interrupt test to validate pageflips with suspend cycle on a pair
+ * SUBTEST: 2x-%s
+ * Description: %arg[1] test to validate pageflips with suspend cycle on a pair
  *              of connected displays
  * Driver requirement: i915, xe
  * Functionality: suspend, vblank
  * Mega feature: General Display Features
  * Test category: functionality test
  *
+ * arg[1]:
+ *
+ * @flip-vs-suspend:                   Basic
+ * @flip-vs-suspend-interruptible:     Interrupt
+ */
+
+/**
  * SUBTEST: %s
  * Description: Basic test to validate %arg[1]
  * Driver requirement: i915, xe
@@ -293,6 +275,20 @@
  */
 
 /**
+ * SUBTEST: basic-plain-flip
+ * Description: Basic test for validating page flip
+ * Driver requirement: i915, xe
+ * Test category: functionality test
+ * Functionality: vblank
+ * Mega feature: General Display Features
+ *
+ * SUBTEST: nonblocking-read
+ * Description: Tests that nonblocking reading fails correctly
+ * Driver requirement: i915, xe
+ * Functionality: vblank
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
  * SUBTEST: basic-flip-vs-dpms
  * Description: Basic test to valide pageflip with dpms
  * Driver requirement: i915, xe
@@ -311,20 +307,6 @@
  *
  * @modeset:      modeset
  * @wf_vblank:    wait for vblank
- *
- * SUBTEST: basic-plain-flip
- * Description: Basic test for validating page flip
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: vblank
- * Mega feature: General Display Features
- *
- * SUBTEST: nonblocking-read
- * Description: Tests that nonblocking reading fails correctly
- * Driver requirement: i915, xe
- * Functionality: vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  */
 
 #define TEST_DPMS		(1 << 0)
diff --git a/tests/kms_plane.c b/tests/kms_plane.c
index 17550e168..29cf45974 100644
--- a/tests/kms_plane.c
+++ b/tests/kms_plane.c
@@ -39,6 +39,13 @@
 #include "xe/xe_query.h"
 
 /**
+ * SUBTEST: planar-pixel-format-settings
+ * Description: verify planar settings for pixel format are handled correctly
+ * Driver requirement: i915, xe
+ * Functionality: pixel_format, plane
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ *
  * SUBTEST: plane-position-%s
  * Description: Verify plane position using two planes to create a %arg[1]
  * Driver requirement: i915, xe
@@ -96,15 +103,6 @@
  * @format-source-clamping:          with source clamping
  */
 
-/**
- * SUBTEST: planar-pixel-format-settings
- * Description: verify planar settings for pixel format are handled correctly
- * Driver requirement: i915, xe
- * Functionality: pixel_format, plane
- * Mega feature: General Display Features
- * Test category: functionality test
- */
-
 /*
  * Throw away enough lsbs in pixel formats tests
  * to get a match despite some differences between
diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c
index b2e877a4b..bb082af68 100644
--- a/tests/kms_rotation_crc.c
+++ b/tests/kms_rotation_crc.c
@@ -77,6 +77,13 @@
  * Functionality: plane, rotation, tiling
  * Mega feature: General Display Features
  * Test category: functionality test
+ *
+ * SUBTEST: exhaust-fences
+ * Description: This test intends to check for fence leaks exhaustively
+ * Driver requirement: i915
+ * Functionality: plane, rotation
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 /**
@@ -142,15 +149,6 @@
  * @top:      top
  */
 
-/**
- * SUBTEST: exhaust-fences
- * Description: This test intends to check for fence leaks exhaustively
- * Driver requirement: i915
- * Functionality: plane, rotation
- * Mega feature: General Display Features
- * Test category: functionality test
- */
-
 #define MAX_FENCES 32
 #define MAXMULTIPLANESAMOUNT 2
 #define TEST_MAX_WIDTH 640
-- 
2.40.0

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [igt-dev] [i-g-t 3/5] tests/kms/testplan: Optimize KMS testplan documentation
  2023-11-24  9:35 [igt-dev] [i-g-t 0/5] Optimize kms tesplan documentation Bhanuprakash Modem
  2023-11-24  9:35 ` [igt-dev] [i-g-t 1/5] tests/kms/testplan: Move testplan documentation to beginning of the file Bhanuprakash Modem
  2023-11-24  9:35 ` [igt-dev] [i-g-t 2/5] tests/kms/testplan: Regroup testplan documentation Bhanuprakash Modem
@ 2023-11-24  9:36 ` Bhanuprakash Modem
  2023-11-24 17:08   ` Sharma, Swati2
  2023-11-24  9:36 ` [igt-dev] [i-g-t 4/5] tests/kms/testplan: Fix Mega Feature in " Bhanuprakash Modem
                   ` (5 subsequent siblings)
  8 siblings, 1 reply; 15+ messages in thread
From: Bhanuprakash Modem @ 2023-11-24  9:36 UTC (permalink / raw)
  To: igt-dev, swati2.sharma

Moving all common key:values to TEST level from SUBTEST will
minimize the maintenance effort.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/chamelium/kms_chamelium_audio.c  |  10 +-
 tests/chamelium/kms_chamelium_color.c  |  16 +-
 tests/chamelium/kms_chamelium_edid.c   |  22 +-
 tests/chamelium/kms_chamelium_frames.c |  33 +-
 tests/chamelium/kms_chamelium_hpd.c    |  69 +--
 tests/intel/kms_big_fb.c               |  33 +-
 tests/intel/kms_big_joiner.c           |  16 +-
 tests/intel/kms_busy.c                 |  27 +-
 tests/intel/kms_ccs.c                  |  15 +-
 tests/intel/kms_cdclk.c                |  16 +-
 tests/intel/kms_draw_crc.c             |  15 +-
 tests/intel/kms_dsc.c                  |   8 +-
 tests/intel/kms_fbcon_fbt.c            |  10 +-
 tests/intel/kms_flip_scaled_crc.c      |  70 +---
 tests/intel/kms_frontbuffer_tracking.c | 559 +------------------------
 tests/intel/kms_legacy_colorkey.c      |  12 +-
 tests/intel/kms_pipe_b_c_ivb.c         |  24 +-
 tests/intel/kms_pm_backlight.c         |  22 +-
 tests/intel/kms_pm_dc.c                |  29 +-
 tests/intel/kms_pm_lpsp.c              |  11 +-
 tests/intel/kms_pm_rpm.c               |   4 +
 tests/intel/kms_psr.c                  |  73 +---
 tests/intel/kms_psr2_sf.c              |  36 +-
 tests/intel/kms_psr2_su.c              |   9 +-
 tests/intel/kms_psr_stress_test.c      |  12 +-
 tests/kms_addfb_basic.c                |  99 +----
 tests/kms_async_flips.c                |  26 +-
 tests/kms_atomic.c                     |  32 +-
 tests/kms_atomic_interruptible.c       |  18 +-
 tests/kms_atomic_transition.c          |  30 +-
 tests/kms_bw.c                         |   8 +-
 tests/kms_color.c                      |  32 +-
 tests/kms_content_protection.c         |  29 +-
 tests/kms_cursor_crc.c                 |  18 +-
 tests/kms_cursor_edge_walk.c           |   9 +-
 tests/kms_cursor_legacy.c              |  68 +--
 tests/kms_display_modes.c              |   9 +-
 tests/kms_dither.c                     |  12 +-
 tests/kms_feature_discovery.c          |  21 +-
 tests/kms_flip.c                       |  78 +---
 tests/kms_force_connector_basic.c      |  18 +-
 tests/kms_getfb.c                      |  30 +-
 tests/kms_hdmi_inject.c                |   9 +-
 tests/kms_hdr.c                        |  32 +-
 tests/kms_invalid_mode.c               |   8 +-
 tests/kms_lease.c                      |  88 +---
 tests/kms_panel_fitting.c              |  12 +-
 tests/kms_pipe_crc_basic.c             |  37 +-
 tests/kms_plane.c                      |  21 +-
 tests/kms_plane_alpha_blend.c          |  20 +-
 tests/kms_plane_cursor.c               |  16 +-
 tests/kms_plane_lowres.c               |  11 +-
 tests/kms_plane_multiple.c             |  11 +-
 tests/kms_plane_scaling.c              |  84 +---
 tests/kms_prime.c                      |  15 +-
 tests/kms_prop_blob.c                  |  20 +-
 tests/kms_properties.c                 |  12 +-
 tests/kms_rmfb.c                       |  12 +-
 tests/kms_rotation_crc.c               |  41 +-
 tests/kms_scaling_modes.c              |   8 +-
 tests/kms_selftest.c                   |   8 +-
 tests/kms_sequence.c                   |  12 +-
 tests/kms_setmode.c                    |  27 +-
 tests/kms_tiled_display.c              |   9 +-
 tests/kms_universal_plane.c            |  19 +-
 tests/kms_vblank.c                     |  30 +-
 tests/kms_vrr.c                        |  22 +-
 tests/kms_writeback.c                  |  26 +-
 68 files changed, 255 insertions(+), 2043 deletions(-)

diff --git a/tests/chamelium/kms_chamelium_audio.c b/tests/chamelium/kms_chamelium_audio.c
index f86610861..cc2c23a76 100644
--- a/tests/chamelium/kms_chamelium_audio.c
+++ b/tests/chamelium/kms_chamelium_audio.c
@@ -28,6 +28,8 @@
  * TEST: kms chamelium audio
  * Category: Display
  * Description: Testing Audio with a Chamelium board
+ * Driver requirement: i915, xe
+ * Test category: functionality test
  */
 
 #include "igt_eld.h"
@@ -38,34 +40,26 @@
  * SUBTEST: dp-audio
  * Description: Playback various audio signals with various audio formats/rates,
  *              capture them and check they are correct
- * Driver requirement: i915, xe
  * Functionality: chamelium, dp_audio
  * Mega feature: Audio, DP
- * Test category: functionality test
  *
  * SUBTEST: hdmi-audio
  * Description: Playback various audio signals with various audio formats/rates,
  *              capture them and check they are correct
- * Driver requirement: i915, xe
  * Functionality: chamelium, hdmi_audio
  * Mega feature: Audio, HDMI
- * Test category: functionality test
  *
  * SUBTEST: dp-audio-edid
  * Description: Plug a connector with an EDID suitable for audio, check ALSA's
  *              EDID-Like Data reports the correct audio parameters
- * Driver requirement: i915, xe
  * Functionality: chamelium, dp_audio
  * Mega feature: Audio, DP
- * Test category: functionality test
  *
  * SUBTEST: hdmi-audio-edid
  * Description: Plug a connector with an EDID suitable for audio, check ALSA's
  *              EDID-Like Data reports the correct audio parameters
- * Driver requirement: i915, xe
  * Functionality: chamelium, hdmi_audio
  * Mega feature: Audio, HDMI
- * Test category: functionality test
  */
 
 /* Playback parameters control the audio signal we synthesize and send */
diff --git a/tests/chamelium/kms_chamelium_color.c b/tests/chamelium/kms_chamelium_color.c
index 6123e8a5f..e94e13e40 100644
--- a/tests/chamelium/kms_chamelium_color.c
+++ b/tests/chamelium/kms_chamelium_color.c
@@ -26,6 +26,10 @@
  * TEST: kms chamelium color
  * Category: Display
  * Description: Test Color Features at Pipe level using Chamelium to verify instead of CRC
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, colorspace
+ * Mega feature: Color mgmt
+ * Test category: functionality test
  */
 
 #include "kms_color_helper.h"
@@ -33,24 +37,12 @@
 /**
  * SUBTEST: degamma
  * Description: Verify that degamma LUT transformation works correctly
- * Driver requirement: i915, xe
- * Functionality: chamelium, colorspace
- * Mega feature: Color mgmt
- * Test category: functionality test
  *
  * SUBTEST: gamma
  * Description: Verify that gamma LUT transformation works correctly
- * Driver requirement: i915, xe
- * Functionality: chamelium, colorspace
- * Mega feature: Color mgmt
- * Test category: functionality test
  *
  * SUBTEST: ctm-%s
  * Description: Check the color transformation %arg[1]
- * Driver requirement: i915, xe
- * Functionality: chamelium, colorspace
- * Mega feature: Color mgmt
- * Test category: functionality test
  *
  * arg[1]:
  *
diff --git a/tests/chamelium/kms_chamelium_edid.c b/tests/chamelium/kms_chamelium_edid.c
index f3f0b1e50..6550b7b74 100644
--- a/tests/chamelium/kms_chamelium_edid.c
+++ b/tests/chamelium/kms_chamelium_edid.c
@@ -28,6 +28,8 @@
  * TEST: kms chamelium edid
  * Category: Display
  * Description: Testing EDID with a Chamelium board
+ * Driver requirement: i915, xe
+ * Test category: functionality test
  */
 
 #include <fcntl.h>
@@ -51,22 +53,16 @@
 /**
  * SUBTEST: dp-edid-read
  * Description: Make sure the EDID exposed by KMS is the same as the screen's
- * Driver requirement: i915, xe
- * Test category: functionality test
  * Functionality: chamelium, dp_edid
  * Mega feature: DP
  *
  * SUBTEST: hdmi-edid-read
  * Description: Make sure the EDID exposed by KMS is the same as the screen's
- * Driver requirement: i915, xe
- * Test category: functionality test
  * Functionality: chamelium, hdmi_edid
  * Mega feature: HDMI
  *
  * SUBTEST: vga-edid-read
  * Description: Make sure the EDID exposed by KMS is the same as the screen's
- * Driver requirement: i915, xe
- * Test category: functionality test
  * Functionality: chamelium, vga_edid
  * Mega feature: VGA
  *
@@ -74,28 +70,22 @@
  * Description: Get an EDID with many modes of different configurations, set
  *              them on the screen and check the screen resolution matches the
  *              mode resolution.
- * Driver requirement: i915, xe
  * Functionality: chamelium, dp_edid
  * Mega feature: DP
- * Test category: functionality test
  *
  * SUBTEST: dp-mode-timings
  * Description: For each mode of the IGT base EDID, perform a modeset and check
  *              the mode detected by the Chamelium receiver matches the mode we
  *              set
- * Driver requirement: i915, xe
  * Functionality: chamelium, dp_edid
  * Mega feature: DP
- * Test category: functionality test
  *
  * SUBTEST: hdmi-mode-timings
  * Description: For each mode of the IGT base EDID, perform a modeset and check
  *              the mode detected by the Chamelium receiver matches the mode we
  *              set
- * Driver requirement: i915, xe
  * Functionality: chamelium, dp_edid
  * Mega feature: DP
- * Test category: functionality test
  */
 
 /**
@@ -103,19 +93,15 @@
  * Description: Stress test the DUT by testing multiple EDIDs, one right after
  *              the other, and ensure their validity by check the real screen
  *              resolution vs the advertised mode (%arg[1]) resolution.
- * Driver requirement: i915, xe
  * Functionality: chamelium, dp_edid
  * Mega feature: DP
- * Test category: functionality test
  *
  * SUBTEST: hdmi-edid-stress-resolution-%s
  * Description: Stress test the DUT by testing multiple EDIDs, one right after
  *              the other, and ensure their validity by check the real screen
  *              resolution vs the advertised mode (%arg[1]) resolution.
- * Driver requirement: i915, xe
  * Functionality: chamelium, hdmi_edid
  * Mega feature: HDMI
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -128,19 +114,15 @@
  * Description: Simulate a screen being unplugged and another screen being
  *              plugged during suspend, check that a uevent is sent and
  *              connector status is updated during %arg[1]
- * Driver requirement: i915, xe
  * Functionality: chamelium, dp_edid
  * Mega feature: DP
- * Test category: functionality test
  *
  * SUBTEST: hdmi-edid-change-during-%s
  * Description: Simulate a screen being unplugged and another screen being
  *              plugged during suspend, check that a uevent is sent and
  *              connector status is updated during %arg[1]
- * Driver requirement: i915, xe
  * Functionality: chamelium, dp_edid
  * Mega feature: DP
- * Test category: functionality test
  *
  * arg[1]:
  *
diff --git a/tests/chamelium/kms_chamelium_frames.c b/tests/chamelium/kms_chamelium_frames.c
index 490ab3fe9..c14245a71 100644
--- a/tests/chamelium/kms_chamelium_frames.c
+++ b/tests/chamelium/kms_chamelium_frames.c
@@ -28,6 +28,9 @@
  * TEST: kms chamelium frames
  * Category: Display
  * Description: Tests requiring a Chamelium board
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, frame_integrity
+ * Test category: functionality test
  */
 
 #include "igt_eld.h"
@@ -38,26 +41,17 @@
  * SUBTEST: dp-crc-fast
  * Description: Pick the first mode of the IGT base EDID, display and capture
  * 		a few frames, then check captured frames are correct
- * Driver requirement: i915, xe
- * Functionality: chamelium, frame_integrity
  * Mega feature: DP
- * Test category: functionality test
  *
  * SUBTEST: hdmi-crc-fast
  * Description: Pick the first mode of the IGT base EDID, display and capture
  * 		a few frames, then check captured frames are correct
- * Driver requirement: i915, xe
- * Functionality: chamelium, frame_integrity
  * Mega feature: HDMI
- * Test category: functionality test
  *
  * SUBTEST: hdmi-%s-formats
  * Description: Pick the first mode of the IGT base EDID, display and capture a
  *              few frames, then check captured frames are correct
- * Driver requirement: i915, xe
- * Functionality: chamelium, frame_integrity
  * Mega feature: HDMI
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -69,26 +63,17 @@
  * SUBTEST: vga-frame-dump
  * Description: For each mode of the IGT base EDID, display and capture a few
  *              frames, then check captured frames are correct
- * Driver requirement: i915, xe
- * Functionality: chamelium, frame_integrity
  * Mega feature: VGA
- * Test category: functionality test
  *
  * SUBTEST: dp-crc-%s
  * Description: For each mode of the IGT base EDID, display and capture a %arg[1]
  *              frame(s), then check captured frame(s) are correct
- * Driver requirement: i915, xe
- * Functionality: chamelium, frame_integrity
  * Mega feature: DP
- * Test category: functionality test
  *
  * SUBTEST: hdmi-crc-%s
  * Description: For each mode of the IGT base EDID, display and capture a %arg[1]
  *              frame(s), then check captured frame(s) are correct
- * Driver requirement: i915, xe
- * Functionality: chamelium, frame_integrity
  * Mega feature: HDMI
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -101,35 +86,23 @@
  * Description: For each mode of the IGT base EDID, display and capture a few
  *              frames, then download the captured frames and compare them
  *              bit-by-bit to the sent ones
- * Driver requirement: i915, xe
- * Functionality: chamelium, frame_integrity
  * Mega feature: DP
- * Test category: functionality test
  *
  * SUBTEST: hdmi-frame-dump
  * Description: For each mode of the IGT base EDID, display and capture a few
  *              frames, then download the captured frames and compare them
  *              bit-by-bit to the sent ones
- * Driver requirement: i915, xe
- * Functionality: chamelium, frame_integrity
  * Mega feature: HDMI
- * Test category: functionality test
  *
  * SUBTEST: hdmi-aspect-ratio
  * Description: Pick a mode with a picture aspect-ratio, capture AVI InfoFrames
  *              and check they include the relevant fields
- * Driver requirement: i915, xe
- * Functionality: chamelium, frame_integrity
  * Mega feature: HDMI
- * Test category: functionality test
  *
  * SUBTEST: hdmi-%s-planes-random
  * Description: Setup a few overlay planes with random parameters, capture the
  *              frame and check it matches the expected output
- * Driver requirement: i915, xe
- * Functionality: chamelium, frame_integrity
  * Mega feature: HDMI
- * Test category: functionality test
  *
  * arg[1]:
  *
diff --git a/tests/chamelium/kms_chamelium_hpd.c b/tests/chamelium/kms_chamelium_hpd.c
index 360694c76..7e580e20e 100644
--- a/tests/chamelium/kms_chamelium_hpd.c
+++ b/tests/chamelium/kms_chamelium_hpd.c
@@ -28,6 +28,9 @@
  * TEST: kms chamelium hpd
  * Category: Display
  * Description: Testing HPD with a Chamelium board
+ * Driver requirement: i915, xe
+ * Functionality: chamelium, hotplug
+ * Test category: functionality test
  */
 
 #include "kms_chamelium_helper.h"
@@ -36,74 +39,47 @@
  * SUBTEST: dp-hpd-fast
  * Description: Check that we get uevents and updated connector status on
  * 		hotplug and unplug
- * Driver requirement: i915, xe
- * Functionality: chamelium, hotplug
  * Mega feature: DP
- * Test category: functionality test
  *
  * SUBTEST: hdmi-hpd-fast
  * Description: Check that we get uevents and updated connector status on
  * 		hotplug and unplug
- * Driver requirement: i915, xe
- * Functionality: chamelium, hotplug
  * Mega feature: HDMI
- * Test category: functionality test
  *
  * SUBTEST: vga-hpd-fast
  * Description: Check that we get uevents and updated connector status on
  * 		hotplug and unplug
- * Driver requirement: i915, xe
- * Functionality: chamelium, hotplug
  * Mega feature: VGA
- * Test category: functionality test
  *
  * SUBTEST: dp-hpd
  * Description: Check that we get uevents and updated connector status on
  *              hotplug and unplug
- * Driver requirement: i915, xe
- * Functionality: chamelium, hotplug
  * Mega feature: DP
- * Test category: functionality test
  *
  * SUBTEST: hdmi-hpd
  * Description: Check that we get uevents and updated connector status on
  *              hotplug and unplug
- * Driver requirement: i915, xe
- * Functionality: chamelium, hotplug
  * Mega feature: HDMI
- * Test category: functionality test
  *
  * SUBTEST: vga-hpd
  * Description: Check that we get uevents and updated connector status on
  *              hotplug and unplug
- * Driver requirement: i915, xe
- * Functionality: chamelium, hotplug
  * Mega feature: VGA
- * Test category: functionality test
  *
  * SUBTEST: dp-hpd-%s
  * Description: Check that we get uevents and updated connector status on
  *              hotplug and unplug
- * Driver requirement: i915, xe
- * Functionality: chamelium, hotplug
  * Mega feature: DP
- * Test category: functionality test
  *
  * SUBTEST: hdmi-hpd-%s
  * Description: Check that we get uevents and updated connector status on
  *              hotplug and unplug
- * Driver requirement: i915, xe
- * Functionality: chamelium, hotplug
  * Mega feature: HDMI
- * Test category: functionality test
  *
  * SUBTEST: vga-hpd-%s
  * Description: Check that we get uevents and updated connector status on
  *              hotplug and unplug
- * Driver requirement: i915, xe
- * Functionality: chamelium, hotplug
  * Mega feature: VGA
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -115,132 +91,93 @@
  * SUBTEST: dp-hpd-for-each-pipe
  * Description: Check that we get uevents and updated connector status on
  *              hotplug and unplug for each pipe with valid output
- * Driver requirement: i915, xe
- * Functionality: chamelium, hotplug
  * Mega feature: DP
- * Test category: functionality test
  *
  * SUBTEST: hdmi-hpd-for-each-pipe
  * Description: Check that we get uevents and updated connector status on
  *              hotplug and unplug for each pipe with valid output
- * Driver requirement: i915, xe
- * Functionality: chamelium, hotplug
  * Mega feature: HDMI
- * Test category: functionality test
  *
  * SUBTEST: vga-hpd-for-each-pipe
  * Description: Check that we get uevents and updated connector status on
  *              hotplug and unplug for each pipe with valid output
- * Driver requirement: i915, xe
- * Functionality: chamelium, hotplug
  * Mega feature: VGA
  * Test category: functionality test
  *
  * SUBTEST: dp-hpd-after-hibernate
  * Description: Toggle HPD during Hibernation, check that uevents are sent and
  *              connector status is updated
- * Driver requirement: i915, xe
  * Functionality: chamelium, hotplug, hibernation
  * Mega feature: DP
- * Test category: functionality test
  *
  * SUBTEST: hdmi-hpd-after-hibernate
  * Description: Toggle HPD during Hibernation, check that uevents are sent and
  *              connector status is updated
- * Driver requirement: i915, xe
  * Functionality: chamelium, hotplug, hibernation
  * Mega feature: HDMI
- * Test category: functionality test
  *
  * SUBTEST: vga-hpd-after-hibernate
  * Description: Toggle HPD during Hibernation, check that uevents are sent and
  *              connector status is updated
- * Driver requirement: i915, xe
  * Functionality: chamelium, hotplug, hibernation
  * Mega feature: VGA
- * Test category: functionality test
  *
  * SUBTEST: dp-hpd-after-suspend
  * Description: Toggle HPD during Suspend, check that uevents are sent and
  *              connector status is updated
- * Driver requirement: i915, xe
  * Functionality: chamelium, hotplug, suspend
  * Mega feature: DP
- * Test category: functionality test
  *
  * SUBTEST: hdmi-hpd-after-suspend
  * Description: Toggle HPD during Suspend, check that uevents are sent and
  *              connector status is updated
- * Driver requirement: i915, xe
  * Functionality: chamelium, hotplug, suspend
  * Mega feature: HDMI
- * Test category: functionality test
  *
  * SUBTEST: vga-hpd-after-suspend
  * Description: Toggle HPD during Suspend, check that uevents are sent and
  *              connector status is updated
- * Driver requirement: i915, xe
  * Functionality: chamelium, hotplug, suspend
  * Mega feature: VGA
- * Test category: functionality test
  *
  * SUBTEST: common-hpd-after-suspend
  * Description: Toggle HPD during suspend on all connectors, check that uevents
  * 		are sent and connector status is updated
- * Driver requirement: i915, xe
  * Functionality: chamelium, hotplug, suspend
  * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: common-hpd-after-hibernate
  * Description: Toggle HPD during suspend on all connectors, check that uevents
  *              are sent and connector status is updated
- * Driver requirement: i915, xe
  * Functionality: chamelium, hotplug, hibernation
  * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: vga-hpd-without-ddc
  * Description: Disable DDC on a VGA connector, check we still get a uevent on
  *              hotplug
- * Driver requirement: i915, xe
- * Functionality: chamelium, hotplug
  * Mega feature: VGA
- * Test category: functionality test
  *
  * SUBTEST: dp-hpd-storm
  * Description: Trigger a series of hotplugs in a very small timeframe to
  *              simulate abad cable, check the kernel falls back to polling
  *              to avoid a hotplug storm
- * Driver requirement: i915, xe
- * Functionality: chamelium, hotplug
  * Mega feature: DP
- * Test category: functionality test
  *
  * SUBTEST: hdmi-hpd-storm
  * Description: Trigger a series of hotplugs in a very small timeframe to
  *              simulate abad cable, check the kernel falls back to polling
  *              to avoid a hotplug storm
- * Driver requirement: i915, xe
- * Functionality: chamelium, hotplug
  * Mega feature: HDMI
- * Test category: functionality test
  *
  * SUBTEST: dp-hpd-storm-disable
  * Description: Disable HPD storm detection, trigger a storm and check the
  *              kernel doesn't detect one
- * Driver requirement: i915, xe
- * Functionality: chamelium, hotplug
  * Mega feature: DP
- * Test category: functionality test
  *
  * SUBTEST: hdmi-hpd-storm-disable
  * Description: Disable HPD storm detection, trigger a storm and check the
  *              kernel doesn't detect one
- * Driver requirement: i915, xe
- * Functionality: chamelium, hotplug
  * Mega feature: HDMI
- * Test category: functionality test
  */
 
 #define HPD_STORM_PULSE_INTERVAL_DP 100 /* ms */
diff --git a/tests/intel/kms_big_fb.c b/tests/intel/kms_big_fb.c
index cce7027e9..82aff532b 100644
--- a/tests/intel/kms_big_fb.c
+++ b/tests/intel/kms_big_fb.c
@@ -25,6 +25,9 @@
  * TEST: kms big fb
  * Category: Display
  * Description: Test big framebuffers
+ * Driver requirement: i915, xe
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -41,10 +44,7 @@
  * SUBTEST: linear-%dbpp-rotate-%d
  * Description: Sanity check if addfb ioctl works correctly for given combination
  *              of Linear modifier with %arg[1]-bpp & %arg[2]-rotation
- * Driver requirement: i915, xe
  * Functionality: big_fbs, kms_gem_interop, rotation
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1].values:       8, 16, 32, 64
  * arg[2].values:       0, 90, 180, 270
@@ -54,10 +54,7 @@
  * SUBTEST: %s-%dbpp-rotate-%d
  * Description: Sanity check if addfb ioctl works correctly for given combination
  *              of %arg[1] with %arg[2]-bpp & %arg[3]-rotation
- * Driver requirement: i915, xe
  * Functionality: big_fbs, kms_gem_interop, rotation, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -75,10 +72,7 @@
  * Description: Test maximum hardware supported stride length for given combination
  *              of linear modifier with max hardware stride length, %arg[1]-bpp,
  *              and %arg[2]-rotation
- * Driver requirement: i915, xe
  * Functionality: big_fbs, kms_gem_interop, rotation
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1].values:       32, 64
  * arg[2].values:       0, 180
@@ -89,10 +83,7 @@
  * Description: Test maximum hardware supported stride length for given combination
  *              of %arg[1] modifier with max hardware stride length, %arg[2]-bpp,
  *              and %arg[3]-rotation
- * Driver requirement: i915, xe
  * Functionality: big_fbs, kms_gem_interop, rotation, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -110,19 +101,13 @@
  * Description: Test maximum hardware supported stride length for given combination
  *              of %arg[1] modifier with max hardware stride length, %arg[2]-bpp,
  *              and %arg[3]-rotation with H-flip mode
- * Driver requirement: i915, xe
  * Functionality: big_fbs, kms_gem_interop, rotation, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: %s-max-hw-stride-%dbpp-rotate-%d-%s
  * Description: Test maximum hardware supported stride length for given combination
  *              of %arg[1] modifier with max hardware stride length, %arg[2]-bpp,
  *              and %arg[3]-rotation with %arg[4] mode
- * Driver requirement: i915, xe
  * Functionality: async_flips, big_fbs, kms_gem_interop, rotation, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -144,34 +129,22 @@
  * SUBTEST: linear-addfb
  * Description: Sanity check if addfb ioctl works correctly with Linear modifier
  *              for given size and strides of fb
- * Driver requirement: i915, xe
  * Functionality: big_fbs, kms_gem_interop
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: %s-addfb
  * Description: Sanity check if addfb ioctl works correctly with %arg[1] modifier
  *              for given size and strides of fb
- * Driver requirement: i915, xe
  * Functionality: big_fbs, kms_gem_interop, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: %s-addfb-size-overflow
  * Description: Sanity check if addfb ioctl fails correctly for (%arg[1]) modifier
  *              with small bo.
- * Driver requirement: i915, xe
  * Functionality: big_fbs, kms_gem_interop, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: %s-addfb-size-offset-overflow
  * Description: Sanity check if addfb ioctl fails correctly for (%arg[1]) modifier
  *              and offsets with small bo
- * Driver requirement: i915, xe
  * Functionality: big_fbs, kms_gem_interop, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
diff --git a/tests/intel/kms_big_joiner.c b/tests/intel/kms_big_joiner.c
index 3f2091723..c5f9f8db7 100644
--- a/tests/intel/kms_big_joiner.c
+++ b/tests/intel/kms_big_joiner.c
@@ -28,6 +28,10 @@
  * TEST: kms big joiner
  * Category: Display
  * Description: Test big joiner
+ * Driver requirement: i915, xe
+ * Functionality: 2p1p
+ * Mega feature: Bigjoiner
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -36,24 +40,12 @@
  * SUBTEST: invalid-modeset
  * Description: Verify if the modeset on the adjoining pipe is rejected when
  *              the pipe is active with a big joiner modeset
- * Driver requirement: i915, xe
- * Functionality: 2p1p
- * Mega feature: Bigjoiner
- * Test category: functionality test
  *
  * SUBTEST: basic
  * Description: Verify the basic modeset on big joiner mode on all pipes
- * Driver requirement: i915, xe
- * Functionality: 2p1p
- * Mega feature: Bigjoiner
- * Test category: functionality test
  *
  * SUBTEST: 2x-modeset
  * Description: Verify simultaneous modeset on 2 big joiner outputs
- * Driver requirement: i915, xe
- * Functionality: 2p1p
- * Mega feature: Bigjoiner
- * Test category: functionality test
  */
 
 IGT_TEST_DESCRIPTION("Test big joiner");
diff --git a/tests/intel/kms_busy.c b/tests/intel/kms_busy.c
index 63d1bbf71..004d9ee6e 100644
--- a/tests/intel/kms_busy.c
+++ b/tests/intel/kms_busy.c
@@ -25,6 +25,10 @@
  * TEST: kms busy
  * Category: Display
  * Description: Basic check of KMS ABI with busy framebuffers.
+ * Driver requirement: i915
+ * Functionality: kms_core, hang
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include <sys/poll.h>
@@ -37,38 +41,19 @@
 /**
  * SUBTEST: basic
  * Description: Test for basic check of KMS ABI with busy framebuffers.
- * Driver requirement: i915
  * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: basic-hang
  * Description: Test for basic check of KMS ABI with busy framebuffers.
- * Driver requirement: i915
- * Functionality: kms_core, hang
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: extended-pageflip-modeset-hang-oldfb
  * Description: Test for basic check of KMS ABI with busy framebuffers.
- * Driver requirement: i915
- * Functionality: kms_core, hang
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: extended-pageflip-hang-%s
  * Description: Test for basic check of KMS ABI with busy framebuffers.
- * Driver requirement: i915
- * Functionality: kms_core, hang
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: extended-modeset-hang-%s
  * Description: Test for basic check of KMS ABI with busy framebuffers.
- * Driver requirement: i915
- * Functionality: kms_core, hang
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -79,10 +64,6 @@
 /**
  * SUBTEST: extended-modeset-hang-%s
  * Description: Test for basic check of KMS ABI with busy framebuffers.
- * Driver requirement: i915
- * Functionality: kms_core, hang
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
diff --git a/tests/intel/kms_ccs.c b/tests/intel/kms_ccs.c
index d1eb735fa..0a202d037 100644
--- a/tests/intel/kms_ccs.c
+++ b/tests/intel/kms_ccs.c
@@ -28,6 +28,10 @@
  * Description: Test render compression (RC), in which the main surface is
  *              complemented by a color control surface (CCS) that the display
  *              uses to interpret the compressed data.
+ * Driver requirement: i915, xe
+ * Functionality: ccs, tiling
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -39,10 +43,6 @@
 /**
  * SUBTEST: %s-%s-%s
  * Description: Test %arg[2] with given %arg[3] modifier
- * Driver requirement: i915, xe
- * Functionality: ccs, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -84,10 +84,6 @@
 /**
  * SUBTEST: %s-%s-%s
  * Description: Test %arg[2] with %arg[3] modifier
- * Driver requirement: i915, xe
- * Functionality: ccs, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -133,10 +129,7 @@
 /**
  * SUBTEST: %s-%s-%s
  * Description: Test %arg[2] with %arg[3] modifier
- * Driver requirement: i915, xe
  * Functionality: ccs, rotation, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
diff --git a/tests/intel/kms_cdclk.c b/tests/intel/kms_cdclk.c
index 97cb615c5..7baf7d98e 100644
--- a/tests/intel/kms_cdclk.c
+++ b/tests/intel/kms_cdclk.c
@@ -28,6 +28,10 @@
  * TEST: kms cdclk
  * Category: Display
  * Description: Test cdclk features : crawling and squashing
+ * Driver requirement: i915, xe
+ * Functionality: kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -36,24 +40,12 @@
  * SUBTEST: mode-transition-all-outputs
  * Description: Mode transition (low to high) test to validate cdclk frequency
  *              change by simultaneous modesets on all pipes with valid outputs.
- * Driver requirement: i915, xe
- * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: mode-transition
  * Description: Mode transition (low to high) test to validate cdclk frequency change.
- * Driver requirement: i915, xe
- * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: plane-scaling
  * Description: Plane scaling test to validate cdclk frequency change.
- * Driver requirement: i915, xe
- * Functionality: kms_core, plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
  */
 
 IGT_TEST_DESCRIPTION("Test cdclk features : crawling and squashing");
diff --git a/tests/intel/kms_draw_crc.c b/tests/intel/kms_draw_crc.c
index b9d9cd6e4..e3d1c0ba9 100644
--- a/tests/intel/kms_draw_crc.c
+++ b/tests/intel/kms_draw_crc.c
@@ -26,6 +26,10 @@
  * TEST: kms draw crc
  * Category: Display
  * Description: Tests whether the igt_draw library actually works.
+ * Driver requirement: i915, xe
+ * Functionality: kms_core, tiling
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "i915/gem.h"
@@ -34,18 +38,10 @@
 /**
  * SUBTEST: fill-fb
  * Description: This subtest verifies CRC after filling fb with x-tiling or none.
- * Driver requirement: i915, xe
- * Functionality: kms_core, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: draw-method-%s
  * Description: Verify that igt draw library works for the %arg[1] method with
  *              different modifiers & DRM formats.
- * Driver requirement: i915, xe
- * Functionality: kms_core, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -59,9 +55,6 @@
  * Description: Verify that igt draw library works for the %arg[1] method with
  *              different modifiers & DRM formats.
  * Driver requirement: i915
- * Functionality: kms_core, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
diff --git a/tests/intel/kms_dsc.c b/tests/intel/kms_dsc.c
index 0df3613b3..3433e0907 100644
--- a/tests/intel/kms_dsc.c
+++ b/tests/intel/kms_dsc.c
@@ -34,6 +34,10 @@
  * TEST: kms dsc
  * Category: Display
  * Description: Test to validate display stream compression
+ * Driver requirement: i915, xe
+ * Functionality: dsc
+ * Mega feature: VDSC
+ * Test category: functionality test
  */
 
 #include "kms_dsc_helper.h"
@@ -42,10 +46,6 @@
  * SUBTEST: dsc-%s
  * Description: Tests Display Stream Compression functionality if supported by a
  *              connector by forcing %arg[1] on all connectors that support it
- * Driver requirement: i915, xe
- * Functionality: dsc
- * Mega feature: VDSC
- * Test category: functionality test
  *
  * arg[1]:
  *
diff --git a/tests/intel/kms_fbcon_fbt.c b/tests/intel/kms_fbcon_fbt.c
index d437d70f6..e2617a79a 100644
--- a/tests/intel/kms_fbcon_fbt.c
+++ b/tests/intel/kms_fbcon_fbt.c
@@ -29,6 +29,8 @@
  * Category: Display
  * Description: Test the relationship between fbcon and the frontbuffer tracking
  *              infrastructure.
+ * Driver requirement: i915, xe
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -43,34 +45,26 @@
  * SUBTEST: fbc
  * Description: Test the relationship between fbcon and the frontbuffer tracking
  *              infrastructure with fbc enabled.
- * Driver requirement: i915, xe
  * Functionality: fbc, fbcon, fbt
  * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbc-suspend
  * Description: Suspend test to validate  the relationship between fbcon and the
  *              frontbuffer tracking infrastructure with fbc enabled.
- * Driver requirement: i915, xe
  * Functionality: fbc, fbcon, fbt, suspend
  * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psr
  * Description: Test the relationship between fbcon and the frontbuffer tracking
  *              infrastructure with psr enabled.
- * Driver requirement: i915, xe
  * Functionality: fbcon, fbt, psr
  * Mega feature: PSR
- * Test category: functionality test
  *
  * SUBTEST: psr-suspend
  * Description: Suspend test to validate the relationship between fbcon and the
  *              frontbuffer tracking infrastructure with psr enabled.
- * Driver requirement: i915, xe
  * Functionality: fbcon, fbt, psr, suspend
  * Mega feature: PSR
- * Test category: functionality test
  */
 
 IGT_TEST_DESCRIPTION("Test the relationship between fbcon and the frontbuffer "
diff --git a/tests/intel/kms_flip_scaled_crc.c b/tests/intel/kms_flip_scaled_crc.c
index 8f37299ea..7dc07bc83 100644
--- a/tests/intel/kms_flip_scaled_crc.c
+++ b/tests/intel/kms_flip_scaled_crc.c
@@ -26,6 +26,10 @@
  * TEST: kms flip scaled crc
  * Category: Display
  * Description: Test flipping between scaled/nonscaled framebuffers
+ * Driver requirement: i915, xe
+ * Functionality: ccs, scaling, tiling, vblank
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -34,114 +38,63 @@
  * SUBTEST: flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling
  * Description: Flip from 64bpp non scaled fb to 32bpp upscaled fb to stress CD
  *              clock programming
- * Driver requirement: i915, xe
- * Functionality: ccs, scaling, tiling, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
  * Description: Flip from 64bpp non scaled fb to 32bpp downscaled fb to stress CD
  *              clock programming
- * Driver requirement: i915, xe
- * Functionality: ccs, scaling, tiling, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: flip-32bpp-linear-to-64bpp-linear-%s
  * Description: Flip from 32bpp non scaled fb to 64bpp %arg[1] fb to stress CD
  *              clock programming
- * Driver requirement: i915, xe
  * Functionality: scaling, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-%s
  * Description: Flip from 32bpp non scaled fb to 32bpp %arg[1] fb to stress CD
  *              clock programming
- * Driver requirement: i915, xe
- * Functionality: ccs, scaling, tiling, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: flip-32bpp-4tile-to-64bpp-4tile-%s
  * Description: Flip from 32bpp non scaled fb to 64bpp %arg[1] fb to stress CD
  *              clock programming
- * Driver requirement: i915, xe
  * Functionality: scaling, tiling, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: flip-32bpp-xtile-to-64bpp-xtile-%s
  * Description: Flip from 32bpp non scaled fb to 64bpp %arg[1] fb to stress CD
  *              clock programming
- * Driver requirement: i915, xe
  * Functionality: scaling, tiling, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: flip-32bpp-yftile-to-32bpp-yftileccs-%s
  * Description: Flip from 32bpp non scaled fb to 32bpp %arg[1] fb to stress CD
  *              clock programming
- * Driver requirement: i915, xe
- * Functionality: ccs, scaling, tiling, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: flip-32bpp-yftile-to-64bpp-yftile-%s
  * Description: Flip from 32bpp non scaled fb to 64bpp %arg[1] fb to stress CD
  *              clock programming
- * Driver requirement: i915, xe
  * Functionality: scaling, tiling, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: flip-32bpp-yftileccs-to-64bpp-yftile-%s
  * Description: Flip from 32bpp non scaled fb to 64bpp %arg[1] fb to stress CD
  *              clock programming
- * Driver requirement: i915, xe
- * Functionality: ccs, scaling, tiling, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: flip-32bpp-ytile-to-32bpp-ytileccs-%s
  * Description: Flip from 32bpp non scaled fb to 32bpp %arg[1] fb to stress CD
  *              clock programming
- * Driver requirement: i915, xe
- * Functionality: ccs, scaling, tiling, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-%s
  * Description: Flip from 32bpp non scaled fb to 32bpp %arg[1] fb to stress CD
  *              clock programming
- * Driver requirement: i915, xe
- * Functionality: ccs, scaling, tiling, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: flip-32bpp-ytile-to-64bpp-ytile-%s
  * Description: Flip from 32bpp non scaled fb to 64bpp %arg[1] fb to stress CD
  *              clock programming
- * Driver requirement: i915, xe
  * Functionality: scaling, tiling, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: flip-32bpp-ytileccs-to-64bpp-ytile-%s
  * Description: Flip from 32bpp non scaled fb to 64bpp %arg[1] fb to stress CD
  *              clock programming
- * Driver requirement: i915, xe
- * Functionality: ccs, scaling, tiling, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-%s
  * Description: Flip from 64bpp non scaled fb to 32bpp %arg[1] fb to stress CD
  *              clock programming
- * Driver requirement: i915, xe
- * Functionality: ccs, scaling, tiling, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -153,42 +106,27 @@
  * SUBTEST: flip-64bpp-4tile-to-%dbpp-4tile-%s
  * Description: Flip from 64bpp non scaled fb to %arg[1]bpp %arg[2] fb to stress
  *              CD clock programming
- * Driver requirement: i915, xe
  * Functionality: scaling, tiling, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: flip-64bpp-xtile-to-%dbpp-xtile-%s
  * Description: Flip from 64bpp non scaled fb to %arg[1]bpp %arg[2] fb to stress
  *              CD clock programming
- * Driver requirement: i915, xe
  * Functionality: scaling, tiling, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: flip-64bpp-yftile-to-%dbpp-yftile-%s
  * Description: Flip from 64bpp non scaled fb to %arg[1]bpp %arg[2] fb to stress
  *              CD clock programming
- * Driver requirement: i915, xe
  * Functionality: scaling, tiling, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: flip-64bpp-ytile-to-%dbpp-ytile-%s
  * Description: Flip from 64bpp non scaled fb to %arg[1]bpp %arg[2] fb to stress
  *              CD clock programming
- * Driver requirement: i915, xe
  * Functionality: scaling, tiling, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: flip-64bpp-linear-to-%dbpp-linear-%s
  * Description: Flip from 64bpp non scaled fb to %arg[1]bpp %arg[2] fb to stress
  *              CD clock programming
- * Driver requirement: i915, xe
  * Functionality: scaling, tiling, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1].values: 16, 32
  * arg[2]:
diff --git a/tests/intel/kms_frontbuffer_tracking.c b/tests/intel/kms_frontbuffer_tracking.c
index 085adc5b1..abc44bf39 100644
--- a/tests/intel/kms_frontbuffer_tracking.c
+++ b/tests/intel/kms_frontbuffer_tracking.c
@@ -28,6 +28,9 @@
  * TEST: kms frontbuffer tracking
  * Category: Display
  * Description: Test the Kernel's frontbuffer tracking mechanism and its related features: FBC, PSR and DRRS
+ * Driver requirement: i915, xe
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include <sys/types.h>
@@ -48,66 +51,39 @@
 /**
  * SUBTEST: basic
  * Description: Do some basic operations regardless of which features are enabled
- * Driver requirement: i915, xe
  * Functionality: fbt
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: plane-fbc-rte
  * Description: Sanity test to enable FBC on a plane.
- * Driver requirement: i915, xe
  * Functionality: fbc
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: drrs-%dp-rte
  * Description: Sanity test to enable DRRS with %arg[1] panels.
- * Driver requirement: i915, xe
  * Functionality: fbt, drrs
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbc-%dp-rte
  * Description: Sanity test to enable FBC with %arg[1] panels.
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psr-%dp-rte
  * Description: Sanity test to enable PSR with %arg[1] panels.
- * Driver requirement: i915, xe
  * Functionality: fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcdrrs-%dp-rte
  * Description: Sanity test to enable FBC & DRRS with %arg[1] panels.
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsr-%dp-rte
  * Description: Sanity test to enable FBC & PSR with %arg[1] panels.
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psrdrrs-%dp-rte
  * Description: Sanity test to enable PSR & DRRS with %arg[1] panels.
- * Driver requirement: i915, xe
  * Functionality: fbt, drrs, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsrdrrs-%dp-rte
  * Description: Sanity test to enable FBC, PSR & DRRS with %arg[1] panels.
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt, drrs, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1].values:   1, 2
  */
@@ -115,52 +91,31 @@
 /**
  * SUBTEST: drrs-1p-offscren-pri-%s-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
  * Functionality: drrs, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbc-1p-offscren-pri-%s-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psr-1p-offscren-pri-%s-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
  * Functionality: fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcdrrs-1p-offscren-pri-%s-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsr-1p-offscren-pri-%s-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psrdrrs-1p-offscren-pri-%s-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
  * Functionality: drrs, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsrdrrs-1p-offscren-pri-%s-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -179,50 +134,36 @@
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
  * Functionality: drrs, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbc-1p-offscren-pri-%s-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
  * Functionality: fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psr-1p-offscren-pri-%s-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
  * Functionality: fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcdrrs-1p-offscren-pri-%s-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
  * Functionality: drrs, fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsr-1p-offscren-pri-%s-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
  * Functionality: fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psrdrrs-1p-offscren-pri-%s-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
  * Functionality: drrs, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsrdrrs-1p-offscren-pri-%s-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
  * Functionality: drrs, fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -241,50 +182,36 @@
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
  * Functionality: drrs, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbc-%dp-primscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
  * Functionality: fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psr-%dp-primscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
  * Functionality: fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcdrrs-%dp-primscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
  * Functionality: drrs, fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsr-%dp-primscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
  * Functionality: fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psrdrrs-%dp-primscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
  * Functionality: drrs, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
  * Functionality: drrs, fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1].values:   1, 2
  *
@@ -304,52 +231,31 @@
 /**
  * SUBTEST: drrs-%dp-primscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
  * Functionality: drrs, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbc-%dp-primscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psr-%dp-primscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
  * Functionality: fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcdrrs-%dp-primscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsr-%dp-primscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psrdrrs-%dp-primscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
  * Functionality: drrs, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1].values:   1, 2
  *
@@ -369,52 +275,31 @@
 /**
  * SUBTEST: drrs-%dp-primscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
  * Functionality: drrs, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbc-%dp-primscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psr-%dp-primscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
  * Functionality: fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcdrrs-%dp-primscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsr-%dp-primscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psrdrrs-%dp-primscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
  * Functionality: drrs, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsrdrrs-%dp-primscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1].values:   1, 2
  *
@@ -430,50 +315,36 @@
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
  * Functionality: drrs, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbc-%dp-primscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
  * Functionality: fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psr-%dp-primscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
  * Functionality: fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcdrrs-%dp-primscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
  * Functionality: drrs, fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsr-%dp-primscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
  * Functionality: fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psrdrrs-%dp-primscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
  * Functionality: drrs, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsrdrrs-%dp-primscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
  * Functionality: drrs, fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1].values:   1, 2
  *
@@ -487,52 +358,31 @@
 /**
  * SUBTEST: drrs-2p-scndscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
  * Functionality: drrs, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbc-2p-scndscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psr-2p-scndscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
  * Functionality: fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcdrrs-2p-scndscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsr-2p-scndscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psrdrrs-2p-scndscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
  * Functionality: drrs, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -552,50 +402,36 @@
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
  * Functionality: drrs, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbc-2p-scndscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
  * Functionality: fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psr-2p-scndscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
  * Functionality: fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcdrrs-2p-scndscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
  * Functionality: drrs, fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsr-2p-scndscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
  * Functionality: fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psrdrrs-2p-scndscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
  * Functionality: drrs, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
  * Functionality: drrs, fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -613,52 +449,31 @@
 /**
  * SUBTEST: drrs-2p-scndscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
  * Functionality: drrs, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbc-2p-scndscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psr-2p-scndscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
  * Functionality: fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcdrrs-2p-scndscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsr-2p-scndscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psrdrrs-2p-scndscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
  * Functionality: drrs, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsrdrrs-2p-scndscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -672,50 +487,36 @@
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
  * Functionality: drrs, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbc-2p-scndscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
  * Functionality: fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psr-2p-scndscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
  * Functionality: fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcdrrs-2p-scndscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
  * Functionality: drrs, fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsr-2p-scndscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
  * Functionality: fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psrdrrs-2p-scndscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
  * Functionality: drrs, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsrdrrs-2p-scndscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
  * Functionality: drrs, fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -727,52 +528,31 @@
 /**
  * SUBTEST: drrs-%dp-pri-indfb-multidraw
  * Description: Draw a set of rectangles on the screen using alternated drawing methods
- * Driver requirement: i915, xe
  * Functionality: drrs, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbc-%dp-pri-indfb-multidraw
  * Description: Draw a set of rectangles on the screen using alternated drawing methods
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psr-%dp-pri-indfb-multidraw
  * Description: Draw a set of rectangles on the screen using alternated drawing methods
- * Driver requirement: i915, xe
  * Functionality: fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcdrrs-%dp-pri-indfb-multidraw
  * Description: Draw a set of rectangles on the screen using alternated drawing methods
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsr-%dp-pri-indfb-multidraw
  * Description: Draw a set of rectangles on the screen using alternated drawing methods
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psrdrrs-%dp-pri-indfb-multidraw
  * Description: Draw a set of rectangles on the screen using alternated drawing methods
- * Driver requirement: i915, xe
  * Functionality: drrs, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsrdrrs-%dp-pri-indfb-multidraw
  * Description: Draw a set of rectangles on the screen using alternated drawing methods
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1].values:   1, 2
  */
@@ -780,52 +560,31 @@
 /**
  * SUBTEST: drrs-%s-draw-%s
  * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
- * Driver requirement: i915, xe
  * Functionality: drrs, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbc-%s-draw-%s
  * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psr-%s-draw-%s
  * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
- * Driver requirement: i915, xe
  * Functionality: fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcdrrs-%s-draw-%s
  * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsr-%s-draw-%s
  * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psrdrrs-%s-draw-%s
  * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
- * Driver requirement: i915, xe
  * Functionality: drrs, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsrdrrs-%s-draw-%s
  * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -844,50 +603,36 @@
  * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
  * Driver requirement: i915
  * Functionality: drrs, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbc-%s-draw-%s
  * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
  * Driver requirement: i915
  * Functionality: fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psr-%s-draw-%s
  * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
  * Driver requirement: i915
  * Functionality: fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcdrrs-%s-draw-%s
  * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
  * Driver requirement: i915
  * Functionality: drrs, fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsr-%s-draw-%s
  * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
  * Driver requirement: i915
  * Functionality: fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psrdrrs-%s-draw-%s
  * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
  * Driver requirement: i915
  * Functionality: drrs, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsrdrrs-%s-draw-%s
  * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
  * Driver requirement: i915
  * Functionality: drrs, fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -904,96 +649,57 @@
 /**
  * SUBTEST: drrs-slowdraw
  * Description: Sleep a little bit between drawing operations with DRRS
- * Driver requirement: i915, xe
  * Functionality: drrs, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psr-slowdraw
  * Description: Sleep a little bit between drawing operations with PSR
- * Driver requirement: i915, xe
  * Functionality: fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcdrrs-slowdraw
  * Description: Sleep a little bit between drawing operations with FBC & DRRS
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsr-slowdraw
  * Description: Sleep a little bit between drawing operations with FBC & PSR
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psrdrrs-slowdraw
  * Description: Sleep a little bit between drawing operations with PSR & DRRS
- * Driver requirement: i915, xe
  * Functionality: drrs, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsrdrrs-slowdraw
  * Description: Sleep a little bit between drawing operations with FBC, PSR & DRRS
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  */
 
 /**
  * SUBTEST: drrs-%dp-primscrn-%s-%sflip-blt
  * Description: Just exercise page flips with the patterns we have
- * Driver requirement: i915, xe
  * Functionality: drrs, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbc-%dp-primscrn-%s-%sflip-blt
  * Description: Just exercise page flips with the patterns we have
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psr-%dp-primscrn-%s-%sflip-blt
  * Description: Just exercise page flips with the patterns we have
- * Driver requirement: i915, xe
  * Functionality: fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcdrrs-%dp-primscrn-%s-%sflip-blt
  * Description: Just exercise page flips with the patterns we have
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsr-%dp-primscrn-%s-%sflip-blt
  * Description: Just exercise page flips with the patterns we have
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psrdrrs-%dp-primscrn-%s-%sflip-blt
  * Description: Just exercise page flips with the patterns we have
- * Driver requirement: i915, xe
  * Functionality: drrs, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-%sflip-blt
  * Description: Just exercise page flips with the patterns we have
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1].values:   1, 2
  *
@@ -1012,52 +718,31 @@
 /**
  * SUBTEST: drrs-2p-scndscrn-%s-%sflip-blt
  * Description: Just exercise page flips with the patterns we have
- * Driver requirement: i915, xe
  * Functionality: drrs, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbc-2p-scndscrn-%s-%sflip-blt
  * Description: Just exercise page flips with the patterns we have
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psr-2p-scndscrn-%s-%sflip-blt
  * Description: Just exercise page flips with the patterns we have
- * Driver requirement: i915, xe
  * Functionality: fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcdrrs-2p-scndscrn-%s-%sflip-blt
  * Description: Just exercise page flips with the patterns we have
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsr-2p-scndscrn-%s-%sflip-blt
  * Description: Just exercise page flips with the patterns we have
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psrdrrs-2p-scndscrn-%s-%sflip-blt
  * Description: Just exercise page flips with the patterns we have
- * Driver requirement: i915, xe
  * Functionality: drrs, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-%sflip-blt
  * Description: Just exercise page flips with the patterns we have
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -1074,31 +759,19 @@
 /**
  * SUBTEST: fbc-%dp-%s-fliptrack-mmap-gtt
  * Description: Check if the hardware tracking works after page flips
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcdrrs-%dp-%s-fliptrack-mmap-gtt
  * Description: Check if the hardware tracking works after page flips
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsr-%dp-%s-fliptrack-mmap-gtt
  * Description: Check if the hardware tracking works after page flips
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsrdrrs-%dp-%s-fliptrack-mmap-gtt
  * Description: Check if the hardware tracking works after page flips
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1].values:   1, 2
  *
@@ -1111,52 +784,31 @@
 /**
  * SUBTEST: drrs-%dp-primscrn-%s-indfb-move
  * Description: Just move the %arg[2] around
- * Driver requirement: i915, xe
  * Functionality: drrs, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbc-%dp-primscrn-%s-indfb-move
  * Description: Just move the %arg[2] around
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psr-%dp-primscrn-%s-indfb-move
  * Description: Just move the %arg[2] around
- * Driver requirement: i915, xe
  * Functionality: fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcdrrs-%dp-primscrn-%s-indfb-move
  * Description: Just move the %arg[2] around
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsr-%dp-primscrn-%s-indfb-move
  * Description: Just move the %arg[2] around
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psrdrrs-%dp-primscrn-%s-indfb-move
  * Description: Just move the %arg[2] around
- * Driver requirement: i915, xe
  * Functionality: drrs, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-indfb-move
  * Description: Just move the %arg[2] around
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1].values:   1, 2
  *
@@ -1169,52 +821,31 @@
 /**
  * SUBTEST: drrs-2p-scndscrn-%s-indfb-move
  * Description: Just move the %arg[1] around
- * Driver requirement: i915, xe
  * Functionality: drrs, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbc-2p-scndscrn-%s-indfb-move
  * Description: Just move the %arg[1] around
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psr-2p-scndscrn-%s-indfb-move
  * Description: Just move the %arg[1] around
- * Driver requirement: i915, xe
  * Functionality: fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcdrrs-2p-scndscrn-%s-indfb-move
  * Description: Just move the %arg[1] around
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsr-2p-scndscrn-%s-indfb-move
  * Description: Just move the %arg[1] around
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psrdrrs-2p-scndscrn-%s-indfb-move
  * Description: Just move the %arg[1] around
- * Driver requirement: i915, xe
  * Functionality: drrs, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-indfb-move
  * Description: Just move the %arg[1] around
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -1225,52 +856,31 @@
 /**
  * SUBTEST: drrs-%dp-primscrn-%s-indfb-onoff
  * Description: Just enable and disable the %arg[2] a few times
- * Driver requirement: i915, xe
  * Functionality: drrs, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbc-%dp-primscrn-%s-indfb-onoff
  * Description: Just enable and disable the %arg[2] a few times
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psr-%dp-primscrn-%s-indfb-onoff
  * Description: Just enable and disable the %arg[2] a few times
- * Driver requirement: i915, xe
  * Functionality: fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcdrrs-%dp-primscrn-%s-indfb-onoff
  * Description: Just enable and disable the %arg[2] a few times
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsr-%dp-primscrn-%s-indfb-onoff
  * Description: Just enable and disable the %arg[2] a few times
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psrdrrs-%dp-primscrn-%s-indfb-onoff
  * Description: Just enable and disable the %arg[2] a few times
- * Driver requirement: i915, xe
  * Functionality: drrs, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-indfb-onoff
  * Description: Just enable and disable the %arg[2] a few times
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1].values:   1, 2
  *
@@ -1283,52 +893,31 @@
 /**
  * SUBTEST: drrs-2p-scndscrn-%s-indfb-onoff
  * Description: Just enable and disable the %arg[1] a few times
- * Driver requirement: i915, xe
  * Functionality: drrs, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbc-2p-scndscrn-%s-indfb-onoff
  * Description: Just enable and disable the %arg[1] a few times
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psr-2p-scndscrn-%s-indfb-onoff
  * Description: Just enable and disable the %arg[1] a few times
- * Driver requirement: i915, xe
  * Functionality: fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcdrrs-2p-scndscrn-%s-indfb-onoff
  * Description: Just enable and disable the %arg[1] a few times
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsr-2p-scndscrn-%s-indfb-onoff
  * Description: Just enable and disable the %arg[1] a few times
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psrdrrs-2p-scndscrn-%s-indfb-onoff
  * Description: Just enable and disable the %arg[1] a few times
- * Driver requirement: i915, xe
  * Functionality: drrs, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-indfb-onoff
  * Description: Just enable and disable the %arg[1] a few times
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -1339,101 +928,59 @@
 /**
  * SUBTEST: drrs-%dp-primscrn-spr-indfb-fullscreen
  * Description: Put a fullscreen plane covering the whole screen
- * Driver requirement: i915, xe
  * Functionality: drrs, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbc-%dp-primscrn-spr-indfb-fullscreen
  * Description: Put a fullscreen plane covering the whole screen
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psr-%dp-primscrn-spr-indfb-fullscreen
  * Description: Put a fullscreen plane covering the whole screen
- * Driver requirement: i915, xe
  * Functionality: fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcdrrs-%dp-primscrn-spr-indfb-fullscreen
  * Description: Put a fullscreen plane covering the whole screen
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsr-%dp-primscrn-spr-indfb-fullscreen
  * Description: Put a fullscreen plane covering the whole screen
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psrdrrs-%dp-primscrn-spr-indfb-fullscreen
  * Description: Put a fullscreen plane covering the whole screen
- * Driver requirement: i915, xe
  * Functionality: drrs, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsrdrrs-%dp-primscrn-spr-indfb-fullscreen
  * Description: Put a fullscreen plane covering the whole screen
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: drrs-2p-scndscrn-spr-indfb-fullscreen
  * Description: Put a fullscreen plane covering the whole screen
- * Driver requirement: i915, xe
  * Functionality: drrs, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbc-2p-scndscrn-spr-indfb-fullscreen
  * Description: Put a fullscreen plane covering the whole screen
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psr-2p-scndscrn-spr-indfb-fullscreen
  * Description: Put a fullscreen plane covering the whole screen
- * Driver requirement: i915, xe
  * Functionality: fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcdrrs-2p-scndscrn-spr-indfb-fullscreen
  * Description: Put a fullscreen plane covering the whole screen
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsr-2p-scndscrn-spr-indfb-fullscreen
  * Description: Put a fullscreen plane covering the whole screen
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psrdrrs-2p-scndscrn-spr-indfb-fullscreen
  * Description: Put a fullscreen plane covering the whole screen
- * Driver requirement: i915, xe
  * Functionality: drrs, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsrdrrs-2p-scndscrn-spr-indfb-fullscreen
  * Description: Put a fullscreen plane covering the whole screen
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1].values:   1, 2
  */
@@ -1441,52 +988,31 @@
 /**
  * SUBTEST: drrs-%s-scaledprimary
  * Description: Try different primary plane scaling strategies
- * Driver requirement: i915, xe
  * Functionality: drrs, fbt, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbc-%s-scaledprimary
  * Description: Try different primary plane scaling strategies
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psr-%s-scaledprimary
  * Description: Try different primary plane scaling strategies
- * Driver requirement: i915, xe
  * Functionality: fbt, psr, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcdrrs-%s-scaledprimary
  * Description: Try different primary plane scaling strategies
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsr-%s-scaledprimary
  * Description: Try different primary plane scaling strategies
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt, psr, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psrdrrs-%s-scaledprimary
  * Description: Try different primary plane scaling strategies
- * Driver requirement: i915, xe
  * Functionality: drrs, fbt, psr, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsrdrrs-%s-scaledprimary
  * Description: Try different primary plane scaling strategies
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt, psr, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -1497,102 +1023,61 @@
 /**
  * SUBTEST: drrs-modesetfrombusy
  * Description: Modeset from a busy buffer to a non-busy buffer with DRRS
- * Driver requirement: i915, xe
  * Functionality: drrs, fbt, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbc-modesetfrombusy
  * Description: Modeset from a busy buffer to a non-busy buffer with FBC
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psr-modesetfrombusy
  * Description: Modeset from a busy buffer to a non-busy buffer with PSR
- * Driver requirement: i915, xe
  * Functionality: fbt, psr, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcdrrs-modesetfrombusy
  * Description: Modeset from a busy buffer to a non-busy buffer with FBC & DRRS
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsr-modesetfrombusy
  * Description: Modeset from a busy buffer to a non-busy buffer with FBC & PSR
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt, psr, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psrdrrs-modesetfrombusy
  * Description: Modeset from a busy buffer to a non-busy buffer with PSR & DRRS
- * Driver requirement: i915, xe
  * Functionality: drrs, fbt, psr, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsrdrrs-modesetfrombusy
  * Description: Modeset from a busy buffer to a non-busy buffer with FBC, PSR & DRRS
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt, psr, scaling
- * Mega feature: General Display Features
  */
 
 /**
  * SUBTEST: drrs-suspend
  * Description: Make sure suspend/resume keeps us on the same state of DRRS
- * Driver requirement: i915, xe
  * Functionality: drrs, fbt, suspend
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbc-suspend
  * Description: Make sure suspend/resume keeps us on the same state of FBC
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt, suspend
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psr-suspend
  * Description: Make sure suspend/resume keeps us on the same state of PSR
- * Driver requirement: i915, xe
  * Functionality: fbt, psr, suspend
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcdrrs-suspend
  * Description: Make sure suspend/resume keeps us on the same state of FBC & DRRS
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt, suspend
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsr-suspend
  * Description: Make sure suspend/resume keeps us on the same state of FBC & PSR
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt, psr, suspend
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psrdrrs-suspend
  * Description: Make sure suspend/resume keeps us on the same state of PSR & DRRS
- * Driver requirement: i915, xe
  * Functionality: drrs, fbt, psr, suspend
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsrdrrs-suspend
  * Description: Make sure suspend/resume keeps us on the same state of FBC, PSR & DRRS
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt, psr, suspend
- * Mega feature: General Display Features
- * Test category: functionality test
  */
 
 /**
@@ -1600,114 +1085,76 @@
  * Description: Test drawing as far from the fence start as possible
  * Driver requirement: i915
  * Functionality: drrs, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbc-farfromfence-mmap-gtt
  * Description: Test drawing as far from the fence start as possible
  * Driver requirement: i915
  * Functionality: fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psr-farfromfence-mmap-gtt
  * Description: Test drawing as far from the fence start as possible
  * Driver requirement: i915
  * Functionality: fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcdrrs-farfromfence-mmap-gtt
  * Description: Test drawing as far from the fence start as possible
  * Driver requirement: i915
  * Functionality: drrs, fbc, fbt, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsr-farfromfence-mmap-gtt
  * Description: Test drawing as far from the fence start as possible
  * Driver requirement: i915
  * Functionality: fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psrdrrs-farfromfence-mmap-gtt
  * Description: Test drawing as far from the fence start as possible
  * Driver requirement: i915
  * Functionality: drrs, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsrdrrs-farfromfence-mmap-gtt
  * Description: Test drawing as far from the fence start as possible
  * Driver requirement: i915
  * Functionality: drrs, fbc, fbt, kms_core, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  */
 
 /**
  * SUBTEST: fbc-stridechange
  * Description: Change the frontbuffer stride by doing a modeset
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcdrrs-stridechange
  * Description: Change the frontbuffer stride by doing a modeset
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsr-stridechange
  * Description: Change the frontbuffer stride by doing a modeset
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsrdrrs-stridechange
  * Description: Change the frontbuffer stride by doing a modeset
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt, psr
- * Mega feature: General Display Features
- * Test category: functionality test
  */
 
 /**
  * SUBTEST: fbc-tiling-%s
  * Description: Test %arg[1] formats, if the tiling format supports FBC do the
  *              basic drawing test, else set the mode & test if FBC is disabled
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcdrrs-tiling-%s
  * Description: Test %arg[1] formats, if the tiling format supports FBC do the
  *              basic drawing test, else set the mode & test if FBC is disabled
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsr-tiling-%s
  * Description: Test %arg[1] formats, if the tiling format supports FBC do the
  *              basic drawing test, else set the mode & test if FBC is disabled
- * Driver requirement: i915, xe
  * Functionality: fbc, fbt, psr, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fbcpsrdrrs-tiling-%s
  * Description: Test %arg[1] formats, if the tiling format supports FBC do the
  *              basic drawing test, else set the mode & test if FBC is disabled
- * Driver requirement: i915, xe
  * Functionality: drrs, fbc, fbt, psr, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
diff --git a/tests/intel/kms_legacy_colorkey.c b/tests/intel/kms_legacy_colorkey.c
index 69539f558..27ec64051 100644
--- a/tests/intel/kms_legacy_colorkey.c
+++ b/tests/intel/kms_legacy_colorkey.c
@@ -25,6 +25,10 @@
  * TEST: kms legacy colorkey
  * Category: Display
  * Description: Test to check the legacy set colorkey ioctl on sprite planes.
+ * Driver requirement: i915
+ * Functionality: plane, xorg_xv
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -33,17 +37,9 @@
 /**
  * SUBTEST: basic
  * Description: Check that the legacy set colorkey ioctl only works on sprite planes.
- * Driver requirement: i915
- * Functionality: plane, xorg_xv
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: invalid-plane
  * Description: Check invalid plane id's, zero and outrange
- * Driver requirement: i915
- * Functionality: plane, xorg_xv
- * Mega feature: General Display Features
- * Test category: functionality test
  */
 
 IGT_TEST_DESCRIPTION("Check that the legacy set colorkey ioctl only works on sprite planes.");
diff --git a/tests/intel/kms_pipe_b_c_ivb.c b/tests/intel/kms_pipe_b_c_ivb.c
index c1a1e6610..73277e970 100644
--- a/tests/intel/kms_pipe_b_c_ivb.c
+++ b/tests/intel/kms_pipe_b_c_ivb.c
@@ -29,6 +29,10 @@
  * Category: Display
  * Description: Exercise the FDI lane bifurcation code for IVB in the kernel by
  *              setting different combinations of modes for pipes B and C.
+ * Driver requirement: i915
+ * Functionality: kms_core, obsolete
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -37,43 +41,23 @@
  * SUBTEST: disable-pipe-B-enable-pipe-C
  * Description: Tests pipe-B and pipe-C interactions in IVB by disabling pipe-B
  *              and then setting mode on pipe-C.
- * Driver requirement: i915
- * Functionality: kms_core, obsolete
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: enable-pipe-C-while-B-has-3-lanes
  * Description: Tests pipe-B and pipe-C interactions in IVB by enabling pipe-C
  *              while pipe-B has 3-lanes
- * Driver requirement: i915
- * Functionality: kms_core, obsolete
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: from-pipe-C-to-B-with-3-lanes
  * Description: Tests pipe-B and pipe-C interactions in IVB by enabling pipe-B
  *              with 3 lanes from pipe-C.
- * Driver requirement: i915
- * Functionality: kms_core, obsolete
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: pipe-B-double-modeset-then-modeset-pipe-C
  * Description: Tests pipe-B and pipe-C interactions in IVB by enabling two
  *              different modes on pipe-B and then a single mode on pipe-C.
- * Driver requirement: i915
- * Functionality: kms_core, obsolete
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: pipe-B-dpms-off-modeset-pipe-C
  * Description: Tests pipe-B and pipe-C interactions in IVB by enabling pipe-B
  *              with mode that requires 3 lanes and then enabling pipe-c with
  *              dpms off/on pipe-B.
- * Driver requirement: i915
- * Functionality: kms_core, obsolete
- * Mega feature: General Display Features
- * Test category: functionality test
  */
 
 IGT_TEST_DESCRIPTION(
diff --git a/tests/intel/kms_pm_backlight.c b/tests/intel/kms_pm_backlight.c
index 68f4dc3d1..5b4c397bb 100644
--- a/tests/intel/kms_pm_backlight.c
+++ b/tests/intel/kms_pm_backlight.c
@@ -29,6 +29,10 @@
  * TEST: kms pm backlight
  * Category: Display
  * Description: Basic backlight sysfs test
+ * Driver requirement: i915, xe
+ * Functionality: backlight
+ * Mega feature: Display Power
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -46,38 +50,20 @@
 /**
  * SUBTEST: bad-brightness
  * Description: Test the bad brightness.
- * Driver requirement: i915, xe
- * Functionality: backlight
- * Mega feature: Display Power
- * Test category: functionality test
  *
  * SUBTEST: basic-brightness
  * Description: Test the basic brightness.
- * Driver requirement: i915, xe
- * Functionality: backlight
- * Mega feature: Display Power
- * Test category: functionality test
  *
  * SUBTEST: fade
  * Description: Test basic fade.
- * Driver requirement: i915, xe
- * Functionality: backlight
- * Mega feature: Display Power
- * Test category: functionality test
  *
  * SUBTEST: fade-with-dpms
  * Description: Test the fade with DPMS.
- * Driver requirement: i915, xe
  * Functionality: dpms, backlight
- * Mega feature: Display Power
- * Test category: functionality test
  *
  * SUBTEST: fade-with-suspend
  * Description: Test the fade with suspend.
- * Driver requirement: i915, xe
  * Functionality: backlight, suspend
- * Mega feature: Display Power
- * Test category: functionality test
  */
 
 struct context {
diff --git a/tests/intel/kms_pm_dc.c b/tests/intel/kms_pm_dc.c
index 1c33206fc..f11d6d29a 100644
--- a/tests/intel/kms_pm_dc.c
+++ b/tests/intel/kms_pm_dc.c
@@ -26,6 +26,10 @@
  * TEST: kms pm dc
  * Category: Display
  * Description: Tests to validate display power DC states.
+ * Driver requirement: i915, xe
+ * Functionality: dpms, pm_dc
+ * Mega feature: Display Power
+ * Test category: functionality test
  */
 
 #include <errno.h>
@@ -48,55 +52,30 @@
  * SUBTEST: dc3co-vpb-simulation
  * Description: Make sure that system enters DC3CO when PSR2 is active and system
  *              is in SLEEP state
- * Driver requirement: i915, xe
  * Functionality: dc3co, pm_dc, psr2
- * Mega feature: Display Power
- * Test category: functionality test
  *
  * SUBTEST: dc5-dpms
  * Description: Validate display engine entry to DC5 state while all connectors's
  *              DPMS property set to OFF
- * Driver requirement: i915, xe
- * Functionality: dpms, pm_dc
- * Mega feature: Display Power
- * Test category: functionality test
  *
  * SUBTEST: dc5-dpms-negative
  * Description: Validate negative scenario of DC5 display engine entry to DC5 state
  *              while all connectors's DPMS property set to ON
- * Driver requirement: i915, xe
- * Functionality: dpms, pm_dc
- * Mega feature: Display Power
- * Test category: functionality test
  *
  * SUBTEST: dc5-psr
  * Description: This test validates display engine entry to DC5 state while PSR is active
- * Driver requirement: i915, xe
  * Functionality: pm_dc, psr
- * Mega feature: Display Power
- * Test category: functionality test
  *
  * SUBTEST: dc6-dpms
  * Description: Validate display engine entry to DC6 state while all connectors's
  *              DPMS property set to OFF
- * Driver requirement: i915, xe
- * Functionality: dpms, pm_dc
- * Mega feature: Display Power
- * Test category: functionality test
  *
  * SUBTEST: dc6-psr
  * Description: This test validates display engine entry to DC6 state while PSR is active
- * Driver requirement: i915, xe
  * Functionality: pm_dc, psr
- * Mega feature: Display Power
- * Test category: functionality test
  *
  * SUBTEST: dc9-dpms
  * Description: This test validates display engine entry to DC9 state
- * Driver requirement: i915, xe
- * Functionality: dpms, pm_dc
- * Mega feature: Display Power
- * Test category: functionality test
  */
 
 /* DC State Flags */
diff --git a/tests/intel/kms_pm_lpsp.c b/tests/intel/kms_pm_lpsp.c
index 4ac99faf7..30158f673 100644
--- a/tests/intel/kms_pm_lpsp.c
+++ b/tests/intel/kms_pm_lpsp.c
@@ -26,8 +26,11 @@
 
 /**
  * TEST: kms pm lpsp
- * Description: These tests validates display Low Power Single Pipe configurations
  * Category: Display
+ * Description: These tests validates display Low Power Single Pipe configurations
+ * Functionality: pm_lpsp
+ * Mega feature: Display Power
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -43,16 +46,10 @@
  * SUBTEST: kms-lpsp
  * Description: This test validates lpsp on all connected outputs on low power pipes
  * Driver requirement: i915, xe
- * Functionality: pm_lpsp
- * Mega feature: Display Power
- * Test category: functionality test
  *
  * SUBTEST: screens-disabled
  * Description: This test validates lpsp while all crtc are disabled
  * Driver requirement: i915
- * Functionality: pm_lpsp
- * Mega feature: Display Power
- * Test category: functionality test
  */
 
 #define MAX_SINK_LPSP_INFO_BUF_LEN	4096
diff --git a/tests/intel/kms_pm_rpm.c b/tests/intel/kms_pm_rpm.c
index 14f34d904..97c886a6e 100644
--- a/tests/intel/kms_pm_rpm.c
+++ b/tests/intel/kms_pm_rpm.c
@@ -76,9 +76,11 @@
  *
  * SUBTEST: fences
  * Description: Sanity test for drm fences.
+ * Driver requirement: i915
  *
  * SUBTEST: fences-dpms
  * Description: Sanity test for drm fences with dpms.
+ * Driver requirement: i915
  * Functionality: dpms, pm_rpm
  *
  * SUBTEST: i2c
@@ -121,9 +123,11 @@
  *
  * SUBTEST: pm-caching
  * Description: Test to change different cache levels & check for rpm
+ * Driver requirement: i915
  *
  * SUBTEST: pm-tiling
  * Description: Test to change different tiling methods & check for rpm
+ * Driver requirement: i915
  * Functionality: pm_rpm, tiling
  *
  * SUBTEST: system-suspend-modeset
diff --git a/tests/intel/kms_psr.c b/tests/intel/kms_psr.c
index 1586d3bf0..b9e95fdfe 100644
--- a/tests/intel/kms_psr.c
+++ b/tests/intel/kms_psr.c
@@ -26,6 +26,9 @@
  * TEST: kms psr
  * Category: Display
  * Description: Tests behaviour of PSR & PSR2 & PR
+ * Driver requirement: i915, xe
+ * Mega feature: PSR
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -41,18 +44,13 @@
 /**
  * SUBTEST: psr_basic
  * Description: Basic check for psr if it is detecting changes made in planes
- * Driver requirement: i915, xe
  * Functionality: psr
- * Mega feature: PSR
- * Test category: functionality test
  *
  * SUBTEST: psr_%s_%s
  * Description: Check if psr is detecting memory mapping, rendering and plane
  *              operations performed on %arg[1]
  * Driver requirement: i915
  * Functionality: kms_core, plane, psr
- * Mega feature: PSR
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -70,18 +68,12 @@
  * SUBTEST: psr_sprite_plane_move
  * Description: Check if psr is detecting memory mapping, rendering and plane
  *              operations performed on sprite planes
- * Driver requirement: i915, xe
  * Functionality: plane, psr
- * Mega feature: PSR
- * Test category: functionality test
  *
  * SUBTEST: psr_%s_%s
  * Description: Check if psr is detecting memory mapping, rendering and plane
  *              operations performed on %arg[1] planes
- * Driver requirement: i915, xe
  * Functionality: kms_core, plane, psr
- * Mega feature: PSR
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -99,10 +91,7 @@
  * SUBTEST: psr_primary_%s
  * Description: Check if psr is detecting memory mapping, rendering and plane
  *              operations performed on %arg[1] planes
- * Driver requirement: i915, xe
  * Functionality: kms_core, psr
- * Mega feature: PSR
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -114,63 +103,40 @@
  * SUBTEST: psr_dpms
  * Description: Check if psr is detecting changes when rendering operation is
  *              performed  with dpms enabled or disabled
- * Driver requirement: i915, xe
  * Functionality: dpms, psr
- * Mega feature: PSR
- * Test category: functionality test
  *
  * SUBTEST: psr_no_drrs
  * Description: Check if psr is detecting changes when drrs is disabled
- * Driver requirement: i915, xe
  * Functionality: drrs, psr
- * Mega feature: PSR
- * Test category: functionality test
  *
  * SUBTEST: psr_suspend
  * Description: Check if psr is detecting changes when plane operation
  *              is performed with suspend resume cycles
- * Driver requirement: i915, xe
  * Functionality: psr, suspend
- * Mega feature: PSR
- * Test category: functionality test
  *
  * SUBTEST: psr2_dpms
  * Description: Check if psr is detecting changes when rendering operation
  *              is performed  with dpms enabled or disabled
- * Driver requirement: i915, xe
  * Functionality: dpms, psr, psr2
- * Mega feature: PSR
- * Test category: functionality test
  *
  * SUBTEST: psr2_no_drrs
  * Description: Check if psr is detecting changes when drrs is disabled
- * Driver requirement: i915, xe
  * Functionality: drrs, psr, psr2
- * Mega feature: PSR
- * Test category: functionality test
  *
  * SUBTEST: psr2_suspend
  * Description: Check if psr is detecting changes when plane operation is
  *              performed with suspend resume cycles
- * Driver requirement: i915, xe
  * Functionality: psr, psr2, suspend
- * Mega feature: PSR
- * Test category: functionality test
  *
  * SUBTEST: psr2_basic
  * Description: Basic check for psr if it is detecting changes made in planes
- * Driver requirement: i915, xe
  * Functionality: psr, psr2
- * Mega feature: PSR
- * Test category: functionality test
  *
  * SUBTEST: psr2_%s_%s
  * Description: Check if psr2 is detecting memory mapping, rendering and plane
  *              operations performed on %arg[1] planes
  * Driver requirement: i915
  * Functionality: kms_core, plane, psr, psr2
- * Mega feature: PSR
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -188,18 +154,12 @@
  * SUBTEST: psr2_primary_page_flip
  * Description: Check if psr is detecting memory mapping, rendering and plane
  *              operations performed on primary planes
- * Driver requirement: i915, xe
  * Functionality: plane, psr, psr2
- * Mega feature: PSR
- * Test category: functionality test
  *
  * SUBTEST: psr2_primary_%s
  * Description: Check if psr is detecting memory mapping, rendering and plane
  *              operations performed on primary planes
- * Driver requirement: i915, xe
  * Functionality: kms_core, plane, psr, psr2
- * Mega feature: PSR
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -211,10 +171,7 @@
  * SUBTEST: psr2_%s_%s
  * Description: Check if psr is detecting memory mapping, rendering and plane
  *              operations performed on %arg[1] planes
- * Driver requirement: i915, xe
  * Functionality: kms_core, plane, psr, psr2
- * Mega feature: PSR
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -233,32 +190,24 @@
  * SUBTEST: pr_dpms
  * Description: Check if pr is detecting changes when rendering operation
  *              is performed with dpms enabled or disabled
- * Driver requirement: i915, xe
  * Functionality: dpms, pr
  * Mega feature: Panel Replay
- * Test category: functionality test
  *
  * SUBTEST: pr_no_drrs
  * Description: Check if pr is detecting changes when drrs is disabled
- * Driver requirement: i915, xe
  * Functionality: drrs, pr
  * Mega feature: Panel Replay
- * Test category: functionality test
  *
  * SUBTEST: pr_suspend
  * Description: Check if pr is detecting changes when plane operation is
  *              performed with suspend resume cycles
- * Driver requirement: i915, xe
  * Functionality: pr, suspend
  * Mega feature: Panel Replay
- * Test category: functionality test
  *
  * SUBTEST: pr_basic
  * Description: Basic check for pr if it is detecting changes made in planes
- * Driver requirement: i915, xe
  * Functionality: pr
  * Mega feature: Panel Replay
- * Test category: functionality test
  */
 
 /**
@@ -268,7 +217,6 @@
  * Driver requirement: i915
  * Functionality: kms_core, plane, pr
  * Mega feature: Panel Replay
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -286,18 +234,14 @@
  * SUBTEST: pr_primary_page_flip
  * Description: Check if pr is detecting memory mapping, rendering and plane
  *              operations performed on primary planes
- * Driver requirement: i915, xe
  * Functionality: plane, pr
  * Mega feature: Panel Replay
- * Test category: functionality test
  *
  * SUBTEST: pr_primary_%s
  * Description: Check if pr is detecting memory mapping, rendering and plane
  *              operations performed on primary planes
- * Driver requirement: i915, xe
  * Functionality: kms_core, plane, pr
  * Mega feature: Panel Replay
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -309,10 +253,8 @@
  * SUBTEST: pr_%s_%s
  * Description: Check if pr is detecting memory mapping, rendering and plane
  *              operations performed on %arg[1] planes
- * Driver requirement: i915, xe
  * Functionality: kms_core, plane, pr
  * Mega feature: Panel Replay
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -331,26 +273,17 @@
  * SUBTEST: psr_cursor_plane_move
  * Description: Check if psr is detecting the plane operations performed on
  *		cursor planes
- * Driver requirement: i915, xe
- * Test category: functionality test
  * Functionality: psr
- * Mega feature: PSR
  *
  * SUBTEST: psr_primary_page_flip
  * Description: Check if psr is detecting page-flipping operations performed
  *		on primary planes
- * Driver requirement: i915, xe
- * Test category: functionality test
  * Functionality: psr
- * Mega feature: PSR
  *
  * SUBTEST: psr_sprite_plane_onoff
  * Description: Check if psr is detecting the plane operations performed on
  *		sprite planes
- * Driver requirement: i915, xe
- * Test category: functionality test
  * Functionality: psr
- * Mega feature: PSR
  */
 
 enum operations {
diff --git a/tests/intel/kms_psr2_sf.c b/tests/intel/kms_psr2_sf.c
index a93d496e8..27faa93d9 100644
--- a/tests/intel/kms_psr2_sf.c
+++ b/tests/intel/kms_psr2_sf.c
@@ -27,6 +27,10 @@
  * Category: Display
  * Description: Tests to varify PSR2 selective fetch by sending multiple damaged
  *              areas
+ * Driver requirement: i915, xe
+ * Functionality: plane, psr2, selective_fetch
+ * Mega feature: PSR
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -42,10 +46,6 @@
  * SUBTEST: %s-plane-move-continuous-%s
  * Description: Test that selective fetch works on moving %arg[1] plane %arg[2]
  *              visible area (no update)
- * Driver requirement: i915, xe
- * Functionality: plane, psr2, selective_fetch
- * Mega feature: PSR
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -62,53 +62,25 @@
 /**
  * SUBTEST: cursor-plane-update-sf
  * Description: Test that selective fetch works on cursor plane
- * Driver requirement: i915, xe
- * Functionality: cursor, psr2, selective_fetch
- * Mega feature: PSR
- * Test category: functionality test
  *
  * SUBTEST: overlay-plane-update-continuous-sf
  * Description: Test that selective fetch works on overlay plane
- * Driver requirement: i915, xe
- * Functionality: plane, psr2, selective_fetch
- * Mega feature: PSR
- * Test category: functionality test
  *
  * SUBTEST: overlay-plane-update-sf-dmg-area
  * Description: Test that selective fetch works on overlay plane
- * Driver requirement: i915, xe
- * Functionality: plane, psr2, selective_fetch
- * Mega feature: PSR
- * Test category: functionality test
  *
  * SUBTEST: overlay-primary-update-sf-dmg-area
  * Description: Test that selective fetch works on primary plane with blended
  *              overlay plane
- * Driver requirement: i915, xe
- * Functionality: plane, psr2, selective_fetch
- * Mega feature: PSR
- * Test category: functionality test
  *
  * SUBTEST: plane-move-sf-dmg-area
  * Description: Test that selective fetch works on moving overlay plane
- * Driver requirement: i915, xe
- * Functionality: plane, psr2, selective_fetch
- * Mega feature: PSR
- * Test category: functionality test
  *
  * SUBTEST: primary-plane-update-sf-dmg-area
  * Description: Test that selective fetch works on primary plane
- * Driver requirement: i915, xe
- * Functionality: plane, psr2, selective_fetch
- * Mega feature: PSR
- * Test category: functionality test
  *
  * SUBTEST: primary-plane-update-sf-dmg-area-big-fb
  * Description: Test that selective fetch works on primary plane with big fb
- * Driver requirement: i915, xe
- * Functionality: plane, psr2, selective_fetch
- * Mega feature: PSR
- * Test category: functionality test
  */
 
 IGT_TEST_DESCRIPTION("Tests to varify PSR2 selective fetch by sending multiple"
diff --git a/tests/intel/kms_psr2_su.c b/tests/intel/kms_psr2_su.c
index 56f35622e..96b4fd2b4 100644
--- a/tests/intel/kms_psr2_su.c
+++ b/tests/intel/kms_psr2_su.c
@@ -26,6 +26,9 @@
  * TEST: kms psr2 su
  * Category: Display
  * Description: Test PSR2 selective update
+ * Driver requirement: i915, xe
+ * Mega feature: PSR
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -40,17 +43,11 @@
 /**
  * SUBTEST: frontbuffer-XRGB8888
  * Description: Test that selective update works when screen changes
- * Driver requirement: i915, xe
  * Functionality: fbt, psr2, selective_update
- * Mega feature: PSR
- * Test category: functionality test
  *
  * SUBTEST: page_flip-%s
  * Description: Test the selective update with %arg[1] when screen changes
- * Driver requirement: i915, xe
  * Functionality: pixel-format, psr2, selective_update
- * Mega feature: PSR
- * Test category: functionality test
  *
  * arg[1]:
  *
diff --git a/tests/intel/kms_psr_stress_test.c b/tests/intel/kms_psr_stress_test.c
index 21814f35b..28529b1f1 100644
--- a/tests/intel/kms_psr_stress_test.c
+++ b/tests/intel/kms_psr_stress_test.c
@@ -2,6 +2,10 @@
 /**
  * TEST: kms psr stress test
  * Category: Display
+ * Driver requirement: i915, xe
+ * Functionality: plane, psr
+ * Mega feature: PSR
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -18,18 +22,10 @@
  * SUBTEST: flip-primary-invalidate-overlay
  * Description: Mix page flips in primary plane and frontbuffer writes to overlay
  *              plane and check for warnings, underruns or PSR state changes
- * Driver requirement: i915, xe
- * Functionality: plane, psr
- * Mega feature: PSR
- * Test category: functionality test
  *
  * SUBTEST: invalidate-primary-flip-overlay
  * Description: Mix frontbuffer writes to the primary plane and page flips in the
  *              overlay plane and check for warnings, underruns or PSR state changes
- * Driver requirement: i915, xe
- * Functionality: plane, psr
- * Mega feature: PSR
- * Test category: functionality test
  */
 
 #define INVALIDATES_PER_SEC 15
diff --git a/tests/kms_addfb_basic.c b/tests/kms_addfb_basic.c
index 9f8bf4275..b27475ada 100644
--- a/tests/kms_addfb_basic.c
+++ b/tests/kms_addfb_basic.c
@@ -29,6 +29,10 @@
  * TEST: kms addfb basic
  * Category: Display
  * Description: Sanity test for ioctls DRM_IOCTL_MODE_ADDFB2 & DRM_IOCTL_MODE_RMFB.
+ * Driver requirement: i915, xe
+ * Functionality: kms_gem_interop
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -53,39 +57,22 @@
 /**
  * SUBTEST: unused-%s
  * Description: Test that addfb2 call fails correctly for unused %arg[1]
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: kms_gem_interop
- * Mega feature: General Display Features
  *
  * SUBTEST: unused-modifier
  * Description: Test that addfb2 call fails correctly for unused modifier
- * Driver requirement: i915, xe
- * Test category: functionality test
  * Functionality: kms_gem_interop, tiling
- * Mega feature: General Display Features
  *
  * SUBTEST: clobberred-modifier
  * Description: Check if addfb2 call works for clobbered modifier
  * Driver requirement: i915
  * Functionality: kms_gem_interop, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: invalid-smem-bo-on-discrete
  * Description: Check if addfb2 with a system memory gem object fails correctly
  *              if device requires local memory framebuffers
- * Driver requirement: i915, xe
- * Functionality: kms_gem_interop
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: legacy-format
  * Description: Check if addfb2 call works for legacy formats
- * Driver requirement: i915, xe
- * Functionality: kms_gem_interop
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -97,24 +84,12 @@
 /**
  * SUBTEST: no-handle
  * Description: Test that addfb2 call fails correctly without handle
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: kms_gem_interop
- * Mega feature: General Display Features
  *
  * SUBTEST: basic
  * Description: Check if addfb2 call works with given handle
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: kms_gem_interop
- * Mega feature: General Display Features
  *
  * SUBTEST: bad-pitch-%i
  * Description: bad-pitch-%arg[1]: Test that addfb2 call fails correctly for bad-pitches
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: kms_gem_interop
- * Mega feature: General Display Features
  *
  * arg[1].values: 0, 32, 63, 128, 256, 999, 1024, 65536
  */
@@ -122,24 +97,16 @@
 /**
  * SUBTEST: basic-%s-tiled-legacy
  * Description: Check if addfb2 and rmfb call works for basic %arg[1] test
- * Driver requirement: i915, xe
- * Test category: functionality test
  * Functionality: kms_gem_interop, tiling
- * Mega feature: General Display Features
  *
  * SUBTEST: framebuffer-vs-set-tiling
  * Description: Check if addfb2 call works for x and y tiling
  * Driver requirement: i915
- * Test category: functionality test
  * Functionality: kms_gem_interop, tiling
- * Mega feature: General Display Features
  *
  * SUBTEST: tile-pitch-mismatch
  * Description: Test that addfb2 call fails correctly for pitches mismatch
- * Driver requirement: i915, xe
- * Test category: functionality test
  * Functionality: kms_gem_interop, tiling
- * Mega feature: General Display Features
  *
  * arg[1]:
  *
@@ -150,99 +117,56 @@
 /**
  * SUBTEST: size-max
  * Description: Check if addfb2 call works with max size of buffer object
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: kms_gem_interop
- * Mega feature: General Display Features
  *
  * SUBTEST: too-wide
  * Description: Test that addfb2 call fails correctly with increased width of fb
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: kms_gem_interop
- * Mega feature: General Display Features
  *
  * SUBTEST: too-high
  * Description: Test that addfb2 call fails correctly with increased height of fb
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: kms_gem_interop
- * Mega feature: General Display Features
  *
  * SUBTEST: bo-too-small
  * Description: Test that addfb2 call fails correctly with small size of buffer object
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: kms_gem_interop
- * Mega feature: General Display Features
  *
  * SUBTEST: small-bo
  * Description: Check if addfb2 call works for given height
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: kms_gem_interop
- * Mega feature: General Display Features
  *
  * SUBTEST: bo-too-small-due-to-tiling
  * Description: Test that addfb2 call fails correctly with small buffer object
  *              after changing tile
- * Driver requirement: i915
- * Test category: functionality test
  * Functionality: kms_gem_interop, tiling
- * Mega feature: General Display Features
  */
 
 /**
  * SUBTEST: addfb25-modifier-no-flag
  * Description: Test that addfb2 call fails correctly for x-tiling with given modifier
- * Driver requirement: i915, xe
- * Test category: functionality test
  * Functionality: kms_gem_interop, tiling
- * Mega feature: General Display Features
  *
  * SUBTEST: addfb25-bad-modifier
  * Description: Test that addfb2 call fails correctly for irrelevant modifier
- * Driver requirement: i915, xe
- * Test category: functionality test
  * Functionality: kms_gem_interop, tiling
- * Mega feature: General Display Features
  *
  * SUBTEST: addfb25-x-tiled-mismatch-legacy
  * Description: Test that addfb2 call fails correctly for irrelevant x-tiling
- * Driver requirement: i915, xe
- * Test category: functionality test
  * Functionality: kms_gem_interop, tiling
- * Mega feature: General Display Features
  *
  * SUBTEST: addfb25-x-tiled-legacy
  * Description: Check if addfb2 call works for x-tiling
- * Driver requirement: i915, xe
- * Test category: functionality test
  * Functionality: kms_gem_interop, tiling
- * Mega feature: General Display Features
  *
  * SUBTEST: addfb25-framebuffer-vs-set-tiling
  * Description: Check if addfb2 call works for relevant combination of tiling and fbs
  * Driver requirement: i915
- * Test category: functionality test
  * Functionality: kms_gem_interop, tiling
- * Mega feature: General Display Features
  */
 
 /**
  * SUBTEST: addfb25-y-tiled-%s
  * Description: Check if addfb2 call works for y-tiling %arg[1]
- * Driver requirement: i915, xe
  * Functionality: kms_gem_interop, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: addfb25-yf-tiled-legacy
  * Description: Check if addfb2 call works for yf-tiling
- * Driver requirement: i915, xe
  * Functionality: kms_gem_interop, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -253,19 +177,10 @@
 /**
  * SUBTEST: addfb25-4-tiled
  * Description: Check if addfb2 call works for tiling-4
- * Driver requirement: i915, xe
  * Functionality: kms_gem_interop, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
- */
-
-/**
+ *
  * SUBTEST: invalid-%s-%s
  * Description: Test that %arg[1] ioctl call fails correctly for %arg[2] object
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: kms_gem_interop
- * Mega feature: General Display Features
  *
  * arg[1]:
  *
@@ -281,10 +196,6 @@
 /**
  * SUBTEST: master-rmfb
  * Description: Check that only master can rmfb
- * Driver requirement: i915, xe
- * Functionality: kms_gem_interop
- * Mega feature: General Display Features
- * Test category: functionality test
  */
 
 static uint32_t gem_bo;
diff --git a/tests/kms_async_flips.c b/tests/kms_async_flips.c
index 82a8f5ef3..6fddad093 100644
--- a/tests/kms_async_flips.c
+++ b/tests/kms_async_flips.c
@@ -29,6 +29,10 @@
  * TEST: kms async flips
  * Category: Display
  * Description: Test asynchronous page flips.
+ * Driver requirement: i915, xe
+ * Functionality: async_flips, vblank
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -42,48 +46,26 @@
  * SUBTEST: alternate-sync-async-flip
  * Description: Verify the async flip functionality and the fps during async flips
  *              Alternate between sync and async flips
- * Driver requirement: i915, xe
- * Functionality: async_flips, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: async-flip-with-page-flip-events
  * Description: Verify the async flip functionality and the fps during async flips
  *              Wait for page flip events in between successive asynchronous flips
- * Driver requirement: i915, xe
- * Functionality: async_flips, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: test-time-stamp
  * Description: Verify the async flip functionality and the fps during async flips
  *              Verify that the async flip timestamp does not coincide with either
  *              previous or next vblank
- * Driver requirement: i915, xe
- * Functionality: async_flips, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: test-cursor
  * Description: Verify that the DRM_IOCTL_MODE_CURSOR passes after async flip
- * Driver requirement: i915, xe
  * Functionality: async_flips, cursor, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: crc
  * Description: Use CRC to verify async flip scans out the correct framebuffer
- * Driver requirement: i915, xe
  * Functionality: async_flips, crc, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: invalid-async-flip
  * Description: Negative case to verify if changes in fb are rejected from kernel as expected
- * Driver requirement: i915, xe
- * Functionality: async_flips, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  */
 
 #define CURSOR_POS 128
diff --git a/tests/kms_atomic.c b/tests/kms_atomic.c
index 9b69fc892..aa3af936a 100644
--- a/tests/kms_atomic.c
+++ b/tests/kms_atomic.c
@@ -31,6 +31,10 @@
  * TEST: kms atomic
  * Category: Display
  * Description: Test atomic modesetting API
+ * Driver requirement: i915, xe
+ * Functionality: kms_core, plane
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include <unistd.h>
@@ -53,49 +57,27 @@
  * Description: Test abuse the atomic ioctl directly in order to test various
  *              invalid conditions which the libdrm wrapper won't allow us to
  *              create.
- * Driver requirement: i915, xe
  * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: atomic-plane-damage
  * Description: Simple test cases to use FB_DAMAGE_CLIPS plane property
- * Driver requirement: i915, xe
- * Functionality: kms_core, plane
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: test-only
  * Description: Test to ensure that DRM_MODE_ATOMIC_TEST_ONLY really only touches
  *              the free-standing state objects and nothing else.
- * Driver requirement: i915, xe
  * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: plane-primary-overlay-mutable-zpos
  * Description: Verify that the overlay plane can cover the primary one (and
  *              vice versa) by changing their zpos property.
- * Driver requirement: i915, xe
- * Functionality: kms_core, plane
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: plane-immutable-zpos
  * Description: Verify the reported zpos property of planes by making sure only
  *              higher zpos planes cover the lower zpos ones.
- * Driver requirement: i915, xe
- * Functionality: kms_core, plane
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: plane-%s-legacy
  * Description: Test for KMS atomic modesetting on %arg[1] and ensure coherency
  *              between legacy and atomic interfaces.
- * Driver requirement: i915, xe
- * Functionality: kms_core, plane
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -107,10 +89,6 @@
 /**
  * SUBTEST: %s-invalid-%s
  * Description: Test error handling when invalid %arg[1] %arg[2] are passed
- * Driver requirement: i915, xe
- * Functionality: kms_core, plane
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -123,8 +101,6 @@
  * @params-fence:     fence parameters
  */
 
-
-
 #ifndef DRM_CAP_CURSOR_WIDTH
 #define DRM_CAP_CURSOR_WIDTH 0x8
 #endif
diff --git a/tests/kms_atomic_interruptible.c b/tests/kms_atomic_interruptible.c
index 7419e0746..962c33f6f 100644
--- a/tests/kms_atomic_interruptible.c
+++ b/tests/kms_atomic_interruptible.c
@@ -25,6 +25,9 @@
  * TEST: kms atomic interruptible
  * Category: Display
  * Description: Tests that interrupt various atomic ioctls.
+ * Driver requirement: i915, xe
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include <signal.h>
@@ -36,10 +39,7 @@
 /**
  * SUBTEST: %s-setmode
  * Description: Tests the interrupt properties of %arg[1] modeset
- * Driver requirement: i915, xe
  * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -50,31 +50,19 @@
 /**
  * SUBTEST: legacy-cursor
  * Description: Tests the interrupt properties for Cursor
- * Driver requirement: i915, xe
  * Functionality: cursor, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: legacy-dpms
  * Description: Tests the interrupt properties for DPMS
- * Driver requirement: i915, xe
  * Functionality: dpms, kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: legacy-pageflip
  * Description: Tests the interrupt properties for page flip
- * Driver requirement: i915, xe
  * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: universal-setplane-%s
  * Description: Tests the interrupt properties for %arg[1]
- * Driver requirement: i915, xe
  * Functionality: kms_core, plane
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
diff --git a/tests/kms_atomic_transition.c b/tests/kms_atomic_transition.c
index b8053acf7..210986f55 100644
--- a/tests/kms_atomic_transition.c
+++ b/tests/kms_atomic_transition.c
@@ -24,6 +24,10 @@
 /**
  * TEST: kms atomic transition
  * Category: Display
+ * Driver requirement: i915, xe
+ * Functionality: plane, watermark
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -41,17 +45,10 @@
 /**
  * SUBTEST: plane-primary-toggle-with-vblank-wait
  * Description: Check toggling of primary plane with vblank
- * Driver requirement: i915, xe
  * Functionality: plane, vblank, watermark
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: plane-all-modeset-%s
  * Description: Modeset test for all plane combinations %arg[1]
- * Driver requirement: i915, xe
- * Functionality: plane, watermark
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -62,10 +59,7 @@
 /**
  * SUBTEST: plane-all-modeset-%s
  * Description: Modeset test for all plane combinations %arg[1]
- * Driver requirement: i915, xe
- * Functionality: plane, watermark
  * Mega feature: eDP
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -76,10 +70,6 @@
 /**
  * SUBTEST: plane-all-%s
  * Description: Transition test for all plane combinations %arg[1]
- * Driver requirement: i915, xe
- * Functionality: plane, watermark
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -92,18 +82,10 @@
 /**
  * SUBTEST: plane-toggle-modeset-transition
  * Description: Check toggling and modeset transition on plane
- * Driver requirement: i915, xe
- * Functionality: plane, watermark
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: plane-use-after-nonblocking-%s
  * Description: Transition test with non %arg[1] and make sure commit of disabled
  *              plane has to complete before atomic commit on that plane
- * Driver requirement: i915, xe
- * Functionality: plane, watermark
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -114,10 +96,6 @@
 /**
  * SUBTEST: modeset-%s
  * Description: Modeset transition tests for combinations of %arg[1]
- * Driver requirement: i915, xe
- * Functionality: plane, watermark
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
diff --git a/tests/kms_bw.c b/tests/kms_bw.c
index 0199b5675..ddea7f2ff 100644
--- a/tests/kms_bw.c
+++ b/tests/kms_bw.c
@@ -24,6 +24,10 @@
  * TEST: kms bw
  * Category: Display
  * Description: BW test with different resolutions
+ * Driver requirement: i915, xe
+ * Functionality: kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "drm_mode.h"
@@ -35,10 +39,6 @@
 /**
  * SUBTEST: linear-tiling-%d-displays-%s
  * Description: bw test with %arg[2]
- * Driver requirement: i915, xe
- * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1].values: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
  *
diff --git a/tests/kms_color.c b/tests/kms_color.c
index 119dfc1f4..39752de81 100644
--- a/tests/kms_color.c
+++ b/tests/kms_color.c
@@ -26,6 +26,10 @@
  * TEST: kms color
  * Category: Display
  * Description: Test Color Features at Pipe level
+ * Driver requirement: i915, xe
+ * Functionality: colorspace
+ * Mega feature: Color mgmt
+ * Test category: functionality test
  */
 
 #include "kms_color_helper.h"
@@ -33,39 +37,19 @@
 /**
  * SUBTEST: degamma
  * Description: Verify that degamma LUT transformation works correctly
- * Driver requirement: i915, xe
- * Functionality: colorspace
- * Mega feature: Color mgmt
- * Test category: functionality test
  *
  * SUBTEST: gamma
  * Description: Verify that gamma LUT transformation works correctly
- * Driver requirement: i915, xe
- * Functionality: colorspace
- * Mega feature: Color mgmt
- * Test category: functionality test
  *
  * SUBTEST: legacy-gamma
  * Description: Verify that legacy gamma LUT transformation works correctly
- * Driver requirement: i915, xe
- * Functionality: colorspace
- * Mega feature: Color mgmt
- * Test category: functionality test
  *
  * SUBTEST: legacy-gamma-reset
  * Description: Verify that setting the legacy gamma LUT resets the gamma LUT
  *              set through GAMMA_LUT property
- * Driver requirement: i915, xe
- * Functionality: colorspace
- * Mega feature: Color mgmt
- * Test category: functionality test
  *
  * SUBTEST: ctm-%s
  * Description: Check the color transformation %arg[1]
- * Driver requirement: i915, xe
- * Functionality: colorspace
- * Mega feature: Color mgmt
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -83,17 +67,9 @@
 /**
  * SUBTEST: deep-color
  * Description: Verify that deep color works correctly
- * Driver requirement: i915, xe
- * Functionality: colorspace
- * Mega feature: Color mgmt
- * Test category: functionality test
  *
  * SUBTEST: invalid-%s-sizes
  * Description: Negative check for %arg[1] sizes
- * Driver requirement: i915, xe
- * Functionality: colorspace
- * Mega feature: Color mgmt
- * Test category: functionality test
  *
  * arg[1]:
  *
diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c
index 988f370f9..6d472ee02 100644
--- a/tests/kms_content_protection.c
+++ b/tests/kms_content_protection.c
@@ -26,6 +26,10 @@
  * TEST: kms content protection
  * Category: Display
  * Description: Test content protection (HDCP)
+ * Driver requirement: i915, xe
+ * Functionality: hdcp1.4
+ * Mega feature: HDCP
+ * Test category: functionality test
  */
 
 #include <poll.h>
@@ -41,49 +45,27 @@
 /**
  * SUBTEST: lic
  * Description: Test for the integrity of link.
- * Driver requirement: i915, xe
- * Functionality: hdcp1.4
- * Mega feature: HDCP
- * Test category: functionality test
  *
  * SUBTEST: content-type-change
  * Description: Test the content type change when the content protection already
  *              enabled
- * Driver requirement: i915, xe
  * Functionality: hdcp1.4, hdcp2.2
- * Mega feature: HDCP
- * Test category: functionality test
  *
  * SUBTEST: mei-interface
  * Description: Test the teardown and rebuild of the interface between Intel
  *              and mei hdcp.
- * Driver requirement: i915, xe
  * Functionality: hdcp1.4, hdcp2.2
- * Mega feature: HDCP
- * Test category: functionality test
  *
  * SUBTEST: srm
  * Description: This test writes the facsimile SRM into the /lib/firmware/ and
  *              check the kernel parsing of it by invoking the hdcp authentication.
- * Driver requirement: i915, xe
- * Functionality: hdcp1.4
- * Mega feature: HDCP
- * Test category: functionality test
  *
  * SUBTEST: uevent
  * Description: Test to detect the HDCP status change when we are reading the
  *              uevent sent with the corresponding connector id and property id.
- * Driver requirement: i915, xe
- * Functionality: hdcp1.4
- * Mega feature: HDCP
- * Test category: functionality test
  *
  * SUBTEST: %s
  * Description: Test content protection with %arg[1]
- * Driver requirement: i915, xe
- * Functionality: hdcp1.4
- * Mega feature: HDCP
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -96,10 +78,7 @@
 /**
  * SUBTEST: dp-mst-%s
  * Description: Test Content protection %arg[1] over DP MST.
- * Driver requirement: i915, xe
  * Functionality: hdcp1.4, mst
- * Mega feature: HDCP
- * Test category: functionality test
  *
  * arg[1]:
  *
diff --git a/tests/kms_cursor_crc.c b/tests/kms_cursor_crc.c
index 3d1c3bcd3..f747b919f 100644
--- a/tests/kms_cursor_crc.c
+++ b/tests/kms_cursor_crc.c
@@ -33,6 +33,10 @@
  *              compares it with the CRC value obtained when the cursor plane
  *              was disabled and its drawing is directly inserted on the PF by
  *              software.
+ * Driver requirement: i915, xe
+ * Functionality: cursor
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -45,24 +49,14 @@
 /**
  * SUBTEST: cursor-dpms
  * Description: Check random placement of a cursor with DPMS.
- * Driver requirement: i915, xe
  * Functionality: cursor, dpms
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: cursor-suspend
  * Description: Check random placement of a cursor with suspend.
- * Driver requirement: i915, xe
  * Functionality: cursor, suspend
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: cursor-%s
  * Description: %arg[1]
- * Driver requirement: i915, xe
- * Functionality: cursor
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -78,10 +72,6 @@
 /**
  * SUBTEST: cursor-%s-%s
  * Description: Check if a %arg[2] cursor is %arg[1].
- * Driver requirement: i915, xe
- * Functionality: cursor
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
diff --git a/tests/kms_cursor_edge_walk.c b/tests/kms_cursor_edge_walk.c
index d9d140409..54e9dc92f 100644
--- a/tests/kms_cursor_edge_walk.c
+++ b/tests/kms_cursor_edge_walk.c
@@ -25,8 +25,11 @@
 /**
  * TEST: kms cursor edge walk
  * Category: Display
- * Description: Exercise CHV pipe C cursor fail
  * Description: Test to check different cursor sizes by walking different edges of screen
+ * Driver requirement: i915, xe
+ * Functionality: cursor
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -39,10 +42,6 @@
 /**
  * SUBTEST: %s-%s
  * Description: Checking cursor size %arg[1] by walking %arg[2] of screen
- * Driver requirement: i915, xe
- * Functionality: cursor
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
diff --git a/tests/kms_cursor_legacy.c b/tests/kms_cursor_legacy.c
index 2e2710ae4..0017659d4 100644
--- a/tests/kms_cursor_legacy.c
+++ b/tests/kms_cursor_legacy.c
@@ -26,6 +26,10 @@
  * TEST: kms cursor legacy
  * Category: Display
  * Description: Stress legacy cursor ioctl
+ * Driver requirement: i915, xe
+ * Functionality: cursor
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include <sched.h>
@@ -42,10 +46,6 @@
  * Description: Test checks how many cursor updates we can fit between vblanks
  *              on single/all pipes with different modes, priority and number
  *              of processes
- * Driver requirement: i915, xe
- * Functionality: cursor
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -62,17 +62,9 @@
 /**
  * SUBTEST: basic-busy-flip-before-cursor-%s
  * Description: Cursor test with %arg[1] mode
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: cursor
- * Mega feature: General Display Features
  *
  * SUBTEST: basic-busy-flip-before-cursor-varying-size
  * Description: Change the size of cursor b/w 64*64 to maxw x maxh.
- * Driver requirement: i915, xe
- * Functionality: cursor
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -83,17 +75,9 @@
 /**
  * SUBTEST: basic-flip-after-cursor-%s
  * Description: Cursor test with %arg[1]
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: cursor
- * Mega feature: General Display Features
  *
  * SUBTEST: basic-flip-before-cursor-%s
  * Description: Cursor test with %arg[1]
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: cursor
- * Mega feature: General Display Features
  *
  * arg[1]:
  *
@@ -110,10 +94,6 @@
  *		                     and full screen primary plane.\n"
  *		- toggle: which toggles cursor visibility and make sure cursor moves
  *		          between updates.
- * Driver requirement: i915, xe
- * Functionality: cursor
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -135,10 +115,6 @@
  *		                     and full screen primary plane.\n"
  *		- toggle: which toggles cursor visibility and make sure cursor moves
  *		          between updates.
- * Driver requirement: i915, xe
- * Functionality: cursor
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -151,26 +127,14 @@
  * SUBTEST: long-nonblocking-modeset-vs-cursor-atomic
  * Description: Test checks how many cursor updates we can fit between vblanks
  *              on all pipes with different modes, priority and number of processes
- * Driver requirement: i915, xe
- * Functionality: cursor
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: nonblocking-modeset-vs-cursor-atomic
  * Description: Test checks how many cursor updates we can fit between vblanks
  *              on all pipes with different modes, priority and number of processes
- * Driver requirement: i915, xe
- * Functionality: cursor
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: 2x-%s-%s
  * Description: This test executes flips on both CRTCs while running cursor
  *              updates in parallel
- * Driver requirement: i915, xe
- * Functionality: cursor
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -189,10 +153,6 @@
  * SUBTEST: 2x-%s-atomic
  * Description: This test executes flips on both CRTCs while running cursor
  *              updates in parallel
- * Driver requirement: i915, xe
- * Functionality: cursor
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -204,10 +164,6 @@
  * SUBTEST: %s-%s
  * Description: The essence of the basic test is that neither the cursor nor the
  *              nonblocking flip stall the application of the next
- * Driver requirement: i915, xe
- * Functionality: cursor
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -231,10 +187,6 @@
 /**
  * SUBTEST: 2x-%s-%s
  * Description: This test executes flips on both CRTCs while running cursor updates in parallel
- * Driver requirement: i915, xe
- * Functionality: cursor
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -252,17 +204,9 @@
 /**
  * SUBTEST: flip-vs-cursor-crc-%s
  * Description: this test perform a page flip followed by a cursor update
- * Driver requirement: i915, xe
- * Functionality: cursor
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: flip-vs-cursor-busy-crc-%s
  * Description: this test perform a busy bo update followed by a cursor update
- * Driver requirement: i915, xe
- * Functionality: cursor
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -274,10 +218,6 @@
  * SUBTEST: modeset-atomic-cursor-hotspot
  * Description: Test changes the cursor hotspot and checks that the property is
  *              updated accordignly
- * Driver requirement: i915, xe
- * Functionality: cursor
- * Mega feature: General Display Features
- * Test category: functionality test
  */
 
 #if defined(__x86_64__) || defined(__i386__)
diff --git a/tests/kms_display_modes.c b/tests/kms_display_modes.c
index a0a831724..1f0f811c8 100644
--- a/tests/kms_display_modes.c
+++ b/tests/kms_display_modes.c
@@ -28,6 +28,9 @@
  * TEST: kms display modes
  * Category: Display
  * Description: Test Display Modes
+ * Driver requirement: i915, xe
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -36,18 +39,12 @@
  * SUBTEST: extended-mode-basic
  * Description: Test for validating display extended mode with a pair of connected
  *              displays
- * Driver requirement: i915, xe
  * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: mst-extended-mode-negative
  * Description: Negative test for validating display extended mode with a pair
  *		of connected 2k-4k or 4k-4k displays.
- * Driver requirement: i915, xe
  * Functionality: kms_core, mst
- * Mega feature: General Display Features
- * Test category: functionality test
  */
 
 #define HDISPLAY_4K	3840
diff --git a/tests/kms_dither.c b/tests/kms_dither.c
index 5683fe5c5..af7b7f05c 100644
--- a/tests/kms_dither.c
+++ b/tests/kms_dither.c
@@ -29,6 +29,10 @@
  * TEST: kms dither
  * Category: Display
  * Description: Test Dithering block status
+ * Driver requirement: i915, xe
+ * Functionality: colorspace, kms_gem_interop
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -39,17 +43,9 @@
 /**
  * SUBTEST: fb-8bpc-vs-panel-6bpc
  * Description: Framebuffer BPC:8, Panel BPC:6, Expected Dither:Enable
- * Driver requirement: i915, xe
- * Functionality: colorspace, kms_gem_interop
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: fb-8bpc-vs-panel-8bpc
  * Description: Framebuffer BPC:8, Panel BPC:8, Expected Dither:Disable
- * Driver requirement: i915, xe
- * Functionality: colorspace, kms_gem_interop
- * Mega feature: General Display Features
- * Test category: functionality test
  */
 
 IGT_TEST_DESCRIPTION("Test Dithering block status");
diff --git a/tests/kms_feature_discovery.c b/tests/kms_feature_discovery.c
index 7aec4e78c..24c71ed22 100644
--- a/tests/kms_feature_discovery.c
+++ b/tests/kms_feature_discovery.c
@@ -28,6 +28,10 @@
  * Description: A metatest that checks for \"features\" presence.
  *		The subtests here should only skip or pass,
  *		anything else means we have a serious problem.
+ * Driver requirement: i915, xe
+ * Functionality: feature_discovery
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -42,45 +46,28 @@
 /**
  * SUBTEST: display
  * Description: Make sure that we have display support.
- * Driver requirement: i915, xe
- * Functionality: feature_discovery
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: display-%dx
  * Description: Make sure that we have display support with %arg[1]
  * 		outputs connected.
- * Driver requirement: i915, xe
- * Functionality: feature_discovery
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: chamelium
  * Description: Make sure that Chamelium is configured and reachable.
- * Driver requirement: i915, xe
  * Functionality: feature_discovery, chamelium
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: psr1
  * Description: Make sure that we have eDP panel with PSR1 support.
- * Driver requirement: i915, xe
  * Functionality: feature_discovery, psr1, eDP
  * Mega feature: PSR
- * Test category: functionality test
  *
  * SUBTEST: psr2
  * Description: Make sure that we have eDP panel with PSR2 support.
- * Driver requirement: i915, xe
  * Functionality: feature_discovery, psr2, eDP
  * Mega feature: PSR
- * Test category: functionality test
  *
  * SUBTEST: dp-mst
  * Description: Make sure that we have DP-MST configuration.
- * Driver requirement: i915, xe
  * Functionality: feature_discovery, mst
- * Mega feature: General Display Features
  * Test category: functionality test
  *
  * arg[1].values: 1, 2, 3, 4
diff --git a/tests/kms_flip.c b/tests/kms_flip.c
index 9afb78757..3973ec862 100755
--- a/tests/kms_flip.c
+++ b/tests/kms_flip.c
@@ -25,6 +25,10 @@
  * TEST: kms flip
  * Category: Display
  * Description: Tests for validating modeset, dpms and pageflips
+ * Driver requirement: i915, xe
+ * Functionality: vblank
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "config.h"
@@ -59,16 +63,12 @@
  * Description: %arg[1] test to validate pageflips with available fences
  * Driver requirement: i915
  * Functionality: gtt, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: 2x-%s
  * Description: %arg[1] test to validate pageflips along with available fences
  *              on a pair of connected displays
  * Driver requirement: i915
  * Functionality: gtt, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -79,10 +79,7 @@
 /**
  * SUBTEST: dpms-off-%s
  * Description: %arg[1] test to validate pageflips by disabling other connectors usng dpms
- * Driver requirement: i915, xe
  * Functionality: dpms, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -93,10 +90,7 @@
 /**
  * SUBTEST: %s
  * Description: %arg[1] test to validate pageflips with large BO in size
- * Driver requirement: i915, xe
  * Functionality: kms_gem_interop, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -107,17 +101,11 @@
 /**
  * SUBTEST: %s
  * Description: Basic test to validate %arg[1]
- * Driver requirement: i915, xe
  * Functionality: hang, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: 2x-%s
  * Description: Test to validate %arg[1] on a pair of connected displays
- * Driver requirement: i915, xe
  * Functionality: hang, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -128,17 +116,9 @@
 /**
  * SUBTEST: %s
  * Description: Basic test to validate %arg[1]
- * Driver requirement: i915, xe
- * Functionality: vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: 2x-%s
  * Description: Test to validate %arg[1] on a pair of connected displays
- * Driver requirement: i915, xe
- * Functionality: vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -161,18 +141,12 @@
 /**
  * SUBTEST: %s
  * Description: %arg[1] test to validate pageflips with suspend cycle
- * Driver requirement: i915, xe
  * Functionality: suspend, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: 2x-%s
  * Description: %arg[1] test to validate pageflips with suspend cycle on a pair
  *              of connected displays
- * Driver requirement: i915, xe
  * Functionality: suspend, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -183,31 +157,17 @@
 /**
  * SUBTEST: %s
  * Description: Basic test to validate %arg[1]
- * Driver requirement: i915, xe
  * Functionality: dpms, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: 2x-%s
  * Description: Basic test to validate %arg[1] on a pair of connected displays
- * Driver requirement: i915, xe
  * Functionality: dpms, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: %s-interruptible
  * Description: Basic test to validate %arg[1]
- * Driver requirement: i915, xe
- * Functionality: vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: 2x-%s-interruptible
  * Description: Basic test to validate %arg[1] on a pair of connected displays
- * Driver requirement: i915, xe
- * Functionality: vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -222,17 +182,10 @@
  * SUBTEST: 2x-flip-vs-dpms
  * Description: Basic test to validate pageflip along with dpms on a pair of
  *              connected displays
- * Driver requirement: i915, xe
  * Functionality: dpms, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: 2x-%s
  * Description: Basic test to validate %arg[1] on a pair of connected displays
- * Driver requirement: i915, xe
- * Functionality: vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -244,18 +197,10 @@
 /**
  * SUBTEST: %s-interruptible
  * Description: Basic test for validating modeset, dpms and pageflips
- * Driver requirement: i915, xe
- * Functionality: vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: 2x-%s-interruptible
  * Description: Test for validating modeset, dpms and pageflips with a pair of
  *              connected displays
- * Driver requirement: i915, xe
- * Functionality: vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -277,31 +222,16 @@
 /**
  * SUBTEST: basic-plain-flip
  * Description: Basic test for validating page flip
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: vblank
- * Mega feature: General Display Features
  *
  * SUBTEST: nonblocking-read
  * Description: Tests that nonblocking reading fails correctly
- * Driver requirement: i915, xe
- * Functionality: vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: basic-flip-vs-dpms
  * Description: Basic test to valide pageflip with dpms
- * Driver requirement: i915, xe
- * Test category: functionality test
  * Functionality: dpms, vblank
- * Mega feature: General Display Features
  *
  * SUBTEST: basic-flip-vs-%s
  * Description: Basic test to valide pageflip with %arg[1]
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: vblank
- * Mega feature: General Display Features
  *
  * arg[1]:
  *
diff --git a/tests/kms_force_connector_basic.c b/tests/kms_force_connector_basic.c
index 55e6a7767..392a02f7e 100644
--- a/tests/kms_force_connector_basic.c
+++ b/tests/kms_force_connector_basic.c
@@ -26,6 +26,10 @@
  * TEST: kms force connector basic
  * Category: Display
  * Description: Check the debugfs force connector/edid features work correctly.
+ * Driver requirement: i915, xe
+ * Functionality: force_connector
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -35,29 +39,15 @@
  * Description: Test to detect forced load.
  * Driver requirement: i915
  * Functionality: force_connector, vga
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: force-connector-state
  * Description: Test to check the forced connector state
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: force_connector
- * Mega feature: General Display Features
  *
  * SUBTEST: force-edid
  * Description: Test to check the values after forcing edid
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: force_connector
- * Mega feature: General Display Features
  *
  * SUBTEST: prune-stale-modes
  * Description: Tests pruning of stale modes
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: force_connector
- * Mega feature: General Display Features
  */
 
 IGT_TEST_DESCRIPTION("Check the debugfs force connector/edid features work"
diff --git a/tests/kms_getfb.c b/tests/kms_getfb.c
index b4a155e2d..e6b8dd873 100644
--- a/tests/kms_getfb.c
+++ b/tests/kms_getfb.c
@@ -31,6 +31,10 @@
  * TEST: kms getfb
  * Category: Display
  * Description: Tests GETFB and GETFB2 ioctls.
+ * Driver requirement: i915, xe
+ * Functionality: kms_gem_interop
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -54,10 +58,6 @@
 /**
  * SUBTEST: getfb-handle-%s
  * Description: Tests error handling %arg[1]
- * Driver requirement: i915, xe
- * Functionality: kms_gem_interop
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -71,18 +71,11 @@
  * SUBTEST: getfb-reject-ccs
  * Description: Tests error handling while requesting CCS buffers it should
  *              refuse because getfb supports returning a single buffer handle.
- * Driver requirement: i915, xe
  * Functionality: ccs, kms_gem_interop, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: getfb-%s-different-handles
  * Description: Tests error handling while requesting for two different handles
  *              from %arg[1].
- * Driver requirement: i915, xe
- * Functionality: kms_gem_interop
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -93,24 +86,13 @@
 /**
  * SUBTEST: getfb2-accept-ccs
  * Description: Tests outputs are correct when retrieving a CCS framebuffer.
- * Driver requirement: i915, xe
  * Functionality: ccs, kms_gem_interop, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: getfb2-into-addfb2
  * Description: Output check by passing the output of GETFB2 into ADDFB2.
- * Driver requirement: i915, xe
- * Functionality: kms_gem_interop
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: getfb2-handle-%s
  * Description: Tests error handling %arg[1].
- * Driver requirement: i915, xe
- * Functionality: kms_gem_interop
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -122,10 +104,6 @@
 /**
  * SUBTEST: %s-handle-protection
  * Description: Make sure %arg[1] return handles if caller is non-root or non-master.
- * Driver requirement: i915, xe
- * Functionality: kms_gem_interop
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
diff --git a/tests/kms_hdmi_inject.c b/tests/kms_hdmi_inject.c
index 3a279e2c9..9691f2818 100644
--- a/tests/kms_hdmi_inject.c
+++ b/tests/kms_hdmi_inject.c
@@ -28,6 +28,9 @@
  * Description: Test that in-kernel EDID parsing is producing expected results
  *              by forcing a HDMI connector with a known EDID and checking that
  *              the metadata exposed to user space matches.
+ * Driver requirement: i915, xe
+ * Mega feature: HDMI
+ * Test category: functionality test
  */
 
 #include "config.h"
@@ -43,18 +46,12 @@
  * SUBTEST: inject-4k
  * Description: Make sure that 4K modes exposed by DRM match the forced EDID and
  *              modesetting using it succeed.
- * Driver requirement: i915, xe
  * Functionality: force_connector, hdmi_edid
- * Mega feature: HDMI
- * Test category: functionality test
  *
  * SUBTEST: inject-audio
  * Description: Make sure that audio information exposed by ALSA match the forced
  *              EDID.
- * Driver requirement: i915, xe
  * Functionality: audio, force_connector
- * Mega feature: HDMI
- * Test category: functionality test
  */
 
 #define HDISPLAY_4K	3840
diff --git a/tests/kms_hdr.c b/tests/kms_hdr.c
index 215f81892..4dd2eda37 100644
--- a/tests/kms_hdr.c
+++ b/tests/kms_hdr.c
@@ -24,6 +24,10 @@
  * TEST: kms hdr
  * Category: Display
  * Description: Test HDR metadata interfaces and bpc switch
+ * Driver requirement: i915, xe
+ * Functionality: colorspace, hdr
+ * Mega feature: HDR
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -35,59 +39,31 @@
 /**
  * SUBTEST: bpc-switch
  * Description: Tests switching between different display output bpc modes
- * Driver requirement: i915, xe
- * Functionality: colorspace, hdr
- * Mega feature: HDR
- * Test category: functionality test
  *
  * SUBTEST: bpc-switch-dpms
  * Description: Tests switching between different display output bpc modes with dpms
- * Driver requirement: i915, xe
  * Functionality: colorspace, dpms, hdr
- * Mega feature: HDR
- * Test category: functionality test
  *
  * SUBTEST: bpc-switch-suspend
  * Description: Tests switching between different display output bpc modes with suspend
- * Driver requirement: i915, xe
  * Functionality: colorspace, hdr, suspend
- * Mega feature: HDR
- * Test category: functionality test
  *
  * SUBTEST: invalid-hdr
  * Description: Test to ensure HDR is not enabled on non-HDR panel
- * Driver requirement: i915, xe
- * Functionality: colorspace, hdr
- * Mega feature: HDR
- * Test category: functionality test
  *
  * SUBTEST: invalid-metadata-sizes
  * Description: Tests invalid HDR metadata sizes
- * Driver requirement: i915, xe
- * Functionality: colorspace, hdr
- * Mega feature: HDR
- * Test category: functionality test
  *
  * SUBTEST: static-toggle-dpms
  * Description: Tests static toggle with dpms
- * Driver requirement: i915, xe
  * Functionality: colorspace, dpms, hdr
- * Mega feature: HDR
- * Test category: functionality test
  *
  * SUBTEST: static-toggle-suspend
  * Description: Tests static toggle with suspend
- * Driver requirement: i915, xe
  * Functionality: colorspace, hdr, suspend
- * Mega feature: HDR
- * Test category: functionality test
  *
  * SUBTEST: static-%s
  * Description: Tests %arg[1].
- * Driver requirement: i915, xe
- * Functionality: colorspace, hdr
- * Mega feature: HDR
- * Test category: functionality test
  *
  * arg[1]:
  *
diff --git a/tests/kms_invalid_mode.c b/tests/kms_invalid_mode.c
index 77cf4d609..4fd644594 100644
--- a/tests/kms_invalid_mode.c
+++ b/tests/kms_invalid_mode.c
@@ -27,6 +27,10 @@
  * Category: Display
  * Description: Make sure all modesets are rejected when the requested mode is
  *              invalid
+ * Driver requirement: i915, xe
+ * Functionality: kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -37,10 +41,6 @@
  * SUBTEST: %s
  * Description: Make sure all modesets are rejected when the requested mode
  *              (%arg[1]) is invalid
- * Driver requirement: i915, xe
- * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
diff --git a/tests/kms_lease.c b/tests/kms_lease.c
index 5c5a23fed..8ac58af38 100644
--- a/tests/kms_lease.c
+++ b/tests/kms_lease.c
@@ -25,6 +25,10 @@
  * TEST: kms lease
  * Category: Display
  * Description: Test of CreateLease.
+ * Driver requirement: i915, xe
+ * Functionality: lease
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -48,155 +52,71 @@
 /**
  * SUBTEST: atomic-implicit-crtc
  * Description: Negative test by using a different crtc with atomic ioctl
- * Driver requirement: i915, xe
- * Functionality: lease
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: cursor-implicit-plane
  * Description: Negative test by using a non-primary plane with setcursor ioctl
- * Driver requirement: i915, xe
- * Functionality: lease
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: empty-lease
  * Description: Check that creating an empty lease works
- * Driver requirement: i915, xe
- * Functionality: lease
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: implicit-plane-lease
  * Description: Tests the implicitly added planes.
- * Driver requirement: i915, xe
- * Functionality: lease
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: invalid-create-leases
  * Description: Tests error handling while creating invalid corner-cases for
  *              create-lease ioctl
- * Driver requirement: i915, xe
- * Functionality: lease
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: lease-uevent
  * Description: Tests all the uevent cases
- * Driver requirement: i915, xe
- * Functionality: lease
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: lease-again
  * Description: Tests leasing objects more than once
- * Driver requirement: i915, xe
- * Functionality: lease
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: lease-get
  * Description: Tests getting the required contents of a lease
- * Driver requirement: i915, xe
- * Functionality: lease
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: lease-invalid-connector
  * Description: Tests leasing an invalid connector
- * Driver requirement: i915, xe
- * Functionality: lease
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: lease-invalid-crtc
  * Description: Tests leasing an invalid crtc
- * Driver requirement: i915, xe
- * Functionality: lease
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: lease-invalid-plane
  * Description: Tests leasing an invalid plane
- * Driver requirement: i915, xe
- * Functionality: lease
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: lease-revoke
  * Description: Tests revocation of lease
- * Driver requirement: i915, xe
- * Functionality: lease
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: lease-unleased-connector
  * Description: Negative test by trying to use an unleased connector
- * Driver requirement: i915, xe
- * Functionality: lease
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: lease-unleased-crtc
  * Description: Negative test by trying to use an unleased crtc
- * Driver requirement: i915, xe
- * Functionality: lease
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: lessee-list
  * Description: Check if listed lease is same as created one
- * Driver requirement: i915, xe
- * Functionality: lease
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: master-vs-lease
  * Description: Tests the drop/set_master interactions.
- * Driver requirement: i915, xe
- * Functionality: lease
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: multimaster-lease
  * Description: Tests that the 2nd master can only create leases while being
  *              active master, and that leases on the first master don't prevent
  *              lease creation for the 2nd master.
- * Driver requirement: i915, xe
- * Functionality: lease
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: page-flip-implicit-plane
  * Description: Negative test by using a non-primary plane with the page flip ioctl
- * Driver requirement: i915, xe
- * Functionality: lease
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: possible-crtcs-filtering
  * Description: Tests that  possible_crtcs logically match between master and
  *              lease, and that the values are correctly renumbered on the lease
  *              side.
- * Driver requirement: i915, xe
- * Functionality: lease
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: setcrtc-implicit-plane
  * Description: Negative test by using a non-primary plane with the setcrtc ioctl
- * Driver requirement: i915, xe
- * Functionality: lease
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: simple-lease
  * Description: Check if create lease ioctl call works
- * Driver requirement: i915, xe
- * Functionality: lease
- * Mega feature: General Display Features
- * Test category: functionality test
  */
 
 IGT_TEST_DESCRIPTION("Test of CreateLease.");
diff --git a/tests/kms_panel_fitting.c b/tests/kms_panel_fitting.c
index af0c756ed..4b5d9d5ab 100644
--- a/tests/kms_panel_fitting.c
+++ b/tests/kms_panel_fitting.c
@@ -26,6 +26,10 @@
  * TEST: kms panel fitting
  * Category: Display
  * Description: Test display panel fitting
+ * Driver requirement: i915, xe
+ * Functionality: eDP, panel_fitting, scaling
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -36,17 +40,9 @@
 /**
  * SUBTEST: atomic-fastset
  * Description: Tests panel fitting usages with atomic fastset.
- * Driver requirement: i915, xe
- * Functionality: eDP, panel_fitting, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: legacy
  * Description: Tests panel fitting usages with legacy style commit.
- * Driver requirement: i915, xe
- * Functionality: eDP, panel_fitting, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
  */
 
 IGT_TEST_DESCRIPTION("Test display panel fitting");
diff --git a/tests/kms_pipe_crc_basic.c b/tests/kms_pipe_crc_basic.c
index 4fed582b4..3c12d8098 100644
--- a/tests/kms_pipe_crc_basic.c
+++ b/tests/kms_pipe_crc_basic.c
@@ -26,6 +26,10 @@
  * TEST: kms pipe crc basic
  * Category: Display
  * Description: Tests behaviour of CRC
+ * Driver requirement: i915, xe
+ * Functionality: crc
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -39,61 +43,32 @@
 /**
  * SUBTEST: bad-source
  * Description: Tests error handling when the bad source is set.
- * Driver requirement: i915, xe
- * Functionality: crc
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: read-crc
  * Description: Test for pipe CRC reads
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: crc
- * Mega feature: General Display Features
  *
  * SUBTEST: read-crc-frame-sequence
  * Description: Tests the pipe CRC read and ensure frame sequence
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: crc
- * Mega feature: General Display Features
  *
  * SUBTEST: nonblocking-crc
  * Description: Test for O_NONBLOCK CRC reads
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: crc
- * Mega feature: General Display Features
  *
  * SUBTEST: nonblocking-crc-frame-sequence
  * Description: Test for O_NONBLOCK CRC reads and ensure frame sequence
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: crc
- * Mega feature: General Display Features
  *
  * SUBTEST: suspend-read-crc
  * Description: Suspend test for pipe CRC reads
- * Driver requirement: i915, xe
- * Test category: functionality test
  * Functionality: crc, suspend
- * Mega feature: General Display Features
  *
  * SUBTEST: hang-read-crc
  * Description: Hang test for pipe CRC read
- * Driver requirement: i915, xe
- * Test category: functionality test
  * Functionality: crc, hang
- * Mega feature: General Display Features
  */
 
 /**
  * SUBTEST: compare-crc-sanitycheck-%s
  * Description: Basic sanity check for CRC mismatches with %arg[1]
- * Driver requirement: i915, xe
- * Test category: functionality test
  * Functionality: crc, pixel_format
- * Mega feature: General Display Features
  *
  * arg[1]:
  *
@@ -105,10 +80,6 @@
  * SUBTEST: disable-crc-after-crtc
  * Description: Check that disabling CRCs on a CRTC after having disabled the
  *              CRTC does not cause issues.
- * Driver requirement: i915, xe
- * Functionality: crc
- * Mega feature: General Display Features
- * Test category: functionality test
  */
 
 static bool extended;
diff --git a/tests/kms_plane.c b/tests/kms_plane.c
index 29cf45974..e50a94578 100644
--- a/tests/kms_plane.c
+++ b/tests/kms_plane.c
@@ -28,6 +28,9 @@
  * TEST: kms plane
  * Category: Display
  * Description: Testes for KMS Plane
+ * Driver requirement: i915, xe
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -41,25 +44,16 @@
 /**
  * SUBTEST: planar-pixel-format-settings
  * Description: verify planar settings for pixel format are handled correctly
- * Driver requirement: i915, xe
  * Functionality: pixel_format, plane
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: plane-position-%s
  * Description: Verify plane position using two planes to create a %arg[1]
- * Driver requirement: i915, xe
  * Functionality: plane
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: plane-position-hole-dpms
  * Description: Verify plane position using two planes to create a partially
  *              covered screen and check for DPMS
- * Driver requirement: i915, xe
  * Functionality: dpms, plane
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -70,18 +64,12 @@
 /**
  * SUBTEST: plane-panning-%s
  * Description: Verify plane panning at %arg[1] using primary plane
- * Driver requirement: i915, xe
  * Functionality: plane
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: plane-panning-bottom-right-suspend
  * Description: Verify plane panning at bottom-right position with suspend using
  *              primary plane
- * Driver requirement: i915, xe
  * Functionality: plane, suspend
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -92,10 +80,7 @@
 /**
  * SUBTEST: pixel-%s
  * Description: verify the pixel formats for given plane and pipe
- * Driver requirement: i915, xe
  * Functionality: pixel_format, plane
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
diff --git a/tests/kms_plane_alpha_blend.c b/tests/kms_plane_alpha_blend.c
index d37407150..eaec37661 100644
--- a/tests/kms_plane_alpha_blend.c
+++ b/tests/kms_plane_alpha_blend.c
@@ -28,6 +28,10 @@
  * TEST: kms plane alpha blend
  * Category: Display
  * Description: Test plane alpha and blending mode properties
+ * Driver requirement: i915, xe
+ * Functionality: plane
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -35,10 +39,6 @@
 /**
  * SUBTEST: alpha-%s
  * Description: Test to %arg[1]
- * Driver requirement: i915, xe
- * Functionality: plane
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -52,25 +52,13 @@
 /**
  * SUBTEST: coverage-vs-premult-vs-constant
  * Description: Tests pipe coverage blending properties.
- * Driver requirement: i915, xe
- * Functionality: plane
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: coverage-7efc
  * Description: Uses alpha values 0x7e and 0xfc to validate fg.alpha and
  *              plane_alpha are swappable on coverage blend mode.
- * Driver requirement: i915, xe
- * Functionality: plane
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: constant-alpha-%s
  * Description: Tests plane alpha and blending properties with %arg[1].
- * Driver requirement: i915, xe
- * Functionality: plane
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
diff --git a/tests/kms_plane_cursor.c b/tests/kms_plane_cursor.c
index 55ddffe44..dd33d8129 100644
--- a/tests/kms_plane_cursor.c
+++ b/tests/kms_plane_cursor.c
@@ -24,6 +24,10 @@
  * TEST: kms plane cursor
  * Category: Display
  * Description: Tests cursor interactions with primary and overlay planes.
+ * Driver requirement: i915, xe
+ * Functionality: cursor, plane
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -31,25 +35,13 @@
 /**
  * SUBTEST: overlay
  * Description: Tests atomic cursor positioning on primary plane and overlay plane
- * Driver requirement: i915, xe
- * Functionality: cursor, plane
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: primary
  * Description: Tests atomic cursor positioning on primary plane
- * Driver requirement: i915, xe
- * Functionality: cursor, plane
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: viewport
  * Description: Tests atomic cursor positioning on primary plane and overlay plane
  *              with buffer larger than viewport used for display
- * Driver requirement: i915, xe
- * Functionality: cursor, plane
- * Mega feature: General Display Features
- * Test category: functionality test
  */
 
 /*
diff --git a/tests/kms_plane_lowres.c b/tests/kms_plane_lowres.c
index 13158bf99..ef85e8fb9 100644
--- a/tests/kms_plane_lowres.c
+++ b/tests/kms_plane_lowres.c
@@ -27,6 +27,10 @@
  * Category: Display
  * Description: Test atomic mode setting with a plane by switching between high
  *              and low resolutions
+ * Driver requirement: i915, xe
+ * Functionality: plane, tiling
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -41,18 +45,11 @@
  * SUBTEST: tiling-none
  * Description: Tests the visibility of the planes when switching between high
  *              and low resolution with Linear buffer (no tiling)
- * Driver requirement: i915, xe
  * Functionality: plane
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: tiling-%s
  * Description: Tests the visibility of the planes when switching between high
  *              and low resolution with %arg[1]
- * Driver requirement: i915, xe
- * Functionality: plane, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
diff --git a/tests/kms_plane_multiple.c b/tests/kms_plane_multiple.c
index 6239e225a..6bffb1f68 100644
--- a/tests/kms_plane_multiple.c
+++ b/tests/kms_plane_multiple.c
@@ -26,6 +26,10 @@
  * TEST: kms plane multiple
  * Category: Display
  * Description: Test atomic mode setting with multiple planes.
+ * Driver requirement: i915, xe
+ * Functionality: plane, tiling
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -41,19 +45,12 @@
  * Description: Check that the kernel handles atomic updates of multiple planes
  *              correctly by changing their geometry and making sure the changes
  *              are reflected immediately after each commit.
- * Driver requirement: i915, xe
  * Functionality: plane
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: tiling-%s
  * Description: Check that the kernel handles atomic updates of multiple planes
  *              correctly by changing their geometry and making sure the changes
  *              are reflected immediately after each commit.
- * Driver requirement: i915, xe
- * Functionality: plane, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c
index e175c75d8..acb4a1da1 100644
--- a/tests/kms_plane_scaling.c
+++ b/tests/kms_plane_scaling.c
@@ -26,6 +26,10 @@
  * TEST: kms plane scaling
  * Category: Display
  * Description: Test display plane scaling
+ * Driver requirement: i915, xe
+ * Functionality: plane, scaling
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -35,24 +39,12 @@
 /**
  * SUBTEST: plane-scaler-unity-scaling-with-modifiers
  * Description: Tests scaling with modifiers, unity scaling.
- * Driver requirement: i915, xe
- * Functionality: plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: plane-scaler-with-clipping-clamping-modifiers
  * Description: Tests scaling with clipping and clamping, modifiers.
- * Driver requirement: i915, xe
- * Functionality: plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: plane-upscale-%s-with-modifiers
  * Description: Tests upscaling with modifiers %arg[1].
- * Driver requirement: i915, xe
- * Functionality: plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -63,10 +55,6 @@
 /**
  * SUBTEST: plane-downscale-factor-%s-with-modifiers
  * Description: Tests downscaling with modifiers for %arg[1] scaling factor.
- * Driver requirement: i915, xe
- * Functionality: plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -78,24 +66,12 @@
 /**
  * SUBTEST: plane-scaler-unity-scaling-with-rotation
  * Description: Tests scaling with rotation, unity scaling.
- * Driver requirement: i915, xe
- * Functionality: plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: plane-scaler-with-clipping-clamping-rotation
  * Description: Tests scaling with clipping and clamping, rotation.
- * Driver requirement: i915, xe
- * Functionality: plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: plane-upscale-%s-with-rotation
  * Description: Tests upscaling with rotation %arg[1].
- * Driver requirement: i915, xe
- * Functionality: plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -106,10 +82,6 @@
 /**
  * SUBTEST: plane-downscale-factor-%s-with-rotation
  * Description: Tests downscaling with rotation for %arg[1] scaling factor.
- * Driver requirement: i915, xe
- * Functionality: plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -121,24 +93,15 @@
 /**
  * SUBTEST: plane-scaler-unity-scaling-with-pixel-format
  * Description: Tests scaling with pixel formats, unity scaling.
- * Driver requirement: i915, xe
  * Functionality: pixel_formats, plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: plane-scaler-with-clipping-clamping-pixel-formats
  * Description: Tests scaling with clipping and clamping, pixel formats.
- * Driver requirement: i915, xe
  * Functionality: pixel_formats, plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: plane-upscale-%s-with-pixel-format
  * Description: Tests upscaling with pixel formats %arg[1].
- * Driver requirement: i915, xe
  * Functionality: pixel_formats, plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -149,10 +112,7 @@
 /**
  * SUBTEST: plane-downscale-factor-%s-with-pixel-format
  * Description: Tests downscaling with pixel formats for %arg[1] scaling factor.
- * Driver requirement: i915, xe
  * Functionality: pixel_formats, plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -164,10 +124,6 @@
 /**
  * SUBTEST: planes-downscale-factor-%s
  * Description: Tests downscaling of 2 planes for %arg[1] scaling factor.
- * Driver requirement: i915, xe
- * Functionality: plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -180,10 +136,6 @@
  * SUBTEST: planes-downscale-factor-%s-%s
  * Description: Tests downscaling (scaling factor %arg[1]) and upscaling (%arg[2])
  *              of 2 planes.
- * Driver requirement: i915, xe
- * Functionality: plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -201,17 +153,9 @@
 /**
  * SUBTEST: planes-scaler-unity-scaling
  * Description: Tests scaling of 2 planes, unity scaling.
- * Driver requirement: i915, xe
- * Functionality: plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: planes-upscale-%s
  * Description: Tests upscaling of 2 planes %arg[1].
- * Driver requirement: i915, xe
- * Functionality: plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -223,10 +167,6 @@
  * SUBTEST: planes-%s-downscale-factor-%s
  * Description: Tests scaling (%arg[1]) and downscaling (scaling factor %arg[2])
  *              of 2 planes.
- * Driver requirement: i915, xe
- * Functionality: plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -244,31 +184,15 @@
 /**
  * SUBTEST: invalid-num-scalers
  * Description: Negative test for number of scalers per pipe.
- * Driver requirement: i915, xe
- * Functionality: plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: 2x-scaler-multi-pipe
  * Description: Tests scaling with multi-pipe.
- * Driver requirement: i915, xe
- * Functionality: plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: invalid-parameters
  * Description: Test parameters which should not be accepted
- * Driver requirement: i915, xe
- * Functionality: plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: intel-max-src-size
  * Description: Test for validating max source size.
- * Driver requirement: i915, xe
- * Functionality: plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
  */
 
 IGT_TEST_DESCRIPTION("Test display plane scaling");
diff --git a/tests/kms_prime.c b/tests/kms_prime.c
index 1e985fdc4..135c75168 100644
--- a/tests/kms_prime.c
+++ b/tests/kms_prime.c
@@ -25,6 +25,10 @@
  * TEST: kms prime
  * Category: Display
  * Description: Prime tests, focusing on KMS side
+ * Driver requirement: i915, xe
+ * Functionality: hybrid, kms_gem_interop
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -40,25 +44,14 @@
 /**
  * SUBTEST: D3hot
  * Description: Validate pci state of dGPU when dGPU is idle and  scanout is on iGPU
- * Driver requirement: i915, xe
- * Functionality: hybrid, kms_gem_interop
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: basic-modeset-hybrid
  * Description: Basic modeset on the one device when the other device is active
- * Driver requirement: i915, xe
- * Functionality: hybrid, kms_gem_interop
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: basic-crc-%s
  * Description: Make a dumb color buffer, export to another device and compare
  *              the CRCs with a buffer native to that device
- * Driver requirement: i915, xe
  * Functionality: crc, hybrid, kms_gem_interop
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
diff --git a/tests/kms_prop_blob.c b/tests/kms_prop_blob.c
index 199c673e3..7e7924618 100644
--- a/tests/kms_prop_blob.c
+++ b/tests/kms_prop_blob.c
@@ -29,6 +29,10 @@
  * TEST: kms prop blob
  * Category: Display
  * Description: Tests behaviour of mass-data 'blob' properties.
+ * Driver requirement: i915, xe
+ * Functionality: kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -40,17 +44,9 @@
 /**
  * SUBTEST: blob-multiple
  * Description: Test validates destroying multiple properties explicitly works as needed.
- * Driver requirement: i915, xe
- * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: blob-prop-%s
  * Description: Tests validates the %arg[1] of the properties created.
- * Driver requirement: i915, xe
- * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -62,17 +58,9 @@
 /**
  * SUBTEST: basic
  * Description: Test to ensure property support exists
- * Driver requirement: i915, xe
- * Test category: functionality test
- * Functionality: kms_core
- * Mega feature: General Display Features
  *
  * SUBTEST: invalid-%s-%s
  * Description: Tests error handling when invalid properties are %ar[1] with %arg[2].
- * Driver requirement: i915, xe
- * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
diff --git a/tests/kms_properties.c b/tests/kms_properties.c
index 33c4156bf..bd414f534 100644
--- a/tests/kms_properties.c
+++ b/tests/kms_properties.c
@@ -25,6 +25,10 @@
  * TEST: kms properties
  * Category: Display
  * Description: Test to validate the properties of all planes, crtc and connectors
+ * Driver requirement: i915, xe
+ * Functionality: kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -38,10 +42,6 @@
 /**
  * SUBTEST: %s-properties-%s
  * Description: Tests %arg[1] properties with %arg[2] commit
- * Driver requirement: i915, xe
- * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -60,10 +60,6 @@
  * SUBTEST: get_properties-sanity-%s
  * Description: Test validates the properties of all planes, crtc and connectors
  *              with %arg[1] commit
- * Driver requirement: i915, xe
- * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
diff --git a/tests/kms_rmfb.c b/tests/kms_rmfb.c
index c102c9583..39e8bbd55 100644
--- a/tests/kms_rmfb.c
+++ b/tests/kms_rmfb.c
@@ -26,6 +26,10 @@
  * Category: Display
  * Description: This tests rmfb and close-fd behavior. In these casesthe
  *              framebuffers should be removed from the crtc.
+ * Driver requirement: i915, xe
+ * Functionality: kms_gem_interop
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -40,18 +44,10 @@
  * SUBTEST: close-fd
  * Description: RMFB is supposed to free the framebuffers from any and all planes
  *              so test this and make sure it works with fd close and reopen.
- * Driver requirement: i915, xe
- * Functionality: kms_gem_interop
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: rmfb-ioctl
  * Description: RMFB is supposed to free the framebuffers from any and all planes
  *              so test this and make sure it works.
- * Driver requirement: i915, xe
- * Functionality: kms_gem_interop
- * Mega feature: General Display Features
- * Test category: functionality test
  */
 
 #ifndef DRM_CAP_CURSOR_WIDTH
diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c
index bb082af68..8d8c53b5f 100644
--- a/tests/kms_rotation_crc.c
+++ b/tests/kms_rotation_crc.c
@@ -26,6 +26,10 @@
  * TEST: kms rotation crc
  * Category: Display
  * Description: Tests different rotations with different planes & formats
+ * Driver requirement: i915, xe
+ * Functionality: plane, rotation
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -35,10 +39,6 @@
 /**
  * SUBTEST: %s-rotation-180
  * Description: Rotation test with 180 degree for %arg[1] planes
- * Driver requirement: i915, xe
- * Functionality: plane, rotation
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -50,10 +50,6 @@
 /**
  * SUBTEST: %s-rotation-%d
  * Description: Rotation test with %arg[2] degree for %arg[1] planes of gen9+
- * Driver requirement: i915, xe
- * Functionality: plane, rotation
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -66,33 +62,19 @@
 /**
  * SUBTEST: bad-pixel-format
  * Description: Checking unsupported pixel format for gen9+ with 90 degree of rotation
- * Driver requirement: i915, xe
- * Functionality: plane, rotation
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: bad-tiling
  * Description: Checking unsupported tiling for gen9+ with 90 degree of rotation
- * Driver requirement: i915, xe
  * Functionality: plane, rotation, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: exhaust-fences
  * Description: This test intends to check for fence leaks exhaustively
- * Driver requirement: i915
- * Functionality: plane, rotation
- * Mega feature: General Display Features
- * Test category: functionality test
  */
 
 /**
  * SUBTEST: primary-%s-tiled-reflect-x-%d
  * Description: Test for %arg[1] & %arg[2] degree rotation on primary plane
- * Driver requirement: i915, xe
  * Functionality: plane, rotation, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -107,10 +89,7 @@
 /**
  * SUBTEST: primary-%s-tiled-reflect-x-%d
  * Description: Test for %arg[1] & %arg[2] degree rotation on primary plane
- * Driver requirement: i915, xe
  * Functionality: plane, rotation, tiling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -121,27 +100,15 @@
  *
  * SUBTEST: sprite-rotation-90-pos-100-0
  * Description: Rotation test with 90 degree for a plane of gen9+ with given position
- * Driver requirement: i915, xe
- * Functionality: plane, rotation
- * Mega feature: General Display Features
- * Test category: functionality test
  */
 
 /**
  * SUBTEST: multiplane-rotation
  * Description: Rotation test on both planes by making them fully visible
- * Driver requirement: i915, xe
- * Functionality: plane, rotation
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: multiplane-rotation-cropping-%s
  * Description: Rotation test on both planes by cropping left/%arg[1] corner of
  *              primary plane and right/%arg[1] corner of sprite plane
- * Driver requirement: i915, xe
- * Functionality: plane, rotation
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
diff --git a/tests/kms_scaling_modes.c b/tests/kms_scaling_modes.c
index 960e7d84b..add6e77c9 100644
--- a/tests/kms_scaling_modes.c
+++ b/tests/kms_scaling_modes.c
@@ -28,6 +28,10 @@
  * TEST: kms scaling modes
  * Category: Display
  * Description: Test display scaling modes
+ * Driver requirement: i915, xe
+ * Functionality: eDP, plane, scaling
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -35,10 +39,6 @@
 /**
  * SUBTEST: scaling-mode-%s
  * Description: Tests %arg[1] display scaling mode
- * Driver requirement: i915, xe
- * Functionality: eDP, plane, scaling
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
diff --git a/tests/kms_selftest.c b/tests/kms_selftest.c
index 30fc58d90..0ecb825db 100644
--- a/tests/kms_selftest.c
+++ b/tests/kms_selftest.c
@@ -25,6 +25,10 @@
  * TEST: kms selftest
  * Category: Display
  * Description: Basic sanity check of KMS selftests.
+ * Driver requirement: i915, xe
+ * Functionality: kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -33,10 +37,6 @@
 /**
  * SUBTEST: %s
  * Description: Basic sanity check of KMS selftest %arg[1].
- * Driver requirement: i915, xe
- * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
diff --git a/tests/kms_sequence.c b/tests/kms_sequence.c
index 7dbcca643..23867d1aa 100644
--- a/tests/kms_sequence.c
+++ b/tests/kms_sequence.c
@@ -26,6 +26,10 @@
  * TEST: kms sequence
  * Category: Display
  * Description: Test CrtcGetSequence and CrtcQueueSequence.
+ * Driver requirement: i915, xe
+ * Functionality: vblank
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -46,10 +50,6 @@
 /**
  * SUBTEST: get-%s
  * Description: This is a test of drmCrtcGetSequence with %arg[1]
- * Driver requirement: i915, xe
- * Functionality: vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
@@ -62,10 +62,6 @@
 /**
  * SUBTEST: queue-%s
  * Description: This is a test of drmCrtcQueueSequence with %arg[1]
- * Driver requirement: i915, xe
- * Functionality: vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
diff --git a/tests/kms_setmode.c b/tests/kms_setmode.c
index 7fd1667d7..490bfd3dd 100644
--- a/tests/kms_setmode.c
+++ b/tests/kms_setmode.c
@@ -26,6 +26,10 @@
  * Category: Display
  * Description: Tests the mode by iterating through all valid/invalid crtc/connector
  *              combinations
+ * Driver requirement: i915, xe
+ * Functionality: kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "config.h"
@@ -46,50 +50,27 @@
  * SUBTEST: basic
  * Description: Tests the vblank timing by iterating through all valid crtc/connector
  *              combinations
- * Driver requirement: i915, xe
  * Functionality: kms_core, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: basic-clone-single-crtc
  * Description: Test allows the use of a single CRTC for two connectors, such as VGA/HDMI,
  *		VGA/DP, and HDMI/HDMI
- * Driver requirement: i915, xe
- * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: clone-exclusive-crtc
  * Description: Tests the mode by cloning the exclusive crtc by iterating through
  *              all valid crtc/connector combinations
- * Driver requirement: i915, xe
- * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: invalid-clone-exclusive-crtc
  * Description: Test is allowed when a connector uses CRTC that is not compatible with the
  *		connector, for instance, DP/HDMI can be used on certain pipes only on older platforms
- * Driver requirement: i915, xe
- * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: invalid-clone-single-crtc
  * Description: Tests the mode by cloning the single crtc by iterating through all
  *              invalid crtc/connector combinations
- * Driver requirement: i915, xe
- * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: invalid-clone-single-crtc-stealing
  * Description: Tests the stealing mode by cloning the single crtc by iterating
  *              through all invalid crtc/connector combinations
- * Driver requirement: i915, xe
- * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  */
 
 #define MAX_CONNECTORS  10
diff --git a/tests/kms_tiled_display.c b/tests/kms_tiled_display.c
index a094f4df3..3ffd6a9a4 100644
--- a/tests/kms_tiled_display.c
+++ b/tests/kms_tiled_display.c
@@ -40,6 +40,9 @@
  * TEST: kms tiled display
  * Category: Display
  * Description: Test for Transcoder Port Sync for Display Port Tiled Displays
+ * Driver requirement: i915, xe
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -52,18 +55,12 @@
  * SUBTEST: basic-test-pattern
  * Description: Make sure the Tiled CRTCs are synchronized and we get page flips
  *              for all tiled CRTCs in one vblank (executes on real panel).
- * Driver requirement: i915, xe
  * Functionality: tiled_display
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: basic-test-pattern-with-chamelium
  * Description: Make sure the Tiled CRTCs are synchronized and we get page flips
  *              for all tiled CRTCs in one vblank (executes on chamelium).
- * Driver requirement: i915, xe
  * Functionality: chamelium, tiled_display
- * Mega feature: General Display Features
- * Test category: functionality test
  */
 
 IGT_TEST_DESCRIPTION("Test for genlocked CRTCs with tiled displays");
diff --git a/tests/kms_universal_plane.c b/tests/kms_universal_plane.c
index b79b3d3e3..6a39f93cc 100644
--- a/tests/kms_universal_plane.c
+++ b/tests/kms_universal_plane.c
@@ -25,6 +25,10 @@
  * TEST: kms universal plane
  * Category: Display
  * Description: Check pageflip & modeset on universal plane
+ * Driver requirement: i915, xe
+ * Functionality: plane
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -37,32 +41,17 @@
 /**
  * SUBTEST: cursor-fb-leak
  * Description: Check for cursor leaks after performing cursor operations
- * Driver requirement: i915, xe
  * Functionality: cursor, plane
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: disable-primary-vs-flip
  * Description: Check pageflips while primary plane is disabled before IOCTL or
  *              between IOCTL and pageflip execution
- * Driver requirement: i915, xe
- * Functionality: plane
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: universal-plane-pageflip-windowed
  * Description: Check if pageflip succeeds in windowed setting
- * Driver requirement: i915, xe
- * Functionality: plane
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: universal-plane-%s
  * Description: Check %arg[1]
- * Driver requirement: i915, xe
- * Functionality: plane
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
index 5994e682c..956ba483a 100644
--- a/tests/kms_vblank.c
+++ b/tests/kms_vblank.c
@@ -25,6 +25,9 @@
  * TEST: kms vblank
  * Category: Display
  * Description: Test speed of WaitVblank.
+ * Driver requirement: i915, xe
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -45,71 +48,44 @@
 /**
  * SUBTEST: crtc-id
  * Description: Check the vblank and flip events works with given crtc id
- * Driver requirement: i915, xe
  * Functionality: vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: invalid
  * Description: Negative test for vblank request
- * Driver requirement: i915, xe
  * Functionality: vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: ts-continuation-dpms-rpm
  * Description: Test TS continuty with DPMS & RPM while hanging by introducing
  *              NOHANG flag
- * Driver requirement: i915, xe
  * Functionality: dpms, hang, rpm, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: ts-continuation-dpms-suspend
  * Description: Test TS continuty with DPMS & Suspend while hanging by introducing
  *              NOHANG flag
- * Driver requirement: i915, xe
  * Functionality: dpms, hang, suspend, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: ts-continuation-suspend
  * Description: Test TS continuty with Suspend while hanging by introducing NOHANG
  *              flag
- * Driver requirement: i915, xe
  * Functionality: hang, suspend, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: ts-continuation-modeset-rpm
  * Description: Test TS continuty during Modeset with Suspend while hanging by
  *              introducing NOHANG flag
- * Driver requirement: i915, xe
  * Functionality: hang, rpm, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: accuracy-idle
  * Description: Test Accuracy of vblank events while hanging by introducing NOHANG
  *              flag
- * Driver requirement: i915, xe
  * Functionality: hang, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: %s
  * Description: Test %arg[1] while hanging by introducing NOHANG flag
- * Driver requirement: i915, xe
  * Functionality: hang, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: %s-hang
  * Description: Test %arg[1] with injected hang is working properly
- * Driver requirement: i915, xe
  * Functionality: hang, vblank
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * arg[1]:
  *
diff --git a/tests/kms_vrr.c b/tests/kms_vrr.c
index 23aebb0f2..13b347631 100644
--- a/tests/kms_vrr.c
+++ b/tests/kms_vrr.c
@@ -24,6 +24,10 @@
  * TEST: kms vrr
  * Category: Display
  * Description: Test to validate diffent features of VRR
+ * Driver requirement: i915, xe
+ * Functionality: adaptive_sync
+ * Mega feature: VRR
+ * Test category: functionality test
  */
 
 #include "igt.h"
@@ -35,40 +39,22 @@
  * SUBTEST: flip-basic
  * Description: Tests that VRR is enabled and that the difference between flip
  *              timestamps converges to the requested rate
- * Driver requirement: i915, xe
- * Functionality: adaptive_sync
- * Mega feature: VRR
- * Test category: functionality test
  *
  * SUBTEST: flip-dpms
  * Description: Tests with DPMS that VRR is enabled and that the difference
  *              between flip timestamps converges to the requested rate.
- * Driver requirement: i915, xe
  * Functionality: adaptive_sync, dpms
- * Mega feature: VRR
- * Test category: functionality test
  *
  * SUBTEST: flip-suspend
  * Description: Tests that VRR is enabled and that the difference between flip
  *              timestamps converges to the requested rate in a suspend test
- * Driver requirement: i915, xe
  * Functionality: adaptive_sync, suspend
- * Mega feature: VRR
- * Test category: functionality test
  *
  * SUBTEST: flipline
  * Description: Make sure that flips happen at flipline decision boundary.
- * Driver requirement: i915, xe
- * Functionality: adaptive_sync
- * Mega feature: VRR
- * Test category: functionality test
  *
  * SUBTEST: negative-basic
  * Description: Make sure that VRR should not be enabled on the Non-VRR panel.
- * Driver requirement: i915, xe
- * Functionality: adaptive_sync
- * Mega feature: VRR
- * Test category: functionality test
  */
 
 #define NSECS_PER_SEC (1000000000ull)
diff --git a/tests/kms_writeback.c b/tests/kms_writeback.c
index 6b436b7ab..f95d71166 100644
--- a/tests/kms_writeback.c
+++ b/tests/kms_writeback.c
@@ -29,6 +29,10 @@
  *              connectors feature by checking if the target device support
  *              writeback; it validates bad and good combination, check color
  *              format, and check the output result by using CRC.
+ * Driver requirement: i915, xe
+ * Functionality: kms_core
+ * Mega feature: General Display Features
+ * Test category: functionality test
  */
 
 #include <errno.h>
@@ -45,45 +49,23 @@
 /**
  * SUBTEST: writeback-check-output-XRGB2101010
  * Description: Check XRGB2101010 writeback output with CRC validation
- * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: writeback-check-output
  * Description: Check writeback output with CRC validation
- * Driver requirement: i915, xe
- * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: writeback-fb-id-XRGB2101010
  * Description: Validate WRITEBACK_FB_ID with valid and invalid options
- * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: writeback-fb-id
  * Description: Validate WRITEBACK_FB_ID with valid and invalid options
- * Driver requirement: i915, xe
- * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: writeback-invalid-parameters
  * Description: Writeback has a couple of parameters linked together(output
  *              framebuffer and fence); this test goes throughthe combination
  *              of possible bad options
- * Driver requirement: i915, xe
- * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  *
  * SUBTEST: writeback-pixel-formats
  * Description: Check the writeback format
- * Driver requirement: i915, xe
- * Functionality: kms_core
- * Mega feature: General Display Features
- * Test category: functionality test
  */
 
 IGT_TEST_DESCRIPTION(
-- 
2.40.0

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [igt-dev] [i-g-t 4/5] tests/kms/testplan: Fix Mega Feature in testplan documentation
  2023-11-24  9:35 [igt-dev] [i-g-t 0/5] Optimize kms tesplan documentation Bhanuprakash Modem
                   ` (2 preceding siblings ...)
  2023-11-24  9:36 ` [igt-dev] [i-g-t 3/5] tests/kms/testplan: Optimize KMS " Bhanuprakash Modem
@ 2023-11-24  9:36 ` Bhanuprakash Modem
  2023-11-24 17:09   ` Sharma, Swati2
  2023-11-24  9:36 ` [igt-dev] [i-g-t 5/5] tests/kms/testplan: Avoid duplicate names on Mega feature vs Functionality Bhanuprakash Modem
                   ` (4 subsequent siblings)
  8 siblings, 1 reply; 15+ messages in thread
From: Bhanuprakash Modem @ 2023-11-24  9:36 UTC (permalink / raw)
  To: igt-dev, swati2.sharma

Adjust KMS testplan Mega Feature to allign with internal tools.

- s/Bigjoiner/Pipe Joiner/
- s/Color mgmt/Color Management/
- s/General Display Features/E2E Compression/ (CCS tests)
- s/Display Power/Display Power Management/

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/chamelium/kms_chamelium_color.c | 2 +-
 tests/intel/kms_big_joiner.c          | 2 +-
 tests/intel/kms_ccs.c                 | 2 +-
 tests/intel/kms_pm_backlight.c        | 2 +-
 tests/intel/kms_pm_dc.c               | 2 +-
 tests/intel/kms_pm_lpsp.c             | 2 +-
 tests/kms_color.c                     | 2 +-
 7 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/tests/chamelium/kms_chamelium_color.c b/tests/chamelium/kms_chamelium_color.c
index e94e13e40..4156023da 100644
--- a/tests/chamelium/kms_chamelium_color.c
+++ b/tests/chamelium/kms_chamelium_color.c
@@ -28,7 +28,7 @@
  * Description: Test Color Features at Pipe level using Chamelium to verify instead of CRC
  * Driver requirement: i915, xe
  * Functionality: chamelium, colorspace
- * Mega feature: Color mgmt
+ * Mega feature: Color Management
  * Test category: functionality test
  */
 
diff --git a/tests/intel/kms_big_joiner.c b/tests/intel/kms_big_joiner.c
index c5f9f8db7..aba2adfbe 100644
--- a/tests/intel/kms_big_joiner.c
+++ b/tests/intel/kms_big_joiner.c
@@ -30,7 +30,7 @@
  * Description: Test big joiner
  * Driver requirement: i915, xe
  * Functionality: 2p1p
- * Mega feature: Bigjoiner
+ * Mega feature: Pipe Joiner
  * Test category: functionality test
  */
 
diff --git a/tests/intel/kms_ccs.c b/tests/intel/kms_ccs.c
index 0a202d037..7a3fd7cf6 100644
--- a/tests/intel/kms_ccs.c
+++ b/tests/intel/kms_ccs.c
@@ -30,7 +30,7 @@
  *              uses to interpret the compressed data.
  * Driver requirement: i915, xe
  * Functionality: ccs, tiling
- * Mega feature: General Display Features
+ * Mega feature: E2E Compression
  * Test category: functionality test
  */
 
diff --git a/tests/intel/kms_pm_backlight.c b/tests/intel/kms_pm_backlight.c
index 5b4c397bb..2e691dab0 100644
--- a/tests/intel/kms_pm_backlight.c
+++ b/tests/intel/kms_pm_backlight.c
@@ -31,7 +31,7 @@
  * Description: Basic backlight sysfs test
  * Driver requirement: i915, xe
  * Functionality: backlight
- * Mega feature: Display Power
+ * Mega feature: Display Power Management
  * Test category: functionality test
  */
 
diff --git a/tests/intel/kms_pm_dc.c b/tests/intel/kms_pm_dc.c
index f11d6d29a..739ed6112 100644
--- a/tests/intel/kms_pm_dc.c
+++ b/tests/intel/kms_pm_dc.c
@@ -28,7 +28,7 @@
  * Description: Tests to validate display power DC states.
  * Driver requirement: i915, xe
  * Functionality: dpms, pm_dc
- * Mega feature: Display Power
+ * Mega feature: Display Power Management
  * Test category: functionality test
  */
 
diff --git a/tests/intel/kms_pm_lpsp.c b/tests/intel/kms_pm_lpsp.c
index 30158f673..005438d87 100644
--- a/tests/intel/kms_pm_lpsp.c
+++ b/tests/intel/kms_pm_lpsp.c
@@ -29,7 +29,7 @@
  * Category: Display
  * Description: These tests validates display Low Power Single Pipe configurations
  * Functionality: pm_lpsp
- * Mega feature: Display Power
+ * Mega feature: Display Power Management
  * Test category: functionality test
  */
 
diff --git a/tests/kms_color.c b/tests/kms_color.c
index 39752de81..bdb80a4ad 100644
--- a/tests/kms_color.c
+++ b/tests/kms_color.c
@@ -28,7 +28,7 @@
  * Description: Test Color Features at Pipe level
  * Driver requirement: i915, xe
  * Functionality: colorspace
- * Mega feature: Color mgmt
+ * Mega feature: Color Management
  * Test category: functionality test
  */
 
-- 
2.40.0

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [igt-dev] [i-g-t 5/5] tests/kms/testplan: Avoid duplicate names on Mega feature vs Functionality
  2023-11-24  9:35 [igt-dev] [i-g-t 0/5] Optimize kms tesplan documentation Bhanuprakash Modem
                   ` (3 preceding siblings ...)
  2023-11-24  9:36 ` [igt-dev] [i-g-t 4/5] tests/kms/testplan: Fix Mega Feature in " Bhanuprakash Modem
@ 2023-11-24  9:36 ` Bhanuprakash Modem
  2023-11-24 12:28 ` [igt-dev] ✓ Fi.CI.BAT: success for Optimize kms tesplan documentation (rev4) Patchwork
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 15+ messages in thread
From: Bhanuprakash Modem @ 2023-11-24  9:36 UTC (permalink / raw)
  To: igt-dev, swati2.sharma

Avoid duplicate names on Mega feature vs Functionality in KMS
testplan documentation.

This patch will do below updates in Functionality:
- eDP --> eDP_core
- hdr --> static_hdr
- psr --> psr1, psr2 (based on the requiremnet)

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
Reviewed-by: Mauro Carvalho Chehab <mauro.chehab@linux.intel.com>
---
 tests/intel/kms_fbcon_fbt.c            |   4 +-
 tests/intel/kms_frontbuffer_tracking.c | 228 ++++++++++++-------------
 tests/intel/kms_pm_dc.c                |   4 +-
 tests/intel/kms_psr.c                  |  38 ++---
 tests/intel/kms_psr_stress_test.c      |   2 +-
 tests/kms_feature_discovery.c          |   4 +-
 tests/kms_hdmi_inject.c                |   2 +-
 tests/kms_hdr.c                        |  13 +-
 tests/kms_panel_fitting.c              |   2 +-
 tests/kms_scaling_modes.c              |   2 +-
 10 files changed, 151 insertions(+), 148 deletions(-)

diff --git a/tests/intel/kms_fbcon_fbt.c b/tests/intel/kms_fbcon_fbt.c
index e2617a79a..90484dccf 100644
--- a/tests/intel/kms_fbcon_fbt.c
+++ b/tests/intel/kms_fbcon_fbt.c
@@ -57,13 +57,13 @@
  * SUBTEST: psr
  * Description: Test the relationship between fbcon and the frontbuffer tracking
  *              infrastructure with psr enabled.
- * Functionality: fbcon, fbt, psr
+ * Functionality: fbcon, fbt, psr1
  * Mega feature: PSR
  *
  * SUBTEST: psr-suspend
  * Description: Suspend test to validate the relationship between fbcon and the
  *              frontbuffer tracking infrastructure with psr enabled.
- * Functionality: fbcon, fbt, psr, suspend
+ * Functionality: fbcon, fbt, psr1, suspend
  * Mega feature: PSR
  */
 
diff --git a/tests/intel/kms_frontbuffer_tracking.c b/tests/intel/kms_frontbuffer_tracking.c
index abc44bf39..259dfd136 100644
--- a/tests/intel/kms_frontbuffer_tracking.c
+++ b/tests/intel/kms_frontbuffer_tracking.c
@@ -67,7 +67,7 @@
  *
  * SUBTEST: psr-%dp-rte
  * Description: Sanity test to enable PSR with %arg[1] panels.
- * Functionality: fbt, psr
+ * Functionality: fbt, psr1
  *
  * SUBTEST: fbcdrrs-%dp-rte
  * Description: Sanity test to enable FBC & DRRS with %arg[1] panels.
@@ -75,15 +75,15 @@
  *
  * SUBTEST: fbcpsr-%dp-rte
  * Description: Sanity test to enable FBC & PSR with %arg[1] panels.
- * Functionality: fbc, fbt, psr
+ * Functionality: fbc, fbt, psr1
  *
  * SUBTEST: psrdrrs-%dp-rte
  * Description: Sanity test to enable PSR & DRRS with %arg[1] panels.
- * Functionality: fbt, drrs, psr
+ * Functionality: fbt, drrs, psr1
  *
  * SUBTEST: fbcpsrdrrs-%dp-rte
  * Description: Sanity test to enable FBC, PSR & DRRS with %arg[1] panels.
- * Functionality: fbc, fbt, drrs, psr
+ * Functionality: fbc, fbt, drrs, psr1
  *
  * arg[1].values:   1, 2
  */
@@ -99,7 +99,7 @@
  *
  * SUBTEST: psr-1p-offscren-pri-%s-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: fbt, kms_core, psr
+ * Functionality: fbt, kms_core, psr1
  *
  * SUBTEST: fbcdrrs-1p-offscren-pri-%s-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
@@ -107,15 +107,15 @@
  *
  * SUBTEST: fbcpsr-1p-offscren-pri-%s-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: fbc, fbt, kms_core, psr
+ * Functionality: fbc, fbt, kms_core, psr1
  *
  * SUBTEST: psrdrrs-1p-offscren-pri-%s-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: drrs, fbt, kms_core, psr
+ * Functionality: drrs, fbt, kms_core, psr1
  *
  * SUBTEST: fbcpsrdrrs-1p-offscren-pri-%s-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Functionality: drrs, fbc, fbt, kms_core, psr1
  *
  * arg[1]:
  *
@@ -143,7 +143,7 @@
  * SUBTEST: psr-1p-offscren-pri-%s-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: fbt, kms_core, psr
+ * Functionality: fbt, kms_core, psr1
  *
  * SUBTEST: fbcdrrs-1p-offscren-pri-%s-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
@@ -153,17 +153,17 @@
  * SUBTEST: fbcpsr-1p-offscren-pri-%s-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: fbc, fbt, kms_core, psr
+ * Functionality: fbc, fbt, kms_core, psr1
  *
  * SUBTEST: psrdrrs-1p-offscren-pri-%s-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: drrs, fbt, kms_core, psr
+ * Functionality: drrs, fbt, kms_core, psr1
  *
  * SUBTEST: fbcpsrdrrs-1p-offscren-pri-%s-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Functionality: drrs, fbc, fbt, kms_core, psr1
  *
  * arg[1]:
  *
@@ -191,7 +191,7 @@
  * SUBTEST: psr-%dp-primscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: fbt, kms_core, psr
+ * Functionality: fbt, kms_core, psr1
  *
  * SUBTEST: fbcdrrs-%dp-primscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
@@ -201,17 +201,17 @@
  * SUBTEST: fbcpsr-%dp-primscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: fbc, fbt, kms_core, psr
+ * Functionality: fbc, fbt, kms_core, psr1
  *
  * SUBTEST: psrdrrs-%dp-primscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: drrs, fbt, kms_core, psr
+ * Functionality: drrs, fbt, kms_core, psr1
  *
  * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Functionality: drrs, fbc, fbt, kms_core, psr1
  *
  * arg[1].values:   1, 2
  *
@@ -239,7 +239,7 @@
  *
  * SUBTEST: psr-%dp-primscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: fbt, kms_core, psr
+ * Functionality: fbt, kms_core, psr1
  *
  * SUBTEST: fbcdrrs-%dp-primscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
@@ -247,15 +247,15 @@
  *
  * SUBTEST: fbcpsr-%dp-primscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: fbc, fbt, kms_core, psr
+ * Functionality: fbc, fbt, kms_core, psr1
  *
  * SUBTEST: psrdrrs-%dp-primscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: drrs, fbt, kms_core, psr
+ * Functionality: drrs, fbt, kms_core, psr1
  *
  * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Functionality: drrs, fbc, fbt, kms_core, psr1
  *
  * arg[1].values:   1, 2
  *
@@ -283,7 +283,7 @@
  *
  * SUBTEST: psr-%dp-primscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: fbt, kms_core, psr
+ * Functionality: fbt, kms_core, psr1
  *
  * SUBTEST: fbcdrrs-%dp-primscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
@@ -291,15 +291,15 @@
  *
  * SUBTEST: fbcpsr-%dp-primscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: fbc, fbt, kms_core, psr
+ * Functionality: fbc, fbt, kms_core, psr1
  *
  * SUBTEST: psrdrrs-%dp-primscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: drrs, fbt, kms_core, psr
+ * Functionality: drrs, fbt, kms_core, psr1
  *
  * SUBTEST: fbcpsrdrrs-%dp-primscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Functionality: drrs, fbc, fbt, kms_core, psr1
  *
  * arg[1].values:   1, 2
  *
@@ -324,7 +324,7 @@
  * SUBTEST: psr-%dp-primscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: fbt, kms_core, psr
+ * Functionality: fbt, kms_core, psr1
  *
  * SUBTEST: fbcdrrs-%dp-primscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
@@ -334,17 +334,17 @@
  * SUBTEST: fbcpsr-%dp-primscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: fbc, fbt, kms_core, psr
+ * Functionality: fbc, fbt, kms_core, psr1
  *
  * SUBTEST: psrdrrs-%dp-primscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: drrs, fbt, kms_core, psr
+ * Functionality: drrs, fbt, kms_core, psr1
  *
  * SUBTEST: fbcpsrdrrs-%dp-primscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Functionality: drrs, fbc, fbt, kms_core, psr1
  *
  * arg[1].values:   1, 2
  *
@@ -366,7 +366,7 @@
  *
  * SUBTEST: psr-2p-scndscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: fbt, kms_core, psr
+ * Functionality: fbt, kms_core, psr1
  *
  * SUBTEST: fbcdrrs-2p-scndscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
@@ -374,15 +374,15 @@
  *
  * SUBTEST: fbcpsr-2p-scndscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: fbc, fbt, kms_core, psr
+ * Functionality: fbc, fbt, kms_core, psr1
  *
  * SUBTEST: psrdrrs-2p-scndscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: drrs, fbt, kms_core, psr
+ * Functionality: drrs, fbt, kms_core, psr1
  *
  * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Functionality: drrs, fbc, fbt, kms_core, psr1
  *
  * arg[1]:
  *
@@ -411,7 +411,7 @@
  * SUBTEST: psr-2p-scndscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: fbt, kms_core, psr
+ * Functionality: fbt, kms_core, psr1
  *
  * SUBTEST: fbcdrrs-2p-scndscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
@@ -421,17 +421,17 @@
  * SUBTEST: fbcpsr-2p-scndscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: fbc, fbt, kms_core, psr
+ * Functionality: fbc, fbt, kms_core, psr1
  *
  * SUBTEST: psrdrrs-2p-scndscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: drrs, fbt, kms_core, psr
+ * Functionality: drrs, fbt, kms_core, psr1
  *
  * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Functionality: drrs, fbc, fbt, kms_core, psr1
  *
  * arg[1]:
  *
@@ -457,7 +457,7 @@
  *
  * SUBTEST: psr-2p-scndscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: fbt, kms_core, psr
+ * Functionality: fbt, kms_core, psr1
  *
  * SUBTEST: fbcdrrs-2p-scndscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
@@ -465,15 +465,15 @@
  *
  * SUBTEST: fbcpsr-2p-scndscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: fbc, fbt, kms_core, psr
+ * Functionality: fbc, fbt, kms_core, psr1
  *
  * SUBTEST: psrdrrs-2p-scndscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: drrs, fbt, kms_core, psr
+ * Functionality: drrs, fbt, kms_core, psr1
  *
  * SUBTEST: fbcpsrdrrs-2p-scndscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Functionality: drrs, fbc, fbt, kms_core, psr1
  *
  * arg[1]:
  *
@@ -496,7 +496,7 @@
  * SUBTEST: psr-2p-scndscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: fbt, kms_core, psr
+ * Functionality: fbt, kms_core, psr1
  *
  * SUBTEST: fbcdrrs-2p-scndscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
@@ -506,17 +506,17 @@
  * SUBTEST: fbcpsr-2p-scndscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: fbc, fbt, kms_core, psr
+ * Functionality: fbc, fbt, kms_core, psr1
  *
  * SUBTEST: psrdrrs-2p-scndscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: drrs, fbt, kms_core, psr
+ * Functionality: drrs, fbt, kms_core, psr1
  *
  * SUBTEST: fbcpsrdrrs-2p-scndscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Functionality: drrs, fbc, fbt, kms_core, psr1
  *
  * arg[1]:
  *
@@ -536,7 +536,7 @@
  *
  * SUBTEST: psr-%dp-pri-indfb-multidraw
  * Description: Draw a set of rectangles on the screen using alternated drawing methods
- * Functionality: fbt, kms_core, psr
+ * Functionality: fbt, kms_core, psr1
  *
  * SUBTEST: fbcdrrs-%dp-pri-indfb-multidraw
  * Description: Draw a set of rectangles on the screen using alternated drawing methods
@@ -544,15 +544,15 @@
  *
  * SUBTEST: fbcpsr-%dp-pri-indfb-multidraw
  * Description: Draw a set of rectangles on the screen using alternated drawing methods
- * Functionality: fbc, fbt, kms_core, psr
+ * Functionality: fbc, fbt, kms_core, psr1
  *
  * SUBTEST: psrdrrs-%dp-pri-indfb-multidraw
  * Description: Draw a set of rectangles on the screen using alternated drawing methods
- * Functionality: drrs, fbt, kms_core, psr
+ * Functionality: drrs, fbt, kms_core, psr1
  *
  * SUBTEST: fbcpsrdrrs-%dp-pri-indfb-multidraw
  * Description: Draw a set of rectangles on the screen using alternated drawing methods
- * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Functionality: drrs, fbc, fbt, kms_core, psr1
  *
  * arg[1].values:   1, 2
  */
@@ -568,7 +568,7 @@
  *
  * SUBTEST: psr-%s-draw-%s
  * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
- * Functionality: fbt, kms_core, psr
+ * Functionality: fbt, kms_core, psr1
  *
  * SUBTEST: fbcdrrs-%s-draw-%s
  * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
@@ -576,15 +576,15 @@
  *
  * SUBTEST: fbcpsr-%s-draw-%s
  * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
- * Functionality: fbc, fbt, kms_core, psr
+ * Functionality: fbc, fbt, kms_core, psr1
  *
  * SUBTEST: psrdrrs-%s-draw-%s
  * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
- * Functionality: drrs, fbt, kms_core, psr
+ * Functionality: drrs, fbt, kms_core, psr1
  *
  * SUBTEST: fbcpsrdrrs-%s-draw-%s
  * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
- * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Functionality: drrs, fbc, fbt, kms_core, psr1
  *
  * arg[1]:
  *
@@ -612,7 +612,7 @@
  * SUBTEST: psr-%s-draw-%s
  * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
  * Driver requirement: i915
- * Functionality: fbt, kms_core, psr
+ * Functionality: fbt, kms_core, psr1
  *
  * SUBTEST: fbcdrrs-%s-draw-%s
  * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
@@ -622,17 +622,17 @@
  * SUBTEST: fbcpsr-%s-draw-%s
  * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
  * Driver requirement: i915
- * Functionality: fbc, fbt, kms_core, psr
+ * Functionality: fbc, fbt, kms_core, psr1
  *
  * SUBTEST: psrdrrs-%s-draw-%s
  * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
  * Driver requirement: i915
- * Functionality: drrs, fbt, kms_core, psr
+ * Functionality: drrs, fbt, kms_core, psr1
  *
  * SUBTEST: fbcpsrdrrs-%s-draw-%s
  * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
  * Driver requirement: i915
- * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Functionality: drrs, fbc, fbt, kms_core, psr1
  *
  * arg[1]:
  *
@@ -653,7 +653,7 @@
  *
  * SUBTEST: psr-slowdraw
  * Description: Sleep a little bit between drawing operations with PSR
- * Functionality: fbt, kms_core, psr
+ * Functionality: fbt, kms_core, psr1
  *
  * SUBTEST: fbcdrrs-slowdraw
  * Description: Sleep a little bit between drawing operations with FBC & DRRS
@@ -661,15 +661,15 @@
  *
  * SUBTEST: fbcpsr-slowdraw
  * Description: Sleep a little bit between drawing operations with FBC & PSR
- * Functionality: fbc, fbt, kms_core, psr
+ * Functionality: fbc, fbt, kms_core, psr1
  *
  * SUBTEST: psrdrrs-slowdraw
  * Description: Sleep a little bit between drawing operations with PSR & DRRS
- * Functionality: drrs, fbt, kms_core, psr
+ * Functionality: drrs, fbt, kms_core, psr1
  *
  * SUBTEST: fbcpsrdrrs-slowdraw
  * Description: Sleep a little bit between drawing operations with FBC, PSR & DRRS
- * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Functionality: drrs, fbc, fbt, kms_core, psr1
  */
 
 /**
@@ -683,7 +683,7 @@
  *
  * SUBTEST: psr-%dp-primscrn-%s-%sflip-blt
  * Description: Just exercise page flips with the patterns we have
- * Functionality: fbt, kms_core, psr
+ * Functionality: fbt, kms_core, psr1
  *
  * SUBTEST: fbcdrrs-%dp-primscrn-%s-%sflip-blt
  * Description: Just exercise page flips with the patterns we have
@@ -691,15 +691,15 @@
  *
  * SUBTEST: fbcpsr-%dp-primscrn-%s-%sflip-blt
  * Description: Just exercise page flips with the patterns we have
- * Functionality: fbc, fbt, kms_core, psr
+ * Functionality: fbc, fbt, kms_core, psr1
  *
  * SUBTEST: psrdrrs-%dp-primscrn-%s-%sflip-blt
  * Description: Just exercise page flips with the patterns we have
- * Functionality: drrs, fbt, kms_core, psr
+ * Functionality: drrs, fbt, kms_core, psr1
  *
  * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-%sflip-blt
  * Description: Just exercise page flips with the patterns we have
- * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Functionality: drrs, fbc, fbt, kms_core, psr1
  *
  * arg[1].values:   1, 2
  *
@@ -726,7 +726,7 @@
  *
  * SUBTEST: psr-2p-scndscrn-%s-%sflip-blt
  * Description: Just exercise page flips with the patterns we have
- * Functionality: fbt, kms_core, psr
+ * Functionality: fbt, kms_core, psr1
  *
  * SUBTEST: fbcdrrs-2p-scndscrn-%s-%sflip-blt
  * Description: Just exercise page flips with the patterns we have
@@ -734,15 +734,15 @@
  *
  * SUBTEST: fbcpsr-2p-scndscrn-%s-%sflip-blt
  * Description: Just exercise page flips with the patterns we have
- * Functionality: fbc, fbt, kms_core, psr
+ * Functionality: fbc, fbt, kms_core, psr1
  *
  * SUBTEST: psrdrrs-2p-scndscrn-%s-%sflip-blt
  * Description: Just exercise page flips with the patterns we have
- * Functionality: drrs, fbt, kms_core, psr
+ * Functionality: drrs, fbt, kms_core, psr1
  *
  * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-%sflip-blt
  * Description: Just exercise page flips with the patterns we have
- * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Functionality: drrs, fbc, fbt, kms_core, psr1
  *
  * arg[1]:
  *
@@ -767,11 +767,11 @@
  *
  * SUBTEST: fbcpsr-%dp-%s-fliptrack-mmap-gtt
  * Description: Check if the hardware tracking works after page flips
- * Functionality: fbc, fbt, kms_core, psr
+ * Functionality: fbc, fbt, kms_core, psr1
  *
  * SUBTEST: fbcpsrdrrs-%dp-%s-fliptrack-mmap-gtt
  * Description: Check if the hardware tracking works after page flips
- * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Functionality: drrs, fbc, fbt, kms_core, psr1
  *
  * arg[1].values:   1, 2
  *
@@ -792,7 +792,7 @@
  *
  * SUBTEST: psr-%dp-primscrn-%s-indfb-move
  * Description: Just move the %arg[2] around
- * Functionality: fbt, psr
+ * Functionality: fbt, psr1
  *
  * SUBTEST: fbcdrrs-%dp-primscrn-%s-indfb-move
  * Description: Just move the %arg[2] around
@@ -800,15 +800,15 @@
  *
  * SUBTEST: fbcpsr-%dp-primscrn-%s-indfb-move
  * Description: Just move the %arg[2] around
- * Functionality: fbc, fbt, psr
+ * Functionality: fbc, fbt, psr1
  *
  * SUBTEST: psrdrrs-%dp-primscrn-%s-indfb-move
  * Description: Just move the %arg[2] around
- * Functionality: drrs, fbt, psr
+ * Functionality: drrs, fbt, psr1
  *
  * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-indfb-move
  * Description: Just move the %arg[2] around
- * Functionality: drrs, fbc, fbt, psr
+ * Functionality: drrs, fbc, fbt, psr1
  *
  * arg[1].values:   1, 2
  *
@@ -829,7 +829,7 @@
  *
  * SUBTEST: psr-2p-scndscrn-%s-indfb-move
  * Description: Just move the %arg[1] around
- * Functionality: fbt, psr
+ * Functionality: fbt, psr1
  *
  * SUBTEST: fbcdrrs-2p-scndscrn-%s-indfb-move
  * Description: Just move the %arg[1] around
@@ -837,15 +837,15 @@
  *
  * SUBTEST: fbcpsr-2p-scndscrn-%s-indfb-move
  * Description: Just move the %arg[1] around
- * Functionality: fbc, fbt, psr
+ * Functionality: fbc, fbt, psr1
  *
  * SUBTEST: psrdrrs-2p-scndscrn-%s-indfb-move
  * Description: Just move the %arg[1] around
- * Functionality: drrs, fbt, psr
+ * Functionality: drrs, fbt, psr1
  *
  * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-indfb-move
  * Description: Just move the %arg[1] around
- * Functionality: drrs, fbc, fbt, psr
+ * Functionality: drrs, fbc, fbt, psr1
  *
  * arg[1]:
  *
@@ -864,7 +864,7 @@
  *
  * SUBTEST: psr-%dp-primscrn-%s-indfb-onoff
  * Description: Just enable and disable the %arg[2] a few times
- * Functionality: fbt, psr
+ * Functionality: fbt, psr1
  *
  * SUBTEST: fbcdrrs-%dp-primscrn-%s-indfb-onoff
  * Description: Just enable and disable the %arg[2] a few times
@@ -872,15 +872,15 @@
  *
  * SUBTEST: fbcpsr-%dp-primscrn-%s-indfb-onoff
  * Description: Just enable and disable the %arg[2] a few times
- * Functionality: fbc, fbt, psr
+ * Functionality: fbc, fbt, psr1
  *
  * SUBTEST: psrdrrs-%dp-primscrn-%s-indfb-onoff
  * Description: Just enable and disable the %arg[2] a few times
- * Functionality: drrs, fbt, psr
+ * Functionality: drrs, fbt, psr1
  *
  * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-indfb-onoff
  * Description: Just enable and disable the %arg[2] a few times
- * Functionality: drrs, fbc, fbt, psr
+ * Functionality: drrs, fbc, fbt, psr1
  *
  * arg[1].values:   1, 2
  *
@@ -901,7 +901,7 @@
  *
  * SUBTEST: psr-2p-scndscrn-%s-indfb-onoff
  * Description: Just enable and disable the %arg[1] a few times
- * Functionality: fbt, psr
+ * Functionality: fbt, psr1
  *
  * SUBTEST: fbcdrrs-2p-scndscrn-%s-indfb-onoff
  * Description: Just enable and disable the %arg[1] a few times
@@ -909,15 +909,15 @@
  *
  * SUBTEST: fbcpsr-2p-scndscrn-%s-indfb-onoff
  * Description: Just enable and disable the %arg[1] a few times
- * Functionality: fbc, fbt, psr
+ * Functionality: fbc, fbt, psr1
  *
  * SUBTEST: psrdrrs-2p-scndscrn-%s-indfb-onoff
  * Description: Just enable and disable the %arg[1] a few times
- * Functionality: drrs, fbt, psr
+ * Functionality: drrs, fbt, psr1
  *
  * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-indfb-onoff
  * Description: Just enable and disable the %arg[1] a few times
- * Functionality: drrs, fbc, fbt, psr
+ * Functionality: drrs, fbc, fbt, psr1
  *
  * arg[1]:
  *
@@ -936,7 +936,7 @@
  *
  * SUBTEST: psr-%dp-primscrn-spr-indfb-fullscreen
  * Description: Put a fullscreen plane covering the whole screen
- * Functionality: fbt, psr
+ * Functionality: fbt, psr1
  *
  * SUBTEST: fbcdrrs-%dp-primscrn-spr-indfb-fullscreen
  * Description: Put a fullscreen plane covering the whole screen
@@ -944,15 +944,15 @@
  *
  * SUBTEST: fbcpsr-%dp-primscrn-spr-indfb-fullscreen
  * Description: Put a fullscreen plane covering the whole screen
- * Functionality: fbc, fbt, psr
+ * Functionality: fbc, fbt, psr1
  *
  * SUBTEST: psrdrrs-%dp-primscrn-spr-indfb-fullscreen
  * Description: Put a fullscreen plane covering the whole screen
- * Functionality: drrs, fbt, psr
+ * Functionality: drrs, fbt, psr1
  *
  * SUBTEST: fbcpsrdrrs-%dp-primscrn-spr-indfb-fullscreen
  * Description: Put a fullscreen plane covering the whole screen
- * Functionality: drrs, fbc, fbt, psr
+ * Functionality: drrs, fbc, fbt, psr1
  *
  * SUBTEST: drrs-2p-scndscrn-spr-indfb-fullscreen
  * Description: Put a fullscreen plane covering the whole screen
@@ -964,7 +964,7 @@
  *
  * SUBTEST: psr-2p-scndscrn-spr-indfb-fullscreen
  * Description: Put a fullscreen plane covering the whole screen
- * Functionality: fbt, psr
+ * Functionality: fbt, psr1
  *
  * SUBTEST: fbcdrrs-2p-scndscrn-spr-indfb-fullscreen
  * Description: Put a fullscreen plane covering the whole screen
@@ -972,15 +972,15 @@
  *
  * SUBTEST: fbcpsr-2p-scndscrn-spr-indfb-fullscreen
  * Description: Put a fullscreen plane covering the whole screen
- * Functionality: fbc, fbt, psr
+ * Functionality: fbc, fbt, psr1
  *
  * SUBTEST: psrdrrs-2p-scndscrn-spr-indfb-fullscreen
  * Description: Put a fullscreen plane covering the whole screen
- * Functionality: drrs, fbt, psr
+ * Functionality: drrs, fbt, psr1
  *
  * SUBTEST: fbcpsrdrrs-2p-scndscrn-spr-indfb-fullscreen
  * Description: Put a fullscreen plane covering the whole screen
- * Functionality: drrs, fbc, fbt, psr
+ * Functionality: drrs, fbc, fbt, psr1
  *
  * arg[1].values:   1, 2
  */
@@ -996,7 +996,7 @@
  *
  * SUBTEST: psr-%s-scaledprimary
  * Description: Try different primary plane scaling strategies
- * Functionality: fbt, psr, scaling
+ * Functionality: fbt, psr1, scaling
  *
  * SUBTEST: fbcdrrs-%s-scaledprimary
  * Description: Try different primary plane scaling strategies
@@ -1004,15 +1004,15 @@
  *
  * SUBTEST: fbcpsr-%s-scaledprimary
  * Description: Try different primary plane scaling strategies
- * Functionality: fbc, fbt, psr, scaling
+ * Functionality: fbc, fbt, psr1, scaling
  *
  * SUBTEST: psrdrrs-%s-scaledprimary
  * Description: Try different primary plane scaling strategies
- * Functionality: drrs, fbt, psr, scaling
+ * Functionality: drrs, fbt, psr1, scaling
  *
  * SUBTEST: fbcpsrdrrs-%s-scaledprimary
  * Description: Try different primary plane scaling strategies
- * Functionality: drrs, fbc, fbt, psr, scaling
+ * Functionality: drrs, fbc, fbt, psr1, scaling
  *
  * arg[1]:
  *
@@ -1031,7 +1031,7 @@
  *
  * SUBTEST: psr-modesetfrombusy
  * Description: Modeset from a busy buffer to a non-busy buffer with PSR
- * Functionality: fbt, psr, scaling
+ * Functionality: fbt, psr1, scaling
  *
  * SUBTEST: fbcdrrs-modesetfrombusy
  * Description: Modeset from a busy buffer to a non-busy buffer with FBC & DRRS
@@ -1039,15 +1039,15 @@
  *
  * SUBTEST: fbcpsr-modesetfrombusy
  * Description: Modeset from a busy buffer to a non-busy buffer with FBC & PSR
- * Functionality: fbc, fbt, psr, scaling
+ * Functionality: fbc, fbt, psr1, scaling
  *
  * SUBTEST: psrdrrs-modesetfrombusy
  * Description: Modeset from a busy buffer to a non-busy buffer with PSR & DRRS
- * Functionality: drrs, fbt, psr, scaling
+ * Functionality: drrs, fbt, psr1, scaling
  *
  * SUBTEST: fbcpsrdrrs-modesetfrombusy
  * Description: Modeset from a busy buffer to a non-busy buffer with FBC, PSR & DRRS
- * Functionality: drrs, fbc, fbt, psr, scaling
+ * Functionality: drrs, fbc, fbt, psr1, scaling
  */
 
 /**
@@ -1061,7 +1061,7 @@
  *
  * SUBTEST: psr-suspend
  * Description: Make sure suspend/resume keeps us on the same state of PSR
- * Functionality: fbt, psr, suspend
+ * Functionality: fbt, psr1, suspend
  *
  * SUBTEST: fbcdrrs-suspend
  * Description: Make sure suspend/resume keeps us on the same state of FBC & DRRS
@@ -1069,15 +1069,15 @@
  *
  * SUBTEST: fbcpsr-suspend
  * Description: Make sure suspend/resume keeps us on the same state of FBC & PSR
- * Functionality: fbc, fbt, psr, suspend
+ * Functionality: fbc, fbt, psr1, suspend
  *
  * SUBTEST: psrdrrs-suspend
  * Description: Make sure suspend/resume keeps us on the same state of PSR & DRRS
- * Functionality: drrs, fbt, psr, suspend
+ * Functionality: drrs, fbt, psr1, suspend
  *
  * SUBTEST: fbcpsrdrrs-suspend
  * Description: Make sure suspend/resume keeps us on the same state of FBC, PSR & DRRS
- * Functionality: drrs, fbc, fbt, psr, suspend
+ * Functionality: drrs, fbc, fbt, psr1, suspend
  */
 
 /**
@@ -1094,7 +1094,7 @@
  * SUBTEST: psr-farfromfence-mmap-gtt
  * Description: Test drawing as far from the fence start as possible
  * Driver requirement: i915
- * Functionality: fbt, kms_core, psr
+ * Functionality: fbt, kms_core, psr1
  *
  * SUBTEST: fbcdrrs-farfromfence-mmap-gtt
  * Description: Test drawing as far from the fence start as possible
@@ -1104,17 +1104,17 @@
  * SUBTEST: fbcpsr-farfromfence-mmap-gtt
  * Description: Test drawing as far from the fence start as possible
  * Driver requirement: i915
- * Functionality: fbc, fbt, kms_core, psr
+ * Functionality: fbc, fbt, kms_core, psr1
  *
  * SUBTEST: psrdrrs-farfromfence-mmap-gtt
  * Description: Test drawing as far from the fence start as possible
  * Driver requirement: i915
- * Functionality: drrs, fbt, kms_core, psr
+ * Functionality: drrs, fbt, kms_core, psr1
  *
  * SUBTEST: fbcpsrdrrs-farfromfence-mmap-gtt
  * Description: Test drawing as far from the fence start as possible
  * Driver requirement: i915
- * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Functionality: drrs, fbc, fbt, kms_core, psr1
  */
 
 /**
@@ -1128,11 +1128,11 @@
  *
  * SUBTEST: fbcpsr-stridechange
  * Description: Change the frontbuffer stride by doing a modeset
- * Functionality: fbc, fbt, psr
+ * Functionality: fbc, fbt, psr1
  *
  * SUBTEST: fbcpsrdrrs-stridechange
  * Description: Change the frontbuffer stride by doing a modeset
- * Functionality: drrs, fbc, fbt, psr
+ * Functionality: drrs, fbc, fbt, psr1
  */
 
 /**
@@ -1149,12 +1149,12 @@
  * SUBTEST: fbcpsr-tiling-%s
  * Description: Test %arg[1] formats, if the tiling format supports FBC do the
  *              basic drawing test, else set the mode & test if FBC is disabled
- * Functionality: fbc, fbt, psr, tiling
+ * Functionality: fbc, fbt, psr1, tiling
  *
  * SUBTEST: fbcpsrdrrs-tiling-%s
  * Description: Test %arg[1] formats, if the tiling format supports FBC do the
  *              basic drawing test, else set the mode & test if FBC is disabled
- * Functionality: drrs, fbc, fbt, psr, tiling
+ * Functionality: drrs, fbc, fbt, psr1, tiling
  *
  * arg[1]:
  *
diff --git a/tests/intel/kms_pm_dc.c b/tests/intel/kms_pm_dc.c
index 739ed6112..8006e54de 100644
--- a/tests/intel/kms_pm_dc.c
+++ b/tests/intel/kms_pm_dc.c
@@ -64,7 +64,7 @@
  *
  * SUBTEST: dc5-psr
  * Description: This test validates display engine entry to DC5 state while PSR is active
- * Functionality: pm_dc, psr
+ * Functionality: pm_dc, psr1
  *
  * SUBTEST: dc6-dpms
  * Description: Validate display engine entry to DC6 state while all connectors's
@@ -72,7 +72,7 @@
  *
  * SUBTEST: dc6-psr
  * Description: This test validates display engine entry to DC6 state while PSR is active
- * Functionality: pm_dc, psr
+ * Functionality: pm_dc, psr1
  *
  * SUBTEST: dc9-dpms
  * Description: This test validates display engine entry to DC9 state
diff --git a/tests/intel/kms_psr.c b/tests/intel/kms_psr.c
index b9e95fdfe..7fe6a2c30 100644
--- a/tests/intel/kms_psr.c
+++ b/tests/intel/kms_psr.c
@@ -44,13 +44,13 @@
 /**
  * SUBTEST: psr_basic
  * Description: Basic check for psr if it is detecting changes made in planes
- * Functionality: psr
+ * Functionality: psr1
  *
  * SUBTEST: psr_%s_%s
  * Description: Check if psr is detecting memory mapping, rendering and plane
  *              operations performed on %arg[1]
  * Driver requirement: i915
- * Functionality: kms_core, plane, psr
+ * Functionality: kms_core, plane, psr1
  *
  * arg[1]:
  *
@@ -68,12 +68,12 @@
  * SUBTEST: psr_sprite_plane_move
  * Description: Check if psr is detecting memory mapping, rendering and plane
  *              operations performed on sprite planes
- * Functionality: plane, psr
+ * Functionality: plane, psr1
  *
  * SUBTEST: psr_%s_%s
  * Description: Check if psr is detecting memory mapping, rendering and plane
  *              operations performed on %arg[1] planes
- * Functionality: kms_core, plane, psr
+ * Functionality: kms_core, plane, psr1
  *
  * arg[1]:
  *
@@ -91,7 +91,7 @@
  * SUBTEST: psr_primary_%s
  * Description: Check if psr is detecting memory mapping, rendering and plane
  *              operations performed on %arg[1] planes
- * Functionality: kms_core, psr
+ * Functionality: kms_core, psr1
  *
  * arg[1]:
  *
@@ -103,40 +103,40 @@
  * SUBTEST: psr_dpms
  * Description: Check if psr is detecting changes when rendering operation is
  *              performed  with dpms enabled or disabled
- * Functionality: dpms, psr
+ * Functionality: dpms, psr1
  *
  * SUBTEST: psr_no_drrs
  * Description: Check if psr is detecting changes when drrs is disabled
- * Functionality: drrs, psr
+ * Functionality: drrs, psr1
  *
  * SUBTEST: psr_suspend
  * Description: Check if psr is detecting changes when plane operation
  *              is performed with suspend resume cycles
- * Functionality: psr, suspend
+ * Functionality: psr1, suspend
  *
  * SUBTEST: psr2_dpms
  * Description: Check if psr is detecting changes when rendering operation
  *              is performed  with dpms enabled or disabled
- * Functionality: dpms, psr, psr2
+ * Functionality: dpms, psr2
  *
  * SUBTEST: psr2_no_drrs
  * Description: Check if psr is detecting changes when drrs is disabled
- * Functionality: drrs, psr, psr2
+ * Functionality: drrs, psr2
  *
  * SUBTEST: psr2_suspend
  * Description: Check if psr is detecting changes when plane operation is
  *              performed with suspend resume cycles
- * Functionality: psr, psr2, suspend
+ * Functionality: psr2, suspend
  *
  * SUBTEST: psr2_basic
  * Description: Basic check for psr if it is detecting changes made in planes
- * Functionality: psr, psr2
+ * Functionality: psr2
  *
  * SUBTEST: psr2_%s_%s
  * Description: Check if psr2 is detecting memory mapping, rendering and plane
  *              operations performed on %arg[1] planes
  * Driver requirement: i915
- * Functionality: kms_core, plane, psr, psr2
+ * Functionality: kms_core, plane, psr2
  *
  * arg[1]:
  *
@@ -154,12 +154,12 @@
  * SUBTEST: psr2_primary_page_flip
  * Description: Check if psr is detecting memory mapping, rendering and plane
  *              operations performed on primary planes
- * Functionality: plane, psr, psr2
+ * Functionality: plane, psr2
  *
  * SUBTEST: psr2_primary_%s
  * Description: Check if psr is detecting memory mapping, rendering and plane
  *              operations performed on primary planes
- * Functionality: kms_core, plane, psr, psr2
+ * Functionality: kms_core, plane, psr2
  *
  * arg[1]:
  *
@@ -171,7 +171,7 @@
  * SUBTEST: psr2_%s_%s
  * Description: Check if psr is detecting memory mapping, rendering and plane
  *              operations performed on %arg[1] planes
- * Functionality: kms_core, plane, psr, psr2
+ * Functionality: kms_core, plane, psr2
  *
  * arg[1]:
  *
@@ -273,17 +273,17 @@
  * SUBTEST: psr_cursor_plane_move
  * Description: Check if psr is detecting the plane operations performed on
  *		cursor planes
- * Functionality: psr
+ * Functionality: psr1
  *
  * SUBTEST: psr_primary_page_flip
  * Description: Check if psr is detecting page-flipping operations performed
  *		on primary planes
- * Functionality: psr
+ * Functionality: psr1
  *
  * SUBTEST: psr_sprite_plane_onoff
  * Description: Check if psr is detecting the plane operations performed on
  *		sprite planes
- * Functionality: psr
+ * Functionality: psr1
  */
 
 enum operations {
diff --git a/tests/intel/kms_psr_stress_test.c b/tests/intel/kms_psr_stress_test.c
index 28529b1f1..7aea8e8a5 100644
--- a/tests/intel/kms_psr_stress_test.c
+++ b/tests/intel/kms_psr_stress_test.c
@@ -3,7 +3,7 @@
  * TEST: kms psr stress test
  * Category: Display
  * Driver requirement: i915, xe
- * Functionality: plane, psr
+ * Functionality: plane, psr1
  * Mega feature: PSR
  * Test category: functionality test
  */
diff --git a/tests/kms_feature_discovery.c b/tests/kms_feature_discovery.c
index 24c71ed22..dff667c73 100644
--- a/tests/kms_feature_discovery.c
+++ b/tests/kms_feature_discovery.c
@@ -57,12 +57,12 @@
  *
  * SUBTEST: psr1
  * Description: Make sure that we have eDP panel with PSR1 support.
- * Functionality: feature_discovery, psr1, eDP
+ * Functionality: feature_discovery, psr1, eDP_core
  * Mega feature: PSR
  *
  * SUBTEST: psr2
  * Description: Make sure that we have eDP panel with PSR2 support.
- * Functionality: feature_discovery, psr2, eDP
+ * Functionality: feature_discovery, psr2, eDP_core
  * Mega feature: PSR
  *
  * SUBTEST: dp-mst
diff --git a/tests/kms_hdmi_inject.c b/tests/kms_hdmi_inject.c
index 9691f2818..a554ca2b1 100644
--- a/tests/kms_hdmi_inject.c
+++ b/tests/kms_hdmi_inject.c
@@ -51,7 +51,7 @@
  * SUBTEST: inject-audio
  * Description: Make sure that audio information exposed by ALSA match the forced
  *              EDID.
- * Functionality: audio, force_connector
+ * Functionality: hdmi_audio, force_connector
  */
 
 #define HDISPLAY_4K	3840
diff --git a/tests/kms_hdr.c b/tests/kms_hdr.c
index 4dd2eda37..99b78f7ef 100644
--- a/tests/kms_hdr.c
+++ b/tests/kms_hdr.c
@@ -25,7 +25,6 @@
  * Category: Display
  * Description: Test HDR metadata interfaces and bpc switch
  * Driver requirement: i915, xe
- * Functionality: colorspace, hdr
  * Mega feature: HDR
  * Test category: functionality test
  */
@@ -39,31 +38,35 @@
 /**
  * SUBTEST: bpc-switch
  * Description: Tests switching between different display output bpc modes
+ * Functionality: colorspace
  *
  * SUBTEST: bpc-switch-dpms
  * Description: Tests switching between different display output bpc modes with dpms
- * Functionality: colorspace, dpms, hdr
+ * Functionality: colorspace, dpms
  *
  * SUBTEST: bpc-switch-suspend
  * Description: Tests switching between different display output bpc modes with suspend
- * Functionality: colorspace, hdr, suspend
+ * Functionality: colorspace, suspend
  *
  * SUBTEST: invalid-hdr
  * Description: Test to ensure HDR is not enabled on non-HDR panel
+ * Functionality: colorspace, static_hdr
  *
  * SUBTEST: invalid-metadata-sizes
  * Description: Tests invalid HDR metadata sizes
+ * Functionality: colorspace, static_hdr
  *
  * SUBTEST: static-toggle-dpms
  * Description: Tests static toggle with dpms
- * Functionality: colorspace, dpms, hdr
+ * Functionality: colorspace, dpms, static_hdr
  *
  * SUBTEST: static-toggle-suspend
  * Description: Tests static toggle with suspend
- * Functionality: colorspace, hdr, suspend
+ * Functionality: colorspace, static_hdr, suspend
  *
  * SUBTEST: static-%s
  * Description: Tests %arg[1].
+ * Functionality: colorspace, static_hdr
  *
  * arg[1]:
  *
diff --git a/tests/kms_panel_fitting.c b/tests/kms_panel_fitting.c
index 4b5d9d5ab..f714ab474 100644
--- a/tests/kms_panel_fitting.c
+++ b/tests/kms_panel_fitting.c
@@ -27,7 +27,7 @@
  * Category: Display
  * Description: Test display panel fitting
  * Driver requirement: i915, xe
- * Functionality: eDP, panel_fitting, scaling
+ * Functionality: eDP_core, panel_fitting, scaling
  * Mega feature: General Display Features
  * Test category: functionality test
  */
diff --git a/tests/kms_scaling_modes.c b/tests/kms_scaling_modes.c
index add6e77c9..fae5755a8 100644
--- a/tests/kms_scaling_modes.c
+++ b/tests/kms_scaling_modes.c
@@ -29,7 +29,7 @@
  * Category: Display
  * Description: Test display scaling modes
  * Driver requirement: i915, xe
- * Functionality: eDP, plane, scaling
+ * Functionality: eDP_core, plane, scaling
  * Mega feature: General Display Features
  * Test category: functionality test
  */
-- 
2.40.0



^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [igt-dev] ✓ Fi.CI.BAT: success for Optimize kms tesplan documentation (rev4)
  2023-11-24  9:35 [igt-dev] [i-g-t 0/5] Optimize kms tesplan documentation Bhanuprakash Modem
                   ` (4 preceding siblings ...)
  2023-11-24  9:36 ` [igt-dev] [i-g-t 5/5] tests/kms/testplan: Avoid duplicate names on Mega feature vs Functionality Bhanuprakash Modem
@ 2023-11-24 12:28 ` Patchwork
  2023-11-24 13:24 ` [igt-dev] ✗ CI.xeBAT: failure " Patchwork
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2023-11-24 12:28 UTC (permalink / raw)
  To: Bhanuprakash Modem; +Cc: igt-dev

[-- Attachment #1: Type: text/plain, Size: 12478 bytes --]

== Series Details ==

Series: Optimize kms tesplan documentation (rev4)
URL   : https://patchwork.freedesktop.org/series/123697/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_13920 -> IGTPW_10264
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/index.html

Participating hosts (38 -> 38)
------------------------------

  Additional (2): bat-dg2-8 fi-bsw-n3050 
  Missing    (2): fi-snb-2520m bat-dg1-5 

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in IGTPW_10264:

### IGT changes ###

#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * {igt@kms_psr@psr_cursor_plane_move}:
    - bat-dg2-8:          NOTRUN -> [SKIP][1] +3 other tests skip
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/bat-dg2-8/igt@kms_psr@psr_cursor_plane_move.html

  * {igt@kms_psr@psr_primary_mmap_gtt}:
    - bat-rpls-1:         [SKIP][2] ([i915#9673]) -> [SKIP][3] +3 other tests skip
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/bat-rpls-1/igt@kms_psr@psr_primary_mmap_gtt.html
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/bat-rpls-1/igt@kms_psr@psr_primary_mmap_gtt.html
    - fi-rkl-11600:       [SKIP][4] ([i915#9673]) -> [SKIP][5] +3 other tests skip
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/fi-rkl-11600/igt@kms_psr@psr_primary_mmap_gtt.html
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/fi-rkl-11600/igt@kms_psr@psr_primary_mmap_gtt.html
    - bat-dg1-7:          [SKIP][6] ([i915#9673]) -> [SKIP][7] +3 other tests skip
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/bat-dg1-7/igt@kms_psr@psr_primary_mmap_gtt.html
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/bat-dg1-7/igt@kms_psr@psr_primary_mmap_gtt.html
    - bat-adlp-9:         [SKIP][8] ([i915#9673]) -> [SKIP][9] +3 other tests skip
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/bat-adlp-9/igt@kms_psr@psr_primary_mmap_gtt.html
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/bat-adlp-9/igt@kms_psr@psr_primary_mmap_gtt.html
    - bat-dg2-11:         [SKIP][10] ([i915#9673]) -> [SKIP][11] +3 other tests skip
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/bat-dg2-11/igt@kms_psr@psr_primary_mmap_gtt.html
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/bat-dg2-11/igt@kms_psr@psr_primary_mmap_gtt.html
    - bat-adlm-1:         [SKIP][12] ([i915#9673]) -> [SKIP][13] +3 other tests skip
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/bat-adlm-1/igt@kms_psr@psr_primary_mmap_gtt.html
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/bat-adlm-1/igt@kms_psr@psr_primary_mmap_gtt.html
    - fi-tgl-1115g4:      [SKIP][14] ([i915#9673]) -> [SKIP][15] +3 other tests skip
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/fi-tgl-1115g4/igt@kms_psr@psr_primary_mmap_gtt.html
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/fi-tgl-1115g4/igt@kms_psr@psr_primary_mmap_gtt.html
    - bat-mtlp-6:         [SKIP][16] ([i915#9673]) -> [SKIP][17] +3 other tests skip
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/bat-mtlp-6/igt@kms_psr@psr_primary_mmap_gtt.html
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/bat-mtlp-6/igt@kms_psr@psr_primary_mmap_gtt.html

  * {igt@kms_psr@psr_sprite_plane_onoff}:
    - bat-dg2-9:          [SKIP][18] ([i915#9673]) -> [SKIP][19] +3 other tests skip
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/bat-dg2-9/igt@kms_psr@psr_sprite_plane_onoff.html
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/bat-dg2-9/igt@kms_psr@psr_sprite_plane_onoff.html

  
Known issues
------------

  Here are the changes found in IGTPW_10264 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@gem_lmem_swapping@random-engines:
    - fi-bsw-n3050:       NOTRUN -> [SKIP][20] ([fdo#109271]) +14 other tests skip
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/fi-bsw-n3050/igt@gem_lmem_swapping@random-engines.html

  * igt@gem_mmap@basic:
    - bat-dg2-8:          NOTRUN -> [SKIP][21] ([i915#4083])
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/bat-dg2-8/igt@gem_mmap@basic.html

  * igt@gem_mmap_gtt@basic:
    - bat-dg2-8:          NOTRUN -> [SKIP][22] ([i915#4077]) +2 other tests skip
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/bat-dg2-8/igt@gem_mmap_gtt@basic.html

  * igt@gem_tiled_pread_basic:
    - bat-dg2-8:          NOTRUN -> [SKIP][23] ([i915#4079]) +1 other test skip
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/bat-dg2-8/igt@gem_tiled_pread_basic.html

  * igt@i915_pm_rps@basic-api:
    - bat-dg2-8:          NOTRUN -> [SKIP][24] ([i915#6621])
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/bat-dg2-8/igt@i915_pm_rps@basic-api.html

  * igt@i915_selftest@live@hangcheck:
    - bat-adls-5:         [PASS][25] -> [DMESG-WARN][26] ([i915#5591])
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/bat-adls-5/igt@i915_selftest@live@hangcheck.html
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/bat-adls-5/igt@i915_selftest@live@hangcheck.html

  * igt@i915_selftest@live@requests:
    - bat-mtlp-6:         [PASS][27] -> [DMESG-FAIL][28] ([i915#9694])
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/bat-mtlp-6/igt@i915_selftest@live@requests.html
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/bat-mtlp-6/igt@i915_selftest@live@requests.html

  * igt@i915_suspend@basic-s3-without-i915:
    - bat-dg2-8:          NOTRUN -> [SKIP][29] ([i915#6645])
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/bat-dg2-8/igt@i915_suspend@basic-s3-without-i915.html

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - bat-dg2-8:          NOTRUN -> [SKIP][30] ([i915#5190])
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/bat-dg2-8/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * igt@kms_addfb_basic@basic-y-tiled-legacy:
    - bat-dg2-8:          NOTRUN -> [SKIP][31] ([i915#4215] / [i915#5190])
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/bat-dg2-8/igt@kms_addfb_basic@basic-y-tiled-legacy.html

  * igt@kms_addfb_basic@framebuffer-vs-set-tiling:
    - bat-dg2-8:          NOTRUN -> [SKIP][32] ([i915#4212]) +6 other tests skip
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/bat-dg2-8/igt@kms_addfb_basic@framebuffer-vs-set-tiling.html

  * igt@kms_addfb_basic@tile-pitch-mismatch:
    - bat-dg2-8:          NOTRUN -> [SKIP][33] ([i915#4212] / [i915#5608])
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/bat-dg2-8/igt@kms_addfb_basic@tile-pitch-mismatch.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
    - bat-dg2-8:          NOTRUN -> [SKIP][34] ([i915#4103] / [i915#4213] / [i915#5608]) +1 other test skip
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/bat-dg2-8/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html

  * igt@kms_force_connector_basic@force-load-detect:
    - bat-dg2-8:          NOTRUN -> [SKIP][35] ([fdo#109285])
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/bat-dg2-8/igt@kms_force_connector_basic@force-load-detect.html

  * igt@kms_force_connector_basic@prune-stale-modes:
    - bat-dg2-8:          NOTRUN -> [SKIP][36] ([i915#5274])
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/bat-dg2-8/igt@kms_force_connector_basic@prune-stale-modes.html

  * igt@kms_hdmi_inject@inject-audio:
    - fi-bsw-n3050:       NOTRUN -> [FAIL][37] ([IGT#152])
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/fi-bsw-n3050/igt@kms_hdmi_inject@inject-audio.html

  * igt@kms_setmode@basic-clone-single-crtc:
    - bat-dg2-8:          NOTRUN -> [SKIP][38] ([i915#3555] / [i915#4098])
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/bat-dg2-8/igt@kms_setmode@basic-clone-single-crtc.html

  * igt@prime_vgem@basic-fence-flip:
    - bat-dg2-8:          NOTRUN -> [SKIP][39] ([i915#3708])
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/bat-dg2-8/igt@prime_vgem@basic-fence-flip.html

  * igt@prime_vgem@basic-fence-mmap:
    - bat-dg2-8:          NOTRUN -> [SKIP][40] ([i915#3708] / [i915#4077]) +1 other test skip
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/bat-dg2-8/igt@prime_vgem@basic-fence-mmap.html

  * igt@prime_vgem@basic-write:
    - bat-dg2-8:          NOTRUN -> [SKIP][41] ([i915#3291] / [i915#3708]) +2 other tests skip
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/bat-dg2-8/igt@prime_vgem@basic-write.html

  
#### Possible fixes ####

  * igt@i915_selftest@live@gem_contexts:
    - bat-mtlp-6:         [DMESG-FAIL][42] ([i915#9579]) -> [PASS][43]
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/bat-mtlp-6/igt@i915_selftest@live@gem_contexts.html
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/bat-mtlp-6/igt@i915_selftest@live@gem_contexts.html

  * igt@kms_hdmi_inject@inject-audio:
    - fi-kbl-guc:         [FAIL][44] ([IGT#3]) -> [PASS][45]
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/fi-kbl-guc/igt@kms_hdmi_inject@inject-audio.html
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/fi-kbl-guc/igt@kms_hdmi_inject@inject-audio.html

  * igt@kms_pipe_crc_basic@read-crc-frame-sequence@pipe-d-edp-1:
    - bat-rplp-1:         [ABORT][46] ([i915#8668]) -> [PASS][47]
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/bat-rplp-1/igt@kms_pipe_crc_basic@read-crc-frame-sequence@pipe-d-edp-1.html
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/bat-rplp-1/igt@kms_pipe_crc_basic@read-crc-frame-sequence@pipe-d-edp-1.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [IGT#152]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/152
  [IGT#3]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/3
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285
  [i915#3291]: https://gitlab.freedesktop.org/drm/intel/issues/3291
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
  [i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077
  [i915#4079]: https://gitlab.freedesktop.org/drm/intel/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083
  [i915#4098]: https://gitlab.freedesktop.org/drm/intel/issues/4098
  [i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103
  [i915#4212]: https://gitlab.freedesktop.org/drm/intel/issues/4212
  [i915#4213]: https://gitlab.freedesktop.org/drm/intel/issues/4213
  [i915#4215]: https://gitlab.freedesktop.org/drm/intel/issues/4215
  [i915#5190]: https://gitlab.freedesktop.org/drm/intel/issues/5190
  [i915#5274]: https://gitlab.freedesktop.org/drm/intel/issues/5274
  [i915#5354]: https://gitlab.freedesktop.org/drm/intel/issues/5354
  [i915#5591]: https://gitlab.freedesktop.org/drm/intel/issues/5591
  [i915#5608]: https://gitlab.freedesktop.org/drm/intel/issues/5608
  [i915#6621]: https://gitlab.freedesktop.org/drm/intel/issues/6621
  [i915#6645]: https://gitlab.freedesktop.org/drm/intel/issues/6645
  [i915#6868]: https://gitlab.freedesktop.org/drm/intel/issues/6868
  [i915#8668]: https://gitlab.freedesktop.org/drm/intel/issues/8668
  [i915#9579]: https://gitlab.freedesktop.org/drm/intel/issues/9579
  [i915#9673]: https://gitlab.freedesktop.org/drm/intel/issues/9673
  [i915#9694]: https://gitlab.freedesktop.org/drm/intel/issues/9694


Build changes
-------------

  * CI: CI-20190529 -> None
  * IGT: IGT_7601 -> IGTPW_10264

  CI-20190529: 20190529
  CI_DRM_13920: 278e4673d0a5f5cd5d0b585df88cbcb6d3afd0d8 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_10264: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/index.html
  IGT_7601: 9c6e7f255724e327627be7c8ed30e23742e97386 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/index.html

[-- Attachment #2: Type: text/html, Size: 14643 bytes --]

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [igt-dev] ✗ CI.xeBAT: failure for Optimize kms tesplan documentation (rev4)
  2023-11-24  9:35 [igt-dev] [i-g-t 0/5] Optimize kms tesplan documentation Bhanuprakash Modem
                   ` (5 preceding siblings ...)
  2023-11-24 12:28 ` [igt-dev] ✓ Fi.CI.BAT: success for Optimize kms tesplan documentation (rev4) Patchwork
@ 2023-11-24 13:24 ` Patchwork
  2023-11-24 14:37 ` [igt-dev] [i-g-t 0/5] Optimize kms tesplan documentation Sharma, Swati2
  2023-11-25 14:33 ` [igt-dev] ✗ Fi.CI.IGT: failure for Optimize kms tesplan documentation (rev4) Patchwork
  8 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2023-11-24 13:24 UTC (permalink / raw)
  To: Bhanuprakash Modem; +Cc: igt-dev

[-- Attachment #1: Type: text/plain, Size: 7146 bytes --]

== Series Details ==

Series: Optimize kms tesplan documentation (rev4)
URL   : https://patchwork.freedesktop.org/series/123697/
State : failure

== Summary ==

CI Bug Log - changes from XEIGT_7601_BAT -> XEIGTPW_10264_BAT
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with XEIGTPW_10264_BAT absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in XEIGTPW_10264_BAT, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
  to document this new failure mode, which will reduce false positives in CI.

  

Participating hosts (4 -> 4)
------------------------------

  No changes in participating hosts

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in XEIGTPW_10264_BAT:

### IGT changes ###

#### Possible regressions ####

  * igt@kms_flip@basic-flip-vs-wf_vblank@c-dp3:
    - bat-dg2-oem2:       [PASS][1] -> [FAIL][2]
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7601/bat-dg2-oem2/igt@kms_flip@basic-flip-vs-wf_vblank@c-dp3.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10264/bat-dg2-oem2/igt@kms_flip@basic-flip-vs-wf_vblank@c-dp3.html

  
#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * {igt@kms_psr@psr_cursor_plane_move}:
    - bat-dg2-oem2:       NOTRUN -> [SKIP][3] +2 other tests skip
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10264/bat-dg2-oem2/igt@kms_psr@psr_cursor_plane_move.html

  
Known issues
------------

  Here are the changes found in XEIGTPW_10264_BAT that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@kms_cursor_legacy@basic-flip-after-cursor-atomic:
    - bat-adlp-7:         [PASS][4] -> [FAIL][5] ([i915#2346])
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7601/bat-adlp-7/igt@kms_cursor_legacy@basic-flip-after-cursor-atomic.html
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10264/bat-adlp-7/igt@kms_cursor_legacy@basic-flip-after-cursor-atomic.html

  * igt@kms_flip@basic-flip-vs-wf_vblank@d-dp3:
    - bat-dg2-oem2:       [PASS][6] -> [FAIL][7] ([Intel XE#906]) +1 other test fail
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7601/bat-dg2-oem2/igt@kms_flip@basic-flip-vs-wf_vblank@d-dp3.html
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10264/bat-dg2-oem2/igt@kms_flip@basic-flip-vs-wf_vblank@d-dp3.html

  * igt@kms_flip@basic-flip-vs-wf_vblank@d-edp1:
    - bat-adlp-7:         [PASS][8] -> [FAIL][9] ([Intel XE#480]) +1 other test fail
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7601/bat-adlp-7/igt@kms_flip@basic-flip-vs-wf_vblank@d-edp1.html
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10264/bat-adlp-7/igt@kms_flip@basic-flip-vs-wf_vblank@d-edp1.html

  * igt@kms_pipe_crc_basic@compare-crc-sanitycheck-nv12@pipe-d-dp-3:
    - bat-dg2-oem2:       NOTRUN -> [FAIL][10] ([Intel XE#400] / [Intel XE#616])
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10264/bat-dg2-oem2/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-nv12@pipe-d-dp-3.html

  * igt@xe_exec_fault_mode@many-basic:
    - bat-dg2-oem2:       NOTRUN -> [SKIP][11] ([Intel XE#288]) +17 other tests skip
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10264/bat-dg2-oem2/igt@xe_exec_fault_mode@many-basic.html

  
#### Possible fixes ####

  * igt@kms_pipe_crc_basic@hang-read-crc:
    - bat-dg2-oem2:       [INCOMPLETE][12] ([Intel XE#282] / [Intel XE#749]) -> [PASS][13]
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7601/bat-dg2-oem2/igt@kms_pipe_crc_basic@hang-read-crc.html
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10264/bat-dg2-oem2/igt@kms_pipe_crc_basic@hang-read-crc.html

  * igt@kms_pipe_crc_basic@hang-read-crc@pipe-a-dp-3:
    - bat-dg2-oem2:       [INCOMPLETE][14] ([Intel XE#282] / [Intel XE#545]) -> [PASS][15]
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7601/bat-dg2-oem2/igt@kms_pipe_crc_basic@hang-read-crc@pipe-a-dp-3.html
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10264/bat-dg2-oem2/igt@kms_pipe_crc_basic@hang-read-crc@pipe-a-dp-3.html

  
#### Warnings ####

  * igt@kms_frontbuffer_tracking@basic:
    - bat-adlp-7:         [DMESG-FAIL][16] ([Intel XE#282] / [i915#2017]) -> [FAIL][17] ([Intel XE#616] / [Intel XE#750])
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7601/bat-adlp-7/igt@kms_frontbuffer_tracking@basic.html
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10264/bat-adlp-7/igt@kms_frontbuffer_tracking@basic.html

  * igt@kms_pipe_crc_basic@compare-crc-sanitycheck-nv12:
    - bat-dg2-oem2:       [TIMEOUT][18] ([Intel XE#430] / [Intel XE#530]) -> [FAIL][19] ([Intel XE#400] / [Intel XE#616])
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7601/bat-dg2-oem2/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-nv12.html
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10264/bat-dg2-oem2/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-nv12.html

  * igt@kms_pipe_crc_basic@compare-crc-sanitycheck-nv12@pipe-b-dp-3:
    - bat-dg2-oem2:       [TIMEOUT][20] ([Intel XE#530]) -> [FAIL][21] ([Intel XE#400] / [Intel XE#616])
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7601/bat-dg2-oem2/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-nv12@pipe-b-dp-3.html
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10264/bat-dg2-oem2/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-nv12@pipe-b-dp-3.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [Intel XE#282]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/282
  [Intel XE#288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/288
  [Intel XE#400]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/400
  [Intel XE#430]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/430
  [Intel XE#480]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/480
  [Intel XE#530]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/530
  [Intel XE#545]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/545
  [Intel XE#616]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/616
  [Intel XE#749]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/749
  [Intel XE#750]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/750
  [Intel XE#906]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/906
  [i915#2017]: https://gitlab.freedesktop.org/drm/intel/issues/2017
  [i915#2346]: https://gitlab.freedesktop.org/drm/intel/issues/2346


Build changes
-------------

  * IGT: IGT_7601 -> IGTPW_10264

  IGTPW_10264: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/index.html
  IGT_7601: 9c6e7f255724e327627be7c8ed30e23742e97386 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-518-1832821c7e4c5bd24353183f060f1435b2eb7992: 1832821c7e4c5bd24353183f060f1435b2eb7992

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10264/index.html

[-- Attachment #2: Type: text/html, Size: 8559 bytes --]

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [igt-dev] [i-g-t 0/5] Optimize kms tesplan documentation
  2023-11-24  9:35 [igt-dev] [i-g-t 0/5] Optimize kms tesplan documentation Bhanuprakash Modem
                   ` (6 preceding siblings ...)
  2023-11-24 13:24 ` [igt-dev] ✗ CI.xeBAT: failure " Patchwork
@ 2023-11-24 14:37 ` Sharma, Swati2
  2023-11-25 14:33 ` [igt-dev] ✗ Fi.CI.IGT: failure for Optimize kms tesplan documentation (rev4) Patchwork
  8 siblings, 0 replies; 15+ messages in thread
From: Sharma, Swati2 @ 2023-11-24 14:37 UTC (permalink / raw)
  To: Bhanuprakash Modem, igt-dev

The whole series LGTM

Signed-off-by: Swati Sharma <swati2.sharma@intel.com>

On 24-Nov-23 3:05 PM, Bhanuprakash Modem wrote:
> Optimizations:
> - Move common stuff to TEST level
> - Move documentation to beginning of the file
> - Align Mega features to internal tools
> - Avoid duplicate names on Mega feature vs Functionality
> 
> V2: Rebase
> 
> Bhanuprakash Modem (5):
>    tests/kms/testplan: Move testplan documentation to beginning of the
>      file
>    tests/kms/testplan: Regroup testplan documentation
>    tests/kms/testplan: Optimize KMS testplan documentation
>    tests/kms/testplan: Fix Mega Feature in testplan documentation
>    tests/kms/testplan: Avoid duplicate names on Mega feature vs
>      Functionality
> 
>   tests/chamelium/kms_chamelium_audio.c  |   68 +-
>   tests/chamelium/kms_chamelium_color.c  |   59 +-
>   tests/chamelium/kms_chamelium_edid.c   |  181 +-
>   tests/chamelium/kms_chamelium_frames.c |  181 +-
>   tests/chamelium/kms_chamelium_hpd.c    |  362 +-
>   tests/intel/kms_big_fb.c               |  275 +-
>   tests/intel/kms_big_joiner.c           |   42 +-
>   tests/intel/kms_busy.c                 |   90 +-
>   tests/intel/kms_ccs.c                  |   16 +-
>   tests/intel/kms_cdclk.c                |   41 +-
>   tests/intel/kms_dirtyfb.c              |   24 +-
>   tests/intel/kms_draw_crc.c             |   72 +-
>   tests/intel/kms_dsc.c                  |    9 +-
>   tests/intel/kms_fb_coherency.c         |   21 +-
>   tests/intel/kms_fbcon_fbt.c            |   26 +-
>   tests/intel/kms_fence_pin_leak.c       |   11 +-
>   tests/intel/kms_flip_scaled_crc.c      |   71 +-
>   tests/intel/kms_flip_tiling.c          |   11 +-
>   tests/intel/kms_frontbuffer_tracking.c | 5746 +++++++++++-------------
>   tests/intel/kms_legacy_colorkey.c      |   18 +-
>   tests/intel/kms_mmap_write_crc.c       |   13 +-
>   tests/intel/kms_pipe_b_c_ivb.c         |   29 +-
>   tests/intel/kms_pm_backlight.c         |   33 +-
>   tests/intel/kms_pm_dc.c                |   43 +-
>   tests/intel/kms_pm_lpsp.c              |   20 +-
>   tests/intel/kms_pm_rpm.c               |    4 +
>   tests/intel/kms_psr.c                  |  155 +-
>   tests/intel/kms_psr2_sf.c              |   49 +-
>   tests/intel/kms_psr2_su.c              |   20 +-
>   tests/intel/kms_psr_stress_test.c      |   22 +-
>   tests/intel/kms_pwrite_crc.c           |   10 +-
>   tests/kms_3d.c                         |    9 +-
>   tests/kms_addfb_basic.c                |  356 +-
>   tests/kms_async_flips.c                |   82 +-
>   tests/kms_atomic.c                     |  141 +-
>   tests/kms_atomic_interruptible.c       |   88 +-
>   tests/kms_atomic_transition.c          |  157 +-
>   tests/kms_bw.c                         |   19 +-
>   tests/kms_color.c                      |  124 +-
>   tests/kms_concurrent.c                 |    9 +-
>   tests/kms_content_protection.c         |  120 +-
>   tests/kms_cursor_crc.c                 |  131 +-
>   tests/kms_cursor_edge_walk.c           |   20 +-
>   tests/kms_cursor_legacy.c              |  426 +-
>   tests/kms_display_modes.c              |   34 +-
>   tests/kms_dither.c                     |   28 +-
>   tests/kms_dp_aux_dev.c                 |   11 +-
>   tests/kms_feature_discovery.c          |   43 +-
>   tests/kms_flip.c                       |  229 +-
>   tests/kms_flip_event_leak.c            |   10 +-
>   tests/kms_force_connector_basic.c      |   52 +-
>   tests/kms_getfb.c                      |  139 +-
>   tests/kms_hdmi_inject.c                |   25 +-
>   tests/kms_hdr.c                        |  106 +-
>   tests/kms_invalid_mode.c               |    9 +-
>   tests/kms_lease.c                      |   88 +-
>   tests/kms_multipipe_modeset.c          |    7 +-
>   tests/kms_panel_fitting.c              |   23 +-
>   tests/kms_pipe_crc_basic.c             |  120 +-
>   tests/kms_plane.c                      |  114 +-
>   tests/kms_plane_alpha_blend.c          |   82 +-
>   tests/kms_plane_cursor.c               |   20 +-
>   tests/kms_plane_lowres.c               |   47 +-
>   tests/kms_plane_multiple.c             |   51 +-
>   tests/kms_plane_scaling.c              |  400 +-
>   tests/kms_prime.c                      |   26 +-
>   tests/kms_prop_blob.c                  |   84 +-
>   tests/kms_properties.c                 |   43 +-
>   tests/kms_rmfb.c                       |   25 +-
>   tests/kms_rotation_crc.c               |  202 +-
>   tests/kms_scaling_modes.c              |   13 +-
>   tests/kms_selftest.c                   |   13 +-
>   tests/kms_sequence.c                   |   56 +-
>   tests/kms_setmode.c                    |   40 +-
>   tests/kms_sysfs_edid_timing.c          |   12 +-
>   tests/kms_tiled_display.c              |   10 +-
>   tests/kms_tv_load_detect.c             |    7 +-
>   tests/kms_universal_plane.c            |   33 +-
>   tests/kms_vblank.c                     |   61 +-
>   tests/kms_vrr.c                        |   33 +-
>   tests/kms_writeback.c                  |   43 +-
>   tests/testdisplay.c                    |   12 +-
>   82 files changed, 5026 insertions(+), 6729 deletions(-)
> 
> --
> 2.40.0
> 

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [igt-dev] [i-g-t 1/5] tests/kms/testplan: Move testplan documentation to beginning of the file
  2023-11-24  9:35 ` [igt-dev] [i-g-t 1/5] tests/kms/testplan: Move testplan documentation to beginning of the file Bhanuprakash Modem
@ 2023-11-24 17:07   ` Sharma, Swati2
  0 siblings, 0 replies; 15+ messages in thread
From: Sharma, Swati2 @ 2023-11-24 17:07 UTC (permalink / raw)
  To: Bhanuprakash Modem, igt-dev

LGTM

Reviewed-by: Swati Sharma <swati2.sharma@intel.com>

On 24-Nov-23 3:05 PM, Bhanuprakash Modem wrote:
> To maintain the uniformness, move testplan documentation
> to beginning of the file.
> 
> Move TEST block to before the #includes, and SUBTEST block
> to after the #includes.
> 
> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> ---
>   tests/chamelium/kms_chamelium_audio.c  |   74 +-
>   tests/chamelium/kms_chamelium_color.c  |   59 +-
>   tests/chamelium/kms_chamelium_edid.c   |  199 +-
>   tests/chamelium/kms_chamelium_frames.c |  208 +-
>   tests/chamelium/kms_chamelium_hpd.c    |  425 +-
>   tests/intel/kms_big_fb.c               |  320 +-
>   tests/intel/kms_big_joiner.c           |   50 +-
>   tests/intel/kms_busy.c                 |  108 +-
>   tests/intel/kms_ccs.c                  |    1 +
>   tests/intel/kms_cdclk.c                |   49 +-
>   tests/intel/kms_dirtyfb.c              |   24 +-
>   tests/intel/kms_draw_crc.c             |   81 +-
>   tests/intel/kms_dsc.c                  |    1 +
>   tests/intel/kms_fb_coherency.c         |   21 +-
>   tests/intel/kms_fbcon_fbt.c            |   12 +-
>   tests/intel/kms_fence_pin_leak.c       |   11 +-
>   tests/intel/kms_flip_scaled_crc.c      |    1 +
>   tests/intel/kms_flip_tiling.c          |   11 +-
>   tests/intel/kms_frontbuffer_tracking.c | 7361 ++++++++++++------------
>   tests/intel/kms_legacy_colorkey.c      |   10 +-
>   tests/intel/kms_mmap_write_crc.c       |   13 +-
>   tests/intel/kms_pipe_b_c_ivb.c         |    7 +-
>   tests/intel/kms_pm_backlight.c         |   11 +-
>   tests/intel/kms_pm_dc.c                |   10 +-
>   tests/intel/kms_pm_lpsp.c              |   11 +-
>   tests/intel/kms_psr.c                  |   68 +-
>   tests/intel/kms_psr2_sf.c              |   13 +-
>   tests/intel/kms_psr2_su.c              |   11 +-
>   tests/intel/kms_psr_stress_test.c      |   10 +-
>   tests/intel/kms_pwrite_crc.c           |   10 +-
>   tests/kms_3d.c                         |    9 +-
>   tests/kms_addfb_basic.c                |  411 +-
>   tests/kms_async_flips.c                |  100 +-
>   tests/kms_atomic.c                     |  176 +-
>   tests/kms_atomic_interruptible.c       |  100 +-
>   tests/kms_atomic_transition.c          |  179 +-
>   tests/kms_bw.c                         |   11 +-
>   tests/kms_color.c                      |  140 +-
>   tests/kms_concurrent.c                 |    9 +-
>   tests/kms_content_protection.c         |  141 +-
>   tests/kms_cursor_crc.c                 |  141 +-
>   tests/kms_cursor_edge_walk.c           |   13 +-
>   tests/kms_cursor_legacy.c              |  493 +-
>   tests/kms_display_modes.c              |   37 +-
>   tests/kms_dither.c                     |   32 +-
>   tests/kms_dp_aux_dev.c                 |   11 +-
>   tests/kms_feature_discovery.c          |   22 +-
>   tests/kms_flip.c                       |   93 +-
>   tests/kms_flip_event_leak.c            |   10 +-
>   tests/kms_force_connector_basic.c      |   62 +-
>   tests/kms_getfb.c                      |  161 +-
>   tests/kms_hdmi_inject.c                |   14 +-
>   tests/kms_hdr.c                        |  127 +-
>   tests/kms_invalid_mode.c               |    1 +
>   tests/kms_multipipe_modeset.c          |    7 +-
>   tests/kms_panel_fitting.c              |   11 +-
>   tests/kms_pipe_crc_basic.c             |  149 +-
>   tests/kms_plane.c                      |  131 +-
>   tests/kms_plane_alpha_blend.c          |   94 +-
>   tests/kms_plane_cursor.c               |    8 +-
>   tests/kms_plane_lowres.c               |   50 +-
>   tests/kms_plane_multiple.c             |   54 +-
>   tests/kms_plane_scaling.c              |  476 +-
>   tests/kms_prime.c                      |   11 +-
>   tests/kms_prop_blob.c                  |   96 +-
>   tests/kms_properties.c                 |   39 +-
>   tests/kms_rmfb.c                       |   13 +-
>   tests/kms_rotation_crc.c               |  237 +-
>   tests/kms_scaling_modes.c              |    7 +-
>   tests/kms_selftest.c                   |    9 +-
>   tests/kms_sequence.c                   |   60 +-
>   tests/kms_setmode.c                    |   13 +-
>   tests/kms_sysfs_edid_timing.c          |   12 +-
>   tests/kms_tiled_display.c              |    1 +
>   tests/kms_tv_load_detect.c             |    7 +-
>   tests/kms_universal_plane.c            |   14 +-
>   tests/kms_vblank.c                     |   31 +-
>   tests/kms_vrr.c                        |   11 +-
>   tests/kms_writeback.c                  |   17 +-
>   tests/testdisplay.c                    |   12 +-
>   80 files changed, 6697 insertions(+), 6556 deletions(-)
> 
> diff --git a/tests/chamelium/kms_chamelium_audio.c b/tests/chamelium/kms_chamelium_audio.c
> index 34ba0cb64..f86610861 100644
> --- a/tests/chamelium/kms_chamelium_audio.c
> +++ b/tests/chamelium/kms_chamelium_audio.c
> @@ -24,14 +24,48 @@
>    *    Lyude Paul <lyude@redhat.com>
>    */
>   
> +/**
> + * TEST: kms chamelium audio
> + * Category: Display
> + * Description: Testing Audio with a Chamelium board
> + */
> +
>   #include "igt_eld.h"
>   #include "igt_infoframe.h"
>   #include "kms_chamelium_helper.h"
>   
>   /**
> - * TEST: kms chamelium audio
> - * Category: Display
> - * Description: Testing Audio with a Chamelium board
> + * SUBTEST: dp-audio
> + * Description: Playback various audio signals with various audio formats/rates,
> + *              capture them and check they are correct
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, dp_audio
> + * Mega feature: Audio, DP
> + * Test category: functionality test
> + *
> + * SUBTEST: hdmi-audio
> + * Description: Playback various audio signals with various audio formats/rates,
> + *              capture them and check they are correct
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, hdmi_audio
> + * Mega feature: Audio, HDMI
> + * Test category: functionality test
> + *
> + * SUBTEST: dp-audio-edid
> + * Description: Plug a connector with an EDID suitable for audio, check ALSA's
> + *              EDID-Like Data reports the correct audio parameters
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, dp_audio
> + * Mega feature: Audio, DP
> + * Test category: functionality test
> + *
> + * SUBTEST: hdmi-audio-edid
> + * Description: Plug a connector with an EDID suitable for audio, check ALSA's
> + *              EDID-Like Data reports the correct audio parameters
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, hdmi_audio
> + * Mega feature: Audio, HDMI
> + * Test category: functionality test
>    */
>   
>   /* Playback parameters control the audio signal we synthesize and send */
> @@ -675,23 +709,6 @@ static bool check_audio_configuration(struct alsa *alsa,
>   	return true;
>   }
>   
> -/**
> - * SUBTEST: dp-audio
> - * Description: Playback various audio signals with various audio formats/rates,
> - *              capture them and check they are correct
> - * Functionality: chamelium, dp_audio
> - * Mega feature: Audio, DP
> - * Test category: functionality test
> - * Driver requirement: i915, xe
> - *
> - * SUBTEST: hdmi-audio
> - * Description: Playback various audio signals with various audio formats/rates,
> - *              capture them and check they are correct
> - * Functionality: chamelium, hdmi_audio
> - * Mega feature: Audio, HDMI
> - * Test category: functionality test
> - * Driver requirement: i915, xe
> - */
>   static const char test_display_audio_desc[] =
>   	"Playback various audio signals with various audio formats/rates, "
>   	"capture them and check they are correct";
> @@ -786,23 +803,6 @@ static void test_display_audio(chamelium_data_t *data,
>   	free(alsa);
>   }
>   
> -/**
> - * SUBTEST: dp-audio-edid
> - * Description: Plug a connector with an EDID suitable for audio, check ALSA's
> - *              EDID-Like Data reports the correct audio parameters
> - * Functionality: chamelium, dp_audio
> - * Mega feature: Audio, DP
> - * Test category: functionality test
> - * Driver requirement: i915, xe
> - *
> - * SUBTEST: hdmi-audio-edid
> - * Description: Plug a connector with an EDID suitable for audio, check ALSA's
> - *              EDID-Like Data reports the correct audio parameters
> - * Functionality: chamelium, hdmi_audio
> - * Mega feature: Audio, HDMI
> - * Test category: functionality test
> - * Driver requirement: i915, xe
> - */
>   static const char test_display_audio_edid_desc[] =
>   	"Plug a connector with an EDID suitable for audio, check ALSA's "
>   	"EDID-Like Data reports the correct audio parameters";
> diff --git a/tests/chamelium/kms_chamelium_color.c b/tests/chamelium/kms_chamelium_color.c
> index 0a9788214..6123e8a5f 100644
> --- a/tests/chamelium/kms_chamelium_color.c
> +++ b/tests/chamelium/kms_chamelium_color.c
> @@ -30,16 +30,43 @@
>   
>   #include "kms_color_helper.h"
>   
> -IGT_TEST_DESCRIPTION("Test Color Features at Pipe level using Chamelium to verify instead of CRC");
> -
>   /**
>    * SUBTEST: degamma
>    * Description: Verify that degamma LUT transformation works correctly
> + * Driver requirement: i915, xe
>    * Functionality: chamelium, colorspace
>    * Mega feature: Color mgmt
>    * Test category: functionality test
> + *
> + * SUBTEST: gamma
> + * Description: Verify that gamma LUT transformation works correctly
>    * Driver requirement: i915, xe
> + * Functionality: chamelium, colorspace
> + * Mega feature: Color mgmt
> + * Test category: functionality test
> + *
> + * SUBTEST: ctm-%s
> + * Description: Check the color transformation %arg[1]
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, colorspace
> + * Mega feature: Color mgmt
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @0-25:            for 0.25 transparancy
> + * @0-50:            for 0.50 transparancy
> + * @0-75:            for 0.75 transparancy
> + * @blue-to-red:     from blue to red
> + * @green-to-red:    from green to red
> + * @limited-range:   with identity matrix
> + * @max:             for max transparancy
> + * @negative:        for negative transparancy
> + * @red-to-blue:     from red to blue
>    */
> +
> +IGT_TEST_DESCRIPTION("Test Color Features at Pipe level using Chamelium to verify instead of CRC");
> +
>   /*
>    * Draw 3 gradient rectangles in red, green and blue, with a maxed out
>    * degamma LUT and verify we have the same frame dump as drawing solid color
> @@ -129,14 +156,6 @@ static bool test_pipe_degamma(data_t *data,
>   	return ret;
>   }
>   
> -/**
> - * SUBTEST: gamma
> - * Description: Verify that gamma LUT transformation works correctly
> - * Functionality: chamelium, colorspace
> - * Mega feature: Color mgmt
> - * Test category: functionality test
> - * Driver requirement: i915, xe
> - */
>   /*
>    * Draw 3 gradient rectangles in red, green and blue, with a maxed out
>    * gamma LUT and verify we have the same frame dump as drawing solid
> @@ -487,26 +506,6 @@ run_gamma_degamma_tests_for_pipe(data_t *data, enum pipe p,
>   		igt_assert(test_t(data, data->primary, data->ports[port_idx]));
>   }
>   
> -/**
> - * SUBTEST: ctm-%s
> - * Description: Check the color transformation %arg[1]
> - * Functionality: chamelium, colorspace
> - * Mega feature: Color mgmt
> - * Test category: functionality test
> - * Driver requirement: i915, xe
> - *
> - * arg[1]:
> - *
> - * @0-25:            for 0.25 transparancy
> - * @0-50:            for 0.50 transparancy
> - * @0-75:            for 0.75 transparancy
> - * @blue-to-red:     from blue to red
> - * @green-to-red:    from green to red
> - * @limited-range:   with identity matrix
> - * @max:             for max transparancy
> - * @negative:        for negative transparancy
> - * @red-to-blue:     from red to blue
> - */
>   static void
>   run_ctm_tests_for_pipe(data_t *data, enum pipe p,
>   		       color_t *expected_colors,
> diff --git a/tests/chamelium/kms_chamelium_edid.c b/tests/chamelium/kms_chamelium_edid.c
> index de8e51a04..f3f0b1e50 100644
> --- a/tests/chamelium/kms_chamelium_edid.c
> +++ b/tests/chamelium/kms_chamelium_edid.c
> @@ -48,6 +48,106 @@
>   #include "monitor_edids/hdmi_edids.h"
>   #include "monitor_edids/monitor_edids_helper.h"
>   
> +/**
> + * SUBTEST: dp-edid-read
> + * Description: Make sure the EDID exposed by KMS is the same as the screen's
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + * Functionality: chamelium, dp_edid
> + * Mega feature: DP
> + *
> + * SUBTEST: hdmi-edid-read
> + * Description: Make sure the EDID exposed by KMS is the same as the screen's
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + * Functionality: chamelium, hdmi_edid
> + * Mega feature: HDMI
> + *
> + * SUBTEST: vga-edid-read
> + * Description: Make sure the EDID exposed by KMS is the same as the screen's
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + * Functionality: chamelium, vga_edid
> + * Mega feature: VGA
> + *
> + * SUBTEST: dp-edid-resolution-list
> + * Description: Get an EDID with many modes of different configurations, set
> + *              them on the screen and check the screen resolution matches the
> + *              mode resolution.
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, dp_edid
> + * Mega feature: DP
> + * Test category: functionality test
> + *
> + * SUBTEST: dp-mode-timings
> + * Description: For each mode of the IGT base EDID, perform a modeset and check
> + *              the mode detected by the Chamelium receiver matches the mode we
> + *              set
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, dp_edid
> + * Mega feature: DP
> + * Test category: functionality test
> + *
> + * SUBTEST: hdmi-mode-timings
> + * Description: For each mode of the IGT base EDID, perform a modeset and check
> + *              the mode detected by the Chamelium receiver matches the mode we
> + *              set
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, dp_edid
> + * Mega feature: DP
> + * Test category: functionality test
> + */
> +
> +/**
> + * SUBTEST: dp-edid-stress-resolution-%s
> + * Description: Stress test the DUT by testing multiple EDIDs, one right after
> + *              the other, and ensure their validity by check the real screen
> + *              resolution vs the advertised mode (%arg[1]) resolution.
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, dp_edid
> + * Mega feature: DP
> + * Test category: functionality test
> + *
> + * SUBTEST: hdmi-edid-stress-resolution-%s
> + * Description: Stress test the DUT by testing multiple EDIDs, one right after
> + *              the other, and ensure their validity by check the real screen
> + *              resolution vs the advertised mode (%arg[1]) resolution.
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, hdmi_edid
> + * Mega feature: HDMI
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @4k:      4K
> + * @non-4k:  Non 4K
> + */
> +
> +/**
> + * SUBTEST: dp-edid-change-during-%s
> + * Description: Simulate a screen being unplugged and another screen being
> + *              plugged during suspend, check that a uevent is sent and
> + *              connector status is updated during %arg[1]
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, dp_edid
> + * Mega feature: DP
> + * Test category: functionality test
> + *
> + * SUBTEST: hdmi-edid-change-during-%s
> + * Description: Simulate a screen being unplugged and another screen being
> + *              plugged during suspend, check that a uevent is sent and
> + *              connector status is updated during %arg[1]
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, dp_edid
> + * Mega feature: DP
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @hibernate:    hibernation
> + * @suspend:      suspend
> + */
> +
>   #define MODE_CLOCK_ACCURACY 0.05 /* 5% */
>   
>   static void get_connectors_link_status_failed(chamelium_data_t *data,
> @@ -145,28 +245,6 @@ static void check_mode(struct chamelium *chamelium, struct chamelium_port *port,
>   	igt_assert(video_params.vsync_polarity == mode_vsync_polarity);
>   }
>   
> -/**
> - * SUBTEST: dp-edid-read
> - * Description: Make sure the EDID exposed by KMS is the same as the screen's
> - * Test category: functionality test
> - * Functionality: chamelium, dp_edid
> - * Mega feature: DP
> - * Driver requirement: i915, xe
> - *
> - * SUBTEST: hdmi-edid-read
> - * Description: Make sure the EDID exposed by KMS is the same as the screen's
> - * Test category: functionality test
> - * Functionality: chamelium, hdmi_edid
> - * Mega feature: HDMI
> - * Driver requirement: i915, xe
> - *
> - * SUBTEST: vga-edid-read
> - * Description: Make sure the EDID exposed by KMS is the same as the screen's
> - * Test category: functionality test
> - * Functionality: chamelium, vga_edid
> - * Mega feature: VGA
> - * Driver requirement: i915, xe
> - */
>   static const char igt_custom_edid_type_read_desc[] =
>   	"Make sure the EDID exposed by KMS is the same as the screen's";
>   static void igt_custom_edid_type_read(chamelium_data_t *data,
> @@ -206,30 +284,6 @@ static void igt_custom_edid_type_read(chamelium_data_t *data,
>   	drmModeFreeConnector(connector);
>   }
>   
> -/**
> - * SUBTEST: dp-edid-stress-resolution-%s
> - * Description: Stress test the DUT by testing multiple EDIDs, one right after
> - *              the other, and ensure their validity by check the real screen
> - *              resolution vs the advertised mode (%arg[1]) resolution.
> - * Test category: functionality test
> - * Functionality: chamelium, dp_edid
> - * Mega feature: DP
> - * Driver requirement: i915, xe
> - *
> - * SUBTEST: hdmi-edid-stress-resolution-%s
> - * Description: Stress test the DUT by testing multiple EDIDs, one right after
> - *              the other, and ensure their validity by check the real screen
> - *              resolution vs the advertised mode (%arg[1]) resolution.
> - * Test category: functionality test
> - * Functionality: chamelium, hdmi_edid
> - * Mega feature: HDMI
> - * Driver requirement: i915, xe
> - *
> - * arg[1]:
> - *
> - * @4k:      4K
> - * @non-4k:  Non 4K
> - */
>   static const char igt_edid_stress_resolution_desc[] =
>   	"Stress test the DUT by testing multiple EDIDs, one right after the other, "
>   	"and ensure their validity by check the real screen resolution vs the "
> @@ -299,16 +353,6 @@ static void edid_stress_resolution(chamelium_data_t *data,
>   			      data->ports, data->port_count);
>   }
>   
> -/**
> - * SUBTEST: dp-edid-resolution-list
> - * Description: Get an EDID with many modes of different configurations, set
> - *              them on the screen and check the screen resolution matches the
> - *              mode resolution.
> - * Test category: functionality test
> - * Functionality: chamelium, dp_edid
> - * Mega feature: DP
> - * Driver requirement: i915, xe
> - */
>   static const char igt_edid_resolution_list_desc[] =
>   	"Get an EDID with many modes of different configurations, set them on the screen and check the"
>   	" screen resolution matches the mode resolution.";
> @@ -372,30 +416,6 @@ static void edid_resolution_list(chamelium_data_t *data,
>   	drmModeFreeConnector(connector);
>   }
>   
> -/**
> - * SUBTEST: dp-edid-change-during-%s
> - * Description: Simulate a screen being unplugged and another screen being
> - *              plugged during suspend, check that a uevent is sent and
> - *              connector status is updated during %arg[1]
> - * Test category: functionality test
> - * Functionality: chamelium, dp_edid
> - * Mega feature: DP
> - * Driver requirement: i915, xe
> - *
> - * SUBTEST: hdmi-edid-change-during-%s
> - * Description: Simulate a screen being unplugged and another screen being
> - *              plugged during suspend, check that a uevent is sent and
> - *              connector status is updated during %arg[1]
> - * Test category: functionality test
> - * Functionality: chamelium, dp_edid
> - * Mega feature: DP
> - * Driver requirement: i915, xe
> - *
> - * arg[1]:
> - *
> - * @hibernate:    hibernation
> - * @suspend:      suspend
> - */
>   static const char test_suspend_resume_edid_change_desc[] =
>   	"Simulate a screen being unplugged and another screen being plugged "
>   	"during suspend, check that a uevent is sent and connector status is "
> @@ -448,25 +468,6 @@ static void test_suspend_resume_edid_change(chamelium_data_t *data,
>   			    link_status_failed[1][p]);
>   }
>   
> -/**
> - * SUBTEST: dp-mode-timings
> - * Description: For each mode of the IGT base EDID, perform a modeset and check
> - *              the mode detected by the Chamelium receiver matches the mode we
> - *              set
> - * Test category: functionality test
> - * Functionality: chamelium, dp_edid
> - * Mega feature: DP
> - * Driver requirement: i915, xe
> - *
> - * SUBTEST: hdmi-mode-timings
> - * Description: For each mode of the IGT base EDID, perform a modeset and check
> - *              the mode detected by the Chamelium receiver matches the mode we
> - *              set
> - * Test category: functionality test
> - * Functionality: chamelium, dp_edid
> - * Mega feature: DP
> - * Driver requirement: i915, xe
> - */
>   static const char test_mode_timings_desc[] =
>   	"For each mode of the IGT base EDID, perform a modeset and check the "
>   	"mode detected by the Chamelium receiver matches the mode we set";
> diff --git a/tests/chamelium/kms_chamelium_frames.c b/tests/chamelium/kms_chamelium_frames.c
> index a313cd433..490ab3fe9 100644
> --- a/tests/chamelium/kms_chamelium_frames.c
> +++ b/tests/chamelium/kms_chamelium_frames.c
> @@ -29,10 +29,114 @@
>    * Category: Display
>    * Description: Tests requiring a Chamelium board
>    */
> +
>   #include "igt_eld.h"
>   #include "igt_infoframe.h"
>   #include "kms_chamelium_helper.h"
>   
> +/**
> + * SUBTEST: dp-crc-fast
> + * Description: Pick the first mode of the IGT base EDID, display and capture
> + * 		a few frames, then check captured frames are correct
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, frame_integrity
> + * Mega feature: DP
> + * Test category: functionality test
> + *
> + * SUBTEST: hdmi-crc-fast
> + * Description: Pick the first mode of the IGT base EDID, display and capture
> + * 		a few frames, then check captured frames are correct
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, frame_integrity
> + * Mega feature: HDMI
> + * Test category: functionality test
> + *
> + * SUBTEST: hdmi-%s-formats
> + * Description: Pick the first mode of the IGT base EDID, display and capture a
> + *              few frames, then check captured frames are correct
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, frame_integrity
> + * Mega feature: HDMI
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @crc-nonplanar:     CRC with non planar formats
> + * @cmp-planar:        Compare with planar formats
> + */
> +
> +/**
> + * SUBTEST: vga-frame-dump
> + * Description: For each mode of the IGT base EDID, display and capture a few
> + *              frames, then check captured frames are correct
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, frame_integrity
> + * Mega feature: VGA
> + * Test category: functionality test
> + *
> + * SUBTEST: dp-crc-%s
> + * Description: For each mode of the IGT base EDID, display and capture a %arg[1]
> + *              frame(s), then check captured frame(s) are correct
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, frame_integrity
> + * Mega feature: DP
> + * Test category: functionality test
> + *
> + * SUBTEST: hdmi-crc-%s
> + * Description: For each mode of the IGT base EDID, display and capture a %arg[1]
> + *              frame(s), then check captured frame(s) are correct
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, frame_integrity
> + * Mega feature: HDMI
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @single:    single
> + * @multiple:  multiple
> + */
> +
> +/**
> + * SUBTEST: dp-frame-dump
> + * Description: For each mode of the IGT base EDID, display and capture a few
> + *              frames, then download the captured frames and compare them
> + *              bit-by-bit to the sent ones
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, frame_integrity
> + * Mega feature: DP
> + * Test category: functionality test
> + *
> + * SUBTEST: hdmi-frame-dump
> + * Description: For each mode of the IGT base EDID, display and capture a few
> + *              frames, then download the captured frames and compare them
> + *              bit-by-bit to the sent ones
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, frame_integrity
> + * Mega feature: HDMI
> + * Test category: functionality test
> + *
> + * SUBTEST: hdmi-aspect-ratio
> + * Description: Pick a mode with a picture aspect-ratio, capture AVI InfoFrames
> + *              and check they include the relevant fields
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, frame_integrity
> + * Mega feature: HDMI
> + * Test category: functionality test
> + *
> + * SUBTEST: hdmi-%s-planes-random
> + * Description: Setup a few overlay planes with random parameters, capture the
> + *              frame and check it matches the expected output
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, frame_integrity
> + * Mega feature: HDMI
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @crc:     CRC check
> + * @cmp:     Compare
> + */
> +
>   #define connector_dynamic_subtest(name__, type__)                   \
>   	igt_subtest_with_dynamic(name__)                            \
>   	for_each_port(p, port) if (chamelium_port_get_type(port) == \
> @@ -539,38 +643,6 @@ static void prepare_randomized_plane(chamelium_data_t *data,
>   	igt_remove_fb(data->drm_fd, &pattern_fb);
>   }
>   
> -/**
> - * SUBTEST: dp-crc-fast
> - * Description: Pick the first mode of the IGT base EDID, display and capture
> - * 		a few frames, then check captured frames are correct
> - * Test category: functionality test
> - * Functionality: chamelium, frame_integrity
> - * Mega feature: DP
> - * Driver requirement: i915, xe
> - *
> - * SUBTEST: hdmi-crc-fast
> - * Description: Pick the first mode of the IGT base EDID, display and capture
> - * 		a few frames, then check captured frames are correct
> - * Test category: functionality test
> - * Functionality: chamelium, frame_integrity
> - * Mega feature: HDMI
> - * Driver requirement: i915, xe
> - */
> -
> -/**
> - * SUBTEST: hdmi-%s-formats
> - * Description: Pick the first mode of the IGT base EDID, display and capture a
> - *              few frames, then check captured frames are correct
> - * Test category: functionality test
> - * Functionality: chamelium, frame_integrity
> - * Mega feature: HDMI
> - * Driver requirement: i915, xe
> - *
> - * arg[1]:
> - *
> - * @crc-nonplanar:     CRC with non planar formats
> - * @cmp-planar:        Compare with planar formats
> - */
>   static const char test_display_one_mode_desc[] =
>   	"Pick the first mode of the IGT base EDID, display and capture a few "
>   	"frames, then check captured frames are correct";
> @@ -607,36 +679,6 @@ static void test_display_one_mode(chamelium_data_t *data,
>   	drmModeFreeConnector(connector);
>   }
>   
> -/**
> - * SUBTEST: vga-frame-dump
> - * Description: For each mode of the IGT base EDID, display and capture a few
> - *              frames, then check captured frames are correct
> - * Test category: functionality test
> - * Functionality: chamelium, frame_integrity
> - * Mega feature: VGA
> - * Driver requirement: i915, xe
> - *
> - * SUBTEST: dp-crc-%s
> - * Description: For each mode of the IGT base EDID, display and capture a %arg[1]
> - *              frame(s), then check captured frame(s) are correct
> - * Test category: functionality test
> - * Functionality: chamelium, frame_integrity
> - * Mega feature: DP
> - * Driver requirement: i915, xe
> - *
> - * SUBTEST: hdmi-crc-%s
> - * Description: For each mode of the IGT base EDID, display and capture a %arg[1]
> - *              frame(s), then check captured frame(s) are correct
> - * Test category: functionality test
> - * Functionality: chamelium, frame_integrity
> - * Mega feature: HDMI
> - * Driver requirement: i915, xe
> - *
> - * arg[1]:
> - *
> - * @single:    single
> - * @multiple:  multiple
> - */
>   static const char test_display_all_modes_desc[] =
>   	"For each mode of the IGT base EDID, display and capture a few "
>   	"frames, then check captured frames are correct";
> @@ -695,25 +737,6 @@ static void test_display_all_modes(chamelium_data_t *data,
>   	} while (++i < count_modes);
>   }
>   
> -/**
> - * SUBTEST: dp-frame-dump
> - * Description: For each mode of the IGT base EDID, display and capture a few
> - *              frames, then download the captured frames and compare them
> - *              bit-by-bit to the sent ones
> - * Test category: functionality test
> - * Functionality: chamelium, frame_integrity
> - * Mega feature: DP
> - * Driver requirement: i915, xe
> - *
> - * SUBTEST: hdmi-frame-dump
> - * Description: For each mode of the IGT base EDID, display and capture a few
> - *              frames, then download the captured frames and compare them
> - *              bit-by-bit to the sent ones
> - * Test category: functionality test
> - * Functionality: chamelium, frame_integrity
> - * Mega feature: HDMI
> - * Driver requirement: i915, xe
> - */
>   static const char test_display_frame_dump_desc[] =
>   	"For each mode of the IGT base EDID, display and capture a few "
>   	"frames, then download the captured frames and compare them "
> @@ -782,15 +805,6 @@ static void test_display_frame_dump(chamelium_data_t *data,
>   	} while (++i < count_modes);
>   }
>   
> -/**
> - * SUBTEST: hdmi-aspect-ratio
> - * Description: Pick a mode with a picture aspect-ratio, capture AVI InfoFrames
> - *              and check they include the relevant fields
> - * Test category: functionality test
> - * Functionality: chamelium, frame_integrity
> - * Mega feature: HDMI
> - * Driver requirement: i915, xe
> - */
>   static const char test_display_aspect_ratio_desc[] =
>   	"Pick a mode with a picture aspect-ratio, capture AVI InfoFrames and "
>   	"check they include the relevant fields";
> @@ -871,20 +885,6 @@ static void test_display_aspect_ratio(chamelium_data_t *data,
>   	drmModeFreeConnector(connector);
>   }
>   
> -/**
> - * SUBTEST: hdmi-%s-planes-random
> - * Description: Setup a few overlay planes with random parameters, capture the
> - *              frame and check it matches the expected output
> - * Test category: functionality test
> - * Functionality: chamelium, frame_integrity
> - * Mega feature: HDMI
> - * Driver requirement: i915, xe
> - *
> - * arg[1]:
> - *
> - * @crc:     CRC check
> - * @cmp:     Compare
> - */
>   static const char test_display_planes_random_desc[] =
>   	"Setup a few overlay planes with random parameters, capture the frame "
>   	"and check it matches the expected output";
> diff --git a/tests/chamelium/kms_chamelium_hpd.c b/tests/chamelium/kms_chamelium_hpd.c
> index f7a9422a9..360694c76 100644
> --- a/tests/chamelium/kms_chamelium_hpd.c
> +++ b/tests/chamelium/kms_chamelium_hpd.c
> @@ -32,6 +32,217 @@
>   
>   #include "kms_chamelium_helper.h"
>   
> +/**
> + * SUBTEST: dp-hpd-fast
> + * Description: Check that we get uevents and updated connector status on
> + * 		hotplug and unplug
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, hotplug
> + * Mega feature: DP
> + * Test category: functionality test
> + *
> + * SUBTEST: hdmi-hpd-fast
> + * Description: Check that we get uevents and updated connector status on
> + * 		hotplug and unplug
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, hotplug
> + * Mega feature: HDMI
> + * Test category: functionality test
> + *
> + * SUBTEST: vga-hpd-fast
> + * Description: Check that we get uevents and updated connector status on
> + * 		hotplug and unplug
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, hotplug
> + * Mega feature: VGA
> + * Test category: functionality test
> + *
> + * SUBTEST: dp-hpd
> + * Description: Check that we get uevents and updated connector status on
> + *              hotplug and unplug
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, hotplug
> + * Mega feature: DP
> + * Test category: functionality test
> + *
> + * SUBTEST: hdmi-hpd
> + * Description: Check that we get uevents and updated connector status on
> + *              hotplug and unplug
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, hotplug
> + * Mega feature: HDMI
> + * Test category: functionality test
> + *
> + * SUBTEST: vga-hpd
> + * Description: Check that we get uevents and updated connector status on
> + *              hotplug and unplug
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, hotplug
> + * Mega feature: VGA
> + * Test category: functionality test
> + *
> + * SUBTEST: dp-hpd-%s
> + * Description: Check that we get uevents and updated connector status on
> + *              hotplug and unplug
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, hotplug
> + * Mega feature: DP
> + * Test category: functionality test
> + *
> + * SUBTEST: hdmi-hpd-%s
> + * Description: Check that we get uevents and updated connector status on
> + *              hotplug and unplug
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, hotplug
> + * Mega feature: HDMI
> + * Test category: functionality test
> + *
> + * SUBTEST: vga-hpd-%s
> + * Description: Check that we get uevents and updated connector status on
> + *              hotplug and unplug
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, hotplug
> + * Mega feature: VGA
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @enable-disable-mode:     Toggle the mode
> + * @with-enabled-mode:       Enabling the mode
> + */
> +
> +/**
> + * SUBTEST: dp-hpd-for-each-pipe
> + * Description: Check that we get uevents and updated connector status on
> + *              hotplug and unplug for each pipe with valid output
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, hotplug
> + * Mega feature: DP
> + * Test category: functionality test
> + *
> + * SUBTEST: hdmi-hpd-for-each-pipe
> + * Description: Check that we get uevents and updated connector status on
> + *              hotplug and unplug for each pipe with valid output
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, hotplug
> + * Mega feature: HDMI
> + * Test category: functionality test
> + *
> + * SUBTEST: vga-hpd-for-each-pipe
> + * Description: Check that we get uevents and updated connector status on
> + *              hotplug and unplug for each pipe with valid output
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, hotplug
> + * Mega feature: VGA
> + * Test category: functionality test
> + *
> + * SUBTEST: dp-hpd-after-hibernate
> + * Description: Toggle HPD during Hibernation, check that uevents are sent and
> + *              connector status is updated
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, hotplug, hibernation
> + * Mega feature: DP
> + * Test category: functionality test
> + *
> + * SUBTEST: hdmi-hpd-after-hibernate
> + * Description: Toggle HPD during Hibernation, check that uevents are sent and
> + *              connector status is updated
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, hotplug, hibernation
> + * Mega feature: HDMI
> + * Test category: functionality test
> + *
> + * SUBTEST: vga-hpd-after-hibernate
> + * Description: Toggle HPD during Hibernation, check that uevents are sent and
> + *              connector status is updated
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, hotplug, hibernation
> + * Mega feature: VGA
> + * Test category: functionality test
> + *
> + * SUBTEST: dp-hpd-after-suspend
> + * Description: Toggle HPD during Suspend, check that uevents are sent and
> + *              connector status is updated
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, hotplug, suspend
> + * Mega feature: DP
> + * Test category: functionality test
> + *
> + * SUBTEST: hdmi-hpd-after-suspend
> + * Description: Toggle HPD during Suspend, check that uevents are sent and
> + *              connector status is updated
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, hotplug, suspend
> + * Mega feature: HDMI
> + * Test category: functionality test
> + *
> + * SUBTEST: vga-hpd-after-suspend
> + * Description: Toggle HPD during Suspend, check that uevents are sent and
> + *              connector status is updated
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, hotplug, suspend
> + * Mega feature: VGA
> + * Test category: functionality test
> + *
> + * SUBTEST: common-hpd-after-suspend
> + * Description: Toggle HPD during suspend on all connectors, check that uevents
> + * 		are sent and connector status is updated
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, hotplug, suspend
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: common-hpd-after-hibernate
> + * Description: Toggle HPD during suspend on all connectors, check that uevents
> + *              are sent and connector status is updated
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, hotplug, hibernation
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: vga-hpd-without-ddc
> + * Description: Disable DDC on a VGA connector, check we still get a uevent on
> + *              hotplug
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, hotplug
> + * Mega feature: VGA
> + * Test category: functionality test
> + *
> + * SUBTEST: dp-hpd-storm
> + * Description: Trigger a series of hotplugs in a very small timeframe to
> + *              simulate abad cable, check the kernel falls back to polling
> + *              to avoid a hotplug storm
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, hotplug
> + * Mega feature: DP
> + * Test category: functionality test
> + *
> + * SUBTEST: hdmi-hpd-storm
> + * Description: Trigger a series of hotplugs in a very small timeframe to
> + *              simulate abad cable, check the kernel falls back to polling
> + *              to avoid a hotplug storm
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, hotplug
> + * Mega feature: HDMI
> + * Test category: functionality test
> + *
> + * SUBTEST: dp-hpd-storm-disable
> + * Description: Disable HPD storm detection, trigger a storm and check the
> + *              kernel doesn't detect one
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, hotplug
> + * Mega feature: DP
> + * Test category: functionality test
> + *
> + * SUBTEST: hdmi-hpd-storm-disable
> + * Description: Disable HPD storm detection, trigger a storm and check the
> + *              kernel doesn't detect one
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, hotplug
> + * Mega feature: HDMI
> + * Test category: functionality test
> + */
> +
>   #define HPD_STORM_PULSE_INTERVAL_DP 100 /* ms */
>   #define HPD_STORM_PULSE_INTERVAL_HDMI 200 /* ms */
>   
> @@ -110,84 +321,6 @@ static void try_suspend_resume_hpd(chamelium_data_t *data,
>   	}
>   }
>   
> -/**
> - * SUBTEST: dp-hpd-fast
> - * Description: Check that we get uevents and updated connector status on
> - * 		hotplug and unplug
> - * Test category: functionality test
> - * Functionality: chamelium, hotplug
> - * Mega feature: DP
> - * Driver requirement: i915, xe
> - *
> - * SUBTEST: hdmi-hpd-fast
> - * Description: Check that we get uevents and updated connector status on
> - * 		hotplug and unplug
> - * Test category: functionality test
> - * Functionality: chamelium, hotplug
> - * Mega feature: HDMI
> - * Driver requirement: i915, xe
> - *
> - * SUBTEST: vga-hpd-fast
> - * Description: Check that we get uevents and updated connector status on
> - * 		hotplug and unplug
> - * Test category: functionality test
> - * Functionality: chamelium, hotplug
> - * Mega feature: VGA
> - * Driver requirement: i915, xe
> - *
> - * SUBTEST: dp-hpd
> - * Description: Check that we get uevents and updated connector status on
> - *              hotplug and unplug
> - * Test category: functionality test
> - * Functionality: chamelium, hotplug
> - * Mega feature: DP
> - * Driver requirement: i915, xe
> - *
> - * SUBTEST: hdmi-hpd
> - * Description: Check that we get uevents and updated connector status on
> - *              hotplug and unplug
> - * Test category: functionality test
> - * Functionality: chamelium, hotplug
> - * Mega feature: HDMI
> - * Driver requirement: i915, xe
> - *
> - * SUBTEST: vga-hpd
> - * Description: Check that we get uevents and updated connector status on
> - *              hotplug and unplug
> - * Test category: functionality test
> - * Functionality: chamelium, hotplug
> - * Mega feature: VGA
> - * Driver requirement: i915, xe
> - *
> - * SUBTEST: dp-hpd-%s
> - * Description: Check that we get uevents and updated connector status on
> - *              hotplug and unplug
> - * Test category: functionality test
> - * Functionality: chamelium, hotplug
> - * Mega feature: DP
> - * Driver requirement: i915, xe
> - *
> - * SUBTEST: hdmi-hpd-%s
> - * Description: Check that we get uevents and updated connector status on
> - *              hotplug and unplug
> - * Test category: functionality test
> - * Functionality: chamelium, hotplug
> - * Mega feature: HDMI
> - * Driver requirement: i915, xe
> - *
> - * SUBTEST: vga-hpd-%s
> - * Description: Check that we get uevents and updated connector status on
> - *              hotplug and unplug
> - * Test category: functionality test
> - * Functionality: chamelium, hotplug
> - * Mega feature: VGA
> - * Driver requirement: i915, xe
> - *
> - * arg[1]:
> - *
> - * @enable-disable-mode:     Toggle the mode
> - * @with-enabled-mode:       Enabling the mode
> - */
>   static const char test_basic_hotplug_desc[] =
>   	"Check that we get uevents and updated connector status on "
>   	"hotplug and unplug";
> @@ -254,31 +387,6 @@ static void test_hotplug(chamelium_data_t *data, struct chamelium_port *port,
>   	igt_remove_fb(data->drm_fd, &fb);
>   }
>   
> -/**
> - * SUBTEST: dp-hpd-for-each-pipe
> - * Description: Check that we get uevents and updated connector status on
> - *              hotplug and unplug for each pipe with valid output
> - * Test category: functionality test
> - * Functionality: chamelium, hotplug
> - * Mega feature: DP
> - * Driver requirement: i915, xe
> - *
> - * SUBTEST: hdmi-hpd-for-each-pipe
> - * Description: Check that we get uevents and updated connector status on
> - *              hotplug and unplug for each pipe with valid output
> - * Test category: functionality test
> - * Functionality: chamelium, hotplug
> - * Mega feature: HDMI
> - * Driver requirement: i915, xe
> - *
> - * SUBTEST: vga-hpd-for-each-pipe
> - * Description: Check that we get uevents and updated connector status on
> - *              hotplug and unplug for each pipe with valid output
> - * Test category: functionality test
> - * Functionality: chamelium, hotplug
> - * Mega feature: VGA
> - * Driver requirement: i915, xe
> - */
>   static const char test_hotplug_for_each_pipe_desc[] =
>   	"Check that we get uevents and updated connector status on "
>   	"hotplug and unplug for each pipe with valid output";
> @@ -324,55 +432,6 @@ static void test_hotplug_for_each_pipe(chamelium_data_t *data,
>   	igt_hpd_storm_reset(data->drm_fd);
>   }
>   
> -/**
> - * SUBTEST: dp-hpd-after-hibernate
> - * Description: Toggle HPD during Hibernation, check that uevents are sent and
> - *              connector status is updated
> - * Test category: functionality test
> - * Functionality: chamelium, hotplug, hibernation
> - * Mega feature: DP
> - * Driver requirement: i915, xe
> - *
> - * SUBTEST: hdmi-hpd-after-hibernate
> - * Description: Toggle HPD during Hibernation, check that uevents are sent and
> - *              connector status is updated
> - * Test category: functionality test
> - * Functionality: chamelium, hotplug, hibernation
> - * Mega feature: HDMI
> - * Driver requirement: i915, xe
> - *
> - * SUBTEST: vga-hpd-after-hibernate
> - * Description: Toggle HPD during Hibernation, check that uevents are sent and
> - *              connector status is updated
> - * Test category: functionality test
> - * Functionality: chamelium, hotplug, hibernation
> - * Mega feature: VGA
> - * Driver requirement: i915, xe
> - *
> - * SUBTEST: dp-hpd-after-suspend
> - * Description: Toggle HPD during Suspend, check that uevents are sent and
> - *              connector status is updated
> - * Test category: functionality test
> - * Functionality: chamelium, hotplug, suspend
> - * Mega feature: DP
> - * Driver requirement: i915, xe
> - *
> - * SUBTEST: hdmi-hpd-after-suspend
> - * Description: Toggle HPD during Suspend, check that uevents are sent and
> - *              connector status is updated
> - * Test category: functionality test
> - * Functionality: chamelium, hotplug, suspend
> - * Mega feature: HDMI
> - * Driver requirement: i915, xe
> - *
> - * SUBTEST: vga-hpd-after-suspend
> - * Description: Toggle HPD during Suspend, check that uevents are sent and
> - *              connector status is updated
> - * Test category: functionality test
> - * Functionality: chamelium, hotplug, suspend
> - * Mega feature: VGA
> - * Driver requirement: i915, xe
> - */
>   static const char test_suspend_resume_hpd_desc[] =
>   	"Toggle HPD during suspend, check that uevents are sent and connector "
>   	"status is updated";
> @@ -396,23 +455,6 @@ static void test_suspend_resume_hpd(chamelium_data_t *data,
>   	igt_cleanup_uevents(mon);
>   }
>   
> -/**
> - * SUBTEST: common-hpd-after-suspend
> - * Description: Toggle HPD during suspend on all connectors, check that uevents
> - * 		are sent and connector status is updated
> - * Test category: functionality test
> - * Functionality: chamelium, hotplug, suspend
> - * Mega feature: General Display Features
> - * Driver requirement: i915, xe
> - *
> - * SUBTEST: common-hpd-after-hibernate
> - * Description: Toggle HPD during suspend on all connectors, check that uevents
> - *              are sent and connector status is updated
> - * Test category: functionality test
> - * Functionality: chamelium, hotplug, hibernation
> - * Mega feature: General Display Features
> - * Driver requirement: i915, xe
> - */
>   static const char test_suspend_resume_hpd_common_desc[] =
>   	"Toggle HPD during suspend on all connectors, check that uevents are "
>   	"sent and connector status is updated";
> @@ -442,15 +484,6 @@ static void test_suspend_resume_hpd_common(chamelium_data_t *data,
>   	igt_cleanup_uevents(mon);
>   }
>   
> -/**
> - * SUBTEST: vga-hpd-without-ddc
> - * Description: Disable DDC on a VGA connector, check we still get a uevent on
> - *              hotplug
> - * Test category: functionality test
> - * Functionality: chamelium, hotplug
> - * Mega feature: VGA
> - * Driver requirement: i915, xe
> - */
>   static const char test_hpd_without_ddc_desc[] =
>   	"Disable DDC on a VGA connector, check we still get a uevent on hotplug";
>   static void test_hpd_without_ddc(chamelium_data_t *data,
> @@ -477,25 +510,6 @@ static void test_hpd_without_ddc(chamelium_data_t *data,
>   	igt_cleanup_uevents(mon);
>   }
>   
> -/**
> - * SUBTEST: dp-hpd-storm
> - * Description: Trigger a series of hotplugs in a very small timeframe to
> - *              simulate abad cable, check the kernel falls back to polling
> - *              to avoid a hotplug storm
> - * Test category: functionality test
> - * Functionality: chamelium, hotplug
> - * Mega feature: DP
> - * Driver requirement: i915, xe
> - *
> - * SUBTEST: hdmi-hpd-storm
> - * Description: Trigger a series of hotplugs in a very small timeframe to
> - *              simulate abad cable, check the kernel falls back to polling
> - *              to avoid a hotplug storm
> - * Test category: functionality test
> - * Functionality: chamelium, hotplug
> - * Mega feature: HDMI
> - * Driver requirement: i915, xe
> - */
>   static const char test_hpd_storm_detect_desc[] =
>   	"Trigger a series of hotplugs in a very small timeframe to simulate a"
>   	"bad cable, check the kernel falls back to polling to avoid a hotplug "
> @@ -530,23 +544,6 @@ static void test_hpd_storm_detect(chamelium_data_t *data,
>   	igt_hpd_storm_reset(data->drm_fd);
>   }
>   
> -/**
> - * SUBTEST: dp-hpd-storm-disable
> - * Description: Disable HPD storm detection, trigger a storm and check the
> - *              kernel doesn't detect one
> - * Test category: functionality test
> - * Functionality: chamelium, hotplug
> - * Mega feature: DP
> - * Driver requirement: i915, xe
> - *
> - * SUBTEST: hdmi-hpd-storm-disable
> - * Description: Disable HPD storm detection, trigger a storm and check the
> - *              kernel doesn't detect one
> - * Test category: functionality test
> - * Functionality: chamelium, hotplug
> - * Mega feature: HDMI
> - * Driver requirement: i915, xe
> - */
>   static const char test_hpd_storm_disable_desc[] =
>   	"Disable HPD storm detection, trigger a storm and check the kernel "
>   	"doesn't detect one";
> diff --git a/tests/intel/kms_big_fb.c b/tests/intel/kms_big_fb.c
> index 035c936d9..2fb435ff4 100644
> --- a/tests/intel/kms_big_fb.c
> +++ b/tests/intel/kms_big_fb.c
> @@ -37,6 +37,168 @@
>   #include "xe/xe_ioctl.h"
>   #include "xe/xe_query.h"
>   
> +/**
> + * SUBTEST: linear-%dbpp-rotate-%d
> + * Description: Sanity check if addfb ioctl works correctly for given combination
> + *              of Linear modifier with %arg[1]-bpp & %arg[2]-rotation
> + * Driver requirement: i915, xe
> + * Functionality: big_fbs, kms_gem_interop, rotation
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1].values:       8, 16, 32, 64
> + * arg[2].values:       0, 90, 180, 270
> + */
> +
> +/**
> + * SUBTEST: %s-%dbpp-rotate-%d
> + * Description: Sanity check if addfb ioctl works correctly for given combination
> + *              of %arg[1] with %arg[2]-bpp & %arg[3]-rotation
> + * Driver requirement: i915, xe
> + * Functionality: big_fbs, kms_gem_interop, rotation, tiling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @4-tiled:            TILE-4 modifier
> + * @x-tiled:            TILE-X modifier
> + * @y-tiled:            TILE-Y modifier
> + * @yf-tiled:           TILE-YF modifier
> + *
> + * arg[2].values:       8, 16, 32, 64
> + * arg[3].values:       0, 90, 180, 270
> + */
> +
> +/**
> + * SUBTEST: linear-max-hw-stride-%dbpp-rotate-%d
> + * Description: Test maximum hardware supported stride length for given combination
> + *              of linear modifier with max hardware stride length, %arg[1]-bpp,
> + *              and %arg[2]-rotation
> + * Driver requirement: i915, xe
> + * Functionality: big_fbs, kms_gem_interop, rotation
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1].values:       32, 64
> + * arg[2].values:       0, 180
> + */
> +
> +/**
> + * SUBTEST: %s-max-hw-stride-%dbpp-rotate-%d
> + * Description: Test maximum hardware supported stride length for given combination
> + *              of %arg[1] modifier with max hardware stride length, %arg[2]-bpp,
> + *              and %arg[3]-rotation
> + * Driver requirement: i915, xe
> + * Functionality: big_fbs, kms_gem_interop, rotation, tiling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @4-tiled:            TILE-4 modifier
> + * @x-tiled:            TILE-X modifier
> + * @y-tiled:            TILE-Y modifier
> + * @yf-tiled:           TILE-YF modifier
> + *
> + * arg[2].values:       32, 64
> + * arg[3].values:       0, 180
> + */
> +
> +/**
> + * SUBTEST: %s-max-hw-stride-%dbpp-rotate-%d-hflip
> + * Description: Test maximum hardware supported stride length for given combination
> + *              of %arg[1] modifier with max hardware stride length, %arg[2]-bpp,
> + *              and %arg[3]-rotation with H-flip mode
> + * Driver requirement: i915, xe
> + * Functionality: big_fbs, kms_gem_interop, rotation, tiling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: %s-max-hw-stride-%dbpp-rotate-%d-%s
> + * Description: Test maximum hardware supported stride length for given combination
> + *              of %arg[1] modifier with max hardware stride length, %arg[2]-bpp,
> + *              and %arg[3]-rotation with %arg[4] mode
> + * Driver requirement: i915, xe
> + * Functionality: async_flips, big_fbs, kms_gem_interop, rotation, tiling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @4-tiled:            TILE-4 modifier
> + * @x-tiled:            TILE-X modifier
> + * @y-tiled:            TILE-Y modifier
> + * @yf-tiled:           TILE-YF modifier
> + *
> + * arg[2].values:       32, 64
> + * arg[3].values:       0, 180
> + *
> + * arg[4]:
> + *
> + * @async-flip:         Async flip
> + * @hflip-async-flip:   Async & H-flip
> + */
> +
> +/**
> + * SUBTEST: %s-addfb-size-overflow
> + * Description: Sanity check if addfb ioctl fails correctly for (%arg[1]) modifier
> + *              with small bo.
> + * Driver requirement: i915, xe
> + * Functionality: big_fbs, kms_gem_interop, tiling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @4-tiled:    TILE-4
> + * @x-tiled:    TILE-X
> + * @y-tiled:    TILE-Y
> + * @yf-tiled:   TILE-YF
> + */
> +
> +/**
> + * SUBTEST: %s-addfb-size-offset-overflow
> + * Description: Sanity check if addfb ioctl fails correctly for (%arg[1]) modifier
> + *              and offsets with small bo
> + * Driver requirement: i915, xe
> + * Functionality: big_fbs, kms_gem_interop, tiling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @4-tiled:    TILE-4
> + * @x-tiled:    TILE-X
> + * @y-tiled:    TILE-Y
> + * @yf-tiled:   TILE-YF
> + */
> +
> +/**
> + * SUBTEST: linear-addfb
> + * Description: Sanity check if addfb ioctl works correctly with Linear modifier
> + *              for given size and strides of fb
> + * Driver requirement: i915, xe
> + * Functionality: big_fbs, kms_gem_interop
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: %s-addfb
> + * Description: Sanity check if addfb ioctl works correctly with %arg[1] modifier
> + *              for given size and strides of fb
> + * Driver requirement: i915, xe
> + * Functionality: big_fbs, kms_gem_interop, tiling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @4-tiled:    TILE-4
> + * @x-tiled:    TILE-X
> + * @y-tiled:    TILE-Y
> + * @yf-tiled:   TILE-YF
> + */
> +
>   IGT_TEST_DESCRIPTION("Test big framebuffers");
>   
>   typedef struct {
> @@ -588,108 +750,6 @@ max_hw_stride_async_flip_test(data_t *data)
>   	return true;
>   }
>   
> -/**
> - * SUBTEST: linear-%dbpp-rotate-%d
> - * Description: Sanity check if addfb ioctl works correctly for given combination
> - *              of Linear modifier with %arg[1]-bpp & %arg[2]-rotation
> - * Driver requirement: i915, xe
> - * Functionality: big_fbs, kms_gem_interop, rotation
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1].values:       8, 16, 32, 64
> - * arg[2].values:       0, 90, 180, 270
> - */
> -
> -/**
> - * SUBTEST: %s-%dbpp-rotate-%d
> - * Description: Sanity check if addfb ioctl works correctly for given combination
> - *              of %arg[1] with %arg[2]-bpp & %arg[3]-rotation
> - * Driver requirement: i915, xe
> - * Functionality: big_fbs, kms_gem_interop, rotation, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @4-tiled:            TILE-4 modifier
> - * @x-tiled:            TILE-X modifier
> - * @y-tiled:            TILE-Y modifier
> - * @yf-tiled:           TILE-YF modifier
> - *
> - * arg[2].values:       8, 16, 32, 64
> - * arg[3].values:       0, 90, 180, 270
> - */
> -
> -/**
> - * SUBTEST: linear-max-hw-stride-%dbpp-rotate-%d
> - * Description: Test maximum hardware supported stride length for given combination
> - *              of linear modifier with max hardware stride length, %arg[1]-bpp,
> - *              and %arg[2]-rotation
> - * Driver requirement: i915, xe
> - * Functionality: big_fbs, kms_gem_interop, rotation
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1].values:       32, 64
> - * arg[2].values:       0, 180
> - */
> -
> -/**
> - * SUBTEST: %s-max-hw-stride-%dbpp-rotate-%d
> - * Description: Test maximum hardware supported stride length for given combination
> - *              of %arg[1] modifier with max hardware stride length, %arg[2]-bpp,
> - *              and %arg[3]-rotation
> - * Driver requirement: i915, xe
> - * Functionality: big_fbs, kms_gem_interop, rotation, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @4-tiled:            TILE-4 modifier
> - * @x-tiled:            TILE-X modifier
> - * @y-tiled:            TILE-Y modifier
> - * @yf-tiled:           TILE-YF modifier
> - *
> - * arg[2].values:       32, 64
> - * arg[3].values:       0, 180
> - */
> -
> -/**
> - * SUBTEST: %s-max-hw-stride-%dbpp-rotate-%d-hflip
> - * Description: Test maximum hardware supported stride length for given combination
> - *              of %arg[1] modifier with max hardware stride length, %arg[2]-bpp,
> - *              and %arg[3]-rotation with H-flip mode
> - * Driver requirement: i915, xe
> - * Functionality: big_fbs, kms_gem_interop, rotation, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: %s-max-hw-stride-%dbpp-rotate-%d-%s
> - * Description: Test maximum hardware supported stride length for given combination
> - *              of %arg[1] modifier with max hardware stride length, %arg[2]-bpp,
> - *              and %arg[3]-rotation with %arg[4] mode
> - * Driver requirement: i915, xe
> - * Functionality: async_flips, big_fbs, kms_gem_interop, rotation, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @4-tiled:            TILE-4 modifier
> - * @x-tiled:            TILE-X modifier
> - * @y-tiled:            TILE-Y modifier
> - * @yf-tiled:           TILE-YF modifier
> - *
> - * arg[2].values:       32, 64
> - * arg[3].values:       0, 180
> - *
> - * arg[4]:
> - *
> - * @async-flip:         Async flip
> - * @hflip-async-flip:   Async & H-flip
> - */
>   static void test_scanout(data_t *data)
>   {
>   	igt_output_t *output;
> @@ -735,22 +795,6 @@ static void test_scanout(data_t *data)
>   	igt_skip("unsupported configuration\n");
>   }
>   
> -/**
> - * SUBTEST: %s-addfb-size-overflow
> - * Description: Sanity check if addfb ioctl fails correctly for (%arg[1]) modifier
> - *              with small bo.
> - * Driver requirement: i915, xe
> - * Functionality: big_fbs, kms_gem_interop, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @4-tiled:    TILE-4
> - * @x-tiled:    TILE-X
> - * @y-tiled:    TILE-Y
> - * @yf-tiled:   TILE-YF
> - */
>   static void
>   test_size_overflow(data_t *data)
>   {
> @@ -795,22 +839,6 @@ test_size_overflow(data_t *data)
>   	gem_close(data->drm_fd, bo);
>   }
>   
> -/**
> - * SUBTEST: %s-addfb-size-offset-overflow
> - * Description: Sanity check if addfb ioctl fails correctly for (%arg[1]) modifier
> - *              and offsets with small bo
> - * Driver requirement: i915, xe
> - * Functionality: big_fbs, kms_gem_interop, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @4-tiled:    TILE-4
> - * @x-tiled:    TILE-X
> - * @y-tiled:    TILE-Y
> - * @yf-tiled:   TILE-YF
> - */
>   static void
>   test_size_offset_overflow(data_t *data)
>   {
> @@ -869,30 +897,6 @@ static int rmfb(int fd, uint32_t id)
>   	return err;
>   }
>   
> -/**
> - * SUBTEST: linear-addfb
> - * Description: Sanity check if addfb ioctl works correctly with Linear modifier
> - *              for given size and strides of fb
> - * Driver requirement: i915, xe
> - * Functionality: big_fbs, kms_gem_interop
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: %s-addfb
> - * Description: Sanity check if addfb ioctl works correctly with %arg[1] modifier
> - *              for given size and strides of fb
> - * Driver requirement: i915, xe
> - * Functionality: big_fbs, kms_gem_interop, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @4-tiled:    TILE-4
> - * @x-tiled:    TILE-X
> - * @y-tiled:    TILE-Y
> - * @yf-tiled:   TILE-YF
> - */
>   static void
>   test_addfb(data_t *data)
>   {
> diff --git a/tests/intel/kms_big_joiner.c b/tests/intel/kms_big_joiner.c
> index 3b6dc530b..3f2091723 100644
> --- a/tests/intel/kms_big_joiner.c
> +++ b/tests/intel/kms_big_joiner.c
> @@ -29,8 +29,33 @@
>    * Category: Display
>    * Description: Test big joiner
>    */
> +
>   #include "igt.h"
>   
> +/**
> + * SUBTEST: invalid-modeset
> + * Description: Verify if the modeset on the adjoining pipe is rejected when
> + *              the pipe is active with a big joiner modeset
> + * Driver requirement: i915, xe
> + * Functionality: 2p1p
> + * Mega feature: Bigjoiner
> + * Test category: functionality test
> + *
> + * SUBTEST: basic
> + * Description: Verify the basic modeset on big joiner mode on all pipes
> + * Driver requirement: i915, xe
> + * Functionality: 2p1p
> + * Mega feature: Bigjoiner
> + * Test category: functionality test
> + *
> + * SUBTEST: 2x-modeset
> + * Description: Verify simultaneous modeset on 2 big joiner outputs
> + * Driver requirement: i915, xe
> + * Functionality: 2p1p
> + * Mega feature: Bigjoiner
> + * Test category: functionality test
> + */
> +
>   IGT_TEST_DESCRIPTION("Test big joiner");
>   
>   struct bigjoiner_output {
> @@ -50,15 +75,6 @@ typedef struct {
>   
>   static int max_dotclock;
>   
> -/**
> - * SUBTEST: invalid-modeset
> - * Description: Verify if the modeset on the adjoining pipe is rejected when
> - *              the pipe is active with a big joiner modeset
> - * Driver requirement: i915, xe
> - * Functionality: 2p1p
> - * Mega feature: Bigjoiner
> - * Test category: functionality test
> - */
>   static void test_invalid_modeset(data_t *data)
>   {
>   	igt_output_t *output;
> @@ -99,14 +115,6 @@ static void test_invalid_modeset(data_t *data)
>   	igt_assert_lt(ret, 0);
>   }
>   
> -/**
> - * SUBTEST: basic
> - * Description: Verify the basic modeset on big joiner mode on all pipes
> - * Driver requirement: i915, xe
> - * Functionality: 2p1p
> - * Mega feature: Bigjoiner
> - * Test category: functionality test
> - */
>   static void test_basic_modeset(data_t *data)
>   {
>   	drmModeModeInfo *mode;
> @@ -143,14 +151,6 @@ static void test_basic_modeset(data_t *data)
>   	igt_display_commit2(display, COMMIT_ATOMIC);
>   }
>   
> -/**
> - * SUBTEST: 2x-modeset
> - * Description: Verify simultaneous modeset on 2 big joiner outputs
> - * Driver requirement: i915, xe
> - * Functionality: 2p1p
> - * Mega feature: Bigjoiner
> - * Test category: functionality test
> - */
>   static void test_dual_display(data_t *data)
>   {
>   	drmModeModeInfo *mode;
> diff --git a/tests/intel/kms_busy.c b/tests/intel/kms_busy.c
> index fe450160f..c65d71b19 100644
> --- a/tests/intel/kms_busy.c
> +++ b/tests/intel/kms_busy.c
> @@ -26,6 +26,7 @@
>    * Category: Display
>    * Description: Basic check of KMS ABI with busy framebuffers.
>    */
> +
>   #include <sys/poll.h>
>   #include <signal.h>
>   #include <time.h>
> @@ -33,6 +34,61 @@
>   #include "i915/gem.h"
>   #include "igt.h"
>   
> +/**
> + * SUBTEST: basic
> + * Description: Test for basic check of KMS ABI with busy framebuffers.
> + * Driver requirement: i915
> + * Functionality: kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: basic-hang
> + * Description: Test for basic check of KMS ABI with busy framebuffers.
> + * Driver requirement: i915
> + * Functionality: kms_core, hang
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + */
> +
> +/**
> + * SUBTEST: extended-modeset-hang-%s
> + * Description: Test for basic check of KMS ABI with busy framebuffers.
> + * Driver requirement: i915
> + * Functionality: kms_core, hang
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @newfb:                New framebuffer
> + * @oldfb:                Old framebuffer
> + * @newfb-with-reset:     New framebuffer with reset
> + * @oldfb-with-reset:     Old framebuffer with reset
> + */
> +
> +/**
> + * SUBTEST: extended-pageflip-hang-%s
> + * Description: Test for basic check of KMS ABI with busy framebuffers.
> + * Driver requirement: i915
> + * Functionality: kms_core, hang
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @newfb:     New framebuffer
> + * @oldfb:     Old framebuffer
> + */
> +
> +/**
> + * SUBTEST: extended-pageflip-modeset-hang-oldfb
> + * Description: Test for basic check of KMS ABI with busy framebuffers.
> + * Driver requirement: i915
> + * Functionality: kms_core, hang
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + */
> +
>   IGT_TEST_DESCRIPTION("Basic check of KMS ABI with busy framebuffers.");
>   
>   static bool all_pipes = false;
> @@ -136,21 +192,6 @@ static void flip_to_fb(igt_display_t *dpy, int pipe,
>   	put_ahnd(ahnd);
>   }
>   
> -/**
> - * SUBTEST: basic
> - * Description: Test for basic check of KMS ABI with busy framebuffers.
> - * Driver requirement: i915
> - * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: basic-hang
> - * Description: Test for basic check of KMS ABI with busy framebuffers.
> - * Driver requirement: i915
> - * Functionality: kms_core, hang
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
>   static void test_flip(igt_display_t *dpy, int pipe,
>   		      igt_output_t *output, bool modeset)
>   {
> @@ -243,35 +284,6 @@ static void test_atomic_commit_hang(igt_display_t *dpy, igt_plane_t *primary,
>   	put_ahnd(ahnd);
>   }
>   
> -/**
> - * SUBTEST: extended-modeset-hang-%s
> - * Description: Test for basic check of KMS ABI with busy framebuffers.
> - * Driver requirement: i915
> - * Functionality: kms_core, hang
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @newfb:                New framebuffer
> - * @oldfb:                Old framebuffer
> - * @newfb-with-reset:     New framebuffer with reset
> - * @oldfb-with-reset:     Old framebuffer with reset
> - */
> -
> -/**
> - * SUBTEST: extended-pageflip-hang-%s
> - * Description: Test for basic check of KMS ABI with busy framebuffers.
> - * Driver requirement: i915
> - * Functionality: kms_core, hang
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @newfb:     New framebuffer
> - * @oldfb:     Old framebuffer
> - */
>   static void test_hang(igt_display_t *dpy,
>   		      enum pipe pipe, igt_output_t *output,
>   		      bool modeset, bool hang_newfb)
> @@ -319,14 +331,6 @@ static void test_hang(igt_display_t *dpy,
>   	igt_remove_fb(dpy->drm_fd, &fb[0]);
>   }
>   
> -/**
> - * SUBTEST: extended-pageflip-modeset-hang-oldfb
> - * Description: Test for basic check of KMS ABI with busy framebuffers.
> - * Driver requirement: i915
> - * Functionality: kms_core, hang
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
>   static void
>   test_pageflip_modeset_hang(igt_display_t *dpy,
>   			   igt_output_t *output, enum pipe pipe)
> diff --git a/tests/intel/kms_ccs.c b/tests/intel/kms_ccs.c
> index f21a53082..d1eb735fa 100644
> --- a/tests/intel/kms_ccs.c
> +++ b/tests/intel/kms_ccs.c
> @@ -29,6 +29,7 @@
>    *              complemented by a color control surface (CCS) that the display
>    *              uses to interpret the compressed data.
>    */
> +
>   #include "igt.h"
>   
>   #include "i915/gem_create.h"
> diff --git a/tests/intel/kms_cdclk.c b/tests/intel/kms_cdclk.c
> index 74bb254b9..97cb615c5 100644
> --- a/tests/intel/kms_cdclk.c
> +++ b/tests/intel/kms_cdclk.c
> @@ -29,8 +29,33 @@
>    * Category: Display
>    * Description: Test cdclk features : crawling and squashing
>    */
> +
>   #include "igt.h"
>   
> +/**
> + * SUBTEST: mode-transition-all-outputs
> + * Description: Mode transition (low to high) test to validate cdclk frequency
> + *              change by simultaneous modesets on all pipes with valid outputs.
> + * Driver requirement: i915, xe
> + * Functionality: kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: mode-transition
> + * Description: Mode transition (low to high) test to validate cdclk frequency change.
> + * Driver requirement: i915, xe
> + * Functionality: kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: plane-scaling
> + * Description: Plane scaling test to validate cdclk frequency change.
> + * Driver requirement: i915, xe
> + * Functionality: kms_core, plane, scaling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + */
> +
>   IGT_TEST_DESCRIPTION("Test cdclk features : crawling and squashing");
>   
>   #define HDISPLAY_4K	3840
> @@ -253,15 +278,6 @@ static void test_mode_transition(data_t *data, enum pipe pipe, igt_output_t *out
>   	igt_remove_fb(display->drm_fd, &fb);
>   }
>   
> -/**
> - * SUBTEST: mode-transition-all-outputs
> - * Description: Mode transition (low to high) test to validate cdclk frequency
> - *              change by simultaneous modesets on all pipes with valid outputs.
> - * Driver requirement: i915, xe
> - * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
>   static void test_mode_transition_on_all_outputs(data_t *data)
>   {
>   	igt_display_t *display = &data->display;
> @@ -358,21 +374,6 @@ static void test_mode_transition_on_all_outputs(data_t *data)
>   	igt_remove_fb(data->drm_fd, &fb);
>   }
>   
> -/**
> - * SUBTEST: mode-transition
> - * Description: Mode transition (low to high) test to validate cdclk frequency change.
> - * Driver requirement: i915, xe
> - * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: plane-scaling
> - * Description: Plane scaling test to validate cdclk frequency change.
> - * Driver requirement: i915, xe
> - * Functionality: kms_core, plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
>   static void run_cdclk_test(data_t *data, uint32_t flags)
>   {
>   	igt_display_t *display = &data->display;
> diff --git a/tests/intel/kms_dirtyfb.c b/tests/intel/kms_dirtyfb.c
> index a6424dd8f..3318f8128 100644
> --- a/tests/intel/kms_dirtyfb.c
> +++ b/tests/intel/kms_dirtyfb.c
> @@ -3,6 +3,16 @@
>    * Copyright © 2023 Intel Corporation
>    */
>   
> +/**
> + * TEST: kms dirtyfb
> + * Category: Display
> + * Description: Test DIRTYFB ioctl functionality.
> + * Driver requirement: i915, xe
> + * Functionality: dirtyfb
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + */
> +
>   #include <sys/types.h>
>   
>   #include "igt.h"
> @@ -13,18 +23,7 @@
>   
>   #include "xe/xe_query.h"
>   
> -IGT_TEST_DESCRIPTION("Test the DIRTYFB ioctl is working properly with "
> -		     "its related features: FBC, PSR and DRRS");
> -
>   /**
> - * TEST: kms dirtyfb
> - * Category: Display
> - * Description: Test DIRTYFB ioctl functionality.
> - * Driver requirement: i915, xe
> - * Functionality: dirtyfb
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
>    * SUBTEST: default-dirtyfb-ioctl
>    * Description: Test DIRTYFB ioctl is working properly using GPU
>    *              frontbuffer rendering with features like FBC, PSR
> @@ -42,6 +41,9 @@ IGT_TEST_DESCRIPTION("Test the DIRTYFB ioctl is working properly with "
>    * @psr:     psr1
>    */
>   
> +IGT_TEST_DESCRIPTION("Test the DIRTYFB ioctl is working properly with "
> +		     "its related features: FBC, PSR and DRRS");
> +
>   #ifndef PAGE_ALIGN
>   #ifndef PAGE_SIZE
>   #define PAGE_SIZE 4096
> diff --git a/tests/intel/kms_draw_crc.c b/tests/intel/kms_draw_crc.c
> index 4bde8fa59..7cd4c3ff1 100644
> --- a/tests/intel/kms_draw_crc.c
> +++ b/tests/intel/kms_draw_crc.c
> @@ -27,9 +27,51 @@
>    * Category: Display
>    * Description: Tests whether the igt_draw library actually works.
>    */
> +
>   #include "i915/gem.h"
>   #include "igt.h"
>   
> +/**
> + * SUBTEST: draw-method-%s
> + * Description: Verify that igt draw library works for the %arg[1] method with
> + *              different modifiers & DRM formats.
> + * Driver requirement: i915, xe
> + * Functionality: kms_core, tiling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @blt:          Blitter
> + * @mmap-wc:      MMAP-WC
> + * @render:       Render
> + */
> +
> +/**
> + * SUBTEST: draw-method-%s
> + * Description: Verify that igt draw library works for the %arg[1] method with
> + *              different modifiers & DRM formats.
> + * Driver requirement: i915
> + * Functionality: kms_core, tiling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @mmap-cpu:     MMAP-CPU
> + * @mmap-gtt:     MMAP-GTT
> + * @pwrite:       PWRITE
> + */
> +
> +/**
> + * SUBTEST: fill-fb
> + * Description: This subtest verifies CRC after filling fb with x-tiling or none.
> + * Driver requirement: i915, xe
> + * Functionality: kms_core, tiling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + */
> +
>   #define MAX_CONNECTORS 32
>   
>   int drm_fd;
> @@ -143,37 +185,6 @@ static void get_method_crc(enum igt_draw_method method, uint32_t drm_format,
>   	igt_remove_fb(drm_fd, &fb);
>   }
>   
> -/**
> - * SUBTEST: draw-method-%s
> - * Description: Verify that igt draw library works for the %arg[1] method with
> - *              different modifiers & DRM formats.
> - * Driver requirement: i915, xe
> - * Functionality: kms_core, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @blt:          Blitter
> - * @mmap-wc:      MMAP-WC
> - * @render:       Render
> - */
> -
> -/**
> - * SUBTEST: draw-method-%s
> - * Description: Verify that igt draw library works for the %arg[1] method with
> - *              different modifiers & DRM formats.
> - * Driver requirement: i915
> - * Functionality: kms_core, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @mmap-cpu:     MMAP-CPU
> - * @mmap-gtt:     MMAP-GTT
> - * @pwrite:       PWRITE
> - */
>   static void draw_method_subtest(enum igt_draw_method method,
>   				uint32_t format_index, uint64_t modifier)
>   {
> @@ -213,14 +224,6 @@ static void get_fill_crc(uint64_t modifier, igt_crc_t *crc)
>   	igt_remove_fb(drm_fd, &fb);
>   }
>   
> -/**
> - * SUBTEST: fill-fb
> - * Description: This subtest verifies CRC after filling fb with x-tiling or none.
> - * Driver requirement: i915, xe
> - * Functionality: kms_core, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
>   static void fill_fb_subtest(void)
>   {
>   	int rc;
> diff --git a/tests/intel/kms_dsc.c b/tests/intel/kms_dsc.c
> index 183944ef7..0df3613b3 100644
> --- a/tests/intel/kms_dsc.c
> +++ b/tests/intel/kms_dsc.c
> @@ -35,6 +35,7 @@
>    * Category: Display
>    * Description: Test to validate display stream compression
>    */
> +
>   #include "kms_dsc_helper.h"
>   
>   /**
> diff --git a/tests/intel/kms_fb_coherency.c b/tests/intel/kms_fb_coherency.c
> index cd6b5da4b..c05bd0508 100644
> --- a/tests/intel/kms_fb_coherency.c
> +++ b/tests/intel/kms_fb_coherency.c
> @@ -18,6 +18,17 @@
>   #include "igt.h"
>   #include "xe/xe_ioctl.h"
>   
> +/**
> + * SUBTEST: memset-crc
> + * Description: Use display controller CRC hardware to validate (non)coherency
> + *		of memset operations on future scanout buffer objects
> + *		mmapped with different mmap methods and different caching modes.
> + * Mega feature: General Display Features
> + * Functionality: kms_core
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + */
> +
>   typedef struct {
>   	int drm_fd;
>   	igt_display_t display;
> @@ -243,16 +254,6 @@ igt_main
>   		select_valid_pipe_output_combo(&data);
>   	}
>   
> -	/**
> -	 * SUBTEST: memset-crc
> -	 * Description: Use display controller CRC hardware to validate (non)coherency
> -	 *		of memset operations on future scanout buffer objects
> -	 *		mmapped with different mmap methods and different caching modes.
> -	 * Mega feature: General Display Features
> -	 * Functionality: kms_core
> -	 * Driver requirement: i915, xe
> -	 * Test category: functionality test
> -	 */
>   	igt_subtest_with_dynamic("memset-crc") {
>   		if (igt_draw_supports_method(data.drm_fd, IGT_DRAW_MMAP_GTT)) {
>   			igt_dynamic("mmap-gtt")
> diff --git a/tests/intel/kms_fbcon_fbt.c b/tests/intel/kms_fbcon_fbt.c
> index 4078309d9..d437d70f6 100644
> --- a/tests/intel/kms_fbcon_fbt.c
> +++ b/tests/intel/kms_fbcon_fbt.c
> @@ -24,6 +24,13 @@
>    *
>    */
>   
> +/**
> + * TEST: kms fbcon fbt
> + * Category: Display
> + * Description: Test the relationship between fbcon and the frontbuffer tracking
> + *              infrastructure.
> + */
> +
>   #include "igt.h"
>   #include "igt_device.h"
>   #include "igt_psr.h"
> @@ -33,11 +40,6 @@
>   #include <fcntl.h>
>   
>   /**
> - * TEST: kms fbcon fbt
> - * Category: Display
> - * Description: Test the relationship between fbcon and the frontbuffer tracking
> - *              infrastructure.
> - *
>    * SUBTEST: fbc
>    * Description: Test the relationship between fbcon and the frontbuffer tracking
>    *              infrastructure with fbc enabled.
> diff --git a/tests/intel/kms_fence_pin_leak.c b/tests/intel/kms_fence_pin_leak.c
> index 47808800f..24e7b011c 100644
> --- a/tests/intel/kms_fence_pin_leak.c
> +++ b/tests/intel/kms_fence_pin_leak.c
> @@ -22,6 +22,12 @@
>    *
>    */
>   
> +/**
> + * TEST: kms fence pin leak
> + * Category: Display
> + * Description: Exercises full ppgtt fence pin_count leak in the kernel.
> + */
> +
>   #include <errno.h>
>   #include <limits.h>
>   #include <stdbool.h>
> @@ -30,11 +36,8 @@
>   
>   #include "i915/gem.h"
>   #include "igt.h"
> +
>   /**
> - * TEST: kms fence pin leak
> - * Category: Display
> - * Description: Exercises full ppgtt fence pin_count leak in the kernel.
> - *
>    * SUBTEST:
>    * Description: Along with the modeset, validate fence pin_count leakage.
>    * Driver requirement: i915
> diff --git a/tests/intel/kms_flip_scaled_crc.c b/tests/intel/kms_flip_scaled_crc.c
> index d3489c478..8f37299ea 100644
> --- a/tests/intel/kms_flip_scaled_crc.c
> +++ b/tests/intel/kms_flip_scaled_crc.c
> @@ -27,6 +27,7 @@
>    * Category: Display
>    * Description: Test flipping between scaled/nonscaled framebuffers
>    */
> +
>   #include "igt.h"
>   
>   /**
> diff --git a/tests/intel/kms_flip_tiling.c b/tests/intel/kms_flip_tiling.c
> index a6c6514a6..3bf02564e 100644
> --- a/tests/intel/kms_flip_tiling.c
> +++ b/tests/intel/kms_flip_tiling.c
> @@ -24,17 +24,20 @@
>    *   Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
>    */
>   
> +/**
> + * TEST: kms flip tiling
> + * Category: Display
> + * Description: Test page flips and tiling scenarios
> + */
> +
>   #include <errno.h>
>   #include <stdbool.h>
>   #include <stdio.h>
>   #include <string.h>
>   
>   #include "igt.h"
> +
>   /**
> - * TEST: kms flip tiling
> - * Category: Display
> - * Description: Test page flips and tiling scenarios
> - *
>    * SUBTEST: flip-change-tiling
>    * Description: Check pageflip between modifiers
>    * Driver requirement: i915, xe
> diff --git a/tests/intel/kms_frontbuffer_tracking.c b/tests/intel/kms_frontbuffer_tracking.c
> index 213069947..085adc5b1 100644
> --- a/tests/intel/kms_frontbuffer_tracking.c
> +++ b/tests/intel/kms_frontbuffer_tracking.c
> @@ -29,6 +29,7 @@
>    * Category: Display
>    * Description: Test the Kernel's frontbuffer tracking mechanism and its related features: FBC, PSR and DRRS
>    */
> +
>   #include <sys/types.h>
>   #include <sys/stat.h>
>   #include <fcntl.h>
> @@ -45,3785 +46,4170 @@
>   #include "igt_psr.h"
>   
>   /**
> + * SUBTEST: basic
> + * Description: Do some basic operations regardless of which features are enabled
> + * Driver requirement: i915, xe
> + * Functionality: fbt
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
>    * SUBTEST: plane-fbc-rte
>    * Description: Sanity test to enable FBC on a plane.
>    * Driver requirement: i915, xe
>    * Functionality: fbc
>    * Mega feature: General Display Features
>    * Test category: functionality test
> + *
> + * SUBTEST: drrs-%dp-rte
> + * Description: Sanity test to enable DRRS with %arg[1] panels.
> + * Driver requirement: i915, xe
> + * Functionality: fbt, drrs
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbc-%dp-rte
> + * Description: Sanity test to enable FBC with %arg[1] panels.
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psr-%dp-rte
> + * Description: Sanity test to enable PSR with %arg[1] panels.
> + * Driver requirement: i915, xe
> + * Functionality: fbt, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcdrrs-%dp-rte
> + * Description: Sanity test to enable FBC & DRRS with %arg[1] panels.
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsr-%dp-rte
> + * Description: Sanity test to enable FBC & PSR with %arg[1] panels.
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psrdrrs-%dp-rte
> + * Description: Sanity test to enable PSR & DRRS with %arg[1] panels.
> + * Driver requirement: i915, xe
> + * Functionality: fbt, drrs, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsrdrrs-%dp-rte
> + * Description: Sanity test to enable FBC, PSR & DRRS with %arg[1] panels.
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt, drrs, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1].values:   1, 2
>    */
>   
> -#define TIME SLOW_QUICK(1000, 10000)
> -
> -IGT_TEST_DESCRIPTION("Test the Kernel's frontbuffer tracking mechanism and "
> -		     "its related features: FBC, PSR and DRRS");
> -
> -/*
> - * One of the aspects of this test is that, for every subtest, we try different
> - * combinations of the parameters defined by the struct below. Because of this,
> - * a single addition of a new parameter or subtest function can lead to hundreds
> - * of new subtests.
> +/**
> + * SUBTEST: drrs-1p-offscren-pri-%s-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    *
> - * In order to reduce the number combinations we cut the cases that don't make
> - * sense, such as writing on the secondary screen when there is only a single
> - * pipe, or flipping when the target is the offscreen buffer. We also hide some
> - * combinations that are somewhat redundant and don't add much value to the
> - * test. For example, since we already do the offscreen testing with a single
> - * pipe enabled, there's no much value in doing it again with dual pipes. If you
> - * still want to try these redundant tests, you need to use the --show-hidden
> - * option.
> + * SUBTEST: fbc-1p-offscren-pri-%s-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    *
> - * The most important hidden thing is the FEATURE_NONE set of tests. Whenever
> - * you get a failure on any test, it is important to check whether the same test
> - * fails with FEATURE_NONE - replace the feature name for "nop". If the nop test
> - * also fails, then it's likely the problem will be on the IGT side instead of
> - * the Kernel side. We don't expose this set of tests by default because (i)
> - * they take a long time to test; and (ii) if the feature tests work, then it's
> - * very likely that the nop tests will also work.
> + * SUBTEST: psr-1p-offscren-pri-%s-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915, xe
> + * Functionality: fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcdrrs-1p-offscren-pri-%s-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsr-1p-offscren-pri-%s-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psrdrrs-1p-offscren-pri-%s-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsrdrrs-1p-offscren-pri-%s-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @indfb:          Individual fb
> + * @shrfb:          Shared fb
> + *
> + * arg[2]:
> + *
> + * @blt:            Blitter
> + * @mmap-wc:        MMAP-WC
> + * @render:         Render
>    */
> -struct test_mode {
> -	/* Are we going to enable just one monitor, or are we going to setup a
> -	 * dual screen environment for the test? */
> -	enum {
> -		PIPE_SINGLE = 0,
> -		PIPE_DUAL,
> -		PIPE_COUNT,
> -	} pipes;
> -
> -	/* The primary screen is the one that's supposed to have the "feature"
> -	 * enabled on, but we have the option to draw on the secondary screen or
> -	 * on some offscreen buffer. We also only theck the CRC of the primary
> -	 * screen. */
> -	enum {
> -		SCREEN_PRIM = 0,
> -		SCREEN_SCND,
> -		SCREEN_OFFSCREEN,
> -		SCREEN_COUNT,
> -	} screen;
> -
> -	/* When we draw, we can draw directly on the primary plane, on the
> -	 * cursor or on the sprite plane. */
> -	enum {
> -		PLANE_PRI = 0,
> -		PLANE_CUR,
> -		PLANE_SPR,
> -		PLANE_COUNT,
> -	} plane;
> -
> -	/* We can organize the screens in a way that each screen has its own
> -	 * framebuffer, or in a way that all screens point to the same
> -	 * framebuffer, but on different places. This includes the offscreen
> -	 * screen. */
> -	enum {
> -		FBS_INDIVIDUAL = 0,
> -		FBS_SHARED,
> -		FBS_COUNT,
> -	} fbs;
>   
> -	/* Which features are we going to test now? This is a mask!
> -	 * FEATURE_DEFAULT is a special value which instruct the test to just
> -	 * keep what's already enabled by default in the Kernel. */
> -	enum {
> -		FEATURE_NONE  = 0,
> -		FEATURE_FBC   = 1,
> -		FEATURE_PSR   = 2,
> -		FEATURE_DRRS  = 4,
> -		FEATURE_COUNT = 8,
> -		FEATURE_DEFAULT = 8,
> -	} feature;
> +/**
> + * SUBTEST: drrs-1p-offscren-pri-%s-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915
> + * Functionality: drrs, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbc-1p-offscren-pri-%s-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915
> + * Functionality: fbc, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psr-1p-offscren-pri-%s-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915
> + * Functionality: fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcdrrs-1p-offscren-pri-%s-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915
> + * Functionality: drrs, fbc, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsr-1p-offscren-pri-%s-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915
> + * Functionality: fbc, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psrdrrs-1p-offscren-pri-%s-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915
> + * Functionality: drrs, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsrdrrs-1p-offscren-pri-%s-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915
> + * Functionality: drrs, fbc, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @indfb:          Individual fb
> + * @shrfb:          Shared fb
> + *
> + * arg[2]:
> + *
> + * @mmap-cpu:       MMAP-CPU
> + * @mmap-gtt:       MMAP-GTT
> + * @pwrite:         PWRITE
> + */
>   
> -	/* Possible pixel formats. We just use FORMAT_DEFAULT for most tests and
> -	 * only test a few things on the other formats. */
> -	enum pixel_format {
> -		FORMAT_RGB888 = 0,
> -		FORMAT_RGB565,
> -		FORMAT_RGB101010,
> -		FORMAT_COUNT,
> -		FORMAT_DEFAULT = FORMAT_RGB888,
> -	} format;
> -
> -	/* There are multiple APIs where we can do the equivalent of a page flip
> -	 * and they exercise slightly different codepaths inside the Kernel. */
> -	enum flip_type {
> -		FLIP_PAGEFLIP,
> -		FLIP_MODESET,
> -		FLIP_PLANES,
> -		FLIP_COUNT,
> -	} flip;
> -
> -	enum tiling_type {
> -		TILING_LINEAR = 0,
> -		TILING_X,
> -		TILING_Y,
> -		TILING_4,
> -		TILING_COUNT,
> -		TILING_DEFAULT = TILING_X,
> -	} tiling;
> -
> -	enum igt_draw_method method;
> -};
> -
> -enum color {
> -	COLOR_RED,
> -	COLOR_GREEN,
> -	COLOR_BLUE,
> -	COLOR_MAGENTA,
> -	COLOR_CYAN,
> -	COLOR_SCND_BG,
> -	COLOR_PRIM_BG = COLOR_BLUE,
> -	COLOR_OFFSCREEN_BG = COLOR_SCND_BG,
> -};
> -
> -struct rect {
> -	int x;
> -	int y;
> -	int w;
> -	int h;
> -	uint32_t color;
> -};
> -
> -struct {
> -	int fd;
> -	int debugfs;
> -	igt_display_t display;
> -
> -	struct buf_ops *bops;
> -} drm;
> -
> -struct {
> -	bool can_test;
> -
> -	bool supports_last_action;
> -
> -	struct timespec last_action;
> -} fbc = {
> -	.can_test = false,
> -	.supports_last_action = false,
> -};
> -
> -struct {
> -	bool can_test;
> -} psr = {
> -	.can_test = false,
> -};
> -
> -#define MAX_DRRS_STATUS_BUF_LEN 256
> -
> -struct {
> -	bool can_test;
> -} drrs = {
> -	.can_test = false,
> -};
> -
> -igt_pipe_crc_t *pipe_crc;
> -igt_crc_t *wanted_crc;
> -struct {
> -	bool initialized;
> -	igt_crc_t crc;
> -} blue_crcs[FORMAT_COUNT];
> -
> -/* The goal of this structure is to easily allow us to deal with cases where we
> - * have a big framebuffer and the CRTC is just displaying a subregion of this
> - * big FB. */
> -struct fb_region {
> -	igt_plane_t *plane;
> -	struct igt_fb *fb;
> -	int x;
> -	int y;
> -	int w;
> -	int h;
> -};
> -
> -struct draw_pattern_info {
> -	bool frames_stack;
> -	int n_rects;
> -	struct rect (*get_rect)(struct fb_region *fb, int r);
> -
> -	bool initialized[FORMAT_COUNT];
> -	igt_crc_t *crcs[FORMAT_COUNT];
> -};
> -
> -/* Draw big rectangles on the screen. */
> -struct draw_pattern_info pattern1;
> -/* 64x64 rectangles at x:0,y:0, just so we can draw on the cursor and sprite. */
> -struct draw_pattern_info pattern2;
> -/* 64x64 rectangles at different positions, same color, for the move test. */
> -struct draw_pattern_info pattern3;
> -/* Just a fullscreen green square. */
> -struct draw_pattern_info pattern4;
> -
> -/* Command line parameters. */
> -struct {
> -	bool check_status;
> -	bool check_crc;
> -	bool fbc_check_compression;
> -	bool fbc_check_last_action;
> -	bool no_edp;
> -	bool small_modes;
> -	bool show_hidden;
> -	int step;
> -	int only_pipes;
> -	int shared_fb_x_offset;
> -	int shared_fb_y_offset;
> -	enum tiling_type tiling;
> -} opt = {
> -	.check_status = true,
> -	.check_crc = true,
> -	.fbc_check_compression = true,
> -	.fbc_check_last_action = true,
> -	.no_edp = false,
> -	.small_modes = false,
> -	.show_hidden= false,
> -	.step = 0,
> -	.only_pipes = PIPE_COUNT,
> -	.shared_fb_x_offset = 248,
> -	.shared_fb_y_offset = 500,
> -	.tiling = TILING_DEFAULT,
> -};
> -
> -struct modeset_params {
> -	enum pipe pipe;
> -	igt_output_t *output;
> -	drmModeModeInfo mode;
> -
> -	struct fb_region primary;
> -	struct fb_region cursor;
> -	struct fb_region sprite;
> -};
> -
> -struct modeset_params prim_mode_params;
> -struct modeset_params scnd_mode_params;
> -
> -struct fb_region offscreen_fb;
> -struct screen_fbs {
> -	bool initialized;
> -
> -	struct igt_fb prim_pri;
> -	struct igt_fb prim_cur;
> -	struct igt_fb prim_spr;
> -
> -	struct igt_fb scnd_pri;
> -	struct igt_fb scnd_cur;
> -	struct igt_fb scnd_spr;
> -
> -	struct igt_fb offscreen;
> -	struct igt_fb big;
> -} fbs[FORMAT_COUNT];
> -
> -struct {
> -	pthread_t thread;
> -	bool stop;
> -
> -	uint32_t handle;
> -	uint32_t size;
> -	uint32_t stride;
> -	int width;
> -	int height;
> -	uint32_t color;
> -	int bpp;
> -	uint32_t tiling;
> -} busy_thread = {
> -	.stop = true,
> -};
> -
> -static drmModeModeInfo *get_connector_smallest_mode(igt_output_t *output)
> -{
> -	drmModeConnector *c = output->config.connector;
> -	const drmModeModeInfo *smallest = NULL;
> -	int i;
> -
> -	if (c->connector_type == DRM_MODE_CONNECTOR_eDP)
> -		return igt_std_1024_mode_get(igt_output_preferred_vrefresh(output));
> -
> -	for (i = 0; i < c->count_modes; i++) {
> -		const drmModeModeInfo *mode = &c->modes[i];
> -
> -		if (!smallest ||
> -		    mode->hdisplay * mode->vdisplay <
> -		    smallest->hdisplay * smallest->vdisplay)
> -			smallest = mode;
> -	}
> -
> -	if (smallest)
> -		return igt_memdup(smallest, sizeof(*smallest));
> -	else
> -		return igt_std_1024_mode_get(60);
> -}
> -
> -static drmModeModeInfo *connector_get_mode(igt_output_t *output)
> -{
> -	/* On HSW the CRC WA is so awful that it makes you think everything is
> -	  * bugged. */
> -	if (IS_HASWELL(intel_get_drm_devid(drm.fd)) &&
> -	    output->config.connector->connector_type == DRM_MODE_CONNECTOR_eDP)
> -		return igt_std_1024_mode_get(igt_output_preferred_vrefresh(output));
> -
> -	if (opt.small_modes)
> -		return get_connector_smallest_mode(output);
> -	else
> -		return igt_memdup(&output->config.default_mode,
> -				  sizeof(output->config.default_mode));
> -}
> -
> -static void init_mode_params(struct modeset_params *params,
> -			     igt_output_t *output, enum pipe pipe)
> -{
> -	drmModeModeInfo *mode;
> -
> -	igt_output_override_mode(output, NULL);
> -	mode = connector_get_mode(output);
> -
> -	params->pipe = pipe;
> -	params->output = output;
> -	params->mode = *mode;
> -
> -	params->primary.plane = igt_pipe_get_plane_type(&drm.display.pipes[pipe], DRM_PLANE_TYPE_PRIMARY);
> -	params->primary.fb = NULL;
> -	params->primary.x = 0;
> -	params->primary.y = 0;
> -	params->primary.w = mode->hdisplay;
> -	params->primary.h = mode->vdisplay;
> -
> -	params->cursor.plane = igt_pipe_get_plane_type(&drm.display.pipes[pipe], DRM_PLANE_TYPE_CURSOR);
> -	params->cursor.fb = NULL;
> -	params->cursor.x = 0;
> -	params->cursor.y = 0;
> -	params->cursor.w = 64;
> -	params->cursor.h = 64;
> -
> -	params->sprite.plane = igt_pipe_get_plane_type(&drm.display.pipes[pipe], DRM_PLANE_TYPE_OVERLAY);
> -	igt_require(params->sprite.plane);
> -	params->sprite.fb = NULL;
> -	params->sprite.x = 0;
> -	params->sprite.y = 0;
> -	params->sprite.w = 64;
> -	params->sprite.h = 64;
> -
> -	free(mode);
> -}
> -
> -static bool find_connector(bool edp_only, bool pipe_a,
> -			   igt_output_t *forbidden_output,
> -			   enum pipe forbidden_pipe,
> -			   igt_output_t **ret_output,
> -			   enum pipe *ret_pipe)
> -{
> -	igt_output_t *output;
> -	enum pipe pipe;
> -
> -	for_each_pipe_with_valid_output(&drm.display, pipe, output) {
> -		drmModeConnectorPtr c = output->config.connector;
> -
> -		if (edp_only && c->connector_type != DRM_MODE_CONNECTOR_eDP)
> -			continue;
> -
> -		if (pipe_a && pipe != PIPE_A)
> -			continue;
> -
> -		if (output == forbidden_output || pipe == forbidden_pipe) {
> -			igt_output_set_pipe(output, pipe);
> -			igt_output_override_mode(output, connector_get_mode(output));
> -
> -			continue;
> -		}
> -
> -		if (c->connector_type == DRM_MODE_CONNECTOR_eDP && opt.no_edp)
> -			continue;
> -
> -		igt_output_set_pipe(output, pipe);
> -		igt_output_override_mode(output, connector_get_mode(output));
> -		if (intel_pipe_output_combo_valid(&drm.display)) {
> -			*ret_output = output;
> -			*ret_pipe = pipe;
> -			return true;
> -		}
> -	}
> -
> -	return false;
> -}
> -
> -static bool init_modeset_cached_params(void)
> -{
> -	igt_output_t *prim_output = NULL, *scnd_output = NULL;
> -	enum pipe prim_pipe, scnd_pipe;
> -
> -	/*
> -	 * We have this problem where PSR is only present on eDP monitors and
> -	 * FBC is only present on pipe A for some platforms. So we search first
> -	 * for the ideal case of eDP supporting pipe A, and try the less optimal
> -	 * configs later, sacrificing  one of the features.
> -	 * TODO: refactor the code in a way that allows us to have different
> -	 * sets of prim/scnd structs for different features.
> -	 */
> -	find_connector(true, true, NULL, PIPE_NONE, &prim_output, &prim_pipe);
> -	if (!prim_output)
> -		find_connector(true, false, NULL, PIPE_NONE, &prim_output, &prim_pipe);
> -	if (!prim_output)
> -		find_connector(false, true, NULL, PIPE_NONE, &prim_output, &prim_pipe);
> -	if (!prim_output)
> -		find_connector(false, false, NULL, PIPE_NONE, &prim_output, &prim_pipe);
> -
> -	if (!prim_output)
> -		return false;
> -
> -	find_connector(false, false, prim_output, prim_pipe,
> -		       &scnd_output, &scnd_pipe);
> -
> -	init_mode_params(&prim_mode_params, prim_output, prim_pipe);
> -
> -	if (!scnd_output) {
> -		scnd_mode_params.pipe = PIPE_NONE;
> -		scnd_mode_params.output = NULL;
> -		return true;
> -	}
> -
> -	init_mode_params(&scnd_mode_params, scnd_output, scnd_pipe);
> -	return true;
> -}
> -
> -static uint64_t tiling_to_modifier(enum tiling_type tiling)
> -{
> -	switch (tiling) {
> -	case TILING_LINEAR:
> -		return DRM_FORMAT_MOD_LINEAR;
> -	case TILING_X:
> -		return I915_FORMAT_MOD_X_TILED;
> -	case TILING_Y:
> -		return I915_FORMAT_MOD_Y_TILED;
> -	case TILING_4:
> -		return I915_FORMAT_MOD_4_TILED;
> -	default:
> -		igt_assert(false);
> -	}
> -}
> -
> -static void create_fb(enum pixel_format pformat, int width, int height,
> -		      enum tiling_type tiling, int plane, struct igt_fb *fb)
> -{
> -	uint32_t format;
> -	uint64_t size, modifier;
> -	unsigned int stride;
> -
> -	switch (pformat) {
> -	case FORMAT_RGB888:
> -		if (plane == PLANE_CUR)
> -			format = DRM_FORMAT_ARGB8888;
> -		else
> -			format = DRM_FORMAT_XRGB8888;
> -		break;
> -	case FORMAT_RGB565:
> -		/* Only the primary plane supports 16bpp! */
> -		if (plane == PLANE_PRI)
> -			format = DRM_FORMAT_RGB565;
> -		else if (plane == PLANE_CUR)
> -			format = DRM_FORMAT_ARGB8888;
> -		else
> -			format = DRM_FORMAT_XRGB8888;
> -		break;
> -	case FORMAT_RGB101010:
> -		if (plane == PLANE_PRI)
> -			format = DRM_FORMAT_XRGB2101010;
> -		else if (plane == PLANE_CUR)
> -			format = DRM_FORMAT_ARGB8888;
> -		else
> -			format = DRM_FORMAT_XRGB8888;
> -		break;
> -	default:
> -		igt_assert(false);
> -	}
> -
> -	modifier = tiling_to_modifier(tiling);
> -
> -	igt_warn_on(plane == PLANE_CUR && tiling != TILING_LINEAR);
> -
> -	igt_calc_fb_size(drm.fd, width, height, format, modifier, &size,
> -			 &stride);
> -
> -	igt_create_fb_with_bo_size(drm.fd, width, height, format, modifier,
> -				   IGT_COLOR_YCBCR_BT709,
> -				   IGT_COLOR_YCBCR_LIMITED_RANGE,
> -				   fb, size, stride);
> -}
> -
> -static uint32_t pick_color(struct igt_fb *fb, enum color ecolor)
> -{
> -	uint32_t color, r, g, b, b2, a;
> -	bool alpha = false;
> -
> -	switch (fb->drm_format) {
> -	case DRM_FORMAT_RGB565:
> -		a =  0x0;
> -		r =  0x1F << 11;
> -		g =  0x3F << 5;
> -		b =  0x1F;
> -		b2 = 0x10;
> -		break;
> -	case DRM_FORMAT_ARGB8888:
> -		alpha = true;
> -	case DRM_FORMAT_XRGB8888:
> -		a =  0xFF << 24;
> -		r =  0xFF << 16;
> -		g =  0xFF << 8;
> -		b =  0xFF;
> -		b2 = 0x80;
> -		break;
> -	case DRM_FORMAT_ARGB2101010:
> -		alpha = true;
> -	case DRM_FORMAT_XRGB2101010:
> -		a = 0x3 << 30;
> -		r = 0x3FF << 20;
> -		g = 0x3FF << 10;
> -		b = 0x3FF;
> -		b2 = 0x200;
> -		break;
> -	default:
> -		igt_assert(false);
> -	}
> -
> -	switch (ecolor) {
> -	case COLOR_RED:
> -		color = r;
> -		break;
> -	case COLOR_GREEN:
> -		color = g;
> -		break;
> -	case COLOR_BLUE:
> -		color = b;
> -		break;
> -	case COLOR_MAGENTA:
> -		color = r | b;
> -		break;
> -	case COLOR_CYAN:
> -		color = g | b;
> -		break;
> -	case COLOR_SCND_BG:
> -		color = b2;
> -		break;
> -	default:
> -		igt_assert(false);
> -	}
> -
> -	if (alpha)
> -		color |= a;
> +/**
> + * SUBTEST: drrs-%dp-primscrn-%s-indfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915
> + * Functionality: drrs, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbc-%dp-primscrn-%s-indfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915
> + * Functionality: fbc, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psr-%dp-primscrn-%s-indfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915
> + * Functionality: fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcdrrs-%dp-primscrn-%s-indfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915
> + * Functionality: drrs, fbc, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsr-%dp-primscrn-%s-indfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915
> + * Functionality: fbc, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psrdrrs-%dp-primscrn-%s-indfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915
> + * Functionality: drrs, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-indfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915
> + * Functionality: drrs, fbc, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1].values:   1, 2
> + *
> + * arg[2]:
> + *
> + * @cur:            Cursor plane
> + * @pri:            Primary plane
> + * @spr:            Sprite plane
> + *
> + * arg[3]:
> + *
> + * @mmap-cpu:       MMAP-CPU
> + * @mmap-gtt:       MMAP-GTT
> + * @pwrite:         PWRITE
> + */
>   
> -	return color;
> -}
> +/**
> + * SUBTEST: drrs-%dp-primscrn-%s-indfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbc-%dp-primscrn-%s-indfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psr-%dp-primscrn-%s-indfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915, xe
> + * Functionality: fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcdrrs-%dp-primscrn-%s-indfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsr-%dp-primscrn-%s-indfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psrdrrs-%dp-primscrn-%s-indfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-indfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1].values:   1, 2
> + *
> + * arg[2]:
> + *
> + * @cur:            Cursor plane
> + * @pri:            Primary plane
> + * @spr:            Sprite plane
> + *
> + * arg[3]:
> + *
> + * @blt:            Blitter
> + * @mmap-wc:        MMAP-WC
> + * @render:         Render
> + */
>   
> -static void fill_fb(struct igt_fb *fb, enum color ecolor)
> -{
> -	igt_draw_fill_fb(drm.fd, fb, pick_color(fb, ecolor));
> -}
> +/**
> + * SUBTEST: drrs-%dp-primscrn-pri-shrfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbc-%dp-primscrn-pri-shrfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psr-%dp-primscrn-pri-shrfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915, xe
> + * Functionality: fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcdrrs-%dp-primscrn-pri-shrfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsr-%dp-primscrn-pri-shrfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psrdrrs-%dp-primscrn-pri-shrfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsrdrrs-%dp-primscrn-pri-shrfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1].values:   1, 2
> + *
> + * arg[2]:
> + *
> + * @blt:            Blitter
> + * @mmap-wc:        MMAP-WC
> + * @render:         Render
> + */
>   
> -/*
> - * This is how the prim, scnd and offscreen FBs should be positioned inside the
> - * shared FB. The prim buffer starts at the X and Y offsets defined by
> - * opt.shared_fb_{x,y}_offset, then scnd starts at the same X pixel offset,
> - * right after prim ends on the Y axis, then the offscreen fb starts after scnd
> - * ends. Just like the picture:
> +/**
> + * SUBTEST: drrs-%dp-primscrn-pri-shrfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915
> + * Functionality: drrs, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbc-%dp-primscrn-pri-shrfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915
> + * Functionality: fbc, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psr-%dp-primscrn-pri-shrfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915
> + * Functionality: fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcdrrs-%dp-primscrn-pri-shrfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915
> + * Functionality: drrs, fbc, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsr-%dp-primscrn-pri-shrfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915
> + * Functionality: fbc, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psrdrrs-%dp-primscrn-pri-shrfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915
> + * Functionality: drrs, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    *
> - * +-------------------------+
> - * | shared fb               |
> - * |   +------------------+  |
> - * |   | prim             |  |
> - * |   |                  |  |
> - * |   |                  |  |
> - * |   |                  |  |
> - * |   +------------------+--+
> - * |   | scnd                |
> - * |   |                     |
> - * |   |                     |
> - * |   +---------------+-----+
> - * |   | offscreen     |     |
> - * |   |               |     |
> - * |   |               |     |
> - * +---+---------------+-----+
> + * SUBTEST: fbcpsrdrrs-%dp-primscrn-pri-shrfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915
> + * Functionality: drrs, fbc, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    *
> - * We do it vertically instead of the more common horizontal case in order to
> - * avoid super huge strides not supported by FBC.
> + * arg[1].values:   1, 2
> + *
> + * arg[2]:
> + *
> + * @mmap-cpu:       MMAP-CPU
> + * @mmap-gtt:       MMAP-GTT
> + * @pwrite:         PWRITE
>    */
> -static void create_shared_fb(enum pixel_format format, enum tiling_type tiling)
> -{
> -	int prim_w, prim_h, scnd_w, scnd_h, offs_w, offs_h, big_w, big_h;
> -	struct screen_fbs *s = &fbs[format];
> -
> -	prim_w = prim_mode_params.mode.hdisplay;
> -	prim_h = prim_mode_params.mode.vdisplay;
> -
> -	if (scnd_mode_params.output) {
> -		scnd_w = scnd_mode_params.mode.hdisplay;
> -		scnd_h = scnd_mode_params.mode.vdisplay;
> -	} else {
> -		scnd_w = 0;
> -		scnd_h = 0;
> -	}
> -	offs_w = offscreen_fb.w;
> -	offs_h = offscreen_fb.h;
> -
> -	big_w = prim_w;
> -	if (scnd_w > big_w)
> -		big_w = scnd_w;
> -	if (offs_w > big_w)
> -		big_w = offs_w;
> -	big_w += opt.shared_fb_x_offset;
> -
> -	big_h = prim_h + scnd_h + offs_h + opt.shared_fb_y_offset;
> -
> -	create_fb(format, big_w, big_h, tiling, PLANE_PRI, &s->big);
> -}
> -
> -static void destroy_fbs(enum pixel_format format)
> -{
> -	struct screen_fbs *s = &fbs[format];
> -
> -	if (!s->initialized)
> -		return;
> -
> -	if (scnd_mode_params.output) {
> -		igt_remove_fb(drm.fd, &s->scnd_pri);
> -		igt_remove_fb(drm.fd, &s->scnd_cur);
> -		igt_remove_fb(drm.fd, &s->scnd_spr);
> -	}
> -	igt_remove_fb(drm.fd, &s->prim_pri);
> -	igt_remove_fb(drm.fd, &s->prim_cur);
> -	igt_remove_fb(drm.fd, &s->prim_spr);
> -	igt_remove_fb(drm.fd, &s->offscreen);
> -	igt_remove_fb(drm.fd, &s->big);
> -}
> -
> -static void create_fbs(enum pixel_format format, enum tiling_type tiling)
> -{
> -	struct screen_fbs *s = &fbs[format];
> -
> -	if (s->initialized)
> -		destroy_fbs(format);
> -
> -	s->initialized = true;
> -
> -	create_fb(format, prim_mode_params.mode.hdisplay,
> -		  prim_mode_params.mode.vdisplay, tiling, PLANE_PRI,
> -		  &s->prim_pri);
> -	create_fb(format, prim_mode_params.cursor.w,
> -		  prim_mode_params.cursor.h, DRM_FORMAT_MOD_LINEAR,
> -		  PLANE_CUR, &s->prim_cur);
> -	create_fb(format, prim_mode_params.sprite.w,
> -		  prim_mode_params.sprite.h, tiling, PLANE_SPR, &s->prim_spr);
> -
> -	create_fb(format, offscreen_fb.w, offscreen_fb.h, tiling, PLANE_PRI,
> -		  &s->offscreen);
> -
> -	create_shared_fb(format, tiling);
> -
> -	if (!scnd_mode_params.output)
> -		return;
> -
> -	create_fb(format, scnd_mode_params.mode.hdisplay,
> -		  scnd_mode_params.mode.vdisplay, tiling, PLANE_PRI,
> -		  &s->scnd_pri);
> -	create_fb(format, scnd_mode_params.cursor.w, scnd_mode_params.cursor.h,
> -		  DRM_FORMAT_MOD_LINEAR, PLANE_CUR, &s->scnd_cur);
> -	create_fb(format, scnd_mode_params.sprite.w, scnd_mode_params.sprite.h,
> -		  tiling, PLANE_SPR, &s->scnd_spr);
> -}
> -
> -static void __set_prim_plane_for_params(struct modeset_params *params)
> -{
> -	igt_plane_set_fb(params->primary.plane, params->primary.fb);
> -	igt_plane_set_position(params->primary.plane, 0, 0);
> -	igt_plane_set_size(params->primary.plane, params->mode.hdisplay, params->mode.vdisplay);
> -	igt_fb_set_position(params->primary.fb, params->primary.plane,
> -			    params->primary.x, params->primary.y);
> -	igt_fb_set_size(params->primary.fb, params->primary.plane,
> -			params->mode.hdisplay, params->mode.vdisplay);
> -}
> -
> -static void __set_mode_for_params(struct modeset_params *params)
> -{
> -	igt_output_override_mode(params->output, &params->mode);
> -	igt_output_set_pipe(params->output, params->pipe);
> -
> -	__set_prim_plane_for_params(params);
> -}
> -
> -static void set_mode_for_params(struct modeset_params *params)
> -{
> -	__set_mode_for_params(params);
> -	igt_display_commit(&drm.display);
> -}
>   
> -static void __debugfs_read_crtc(const char *param, char *buf, int len)
> -{
> -	int dir;
> -	enum pipe pipe;
> +/**
> + * SUBTEST: drrs-2p-scndscrn-%s-indfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbc-2p-scndscrn-%s-indfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psr-2p-scndscrn-%s-indfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915, xe
> + * Functionality: fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcdrrs-2p-scndscrn-%s-indfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsr-2p-scndscrn-%s-indfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psrdrrs-2p-scndscrn-%s-indfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-indfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @cur:            Cursor plane
> + * @pri:            Primary plane
> + * @spr:            Sprite plane
> + *
> + * arg[2]:
> + *
> + * @blt:            Blitter
> + * @mmap-wc:        MMAP-WC
> + * @render:         Render
> + */
>   
> -	pipe = prim_mode_params.pipe;
> -	dir = igt_debugfs_pipe_dir(drm.fd, pipe, O_DIRECTORY);
> -	igt_require_fd(dir);
> -	igt_debugfs_simple_read(dir, param, buf, len);
> -	close(dir);
> -}
> +/**
> + * SUBTEST: drrs-2p-scndscrn-%s-indfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915
> + * Functionality: drrs, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbc-2p-scndscrn-%s-indfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915
> + * Functionality: fbc, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psr-2p-scndscrn-%s-indfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915
> + * Functionality: fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcdrrs-2p-scndscrn-%s-indfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915
> + * Functionality: drrs, fbc, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsr-2p-scndscrn-%s-indfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915
> + * Functionality: fbc, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psrdrrs-2p-scndscrn-%s-indfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915
> + * Functionality: drrs, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-indfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915
> + * Functionality: drrs, fbc, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @cur:            Cursor plane
> + * @pri:            Primary plane
> + * @spr:            Sprite plane
> + *
> + * arg[2]:
> + *
> + * @mmap-cpu:       MMAP-CPU
> + * @mmap-gtt:       MMAP-GTT
> + * @pwrite:         PWRITE
> + */
>   
> -#define debugfs_read_crtc(p, arr) __debugfs_read_crtc(p, arr, sizeof(arr))
> -#define debugfs_write_crtc(p, arr) __debugfs_write_crtc(p, arr, sizeof(arr))
> -#define debugfs_read_connector(p, arr) __debugfs_read_connector(p, arr, sizeof(arr))
> +/**
> + * SUBTEST: drrs-2p-scndscrn-pri-shrfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbc-2p-scndscrn-pri-shrfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psr-2p-scndscrn-pri-shrfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915, xe
> + * Functionality: fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcdrrs-2p-scndscrn-pri-shrfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsr-2p-scndscrn-pri-shrfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psrdrrs-2p-scndscrn-pri-shrfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsrdrrs-2p-scndscrn-pri-shrfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @blt:            Blitter
> + * @mmap-wc:        MMAP-WC
> + * @render:         Render
> + */
>   
> -static bool is_drrs_high(void)
> -{
> -	char buf[MAX_DRRS_STATUS_BUF_LEN];
> +/**
> + * SUBTEST: drrs-2p-scndscrn-pri-shrfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915
> + * Functionality: drrs, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbc-2p-scndscrn-pri-shrfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915
> + * Functionality: fbc, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psr-2p-scndscrn-pri-shrfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915
> + * Functionality: fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcdrrs-2p-scndscrn-pri-shrfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915
> + * Functionality: drrs, fbc, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsr-2p-scndscrn-pri-shrfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915
> + * Functionality: fbc, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psrdrrs-2p-scndscrn-pri-shrfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915
> + * Functionality: drrs, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsrdrrs-2p-scndscrn-pri-shrfb-draw-%s
> + * Description: Draw a set of rectangles on the screen using the provided method
> + * Driver requirement: i915
> + * Functionality: drrs, fbc, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @mmap-cpu:       MMAP-CPU
> + * @mmap-gtt:       MMAP-GTT
> + * @pwrite:         PWRITE
> + */
>   
> -	debugfs_read_crtc("i915_drrs_status", buf);
> -	return strstr(buf, "DRRS refresh rate: high");
> -}
> +/**
> + * SUBTEST: drrs-%dp-pri-indfb-multidraw
> + * Description: Draw a set of rectangles on the screen using alternated drawing methods
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbc-%dp-pri-indfb-multidraw
> + * Description: Draw a set of rectangles on the screen using alternated drawing methods
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psr-%dp-pri-indfb-multidraw
> + * Description: Draw a set of rectangles on the screen using alternated drawing methods
> + * Driver requirement: i915, xe
> + * Functionality: fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcdrrs-%dp-pri-indfb-multidraw
> + * Description: Draw a set of rectangles on the screen using alternated drawing methods
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsr-%dp-pri-indfb-multidraw
> + * Description: Draw a set of rectangles on the screen using alternated drawing methods
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psrdrrs-%dp-pri-indfb-multidraw
> + * Description: Draw a set of rectangles on the screen using alternated drawing methods
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsrdrrs-%dp-pri-indfb-multidraw
> + * Description: Draw a set of rectangles on the screen using alternated drawing methods
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1].values:   1, 2
> + */
>   
> -static bool is_drrs_low(void)
> -{
> -	char buf[MAX_DRRS_STATUS_BUF_LEN];
> +/**
> + * SUBTEST: drrs-%s-draw-%s
> + * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbc-%s-draw-%s
> + * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psr-%s-draw-%s
> + * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
> + * Driver requirement: i915, xe
> + * Functionality: fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcdrrs-%s-draw-%s
> + * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsr-%s-draw-%s
> + * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psrdrrs-%s-draw-%s
> + * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsrdrrs-%s-draw-%s
> + * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @rgb101010:      FORMAT_RGB101010
> + * @rgb565:         FORMAT_RGB565
> + *
> + * arg[2]:
> + *
> + * @blt:            Blitter
> + * @mmap-wc:        MMAP-WC
> + * @render:         Render
> + */
>   
> -	debugfs_read_crtc("i915_drrs_status", buf);
> -	return strstr(buf, "DRRS refresh rate: low");
> -}
> +/**
> + * SUBTEST: drrs-%s-draw-%s
> + * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
> + * Driver requirement: i915
> + * Functionality: drrs, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbc-%s-draw-%s
> + * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
> + * Driver requirement: i915
> + * Functionality: fbc, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psr-%s-draw-%s
> + * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
> + * Driver requirement: i915
> + * Functionality: fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcdrrs-%s-draw-%s
> + * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
> + * Driver requirement: i915
> + * Functionality: drrs, fbc, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsr-%s-draw-%s
> + * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
> + * Driver requirement: i915
> + * Functionality: fbc, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psrdrrs-%s-draw-%s
> + * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
> + * Driver requirement: i915
> + * Functionality: drrs, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsrdrrs-%s-draw-%s
> + * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
> + * Driver requirement: i915
> + * Functionality: drrs, fbc, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @rgb101010:      FORMAT_RGB101010
> + * @rgb565:         FORMAT_RGB565
> + *
> + * arg[2]:
> + *
> + * @mmap-cpu:       MMAP-CPU
> + * @mmap-gtt:       MMAP-GTT
> + * @pwrite:         PWRITE
> + */
>   
> -static void drrs_print_status(void)
> -{
> -	char buf[MAX_DRRS_STATUS_BUF_LEN];
> +/**
> + * SUBTEST: drrs-slowdraw
> + * Description: Sleep a little bit between drawing operations with DRRS
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psr-slowdraw
> + * Description: Sleep a little bit between drawing operations with PSR
> + * Driver requirement: i915, xe
> + * Functionality: fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcdrrs-slowdraw
> + * Description: Sleep a little bit between drawing operations with FBC & DRRS
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsr-slowdraw
> + * Description: Sleep a little bit between drawing operations with FBC & PSR
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psrdrrs-slowdraw
> + * Description: Sleep a little bit between drawing operations with PSR & DRRS
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsrdrrs-slowdraw
> + * Description: Sleep a little bit between drawing operations with FBC, PSR & DRRS
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + */
>   
> -	debugfs_read_crtc("i915_drrs_status", buf);
> -	igt_info("DRRS STATUS :\n%s\n", buf);
> -}
> +/**
> + * SUBTEST: drrs-%dp-primscrn-%s-%sflip-blt
> + * Description: Just exercise page flips with the patterns we have
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbc-%dp-primscrn-%s-%sflip-blt
> + * Description: Just exercise page flips with the patterns we have
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psr-%dp-primscrn-%s-%sflip-blt
> + * Description: Just exercise page flips with the patterns we have
> + * Driver requirement: i915, xe
> + * Functionality: fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcdrrs-%dp-primscrn-%s-%sflip-blt
> + * Description: Just exercise page flips with the patterns we have
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsr-%dp-primscrn-%s-%sflip-blt
> + * Description: Just exercise page flips with the patterns we have
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psrdrrs-%dp-primscrn-%s-%sflip-blt
> + * Description: Just exercise page flips with the patterns we have
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-%sflip-blt
> + * Description: Just exercise page flips with the patterns we have
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1].values:   1, 2
> + *
> + * arg[2]:
> + *
> + * @indfb:          Individual fb
> + * @shrfb:          Shared fb
> + *
> + * arg[3]:
> + *
> + * @ms:             Modeset
> + * @pg:             Page flip
> + * @pl:             Plane change
> + */
>   
> -static struct timespec fbc_get_last_action(void)
> -{
> -	struct timespec ret = { 0, 0 };
> -	char buf[128];
> -	char *action;
> -	ssize_t n_read;
> +/**
> + * SUBTEST: drrs-2p-scndscrn-%s-%sflip-blt
> + * Description: Just exercise page flips with the patterns we have
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbc-2p-scndscrn-%s-%sflip-blt
> + * Description: Just exercise page flips with the patterns we have
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psr-2p-scndscrn-%s-%sflip-blt
> + * Description: Just exercise page flips with the patterns we have
> + * Driver requirement: i915, xe
> + * Functionality: fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcdrrs-2p-scndscrn-%s-%sflip-blt
> + * Description: Just exercise page flips with the patterns we have
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsr-2p-scndscrn-%s-%sflip-blt
> + * Description: Just exercise page flips with the patterns we have
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psrdrrs-2p-scndscrn-%s-%sflip-blt
> + * Description: Just exercise page flips with the patterns we have
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-%sflip-blt
> + * Description: Just exercise page flips with the patterns we have
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @indfb:          Individual fb
> + * @shrfb:          Shared fb
> + *
> + * arg[2]:
> + *
> + * @ms:             Modeset
> + * @pg:             Page flip
> + * @pl:             Plane change
> + */
>   
> +/**
> + * SUBTEST: fbc-%dp-%s-fliptrack-mmap-gtt
> + * Description: Check if the hardware tracking works after page flips
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcdrrs-%dp-%s-fliptrack-mmap-gtt
> + * Description: Check if the hardware tracking works after page flips
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsr-%dp-%s-fliptrack-mmap-gtt
> + * Description: Check if the hardware tracking works after page flips
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsrdrrs-%dp-%s-fliptrack-mmap-gtt
> + * Description: Check if the hardware tracking works after page flips
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1].values:   1, 2
> + *
> + * arg[2]:
> + *
> + * @indfb:          Individual fb
> + * @shrfb:          Shared fb
> + */
>   
> -	debugfs_read_crtc("i915_fbc_status", buf);
> -	action = strstr(buf, "\nLast action:");
> -	igt_assert(action);
> +/**
> + * SUBTEST: drrs-%dp-primscrn-%s-indfb-move
> + * Description: Just move the %arg[2] around
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbt
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbc-%dp-primscrn-%s-indfb-move
> + * Description: Just move the %arg[2] around
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psr-%dp-primscrn-%s-indfb-move
> + * Description: Just move the %arg[2] around
> + * Driver requirement: i915, xe
> + * Functionality: fbt, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcdrrs-%dp-primscrn-%s-indfb-move
> + * Description: Just move the %arg[2] around
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsr-%dp-primscrn-%s-indfb-move
> + * Description: Just move the %arg[2] around
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psrdrrs-%dp-primscrn-%s-indfb-move
> + * Description: Just move the %arg[2] around
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbt, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-indfb-move
> + * Description: Just move the %arg[2] around
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1].values:   1, 2
> + *
> + * arg[2]:
> + *
> + * @spr:            Sprite plane
> + * @cur:            Cursor plane
> + */
>   
> -	n_read = sscanf(action, "Last action: %ld.%ld",
> -			&ret.tv_sec, &ret.tv_nsec);
> -	igt_assert(n_read == 2);
> +/**
> + * SUBTEST: drrs-2p-scndscrn-%s-indfb-move
> + * Description: Just move the %arg[1] around
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbt
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbc-2p-scndscrn-%s-indfb-move
> + * Description: Just move the %arg[1] around
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psr-2p-scndscrn-%s-indfb-move
> + * Description: Just move the %arg[1] around
> + * Driver requirement: i915, xe
> + * Functionality: fbt, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcdrrs-2p-scndscrn-%s-indfb-move
> + * Description: Just move the %arg[1] around
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsr-2p-scndscrn-%s-indfb-move
> + * Description: Just move the %arg[1] around
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psrdrrs-2p-scndscrn-%s-indfb-move
> + * Description: Just move the %arg[1] around
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbt, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-indfb-move
> + * Description: Just move the %arg[1] around
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @spr:            Sprite plane
> + * @cur:            Cursor plane
> + */
>   
> -	return ret;
> -}
> +/**
> + * SUBTEST: drrs-%dp-primscrn-%s-indfb-onoff
> + * Description: Just enable and disable the %arg[2] a few times
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbt
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbc-%dp-primscrn-%s-indfb-onoff
> + * Description: Just enable and disable the %arg[2] a few times
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psr-%dp-primscrn-%s-indfb-onoff
> + * Description: Just enable and disable the %arg[2] a few times
> + * Driver requirement: i915, xe
> + * Functionality: fbt, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcdrrs-%dp-primscrn-%s-indfb-onoff
> + * Description: Just enable and disable the %arg[2] a few times
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsr-%dp-primscrn-%s-indfb-onoff
> + * Description: Just enable and disable the %arg[2] a few times
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psrdrrs-%dp-primscrn-%s-indfb-onoff
> + * Description: Just enable and disable the %arg[2] a few times
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbt, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-indfb-onoff
> + * Description: Just enable and disable the %arg[2] a few times
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1].values:   1, 2
> + *
> + * arg[2]:
> + *
> + * @spr:            Sprite plane
> + * @cur:            Cursor plane
> + */
>   
> -static bool fbc_last_action_changed(void)
> -{
> -	struct timespec t_new, t_old;
> +/**
> + * SUBTEST: drrs-2p-scndscrn-%s-indfb-onoff
> + * Description: Just enable and disable the %arg[1] a few times
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbt
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbc-2p-scndscrn-%s-indfb-onoff
> + * Description: Just enable and disable the %arg[1] a few times
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psr-2p-scndscrn-%s-indfb-onoff
> + * Description: Just enable and disable the %arg[1] a few times
> + * Driver requirement: i915, xe
> + * Functionality: fbt, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcdrrs-2p-scndscrn-%s-indfb-onoff
> + * Description: Just enable and disable the %arg[1] a few times
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsr-2p-scndscrn-%s-indfb-onoff
> + * Description: Just enable and disable the %arg[1] a few times
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psrdrrs-2p-scndscrn-%s-indfb-onoff
> + * Description: Just enable and disable the %arg[1] a few times
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbt, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-indfb-onoff
> + * Description: Just enable and disable the %arg[1] a few times
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @spr:            Sprite plane
> + * @cur:            Cursor plane
> + */
>   
> -	t_old = fbc.last_action;
> -	t_new = fbc_get_last_action();
> +/**
> + * SUBTEST: drrs-%dp-primscrn-spr-indfb-fullscreen
> + * Description: Put a fullscreen plane covering the whole screen
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbt
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbc-%dp-primscrn-spr-indfb-fullscreen
> + * Description: Put a fullscreen plane covering the whole screen
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psr-%dp-primscrn-spr-indfb-fullscreen
> + * Description: Put a fullscreen plane covering the whole screen
> + * Driver requirement: i915, xe
> + * Functionality: fbt, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcdrrs-%dp-primscrn-spr-indfb-fullscreen
> + * Description: Put a fullscreen plane covering the whole screen
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsr-%dp-primscrn-spr-indfb-fullscreen
> + * Description: Put a fullscreen plane covering the whole screen
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psrdrrs-%dp-primscrn-spr-indfb-fullscreen
> + * Description: Put a fullscreen plane covering the whole screen
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbt, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsrdrrs-%dp-primscrn-spr-indfb-fullscreen
> + * Description: Put a fullscreen plane covering the whole screen
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: drrs-2p-scndscrn-spr-indfb-fullscreen
> + * Description: Put a fullscreen plane covering the whole screen
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbt
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbc-2p-scndscrn-spr-indfb-fullscreen
> + * Description: Put a fullscreen plane covering the whole screen
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psr-2p-scndscrn-spr-indfb-fullscreen
> + * Description: Put a fullscreen plane covering the whole screen
> + * Driver requirement: i915, xe
> + * Functionality: fbt, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcdrrs-2p-scndscrn-spr-indfb-fullscreen
> + * Description: Put a fullscreen plane covering the whole screen
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsr-2p-scndscrn-spr-indfb-fullscreen
> + * Description: Put a fullscreen plane covering the whole screen
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psrdrrs-2p-scndscrn-spr-indfb-fullscreen
> + * Description: Put a fullscreen plane covering the whole screen
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbt, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsrdrrs-2p-scndscrn-spr-indfb-fullscreen
> + * Description: Put a fullscreen plane covering the whole screen
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1].values:   1, 2
> + */
>   
> -	fbc.last_action = t_new;
> +/**
> + * SUBTEST: drrs-%s-scaledprimary
> + * Description: Try different primary plane scaling strategies
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbt, scaling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbc-%s-scaledprimary
> + * Description: Try different primary plane scaling strategies
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt, scaling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psr-%s-scaledprimary
> + * Description: Try different primary plane scaling strategies
> + * Driver requirement: i915, xe
> + * Functionality: fbt, psr, scaling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcdrrs-%s-scaledprimary
> + * Description: Try different primary plane scaling strategies
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt, scaling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsr-%s-scaledprimary
> + * Description: Try different primary plane scaling strategies
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt, psr, scaling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psrdrrs-%s-scaledprimary
> + * Description: Try different primary plane scaling strategies
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbt, psr, scaling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsrdrrs-%s-scaledprimary
> + * Description: Try different primary plane scaling strategies
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt, psr, scaling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @indfb:          Individual fb
> + * @shrfb:          Shared fb
> + */
>   
> -#if 0
> -	igt_info("old: %ld.%ld\n", t_old.tv_sec, t_old.tv_nsec);
> -	igt_info("new: %ld.%ld\n", t_new.tv_sec, t_new.tv_nsec);
> -#endif
> +/**
> + * SUBTEST: drrs-modesetfrombusy
> + * Description: Modeset from a busy buffer to a non-busy buffer with DRRS
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbt, scaling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbc-modesetfrombusy
> + * Description: Modeset from a busy buffer to a non-busy buffer with FBC
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt, scaling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psr-modesetfrombusy
> + * Description: Modeset from a busy buffer to a non-busy buffer with PSR
> + * Driver requirement: i915, xe
> + * Functionality: fbt, psr, scaling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcdrrs-modesetfrombusy
> + * Description: Modeset from a busy buffer to a non-busy buffer with FBC & DRRS
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt, scaling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsr-modesetfrombusy
> + * Description: Modeset from a busy buffer to a non-busy buffer with FBC & PSR
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt, psr, scaling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psrdrrs-modesetfrombusy
> + * Description: Modeset from a busy buffer to a non-busy buffer with PSR & DRRS
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbt, psr, scaling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsrdrrs-modesetfrombusy
> + * Description: Modeset from a busy buffer to a non-busy buffer with FBC, PSR & DRRS
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt, psr, scaling
> + * Mega feature: General Display Features
> + */
>   
> -	return t_old.tv_sec != t_new.tv_sec ||
> -	       t_old.tv_nsec != t_new.tv_nsec;
> -}
> +/**
> + * SUBTEST: drrs-suspend
> + * Description: Make sure suspend/resume keeps us on the same state of DRRS
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbt, suspend
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbc-suspend
> + * Description: Make sure suspend/resume keeps us on the same state of FBC
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt, suspend
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psr-suspend
> + * Description: Make sure suspend/resume keeps us on the same state of PSR
> + * Driver requirement: i915, xe
> + * Functionality: fbt, psr, suspend
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcdrrs-suspend
> + * Description: Make sure suspend/resume keeps us on the same state of FBC & DRRS
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt, suspend
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsr-suspend
> + * Description: Make sure suspend/resume keeps us on the same state of FBC & PSR
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt, psr, suspend
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psrdrrs-suspend
> + * Description: Make sure suspend/resume keeps us on the same state of PSR & DRRS
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbt, psr, suspend
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsrdrrs-suspend
> + * Description: Make sure suspend/resume keeps us on the same state of FBC, PSR & DRRS
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt, psr, suspend
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + */
>   
> -static void fbc_update_last_action(void)
> -{
> -	if (!fbc.supports_last_action)
> -		return;
> +/**
> + * SUBTEST: drrs-farfromfence-mmap-gtt
> + * Description: Test drawing as far from the fence start as possible
> + * Driver requirement: i915
> + * Functionality: drrs, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbc-farfromfence-mmap-gtt
> + * Description: Test drawing as far from the fence start as possible
> + * Driver requirement: i915
> + * Functionality: fbc, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psr-farfromfence-mmap-gtt
> + * Description: Test drawing as far from the fence start as possible
> + * Driver requirement: i915
> + * Functionality: fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcdrrs-farfromfence-mmap-gtt
> + * Description: Test drawing as far from the fence start as possible
> + * Driver requirement: i915
> + * Functionality: drrs, fbc, fbt, kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsr-farfromfence-mmap-gtt
> + * Description: Test drawing as far from the fence start as possible
> + * Driver requirement: i915
> + * Functionality: fbc, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: psrdrrs-farfromfence-mmap-gtt
> + * Description: Test drawing as far from the fence start as possible
> + * Driver requirement: i915
> + * Functionality: drrs, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsrdrrs-farfromfence-mmap-gtt
> + * Description: Test drawing as far from the fence start as possible
> + * Driver requirement: i915
> + * Functionality: drrs, fbc, fbt, kms_core, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + */
>   
> -	fbc.last_action = fbc_get_last_action();
> +/**
> + * SUBTEST: fbc-stridechange
> + * Description: Change the frontbuffer stride by doing a modeset
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcdrrs-stridechange
> + * Description: Change the frontbuffer stride by doing a modeset
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsr-stridechange
> + * Description: Change the frontbuffer stride by doing a modeset
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsrdrrs-stridechange
> + * Description: Change the frontbuffer stride by doing a modeset
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt, psr
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + */
>   
> -#if 0
> -	igt_info("Last action: %ld.%ld\n",
> -		 fbc.last_action.tv_sec, fbc.last_action.tv_nsec);
> -#endif
> -}
> +/**
> + * SUBTEST: fbc-tiling-%s
> + * Description: Test %arg[1] formats, if the tiling format supports FBC do the
> + *              basic drawing test, else set the mode & test if FBC is disabled
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt, tiling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcdrrs-tiling-%s
> + * Description: Test %arg[1] formats, if the tiling format supports FBC do the
> + *              basic drawing test, else set the mode & test if FBC is disabled
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt, tiling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsr-tiling-%s
> + * Description: Test %arg[1] formats, if the tiling format supports FBC do the
> + *              basic drawing test, else set the mode & test if FBC is disabled
> + * Driver requirement: i915, xe
> + * Functionality: fbc, fbt, psr, tiling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fbcpsrdrrs-tiling-%s
> + * Description: Test %arg[1] formats, if the tiling format supports FBC do the
> + *              basic drawing test, else set the mode & test if FBC is disabled
> + * Driver requirement: i915, xe
> + * Functionality: drrs, fbc, fbt, psr, tiling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @4:              4 tiling
> + * @linear:         Linear tiling
> + * @y:              Y tiling
> + */
>   
> -static void fbc_setup_last_action(void)
> -{
> -	ssize_t n_read;
> -	char buf[128];
> -	char *action;
> +#define TIME SLOW_QUICK(1000, 10000)
>   
> +IGT_TEST_DESCRIPTION("Test the Kernel's frontbuffer tracking mechanism and "
> +		     "its related features: FBC, PSR and DRRS");
>   
> -	debugfs_read_crtc("i915_fbc_status", buf);
> -	action = strstr(buf, "\nLast action:");
> -	if (!action) {
> -		igt_info("FBC last action not supported\n");
> -		return;
> -	}
> +/*
> + * One of the aspects of this test is that, for every subtest, we try different
> + * combinations of the parameters defined by the struct below. Because of this,
> + * a single addition of a new parameter or subtest function can lead to hundreds
> + * of new subtests.
> + *
> + * In order to reduce the number combinations we cut the cases that don't make
> + * sense, such as writing on the secondary screen when there is only a single
> + * pipe, or flipping when the target is the offscreen buffer. We also hide some
> + * combinations that are somewhat redundant and don't add much value to the
> + * test. For example, since we already do the offscreen testing with a single
> + * pipe enabled, there's no much value in doing it again with dual pipes. If you
> + * still want to try these redundant tests, you need to use the --show-hidden
> + * option.
> + *
> + * The most important hidden thing is the FEATURE_NONE set of tests. Whenever
> + * you get a failure on any test, it is important to check whether the same test
> + * fails with FEATURE_NONE - replace the feature name for "nop". If the nop test
> + * also fails, then it's likely the problem will be on the IGT side instead of
> + * the Kernel side. We don't expose this set of tests by default because (i)
> + * they take a long time to test; and (ii) if the feature tests work, then it's
> + * very likely that the nop tests will also work.
> + */
> +struct test_mode {
> +	/* Are we going to enable just one monitor, or are we going to setup a
> +	 * dual screen environment for the test? */
> +	enum {
> +		PIPE_SINGLE = 0,
> +		PIPE_DUAL,
> +		PIPE_COUNT,
> +	} pipes;
>   
> -	fbc.supports_last_action = true;
> +	/* The primary screen is the one that's supposed to have the "feature"
> +	 * enabled on, but we have the option to draw on the secondary screen or
> +	 * on some offscreen buffer. We also only theck the CRC of the primary
> +	 * screen. */
> +	enum {
> +		SCREEN_PRIM = 0,
> +		SCREEN_SCND,
> +		SCREEN_OFFSCREEN,
> +		SCREEN_COUNT,
> +	} screen;
>   
> -	n_read = sscanf(action, "Last action: %ld.%ld",
> -			&fbc.last_action.tv_sec, &fbc.last_action.tv_nsec);
> -	igt_assert(n_read == 2);
> -}
> +	/* When we draw, we can draw directly on the primary plane, on the
> +	 * cursor or on the sprite plane. */
> +	enum {
> +		PLANE_PRI = 0,
> +		PLANE_CUR,
> +		PLANE_SPR,
> +		PLANE_COUNT,
> +	} plane;
>   
> -static bool fbc_is_compressing(void)
> -{
> -	char buf[128];
> +	/* We can organize the screens in a way that each screen has its own
> +	 * framebuffer, or in a way that all screens point to the same
> +	 * framebuffer, but on different places. This includes the offscreen
> +	 * screen. */
> +	enum {
> +		FBS_INDIVIDUAL = 0,
> +		FBS_SHARED,
> +		FBS_COUNT,
> +	} fbs;
>   
> -	debugfs_read_crtc("i915_fbc_status", buf);
> -	return strstr(buf, "\nCompressing: yes\n") != NULL;
> -}
> +	/* Which features are we going to test now? This is a mask!
> +	 * FEATURE_DEFAULT is a special value which instruct the test to just
> +	 * keep what's already enabled by default in the Kernel. */
> +	enum {
> +		FEATURE_NONE  = 0,
> +		FEATURE_FBC   = 1,
> +		FEATURE_PSR   = 2,
> +		FEATURE_DRRS  = 4,
> +		FEATURE_COUNT = 8,
> +		FEATURE_DEFAULT = 8,
> +	} feature;
>   
> -static bool fbc_wait_for_compression(void)
> -{
> -	return igt_wait(fbc_is_compressing(), 2000, 1);
> -}
> +	/* Possible pixel formats. We just use FORMAT_DEFAULT for most tests and
> +	 * only test a few things on the other formats. */
> +	enum pixel_format {
> +		FORMAT_RGB888 = 0,
> +		FORMAT_RGB565,
> +		FORMAT_RGB101010,
> +		FORMAT_COUNT,
> +		FORMAT_DEFAULT = FORMAT_RGB888,
> +	} format;
>   
> -static bool fbc_not_enough_stolen(void)
> -{
> -	char buf[128];
> +	/* There are multiple APIs where we can do the equivalent of a page flip
> +	 * and they exercise slightly different codepaths inside the Kernel. */
> +	enum flip_type {
> +		FLIP_PAGEFLIP,
> +		FLIP_MODESET,
> +		FLIP_PLANES,
> +		FLIP_COUNT,
> +	} flip;
>   
> -	debugfs_read_crtc("i915_fbc_status", buf);
> -	return strstr(buf, "FBC disabled: not enough stolen memory\n");
> -}
> +	enum tiling_type {
> +		TILING_LINEAR = 0,
> +		TILING_X,
> +		TILING_Y,
> +		TILING_4,
> +		TILING_COUNT,
> +		TILING_DEFAULT = TILING_X,
> +	} tiling;
>   
> -static bool fbc_stride_not_supported(void)
> -{
> -	char buf[128];
> +	enum igt_draw_method method;
> +};
>   
> -	debugfs_read_crtc("i915_fbc_status", buf);
> -	return strstr(buf, "FBC disabled: framebuffer stride not supported\n");
> -}
> +enum color {
> +	COLOR_RED,
> +	COLOR_GREEN,
> +	COLOR_BLUE,
> +	COLOR_MAGENTA,
> +	COLOR_CYAN,
> +	COLOR_SCND_BG,
> +	COLOR_PRIM_BG = COLOR_BLUE,
> +	COLOR_OFFSCREEN_BG = COLOR_SCND_BG,
> +};
>   
> -static bool fbc_mode_too_large(void)
> -{
> -	char buf[128];
> +struct rect {
> +	int x;
> +	int y;
> +	int w;
> +	int h;
> +	uint32_t color;
> +};
>   
> -	debugfs_read_crtc("i915_fbc_status", buf);
> -	return strstr(buf, "FBC disabled: mode too large for compression\n");
> -}
> +struct {
> +	int fd;
> +	int debugfs;
> +	igt_display_t display;
>   
> -static bool fbc_enable_per_plane(int plane_index, enum pipe pipe)
> -{
> -	char buf[PATH_MAX];
> -	char buf_plane[128];
> +	struct buf_ops *bops;
> +} drm;
>   
> -	sprintf(buf_plane, "%d%s", plane_index, kmstest_pipe_name(pipe));
> +struct {
> +	bool can_test;
>   
> -	debugfs_read_crtc("i915_fbc_status", buf);
> -	return strstr(strstr(buf, "*"), buf_plane);
> -}
> +	bool supports_last_action;
>   
> -static bool drrs_wait_until_rr_switch_to_low(void)
> -{
> -	return igt_wait(is_drrs_low(), 5000, 1);
> -}
> +	struct timespec last_action;
> +} fbc = {
> +	.can_test = false,
> +	.supports_last_action = false,
> +};
>   
> -static struct rect pat1_get_rect(struct fb_region *fb, int r)
> -{
> -	struct rect rect;
> +struct {
> +	bool can_test;
> +} psr = {
> +	.can_test = false,
> +};
>   
> -	switch (r) {
> -	case 0:
> -		rect.x = 0;
> -		rect.y = 0;
> -		rect.w = fb->w / 8;
> -		rect.h = fb->h / 8;
> -		rect.color = pick_color(fb->fb, COLOR_GREEN);
> -		break;
> -	case 1:
> -		rect.x = fb->w / 8 * 4;
> -		rect.y = fb->h / 8 * 4;
> -		rect.w = fb->w / 8 * 2;
> -		rect.h = fb->h / 8 * 2;
> -		rect.color = pick_color(fb->fb, COLOR_RED);
> -		break;
> -	case 2:
> -		rect.x = fb->w / 16 + 1;
> -		rect.y = fb->h / 16 + 1;
> -		rect.w = fb->w / 8 + 1;
> -		rect.h = fb->h / 8 + 1;
> -		rect.color = pick_color(fb->fb, COLOR_MAGENTA);
> -		break;
> -	case 3:
> -		rect.x = fb->w - 1;
> -		rect.y = fb->h - 1;
> -		rect.w = 1;
> -		rect.h = 1;
> -		rect.color = pick_color(fb->fb, COLOR_CYAN);
> -		break;
> -	default:
> -		igt_assert(false);
> -	}
> +#define MAX_DRRS_STATUS_BUF_LEN 256
>   
> -	return rect;
> -}
> +struct {
> +	bool can_test;
> +} drrs = {
> +	.can_test = false,
> +};
>   
> -static struct rect pat2_get_rect(struct fb_region *fb, int r)
> -{
> -	struct rect rect;
> +igt_pipe_crc_t *pipe_crc;
> +igt_crc_t *wanted_crc;
> +struct {
> +	bool initialized;
> +	igt_crc_t crc;
> +} blue_crcs[FORMAT_COUNT];
>   
> -	rect.x = 0;
> -	rect.y = 0;
> -	rect.w = 64;
> -	rect.h = 64;
> +/* The goal of this structure is to easily allow us to deal with cases where we
> + * have a big framebuffer and the CRTC is just displaying a subregion of this
> + * big FB. */
> +struct fb_region {
> +	igt_plane_t *plane;
> +	struct igt_fb *fb;
> +	int x;
> +	int y;
> +	int w;
> +	int h;
> +};
>   
> -	switch (r) {
> -	case 0:
> -		rect.color = pick_color(fb->fb, COLOR_GREEN);
> -		break;
> -	case 1:
> -		rect.x = 31;
> -		rect.y = 31;
> -		rect.w = 31;
> -		rect.h = 31;
> -		rect.color = pick_color(fb->fb, COLOR_RED);
> -		break;
> -	case 2:
> -		rect.x = 16;
> -		rect.y = 16;
> -		rect.w = 32;
> -		rect.h = 32;
> -		rect.color = pick_color(fb->fb, COLOR_MAGENTA);
> -		break;
> -	case 3:
> -		rect.color = pick_color(fb->fb, COLOR_CYAN);
> -		break;
> -	default:
> -		igt_assert(false);
> -	}
> +struct draw_pattern_info {
> +	bool frames_stack;
> +	int n_rects;
> +	struct rect (*get_rect)(struct fb_region *fb, int r);
>   
> -	return rect;
> -}
> +	bool initialized[FORMAT_COUNT];
> +	igt_crc_t *crcs[FORMAT_COUNT];
> +};
>   
> -static struct rect pat3_get_rect(struct fb_region *fb, int r)
> -{
> -	struct rect rect;
> +/* Draw big rectangles on the screen. */
> +struct draw_pattern_info pattern1;
> +/* 64x64 rectangles at x:0,y:0, just so we can draw on the cursor and sprite. */
> +struct draw_pattern_info pattern2;
> +/* 64x64 rectangles at different positions, same color, for the move test. */
> +struct draw_pattern_info pattern3;
> +/* Just a fullscreen green square. */
> +struct draw_pattern_info pattern4;
>   
> -	rect.w = 64;
> -	rect.h = 64;
> -	rect.color = pick_color(fb->fb, COLOR_GREEN);
> +/* Command line parameters. */
> +struct {
> +	bool check_status;
> +	bool check_crc;
> +	bool fbc_check_compression;
> +	bool fbc_check_last_action;
> +	bool no_edp;
> +	bool small_modes;
> +	bool show_hidden;
> +	int step;
> +	int only_pipes;
> +	int shared_fb_x_offset;
> +	int shared_fb_y_offset;
> +	enum tiling_type tiling;
> +} opt = {
> +	.check_status = true,
> +	.check_crc = true,
> +	.fbc_check_compression = true,
> +	.fbc_check_last_action = true,
> +	.no_edp = false,
> +	.small_modes = false,
> +	.show_hidden= false,
> +	.step = 0,
> +	.only_pipes = PIPE_COUNT,
> +	.shared_fb_x_offset = 248,
> +	.shared_fb_y_offset = 500,
> +	.tiling = TILING_DEFAULT,
> +};
>   
> -	switch (r) {
> -	case 0:
> -		rect.x = 0;
> -		rect.y = 0;
> -		break;
> -	case 1:
> -		rect.x = 64;
> -		rect.y = 64;
> -		break;
> -	case 2:
> -		rect.x = 1;
> -		rect.y = 1;
> -		break;
> -	case 3:
> -		rect.x = fb->w - 64;
> -		rect.y = fb->h - 64;
> -		break;
> -	case 4:
> -		rect.x = fb->w / 2 - 32;
> -		rect.y = fb->h / 2 - 32;
> -		break;
> -	default:
> -		igt_assert(false);
> -	}
> +struct modeset_params {
> +	enum pipe pipe;
> +	igt_output_t *output;
> +	drmModeModeInfo mode;
>   
> -	return rect;
> -}
> +	struct fb_region primary;
> +	struct fb_region cursor;
> +	struct fb_region sprite;
> +};
>   
> -static struct rect pat4_get_rect(struct fb_region *fb, int r)
> -{
> -	struct rect rect;
> +struct modeset_params prim_mode_params;
> +struct modeset_params scnd_mode_params;
>   
> -	igt_assert_eq(r, 0);
> +struct fb_region offscreen_fb;
> +struct screen_fbs {
> +	bool initialized;
>   
> -	rect.x = 0;
> -	rect.y = 0;
> -	rect.w = fb->w;
> -	rect.h = fb->h;
> -	rect.color = pick_color(fb->fb, COLOR_GREEN);
> +	struct igt_fb prim_pri;
> +	struct igt_fb prim_cur;
> +	struct igt_fb prim_spr;
>   
> -	return rect;
> -}
> +	struct igt_fb scnd_pri;
> +	struct igt_fb scnd_cur;
> +	struct igt_fb scnd_spr;
>   
> -static void fb_dirty_ioctl(struct fb_region *fb, struct rect *rect)
> -{
> -	int rc;
> -	drmModeClip clip = {
> -		.x1 = rect->x,
> -		.x2 = rect->x + rect->w,
> -		.y1 = rect->y,
> -		.y2 = rect->y + rect->h,
> -	};
> +	struct igt_fb offscreen;
> +	struct igt_fb big;
> +} fbs[FORMAT_COUNT];
>   
> -	rc = drmModeDirtyFB(drm.fd, fb->fb->fb_id, &clip, 1);
> +struct {
> +	pthread_t thread;
> +	bool stop;
>   
> -	igt_assert(rc == 0 || rc == -ENOSYS);
> -}
> +	uint32_t handle;
> +	uint32_t size;
> +	uint32_t stride;
> +	int width;
> +	int height;
> +	uint32_t color;
> +	int bpp;
> +	uint32_t tiling;
> +} busy_thread = {
> +	.stop = true,
> +};
>   
> -static void draw_rect(struct draw_pattern_info *pattern, struct fb_region *fb,
> -		      enum igt_draw_method method, int r)
> +static drmModeModeInfo *get_connector_smallest_mode(igt_output_t *output)
>   {
> -	struct rect rect = pattern->get_rect(fb, r);
> +	drmModeConnector *c = output->config.connector;
> +	const drmModeModeInfo *smallest = NULL;
> +	int i;
>   
> -	igt_draw_rect_fb(drm.fd, drm.bops, 0, fb->fb, method,
> -			 fb->x + rect.x, fb->y + rect.y,
> -			 rect.w, rect.h, rect.color);
> +	if (c->connector_type == DRM_MODE_CONNECTOR_eDP)
> +		return igt_std_1024_mode_get(igt_output_preferred_vrefresh(output));
>   
> -	fb_dirty_ioctl(fb, &rect);
> -}
> +	for (i = 0; i < c->count_modes; i++) {
> +		const drmModeModeInfo *mode = &c->modes[i];
>   
> -static void draw_rect_igt_fb(struct draw_pattern_info *pattern,
> -			     struct igt_fb *fb, enum igt_draw_method method,
> -			     int r)
> -{
> -	struct fb_region region = {
> -		.fb = fb,
> -		.x = 0,
> -		.y = 0,
> -		.w = fb->width,
> -		.h = fb->height,
> -	};
> +		if (!smallest ||
> +		    mode->hdisplay * mode->vdisplay <
> +		    smallest->hdisplay * smallest->vdisplay)
> +			smallest = mode;
> +	}
>   
> -	draw_rect(pattern, &region, method, r);
> +	if (smallest)
> +		return igt_memdup(smallest, sizeof(*smallest));
> +	else
> +		return igt_std_1024_mode_get(60);
>   }
>   
> -static void fill_fb_region(struct fb_region *region,
> -			   enum igt_draw_method method,
> -			   enum color ecolor)
> +static drmModeModeInfo *connector_get_mode(igt_output_t *output)
>   {
> -	uint32_t color = pick_color(region->fb, ecolor);
> +	/* On HSW the CRC WA is so awful that it makes you think everything is
> +	  * bugged. */
> +	if (IS_HASWELL(intel_get_drm_devid(drm.fd)) &&
> +	    output->config.connector->connector_type == DRM_MODE_CONNECTOR_eDP)
> +		return igt_std_1024_mode_get(igt_output_preferred_vrefresh(output));
>   
> -	igt_draw_rect_fb(drm.fd, drm.bops, 0, region->fb, method,
> -			 region->x, region->y, region->w, region->h,
> -			 color);
> +	if (opt.small_modes)
> +		return get_connector_smallest_mode(output);
> +	else
> +		return igt_memdup(&output->config.default_mode,
> +				  sizeof(output->config.default_mode));
>   }
>   
> -static void _fb_dirty_ioctl(struct fb_region *region)
> +static void init_mode_params(struct modeset_params *params,
> +			     igt_output_t *output, enum pipe pipe)
>   {
> -	struct rect rect;
> -
> -	rect.x = region->x;
> -	rect.y = region->y;
> -	rect.w = region->w;
> -	rect.h = region->h;
> -	fb_dirty_ioctl(region, &rect);
> -}
> +	drmModeModeInfo *mode;
>   
> -static void unset_all_crtcs(void)
> -{
> -	igt_display_reset(&drm.display);
> -	igt_display_commit(&drm.display);
> -}
> +	igt_output_override_mode(output, NULL);
> +	mode = connector_get_mode(output);
>   
> -static bool disable_features(const struct test_mode *t)
> -{
> -	if (t->feature == FEATURE_DEFAULT)
> -		return false;
> +	params->pipe = pipe;
> +	params->output = output;
> +	params->mode = *mode;
>   
> -	intel_fbc_disable(drm.fd);
> -	intel_drrs_disable(drm.fd, prim_mode_params.pipe);
> +	params->primary.plane = igt_pipe_get_plane_type(&drm.display.pipes[pipe], DRM_PLANE_TYPE_PRIMARY);
> +	params->primary.fb = NULL;
> +	params->primary.x = 0;
> +	params->primary.y = 0;
> +	params->primary.w = mode->hdisplay;
> +	params->primary.h = mode->vdisplay;
>   
> -	return psr.can_test ? psr_disable(drm.fd, drm.debugfs) : false;
> -}
> +	params->cursor.plane = igt_pipe_get_plane_type(&drm.display.pipes[pipe], DRM_PLANE_TYPE_CURSOR);
> +	params->cursor.fb = NULL;
> +	params->cursor.x = 0;
> +	params->cursor.y = 0;
> +	params->cursor.w = 64;
> +	params->cursor.h = 64;
>   
> -static void *busy_thread_func(void *data)
> -{
> -	while (!busy_thread.stop)
> -		igt_draw_rect(drm.fd, drm.bops, 0, busy_thread.handle,
> -			      busy_thread.size, busy_thread.stride,
> -			      busy_thread.tiling, IGT_DRAW_BLT, 0, 0,
> -			      busy_thread.width, busy_thread.height,
> -			      busy_thread.color, busy_thread.bpp);
> +	params->sprite.plane = igt_pipe_get_plane_type(&drm.display.pipes[pipe], DRM_PLANE_TYPE_OVERLAY);
> +	igt_require(params->sprite.plane);
> +	params->sprite.fb = NULL;
> +	params->sprite.x = 0;
> +	params->sprite.y = 0;
> +	params->sprite.w = 64;
> +	params->sprite.h = 64;
>   
> -	pthread_exit(0);
> +	free(mode);
>   }
>   
> -static void start_busy_thread(struct igt_fb *fb)
> +static bool find_connector(bool edp_only, bool pipe_a,
> +			   igt_output_t *forbidden_output,
> +			   enum pipe forbidden_pipe,
> +			   igt_output_t **ret_output,
> +			   enum pipe *ret_pipe)
>   {
> -	int rc;
> +	igt_output_t *output;
> +	enum pipe pipe;
>   
> -	igt_assert(busy_thread.stop == true);
> -	busy_thread.stop = false;
> -	busy_thread.handle = fb->gem_handle;
> -	busy_thread.size = fb->size;
> -	busy_thread.stride = fb->strides[0];
> -	busy_thread.width = fb->width;
> -	busy_thread.height = fb->height;
> -	busy_thread.color = pick_color(fb, COLOR_PRIM_BG);
> -	busy_thread.bpp = igt_drm_format_to_bpp(fb->drm_format);
> -	busy_thread.tiling = igt_fb_mod_to_tiling(fb->modifier);
> +	for_each_pipe_with_valid_output(&drm.display, pipe, output) {
> +		drmModeConnectorPtr c = output->config.connector;
>   
> -	rc = pthread_create(&busy_thread.thread, NULL, busy_thread_func, NULL);
> -	igt_assert_eq(rc, 0);
> -}
> +		if (edp_only && c->connector_type != DRM_MODE_CONNECTOR_eDP)
> +			continue;
>   
> -static void stop_busy_thread(void)
> -{
> -	if (!busy_thread.stop) {
> -		busy_thread.stop = true;
> -		igt_assert(pthread_join(busy_thread.thread, NULL) == 0);
> -	}
> -}
> +		if (pipe_a && pipe != PIPE_A)
> +			continue;
>   
> -static void print_crc(const char *str, igt_crc_t *crc)
> -{
> -	char *pipe_str;
> +		if (output == forbidden_output || pipe == forbidden_pipe) {
> +			igt_output_set_pipe(output, pipe);
> +			igt_output_override_mode(output, connector_get_mode(output));
>   
> -	pipe_str = igt_crc_to_string(crc);
> +			continue;
> +		}
>   
> -	igt_debug("%s pipe:[%s]\n", str, pipe_str);
> +		if (c->connector_type == DRM_MODE_CONNECTOR_eDP && opt.no_edp)
> +			continue;
>   
> -	free(pipe_str);
> -}
> +		igt_output_set_pipe(output, pipe);
> +		igt_output_override_mode(output, connector_get_mode(output));
> +		if (intel_pipe_output_combo_valid(&drm.display)) {
> +			*ret_output = output;
> +			*ret_pipe = pipe;
> +			return true;
> +		}
> +	}
>   
> -static void collect_crc(igt_crc_t *crc)
> -{
> -	igt_pipe_crc_collect_crc(pipe_crc, crc);
> +	return false;
>   }
>   
> -static void init_blue_crc(enum pixel_format format, enum tiling_type tiling)
> +static bool init_modeset_cached_params(void)
>   {
> -	struct igt_fb blue;
> -
> -	if (blue_crcs[format].initialized)
> -		return;
> -
> -	create_fb(format, prim_mode_params.mode.hdisplay,
> -		  prim_mode_params.mode.vdisplay, tiling, PLANE_PRI,
> -		  &blue);
> -
> -	fill_fb(&blue, COLOR_PRIM_BG);
> -
> -	igt_output_set_pipe(prim_mode_params.output, prim_mode_params.pipe);
> -	igt_output_override_mode(prim_mode_params.output, &prim_mode_params.mode);
> -	igt_plane_set_fb(prim_mode_params.primary.plane, &blue);
> -	igt_display_commit(&drm.display);
> +	igt_output_t *prim_output = NULL, *scnd_output = NULL;
> +	enum pipe prim_pipe, scnd_pipe;
>   
> -	if (!pipe_crc) {
> -		pipe_crc = igt_pipe_crc_new(drm.fd, prim_mode_params.pipe,
> -					    IGT_PIPE_CRC_SOURCE_AUTO);
> -		igt_assert(pipe_crc);
> -	}
> +	/*
> +	 * We have this problem where PSR is only present on eDP monitors and
> +	 * FBC is only present on pipe A for some platforms. So we search first
> +	 * for the ideal case of eDP supporting pipe A, and try the less optimal
> +	 * configs later, sacrificing  one of the features.
> +	 * TODO: refactor the code in a way that allows us to have different
> +	 * sets of prim/scnd structs for different features.
> +	 */
> +	find_connector(true, true, NULL, PIPE_NONE, &prim_output, &prim_pipe);
> +	if (!prim_output)
> +		find_connector(true, false, NULL, PIPE_NONE, &prim_output, &prim_pipe);
> +	if (!prim_output)
> +		find_connector(false, true, NULL, PIPE_NONE, &prim_output, &prim_pipe);
> +	if (!prim_output)
> +		find_connector(false, false, NULL, PIPE_NONE, &prim_output, &prim_pipe);
>   
> -	collect_crc(&blue_crcs[format].crc);
> +	if (!prim_output)
> +		return false;
>   
> -	print_crc("Blue CRC:  ", &blue_crcs[format].crc);
> +	find_connector(false, false, prim_output, prim_pipe,
> +		       &scnd_output, &scnd_pipe);
>   
> -	igt_display_reset(&drm.display);
> +	init_mode_params(&prim_mode_params, prim_output, prim_pipe);
>   
> -	igt_remove_fb(drm.fd, &blue);
> +	if (!scnd_output) {
> +		scnd_mode_params.pipe = PIPE_NONE;
> +		scnd_mode_params.output = NULL;
> +		return true;
> +	}
>   
> -	blue_crcs[format].initialized = true;
> +	init_mode_params(&scnd_mode_params, scnd_output, scnd_pipe);
> +	return true;
>   }
>   
> -static void init_crcs(enum pixel_format format, enum tiling_type tiling,
> -		      struct draw_pattern_info *pattern)
> +static uint64_t tiling_to_modifier(enum tiling_type tiling)
>   {
> -	int r, r_;
> -	struct igt_fb tmp_fbs[pattern->n_rects];
> -
> -	if (pattern->initialized[format])
> -		return;
> -
> -	pattern->crcs[format] = calloc(pattern->n_rects,
> -				       sizeof(*(pattern->crcs[format])));
> -
> -	for (r = 0; r < pattern->n_rects; r++)
> -		create_fb(format, prim_mode_params.mode.hdisplay,
> -			  prim_mode_params.mode.vdisplay, tiling,
> -			  PLANE_PRI, &tmp_fbs[r]);
> -
> -	for (r = 0; r < pattern->n_rects; r++)
> -		fill_fb(&tmp_fbs[r], COLOR_PRIM_BG);
> -
> -	if (pattern->frames_stack) {
> -		for (r = 0; r < pattern->n_rects; r++)
> -			for (r_ = 0; r_ <= r; r_++)
> -				draw_rect_igt_fb(pattern, &tmp_fbs[r],
> -						 igt_draw_supports_method(drm.fd, IGT_DRAW_PWRITE) ?
> -						 IGT_DRAW_PWRITE : IGT_DRAW_BLT,
> -						 r_);
> -	} else {
> -		for (r = 0; r < pattern->n_rects; r++)
> -			draw_rect_igt_fb(pattern, &tmp_fbs[r], igt_draw_supports_method(drm.fd, IGT_DRAW_PWRITE) ?
> -					 IGT_DRAW_PWRITE : IGT_DRAW_BLT, r);
> +	switch (tiling) {
> +	case TILING_LINEAR:
> +		return DRM_FORMAT_MOD_LINEAR;
> +	case TILING_X:
> +		return I915_FORMAT_MOD_X_TILED;
> +	case TILING_Y:
> +		return I915_FORMAT_MOD_Y_TILED;
> +	case TILING_4:
> +		return I915_FORMAT_MOD_4_TILED;
> +	default:
> +		igt_assert(false);
>   	}
> +}
>   
> -	igt_output_set_pipe(prim_mode_params.output, prim_mode_params.pipe);
> -	igt_output_override_mode(prim_mode_params.output, &prim_mode_params.mode);
> -	for (r = 0; r < pattern->n_rects; r++) {
> -		igt_plane_set_fb(prim_mode_params.primary.plane, &tmp_fbs[r]);
> -		igt_display_commit(&drm.display);
> +static void create_fb(enum pixel_format pformat, int width, int height,
> +		      enum tiling_type tiling, int plane, struct igt_fb *fb)
> +{
> +	uint32_t format;
> +	uint64_t size, modifier;
> +	unsigned int stride;
>   
> -		collect_crc(&pattern->crcs[format][r]);
> +	switch (pformat) {
> +	case FORMAT_RGB888:
> +		if (plane == PLANE_CUR)
> +			format = DRM_FORMAT_ARGB8888;
> +		else
> +			format = DRM_FORMAT_XRGB8888;
> +		break;
> +	case FORMAT_RGB565:
> +		/* Only the primary plane supports 16bpp! */
> +		if (plane == PLANE_PRI)
> +			format = DRM_FORMAT_RGB565;
> +		else if (plane == PLANE_CUR)
> +			format = DRM_FORMAT_ARGB8888;
> +		else
> +			format = DRM_FORMAT_XRGB8888;
> +		break;
> +	case FORMAT_RGB101010:
> +		if (plane == PLANE_PRI)
> +			format = DRM_FORMAT_XRGB2101010;
> +		else if (plane == PLANE_CUR)
> +			format = DRM_FORMAT_ARGB8888;
> +		else
> +			format = DRM_FORMAT_XRGB8888;
> +		break;
> +	default:
> +		igt_assert(false);
>   	}
>   
> -	for (r = 0; r < pattern->n_rects; r++) {
> -		igt_debug("Rect %d CRC:", r);
> -		print_crc("", &pattern->crcs[format][r]);
> -	}
> +	modifier = tiling_to_modifier(tiling);
>   
> -	igt_display_reset(&drm.display);
> +	igt_warn_on(plane == PLANE_CUR && tiling != TILING_LINEAR);
>   
> -	for (r = 0; r < pattern->n_rects; r++)
> -		igt_remove_fb(drm.fd, &tmp_fbs[r]);
> +	igt_calc_fb_size(drm.fd, width, height, format, modifier, &size,
> +			 &stride);
>   
> -	pattern->initialized[format] = true;
> +	igt_create_fb_with_bo_size(drm.fd, width, height, format, modifier,
> +				   IGT_COLOR_YCBCR_BT709,
> +				   IGT_COLOR_YCBCR_LIMITED_RANGE,
> +				   fb, size, stride);
>   }
>   
> -static void setup_drm(void)
> +static uint32_t pick_color(struct igt_fb *fb, enum color ecolor)
>   {
> -	drm.fd = drm_open_driver_master(DRIVER_INTEL | DRIVER_XE);
> -	drm.debugfs = igt_debugfs_dir(drm.fd);
> +	uint32_t color, r, g, b, b2, a;
> +	bool alpha = false;
>   
> -	kmstest_set_vt_graphics_mode();
> -	igt_display_require(&drm.display, drm.fd);
> +	switch (fb->drm_format) {
> +	case DRM_FORMAT_RGB565:
> +		a =  0x0;
> +		r =  0x1F << 11;
> +		g =  0x3F << 5;
> +		b =  0x1F;
> +		b2 = 0x10;
> +		break;
> +	case DRM_FORMAT_ARGB8888:
> +		alpha = true;
> +	case DRM_FORMAT_XRGB8888:
> +		a =  0xFF << 24;
> +		r =  0xFF << 16;
> +		g =  0xFF << 8;
> +		b =  0xFF;
> +		b2 = 0x80;
> +		break;
> +	case DRM_FORMAT_ARGB2101010:
> +		alpha = true;
> +	case DRM_FORMAT_XRGB2101010:
> +		a = 0x3 << 30;
> +		r = 0x3FF << 20;
> +		g = 0x3FF << 10;
> +		b = 0x3FF;
> +		b2 = 0x200;
> +		break;
> +	default:
> +		igt_assert(false);
> +	}
>   
> -	drm.bops = buf_ops_create(drm.fd);
> -}
> +	switch (ecolor) {
> +	case COLOR_RED:
> +		color = r;
> +		break;
> +	case COLOR_GREEN:
> +		color = g;
> +		break;
> +	case COLOR_BLUE:
> +		color = b;
> +		break;
> +	case COLOR_MAGENTA:
> +		color = r | b;
> +		break;
> +	case COLOR_CYAN:
> +		color = g | b;
> +		break;
> +	case COLOR_SCND_BG:
> +		color = b2;
> +		break;
> +	default:
> +		igt_assert(false);
> +	}
>   
> -static void teardown_drm(void)
> -{
> -	buf_ops_destroy(drm.bops);
> -	igt_display_fini(&drm.display);
> -	drm_close_driver(drm.fd);
> -}
> +	if (alpha)
> +		color |= a;
>   
> -static void setup_modeset(void)
> -{
> -	igt_require(init_modeset_cached_params());
> -	offscreen_fb.fb = NULL;
> -	offscreen_fb.w = 1024;
> -	offscreen_fb.h = 1024;
> -	create_fbs(FORMAT_DEFAULT, opt.tiling);
> +	return color;
>   }
>   
> -static void teardown_modeset(void)
> +static void fill_fb(struct igt_fb *fb, enum color ecolor)
>   {
> -	enum pixel_format f;
> -
> -	for (f = 0; f < FORMAT_COUNT; f++)
> -		destroy_fbs(f);
> +	igt_draw_fill_fb(drm.fd, fb, pick_color(fb, ecolor));
>   }
>   
> -static void setup_crcs(void)
> +/*
> + * This is how the prim, scnd and offscreen FBs should be positioned inside the
> + * shared FB. The prim buffer starts at the X and Y offsets defined by
> + * opt.shared_fb_{x,y}_offset, then scnd starts at the same X pixel offset,
> + * right after prim ends on the Y axis, then the offscreen fb starts after scnd
> + * ends. Just like the picture:
> + *
> + * +-------------------------+
> + * | shared fb               |
> + * |   +------------------+  |
> + * |   | prim             |  |
> + * |   |                  |  |
> + * |   |                  |  |
> + * |   |                  |  |
> + * |   +------------------+--+
> + * |   | scnd                |
> + * |   |                     |
> + * |   |                     |
> + * |   +---------------+-----+
> + * |   | offscreen     |     |
> + * |   |               |     |
> + * |   |               |     |
> + * +---+---------------+-----+
> + *
> + * We do it vertically instead of the more common horizontal case in order to
> + * avoid super huge strides not supported by FBC.
> + */
> +static void create_shared_fb(enum pixel_format format, enum tiling_type tiling)
>   {
> -	enum pixel_format f;
> -
> -	for (f = 0; f < FORMAT_COUNT; f++)
> -		blue_crcs[f].initialized = false;
> +	int prim_w, prim_h, scnd_w, scnd_h, offs_w, offs_h, big_w, big_h;
> +	struct screen_fbs *s = &fbs[format];
>   
> -	pattern1.frames_stack = true;
> -	pattern1.n_rects = 4;
> -	pattern1.get_rect = pat1_get_rect;
> -	for (f = 0; f < FORMAT_COUNT; f++) {
> -		pattern1.initialized[f] = false;
> -		pattern1.crcs[f] = NULL;
> -	}
> +	prim_w = prim_mode_params.mode.hdisplay;
> +	prim_h = prim_mode_params.mode.vdisplay;
>   
> -	pattern2.frames_stack = true;
> -	pattern2.n_rects = 4;
> -	pattern2.get_rect = pat2_get_rect;
> -	for (f = 0; f < FORMAT_COUNT; f++) {
> -		pattern2.initialized[f] = false;
> -		pattern2.crcs[f] = NULL;
> +	if (scnd_mode_params.output) {
> +		scnd_w = scnd_mode_params.mode.hdisplay;
> +		scnd_h = scnd_mode_params.mode.vdisplay;
> +	} else {
> +		scnd_w = 0;
> +		scnd_h = 0;
>   	}
> +	offs_w = offscreen_fb.w;
> +	offs_h = offscreen_fb.h;
>   
> -	pattern3.frames_stack = false;
> -	pattern3.n_rects = 5;
> -	pattern3.get_rect = pat3_get_rect;
> -	for (f = 0; f < FORMAT_COUNT; f++) {
> -		pattern3.initialized[f] = false;
> -		pattern3.crcs[f] = NULL;
> -	}
> +	big_w = prim_w;
> +	if (scnd_w > big_w)
> +		big_w = scnd_w;
> +	if (offs_w > big_w)
> +		big_w = offs_w;
> +	big_w += opt.shared_fb_x_offset;
>   
> -	pattern4.frames_stack = false;
> -	pattern4.n_rects = 1;
> -	pattern4.get_rect = pat4_get_rect;
> -	for (f = 0; f < FORMAT_COUNT; f++) {
> -		pattern4.initialized[f] = false;
> -		pattern4.crcs[f] = NULL;
> -	}
> +	big_h = prim_h + scnd_h + offs_h + opt.shared_fb_y_offset;
> +
> +	create_fb(format, big_w, big_h, tiling, PLANE_PRI, &s->big);
>   }
>   
> -static void teardown_crcs(void)
> +static void destroy_fbs(enum pixel_format format)
>   {
> -	enum pixel_format f;
> +	struct screen_fbs *s = &fbs[format];
>   
> -	for (f = 0; f < FORMAT_COUNT; f++) {
> -		if (pattern1.crcs[f])
> -			free(pattern1.crcs[f]);
> -		if (pattern2.crcs[f])
> -			free(pattern2.crcs[f]);
> -		if (pattern3.crcs[f])
> -			free(pattern3.crcs[f]);
> -		if (pattern4.crcs[f])
> -			free(pattern4.crcs[f]);
> -	}
> +	if (!s->initialized)
> +		return;
>   
> -	igt_pipe_crc_free(pipe_crc);
> +	if (scnd_mode_params.output) {
> +		igt_remove_fb(drm.fd, &s->scnd_pri);
> +		igt_remove_fb(drm.fd, &s->scnd_cur);
> +		igt_remove_fb(drm.fd, &s->scnd_spr);
> +	}
> +	igt_remove_fb(drm.fd, &s->prim_pri);
> +	igt_remove_fb(drm.fd, &s->prim_cur);
> +	igt_remove_fb(drm.fd, &s->prim_spr);
> +	igt_remove_fb(drm.fd, &s->offscreen);
> +	igt_remove_fb(drm.fd, &s->big);
>   }
>   
> -static void setup_fbc(void)
> +static void create_fbs(enum pixel_format format, enum tiling_type tiling)
>   {
> -	if (!intel_fbc_supported_on_chipset(drm.fd, prim_mode_params.pipe)) {
> -		igt_info("Can't test FBC: not supported on this chipset\n");
> -		return;
> -	}
> +	struct screen_fbs *s = &fbs[format];
>   
> -	fbc.can_test = true;
> +	if (s->initialized)
> +		destroy_fbs(format);
>   
> -	fbc_setup_last_action();
> -}
> +	s->initialized = true;
>   
> -static void teardown_fbc(void)
> -{
> -}
> +	create_fb(format, prim_mode_params.mode.hdisplay,
> +		  prim_mode_params.mode.vdisplay, tiling, PLANE_PRI,
> +		  &s->prim_pri);
> +	create_fb(format, prim_mode_params.cursor.w,
> +		  prim_mode_params.cursor.h, DRM_FORMAT_MOD_LINEAR,
> +		  PLANE_CUR, &s->prim_cur);
> +	create_fb(format, prim_mode_params.sprite.w,
> +		  prim_mode_params.sprite.h, tiling, PLANE_SPR, &s->prim_spr);
>   
> -static void setup_psr(void)
> -{
> -	if (prim_mode_params.output->config.connector->connector_type !=
> -	    DRM_MODE_CONNECTOR_eDP) {
> -		igt_info("Can't test PSR: no usable eDP screen.\n");
> -		return;
> -	}
> +	create_fb(format, offscreen_fb.w, offscreen_fb.h, tiling, PLANE_PRI,
> +		  &s->offscreen);
>   
> -	if (!psr_sink_support(drm.fd, drm.debugfs, PSR_MODE_1, NULL)) {
> -		igt_info("Can't test PSR: not supported by sink.\n");
> +	create_shared_fb(format, tiling);
> +
> +	if (!scnd_mode_params.output)
>   		return;
> -	}
> -	psr.can_test = true;
> +
> +	create_fb(format, scnd_mode_params.mode.hdisplay,
> +		  scnd_mode_params.mode.vdisplay, tiling, PLANE_PRI,
> +		  &s->scnd_pri);
> +	create_fb(format, scnd_mode_params.cursor.w, scnd_mode_params.cursor.h,
> +		  DRM_FORMAT_MOD_LINEAR, PLANE_CUR, &s->scnd_cur);
> +	create_fb(format, scnd_mode_params.sprite.w, scnd_mode_params.sprite.h,
> +		  tiling, PLANE_SPR, &s->scnd_spr);
>   }
>   
> -static void teardown_psr(void)
> +static void __set_prim_plane_for_params(struct modeset_params *params)
>   {
> +	igt_plane_set_fb(params->primary.plane, params->primary.fb);
> +	igt_plane_set_position(params->primary.plane, 0, 0);
> +	igt_plane_set_size(params->primary.plane, params->mode.hdisplay, params->mode.vdisplay);
> +	igt_fb_set_position(params->primary.fb, params->primary.plane,
> +			    params->primary.x, params->primary.y);
> +	igt_fb_set_size(params->primary.fb, params->primary.plane,
> +			params->mode.hdisplay, params->mode.vdisplay);
>   }
>   
> -static void setup_drrs(void)
> +static void __set_mode_for_params(struct modeset_params *params)
>   {
> -	if (!intel_output_has_drrs(drm.fd, prim_mode_params.output)) {
> -		igt_info("Can't test DRRS: no usable screen.\n");
> -		return;
> -	}
> -
> -	if (!intel_is_drrs_supported(drm.fd, prim_mode_params.pipe)) {
> -		igt_info("Can't test DRRS: Not supported.\n");
> -		return;
> -	}
> +	igt_output_override_mode(params->output, &params->mode);
> +	igt_output_set_pipe(params->output, params->pipe);
>   
> -	drrs.can_test = true;
> +	__set_prim_plane_for_params(params);
>   }
>   
> -static void setup_environment(void)
> +static void set_mode_for_params(struct modeset_params *params)
>   {
> -	setup_drm();
> -	setup_modeset();
> +	__set_mode_for_params(params);
> +	igt_display_commit(&drm.display);
> +}
>   
> -	setup_fbc();
> -	setup_psr();
> -	setup_drrs();
> +static void __debugfs_read_crtc(const char *param, char *buf, int len)
> +{
> +	int dir;
> +	enum pipe pipe;
>   
> -	setup_crcs();
> +	pipe = prim_mode_params.pipe;
> +	dir = igt_debugfs_pipe_dir(drm.fd, pipe, O_DIRECTORY);
> +	igt_require_fd(dir);
> +	igt_debugfs_simple_read(dir, param, buf, len);
> +	close(dir);
>   }
>   
> -static void teardown_environment(void)
> +#define debugfs_read_crtc(p, arr) __debugfs_read_crtc(p, arr, sizeof(arr))
> +#define debugfs_write_crtc(p, arr) __debugfs_write_crtc(p, arr, sizeof(arr))
> +#define debugfs_read_connector(p, arr) __debugfs_read_connector(p, arr, sizeof(arr))
> +
> +static bool is_drrs_high(void)
>   {
> -	stop_busy_thread();
> +	char buf[MAX_DRRS_STATUS_BUF_LEN];
>   
> -	teardown_crcs();
> -	teardown_psr();
> -	teardown_fbc();
> -	teardown_modeset();
> -	teardown_drm();
> +	debugfs_read_crtc("i915_drrs_status", buf);
> +	return strstr(buf, "DRRS refresh rate: high");
>   }
>   
> -static void wait_user(int step, const char *msg)
> +static bool is_drrs_low(void)
>   {
> -	if (opt.step < step)
> -		return;
> +	char buf[MAX_DRRS_STATUS_BUF_LEN];
>   
> -	igt_info("%s Press enter...\n", msg);
> -	while (getchar() != '\n')
> -		;
> +	debugfs_read_crtc("i915_drrs_status", buf);
> +	return strstr(buf, "DRRS refresh rate: low");
>   }
>   
> -static struct modeset_params *pick_params(const struct test_mode *t)
> +static void drrs_print_status(void)
>   {
> -	switch (t->screen) {
> -	case SCREEN_PRIM:
> -		return &prim_mode_params;
> -	case SCREEN_SCND:
> -		return &scnd_mode_params;
> -	case SCREEN_OFFSCREEN:
> -		return NULL;
> -	default:
> -		igt_assert(false);
> -	}
> +	char buf[MAX_DRRS_STATUS_BUF_LEN];
> +
> +	debugfs_read_crtc("i915_drrs_status", buf);
> +	igt_info("DRRS STATUS :\n%s\n", buf);
>   }
>   
> -static struct fb_region *pick_target(const struct test_mode *t,
> -				     struct modeset_params *params)
> +static struct timespec fbc_get_last_action(void)
>   {
> -	if (!params)
> -		return &offscreen_fb;
> +	struct timespec ret = { 0, 0 };
> +	char buf[128];
> +	char *action;
> +	ssize_t n_read;
>   
> -	switch (t->plane) {
> -	case PLANE_PRI:
> -		return &params->primary;
> -	case PLANE_CUR:
> -		return &params->cursor;
> -	case PLANE_SPR:
> -		return &params->sprite;
> -	default:
> -		igt_assert(false);
> -	}
> +
> +	debugfs_read_crtc("i915_fbc_status", buf);
> +	action = strstr(buf, "\nLast action:");
> +	igt_assert(action);
> +
> +	n_read = sscanf(action, "Last action: %ld.%ld",
> +			&ret.tv_sec, &ret.tv_nsec);
> +	igt_assert(n_read == 2);
> +
> +	return ret;
>   }
>   
> -static void do_flush(const struct test_mode *t)
> +static bool fbc_last_action_changed(void)
>   {
> -	struct modeset_params *params = pick_params(t);
> -	struct fb_region *target = pick_target(t, params);
> +	struct timespec t_new, t_old;
>   
> -	if (is_i915_device(drm.fd))
> -		gem_set_domain(drm.fd, target->fb->gem_handle, I915_GEM_DOMAIN_GTT, 0);
> -}
> +	t_old = fbc.last_action;
> +	t_new = fbc_get_last_action();
>   
> -#define DONT_ASSERT_CRC			(1 << 0)
> -#define DONT_ASSERT_FEATURE_STATUS	(1 << 1)
> -#define DONT_ASSERT_FBC_STATUS		(1 << 12)
> +	fbc.last_action = t_new;
>   
> -#define FBC_ASSERT_FLAGS		(0xF << 2)
> -#define ASSERT_FBC_ENABLED		(1 << 2)
> -#define ASSERT_FBC_DISABLED		(1 << 3)
> -#define ASSERT_LAST_ACTION_CHANGED	(1 << 4)
> -#define ASSERT_NO_ACTION_CHANGE		(1 << 5)
> +#if 0
> +	igt_info("old: %ld.%ld\n", t_old.tv_sec, t_old.tv_nsec);
> +	igt_info("new: %ld.%ld\n", t_new.tv_sec, t_new.tv_nsec);
> +#endif
>   
> -#define PSR_ASSERT_FLAGS		(3 << 6)
> -#define ASSERT_PSR_ENABLED		(1 << 6)
> -#define ASSERT_PSR_DISABLED		(1 << 7)
> +	return t_old.tv_sec != t_new.tv_sec ||
> +	       t_old.tv_nsec != t_new.tv_nsec;
> +}
>   
> -#define DRRS_ASSERT_FLAGS		(7 << 8)
> -#define ASSERT_DRRS_HIGH		(1 << 8)
> -#define ASSERT_DRRS_LOW			(1 << 9)
> -#define ASSERT_DRRS_INACTIVE		(1 << 10)
> +static void fbc_update_last_action(void)
> +{
> +	if (!fbc.supports_last_action)
> +		return;
> +
> +	fbc.last_action = fbc_get_last_action();
>   
> -#define ASSERT_NO_IDLE_GPU		(1 << 11)
> +#if 0
> +	igt_info("Last action: %ld.%ld\n",
> +		 fbc.last_action.tv_sec, fbc.last_action.tv_nsec);
> +#endif
> +}
>   
> -static int adjust_assertion_flags(const struct test_mode *t, int flags)
> +static void fbc_setup_last_action(void)
>   {
> -	if (!(flags & DONT_ASSERT_FEATURE_STATUS)) {
> -		if (!(flags & ASSERT_FBC_DISABLED))
> -			flags |= ASSERT_FBC_ENABLED;
> -		if (!(flags & ASSERT_PSR_DISABLED))
> -			flags |= ASSERT_PSR_ENABLED;
> -		if (!((flags & ASSERT_DRRS_LOW) ||
> -		    (flags & ASSERT_DRRS_INACTIVE)))
> -			flags |= ASSERT_DRRS_HIGH;
> +	ssize_t n_read;
> +	char buf[128];
> +	char *action;
> +
> +
> +	debugfs_read_crtc("i915_fbc_status", buf);
> +	action = strstr(buf, "\nLast action:");
> +	if (!action) {
> +		igt_info("FBC last action not supported\n");
> +		return;
>   	}
>   
> -	if ((t->feature & FEATURE_FBC) == 0 || (flags & DONT_ASSERT_FBC_STATUS))
> -		flags &= ~FBC_ASSERT_FLAGS;
> -	if ((t->feature & FEATURE_PSR) == 0)
> -		flags &= ~PSR_ASSERT_FLAGS;
> -	if ((t->feature & FEATURE_DRRS) == 0)
> -		flags &= ~DRRS_ASSERT_FLAGS;
> +	fbc.supports_last_action = true;
>   
> -	return flags;
> +	n_read = sscanf(action, "Last action: %ld.%ld",
> +			&fbc.last_action.tv_sec, &fbc.last_action.tv_nsec);
> +	igt_assert(n_read == 2);
>   }
>   
> -static void do_crc_assertions(int flags)
> +static bool fbc_is_compressing(void)
>   {
> -	igt_crc_t crc;
> -
> -	if (!opt.check_crc || (flags & DONT_ASSERT_CRC))
> -		return;
> +	char buf[128];
>   
> -	collect_crc(&crc);
> -	print_crc("Calculated CRC:", &crc);
> +	debugfs_read_crtc("i915_fbc_status", buf);
> +	return strstr(buf, "\nCompressing: yes\n") != NULL;
> +}
>   
> -	igt_assert(wanted_crc);
> -	igt_assert_crc_equal(&crc, wanted_crc);
> +static bool fbc_wait_for_compression(void)
> +{
> +	return igt_wait(fbc_is_compressing(), 2000, 1);
>   }
>   
> -static void do_status_assertions(int flags)
> +static bool fbc_not_enough_stolen(void)
>   {
> -	if (!opt.check_status) {
> -		/* Make sure we settle before continuing. */
> -		sleep(1);
> -		return;
> -	}
> +	char buf[128];
>   
> -	if (flags & ASSERT_DRRS_HIGH) {
> -		if (!is_drrs_high()) {
> -			drrs_print_status();
> -			igt_assert_f(false, "DRRS HIGH\n");
> -		}
> -	} else if (flags & ASSERT_DRRS_LOW) {
> -		if (!drrs_wait_until_rr_switch_to_low()) {
> -			drrs_print_status();
> -			igt_assert_f(false, "DRRS LOW\n");
> -		}
> -	} else if (flags & ASSERT_DRRS_INACTIVE) {
> -		if (!intel_is_drrs_inactive(drm.fd, prim_mode_params.pipe)) {
> -			drrs_print_status();
> -			igt_assert_f(false, "DRRS INACTIVE\n");
> -		}
> -	}
> +	debugfs_read_crtc("i915_fbc_status", buf);
> +	return strstr(buf, "FBC disabled: not enough stolen memory\n");
> +}
>   
> -	if (flags & ASSERT_FBC_ENABLED) {
> -		igt_require(!fbc_not_enough_stolen());
> -		igt_require(!fbc_stride_not_supported());
> -		igt_require(!fbc_mode_too_large());
> -		if (!intel_fbc_wait_until_enabled(drm.fd, prim_mode_params.pipe)) {
> -			igt_assert_f(intel_fbc_is_enabled(drm.fd,
> -						    prim_mode_params.pipe,
> -						    IGT_LOG_WARN),
> -				     "FBC disabled\n");
> -		}
> +static bool fbc_stride_not_supported(void)
> +{
> +	char buf[128];
>   
> -		if (opt.fbc_check_compression)
> -			igt_assert(fbc_wait_for_compression());
> -	} else if (flags & ASSERT_FBC_DISABLED) {
> -		igt_assert(!intel_fbc_wait_until_enabled(drm.fd,
> -						   prim_mode_params.pipe));
> -	}
> +	debugfs_read_crtc("i915_fbc_status", buf);
> +	return strstr(buf, "FBC disabled: framebuffer stride not supported\n");
> +}
>   
> -	if (flags & ASSERT_PSR_ENABLED)
> -		igt_assert_f(psr_wait_entry(drm.debugfs, PSR_MODE_1, NULL),
> -			     "PSR still disabled\n");
> -	else if (flags & ASSERT_PSR_DISABLED)
> -		igt_assert_f(psr_wait_update(drm.debugfs, PSR_MODE_1, NULL),
> -			     "PSR still enabled\n");
> +static bool fbc_mode_too_large(void)
> +{
> +	char buf[128];
> +
> +	debugfs_read_crtc("i915_fbc_status", buf);
> +	return strstr(buf, "FBC disabled: mode too large for compression\n");
>   }
>   
> -static void __do_assertions(const struct test_mode *t, int flags,
> -			    int line)
> +static bool fbc_enable_per_plane(int plane_index, enum pipe pipe)
>   {
> -	flags = adjust_assertion_flags(t, flags);
> +	char buf[PATH_MAX];
> +	char buf_plane[128];
>   
> -	/* Make sure any submitted rendering is now idle. */
> -	if (!(flags & ASSERT_NO_IDLE_GPU))
> -		gem_quiescent_gpu(drm.fd);
> +	sprintf(buf_plane, "%d%s", plane_index, kmstest_pipe_name(pipe));
>   
> -	igt_debug("checking asserts in line %i\n", line);
> +	debugfs_read_crtc("i915_fbc_status", buf);
> +	return strstr(strstr(buf, "*"), buf_plane);
> +}
>   
> -	wait_user(2, "Paused before assertions.");
> +static bool drrs_wait_until_rr_switch_to_low(void)
> +{
> +	return igt_wait(is_drrs_low(), 5000, 1);
> +}
>   
> -	/* Check the CRC to make sure the drawing operations work
> -	 * immediately, independently of the features being enabled. */
> -	do_crc_assertions(flags);
> +static struct rect pat1_get_rect(struct fb_region *fb, int r)
> +{
> +	struct rect rect;
>   
> -	/* Now we can flush things to make the test faster. */
> -	do_flush(t);
> +	switch (r) {
> +	case 0:
> +		rect.x = 0;
> +		rect.y = 0;
> +		rect.w = fb->w / 8;
> +		rect.h = fb->h / 8;
> +		rect.color = pick_color(fb->fb, COLOR_GREEN);
> +		break;
> +	case 1:
> +		rect.x = fb->w / 8 * 4;
> +		rect.y = fb->h / 8 * 4;
> +		rect.w = fb->w / 8 * 2;
> +		rect.h = fb->h / 8 * 2;
> +		rect.color = pick_color(fb->fb, COLOR_RED);
> +		break;
> +	case 2:
> +		rect.x = fb->w / 16 + 1;
> +		rect.y = fb->h / 16 + 1;
> +		rect.w = fb->w / 8 + 1;
> +		rect.h = fb->h / 8 + 1;
> +		rect.color = pick_color(fb->fb, COLOR_MAGENTA);
> +		break;
> +	case 3:
> +		rect.x = fb->w - 1;
> +		rect.y = fb->h - 1;
> +		rect.w = 1;
> +		rect.h = 1;
> +		rect.color = pick_color(fb->fb, COLOR_CYAN);
> +		break;
> +	default:
> +		igt_assert(false);
> +	}
>   
> -	do_status_assertions(flags);
> +	return rect;
> +}
>   
> -	/* Check CRC again to make sure the compressed screen is ok,
> -	 * except if we're not drawing on the primary screen. On this
> -	 * case, the first check should be enough and a new CRC check
> -	 * would only delay the test suite while adding no value to the
> -	 * test suite. */
> -	if (t->screen == SCREEN_PRIM)
> -		do_crc_assertions(flags);
> +static struct rect pat2_get_rect(struct fb_region *fb, int r)
> +{
> +	struct rect rect;
>   
> -	if (fbc.supports_last_action && opt.fbc_check_last_action) {
> -		if (flags & ASSERT_LAST_ACTION_CHANGED)
> -			igt_assert(fbc_last_action_changed());
> -		else if (flags & ASSERT_NO_ACTION_CHANGE)
> -			igt_assert(!fbc_last_action_changed());
> +	rect.x = 0;
> +	rect.y = 0;
> +	rect.w = 64;
> +	rect.h = 64;
> +
> +	switch (r) {
> +	case 0:
> +		rect.color = pick_color(fb->fb, COLOR_GREEN);
> +		break;
> +	case 1:
> +		rect.x = 31;
> +		rect.y = 31;
> +		rect.w = 31;
> +		rect.h = 31;
> +		rect.color = pick_color(fb->fb, COLOR_RED);
> +		break;
> +	case 2:
> +		rect.x = 16;
> +		rect.y = 16;
> +		rect.w = 32;
> +		rect.h = 32;
> +		rect.color = pick_color(fb->fb, COLOR_MAGENTA);
> +		break;
> +	case 3:
> +		rect.color = pick_color(fb->fb, COLOR_CYAN);
> +		break;
> +	default:
> +		igt_assert(false);
>   	}
>   
> -	wait_user(1, "Paused after assertions.");
> +	return rect;
>   }
>   
> -#define do_assertions(__flags) __do_assertions(t, (__flags), __LINE__)
> -
> -static void enable_prim_screen_and_wait(const struct test_mode *t)
> +static struct rect pat3_get_rect(struct fb_region *fb, int r)
>   {
> -	fill_fb_region(&prim_mode_params.primary, t->method, COLOR_PRIM_BG);
> -	set_mode_for_params(&prim_mode_params);
> +	struct rect rect;
>   
> -	wanted_crc = &blue_crcs[t->format].crc;
> -	fbc_update_last_action();
> +	rect.w = 64;
> +	rect.h = 64;
> +	rect.color = pick_color(fb->fb, COLOR_GREEN);
> +
> +	switch (r) {
> +	case 0:
> +		rect.x = 0;
> +		rect.y = 0;
> +		break;
> +	case 1:
> +		rect.x = 64;
> +		rect.y = 64;
> +		break;
> +	case 2:
> +		rect.x = 1;
> +		rect.y = 1;
> +		break;
> +	case 3:
> +		rect.x = fb->w - 64;
> +		rect.y = fb->h - 64;
> +		break;
> +	case 4:
> +		rect.x = fb->w / 2 - 32;
> +		rect.y = fb->h / 2 - 32;
> +		break;
> +	default:
> +		igt_assert(false);
> +	}
>   
> -	do_assertions(ASSERT_NO_ACTION_CHANGE);
> +	return rect;
>   }
>   
> -static void update_modeset_cached_params(enum igt_draw_method method)
> +static struct rect pat4_get_rect(struct fb_region *fb, int r)
>   {
> -	bool found = false;
> -
> -	igt_output_set_pipe(prim_mode_params.output, prim_mode_params.pipe);
> -	igt_output_set_pipe(scnd_mode_params.output, scnd_mode_params.pipe);
> -
> -	found = igt_override_all_active_output_modes_to_fit_bw(&drm.display);
> -	igt_require_f(found, "No valid mode combo found.\n");
> -
> -	prim_mode_params.mode = *igt_output_get_mode(prim_mode_params.output);
> -	prim_mode_params.primary.w = prim_mode_params.mode.hdisplay;
> -	prim_mode_params.primary.h = prim_mode_params.mode.vdisplay;
> +	struct rect rect;
>   
> -	scnd_mode_params.mode = *igt_output_get_mode(scnd_mode_params.output);
> -	scnd_mode_params.primary.w = scnd_mode_params.mode.hdisplay;
> -	scnd_mode_params.primary.h = scnd_mode_params.mode.vdisplay;
> +	igt_assert_eq(r, 0);
>   
> -	fill_fb_region(&prim_mode_params.primary, method, COLOR_PRIM_BG);
> -	fill_fb_region(&scnd_mode_params.primary, method, COLOR_SCND_BG);
> +	rect.x = 0;
> +	rect.y = 0;
> +	rect.w = fb->w;
> +	rect.h = fb->h;
> +	rect.color = pick_color(fb->fb, COLOR_GREEN);
>   
> -	__set_mode_for_params(&prim_mode_params);
> -	__set_mode_for_params(&scnd_mode_params);
> +	return rect;
>   }
>   
> -static void enable_both_screens_and_wait(const struct test_mode *t)
> +static void fb_dirty_ioctl(struct fb_region *fb, struct rect *rect)
>   {
> -	int ret;
> -
> -	fill_fb_region(&prim_mode_params.primary, t->method, COLOR_PRIM_BG);
> -	fill_fb_region(&scnd_mode_params.primary, t->method, COLOR_SCND_BG);
> -
> -	__set_mode_for_params(&prim_mode_params);
> -	__set_mode_for_params(&scnd_mode_params);
> +	int rc;
> +	drmModeClip clip = {
> +		.x1 = rect->x,
> +		.x2 = rect->x + rect->w,
> +		.y1 = rect->y,
> +		.y2 = rect->y + rect->h,
> +	};
>   
> -	if (drm.display.is_atomic)
> -		ret = igt_display_try_commit_atomic(&drm.display,
> -				DRM_MODE_ATOMIC_TEST_ONLY |
> -				DRM_MODE_ATOMIC_ALLOW_MODESET,
> -				NULL);
> -	else
> -		ret = igt_display_try_commit2(&drm.display, COMMIT_LEGACY);
> +	rc = drmModeDirtyFB(drm.fd, fb->fb->fb_id, &clip, 1);
>   
> -	if (ret)
> -		update_modeset_cached_params(t->method);
> +	igt_assert(rc == 0 || rc == -ENOSYS);
> +}
>   
> -	igt_display_commit2(&drm.display, drm.display.is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
> +static void draw_rect(struct draw_pattern_info *pattern, struct fb_region *fb,
> +		      enum igt_draw_method method, int r)
> +{
> +	struct rect rect = pattern->get_rect(fb, r);
>   
> -	wanted_crc = &blue_crcs[t->format].crc;
> -	fbc_update_last_action();
> +	igt_draw_rect_fb(drm.fd, drm.bops, 0, fb->fb, method,
> +			 fb->x + rect.x, fb->y + rect.y,
> +			 rect.w, rect.h, rect.color);
>   
> -	do_assertions(ASSERT_NO_ACTION_CHANGE);
> +	fb_dirty_ioctl(fb, &rect);
>   }
>   
> -static void set_region_for_test(const struct test_mode *t,
> -				struct fb_region *reg)
> +static void draw_rect_igt_fb(struct draw_pattern_info *pattern,
> +			     struct igt_fb *fb, enum igt_draw_method method,
> +			     int r)
>   {
> -	fill_fb_region(reg, t->method, COLOR_PRIM_BG);
> -
> -	igt_plane_set_fb(reg->plane, reg->fb);
> -	igt_plane_set_position(reg->plane, 0, 0);
> -	igt_plane_set_size(reg->plane, reg->w, reg->h);
> -	igt_fb_set_size(reg->fb, reg->plane, reg->w, reg->h);
> +	struct fb_region region = {
> +		.fb = fb,
> +		.x = 0,
> +		.y = 0,
> +		.w = fb->width,
> +		.h = fb->height,
> +	};
>   
> -	igt_display_commit(&drm.display);
> -	do_assertions(ASSERT_NO_ACTION_CHANGE);
> +	draw_rect(pattern, &region, method, r);
>   }
>   
> -static void set_plane_for_test_fbc(const struct test_mode *t, igt_plane_t *plane)
> +static void fill_fb_region(struct fb_region *region,
> +			   enum igt_draw_method method,
> +			   enum color ecolor)
>   {
> -	struct igt_fb fb;
> -	uint32_t color;
> -
> -	igt_info("Testing fbc on plane %i%s\n", plane->index + 1, kmstest_pipe_name(prim_mode_params.pipe));
> +	uint32_t color = pick_color(region->fb, ecolor);
>   
> -	create_fb(t->format, prim_mode_params.mode.hdisplay, prim_mode_params.mode.vdisplay, t->tiling, t->plane, &fb);
> -	color = pick_color(&fb, COLOR_PRIM_BG);
> -	igt_draw_rect_fb(drm.fd, drm.bops, 0, &fb, t->method,
> -			 0, 0, fb.width, fb.height,
> +	igt_draw_rect_fb(drm.fd, drm.bops, 0, region->fb, method,
> +			 region->x, region->y, region->w, region->h,
>   			 color);
> +}
>   
> -	igt_plane_set_fb(plane, &fb);
> -	igt_plane_set_position(plane, 0, 0);
> -	igt_plane_set_size(plane, prim_mode_params.mode.hdisplay, prim_mode_params.mode.vdisplay);
> -	igt_fb_set_size(&fb, plane, prim_mode_params.mode.hdisplay, prim_mode_params.mode.vdisplay);
> -	igt_display_commit_atomic(&drm.display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
> -
> -	fbc_update_last_action();
> -	do_assertions(ASSERT_FBC_ENABLED | ASSERT_NO_ACTION_CHANGE);
> -	igt_assert_f(fbc_enable_per_plane(plane->index + 1, prim_mode_params.pipe), "FBC disabled\n");
> +static void _fb_dirty_ioctl(struct fb_region *region)
> +{
> +	struct rect rect;
>   
> -	igt_remove_fb(drm.fd, &fb);
> -	igt_plane_set_fb(plane, NULL);
> -	igt_display_commit2(&drm.display, COMMIT_ATOMIC);
> +	rect.x = region->x;
> +	rect.y = region->y;
> +	rect.w = region->w;
> +	rect.h = region->h;
> +	fb_dirty_ioctl(region, &rect);
>   }
>   
> -static bool enable_features_for_test(const struct test_mode *t)
> +static void unset_all_crtcs(void)
>   {
> -	bool ret = false;
> +	igt_display_reset(&drm.display);
> +	igt_display_commit(&drm.display);
> +}
>   
> +static bool disable_features(const struct test_mode *t)
> +{
>   	if (t->feature == FEATURE_DEFAULT)
>   		return false;
>   
> -	if (t->feature & FEATURE_FBC)
> -		intel_fbc_enable(drm.fd);
> -	if (t->feature & FEATURE_PSR)
> -		ret = psr_enable(drm.fd, drm.debugfs, PSR_MODE_1);
> -	if (t->feature & FEATURE_DRRS)
> -		intel_drrs_enable(drm.fd, prim_mode_params.pipe);
> +	intel_fbc_disable(drm.fd);
> +	intel_drrs_disable(drm.fd, prim_mode_params.pipe);
>   
> -	return ret;
> +	return psr.can_test ? psr_disable(drm.fd, drm.debugfs) : false;
>   }
>   
> -static void check_test_requirements(const struct test_mode *t)
> +static void *busy_thread_func(void *data)
>   {
> -	int ver;
> -
> -	if (t->pipes == PIPE_DUAL)
> -		igt_require_f(scnd_mode_params.output,
> -			    "Can't test dual pipes with the current outputs\n");
> -
> -	if (t->feature & FEATURE_FBC)
> -		igt_require_f(fbc.can_test,
> -			      "Can't test FBC with this chipset\n");
> -
> -	if (t->feature & FEATURE_PSR) {
> -		igt_require_f(psr.can_test,
> -			      "Can't test PSR with the current outputs\n");
> -	}
> -
> -	if (t->feature & FEATURE_DRRS)
> -		igt_require_f(drrs.can_test,
> -			      "Can't test DRRS with the current outputs\n");
> -
> -	/*
> -	 * In kernel, When PSR is enabled, DRRS will be disabled. So If a test
> -	 * case needs DRRS + PSR enabled, that will be skipped.
> -	 */
> -	igt_require_f(!((t->feature & FEATURE_PSR) &&
> -		      (t->feature & FEATURE_DRRS)),
> -		      "Can't test PSR and DRRS together\n");
> -
> -	if (opt.only_pipes != PIPE_COUNT)
> -		igt_require(t->pipes == opt.only_pipes);
> -
> -	/* Kernel disables fbc for display versions 12 and 13 if psr is enabled. */
> -	ver = intel_display_ver(intel_get_drm_devid(drm.fd));
> -	if (ver >= 12 && ver <= 13)
> -		igt_require_f(!((t->feature & FEATURE_PSR) &&
> -				(t->feature & FEATURE_FBC)),
> -			      "Can't test PSR and FBC together\n");
> +	while (!busy_thread.stop)
> +		igt_draw_rect(drm.fd, drm.bops, 0, busy_thread.handle,
> +			      busy_thread.size, busy_thread.stride,
> +			      busy_thread.tiling, IGT_DRAW_BLT, 0, 0,
> +			      busy_thread.width, busy_thread.height,
> +			      busy_thread.color, busy_thread.bpp);
>   
> +	pthread_exit(0);
>   }
>   
> -static void set_crtc_fbs(const struct test_mode *t)
> +static void start_busy_thread(struct igt_fb *fb)
>   {
> -	struct screen_fbs *s = &fbs[t->format];
> +	int rc;
>   
> -	create_fbs(t->format, t->tiling);
> +	igt_assert(busy_thread.stop == true);
> +	busy_thread.stop = false;
> +	busy_thread.handle = fb->gem_handle;
> +	busy_thread.size = fb->size;
> +	busy_thread.stride = fb->strides[0];
> +	busy_thread.width = fb->width;
> +	busy_thread.height = fb->height;
> +	busy_thread.color = pick_color(fb, COLOR_PRIM_BG);
> +	busy_thread.bpp = igt_drm_format_to_bpp(fb->drm_format);
> +	busy_thread.tiling = igt_fb_mod_to_tiling(fb->modifier);
>   
> -	switch (t->fbs) {
> -	case FBS_INDIVIDUAL:
> -		prim_mode_params.primary.fb = &s->prim_pri;
> -		scnd_mode_params.primary.fb = &s->scnd_pri;
> -		offscreen_fb.fb = &s->offscreen;
> +	rc = pthread_create(&busy_thread.thread, NULL, busy_thread_func, NULL);
> +	igt_assert_eq(rc, 0);
> +}
>   
> -		prim_mode_params.primary.x = 0;
> -		scnd_mode_params.primary.x = 0;
> -		offscreen_fb.x = 0;
> +static void stop_busy_thread(void)
> +{
> +	if (!busy_thread.stop) {
> +		busy_thread.stop = true;
> +		igt_assert(pthread_join(busy_thread.thread, NULL) == 0);
> +	}
> +}
>   
> -		prim_mode_params.primary.y = 0;
> -		scnd_mode_params.primary.y = 0;
> -		offscreen_fb.y = 0;
> -		break;
> -	case FBS_SHARED:
> -		/* Please see the comment at the top of create_shared_fb(). */
> -		prim_mode_params.primary.fb = &s->big;
> -		scnd_mode_params.primary.fb = &s->big;
> -		offscreen_fb.fb = &s->big;
> +static void print_crc(const char *str, igt_crc_t *crc)
> +{
> +	char *pipe_str;
>   
> -		prim_mode_params.primary.x = opt.shared_fb_x_offset;
> -		scnd_mode_params.primary.x = opt.shared_fb_x_offset;
> -		offscreen_fb.x = opt.shared_fb_x_offset;
> +	pipe_str = igt_crc_to_string(crc);
>   
> -		prim_mode_params.primary.y = opt.shared_fb_y_offset;
> -		scnd_mode_params.primary.y = prim_mode_params.primary.y +
> -					prim_mode_params.primary.h;
> -		offscreen_fb.y = scnd_mode_params.primary.y + scnd_mode_params.primary.h;
> -		break;
> -	default:
> -		igt_assert(false);
> -	}
> +	igt_debug("%s pipe:[%s]\n", str, pipe_str);
>   
> -	prim_mode_params.cursor.fb = &s->prim_cur;
> -	prim_mode_params.sprite.fb = &s->prim_spr;
> -	scnd_mode_params.cursor.fb = &s->scnd_cur;
> -	scnd_mode_params.sprite.fb = &s->scnd_spr;
> +	free(pipe_str);
>   }
>   
> -static void prepare_subtest_data(const struct test_mode *t,
> -				 struct draw_pattern_info *pattern)
> +static void collect_crc(igt_crc_t *crc)
>   {
> -	bool need_modeset;
> +	igt_pipe_crc_collect_crc(pipe_crc, crc);
> +}
>   
> -	check_test_requirements(t);
> +static void init_blue_crc(enum pixel_format format, enum tiling_type tiling)
> +{
> +	struct igt_fb blue;
>   
> -	stop_busy_thread();
> +	if (blue_crcs[format].initialized)
> +		return;
>   
> -	need_modeset = disable_features(t);
> -	set_crtc_fbs(t);
> +	create_fb(format, prim_mode_params.mode.hdisplay,
> +		  prim_mode_params.mode.vdisplay, tiling, PLANE_PRI,
> +		  &blue);
>   
> -	if (t->screen == SCREEN_OFFSCREEN)
> -		fill_fb_region(&offscreen_fb, t->method, COLOR_OFFSCREEN_BG);
> +	fill_fb(&blue, COLOR_PRIM_BG);
>   
> -	igt_display_reset(&drm.display);
> -	if (need_modeset)
> -		igt_display_commit(&drm.display);
> +	igt_output_set_pipe(prim_mode_params.output, prim_mode_params.pipe);
> +	igt_output_override_mode(prim_mode_params.output, &prim_mode_params.mode);
> +	igt_plane_set_fb(prim_mode_params.primary.plane, &blue);
> +	igt_display_commit(&drm.display);
>   
> -	init_blue_crc(t->format, t->tiling);
> -	if (pattern)
> -		init_crcs(t->format, t->tiling, pattern);
> +	if (!pipe_crc) {
> +		pipe_crc = igt_pipe_crc_new(drm.fd, prim_mode_params.pipe,
> +					    IGT_PIPE_CRC_SOURCE_AUTO);
> +		igt_assert(pipe_crc);
> +	}
>   
> -	need_modeset = enable_features_for_test(t);
> -	if (need_modeset)
> -		igt_display_commit(&drm.display);
> -}
> +	collect_crc(&blue_crcs[format].crc);
>   
> -static void prepare_subtest_screens(const struct test_mode *t)
> -{
> -	if (t->pipes == PIPE_DUAL)
> -		enable_both_screens_and_wait(t);
> -	else
> -		enable_prim_screen_and_wait(t);
> +	print_crc("Blue CRC:  ", &blue_crcs[format].crc);
>   
> -	if (t->screen == SCREEN_PRIM) {
> -		if (t->plane == PLANE_CUR)
> -			set_region_for_test(t, &prim_mode_params.cursor);
> -		if (t->plane == PLANE_SPR)
> -			set_region_for_test(t, &prim_mode_params.sprite);
> -	}
> +	igt_display_reset(&drm.display);
>   
> -	if (t->pipes == PIPE_DUAL && t->screen == SCREEN_SCND) {
> -		if (t->plane == PLANE_CUR)
> -			set_region_for_test(t, &scnd_mode_params.cursor);
> -		if (t->plane == PLANE_SPR)
> -			set_region_for_test(t, &scnd_mode_params.sprite);
> -	}
> -}
> +	igt_remove_fb(drm.fd, &blue);
>   
> -static void prepare_subtest(const struct test_mode *t,
> -			    struct draw_pattern_info *pattern)
> -{
> -	prepare_subtest_data(t, pattern);
> -	prepare_subtest_screens(t);
> +	blue_crcs[format].initialized = true;
>   }
>   
> -/**
> - * SUBTEST: drrs-%dp-rte
> - * Description: Sanity test to enable DRRS with %arg[1] panels.
> - * Driver requirement: i915, xe
> - * Functionality: fbt, drrs
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbc-%dp-rte
> - * Description: Sanity test to enable FBC with %arg[1] panels.
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psr-%dp-rte
> - * Description: Sanity test to enable PSR with %arg[1] panels.
> - * Driver requirement: i915, xe
> - * Functionality: fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcdrrs-%dp-rte
> - * Description: Sanity test to enable FBC & DRRS with %arg[1] panels.
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsr-%dp-rte
> - * Description: Sanity test to enable FBC & PSR with %arg[1] panels.
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psrdrrs-%dp-rte
> - * Description: Sanity test to enable PSR & DRRS with %arg[1] panels.
> - * Driver requirement: i915, xe
> - * Functionality: fbt, drrs, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsrdrrs-%dp-rte
> - * Description: Sanity test to enable FBC, PSR & DRRS with %arg[1] panels.
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt, drrs, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1].values:   1, 2
> - */
> -
> -/*
> - * rte - the basic sanity test
> - *
> - * METHOD
> - *   Just disable all screens, assert everything is disabled, then enable all
> - *   screens - including primary, cursor and sprite planes - and assert that
> - *   the tested feature is enabled.
> - *
> - * EXPECTED RESULTS
> - *   Blue screens and t->feature enabled.
> - *
> - * FAILURES
> - *   A failure here means that every other subtest will probably fail too. It
> - *   probably means that the Kernel is just not enabling the feature we want.
> - */
> -static void rte_subtest(const struct test_mode *t)
> +static void init_crcs(enum pixel_format format, enum tiling_type tiling,
> +		      struct draw_pattern_info *pattern)
>   {
> -	prepare_subtest_data(t, NULL);
> +	int r, r_;
> +	struct igt_fb tmp_fbs[pattern->n_rects];
>   
> -	unset_all_crtcs();
> -	do_assertions(ASSERT_FBC_DISABLED | ASSERT_PSR_DISABLED |
> -		      DONT_ASSERT_CRC | ASSERT_DRRS_INACTIVE);
> +	if (pattern->initialized[format])
> +		return;
>   
> -	if (t->pipes == PIPE_SINGLE)
> -		enable_prim_screen_and_wait(t);
> -	else
> -		enable_both_screens_and_wait(t);
> +	pattern->crcs[format] = calloc(pattern->n_rects,
> +				       sizeof(*(pattern->crcs[format])));
>   
> -	set_region_for_test(t, &prim_mode_params.cursor);
> -	set_region_for_test(t, &prim_mode_params.sprite);
> +	for (r = 0; r < pattern->n_rects; r++)
> +		create_fb(format, prim_mode_params.mode.hdisplay,
> +			  prim_mode_params.mode.vdisplay, tiling,
> +			  PLANE_PRI, &tmp_fbs[r]);
>   
> -	if (t->pipes == PIPE_DUAL) {
> -		set_region_for_test(t, &scnd_mode_params.cursor);
> -		set_region_for_test(t, &scnd_mode_params.sprite);
> +	for (r = 0; r < pattern->n_rects; r++)
> +		fill_fb(&tmp_fbs[r], COLOR_PRIM_BG);
> +
> +	if (pattern->frames_stack) {
> +		for (r = 0; r < pattern->n_rects; r++)
> +			for (r_ = 0; r_ <= r; r_++)
> +				draw_rect_igt_fb(pattern, &tmp_fbs[r],
> +						 igt_draw_supports_method(drm.fd, IGT_DRAW_PWRITE) ?
> +						 IGT_DRAW_PWRITE : IGT_DRAW_BLT,
> +						 r_);
> +	} else {
> +		for (r = 0; r < pattern->n_rects; r++)
> +			draw_rect_igt_fb(pattern, &tmp_fbs[r], igt_draw_supports_method(drm.fd, IGT_DRAW_PWRITE) ?
> +					 IGT_DRAW_PWRITE : IGT_DRAW_BLT, r);
>   	}
> -}
>   
> -static bool is_valid_plane(igt_plane_t *plane)
> -{
> -	int index = plane->index;
> +	igt_output_set_pipe(prim_mode_params.output, prim_mode_params.pipe);
> +	igt_output_override_mode(prim_mode_params.output, &prim_mode_params.mode);
> +	for (r = 0; r < pattern->n_rects; r++) {
> +		igt_plane_set_fb(prim_mode_params.primary.plane, &tmp_fbs[r]);
> +		igt_display_commit(&drm.display);
>   
> -	if (plane->type == DRM_PLANE_TYPE_CURSOR)
> -		return false;
> -	/*
> -	 * Execute test only on first three planes
> -	 */
> -	return ((index >= 0) && (index < 3));
> -}
> +		collect_crc(&pattern->crcs[format][r]);
> +	}
>   
> -/**
> - * plane-fbc-rte - the basic sanity test
> - *
> - * METHOD
> - *   Just disable primary screen, assert everything is disabled, then enable single
> - *   screens and single plane one by one  and assert that the tested fbc is enabled
> - *   for the particular plane.
> - *
> - * EXPECTED RESULTS
> - *   Blue screens and t->feature enabled.
> - *
> - * FAILURES
> - *   A failure here means that fbc is not getting enabled for requested plane. It means
> - *   kernel is not able to enable fbc on the requested plane.
> - */
> +	for (r = 0; r < pattern->n_rects; r++) {
> +		igt_debug("Rect %d CRC:", r);
> +		print_crc("", &pattern->crcs[format][r]);
> +	}
>   
> -static void plane_fbc_rte_subtest(const struct test_mode *t)
> -{
> -	int ver;
> -	igt_plane_t *plane;
> +	igt_display_reset(&drm.display);
>   
> -	ver = intel_display_ver(intel_get_drm_devid(drm.fd));
> -	igt_require_f((ver >= 20), "Can't test fbc for each plane\n");
> +	for (r = 0; r < pattern->n_rects; r++)
> +		igt_remove_fb(drm.fd, &tmp_fbs[r]);
>   
> -	prepare_subtest_data(t, NULL);
> -	unset_all_crtcs();
> -	do_assertions(ASSERT_FBC_DISABLED | DONT_ASSERT_CRC);
> +	pattern->initialized[format] = true;
> +}
>   
> -	igt_output_override_mode(prim_mode_params.output, &prim_mode_params.mode);
> -	igt_output_set_pipe(prim_mode_params.output, prim_mode_params.pipe);
> +static void setup_drm(void)
> +{
> +	drm.fd = drm_open_driver_master(DRIVER_INTEL | DRIVER_XE);
> +	drm.debugfs = igt_debugfs_dir(drm.fd);
>   
> -	wanted_crc = &blue_crcs[t->format].crc;
> +	kmstest_set_vt_graphics_mode();
> +	igt_display_require(&drm.display, drm.fd);
>   
> -	for_each_plane_on_pipe(&drm.display, prim_mode_params.pipe, plane) {
> -		if (!is_valid_plane(plane))
> -			continue;
> +	drm.bops = buf_ops_create(drm.fd);
> +}
>   
> -		set_plane_for_test_fbc(t, plane);
> -	}
> +static void teardown_drm(void)
> +{
> +	buf_ops_destroy(drm.bops);
> +	igt_display_fini(&drm.display);
> +	drm_close_driver(drm.fd);
> +}
>   
> -	igt_display_reset(&drm.display);
> +static void setup_modeset(void)
> +{
> +	igt_require(init_modeset_cached_params());
> +	offscreen_fb.fb = NULL;
> +	offscreen_fb.w = 1024;
> +	offscreen_fb.h = 1024;
> +	create_fbs(FORMAT_DEFAULT, opt.tiling);
>   }
>   
> -static void update_wanted_crc(const struct test_mode *t, igt_crc_t *crc)
> +static void teardown_modeset(void)
>   {
> -	if (t->screen == SCREEN_PRIM)
> -		wanted_crc = crc;
> +	enum pixel_format f;
> +
> +	for (f = 0; f < FORMAT_COUNT; f++)
> +		destroy_fbs(f);
>   }
>   
> -static bool op_disables_psr(const struct test_mode *t,
> -			    enum igt_draw_method method)
> +static void setup_crcs(void)
>   {
> -	if (method != IGT_DRAW_MMAP_GTT)
> -		return false;
> -	if (t->screen == SCREEN_PRIM)
> -		return true;
> -	/* On FBS_SHARED, even if the target is not the PSR screen
> -	 * (SCREEN_PRIM), all primary planes share the same frontbuffer, so a
> -	 * write to the second screen primary plane - or offscreen plane - will
> -	 * touch the framebuffer that's also used by the primary screen. */
> -	if (t->fbs == FBS_SHARED && t->plane == PLANE_PRI)
> -		return true;
> +	enum pixel_format f;
>   
> -	return false;
> -}
> +	for (f = 0; f < FORMAT_COUNT; f++)
> +		blue_crcs[f].initialized = false;
>   
> -/**
> - * SUBTEST: drrs-1p-offscren-pri-%s-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbc-1p-offscren-pri-%s-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psr-1p-offscren-pri-%s-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
> - * Functionality: fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcdrrs-1p-offscren-pri-%s-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsr-1p-offscren-pri-%s-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psrdrrs-1p-offscren-pri-%s-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsrdrrs-1p-offscren-pri-%s-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @indfb:          Individual fb
> - * @shrfb:          Shared fb
> - *
> - * arg[2]:
> - *
> - * @blt:            Blitter
> - * @mmap-wc:        MMAP-WC
> - * @render:         Render
> - */
> +	pattern1.frames_stack = true;
> +	pattern1.n_rects = 4;
> +	pattern1.get_rect = pat1_get_rect;
> +	for (f = 0; f < FORMAT_COUNT; f++) {
> +		pattern1.initialized[f] = false;
> +		pattern1.crcs[f] = NULL;
> +	}
>   
> -/**
> - * SUBTEST: drrs-1p-offscren-pri-%s-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915
> - * Functionality: drrs, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbc-1p-offscren-pri-%s-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915
> - * Functionality: fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psr-1p-offscren-pri-%s-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915
> - * Functionality: fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcdrrs-1p-offscren-pri-%s-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915
> - * Functionality: drrs, fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsr-1p-offscren-pri-%s-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915
> - * Functionality: fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psrdrrs-1p-offscren-pri-%s-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915
> - * Functionality: drrs, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsrdrrs-1p-offscren-pri-%s-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915
> - * Functionality: drrs, fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @indfb:          Individual fb
> - * @shrfb:          Shared fb
> - *
> - * arg[2]:
> - *
> - * @mmap-cpu:       MMAP-CPU
> - * @mmap-gtt:       MMAP-GTT
> - * @pwrite:         PWRITE
> - */
> +	pattern2.frames_stack = true;
> +	pattern2.n_rects = 4;
> +	pattern2.get_rect = pat2_get_rect;
> +	for (f = 0; f < FORMAT_COUNT; f++) {
> +		pattern2.initialized[f] = false;
> +		pattern2.crcs[f] = NULL;
> +	}
>   
> -/**
> - * SUBTEST: drrs-%dp-primscrn-%s-indfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915
> - * Functionality: drrs, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbc-%dp-primscrn-%s-indfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915
> - * Functionality: fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psr-%dp-primscrn-%s-indfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915
> - * Functionality: fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcdrrs-%dp-primscrn-%s-indfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915
> - * Functionality: drrs, fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsr-%dp-primscrn-%s-indfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915
> - * Functionality: fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psrdrrs-%dp-primscrn-%s-indfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915
> - * Functionality: drrs, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-indfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915
> - * Functionality: drrs, fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1].values:   1, 2
> - *
> - * arg[2]:
> - *
> - * @cur:            Cursor plane
> - * @pri:            Primary plane
> - * @spr:            Sprite plane
> - *
> - * arg[3]:
> - *
> - * @mmap-cpu:       MMAP-CPU
> - * @mmap-gtt:       MMAP-GTT
> - * @pwrite:         PWRITE
> - */
> +	pattern3.frames_stack = false;
> +	pattern3.n_rects = 5;
> +	pattern3.get_rect = pat3_get_rect;
> +	for (f = 0; f < FORMAT_COUNT; f++) {
> +		pattern3.initialized[f] = false;
> +		pattern3.crcs[f] = NULL;
> +	}
> +
> +	pattern4.frames_stack = false;
> +	pattern4.n_rects = 1;
> +	pattern4.get_rect = pat4_get_rect;
> +	for (f = 0; f < FORMAT_COUNT; f++) {
> +		pattern4.initialized[f] = false;
> +		pattern4.crcs[f] = NULL;
> +	}
> +}
> +
> +static void teardown_crcs(void)
> +{
> +	enum pixel_format f;
> +
> +	for (f = 0; f < FORMAT_COUNT; f++) {
> +		if (pattern1.crcs[f])
> +			free(pattern1.crcs[f]);
> +		if (pattern2.crcs[f])
> +			free(pattern2.crcs[f]);
> +		if (pattern3.crcs[f])
> +			free(pattern3.crcs[f]);
> +		if (pattern4.crcs[f])
> +			free(pattern4.crcs[f]);
> +	}
>   
> -/**
> - * SUBTEST: drrs-%dp-primscrn-%s-indfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbc-%dp-primscrn-%s-indfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psr-%dp-primscrn-%s-indfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
> - * Functionality: fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcdrrs-%dp-primscrn-%s-indfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsr-%dp-primscrn-%s-indfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psrdrrs-%dp-primscrn-%s-indfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-indfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1].values:   1, 2
> - *
> - * arg[2]:
> - *
> - * @cur:            Cursor plane
> - * @pri:            Primary plane
> - * @spr:            Sprite plane
> - *
> - * arg[3]:
> - *
> - * @blt:            Blitter
> - * @mmap-wc:        MMAP-WC
> - * @render:         Render
> - */
> +	igt_pipe_crc_free(pipe_crc);
> +}
>   
> -/**
> - * SUBTEST: drrs-%dp-primscrn-pri-shrfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbc-%dp-primscrn-pri-shrfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psr-%dp-primscrn-pri-shrfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
> - * Functionality: fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcdrrs-%dp-primscrn-pri-shrfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsr-%dp-primscrn-pri-shrfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psrdrrs-%dp-primscrn-pri-shrfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsrdrrs-%dp-primscrn-pri-shrfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1].values:   1, 2
> - *
> - * arg[2]:
> - *
> - * @blt:            Blitter
> - * @mmap-wc:        MMAP-WC
> - * @render:         Render
> - */
> +static void setup_fbc(void)
> +{
> +	if (!intel_fbc_supported_on_chipset(drm.fd, prim_mode_params.pipe)) {
> +		igt_info("Can't test FBC: not supported on this chipset\n");
> +		return;
> +	}
>   
> -/**
> - * SUBTEST: drrs-%dp-primscrn-pri-shrfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915
> - * Functionality: drrs, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbc-%dp-primscrn-pri-shrfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915
> - * Functionality: fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psr-%dp-primscrn-pri-shrfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915
> - * Functionality: fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcdrrs-%dp-primscrn-pri-shrfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915
> - * Functionality: drrs, fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsr-%dp-primscrn-pri-shrfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915
> - * Functionality: fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psrdrrs-%dp-primscrn-pri-shrfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915
> - * Functionality: drrs, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsrdrrs-%dp-primscrn-pri-shrfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915
> - * Functionality: drrs, fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1].values:   1, 2
> - *
> - * arg[2]:
> - *
> - * @mmap-cpu:       MMAP-CPU
> - * @mmap-gtt:       MMAP-GTT
> - * @pwrite:         PWRITE
> - */
> +	fbc.can_test = true;
>   
> -/**
> - * SUBTEST: drrs-2p-scndscrn-%s-indfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbc-2p-scndscrn-%s-indfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psr-2p-scndscrn-%s-indfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
> - * Functionality: fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcdrrs-2p-scndscrn-%s-indfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsr-2p-scndscrn-%s-indfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psrdrrs-2p-scndscrn-%s-indfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-indfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @cur:            Cursor plane
> - * @pri:            Primary plane
> - * @spr:            Sprite plane
> - *
> - * arg[2]:
> - *
> - * @blt:            Blitter
> - * @mmap-wc:        MMAP-WC
> - * @render:         Render
> - */
> +	fbc_setup_last_action();
> +}
>   
> -/**
> - * SUBTEST: drrs-2p-scndscrn-%s-indfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915
> - * Functionality: drrs, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbc-2p-scndscrn-%s-indfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915
> - * Functionality: fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psr-2p-scndscrn-%s-indfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915
> - * Functionality: fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcdrrs-2p-scndscrn-%s-indfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915
> - * Functionality: drrs, fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsr-2p-scndscrn-%s-indfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915
> - * Functionality: fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psrdrrs-2p-scndscrn-%s-indfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915
> - * Functionality: drrs, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-indfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915
> - * Functionality: drrs, fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @cur:            Cursor plane
> - * @pri:            Primary plane
> - * @spr:            Sprite plane
> - *
> - * arg[2]:
> - *
> - * @mmap-cpu:       MMAP-CPU
> - * @mmap-gtt:       MMAP-GTT
> - * @pwrite:         PWRITE
> - */
> +static void teardown_fbc(void)
> +{
> +}
>   
> -/**
> - * SUBTEST: drrs-2p-scndscrn-pri-shrfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbc-2p-scndscrn-pri-shrfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psr-2p-scndscrn-pri-shrfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
> - * Functionality: fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcdrrs-2p-scndscrn-pri-shrfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsr-2p-scndscrn-pri-shrfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psrdrrs-2p-scndscrn-pri-shrfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsrdrrs-2p-scndscrn-pri-shrfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @blt:            Blitter
> - * @mmap-wc:        MMAP-WC
> - * @render:         Render
> - */
> +static void setup_psr(void)
> +{
> +	if (prim_mode_params.output->config.connector->connector_type !=
> +	    DRM_MODE_CONNECTOR_eDP) {
> +		igt_info("Can't test PSR: no usable eDP screen.\n");
> +		return;
> +	}
>   
> -/**
> - * SUBTEST: drrs-2p-scndscrn-pri-shrfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915
> - * Functionality: drrs, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbc-2p-scndscrn-pri-shrfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915
> - * Functionality: fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psr-2p-scndscrn-pri-shrfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915
> - * Functionality: fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcdrrs-2p-scndscrn-pri-shrfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915
> - * Functionality: drrs, fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsr-2p-scndscrn-pri-shrfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915
> - * Functionality: fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psrdrrs-2p-scndscrn-pri-shrfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915
> - * Functionality: drrs, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsrdrrs-2p-scndscrn-pri-shrfb-draw-%s
> - * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915
> - * Functionality: drrs, fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @mmap-cpu:       MMAP-CPU
> - * @mmap-gtt:       MMAP-GTT
> - * @pwrite:         PWRITE
> - */
> +	if (!psr_sink_support(drm.fd, drm.debugfs, PSR_MODE_1, NULL)) {
> +		igt_info("Can't test PSR: not supported by sink.\n");
> +		return;
> +	}
> +	psr.can_test = true;
> +}
>   
> -/*
> - * draw - draw a set of rectangles on the screen using the provided method
> - *
> - * METHOD
> - *   Just set the screens as appropriate and then start drawing a series of
> - *   rectangles on the target screen. The important guy here is the drawing
> - *   method used.
> - *
> - * EXPECTED RESULTS
> - *   The feature either stays enabled or gets reenabled after the oprations. You
> - *   will also see the rectangles on the target screen.
> - *
> - * FAILURES
> - *   A failure here indicates a problem somewhere between the Kernel's
> - *   frontbuffer tracking infrastructure or the feature itself. You need to pay
> - *   attention to which drawing method is being used.
> - */
> -static void draw_subtest(const struct test_mode *t)
> +static void teardown_psr(void)
>   {
> -	int r;
> -	int assertions = 0;
> -	struct draw_pattern_info *pattern;
> -	struct modeset_params *params = pick_params(t);
> -	struct fb_region *target;
> +}
> +
> +static void setup_drrs(void)
> +{
> +	if (!intel_output_has_drrs(drm.fd, prim_mode_params.output)) {
> +		igt_info("Can't test DRRS: no usable screen.\n");
> +		return;
> +	}
> +
> +	if (!intel_is_drrs_supported(drm.fd, prim_mode_params.pipe)) {
> +		igt_info("Can't test DRRS: Not supported.\n");
> +		return;
> +	}
> +
> +	drrs.can_test = true;
> +}
> +
> +static void setup_environment(void)
> +{
> +	setup_drm();
> +	setup_modeset();
> +
> +	setup_fbc();
> +	setup_psr();
> +	setup_drrs();
> +
> +	setup_crcs();
> +}
> +
> +static void teardown_environment(void)
> +{
> +	stop_busy_thread();
> +
> +	teardown_crcs();
> +	teardown_psr();
> +	teardown_fbc();
> +	teardown_modeset();
> +	teardown_drm();
> +}
> +
> +static void wait_user(int step, const char *msg)
> +{
> +	if (opt.step < step)
> +		return;
> +
> +	igt_info("%s Press enter...\n", msg);
> +	while (getchar() != '\n')
> +		;
> +}
>   
> +static struct modeset_params *pick_params(const struct test_mode *t)
> +{
>   	switch (t->screen) {
>   	case SCREEN_PRIM:
> -		if (t->method != IGT_DRAW_MMAP_GTT && t->plane == PLANE_PRI)
> -			assertions |= ASSERT_LAST_ACTION_CHANGED;
> -		else
> -			assertions |= ASSERT_NO_ACTION_CHANGE;
> -		break;
> +		return &prim_mode_params;
>   	case SCREEN_SCND:
> +		return &scnd_mode_params;
>   	case SCREEN_OFFSCREEN:
> -		assertions |= ASSERT_NO_ACTION_CHANGE;
> -		break;
> +		return NULL;
>   	default:
>   		igt_assert(false);
>   	}
> +}
> +
> +static struct fb_region *pick_target(const struct test_mode *t,
> +				     struct modeset_params *params)
> +{
> +	if (!params)
> +		return &offscreen_fb;
>   
>   	switch (t->plane) {
>   	case PLANE_PRI:
> -		pattern = &pattern1;
> -		break;
> +		return &params->primary;
>   	case PLANE_CUR:
> +		return &params->cursor;
>   	case PLANE_SPR:
> -		pattern = &pattern2;
> -		break;
> +		return &params->sprite;
>   	default:
>   		igt_assert(false);
>   	}
> +}
>   
> -	if (op_disables_psr(t, t->method))
> -		assertions |= ASSERT_PSR_DISABLED;
> +static void do_flush(const struct test_mode *t)
> +{
> +	struct modeset_params *params = pick_params(t);
> +	struct fb_region *target = pick_target(t, params);
>   
> -	/*
> -	 * On FBS_INDIVIDUAL, write to offscreen plane will not touch the
> -	 * current frambuffer. Hence assert for DRRS_LOW.
> -	 */
> -	if ((t->fbs == FBS_INDIVIDUAL) && (t->screen == SCREEN_OFFSCREEN))
> -		assertions |= ASSERT_DRRS_LOW;
> +	if (is_i915_device(drm.fd))
> +		gem_set_domain(drm.fd, target->fb->gem_handle, I915_GEM_DOMAIN_GTT, 0);
> +}
>   
> -	prepare_subtest(t, pattern);
> -	target = pick_target(t, params);
> +#define DONT_ASSERT_CRC			(1 << 0)
> +#define DONT_ASSERT_FEATURE_STATUS	(1 << 1)
> +#define DONT_ASSERT_FBC_STATUS		(1 << 12)
>   
> -	for (r = 0; r < pattern->n_rects; r++) {
> -		igt_debug("Drawing rect %d\n", r);
> -		draw_rect(pattern, target, t->method, r);
> -		update_wanted_crc(t, &pattern->crcs[t->format][r]);
> -		do_assertions(assertions);
> +#define FBC_ASSERT_FLAGS		(0xF << 2)
> +#define ASSERT_FBC_ENABLED		(1 << 2)
> +#define ASSERT_FBC_DISABLED		(1 << 3)
> +#define ASSERT_LAST_ACTION_CHANGED	(1 << 4)
> +#define ASSERT_NO_ACTION_CHANGE		(1 << 5)
> +
> +#define PSR_ASSERT_FLAGS		(3 << 6)
> +#define ASSERT_PSR_ENABLED		(1 << 6)
> +#define ASSERT_PSR_DISABLED		(1 << 7)
> +
> +#define DRRS_ASSERT_FLAGS		(7 << 8)
> +#define ASSERT_DRRS_HIGH		(1 << 8)
> +#define ASSERT_DRRS_LOW			(1 << 9)
> +#define ASSERT_DRRS_INACTIVE		(1 << 10)
> +
> +#define ASSERT_NO_IDLE_GPU		(1 << 11)
> +
> +static int adjust_assertion_flags(const struct test_mode *t, int flags)
> +{
> +	if (!(flags & DONT_ASSERT_FEATURE_STATUS)) {
> +		if (!(flags & ASSERT_FBC_DISABLED))
> +			flags |= ASSERT_FBC_ENABLED;
> +		if (!(flags & ASSERT_PSR_DISABLED))
> +			flags |= ASSERT_PSR_ENABLED;
> +		if (!((flags & ASSERT_DRRS_LOW) ||
> +		    (flags & ASSERT_DRRS_INACTIVE)))
> +			flags |= ASSERT_DRRS_HIGH;
>   	}
> +
> +	if ((t->feature & FEATURE_FBC) == 0 || (flags & DONT_ASSERT_FBC_STATUS))
> +		flags &= ~FBC_ASSERT_FLAGS;
> +	if ((t->feature & FEATURE_PSR) == 0)
> +		flags &= ~PSR_ASSERT_FLAGS;
> +	if ((t->feature & FEATURE_DRRS) == 0)
> +		flags &= ~DRRS_ASSERT_FLAGS;
> +
> +	return flags;
>   }
>   
> -/**
> - * SUBTEST: drrs-%dp-pri-indfb-multidraw
> - * Description: Draw a set of rectangles on the screen using alternated drawing methods
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbc-%dp-pri-indfb-multidraw
> - * Description: Draw a set of rectangles on the screen using alternated drawing methods
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psr-%dp-pri-indfb-multidraw
> - * Description: Draw a set of rectangles on the screen using alternated drawing methods
> - * Driver requirement: i915, xe
> - * Functionality: fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcdrrs-%dp-pri-indfb-multidraw
> - * Description: Draw a set of rectangles on the screen using alternated drawing methods
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsr-%dp-pri-indfb-multidraw
> - * Description: Draw a set of rectangles on the screen using alternated drawing methods
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psrdrrs-%dp-pri-indfb-multidraw
> - * Description: Draw a set of rectangles on the screen using alternated drawing methods
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsrdrrs-%dp-pri-indfb-multidraw
> - * Description: Draw a set of rectangles on the screen using alternated drawing methods
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1].values:   1, 2
> - */
> +static void do_crc_assertions(int flags)
> +{
> +	igt_crc_t crc;
> +
> +	if (!opt.check_crc || (flags & DONT_ASSERT_CRC))
> +		return;
> +
> +	collect_crc(&crc);
> +	print_crc("Calculated CRC:", &crc);
> +
> +	igt_assert(wanted_crc);
> +	igt_assert_crc_equal(&crc, wanted_crc);
> +}
> +
> +static void do_status_assertions(int flags)
> +{
> +	if (!opt.check_status) {
> +		/* Make sure we settle before continuing. */
> +		sleep(1);
> +		return;
> +	}
> +
> +	if (flags & ASSERT_DRRS_HIGH) {
> +		if (!is_drrs_high()) {
> +			drrs_print_status();
> +			igt_assert_f(false, "DRRS HIGH\n");
> +		}
> +	} else if (flags & ASSERT_DRRS_LOW) {
> +		if (!drrs_wait_until_rr_switch_to_low()) {
> +			drrs_print_status();
> +			igt_assert_f(false, "DRRS LOW\n");
> +		}
> +	} else if (flags & ASSERT_DRRS_INACTIVE) {
> +		if (!intel_is_drrs_inactive(drm.fd, prim_mode_params.pipe)) {
> +			drrs_print_status();
> +			igt_assert_f(false, "DRRS INACTIVE\n");
> +		}
> +	}
> +
> +	if (flags & ASSERT_FBC_ENABLED) {
> +		igt_require(!fbc_not_enough_stolen());
> +		igt_require(!fbc_stride_not_supported());
> +		igt_require(!fbc_mode_too_large());
> +		if (!intel_fbc_wait_until_enabled(drm.fd, prim_mode_params.pipe)) {
> +			igt_assert_f(intel_fbc_is_enabled(drm.fd,
> +						    prim_mode_params.pipe,
> +						    IGT_LOG_WARN),
> +				     "FBC disabled\n");
> +		}
> +
> +		if (opt.fbc_check_compression)
> +			igt_assert(fbc_wait_for_compression());
> +	} else if (flags & ASSERT_FBC_DISABLED) {
> +		igt_assert(!intel_fbc_wait_until_enabled(drm.fd,
> +						   prim_mode_params.pipe));
> +	}
> +
> +	if (flags & ASSERT_PSR_ENABLED)
> +		igt_assert_f(psr_wait_entry(drm.debugfs, PSR_MODE_1, NULL),
> +			     "PSR still disabled\n");
> +	else if (flags & ASSERT_PSR_DISABLED)
> +		igt_assert_f(psr_wait_update(drm.debugfs, PSR_MODE_1, NULL),
> +			     "PSR still enabled\n");
> +}
> +
> +static void __do_assertions(const struct test_mode *t, int flags,
> +			    int line)
> +{
> +	flags = adjust_assertion_flags(t, flags);
> +
> +	/* Make sure any submitted rendering is now idle. */
> +	if (!(flags & ASSERT_NO_IDLE_GPU))
> +		gem_quiescent_gpu(drm.fd);
> +
> +	igt_debug("checking asserts in line %i\n", line);
> +
> +	wait_user(2, "Paused before assertions.");
> +
> +	/* Check the CRC to make sure the drawing operations work
> +	 * immediately, independently of the features being enabled. */
> +	do_crc_assertions(flags);
> +
> +	/* Now we can flush things to make the test faster. */
> +	do_flush(t);
> +
> +	do_status_assertions(flags);
> +
> +	/* Check CRC again to make sure the compressed screen is ok,
> +	 * except if we're not drawing on the primary screen. On this
> +	 * case, the first check should be enough and a new CRC check
> +	 * would only delay the test suite while adding no value to the
> +	 * test suite. */
> +	if (t->screen == SCREEN_PRIM)
> +		do_crc_assertions(flags);
> +
> +	if (fbc.supports_last_action && opt.fbc_check_last_action) {
> +		if (flags & ASSERT_LAST_ACTION_CHANGED)
> +			igt_assert(fbc_last_action_changed());
> +		else if (flags & ASSERT_NO_ACTION_CHANGE)
> +			igt_assert(!fbc_last_action_changed());
> +	}
> +
> +	wait_user(1, "Paused after assertions.");
> +}
> +
> +#define do_assertions(__flags) __do_assertions(t, (__flags), __LINE__)
> +
> +static void enable_prim_screen_and_wait(const struct test_mode *t)
> +{
> +	fill_fb_region(&prim_mode_params.primary, t->method, COLOR_PRIM_BG);
> +	set_mode_for_params(&prim_mode_params);
>   
> -/*
> - * multidraw - draw a set of rectangles on the screen using alternated drawing
> - *             methods
> - *
> - * METHOD
> - *   This is just like the draw subtest, but now we keep alternating between two
> - *   drawing methods. Each time we run multidraw_subtest we will test all the
> - *   possible pairs of drawing methods.
> - *
> - * EXPECTED RESULTS
> - *   The same as the draw subtest.
> - *
> - * FAILURES
> - *   If you get a failure here, first you need to check whether you also get
> - *   failures on the individual draw subtests. If yes, then go fix every single
> - *   draw subtest first. If all the draw subtests pass but this one fails, then
> - *   you have to study how one drawing method is stopping the other from
> - *   properly working.
> - */
> -static void multidraw_subtest(const struct test_mode *t)
> +	wanted_crc = &blue_crcs[t->format].crc;
> +	fbc_update_last_action();
> +
> +	do_assertions(ASSERT_NO_ACTION_CHANGE);
> +}
> +
> +static void update_modeset_cached_params(enum igt_draw_method method)
>   {
> -	int r;
> -	int assertions = 0;
> -	struct draw_pattern_info *pattern;
> -	struct modeset_params *params = pick_params(t);
> -	struct fb_region *target;
> -	enum igt_draw_method m1, m2, used_method;
> -	bool wc_used = false;
> +	bool found = false;
>   
> -	switch (t->plane) {
> -	case PLANE_PRI:
> -		pattern = &pattern1;
> -		break;
> -	case PLANE_CUR:
> -	case PLANE_SPR:
> -		pattern = &pattern2;
> -		break;
> -	default:
> -		igt_assert(false);
> -	}
> +	igt_output_set_pipe(prim_mode_params.output, prim_mode_params.pipe);
> +	igt_output_set_pipe(scnd_mode_params.output, scnd_mode_params.pipe);
>   
> -	prepare_subtest(t, pattern);
> -	target = pick_target(t, params);
> +	found = igt_override_all_active_output_modes_to_fit_bw(&drm.display);
> +	igt_require_f(found, "No valid mode combo found.\n");
>   
> -	for (m1 = 0; m1 < IGT_DRAW_METHOD_COUNT; m1++) {
> -		for (m2 = m1 + 1; m2 < IGT_DRAW_METHOD_COUNT; m2++) {
> +	prim_mode_params.mode = *igt_output_get_mode(prim_mode_params.output);
> +	prim_mode_params.primary.w = prim_mode_params.mode.hdisplay;
> +	prim_mode_params.primary.h = prim_mode_params.mode.vdisplay;
>   
> -			igt_debug("Methods %s and %s\n",
> -				  igt_draw_get_method_name(m1),
> -				  igt_draw_get_method_name(m2));
> +	scnd_mode_params.mode = *igt_output_get_mode(scnd_mode_params.output);
> +	scnd_mode_params.primary.w = scnd_mode_params.mode.hdisplay;
> +	scnd_mode_params.primary.h = scnd_mode_params.mode.vdisplay;
>   
> -			if (!igt_draw_supports_method(drm.fd, m1) ||
> -			    !igt_draw_supports_method(drm.fd, m2))
> -				continue;
> +	fill_fb_region(&prim_mode_params.primary, method, COLOR_PRIM_BG);
> +	fill_fb_region(&scnd_mode_params.primary, method, COLOR_SCND_BG);
>   
> -			for (r = 0; r < pattern->n_rects; r++) {
> -				used_method = (r % 2 == 0) ? m1 : m2;
> +	__set_mode_for_params(&prim_mode_params);
> +	__set_mode_for_params(&scnd_mode_params);
> +}
>   
> -				igt_debug("Used method %s\n",
> -					igt_draw_get_method_name(used_method));
> +static void enable_both_screens_and_wait(const struct test_mode *t)
> +{
> +	int ret;
>   
> -				draw_rect(pattern, target, used_method, r);
> +	fill_fb_region(&prim_mode_params.primary, t->method, COLOR_PRIM_BG);
> +	fill_fb_region(&scnd_mode_params.primary, t->method, COLOR_SCND_BG);
>   
> -				if (used_method == IGT_DRAW_MMAP_WC ||
> -				    used_method == IGT_DRAW_MMAP_GTT)
> -					wc_used = true;
> +	__set_mode_for_params(&prim_mode_params);
> +	__set_mode_for_params(&scnd_mode_params);
>   
> -				update_wanted_crc(t,
> -						  &pattern->crcs[t->format][r]);
> +	if (drm.display.is_atomic)
> +		ret = igt_display_try_commit_atomic(&drm.display,
> +				DRM_MODE_ATOMIC_TEST_ONLY |
> +				DRM_MODE_ATOMIC_ALLOW_MODESET,
> +				NULL);
> +	else
> +		ret = igt_display_try_commit2(&drm.display, COMMIT_LEGACY);
>   
> -				assertions = used_method != IGT_DRAW_MMAP_GTT ?
> -					     ASSERT_LAST_ACTION_CHANGED :
> -					     ASSERT_NO_ACTION_CHANGE;
> -				if (op_disables_psr(t, used_method) &&
> -				    !wc_used)
> -					assertions |= ASSERT_PSR_DISABLED;
> +	if (ret)
> +		update_modeset_cached_params(t->method);
>   
> -				do_assertions(assertions);
> -			}
> +	igt_display_commit2(&drm.display, drm.display.is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
>   
> -			fill_fb_region(target, m2, COLOR_PRIM_BG);
> -			_fb_dirty_ioctl(target);
> +	wanted_crc = &blue_crcs[t->format].crc;
> +	fbc_update_last_action();
>   
> -			update_wanted_crc(t, &blue_crcs[t->format].crc);
> -			do_assertions(ASSERT_NO_ACTION_CHANGE);
> -		}
> -	}
> +	do_assertions(ASSERT_NO_ACTION_CHANGE);
>   }
>   
> -static bool format_is_valid(int feature_flags,
> -			    enum pixel_format format)
> +static void set_region_for_test(const struct test_mode *t,
> +				struct fb_region *reg)
>   {
> -	int devid = intel_get_drm_devid(drm.fd);
> +	fill_fb_region(reg, t->method, COLOR_PRIM_BG);
>   
> -	if (!(feature_flags & FEATURE_FBC))
> -		return true;
> +	igt_plane_set_fb(reg->plane, reg->fb);
> +	igt_plane_set_position(reg->plane, 0, 0);
> +	igt_plane_set_size(reg->plane, reg->w, reg->h);
> +	igt_fb_set_size(reg->fb, reg->plane, reg->w, reg->h);
>   
> -	switch (format) {
> -	case FORMAT_RGB888:
> -		return true;
> -	case FORMAT_RGB565:
> -		if (IS_GEN2(devid) || IS_G4X(devid))
> -			return false;
> -		return true;
> -	case FORMAT_RGB101010:
> -		return false;
> -	default:
> -		igt_assert(false);
> -	}
> +	igt_display_commit(&drm.display);
> +	do_assertions(ASSERT_NO_ACTION_CHANGE);
>   }
>   
> -/*
> - * badformat - test pixel formats that are not supported by at least one feature
> - *
> - * METHOD
> - *   We just do a modeset on a buffer with the given pixel format and check the
> - *   status of the relevant features.
> - *
> - * EXPECTED RESULTS
> - *   No assertion failures :)
> - *
> - * FAILURES
> - *   If you get a feature enabled/disabled assertion failure, then you should
> - *   probably check the Kernel code for the feature that checks the pixel
> - *   formats. If you get a CRC assertion failure, then you should use the
> - *   appropriate command line arguments that will allow you to look at the
> - *   screen, then judge what to do based on what you see.
> - */
> -static void badformat_subtest(const struct test_mode *t)
> +static void set_plane_for_test_fbc(const struct test_mode *t, igt_plane_t *plane)
>   {
> -	bool fbc_valid = format_is_valid(FEATURE_FBC, t->format);
> -	bool psr_valid = format_is_valid(FEATURE_PSR, t->format);
> -	int assertions = ASSERT_NO_ACTION_CHANGE;
> +	struct igt_fb fb;
> +	uint32_t color;
>   
> -	prepare_subtest_data(t, NULL);
> +	igt_info("Testing fbc on plane %i%s\n", plane->index + 1, kmstest_pipe_name(prim_mode_params.pipe));
>   
> -	fill_fb_region(&prim_mode_params.primary, t->method, COLOR_PRIM_BG);
> -	set_mode_for_params(&prim_mode_params);
> +	create_fb(t->format, prim_mode_params.mode.hdisplay, prim_mode_params.mode.vdisplay, t->tiling, t->plane, &fb);
> +	color = pick_color(&fb, COLOR_PRIM_BG);
> +	igt_draw_rect_fb(drm.fd, drm.bops, 0, &fb, t->method,
> +			 0, 0, fb.width, fb.height,
> +			 color);
>   
> -	wanted_crc = &blue_crcs[t->format].crc;
> +	igt_plane_set_fb(plane, &fb);
> +	igt_plane_set_position(plane, 0, 0);
> +	igt_plane_set_size(plane, prim_mode_params.mode.hdisplay, prim_mode_params.mode.vdisplay);
> +	igt_fb_set_size(&fb, plane, prim_mode_params.mode.hdisplay, prim_mode_params.mode.vdisplay);
> +	igt_display_commit_atomic(&drm.display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
>   
> -	if (!fbc_valid)
> -		assertions |= ASSERT_FBC_DISABLED;
> -	if (!psr_valid)
> -		assertions |= ASSERT_PSR_DISABLED;
> -	do_assertions(assertions);
> -}
> +	fbc_update_last_action();
> +	do_assertions(ASSERT_FBC_ENABLED | ASSERT_NO_ACTION_CHANGE);
> +	igt_assert_f(fbc_enable_per_plane(plane->index + 1, prim_mode_params.pipe), "FBC disabled\n");
>   
> -/**
> - * SUBTEST: drrs-%s-draw-%s
> - * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbc-%s-draw-%s
> - * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psr-%s-draw-%s
> - * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
> - * Driver requirement: i915, xe
> - * Functionality: fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcdrrs-%s-draw-%s
> - * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsr-%s-draw-%s
> - * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psrdrrs-%s-draw-%s
> - * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsrdrrs-%s-draw-%s
> - * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @rgb101010:      FORMAT_RGB101010
> - * @rgb565:         FORMAT_RGB565
> - *
> - * arg[2]:
> - *
> - * @blt:            Blitter
> - * @mmap-wc:        MMAP-WC
> - * @render:         Render
> - */
> +	igt_remove_fb(drm.fd, &fb);
> +	igt_plane_set_fb(plane, NULL);
> +	igt_display_commit2(&drm.display, COMMIT_ATOMIC);
> +}
>   
> -/**
> - * SUBTEST: drrs-%s-draw-%s
> - * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
> - * Driver requirement: i915
> - * Functionality: drrs, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbc-%s-draw-%s
> - * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
> - * Driver requirement: i915
> - * Functionality: fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psr-%s-draw-%s
> - * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
> - * Driver requirement: i915
> - * Functionality: fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcdrrs-%s-draw-%s
> - * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
> - * Driver requirement: i915
> - * Functionality: drrs, fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsr-%s-draw-%s
> - * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
> - * Driver requirement: i915
> - * Functionality: fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psrdrrs-%s-draw-%s
> - * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
> - * Driver requirement: i915
> - * Functionality: drrs, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsrdrrs-%s-draw-%s
> - * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
> - * Driver requirement: i915
> - * Functionality: drrs, fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @rgb101010:      FORMAT_RGB101010
> - * @rgb565:         FORMAT_RGB565
> - *
> - * arg[2]:
> - *
> - * @mmap-cpu:       MMAP-CPU
> - * @mmap-gtt:       MMAP-GTT
> - * @pwrite:         PWRITE
> - */
> +static bool enable_features_for_test(const struct test_mode *t)
> +{
> +	bool ret = false;
>   
> -/*
> - * format_draw - test pixel formats that are not FORMAT_DEFAULT
> - *
> - * METHOD
> - *   The real subtest to be executed depends on whether the pixel format is
> - *   supported by the features being tested or not. Check the documentation of
> - *   each subtest.
> - *
> - * EXPECTED RESULTS
> - *   See the documentation for each subtest.
> - *
> - * FAILURES
> - *   See the documentation for each subtest.
> - */
> -static void format_draw_subtest(const struct test_mode *t)
> +	if (t->feature == FEATURE_DEFAULT)
> +		return false;
> +
> +	if (t->feature & FEATURE_FBC)
> +		intel_fbc_enable(drm.fd);
> +	if (t->feature & FEATURE_PSR)
> +		ret = psr_enable(drm.fd, drm.debugfs, PSR_MODE_1);
> +	if (t->feature & FEATURE_DRRS)
> +		intel_drrs_enable(drm.fd, prim_mode_params.pipe);
> +
> +	return ret;
> +}
> +
> +static void check_test_requirements(const struct test_mode *t)
>   {
> -	if (format_is_valid(t->feature, t->format))
> -		draw_subtest(t);
> -	else
> -		badformat_subtest(t);
> +	int ver;
> +
> +	if (t->pipes == PIPE_DUAL)
> +		igt_require_f(scnd_mode_params.output,
> +			    "Can't test dual pipes with the current outputs\n");
> +
> +	if (t->feature & FEATURE_FBC)
> +		igt_require_f(fbc.can_test,
> +			      "Can't test FBC with this chipset\n");
> +
> +	if (t->feature & FEATURE_PSR) {
> +		igt_require_f(psr.can_test,
> +			      "Can't test PSR with the current outputs\n");
> +	}
> +
> +	if (t->feature & FEATURE_DRRS)
> +		igt_require_f(drrs.can_test,
> +			      "Can't test DRRS with the current outputs\n");
> +
> +	/*
> +	 * In kernel, When PSR is enabled, DRRS will be disabled. So If a test
> +	 * case needs DRRS + PSR enabled, that will be skipped.
> +	 */
> +	igt_require_f(!((t->feature & FEATURE_PSR) &&
> +		      (t->feature & FEATURE_DRRS)),
> +		      "Can't test PSR and DRRS together\n");
> +
> +	if (opt.only_pipes != PIPE_COUNT)
> +		igt_require(t->pipes == opt.only_pipes);
> +
> +	/* Kernel disables fbc for display versions 12 and 13 if psr is enabled. */
> +	ver = intel_display_ver(intel_get_drm_devid(drm.fd));
> +	if (ver >= 12 && ver <= 13)
> +		igt_require_f(!((t->feature & FEATURE_PSR) &&
> +				(t->feature & FEATURE_FBC)),
> +			      "Can't test PSR and FBC together\n");
> +
>   }
>   
> -static bool tiling_is_valid(int feature_flags, enum tiling_type tiling)
> +static void set_crtc_fbs(const struct test_mode *t)
>   {
> -	int devid = intel_get_drm_devid(drm.fd);
> +	struct screen_fbs *s = &fbs[t->format];
>   
> -	if (!(feature_flags & FEATURE_FBC))
> -		return true;
> +	create_fbs(t->format, t->tiling);
>   
> -	switch (tiling) {
> -	case TILING_LINEAR:
> -		return AT_LEAST_GEN(devid, 9);
> -	case TILING_X:
> -	case TILING_Y:
> -		return true;
> -	case TILING_4:
> -		return AT_LEAST_GEN(devid, 12);
> +	switch (t->fbs) {
> +	case FBS_INDIVIDUAL:
> +		prim_mode_params.primary.fb = &s->prim_pri;
> +		scnd_mode_params.primary.fb = &s->scnd_pri;
> +		offscreen_fb.fb = &s->offscreen;
> +
> +		prim_mode_params.primary.x = 0;
> +		scnd_mode_params.primary.x = 0;
> +		offscreen_fb.x = 0;
> +
> +		prim_mode_params.primary.y = 0;
> +		scnd_mode_params.primary.y = 0;
> +		offscreen_fb.y = 0;
> +		break;
> +	case FBS_SHARED:
> +		/* Please see the comment at the top of create_shared_fb(). */
> +		prim_mode_params.primary.fb = &s->big;
> +		scnd_mode_params.primary.fb = &s->big;
> +		offscreen_fb.fb = &s->big;
> +
> +		prim_mode_params.primary.x = opt.shared_fb_x_offset;
> +		scnd_mode_params.primary.x = opt.shared_fb_x_offset;
> +		offscreen_fb.x = opt.shared_fb_x_offset;
> +
> +		prim_mode_params.primary.y = opt.shared_fb_y_offset;
> +		scnd_mode_params.primary.y = prim_mode_params.primary.y +
> +					prim_mode_params.primary.h;
> +		offscreen_fb.y = scnd_mode_params.primary.y + scnd_mode_params.primary.h;
> +		break;
>   	default:
>   		igt_assert(false);
> -		return false;
>   	}
> -}
>   
> -/**
> - * SUBTEST: drrs-slowdraw
> - * Description: Sleep a little bit between drawing operations with DRRS
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psr-slowdraw
> - * Description: Sleep a little bit between drawing operations with PSR
> - * Driver requirement: i915, xe
> - * Functionality: fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcdrrs-slowdraw
> - * Description: Sleep a little bit between drawing operations with FBC & DRRS
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsr-slowdraw
> - * Description: Sleep a little bit between drawing operations with FBC & PSR
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psrdrrs-slowdraw
> - * Description: Sleep a little bit between drawing operations with PSR & DRRS
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsrdrrs-slowdraw
> - * Description: Sleep a little bit between drawing operations with FBC, PSR & DRRS
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
> +	prim_mode_params.cursor.fb = &s->prim_cur;
> +	prim_mode_params.sprite.fb = &s->prim_spr;
> +	scnd_mode_params.cursor.fb = &s->scnd_cur;
> +	scnd_mode_params.sprite.fb = &s->scnd_spr;
> +}
>   
> -/*
> - * slow_draw - sleep a little bit between drawing operations
> - *
> - * METHOD
> - *   This test is basically the same as the draw subtest, except that we sleep a
> - *   little bit after each drawing operation. The goal is to detect problems
> - *   that can happen in case a drawing operation is done while the machine is in
> - *   some deep sleep states.
> - *
> - * EXPECTED RESULTS
> - *   The pattern appears on the screen as expected.
> - *
> - * FAILURES
> - *   I've seen this happen in a SKL machine and still haven't investigated it.
> - *   My guess would be that preventing deep sleep states fixes the problem.
> - */
> -static void slow_draw_subtest(const struct test_mode *t)
> +static void prepare_subtest_data(const struct test_mode *t,
> +				 struct draw_pattern_info *pattern)
>   {
> -	int r;
> -	struct draw_pattern_info *pattern = &pattern1;
> -	struct modeset_params *params = pick_params(t);
> -	struct fb_region *target;
> +	bool need_modeset;
> +
> +	check_test_requirements(t);
> +
> +	stop_busy_thread();
>   
> -	prepare_subtest(t, pattern);
> -	sleep(2);
> -	target = pick_target(t, params);
> +	need_modeset = disable_features(t);
> +	set_crtc_fbs(t);
>   
> -	for (r = 0; r < pattern->n_rects; r++) {
> -		sleep(2);
> -		draw_rect(pattern, target, t->method, r);
> -		sleep(2);
> +	if (t->screen == SCREEN_OFFSCREEN)
> +		fill_fb_region(&offscreen_fb, t->method, COLOR_OFFSCREEN_BG);
>   
> -		update_wanted_crc(t, &pattern->crcs[t->format][r]);
> +	igt_display_reset(&drm.display);
> +	if (need_modeset)
> +		igt_display_commit(&drm.display);
>   
> -		if (t->feature & FEATURE_DRRS)
> -			do_assertions(ASSERT_DRRS_LOW);
> -		else
> -			do_assertions(0);
> -	}
> -}
> +	init_blue_crc(t->format, t->tiling);
> +	if (pattern)
> +		init_crcs(t->format, t->tiling, pattern);
>   
> -static void flip_handler(int fd, unsigned int sequence, unsigned int tv_sec,
> -			 unsigned int tv_usec, void *data)
> -{
> -	igt_debug("Flip event received.\n");
> +	need_modeset = enable_features_for_test(t);
> +	if (need_modeset)
> +		igt_display_commit(&drm.display);
>   }
>   
> -static void wait_flip_event(void)
> +static void prepare_subtest_screens(const struct test_mode *t)
>   {
> -	int rc;
> -	drmEventContext evctx;
> -	struct pollfd pfd;
> -
> -	evctx.version = 2;
> -	evctx.vblank_handler = NULL;
> -	evctx.page_flip_handler = flip_handler;
> +	if (t->pipes == PIPE_DUAL)
> +		enable_both_screens_and_wait(t);
> +	else
> +		enable_prim_screen_and_wait(t);
>   
> -	pfd.fd = drm.fd;
> -	pfd.events = POLLIN;
> -	pfd.revents = 0;
> +	if (t->screen == SCREEN_PRIM) {
> +		if (t->plane == PLANE_CUR)
> +			set_region_for_test(t, &prim_mode_params.cursor);
> +		if (t->plane == PLANE_SPR)
> +			set_region_for_test(t, &prim_mode_params.sprite);
> +	}
>   
> -	rc = poll(&pfd, 1, TIME);
> -	switch (rc) {
> -	case 0:
> -		igt_assert_f(false, "Poll timeout\n");
> -		break;
> -	case 1:
> -		rc = drmHandleEvent(drm.fd, &evctx);
> -		igt_assert_eq(rc, 0);
> -		break;
> -	default:
> -		igt_assert_f(false, "Unexpected poll rc %d\n", rc);
> -		break;
> +	if (t->pipes == PIPE_DUAL && t->screen == SCREEN_SCND) {
> +		if (t->plane == PLANE_CUR)
> +			set_region_for_test(t, &scnd_mode_params.cursor);
> +		if (t->plane == PLANE_SPR)
> +			set_region_for_test(t, &scnd_mode_params.sprite);
>   	}
>   }
>   
> -static void set_prim_plane_for_params(struct modeset_params *params)
> +static void prepare_subtest(const struct test_mode *t,
> +			    struct draw_pattern_info *pattern)
>   {
> -	__set_prim_plane_for_params(params);
> -	igt_display_commit2(&drm.display, COMMIT_UNIVERSAL);
> +	prepare_subtest_data(t, pattern);
> +	prepare_subtest_screens(t);
>   }
>   
> -static void page_flip_for_params(struct modeset_params *params,
> -				 enum flip_type type)
> +/*
> + * rte - the basic sanity test
> + *
> + * METHOD
> + *   Just disable all screens, assert everything is disabled, then enable all
> + *   screens - including primary, cursor and sprite planes - and assert that
> + *   the tested feature is enabled.
> + *
> + * EXPECTED RESULTS
> + *   Blue screens and t->feature enabled.
> + *
> + * FAILURES
> + *   A failure here means that every other subtest will probably fail too. It
> + *   probably means that the Kernel is just not enabling the feature we want.
> + */
> +static void rte_subtest(const struct test_mode *t)
>   {
> -	int rc;
> +	prepare_subtest_data(t, NULL);
>   
> -	switch (type) {
> -	case FLIP_PAGEFLIP:
> -		rc = drmModePageFlip(drm.fd, drm.display.pipes[params->pipe].crtc_id,
> -				     params->primary.fb->fb_id,
> -				     DRM_MODE_PAGE_FLIP_EVENT, NULL);
> -		igt_assert_eq(rc, 0);
> -		wait_flip_event();
> -		break;
> -	case FLIP_MODESET:
> -		set_mode_for_params(params);
> -		break;
> -	case FLIP_PLANES:
> -		set_prim_plane_for_params(params);
> -		break;
> -	default:
> -		igt_assert(false);
> +	unset_all_crtcs();
> +	do_assertions(ASSERT_FBC_DISABLED | ASSERT_PSR_DISABLED |
> +		      DONT_ASSERT_CRC | ASSERT_DRRS_INACTIVE);
> +
> +	if (t->pipes == PIPE_SINGLE)
> +		enable_prim_screen_and_wait(t);
> +	else
> +		enable_both_screens_and_wait(t);
> +
> +	set_region_for_test(t, &prim_mode_params.cursor);
> +	set_region_for_test(t, &prim_mode_params.sprite);
> +
> +	if (t->pipes == PIPE_DUAL) {
> +		set_region_for_test(t, &scnd_mode_params.cursor);
> +		set_region_for_test(t, &scnd_mode_params.sprite);
>   	}
>   }
>   
> -/**
> - * SUBTEST: drrs-%dp-primscrn-%s-%sflip-blt
> - * Description: Just exercise page flips with the patterns we have
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbc-%dp-primscrn-%s-%sflip-blt
> - * Description: Just exercise page flips with the patterns we have
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psr-%dp-primscrn-%s-%sflip-blt
> - * Description: Just exercise page flips with the patterns we have
> - * Driver requirement: i915, xe
> - * Functionality: fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcdrrs-%dp-primscrn-%s-%sflip-blt
> - * Description: Just exercise page flips with the patterns we have
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsr-%dp-primscrn-%s-%sflip-blt
> - * Description: Just exercise page flips with the patterns we have
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psrdrrs-%dp-primscrn-%s-%sflip-blt
> - * Description: Just exercise page flips with the patterns we have
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-%sflip-blt
> - * Description: Just exercise page flips with the patterns we have
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1].values:   1, 2
> - *
> - * arg[2]:
> - *
> - * @indfb:          Individual fb
> - * @shrfb:          Shared fb
> - *
> - * arg[3]:
> - *
> - * @ms:             Modeset
> - * @pg:             Page flip
> - * @pl:             Plane change
> - */
> +static bool is_valid_plane(igt_plane_t *plane)
> +{
> +	int index = plane->index;
> +
> +	if (plane->type == DRM_PLANE_TYPE_CURSOR)
> +		return false;
> +	/*
> +	 * Execute test only on first three planes
> +	 */
> +	return ((index >= 0) && (index < 3));
> +}
>   
>   /**
> - * SUBTEST: drrs-2p-scndscrn-%s-%sflip-blt
> - * Description: Just exercise page flips with the patterns we have
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbc-2p-scndscrn-%s-%sflip-blt
> - * Description: Just exercise page flips with the patterns we have
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psr-2p-scndscrn-%s-%sflip-blt
> - * Description: Just exercise page flips with the patterns we have
> - * Driver requirement: i915, xe
> - * Functionality: fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcdrrs-2p-scndscrn-%s-%sflip-blt
> - * Description: Just exercise page flips with the patterns we have
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsr-2p-scndscrn-%s-%sflip-blt
> - * Description: Just exercise page flips with the patterns we have
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psrdrrs-2p-scndscrn-%s-%sflip-blt
> - * Description: Just exercise page flips with the patterns we have
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-%sflip-blt
> - * Description: Just exercise page flips with the patterns we have
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @indfb:          Individual fb
> - * @shrfb:          Shared fb
> + * plane-fbc-rte - the basic sanity test
>    *
> - * arg[2]:
> + * METHOD
> + *   Just disable primary screen, assert everything is disabled, then enable single
> + *   screens and single plane one by one  and assert that the tested fbc is enabled
> + *   for the particular plane.
>    *
> - * @ms:             Modeset
> - * @pg:             Page flip
> - * @pl:             Plane change
> + * EXPECTED RESULTS
> + *   Blue screens and t->feature enabled.
> + *
> + * FAILURES
> + *   A failure here means that fbc is not getting enabled for requested plane. It means
> + *   kernel is not able to enable fbc on the requested plane.
>    */
>   
> +static void plane_fbc_rte_subtest(const struct test_mode *t)
> +{
> +	int ver;
> +	igt_plane_t *plane;
> +
> +	ver = intel_display_ver(intel_get_drm_devid(drm.fd));
> +	igt_require_f((ver >= 20), "Can't test fbc for each plane\n");
> +
> +	prepare_subtest_data(t, NULL);
> +	unset_all_crtcs();
> +	do_assertions(ASSERT_FBC_DISABLED | DONT_ASSERT_CRC);
> +
> +	igt_output_override_mode(prim_mode_params.output, &prim_mode_params.mode);
> +	igt_output_set_pipe(prim_mode_params.output, prim_mode_params.pipe);
> +
> +	wanted_crc = &blue_crcs[t->format].crc;
> +
> +	for_each_plane_on_pipe(&drm.display, prim_mode_params.pipe, plane) {
> +		if (!is_valid_plane(plane))
> +			continue;
> +
> +		set_plane_for_test_fbc(t, plane);
> +	}
> +
> +	igt_display_reset(&drm.display);
> +}
> +
> +static void update_wanted_crc(const struct test_mode *t, igt_crc_t *crc)
> +{
> +	if (t->screen == SCREEN_PRIM)
> +		wanted_crc = crc;
> +}
> +
> +static bool op_disables_psr(const struct test_mode *t,
> +			    enum igt_draw_method method)
> +{
> +	if (method != IGT_DRAW_MMAP_GTT)
> +		return false;
> +	if (t->screen == SCREEN_PRIM)
> +		return true;
> +	/* On FBS_SHARED, even if the target is not the PSR screen
> +	 * (SCREEN_PRIM), all primary planes share the same frontbuffer, so a
> +	 * write to the second screen primary plane - or offscreen plane - will
> +	 * touch the framebuffer that's also used by the primary screen. */
> +	if (t->fbs == FBS_SHARED && t->plane == PLANE_PRI)
> +		return true;
> +
> +	return false;
> +}
> +
>   /*
> - * flip - just exercise page flips with the patterns we have
> + * draw - draw a set of rectangles on the screen using the provided method
>    *
>    * METHOD
> - *   We draw the pattern on a backbuffer using the provided method, then we
> - *   flip, making this the frontbuffer. We can flip both using the dedicated
> - *   pageflip IOCTL or the modeset IOCTL.
> + *   Just set the screens as appropriate and then start drawing a series of
> + *   rectangles on the target screen. The important guy here is the drawing
> + *   method used.
>    *
>    * EXPECTED RESULTS
> - *   Everything works as expected, screen contents are properly updated.
> + *   The feature either stays enabled or gets reenabled after the oprations. You
> + *   will also see the rectangles on the target screen.
>    *
>    * FAILURES
> - *   On a failure here you need to go directly to the Kernel's flip code and see
> - *   how it interacts with the feature being tested.
> + *   A failure here indicates a problem somewhere between the Kernel's
> + *   frontbuffer tracking infrastructure or the feature itself. You need to pay
> + *   attention to which drawing method is being used.
>    */
> -static void flip_subtest(const struct test_mode *t)
> +static void draw_subtest(const struct test_mode *t)
>   {
>   	int r;
>   	int assertions = 0;
> -	struct igt_fb fb2, *orig_fb;
> +	struct draw_pattern_info *pattern;
>   	struct modeset_params *params = pick_params(t);
> -	struct draw_pattern_info *pattern = &pattern1;
> -	enum color bg_color;
> +	struct fb_region *target;
>   
>   	switch (t->screen) {
>   	case SCREEN_PRIM:
> -		assertions |= ASSERT_LAST_ACTION_CHANGED;
> -		bg_color = COLOR_PRIM_BG;
> +		if (t->method != IGT_DRAW_MMAP_GTT && t->plane == PLANE_PRI)
> +			assertions |= ASSERT_LAST_ACTION_CHANGED;
> +		else
> +			assertions |= ASSERT_NO_ACTION_CHANGE;
>   		break;
>   	case SCREEN_SCND:
> +	case SCREEN_OFFSCREEN:
>   		assertions |= ASSERT_NO_ACTION_CHANGE;
> -		bg_color = COLOR_SCND_BG;
>   		break;
>   	default:
>   		igt_assert(false);
>   	}
>   
> -	prepare_subtest(t, pattern);
> +	switch (t->plane) {
> +	case PLANE_PRI:
> +		pattern = &pattern1;
> +		break;
> +	case PLANE_CUR:
> +	case PLANE_SPR:
> +		pattern = &pattern2;
> +		break;
> +	default:
> +		igt_assert(false);
> +	}
>   
> -	create_fb(t->format, params->primary.fb->width, params->primary.fb->height,
> -		  t->tiling, t->plane, &fb2);
> -	fill_fb(&fb2, bg_color);
> -	orig_fb = params->primary.fb;
> +	if (op_disables_psr(t, t->method))
> +		assertions |= ASSERT_PSR_DISABLED;
> +
> +	/*
> +	 * On FBS_INDIVIDUAL, write to offscreen plane will not touch the
> +	 * current frambuffer. Hence assert for DRRS_LOW.
> +	 */
> +	if ((t->fbs == FBS_INDIVIDUAL) && (t->screen == SCREEN_OFFSCREEN))
> +		assertions |= ASSERT_DRRS_LOW;
> +
> +	prepare_subtest(t, pattern);
> +	target = pick_target(t, params);
>   
>   	for (r = 0; r < pattern->n_rects; r++) {
> -		params->primary.fb = (r % 2 == 0) ? &fb2 : orig_fb;
> +		igt_debug("Drawing rect %d\n", r);
> +		draw_rect(pattern, target, t->method, r);
> +		update_wanted_crc(t, &pattern->crcs[t->format][r]);
> +		do_assertions(assertions);
> +	}
> +}
> +
> +/*
> + * multidraw - draw a set of rectangles on the screen using alternated drawing
> + *             methods
> + *
> + * METHOD
> + *   This is just like the draw subtest, but now we keep alternating between two
> + *   drawing methods. Each time we run multidraw_subtest we will test all the
> + *   possible pairs of drawing methods.
> + *
> + * EXPECTED RESULTS
> + *   The same as the draw subtest.
> + *
> + * FAILURES
> + *   If you get a failure here, first you need to check whether you also get
> + *   failures on the individual draw subtests. If yes, then go fix every single
> + *   draw subtest first. If all the draw subtests pass but this one fails, then
> + *   you have to study how one drawing method is stopping the other from
> + *   properly working.
> + */
> +static void multidraw_subtest(const struct test_mode *t)
> +{
> +	int r;
> +	int assertions = 0;
> +	struct draw_pattern_info *pattern;
> +	struct modeset_params *params = pick_params(t);
> +	struct fb_region *target;
> +	enum igt_draw_method m1, m2, used_method;
> +	bool wc_used = false;
> +
> +	switch (t->plane) {
> +	case PLANE_PRI:
> +		pattern = &pattern1;
> +		break;
> +	case PLANE_CUR:
> +	case PLANE_SPR:
> +		pattern = &pattern2;
> +		break;
> +	default:
> +		igt_assert(false);
> +	}
> +
> +	prepare_subtest(t, pattern);
> +	target = pick_target(t, params);
> +
> +	for (m1 = 0; m1 < IGT_DRAW_METHOD_COUNT; m1++) {
> +		for (m2 = m1 + 1; m2 < IGT_DRAW_METHOD_COUNT; m2++) {
> +
> +			igt_debug("Methods %s and %s\n",
> +				  igt_draw_get_method_name(m1),
> +				  igt_draw_get_method_name(m2));
> +
> +			if (!igt_draw_supports_method(drm.fd, m1) ||
> +			    !igt_draw_supports_method(drm.fd, m2))
> +				continue;
> +
> +			for (r = 0; r < pattern->n_rects; r++) {
> +				used_method = (r % 2 == 0) ? m1 : m2;
> +
> +				igt_debug("Used method %s\n",
> +					igt_draw_get_method_name(used_method));
> +
> +				draw_rect(pattern, target, used_method, r);
> +
> +				if (used_method == IGT_DRAW_MMAP_WC ||
> +				    used_method == IGT_DRAW_MMAP_GTT)
> +					wc_used = true;
> +
> +				update_wanted_crc(t,
> +						  &pattern->crcs[t->format][r]);
> +
> +				assertions = used_method != IGT_DRAW_MMAP_GTT ?
> +					     ASSERT_LAST_ACTION_CHANGED :
> +					     ASSERT_NO_ACTION_CHANGE;
> +				if (op_disables_psr(t, used_method) &&
> +				    !wc_used)
> +					assertions |= ASSERT_PSR_DISABLED;
> +
> +				do_assertions(assertions);
> +			}
> +
> +			fill_fb_region(target, m2, COLOR_PRIM_BG);
> +			_fb_dirty_ioctl(target);
> +
> +			update_wanted_crc(t, &blue_crcs[t->format].crc);
> +			do_assertions(ASSERT_NO_ACTION_CHANGE);
> +		}
> +	}
> +}
> +
> +static bool format_is_valid(int feature_flags,
> +			    enum pixel_format format)
> +{
> +	int devid = intel_get_drm_devid(drm.fd);
> +
> +	if (!(feature_flags & FEATURE_FBC))
> +		return true;
> +
> +	switch (format) {
> +	case FORMAT_RGB888:
> +		return true;
> +	case FORMAT_RGB565:
> +		if (IS_GEN2(devid) || IS_G4X(devid))
> +			return false;
> +		return true;
> +	case FORMAT_RGB101010:
> +		return false;
> +	default:
> +		igt_assert(false);
> +	}
> +}
> +
> +/*
> + * badformat - test pixel formats that are not supported by at least one feature
> + *
> + * METHOD
> + *   We just do a modeset on a buffer with the given pixel format and check the
> + *   status of the relevant features.
> + *
> + * EXPECTED RESULTS
> + *   No assertion failures :)
> + *
> + * FAILURES
> + *   If you get a feature enabled/disabled assertion failure, then you should
> + *   probably check the Kernel code for the feature that checks the pixel
> + *   formats. If you get a CRC assertion failure, then you should use the
> + *   appropriate command line arguments that will allow you to look at the
> + *   screen, then judge what to do based on what you see.
> + */
> +static void badformat_subtest(const struct test_mode *t)
> +{
> +	bool fbc_valid = format_is_valid(FEATURE_FBC, t->format);
> +	bool psr_valid = format_is_valid(FEATURE_PSR, t->format);
> +	int assertions = ASSERT_NO_ACTION_CHANGE;
>   
> -		if (r != 0)
> -			draw_rect(pattern, &params->primary, t->method, r - 1);
> -		draw_rect(pattern, &params->primary, t->method, r);
> -		update_wanted_crc(t, &pattern->crcs[t->format][r]);
> +	prepare_subtest_data(t, NULL);
>   
> -		page_flip_for_params(params, t->flip);
> +	fill_fb_region(&prim_mode_params.primary, t->method, COLOR_PRIM_BG);
> +	set_mode_for_params(&prim_mode_params);
>   
> -		do_assertions(assertions);
> -	}
> +	wanted_crc = &blue_crcs[t->format].crc;
>   
> -	igt_remove_fb(drm.fd, &fb2);
> +	if (!fbc_valid)
> +		assertions |= ASSERT_FBC_DISABLED;
> +	if (!psr_valid)
> +		assertions |= ASSERT_PSR_DISABLED;
> +	do_assertions(assertions);
>   }
>   
> -/**
> - * SUBTEST: fbc-%dp-%s-fliptrack-mmap-gtt
> - * Description: Check if the hardware tracking works after page flips
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcdrrs-%dp-%s-fliptrack-mmap-gtt
> - * Description: Check if the hardware tracking works after page flips
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsr-%dp-%s-fliptrack-mmap-gtt
> - * Description: Check if the hardware tracking works after page flips
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsrdrrs-%dp-%s-fliptrack-mmap-gtt
> - * Description: Check if the hardware tracking works after page flips
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> +/*
> + * format_draw - test pixel formats that are not FORMAT_DEFAULT
>    *
> - * arg[1].values:   1, 2
> + * METHOD
> + *   The real subtest to be executed depends on whether the pixel format is
> + *   supported by the features being tested or not. Check the documentation of
> + *   each subtest.
>    *
> - * arg[2]:
> + * EXPECTED RESULTS
> + *   See the documentation for each subtest.
>    *
> - * @indfb:          Individual fb
> - * @shrfb:          Shared fb
> + * FAILURES
> + *   See the documentation for each subtest.
>    */
> +static void format_draw_subtest(const struct test_mode *t)
> +{
> +	if (format_is_valid(t->feature, t->format))
> +		draw_subtest(t);
> +	else
> +		badformat_subtest(t);
> +}
> +
> +static bool tiling_is_valid(int feature_flags, enum tiling_type tiling)
> +{
> +	int devid = intel_get_drm_devid(drm.fd);
> +
> +	if (!(feature_flags & FEATURE_FBC))
> +		return true;
> +
> +	switch (tiling) {
> +	case TILING_LINEAR:
> +		return AT_LEAST_GEN(devid, 9);
> +	case TILING_X:
> +	case TILING_Y:
> +		return true;
> +	case TILING_4:
> +		return AT_LEAST_GEN(devid, 12);
> +	default:
> +		igt_assert(false);
> +		return false;
> +	}
> +}
>   
>   /*
> - * fliptrack - check if the hardware tracking works after page flips
> + * slow_draw - sleep a little bit between drawing operations
>    *
>    * METHOD
> - *   Flip to a new buffer, then draw on it using MMAP_GTT and check the CRC to
> - *   make sure the hardware tracking detected the write.
> + *   This test is basically the same as the draw subtest, except that we sleep a
> + *   little bit after each drawing operation. The goal is to detect problems
> + *   that can happen in case a drawing operation is done while the machine is in
> + *   some deep sleep states.
>    *
>    * EXPECTED RESULTS
> - *   Everything works as expected, screen contents are properly updated.
> + *   The pattern appears on the screen as expected.
>    *
>    * FAILURES
> - *   First you need to check if the draw and flip subtests pass. Only after both
> - *   are passing this test can be useful. If we're failing only on this subtest,
> - *   then maybe we are not properly updating the hardware tracking registers
> - *   during the flip operations.
> + *   I've seen this happen in a SKL machine and still haven't investigated it.
> + *   My guess would be that preventing deep sleep states fixes the problem.
>    */
> -static void fliptrack_subtest(const struct test_mode *t, enum flip_type type)
> +static void slow_draw_subtest(const struct test_mode *t)
>   {
>   	int r;
> -	struct igt_fb fb2, *orig_fb;
> -	struct modeset_params *params = pick_params(t);
>   	struct draw_pattern_info *pattern = &pattern1;
> +	struct modeset_params *params = pick_params(t);
> +	struct fb_region *target;
>   
>   	prepare_subtest(t, pattern);
> -
> -	create_fb(t->format, params->primary.fb->width, params->primary.fb->height,
> -		  t->tiling, t->plane, &fb2);
> -	fill_fb(&fb2, COLOR_PRIM_BG);
> -	orig_fb = params->primary.fb;
> +	sleep(2);
> +	target = pick_target(t, params);
>   
>   	for (r = 0; r < pattern->n_rects; r++) {
> -		params->primary.fb = (r % 2 == 0) ? &fb2 : orig_fb;
> -
> -		if (r != 0)
> -			draw_rect(pattern, &params->primary, t->method, r - 1);
> -
> -		page_flip_for_params(params, type);
> -		do_assertions(0);
> +		sleep(2);
> +		draw_rect(pattern, target, t->method, r);
> +		sleep(2);
>   
> -		draw_rect(pattern, &params->primary, t->method, r);
>   		update_wanted_crc(t, &pattern->crcs[t->format][r]);
>   
> -		do_assertions(ASSERT_PSR_DISABLED);
> +		if (t->feature & FEATURE_DRRS)
> +			do_assertions(ASSERT_DRRS_LOW);
> +		else
> +			do_assertions(0);
> +	}
> +}
> +
> +static void flip_handler(int fd, unsigned int sequence, unsigned int tv_sec,
> +			 unsigned int tv_usec, void *data)
> +{
> +	igt_debug("Flip event received.\n");
> +}
> +
> +static void wait_flip_event(void)
> +{
> +	int rc;
> +	drmEventContext evctx;
> +	struct pollfd pfd;
> +
> +	evctx.version = 2;
> +	evctx.vblank_handler = NULL;
> +	evctx.page_flip_handler = flip_handler;
> +
> +	pfd.fd = drm.fd;
> +	pfd.events = POLLIN;
> +	pfd.revents = 0;
> +
> +	rc = poll(&pfd, 1, TIME);
> +	switch (rc) {
> +	case 0:
> +		igt_assert_f(false, "Poll timeout\n");
> +		break;
> +	case 1:
> +		rc = drmHandleEvent(drm.fd, &evctx);
> +		igt_assert_eq(rc, 0);
> +		break;
> +	default:
> +		igt_assert_f(false, "Unexpected poll rc %d\n", rc);
> +		break;
> +	}
> +}
> +
> +static void set_prim_plane_for_params(struct modeset_params *params)
> +{
> +	__set_prim_plane_for_params(params);
> +	igt_display_commit2(&drm.display, COMMIT_UNIVERSAL);
> +}
> +
> +static void page_flip_for_params(struct modeset_params *params,
> +				 enum flip_type type)
> +{
> +	int rc;
> +
> +	switch (type) {
> +	case FLIP_PAGEFLIP:
> +		rc = drmModePageFlip(drm.fd, drm.display.pipes[params->pipe].crtc_id,
> +				     params->primary.fb->fb_id,
> +				     DRM_MODE_PAGE_FLIP_EVENT, NULL);
> +		igt_assert_eq(rc, 0);
> +		wait_flip_event();
> +		break;
> +	case FLIP_MODESET:
> +		set_mode_for_params(params);
> +		break;
> +	case FLIP_PLANES:
> +		set_prim_plane_for_params(params);
> +		break;
> +	default:
> +		igt_assert(false);
>   	}
> -
> -	igt_remove_fb(drm.fd, &fb2);
>   }
>   
> -/**
> - * SUBTEST: drrs-%dp-primscrn-%s-indfb-move
> - * Description: Just move the %arg[2] around
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbc-%dp-primscrn-%s-indfb-move
> - * Description: Just move the %arg[2] around
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psr-%dp-primscrn-%s-indfb-move
> - * Description: Just move the %arg[2] around
> - * Driver requirement: i915, xe
> - * Functionality: fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcdrrs-%dp-primscrn-%s-indfb-move
> - * Description: Just move the %arg[2] around
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsr-%dp-primscrn-%s-indfb-move
> - * Description: Just move the %arg[2] around
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psrdrrs-%dp-primscrn-%s-indfb-move
> - * Description: Just move the %arg[2] around
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-indfb-move
> - * Description: Just move the %arg[2] around
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1].values:   1, 2
> - *
> - * arg[2]:
> - *
> - * @spr:            Sprite plane
> - * @cur:            Cursor plane
> - */
> -
> -/**
> - * SUBTEST: drrs-2p-scndscrn-%s-indfb-move
> - * Description: Just move the %arg[1] around
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbc-2p-scndscrn-%s-indfb-move
> - * Description: Just move the %arg[1] around
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psr-2p-scndscrn-%s-indfb-move
> - * Description: Just move the %arg[1] around
> - * Driver requirement: i915, xe
> - * Functionality: fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcdrrs-2p-scndscrn-%s-indfb-move
> - * Description: Just move the %arg[1] around
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsr-2p-scndscrn-%s-indfb-move
> - * Description: Just move the %arg[1] around
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psrdrrs-2p-scndscrn-%s-indfb-move
> - * Description: Just move the %arg[1] around
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-indfb-move
> - * Description: Just move the %arg[1] around
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @spr:            Sprite plane
> - * @cur:            Cursor plane
> - */
> -
>   /*
> - * move - just move the sprite or cursor around
> + * flip - just exercise page flips with the patterns we have
>    *
>    * METHOD
> - *   Move the surface around, following the defined pattern.
> + *   We draw the pattern on a backbuffer using the provided method, then we
> + *   flip, making this the frontbuffer. We can flip both using the dedicated
> + *   pageflip IOCTL or the modeset IOCTL.
>    *
>    * EXPECTED RESULTS
> - *   The move operations are properly detected by the Kernel, and the screen is
> - *   properly updated every time.
> + *   Everything works as expected, screen contents are properly updated.
>    *
>    * FAILURES
> - *   If you get a failure here, check how the Kernel is enabling or disabling
> - *   your feature when it moves the planes around.
> + *   On a failure here you need to go directly to the Kernel's flip code and see
> + *   how it interacts with the feature being tested.
>    */
> -static void move_subtest(const struct test_mode *t)
> +static void flip_subtest(const struct test_mode *t)
>   {
>   	int r;
> -	int assertions = ASSERT_NO_ACTION_CHANGE;
> +	int assertions = 0;
> +	struct igt_fb fb2, *orig_fb;
>   	struct modeset_params *params = pick_params(t);
> -	struct draw_pattern_info *pattern = &pattern3;
> -	struct fb_region *reg = pick_target(t, params);
> -	bool repeat = false;
> -
> -	prepare_subtest(t, pattern);
> +	struct draw_pattern_info *pattern = &pattern1;
> +	enum color bg_color;
>   
> -	/* Just paint the right color since we start at 0x0. */
> -	draw_rect(pattern, reg, t->method, 0);
> -	update_wanted_crc(t, &pattern->crcs[t->format][0]);
> +	switch (t->screen) {
> +	case SCREEN_PRIM:
> +		assertions |= ASSERT_LAST_ACTION_CHANGED;
> +		bg_color = COLOR_PRIM_BG;
> +		break;
> +	case SCREEN_SCND:
> +		assertions |= ASSERT_NO_ACTION_CHANGE;
> +		bg_color = COLOR_SCND_BG;
> +		break;
> +	default:
> +		igt_assert(false);
> +	}
>   
> -	do_assertions(assertions);
> +	prepare_subtest(t, pattern);
>   
> -	for (r = 1; r < pattern->n_rects; r++) {
> -		struct rect rect = pattern->get_rect(&params->primary, r);
> +	create_fb(t->format, params->primary.fb->width, params->primary.fb->height,
> +		  t->tiling, t->plane, &fb2);
> +	fill_fb(&fb2, bg_color);
> +	orig_fb = params->primary.fb;
>   
> -		igt_plane_set_fb(reg->plane, reg->fb);
> -		igt_plane_set_position(reg->plane, rect.x, rect.y);
> -		igt_plane_set_size(reg->plane, rect.w, rect.h);
> -		igt_fb_set_size(reg->fb, reg->plane, rect.w, rect.h);
> -		igt_display_commit2(&drm.display, COMMIT_UNIVERSAL);
> +	for (r = 0; r < pattern->n_rects; r++) {
> +		params->primary.fb = (r % 2 == 0) ? &fb2 : orig_fb;
>   
> +		if (r != 0)
> +			draw_rect(pattern, &params->primary, t->method, r - 1);
> +		draw_rect(pattern, &params->primary, t->method, r);
>   		update_wanted_crc(t, &pattern->crcs[t->format][r]);
>   
> -		do_assertions(assertions);
> +		page_flip_for_params(params, t->flip);
>   
> -		/* "Move" the last rect to the same position just to make sure
> -		 * this works too. */
> -		if (r+1 == pattern->n_rects && !repeat) {
> -			repeat = true;
> -			r--;
> -		}
> +		do_assertions(assertions);
>   	}
> +
> +	igt_remove_fb(drm.fd, &fb2);
>   }
>   
> -/**
> - * SUBTEST: drrs-%dp-primscrn-%s-indfb-onoff
> - * Description: Just enable and disable the %arg[2] a few times
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbc-%dp-primscrn-%s-indfb-onoff
> - * Description: Just enable and disable the %arg[2] a few times
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psr-%dp-primscrn-%s-indfb-onoff
> - * Description: Just enable and disable the %arg[2] a few times
> - * Driver requirement: i915, xe
> - * Functionality: fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcdrrs-%dp-primscrn-%s-indfb-onoff
> - * Description: Just enable and disable the %arg[2] a few times
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsr-%dp-primscrn-%s-indfb-onoff
> - * Description: Just enable and disable the %arg[2] a few times
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psrdrrs-%dp-primscrn-%s-indfb-onoff
> - * Description: Just enable and disable the %arg[2] a few times
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-indfb-onoff
> - * Description: Just enable and disable the %arg[2] a few times
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> +/*
> + * fliptrack - check if the hardware tracking works after page flips
>    *
> - * arg[1].values:   1, 2
> + * METHOD
> + *   Flip to a new buffer, then draw on it using MMAP_GTT and check the CRC to
> + *   make sure the hardware tracking detected the write.
>    *
> - * arg[2]:
> + * EXPECTED RESULTS
> + *   Everything works as expected, screen contents are properly updated.
>    *
> - * @spr:            Sprite plane
> - * @cur:            Cursor plane
> + * FAILURES
> + *   First you need to check if the draw and flip subtests pass. Only after both
> + *   are passing this test can be useful. If we're failing only on this subtest,
> + *   then maybe we are not properly updating the hardware tracking registers
> + *   during the flip operations.
>    */
> +static void fliptrack_subtest(const struct test_mode *t, enum flip_type type)
> +{
> +	int r;
> +	struct igt_fb fb2, *orig_fb;
> +	struct modeset_params *params = pick_params(t);
> +	struct draw_pattern_info *pattern = &pattern1;
>   
> -/**
> - * SUBTEST: drrs-2p-scndscrn-%s-indfb-onoff
> - * Description: Just enable and disable the %arg[1] a few times
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbc-2p-scndscrn-%s-indfb-onoff
> - * Description: Just enable and disable the %arg[1] a few times
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psr-2p-scndscrn-%s-indfb-onoff
> - * Description: Just enable and disable the %arg[1] a few times
> - * Driver requirement: i915, xe
> - * Functionality: fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcdrrs-2p-scndscrn-%s-indfb-onoff
> - * Description: Just enable and disable the %arg[1] a few times
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsr-2p-scndscrn-%s-indfb-onoff
> - * Description: Just enable and disable the %arg[1] a few times
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psrdrrs-2p-scndscrn-%s-indfb-onoff
> - * Description: Just enable and disable the %arg[1] a few times
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> +	prepare_subtest(t, pattern);
> +
> +	create_fb(t->format, params->primary.fb->width, params->primary.fb->height,
> +		  t->tiling, t->plane, &fb2);
> +	fill_fb(&fb2, COLOR_PRIM_BG);
> +	orig_fb = params->primary.fb;
> +
> +	for (r = 0; r < pattern->n_rects; r++) {
> +		params->primary.fb = (r % 2 == 0) ? &fb2 : orig_fb;
> +
> +		if (r != 0)
> +			draw_rect(pattern, &params->primary, t->method, r - 1);
> +
> +		page_flip_for_params(params, type);
> +		do_assertions(0);
> +
> +		draw_rect(pattern, &params->primary, t->method, r);
> +		update_wanted_crc(t, &pattern->crcs[t->format][r]);
> +
> +		do_assertions(ASSERT_PSR_DISABLED);
> +	}
> +
> +	igt_remove_fb(drm.fd, &fb2);
> +}
> +
> +/*
> + * move - just move the sprite or cursor around
>    *
> - * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-indfb-onoff
> - * Description: Just enable and disable the %arg[1] a few times
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> + * METHOD
> + *   Move the surface around, following the defined pattern.
>    *
> - * arg[1]:
> + * EXPECTED RESULTS
> + *   The move operations are properly detected by the Kernel, and the screen is
> + *   properly updated every time.
>    *
> - * @spr:            Sprite plane
> - * @cur:            Cursor plane
> + * FAILURES
> + *   If you get a failure here, check how the Kernel is enabling or disabling
> + *   your feature when it moves the planes around.
>    */
> +static void move_subtest(const struct test_mode *t)
> +{
> +	int r;
> +	int assertions = ASSERT_NO_ACTION_CHANGE;
> +	struct modeset_params *params = pick_params(t);
> +	struct draw_pattern_info *pattern = &pattern3;
> +	struct fb_region *reg = pick_target(t, params);
> +	bool repeat = false;
> +
> +	prepare_subtest(t, pattern);
> +
> +	/* Just paint the right color since we start at 0x0. */
> +	draw_rect(pattern, reg, t->method, 0);
> +	update_wanted_crc(t, &pattern->crcs[t->format][0]);
> +
> +	do_assertions(assertions);
> +
> +	for (r = 1; r < pattern->n_rects; r++) {
> +		struct rect rect = pattern->get_rect(&params->primary, r);
> +
> +		igt_plane_set_fb(reg->plane, reg->fb);
> +		igt_plane_set_position(reg->plane, rect.x, rect.y);
> +		igt_plane_set_size(reg->plane, rect.w, rect.h);
> +		igt_fb_set_size(reg->fb, reg->plane, rect.w, rect.h);
> +		igt_display_commit2(&drm.display, COMMIT_UNIVERSAL);
> +
> +		update_wanted_crc(t, &pattern->crcs[t->format][r]);
> +
> +		do_assertions(assertions);
> +
> +		/* "Move" the last rect to the same position just to make sure
> +		 * this works too. */
> +		if (r+1 == pattern->n_rects && !repeat) {
> +			repeat = true;
> +			r--;
> +		}
> +	}
> +}
>   
>   /*
>    * onoff - just enable and disable the sprite or cursor plane a few times
> @@ -3884,108 +4270,6 @@ static bool prim_plane_disabled(void)
>   	return !prim_mode_params.primary.plane->values[IGT_PLANE_FB_ID];
>   }
>   
> -/**
> - * SUBTEST: drrs-%dp-primscrn-spr-indfb-fullscreen
> - * Description: Put a fullscreen plane covering the whole screen
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbc-%dp-primscrn-spr-indfb-fullscreen
> - * Description: Put a fullscreen plane covering the whole screen
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psr-%dp-primscrn-spr-indfb-fullscreen
> - * Description: Put a fullscreen plane covering the whole screen
> - * Driver requirement: i915, xe
> - * Functionality: fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcdrrs-%dp-primscrn-spr-indfb-fullscreen
> - * Description: Put a fullscreen plane covering the whole screen
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsr-%dp-primscrn-spr-indfb-fullscreen
> - * Description: Put a fullscreen plane covering the whole screen
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psrdrrs-%dp-primscrn-spr-indfb-fullscreen
> - * Description: Put a fullscreen plane covering the whole screen
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsrdrrs-%dp-primscrn-spr-indfb-fullscreen
> - * Description: Put a fullscreen plane covering the whole screen
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: drrs-2p-scndscrn-spr-indfb-fullscreen
> - * Description: Put a fullscreen plane covering the whole screen
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbc-2p-scndscrn-spr-indfb-fullscreen
> - * Description: Put a fullscreen plane covering the whole screen
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psr-2p-scndscrn-spr-indfb-fullscreen
> - * Description: Put a fullscreen plane covering the whole screen
> - * Driver requirement: i915, xe
> - * Functionality: fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcdrrs-2p-scndscrn-spr-indfb-fullscreen
> - * Description: Put a fullscreen plane covering the whole screen
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsr-2p-scndscrn-spr-indfb-fullscreen
> - * Description: Put a fullscreen plane covering the whole screen
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psrdrrs-2p-scndscrn-spr-indfb-fullscreen
> - * Description: Put a fullscreen plane covering the whole screen
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsrdrrs-2p-scndscrn-spr-indfb-fullscreen
> - * Description: Put a fullscreen plane covering the whole screen
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1].values:   1, 2
> - */
> -
>   /*
>    * fullscreen_plane - put a fullscreen plane covering the whole screen
>    *
> @@ -4021,87 +4305,31 @@ static void fullscreen_plane_subtest(const struct test_mode *t)
>   	igt_display_commit(&drm.display);
>   	update_wanted_crc(t, &pattern->crcs[t->format][0]);
>   
> -	switch (t->screen) {
> -	case SCREEN_PRIM:
> -		assertions = ASSERT_LAST_ACTION_CHANGED;
> -
> -		if (prim_plane_disabled())
> -			assertions |= ASSERT_FBC_DISABLED;
> -		break;
> -	case SCREEN_SCND:
> -		assertions = ASSERT_NO_ACTION_CHANGE;
> -		break;
> -	default:
> -		igt_assert(false);
> -	}
> -	do_assertions(assertions);
> -
> -	igt_plane_set_fb(params->sprite.plane, NULL);
> -	igt_display_commit(&drm.display);
> -
> -	if (t->screen == SCREEN_PRIM)
> -		assertions = ASSERT_LAST_ACTION_CHANGED;
> -	update_wanted_crc(t, &blue_crcs[t->format].crc);
> -	do_assertions(assertions);
> -
> -	igt_remove_fb(drm.fd, &fullscreen_fb);
> -}
> -
> -/**
> - * SUBTEST: drrs-%s-scaledprimary
> - * Description: Try different primary plane scaling strategies
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbt, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbc-%s-scaledprimary
> - * Description: Try different primary plane scaling strategies
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psr-%s-scaledprimary
> - * Description: Try different primary plane scaling strategies
> - * Driver requirement: i915, xe
> - * Functionality: fbt, psr, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcdrrs-%s-scaledprimary
> - * Description: Try different primary plane scaling strategies
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsr-%s-scaledprimary
> - * Description: Try different primary plane scaling strategies
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt, psr, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psrdrrs-%s-scaledprimary
> - * Description: Try different primary plane scaling strategies
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbt, psr, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsrdrrs-%s-scaledprimary
> - * Description: Try different primary plane scaling strategies
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt, psr, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @indfb:          Individual fb
> - * @shrfb:          Shared fb
> - */
> +	switch (t->screen) {
> +	case SCREEN_PRIM:
> +		assertions = ASSERT_LAST_ACTION_CHANGED;
> +
> +		if (prim_plane_disabled())
> +			assertions |= ASSERT_FBC_DISABLED;
> +		break;
> +	case SCREEN_SCND:
> +		assertions = ASSERT_NO_ACTION_CHANGE;
> +		break;
> +	default:
> +		igt_assert(false);
> +	}
> +	do_assertions(assertions);
> +
> +	igt_plane_set_fb(params->sprite.plane, NULL);
> +	igt_display_commit(&drm.display);
> +
> +	if (t->screen == SCREEN_PRIM)
> +		assertions = ASSERT_LAST_ACTION_CHANGED;
> +	update_wanted_crc(t, &blue_crcs[t->format].crc);
> +	do_assertions(assertions);
> +
> +	igt_remove_fb(drm.fd, &fullscreen_fb);
> +}
>   
>   /*
>    * scaledprimary - try different primary plane scaling strategies
> @@ -4209,56 +4437,6 @@ static void scaledprimary_subtest(const struct test_mode *t)
>   	igt_remove_fb(drm.fd, &new_fb);
>   }
>   
> -/**
> - * SUBTEST: drrs-modesetfrombusy
> - * Description: Modeset from a busy buffer to a non-busy buffer with DRRS
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbt, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbc-modesetfrombusy
> - * Description: Modeset from a busy buffer to a non-busy buffer with FBC
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psr-modesetfrombusy
> - * Description: Modeset from a busy buffer to a non-busy buffer with PSR
> - * Driver requirement: i915, xe
> - * Functionality: fbt, psr, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcdrrs-modesetfrombusy
> - * Description: Modeset from a busy buffer to a non-busy buffer with FBC & DRRS
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsr-modesetfrombusy
> - * Description: Modeset from a busy buffer to a non-busy buffer with FBC & PSR
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt, psr, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psrdrrs-modesetfrombusy
> - * Description: Modeset from a busy buffer to a non-busy buffer with PSR & DRRS
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbt, psr, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsrdrrs-modesetfrombusy
> - * Description: Modeset from a busy buffer to a non-busy buffer with FBC, PSR & DRRS
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt, psr, scaling
> - * Mega feature: General Display Features
> - */
> -
>   /**
>    * modesetfrombusy - modeset from a busy buffer to a non-busy buffer
>    *
> @@ -4302,57 +4480,6 @@ static void modesetfrombusy_subtest(const struct test_mode *t)
>   	igt_remove_fb(drm.fd, &fb2);
>   }
>   
> -/**
> - * SUBTEST: drrs-suspend
> - * Description: Make sure suspend/resume keeps us on the same state of DRRS
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbt, suspend
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbc-suspend
> - * Description: Make sure suspend/resume keeps us on the same state of FBC
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt, suspend
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psr-suspend
> - * Description: Make sure suspend/resume keeps us on the same state of PSR
> - * Driver requirement: i915, xe
> - * Functionality: fbt, psr, suspend
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcdrrs-suspend
> - * Description: Make sure suspend/resume keeps us on the same state of FBC & DRRS
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt, suspend
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsr-suspend
> - * Description: Make sure suspend/resume keeps us on the same state of FBC & PSR
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt, psr, suspend
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psrdrrs-suspend
> - * Description: Make sure suspend/resume keeps us on the same state of PSR & DRRS
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbt, psr, suspend
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsrdrrs-suspend
> - * Description: Make sure suspend/resume keeps us on the same state of FBC, PSR & DRRS
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt, psr, suspend
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
> -
>   /**
>    * suspend - make sure suspend/resume keeps us on the same state
>    *
> @@ -4385,57 +4512,6 @@ static void suspend_subtest(const struct test_mode *t)
>   	do_assertions(0);
>   }
>   
> -/**
> - * SUBTEST: drrs-farfromfence-mmap-gtt
> - * Description: Test drawing as far from the fence start as possible
> - * Driver requirement: i915
> - * Functionality: drrs, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbc-farfromfence-mmap-gtt
> - * Description: Test drawing as far from the fence start as possible
> - * Driver requirement: i915
> - * Functionality: fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psr-farfromfence-mmap-gtt
> - * Description: Test drawing as far from the fence start as possible
> - * Driver requirement: i915
> - * Functionality: fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcdrrs-farfromfence-mmap-gtt
> - * Description: Test drawing as far from the fence start as possible
> - * Driver requirement: i915
> - * Functionality: drrs, fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsr-farfromfence-mmap-gtt
> - * Description: Test drawing as far from the fence start as possible
> - * Driver requirement: i915
> - * Functionality: fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: psrdrrs-farfromfence-mmap-gtt
> - * Description: Test drawing as far from the fence start as possible
> - * Driver requirement: i915
> - * Functionality: drrs, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsrdrrs-farfromfence-mmap-gtt
> - * Description: Test drawing as far from the fence start as possible
> - * Driver requirement: i915
> - * Functionality: drrs, fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
> -
>   /**
>    * farfromfence - test drawing as far from the fence start as possible
>    *
> @@ -4509,36 +4585,6 @@ static void farfromfence_subtest(const struct test_mode *t)
>   	igt_remove_fb(drm.fd, &tall_fb);
>   }
>   
> -/**
> - * SUBTEST: fbc-stridechange
> - * Description: Change the frontbuffer stride by doing a modeset
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcdrrs-stridechange
> - * Description: Change the frontbuffer stride by doing a modeset
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsr-stridechange
> - * Description: Change the frontbuffer stride by doing a modeset
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsrdrrs-stridechange
> - * Description: Change the frontbuffer stride by doing a modeset
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
> -
>   /**
>    * stridechange - change the frontbuffer stride by doing a modeset
>    *
> @@ -4603,46 +4649,6 @@ static void stridechange_subtest(const struct test_mode *t)
>   	do_assertions(rc ? 0 : DONT_ASSERT_FBC_STATUS);
>   }
>   
> -/**
> - * SUBTEST: fbc-tiling-%s
> - * Description: Test %arg[1] formats, if the tiling format supports FBC do the
> - *              basic drawing test, else set the mode & test if FBC is disabled
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcdrrs-tiling-%s
> - * Description: Test %arg[1] formats, if the tiling format supports FBC do the
> - *              basic drawing test, else set the mode & test if FBC is disabled
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsr-tiling-%s
> - * Description: Test %arg[1] formats, if the tiling format supports FBC do the
> - *              basic drawing test, else set the mode & test if FBC is disabled
> - * Driver requirement: i915, xe
> - * Functionality: fbc, fbt, psr, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fbcpsrdrrs-tiling-%s
> - * Description: Test %arg[1] formats, if the tiling format supports FBC do the
> - *              basic drawing test, else set the mode & test if FBC is disabled
> - * Driver requirement: i915, xe
> - * Functionality: drrs, fbc, fbt, psr, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @4:              4 tiling
> - * @linear:         Linear tiling
> - * @y:              Y tiling
> - */
> -
>   /**
>    * tiling_disable_fbc_subtest - Check if tiling is unsupported by FBC
>    *
> @@ -4692,15 +4698,6 @@ static void tiling_disable_fbc_subtest(const struct test_mode *t)
>   	igt_remove_fb(drm.fd, &new_fb);
>   }
>   
> -/**
> - * SUBTEST: basic
> - * Description: Do some basic operations regardless of which features are enabled
> - * Driver requirement: i915, xe
> - * Functionality: fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
> -
>   /*
>    * basic - do some basic operations regardless of which features are enabled
>    *
> diff --git a/tests/intel/kms_legacy_colorkey.c b/tests/intel/kms_legacy_colorkey.c
> index 877a6799a..69539f558 100644
> --- a/tests/intel/kms_legacy_colorkey.c
> +++ b/tests/intel/kms_legacy_colorkey.c
> @@ -21,14 +21,16 @@
>    * IN THE SOFTWARE.
>    */
>   
> -#include "igt.h"
> -#include <errno.h>
> -
>   /**
>    * TEST: kms legacy colorkey
>    * Category: Display
>    * Description: Test to check the legacy set colorkey ioctl on sprite planes.
> - *
> + */
> +
> +#include "igt.h"
> +#include <errno.h>
> +
> +/**
>    * SUBTEST: basic
>    * Description: Check that the legacy set colorkey ioctl only works on sprite planes.
>    * Driver requirement: i915
> diff --git a/tests/intel/kms_mmap_write_crc.c b/tests/intel/kms_mmap_write_crc.c
> index c8ff39ef0..59a838fe4 100644
> --- a/tests/intel/kms_mmap_write_crc.c
> +++ b/tests/intel/kms_mmap_write_crc.c
> @@ -24,6 +24,13 @@
>    *    Tiago Vignatti <tiago.vignatti at intel.com>
>    */
>   
> +/**
> + * TEST: kms mmap write crc
> + * Category: Display
> + * Description: Use the display CRC support to validate mmap write to an already
> + *              uncached future scanout buffer.
> + */
> +
>   #include <errno.h>
>   #include <limits.h>
>   #include <stdbool.h>
> @@ -37,12 +44,8 @@
>   #include "intel_chipset.h"
>   #include "ioctl_wrappers.h"
>   #include "igt_aux.h"
> +
>   /**
> - * TEST: kms mmap write crc
> - * Category: Display
> - * Description: Use the display CRC support to validate mmap write to an already
> - *              uncached future scanout buffer.
> - *
>    * SUBTEST: main
>    * Description: Tests that caching mode has become UC/WT and flushed using mmap write
>    * Driver requirement: i915, xe
> diff --git a/tests/intel/kms_pipe_b_c_ivb.c b/tests/intel/kms_pipe_b_c_ivb.c
> index 386f3003a..c1a1e6610 100644
> --- a/tests/intel/kms_pipe_b_c_ivb.c
> +++ b/tests/intel/kms_pipe_b_c_ivb.c
> @@ -24,13 +24,16 @@
>    *   Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
>    */
>   
> -#include "igt.h"
>   /**
>    * TEST: kms pipe b c ivb
>    * Category: Display
>    * Description: Exercise the FDI lane bifurcation code for IVB in the kernel by
>    *              setting different combinations of modes for pipes B and C.
> - *
> + */
> +
> +#include "igt.h"
> +
> +/**
>    * SUBTEST: disable-pipe-B-enable-pipe-C
>    * Description: Tests pipe-B and pipe-C interactions in IVB by disabling pipe-B
>    *              and then setting mode on pipe-C.
> diff --git a/tests/intel/kms_pm_backlight.c b/tests/intel/kms_pm_backlight.c
> index f6e7db0b2..68f4dc3d1 100644
> --- a/tests/intel/kms_pm_backlight.c
> +++ b/tests/intel/kms_pm_backlight.c
> @@ -25,6 +25,12 @@
>    *
>    */
>   
> +/**
> + * TEST: kms pm backlight
> + * Category: Display
> + * Description: Basic backlight sysfs test
> + */
> +
>   #include "igt.h"
>   #include <limits.h>
>   #include <sys/types.h>
> @@ -36,11 +42,8 @@
>   #include <time.h>
>   #include "igt_device.h"
>   #include "igt_device_scan.h"
> +
>   /**
> - * TEST: kms pm backlight
> - * Category: Display
> - * Description: Basic backlight sysfs test
> - *
>    * SUBTEST: bad-brightness
>    * Description: Test the bad brightness.
>    * Driver requirement: i915, xe
> diff --git a/tests/intel/kms_pm_dc.c b/tests/intel/kms_pm_dc.c
> index a3c7c4018..1c33206fc 100644
> --- a/tests/intel/kms_pm_dc.c
> +++ b/tests/intel/kms_pm_dc.c
> @@ -22,6 +22,12 @@
>    *
>    */
>   
> +/**
> + * TEST: kms pm dc
> + * Category: Display
> + * Description: Tests to validate display power DC states.
> + */
> +
>   #include <errno.h>
>   #include <fcntl.h>
>   #include <stdbool.h>
> @@ -39,10 +45,6 @@
>   #include "xe/xe_query.h"
>   
>   /**
> - * TEST: kms pm dc
> - * Category: Display
> - * Description: Tests to validate display power DC states.
> - *
>    * SUBTEST: dc3co-vpb-simulation
>    * Description: Make sure that system enters DC3CO when PSR2 is active and system
>    *              is in SLEEP state
> diff --git a/tests/intel/kms_pm_lpsp.c b/tests/intel/kms_pm_lpsp.c
> index a85e4e795..4ac99faf7 100644
> --- a/tests/intel/kms_pm_lpsp.c
> +++ b/tests/intel/kms_pm_lpsp.c
> @@ -24,6 +24,12 @@
>    *
>    */
>   
> +/**
> + * TEST: kms pm lpsp
> + * Description: These tests validates display Low Power Single Pipe configurations
> + * Category: Display
> + */
> +
>   #include "igt.h"
>   #include "igt_kmod.h"
>   #include "igt_pm.h"
> @@ -32,11 +38,8 @@
>   #include <sys/stat.h>
>   #include <fcntl.h>
>   #include <unistd.h>
> +
>   /**
> - * TEST: kms pm lpsp
> - * Description: These tests validates display Low Power Single Pipe configurations
> - * Category: Display
> - *
>    * SUBTEST: kms-lpsp
>    * Description: This test validates lpsp on all connected outputs on low power pipes
>    * Driver requirement: i915, xe
> diff --git a/tests/intel/kms_psr.c b/tests/intel/kms_psr.c
> index afd74eaff..1586d3bf0 100644
> --- a/tests/intel/kms_psr.c
> +++ b/tests/intel/kms_psr.c
> @@ -237,18 +237,14 @@
>    * Functionality: dpms, pr
>    * Mega feature: Panel Replay
>    * Test category: functionality test
> - */
> -
> -/**
> + *
>    * SUBTEST: pr_no_drrs
>    * Description: Check if pr is detecting changes when drrs is disabled
>    * Driver requirement: i915, xe
>    * Functionality: drrs, pr
>    * Mega feature: Panel Replay
>    * Test category: functionality test
> - */
> -
> -/**
> + *
>    * SUBTEST: pr_suspend
>    * Description: Check if pr is detecting changes when plane operation is
>    *              performed with suspend resume cycles
> @@ -256,9 +252,7 @@
>    * Functionality: pr, suspend
>    * Mega feature: Panel Replay
>    * Test category: functionality test
> - */
> -
> -/**
> + *
>    * SUBTEST: pr_basic
>    * Description: Basic check for pr if it is detecting changes made in planes
>    * Driver requirement: i915, xe
> @@ -296,9 +290,7 @@
>    * Functionality: plane, pr
>    * Mega feature: Panel Replay
>    * Test category: functionality test
> - */
> -
> -/**
> + *
>    * SUBTEST: pr_primary_%s
>    * Description: Check if pr is detecting memory mapping, rendering and plane
>    *              operations performed on primary planes
> @@ -335,6 +327,32 @@
>    * @plane_move:         Move plane position
>    */
>   
> +/**
> + * SUBTEST: psr_cursor_plane_move
> + * Description: Check if psr is detecting the plane operations performed on
> + *		cursor planes
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + * Functionality: psr
> + * Mega feature: PSR
> + *
> + * SUBTEST: psr_primary_page_flip
> + * Description: Check if psr is detecting page-flipping operations performed
> + *		on primary planes
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + * Functionality: psr
> + * Mega feature: PSR
> + *
> + * SUBTEST: psr_sprite_plane_onoff
> + * Description: Check if psr is detecting the plane operations performed on
> + *		sprite planes
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + * Functionality: psr
> + * Mega feature: PSR
> + */
> +
>   enum operations {
>   	PAGE_FLIP,
>   	MMAP_GTT,
> @@ -576,32 +594,6 @@ static void fb_dirty_fb_ioctl(data_t *data, struct igt_fb *fb)
>   	igt_assert(ret == 0 || ret == -ENOSYS);
>   }
>   
> -/**
> - * SUBTEST: psr_cursor_plane_move
> - * Description: Check if psr is detecting the plane operations performed on
> - *		cursor planes
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: psr
> - * Mega feature: PSR
> - *
> - * SUBTEST: psr_primary_page_flip
> - * Description: Check if psr is detecting page-flipping operations performed
> - *		on primary planes
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: psr
> - * Mega feature: PSR
> - *
> - * SUBTEST: psr_sprite_plane_onoff
> - * Description: Check if psr is detecting the plane operations performed on
> - *		sprite planes
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: psr
> - * Mega feature: PSR
> - */
> -
>   static void run_test(data_t *data)
>   {
>   	uint32_t handle = data->fb_white.gem_handle;
> diff --git a/tests/intel/kms_psr2_sf.c b/tests/intel/kms_psr2_sf.c
> index a597c8701..a93d496e8 100644
> --- a/tests/intel/kms_psr2_sf.c
> +++ b/tests/intel/kms_psr2_sf.c
> @@ -22,6 +22,13 @@
>    *
>    */
>   
> +/**
> + * TEST: kms psr2 sf
> + * Category: Display
> + * Description: Tests to varify PSR2 selective fetch by sending multiple damaged
> + *              areas
> + */
> +
>   #include "igt.h"
>   #include "igt_sysfs.h"
>   #include "igt_psr.h"
> @@ -30,12 +37,8 @@
>   #include <stdbool.h>
>   #include <stdio.h>
>   #include <string.h>
> +
>   /**
> - * TEST: kms psr2 sf
> - * Category: Display
> - * Description: Tests to varify PSR2 selective fetch by sending multiple damaged
> - *              areas
> - *
>    * SUBTEST: %s-plane-move-continuous-%s
>    * Description: Test that selective fetch works on moving %arg[1] plane %arg[2]
>    *              visible area (no update)
> diff --git a/tests/intel/kms_psr2_su.c b/tests/intel/kms_psr2_su.c
> index 1969c6fa7..56f35622e 100644
> --- a/tests/intel/kms_psr2_su.c
> +++ b/tests/intel/kms_psr2_su.c
> @@ -22,6 +22,12 @@
>    *
>    */
>   
> +/**
> + * TEST: kms psr2 su
> + * Category: Display
> + * Description: Test PSR2 selective update
> + */
> +
>   #include "igt.h"
>   #include "igt_sysfs.h"
>   #include "igt_psr.h"
> @@ -30,11 +36,8 @@
>   #include <stdio.h>
>   #include <string.h>
>   #include <sys/timerfd.h>
> +
>   /**
> - * TEST: kms psr2 su
> - * Category: Display
> - * Description: Test PSR2 selective update
> - *
>    * SUBTEST: frontbuffer-XRGB8888
>    * Description: Test that selective update works when screen changes
>    * Driver requirement: i915, xe
> diff --git a/tests/intel/kms_psr_stress_test.c b/tests/intel/kms_psr_stress_test.c
> index 6a3d2918c..21814f35b 100644
> --- a/tests/intel/kms_psr_stress_test.c
> +++ b/tests/intel/kms_psr_stress_test.c
> @@ -1,3 +1,9 @@
> +
> +/**
> + * TEST: kms psr stress test
> + * Category: Display
> + */
> +
>   #include "igt.h"
>   #include "igt_sysfs.h"
>   #include "igt_psr.h"
> @@ -7,10 +13,8 @@
>   #include <stdio.h>
>   #include <string.h>
>   #include <sys/timerfd.h>
> +
>   /**
> - * TEST: kms psr stress test
> - * Category: Display
> - *
>    * SUBTEST: flip-primary-invalidate-overlay
>    * Description: Mix page flips in primary plane and frontbuffer writes to overlay
>    *              plane and check for warnings, underruns or PSR state changes
> diff --git a/tests/intel/kms_pwrite_crc.c b/tests/intel/kms_pwrite_crc.c
> index ee6b4f3e4..12add5da6 100644
> --- a/tests/intel/kms_pwrite_crc.c
> +++ b/tests/intel/kms_pwrite_crc.c
> @@ -22,6 +22,12 @@
>    *
>    */
>   
> +/**
> + * TEST: kms pwrite crc
> + * Category: Display
> + * Description: Test to validate pwrite buffer using the display CRC
> + */
> +
>   #include "igt.h"
>   #include <errno.h>
>   #include <limits.h>
> @@ -30,10 +36,6 @@
>   #include <string.h>
>   
>   /**
> - * TEST: kms pwrite crc
> - * Category: Display
> - * Description: Test to validate pwrite buffer using the display CRC
> - *
>    * SUBTEST:
>    * Description: Use the display CRC support to validate pwrite to an already
>    *              uncached future scanout buffer.
> diff --git a/tests/kms_3d.c b/tests/kms_3d.c
> index fa73d0cc6..ad6c45e9b 100644
> --- a/tests/kms_3d.c
> +++ b/tests/kms_3d.c
> @@ -22,13 +22,16 @@
>    *
>    */
>   
> -#include "igt.h"
> -#include "xe/xe_query.h"
>   /**
>    * TEST: kms 3d
>    * Category: Display
>    * Description: Tests 3D mode setting.
> - *
> + */
> +
> +#include "igt.h"
> +#include "xe/xe_query.h"
> +
> +/**
>    * SUBTEST:
>    * Description: Tests 3D mode setting.
>    * Driver requirement: i915, xe
> diff --git a/tests/kms_addfb_basic.c b/tests/kms_addfb_basic.c
> index fc16b8814..9f8bf4275 100644
> --- a/tests/kms_addfb_basic.c
> +++ b/tests/kms_addfb_basic.c
> @@ -50,22 +50,6 @@
>   #include "xe/xe_ioctl.h"
>   #include "xe/xe_query.h"
>   
> -static uint32_t gem_bo;
> -static uint32_t gem_bo_small;
> -static igt_display_t display;
> -
> -static int legacy_addfb(int fd, struct drm_mode_fb_cmd *arg)
> -{
> -	int err;
> -
> -	err = 0;
> -	if (igt_ioctl(fd, DRM_IOCTL_MODE_ADDFB, arg))
> -		err = -errno;
> -
> -	errno = 0;
> -	return err;
> -}
> -
>   /**
>    * SUBTEST: unused-%s
>    * Description: Test that addfb2 call fails correctly for unused %arg[1]
> @@ -109,6 +93,216 @@ static int legacy_addfb(int fd, struct drm_mode_fb_cmd *arg)
>    * @pitches:      Pitches
>    * @offsets:      Offsets
>    */
> +
> +/**
> + * SUBTEST: no-handle
> + * Description: Test that addfb2 call fails correctly without handle
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + * Functionality: kms_gem_interop
> + * Mega feature: General Display Features
> + *
> + * SUBTEST: basic
> + * Description: Check if addfb2 call works with given handle
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + * Functionality: kms_gem_interop
> + * Mega feature: General Display Features
> + *
> + * SUBTEST: bad-pitch-%i
> + * Description: bad-pitch-%arg[1]: Test that addfb2 call fails correctly for bad-pitches
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + * Functionality: kms_gem_interop
> + * Mega feature: General Display Features
> + *
> + * arg[1].values: 0, 32, 63, 128, 256, 999, 1024, 65536
> + */
> +
> +/**
> + * SUBTEST: basic-%s-tiled-legacy
> + * Description: Check if addfb2 and rmfb call works for basic %arg[1] test
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + * Functionality: kms_gem_interop, tiling
> + * Mega feature: General Display Features
> + *
> + * SUBTEST: framebuffer-vs-set-tiling
> + * Description: Check if addfb2 call works for x and y tiling
> + * Driver requirement: i915
> + * Test category: functionality test
> + * Functionality: kms_gem_interop, tiling
> + * Mega feature: General Display Features
> + *
> + * SUBTEST: tile-pitch-mismatch
> + * Description: Test that addfb2 call fails correctly for pitches mismatch
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + * Functionality: kms_gem_interop, tiling
> + * Mega feature: General Display Features
> + *
> + * arg[1]:
> + *
> + * @x:        x-tiling
> + * @y:        y-tiling
> + */
> +
> +/**
> + * SUBTEST: size-max
> + * Description: Check if addfb2 call works with max size of buffer object
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + * Functionality: kms_gem_interop
> + * Mega feature: General Display Features
> + *
> + * SUBTEST: too-wide
> + * Description: Test that addfb2 call fails correctly with increased width of fb
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + * Functionality: kms_gem_interop
> + * Mega feature: General Display Features
> + *
> + * SUBTEST: too-high
> + * Description: Test that addfb2 call fails correctly with increased height of fb
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + * Functionality: kms_gem_interop
> + * Mega feature: General Display Features
> + *
> + * SUBTEST: bo-too-small
> + * Description: Test that addfb2 call fails correctly with small size of buffer object
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + * Functionality: kms_gem_interop
> + * Mega feature: General Display Features
> + *
> + * SUBTEST: small-bo
> + * Description: Check if addfb2 call works for given height
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + * Functionality: kms_gem_interop
> + * Mega feature: General Display Features
> + *
> + * SUBTEST: bo-too-small-due-to-tiling
> + * Description: Test that addfb2 call fails correctly with small buffer object
> + *              after changing tile
> + * Driver requirement: i915
> + * Test category: functionality test
> + * Functionality: kms_gem_interop, tiling
> + * Mega feature: General Display Features
> + */
> +
> +/**
> + * SUBTEST: addfb25-modifier-no-flag
> + * Description: Test that addfb2 call fails correctly for x-tiling with given modifier
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + * Functionality: kms_gem_interop, tiling
> + * Mega feature: General Display Features
> + *
> + * SUBTEST: addfb25-bad-modifier
> + * Description: Test that addfb2 call fails correctly for irrelevant modifier
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + * Functionality: kms_gem_interop, tiling
> + * Mega feature: General Display Features
> + *
> + * SUBTEST: addfb25-x-tiled-mismatch-legacy
> + * Description: Test that addfb2 call fails correctly for irrelevant x-tiling
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + * Functionality: kms_gem_interop, tiling
> + * Mega feature: General Display Features
> + *
> + * SUBTEST: addfb25-x-tiled-legacy
> + * Description: Check if addfb2 call works for x-tiling
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + * Functionality: kms_gem_interop, tiling
> + * Mega feature: General Display Features
> + *
> + * SUBTEST: addfb25-framebuffer-vs-set-tiling
> + * Description: Check if addfb2 call works for relevant combination of tiling and fbs
> + * Driver requirement: i915
> + * Test category: functionality test
> + * Functionality: kms_gem_interop, tiling
> + * Mega feature: General Display Features
> + */
> +
> +/**
> + * SUBTEST: addfb25-y-tiled-%s
> + * Description: Check if addfb2 call works for y-tiling %arg[1]
> + * Driver requirement: i915, xe
> + * Functionality: kms_gem_interop, tiling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: addfb25-yf-tiled-legacy
> + * Description: Check if addfb2 call works for yf-tiling
> + * Driver requirement: i915, xe
> + * Functionality: kms_gem_interop, tiling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @legacy:               with default size
> + * @small-legacy:         with given size & modifier
> + */
> +
> +/**
> + * SUBTEST: addfb25-4-tiled
> + * Description: Check if addfb2 call works for tiling-4
> + * Driver requirement: i915, xe
> + * Functionality: kms_gem_interop, tiling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + */
> +
> +/**
> + * SUBTEST: invalid-%s-%s
> + * Description: Test that %arg[1] ioctl call fails correctly for %arg[2] object
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + * Functionality: kms_gem_interop
> + * Mega feature: General Display Features
> + *
> + * arg[1]:
> + *
> + * @get:           get-properties
> + * @set:           set-properties
> + *
> + * arg[2]:
> + *
> + * @prop:          fb mode
> + * @prop-any:      invalid
> + */
> +
> +/**
> + * SUBTEST: master-rmfb
> + * Description: Check that only master can rmfb
> + * Driver requirement: i915, xe
> + * Functionality: kms_gem_interop
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + */
> +
> +static uint32_t gem_bo;
> +static uint32_t gem_bo_small;
> +static igt_display_t display;
> +
> +static int legacy_addfb(int fd, struct drm_mode_fb_cmd *arg)
> +{
> +	int err;
> +
> +	err = 0;
> +	if (igt_ioctl(fd, DRM_IOCTL_MODE_ADDFB, arg))
> +		err = -errno;
> +
> +	errno = 0;
> +	return err;
> +}
> +
>   static void invalid_tests(int fd)
>   {
>   	struct drm_mode_fb_cmd2 f = {};
> @@ -322,30 +516,6 @@ static void invalid_tests(int fd)
>   	}
>   }
>   
> -/**
> - * SUBTEST: no-handle
> - * Description: Test that addfb2 call fails correctly without handle
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: kms_gem_interop
> - * Mega feature: General Display Features
> - *
> - * SUBTEST: basic
> - * Description: Check if addfb2 call works with given handle
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: kms_gem_interop
> - * Mega feature: General Display Features
> - *
> - * SUBTEST: bad-pitch-%i
> - * Description: bad-pitch-%arg[1]: Test that addfb2 call fails correctly for bad-pitches
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: kms_gem_interop
> - * Mega feature: General Display Features
> - *
> - * arg[1].values: 0, 32, 63, 128, 256, 999, 1024, 65536
> - */
>   static void pitch_tests(int fd)
>   {
>   	struct drm_mode_fb_cmd2 f = {};
> @@ -393,33 +563,6 @@ static void pitch_tests(int fd)
>   		gem_close(fd, gem_bo);
>   }
>   
> -/**
> - * SUBTEST: basic-%s-tiled-legacy
> - * Description: Check if addfb2 and rmfb call works for basic %arg[1] test
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: kms_gem_interop, tiling
> - * Mega feature: General Display Features
> - *
> - * SUBTEST: framebuffer-vs-set-tiling
> - * Description: Check if addfb2 call works for x and y tiling
> - * Driver requirement: i915
> - * Test category: functionality test
> - * Functionality: kms_gem_interop, tiling
> - * Mega feature: General Display Features
> - *
> - * SUBTEST: tile-pitch-mismatch
> - * Description: Test that addfb2 call fails correctly for pitches mismatch
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: kms_gem_interop, tiling
> - * Mega feature: General Display Features
> - *
> - * arg[1]:
> - *
> - * @x:        x-tiling
> - * @y:        y-tiling
> - */
>   static void tiling_tests(int fd)
>   {
>   	struct drm_mode_fb_cmd2 f = {};
> @@ -506,50 +649,6 @@ static void tiling_tests(int fd)
>   	}
>   }
>   
> -/**
> - * SUBTEST: size-max
> - * Description: Check if addfb2 call works with max size of buffer object
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: kms_gem_interop
> - * Mega feature: General Display Features
> - *
> - * SUBTEST: too-wide
> - * Description: Test that addfb2 call fails correctly with increased width of fb
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: kms_gem_interop
> - * Mega feature: General Display Features
> - *
> - * SUBTEST: too-high
> - * Description: Test that addfb2 call fails correctly with increased height of fb
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: kms_gem_interop
> - * Mega feature: General Display Features
> - *
> - * SUBTEST: bo-too-small
> - * Description: Test that addfb2 call fails correctly with small size of buffer object
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: kms_gem_interop
> - * Mega feature: General Display Features
> - *
> - * SUBTEST: small-bo
> - * Description: Check if addfb2 call works for given height
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: kms_gem_interop
> - * Mega feature: General Display Features
> - *
> - * SUBTEST: bo-too-small-due-to-tiling
> - * Description: Test that addfb2 call fails correctly with small buffer object
> - *              after changing tile
> - * Driver requirement: i915
> - * Test category: functionality test
> - * Functionality: kms_gem_interop, tiling
> - * Mega feature: General Display Features
> - */
>   static void size_tests(int fd)
>   {
>   	struct drm_mode_fb_cmd2 f = {};
> @@ -665,42 +764,6 @@ static void size_tests(int fd)
>   	}
>   }
>   
> -/**
> - * SUBTEST: addfb25-modifier-no-flag
> - * Description: Test that addfb2 call fails correctly for x-tiling with given modifier
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: kms_gem_interop, tiling
> - * Mega feature: General Display Features
> - *
> - * SUBTEST: addfb25-bad-modifier
> - * Description: Test that addfb2 call fails correctly for irrelevant modifier
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: kms_gem_interop, tiling
> - * Mega feature: General Display Features
> - *
> - * SUBTEST: addfb25-x-tiled-mismatch-legacy
> - * Description: Test that addfb2 call fails correctly for irrelevant x-tiling
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: kms_gem_interop, tiling
> - * Mega feature: General Display Features
> - *
> - * SUBTEST: addfb25-x-tiled-legacy
> - * Description: Check if addfb2 call works for x-tiling
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: kms_gem_interop, tiling
> - * Mega feature: General Display Features
> - *
> - * SUBTEST: addfb25-framebuffer-vs-set-tiling
> - * Description: Check if addfb2 call works for relevant combination of tiling and fbs
> - * Driver requirement: i915
> - * Test category: functionality test
> - * Functionality: kms_gem_interop, tiling
> - * Mega feature: General Display Features
> - */
>   static void addfb25_tests(int fd)
>   {
>   	struct drm_mode_fb_cmd2 f = {};
> @@ -786,26 +849,6 @@ static int addfb_expected_ret(igt_display_t *disp, struct drm_mode_fb_cmd2 *f)
>   					  f->modifier[0]) ? 0 : -1;
>   }
>   
> -/**
> - * SUBTEST: addfb25-y-tiled-%s
> - * Description: Check if addfb2 call works for y-tiling %arg[1]
> - * Driver requirement: i915, xe
> - * Functionality: kms_gem_interop, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: addfb25-yf-tiled-legacy
> - * Description: Check if addfb2 call works for yf-tiling
> - * Driver requirement: i915, xe
> - * Functionality: kms_gem_interop, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @legacy:               with default size
> - * @small-legacy:         with given size & modifier
> - */
>   static void addfb25_ytile(int fd)
>   {
>   	struct drm_mode_fb_cmd2 f = {};
> @@ -872,14 +915,6 @@ static void addfb25_ytile(int fd)
>   	}
>   }
>   
> -/**
> - * SUBTEST: addfb25-4-tiled
> - * Description: Check if addfb2 call works for tiling-4
> - * Driver requirement: i915, xe
> - * Functionality: kms_gem_interop, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
>   static void addfb25_4tile(int fd)
>   {
>   	struct drm_mode_fb_cmd2 f = {};
> @@ -918,24 +953,6 @@ static void addfb25_4tile(int fd)
>   		gem_close(fd, gem_bo);
>   }
>   
> -/**
> - * SUBTEST: invalid-%s-%s
> - * Description: Test that %arg[1] ioctl call fails correctly for %arg[2] object
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: kms_gem_interop
> - * Mega feature: General Display Features
> - *
> - * arg[1]:
> - *
> - * @get:           get-properties
> - * @set:           set-properties
> - *
> - * arg[2]:
> - *
> - * @prop:          fb mode
> - * @prop-any:      invalid
> - */
>   static void prop_tests(int fd)
>   {
>   	struct drm_mode_fb_cmd2 f = {};
> @@ -1001,14 +1018,6 @@ static void prop_tests(int fd)
>   	}
>   }
>   
> -/**
> - * SUBTEST: master-rmfb
> - * Description: Check that only master can rmfb
> - * Driver requirement: i915, xe
> - * Functionality: kms_gem_interop
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
>   static void master_tests(int fd)
>   {
>   	struct drm_mode_fb_cmd2 f = {};
> diff --git a/tests/kms_async_flips.c b/tests/kms_async_flips.c
> index f29c46645..82a8f5ef3 100644
> --- a/tests/kms_async_flips.c
> +++ b/tests/kms_async_flips.c
> @@ -30,6 +30,7 @@
>    * Category: Display
>    * Description: Test asynchronous page flips.
>    */
> +
>   #include "igt.h"
>   #include "igt_aux.h"
>   #include "igt_psr.h"
> @@ -37,6 +38,54 @@
>   #include <sys/time.h>
>   #include <poll.h>
>   
> +/**
> + * SUBTEST: alternate-sync-async-flip
> + * Description: Verify the async flip functionality and the fps during async flips
> + *              Alternate between sync and async flips
> + * Driver requirement: i915, xe
> + * Functionality: async_flips, vblank
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: async-flip-with-page-flip-events
> + * Description: Verify the async flip functionality and the fps during async flips
> + *              Wait for page flip events in between successive asynchronous flips
> + * Driver requirement: i915, xe
> + * Functionality: async_flips, vblank
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: test-time-stamp
> + * Description: Verify the async flip functionality and the fps during async flips
> + *              Verify that the async flip timestamp does not coincide with either
> + *              previous or next vblank
> + * Driver requirement: i915, xe
> + * Functionality: async_flips, vblank
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: test-cursor
> + * Description: Verify that the DRM_IOCTL_MODE_CURSOR passes after async flip
> + * Driver requirement: i915, xe
> + * Functionality: async_flips, cursor, vblank
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: crc
> + * Description: Use CRC to verify async flip scans out the correct framebuffer
> + * Driver requirement: i915, xe
> + * Functionality: async_flips, crc, vblank
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: invalid-async-flip
> + * Description: Negative case to verify if changes in fb are rejected from kernel as expected
> + * Driver requirement: i915, xe
> + * Functionality: async_flips, vblank
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + */
> +
>   #define CURSOR_POS 128
>   
>   /*
> @@ -203,23 +252,6 @@ static void test_init_fbs(data_t *data)
>   	igt_display_commit2(&data->display, data->display.is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
>   }
>   
> -/**
> - * SUBTEST: alternate-sync-async-flip
> - * Description: Verify the async flip functionality and the fps during async flips
> - *              Alternate between sync and async flips
> - * Driver requirement: i915, xe
> - * Functionality: async_flips, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: async-flip-with-page-flip-events
> - * Description: Verify the async flip functionality and the fps during async flips
> - *              Wait for page flip events in between successive asynchronous flips
> - * Driver requirement: i915, xe
> - * Functionality: async_flips, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
>   static void test_async_flip(data_t *data)
>   {
>   	int ret, frame;
> @@ -315,16 +347,6 @@ static void wait_for_vblank(data_t *data, unsigned long *vbl_time, unsigned int
>   	*seq = wait_vbl.reply.sequence;
>   }
>   
> -/**
> - * SUBTEST: test-time-stamp
> - * Description: Verify the async flip functionality and the fps during async flips
> - *              Verify that the async flip timestamp does not coincide with either
> - *              previous or next vblank
> - * Driver requirement: i915, xe
> - * Functionality: async_flips, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
>   static void test_timestamp(data_t *data)
>   {
>   	int flags = DRM_MODE_PAGE_FLIP_ASYNC | DRM_MODE_PAGE_FLIP_EVENT;
> @@ -369,14 +391,6 @@ static void test_timestamp(data_t *data)
>   		     "Async flip time stamp is expected to be in between 2 vblank time stamps\n");
>   }
>   
> -/**
> - * SUBTEST: test-cursor
> - * Description: Verify that the DRM_IOCTL_MODE_CURSOR passes after async flip
> - * Driver requirement: i915, xe
> - * Functionality: async_flips, cursor, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
>   static void test_cursor(data_t *data)
>   {
>   	int flags = DRM_MODE_PAGE_FLIP_ASYNC | DRM_MODE_PAGE_FLIP_EVENT;
> @@ -529,14 +543,6 @@ static unsigned int clock_ms(void)
>   	return ts.tv_sec * 1000 + ts.tv_nsec / 1000000;
>   }
>   
> -/**
> - * SUBTEST: crc
> - * Description: Use CRC to verify async flip scans out the correct framebuffer
> - * Driver requirement: i915, xe
> - * Functionality: async_flips, crc, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
>   static void test_crc(data_t *data)
>   {
>   	unsigned int frame = 0;
> @@ -599,14 +605,6 @@ static void test_crc(data_t *data)
>   	igt_assert_lt(data->frame_count * 2, data->flip_count);
>   }
>   
> -/**
> - * SUBTEST: invalid-async-flip
> - * Description: Negative case to verify if changes in fb are rejected from kernel as expected
> - * Driver requirement: i915, xe
> - * Functionality: async_flips, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
>   static void run_test(data_t *data, void (*test)(data_t *))
>   {
>   	igt_display_t *display = &data->display;
> diff --git a/tests/kms_atomic.c b/tests/kms_atomic.c
> index a47539e48..28af27f22 100644
> --- a/tests/kms_atomic.c
> +++ b/tests/kms_atomic.c
> @@ -48,6 +48,94 @@
>   #include "igt_aux.h"
>   #include "sw_sync.h"
>   
> +/**
> + * SUBTEST: plane-primary-overlay-mutable-zpos
> + * Description: Verify that the overlay plane can cover the primary one (and
> + *              vice versa) by changing their zpos property.
> + * Driver requirement: i915, xe
> + * Functionality: kms_core, plane
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: plane-immutable-zpos
> + * Description: Verify the reported zpos property of planes by making sure only
> + *              higher zpos planes cover the lower zpos ones.
> + * Driver requirement: i915, xe
> + * Functionality: kms_core, plane
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: plane-%s-legacy
> + * Description: Test for KMS atomic modesetting on %arg[1] and ensure coherency
> + *              between legacy and atomic interfaces.
> + * Driver requirement: i915, xe
> + * Functionality: kms_core, plane
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @cursor:         Cursor plane
> + * @overlay:        Overlay plane
> + * @primary:        Primary plane
> + */
> +
> +/**
> + * SUBTEST: test-only
> + * Description: Test to ensure that DRM_MODE_ATOMIC_TEST_ONLY really only touches
> + *              the free-standing state objects and nothing else.
> + * Driver requirement: i915, xe
> + * Functionality: kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + */
> +
> +/**
> + * SUBTEST: plane-invalid-%s
> + * Description: Test error handling when invalid %arg[1] are passed
> + * Driver requirement: i915, xe
> + * Functionality: kms_core, plane
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @params:           plane parameters
> + * @params-fence:     plane fence parameters
> + */
> +
> +/**
> + * SUBTEST: crtc-invalid-%s
> + * Description: Test error handling when invalid %arg[1] are passed
> + * Driver requirement: i915, xe
> + * Functionality: kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @params:           crtc parameters
> + * @params-fence:     crtc fence parameters
> + */
> +
> +/**
> + * SUBTEST: atomic-invalid-params
> + * Description: Test abuse the atomic ioctl directly in order to test various
> + *              invalid conditions which the libdrm wrapper won't allow us to
> + *              create.
> + * Driver requirement: i915, xe
> + * Functionality: kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: atomic-plane-damage
> + * Description: Simple test cases to use FB_DAMAGE_CLIPS plane property
> + * Driver requirement: i915, xe
> + * Functionality: kms_core, plane
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + */
> +
>   #ifndef DRM_CAP_CURSOR_WIDTH
>   #define DRM_CAP_CURSOR_WIDTH 0x8
>   #endif
> @@ -302,15 +390,6 @@ static uint32_t plane_get_igt_format(igt_plane_t *plane)
>   	return 0;
>   }
>   
> -/**
> - * SUBTEST: plane-primary-overlay-mutable-zpos
> - * Description: Verify that the overlay plane can cover the primary one (and
> - *              vice versa) by changing their zpos property.
> - * Driver requirement: i915, xe
> - * Functionality: kms_core, plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
>   static void
>   plane_primary_overlay_mutable_zpos(data_t *data, igt_output_t *output, igt_plane_t *overlay,
>   				   uint32_t format_primary, uint32_t format_overlay)
> @@ -392,15 +471,6 @@ plane_primary_overlay_mutable_zpos(data_t *data, igt_output_t *output, igt_plane
>   	igt_assert_eq_u64(igt_plane_get_prop(overlay, IGT_PLANE_ZPOS), 1);
>   }
>   
> -/**
> - * SUBTEST: plane-immutable-zpos
> - * Description: Verify the reported zpos property of planes by making sure only
> - *              higher zpos planes cover the lower zpos ones.
> - * Driver requirement: i915, xe
> - * Functionality: kms_core, plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
>   static void
>   plane_immutable_zpos(data_t *data, igt_output_t *output, enum pipe pipe, int n_planes)
>   {
> @@ -530,21 +600,6 @@ plane_immutable_zpos(data_t *data, igt_output_t *output, enum pipe pipe, int n_p
>   	igt_remove_fb(data->drm_fd, &fb_upper);
>   }
>   
> -/**
> - * SUBTEST: plane-%s-legacy
> - * Description: Test for KMS atomic modesetting on %arg[1] and ensure coherency
> - *              between legacy and atomic interfaces.
> - * Driver requirement: i915, xe
> - * Functionality: kms_core, plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @cursor:         Cursor plane
> - * @overlay:        Overlay plane
> - * @primary:        Primary plane
> - */
>   static void plane_overlay(data_t *data, igt_output_t *output, igt_plane_t *plane,
>   			  uint32_t format)
>   {
> @@ -631,16 +686,6 @@ static void plane_primary(data_t *data)
>   	plane_commit(data->primary, COMMIT_UNIVERSAL, ATOMIC_RELAX_NONE);
>   }
>   
> -/**
> - * SUBTEST: test-only
> - * Description: Test to ensure that DRM_MODE_ATOMIC_TEST_ONLY really only touches
> - *              the free-standing state objects and nothing else.
> - * Driver requirement: i915, xe
> - * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
> -
>   /*
>    * Test to ensure that DRM_MODE_ATOMIC_TEST_ONLY really only touches the
>    * free-standing state objects and nothing else.
> @@ -749,19 +794,6 @@ static void plane_cursor(data_t *data, igt_output_t *output, igt_plane_t *cursor
>   	plane_commit(cursor, COMMIT_LEGACY, ATOMIC_RELAX_NONE);
>   }
>   
> -/**
> - * SUBTEST: plane-invalid-%s
> - * Description: Test error handling when invalid %arg[1] are passed
> - * Driver requirement: i915, xe
> - * Functionality: kms_core, plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @params:           plane parameters
> - * @params-fence:     plane fence parameters
> - */
>   static void plane_invalid_params(data_t *data, igt_output_t *output)
>   {
>   	struct igt_fb fb2;
> @@ -846,19 +878,6 @@ static void plane_invalid_params_fence(data_t *data, igt_output_t *output)
>   	close(timeline);
>   }
>   
> -/**
> - * SUBTEST: crtc-invalid-%s
> - * Description: Test error handling when invalid %arg[1] are passed
> - * Driver requirement: i915, xe
> - * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @params:           crtc parameters
> - * @params-fence:     crtc fence parameters
> - */
>   static void crtc_invalid_params(data_t *data, igt_output_t *output)
>   {
>   	uint64_t old_mode_id = data->pipe->values[IGT_CRTC_MODE_ID];
> @@ -999,17 +1018,6 @@ static void crtc_invalid_params_fence(data_t *data, igt_output_t *output)
>   	igt_assert(data->pipe->out_fence_fd != -1);
>   }
>   
> -/**
> - * SUBTEST: atomic-invalid-params
> - * Description: Test abuse the atomic ioctl directly in order to test various
> - *              invalid conditions which the libdrm wrapper won't allow us to
> - *              create.
> - * Driver requirement: i915, xe
> - * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
> -
>   /*
>    * Abuse the atomic ioctl directly in order to test various invalid conditions,
>    * which the libdrm wrapper won't allow us to create.
> @@ -1148,14 +1156,6 @@ static void atomic_invalid_params(data_t *data, igt_output_t *output)
>   	do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT);
>   }
>   
> -/**
> - * SUBTEST: atomic-plane-damage
> - * Description: Simple test cases to use FB_DAMAGE_CLIPS plane property
> - * Driver requirement: i915, xe
> - * Functionality: kms_core, plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
>   static void atomic_plane_damage(data_t *data)
>   {
>   	struct drm_mode_rect damage[2];
> diff --git a/tests/kms_atomic_interruptible.c b/tests/kms_atomic_interruptible.c
> index c86db7149..7419e0746 100644
> --- a/tests/kms_atomic_interruptible.c
> +++ b/tests/kms_atomic_interruptible.c
> @@ -26,59 +26,13 @@
>    * Category: Display
>    * Description: Tests that interrupt various atomic ioctls.
>    */
> +
>   #include <signal.h>
>   
>   #include "igt.h"
>   #include "drmtest.h"
>   #include "sw_sync.h"
>   
> -IGT_TEST_DESCRIPTION("Tests that interrupt various atomic ioctls.");
> -
> -enum plane_test_type
> -{
> -	test_legacy_modeset,
> -	test_atomic_modeset,
> -	test_legacy_dpms,
> -	test_setplane,
> -	test_setcursor,
> -	test_pageflip
> -};
> -
> -static int block_plane(igt_display_t *display, igt_output_t *output, enum plane_test_type test_type, igt_plane_t *plane)
> -{
> -	int timeline = sw_sync_timeline_create();
> -
> -	igt_fork(child, 1) {
> -		/* Ignore the signal helper, we need to block indefinitely on the fence. */
> -		signal(SIGCONT, SIG_IGN);
> -
> -		if (test_type == test_legacy_modeset || test_type == test_atomic_modeset) {
> -			igt_output_set_pipe(output, PIPE_NONE);
> -		}
> -		igt_plane_set_fence_fd(plane, sw_sync_timeline_create_fence(timeline, 1));
> -
> -		igt_display_commit2(display, COMMIT_ATOMIC);
> -	}
> -
> -	return timeline;
> -}
> -
> -static void unblock(int block)
> -{
> -	sw_sync_timeline_inc(block, 1);
> -	close(block);
> -}
> -
> -static void ev_page_flip(int fd, unsigned seq, unsigned tv_sec, unsigned tv_usec, void *user_data)
> -{
> -	igt_debug("Retrieved vblank seq: %u on unk\n", seq);
> -}
> -
> -static drmEventContext drm_events = {
> -	.version = 2,
> -	.page_flip_handler = ev_page_flip
> -};
> -
>   /**
>    * SUBTEST: %s-setmode
>    * Description: Tests the interrupt properties of %arg[1] modeset
> @@ -114,9 +68,7 @@ static drmEventContext drm_events = {
>    * Functionality: kms_core
>    * Mega feature: General Display Features
>    * Test category: functionality test
> - */
> -
> -/**
> + *
>    * SUBTEST: universal-setplane-%s
>    * Description: Tests the interrupt properties for %arg[1]
>    * Driver requirement: i915, xe
> @@ -129,6 +81,54 @@ static drmEventContext drm_events = {
>    * @cursor:         Cursor plane
>    * @primary:        Primary plane
>    */
> +
> +IGT_TEST_DESCRIPTION("Tests that interrupt various atomic ioctls.");
> +
> +enum plane_test_type
> +{
> +	test_legacy_modeset,
> +	test_atomic_modeset,
> +	test_legacy_dpms,
> +	test_setplane,
> +	test_setcursor,
> +	test_pageflip
> +};
> +
> +static int block_plane(igt_display_t *display, igt_output_t *output, enum plane_test_type test_type, igt_plane_t *plane)
> +{
> +	int timeline = sw_sync_timeline_create();
> +
> +	igt_fork(child, 1) {
> +		/* Ignore the signal helper, we need to block indefinitely on the fence. */
> +		signal(SIGCONT, SIG_IGN);
> +
> +		if (test_type == test_legacy_modeset || test_type == test_atomic_modeset) {
> +			igt_output_set_pipe(output, PIPE_NONE);
> +		}
> +		igt_plane_set_fence_fd(plane, sw_sync_timeline_create_fence(timeline, 1));
> +
> +		igt_display_commit2(display, COMMIT_ATOMIC);
> +	}
> +
> +	return timeline;
> +}
> +
> +static void unblock(int block)
> +{
> +	sw_sync_timeline_inc(block, 1);
> +	close(block);
> +}
> +
> +static void ev_page_flip(int fd, unsigned seq, unsigned tv_sec, unsigned tv_usec, void *user_data)
> +{
> +	igt_debug("Retrieved vblank seq: %u on unk\n", seq);
> +}
> +
> +static drmEventContext drm_events = {
> +	.version = 2,
> +	.page_flip_handler = ev_page_flip
> +};
> +
>   static void run_plane_test(igt_display_t *display, enum pipe pipe, igt_output_t *output,
>   			   enum plane_test_type test_type, unsigned plane_type)
>   {
> diff --git a/tests/kms_atomic_transition.c b/tests/kms_atomic_transition.c
> index 1ec96ce5e..b8053acf7 100644
> --- a/tests/kms_atomic_transition.c
> +++ b/tests/kms_atomic_transition.c
> @@ -25,6 +25,7 @@
>    * TEST: kms atomic transition
>    * Category: Display
>    */
> +
>   #include "igt.h"
>   #include "igt_rand.h"
>   #include "drmtest.h"
> @@ -37,6 +38,95 @@
>   #include <time.h>
>   #include <poll.h>
>   
> +/**
> + * SUBTEST: plane-primary-toggle-with-vblank-wait
> + * Description: Check toggling of primary plane with vblank
> + * Driver requirement: i915, xe
> + * Functionality: plane, vblank, watermark
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: plane-all-modeset-%s
> + * Description: Modeset test for all plane combinations %arg[1]
> + * Driver requirement: i915, xe
> + * Functionality: plane, watermark
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @transition:                           default
> + * @transition-fencing:                   with fencing commit
> + */
> +
> +/**
> + * SUBTEST: plane-all-modeset-%s
> + * Description: Modeset test for all plane combinations %arg[1]
> + * Driver requirement: i915, xe
> + * Functionality: plane, watermark
> + * Mega feature: eDP
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @transition-fencing-internal-panels:   on internal panels with fencing commit
> + * @transition-internal-panels:           on internal panels
> + */
> +
> +/**
> + * SUBTEST: plane-all-%s
> + * Description: Transition test for all plane combinations %arg[1]
> + * Driver requirement: i915, xe
> + * Functionality: plane, watermark
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @transition:                           default
> + * @transition-fencing:                   with fencing commit
> + * @transition-nonblocking:               with non-blocking commit
> + * @transition-nonblocking-fencing:       with non-blocking & fencing commit
> + */
> +
> +/**
> + * SUBTEST: plane-toggle-modeset-transition
> + * Description: Check toggling and modeset transition on plane
> + * Driver requirement: i915, xe
> + * Functionality: plane, watermark
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: plane-use-after-nonblocking-%s
> + * Description: Transition test with non %arg[1] and make sure commit of disabled
> + *              plane has to complete before atomic commit on that plane
> + * Driver requirement: i915, xe
> + * Functionality: plane, watermark
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @unbind:           blocking commit
> + * @unbind-fencing:   blocking commit with fencing
> + */
> +
> +/**
> + * SUBTEST: modeset-%s
> + * Description: Modeset transition tests for combinations of %arg[1]
> + * Driver requirement: i915, xe
> + * Functionality: plane, watermark
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @transition:                     crtc enabled
> + * @transition-fencing:             crtc enabled with fencing commit
> + * @transition-nonblocking:         crtc enabled with nonblocking commit
> + * @transition-nonblocking-fencing: crtc enabled with nonblocking & fencing commit
> + */
> +
>   #ifndef DRM_CAP_CURSOR_WIDTH
>   #define DRM_CAP_CURSOR_WIDTH 0x8
>   #endif
> @@ -62,14 +152,6 @@ int *timeline;
>   pthread_t *thread;
>   int *seqno;
>   
> -/**
> - * SUBTEST: plane-primary-toggle-with-vblank-wait
> - * Description: Check toggling of primary plane with vblank
> - * Driver requirement: i915, xe
> - * Functionality: plane, vblank, watermark
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
>   static void
>   run_primary_test(data_t *data, enum pipe pipe, igt_output_t *output)
>   {
> @@ -482,72 +564,6 @@ static void wait_for_transition(data_t *data, enum pipe pipe, bool nonblocking,
>   	}
>   }
>   
> -/**
> - * SUBTEST: plane-all-modeset-%s
> - * Description: Modeset test for all plane combinations %arg[1]
> - * Driver requirement: i915, xe
> - * Functionality: plane, watermark
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @transition:                           default
> - * @transition-fencing:                   with fencing commit
> - */
> -
> -/**
> - * SUBTEST: plane-all-modeset-%s
> - * Description: Modeset test for all plane combinations %arg[1]
> - * Driver requirement: i915, xe
> - * Functionality: plane, watermark
> - * Mega feature: eDP
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @transition-fencing-internal-panels:   on internal panels with fencing commit
> - * @transition-internal-panels:           on internal panels
> - */
> -
> -/**
> - * SUBTEST: plane-all-%s
> - * Description: Transition test for all plane combinations %arg[1]
> - * Driver requirement: i915, xe
> - * Functionality: plane, watermark
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @transition:                           default
> - * @transition-fencing:                   with fencing commit
> - * @transition-nonblocking:               with non-blocking commit
> - * @transition-nonblocking-fencing:       with non-blocking & fencing commit
> - */
> -
> -/**
> - * SUBTEST: plane-toggle-modeset-transition
> - * Description: Check toggling and modeset transition on plane
> - * Driver requirement: i915, xe
> - * Functionality: plane, watermark
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: plane-use-after-nonblocking-%s
> - * Description: Transition test with non %arg[1] and make sure commit of disabled
> - *              plane has to complete before atomic commit on that plane
> - * Driver requirement: i915, xe
> - * Functionality: plane, watermark
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @unbind:           blocking commit
> - * @unbind-fencing:   blocking commit with fencing
> - */
> -
>   /*
>    * 1. Set primary plane to a known fb.
>    * 2. Make sure getcrtc returns the correct fb id.
> @@ -1041,21 +1057,6 @@ retry:
>   	}
>   }
>   
> -/**
> - * SUBTEST: modeset-%s
> - * Description: Modeset transition tests for combinations of %arg[1]
> - * Driver requirement: i915, xe
> - * Functionality: plane, watermark
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @transition:                     crtc enabled
> - * @transition-fencing:             crtc enabled with fencing commit
> - * @transition-nonblocking:         crtc enabled with nonblocking commit
> - * @transition-nonblocking-fencing: crtc enabled with nonblocking & fencing commit
> - */
>   static void run_modeset_transition(data_t *data, int requested_outputs, bool nonblocking, bool fencing)
>   {
>   	igt_output_t *outputs[IGT_MAX_PIPES] = {};
> diff --git a/tests/kms_bw.c b/tests/kms_bw.c
> index 896114a3a..0199b5675 100644
> --- a/tests/kms_bw.c
> +++ b/tests/kms_bw.c
> @@ -20,16 +20,19 @@
>    * OTHER DEALINGS IN THE SOFTWARE.
>    */
>   
> +/**
> + * TEST: kms bw
> + * Category: Display
> + * Description: BW test with different resolutions
> + */
> +
>   #include "drm_mode.h"
>   #include "igt.h"
>   #include "drm.h"
>   #include <stdio.h>
>   #include <xf86drmMode.h>
> +
>   /**
> - * TEST: kms bw
> - * Category: Display
> - * Description: BW test with different resolutions
> - *
>    * SUBTEST: linear-tiling-%d-displays-%s
>    * Description: bw test with %arg[2]
>    * Driver requirement: i915, xe
> diff --git a/tests/kms_color.c b/tests/kms_color.c
> index f59feabd4..119dfc1f4 100644
> --- a/tests/kms_color.c
> +++ b/tests/kms_color.c
> @@ -27,9 +27,8 @@
>    * Category: Display
>    * Description: Test Color Features at Pipe level
>    */
> -#include "kms_color_helper.h"
>   
> -IGT_TEST_DESCRIPTION("Test Color Features at Pipe level");
> +#include "kms_color_helper.h"
>   
>   /**
>    * SUBTEST: degamma
> @@ -38,7 +37,73 @@ IGT_TEST_DESCRIPTION("Test Color Features at Pipe level");
>    * Functionality: colorspace
>    * Mega feature: Color mgmt
>    * Test category: functionality test
> + *
> + * SUBTEST: gamma
> + * Description: Verify that gamma LUT transformation works correctly
> + * Driver requirement: i915, xe
> + * Functionality: colorspace
> + * Mega feature: Color mgmt
> + * Test category: functionality test
> + *
> + * SUBTEST: legacy-gamma
> + * Description: Verify that legacy gamma LUT transformation works correctly
> + * Driver requirement: i915, xe
> + * Functionality: colorspace
> + * Mega feature: Color mgmt
> + * Test category: functionality test
> + *
> + * SUBTEST: legacy-gamma-reset
> + * Description: Verify that setting the legacy gamma LUT resets the gamma LUT
> + *              set through GAMMA_LUT property
> + * Driver requirement: i915, xe
> + * Functionality: colorspace
> + * Mega feature: Color mgmt
> + * Test category: functionality test
> + *
> + * SUBTEST: ctm-%s
> + * Description: Check the color transformation %arg[1]
> + * Driver requirement: i915, xe
> + * Functionality: colorspace
> + * Mega feature: Color mgmt
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @0-25:           for 0.25 transparency
> + * @0-50:           for 0.50 transparency
> + * @0-75:           for 0.75 transparency
> + * @blue-to-red:    from blue to red
> + * @green-to-red:   from green to red
> + * @max:            for maximum transparency
> + * @negative:       for negative transparency
> + * @red-to-blue:    from red to blue
> + * @signed:         for correct signed handling
> + */
> +
> +/**
> + * SUBTEST: deep-color
> + * Description: Verify that deep color works correctly
> + * Driver requirement: i915, xe
> + * Functionality: colorspace
> + * Mega feature: Color mgmt
> + * Test category: functionality test
> + *
> + * SUBTEST: invalid-%s-sizes
> + * Description: Negative check for %arg[1] sizes
> + * Driver requirement: i915, xe
> + * Functionality: colorspace
> + * Mega feature: Color mgmt
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @ctm-matrix:         Color transformation matrix
> + * @degamma-lut:        Degamma LUT
> + * @gamma-lut:          Gamma LUT
>    */
> +
> +IGT_TEST_DESCRIPTION("Test Color Features at Pipe level");
> +
>   static bool test_pipe_degamma(data_t *data,
>   			      igt_plane_t *primary)
>   {
> @@ -127,15 +192,6 @@ static bool test_pipe_degamma(data_t *data,
>   	return ret;
>   }
>   
> -/**
> - * SUBTEST: gamma
> - * Description: Verify that gamma LUT transformation works correctly
> - * Driver requirement: i915, xe
> - * Functionality: colorspace
> - * Mega feature: Color mgmt
> - * Test category: functionality test
> - */
> -
>   /*
>    * Draw 3 gradient rectangles in red, green and blue, with a maxed out gamma
>    * LUT and verify we have the same CRC as drawing solid color rectangles.
> @@ -224,15 +280,6 @@ static bool test_pipe_gamma(data_t *data,
>   	return ret;
>   }
>   
> -/**
> - * SUBTEST: legacy-gamma
> - * Description: Verify that legacy gamma LUT transformation works correctly
> - * Driver requirement: i915, xe
> - * Functionality: colorspace
> - * Mega feature: Color mgmt
> - * Test category: functionality test
> - */
> -
>   /*
>    * Draw 3 gradient rectangles in red, green and blue, with a maxed out legacy
>    * gamma LUT and verify we have the same CRC as drawing solid color rectangles
> @@ -345,16 +392,6 @@ static bool test_pipe_legacy_gamma(data_t *data,
>   	return ret;
>   }
>   
> -/**
> - * SUBTEST: legacy-gamma-reset
> - * Description: Verify that setting the legacy gamma LUT resets the gamma LUT
> - *              set through GAMMA_LUT property
> - * Driver requirement: i915, xe
> - * Functionality: colorspace
> - * Mega feature: Color mgmt
> - * Test category: functionality test
> - */
> -
>   /*
>    * Verify that setting the legacy gamma LUT resets the gamma LUT set
>    * through the GAMMA_LUT property.
> @@ -489,27 +526,6 @@ end:
>   	return ret;
>   }
>   
> -/**
> - * SUBTEST: ctm-%s
> - * Description: Check the color transformation %arg[1]
> - * Driver requirement: i915, xe
> - * Functionality: colorspace
> - * Mega feature: Color mgmt
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @0-25:           for 0.25 transparency
> - * @0-50:           for 0.50 transparency
> - * @0-75:           for 0.75 transparency
> - * @blue-to-red:    from blue to red
> - * @green-to-red:   from green to red
> - * @max:            for maximum transparency
> - * @negative:       for negative transparency
> - * @red-to-blue:    from red to blue
> - * @signed:         for correct signed handling
> - */
> -
>   /*
>    * Draw 3 rectangles using before colors with the ctm matrix apply and verify
>    * the CRC is equal to using after colors with an identify ctm matrix.
> @@ -869,14 +885,6 @@ out:
>   	test_cleanup(data);
>   }
>   
> -/**
> - * SUBTEST: deep-color
> - * Description: Verify that deep color works correctly
> - * Driver requirement: i915, xe
> - * Functionality: colorspace
> - * Mega feature: Color mgmt
> - * Test category: functionality test
> - */
>   static void
>   run_deep_color_tests_for_pipe(data_t *data, enum pipe p)
>   {
> @@ -978,20 +986,6 @@ run_deep_color_tests_for_pipe(data_t *data, enum pipe p)
>   	test_cleanup(data);
>   }
>   
> -/**
> - * SUBTEST: invalid-%s-sizes
> - * Description: Negative check for %arg[1] sizes
> - * Driver requirement: i915, xe
> - * Functionality: colorspace
> - * Mega feature: Color mgmt
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @ctm-matrix:         Color transformation matrix
> - * @degamma-lut:        Degamma LUT
> - * @gamma-lut:          Gamma LUT
> - */
>   static void
>   run_invalid_tests_for_pipe(data_t *data)
>   {
> diff --git a/tests/kms_concurrent.c b/tests/kms_concurrent.c
> index d1a83d14e..ce0261287 100644
> --- a/tests/kms_concurrent.c
> +++ b/tests/kms_concurrent.c
> @@ -22,14 +22,17 @@
>    *
>    */
>   
> -#include "igt.h"
> -#include "drmtest.h"
>   /**
>    * TEST: kms concurrent
>    * Category: Display
>    * Description: Test atomic mode setting concurrently with multiple planes and
>    *              screen resolution
> - *
> + */
> +
> +#include "igt.h"
> +#include "drmtest.h"
> +
> +/**
>    * SUBTEST: multi-plane-atomic-lowres
>    * Description: Test atomic mode setting concurrently with multiple planes and
>    *              screen resolution.
> diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c
> index 9a0583d96..988f370f9 100644
> --- a/tests/kms_content_protection.c
> +++ b/tests/kms_content_protection.c
> @@ -27,6 +27,7 @@
>    * Category: Display
>    * Description: Test content protection (HDCP)
>    */
> +
>   #include <poll.h>
>   #include <fcntl.h>
>   #include <sys/epoll.h>
> @@ -37,6 +38,77 @@
>   #include "igt_kms.h"
>   #include "igt_kmod.h"
>   
> +/**
> + * SUBTEST: lic
> + * Description: Test for the integrity of link.
> + * Driver requirement: i915, xe
> + * Functionality: hdcp1.4
> + * Mega feature: HDCP
> + * Test category: functionality test
> + *
> + * SUBTEST: content-type-change
> + * Description: Test the content type change when the content protection already
> + *              enabled
> + * Driver requirement: i915, xe
> + * Functionality: hdcp1.4, hdcp2.2
> + * Mega feature: HDCP
> + * Test category: functionality test
> + *
> + * SUBTEST: mei-interface
> + * Description: Test the teardown and rebuild of the interface between Intel
> + *              and mei hdcp.
> + * Driver requirement: i915, xe
> + * Functionality: hdcp1.4, hdcp2.2
> + * Mega feature: HDCP
> + * Test category: functionality test
> + *
> + * SUBTEST: srm
> + * Description: This test writes the facsimile SRM into the /lib/firmware/ and
> + *              check the kernel parsing of it by invoking the hdcp authentication.
> + * Driver requirement: i915, xe
> + * Functionality: hdcp1.4
> + * Mega feature: HDCP
> + * Test category: functionality test
> + *
> + * SUBTEST: uevent
> + * Description: Test to detect the HDCP status change when we are reading the
> + *              uevent sent with the corresponding connector id and property id.
> + * Driver requirement: i915, xe
> + * Functionality: hdcp1.4
> + * Mega feature: HDCP
> + * Test category: functionality test
> + *
> + * SUBTEST: %s
> + * Description: Test content protection with %arg[1]
> + * Driver requirement: i915, xe
> + * Functionality: hdcp1.4
> + * Mega feature: HDCP
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @atomic:         atomic modesetting
> + * @atomic-dpms:    DPMS ON/OFF during atomic modesetting.
> + * @legacy:         legacy style commit
> + * @type1:          content type 1 that can be handled only through HDCP2.2.
> + */
> +
> +/**
> + * SUBTEST: dp-mst-%s
> + * Description: Test Content protection %arg[1] over DP MST.
> + * Driver requirement: i915, xe
> + * Functionality: hdcp1.4, mst
> + * Mega feature: HDCP
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @lic-type-0:   Type 0 with LIC
> + * @lic-type-1:   Type 1 with LIC.
> + * @type-0:       Type 0
> + * @type-1:       Type 1
> + */
> +
>   IGT_TEST_DESCRIPTION("Test content protection (HDCP)");
>   
>   struct data {
> @@ -490,60 +562,6 @@ test_fini(igt_output_t *output, enum igt_commit_style s)
>   	igt_display_commit2(&data.display, s);
>   }
>   
> -/**
> - * SUBTEST: lic
> - * Description: Test for the integrity of link.
> - * Driver requirement: i915, xe
> - * Functionality: hdcp1.4
> - * Mega feature: HDCP
> - * Test category: functionality test
> - *
> - * SUBTEST: content-type-change
> - * Description: Test the content type change when the content protection already
> - *              enabled
> - * Driver requirement: i915, xe
> - * Functionality: hdcp1.4, hdcp2.2
> - * Mega feature: HDCP
> - * Test category: functionality test
> - *
> - * SUBTEST: mei-interface
> - * Description: Test the teardown and rebuild of the interface between Intel
> - *              and mei hdcp.
> - * Driver requirement: i915, xe
> - * Functionality: hdcp1.4, hdcp2.2
> - * Mega feature: HDCP
> - * Test category: functionality test
> - *
> - * SUBTEST: srm
> - * Description: This test writes the facsimile SRM into the /lib/firmware/ and
> - *              check the kernel parsing of it by invoking the hdcp authentication.
> - * Driver requirement: i915, xe
> - * Functionality: hdcp1.4
> - * Mega feature: HDCP
> - * Test category: functionality test
> - *
> - * SUBTEST: uevent
> - * Description: Test to detect the HDCP status change when we are reading the
> - *              uevent sent with the corresponding connector id and property id.
> - * Driver requirement: i915, xe
> - * Functionality: hdcp1.4
> - * Mega feature: HDCP
> - * Test category: functionality test
> - *
> - * SUBTEST: %s
> - * Description: Test content protection with %arg[1]
> - * Driver requirement: i915, xe
> - * Functionality: hdcp1.4
> - * Mega feature: HDCP
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @atomic:         atomic modesetting
> - * @atomic-dpms:    DPMS ON/OFF during atomic modesetting.
> - * @legacy:         legacy style commit
> - * @type1:          content type 1 that can be handled only through HDCP2.2.
> - */
>   static void
>   test_content_protection(enum igt_commit_style s, int content_type)
>   {
> @@ -631,21 +649,6 @@ static void test_cp_lic_on_mst(igt_output_t *mst_outputs[], int valid_outputs, b
>   	}
>   }
>   
> -/**
> - * SUBTEST: dp-mst-%s
> - * Description: Test Content protection %arg[1] over DP MST.
> - * Driver requirement: i915, xe
> - * Functionality: hdcp1.4, mst
> - * Mega feature: HDCP
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @lic-type-0:   Type 0 with LIC
> - * @lic-type-1:   Type 1 with LIC.
> - * @type-0:       Type 0
> - * @type-1:       Type 1
> - */
>   static void
>   test_content_protection_mst(int content_type)
>   {
> diff --git a/tests/kms_cursor_crc.c b/tests/kms_cursor_crc.c
> index d2f10356b..3d1c3bcd3 100644
> --- a/tests/kms_cursor_crc.c
> +++ b/tests/kms_cursor_crc.c
> @@ -22,13 +22,6 @@
>    *
>    */
>   
> -#include "igt.h"
> -#include <errno.h>
> -#include <limits.h>
> -#include <stdbool.h>
> -#include <stdio.h>
> -#include <string.h>
> -
>   /**
>    * TEST: kms cursor crc
>    * Category: Display
> @@ -42,6 +35,77 @@
>    *              software.
>    */
>   
> +#include "igt.h"
> +#include <errno.h>
> +#include <limits.h>
> +#include <stdbool.h>
> +#include <stdio.h>
> +#include <string.h>
> +
> +/**
> + * SUBTEST: cursor-dpms
> + * Description: Check random placement of a cursor with DPMS.
> + * Driver requirement: i915, xe
> + * Functionality: cursor, dpms
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: cursor-suspend
> + * Description: Check random placement of a cursor with suspend.
> + * Driver requirement: i915, xe
> + * Functionality: cursor, suspend
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: cursor-%s
> + * Description: %arg[1]
> + * Driver requirement: i915, xe
> + * Functionality: cursor
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @alpha-opaque:       Validates the composition of a fully opaque cursor plane,
> + *                      i.e., alpha channel equal to 1.0.
> + * @alpha-transparent:  Validates the composition of a fully transparent cursor
> + *                      plane, i.e., alpha channel equal to 0.0.
> + * @size-change:        Create a maximum size cursor, then change the size in
> + *                      flight to smaller ones to see that the size is applied
> + *                      correctly.
> + */
> +
> +/**
> + * SUBTEST: cursor-%s-%s
> + * Description: Check if a %arg[2] cursor is %arg[1].
> + * Driver requirement: i915, xe
> + * Functionality: cursor
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @offscreen:             well-positioned outside the screen
> + * @onscreen:              well-positioned inside the screen
> + * @random:                randomly placed
> + * @rapid-movement:        rapidly udates for movements
> + * @sliding:               smooth for horizontal, vertical & diagonal movements
> + *
> + * arg[2]:
> + *
> + * @128x128:               128x128 size
> + * @128x42:                128x42 size
> + * @256x256:               256x256 size
> + * @256x85:                256x85 size
> + * @32x10:                 32x10 size
> + * @32x32:                 32x32 size
> + * @512x170:               512x170 size
> + * @512x512:               512x512 size
> + * @64x21:                 64x21 size
> + * @64x64:                 64x64 size
> + * @max-size:              Max supported size
> + */
> +
>   IGT_TEST_DESCRIPTION(
>      "Use the display CRC support to validate cursor plane functionality. "
>      "The test will position the cursor plane either fully onscreen, "
> @@ -667,38 +731,6 @@ static bool require_cursor_size(data_t *data, int w, int h)
>   	return !!ret;
>   }
>   
> -/**
> - * SUBTEST: cursor-dpms
> - * Description: Check random placement of a cursor with DPMS.
> - * Driver requirement: i915, xe
> - * Functionality: cursor, dpms
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: cursor-suspend
> - * Description: Check random placement of a cursor with suspend.
> - * Driver requirement: i915, xe
> - * Functionality: cursor, suspend
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: cursor-%s
> - * Description: %arg[1]
> - * Driver requirement: i915, xe
> - * Functionality: cursor
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @alpha-opaque:       Validates the composition of a fully opaque cursor plane,
> - *                      i.e., alpha channel equal to 1.0.
> - * @alpha-transparent:  Validates the composition of a fully transparent cursor
> - *                      plane, i.e., alpha channel equal to 0.0.
> - * @size-change:        Create a maximum size cursor, then change the size in
> - *                      flight to smaller ones to see that the size is applied
> - *                      correctly.
> - */
>   static void run_test(data_t *data, void (*testfunc)(data_t *), int cursor_w, int cursor_h)
>   {
>   	prepare_crtc(data, cursor_w, cursor_h);
> @@ -795,37 +827,6 @@ static bool execution_constraint(enum pipe pipe)
>   	return false;
>   }
>   
> -
> -/**
> - * SUBTEST: cursor-%s-%s
> - * Description: Check if a %arg[2] cursor is %arg[1].
> - * Driver requirement: i915, xe
> - * Functionality: cursor
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @offscreen:             well-positioned outside the screen
> - * @onscreen:              well-positioned inside the screen
> - * @random:                randomly placed
> - * @rapid-movement:        rapidly udates for movements
> - * @sliding:               smooth for horizontal, vertical & diagonal movements
> - *
> - * arg[2]:
> - *
> - * @128x128:               128x128 size
> - * @128x42:                128x42 size
> - * @256x256:               256x256 size
> - * @256x85:                256x85 size
> - * @32x10:                 32x10 size
> - * @32x32:                 32x32 size
> - * @512x170:               512x170 size
> - * @512x512:               512x512 size
> - * @64x21:                 64x21 size
> - * @64x64:                 64x64 size
> - * @max-size:              Max supported size
> - */
>   static void run_size_tests(data_t *data, int w, int h)
>   {
>   	enum pipe pipe;
> diff --git a/tests/kms_cursor_edge_walk.c b/tests/kms_cursor_edge_walk.c
> index e284fc4d8..d9d140409 100644
> --- a/tests/kms_cursor_edge_walk.c
> +++ b/tests/kms_cursor_edge_walk.c
> @@ -22,18 +22,21 @@
>    *
>    */
>   
> +/**
> + * TEST: kms cursor edge walk
> + * Category: Display
> + * Description: Exercise CHV pipe C cursor fail
> + * Description: Test to check different cursor sizes by walking different edges of screen
> + */
> +
>   #include "igt.h"
>   #include <errno.h>
>   #include <limits.h>
>   #include <stdbool.h>
>   #include <stdio.h>
>   #include <string.h>
> +
>   /**
> - * TEST: kms cursor edge walk
> - * Category: Display
> - * Description: Exercise CHV pipe C cursor fail
> - * Description: Test to check different cursor sizes by walking different edges of screen
> - *
>    * SUBTEST: %s-%s
>    * Description: Checking cursor size %arg[1] by walking %arg[2] of screen
>    * Driver requirement: i915, xe
> diff --git a/tests/kms_cursor_legacy.c b/tests/kms_cursor_legacy.c
> index d0d752e5e..6a4955ef1 100644
> --- a/tests/kms_cursor_legacy.c
> +++ b/tests/kms_cursor_legacy.c
> @@ -37,6 +37,256 @@
>   #include "igt_rand.h"
>   #include "igt_stats.h"
>   
> +/**
> + * SUBTEST: %s-%s
> + * Description: Test checks how many cursor updates we can fit between vblanks
> + *              on single/all pipes with different modes, priority and number
> + *              of processes
> + * Driver requirement: i915, xe
> + * Functionality: cursor
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @single:      Single
> + * @torture:     Torture
> + * @forked:      Forked
> + *
> + * arg[2]:
> + *
> + * @bo:          BO
> + * @move:        Move
> + */
> +
> +/**
> + * SUBTEST: basic-busy-flip-before-cursor-%s
> + * Description: Cursor test with %arg[1] mode
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + * Functionality: cursor
> + * Mega feature: General Display Features
> + *
> + * SUBTEST: basic-busy-flip-before-cursor-varying-size
> + * Description: Change the size of cursor b/w 64*64 to maxw x maxh.
> + * Driver requirement: i915, xe
> + * Functionality: cursor
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @atomic:	atomic
> + * @legacy:	legacy
> + */
> +
> +/**
> + * SUBTEST: basic-flip-after-cursor-%s
> + * Description: Cursor test with %arg[1]
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + * Functionality: cursor
> + * Mega feature: General Display Features
> + *
> + * SUBTEST: basic-flip-before-cursor-%s
> + * Description: Cursor test with %arg[1]
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + * Functionality: cursor
> + * Mega feature: General Display Features
> + *
> + * arg[1]:
> + *
> + * @atomic:        atomic mode
> + * @legacy:        legacy mode
> + * @varying-size:  varying size
> + */
> +
> +/**
> + * SUBTEST: %s-flip-before-cursor-%s
> + * Description: Adds variety of tests:
> + *		- varying-size: change the size of cursor b/w 64*64 to maxw x maxh.\n
> + *		- atomic-transition: alternates between a full screen sprite plane
> + *		                     and full screen primary plane.\n"
> + *		- toggle: which toggles cursor visibility and make sure cursor moves
> + *		          between updates.
> + * Driver requirement: i915, xe
> + * Functionality: cursor
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @short:
> + * @short-busy:
> + *
> + * arg[2]:
> + *
> + * @atomic-transitions:
> + * @atomic-transitions-varying-size:
> + * @toggle:
> + */
> +
> +/**
> + * SUBTEST: short-flip-after-cursor-%s
> + * Description: Adds variety of tests:
> + *		- varying-size: change the size of cursor b/w 64*64 to maxw x maxh.\n
> + *		- atomic-transition: alternates between a full screen sprite plane
> + *		                     and full screen primary plane.\n"
> + *		- toggle: which toggles cursor visibility and make sure cursor moves
> + *		          between updates.
> + * Driver requirement: i915, xe
> + * Functionality: cursor
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @atomic-transitions:
> + * @atomic-transitions-varying-size:
> + * @toggle:
> + */
> +
> +/**
> + * SUBTEST: long-nonblocking-modeset-vs-cursor-atomic
> + * Description: Test checks how many cursor updates we can fit between vblanks
> + *              on all pipes with different modes, priority and number of processes
> + * Driver requirement: i915, xe
> + * Functionality: cursor
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: nonblocking-modeset-vs-cursor-atomic
> + * Description: Test checks how many cursor updates we can fit between vblanks
> + *              on all pipes with different modes, priority and number of processes
> + * Driver requirement: i915, xe
> + * Functionality: cursor
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: 2x-%s-%s
> + * Description: This test executes flips on both CRTCs while running cursor
> + *              updates in parallel
> + * Driver requirement: i915, xe
> + * Functionality: cursor
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @flip-vs-cursor:
> + * @flip-vs-cursor:
> + * @long-flip-vs-cursor:
> + * @long-flip-vs-cursor:
> + *
> + * arg[2]:
> + *
> + * @atomic:
> + * @legacy:
> + */
> +
> +/**
> + * SUBTEST: 2x-%s-atomic
> + * Description: This test executes flips on both CRTCs while running cursor
> + *              updates in parallel
> + * Driver requirement: i915, xe
> + * Functionality: cursor
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @long-nonblocking-modeset-vs-cursor:
> + * @nonblocking-modeset-vs-cursor:
> + */
> +
> +/**
> + * SUBTEST: %s-%s
> + * Description: The essence of the basic test is that neither the cursor nor the
> + *              nonblocking flip stall the application of the next
> + * Driver requirement: i915, xe
> + * Functionality: cursor
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @cursor-vs-flip:
> + * @cursorA-vs-flipA:
> + * @cursorA-vs-flipB:
> + * @cursorB-vs-flipA:
> + * @cursorB-vs-flipB:
> + * @flip-vs-cursor:
> + *
> + * arg[2]:
> + *
> + * @atomic:
> + * @atomic-transitions:
> + * @atomic-transitions-varying-size:
> + * @legacy:
> + * @toggle:
> + * @varying-size:
> + */
> +
> +/**
> + * SUBTEST: 2x-%s-%s
> + * Description: This test executes flips on both CRTCs while running cursor updates in parallel
> + * Driver requirement: i915, xe
> + * Functionality: cursor
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @cursor-vs-flip:
> + * @cursor-vs-flip:
> + * @long-cursor-vs-flip:
> + * @long-cursor-vs-flip:
> + *
> + * arg[2]:
> + *
> + * @atomic:
> + * @legacy:
> + */
> +
> +/**
> + * SUBTEST: flip-vs-cursor-crc-%s
> + * Description: this test perform a page flip followed by a cursor update
> + * Driver requirement: i915, xe
> + * Functionality: cursor
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @atomic:
> + * @legacy:
> + */
> +
> +/**
> + * SUBTEST: flip-vs-cursor-busy-crc-%s
> + * Description: this test perform a busy bo update followed by a cursor update
> + * Driver requirement: i915, xe
> + * Functionality: cursor
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @atomic:
> + * @legacy:
> + */
> +
> +/**
> + * SUBTEST: modeset-atomic-cursor-hotspot
> + * Description: Test changes the cursor hotspot and checks that the property is
> + *              updated accordignly
> + * Driver requirement: i915, xe
> + * Functionality: cursor
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + */
> +
>   #if defined(__x86_64__) || defined(__i386__)
>   #define cpu_relax()	__builtin_ia32_pause()
>   #else
> @@ -78,27 +328,6 @@ static void override_output_modes(igt_display_t *display,
>   	igt_output_set_pipe(output2, PIPE_NONE);
>   }
>   
> -/**
> - * SUBTEST: %s-%s
> - * Description: Test checks how many cursor updates we can fit between vblanks
> - *              on single/all pipes with different modes, priority and number
> - *              of processes
> - * Driver requirement: i915, xe
> - * Functionality: cursor
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @single:      Single
> - * @torture:     Torture
> - * @forked:      Forked
> - *
> - * arg[2]:
> - *
> - * @bo:          BO
> - * @move:        Move
> - */
>   static void stress(igt_display_t *display,
>   		   enum pipe pipe, int num_children, unsigned mode,
>   		   int timeout)
> @@ -569,93 +798,6 @@ enum basic_flip_cursor {
>   
>   #define BASIC_BUSY 0x1
>   
> -/**
> - * SUBTEST: basic-busy-flip-before-cursor-%s
> - * Description: Cursor test with %arg[1] mode
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: cursor
> - * Mega feature: General Display Features
> - *
> - * SUBTEST: basic-busy-flip-before-cursor-varying-size
> - * Description: Change the size of cursor b/w 64*64 to maxw x maxh.
> - * Driver requirement: i915, xe
> - * Functionality: cursor
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @atomic:	atomic
> - * @legacy:	legacy
> - */
> -
> -/**
> - * SUBTEST: basic-flip-after-cursor-%s
> - * Description: Cursor test with %arg[1]
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: cursor
> - * Mega feature: General Display Features
> - *
> - * SUBTEST: basic-flip-before-cursor-%s
> - * Description: Cursor test with %arg[1]
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: cursor
> - * Mega feature: General Display Features
> - *
> - * arg[1]:
> - *
> - * @atomic:        atomic mode
> - * @legacy:        legacy mode
> - * @varying-size:  varying size
> - */
> -
> -/**
> - * SUBTEST: %s-flip-before-cursor-%s
> - * Description: Adds variety of tests:
> - *		- varying-size: change the size of cursor b/w 64*64 to maxw x maxh.\n
> - *		- atomic-transition: alternates between a full screen sprite plane
> - *		                     and full screen primary plane.\n"
> - *		- toggle: which toggles cursor visibility and make sure cursor moves
> - *		          between updates.
> - * Driver requirement: i915, xe
> - * Functionality: cursor
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @short:
> - * @short-busy:
> - *
> - * arg[2]:
> - *
> - * @atomic-transitions:
> - * @atomic-transitions-varying-size:
> - * @toggle:
> - */
> -
> -/**
> - * SUBTEST: short-flip-after-cursor-%s
> - * Description: Adds variety of tests:
> - *		- varying-size: change the size of cursor b/w 64*64 to maxw x maxh.\n
> - *		- atomic-transition: alternates between a full screen sprite plane
> - *		                     and full screen primary plane.\n"
> - *		- toggle: which toggles cursor visibility and make sure cursor moves
> - *		          between updates.
> - * Driver requirement: i915, xe
> - * Functionality: cursor
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @atomic-transitions:
> - * @atomic-transitions-varying-size:
> - * @toggle:
> - */
>   static void basic_flip_cursor(igt_display_t *display,
>   			      enum flip_test mode,
>   			      enum basic_flip_cursor order,
> @@ -977,23 +1119,6 @@ static void flip_vs_cursor(igt_display_t *display, enum flip_test mode, int nloo
>   		igt_remove_fb(display->drm_fd, &cursor_fb2);
>   }
>   
> -/**
> - * SUBTEST: long-nonblocking-modeset-vs-cursor-atomic
> - * Description: Test checks how many cursor updates we can fit between vblanks
> - *              on all pipes with different modes, priority and number of processes
> - * Driver requirement: i915, xe
> - * Functionality: cursor
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: nonblocking-modeset-vs-cursor-atomic
> - * Description: Test checks how many cursor updates we can fit between vblanks
> - *              on all pipes with different modes, priority and number of processes
> - * Driver requirement: i915, xe
> - * Functionality: cursor
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
>   static void nonblocking_modeset_vs_cursor(igt_display_t *display, int loops)
>   {
>   	struct igt_fb fb_info, cursor_fb;
> @@ -1093,42 +1218,6 @@ static void wait_for_modeset(igt_display_t *display, unsigned flags, int timeout
>   	igt_reset_timeout();
>   }
>   
> -/**
> - * SUBTEST: 2x-%s-%s
> - * Description: This test executes flips on both CRTCs while running cursor
> - *              updates in parallel
> - * Driver requirement: i915, xe
> - * Functionality: cursor
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @flip-vs-cursor:
> - * @flip-vs-cursor:
> - * @long-flip-vs-cursor:
> - * @long-flip-vs-cursor:
> - *
> - * arg[2]:
> - *
> - * @atomic:
> - * @legacy:
> - */
> -
> -/**
> - * SUBTEST: 2x-%s-atomic
> - * Description: This test executes flips on both CRTCs while running cursor
> - *              updates in parallel
> - * Driver requirement: i915, xe
> - * Functionality: cursor
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @long-nonblocking-modeset-vs-cursor:
> - * @nonblocking-modeset-vs-cursor:
> - */
>   static void two_screens_flip_vs_cursor(igt_display_t *display, int nloops, bool modeset, bool atomic)
>   {
>   	struct drm_mode_cursor arg1[2], arg2[2];
> @@ -1316,33 +1405,6 @@ done:
>   	munmap((void *)shared, PAGE_SIZE);
>   }
>   
> -/**
> - * SUBTEST: %s-%s
> - * Description: The essence of the basic test is that neither the cursor nor the
> - *              nonblocking flip stall the application of the next
> - * Driver requirement: i915, xe
> - * Functionality: cursor
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @cursor-vs-flip:
> - * @cursorA-vs-flipA:
> - * @cursorA-vs-flipB:
> - * @cursorB-vs-flipA:
> - * @cursorB-vs-flipB:
> - * @flip-vs-cursor:
> - *
> - * arg[2]:
> - *
> - * @atomic:
> - * @atomic-transitions:
> - * @atomic-transitions-varying-size:
> - * @legacy:
> - * @toggle:
> - * @varying-size:
> - */
>   static void cursor_vs_flip(igt_display_t *display, enum flip_test mode, int nloops)
>   {
>   	struct drm_mode_cursor arg[2];
> @@ -1455,26 +1517,6 @@ static void cursor_vs_flip(igt_display_t *display, enum flip_test mode, int nloo
>   		igt_remove_fb(display->drm_fd, &cursor_fb2);
>   }
>   
> -/**
> - * SUBTEST: 2x-%s-%s
> - * Description: This test executes flips on both CRTCs while running cursor updates in parallel
> - * Driver requirement: i915, xe
> - * Functionality: cursor
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @cursor-vs-flip:
> - * @cursor-vs-flip:
> - * @long-cursor-vs-flip:
> - * @long-cursor-vs-flip:
> - *
> - * arg[2]:
> - *
> - * @atomic:
> - * @legacy:
> - */
>   static void two_screens_cursor_vs_flip(igt_display_t *display, int nloops, bool atomic)
>   {
>   	struct drm_mode_cursor arg[2][2];
> @@ -1603,19 +1645,6 @@ static void two_screens_cursor_vs_flip(igt_display_t *display, int nloops, bool
>   	munmap((void *)shared, PAGE_SIZE);
>   }
>   
> -/**
> - * SUBTEST: flip-vs-cursor-crc-%s
> - * Description: this test perform a page flip followed by a cursor update
> - * Driver requirement: i915, xe
> - * Functionality: cursor
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @atomic:
> - * @legacy:
> - */
>   static void flip_vs_cursor_crc(igt_display_t *display, bool atomic)
>   {
>   	struct drm_mode_cursor arg[2];
> @@ -1688,19 +1717,6 @@ static void flip_vs_cursor_crc(igt_display_t *display, bool atomic)
>   	igt_remove_fb(display->drm_fd, &cursor_fb);
>   }
>   
> -/**
> - * SUBTEST: flip-vs-cursor-busy-crc-%s
> - * Description: this test perform a busy bo update followed by a cursor update
> - * Driver requirement: i915, xe
> - * Functionality: cursor
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @atomic:
> - * @legacy:
> - */
>   static void flip_vs_cursor_busy_crc(igt_display_t *display, bool atomic)
>   {
>   	struct drm_mode_cursor arg[2];
> @@ -1813,15 +1829,6 @@ static void flip_vs_cursor_busy_crc(igt_display_t *display, bool atomic)
>   	put_ahnd(ahnd);
>   }
>   
> -/**
> - * SUBTEST: modeset-atomic-cursor-hotspot
> - * Description: Test changes the cursor hotspot and checks that the property is
> - *              updated accordignly
> - * Driver requirement: i915, xe
> - * Functionality: cursor
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
>   static void modeset_atomic_cursor_hotspot(igt_display_t *display)
>   {
>   	struct igt_fb cursor_fb;
> diff --git a/tests/kms_display_modes.c b/tests/kms_display_modes.c
> index aff2a93bc..a0a831724 100644
> --- a/tests/kms_display_modes.c
> +++ b/tests/kms_display_modes.c
> @@ -29,8 +29,27 @@
>    * Category: Display
>    * Description: Test Display Modes
>    */
> +
>   #include "igt.h"
>   
> +/**
> + * SUBTEST: extended-mode-basic
> + * Description: Test for validating display extended mode with a pair of connected
> + *              displays
> + * Driver requirement: i915, xe
> + * Functionality: kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: mst-extended-mode-negative
> + * Description: Negative test for validating display extended mode with a pair
> + *		of connected 2k-4k or 4k-4k displays.
> + * Driver requirement: i915, xe
> + * Functionality: kms_core, mst
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + */
> +
>   #define HDISPLAY_4K	3840
>   #define VDISPLAY_4K	2160
>   
> @@ -205,15 +224,6 @@ static void run_extendedmode_basic(data_t *data,
>   	for_each_connected_output_local((display), (output)) \
>   		for_each_if (igt_pipe_connector_valid((pipe), (output)))
>   
> -/**
> - * SUBTEST: extended-mode-basic
> - * Description: Test for validating display extended mode with a pair of connected
> - *              displays
> - * Driver requirement: i915, xe
> - * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
>   static void run_extendedmode_test(data_t *data) {
>   	enum pipe pipe1, pipe2;
>   	igt_output_t *output1, *output2;
> @@ -259,15 +269,6 @@ static void run_extendedmode_test(data_t *data) {
>   	}
>   }
>   
> -/**
> - * SUBTEST: mst-extended-mode-negative
> - * Description: Negative test for validating display extended mode with a pair
> - *		of connected 2k-4k or 4k-4k displays.
> - * Driver requirement: i915, xe
> - * Functionality: kms_core, mst
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
>   static void run_extendedmode_negative(data_t *data, int pipe1, int pipe2)
>   {
>   	struct igt_fb fbs[2];
> diff --git a/tests/kms_dither.c b/tests/kms_dither.c
> index 3387a3b10..5683fe5c5 100644
> --- a/tests/kms_dither.c
> +++ b/tests/kms_dither.c
> @@ -30,11 +30,28 @@
>    * Category: Display
>    * Description: Test Dithering block status
>    */
> +
>   #include "igt.h"
>   #include <fcntl.h>
>   #include <termios.h>
>   #include <unistd.h>
>   
> +/**
> + * SUBTEST: fb-8bpc-vs-panel-6bpc
> + * Description: Framebuffer BPC:8, Panel BPC:6, Expected Dither:Enable
> + * Driver requirement: i915, xe
> + * Functionality: colorspace, kms_gem_interop
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: fb-8bpc-vs-panel-8bpc
> + * Description: Framebuffer BPC:8, Panel BPC:8, Expected Dither:Disable
> + * Driver requirement: i915, xe
> + * Functionality: colorspace, kms_gem_interop
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + */
> +
>   IGT_TEST_DESCRIPTION("Test Dithering block status");
>   
>   /* Connector BPC */
> @@ -186,21 +203,6 @@ static bool is_supported(igt_output_t *output)
>   		igt_output_get_prop(output, IGT_CONNECTOR_MAX_BPC);
>   }
>   
> -/**
> - * SUBTEST: fb-8bpc-vs-panel-6bpc
> - * Description: Framebuffer BPC:8, Panel BPC:6, Expected Dither:Enable
> - * Driver requirement: i915, xe
> - * Functionality: colorspace, kms_gem_interop
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: fb-8bpc-vs-panel-8bpc
> - * Description: Framebuffer BPC:8, Panel BPC:8, Expected Dither:Disable
> - * Driver requirement: i915, xe
> - * Functionality: colorspace, kms_gem_interop
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
>   static void
>   run_dither_test(data_t *data, int fb_bpc, int fb_format, int output_bpc)
>   {
> diff --git a/tests/kms_dp_aux_dev.c b/tests/kms_dp_aux_dev.c
> index e6a67e22e..597d4c2ef 100644
> --- a/tests/kms_dp_aux_dev.c
> +++ b/tests/kms_dp_aux_dev.c
> @@ -22,6 +22,12 @@
>    *
>    */
>   
> +/**
> + * TEST: kms dp aux dev
> + * Category: Display
> + * Description: Test that /dev/drm_dp_aux reads work
> + */
> +
>   #include "config.h"
>   
>   #include <sys/types.h>
> @@ -31,11 +37,8 @@
>   
>   #include "igt.h"
>   #include "igt_kms.h"
> +
>   /**
> - * TEST: kms dp aux dev
> - * Category: Display
> - * Description: Test that /dev/drm_dp_aux reads work
> - *
>    * SUBTEST:
>    * Description: Test that /dev/drm_dp_aux reads work
>    * Driver requirement: i915, xe
> diff --git a/tests/kms_feature_discovery.c b/tests/kms_feature_discovery.c
> index 1baa93f5f..7aec4e78c 100644
> --- a/tests/kms_feature_discovery.c
> +++ b/tests/kms_feature_discovery.c
> @@ -28,7 +28,18 @@
>    * Description: A metatest that checks for \"features\" presence.
>    *		The subtests here should only skip or pass,
>    *		anything else means we have a serious problem.
> - *
> + */
> +
> +#include "igt.h"
> +#ifdef HAVE_CHAMELIUM
> +#include "igt_chamelium.h"
> +#endif
> +#include "igt_kms.h"
> +#include "igt_psr.h"
> +#include "igt_sysfs.h"
> +#include "igt_types.h"
> +
> +/**
>    * SUBTEST: display
>    * Description: Make sure that we have display support.
>    * Driver requirement: i915, xe
> @@ -75,15 +86,6 @@
>    * arg[1].values: 1, 2, 3, 4
>    */
>   
> -#include "igt.h"
> -#ifdef HAVE_CHAMELIUM
> -#include "igt_chamelium.h"
> -#endif
> -#include "igt_kms.h"
> -#include "igt_psr.h"
> -#include "igt_sysfs.h"
> -#include "igt_types.h"
> -
>   static igt_display_t display;
>   
>   IGT_TEST_DESCRIPTION("A metatest that checks for \"features\" presence. "
> diff --git a/tests/kms_flip.c b/tests/kms_flip.c
> index c427f22e6..798103682 100755
> --- a/tests/kms_flip.c
> +++ b/tests/kms_flip.c
> @@ -42,6 +42,18 @@
>   #include <sys/time.h>
>   #include <sys/ioctl.h>
>   
> +#ifdef HAVE_LINUX_KD_H
> +#include <linux/kd.h>
> +#elif HAVE_SYS_KD_H
> +#include <sys/kd.h>
> +#endif
> +#include <time.h>
> +#include <pthread.h>
> +
> +#include "i915/gem_create.h"
> +#include "igt_stats.h"
> +#include "xe/xe_query.h"
> +
>   /**
>    * SUBTEST: 2x-flip-vs-fences
>    * Description: Test to validate pageflips along with avialable fences on a pair
> @@ -280,17 +292,40 @@
>    * @modeset-vs-vblank-race:       modeset and check for vblank
>    */
>   
> -#ifdef HAVE_LINUX_KD_H
> -#include <linux/kd.h>
> -#elif HAVE_SYS_KD_H
> -#include <sys/kd.h>
> -#endif
> -#include <time.h>
> -#include <pthread.h>
> -
> -#include "i915/gem_create.h"
> -#include "igt_stats.h"
> -#include "xe/xe_query.h"
> +/**
> + * SUBTEST: basic-flip-vs-dpms
> + * Description: Basic test to valide pageflip with dpms
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + * Functionality: dpms, vblank
> + * Mega feature: General Display Features
> + *
> + * SUBTEST: basic-flip-vs-%s
> + * Description: Basic test to valide pageflip with %arg[1]
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + * Functionality: vblank
> + * Mega feature: General Display Features
> + *
> + * arg[1]:
> + *
> + * @modeset:      modeset
> + * @wf_vblank:    wait for vblank
> + *
> + * SUBTEST: basic-plain-flip
> + * Description: Basic test for validating page flip
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + * Functionality: vblank
> + * Mega feature: General Display Features
> + *
> + * SUBTEST: nonblocking-read
> + * Description: Tests that nonblocking reading fails correctly
> + * Driver requirement: i915, xe
> + * Functionality: vblank
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + */
>   
>   #define TEST_DPMS		(1 << 0)
>   
> @@ -1811,34 +1846,6 @@ test:
>   		__run_test_on_crtc_set(o, crtc_idxs, crtc_count, duration_ms);
>   }
>   
> -/**
> - * SUBTEST: basic-flip-vs-dpms
> - * Description: Basic test to valide pageflip with dpms
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: dpms, vblank
> - * Mega feature: General Display Features
> - *
> - * SUBTEST: basic-flip-vs-%s
> - * Description: Basic test to valide pageflip with %arg[1]
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: vblank
> - * Mega feature: General Display Features
> - *
> - * arg[1]:
> - *
> - * @modeset:      modeset
> - * @wf_vblank:    wait for vblank
> - *
> - * SUBTEST: basic-plain-flip
> - * Description: Basic test for validating page flip
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: vblank
> - * Mega feature: General Display Features
> - */
> -
>   static void run_test(int duration, int flags)
>   {
>   	struct test_output o;
> @@ -2023,14 +2030,6 @@ static void kms_flip_exit_handler(int sig)
>   		kmstest_set_connector_dpms(drm_fd, last_connector, DRM_MODE_DPMS_ON);
>   }
>   
> -/**
> - * SUBTEST: nonblocking-read
> - * Description: Tests that nonblocking reading fails correctly
> - * Driver requirement: i915, xe
> - * Functionality: vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
>   static void test_nonblocking_read(int in)
>   {
>   	char buffer[1024];
> diff --git a/tests/kms_flip_event_leak.c b/tests/kms_flip_event_leak.c
> index f526a0ca9..a668b1da3 100644
> --- a/tests/kms_flip_event_leak.c
> +++ b/tests/kms_flip_event_leak.c
> @@ -22,6 +22,12 @@
>    *
>    */
>   
> +/**
> + * TEST: kms flip event leak
> + * Category: Display
> + * Description: Test to validate flip event leak
> + */
> +
>   #include "igt.h"
>   #include <errno.h>
>   #include <stdbool.h>
> @@ -32,10 +38,6 @@
>   #include "xe/xe_query.h"
>   
>   /**
> - * TEST: kms flip event leak
> - * Category: Display
> - * Description: Test to validate flip event leak
> - *
>    * SUBTEST: basic
>    * Description: This test tries to provoke the kernel into leaking a pending
>    *              page flip event when the fd is closed before the flip has
> diff --git a/tests/kms_force_connector_basic.c b/tests/kms_force_connector_basic.c
> index e3b9034db..55e6a7767 100644
> --- a/tests/kms_force_connector_basic.c
> +++ b/tests/kms_force_connector_basic.c
> @@ -30,6 +30,36 @@
>   
>   #include "igt.h"
>   
> +/**
> + * SUBTEST: force-load-detect
> + * Description: Test to detect forced load.
> + * Driver requirement: i915
> + * Functionality: force_connector, vga
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: force-connector-state
> + * Description: Test to check the forced connector state
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + * Functionality: force_connector
> + * Mega feature: General Display Features
> + *
> + * SUBTEST: force-edid
> + * Description: Test to check the values after forcing edid
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + * Functionality: force_connector
> + * Mega feature: General Display Features
> + *
> + * SUBTEST: prune-stale-modes
> + * Description: Tests pruning of stale modes
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + * Functionality: force_connector
> + * Mega feature: General Display Features
> + */
> +
>   IGT_TEST_DESCRIPTION("Check the debugfs force connector/edid features work"
>   		     " correctly.");
>   
> @@ -69,14 +99,6 @@ static void reset_connectors(void)
>   	drm_close_driver(drm_fd);
>   }
>   
> -/**
> - * SUBTEST: force-load-detect
> - * Description: Test to detect forced load.
> - * Driver requirement: i915
> - * Functionality: force_connector, vga
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
>   static void force_load_detect(int drm_fd, drmModeConnectorPtr connector, drmModeRes *res)
>   {
>   	int i, j, w = 64, h = 64;
> @@ -165,14 +187,6 @@ static void force_load_detect(int drm_fd, drmModeConnectorPtr connector, drmMode
>   	}
>   }
>   
> -/**
> - * SUBTEST: force-connector-state
> - * Description: Test to check the forced connector state
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: force_connector
> - * Mega feature: General Display Features
> - */
>   static void force_connector_state(int drm_fd, drmModeConnectorPtr connector)
>   {
>   	igt_display_t display;
> @@ -212,14 +226,6 @@ static void force_connector_state(int drm_fd, drmModeConnectorPtr connector)
>   	igt_display_fini(&display);
>   }
>   
> -/**
> - * SUBTEST: force-edid
> - * Description: Test to check the values after forcing edid
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: force_connector
> - * Mega feature: General Display Features
> - */
>   static void force_edid(int drm_fd, drmModeConnectorPtr connector)
>   {
>   	drmModeConnector *temp;
> @@ -261,14 +267,6 @@ static void force_edid(int drm_fd, drmModeConnectorPtr connector)
>   
>   }
>   
> -/**
> - * SUBTEST: prune-stale-modes
> - * Description: Tests pruning of stale modes
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: force_connector
> - * Mega feature: General Display Features
> - */
>   static void prune_stale_modes(int drm_fd, drmModeConnectorPtr connector)
>   {
>   	int i;
> diff --git a/tests/kms_getfb.c b/tests/kms_getfb.c
> index 059f66d99..b4a155e2d 100644
> --- a/tests/kms_getfb.c
> +++ b/tests/kms_getfb.c
> @@ -32,6 +32,7 @@
>    * Category: Display
>    * Description: Tests GETFB and GETFB2 ioctls.
>    */
> +
>   #include "igt.h"
>   #include <unistd.h>
>   #include <stdlib.h>
> @@ -50,6 +51,88 @@
>   #include "xe/xe_query.h"
>   #include "xe/xe_ioctl.h"
>   
> +/**
> + * SUBTEST: getfb-handle-%s
> + * Description: Tests error handling %arg[1]
> + * Driver requirement: i915, xe
> + * Functionality: kms_gem_interop
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @closed:       when passing a handle that has been closed.
> + * @not-fb:       when passing an invalid handle.
> + * @valid:        when passing an valid handle.
> + * @zero:         for a zero'd input.
> + */
> +
> +/**
> + * SUBTEST: getfb-reject-ccs
> + * Description: Tests error handling while requesting CCS buffers it should
> + *              refuse because getfb supports returning a single buffer handle.
> + * Driver requirement: i915, xe
> + * Functionality: ccs, kms_gem_interop, tiling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: getfb-%s-different-handles
> + * Description: Tests error handling while requesting for two different handles
> + *              from %arg[1].
> + * Driver requirement: i915, xe
> + * Functionality: kms_gem_interop
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @addfb:           same fd
> + * @repeated:        different fd
> + */
> +
> +/**
> + * SUBTEST: getfb2-accept-ccs
> + * Description: Tests outputs are correct when retrieving a CCS framebuffer.
> + * Driver requirement: i915, xe
> + * Functionality: ccs, kms_gem_interop, tiling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: getfb2-into-addfb2
> + * Description: Output check by passing the output of GETFB2 into ADDFB2.
> + * Driver requirement: i915, xe
> + * Functionality: kms_gem_interop
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: getfb2-handle-%s
> + * Description: Tests error handling %arg[1].
> + * Driver requirement: i915, xe
> + * Functionality: kms_gem_interop
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @closed:                  when passing a handle that has been closed
> + * @not-fb:                  when passing an invalid handle
> + * @zero:                    for a zero'd input
> + */
> +
> +/**
> + * SUBTEST: %s-handle-protection
> + * Description: Make sure %arg[1] return handles if caller is non-root or non-master.
> + * Driver requirement: i915, xe
> + * Functionality: kms_gem_interop
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @getfb:      GETFB ioctl
> + * @getfb2:     GETFB2 ioctl
> + */
> +
>   IGT_TEST_DESCRIPTION("Tests GETFB and GETFB2 ioctls.");
>   
>   static bool has_getfb_iface(int fd)
> @@ -178,21 +261,6 @@ static uint32_t get_any_prop_id(int fd)
>   	return 0;
>   }
>   
> -/**
> - * SUBTEST: getfb-handle-%s
> - * Description: Tests error handling %arg[1]
> - * Driver requirement: i915, xe
> - * Functionality: kms_gem_interop
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @closed:       when passing a handle that has been closed.
> - * @not-fb:       when passing an invalid handle.
> - * @valid:        when passing an valid handle.
> - * @zero:         for a zero'd input.
> - */
>   static void test_handle_input(int fd)
>   {
>   	struct drm_mode_fb_cmd2 add = {};
> @@ -248,28 +316,6 @@ static void test_handle_input(int fd)
>   		gem_close(fd, add.handles[0]);
>   }
>   
> -/**
> - * SUBTEST: getfb-reject-ccs
> - * Description: Tests error handling while requesting CCS buffers it should
> - *              refuse because getfb supports returning a single buffer handle.
> - * Driver requirement: i915, xe
> - * Functionality: ccs, kms_gem_interop, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: getfb-%s-different-handles
> - * Description: Tests error handling while requesting for two different handles
> - *              from %arg[1].
> - * Driver requirement: i915, xe
> - * Functionality: kms_gem_interop
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @addfb:           same fd
> - * @repeated:        different fd
> - */
>   static void test_duplicate_handles(int fd)
>   {
>   	struct drm_mode_fb_cmd2 add = {};
> @@ -335,34 +381,6 @@ static void test_duplicate_handles(int fd)
>   	}
>   }
>   
> -/**
> - * SUBTEST: getfb2-accept-ccs
> - * Description: Tests outputs are correct when retrieving a CCS framebuffer.
> - * Driver requirement: i915, xe
> - * Functionality: ccs, kms_gem_interop, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: getfb2-into-addfb2
> - * Description: Output check by passing the output of GETFB2 into ADDFB2.
> - * Driver requirement: i915, xe
> - * Functionality: kms_gem_interop
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: getfb2-handle-%s
> - * Description: Tests error handling %arg[1].
> - * Driver requirement: i915, xe
> - * Functionality: kms_gem_interop
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @closed:                  when passing a handle that has been closed
> - * @not-fb:                  when passing an invalid handle
> - * @zero:                    for a zero'd input
> - */
>   static void test_getfb2(int fd)
>   {
>   	struct drm_mode_fb_cmd2 add_basic = {};
> @@ -471,19 +489,6 @@ static void test_getfb2(int fd)
>   	}
>   }
>   
> -/**
> - * SUBTEST: %s-handle-protection
> - * Description: Make sure %arg[1] return handles if caller is non-root or non-master.
> - * Driver requirement: i915, xe
> - * Functionality: kms_gem_interop
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @getfb:      GETFB ioctl
> - * @getfb2:     GETFB2 ioctl
> - */
>   static void test_handle_protection(void) {
>   	int non_master_fd;
>   	struct drm_mode_fb_cmd2 non_master_add = {};
> diff --git a/tests/kms_hdmi_inject.c b/tests/kms_hdmi_inject.c
> index 61f62fa7c..3a279e2c9 100644
> --- a/tests/kms_hdmi_inject.c
> +++ b/tests/kms_hdmi_inject.c
> @@ -22,6 +22,14 @@
>    *
>    */
>   
> +/**
> + * TEST: kms hdmi inject
> + * Category: Display
> + * Description: Test that in-kernel EDID parsing is producing expected results
> + *              by forcing a HDMI connector with a known EDID and checking that
> + *              the metadata exposed to user space matches.
> + */
> +
>   #include "config.h"
>   
>   #include <dirent.h>
> @@ -32,12 +40,6 @@
>   #include "xe/xe_query.h"
>   
>   /**
> - * TEST: kms hdmi inject
> - * Category: Display
> - * Description: Test that in-kernel EDID parsing is producing expected results
> - *              by forcing a HDMI connector with a known EDID and checking that
> - *              the metadata exposed to user space matches.
> - *
>    * SUBTEST: inject-4k
>    * Description: Make sure that 4K modes exposed by DRM match the forced EDID and
>    *              modesetting using it succeed.
> diff --git a/tests/kms_hdr.c b/tests/kms_hdr.c
> index ed98a0c26..215f81892 100644
> --- a/tests/kms_hdr.c
> +++ b/tests/kms_hdr.c
> @@ -25,12 +25,76 @@
>    * Category: Display
>    * Description: Test HDR metadata interfaces and bpc switch
>    */
> +
>   #include "igt.h"
>   #include <fcntl.h>
>   #include <termios.h>
>   #include <unistd.h>
>   #include "igt_edid.h"
>   
> +/**
> + * SUBTEST: bpc-switch
> + * Description: Tests switching between different display output bpc modes
> + * Driver requirement: i915, xe
> + * Functionality: colorspace, hdr
> + * Mega feature: HDR
> + * Test category: functionality test
> + *
> + * SUBTEST: bpc-switch-dpms
> + * Description: Tests switching between different display output bpc modes with dpms
> + * Driver requirement: i915, xe
> + * Functionality: colorspace, dpms, hdr
> + * Mega feature: HDR
> + * Test category: functionality test
> + *
> + * SUBTEST: bpc-switch-suspend
> + * Description: Tests switching between different display output bpc modes with suspend
> + * Driver requirement: i915, xe
> + * Functionality: colorspace, hdr, suspend
> + * Mega feature: HDR
> + * Test category: functionality test
> + *
> + * SUBTEST: invalid-hdr
> + * Description: Test to ensure HDR is not enabled on non-HDR panel
> + * Driver requirement: i915, xe
> + * Functionality: colorspace, hdr
> + * Mega feature: HDR
> + * Test category: functionality test
> + *
> + * SUBTEST: invalid-metadata-sizes
> + * Description: Tests invalid HDR metadata sizes
> + * Driver requirement: i915, xe
> + * Functionality: colorspace, hdr
> + * Mega feature: HDR
> + * Test category: functionality test
> + *
> + * SUBTEST: static-toggle-dpms
> + * Description: Tests static toggle with dpms
> + * Driver requirement: i915, xe
> + * Functionality: colorspace, dpms, hdr
> + * Mega feature: HDR
> + * Test category: functionality test
> + *
> + * SUBTEST: static-toggle-suspend
> + * Description: Tests static toggle with suspend
> + * Driver requirement: i915, xe
> + * Functionality: colorspace, hdr, suspend
> + * Mega feature: HDR
> + * Test category: functionality test
> + *
> + * SUBTEST: static-%s
> + * Description: Tests %arg[1].
> + * Driver requirement: i915, xe
> + * Functionality: colorspace, hdr
> + * Mega feature: HDR
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @swap:                    swapping static HDR metadata
> + * @toggle:                  entering and exiting HDR mode
> + */
> +
>   IGT_TEST_DESCRIPTION("Test HDR metadata interfaces and bpc switch");
>   
>   /* HDR EDID parsing. */
> @@ -213,28 +277,6 @@ static bool has_max_bpc(igt_output_t *output)
>   	       igt_output_get_prop(output, IGT_CONNECTOR_MAX_BPC);
>   }
>   
> -/**
> - * SUBTEST: bpc-switch
> - * Description: Tests switching between different display output bpc modes
> - * Driver requirement: i915, xe
> - * Functionality: colorspace, hdr
> - * Mega feature: HDR
> - * Test category: functionality test
> - *
> - * SUBTEST: bpc-switch-dpms
> - * Description: Tests switching between different display output bpc modes with dpms
> - * Driver requirement: i915, xe
> - * Functionality: colorspace, dpms, hdr
> - * Mega feature: HDR
> - * Test category: functionality test
> - *
> - * SUBTEST: bpc-switch-suspend
> - * Description: Tests switching between different display output bpc modes with suspend
> - * Driver requirement: i915, xe
> - * Functionality: colorspace, hdr, suspend
> - * Mega feature: HDR
> - * Test category: functionality test
> - */
>   static void test_bpc_switch(data_t *data, uint32_t flags)
>   {
>   	igt_display_t *display = &data->display;
> @@ -588,47 +630,6 @@ static bool has_hdr(igt_output_t *output)
>   	return igt_output_has_prop(output, IGT_CONNECTOR_HDR_OUTPUT_METADATA);
>   }
>   
> -/**
> - * SUBTEST: invalid-hdr
> - * Description: Test to ensure HDR is not enabled on non-HDR panel
> - * Driver requirement: i915, xe
> - * Functionality: colorspace, hdr
> - * Mega feature: HDR
> - * Test category: functionality test
> - *
> - * SUBTEST: invalid-metadata-sizes
> - * Description: Tests invalid HDR metadata sizes
> - * Driver requirement: i915, xe
> - * Functionality: colorspace, hdr
> - * Mega feature: HDR
> - * Test category: functionality test
> - *
> - * SUBTEST: static-toggle-dpms
> - * Description: Tests static toggle with dpms
> - * Driver requirement: i915, xe
> - * Functionality: colorspace, dpms, hdr
> - * Mega feature: HDR
> - * Test category: functionality test
> - *
> - * SUBTEST: static-toggle-suspend
> - * Description: Tests static toggle with suspend
> - * Driver requirement: i915, xe
> - * Functionality: colorspace, hdr, suspend
> - * Mega feature: HDR
> - * Test category: functionality test
> - *
> - * SUBTEST: static-%s
> - * Description: Tests %arg[1].
> - * Driver requirement: i915, xe
> - * Functionality: colorspace, hdr
> - * Mega feature: HDR
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @swap:                    swapping static HDR metadata
> - * @toggle:                  entering and exiting HDR mode
> - */
>   static void test_hdr(data_t *data, uint32_t flags)
>   {
>   	igt_display_t *display = &data->display;
> diff --git a/tests/kms_invalid_mode.c b/tests/kms_invalid_mode.c
> index 55b7fea8f..77cf4d609 100644
> --- a/tests/kms_invalid_mode.c
> +++ b/tests/kms_invalid_mode.c
> @@ -28,6 +28,7 @@
>    * Description: Make sure all modesets are rejected when the requested mode is
>    *              invalid
>    */
> +
>   #include "igt.h"
>   #include <limits.h>
>   #include <stdbool.h>
> diff --git a/tests/kms_multipipe_modeset.c b/tests/kms_multipipe_modeset.c
> index a968a3513..e67392668 100644
> --- a/tests/kms_multipipe_modeset.c
> +++ b/tests/kms_multipipe_modeset.c
> @@ -24,12 +24,15 @@
>    *  Karthik B S <karthik.b.s@intel.com>
>    */
>   
> -#include "igt.h"
>   /**
>    * TEST: kms multipipe modeset
>    * Category: Display
>    * Description: Test simultaneous modeset on all the supported pipes
> - *
> + */
> +
> +#include "igt.h"
> +
> +/**
>    * SUBTEST: basic-max-pipe-crc-check
>    * Description: Verify if simultaneous modesets on all the supported pipes is
>    *              successful. Validate using CRC verification
> diff --git a/tests/kms_panel_fitting.c b/tests/kms_panel_fitting.c
> index a583e1435..af0c756ed 100644
> --- a/tests/kms_panel_fitting.c
> +++ b/tests/kms_panel_fitting.c
> @@ -22,15 +22,18 @@
>    *
>    */
>   
> +/**
> + * TEST: kms panel fitting
> + * Category: Display
> + * Description: Test display panel fitting
> + */
> +
>   #include "igt.h"
>   #include <limits.h>
>   #include <math.h>
>   #include <sys/stat.h>
> +
>   /**
> - * TEST: kms panel fitting
> - * Category: Display
> - * Description: Test display panel fitting
> - *
>    * SUBTEST: atomic-fastset
>    * Description: Tests panel fitting usages with atomic fastset.
>    * Driver requirement: i915, xe
> diff --git a/tests/kms_pipe_crc_basic.c b/tests/kms_pipe_crc_basic.c
> index 94252415b..4fed582b4 100644
> --- a/tests/kms_pipe_crc_basic.c
> +++ b/tests/kms_pipe_crc_basic.c
> @@ -36,6 +36,81 @@
>   #include <string.h>
>   #include <fcntl.h>
>   
> +/**
> + * SUBTEST: bad-source
> + * Description: Tests error handling when the bad source is set.
> + * Driver requirement: i915, xe
> + * Functionality: crc
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: read-crc
> + * Description: Test for pipe CRC reads
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + * Functionality: crc
> + * Mega feature: General Display Features
> + *
> + * SUBTEST: read-crc-frame-sequence
> + * Description: Tests the pipe CRC read and ensure frame sequence
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + * Functionality: crc
> + * Mega feature: General Display Features
> + *
> + * SUBTEST: nonblocking-crc
> + * Description: Test for O_NONBLOCK CRC reads
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + * Functionality: crc
> + * Mega feature: General Display Features
> + *
> + * SUBTEST: nonblocking-crc-frame-sequence
> + * Description: Test for O_NONBLOCK CRC reads and ensure frame sequence
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + * Functionality: crc
> + * Mega feature: General Display Features
> + *
> + * SUBTEST: suspend-read-crc
> + * Description: Suspend test for pipe CRC reads
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + * Functionality: crc, suspend
> + * Mega feature: General Display Features
> + *
> + * SUBTEST: hang-read-crc
> + * Description: Hang test for pipe CRC read
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + * Functionality: crc, hang
> + * Mega feature: General Display Features
> + */
> +
> +/**
> + * SUBTEST: compare-crc-sanitycheck-%s
> + * Description: Basic sanity check for CRC mismatches with %arg[1]
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + * Functionality: crc, pixel_format
> + * Mega feature: General Display Features
> + *
> + * arg[1]:
> + *
> + * @xr24:	XR24 format
> + * @nv12:	NV12 format
> + */
> +
> +/**
> + * SUBTEST: disable-crc-after-crtc
> + * Description: Check that disabling CRCs on a CRTC after having disabled the
> + *              CRTC does not cause issues.
> + * Driver requirement: i915, xe
> + * Functionality: crc
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + */
> +
>   static bool extended;
>   static enum pipe active_pipes[IGT_MAX_PIPES];
>   static uint32_t last_pipe;
> @@ -65,14 +140,6 @@ static bool simulation_constraint(enum pipe pipe)
>   	return false;
>   }
>   
> -/**
> - * SUBTEST: bad-source
> - * Description: Tests error handling when the bad source is set.
> - * Driver requirement: i915, xe
> - * Functionality: crc
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
>   static void test_bad_source(data_t *data)
>   {
>   	errno = 0;
> @@ -94,49 +161,6 @@ enum {
>   	TEST_HANG = 1 << 3,
>   };
>   
> -/**
> - * SUBTEST: read-crc
> - * Description: Test for pipe CRC reads
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: crc
> - * Mega feature: General Display Features
> - *
> - * SUBTEST: read-crc-frame-sequence
> - * Description: Tests the pipe CRC read and ensure frame sequence
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: crc
> - * Mega feature: General Display Features
> - *
> - * SUBTEST: nonblocking-crc
> - * Description: Test for O_NONBLOCK CRC reads
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: crc
> - * Mega feature: General Display Features
> - *
> - * SUBTEST: nonblocking-crc-frame-sequence
> - * Description: Test for O_NONBLOCK CRC reads and ensure frame sequence
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: crc
> - * Mega feature: General Display Features
> - *
> - * SUBTEST: suspend-read-crc
> - * Description: Suspend test for pipe CRC reads
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: crc, suspend
> - * Mega feature: General Display Features
> - *
> - * SUBTEST: hang-read-crc
> - * Description: Hang test for pipe CRC read
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: crc, hang
> - * Mega feature: General Display Features
> - */
>   static void test_read_crc(data_t *data, enum pipe pipe,
>   			  igt_output_t *output, unsigned flags)
>   {
> @@ -234,20 +258,6 @@ static void test_read_crc(data_t *data, enum pipe pipe,
>   	igt_display_commit(display);
>   }
>   
> -/**
> - * SUBTEST: compare-crc-sanitycheck-%s
> - * Description: Basic sanity check for CRC mismatches with %arg[1]
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: crc, pixel_format
> - * Mega feature: General Display Features
> - *
> - * arg[1]:
> - *
> - * @xr24:	XR24 format
> - * @nv12:	NV12 format
> - */
> -
>   /*
>    * CRC-sanity test, to make sure there would be no CRC mismatches
>    *
> @@ -313,15 +323,6 @@ static void test_compare_crc(data_t *data, enum pipe pipe, igt_output_t *output,
>   	igt_remove_fb(data->drm_fd, &fb1);
>   }
>   
> -/**
> - * SUBTEST: disable-crc-after-crtc
> - * Description: Check that disabling CRCs on a CRTC after having disabled the
> - *              CRTC does not cause issues.
> - * Driver requirement: i915, xe
> - * Functionality: crc
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
>   static void test_disable_crc_after_crtc(data_t *data, enum pipe pipe,
>   					igt_output_t *output)
>   {
> diff --git a/tests/kms_plane.c b/tests/kms_plane.c
> index c561bf6ba..17550e168 100644
> --- a/tests/kms_plane.c
> +++ b/tests/kms_plane.c
> @@ -29,6 +29,7 @@
>    * Category: Display
>    * Description: Testes for KMS Plane
>    */
> +
>   #include "igt.h"
>   #include "igt_vec.h"
>   #include <errno.h>
> @@ -37,6 +38,73 @@
>   #include <string.h>
>   #include "xe/xe_query.h"
>   
> +/**
> + * SUBTEST: plane-position-%s
> + * Description: Verify plane position using two planes to create a %arg[1]
> + * Driver requirement: i915, xe
> + * Functionality: plane
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: plane-position-hole-dpms
> + * Description: Verify plane position using two planes to create a partially
> + *              covered screen and check for DPMS
> + * Driver requirement: i915, xe
> + * Functionality: dpms, plane
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @covered:           fully covered screen
> + * @hole:              partially covered screen
> + */
> +
> +/**
> + * SUBTEST: plane-panning-%s
> + * Description: Verify plane panning at %arg[1] using primary plane
> + * Driver requirement: i915, xe
> + * Functionality: plane
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: plane-panning-bottom-right-suspend
> + * Description: Verify plane panning at bottom-right position with suspend using
> + *              primary plane
> + * Driver requirement: i915, xe
> + * Functionality: plane, suspend
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @bottom-right:               bottom-right position
> + * @top-left:                   top-left position
> + */
> +
> +/**
> + * SUBTEST: pixel-%s
> + * Description: verify the pixel formats for given plane and pipe
> + * Driver requirement: i915, xe
> + * Functionality: pixel_format, plane
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @format:
> + * @format-source-clamping:          with source clamping
> + */
> +
> +/**
> + * SUBTEST: planar-pixel-format-settings
> + * Description: verify planar settings for pixel format are handled correctly
> + * Driver requirement: i915, xe
> + * Functionality: pixel_format, plane
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + */
> +
>   /*
>    * Throw away enough lsbs in pixel formats tests
>    * to get a match despite some differences between
> @@ -287,27 +355,6 @@ test_plane_position_with_output(data_t *data,
>   	igt_remove_fb(data->drm_fd, &sprite_fb);
>   }
>   
> -/**
> - * SUBTEST: plane-position-%s
> - * Description: Verify plane position using two planes to create a %arg[1]
> - * Driver requirement: i915, xe
> - * Functionality: plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: plane-position-hole-dpms
> - * Description: Verify plane position using two planes to create a partially
> - *              covered screen and check for DPMS
> - * Driver requirement: i915, xe
> - * Functionality: dpms, plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @covered:           fully covered screen
> - * @hole:              partially covered screen
> - */
>   static void
>   test_plane_position(data_t *data, enum pipe pipe)
>   {
> @@ -416,27 +463,6 @@ test_plane_panning_with_output(data_t *data,
>   	igt_remove_fb(data->drm_fd, &primary_fb);
>   }
>   
> -/**
> - * SUBTEST: plane-panning-%s
> - * Description: Verify plane panning at %arg[1] using primary plane
> - * Driver requirement: i915, xe
> - * Functionality: plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: plane-panning-bottom-right-suspend
> - * Description: Verify plane panning at bottom-right position with suspend using
> - *              primary plane
> - * Driver requirement: i915, xe
> - * Functionality: plane, suspend
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @bottom-right:               bottom-right position
> - * @top-left:                   top-left position
> - */
>   static void
>   test_plane_panning(data_t *data, enum pipe pipe)
>   {
> @@ -1162,19 +1188,6 @@ static bool skip_plane(data_t *data, igt_plane_t *plane)
>   	return index != 0 && index != 3 && index != 5;
>   }
>   
> -/**
> - * SUBTEST: pixel-%s
> - * Description: verify the pixel formats for given plane and pipe
> - * Driver requirement: i915, xe
> - * Functionality: pixel_format, plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @format:
> - * @format-source-clamping:          with source clamping
> - */
>   static void
>   test_pixel_formats(data_t *data, enum pipe pipe)
>   {
> @@ -1231,14 +1244,6 @@ test_pixel_formats(data_t *data, enum pipe pipe)
>   	igt_assert_f(result, "At least one CRC mismatch happened\n");
>   }
>   
> -/**
> - * SUBTEST: planar-pixel-format-settings
> - * Description: verify planar settings for pixel format are handled correctly
> - * Driver requirement: i915, xe
> - * Functionality: pixel_format, plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
>   static void test_planar_settings(data_t *data)
>   {
>   	enum pipe pipe = PIPE_A;
> diff --git a/tests/kms_plane_alpha_blend.c b/tests/kms_plane_alpha_blend.c
> index f023fae74..d37407150 100644
> --- a/tests/kms_plane_alpha_blend.c
> +++ b/tests/kms_plane_alpha_blend.c
> @@ -29,8 +29,56 @@
>    * Category: Display
>    * Description: Test plane alpha and blending mode properties
>    */
> +
>   #include "igt.h"
>   
> +/**
> + * SUBTEST: alpha-%s
> + * Description: Test to %arg[1]
> + * Driver requirement: i915, xe
> + * Functionality: plane
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @7efc:                validate alpha values 0x7e and 0xfc are swappable on
> + *                       pre-multiplied blend mode.
> + * @basic:               basic plane alpha properties.
> + * @opaque-fb:           alpha properties with opaque fb.
> + * @transparent-fb:      alpha property with transparent fb.
> + */
> +
> +/**
> + * SUBTEST: coverage-vs-premult-vs-constant
> + * Description: Tests pipe coverage blending properties.
> + * Driver requirement: i915, xe
> + * Functionality: plane
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: coverage-7efc
> + * Description: Uses alpha values 0x7e and 0xfc to validate fg.alpha and
> + *              plane_alpha are swappable on coverage blend mode.
> + * Driver requirement: i915, xe
> + * Functionality: plane
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: constant-alpha-%s
> + * Description: Tests plane alpha and blending properties with %arg[1].
> + * Driver requirement: i915, xe
> + * Functionality: plane
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @max:            maximum alpha value
> + * @mid:            medium  alpha value
> + * @min:            minimum alpha value
> + */
> +
>   IGT_TEST_DESCRIPTION("Test plane alpha and blending mode properties");
>   
>   static bool extended;
> @@ -482,52 +530,6 @@ static void coverage_premult_constant(data_t *data, enum pipe pipe, igt_plane_t
>   	igt_pipe_crc_stop(data->pipe_crc);
>   }
>   
> -/**
> - * SUBTEST: alpha-%s
> - * Description: Test to %arg[1]
> - * Driver requirement: i915, xe
> - * Functionality: plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @7efc:                validate alpha values 0x7e and 0xfc are swappable on
> - *                       pre-multiplied blend mode.
> - * @basic:               basic plane alpha properties.
> - * @opaque-fb:           alpha properties with opaque fb.
> - * @transparent-fb:      alpha property with transparent fb.
> - */
> -
> -/**
> - * SUBTEST: coverage-vs-premult-vs-constant
> - * Description: Tests pipe coverage blending properties.
> - * Driver requirement: i915, xe
> - * Functionality: plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: coverage-7efc
> - * Description: Uses alpha values 0x7e and 0xfc to validate fg.alpha and
> - *              plane_alpha are swappable on coverage blend mode.
> - * Driver requirement: i915, xe
> - * Functionality: plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: constant-alpha-%s
> - * Description: Tests plane alpha and blending properties with %arg[1].
> - * Driver requirement: i915, xe
> - * Functionality: plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @max:            maximum alpha value
> - * @mid:            medium  alpha value
> - * @min:            minimum alpha value
> - */
>   static void run_test_on_pipe_planes(data_t *data, enum pipe pipe, igt_output_t *output,
>   				    bool blend, bool must_multiply,
>   				    void(*test)(data_t *, enum pipe, igt_plane_t *))
> diff --git a/tests/kms_plane_cursor.c b/tests/kms_plane_cursor.c
> index bc89414d8..55ddffe44 100644
> --- a/tests/kms_plane_cursor.c
> +++ b/tests/kms_plane_cursor.c
> @@ -20,13 +20,15 @@
>    * OTHER DEALINGS IN THE SOFTWARE.
>    */
>   
> -#include "igt.h"
> -
>   /**
>    * TEST: kms plane cursor
>    * Category: Display
>    * Description: Tests cursor interactions with primary and overlay planes.
> - *
> + */
> +
> +#include "igt.h"
> +
> +/**
>    * SUBTEST: overlay
>    * Description: Tests atomic cursor positioning on primary plane and overlay plane
>    * Driver requirement: i915, xe
> diff --git a/tests/kms_plane_lowres.c b/tests/kms_plane_lowres.c
> index 3bb92cdd9..13158bf99 100644
> --- a/tests/kms_plane_lowres.c
> +++ b/tests/kms_plane_lowres.c
> @@ -28,6 +28,7 @@
>    * Description: Test atomic mode setting with a plane by switching between high
>    *              and low resolutions
>    */
> +
>   #include "igt.h"
>   #include "drmtest.h"
>   #include <errno.h>
> @@ -36,6 +37,31 @@
>   #include <string.h>
>   #include <time.h>
>   
> +/**
> + * SUBTEST: tiling-none
> + * Description: Tests the visibility of the planes when switching between high
> + *              and low resolution with Linear buffer (no tiling)
> + * Driver requirement: i915, xe
> + * Functionality: plane
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: tiling-%s
> + * Description: Tests the visibility of the planes when switching between high
> + *              and low resolution with %arg[1]
> + * Driver requirement: i915, xe
> + * Functionality: plane, tiling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @4:           4-tiling
> + * @x:           x-tiling
> + * @y:           y-tiling
> + * @yf:          yf-tiling
> + */
> +
>   IGT_TEST_DESCRIPTION("Test atomic mode setting with a plane by switching between high and low resolutions");
>   
>   #define SDR_PLANE_BASE 3
> @@ -267,30 +293,6 @@ static void test_cleanup(data_t *data)
>   	igt_display_commit2(&data->display, COMMIT_ATOMIC);
>   }
>   
> -/**
> - * SUBTEST: tiling-none
> - * Description: Tests the visibility of the planes when switching between high
> - *              and low resolution with Linear buffer (no tiling)
> - * Driver requirement: i915, xe
> - * Functionality: plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: tiling-%s
> - * Description: Tests the visibility of the planes when switching between high
> - *              and low resolution with %arg[1]
> - * Driver requirement: i915, xe
> - * Functionality: plane, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @4:           4-tiling
> - * @x:           x-tiling
> - * @y:           y-tiling
> - * @yf:          yf-tiling
> - */
>   static void run_test(data_t *data, uint64_t modifier)
>   {
>   	enum pipe pipe;
> diff --git a/tests/kms_plane_multiple.c b/tests/kms_plane_multiple.c
> index 28791560f..6239e225a 100644
> --- a/tests/kms_plane_multiple.c
> +++ b/tests/kms_plane_multiple.c
> @@ -27,6 +27,7 @@
>    * Category: Display
>    * Description: Test atomic mode setting with multiple planes.
>    */
> +
>   #include "igt.h"
>   #include "drmtest.h"
>   #include <errno.h>
> @@ -35,6 +36,33 @@
>   #include <string.h>
>   #include <time.h>
>   
> +/**
> + * SUBTEST: tiling-none
> + * Description: Check that the kernel handles atomic updates of multiple planes
> + *              correctly by changing their geometry and making sure the changes
> + *              are reflected immediately after each commit.
> + * Driver requirement: i915, xe
> + * Functionality: plane
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: tiling-%s
> + * Description: Check that the kernel handles atomic updates of multiple planes
> + *              correctly by changing their geometry and making sure the changes
> + *              are reflected immediately after each commit.
> + * Driver requirement: i915, xe
> + * Functionality: plane, tiling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @4:           4-tiling
> + * @x:           x-tiling
> + * @y:           y-tiling
> + * @yf:          yf-tiling
> + */
> +
>   IGT_TEST_DESCRIPTION("Test atomic mode setting with multiple planes.");
>   
>   #define SIZE_PLANE      256
> @@ -378,32 +406,6 @@ test_plane_position(data_t *data, enum pipe pipe, igt_output_t *output, uint64_t
>   					n_planes, modifier);
>   }
>   
> -/**
> - * SUBTEST: tiling-none
> - * Description: Check that the kernel handles atomic updates of multiple planes
> - *              correctly by changing their geometry and making sure the changes
> - *              are reflected immediately after each commit.
> - * Driver requirement: i915, xe
> - * Functionality: plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: tiling-%s
> - * Description: Check that the kernel handles atomic updates of multiple planes
> - *              correctly by changing their geometry and making sure the changes
> - *              are reflected immediately after each commit.
> - * Driver requirement: i915, xe
> - * Functionality: plane, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @4:           4-tiling
> - * @x:           x-tiling
> - * @y:           y-tiling
> - * @yf:          yf-tiling
> - */
>   static void run_test(data_t *data, uint64_t modifier)
>   {
>   	enum pipe pipe;
> diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c
> index 67da91b1e..e175c75d8 100644
> --- a/tests/kms_plane_scaling.c
> +++ b/tests/kms_plane_scaling.c
> @@ -27,10 +27,250 @@
>    * Category: Display
>    * Description: Test display plane scaling
>    */
> +
>   #include "igt.h"
>   #include "igt_vec.h"
>   #include <math.h>
>   
> +/**
> + * SUBTEST: plane-scaler-unity-scaling-with-modifiers
> + * Description: Tests scaling with modifiers, unity scaling.
> + * Driver requirement: i915, xe
> + * Functionality: plane, scaling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: plane-scaler-with-clipping-clamping-modifiers
> + * Description: Tests scaling with clipping and clamping, modifiers.
> + * Driver requirement: i915, xe
> + * Functionality: plane, scaling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: plane-upscale-%s-with-modifiers
> + * Description: Tests upscaling with modifiers %arg[1].
> + * Driver requirement: i915, xe
> + * Functionality: plane, scaling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @20x20:          from 20x20 fb
> + * @factor-0-25:    for 0.25 scaling factor
> + */
> +
> +/**
> + * SUBTEST: plane-downscale-factor-%s-with-modifiers
> + * Description: Tests downscaling with modifiers for %arg[1] scaling factor.
> + * Driver requirement: i915, xe
> + * Functionality: plane, scaling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @0-25:   0.25
> + * @0-5:    0.5
> + * @0-75:   0.75
> + */
> +
> +/**
> + * SUBTEST: plane-scaler-unity-scaling-with-rotation
> + * Description: Tests scaling with rotation, unity scaling.
> + * Driver requirement: i915, xe
> + * Functionality: plane, scaling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: plane-scaler-with-clipping-clamping-rotation
> + * Description: Tests scaling with clipping and clamping, rotation.
> + * Driver requirement: i915, xe
> + * Functionality: plane, scaling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: plane-upscale-%s-with-rotation
> + * Description: Tests upscaling with rotation %arg[1].
> + * Driver requirement: i915, xe
> + * Functionality: plane, scaling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @20x20:          from 20x20 fb
> + * @factor-0-25:    for 0.25 scaling factor
> + */
> +
> +/**
> + * SUBTEST: plane-downscale-factor-%s-with-rotation
> + * Description: Tests downscaling with rotation for %arg[1] scaling factor.
> + * Driver requirement: i915, xe
> + * Functionality: plane, scaling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @0-25:   0.25
> + * @0-5:    0.5
> + * @0-75:   0.75
> + */
> +
> +/**
> + * SUBTEST: plane-scaler-unity-scaling-with-pixel-format
> + * Description: Tests scaling with pixel formats, unity scaling.
> + * Driver requirement: i915, xe
> + * Functionality: pixel_formats, plane, scaling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: plane-scaler-with-clipping-clamping-pixel-formats
> + * Description: Tests scaling with clipping and clamping, pixel formats.
> + * Driver requirement: i915, xe
> + * Functionality: pixel_formats, plane, scaling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: plane-upscale-%s-with-pixel-format
> + * Description: Tests upscaling with pixel formats %arg[1].
> + * Driver requirement: i915, xe
> + * Functionality: pixel_formats, plane, scaling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @20x20:          from 20x20 fb
> + * @factor-0-25:    for 0.25 scaling factor
> + */
> +
> +/**
> + * SUBTEST: plane-downscale-factor-%s-with-pixel-format
> + * Description: Tests downscaling with pixel formats for %arg[1] scaling factor.
> + * Driver requirement: i915, xe
> + * Functionality: pixel_formats, plane, scaling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @0-25:   0.25
> + * @0-5:    0.5
> + * @0-75:   0.75
> + */
> +
> +/**
> + * SUBTEST: planes-downscale-factor-%s
> + * Description: Tests downscaling of 2 planes for %arg[1] scaling factor.
> + * Driver requirement: i915, xe
> + * Functionality: plane, scaling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @0-25:  0.25
> + * @0-5:   0.5
> + * @0-75:  0.75
> + */
> +
> +/**
> + * SUBTEST: planes-downscale-factor-%s-%s
> + * Description: Tests downscaling (scaling factor %arg[1]) and upscaling (%arg[2])
> + *              of 2 planes.
> + * Driver requirement: i915, xe
> + * Functionality: plane, scaling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @0-25:  0.25
> + * @0-5:   0.5
> + * @0-75:  0.75
> + *
> + * arg[2]:
> + *
> + * @upscale-20x20:           upscale 20x20
> + * @upscale-factor-0-25:     scaling factor 0.25
> + * @unity-scaling:           Unity
> + */
> +
> +/**
> + * SUBTEST: planes-scaler-unity-scaling
> + * Description: Tests scaling of 2 planes, unity scaling.
> + * Driver requirement: i915, xe
> + * Functionality: plane, scaling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: planes-upscale-%s
> + * Description: Tests upscaling of 2 planes %arg[1].
> + * Driver requirement: i915, xe
> + * Functionality: plane, scaling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @20x20:          from 20x20 fb
> + * @factor-0-25:    for 0.25 scaling factor
> + */
> +
> +/**
> + * SUBTEST: planes-%s-downscale-factor-%s
> + * Description: Tests scaling (%arg[1]) and downscaling (scaling factor %arg[2])
> + *              of 2 planes.
> + * Driver requirement: i915, xe
> + * Functionality: plane, scaling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @unity-scaling:           Unity
> + * @upscale-factor-0-25:     scaling factor 0.25
> + * @upscale-20x20:           upscale 20x20
> + *
> + * arg[2]:
> + *
> + * @0-25:  0.25
> + * @0-5:   0.5
> + * @0-75:  0.75
> + */
> +
> +/**
> + * SUBTEST: invalid-num-scalers
> + * Description: Negative test for number of scalers per pipe.
> + * Driver requirement: i915, xe
> + * Functionality: plane, scaling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: 2x-scaler-multi-pipe
> + * Description: Tests scaling with multi-pipe.
> + * Driver requirement: i915, xe
> + * Functionality: plane, scaling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: invalid-parameters
> + * Description: Test parameters which should not be accepted
> + * Driver requirement: i915, xe
> + * Functionality: plane, scaling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: intel-max-src-size
> + * Description: Test for validating max source size.
> + * Driver requirement: i915, xe
> + * Functionality: plane, scaling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + */
> +
>   IGT_TEST_DESCRIPTION("Test display plane scaling");
>   
>   enum scaler_combo_test_type {
> @@ -529,48 +769,6 @@ static const uint64_t modifiers[] = {
>   	I915_FORMAT_MOD_4_TILED
>   };
>   
> -/**
> - * SUBTEST: plane-scaler-unity-scaling-with-modifiers
> - * Description: Tests scaling with modifiers, unity scaling.
> - * Driver requirement: i915, xe
> - * Functionality: plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: plane-scaler-with-clipping-clamping-modifiers
> - * Description: Tests scaling with clipping and clamping, modifiers.
> - * Driver requirement: i915, xe
> - * Functionality: plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: plane-upscale-%s-with-modifiers
> - * Description: Tests upscaling with modifiers %arg[1].
> - * Driver requirement: i915, xe
> - * Functionality: plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @20x20:          from 20x20 fb
> - * @factor-0-25:    for 0.25 scaling factor
> - */
> -
> -/**
> - * SUBTEST: plane-downscale-factor-%s-with-modifiers
> - * Description: Tests downscaling with modifiers for %arg[1] scaling factor.
> - * Driver requirement: i915, xe
> - * Functionality: plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @0-25:   0.25
> - * @0-5:    0.5
> - * @0-75:   0.75
> - */
>   static void test_scaler_with_modifier_pipe(data_t *d,
>   					   int width, int height,
>   					   bool is_upscale,
> @@ -603,48 +801,6 @@ static void test_scaler_with_modifier_pipe(data_t *d,
>   	}
>   }
>   
> -/**
> - * SUBTEST: plane-scaler-unity-scaling-with-rotation
> - * Description: Tests scaling with rotation, unity scaling.
> - * Driver requirement: i915, xe
> - * Functionality: plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: plane-scaler-with-clipping-clamping-rotation
> - * Description: Tests scaling with clipping and clamping, rotation.
> - * Driver requirement: i915, xe
> - * Functionality: plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: plane-upscale-%s-with-rotation
> - * Description: Tests upscaling with rotation %arg[1].
> - * Driver requirement: i915, xe
> - * Functionality: plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @20x20:          from 20x20 fb
> - * @factor-0-25:    for 0.25 scaling factor
> - */
> -
> -/**
> - * SUBTEST: plane-downscale-factor-%s-with-rotation
> - * Description: Tests downscaling with rotation for %arg[1] scaling factor.
> - * Driver requirement: i915, xe
> - * Functionality: plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @0-25:   0.25
> - * @0-5:    0.5
> - * @0-75:   0.75
> - */
>   static void test_scaler_with_rotation_pipe(data_t *d,
>   					   int width, int height,
>   					   bool is_upscale,
> @@ -678,48 +834,6 @@ static void test_scaler_with_rotation_pipe(data_t *d,
>   	}
>   }
>   
> -/**
> - * SUBTEST: plane-scaler-unity-scaling-with-pixel-format
> - * Description: Tests scaling with pixel formats, unity scaling.
> - * Driver requirement: i915, xe
> - * Functionality: pixel_formats, plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: plane-scaler-with-clipping-clamping-pixel-formats
> - * Description: Tests scaling with clipping and clamping, pixel formats.
> - * Driver requirement: i915, xe
> - * Functionality: pixel_formats, plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: plane-upscale-%s-with-pixel-format
> - * Description: Tests upscaling with pixel formats %arg[1].
> - * Driver requirement: i915, xe
> - * Functionality: pixel_formats, plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @20x20:          from 20x20 fb
> - * @factor-0-25:    for 0.25 scaling factor
> - */
> -
> -/**
> - * SUBTEST: plane-downscale-factor-%s-with-pixel-format
> - * Description: Tests downscaling with pixel formats for %arg[1] scaling factor.
> - * Driver requirement: i915, xe
> - * Functionality: pixel_formats, plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @0-25:   0.25
> - * @0-5:    0.5
> - * @0-75:   0.75
> - */
>   static void test_scaler_with_pixel_format_pipe(data_t *d, int width, int height, bool is_upscale,
>   					       enum pipe pipe, igt_output_t *output)
>   {
> @@ -855,83 +969,6 @@ static void setup_fb(int fd, int width, int height, struct igt_fb *fb)
>   		      fb);
>   }
>   
> -/**
> - * SUBTEST: planes-downscale-factor-%s
> - * Description: Tests downscaling of 2 planes for %arg[1] scaling factor.
> - * Driver requirement: i915, xe
> - * Functionality: plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @0-25:  0.25
> - * @0-5:   0.5
> - * @0-75:  0.75
> - */
> -/**
> - * SUBTEST: planes-downscale-factor-%s-%s
> - * Description: Tests downscaling (scaling factor %arg[1]) and upscaling (%arg[2])
> - *              of 2 planes.
> - * Driver requirement: i915, xe
> - * Functionality: plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @0-25:  0.25
> - * @0-5:   0.5
> - * @0-75:  0.75
> - *
> - * arg[2]:
> - *
> - * @upscale-20x20:           upscale 20x20
> - * @upscale-factor-0-25:     scaling factor 0.25
> - * @unity-scaling:           Unity
> - */
> -/**
> - * SUBTEST: planes-scaler-unity-scaling
> - * Description: Tests scaling of 2 planes, unity scaling.
> - * Driver requirement: i915, xe
> - * Functionality: plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: planes-upscale-%s
> - * Description: Tests upscaling of 2 planes %arg[1].
> - * Driver requirement: i915, xe
> - * Functionality: plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @20x20:          from 20x20 fb
> - * @factor-0-25:    for 0.25 scaling factor
> - */
> -/**
> - * SUBTEST: planes-%s-downscale-factor-%s
> - * Description: Tests scaling (%arg[1]) and downscaling (scaling factor %arg[2])
> - *              of 2 planes.
> - * Driver requirement: i915, xe
> - * Functionality: plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @unity-scaling:           Unity
> - * @upscale-factor-0-25:     scaling factor 0.25
> - * @upscale-20x20:           upscale 20x20
> - *
> - * arg[2]:
> - *
> - * @0-25:  0.25
> - * @0-5:   0.5
> - * @0-75:  0.75
> - */
> -
>   static void
>   test_planes_scaling_combo(data_t *d, int w1, int h1, int w2, int h2,
>   			  enum pipe pipe, igt_output_t *output,
> @@ -990,14 +1027,6 @@ test_planes_scaling_combo(data_t *d, int w1, int h1, int w2, int h2,
>   	cleanup_fbs(d);
>   }
>   
> -/**
> - * SUBTEST: invalid-num-scalers
> - * Description: Negative test for number of scalers per pipe.
> - * Driver requirement: i915, xe
> - * Functionality: plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
>   static void
>   test_invalid_num_scalers(data_t *d, enum pipe pipe, igt_output_t *output)
>   {
> @@ -1063,14 +1092,6 @@ test_invalid_num_scalers(data_t *d, enum pipe pipe, igt_output_t *output)
>   	cleanup_fbs(d);
>   }
>   
> -/**
> - * SUBTEST: 2x-scaler-multi-pipe
> - * Description: Tests scaling with multi-pipe.
> - * Driver requirement: i915, xe
> - * Functionality: plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
>   static void test_scaler_with_multi_pipe_plane(data_t *d)
>   {
>   	igt_display_t *display = &d->display;
> @@ -1158,14 +1179,6 @@ static void test_scaler_with_multi_pipe_plane(data_t *d)
>   	igt_assert_eq(ret1 && ret2, 0);
>   }
>   
> -/**
> - * SUBTEST: invalid-parameters
> - * Description: Test parameters which should not be accepted
> - * Driver requirement: i915, xe
> - * Functionality: plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
>   static void invalid_parameter_tests(data_t *d)
>   {
>   	enum pipe pipe = PIPE_A;
> @@ -1248,15 +1261,6 @@ static drmModeModeInfo *find_mode(data_t *data, igt_output_t *output, const uint
>   	return mode;
>   }
>   
> -/**
> - * SUBTEST: intel-max-src-size
> - * Description: Test for validating max source size.
> - * Driver requirement: i915, xe
> - * Functionality: plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
> -
>   /*
>    *	Max source/destination width/height for intel driver.
>    *	These numbers are coming from
> diff --git a/tests/kms_prime.c b/tests/kms_prime.c
> index b06365cbc..1e985fdc4 100644
> --- a/tests/kms_prime.c
> +++ b/tests/kms_prime.c
> @@ -21,6 +21,12 @@
>    * IN THE SOFTWARE.
>    */
>   
> +/**
> + * TEST: kms prime
> + * Category: Display
> + * Description: Prime tests, focusing on KMS side
> + */
> +
>   #include "igt.h"
>   #include "igt_device.h"
>   #include "igt_debugfs.h"
> @@ -30,11 +36,8 @@
>   #include <sys/ioctl.h>
>   #include <sys/poll.h>
>   #include <time.h>
> +
>   /**
> - * TEST: kms prime
> - * Category: Display
> - * Description: Prime tests, focusing on KMS side
> - *
>    * SUBTEST: D3hot
>    * Description: Validate pci state of dGPU when dGPU is idle and  scanout is on iGPU
>    * Driver requirement: i915, xe
> diff --git a/tests/kms_prop_blob.c b/tests/kms_prop_blob.c
> index c92525227..199c673e3 100644
> --- a/tests/kms_prop_blob.c
> +++ b/tests/kms_prop_blob.c
> @@ -30,12 +30,61 @@
>    * Category: Display
>    * Description: Tests behaviour of mass-data 'blob' properties.
>    */
> +
>   #include "igt.h"
>   #include <errno.h>
>   #include <stdbool.h>
>   #include <stdio.h>
>   #include <string.h>
>   
> +/**
> + * SUBTEST: blob-multiple
> + * Description: Test validates destroying multiple properties explicitly works as needed.
> + * Driver requirement: i915, xe
> + * Functionality: kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: blob-prop-%s
> + * Description: Tests validates the %arg[1] of the properties created.
> + * Driver requirement: i915, xe
> + * Functionality: kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @core:        validity
> + * @lifetime:    lifetime
> + * @validate:    blob size
> + */
> +
> +/**
> + * SUBTEST: basic
> + * Description: Test to ensure property support exists
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + * Functionality: kms_core
> + * Mega feature: General Display Features
> + *
> + * SUBTEST: invalid-%s-%s
> + * Description: Tests error handling when invalid properties are %ar[1] with %arg[2].
> + * Driver requirement: i915, xe
> + * Functionality: kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @get:            fetched
> + * @set:            set
> + *
> + * arg[2]:
> + *
> + * @prop:           blob object type
> + * @prop-any:       object of any type
> + */
> +
>   IGT_TEST_DESCRIPTION("Tests behaviour of mass-data 'blob' properties.");
>   
>   static const struct drm_mode_modeinfo test_mode_valid = {
> @@ -123,27 +172,6 @@ destroy_prop(int fd, uint32_t prop_id)
>   	return 0;
>   }
>   
> -/**
> - * SUBTEST: blob-multiple
> - * Description: Test validates destroying multiple properties explicitly works as needed.
> - * Driver requirement: i915, xe
> - * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: blob-prop-%s
> - * Description: Tests validates the %arg[1] of the properties created.
> - * Driver requirement: i915, xe
> - * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @core:        validity
> - * @lifetime:    lifetime
> - * @validate:    blob size
> - */
>   static void
>   test_validate(int fd)
>   {
> @@ -264,14 +292,6 @@ test_core(int fd)
>   	igt_assert_eq(validate_prop(fd, 0), ENOENT);
>   }
>   
> -/**
> - * SUBTEST: basic
> - * Description: Test to ensure property support exists
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: kms_core
> - * Mega feature: General Display Features
> - */
>   static void
>   test_basic(int fd)
>   {
> @@ -282,24 +302,6 @@ test_basic(int fd)
>   	igt_assert_eq(destroy_prop(fd, prop_id), 0);
>   }
>   
> -/**
> - * SUBTEST: invalid-%s-%s
> - * Description: Tests error handling when invalid properties are %ar[1] with %arg[2].
> - * Driver requirement: i915, xe
> - * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @get:            fetched
> - * @set:            set
> - *
> - * arg[2]:
> - *
> - * @prop:           blob object type
> - * @prop-any:       object of any type
> - */
>   static void prop_tests(int fd)
>   {
>   	struct drm_mode_obj_get_properties get_props = {};
> diff --git a/tests/kms_properties.c b/tests/kms_properties.c
> index 1a58717e1..33c4156bf 100644
> --- a/tests/kms_properties.c
> +++ b/tests/kms_properties.c
> @@ -21,6 +21,12 @@
>    * IN THE SOFTWARE.
>    */
>   
> +/**
> + * TEST: kms properties
> + * Category: Display
> + * Description: Test to validate the properties of all planes, crtc and connectors
> + */
> +
>   #include "igt.h"
>   #include "drmtest.h"
>   #include <errno.h>
> @@ -28,11 +34,8 @@
>   #include <stdio.h>
>   #include <string.h>
>   #include <time.h>
> +
>   /**
> - * TEST: kms properties
> - * Category: Display
> - * Description: Test to validate the properties of all planes, crtc and connectors
> - *
>    * SUBTEST: %s-properties-%s
>    * Description: Tests %arg[1] properties with %arg[2] commit
>    * Driver requirement: i915, xe
> @@ -53,6 +56,20 @@
>    * @legacy:          legacy
>    */
>   
> +/**
> + * SUBTEST: get_properties-sanity-%s
> + * Description: Test validates the properties of all planes, crtc and connectors
> + *              with %arg[1] commit
> + * Driver requirement: i915, xe
> + * Functionality: kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @atomic:          atomic
> + * @non-atomic:      legacy
> + */
>   
>   struct additional_test {
>   	const char *name;
> @@ -712,20 +729,6 @@ static void expect_no_props(int fd, uint32_t obj_type, uint32_t obj_id)
>   	igt_assert_neq(drmIoctl(fd, DRM_IOCTL_MODE_OBJ_GETPROPERTIES, &properties), 0);
>   }
>   
> -/**
> - * SUBTEST: get_properties-sanity-%s
> - * Description: Test validates the properties of all planes, crtc and connectors
> - *              with %arg[1] commit
> - * Driver requirement: i915, xe
> - * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @atomic:          atomic
> - * @non-atomic:      legacy
> - */
>   static void get_prop_sanity(igt_display_t *display, bool atomic)
>   {
>   	int fd = display->drm_fd;
> diff --git a/tests/kms_rmfb.c b/tests/kms_rmfb.c
> index 5281370f0..c102c9583 100644
> --- a/tests/kms_rmfb.c
> +++ b/tests/kms_rmfb.c
> @@ -21,6 +21,13 @@
>    * IN THE SOFTWARE.
>    */
>   
> +/**
> + * TEST: kms rmfb
> + * Category: Display
> + * Description: This tests rmfb and close-fd behavior. In these casesthe
> + *              framebuffers should be removed from the crtc.
> + */
> +
>   #include "igt.h"
>   #include "drmtest.h"
>   #include <errno.h>
> @@ -28,12 +35,8 @@
>   #include <stdio.h>
>   #include <string.h>
>   #include <time.h>
> +
>   /**
> - * TEST: kms rmfb
> - * Category: Display
> - * Description: This tests rmfb and close-fd behavior. In these casesthe
> - *              framebuffers should be removed from the crtc.
> - *
>    * SUBTEST: close-fd
>    * Description: RMFB is supposed to free the framebuffers from any and all planes
>    *              so test this and make sure it works with fd close and reopen.
> diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c
> index 864ab7b03..b2e877a4b 100644
> --- a/tests/kms_rotation_crc.c
> +++ b/tests/kms_rotation_crc.c
> @@ -27,10 +27,130 @@
>    * Category: Display
>    * Description: Tests different rotations with different planes & formats
>    */
> +
>   #include "igt.h"
>   #include "igt_vec.h"
>   #include <math.h>
>   
> +/**
> + * SUBTEST: %s-rotation-180
> + * Description: Rotation test with 180 degree for %arg[1] planes
> + * Driver requirement: i915, xe
> + * Functionality: plane, rotation
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @primary:    primary
> + * @sprite:     sprite
> + * @cursor:     cursor
> + */
> +
> +/**
> + * SUBTEST: %s-rotation-%d
> + * Description: Rotation test with %arg[2] degree for %arg[1] planes of gen9+
> + * Driver requirement: i915, xe
> + * Functionality: plane, rotation
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @primary:    primary
> + * @sprite:     sprite
> + *
> + * arg[2].values: 90, 270
> + */
> +
> +/**
> + * SUBTEST: bad-pixel-format
> + * Description: Checking unsupported pixel format for gen9+ with 90 degree of rotation
> + * Driver requirement: i915, xe
> + * Functionality: plane, rotation
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: bad-tiling
> + * Description: Checking unsupported tiling for gen9+ with 90 degree of rotation
> + * Driver requirement: i915, xe
> + * Functionality: plane, rotation, tiling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + */
> +
> +/**
> + * SUBTEST: primary-%s-tiled-reflect-x-%d
> + * Description: Test for %arg[1] & %arg[2] degree rotation on primary plane
> + * Driver requirement: i915, xe
> + * Functionality: plane, rotation, tiling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @4:      4 tiling
> + * @x:      x tiling
> + * @y:      y tiling
> + * @yf:     yf tiling
> + *
> + * arg[2].values: 0, 180
> + */
> +
> +/**
> + * SUBTEST: primary-%s-tiled-reflect-x-%d
> + * Description: Test for %arg[1] & %arg[2] degree rotation on primary plane
> + * Driver requirement: i915, xe
> + * Functionality: plane, rotation, tiling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @y:      y tiling
> + * @yf:     yf tiling
> + *
> + * arg[2].values: 90, 270
> + *
> + * SUBTEST: sprite-rotation-90-pos-100-0
> + * Description: Rotation test with 90 degree for a plane of gen9+ with given position
> + * Driver requirement: i915, xe
> + * Functionality: plane, rotation
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + */
> +
> +/**
> + * SUBTEST: multiplane-rotation
> + * Description: Rotation test on both planes by making them fully visible
> + * Driver requirement: i915, xe
> + * Functionality: plane, rotation
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: multiplane-rotation-cropping-%s
> + * Description: Rotation test on both planes by cropping left/%arg[1] corner of
> + *              primary plane and right/%arg[1] corner of sprite plane
> + * Driver requirement: i915, xe
> + * Functionality: plane, rotation
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @bottom:   bottom
> + * @top:      top
> + */
> +
> +/**
> + * SUBTEST: exhaust-fences
> + * Description: This test intends to check for fence leaks exhaustively
> + * Driver requirement: i915
> + * Functionality: plane, rotation
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + */
> +
>   #define MAX_FENCES 32
>   #define MAXMULTIPLANESAMOUNT 2
>   #define TEST_MAX_WIDTH 640
> @@ -479,93 +599,6 @@ static bool test_format(data_t *data,
>   	return true;
>   }
>   
> -/**
> - * SUBTEST: %s-rotation-180
> - * Description: Rotation test with 180 degree for %arg[1] planes
> - * Driver requirement: i915, xe
> - * Functionality: plane, rotation
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @primary:    primary
> - * @sprite:     sprite
> - * @cursor:     cursor
> - */
> -
> -/**
> - * SUBTEST: %s-rotation-%d
> - * Description: Rotation test with %arg[2] degree for %arg[1] planes of gen9+
> - * Driver requirement: i915, xe
> - * Functionality: plane, rotation
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @primary:    primary
> - * @sprite:     sprite
> - *
> - * arg[2].values: 90, 270
> - */
> -
> -/**
> - * SUBTEST: bad-pixel-format
> - * Description: Checking unsupported pixel format for gen9+ with 90 degree of rotation
> - * Driver requirement: i915, xe
> - * Functionality: plane, rotation
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: bad-tiling
> - * Description: Checking unsupported tiling for gen9+ with 90 degree of rotation
> - * Driver requirement: i915, xe
> - * Functionality: plane, rotation, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
> -
> -/**
> - * SUBTEST: primary-%s-tiled-reflect-x-%d
> - * Description: Test for %arg[1] & %arg[2] degree rotation on primary plane
> - * Driver requirement: i915, xe
> - * Functionality: plane, rotation, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @4:      4 tiling
> - * @x:      x tiling
> - * @y:      y tiling
> - * @yf:     yf tiling
> - *
> - * arg[2].values: 0, 180
> - */
> -
> -/**
> - * SUBTEST: primary-%s-tiled-reflect-x-%d
> - * Description: Test for %arg[1] & %arg[2] degree rotation on primary plane
> - * Driver requirement: i915, xe
> - * Functionality: plane, rotation, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @y:      y tiling
> - * @yf:     yf tiling
> - *
> - * arg[2].values: 90, 270
> - *
> - * SUBTEST: sprite-rotation-90-pos-100-0
> - * Description: Rotation test with 90 degree for a plane of gen9+ with given position
> - * Driver requirement: i915, xe
> - * Functionality: plane, rotation
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
>   static void test_plane_rotation(data_t *data, int plane_type, bool test_bad_format)
>   {
>   	igt_display_t *display = &data->display;
> @@ -885,28 +918,6 @@ static bool reusecrcfromlastround(planeinfos p[2], int lastroundp1format,
>   	return true;
>   }
>   
> -/**
> - * SUBTEST: multiplane-rotation
> - * Description: Rotation test on both planes by making them fully visible
> - * Driver requirement: i915, xe
> - * Functionality: plane, rotation
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: multiplane-rotation-cropping-%s
> - * Description: Rotation test on both planes by cropping left/%arg[1] corner of
> - *              primary plane and right/%arg[1] corner of sprite plane
> - * Driver requirement: i915, xe
> - * Functionality: plane, rotation
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @bottom:   bottom
> - * @top:      top
> - */
> -
>   /*
>    * Here is pipe parameter which is now used only for first pipe.
>    * It is left here if this test ever was wanted to be run on
> @@ -1104,14 +1115,6 @@ static void test_multi_plane_rotation(data_t *data, enum pipe pipe)
>   	igt_require_f(found, "No valid pipe/output combo found.\n");
>   }
>   
> -/**
> - * SUBTEST: exhaust-fences
> - * Description: This test intends to check for fence leaks exhaustively
> - * Driver requirement: i915
> - * Functionality: plane, rotation
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
>   static void test_plane_rotation_exhaust_fences(data_t *data,
>   					       enum pipe pipe,
>   					       igt_output_t *output,
> diff --git a/tests/kms_scaling_modes.c b/tests/kms_scaling_modes.c
> index eb10f7386..960e7d84b 100644
> --- a/tests/kms_scaling_modes.c
> +++ b/tests/kms_scaling_modes.c
> @@ -24,12 +24,15 @@
>    *     Swati Sharma <swati2.sharma@intel.com>
>    */
>   
> -#include "igt.h"
>   /**
>    * TEST: kms scaling modes
>    * Category: Display
>    * Description: Test display scaling modes
> - *
> + */
> +
> +#include "igt.h"
> +
> +/**
>    * SUBTEST: scaling-mode-%s
>    * Description: Tests %arg[1] display scaling mode
>    * Driver requirement: i915, xe
> diff --git a/tests/kms_selftest.c b/tests/kms_selftest.c
> index 6618dbe50..30fc58d90 100644
> --- a/tests/kms_selftest.c
> +++ b/tests/kms_selftest.c
> @@ -21,13 +21,16 @@
>    * IN THE SOFTWARE.
>    */
>   
> -#include "igt.h"
> -#include "igt_kmod.h"
>   /**
>    * TEST: kms selftest
>    * Category: Display
>    * Description: Basic sanity check of KMS selftests.
> - *
> + */
> +
> +#include "igt.h"
> +#include "igt_kmod.h"
> +
> +/**
>    * SUBTEST: %s
>    * Description: Basic sanity check of KMS selftest %arg[1].
>    * Driver requirement: i915, xe
> diff --git a/tests/kms_sequence.c b/tests/kms_sequence.c
> index 011733bc8..7dbcca643 100644
> --- a/tests/kms_sequence.c
> +++ b/tests/kms_sequence.c
> @@ -27,6 +27,7 @@
>    * Category: Display
>    * Description: Test CrtcGetSequence and CrtcQueueSequence.
>    */
> +
>   #include "igt.h"
>   #include <stdlib.h>
>   #include <stdio.h>
> @@ -42,6 +43,36 @@
>   
>   #include <drm.h>
>   
> +/**
> + * SUBTEST: get-%s
> + * Description: This is a test of drmCrtcGetSequence with %arg[1]
> + * Driver requirement: i915, xe
> + * Functionality: vblank
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @busy:         busy
> + * @forked:       forked bo
> + * @forked-busy:  forked bo & busy
> + * @idle:         idle
> + */
> +
> +/**
> + * SUBTEST: queue-%s
> + * Description: This is a test of drmCrtcQueueSequence with %arg[1]
> + * Driver requirement: i915, xe
> + * Functionality: vblank
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @busy:         busy
> + * @idle:         idle
> + */
> +
>   IGT_TEST_DESCRIPTION("Test CrtcGetSequence and CrtcQueueSequence.");
>   
>   typedef struct {
> @@ -136,35 +167,6 @@ static int crtc_queue_sequence(int fd, struct drm_crtc_queue_sequence *cqs)
>   	return err;
>   }
>   
> -/**
> - * SUBTEST: get-%s
> - * Description: This is a test of drmCrtcGetSequence with %arg[1]
> - * Driver requirement: i915, xe
> - * Functionality: vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @busy:         busy
> - * @forked:       forked bo
> - * @forked-busy:  forked bo & busy
> - * @idle:         idle
> - */
> -
> -/**
> - * SUBTEST: queue-%s
> - * Description: This is a test of drmCrtcQueueSequence with %arg[1]
> - * Driver requirement: i915, xe
> - * Functionality: vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * arg[1]:
> - *
> - * @busy:         busy
> - * @idle:         idle
> - */
>   static void run_test(data_t *data, int fd, void (*testfunc)(data_t *, int, int))
>   {
>   	int nchildren =
> diff --git a/tests/kms_setmode.c b/tests/kms_setmode.c
> index d66ee97c8..7fd1667d7 100644
> --- a/tests/kms_setmode.c
> +++ b/tests/kms_setmode.c
> @@ -20,6 +20,14 @@
>    * Authors:
>    *    Imre Deak <imre.deak@intel.com>
>    */
> +
> +/**
> + * TEST: kms setmode
> + * Category: Display
> + * Description: Tests the mode by iterating through all valid/invalid crtc/connector
> + *              combinations
> + */
> +
>   #include "config.h"
>   
>   #include "igt.h"
> @@ -35,11 +43,6 @@
>   #include "xe/xe_query.h"
>   
>   /**
> - * TEST: kms setmode
> - * Category: Display
> - * Description: Tests the mode by iterating through all valid/invalid crtc/connector
> - *              combinations
> - *
>    * SUBTEST: basic
>    * Description: Tests the vblank timing by iterating through all valid crtc/connector
>    *              combinations
> diff --git a/tests/kms_sysfs_edid_timing.c b/tests/kms_sysfs_edid_timing.c
> index ee47a024e..b36f383e5 100644
> --- a/tests/kms_sysfs_edid_timing.c
> +++ b/tests/kms_sysfs_edid_timing.c
> @@ -20,16 +20,20 @@
>    * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
>    * IN THE SOFTWARE.
>    */
> +
> +/**
> + * TEST: kms sysfs edid timing
> + * Category: Display
> + * Description: Test to check the time it takes to reprobe each connector.
> + */
> +
>   #include "igt.h"
>   
>   #include <dirent.h>
>   #include <fcntl.h>
>   #include <sys/stat.h>
> +
>   /**
> - * TEST: kms sysfs edid timing
> - * Category: Display
> - * Description: Test to check the time it takes to reprobe each connector.
> - *
>    * SUBTEST:
>    * Description: This test checks the time it takes to reprobe each connector and
>    *              fails if either the time it takes for one reprobe is too long or
> diff --git a/tests/kms_tiled_display.c b/tests/kms_tiled_display.c
> index bb29a4ca7..a094f4df3 100644
> --- a/tests/kms_tiled_display.c
> +++ b/tests/kms_tiled_display.c
> @@ -41,6 +41,7 @@
>    * Category: Display
>    * Description: Test for Transcoder Port Sync for Display Port Tiled Displays
>    */
> +
>   #include "igt.h"
>   #include "poll.h"
>   #include "drm_mode.h"
> diff --git a/tests/kms_tv_load_detect.c b/tests/kms_tv_load_detect.c
> index 67dbb242e..13394f2c6 100644
> --- a/tests/kms_tv_load_detect.c
> +++ b/tests/kms_tv_load_detect.c
> @@ -22,12 +22,15 @@
>    *
>    */
>   
> -#include "igt.h"
>   /**
>    * TEST: kms tv load detect
>    * Category: Display
>    * Description: Test to check tv load detection.
> - *
> + */
> +
> +#include "igt.h"
> +
> +/**
>    * SUBTEST: load-detect
>    * Description: Check tv load detection works correctly.
>    * Driver requirement: i915, xe
> diff --git a/tests/kms_universal_plane.c b/tests/kms_universal_plane.c
> index 7178bebc0..b79b3d3e3 100644
> --- a/tests/kms_universal_plane.c
> +++ b/tests/kms_universal_plane.c
> @@ -21,6 +21,12 @@
>    * IN THE SOFTWARE.
>    */
>   
> +/**
> + * TEST: kms universal plane
> + * Category: Display
> + * Description: Check pageflip & modeset on universal plane
> + */
> +
>   #include "igt.h"
>   #include <errno.h>
>   #include <stdbool.h>
> @@ -29,10 +35,6 @@
>   #include <fcntl.h>
>   
>   /**
> - * TEST: kms universal plane
> - * Category: Display
> - * Description: Check pageflip & modeset on universal plane
> - *
>    * SUBTEST: cursor-fb-leak
>    * Description: Check for cursor leaks after performing cursor operations
>    * Driver requirement: i915, xe
> @@ -54,9 +56,7 @@
>    * Functionality: plane
>    * Mega feature: General Display Features
>    * Test category: functionality test
> - */
> -
> -/**
> + *
>    * SUBTEST: universal-plane-%s
>    * Description: Check %arg[1]
>    * Driver requirement: i915, xe
> diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
> index 549a959ad..5994e682c 100644
> --- a/tests/kms_vblank.c
> +++ b/tests/kms_vblank.c
> @@ -21,6 +21,12 @@
>    * IN THE SOFTWARE.
>    */
>   
> +/**
> + * TEST: kms vblank
> + * Category: Display
> + * Description: Test speed of WaitVblank.
> + */
> +
>   #include "igt.h"
>   #include <stdlib.h>
>   #include <stdio.h>
> @@ -35,11 +41,8 @@
>   #include <sys/wait.h>
>   
>   #include <drm.h>
> +
>   /**
> - * TEST: kms vblank
> - * Category: Display
> - * Description: Test speed of WaitVblank.
> - *
>    * SUBTEST: crtc-id
>    * Description: Check the vblank and flip events works with given crtc id
>    * Driver requirement: i915, xe
> @@ -53,9 +56,7 @@
>    * Functionality: vblank
>    * Mega feature: General Display Features
>    * Test category: functionality test
> - */
> -
> -/**
> + *
>    * SUBTEST: ts-continuation-dpms-rpm
>    * Description: Test TS continuty with DPMS & RPM while hanging by introducing
>    *              NOHANG flag
> @@ -63,9 +64,7 @@
>    * Functionality: dpms, hang, rpm, vblank
>    * Mega feature: General Display Features
>    * Test category: functionality test
> - */
> -
> -/**
> + *
>    * SUBTEST: ts-continuation-dpms-suspend
>    * Description: Test TS continuty with DPMS & Suspend while hanging by introducing
>    *              NOHANG flag
> @@ -73,9 +72,7 @@
>    * Functionality: dpms, hang, suspend, vblank
>    * Mega feature: General Display Features
>    * Test category: functionality test
> - */
> -
> -/**
> + *
>    * SUBTEST: ts-continuation-suspend
>    * Description: Test TS continuty with Suspend while hanging by introducing NOHANG
>    *              flag
> @@ -83,9 +80,7 @@
>    * Functionality: hang, suspend, vblank
>    * Mega feature: General Display Features
>    * Test category: functionality test
> - */
> -
> -/**
> + *
>    * SUBTEST: ts-continuation-modeset-rpm
>    * Description: Test TS continuty during Modeset with Suspend while hanging by
>    *              introducing NOHANG flag
> @@ -93,9 +88,7 @@
>    * Functionality: hang, rpm, vblank
>    * Mega feature: General Display Features
>    * Test category: functionality test
> - */
> -
> -/**
> + *
>    * SUBTEST: accuracy-idle
>    * Description: Test Accuracy of vblank events while hanging by introducing NOHANG
>    *              flag
> diff --git a/tests/kms_vrr.c b/tests/kms_vrr.c
> index f26adbccf..23aebb0f2 100644
> --- a/tests/kms_vrr.c
> +++ b/tests/kms_vrr.c
> @@ -20,15 +20,18 @@
>    * OTHER DEALINGS IN THE SOFTWARE.
>    */
>   
> +/**
> + * TEST: kms vrr
> + * Category: Display
> + * Description: Test to validate diffent features of VRR
> + */
> +
>   #include "igt.h"
>   #include "sw_sync.h"
>   #include <fcntl.h>
>   #include <signal.h>
> +
>   /**
> - * TEST: kms vrr
> - * Category: Display
> - * Description: Test to validate diffent features of VRR
> - *
>    * SUBTEST: flip-basic
>    * Description: Tests that VRR is enabled and that the difference between flip
>    *              timestamps converges to the requested rate
> diff --git a/tests/kms_writeback.c b/tests/kms_writeback.c
> index 25b49eccd..6b436b7ab 100644
> --- a/tests/kms_writeback.c
> +++ b/tests/kms_writeback.c
> @@ -22,6 +22,15 @@
>    *
>    */
>   
> +/**
> + * TEST: kms writeback
> + * Category: Display
> + * Description: This test validates the expected behavior of the writeback
> + *              connectors feature by checking if the target device support
> + *              writeback; it validates bad and good combination, check color
> + *              format, and check the output result by using CRC.
> + */
> +
>   #include <errno.h>
>   #include <stdbool.h>
>   #include <stdio.h>
> @@ -32,14 +41,8 @@
>   #include "igt_core.h"
>   #include "igt_fb.h"
>   #include "sw_sync.h"
> +
>   /**
> - * TEST: kms writeback
> - * Category: Display
> - * Description: This test validates the expected behavior of the writeback
> - *              connectors feature by checking if the target device support
> - *              writeback; it validates bad and good combination, check color
> - *              format, and check the output result by using CRC.
> - *
>    * SUBTEST: writeback-check-output-XRGB2101010
>    * Description: Check XRGB2101010 writeback output with CRC validation
>    * Functionality: kms_core
> diff --git a/tests/testdisplay.c b/tests/testdisplay.c
> index 42218210f..109ed496a 100644
> --- a/tests/testdisplay.c
> +++ b/tests/testdisplay.c
> @@ -45,6 +45,13 @@
>    *  - DP commands (e.g. poweroff)
>    * - verify outputs against VBT/physical connectors
>    */
> +
> +/**
> + * TEST: testdisplay
> + * Category: Display
> + * Description: Tests basic display functionality.
> + */
> +
>   #include "config.h"
>   
>   #include "igt.h"
> @@ -70,10 +77,6 @@
>   #include <signal.h>
>   
>   /**
> - * TEST: testdisplay
> - * Category: Display
> - * Description: Tests basic display functionality.
> - *
>    * SUBTEST:
>    * Description: This test is intended for testing of display functionality like
>    *              modeset, clone modes, test patterns & pixel generators etc..
> @@ -82,6 +85,7 @@
>    * Mega feature: General Display Features
>    * Test category: functionality test
>    */
> +
>   IGT_TEST_DESCRIPTION("Tests basic display functionality.");
>   
>   enum {

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [igt-dev] [i-g-t 2/5] tests/kms/testplan: Regroup testplan documentation
  2023-11-24  9:35 ` [igt-dev] [i-g-t 2/5] tests/kms/testplan: Regroup testplan documentation Bhanuprakash Modem
@ 2023-11-24 17:08   ` Sharma, Swati2
  0 siblings, 0 replies; 15+ messages in thread
From: Sharma, Swati2 @ 2023-11-24 17:08 UTC (permalink / raw)
  To: Bhanuprakash Modem, igt-dev

LGTM

Reviewed-by: Swati Sharma <swati2.sharma@intel.com>

On 24-Nov-23 3:05 PM, Bhanuprakash Modem wrote:
> For redability purpose, re-group testplan documentation.
> 
> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> ---
>   tests/intel/kms_big_fb.c   |  46 +++++----------
>   tests/intel/kms_busy.c     |  33 ++++++-----
>   tests/intel/kms_draw_crc.c |  16 +++--
>   tests/kms_atomic.c         |  75 ++++++++++--------------
>   tests/kms_cursor_legacy.c  |   7 ---
>   tests/kms_flip.c           | 116 ++++++++++++++++---------------------
>   tests/kms_plane.c          |  16 +++--
>   tests/kms_rotation_crc.c   |  16 +++--
>   8 files changed, 133 insertions(+), 192 deletions(-)
> 
> diff --git a/tests/intel/kms_big_fb.c b/tests/intel/kms_big_fb.c
> index 2fb435ff4..cce7027e9 100644
> --- a/tests/intel/kms_big_fb.c
> +++ b/tests/intel/kms_big_fb.c
> @@ -141,51 +141,33 @@
>    */
>   
>   /**
> - * SUBTEST: %s-addfb-size-overflow
> - * Description: Sanity check if addfb ioctl fails correctly for (%arg[1]) modifier
> - *              with small bo.
> + * SUBTEST: linear-addfb
> + * Description: Sanity check if addfb ioctl works correctly with Linear modifier
> + *              for given size and strides of fb
>    * Driver requirement: i915, xe
> - * Functionality: big_fbs, kms_gem_interop, tiling
> + * Functionality: big_fbs, kms_gem_interop
>    * Mega feature: General Display Features
>    * Test category: functionality test
>    *
> - * arg[1]:
> - *
> - * @4-tiled:    TILE-4
> - * @x-tiled:    TILE-X
> - * @y-tiled:    TILE-Y
> - * @yf-tiled:   TILE-YF
> - */
> -
> -/**
> - * SUBTEST: %s-addfb-size-offset-overflow
> - * Description: Sanity check if addfb ioctl fails correctly for (%arg[1]) modifier
> - *              and offsets with small bo
> + * SUBTEST: %s-addfb
> + * Description: Sanity check if addfb ioctl works correctly with %arg[1] modifier
> + *              for given size and strides of fb
>    * Driver requirement: i915, xe
>    * Functionality: big_fbs, kms_gem_interop, tiling
>    * Mega feature: General Display Features
>    * Test category: functionality test
>    *
> - * arg[1]:
> - *
> - * @4-tiled:    TILE-4
> - * @x-tiled:    TILE-X
> - * @y-tiled:    TILE-Y
> - * @yf-tiled:   TILE-YF
> - */
> -
> -/**
> - * SUBTEST: linear-addfb
> - * Description: Sanity check if addfb ioctl works correctly with Linear modifier
> - *              for given size and strides of fb
> + * SUBTEST: %s-addfb-size-overflow
> + * Description: Sanity check if addfb ioctl fails correctly for (%arg[1]) modifier
> + *              with small bo.
>    * Driver requirement: i915, xe
> - * Functionality: big_fbs, kms_gem_interop
> + * Functionality: big_fbs, kms_gem_interop, tiling
>    * Mega feature: General Display Features
>    * Test category: functionality test
>    *
> - * SUBTEST: %s-addfb
> - * Description: Sanity check if addfb ioctl works correctly with %arg[1] modifier
> - *              for given size and strides of fb
> + * SUBTEST: %s-addfb-size-offset-overflow
> + * Description: Sanity check if addfb ioctl fails correctly for (%arg[1]) modifier
> + *              and offsets with small bo
>    * Driver requirement: i915, xe
>    * Functionality: big_fbs, kms_gem_interop, tiling
>    * Mega feature: General Display Features
> diff --git a/tests/intel/kms_busy.c b/tests/intel/kms_busy.c
> index c65d71b19..63d1bbf71 100644
> --- a/tests/intel/kms_busy.c
> +++ b/tests/intel/kms_busy.c
> @@ -48,25 +48,14 @@
>    * Functionality: kms_core, hang
>    * Mega feature: General Display Features
>    * Test category: functionality test
> - */
> -
> -/**
> - * SUBTEST: extended-modeset-hang-%s
> + *
> + * SUBTEST: extended-pageflip-modeset-hang-oldfb
>    * Description: Test for basic check of KMS ABI with busy framebuffers.
>    * Driver requirement: i915
>    * Functionality: kms_core, hang
>    * Mega feature: General Display Features
>    * Test category: functionality test
>    *
> - * arg[1]:
> - *
> - * @newfb:                New framebuffer
> - * @oldfb:                Old framebuffer
> - * @newfb-with-reset:     New framebuffer with reset
> - * @oldfb-with-reset:     Old framebuffer with reset
> - */
> -
> -/**
>    * SUBTEST: extended-pageflip-hang-%s
>    * Description: Test for basic check of KMS ABI with busy framebuffers.
>    * Driver requirement: i915
> @@ -74,19 +63,31 @@
>    * Mega feature: General Display Features
>    * Test category: functionality test
>    *
> + * SUBTEST: extended-modeset-hang-%s
> + * Description: Test for basic check of KMS ABI with busy framebuffers.
> + * Driver requirement: i915
> + * Functionality: kms_core, hang
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
>    * arg[1]:
>    *
> - * @newfb:     New framebuffer
> - * @oldfb:     Old framebuffer
> + * @newfb:                New framebuffer
> + * @oldfb:                Old framebuffer
>    */
>   
>   /**
> - * SUBTEST: extended-pageflip-modeset-hang-oldfb
> + * SUBTEST: extended-modeset-hang-%s
>    * Description: Test for basic check of KMS ABI with busy framebuffers.
>    * Driver requirement: i915
>    * Functionality: kms_core, hang
>    * Mega feature: General Display Features
>    * Test category: functionality test
> + *
> + * arg[1]:
> + *
> + * @newfb-with-reset:     New framebuffer with reset
> + * @oldfb-with-reset:     Old framebuffer with reset
>    */
>   
>   IGT_TEST_DESCRIPTION("Basic check of KMS ABI with busy framebuffers.");
> diff --git a/tests/intel/kms_draw_crc.c b/tests/intel/kms_draw_crc.c
> index 7cd4c3ff1..b9d9cd6e4 100644
> --- a/tests/intel/kms_draw_crc.c
> +++ b/tests/intel/kms_draw_crc.c
> @@ -32,6 +32,13 @@
>   #include "igt.h"
>   
>   /**
> + * SUBTEST: fill-fb
> + * Description: This subtest verifies CRC after filling fb with x-tiling or none.
> + * Driver requirement: i915, xe
> + * Functionality: kms_core, tiling
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
>    * SUBTEST: draw-method-%s
>    * Description: Verify that igt draw library works for the %arg[1] method with
>    *              different modifiers & DRM formats.
> @@ -63,15 +70,6 @@
>    * @pwrite:       PWRITE
>    */
>   
> -/**
> - * SUBTEST: fill-fb
> - * Description: This subtest verifies CRC after filling fb with x-tiling or none.
> - * Driver requirement: i915, xe
> - * Functionality: kms_core, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
> -
>   #define MAX_CONNECTORS 32
>   
>   int drm_fd;
> diff --git a/tests/kms_atomic.c b/tests/kms_atomic.c
> index 28af27f22..9b69fc892 100644
> --- a/tests/kms_atomic.c
> +++ b/tests/kms_atomic.c
> @@ -49,6 +49,30 @@
>   #include "sw_sync.h"
>   
>   /**
> + * SUBTEST: atomic-invalid-params
> + * Description: Test abuse the atomic ioctl directly in order to test various
> + *              invalid conditions which the libdrm wrapper won't allow us to
> + *              create.
> + * Driver requirement: i915, xe
> + * Functionality: kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: atomic-plane-damage
> + * Description: Simple test cases to use FB_DAMAGE_CLIPS plane property
> + * Driver requirement: i915, xe
> + * Functionality: kms_core, plane
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
> + * SUBTEST: test-only
> + * Description: Test to ensure that DRM_MODE_ATOMIC_TEST_ONLY really only touches
> + *              the free-standing state objects and nothing else.
> + * Driver requirement: i915, xe
> + * Functionality: kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
>    * SUBTEST: plane-primary-overlay-mutable-zpos
>    * Description: Verify that the overlay plane can cover the primary one (and
>    *              vice versa) by changing their zpos property.
> @@ -81,18 +105,8 @@
>    */
>   
>   /**
> - * SUBTEST: test-only
> - * Description: Test to ensure that DRM_MODE_ATOMIC_TEST_ONLY really only touches
> - *              the free-standing state objects and nothing else.
> - * Driver requirement: i915, xe
> - * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
> -
> -/**
> - * SUBTEST: plane-invalid-%s
> - * Description: Test error handling when invalid %arg[1] are passed
> + * SUBTEST: %s-invalid-%s
> + * Description: Test error handling when invalid %arg[1] %arg[2] are passed
>    * Driver requirement: i915, xe
>    * Functionality: kms_core, plane
>    * Mega feature: General Display Features
> @@ -100,41 +114,16 @@
>    *
>    * arg[1]:
>    *
> - * @params:           plane parameters
> - * @params-fence:     plane fence parameters
> - */
> -
> -/**
> - * SUBTEST: crtc-invalid-%s
> - * Description: Test error handling when invalid %arg[1] are passed
> - * Driver requirement: i915, xe
> - * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> + * @crtc:             CRTC
> + * @plane:            Plane
>    *
> - * arg[1]:
> + * arg[2]:
>    *
> - * @params:           crtc parameters
> - * @params-fence:     crtc fence parameters
> + * @params:           parameters
> + * @params-fence:     fence parameters
>    */
>   
> -/**
> - * SUBTEST: atomic-invalid-params
> - * Description: Test abuse the atomic ioctl directly in order to test various
> - *              invalid conditions which the libdrm wrapper won't allow us to
> - *              create.
> - * Driver requirement: i915, xe
> - * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: atomic-plane-damage
> - * Description: Simple test cases to use FB_DAMAGE_CLIPS plane property
> - * Driver requirement: i915, xe
> - * Functionality: kms_core, plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
> +
>   
>   #ifndef DRM_CAP_CURSOR_WIDTH
>   #define DRM_CAP_CURSOR_WIDTH 0x8
> diff --git a/tests/kms_cursor_legacy.c b/tests/kms_cursor_legacy.c
> index 6a4955ef1..2e2710ae4 100644
> --- a/tests/kms_cursor_legacy.c
> +++ b/tests/kms_cursor_legacy.c
> @@ -257,13 +257,6 @@
>    * Mega feature: General Display Features
>    * Test category: functionality test
>    *
> - * arg[1]:
> - *
> - * @atomic:
> - * @legacy:
> - */
> -
> -/**
>    * SUBTEST: flip-vs-cursor-busy-crc-%s
>    * Description: this test perform a busy bo update followed by a cursor update
>    * Driver requirement: i915, xe
> diff --git a/tests/kms_flip.c b/tests/kms_flip.c
> index 798103682..9afb78757 100755
> --- a/tests/kms_flip.c
> +++ b/tests/kms_flip.c
> @@ -55,63 +55,53 @@
>   #include "xe/xe_query.h"
>   
>   /**
> - * SUBTEST: 2x-flip-vs-fences
> - * Description: Test to validate pageflips along with avialable fences on a pair
> - *              of connected displays
> + * SUBTEST: %s
> + * Description: %arg[1] test to validate pageflips with available fences
>    * Driver requirement: i915
>    * Functionality: gtt, vblank
>    * Mega feature: General Display Features
>    * Test category: functionality test
>    *
> - * SUBTEST: 2x-flip-vs-fences-interruptible
> - * Description: Interrupt test to validate pageflips along with available fences
> + * SUBTEST: 2x-%s
> + * Description: %arg[1] test to validate pageflips along with available fences
>    *              on a pair of connected displays
> - * Driver requirement: i915, xe
> - * Functionality: gtt, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: flip-vs-fences
> - * Description: Basic test to validate pageflips with avialable fences
>    * Driver requirement: i915
>    * Functionality: gtt, vblank
>    * Mega feature: General Display Features
>    * Test category: functionality test
>    *
> - * SUBTEST: flip-vs-fences-interruptible
> - * Description: Interrupt test to validate pageflips with available fences
> - * Driver requirement: i915
> - * Functionality: gtt, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
> + * arg[1]:
>    *
> - * SUBTEST: dpms-off-confusion
> - * Description: Basic test to validate pageflips by disabling other connectors usng dpms
> + * @flip-vs-fences:                 Basic
> + * @flip-vs-fences-interruptible:   Interrupt
> + */
> +
> +/**
> + * SUBTEST: dpms-off-%s
> + * Description: %arg[1] test to validate pageflips by disabling other connectors usng dpms
>    * Driver requirement: i915, xe
>    * Functionality: dpms, vblank
>    * Mega feature: General Display Features
>    * Test category: functionality test
>    *
> - * SUBTEST: dpms-off-confusion-interruptible
> - * Description: Interrupt test to validate pageflips by disabling other connectors using dpms
> - * Driver requirement: i915, xe
> - * Functionality: dpms, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
> + * arg[1]:
>    *
> - * SUBTEST: bo-too-big
> - * Description: Basic test to validate pageflips with large BO in size
> + * @confusion:                      Basic
> + * @confusion-interruptible:        Interrupt
> + */
> +
> +/**
> + * SUBTEST: %s
> + * Description: %arg[1] test to validate pageflips with large BO in size
>    * Driver requirement: i915, xe
>    * Functionality: kms_gem_interop, vblank
>    * Mega feature: General Display Features
>    * Test category: functionality test
>    *
> - * SUBTEST: bo-too-big-interruptible
> - * Description: Interrupt test to validate pageflips with large BO in size
> - * Driver requirement: i915, xe
> - * Functionality: kms_gem_interop, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
> + * arg[1]:
> + *
> + * @bo-too-big:                     Basic
> + * @bo-too-big-interruptible:       Interrupt
>    */
>   
>   /**
> @@ -169,36 +159,28 @@
>    */
>   
>   /**
> - * SUBTEST: flip-vs-suspend
> - * Description: Basic test to validate pageflips with suspend cycle
> - * Driver requirement: i915, xe
> - * Functionality: suspend, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: 2x-flip-vs-suspend
> - * Description: Basic test to validate pageflips with suspend cycle on a pair of
> - *              connected displays
> - * Driver requirement: i915, xe
> - * Functionality: suspend, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - *
> - * SUBTEST: flip-vs-suspend-interruptible
> - * Description: Interrupt test to validate pageflips with suspend cycle
> + * SUBTEST: %s
> + * Description: %arg[1] test to validate pageflips with suspend cycle
>    * Driver requirement: i915, xe
>    * Functionality: suspend, vblank
>    * Mega feature: General Display Features
>    * Test category: functionality test
>    *
> - * SUBTEST: 2x-flip-vs-suspend-interruptible
> - * Description: Interrupt test to validate pageflips with suspend cycle on a pair
> + * SUBTEST: 2x-%s
> + * Description: %arg[1] test to validate pageflips with suspend cycle on a pair
>    *              of connected displays
>    * Driver requirement: i915, xe
>    * Functionality: suspend, vblank
>    * Mega feature: General Display Features
>    * Test category: functionality test
>    *
> + * arg[1]:
> + *
> + * @flip-vs-suspend:                   Basic
> + * @flip-vs-suspend-interruptible:     Interrupt
> + */
> +
> +/**
>    * SUBTEST: %s
>    * Description: Basic test to validate %arg[1]
>    * Driver requirement: i915, xe
> @@ -293,6 +275,20 @@
>    */
>   
>   /**
> + * SUBTEST: basic-plain-flip
> + * Description: Basic test for validating page flip
> + * Driver requirement: i915, xe
> + * Test category: functionality test
> + * Functionality: vblank
> + * Mega feature: General Display Features
> + *
> + * SUBTEST: nonblocking-read
> + * Description: Tests that nonblocking reading fails correctly
> + * Driver requirement: i915, xe
> + * Functionality: vblank
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
>    * SUBTEST: basic-flip-vs-dpms
>    * Description: Basic test to valide pageflip with dpms
>    * Driver requirement: i915, xe
> @@ -311,20 +307,6 @@
>    *
>    * @modeset:      modeset
>    * @wf_vblank:    wait for vblank
> - *
> - * SUBTEST: basic-plain-flip
> - * Description: Basic test for validating page flip
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: vblank
> - * Mega feature: General Display Features
> - *
> - * SUBTEST: nonblocking-read
> - * Description: Tests that nonblocking reading fails correctly
> - * Driver requirement: i915, xe
> - * Functionality: vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    */
>   
>   #define TEST_DPMS		(1 << 0)
> diff --git a/tests/kms_plane.c b/tests/kms_plane.c
> index 17550e168..29cf45974 100644
> --- a/tests/kms_plane.c
> +++ b/tests/kms_plane.c
> @@ -39,6 +39,13 @@
>   #include "xe/xe_query.h"
>   
>   /**
> + * SUBTEST: planar-pixel-format-settings
> + * Description: verify planar settings for pixel format are handled correctly
> + * Driver requirement: i915, xe
> + * Functionality: pixel_format, plane
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + *
>    * SUBTEST: plane-position-%s
>    * Description: Verify plane position using two planes to create a %arg[1]
>    * Driver requirement: i915, xe
> @@ -96,15 +103,6 @@
>    * @format-source-clamping:          with source clamping
>    */
>   
> -/**
> - * SUBTEST: planar-pixel-format-settings
> - * Description: verify planar settings for pixel format are handled correctly
> - * Driver requirement: i915, xe
> - * Functionality: pixel_format, plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
> -
>   /*
>    * Throw away enough lsbs in pixel formats tests
>    * to get a match despite some differences between
> diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c
> index b2e877a4b..bb082af68 100644
> --- a/tests/kms_rotation_crc.c
> +++ b/tests/kms_rotation_crc.c
> @@ -77,6 +77,13 @@
>    * Functionality: plane, rotation, tiling
>    * Mega feature: General Display Features
>    * Test category: functionality test
> + *
> + * SUBTEST: exhaust-fences
> + * Description: This test intends to check for fence leaks exhaustively
> + * Driver requirement: i915
> + * Functionality: plane, rotation
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   /**
> @@ -142,15 +149,6 @@
>    * @top:      top
>    */
>   
> -/**
> - * SUBTEST: exhaust-fences
> - * Description: This test intends to check for fence leaks exhaustively
> - * Driver requirement: i915
> - * Functionality: plane, rotation
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
> -
>   #define MAX_FENCES 32
>   #define MAXMULTIPLANESAMOUNT 2
>   #define TEST_MAX_WIDTH 640

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [igt-dev] [i-g-t 3/5] tests/kms/testplan: Optimize KMS testplan documentation
  2023-11-24  9:36 ` [igt-dev] [i-g-t 3/5] tests/kms/testplan: Optimize KMS " Bhanuprakash Modem
@ 2023-11-24 17:08   ` Sharma, Swati2
  0 siblings, 0 replies; 15+ messages in thread
From: Sharma, Swati2 @ 2023-11-24 17:08 UTC (permalink / raw)
  To: Bhanuprakash Modem, igt-dev

LGTM

Reviewed-by: Swati Sharma <swati2.sharma@intel.com>

On 24-Nov-23 3:06 PM, Bhanuprakash Modem wrote:
> Moving all common key:values to TEST level from SUBTEST will
> minimize the maintenance effort.
> 
> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> ---
>   tests/chamelium/kms_chamelium_audio.c  |  10 +-
>   tests/chamelium/kms_chamelium_color.c  |  16 +-
>   tests/chamelium/kms_chamelium_edid.c   |  22 +-
>   tests/chamelium/kms_chamelium_frames.c |  33 +-
>   tests/chamelium/kms_chamelium_hpd.c    |  69 +--
>   tests/intel/kms_big_fb.c               |  33 +-
>   tests/intel/kms_big_joiner.c           |  16 +-
>   tests/intel/kms_busy.c                 |  27 +-
>   tests/intel/kms_ccs.c                  |  15 +-
>   tests/intel/kms_cdclk.c                |  16 +-
>   tests/intel/kms_draw_crc.c             |  15 +-
>   tests/intel/kms_dsc.c                  |   8 +-
>   tests/intel/kms_fbcon_fbt.c            |  10 +-
>   tests/intel/kms_flip_scaled_crc.c      |  70 +---
>   tests/intel/kms_frontbuffer_tracking.c | 559 +------------------------
>   tests/intel/kms_legacy_colorkey.c      |  12 +-
>   tests/intel/kms_pipe_b_c_ivb.c         |  24 +-
>   tests/intel/kms_pm_backlight.c         |  22 +-
>   tests/intel/kms_pm_dc.c                |  29 +-
>   tests/intel/kms_pm_lpsp.c              |  11 +-
>   tests/intel/kms_pm_rpm.c               |   4 +
>   tests/intel/kms_psr.c                  |  73 +---
>   tests/intel/kms_psr2_sf.c              |  36 +-
>   tests/intel/kms_psr2_su.c              |   9 +-
>   tests/intel/kms_psr_stress_test.c      |  12 +-
>   tests/kms_addfb_basic.c                |  99 +----
>   tests/kms_async_flips.c                |  26 +-
>   tests/kms_atomic.c                     |  32 +-
>   tests/kms_atomic_interruptible.c       |  18 +-
>   tests/kms_atomic_transition.c          |  30 +-
>   tests/kms_bw.c                         |   8 +-
>   tests/kms_color.c                      |  32 +-
>   tests/kms_content_protection.c         |  29 +-
>   tests/kms_cursor_crc.c                 |  18 +-
>   tests/kms_cursor_edge_walk.c           |   9 +-
>   tests/kms_cursor_legacy.c              |  68 +--
>   tests/kms_display_modes.c              |   9 +-
>   tests/kms_dither.c                     |  12 +-
>   tests/kms_feature_discovery.c          |  21 +-
>   tests/kms_flip.c                       |  78 +---
>   tests/kms_force_connector_basic.c      |  18 +-
>   tests/kms_getfb.c                      |  30 +-
>   tests/kms_hdmi_inject.c                |   9 +-
>   tests/kms_hdr.c                        |  32 +-
>   tests/kms_invalid_mode.c               |   8 +-
>   tests/kms_lease.c                      |  88 +---
>   tests/kms_panel_fitting.c              |  12 +-
>   tests/kms_pipe_crc_basic.c             |  37 +-
>   tests/kms_plane.c                      |  21 +-
>   tests/kms_plane_alpha_blend.c          |  20 +-
>   tests/kms_plane_cursor.c               |  16 +-
>   tests/kms_plane_lowres.c               |  11 +-
>   tests/kms_plane_multiple.c             |  11 +-
>   tests/kms_plane_scaling.c              |  84 +---
>   tests/kms_prime.c                      |  15 +-
>   tests/kms_prop_blob.c                  |  20 +-
>   tests/kms_properties.c                 |  12 +-
>   tests/kms_rmfb.c                       |  12 +-
>   tests/kms_rotation_crc.c               |  41 +-
>   tests/kms_scaling_modes.c              |   8 +-
>   tests/kms_selftest.c                   |   8 +-
>   tests/kms_sequence.c                   |  12 +-
>   tests/kms_setmode.c                    |  27 +-
>   tests/kms_tiled_display.c              |   9 +-
>   tests/kms_universal_plane.c            |  19 +-
>   tests/kms_vblank.c                     |  30 +-
>   tests/kms_vrr.c                        |  22 +-
>   tests/kms_writeback.c                  |  26 +-
>   68 files changed, 255 insertions(+), 2043 deletions(-)
> 
> diff --git a/tests/chamelium/kms_chamelium_audio.c b/tests/chamelium/kms_chamelium_audio.c
> index f86610861..cc2c23a76 100644
> --- a/tests/chamelium/kms_chamelium_audio.c
> +++ b/tests/chamelium/kms_chamelium_audio.c
> @@ -28,6 +28,8 @@
>    * TEST: kms chamelium audio
>    * Category: Display
>    * Description: Testing Audio with a Chamelium board
> + * Driver requirement: i915, xe
> + * Test category: functionality test
>    */
>   
>   #include "igt_eld.h"
> @@ -38,34 +40,26 @@
>    * SUBTEST: dp-audio
>    * Description: Playback various audio signals with various audio formats/rates,
>    *              capture them and check they are correct
> - * Driver requirement: i915, xe
>    * Functionality: chamelium, dp_audio
>    * Mega feature: Audio, DP
> - * Test category: functionality test
>    *
>    * SUBTEST: hdmi-audio
>    * Description: Playback various audio signals with various audio formats/rates,
>    *              capture them and check they are correct
> - * Driver requirement: i915, xe
>    * Functionality: chamelium, hdmi_audio
>    * Mega feature: Audio, HDMI
> - * Test category: functionality test
>    *
>    * SUBTEST: dp-audio-edid
>    * Description: Plug a connector with an EDID suitable for audio, check ALSA's
>    *              EDID-Like Data reports the correct audio parameters
> - * Driver requirement: i915, xe
>    * Functionality: chamelium, dp_audio
>    * Mega feature: Audio, DP
> - * Test category: functionality test
>    *
>    * SUBTEST: hdmi-audio-edid
>    * Description: Plug a connector with an EDID suitable for audio, check ALSA's
>    *              EDID-Like Data reports the correct audio parameters
> - * Driver requirement: i915, xe
>    * Functionality: chamelium, hdmi_audio
>    * Mega feature: Audio, HDMI
> - * Test category: functionality test
>    */
>   
>   /* Playback parameters control the audio signal we synthesize and send */
> diff --git a/tests/chamelium/kms_chamelium_color.c b/tests/chamelium/kms_chamelium_color.c
> index 6123e8a5f..e94e13e40 100644
> --- a/tests/chamelium/kms_chamelium_color.c
> +++ b/tests/chamelium/kms_chamelium_color.c
> @@ -26,6 +26,10 @@
>    * TEST: kms chamelium color
>    * Category: Display
>    * Description: Test Color Features at Pipe level using Chamelium to verify instead of CRC
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, colorspace
> + * Mega feature: Color mgmt
> + * Test category: functionality test
>    */
>   
>   #include "kms_color_helper.h"
> @@ -33,24 +37,12 @@
>   /**
>    * SUBTEST: degamma
>    * Description: Verify that degamma LUT transformation works correctly
> - * Driver requirement: i915, xe
> - * Functionality: chamelium, colorspace
> - * Mega feature: Color mgmt
> - * Test category: functionality test
>    *
>    * SUBTEST: gamma
>    * Description: Verify that gamma LUT transformation works correctly
> - * Driver requirement: i915, xe
> - * Functionality: chamelium, colorspace
> - * Mega feature: Color mgmt
> - * Test category: functionality test
>    *
>    * SUBTEST: ctm-%s
>    * Description: Check the color transformation %arg[1]
> - * Driver requirement: i915, xe
> - * Functionality: chamelium, colorspace
> - * Mega feature: Color mgmt
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> diff --git a/tests/chamelium/kms_chamelium_edid.c b/tests/chamelium/kms_chamelium_edid.c
> index f3f0b1e50..6550b7b74 100644
> --- a/tests/chamelium/kms_chamelium_edid.c
> +++ b/tests/chamelium/kms_chamelium_edid.c
> @@ -28,6 +28,8 @@
>    * TEST: kms chamelium edid
>    * Category: Display
>    * Description: Testing EDID with a Chamelium board
> + * Driver requirement: i915, xe
> + * Test category: functionality test
>    */
>   
>   #include <fcntl.h>
> @@ -51,22 +53,16 @@
>   /**
>    * SUBTEST: dp-edid-read
>    * Description: Make sure the EDID exposed by KMS is the same as the screen's
> - * Driver requirement: i915, xe
> - * Test category: functionality test
>    * Functionality: chamelium, dp_edid
>    * Mega feature: DP
>    *
>    * SUBTEST: hdmi-edid-read
>    * Description: Make sure the EDID exposed by KMS is the same as the screen's
> - * Driver requirement: i915, xe
> - * Test category: functionality test
>    * Functionality: chamelium, hdmi_edid
>    * Mega feature: HDMI
>    *
>    * SUBTEST: vga-edid-read
>    * Description: Make sure the EDID exposed by KMS is the same as the screen's
> - * Driver requirement: i915, xe
> - * Test category: functionality test
>    * Functionality: chamelium, vga_edid
>    * Mega feature: VGA
>    *
> @@ -74,28 +70,22 @@
>    * Description: Get an EDID with many modes of different configurations, set
>    *              them on the screen and check the screen resolution matches the
>    *              mode resolution.
> - * Driver requirement: i915, xe
>    * Functionality: chamelium, dp_edid
>    * Mega feature: DP
> - * Test category: functionality test
>    *
>    * SUBTEST: dp-mode-timings
>    * Description: For each mode of the IGT base EDID, perform a modeset and check
>    *              the mode detected by the Chamelium receiver matches the mode we
>    *              set
> - * Driver requirement: i915, xe
>    * Functionality: chamelium, dp_edid
>    * Mega feature: DP
> - * Test category: functionality test
>    *
>    * SUBTEST: hdmi-mode-timings
>    * Description: For each mode of the IGT base EDID, perform a modeset and check
>    *              the mode detected by the Chamelium receiver matches the mode we
>    *              set
> - * Driver requirement: i915, xe
>    * Functionality: chamelium, dp_edid
>    * Mega feature: DP
> - * Test category: functionality test
>    */
>   
>   /**
> @@ -103,19 +93,15 @@
>    * Description: Stress test the DUT by testing multiple EDIDs, one right after
>    *              the other, and ensure their validity by check the real screen
>    *              resolution vs the advertised mode (%arg[1]) resolution.
> - * Driver requirement: i915, xe
>    * Functionality: chamelium, dp_edid
>    * Mega feature: DP
> - * Test category: functionality test
>    *
>    * SUBTEST: hdmi-edid-stress-resolution-%s
>    * Description: Stress test the DUT by testing multiple EDIDs, one right after
>    *              the other, and ensure their validity by check the real screen
>    *              resolution vs the advertised mode (%arg[1]) resolution.
> - * Driver requirement: i915, xe
>    * Functionality: chamelium, hdmi_edid
>    * Mega feature: HDMI
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -128,19 +114,15 @@
>    * Description: Simulate a screen being unplugged and another screen being
>    *              plugged during suspend, check that a uevent is sent and
>    *              connector status is updated during %arg[1]
> - * Driver requirement: i915, xe
>    * Functionality: chamelium, dp_edid
>    * Mega feature: DP
> - * Test category: functionality test
>    *
>    * SUBTEST: hdmi-edid-change-during-%s
>    * Description: Simulate a screen being unplugged and another screen being
>    *              plugged during suspend, check that a uevent is sent and
>    *              connector status is updated during %arg[1]
> - * Driver requirement: i915, xe
>    * Functionality: chamelium, dp_edid
>    * Mega feature: DP
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> diff --git a/tests/chamelium/kms_chamelium_frames.c b/tests/chamelium/kms_chamelium_frames.c
> index 490ab3fe9..c14245a71 100644
> --- a/tests/chamelium/kms_chamelium_frames.c
> +++ b/tests/chamelium/kms_chamelium_frames.c
> @@ -28,6 +28,9 @@
>    * TEST: kms chamelium frames
>    * Category: Display
>    * Description: Tests requiring a Chamelium board
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, frame_integrity
> + * Test category: functionality test
>    */
>   
>   #include "igt_eld.h"
> @@ -38,26 +41,17 @@
>    * SUBTEST: dp-crc-fast
>    * Description: Pick the first mode of the IGT base EDID, display and capture
>    * 		a few frames, then check captured frames are correct
> - * Driver requirement: i915, xe
> - * Functionality: chamelium, frame_integrity
>    * Mega feature: DP
> - * Test category: functionality test
>    *
>    * SUBTEST: hdmi-crc-fast
>    * Description: Pick the first mode of the IGT base EDID, display and capture
>    * 		a few frames, then check captured frames are correct
> - * Driver requirement: i915, xe
> - * Functionality: chamelium, frame_integrity
>    * Mega feature: HDMI
> - * Test category: functionality test
>    *
>    * SUBTEST: hdmi-%s-formats
>    * Description: Pick the first mode of the IGT base EDID, display and capture a
>    *              few frames, then check captured frames are correct
> - * Driver requirement: i915, xe
> - * Functionality: chamelium, frame_integrity
>    * Mega feature: HDMI
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -69,26 +63,17 @@
>    * SUBTEST: vga-frame-dump
>    * Description: For each mode of the IGT base EDID, display and capture a few
>    *              frames, then check captured frames are correct
> - * Driver requirement: i915, xe
> - * Functionality: chamelium, frame_integrity
>    * Mega feature: VGA
> - * Test category: functionality test
>    *
>    * SUBTEST: dp-crc-%s
>    * Description: For each mode of the IGT base EDID, display and capture a %arg[1]
>    *              frame(s), then check captured frame(s) are correct
> - * Driver requirement: i915, xe
> - * Functionality: chamelium, frame_integrity
>    * Mega feature: DP
> - * Test category: functionality test
>    *
>    * SUBTEST: hdmi-crc-%s
>    * Description: For each mode of the IGT base EDID, display and capture a %arg[1]
>    *              frame(s), then check captured frame(s) are correct
> - * Driver requirement: i915, xe
> - * Functionality: chamelium, frame_integrity
>    * Mega feature: HDMI
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -101,35 +86,23 @@
>    * Description: For each mode of the IGT base EDID, display and capture a few
>    *              frames, then download the captured frames and compare them
>    *              bit-by-bit to the sent ones
> - * Driver requirement: i915, xe
> - * Functionality: chamelium, frame_integrity
>    * Mega feature: DP
> - * Test category: functionality test
>    *
>    * SUBTEST: hdmi-frame-dump
>    * Description: For each mode of the IGT base EDID, display and capture a few
>    *              frames, then download the captured frames and compare them
>    *              bit-by-bit to the sent ones
> - * Driver requirement: i915, xe
> - * Functionality: chamelium, frame_integrity
>    * Mega feature: HDMI
> - * Test category: functionality test
>    *
>    * SUBTEST: hdmi-aspect-ratio
>    * Description: Pick a mode with a picture aspect-ratio, capture AVI InfoFrames
>    *              and check they include the relevant fields
> - * Driver requirement: i915, xe
> - * Functionality: chamelium, frame_integrity
>    * Mega feature: HDMI
> - * Test category: functionality test
>    *
>    * SUBTEST: hdmi-%s-planes-random
>    * Description: Setup a few overlay planes with random parameters, capture the
>    *              frame and check it matches the expected output
> - * Driver requirement: i915, xe
> - * Functionality: chamelium, frame_integrity
>    * Mega feature: HDMI
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> diff --git a/tests/chamelium/kms_chamelium_hpd.c b/tests/chamelium/kms_chamelium_hpd.c
> index 360694c76..7e580e20e 100644
> --- a/tests/chamelium/kms_chamelium_hpd.c
> +++ b/tests/chamelium/kms_chamelium_hpd.c
> @@ -28,6 +28,9 @@
>    * TEST: kms chamelium hpd
>    * Category: Display
>    * Description: Testing HPD with a Chamelium board
> + * Driver requirement: i915, xe
> + * Functionality: chamelium, hotplug
> + * Test category: functionality test
>    */
>   
>   #include "kms_chamelium_helper.h"
> @@ -36,74 +39,47 @@
>    * SUBTEST: dp-hpd-fast
>    * Description: Check that we get uevents and updated connector status on
>    * 		hotplug and unplug
> - * Driver requirement: i915, xe
> - * Functionality: chamelium, hotplug
>    * Mega feature: DP
> - * Test category: functionality test
>    *
>    * SUBTEST: hdmi-hpd-fast
>    * Description: Check that we get uevents and updated connector status on
>    * 		hotplug and unplug
> - * Driver requirement: i915, xe
> - * Functionality: chamelium, hotplug
>    * Mega feature: HDMI
> - * Test category: functionality test
>    *
>    * SUBTEST: vga-hpd-fast
>    * Description: Check that we get uevents and updated connector status on
>    * 		hotplug and unplug
> - * Driver requirement: i915, xe
> - * Functionality: chamelium, hotplug
>    * Mega feature: VGA
> - * Test category: functionality test
>    *
>    * SUBTEST: dp-hpd
>    * Description: Check that we get uevents and updated connector status on
>    *              hotplug and unplug
> - * Driver requirement: i915, xe
> - * Functionality: chamelium, hotplug
>    * Mega feature: DP
> - * Test category: functionality test
>    *
>    * SUBTEST: hdmi-hpd
>    * Description: Check that we get uevents and updated connector status on
>    *              hotplug and unplug
> - * Driver requirement: i915, xe
> - * Functionality: chamelium, hotplug
>    * Mega feature: HDMI
> - * Test category: functionality test
>    *
>    * SUBTEST: vga-hpd
>    * Description: Check that we get uevents and updated connector status on
>    *              hotplug and unplug
> - * Driver requirement: i915, xe
> - * Functionality: chamelium, hotplug
>    * Mega feature: VGA
> - * Test category: functionality test
>    *
>    * SUBTEST: dp-hpd-%s
>    * Description: Check that we get uevents and updated connector status on
>    *              hotplug and unplug
> - * Driver requirement: i915, xe
> - * Functionality: chamelium, hotplug
>    * Mega feature: DP
> - * Test category: functionality test
>    *
>    * SUBTEST: hdmi-hpd-%s
>    * Description: Check that we get uevents and updated connector status on
>    *              hotplug and unplug
> - * Driver requirement: i915, xe
> - * Functionality: chamelium, hotplug
>    * Mega feature: HDMI
> - * Test category: functionality test
>    *
>    * SUBTEST: vga-hpd-%s
>    * Description: Check that we get uevents and updated connector status on
>    *              hotplug and unplug
> - * Driver requirement: i915, xe
> - * Functionality: chamelium, hotplug
>    * Mega feature: VGA
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -115,132 +91,93 @@
>    * SUBTEST: dp-hpd-for-each-pipe
>    * Description: Check that we get uevents and updated connector status on
>    *              hotplug and unplug for each pipe with valid output
> - * Driver requirement: i915, xe
> - * Functionality: chamelium, hotplug
>    * Mega feature: DP
> - * Test category: functionality test
>    *
>    * SUBTEST: hdmi-hpd-for-each-pipe
>    * Description: Check that we get uevents and updated connector status on
>    *              hotplug and unplug for each pipe with valid output
> - * Driver requirement: i915, xe
> - * Functionality: chamelium, hotplug
>    * Mega feature: HDMI
> - * Test category: functionality test
>    *
>    * SUBTEST: vga-hpd-for-each-pipe
>    * Description: Check that we get uevents and updated connector status on
>    *              hotplug and unplug for each pipe with valid output
> - * Driver requirement: i915, xe
> - * Functionality: chamelium, hotplug
>    * Mega feature: VGA
>    * Test category: functionality test
>    *
>    * SUBTEST: dp-hpd-after-hibernate
>    * Description: Toggle HPD during Hibernation, check that uevents are sent and
>    *              connector status is updated
> - * Driver requirement: i915, xe
>    * Functionality: chamelium, hotplug, hibernation
>    * Mega feature: DP
> - * Test category: functionality test
>    *
>    * SUBTEST: hdmi-hpd-after-hibernate
>    * Description: Toggle HPD during Hibernation, check that uevents are sent and
>    *              connector status is updated
> - * Driver requirement: i915, xe
>    * Functionality: chamelium, hotplug, hibernation
>    * Mega feature: HDMI
> - * Test category: functionality test
>    *
>    * SUBTEST: vga-hpd-after-hibernate
>    * Description: Toggle HPD during Hibernation, check that uevents are sent and
>    *              connector status is updated
> - * Driver requirement: i915, xe
>    * Functionality: chamelium, hotplug, hibernation
>    * Mega feature: VGA
> - * Test category: functionality test
>    *
>    * SUBTEST: dp-hpd-after-suspend
>    * Description: Toggle HPD during Suspend, check that uevents are sent and
>    *              connector status is updated
> - * Driver requirement: i915, xe
>    * Functionality: chamelium, hotplug, suspend
>    * Mega feature: DP
> - * Test category: functionality test
>    *
>    * SUBTEST: hdmi-hpd-after-suspend
>    * Description: Toggle HPD during Suspend, check that uevents are sent and
>    *              connector status is updated
> - * Driver requirement: i915, xe
>    * Functionality: chamelium, hotplug, suspend
>    * Mega feature: HDMI
> - * Test category: functionality test
>    *
>    * SUBTEST: vga-hpd-after-suspend
>    * Description: Toggle HPD during Suspend, check that uevents are sent and
>    *              connector status is updated
> - * Driver requirement: i915, xe
>    * Functionality: chamelium, hotplug, suspend
>    * Mega feature: VGA
> - * Test category: functionality test
>    *
>    * SUBTEST: common-hpd-after-suspend
>    * Description: Toggle HPD during suspend on all connectors, check that uevents
>    * 		are sent and connector status is updated
> - * Driver requirement: i915, xe
>    * Functionality: chamelium, hotplug, suspend
>    * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: common-hpd-after-hibernate
>    * Description: Toggle HPD during suspend on all connectors, check that uevents
>    *              are sent and connector status is updated
> - * Driver requirement: i915, xe
>    * Functionality: chamelium, hotplug, hibernation
>    * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: vga-hpd-without-ddc
>    * Description: Disable DDC on a VGA connector, check we still get a uevent on
>    *              hotplug
> - * Driver requirement: i915, xe
> - * Functionality: chamelium, hotplug
>    * Mega feature: VGA
> - * Test category: functionality test
>    *
>    * SUBTEST: dp-hpd-storm
>    * Description: Trigger a series of hotplugs in a very small timeframe to
>    *              simulate abad cable, check the kernel falls back to polling
>    *              to avoid a hotplug storm
> - * Driver requirement: i915, xe
> - * Functionality: chamelium, hotplug
>    * Mega feature: DP
> - * Test category: functionality test
>    *
>    * SUBTEST: hdmi-hpd-storm
>    * Description: Trigger a series of hotplugs in a very small timeframe to
>    *              simulate abad cable, check the kernel falls back to polling
>    *              to avoid a hotplug storm
> - * Driver requirement: i915, xe
> - * Functionality: chamelium, hotplug
>    * Mega feature: HDMI
> - * Test category: functionality test
>    *
>    * SUBTEST: dp-hpd-storm-disable
>    * Description: Disable HPD storm detection, trigger a storm and check the
>    *              kernel doesn't detect one
> - * Driver requirement: i915, xe
> - * Functionality: chamelium, hotplug
>    * Mega feature: DP
> - * Test category: functionality test
>    *
>    * SUBTEST: hdmi-hpd-storm-disable
>    * Description: Disable HPD storm detection, trigger a storm and check the
>    *              kernel doesn't detect one
> - * Driver requirement: i915, xe
> - * Functionality: chamelium, hotplug
>    * Mega feature: HDMI
> - * Test category: functionality test
>    */
>   
>   #define HPD_STORM_PULSE_INTERVAL_DP 100 /* ms */
> diff --git a/tests/intel/kms_big_fb.c b/tests/intel/kms_big_fb.c
> index cce7027e9..82aff532b 100644
> --- a/tests/intel/kms_big_fb.c
> +++ b/tests/intel/kms_big_fb.c
> @@ -25,6 +25,9 @@
>    * TEST: kms big fb
>    * Category: Display
>    * Description: Test big framebuffers
> + * Driver requirement: i915, xe
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -41,10 +44,7 @@
>    * SUBTEST: linear-%dbpp-rotate-%d
>    * Description: Sanity check if addfb ioctl works correctly for given combination
>    *              of Linear modifier with %arg[1]-bpp & %arg[2]-rotation
> - * Driver requirement: i915, xe
>    * Functionality: big_fbs, kms_gem_interop, rotation
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1].values:       8, 16, 32, 64
>    * arg[2].values:       0, 90, 180, 270
> @@ -54,10 +54,7 @@
>    * SUBTEST: %s-%dbpp-rotate-%d
>    * Description: Sanity check if addfb ioctl works correctly for given combination
>    *              of %arg[1] with %arg[2]-bpp & %arg[3]-rotation
> - * Driver requirement: i915, xe
>    * Functionality: big_fbs, kms_gem_interop, rotation, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -75,10 +72,7 @@
>    * Description: Test maximum hardware supported stride length for given combination
>    *              of linear modifier with max hardware stride length, %arg[1]-bpp,
>    *              and %arg[2]-rotation
> - * Driver requirement: i915, xe
>    * Functionality: big_fbs, kms_gem_interop, rotation
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1].values:       32, 64
>    * arg[2].values:       0, 180
> @@ -89,10 +83,7 @@
>    * Description: Test maximum hardware supported stride length for given combination
>    *              of %arg[1] modifier with max hardware stride length, %arg[2]-bpp,
>    *              and %arg[3]-rotation
> - * Driver requirement: i915, xe
>    * Functionality: big_fbs, kms_gem_interop, rotation, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -110,19 +101,13 @@
>    * Description: Test maximum hardware supported stride length for given combination
>    *              of %arg[1] modifier with max hardware stride length, %arg[2]-bpp,
>    *              and %arg[3]-rotation with H-flip mode
> - * Driver requirement: i915, xe
>    * Functionality: big_fbs, kms_gem_interop, rotation, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: %s-max-hw-stride-%dbpp-rotate-%d-%s
>    * Description: Test maximum hardware supported stride length for given combination
>    *              of %arg[1] modifier with max hardware stride length, %arg[2]-bpp,
>    *              and %arg[3]-rotation with %arg[4] mode
> - * Driver requirement: i915, xe
>    * Functionality: async_flips, big_fbs, kms_gem_interop, rotation, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -144,34 +129,22 @@
>    * SUBTEST: linear-addfb
>    * Description: Sanity check if addfb ioctl works correctly with Linear modifier
>    *              for given size and strides of fb
> - * Driver requirement: i915, xe
>    * Functionality: big_fbs, kms_gem_interop
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: %s-addfb
>    * Description: Sanity check if addfb ioctl works correctly with %arg[1] modifier
>    *              for given size and strides of fb
> - * Driver requirement: i915, xe
>    * Functionality: big_fbs, kms_gem_interop, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: %s-addfb-size-overflow
>    * Description: Sanity check if addfb ioctl fails correctly for (%arg[1]) modifier
>    *              with small bo.
> - * Driver requirement: i915, xe
>    * Functionality: big_fbs, kms_gem_interop, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: %s-addfb-size-offset-overflow
>    * Description: Sanity check if addfb ioctl fails correctly for (%arg[1]) modifier
>    *              and offsets with small bo
> - * Driver requirement: i915, xe
>    * Functionality: big_fbs, kms_gem_interop, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> diff --git a/tests/intel/kms_big_joiner.c b/tests/intel/kms_big_joiner.c
> index 3f2091723..c5f9f8db7 100644
> --- a/tests/intel/kms_big_joiner.c
> +++ b/tests/intel/kms_big_joiner.c
> @@ -28,6 +28,10 @@
>    * TEST: kms big joiner
>    * Category: Display
>    * Description: Test big joiner
> + * Driver requirement: i915, xe
> + * Functionality: 2p1p
> + * Mega feature: Bigjoiner
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -36,24 +40,12 @@
>    * SUBTEST: invalid-modeset
>    * Description: Verify if the modeset on the adjoining pipe is rejected when
>    *              the pipe is active with a big joiner modeset
> - * Driver requirement: i915, xe
> - * Functionality: 2p1p
> - * Mega feature: Bigjoiner
> - * Test category: functionality test
>    *
>    * SUBTEST: basic
>    * Description: Verify the basic modeset on big joiner mode on all pipes
> - * Driver requirement: i915, xe
> - * Functionality: 2p1p
> - * Mega feature: Bigjoiner
> - * Test category: functionality test
>    *
>    * SUBTEST: 2x-modeset
>    * Description: Verify simultaneous modeset on 2 big joiner outputs
> - * Driver requirement: i915, xe
> - * Functionality: 2p1p
> - * Mega feature: Bigjoiner
> - * Test category: functionality test
>    */
>   
>   IGT_TEST_DESCRIPTION("Test big joiner");
> diff --git a/tests/intel/kms_busy.c b/tests/intel/kms_busy.c
> index 63d1bbf71..004d9ee6e 100644
> --- a/tests/intel/kms_busy.c
> +++ b/tests/intel/kms_busy.c
> @@ -25,6 +25,10 @@
>    * TEST: kms busy
>    * Category: Display
>    * Description: Basic check of KMS ABI with busy framebuffers.
> + * Driver requirement: i915
> + * Functionality: kms_core, hang
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include <sys/poll.h>
> @@ -37,38 +41,19 @@
>   /**
>    * SUBTEST: basic
>    * Description: Test for basic check of KMS ABI with busy framebuffers.
> - * Driver requirement: i915
>    * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: basic-hang
>    * Description: Test for basic check of KMS ABI with busy framebuffers.
> - * Driver requirement: i915
> - * Functionality: kms_core, hang
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: extended-pageflip-modeset-hang-oldfb
>    * Description: Test for basic check of KMS ABI with busy framebuffers.
> - * Driver requirement: i915
> - * Functionality: kms_core, hang
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: extended-pageflip-hang-%s
>    * Description: Test for basic check of KMS ABI with busy framebuffers.
> - * Driver requirement: i915
> - * Functionality: kms_core, hang
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: extended-modeset-hang-%s
>    * Description: Test for basic check of KMS ABI with busy framebuffers.
> - * Driver requirement: i915
> - * Functionality: kms_core, hang
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -79,10 +64,6 @@
>   /**
>    * SUBTEST: extended-modeset-hang-%s
>    * Description: Test for basic check of KMS ABI with busy framebuffers.
> - * Driver requirement: i915
> - * Functionality: kms_core, hang
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> diff --git a/tests/intel/kms_ccs.c b/tests/intel/kms_ccs.c
> index d1eb735fa..0a202d037 100644
> --- a/tests/intel/kms_ccs.c
> +++ b/tests/intel/kms_ccs.c
> @@ -28,6 +28,10 @@
>    * Description: Test render compression (RC), in which the main surface is
>    *              complemented by a color control surface (CCS) that the display
>    *              uses to interpret the compressed data.
> + * Driver requirement: i915, xe
> + * Functionality: ccs, tiling
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -39,10 +43,6 @@
>   /**
>    * SUBTEST: %s-%s-%s
>    * Description: Test %arg[2] with given %arg[3] modifier
> - * Driver requirement: i915, xe
> - * Functionality: ccs, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -84,10 +84,6 @@
>   /**
>    * SUBTEST: %s-%s-%s
>    * Description: Test %arg[2] with %arg[3] modifier
> - * Driver requirement: i915, xe
> - * Functionality: ccs, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -133,10 +129,7 @@
>   /**
>    * SUBTEST: %s-%s-%s
>    * Description: Test %arg[2] with %arg[3] modifier
> - * Driver requirement: i915, xe
>    * Functionality: ccs, rotation, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> diff --git a/tests/intel/kms_cdclk.c b/tests/intel/kms_cdclk.c
> index 97cb615c5..7baf7d98e 100644
> --- a/tests/intel/kms_cdclk.c
> +++ b/tests/intel/kms_cdclk.c
> @@ -28,6 +28,10 @@
>    * TEST: kms cdclk
>    * Category: Display
>    * Description: Test cdclk features : crawling and squashing
> + * Driver requirement: i915, xe
> + * Functionality: kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -36,24 +40,12 @@
>    * SUBTEST: mode-transition-all-outputs
>    * Description: Mode transition (low to high) test to validate cdclk frequency
>    *              change by simultaneous modesets on all pipes with valid outputs.
> - * Driver requirement: i915, xe
> - * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: mode-transition
>    * Description: Mode transition (low to high) test to validate cdclk frequency change.
> - * Driver requirement: i915, xe
> - * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: plane-scaling
>    * Description: Plane scaling test to validate cdclk frequency change.
> - * Driver requirement: i915, xe
> - * Functionality: kms_core, plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    */
>   
>   IGT_TEST_DESCRIPTION("Test cdclk features : crawling and squashing");
> diff --git a/tests/intel/kms_draw_crc.c b/tests/intel/kms_draw_crc.c
> index b9d9cd6e4..e3d1c0ba9 100644
> --- a/tests/intel/kms_draw_crc.c
> +++ b/tests/intel/kms_draw_crc.c
> @@ -26,6 +26,10 @@
>    * TEST: kms draw crc
>    * Category: Display
>    * Description: Tests whether the igt_draw library actually works.
> + * Driver requirement: i915, xe
> + * Functionality: kms_core, tiling
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "i915/gem.h"
> @@ -34,18 +38,10 @@
>   /**
>    * SUBTEST: fill-fb
>    * Description: This subtest verifies CRC after filling fb with x-tiling or none.
> - * Driver requirement: i915, xe
> - * Functionality: kms_core, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: draw-method-%s
>    * Description: Verify that igt draw library works for the %arg[1] method with
>    *              different modifiers & DRM formats.
> - * Driver requirement: i915, xe
> - * Functionality: kms_core, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -59,9 +55,6 @@
>    * Description: Verify that igt draw library works for the %arg[1] method with
>    *              different modifiers & DRM formats.
>    * Driver requirement: i915
> - * Functionality: kms_core, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> diff --git a/tests/intel/kms_dsc.c b/tests/intel/kms_dsc.c
> index 0df3613b3..3433e0907 100644
> --- a/tests/intel/kms_dsc.c
> +++ b/tests/intel/kms_dsc.c
> @@ -34,6 +34,10 @@
>    * TEST: kms dsc
>    * Category: Display
>    * Description: Test to validate display stream compression
> + * Driver requirement: i915, xe
> + * Functionality: dsc
> + * Mega feature: VDSC
> + * Test category: functionality test
>    */
>   
>   #include "kms_dsc_helper.h"
> @@ -42,10 +46,6 @@
>    * SUBTEST: dsc-%s
>    * Description: Tests Display Stream Compression functionality if supported by a
>    *              connector by forcing %arg[1] on all connectors that support it
> - * Driver requirement: i915, xe
> - * Functionality: dsc
> - * Mega feature: VDSC
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> diff --git a/tests/intel/kms_fbcon_fbt.c b/tests/intel/kms_fbcon_fbt.c
> index d437d70f6..e2617a79a 100644
> --- a/tests/intel/kms_fbcon_fbt.c
> +++ b/tests/intel/kms_fbcon_fbt.c
> @@ -29,6 +29,8 @@
>    * Category: Display
>    * Description: Test the relationship between fbcon and the frontbuffer tracking
>    *              infrastructure.
> + * Driver requirement: i915, xe
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -43,34 +45,26 @@
>    * SUBTEST: fbc
>    * Description: Test the relationship between fbcon and the frontbuffer tracking
>    *              infrastructure with fbc enabled.
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbcon, fbt
>    * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbc-suspend
>    * Description: Suspend test to validate  the relationship between fbcon and the
>    *              frontbuffer tracking infrastructure with fbc enabled.
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbcon, fbt, suspend
>    * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psr
>    * Description: Test the relationship between fbcon and the frontbuffer tracking
>    *              infrastructure with psr enabled.
> - * Driver requirement: i915, xe
>    * Functionality: fbcon, fbt, psr
>    * Mega feature: PSR
> - * Test category: functionality test
>    *
>    * SUBTEST: psr-suspend
>    * Description: Suspend test to validate the relationship between fbcon and the
>    *              frontbuffer tracking infrastructure with psr enabled.
> - * Driver requirement: i915, xe
>    * Functionality: fbcon, fbt, psr, suspend
>    * Mega feature: PSR
> - * Test category: functionality test
>    */
>   
>   IGT_TEST_DESCRIPTION("Test the relationship between fbcon and the frontbuffer "
> diff --git a/tests/intel/kms_flip_scaled_crc.c b/tests/intel/kms_flip_scaled_crc.c
> index 8f37299ea..7dc07bc83 100644
> --- a/tests/intel/kms_flip_scaled_crc.c
> +++ b/tests/intel/kms_flip_scaled_crc.c
> @@ -26,6 +26,10 @@
>    * TEST: kms flip scaled crc
>    * Category: Display
>    * Description: Test flipping between scaled/nonscaled framebuffers
> + * Driver requirement: i915, xe
> + * Functionality: ccs, scaling, tiling, vblank
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -34,114 +38,63 @@
>    * SUBTEST: flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling
>    * Description: Flip from 64bpp non scaled fb to 32bpp upscaled fb to stress CD
>    *              clock programming
> - * Driver requirement: i915, xe
> - * Functionality: ccs, scaling, tiling, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
>    * Description: Flip from 64bpp non scaled fb to 32bpp downscaled fb to stress CD
>    *              clock programming
> - * Driver requirement: i915, xe
> - * Functionality: ccs, scaling, tiling, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: flip-32bpp-linear-to-64bpp-linear-%s
>    * Description: Flip from 32bpp non scaled fb to 64bpp %arg[1] fb to stress CD
>    *              clock programming
> - * Driver requirement: i915, xe
>    * Functionality: scaling, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-%s
>    * Description: Flip from 32bpp non scaled fb to 32bpp %arg[1] fb to stress CD
>    *              clock programming
> - * Driver requirement: i915, xe
> - * Functionality: ccs, scaling, tiling, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: flip-32bpp-4tile-to-64bpp-4tile-%s
>    * Description: Flip from 32bpp non scaled fb to 64bpp %arg[1] fb to stress CD
>    *              clock programming
> - * Driver requirement: i915, xe
>    * Functionality: scaling, tiling, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: flip-32bpp-xtile-to-64bpp-xtile-%s
>    * Description: Flip from 32bpp non scaled fb to 64bpp %arg[1] fb to stress CD
>    *              clock programming
> - * Driver requirement: i915, xe
>    * Functionality: scaling, tiling, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: flip-32bpp-yftile-to-32bpp-yftileccs-%s
>    * Description: Flip from 32bpp non scaled fb to 32bpp %arg[1] fb to stress CD
>    *              clock programming
> - * Driver requirement: i915, xe
> - * Functionality: ccs, scaling, tiling, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: flip-32bpp-yftile-to-64bpp-yftile-%s
>    * Description: Flip from 32bpp non scaled fb to 64bpp %arg[1] fb to stress CD
>    *              clock programming
> - * Driver requirement: i915, xe
>    * Functionality: scaling, tiling, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: flip-32bpp-yftileccs-to-64bpp-yftile-%s
>    * Description: Flip from 32bpp non scaled fb to 64bpp %arg[1] fb to stress CD
>    *              clock programming
> - * Driver requirement: i915, xe
> - * Functionality: ccs, scaling, tiling, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: flip-32bpp-ytile-to-32bpp-ytileccs-%s
>    * Description: Flip from 32bpp non scaled fb to 32bpp %arg[1] fb to stress CD
>    *              clock programming
> - * Driver requirement: i915, xe
> - * Functionality: ccs, scaling, tiling, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-%s
>    * Description: Flip from 32bpp non scaled fb to 32bpp %arg[1] fb to stress CD
>    *              clock programming
> - * Driver requirement: i915, xe
> - * Functionality: ccs, scaling, tiling, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: flip-32bpp-ytile-to-64bpp-ytile-%s
>    * Description: Flip from 32bpp non scaled fb to 64bpp %arg[1] fb to stress CD
>    *              clock programming
> - * Driver requirement: i915, xe
>    * Functionality: scaling, tiling, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: flip-32bpp-ytileccs-to-64bpp-ytile-%s
>    * Description: Flip from 32bpp non scaled fb to 64bpp %arg[1] fb to stress CD
>    *              clock programming
> - * Driver requirement: i915, xe
> - * Functionality: ccs, scaling, tiling, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-%s
>    * Description: Flip from 64bpp non scaled fb to 32bpp %arg[1] fb to stress CD
>    *              clock programming
> - * Driver requirement: i915, xe
> - * Functionality: ccs, scaling, tiling, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -153,42 +106,27 @@
>    * SUBTEST: flip-64bpp-4tile-to-%dbpp-4tile-%s
>    * Description: Flip from 64bpp non scaled fb to %arg[1]bpp %arg[2] fb to stress
>    *              CD clock programming
> - * Driver requirement: i915, xe
>    * Functionality: scaling, tiling, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: flip-64bpp-xtile-to-%dbpp-xtile-%s
>    * Description: Flip from 64bpp non scaled fb to %arg[1]bpp %arg[2] fb to stress
>    *              CD clock programming
> - * Driver requirement: i915, xe
>    * Functionality: scaling, tiling, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: flip-64bpp-yftile-to-%dbpp-yftile-%s
>    * Description: Flip from 64bpp non scaled fb to %arg[1]bpp %arg[2] fb to stress
>    *              CD clock programming
> - * Driver requirement: i915, xe
>    * Functionality: scaling, tiling, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: flip-64bpp-ytile-to-%dbpp-ytile-%s
>    * Description: Flip from 64bpp non scaled fb to %arg[1]bpp %arg[2] fb to stress
>    *              CD clock programming
> - * Driver requirement: i915, xe
>    * Functionality: scaling, tiling, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: flip-64bpp-linear-to-%dbpp-linear-%s
>    * Description: Flip from 64bpp non scaled fb to %arg[1]bpp %arg[2] fb to stress
>    *              CD clock programming
> - * Driver requirement: i915, xe
>    * Functionality: scaling, tiling, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1].values: 16, 32
>    * arg[2]:
> diff --git a/tests/intel/kms_frontbuffer_tracking.c b/tests/intel/kms_frontbuffer_tracking.c
> index 085adc5b1..abc44bf39 100644
> --- a/tests/intel/kms_frontbuffer_tracking.c
> +++ b/tests/intel/kms_frontbuffer_tracking.c
> @@ -28,6 +28,9 @@
>    * TEST: kms frontbuffer tracking
>    * Category: Display
>    * Description: Test the Kernel's frontbuffer tracking mechanism and its related features: FBC, PSR and DRRS
> + * Driver requirement: i915, xe
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include <sys/types.h>
> @@ -48,66 +51,39 @@
>   /**
>    * SUBTEST: basic
>    * Description: Do some basic operations regardless of which features are enabled
> - * Driver requirement: i915, xe
>    * Functionality: fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: plane-fbc-rte
>    * Description: Sanity test to enable FBC on a plane.
> - * Driver requirement: i915, xe
>    * Functionality: fbc
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: drrs-%dp-rte
>    * Description: Sanity test to enable DRRS with %arg[1] panels.
> - * Driver requirement: i915, xe
>    * Functionality: fbt, drrs
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbc-%dp-rte
>    * Description: Sanity test to enable FBC with %arg[1] panels.
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psr-%dp-rte
>    * Description: Sanity test to enable PSR with %arg[1] panels.
> - * Driver requirement: i915, xe
>    * Functionality: fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcdrrs-%dp-rte
>    * Description: Sanity test to enable FBC & DRRS with %arg[1] panels.
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsr-%dp-rte
>    * Description: Sanity test to enable FBC & PSR with %arg[1] panels.
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psrdrrs-%dp-rte
>    * Description: Sanity test to enable PSR & DRRS with %arg[1] panels.
> - * Driver requirement: i915, xe
>    * Functionality: fbt, drrs, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsrdrrs-%dp-rte
>    * Description: Sanity test to enable FBC, PSR & DRRS with %arg[1] panels.
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt, drrs, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1].values:   1, 2
>    */
> @@ -115,52 +91,31 @@
>   /**
>    * SUBTEST: drrs-1p-offscren-pri-%s-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbc-1p-offscren-pri-%s-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psr-1p-offscren-pri-%s-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
>    * Functionality: fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcdrrs-1p-offscren-pri-%s-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsr-1p-offscren-pri-%s-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psrdrrs-1p-offscren-pri-%s-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsrdrrs-1p-offscren-pri-%s-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -179,50 +134,36 @@
>    * Description: Draw a set of rectangles on the screen using the provided method
>    * Driver requirement: i915
>    * Functionality: drrs, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbc-1p-offscren-pri-%s-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
>    * Driver requirement: i915
>    * Functionality: fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psr-1p-offscren-pri-%s-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
>    * Driver requirement: i915
>    * Functionality: fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcdrrs-1p-offscren-pri-%s-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
>    * Driver requirement: i915
>    * Functionality: drrs, fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsr-1p-offscren-pri-%s-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
>    * Driver requirement: i915
>    * Functionality: fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psrdrrs-1p-offscren-pri-%s-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
>    * Driver requirement: i915
>    * Functionality: drrs, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsrdrrs-1p-offscren-pri-%s-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
>    * Driver requirement: i915
>    * Functionality: drrs, fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -241,50 +182,36 @@
>    * Description: Draw a set of rectangles on the screen using the provided method
>    * Driver requirement: i915
>    * Functionality: drrs, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbc-%dp-primscrn-%s-indfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
>    * Driver requirement: i915
>    * Functionality: fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psr-%dp-primscrn-%s-indfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
>    * Driver requirement: i915
>    * Functionality: fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcdrrs-%dp-primscrn-%s-indfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
>    * Driver requirement: i915
>    * Functionality: drrs, fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsr-%dp-primscrn-%s-indfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
>    * Driver requirement: i915
>    * Functionality: fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psrdrrs-%dp-primscrn-%s-indfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
>    * Driver requirement: i915
>    * Functionality: drrs, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-indfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
>    * Driver requirement: i915
>    * Functionality: drrs, fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1].values:   1, 2
>    *
> @@ -304,52 +231,31 @@
>   /**
>    * SUBTEST: drrs-%dp-primscrn-%s-indfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbc-%dp-primscrn-%s-indfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psr-%dp-primscrn-%s-indfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
>    * Functionality: fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcdrrs-%dp-primscrn-%s-indfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsr-%dp-primscrn-%s-indfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psrdrrs-%dp-primscrn-%s-indfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-indfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1].values:   1, 2
>    *
> @@ -369,52 +275,31 @@
>   /**
>    * SUBTEST: drrs-%dp-primscrn-pri-shrfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbc-%dp-primscrn-pri-shrfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psr-%dp-primscrn-pri-shrfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
>    * Functionality: fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcdrrs-%dp-primscrn-pri-shrfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsr-%dp-primscrn-pri-shrfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psrdrrs-%dp-primscrn-pri-shrfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsrdrrs-%dp-primscrn-pri-shrfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1].values:   1, 2
>    *
> @@ -430,50 +315,36 @@
>    * Description: Draw a set of rectangles on the screen using the provided method
>    * Driver requirement: i915
>    * Functionality: drrs, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbc-%dp-primscrn-pri-shrfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
>    * Driver requirement: i915
>    * Functionality: fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psr-%dp-primscrn-pri-shrfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
>    * Driver requirement: i915
>    * Functionality: fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcdrrs-%dp-primscrn-pri-shrfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
>    * Driver requirement: i915
>    * Functionality: drrs, fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsr-%dp-primscrn-pri-shrfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
>    * Driver requirement: i915
>    * Functionality: fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psrdrrs-%dp-primscrn-pri-shrfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
>    * Driver requirement: i915
>    * Functionality: drrs, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsrdrrs-%dp-primscrn-pri-shrfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
>    * Driver requirement: i915
>    * Functionality: drrs, fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1].values:   1, 2
>    *
> @@ -487,52 +358,31 @@
>   /**
>    * SUBTEST: drrs-2p-scndscrn-%s-indfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbc-2p-scndscrn-%s-indfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psr-2p-scndscrn-%s-indfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
>    * Functionality: fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcdrrs-2p-scndscrn-%s-indfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsr-2p-scndscrn-%s-indfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psrdrrs-2p-scndscrn-%s-indfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-indfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -552,50 +402,36 @@
>    * Description: Draw a set of rectangles on the screen using the provided method
>    * Driver requirement: i915
>    * Functionality: drrs, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbc-2p-scndscrn-%s-indfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
>    * Driver requirement: i915
>    * Functionality: fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psr-2p-scndscrn-%s-indfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
>    * Driver requirement: i915
>    * Functionality: fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcdrrs-2p-scndscrn-%s-indfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
>    * Driver requirement: i915
>    * Functionality: drrs, fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsr-2p-scndscrn-%s-indfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
>    * Driver requirement: i915
>    * Functionality: fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psrdrrs-2p-scndscrn-%s-indfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
>    * Driver requirement: i915
>    * Functionality: drrs, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-indfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
>    * Driver requirement: i915
>    * Functionality: drrs, fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -613,52 +449,31 @@
>   /**
>    * SUBTEST: drrs-2p-scndscrn-pri-shrfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbc-2p-scndscrn-pri-shrfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psr-2p-scndscrn-pri-shrfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
>    * Functionality: fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcdrrs-2p-scndscrn-pri-shrfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsr-2p-scndscrn-pri-shrfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psrdrrs-2p-scndscrn-pri-shrfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsrdrrs-2p-scndscrn-pri-shrfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -672,50 +487,36 @@
>    * Description: Draw a set of rectangles on the screen using the provided method
>    * Driver requirement: i915
>    * Functionality: drrs, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbc-2p-scndscrn-pri-shrfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
>    * Driver requirement: i915
>    * Functionality: fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psr-2p-scndscrn-pri-shrfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
>    * Driver requirement: i915
>    * Functionality: fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcdrrs-2p-scndscrn-pri-shrfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
>    * Driver requirement: i915
>    * Functionality: drrs, fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsr-2p-scndscrn-pri-shrfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
>    * Driver requirement: i915
>    * Functionality: fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psrdrrs-2p-scndscrn-pri-shrfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
>    * Driver requirement: i915
>    * Functionality: drrs, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsrdrrs-2p-scndscrn-pri-shrfb-draw-%s
>    * Description: Draw a set of rectangles on the screen using the provided method
>    * Driver requirement: i915
>    * Functionality: drrs, fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -727,52 +528,31 @@
>   /**
>    * SUBTEST: drrs-%dp-pri-indfb-multidraw
>    * Description: Draw a set of rectangles on the screen using alternated drawing methods
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbc-%dp-pri-indfb-multidraw
>    * Description: Draw a set of rectangles on the screen using alternated drawing methods
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psr-%dp-pri-indfb-multidraw
>    * Description: Draw a set of rectangles on the screen using alternated drawing methods
> - * Driver requirement: i915, xe
>    * Functionality: fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcdrrs-%dp-pri-indfb-multidraw
>    * Description: Draw a set of rectangles on the screen using alternated drawing methods
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsr-%dp-pri-indfb-multidraw
>    * Description: Draw a set of rectangles on the screen using alternated drawing methods
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psrdrrs-%dp-pri-indfb-multidraw
>    * Description: Draw a set of rectangles on the screen using alternated drawing methods
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsrdrrs-%dp-pri-indfb-multidraw
>    * Description: Draw a set of rectangles on the screen using alternated drawing methods
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1].values:   1, 2
>    */
> @@ -780,52 +560,31 @@
>   /**
>    * SUBTEST: drrs-%s-draw-%s
>    * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbc-%s-draw-%s
>    * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psr-%s-draw-%s
>    * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
> - * Driver requirement: i915, xe
>    * Functionality: fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcdrrs-%s-draw-%s
>    * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsr-%s-draw-%s
>    * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psrdrrs-%s-draw-%s
>    * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsrdrrs-%s-draw-%s
>    * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -844,50 +603,36 @@
>    * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
>    * Driver requirement: i915
>    * Functionality: drrs, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbc-%s-draw-%s
>    * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
>    * Driver requirement: i915
>    * Functionality: fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psr-%s-draw-%s
>    * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
>    * Driver requirement: i915
>    * Functionality: fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcdrrs-%s-draw-%s
>    * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
>    * Driver requirement: i915
>    * Functionality: drrs, fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsr-%s-draw-%s
>    * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
>    * Driver requirement: i915
>    * Functionality: fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psrdrrs-%s-draw-%s
>    * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
>    * Driver requirement: i915
>    * Functionality: drrs, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsrdrrs-%s-draw-%s
>    * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
>    * Driver requirement: i915
>    * Functionality: drrs, fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -904,96 +649,57 @@
>   /**
>    * SUBTEST: drrs-slowdraw
>    * Description: Sleep a little bit between drawing operations with DRRS
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psr-slowdraw
>    * Description: Sleep a little bit between drawing operations with PSR
> - * Driver requirement: i915, xe
>    * Functionality: fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcdrrs-slowdraw
>    * Description: Sleep a little bit between drawing operations with FBC & DRRS
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsr-slowdraw
>    * Description: Sleep a little bit between drawing operations with FBC & PSR
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psrdrrs-slowdraw
>    * Description: Sleep a little bit between drawing operations with PSR & DRRS
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsrdrrs-slowdraw
>    * Description: Sleep a little bit between drawing operations with FBC, PSR & DRRS
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    */
>   
>   /**
>    * SUBTEST: drrs-%dp-primscrn-%s-%sflip-blt
>    * Description: Just exercise page flips with the patterns we have
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbc-%dp-primscrn-%s-%sflip-blt
>    * Description: Just exercise page flips with the patterns we have
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psr-%dp-primscrn-%s-%sflip-blt
>    * Description: Just exercise page flips with the patterns we have
> - * Driver requirement: i915, xe
>    * Functionality: fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcdrrs-%dp-primscrn-%s-%sflip-blt
>    * Description: Just exercise page flips with the patterns we have
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsr-%dp-primscrn-%s-%sflip-blt
>    * Description: Just exercise page flips with the patterns we have
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psrdrrs-%dp-primscrn-%s-%sflip-blt
>    * Description: Just exercise page flips with the patterns we have
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-%sflip-blt
>    * Description: Just exercise page flips with the patterns we have
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1].values:   1, 2
>    *
> @@ -1012,52 +718,31 @@
>   /**
>    * SUBTEST: drrs-2p-scndscrn-%s-%sflip-blt
>    * Description: Just exercise page flips with the patterns we have
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbc-2p-scndscrn-%s-%sflip-blt
>    * Description: Just exercise page flips with the patterns we have
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psr-2p-scndscrn-%s-%sflip-blt
>    * Description: Just exercise page flips with the patterns we have
> - * Driver requirement: i915, xe
>    * Functionality: fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcdrrs-2p-scndscrn-%s-%sflip-blt
>    * Description: Just exercise page flips with the patterns we have
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsr-2p-scndscrn-%s-%sflip-blt
>    * Description: Just exercise page flips with the patterns we have
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psrdrrs-2p-scndscrn-%s-%sflip-blt
>    * Description: Just exercise page flips with the patterns we have
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-%sflip-blt
>    * Description: Just exercise page flips with the patterns we have
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -1074,31 +759,19 @@
>   /**
>    * SUBTEST: fbc-%dp-%s-fliptrack-mmap-gtt
>    * Description: Check if the hardware tracking works after page flips
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcdrrs-%dp-%s-fliptrack-mmap-gtt
>    * Description: Check if the hardware tracking works after page flips
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsr-%dp-%s-fliptrack-mmap-gtt
>    * Description: Check if the hardware tracking works after page flips
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsrdrrs-%dp-%s-fliptrack-mmap-gtt
>    * Description: Check if the hardware tracking works after page flips
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1].values:   1, 2
>    *
> @@ -1111,52 +784,31 @@
>   /**
>    * SUBTEST: drrs-%dp-primscrn-%s-indfb-move
>    * Description: Just move the %arg[2] around
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbc-%dp-primscrn-%s-indfb-move
>    * Description: Just move the %arg[2] around
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psr-%dp-primscrn-%s-indfb-move
>    * Description: Just move the %arg[2] around
> - * Driver requirement: i915, xe
>    * Functionality: fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcdrrs-%dp-primscrn-%s-indfb-move
>    * Description: Just move the %arg[2] around
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsr-%dp-primscrn-%s-indfb-move
>    * Description: Just move the %arg[2] around
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psrdrrs-%dp-primscrn-%s-indfb-move
>    * Description: Just move the %arg[2] around
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-indfb-move
>    * Description: Just move the %arg[2] around
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1].values:   1, 2
>    *
> @@ -1169,52 +821,31 @@
>   /**
>    * SUBTEST: drrs-2p-scndscrn-%s-indfb-move
>    * Description: Just move the %arg[1] around
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbc-2p-scndscrn-%s-indfb-move
>    * Description: Just move the %arg[1] around
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psr-2p-scndscrn-%s-indfb-move
>    * Description: Just move the %arg[1] around
> - * Driver requirement: i915, xe
>    * Functionality: fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcdrrs-2p-scndscrn-%s-indfb-move
>    * Description: Just move the %arg[1] around
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsr-2p-scndscrn-%s-indfb-move
>    * Description: Just move the %arg[1] around
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psrdrrs-2p-scndscrn-%s-indfb-move
>    * Description: Just move the %arg[1] around
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-indfb-move
>    * Description: Just move the %arg[1] around
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -1225,52 +856,31 @@
>   /**
>    * SUBTEST: drrs-%dp-primscrn-%s-indfb-onoff
>    * Description: Just enable and disable the %arg[2] a few times
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbc-%dp-primscrn-%s-indfb-onoff
>    * Description: Just enable and disable the %arg[2] a few times
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psr-%dp-primscrn-%s-indfb-onoff
>    * Description: Just enable and disable the %arg[2] a few times
> - * Driver requirement: i915, xe
>    * Functionality: fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcdrrs-%dp-primscrn-%s-indfb-onoff
>    * Description: Just enable and disable the %arg[2] a few times
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsr-%dp-primscrn-%s-indfb-onoff
>    * Description: Just enable and disable the %arg[2] a few times
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psrdrrs-%dp-primscrn-%s-indfb-onoff
>    * Description: Just enable and disable the %arg[2] a few times
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-indfb-onoff
>    * Description: Just enable and disable the %arg[2] a few times
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1].values:   1, 2
>    *
> @@ -1283,52 +893,31 @@
>   /**
>    * SUBTEST: drrs-2p-scndscrn-%s-indfb-onoff
>    * Description: Just enable and disable the %arg[1] a few times
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbc-2p-scndscrn-%s-indfb-onoff
>    * Description: Just enable and disable the %arg[1] a few times
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psr-2p-scndscrn-%s-indfb-onoff
>    * Description: Just enable and disable the %arg[1] a few times
> - * Driver requirement: i915, xe
>    * Functionality: fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcdrrs-2p-scndscrn-%s-indfb-onoff
>    * Description: Just enable and disable the %arg[1] a few times
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsr-2p-scndscrn-%s-indfb-onoff
>    * Description: Just enable and disable the %arg[1] a few times
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psrdrrs-2p-scndscrn-%s-indfb-onoff
>    * Description: Just enable and disable the %arg[1] a few times
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-indfb-onoff
>    * Description: Just enable and disable the %arg[1] a few times
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -1339,101 +928,59 @@
>   /**
>    * SUBTEST: drrs-%dp-primscrn-spr-indfb-fullscreen
>    * Description: Put a fullscreen plane covering the whole screen
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbc-%dp-primscrn-spr-indfb-fullscreen
>    * Description: Put a fullscreen plane covering the whole screen
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psr-%dp-primscrn-spr-indfb-fullscreen
>    * Description: Put a fullscreen plane covering the whole screen
> - * Driver requirement: i915, xe
>    * Functionality: fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcdrrs-%dp-primscrn-spr-indfb-fullscreen
>    * Description: Put a fullscreen plane covering the whole screen
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsr-%dp-primscrn-spr-indfb-fullscreen
>    * Description: Put a fullscreen plane covering the whole screen
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psrdrrs-%dp-primscrn-spr-indfb-fullscreen
>    * Description: Put a fullscreen plane covering the whole screen
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsrdrrs-%dp-primscrn-spr-indfb-fullscreen
>    * Description: Put a fullscreen plane covering the whole screen
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: drrs-2p-scndscrn-spr-indfb-fullscreen
>    * Description: Put a fullscreen plane covering the whole screen
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbc-2p-scndscrn-spr-indfb-fullscreen
>    * Description: Put a fullscreen plane covering the whole screen
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psr-2p-scndscrn-spr-indfb-fullscreen
>    * Description: Put a fullscreen plane covering the whole screen
> - * Driver requirement: i915, xe
>    * Functionality: fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcdrrs-2p-scndscrn-spr-indfb-fullscreen
>    * Description: Put a fullscreen plane covering the whole screen
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsr-2p-scndscrn-spr-indfb-fullscreen
>    * Description: Put a fullscreen plane covering the whole screen
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psrdrrs-2p-scndscrn-spr-indfb-fullscreen
>    * Description: Put a fullscreen plane covering the whole screen
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsrdrrs-2p-scndscrn-spr-indfb-fullscreen
>    * Description: Put a fullscreen plane covering the whole screen
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1].values:   1, 2
>    */
> @@ -1441,52 +988,31 @@
>   /**
>    * SUBTEST: drrs-%s-scaledprimary
>    * Description: Try different primary plane scaling strategies
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbt, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbc-%s-scaledprimary
>    * Description: Try different primary plane scaling strategies
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psr-%s-scaledprimary
>    * Description: Try different primary plane scaling strategies
> - * Driver requirement: i915, xe
>    * Functionality: fbt, psr, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcdrrs-%s-scaledprimary
>    * Description: Try different primary plane scaling strategies
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsr-%s-scaledprimary
>    * Description: Try different primary plane scaling strategies
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt, psr, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psrdrrs-%s-scaledprimary
>    * Description: Try different primary plane scaling strategies
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbt, psr, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsrdrrs-%s-scaledprimary
>    * Description: Try different primary plane scaling strategies
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt, psr, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -1497,102 +1023,61 @@
>   /**
>    * SUBTEST: drrs-modesetfrombusy
>    * Description: Modeset from a busy buffer to a non-busy buffer with DRRS
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbt, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbc-modesetfrombusy
>    * Description: Modeset from a busy buffer to a non-busy buffer with FBC
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psr-modesetfrombusy
>    * Description: Modeset from a busy buffer to a non-busy buffer with PSR
> - * Driver requirement: i915, xe
>    * Functionality: fbt, psr, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcdrrs-modesetfrombusy
>    * Description: Modeset from a busy buffer to a non-busy buffer with FBC & DRRS
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsr-modesetfrombusy
>    * Description: Modeset from a busy buffer to a non-busy buffer with FBC & PSR
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt, psr, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psrdrrs-modesetfrombusy
>    * Description: Modeset from a busy buffer to a non-busy buffer with PSR & DRRS
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbt, psr, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsrdrrs-modesetfrombusy
>    * Description: Modeset from a busy buffer to a non-busy buffer with FBC, PSR & DRRS
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt, psr, scaling
> - * Mega feature: General Display Features
>    */
>   
>   /**
>    * SUBTEST: drrs-suspend
>    * Description: Make sure suspend/resume keeps us on the same state of DRRS
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbt, suspend
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbc-suspend
>    * Description: Make sure suspend/resume keeps us on the same state of FBC
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt, suspend
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psr-suspend
>    * Description: Make sure suspend/resume keeps us on the same state of PSR
> - * Driver requirement: i915, xe
>    * Functionality: fbt, psr, suspend
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcdrrs-suspend
>    * Description: Make sure suspend/resume keeps us on the same state of FBC & DRRS
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt, suspend
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsr-suspend
>    * Description: Make sure suspend/resume keeps us on the same state of FBC & PSR
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt, psr, suspend
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psrdrrs-suspend
>    * Description: Make sure suspend/resume keeps us on the same state of PSR & DRRS
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbt, psr, suspend
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsrdrrs-suspend
>    * Description: Make sure suspend/resume keeps us on the same state of FBC, PSR & DRRS
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt, psr, suspend
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    */
>   
>   /**
> @@ -1600,114 +1085,76 @@
>    * Description: Test drawing as far from the fence start as possible
>    * Driver requirement: i915
>    * Functionality: drrs, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbc-farfromfence-mmap-gtt
>    * Description: Test drawing as far from the fence start as possible
>    * Driver requirement: i915
>    * Functionality: fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psr-farfromfence-mmap-gtt
>    * Description: Test drawing as far from the fence start as possible
>    * Driver requirement: i915
>    * Functionality: fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcdrrs-farfromfence-mmap-gtt
>    * Description: Test drawing as far from the fence start as possible
>    * Driver requirement: i915
>    * Functionality: drrs, fbc, fbt, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsr-farfromfence-mmap-gtt
>    * Description: Test drawing as far from the fence start as possible
>    * Driver requirement: i915
>    * Functionality: fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psrdrrs-farfromfence-mmap-gtt
>    * Description: Test drawing as far from the fence start as possible
>    * Driver requirement: i915
>    * Functionality: drrs, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsrdrrs-farfromfence-mmap-gtt
>    * Description: Test drawing as far from the fence start as possible
>    * Driver requirement: i915
>    * Functionality: drrs, fbc, fbt, kms_core, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    */
>   
>   /**
>    * SUBTEST: fbc-stridechange
>    * Description: Change the frontbuffer stride by doing a modeset
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcdrrs-stridechange
>    * Description: Change the frontbuffer stride by doing a modeset
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsr-stridechange
>    * Description: Change the frontbuffer stride by doing a modeset
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsrdrrs-stridechange
>    * Description: Change the frontbuffer stride by doing a modeset
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt, psr
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    */
>   
>   /**
>    * SUBTEST: fbc-tiling-%s
>    * Description: Test %arg[1] formats, if the tiling format supports FBC do the
>    *              basic drawing test, else set the mode & test if FBC is disabled
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcdrrs-tiling-%s
>    * Description: Test %arg[1] formats, if the tiling format supports FBC do the
>    *              basic drawing test, else set the mode & test if FBC is disabled
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsr-tiling-%s
>    * Description: Test %arg[1] formats, if the tiling format supports FBC do the
>    *              basic drawing test, else set the mode & test if FBC is disabled
> - * Driver requirement: i915, xe
>    * Functionality: fbc, fbt, psr, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fbcpsrdrrs-tiling-%s
>    * Description: Test %arg[1] formats, if the tiling format supports FBC do the
>    *              basic drawing test, else set the mode & test if FBC is disabled
> - * Driver requirement: i915, xe
>    * Functionality: drrs, fbc, fbt, psr, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> diff --git a/tests/intel/kms_legacy_colorkey.c b/tests/intel/kms_legacy_colorkey.c
> index 69539f558..27ec64051 100644
> --- a/tests/intel/kms_legacy_colorkey.c
> +++ b/tests/intel/kms_legacy_colorkey.c
> @@ -25,6 +25,10 @@
>    * TEST: kms legacy colorkey
>    * Category: Display
>    * Description: Test to check the legacy set colorkey ioctl on sprite planes.
> + * Driver requirement: i915
> + * Functionality: plane, xorg_xv
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -33,17 +37,9 @@
>   /**
>    * SUBTEST: basic
>    * Description: Check that the legacy set colorkey ioctl only works on sprite planes.
> - * Driver requirement: i915
> - * Functionality: plane, xorg_xv
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: invalid-plane
>    * Description: Check invalid plane id's, zero and outrange
> - * Driver requirement: i915
> - * Functionality: plane, xorg_xv
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    */
>   
>   IGT_TEST_DESCRIPTION("Check that the legacy set colorkey ioctl only works on sprite planes.");
> diff --git a/tests/intel/kms_pipe_b_c_ivb.c b/tests/intel/kms_pipe_b_c_ivb.c
> index c1a1e6610..73277e970 100644
> --- a/tests/intel/kms_pipe_b_c_ivb.c
> +++ b/tests/intel/kms_pipe_b_c_ivb.c
> @@ -29,6 +29,10 @@
>    * Category: Display
>    * Description: Exercise the FDI lane bifurcation code for IVB in the kernel by
>    *              setting different combinations of modes for pipes B and C.
> + * Driver requirement: i915
> + * Functionality: kms_core, obsolete
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -37,43 +41,23 @@
>    * SUBTEST: disable-pipe-B-enable-pipe-C
>    * Description: Tests pipe-B and pipe-C interactions in IVB by disabling pipe-B
>    *              and then setting mode on pipe-C.
> - * Driver requirement: i915
> - * Functionality: kms_core, obsolete
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: enable-pipe-C-while-B-has-3-lanes
>    * Description: Tests pipe-B and pipe-C interactions in IVB by enabling pipe-C
>    *              while pipe-B has 3-lanes
> - * Driver requirement: i915
> - * Functionality: kms_core, obsolete
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: from-pipe-C-to-B-with-3-lanes
>    * Description: Tests pipe-B and pipe-C interactions in IVB by enabling pipe-B
>    *              with 3 lanes from pipe-C.
> - * Driver requirement: i915
> - * Functionality: kms_core, obsolete
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: pipe-B-double-modeset-then-modeset-pipe-C
>    * Description: Tests pipe-B and pipe-C interactions in IVB by enabling two
>    *              different modes on pipe-B and then a single mode on pipe-C.
> - * Driver requirement: i915
> - * Functionality: kms_core, obsolete
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: pipe-B-dpms-off-modeset-pipe-C
>    * Description: Tests pipe-B and pipe-C interactions in IVB by enabling pipe-B
>    *              with mode that requires 3 lanes and then enabling pipe-c with
>    *              dpms off/on pipe-B.
> - * Driver requirement: i915
> - * Functionality: kms_core, obsolete
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    */
>   
>   IGT_TEST_DESCRIPTION(
> diff --git a/tests/intel/kms_pm_backlight.c b/tests/intel/kms_pm_backlight.c
> index 68f4dc3d1..5b4c397bb 100644
> --- a/tests/intel/kms_pm_backlight.c
> +++ b/tests/intel/kms_pm_backlight.c
> @@ -29,6 +29,10 @@
>    * TEST: kms pm backlight
>    * Category: Display
>    * Description: Basic backlight sysfs test
> + * Driver requirement: i915, xe
> + * Functionality: backlight
> + * Mega feature: Display Power
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -46,38 +50,20 @@
>   /**
>    * SUBTEST: bad-brightness
>    * Description: Test the bad brightness.
> - * Driver requirement: i915, xe
> - * Functionality: backlight
> - * Mega feature: Display Power
> - * Test category: functionality test
>    *
>    * SUBTEST: basic-brightness
>    * Description: Test the basic brightness.
> - * Driver requirement: i915, xe
> - * Functionality: backlight
> - * Mega feature: Display Power
> - * Test category: functionality test
>    *
>    * SUBTEST: fade
>    * Description: Test basic fade.
> - * Driver requirement: i915, xe
> - * Functionality: backlight
> - * Mega feature: Display Power
> - * Test category: functionality test
>    *
>    * SUBTEST: fade-with-dpms
>    * Description: Test the fade with DPMS.
> - * Driver requirement: i915, xe
>    * Functionality: dpms, backlight
> - * Mega feature: Display Power
> - * Test category: functionality test
>    *
>    * SUBTEST: fade-with-suspend
>    * Description: Test the fade with suspend.
> - * Driver requirement: i915, xe
>    * Functionality: backlight, suspend
> - * Mega feature: Display Power
> - * Test category: functionality test
>    */
>   
>   struct context {
> diff --git a/tests/intel/kms_pm_dc.c b/tests/intel/kms_pm_dc.c
> index 1c33206fc..f11d6d29a 100644
> --- a/tests/intel/kms_pm_dc.c
> +++ b/tests/intel/kms_pm_dc.c
> @@ -26,6 +26,10 @@
>    * TEST: kms pm dc
>    * Category: Display
>    * Description: Tests to validate display power DC states.
> + * Driver requirement: i915, xe
> + * Functionality: dpms, pm_dc
> + * Mega feature: Display Power
> + * Test category: functionality test
>    */
>   
>   #include <errno.h>
> @@ -48,55 +52,30 @@
>    * SUBTEST: dc3co-vpb-simulation
>    * Description: Make sure that system enters DC3CO when PSR2 is active and system
>    *              is in SLEEP state
> - * Driver requirement: i915, xe
>    * Functionality: dc3co, pm_dc, psr2
> - * Mega feature: Display Power
> - * Test category: functionality test
>    *
>    * SUBTEST: dc5-dpms
>    * Description: Validate display engine entry to DC5 state while all connectors's
>    *              DPMS property set to OFF
> - * Driver requirement: i915, xe
> - * Functionality: dpms, pm_dc
> - * Mega feature: Display Power
> - * Test category: functionality test
>    *
>    * SUBTEST: dc5-dpms-negative
>    * Description: Validate negative scenario of DC5 display engine entry to DC5 state
>    *              while all connectors's DPMS property set to ON
> - * Driver requirement: i915, xe
> - * Functionality: dpms, pm_dc
> - * Mega feature: Display Power
> - * Test category: functionality test
>    *
>    * SUBTEST: dc5-psr
>    * Description: This test validates display engine entry to DC5 state while PSR is active
> - * Driver requirement: i915, xe
>    * Functionality: pm_dc, psr
> - * Mega feature: Display Power
> - * Test category: functionality test
>    *
>    * SUBTEST: dc6-dpms
>    * Description: Validate display engine entry to DC6 state while all connectors's
>    *              DPMS property set to OFF
> - * Driver requirement: i915, xe
> - * Functionality: dpms, pm_dc
> - * Mega feature: Display Power
> - * Test category: functionality test
>    *
>    * SUBTEST: dc6-psr
>    * Description: This test validates display engine entry to DC6 state while PSR is active
> - * Driver requirement: i915, xe
>    * Functionality: pm_dc, psr
> - * Mega feature: Display Power
> - * Test category: functionality test
>    *
>    * SUBTEST: dc9-dpms
>    * Description: This test validates display engine entry to DC9 state
> - * Driver requirement: i915, xe
> - * Functionality: dpms, pm_dc
> - * Mega feature: Display Power
> - * Test category: functionality test
>    */
>   
>   /* DC State Flags */
> diff --git a/tests/intel/kms_pm_lpsp.c b/tests/intel/kms_pm_lpsp.c
> index 4ac99faf7..30158f673 100644
> --- a/tests/intel/kms_pm_lpsp.c
> +++ b/tests/intel/kms_pm_lpsp.c
> @@ -26,8 +26,11 @@
>   
>   /**
>    * TEST: kms pm lpsp
> - * Description: These tests validates display Low Power Single Pipe configurations
>    * Category: Display
> + * Description: These tests validates display Low Power Single Pipe configurations
> + * Functionality: pm_lpsp
> + * Mega feature: Display Power
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -43,16 +46,10 @@
>    * SUBTEST: kms-lpsp
>    * Description: This test validates lpsp on all connected outputs on low power pipes
>    * Driver requirement: i915, xe
> - * Functionality: pm_lpsp
> - * Mega feature: Display Power
> - * Test category: functionality test
>    *
>    * SUBTEST: screens-disabled
>    * Description: This test validates lpsp while all crtc are disabled
>    * Driver requirement: i915
> - * Functionality: pm_lpsp
> - * Mega feature: Display Power
> - * Test category: functionality test
>    */
>   
>   #define MAX_SINK_LPSP_INFO_BUF_LEN	4096
> diff --git a/tests/intel/kms_pm_rpm.c b/tests/intel/kms_pm_rpm.c
> index 14f34d904..97c886a6e 100644
> --- a/tests/intel/kms_pm_rpm.c
> +++ b/tests/intel/kms_pm_rpm.c
> @@ -76,9 +76,11 @@
>    *
>    * SUBTEST: fences
>    * Description: Sanity test for drm fences.
> + * Driver requirement: i915
>    *
>    * SUBTEST: fences-dpms
>    * Description: Sanity test for drm fences with dpms.
> + * Driver requirement: i915
>    * Functionality: dpms, pm_rpm
>    *
>    * SUBTEST: i2c
> @@ -121,9 +123,11 @@
>    *
>    * SUBTEST: pm-caching
>    * Description: Test to change different cache levels & check for rpm
> + * Driver requirement: i915
>    *
>    * SUBTEST: pm-tiling
>    * Description: Test to change different tiling methods & check for rpm
> + * Driver requirement: i915
>    * Functionality: pm_rpm, tiling
>    *
>    * SUBTEST: system-suspend-modeset
> diff --git a/tests/intel/kms_psr.c b/tests/intel/kms_psr.c
> index 1586d3bf0..b9e95fdfe 100644
> --- a/tests/intel/kms_psr.c
> +++ b/tests/intel/kms_psr.c
> @@ -26,6 +26,9 @@
>    * TEST: kms psr
>    * Category: Display
>    * Description: Tests behaviour of PSR & PSR2 & PR
> + * Driver requirement: i915, xe
> + * Mega feature: PSR
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -41,18 +44,13 @@
>   /**
>    * SUBTEST: psr_basic
>    * Description: Basic check for psr if it is detecting changes made in planes
> - * Driver requirement: i915, xe
>    * Functionality: psr
> - * Mega feature: PSR
> - * Test category: functionality test
>    *
>    * SUBTEST: psr_%s_%s
>    * Description: Check if psr is detecting memory mapping, rendering and plane
>    *              operations performed on %arg[1]
>    * Driver requirement: i915
>    * Functionality: kms_core, plane, psr
> - * Mega feature: PSR
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -70,18 +68,12 @@
>    * SUBTEST: psr_sprite_plane_move
>    * Description: Check if psr is detecting memory mapping, rendering and plane
>    *              operations performed on sprite planes
> - * Driver requirement: i915, xe
>    * Functionality: plane, psr
> - * Mega feature: PSR
> - * Test category: functionality test
>    *
>    * SUBTEST: psr_%s_%s
>    * Description: Check if psr is detecting memory mapping, rendering and plane
>    *              operations performed on %arg[1] planes
> - * Driver requirement: i915, xe
>    * Functionality: kms_core, plane, psr
> - * Mega feature: PSR
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -99,10 +91,7 @@
>    * SUBTEST: psr_primary_%s
>    * Description: Check if psr is detecting memory mapping, rendering and plane
>    *              operations performed on %arg[1] planes
> - * Driver requirement: i915, xe
>    * Functionality: kms_core, psr
> - * Mega feature: PSR
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -114,63 +103,40 @@
>    * SUBTEST: psr_dpms
>    * Description: Check if psr is detecting changes when rendering operation is
>    *              performed  with dpms enabled or disabled
> - * Driver requirement: i915, xe
>    * Functionality: dpms, psr
> - * Mega feature: PSR
> - * Test category: functionality test
>    *
>    * SUBTEST: psr_no_drrs
>    * Description: Check if psr is detecting changes when drrs is disabled
> - * Driver requirement: i915, xe
>    * Functionality: drrs, psr
> - * Mega feature: PSR
> - * Test category: functionality test
>    *
>    * SUBTEST: psr_suspend
>    * Description: Check if psr is detecting changes when plane operation
>    *              is performed with suspend resume cycles
> - * Driver requirement: i915, xe
>    * Functionality: psr, suspend
> - * Mega feature: PSR
> - * Test category: functionality test
>    *
>    * SUBTEST: psr2_dpms
>    * Description: Check if psr is detecting changes when rendering operation
>    *              is performed  with dpms enabled or disabled
> - * Driver requirement: i915, xe
>    * Functionality: dpms, psr, psr2
> - * Mega feature: PSR
> - * Test category: functionality test
>    *
>    * SUBTEST: psr2_no_drrs
>    * Description: Check if psr is detecting changes when drrs is disabled
> - * Driver requirement: i915, xe
>    * Functionality: drrs, psr, psr2
> - * Mega feature: PSR
> - * Test category: functionality test
>    *
>    * SUBTEST: psr2_suspend
>    * Description: Check if psr is detecting changes when plane operation is
>    *              performed with suspend resume cycles
> - * Driver requirement: i915, xe
>    * Functionality: psr, psr2, suspend
> - * Mega feature: PSR
> - * Test category: functionality test
>    *
>    * SUBTEST: psr2_basic
>    * Description: Basic check for psr if it is detecting changes made in planes
> - * Driver requirement: i915, xe
>    * Functionality: psr, psr2
> - * Mega feature: PSR
> - * Test category: functionality test
>    *
>    * SUBTEST: psr2_%s_%s
>    * Description: Check if psr2 is detecting memory mapping, rendering and plane
>    *              operations performed on %arg[1] planes
>    * Driver requirement: i915
>    * Functionality: kms_core, plane, psr, psr2
> - * Mega feature: PSR
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -188,18 +154,12 @@
>    * SUBTEST: psr2_primary_page_flip
>    * Description: Check if psr is detecting memory mapping, rendering and plane
>    *              operations performed on primary planes
> - * Driver requirement: i915, xe
>    * Functionality: plane, psr, psr2
> - * Mega feature: PSR
> - * Test category: functionality test
>    *
>    * SUBTEST: psr2_primary_%s
>    * Description: Check if psr is detecting memory mapping, rendering and plane
>    *              operations performed on primary planes
> - * Driver requirement: i915, xe
>    * Functionality: kms_core, plane, psr, psr2
> - * Mega feature: PSR
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -211,10 +171,7 @@
>    * SUBTEST: psr2_%s_%s
>    * Description: Check if psr is detecting memory mapping, rendering and plane
>    *              operations performed on %arg[1] planes
> - * Driver requirement: i915, xe
>    * Functionality: kms_core, plane, psr, psr2
> - * Mega feature: PSR
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -233,32 +190,24 @@
>    * SUBTEST: pr_dpms
>    * Description: Check if pr is detecting changes when rendering operation
>    *              is performed with dpms enabled or disabled
> - * Driver requirement: i915, xe
>    * Functionality: dpms, pr
>    * Mega feature: Panel Replay
> - * Test category: functionality test
>    *
>    * SUBTEST: pr_no_drrs
>    * Description: Check if pr is detecting changes when drrs is disabled
> - * Driver requirement: i915, xe
>    * Functionality: drrs, pr
>    * Mega feature: Panel Replay
> - * Test category: functionality test
>    *
>    * SUBTEST: pr_suspend
>    * Description: Check if pr is detecting changes when plane operation is
>    *              performed with suspend resume cycles
> - * Driver requirement: i915, xe
>    * Functionality: pr, suspend
>    * Mega feature: Panel Replay
> - * Test category: functionality test
>    *
>    * SUBTEST: pr_basic
>    * Description: Basic check for pr if it is detecting changes made in planes
> - * Driver requirement: i915, xe
>    * Functionality: pr
>    * Mega feature: Panel Replay
> - * Test category: functionality test
>    */
>   
>   /**
> @@ -268,7 +217,6 @@
>    * Driver requirement: i915
>    * Functionality: kms_core, plane, pr
>    * Mega feature: Panel Replay
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -286,18 +234,14 @@
>    * SUBTEST: pr_primary_page_flip
>    * Description: Check if pr is detecting memory mapping, rendering and plane
>    *              operations performed on primary planes
> - * Driver requirement: i915, xe
>    * Functionality: plane, pr
>    * Mega feature: Panel Replay
> - * Test category: functionality test
>    *
>    * SUBTEST: pr_primary_%s
>    * Description: Check if pr is detecting memory mapping, rendering and plane
>    *              operations performed on primary planes
> - * Driver requirement: i915, xe
>    * Functionality: kms_core, plane, pr
>    * Mega feature: Panel Replay
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -309,10 +253,8 @@
>    * SUBTEST: pr_%s_%s
>    * Description: Check if pr is detecting memory mapping, rendering and plane
>    *              operations performed on %arg[1] planes
> - * Driver requirement: i915, xe
>    * Functionality: kms_core, plane, pr
>    * Mega feature: Panel Replay
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -331,26 +273,17 @@
>    * SUBTEST: psr_cursor_plane_move
>    * Description: Check if psr is detecting the plane operations performed on
>    *		cursor planes
> - * Driver requirement: i915, xe
> - * Test category: functionality test
>    * Functionality: psr
> - * Mega feature: PSR
>    *
>    * SUBTEST: psr_primary_page_flip
>    * Description: Check if psr is detecting page-flipping operations performed
>    *		on primary planes
> - * Driver requirement: i915, xe
> - * Test category: functionality test
>    * Functionality: psr
> - * Mega feature: PSR
>    *
>    * SUBTEST: psr_sprite_plane_onoff
>    * Description: Check if psr is detecting the plane operations performed on
>    *		sprite planes
> - * Driver requirement: i915, xe
> - * Test category: functionality test
>    * Functionality: psr
> - * Mega feature: PSR
>    */
>   
>   enum operations {
> diff --git a/tests/intel/kms_psr2_sf.c b/tests/intel/kms_psr2_sf.c
> index a93d496e8..27faa93d9 100644
> --- a/tests/intel/kms_psr2_sf.c
> +++ b/tests/intel/kms_psr2_sf.c
> @@ -27,6 +27,10 @@
>    * Category: Display
>    * Description: Tests to varify PSR2 selective fetch by sending multiple damaged
>    *              areas
> + * Driver requirement: i915, xe
> + * Functionality: plane, psr2, selective_fetch
> + * Mega feature: PSR
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -42,10 +46,6 @@
>    * SUBTEST: %s-plane-move-continuous-%s
>    * Description: Test that selective fetch works on moving %arg[1] plane %arg[2]
>    *              visible area (no update)
> - * Driver requirement: i915, xe
> - * Functionality: plane, psr2, selective_fetch
> - * Mega feature: PSR
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -62,53 +62,25 @@
>   /**
>    * SUBTEST: cursor-plane-update-sf
>    * Description: Test that selective fetch works on cursor plane
> - * Driver requirement: i915, xe
> - * Functionality: cursor, psr2, selective_fetch
> - * Mega feature: PSR
> - * Test category: functionality test
>    *
>    * SUBTEST: overlay-plane-update-continuous-sf
>    * Description: Test that selective fetch works on overlay plane
> - * Driver requirement: i915, xe
> - * Functionality: plane, psr2, selective_fetch
> - * Mega feature: PSR
> - * Test category: functionality test
>    *
>    * SUBTEST: overlay-plane-update-sf-dmg-area
>    * Description: Test that selective fetch works on overlay plane
> - * Driver requirement: i915, xe
> - * Functionality: plane, psr2, selective_fetch
> - * Mega feature: PSR
> - * Test category: functionality test
>    *
>    * SUBTEST: overlay-primary-update-sf-dmg-area
>    * Description: Test that selective fetch works on primary plane with blended
>    *              overlay plane
> - * Driver requirement: i915, xe
> - * Functionality: plane, psr2, selective_fetch
> - * Mega feature: PSR
> - * Test category: functionality test
>    *
>    * SUBTEST: plane-move-sf-dmg-area
>    * Description: Test that selective fetch works on moving overlay plane
> - * Driver requirement: i915, xe
> - * Functionality: plane, psr2, selective_fetch
> - * Mega feature: PSR
> - * Test category: functionality test
>    *
>    * SUBTEST: primary-plane-update-sf-dmg-area
>    * Description: Test that selective fetch works on primary plane
> - * Driver requirement: i915, xe
> - * Functionality: plane, psr2, selective_fetch
> - * Mega feature: PSR
> - * Test category: functionality test
>    *
>    * SUBTEST: primary-plane-update-sf-dmg-area-big-fb
>    * Description: Test that selective fetch works on primary plane with big fb
> - * Driver requirement: i915, xe
> - * Functionality: plane, psr2, selective_fetch
> - * Mega feature: PSR
> - * Test category: functionality test
>    */
>   
>   IGT_TEST_DESCRIPTION("Tests to varify PSR2 selective fetch by sending multiple"
> diff --git a/tests/intel/kms_psr2_su.c b/tests/intel/kms_psr2_su.c
> index 56f35622e..96b4fd2b4 100644
> --- a/tests/intel/kms_psr2_su.c
> +++ b/tests/intel/kms_psr2_su.c
> @@ -26,6 +26,9 @@
>    * TEST: kms psr2 su
>    * Category: Display
>    * Description: Test PSR2 selective update
> + * Driver requirement: i915, xe
> + * Mega feature: PSR
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -40,17 +43,11 @@
>   /**
>    * SUBTEST: frontbuffer-XRGB8888
>    * Description: Test that selective update works when screen changes
> - * Driver requirement: i915, xe
>    * Functionality: fbt, psr2, selective_update
> - * Mega feature: PSR
> - * Test category: functionality test
>    *
>    * SUBTEST: page_flip-%s
>    * Description: Test the selective update with %arg[1] when screen changes
> - * Driver requirement: i915, xe
>    * Functionality: pixel-format, psr2, selective_update
> - * Mega feature: PSR
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> diff --git a/tests/intel/kms_psr_stress_test.c b/tests/intel/kms_psr_stress_test.c
> index 21814f35b..28529b1f1 100644
> --- a/tests/intel/kms_psr_stress_test.c
> +++ b/tests/intel/kms_psr_stress_test.c
> @@ -2,6 +2,10 @@
>   /**
>    * TEST: kms psr stress test
>    * Category: Display
> + * Driver requirement: i915, xe
> + * Functionality: plane, psr
> + * Mega feature: PSR
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -18,18 +22,10 @@
>    * SUBTEST: flip-primary-invalidate-overlay
>    * Description: Mix page flips in primary plane and frontbuffer writes to overlay
>    *              plane and check for warnings, underruns or PSR state changes
> - * Driver requirement: i915, xe
> - * Functionality: plane, psr
> - * Mega feature: PSR
> - * Test category: functionality test
>    *
>    * SUBTEST: invalidate-primary-flip-overlay
>    * Description: Mix frontbuffer writes to the primary plane and page flips in the
>    *              overlay plane and check for warnings, underruns or PSR state changes
> - * Driver requirement: i915, xe
> - * Functionality: plane, psr
> - * Mega feature: PSR
> - * Test category: functionality test
>    */
>   
>   #define INVALIDATES_PER_SEC 15
> diff --git a/tests/kms_addfb_basic.c b/tests/kms_addfb_basic.c
> index 9f8bf4275..b27475ada 100644
> --- a/tests/kms_addfb_basic.c
> +++ b/tests/kms_addfb_basic.c
> @@ -29,6 +29,10 @@
>    * TEST: kms addfb basic
>    * Category: Display
>    * Description: Sanity test for ioctls DRM_IOCTL_MODE_ADDFB2 & DRM_IOCTL_MODE_RMFB.
> + * Driver requirement: i915, xe
> + * Functionality: kms_gem_interop
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -53,39 +57,22 @@
>   /**
>    * SUBTEST: unused-%s
>    * Description: Test that addfb2 call fails correctly for unused %arg[1]
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: kms_gem_interop
> - * Mega feature: General Display Features
>    *
>    * SUBTEST: unused-modifier
>    * Description: Test that addfb2 call fails correctly for unused modifier
> - * Driver requirement: i915, xe
> - * Test category: functionality test
>    * Functionality: kms_gem_interop, tiling
> - * Mega feature: General Display Features
>    *
>    * SUBTEST: clobberred-modifier
>    * Description: Check if addfb2 call works for clobbered modifier
>    * Driver requirement: i915
>    * Functionality: kms_gem_interop, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: invalid-smem-bo-on-discrete
>    * Description: Check if addfb2 with a system memory gem object fails correctly
>    *              if device requires local memory framebuffers
> - * Driver requirement: i915, xe
> - * Functionality: kms_gem_interop
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: legacy-format
>    * Description: Check if addfb2 call works for legacy formats
> - * Driver requirement: i915, xe
> - * Functionality: kms_gem_interop
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -97,24 +84,12 @@
>   /**
>    * SUBTEST: no-handle
>    * Description: Test that addfb2 call fails correctly without handle
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: kms_gem_interop
> - * Mega feature: General Display Features
>    *
>    * SUBTEST: basic
>    * Description: Check if addfb2 call works with given handle
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: kms_gem_interop
> - * Mega feature: General Display Features
>    *
>    * SUBTEST: bad-pitch-%i
>    * Description: bad-pitch-%arg[1]: Test that addfb2 call fails correctly for bad-pitches
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: kms_gem_interop
> - * Mega feature: General Display Features
>    *
>    * arg[1].values: 0, 32, 63, 128, 256, 999, 1024, 65536
>    */
> @@ -122,24 +97,16 @@
>   /**
>    * SUBTEST: basic-%s-tiled-legacy
>    * Description: Check if addfb2 and rmfb call works for basic %arg[1] test
> - * Driver requirement: i915, xe
> - * Test category: functionality test
>    * Functionality: kms_gem_interop, tiling
> - * Mega feature: General Display Features
>    *
>    * SUBTEST: framebuffer-vs-set-tiling
>    * Description: Check if addfb2 call works for x and y tiling
>    * Driver requirement: i915
> - * Test category: functionality test
>    * Functionality: kms_gem_interop, tiling
> - * Mega feature: General Display Features
>    *
>    * SUBTEST: tile-pitch-mismatch
>    * Description: Test that addfb2 call fails correctly for pitches mismatch
> - * Driver requirement: i915, xe
> - * Test category: functionality test
>    * Functionality: kms_gem_interop, tiling
> - * Mega feature: General Display Features
>    *
>    * arg[1]:
>    *
> @@ -150,99 +117,56 @@
>   /**
>    * SUBTEST: size-max
>    * Description: Check if addfb2 call works with max size of buffer object
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: kms_gem_interop
> - * Mega feature: General Display Features
>    *
>    * SUBTEST: too-wide
>    * Description: Test that addfb2 call fails correctly with increased width of fb
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: kms_gem_interop
> - * Mega feature: General Display Features
>    *
>    * SUBTEST: too-high
>    * Description: Test that addfb2 call fails correctly with increased height of fb
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: kms_gem_interop
> - * Mega feature: General Display Features
>    *
>    * SUBTEST: bo-too-small
>    * Description: Test that addfb2 call fails correctly with small size of buffer object
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: kms_gem_interop
> - * Mega feature: General Display Features
>    *
>    * SUBTEST: small-bo
>    * Description: Check if addfb2 call works for given height
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: kms_gem_interop
> - * Mega feature: General Display Features
>    *
>    * SUBTEST: bo-too-small-due-to-tiling
>    * Description: Test that addfb2 call fails correctly with small buffer object
>    *              after changing tile
> - * Driver requirement: i915
> - * Test category: functionality test
>    * Functionality: kms_gem_interop, tiling
> - * Mega feature: General Display Features
>    */
>   
>   /**
>    * SUBTEST: addfb25-modifier-no-flag
>    * Description: Test that addfb2 call fails correctly for x-tiling with given modifier
> - * Driver requirement: i915, xe
> - * Test category: functionality test
>    * Functionality: kms_gem_interop, tiling
> - * Mega feature: General Display Features
>    *
>    * SUBTEST: addfb25-bad-modifier
>    * Description: Test that addfb2 call fails correctly for irrelevant modifier
> - * Driver requirement: i915, xe
> - * Test category: functionality test
>    * Functionality: kms_gem_interop, tiling
> - * Mega feature: General Display Features
>    *
>    * SUBTEST: addfb25-x-tiled-mismatch-legacy
>    * Description: Test that addfb2 call fails correctly for irrelevant x-tiling
> - * Driver requirement: i915, xe
> - * Test category: functionality test
>    * Functionality: kms_gem_interop, tiling
> - * Mega feature: General Display Features
>    *
>    * SUBTEST: addfb25-x-tiled-legacy
>    * Description: Check if addfb2 call works for x-tiling
> - * Driver requirement: i915, xe
> - * Test category: functionality test
>    * Functionality: kms_gem_interop, tiling
> - * Mega feature: General Display Features
>    *
>    * SUBTEST: addfb25-framebuffer-vs-set-tiling
>    * Description: Check if addfb2 call works for relevant combination of tiling and fbs
>    * Driver requirement: i915
> - * Test category: functionality test
>    * Functionality: kms_gem_interop, tiling
> - * Mega feature: General Display Features
>    */
>   
>   /**
>    * SUBTEST: addfb25-y-tiled-%s
>    * Description: Check if addfb2 call works for y-tiling %arg[1]
> - * Driver requirement: i915, xe
>    * Functionality: kms_gem_interop, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: addfb25-yf-tiled-legacy
>    * Description: Check if addfb2 call works for yf-tiling
> - * Driver requirement: i915, xe
>    * Functionality: kms_gem_interop, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -253,19 +177,10 @@
>   /**
>    * SUBTEST: addfb25-4-tiled
>    * Description: Check if addfb2 call works for tiling-4
> - * Driver requirement: i915, xe
>    * Functionality: kms_gem_interop, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
> - */
> -
> -/**
> + *
>    * SUBTEST: invalid-%s-%s
>    * Description: Test that %arg[1] ioctl call fails correctly for %arg[2] object
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: kms_gem_interop
> - * Mega feature: General Display Features
>    *
>    * arg[1]:
>    *
> @@ -281,10 +196,6 @@
>   /**
>    * SUBTEST: master-rmfb
>    * Description: Check that only master can rmfb
> - * Driver requirement: i915, xe
> - * Functionality: kms_gem_interop
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    */
>   
>   static uint32_t gem_bo;
> diff --git a/tests/kms_async_flips.c b/tests/kms_async_flips.c
> index 82a8f5ef3..6fddad093 100644
> --- a/tests/kms_async_flips.c
> +++ b/tests/kms_async_flips.c
> @@ -29,6 +29,10 @@
>    * TEST: kms async flips
>    * Category: Display
>    * Description: Test asynchronous page flips.
> + * Driver requirement: i915, xe
> + * Functionality: async_flips, vblank
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -42,48 +46,26 @@
>    * SUBTEST: alternate-sync-async-flip
>    * Description: Verify the async flip functionality and the fps during async flips
>    *              Alternate between sync and async flips
> - * Driver requirement: i915, xe
> - * Functionality: async_flips, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: async-flip-with-page-flip-events
>    * Description: Verify the async flip functionality and the fps during async flips
>    *              Wait for page flip events in between successive asynchronous flips
> - * Driver requirement: i915, xe
> - * Functionality: async_flips, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: test-time-stamp
>    * Description: Verify the async flip functionality and the fps during async flips
>    *              Verify that the async flip timestamp does not coincide with either
>    *              previous or next vblank
> - * Driver requirement: i915, xe
> - * Functionality: async_flips, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: test-cursor
>    * Description: Verify that the DRM_IOCTL_MODE_CURSOR passes after async flip
> - * Driver requirement: i915, xe
>    * Functionality: async_flips, cursor, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: crc
>    * Description: Use CRC to verify async flip scans out the correct framebuffer
> - * Driver requirement: i915, xe
>    * Functionality: async_flips, crc, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: invalid-async-flip
>    * Description: Negative case to verify if changes in fb are rejected from kernel as expected
> - * Driver requirement: i915, xe
> - * Functionality: async_flips, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    */
>   
>   #define CURSOR_POS 128
> diff --git a/tests/kms_atomic.c b/tests/kms_atomic.c
> index 9b69fc892..aa3af936a 100644
> --- a/tests/kms_atomic.c
> +++ b/tests/kms_atomic.c
> @@ -31,6 +31,10 @@
>    * TEST: kms atomic
>    * Category: Display
>    * Description: Test atomic modesetting API
> + * Driver requirement: i915, xe
> + * Functionality: kms_core, plane
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include <unistd.h>
> @@ -53,49 +57,27 @@
>    * Description: Test abuse the atomic ioctl directly in order to test various
>    *              invalid conditions which the libdrm wrapper won't allow us to
>    *              create.
> - * Driver requirement: i915, xe
>    * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: atomic-plane-damage
>    * Description: Simple test cases to use FB_DAMAGE_CLIPS plane property
> - * Driver requirement: i915, xe
> - * Functionality: kms_core, plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: test-only
>    * Description: Test to ensure that DRM_MODE_ATOMIC_TEST_ONLY really only touches
>    *              the free-standing state objects and nothing else.
> - * Driver requirement: i915, xe
>    * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: plane-primary-overlay-mutable-zpos
>    * Description: Verify that the overlay plane can cover the primary one (and
>    *              vice versa) by changing their zpos property.
> - * Driver requirement: i915, xe
> - * Functionality: kms_core, plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: plane-immutable-zpos
>    * Description: Verify the reported zpos property of planes by making sure only
>    *              higher zpos planes cover the lower zpos ones.
> - * Driver requirement: i915, xe
> - * Functionality: kms_core, plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: plane-%s-legacy
>    * Description: Test for KMS atomic modesetting on %arg[1] and ensure coherency
>    *              between legacy and atomic interfaces.
> - * Driver requirement: i915, xe
> - * Functionality: kms_core, plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -107,10 +89,6 @@
>   /**
>    * SUBTEST: %s-invalid-%s
>    * Description: Test error handling when invalid %arg[1] %arg[2] are passed
> - * Driver requirement: i915, xe
> - * Functionality: kms_core, plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -123,8 +101,6 @@
>    * @params-fence:     fence parameters
>    */
>   
> -
> -
>   #ifndef DRM_CAP_CURSOR_WIDTH
>   #define DRM_CAP_CURSOR_WIDTH 0x8
>   #endif
> diff --git a/tests/kms_atomic_interruptible.c b/tests/kms_atomic_interruptible.c
> index 7419e0746..962c33f6f 100644
> --- a/tests/kms_atomic_interruptible.c
> +++ b/tests/kms_atomic_interruptible.c
> @@ -25,6 +25,9 @@
>    * TEST: kms atomic interruptible
>    * Category: Display
>    * Description: Tests that interrupt various atomic ioctls.
> + * Driver requirement: i915, xe
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include <signal.h>
> @@ -36,10 +39,7 @@
>   /**
>    * SUBTEST: %s-setmode
>    * Description: Tests the interrupt properties of %arg[1] modeset
> - * Driver requirement: i915, xe
>    * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -50,31 +50,19 @@
>   /**
>    * SUBTEST: legacy-cursor
>    * Description: Tests the interrupt properties for Cursor
> - * Driver requirement: i915, xe
>    * Functionality: cursor, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: legacy-dpms
>    * Description: Tests the interrupt properties for DPMS
> - * Driver requirement: i915, xe
>    * Functionality: dpms, kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: legacy-pageflip
>    * Description: Tests the interrupt properties for page flip
> - * Driver requirement: i915, xe
>    * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: universal-setplane-%s
>    * Description: Tests the interrupt properties for %arg[1]
> - * Driver requirement: i915, xe
>    * Functionality: kms_core, plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> diff --git a/tests/kms_atomic_transition.c b/tests/kms_atomic_transition.c
> index b8053acf7..210986f55 100644
> --- a/tests/kms_atomic_transition.c
> +++ b/tests/kms_atomic_transition.c
> @@ -24,6 +24,10 @@
>   /**
>    * TEST: kms atomic transition
>    * Category: Display
> + * Driver requirement: i915, xe
> + * Functionality: plane, watermark
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -41,17 +45,10 @@
>   /**
>    * SUBTEST: plane-primary-toggle-with-vblank-wait
>    * Description: Check toggling of primary plane with vblank
> - * Driver requirement: i915, xe
>    * Functionality: plane, vblank, watermark
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: plane-all-modeset-%s
>    * Description: Modeset test for all plane combinations %arg[1]
> - * Driver requirement: i915, xe
> - * Functionality: plane, watermark
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -62,10 +59,7 @@
>   /**
>    * SUBTEST: plane-all-modeset-%s
>    * Description: Modeset test for all plane combinations %arg[1]
> - * Driver requirement: i915, xe
> - * Functionality: plane, watermark
>    * Mega feature: eDP
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -76,10 +70,6 @@
>   /**
>    * SUBTEST: plane-all-%s
>    * Description: Transition test for all plane combinations %arg[1]
> - * Driver requirement: i915, xe
> - * Functionality: plane, watermark
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -92,18 +82,10 @@
>   /**
>    * SUBTEST: plane-toggle-modeset-transition
>    * Description: Check toggling and modeset transition on plane
> - * Driver requirement: i915, xe
> - * Functionality: plane, watermark
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: plane-use-after-nonblocking-%s
>    * Description: Transition test with non %arg[1] and make sure commit of disabled
>    *              plane has to complete before atomic commit on that plane
> - * Driver requirement: i915, xe
> - * Functionality: plane, watermark
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -114,10 +96,6 @@
>   /**
>    * SUBTEST: modeset-%s
>    * Description: Modeset transition tests for combinations of %arg[1]
> - * Driver requirement: i915, xe
> - * Functionality: plane, watermark
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> diff --git a/tests/kms_bw.c b/tests/kms_bw.c
> index 0199b5675..ddea7f2ff 100644
> --- a/tests/kms_bw.c
> +++ b/tests/kms_bw.c
> @@ -24,6 +24,10 @@
>    * TEST: kms bw
>    * Category: Display
>    * Description: BW test with different resolutions
> + * Driver requirement: i915, xe
> + * Functionality: kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "drm_mode.h"
> @@ -35,10 +39,6 @@
>   /**
>    * SUBTEST: linear-tiling-%d-displays-%s
>    * Description: bw test with %arg[2]
> - * Driver requirement: i915, xe
> - * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1].values: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
>    *
> diff --git a/tests/kms_color.c b/tests/kms_color.c
> index 119dfc1f4..39752de81 100644
> --- a/tests/kms_color.c
> +++ b/tests/kms_color.c
> @@ -26,6 +26,10 @@
>    * TEST: kms color
>    * Category: Display
>    * Description: Test Color Features at Pipe level
> + * Driver requirement: i915, xe
> + * Functionality: colorspace
> + * Mega feature: Color mgmt
> + * Test category: functionality test
>    */
>   
>   #include "kms_color_helper.h"
> @@ -33,39 +37,19 @@
>   /**
>    * SUBTEST: degamma
>    * Description: Verify that degamma LUT transformation works correctly
> - * Driver requirement: i915, xe
> - * Functionality: colorspace
> - * Mega feature: Color mgmt
> - * Test category: functionality test
>    *
>    * SUBTEST: gamma
>    * Description: Verify that gamma LUT transformation works correctly
> - * Driver requirement: i915, xe
> - * Functionality: colorspace
> - * Mega feature: Color mgmt
> - * Test category: functionality test
>    *
>    * SUBTEST: legacy-gamma
>    * Description: Verify that legacy gamma LUT transformation works correctly
> - * Driver requirement: i915, xe
> - * Functionality: colorspace
> - * Mega feature: Color mgmt
> - * Test category: functionality test
>    *
>    * SUBTEST: legacy-gamma-reset
>    * Description: Verify that setting the legacy gamma LUT resets the gamma LUT
>    *              set through GAMMA_LUT property
> - * Driver requirement: i915, xe
> - * Functionality: colorspace
> - * Mega feature: Color mgmt
> - * Test category: functionality test
>    *
>    * SUBTEST: ctm-%s
>    * Description: Check the color transformation %arg[1]
> - * Driver requirement: i915, xe
> - * Functionality: colorspace
> - * Mega feature: Color mgmt
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -83,17 +67,9 @@
>   /**
>    * SUBTEST: deep-color
>    * Description: Verify that deep color works correctly
> - * Driver requirement: i915, xe
> - * Functionality: colorspace
> - * Mega feature: Color mgmt
> - * Test category: functionality test
>    *
>    * SUBTEST: invalid-%s-sizes
>    * Description: Negative check for %arg[1] sizes
> - * Driver requirement: i915, xe
> - * Functionality: colorspace
> - * Mega feature: Color mgmt
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c
> index 988f370f9..6d472ee02 100644
> --- a/tests/kms_content_protection.c
> +++ b/tests/kms_content_protection.c
> @@ -26,6 +26,10 @@
>    * TEST: kms content protection
>    * Category: Display
>    * Description: Test content protection (HDCP)
> + * Driver requirement: i915, xe
> + * Functionality: hdcp1.4
> + * Mega feature: HDCP
> + * Test category: functionality test
>    */
>   
>   #include <poll.h>
> @@ -41,49 +45,27 @@
>   /**
>    * SUBTEST: lic
>    * Description: Test for the integrity of link.
> - * Driver requirement: i915, xe
> - * Functionality: hdcp1.4
> - * Mega feature: HDCP
> - * Test category: functionality test
>    *
>    * SUBTEST: content-type-change
>    * Description: Test the content type change when the content protection already
>    *              enabled
> - * Driver requirement: i915, xe
>    * Functionality: hdcp1.4, hdcp2.2
> - * Mega feature: HDCP
> - * Test category: functionality test
>    *
>    * SUBTEST: mei-interface
>    * Description: Test the teardown and rebuild of the interface between Intel
>    *              and mei hdcp.
> - * Driver requirement: i915, xe
>    * Functionality: hdcp1.4, hdcp2.2
> - * Mega feature: HDCP
> - * Test category: functionality test
>    *
>    * SUBTEST: srm
>    * Description: This test writes the facsimile SRM into the /lib/firmware/ and
>    *              check the kernel parsing of it by invoking the hdcp authentication.
> - * Driver requirement: i915, xe
> - * Functionality: hdcp1.4
> - * Mega feature: HDCP
> - * Test category: functionality test
>    *
>    * SUBTEST: uevent
>    * Description: Test to detect the HDCP status change when we are reading the
>    *              uevent sent with the corresponding connector id and property id.
> - * Driver requirement: i915, xe
> - * Functionality: hdcp1.4
> - * Mega feature: HDCP
> - * Test category: functionality test
>    *
>    * SUBTEST: %s
>    * Description: Test content protection with %arg[1]
> - * Driver requirement: i915, xe
> - * Functionality: hdcp1.4
> - * Mega feature: HDCP
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -96,10 +78,7 @@
>   /**
>    * SUBTEST: dp-mst-%s
>    * Description: Test Content protection %arg[1] over DP MST.
> - * Driver requirement: i915, xe
>    * Functionality: hdcp1.4, mst
> - * Mega feature: HDCP
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> diff --git a/tests/kms_cursor_crc.c b/tests/kms_cursor_crc.c
> index 3d1c3bcd3..f747b919f 100644
> --- a/tests/kms_cursor_crc.c
> +++ b/tests/kms_cursor_crc.c
> @@ -33,6 +33,10 @@
>    *              compares it with the CRC value obtained when the cursor plane
>    *              was disabled and its drawing is directly inserted on the PF by
>    *              software.
> + * Driver requirement: i915, xe
> + * Functionality: cursor
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -45,24 +49,14 @@
>   /**
>    * SUBTEST: cursor-dpms
>    * Description: Check random placement of a cursor with DPMS.
> - * Driver requirement: i915, xe
>    * Functionality: cursor, dpms
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: cursor-suspend
>    * Description: Check random placement of a cursor with suspend.
> - * Driver requirement: i915, xe
>    * Functionality: cursor, suspend
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: cursor-%s
>    * Description: %arg[1]
> - * Driver requirement: i915, xe
> - * Functionality: cursor
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -78,10 +72,6 @@
>   /**
>    * SUBTEST: cursor-%s-%s
>    * Description: Check if a %arg[2] cursor is %arg[1].
> - * Driver requirement: i915, xe
> - * Functionality: cursor
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> diff --git a/tests/kms_cursor_edge_walk.c b/tests/kms_cursor_edge_walk.c
> index d9d140409..54e9dc92f 100644
> --- a/tests/kms_cursor_edge_walk.c
> +++ b/tests/kms_cursor_edge_walk.c
> @@ -25,8 +25,11 @@
>   /**
>    * TEST: kms cursor edge walk
>    * Category: Display
> - * Description: Exercise CHV pipe C cursor fail
>    * Description: Test to check different cursor sizes by walking different edges of screen
> + * Driver requirement: i915, xe
> + * Functionality: cursor
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -39,10 +42,6 @@
>   /**
>    * SUBTEST: %s-%s
>    * Description: Checking cursor size %arg[1] by walking %arg[2] of screen
> - * Driver requirement: i915, xe
> - * Functionality: cursor
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> diff --git a/tests/kms_cursor_legacy.c b/tests/kms_cursor_legacy.c
> index 2e2710ae4..0017659d4 100644
> --- a/tests/kms_cursor_legacy.c
> +++ b/tests/kms_cursor_legacy.c
> @@ -26,6 +26,10 @@
>    * TEST: kms cursor legacy
>    * Category: Display
>    * Description: Stress legacy cursor ioctl
> + * Driver requirement: i915, xe
> + * Functionality: cursor
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include <sched.h>
> @@ -42,10 +46,6 @@
>    * Description: Test checks how many cursor updates we can fit between vblanks
>    *              on single/all pipes with different modes, priority and number
>    *              of processes
> - * Driver requirement: i915, xe
> - * Functionality: cursor
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -62,17 +62,9 @@
>   /**
>    * SUBTEST: basic-busy-flip-before-cursor-%s
>    * Description: Cursor test with %arg[1] mode
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: cursor
> - * Mega feature: General Display Features
>    *
>    * SUBTEST: basic-busy-flip-before-cursor-varying-size
>    * Description: Change the size of cursor b/w 64*64 to maxw x maxh.
> - * Driver requirement: i915, xe
> - * Functionality: cursor
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -83,17 +75,9 @@
>   /**
>    * SUBTEST: basic-flip-after-cursor-%s
>    * Description: Cursor test with %arg[1]
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: cursor
> - * Mega feature: General Display Features
>    *
>    * SUBTEST: basic-flip-before-cursor-%s
>    * Description: Cursor test with %arg[1]
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: cursor
> - * Mega feature: General Display Features
>    *
>    * arg[1]:
>    *
> @@ -110,10 +94,6 @@
>    *		                     and full screen primary plane.\n"
>    *		- toggle: which toggles cursor visibility and make sure cursor moves
>    *		          between updates.
> - * Driver requirement: i915, xe
> - * Functionality: cursor
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -135,10 +115,6 @@
>    *		                     and full screen primary plane.\n"
>    *		- toggle: which toggles cursor visibility and make sure cursor moves
>    *		          between updates.
> - * Driver requirement: i915, xe
> - * Functionality: cursor
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -151,26 +127,14 @@
>    * SUBTEST: long-nonblocking-modeset-vs-cursor-atomic
>    * Description: Test checks how many cursor updates we can fit between vblanks
>    *              on all pipes with different modes, priority and number of processes
> - * Driver requirement: i915, xe
> - * Functionality: cursor
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: nonblocking-modeset-vs-cursor-atomic
>    * Description: Test checks how many cursor updates we can fit between vblanks
>    *              on all pipes with different modes, priority and number of processes
> - * Driver requirement: i915, xe
> - * Functionality: cursor
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: 2x-%s-%s
>    * Description: This test executes flips on both CRTCs while running cursor
>    *              updates in parallel
> - * Driver requirement: i915, xe
> - * Functionality: cursor
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -189,10 +153,6 @@
>    * SUBTEST: 2x-%s-atomic
>    * Description: This test executes flips on both CRTCs while running cursor
>    *              updates in parallel
> - * Driver requirement: i915, xe
> - * Functionality: cursor
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -204,10 +164,6 @@
>    * SUBTEST: %s-%s
>    * Description: The essence of the basic test is that neither the cursor nor the
>    *              nonblocking flip stall the application of the next
> - * Driver requirement: i915, xe
> - * Functionality: cursor
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -231,10 +187,6 @@
>   /**
>    * SUBTEST: 2x-%s-%s
>    * Description: This test executes flips on both CRTCs while running cursor updates in parallel
> - * Driver requirement: i915, xe
> - * Functionality: cursor
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -252,17 +204,9 @@
>   /**
>    * SUBTEST: flip-vs-cursor-crc-%s
>    * Description: this test perform a page flip followed by a cursor update
> - * Driver requirement: i915, xe
> - * Functionality: cursor
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: flip-vs-cursor-busy-crc-%s
>    * Description: this test perform a busy bo update followed by a cursor update
> - * Driver requirement: i915, xe
> - * Functionality: cursor
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -274,10 +218,6 @@
>    * SUBTEST: modeset-atomic-cursor-hotspot
>    * Description: Test changes the cursor hotspot and checks that the property is
>    *              updated accordignly
> - * Driver requirement: i915, xe
> - * Functionality: cursor
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    */
>   
>   #if defined(__x86_64__) || defined(__i386__)
> diff --git a/tests/kms_display_modes.c b/tests/kms_display_modes.c
> index a0a831724..1f0f811c8 100644
> --- a/tests/kms_display_modes.c
> +++ b/tests/kms_display_modes.c
> @@ -28,6 +28,9 @@
>    * TEST: kms display modes
>    * Category: Display
>    * Description: Test Display Modes
> + * Driver requirement: i915, xe
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -36,18 +39,12 @@
>    * SUBTEST: extended-mode-basic
>    * Description: Test for validating display extended mode with a pair of connected
>    *              displays
> - * Driver requirement: i915, xe
>    * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: mst-extended-mode-negative
>    * Description: Negative test for validating display extended mode with a pair
>    *		of connected 2k-4k or 4k-4k displays.
> - * Driver requirement: i915, xe
>    * Functionality: kms_core, mst
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    */
>   
>   #define HDISPLAY_4K	3840
> diff --git a/tests/kms_dither.c b/tests/kms_dither.c
> index 5683fe5c5..af7b7f05c 100644
> --- a/tests/kms_dither.c
> +++ b/tests/kms_dither.c
> @@ -29,6 +29,10 @@
>    * TEST: kms dither
>    * Category: Display
>    * Description: Test Dithering block status
> + * Driver requirement: i915, xe
> + * Functionality: colorspace, kms_gem_interop
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -39,17 +43,9 @@
>   /**
>    * SUBTEST: fb-8bpc-vs-panel-6bpc
>    * Description: Framebuffer BPC:8, Panel BPC:6, Expected Dither:Enable
> - * Driver requirement: i915, xe
> - * Functionality: colorspace, kms_gem_interop
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: fb-8bpc-vs-panel-8bpc
>    * Description: Framebuffer BPC:8, Panel BPC:8, Expected Dither:Disable
> - * Driver requirement: i915, xe
> - * Functionality: colorspace, kms_gem_interop
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    */
>   
>   IGT_TEST_DESCRIPTION("Test Dithering block status");
> diff --git a/tests/kms_feature_discovery.c b/tests/kms_feature_discovery.c
> index 7aec4e78c..24c71ed22 100644
> --- a/tests/kms_feature_discovery.c
> +++ b/tests/kms_feature_discovery.c
> @@ -28,6 +28,10 @@
>    * Description: A metatest that checks for \"features\" presence.
>    *		The subtests here should only skip or pass,
>    *		anything else means we have a serious problem.
> + * Driver requirement: i915, xe
> + * Functionality: feature_discovery
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -42,45 +46,28 @@
>   /**
>    * SUBTEST: display
>    * Description: Make sure that we have display support.
> - * Driver requirement: i915, xe
> - * Functionality: feature_discovery
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: display-%dx
>    * Description: Make sure that we have display support with %arg[1]
>    * 		outputs connected.
> - * Driver requirement: i915, xe
> - * Functionality: feature_discovery
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: chamelium
>    * Description: Make sure that Chamelium is configured and reachable.
> - * Driver requirement: i915, xe
>    * Functionality: feature_discovery, chamelium
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: psr1
>    * Description: Make sure that we have eDP panel with PSR1 support.
> - * Driver requirement: i915, xe
>    * Functionality: feature_discovery, psr1, eDP
>    * Mega feature: PSR
> - * Test category: functionality test
>    *
>    * SUBTEST: psr2
>    * Description: Make sure that we have eDP panel with PSR2 support.
> - * Driver requirement: i915, xe
>    * Functionality: feature_discovery, psr2, eDP
>    * Mega feature: PSR
> - * Test category: functionality test
>    *
>    * SUBTEST: dp-mst
>    * Description: Make sure that we have DP-MST configuration.
> - * Driver requirement: i915, xe
>    * Functionality: feature_discovery, mst
> - * Mega feature: General Display Features
>    * Test category: functionality test
>    *
>    * arg[1].values: 1, 2, 3, 4
> diff --git a/tests/kms_flip.c b/tests/kms_flip.c
> index 9afb78757..3973ec862 100755
> --- a/tests/kms_flip.c
> +++ b/tests/kms_flip.c
> @@ -25,6 +25,10 @@
>    * TEST: kms flip
>    * Category: Display
>    * Description: Tests for validating modeset, dpms and pageflips
> + * Driver requirement: i915, xe
> + * Functionality: vblank
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "config.h"
> @@ -59,16 +63,12 @@
>    * Description: %arg[1] test to validate pageflips with available fences
>    * Driver requirement: i915
>    * Functionality: gtt, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: 2x-%s
>    * Description: %arg[1] test to validate pageflips along with available fences
>    *              on a pair of connected displays
>    * Driver requirement: i915
>    * Functionality: gtt, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -79,10 +79,7 @@
>   /**
>    * SUBTEST: dpms-off-%s
>    * Description: %arg[1] test to validate pageflips by disabling other connectors usng dpms
> - * Driver requirement: i915, xe
>    * Functionality: dpms, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -93,10 +90,7 @@
>   /**
>    * SUBTEST: %s
>    * Description: %arg[1] test to validate pageflips with large BO in size
> - * Driver requirement: i915, xe
>    * Functionality: kms_gem_interop, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -107,17 +101,11 @@
>   /**
>    * SUBTEST: %s
>    * Description: Basic test to validate %arg[1]
> - * Driver requirement: i915, xe
>    * Functionality: hang, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: 2x-%s
>    * Description: Test to validate %arg[1] on a pair of connected displays
> - * Driver requirement: i915, xe
>    * Functionality: hang, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -128,17 +116,9 @@
>   /**
>    * SUBTEST: %s
>    * Description: Basic test to validate %arg[1]
> - * Driver requirement: i915, xe
> - * Functionality: vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: 2x-%s
>    * Description: Test to validate %arg[1] on a pair of connected displays
> - * Driver requirement: i915, xe
> - * Functionality: vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -161,18 +141,12 @@
>   /**
>    * SUBTEST: %s
>    * Description: %arg[1] test to validate pageflips with suspend cycle
> - * Driver requirement: i915, xe
>    * Functionality: suspend, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: 2x-%s
>    * Description: %arg[1] test to validate pageflips with suspend cycle on a pair
>    *              of connected displays
> - * Driver requirement: i915, xe
>    * Functionality: suspend, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -183,31 +157,17 @@
>   /**
>    * SUBTEST: %s
>    * Description: Basic test to validate %arg[1]
> - * Driver requirement: i915, xe
>    * Functionality: dpms, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: 2x-%s
>    * Description: Basic test to validate %arg[1] on a pair of connected displays
> - * Driver requirement: i915, xe
>    * Functionality: dpms, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: %s-interruptible
>    * Description: Basic test to validate %arg[1]
> - * Driver requirement: i915, xe
> - * Functionality: vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: 2x-%s-interruptible
>    * Description: Basic test to validate %arg[1] on a pair of connected displays
> - * Driver requirement: i915, xe
> - * Functionality: vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -222,17 +182,10 @@
>    * SUBTEST: 2x-flip-vs-dpms
>    * Description: Basic test to validate pageflip along with dpms on a pair of
>    *              connected displays
> - * Driver requirement: i915, xe
>    * Functionality: dpms, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: 2x-%s
>    * Description: Basic test to validate %arg[1] on a pair of connected displays
> - * Driver requirement: i915, xe
> - * Functionality: vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -244,18 +197,10 @@
>   /**
>    * SUBTEST: %s-interruptible
>    * Description: Basic test for validating modeset, dpms and pageflips
> - * Driver requirement: i915, xe
> - * Functionality: vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: 2x-%s-interruptible
>    * Description: Test for validating modeset, dpms and pageflips with a pair of
>    *              connected displays
> - * Driver requirement: i915, xe
> - * Functionality: vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -277,31 +222,16 @@
>   /**
>    * SUBTEST: basic-plain-flip
>    * Description: Basic test for validating page flip
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: vblank
> - * Mega feature: General Display Features
>    *
>    * SUBTEST: nonblocking-read
>    * Description: Tests that nonblocking reading fails correctly
> - * Driver requirement: i915, xe
> - * Functionality: vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: basic-flip-vs-dpms
>    * Description: Basic test to valide pageflip with dpms
> - * Driver requirement: i915, xe
> - * Test category: functionality test
>    * Functionality: dpms, vblank
> - * Mega feature: General Display Features
>    *
>    * SUBTEST: basic-flip-vs-%s
>    * Description: Basic test to valide pageflip with %arg[1]
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: vblank
> - * Mega feature: General Display Features
>    *
>    * arg[1]:
>    *
> diff --git a/tests/kms_force_connector_basic.c b/tests/kms_force_connector_basic.c
> index 55e6a7767..392a02f7e 100644
> --- a/tests/kms_force_connector_basic.c
> +++ b/tests/kms_force_connector_basic.c
> @@ -26,6 +26,10 @@
>    * TEST: kms force connector basic
>    * Category: Display
>    * Description: Check the debugfs force connector/edid features work correctly.
> + * Driver requirement: i915, xe
> + * Functionality: force_connector
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -35,29 +39,15 @@
>    * Description: Test to detect forced load.
>    * Driver requirement: i915
>    * Functionality: force_connector, vga
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: force-connector-state
>    * Description: Test to check the forced connector state
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: force_connector
> - * Mega feature: General Display Features
>    *
>    * SUBTEST: force-edid
>    * Description: Test to check the values after forcing edid
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: force_connector
> - * Mega feature: General Display Features
>    *
>    * SUBTEST: prune-stale-modes
>    * Description: Tests pruning of stale modes
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: force_connector
> - * Mega feature: General Display Features
>    */
>   
>   IGT_TEST_DESCRIPTION("Check the debugfs force connector/edid features work"
> diff --git a/tests/kms_getfb.c b/tests/kms_getfb.c
> index b4a155e2d..e6b8dd873 100644
> --- a/tests/kms_getfb.c
> +++ b/tests/kms_getfb.c
> @@ -31,6 +31,10 @@
>    * TEST: kms getfb
>    * Category: Display
>    * Description: Tests GETFB and GETFB2 ioctls.
> + * Driver requirement: i915, xe
> + * Functionality: kms_gem_interop
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -54,10 +58,6 @@
>   /**
>    * SUBTEST: getfb-handle-%s
>    * Description: Tests error handling %arg[1]
> - * Driver requirement: i915, xe
> - * Functionality: kms_gem_interop
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -71,18 +71,11 @@
>    * SUBTEST: getfb-reject-ccs
>    * Description: Tests error handling while requesting CCS buffers it should
>    *              refuse because getfb supports returning a single buffer handle.
> - * Driver requirement: i915, xe
>    * Functionality: ccs, kms_gem_interop, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: getfb-%s-different-handles
>    * Description: Tests error handling while requesting for two different handles
>    *              from %arg[1].
> - * Driver requirement: i915, xe
> - * Functionality: kms_gem_interop
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -93,24 +86,13 @@
>   /**
>    * SUBTEST: getfb2-accept-ccs
>    * Description: Tests outputs are correct when retrieving a CCS framebuffer.
> - * Driver requirement: i915, xe
>    * Functionality: ccs, kms_gem_interop, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: getfb2-into-addfb2
>    * Description: Output check by passing the output of GETFB2 into ADDFB2.
> - * Driver requirement: i915, xe
> - * Functionality: kms_gem_interop
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: getfb2-handle-%s
>    * Description: Tests error handling %arg[1].
> - * Driver requirement: i915, xe
> - * Functionality: kms_gem_interop
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -122,10 +104,6 @@
>   /**
>    * SUBTEST: %s-handle-protection
>    * Description: Make sure %arg[1] return handles if caller is non-root or non-master.
> - * Driver requirement: i915, xe
> - * Functionality: kms_gem_interop
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> diff --git a/tests/kms_hdmi_inject.c b/tests/kms_hdmi_inject.c
> index 3a279e2c9..9691f2818 100644
> --- a/tests/kms_hdmi_inject.c
> +++ b/tests/kms_hdmi_inject.c
> @@ -28,6 +28,9 @@
>    * Description: Test that in-kernel EDID parsing is producing expected results
>    *              by forcing a HDMI connector with a known EDID and checking that
>    *              the metadata exposed to user space matches.
> + * Driver requirement: i915, xe
> + * Mega feature: HDMI
> + * Test category: functionality test
>    */
>   
>   #include "config.h"
> @@ -43,18 +46,12 @@
>    * SUBTEST: inject-4k
>    * Description: Make sure that 4K modes exposed by DRM match the forced EDID and
>    *              modesetting using it succeed.
> - * Driver requirement: i915, xe
>    * Functionality: force_connector, hdmi_edid
> - * Mega feature: HDMI
> - * Test category: functionality test
>    *
>    * SUBTEST: inject-audio
>    * Description: Make sure that audio information exposed by ALSA match the forced
>    *              EDID.
> - * Driver requirement: i915, xe
>    * Functionality: audio, force_connector
> - * Mega feature: HDMI
> - * Test category: functionality test
>    */
>   
>   #define HDISPLAY_4K	3840
> diff --git a/tests/kms_hdr.c b/tests/kms_hdr.c
> index 215f81892..4dd2eda37 100644
> --- a/tests/kms_hdr.c
> +++ b/tests/kms_hdr.c
> @@ -24,6 +24,10 @@
>    * TEST: kms hdr
>    * Category: Display
>    * Description: Test HDR metadata interfaces and bpc switch
> + * Driver requirement: i915, xe
> + * Functionality: colorspace, hdr
> + * Mega feature: HDR
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -35,59 +39,31 @@
>   /**
>    * SUBTEST: bpc-switch
>    * Description: Tests switching between different display output bpc modes
> - * Driver requirement: i915, xe
> - * Functionality: colorspace, hdr
> - * Mega feature: HDR
> - * Test category: functionality test
>    *
>    * SUBTEST: bpc-switch-dpms
>    * Description: Tests switching between different display output bpc modes with dpms
> - * Driver requirement: i915, xe
>    * Functionality: colorspace, dpms, hdr
> - * Mega feature: HDR
> - * Test category: functionality test
>    *
>    * SUBTEST: bpc-switch-suspend
>    * Description: Tests switching between different display output bpc modes with suspend
> - * Driver requirement: i915, xe
>    * Functionality: colorspace, hdr, suspend
> - * Mega feature: HDR
> - * Test category: functionality test
>    *
>    * SUBTEST: invalid-hdr
>    * Description: Test to ensure HDR is not enabled on non-HDR panel
> - * Driver requirement: i915, xe
> - * Functionality: colorspace, hdr
> - * Mega feature: HDR
> - * Test category: functionality test
>    *
>    * SUBTEST: invalid-metadata-sizes
>    * Description: Tests invalid HDR metadata sizes
> - * Driver requirement: i915, xe
> - * Functionality: colorspace, hdr
> - * Mega feature: HDR
> - * Test category: functionality test
>    *
>    * SUBTEST: static-toggle-dpms
>    * Description: Tests static toggle with dpms
> - * Driver requirement: i915, xe
>    * Functionality: colorspace, dpms, hdr
> - * Mega feature: HDR
> - * Test category: functionality test
>    *
>    * SUBTEST: static-toggle-suspend
>    * Description: Tests static toggle with suspend
> - * Driver requirement: i915, xe
>    * Functionality: colorspace, hdr, suspend
> - * Mega feature: HDR
> - * Test category: functionality test
>    *
>    * SUBTEST: static-%s
>    * Description: Tests %arg[1].
> - * Driver requirement: i915, xe
> - * Functionality: colorspace, hdr
> - * Mega feature: HDR
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> diff --git a/tests/kms_invalid_mode.c b/tests/kms_invalid_mode.c
> index 77cf4d609..4fd644594 100644
> --- a/tests/kms_invalid_mode.c
> +++ b/tests/kms_invalid_mode.c
> @@ -27,6 +27,10 @@
>    * Category: Display
>    * Description: Make sure all modesets are rejected when the requested mode is
>    *              invalid
> + * Driver requirement: i915, xe
> + * Functionality: kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -37,10 +41,6 @@
>    * SUBTEST: %s
>    * Description: Make sure all modesets are rejected when the requested mode
>    *              (%arg[1]) is invalid
> - * Driver requirement: i915, xe
> - * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> diff --git a/tests/kms_lease.c b/tests/kms_lease.c
> index 5c5a23fed..8ac58af38 100644
> --- a/tests/kms_lease.c
> +++ b/tests/kms_lease.c
> @@ -25,6 +25,10 @@
>    * TEST: kms lease
>    * Category: Display
>    * Description: Test of CreateLease.
> + * Driver requirement: i915, xe
> + * Functionality: lease
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -48,155 +52,71 @@
>   /**
>    * SUBTEST: atomic-implicit-crtc
>    * Description: Negative test by using a different crtc with atomic ioctl
> - * Driver requirement: i915, xe
> - * Functionality: lease
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: cursor-implicit-plane
>    * Description: Negative test by using a non-primary plane with setcursor ioctl
> - * Driver requirement: i915, xe
> - * Functionality: lease
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: empty-lease
>    * Description: Check that creating an empty lease works
> - * Driver requirement: i915, xe
> - * Functionality: lease
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: implicit-plane-lease
>    * Description: Tests the implicitly added planes.
> - * Driver requirement: i915, xe
> - * Functionality: lease
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: invalid-create-leases
>    * Description: Tests error handling while creating invalid corner-cases for
>    *              create-lease ioctl
> - * Driver requirement: i915, xe
> - * Functionality: lease
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: lease-uevent
>    * Description: Tests all the uevent cases
> - * Driver requirement: i915, xe
> - * Functionality: lease
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: lease-again
>    * Description: Tests leasing objects more than once
> - * Driver requirement: i915, xe
> - * Functionality: lease
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: lease-get
>    * Description: Tests getting the required contents of a lease
> - * Driver requirement: i915, xe
> - * Functionality: lease
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: lease-invalid-connector
>    * Description: Tests leasing an invalid connector
> - * Driver requirement: i915, xe
> - * Functionality: lease
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: lease-invalid-crtc
>    * Description: Tests leasing an invalid crtc
> - * Driver requirement: i915, xe
> - * Functionality: lease
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: lease-invalid-plane
>    * Description: Tests leasing an invalid plane
> - * Driver requirement: i915, xe
> - * Functionality: lease
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: lease-revoke
>    * Description: Tests revocation of lease
> - * Driver requirement: i915, xe
> - * Functionality: lease
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: lease-unleased-connector
>    * Description: Negative test by trying to use an unleased connector
> - * Driver requirement: i915, xe
> - * Functionality: lease
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: lease-unleased-crtc
>    * Description: Negative test by trying to use an unleased crtc
> - * Driver requirement: i915, xe
> - * Functionality: lease
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: lessee-list
>    * Description: Check if listed lease is same as created one
> - * Driver requirement: i915, xe
> - * Functionality: lease
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: master-vs-lease
>    * Description: Tests the drop/set_master interactions.
> - * Driver requirement: i915, xe
> - * Functionality: lease
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: multimaster-lease
>    * Description: Tests that the 2nd master can only create leases while being
>    *              active master, and that leases on the first master don't prevent
>    *              lease creation for the 2nd master.
> - * Driver requirement: i915, xe
> - * Functionality: lease
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: page-flip-implicit-plane
>    * Description: Negative test by using a non-primary plane with the page flip ioctl
> - * Driver requirement: i915, xe
> - * Functionality: lease
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: possible-crtcs-filtering
>    * Description: Tests that  possible_crtcs logically match between master and
>    *              lease, and that the values are correctly renumbered on the lease
>    *              side.
> - * Driver requirement: i915, xe
> - * Functionality: lease
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: setcrtc-implicit-plane
>    * Description: Negative test by using a non-primary plane with the setcrtc ioctl
> - * Driver requirement: i915, xe
> - * Functionality: lease
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: simple-lease
>    * Description: Check if create lease ioctl call works
> - * Driver requirement: i915, xe
> - * Functionality: lease
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    */
>   
>   IGT_TEST_DESCRIPTION("Test of CreateLease.");
> diff --git a/tests/kms_panel_fitting.c b/tests/kms_panel_fitting.c
> index af0c756ed..4b5d9d5ab 100644
> --- a/tests/kms_panel_fitting.c
> +++ b/tests/kms_panel_fitting.c
> @@ -26,6 +26,10 @@
>    * TEST: kms panel fitting
>    * Category: Display
>    * Description: Test display panel fitting
> + * Driver requirement: i915, xe
> + * Functionality: eDP, panel_fitting, scaling
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -36,17 +40,9 @@
>   /**
>    * SUBTEST: atomic-fastset
>    * Description: Tests panel fitting usages with atomic fastset.
> - * Driver requirement: i915, xe
> - * Functionality: eDP, panel_fitting, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: legacy
>    * Description: Tests panel fitting usages with legacy style commit.
> - * Driver requirement: i915, xe
> - * Functionality: eDP, panel_fitting, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    */
>   
>   IGT_TEST_DESCRIPTION("Test display panel fitting");
> diff --git a/tests/kms_pipe_crc_basic.c b/tests/kms_pipe_crc_basic.c
> index 4fed582b4..3c12d8098 100644
> --- a/tests/kms_pipe_crc_basic.c
> +++ b/tests/kms_pipe_crc_basic.c
> @@ -26,6 +26,10 @@
>    * TEST: kms pipe crc basic
>    * Category: Display
>    * Description: Tests behaviour of CRC
> + * Driver requirement: i915, xe
> + * Functionality: crc
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -39,61 +43,32 @@
>   /**
>    * SUBTEST: bad-source
>    * Description: Tests error handling when the bad source is set.
> - * Driver requirement: i915, xe
> - * Functionality: crc
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: read-crc
>    * Description: Test for pipe CRC reads
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: crc
> - * Mega feature: General Display Features
>    *
>    * SUBTEST: read-crc-frame-sequence
>    * Description: Tests the pipe CRC read and ensure frame sequence
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: crc
> - * Mega feature: General Display Features
>    *
>    * SUBTEST: nonblocking-crc
>    * Description: Test for O_NONBLOCK CRC reads
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: crc
> - * Mega feature: General Display Features
>    *
>    * SUBTEST: nonblocking-crc-frame-sequence
>    * Description: Test for O_NONBLOCK CRC reads and ensure frame sequence
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: crc
> - * Mega feature: General Display Features
>    *
>    * SUBTEST: suspend-read-crc
>    * Description: Suspend test for pipe CRC reads
> - * Driver requirement: i915, xe
> - * Test category: functionality test
>    * Functionality: crc, suspend
> - * Mega feature: General Display Features
>    *
>    * SUBTEST: hang-read-crc
>    * Description: Hang test for pipe CRC read
> - * Driver requirement: i915, xe
> - * Test category: functionality test
>    * Functionality: crc, hang
> - * Mega feature: General Display Features
>    */
>   
>   /**
>    * SUBTEST: compare-crc-sanitycheck-%s
>    * Description: Basic sanity check for CRC mismatches with %arg[1]
> - * Driver requirement: i915, xe
> - * Test category: functionality test
>    * Functionality: crc, pixel_format
> - * Mega feature: General Display Features
>    *
>    * arg[1]:
>    *
> @@ -105,10 +80,6 @@
>    * SUBTEST: disable-crc-after-crtc
>    * Description: Check that disabling CRCs on a CRTC after having disabled the
>    *              CRTC does not cause issues.
> - * Driver requirement: i915, xe
> - * Functionality: crc
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    */
>   
>   static bool extended;
> diff --git a/tests/kms_plane.c b/tests/kms_plane.c
> index 29cf45974..e50a94578 100644
> --- a/tests/kms_plane.c
> +++ b/tests/kms_plane.c
> @@ -28,6 +28,9 @@
>    * TEST: kms plane
>    * Category: Display
>    * Description: Testes for KMS Plane
> + * Driver requirement: i915, xe
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -41,25 +44,16 @@
>   /**
>    * SUBTEST: planar-pixel-format-settings
>    * Description: verify planar settings for pixel format are handled correctly
> - * Driver requirement: i915, xe
>    * Functionality: pixel_format, plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: plane-position-%s
>    * Description: Verify plane position using two planes to create a %arg[1]
> - * Driver requirement: i915, xe
>    * Functionality: plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: plane-position-hole-dpms
>    * Description: Verify plane position using two planes to create a partially
>    *              covered screen and check for DPMS
> - * Driver requirement: i915, xe
>    * Functionality: dpms, plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -70,18 +64,12 @@
>   /**
>    * SUBTEST: plane-panning-%s
>    * Description: Verify plane panning at %arg[1] using primary plane
> - * Driver requirement: i915, xe
>    * Functionality: plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: plane-panning-bottom-right-suspend
>    * Description: Verify plane panning at bottom-right position with suspend using
>    *              primary plane
> - * Driver requirement: i915, xe
>    * Functionality: plane, suspend
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -92,10 +80,7 @@
>   /**
>    * SUBTEST: pixel-%s
>    * Description: verify the pixel formats for given plane and pipe
> - * Driver requirement: i915, xe
>    * Functionality: pixel_format, plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> diff --git a/tests/kms_plane_alpha_blend.c b/tests/kms_plane_alpha_blend.c
> index d37407150..eaec37661 100644
> --- a/tests/kms_plane_alpha_blend.c
> +++ b/tests/kms_plane_alpha_blend.c
> @@ -28,6 +28,10 @@
>    * TEST: kms plane alpha blend
>    * Category: Display
>    * Description: Test plane alpha and blending mode properties
> + * Driver requirement: i915, xe
> + * Functionality: plane
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -35,10 +39,6 @@
>   /**
>    * SUBTEST: alpha-%s
>    * Description: Test to %arg[1]
> - * Driver requirement: i915, xe
> - * Functionality: plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -52,25 +52,13 @@
>   /**
>    * SUBTEST: coverage-vs-premult-vs-constant
>    * Description: Tests pipe coverage blending properties.
> - * Driver requirement: i915, xe
> - * Functionality: plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: coverage-7efc
>    * Description: Uses alpha values 0x7e and 0xfc to validate fg.alpha and
>    *              plane_alpha are swappable on coverage blend mode.
> - * Driver requirement: i915, xe
> - * Functionality: plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: constant-alpha-%s
>    * Description: Tests plane alpha and blending properties with %arg[1].
> - * Driver requirement: i915, xe
> - * Functionality: plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> diff --git a/tests/kms_plane_cursor.c b/tests/kms_plane_cursor.c
> index 55ddffe44..dd33d8129 100644
> --- a/tests/kms_plane_cursor.c
> +++ b/tests/kms_plane_cursor.c
> @@ -24,6 +24,10 @@
>    * TEST: kms plane cursor
>    * Category: Display
>    * Description: Tests cursor interactions with primary and overlay planes.
> + * Driver requirement: i915, xe
> + * Functionality: cursor, plane
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -31,25 +35,13 @@
>   /**
>    * SUBTEST: overlay
>    * Description: Tests atomic cursor positioning on primary plane and overlay plane
> - * Driver requirement: i915, xe
> - * Functionality: cursor, plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: primary
>    * Description: Tests atomic cursor positioning on primary plane
> - * Driver requirement: i915, xe
> - * Functionality: cursor, plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: viewport
>    * Description: Tests atomic cursor positioning on primary plane and overlay plane
>    *              with buffer larger than viewport used for display
> - * Driver requirement: i915, xe
> - * Functionality: cursor, plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    */
>   
>   /*
> diff --git a/tests/kms_plane_lowres.c b/tests/kms_plane_lowres.c
> index 13158bf99..ef85e8fb9 100644
> --- a/tests/kms_plane_lowres.c
> +++ b/tests/kms_plane_lowres.c
> @@ -27,6 +27,10 @@
>    * Category: Display
>    * Description: Test atomic mode setting with a plane by switching between high
>    *              and low resolutions
> + * Driver requirement: i915, xe
> + * Functionality: plane, tiling
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -41,18 +45,11 @@
>    * SUBTEST: tiling-none
>    * Description: Tests the visibility of the planes when switching between high
>    *              and low resolution with Linear buffer (no tiling)
> - * Driver requirement: i915, xe
>    * Functionality: plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: tiling-%s
>    * Description: Tests the visibility of the planes when switching between high
>    *              and low resolution with %arg[1]
> - * Driver requirement: i915, xe
> - * Functionality: plane, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> diff --git a/tests/kms_plane_multiple.c b/tests/kms_plane_multiple.c
> index 6239e225a..6bffb1f68 100644
> --- a/tests/kms_plane_multiple.c
> +++ b/tests/kms_plane_multiple.c
> @@ -26,6 +26,10 @@
>    * TEST: kms plane multiple
>    * Category: Display
>    * Description: Test atomic mode setting with multiple planes.
> + * Driver requirement: i915, xe
> + * Functionality: plane, tiling
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -41,19 +45,12 @@
>    * Description: Check that the kernel handles atomic updates of multiple planes
>    *              correctly by changing their geometry and making sure the changes
>    *              are reflected immediately after each commit.
> - * Driver requirement: i915, xe
>    * Functionality: plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: tiling-%s
>    * Description: Check that the kernel handles atomic updates of multiple planes
>    *              correctly by changing their geometry and making sure the changes
>    *              are reflected immediately after each commit.
> - * Driver requirement: i915, xe
> - * Functionality: plane, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c
> index e175c75d8..acb4a1da1 100644
> --- a/tests/kms_plane_scaling.c
> +++ b/tests/kms_plane_scaling.c
> @@ -26,6 +26,10 @@
>    * TEST: kms plane scaling
>    * Category: Display
>    * Description: Test display plane scaling
> + * Driver requirement: i915, xe
> + * Functionality: plane, scaling
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -35,24 +39,12 @@
>   /**
>    * SUBTEST: plane-scaler-unity-scaling-with-modifiers
>    * Description: Tests scaling with modifiers, unity scaling.
> - * Driver requirement: i915, xe
> - * Functionality: plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: plane-scaler-with-clipping-clamping-modifiers
>    * Description: Tests scaling with clipping and clamping, modifiers.
> - * Driver requirement: i915, xe
> - * Functionality: plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: plane-upscale-%s-with-modifiers
>    * Description: Tests upscaling with modifiers %arg[1].
> - * Driver requirement: i915, xe
> - * Functionality: plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -63,10 +55,6 @@
>   /**
>    * SUBTEST: plane-downscale-factor-%s-with-modifiers
>    * Description: Tests downscaling with modifiers for %arg[1] scaling factor.
> - * Driver requirement: i915, xe
> - * Functionality: plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -78,24 +66,12 @@
>   /**
>    * SUBTEST: plane-scaler-unity-scaling-with-rotation
>    * Description: Tests scaling with rotation, unity scaling.
> - * Driver requirement: i915, xe
> - * Functionality: plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: plane-scaler-with-clipping-clamping-rotation
>    * Description: Tests scaling with clipping and clamping, rotation.
> - * Driver requirement: i915, xe
> - * Functionality: plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: plane-upscale-%s-with-rotation
>    * Description: Tests upscaling with rotation %arg[1].
> - * Driver requirement: i915, xe
> - * Functionality: plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -106,10 +82,6 @@
>   /**
>    * SUBTEST: plane-downscale-factor-%s-with-rotation
>    * Description: Tests downscaling with rotation for %arg[1] scaling factor.
> - * Driver requirement: i915, xe
> - * Functionality: plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -121,24 +93,15 @@
>   /**
>    * SUBTEST: plane-scaler-unity-scaling-with-pixel-format
>    * Description: Tests scaling with pixel formats, unity scaling.
> - * Driver requirement: i915, xe
>    * Functionality: pixel_formats, plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: plane-scaler-with-clipping-clamping-pixel-formats
>    * Description: Tests scaling with clipping and clamping, pixel formats.
> - * Driver requirement: i915, xe
>    * Functionality: pixel_formats, plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: plane-upscale-%s-with-pixel-format
>    * Description: Tests upscaling with pixel formats %arg[1].
> - * Driver requirement: i915, xe
>    * Functionality: pixel_formats, plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -149,10 +112,7 @@
>   /**
>    * SUBTEST: plane-downscale-factor-%s-with-pixel-format
>    * Description: Tests downscaling with pixel formats for %arg[1] scaling factor.
> - * Driver requirement: i915, xe
>    * Functionality: pixel_formats, plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -164,10 +124,6 @@
>   /**
>    * SUBTEST: planes-downscale-factor-%s
>    * Description: Tests downscaling of 2 planes for %arg[1] scaling factor.
> - * Driver requirement: i915, xe
> - * Functionality: plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -180,10 +136,6 @@
>    * SUBTEST: planes-downscale-factor-%s-%s
>    * Description: Tests downscaling (scaling factor %arg[1]) and upscaling (%arg[2])
>    *              of 2 planes.
> - * Driver requirement: i915, xe
> - * Functionality: plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -201,17 +153,9 @@
>   /**
>    * SUBTEST: planes-scaler-unity-scaling
>    * Description: Tests scaling of 2 planes, unity scaling.
> - * Driver requirement: i915, xe
> - * Functionality: plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: planes-upscale-%s
>    * Description: Tests upscaling of 2 planes %arg[1].
> - * Driver requirement: i915, xe
> - * Functionality: plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -223,10 +167,6 @@
>    * SUBTEST: planes-%s-downscale-factor-%s
>    * Description: Tests scaling (%arg[1]) and downscaling (scaling factor %arg[2])
>    *              of 2 planes.
> - * Driver requirement: i915, xe
> - * Functionality: plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -244,31 +184,15 @@
>   /**
>    * SUBTEST: invalid-num-scalers
>    * Description: Negative test for number of scalers per pipe.
> - * Driver requirement: i915, xe
> - * Functionality: plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: 2x-scaler-multi-pipe
>    * Description: Tests scaling with multi-pipe.
> - * Driver requirement: i915, xe
> - * Functionality: plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: invalid-parameters
>    * Description: Test parameters which should not be accepted
> - * Driver requirement: i915, xe
> - * Functionality: plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: intel-max-src-size
>    * Description: Test for validating max source size.
> - * Driver requirement: i915, xe
> - * Functionality: plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    */
>   
>   IGT_TEST_DESCRIPTION("Test display plane scaling");
> diff --git a/tests/kms_prime.c b/tests/kms_prime.c
> index 1e985fdc4..135c75168 100644
> --- a/tests/kms_prime.c
> +++ b/tests/kms_prime.c
> @@ -25,6 +25,10 @@
>    * TEST: kms prime
>    * Category: Display
>    * Description: Prime tests, focusing on KMS side
> + * Driver requirement: i915, xe
> + * Functionality: hybrid, kms_gem_interop
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -40,25 +44,14 @@
>   /**
>    * SUBTEST: D3hot
>    * Description: Validate pci state of dGPU when dGPU is idle and  scanout is on iGPU
> - * Driver requirement: i915, xe
> - * Functionality: hybrid, kms_gem_interop
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: basic-modeset-hybrid
>    * Description: Basic modeset on the one device when the other device is active
> - * Driver requirement: i915, xe
> - * Functionality: hybrid, kms_gem_interop
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: basic-crc-%s
>    * Description: Make a dumb color buffer, export to another device and compare
>    *              the CRCs with a buffer native to that device
> - * Driver requirement: i915, xe
>    * Functionality: crc, hybrid, kms_gem_interop
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> diff --git a/tests/kms_prop_blob.c b/tests/kms_prop_blob.c
> index 199c673e3..7e7924618 100644
> --- a/tests/kms_prop_blob.c
> +++ b/tests/kms_prop_blob.c
> @@ -29,6 +29,10 @@
>    * TEST: kms prop blob
>    * Category: Display
>    * Description: Tests behaviour of mass-data 'blob' properties.
> + * Driver requirement: i915, xe
> + * Functionality: kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -40,17 +44,9 @@
>   /**
>    * SUBTEST: blob-multiple
>    * Description: Test validates destroying multiple properties explicitly works as needed.
> - * Driver requirement: i915, xe
> - * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: blob-prop-%s
>    * Description: Tests validates the %arg[1] of the properties created.
> - * Driver requirement: i915, xe
> - * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -62,17 +58,9 @@
>   /**
>    * SUBTEST: basic
>    * Description: Test to ensure property support exists
> - * Driver requirement: i915, xe
> - * Test category: functionality test
> - * Functionality: kms_core
> - * Mega feature: General Display Features
>    *
>    * SUBTEST: invalid-%s-%s
>    * Description: Tests error handling when invalid properties are %ar[1] with %arg[2].
> - * Driver requirement: i915, xe
> - * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> diff --git a/tests/kms_properties.c b/tests/kms_properties.c
> index 33c4156bf..bd414f534 100644
> --- a/tests/kms_properties.c
> +++ b/tests/kms_properties.c
> @@ -25,6 +25,10 @@
>    * TEST: kms properties
>    * Category: Display
>    * Description: Test to validate the properties of all planes, crtc and connectors
> + * Driver requirement: i915, xe
> + * Functionality: kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -38,10 +42,6 @@
>   /**
>    * SUBTEST: %s-properties-%s
>    * Description: Tests %arg[1] properties with %arg[2] commit
> - * Driver requirement: i915, xe
> - * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -60,10 +60,6 @@
>    * SUBTEST: get_properties-sanity-%s
>    * Description: Test validates the properties of all planes, crtc and connectors
>    *              with %arg[1] commit
> - * Driver requirement: i915, xe
> - * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> diff --git a/tests/kms_rmfb.c b/tests/kms_rmfb.c
> index c102c9583..39e8bbd55 100644
> --- a/tests/kms_rmfb.c
> +++ b/tests/kms_rmfb.c
> @@ -26,6 +26,10 @@
>    * Category: Display
>    * Description: This tests rmfb and close-fd behavior. In these casesthe
>    *              framebuffers should be removed from the crtc.
> + * Driver requirement: i915, xe
> + * Functionality: kms_gem_interop
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -40,18 +44,10 @@
>    * SUBTEST: close-fd
>    * Description: RMFB is supposed to free the framebuffers from any and all planes
>    *              so test this and make sure it works with fd close and reopen.
> - * Driver requirement: i915, xe
> - * Functionality: kms_gem_interop
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: rmfb-ioctl
>    * Description: RMFB is supposed to free the framebuffers from any and all planes
>    *              so test this and make sure it works.
> - * Driver requirement: i915, xe
> - * Functionality: kms_gem_interop
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    */
>   
>   #ifndef DRM_CAP_CURSOR_WIDTH
> diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c
> index bb082af68..8d8c53b5f 100644
> --- a/tests/kms_rotation_crc.c
> +++ b/tests/kms_rotation_crc.c
> @@ -26,6 +26,10 @@
>    * TEST: kms rotation crc
>    * Category: Display
>    * Description: Tests different rotations with different planes & formats
> + * Driver requirement: i915, xe
> + * Functionality: plane, rotation
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -35,10 +39,6 @@
>   /**
>    * SUBTEST: %s-rotation-180
>    * Description: Rotation test with 180 degree for %arg[1] planes
> - * Driver requirement: i915, xe
> - * Functionality: plane, rotation
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -50,10 +50,6 @@
>   /**
>    * SUBTEST: %s-rotation-%d
>    * Description: Rotation test with %arg[2] degree for %arg[1] planes of gen9+
> - * Driver requirement: i915, xe
> - * Functionality: plane, rotation
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -66,33 +62,19 @@
>   /**
>    * SUBTEST: bad-pixel-format
>    * Description: Checking unsupported pixel format for gen9+ with 90 degree of rotation
> - * Driver requirement: i915, xe
> - * Functionality: plane, rotation
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: bad-tiling
>    * Description: Checking unsupported tiling for gen9+ with 90 degree of rotation
> - * Driver requirement: i915, xe
>    * Functionality: plane, rotation, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: exhaust-fences
>    * Description: This test intends to check for fence leaks exhaustively
> - * Driver requirement: i915
> - * Functionality: plane, rotation
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    */
>   
>   /**
>    * SUBTEST: primary-%s-tiled-reflect-x-%d
>    * Description: Test for %arg[1] & %arg[2] degree rotation on primary plane
> - * Driver requirement: i915, xe
>    * Functionality: plane, rotation, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -107,10 +89,7 @@
>   /**
>    * SUBTEST: primary-%s-tiled-reflect-x-%d
>    * Description: Test for %arg[1] & %arg[2] degree rotation on primary plane
> - * Driver requirement: i915, xe
>    * Functionality: plane, rotation, tiling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -121,27 +100,15 @@
>    *
>    * SUBTEST: sprite-rotation-90-pos-100-0
>    * Description: Rotation test with 90 degree for a plane of gen9+ with given position
> - * Driver requirement: i915, xe
> - * Functionality: plane, rotation
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    */
>   
>   /**
>    * SUBTEST: multiplane-rotation
>    * Description: Rotation test on both planes by making them fully visible
> - * Driver requirement: i915, xe
> - * Functionality: plane, rotation
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: multiplane-rotation-cropping-%s
>    * Description: Rotation test on both planes by cropping left/%arg[1] corner of
>    *              primary plane and right/%arg[1] corner of sprite plane
> - * Driver requirement: i915, xe
> - * Functionality: plane, rotation
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> diff --git a/tests/kms_scaling_modes.c b/tests/kms_scaling_modes.c
> index 960e7d84b..add6e77c9 100644
> --- a/tests/kms_scaling_modes.c
> +++ b/tests/kms_scaling_modes.c
> @@ -28,6 +28,10 @@
>    * TEST: kms scaling modes
>    * Category: Display
>    * Description: Test display scaling modes
> + * Driver requirement: i915, xe
> + * Functionality: eDP, plane, scaling
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -35,10 +39,6 @@
>   /**
>    * SUBTEST: scaling-mode-%s
>    * Description: Tests %arg[1] display scaling mode
> - * Driver requirement: i915, xe
> - * Functionality: eDP, plane, scaling
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> diff --git a/tests/kms_selftest.c b/tests/kms_selftest.c
> index 30fc58d90..0ecb825db 100644
> --- a/tests/kms_selftest.c
> +++ b/tests/kms_selftest.c
> @@ -25,6 +25,10 @@
>    * TEST: kms selftest
>    * Category: Display
>    * Description: Basic sanity check of KMS selftests.
> + * Driver requirement: i915, xe
> + * Functionality: kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -33,10 +37,6 @@
>   /**
>    * SUBTEST: %s
>    * Description: Basic sanity check of KMS selftest %arg[1].
> - * Driver requirement: i915, xe
> - * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> diff --git a/tests/kms_sequence.c b/tests/kms_sequence.c
> index 7dbcca643..23867d1aa 100644
> --- a/tests/kms_sequence.c
> +++ b/tests/kms_sequence.c
> @@ -26,6 +26,10 @@
>    * TEST: kms sequence
>    * Category: Display
>    * Description: Test CrtcGetSequence and CrtcQueueSequence.
> + * Driver requirement: i915, xe
> + * Functionality: vblank
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -46,10 +50,6 @@
>   /**
>    * SUBTEST: get-%s
>    * Description: This is a test of drmCrtcGetSequence with %arg[1]
> - * Driver requirement: i915, xe
> - * Functionality: vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> @@ -62,10 +62,6 @@
>   /**
>    * SUBTEST: queue-%s
>    * Description: This is a test of drmCrtcQueueSequence with %arg[1]
> - * Driver requirement: i915, xe
> - * Functionality: vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> diff --git a/tests/kms_setmode.c b/tests/kms_setmode.c
> index 7fd1667d7..490bfd3dd 100644
> --- a/tests/kms_setmode.c
> +++ b/tests/kms_setmode.c
> @@ -26,6 +26,10 @@
>    * Category: Display
>    * Description: Tests the mode by iterating through all valid/invalid crtc/connector
>    *              combinations
> + * Driver requirement: i915, xe
> + * Functionality: kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "config.h"
> @@ -46,50 +50,27 @@
>    * SUBTEST: basic
>    * Description: Tests the vblank timing by iterating through all valid crtc/connector
>    *              combinations
> - * Driver requirement: i915, xe
>    * Functionality: kms_core, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: basic-clone-single-crtc
>    * Description: Test allows the use of a single CRTC for two connectors, such as VGA/HDMI,
>    *		VGA/DP, and HDMI/HDMI
> - * Driver requirement: i915, xe
> - * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: clone-exclusive-crtc
>    * Description: Tests the mode by cloning the exclusive crtc by iterating through
>    *              all valid crtc/connector combinations
> - * Driver requirement: i915, xe
> - * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: invalid-clone-exclusive-crtc
>    * Description: Test is allowed when a connector uses CRTC that is not compatible with the
>    *		connector, for instance, DP/HDMI can be used on certain pipes only on older platforms
> - * Driver requirement: i915, xe
> - * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: invalid-clone-single-crtc
>    * Description: Tests the mode by cloning the single crtc by iterating through all
>    *              invalid crtc/connector combinations
> - * Driver requirement: i915, xe
> - * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: invalid-clone-single-crtc-stealing
>    * Description: Tests the stealing mode by cloning the single crtc by iterating
>    *              through all invalid crtc/connector combinations
> - * Driver requirement: i915, xe
> - * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    */
>   
>   #define MAX_CONNECTORS  10
> diff --git a/tests/kms_tiled_display.c b/tests/kms_tiled_display.c
> index a094f4df3..3ffd6a9a4 100644
> --- a/tests/kms_tiled_display.c
> +++ b/tests/kms_tiled_display.c
> @@ -40,6 +40,9 @@
>    * TEST: kms tiled display
>    * Category: Display
>    * Description: Test for Transcoder Port Sync for Display Port Tiled Displays
> + * Driver requirement: i915, xe
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -52,18 +55,12 @@
>    * SUBTEST: basic-test-pattern
>    * Description: Make sure the Tiled CRTCs are synchronized and we get page flips
>    *              for all tiled CRTCs in one vblank (executes on real panel).
> - * Driver requirement: i915, xe
>    * Functionality: tiled_display
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: basic-test-pattern-with-chamelium
>    * Description: Make sure the Tiled CRTCs are synchronized and we get page flips
>    *              for all tiled CRTCs in one vblank (executes on chamelium).
> - * Driver requirement: i915, xe
>    * Functionality: chamelium, tiled_display
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    */
>   
>   IGT_TEST_DESCRIPTION("Test for genlocked CRTCs with tiled displays");
> diff --git a/tests/kms_universal_plane.c b/tests/kms_universal_plane.c
> index b79b3d3e3..6a39f93cc 100644
> --- a/tests/kms_universal_plane.c
> +++ b/tests/kms_universal_plane.c
> @@ -25,6 +25,10 @@
>    * TEST: kms universal plane
>    * Category: Display
>    * Description: Check pageflip & modeset on universal plane
> + * Driver requirement: i915, xe
> + * Functionality: plane
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -37,32 +41,17 @@
>   /**
>    * SUBTEST: cursor-fb-leak
>    * Description: Check for cursor leaks after performing cursor operations
> - * Driver requirement: i915, xe
>    * Functionality: cursor, plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: disable-primary-vs-flip
>    * Description: Check pageflips while primary plane is disabled before IOCTL or
>    *              between IOCTL and pageflip execution
> - * Driver requirement: i915, xe
> - * Functionality: plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: universal-plane-pageflip-windowed
>    * Description: Check if pageflip succeeds in windowed setting
> - * Driver requirement: i915, xe
> - * Functionality: plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: universal-plane-%s
>    * Description: Check %arg[1]
> - * Driver requirement: i915, xe
> - * Functionality: plane
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
> index 5994e682c..956ba483a 100644
> --- a/tests/kms_vblank.c
> +++ b/tests/kms_vblank.c
> @@ -25,6 +25,9 @@
>    * TEST: kms vblank
>    * Category: Display
>    * Description: Test speed of WaitVblank.
> + * Driver requirement: i915, xe
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -45,71 +48,44 @@
>   /**
>    * SUBTEST: crtc-id
>    * Description: Check the vblank and flip events works with given crtc id
> - * Driver requirement: i915, xe
>    * Functionality: vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: invalid
>    * Description: Negative test for vblank request
> - * Driver requirement: i915, xe
>    * Functionality: vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: ts-continuation-dpms-rpm
>    * Description: Test TS continuty with DPMS & RPM while hanging by introducing
>    *              NOHANG flag
> - * Driver requirement: i915, xe
>    * Functionality: dpms, hang, rpm, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: ts-continuation-dpms-suspend
>    * Description: Test TS continuty with DPMS & Suspend while hanging by introducing
>    *              NOHANG flag
> - * Driver requirement: i915, xe
>    * Functionality: dpms, hang, suspend, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: ts-continuation-suspend
>    * Description: Test TS continuty with Suspend while hanging by introducing NOHANG
>    *              flag
> - * Driver requirement: i915, xe
>    * Functionality: hang, suspend, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: ts-continuation-modeset-rpm
>    * Description: Test TS continuty during Modeset with Suspend while hanging by
>    *              introducing NOHANG flag
> - * Driver requirement: i915, xe
>    * Functionality: hang, rpm, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: accuracy-idle
>    * Description: Test Accuracy of vblank events while hanging by introducing NOHANG
>    *              flag
> - * Driver requirement: i915, xe
>    * Functionality: hang, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: %s
>    * Description: Test %arg[1] while hanging by introducing NOHANG flag
> - * Driver requirement: i915, xe
>    * Functionality: hang, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: %s-hang
>    * Description: Test %arg[1] with injected hang is working properly
> - * Driver requirement: i915, xe
>    * Functionality: hang, vblank
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * arg[1]:
>    *
> diff --git a/tests/kms_vrr.c b/tests/kms_vrr.c
> index 23aebb0f2..13b347631 100644
> --- a/tests/kms_vrr.c
> +++ b/tests/kms_vrr.c
> @@ -24,6 +24,10 @@
>    * TEST: kms vrr
>    * Category: Display
>    * Description: Test to validate diffent features of VRR
> + * Driver requirement: i915, xe
> + * Functionality: adaptive_sync
> + * Mega feature: VRR
> + * Test category: functionality test
>    */
>   
>   #include "igt.h"
> @@ -35,40 +39,22 @@
>    * SUBTEST: flip-basic
>    * Description: Tests that VRR is enabled and that the difference between flip
>    *              timestamps converges to the requested rate
> - * Driver requirement: i915, xe
> - * Functionality: adaptive_sync
> - * Mega feature: VRR
> - * Test category: functionality test
>    *
>    * SUBTEST: flip-dpms
>    * Description: Tests with DPMS that VRR is enabled and that the difference
>    *              between flip timestamps converges to the requested rate.
> - * Driver requirement: i915, xe
>    * Functionality: adaptive_sync, dpms
> - * Mega feature: VRR
> - * Test category: functionality test
>    *
>    * SUBTEST: flip-suspend
>    * Description: Tests that VRR is enabled and that the difference between flip
>    *              timestamps converges to the requested rate in a suspend test
> - * Driver requirement: i915, xe
>    * Functionality: adaptive_sync, suspend
> - * Mega feature: VRR
> - * Test category: functionality test
>    *
>    * SUBTEST: flipline
>    * Description: Make sure that flips happen at flipline decision boundary.
> - * Driver requirement: i915, xe
> - * Functionality: adaptive_sync
> - * Mega feature: VRR
> - * Test category: functionality test
>    *
>    * SUBTEST: negative-basic
>    * Description: Make sure that VRR should not be enabled on the Non-VRR panel.
> - * Driver requirement: i915, xe
> - * Functionality: adaptive_sync
> - * Mega feature: VRR
> - * Test category: functionality test
>    */
>   
>   #define NSECS_PER_SEC (1000000000ull)
> diff --git a/tests/kms_writeback.c b/tests/kms_writeback.c
> index 6b436b7ab..f95d71166 100644
> --- a/tests/kms_writeback.c
> +++ b/tests/kms_writeback.c
> @@ -29,6 +29,10 @@
>    *              connectors feature by checking if the target device support
>    *              writeback; it validates bad and good combination, check color
>    *              format, and check the output result by using CRC.
> + * Driver requirement: i915, xe
> + * Functionality: kms_core
> + * Mega feature: General Display Features
> + * Test category: functionality test
>    */
>   
>   #include <errno.h>
> @@ -45,45 +49,23 @@
>   /**
>    * SUBTEST: writeback-check-output-XRGB2101010
>    * Description: Check XRGB2101010 writeback output with CRC validation
> - * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: writeback-check-output
>    * Description: Check writeback output with CRC validation
> - * Driver requirement: i915, xe
> - * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: writeback-fb-id-XRGB2101010
>    * Description: Validate WRITEBACK_FB_ID with valid and invalid options
> - * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: writeback-fb-id
>    * Description: Validate WRITEBACK_FB_ID with valid and invalid options
> - * Driver requirement: i915, xe
> - * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: writeback-invalid-parameters
>    * Description: Writeback has a couple of parameters linked together(output
>    *              framebuffer and fence); this test goes throughthe combination
>    *              of possible bad options
> - * Driver requirement: i915, xe
> - * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    *
>    * SUBTEST: writeback-pixel-formats
>    * Description: Check the writeback format
> - * Driver requirement: i915, xe
> - * Functionality: kms_core
> - * Mega feature: General Display Features
> - * Test category: functionality test
>    */
>   
>   IGT_TEST_DESCRIPTION(

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [igt-dev] [i-g-t 4/5] tests/kms/testplan: Fix Mega Feature in testplan documentation
  2023-11-24  9:36 ` [igt-dev] [i-g-t 4/5] tests/kms/testplan: Fix Mega Feature in " Bhanuprakash Modem
@ 2023-11-24 17:09   ` Sharma, Swati2
  0 siblings, 0 replies; 15+ messages in thread
From: Sharma, Swati2 @ 2023-11-24 17:09 UTC (permalink / raw)
  To: Bhanuprakash Modem, igt-dev

LGTM

Reviewed-by: Swati Sharma <swati2.sharma@intel.com>

On 24-Nov-23 3:06 PM, Bhanuprakash Modem wrote:
> Adjust KMS testplan Mega Feature to allign with internal tools.
> 
> - s/Bigjoiner/Pipe Joiner/
> - s/Color mgmt/Color Management/
> - s/General Display Features/E2E Compression/ (CCS tests)
> - s/Display Power/Display Power Management/
> 
> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> ---
>   tests/chamelium/kms_chamelium_color.c | 2 +-
>   tests/intel/kms_big_joiner.c          | 2 +-
>   tests/intel/kms_ccs.c                 | 2 +-
>   tests/intel/kms_pm_backlight.c        | 2 +-
>   tests/intel/kms_pm_dc.c               | 2 +-
>   tests/intel/kms_pm_lpsp.c             | 2 +-
>   tests/kms_color.c                     | 2 +-
>   7 files changed, 7 insertions(+), 7 deletions(-)
> 
> diff --git a/tests/chamelium/kms_chamelium_color.c b/tests/chamelium/kms_chamelium_color.c
> index e94e13e40..4156023da 100644
> --- a/tests/chamelium/kms_chamelium_color.c
> +++ b/tests/chamelium/kms_chamelium_color.c
> @@ -28,7 +28,7 @@
>    * Description: Test Color Features at Pipe level using Chamelium to verify instead of CRC
>    * Driver requirement: i915, xe
>    * Functionality: chamelium, colorspace
> - * Mega feature: Color mgmt
> + * Mega feature: Color Management
>    * Test category: functionality test
>    */
>   
> diff --git a/tests/intel/kms_big_joiner.c b/tests/intel/kms_big_joiner.c
> index c5f9f8db7..aba2adfbe 100644
> --- a/tests/intel/kms_big_joiner.c
> +++ b/tests/intel/kms_big_joiner.c
> @@ -30,7 +30,7 @@
>    * Description: Test big joiner
>    * Driver requirement: i915, xe
>    * Functionality: 2p1p
> - * Mega feature: Bigjoiner
> + * Mega feature: Pipe Joiner
>    * Test category: functionality test
>    */
>   
> diff --git a/tests/intel/kms_ccs.c b/tests/intel/kms_ccs.c
> index 0a202d037..7a3fd7cf6 100644
> --- a/tests/intel/kms_ccs.c
> +++ b/tests/intel/kms_ccs.c
> @@ -30,7 +30,7 @@
>    *              uses to interpret the compressed data.
>    * Driver requirement: i915, xe
>    * Functionality: ccs, tiling
> - * Mega feature: General Display Features
> + * Mega feature: E2E Compression
>    * Test category: functionality test
>    */
>   
> diff --git a/tests/intel/kms_pm_backlight.c b/tests/intel/kms_pm_backlight.c
> index 5b4c397bb..2e691dab0 100644
> --- a/tests/intel/kms_pm_backlight.c
> +++ b/tests/intel/kms_pm_backlight.c
> @@ -31,7 +31,7 @@
>    * Description: Basic backlight sysfs test
>    * Driver requirement: i915, xe
>    * Functionality: backlight
> - * Mega feature: Display Power
> + * Mega feature: Display Power Management
>    * Test category: functionality test
>    */
>   
> diff --git a/tests/intel/kms_pm_dc.c b/tests/intel/kms_pm_dc.c
> index f11d6d29a..739ed6112 100644
> --- a/tests/intel/kms_pm_dc.c
> +++ b/tests/intel/kms_pm_dc.c
> @@ -28,7 +28,7 @@
>    * Description: Tests to validate display power DC states.
>    * Driver requirement: i915, xe
>    * Functionality: dpms, pm_dc
> - * Mega feature: Display Power
> + * Mega feature: Display Power Management
>    * Test category: functionality test
>    */
>   
> diff --git a/tests/intel/kms_pm_lpsp.c b/tests/intel/kms_pm_lpsp.c
> index 30158f673..005438d87 100644
> --- a/tests/intel/kms_pm_lpsp.c
> +++ b/tests/intel/kms_pm_lpsp.c
> @@ -29,7 +29,7 @@
>    * Category: Display
>    * Description: These tests validates display Low Power Single Pipe configurations
>    * Functionality: pm_lpsp
> - * Mega feature: Display Power
> + * Mega feature: Display Power Management
>    * Test category: functionality test
>    */
>   
> diff --git a/tests/kms_color.c b/tests/kms_color.c
> index 39752de81..bdb80a4ad 100644
> --- a/tests/kms_color.c
> +++ b/tests/kms_color.c
> @@ -28,7 +28,7 @@
>    * Description: Test Color Features at Pipe level
>    * Driver requirement: i915, xe
>    * Functionality: colorspace
> - * Mega feature: Color mgmt
> + * Mega feature: Color Management
>    * Test category: functionality test
>    */
>   

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [igt-dev] ✗ Fi.CI.IGT: failure for Optimize kms tesplan documentation (rev4)
  2023-11-24  9:35 [igt-dev] [i-g-t 0/5] Optimize kms tesplan documentation Bhanuprakash Modem
                   ` (7 preceding siblings ...)
  2023-11-24 14:37 ` [igt-dev] [i-g-t 0/5] Optimize kms tesplan documentation Sharma, Swati2
@ 2023-11-25 14:33 ` Patchwork
  8 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2023-11-25 14:33 UTC (permalink / raw)
  To: Bhanuprakash Modem; +Cc: igt-dev

[-- Attachment #1: Type: text/plain, Size: 59157 bytes --]

== Series Details ==

Series: Optimize kms tesplan documentation (rev4)
URL   : https://patchwork.freedesktop.org/series/123697/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_13920_full -> IGTPW_10264_full
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with IGTPW_10264_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in IGTPW_10264_full, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
  to document this new failure mode, which will reduce false positives in CI.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/index.html

Participating hosts (10 -> 11)
------------------------------

  Additional (1): shard-tglu0 

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in IGTPW_10264_full:

### IGT changes ###

#### Possible regressions ####

  * igt@kms_psr@psr2_primary_blt:
    - shard-dg2:          NOTRUN -> [SKIP][1] +1 other test skip
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-11/igt@kms_psr@psr2_primary_blt.html

  * igt@perf_pmu@most-busy-idle-check-all@rcs0:
    - shard-dg1:          [PASS][2] -> [FAIL][3]
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/shard-dg1-14/igt@perf_pmu@most-busy-idle-check-all@rcs0.html
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg1-15/igt@perf_pmu@most-busy-idle-check-all@rcs0.html

  
#### Warnings ####

  * igt@kms_psr@psr2_dpms:
    - shard-dg2:          [SKIP][4] ([i915#9681]) -> [SKIP][5] +12 other tests skip
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/shard-dg2-10/igt@kms_psr@psr2_dpms.html
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-5/igt@kms_psr@psr2_dpms.html

  
#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * {igt@i915_pm_rc6_residency@rc6-idle@gt0-vecs0}:
    - shard-tglu:         [FAIL][6] ([i915#3591]) -> [WARN][7]
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/shard-tglu-6/igt@i915_pm_rc6_residency@rc6-idle@gt0-vecs0.html
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-tglu-9/igt@i915_pm_rc6_residency@rc6-idle@gt0-vecs0.html

  * {igt@kms_psr@pr_basic}:
    - shard-dg2:          [SKIP][8] ([i915#9681]) -> [SKIP][9] +16 other tests skip
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/shard-dg2-5/igt@kms_psr@pr_basic.html
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-5/igt@kms_psr@pr_basic.html

  * {igt@kms_psr@psr_cursor_plane_move}:
    - shard-dg2:          [SKIP][10] ([i915#9673]) -> [SKIP][11] +2 other tests skip
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/shard-dg2-5/igt@kms_psr@psr_cursor_plane_move.html
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-11/igt@kms_psr@psr_cursor_plane_move.html

  * {igt@kms_psr@psr_cursor_render}:
    - shard-dg2:          NOTRUN -> [SKIP][12] +10 other tests skip
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-10/igt@kms_psr@psr_cursor_render.html

  * {igt@kms_psr@psr_primary_mmap_gtt}:
    - shard-dg1:          [SKIP][13] ([i915#9673]) -> [SKIP][14] +3 other tests skip
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/shard-dg1-18/igt@kms_psr@psr_primary_mmap_gtt.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg1-18/igt@kms_psr@psr_primary_mmap_gtt.html
    - shard-tglu:         [SKIP][15] ([i915#9673]) -> [SKIP][16] +3 other tests skip
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/shard-tglu-3/igt@kms_psr@psr_primary_mmap_gtt.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-tglu-9/igt@kms_psr@psr_primary_mmap_gtt.html

  
Known issues
------------

  Here are the changes found in IGTPW_10264_full that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@api_intel_bb@blit-reloc-keep-cache:
    - shard-mtlp:         NOTRUN -> [SKIP][17] ([i915#8411])
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-8/igt@api_intel_bb@blit-reloc-keep-cache.html

  * igt@device_reset@cold-reset-bound:
    - shard-dg2:          NOTRUN -> [SKIP][18] ([i915#7701])
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-10/igt@device_reset@cold-reset-bound.html

  * igt@drm_fdinfo@busy-idle@bcs0:
    - shard-dg2:          NOTRUN -> [SKIP][19] ([i915#8414]) +11 other tests skip
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-11/igt@drm_fdinfo@busy-idle@bcs0.html

  * igt@drm_fdinfo@most-busy-idle-check-all@ccs0:
    - shard-mtlp:         NOTRUN -> [SKIP][20] ([i915#8414]) +11 other tests skip
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-1/igt@drm_fdinfo@most-busy-idle-check-all@ccs0.html

  * igt@gem_basic@multigpu-create-close:
    - shard-dg2:          NOTRUN -> [SKIP][21] ([i915#7697])
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-10/igt@gem_basic@multigpu-create-close.html

  * igt@gem_busy@semaphore:
    - shard-mtlp:         NOTRUN -> [SKIP][22] ([i915#3936])
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-6/igt@gem_busy@semaphore.html

  * igt@gem_close_race@multigpu-basic-process:
    - shard-snb:          NOTRUN -> [SKIP][23] ([fdo#109271]) +70 other tests skip
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-snb7/igt@gem_close_race@multigpu-basic-process.html

  * igt@gem_create@create-ext-set-pat:
    - shard-dg2:          NOTRUN -> [SKIP][24] ([i915#8562])
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-10/igt@gem_create@create-ext-set-pat.html

  * igt@gem_ctx_exec@basic-nohangcheck:
    - shard-tglu:         [PASS][25] -> [FAIL][26] ([i915#6268])
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/shard-tglu-6/igt@gem_ctx_exec@basic-nohangcheck.html
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-tglu-7/igt@gem_ctx_exec@basic-nohangcheck.html

  * igt@gem_ctx_param@set-priority-not-supported:
    - shard-dg2:          NOTRUN -> [SKIP][27] ([fdo#109314])
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-10/igt@gem_ctx_param@set-priority-not-supported.html

  * igt@gem_ctx_persistence@heartbeat-hang:
    - shard-mtlp:         NOTRUN -> [SKIP][28] ([i915#8555])
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-4/igt@gem_ctx_persistence@heartbeat-hang.html

  * igt@gem_ctx_persistence@legacy-engines-cleanup:
    - shard-snb:          NOTRUN -> [SKIP][29] ([fdo#109271] / [i915#1099])
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-snb4/igt@gem_ctx_persistence@legacy-engines-cleanup.html

  * igt@gem_ctx_sseu@invalid-sseu:
    - shard-dg2:          NOTRUN -> [SKIP][30] ([i915#280])
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-6/igt@gem_ctx_sseu@invalid-sseu.html

  * igt@gem_eio@kms:
    - shard-dg2:          [PASS][31] -> [FAIL][32] ([i915#5784])
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/shard-dg2-11/igt@gem_eio@kms.html
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-7/igt@gem_eio@kms.html

  * igt@gem_exec_balancer@invalid-bonds:
    - shard-dg2:          NOTRUN -> [SKIP][33] ([i915#4036])
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-5/igt@gem_exec_balancer@invalid-bonds.html

  * igt@gem_exec_capture@many-4k-incremental:
    - shard-dg2:          NOTRUN -> [FAIL][34] ([i915#9606])
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-10/igt@gem_exec_capture@many-4k-incremental.html

  * igt@gem_exec_fair@basic-deadline:
    - shard-glk:          NOTRUN -> [FAIL][35] ([i915#2846])
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-glk4/igt@gem_exec_fair@basic-deadline.html

  * igt@gem_exec_fair@basic-none-rrul:
    - shard-mtlp:         NOTRUN -> [SKIP][36] ([i915#4473] / [i915#4771]) +2 other tests skip
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-6/igt@gem_exec_fair@basic-none-rrul.html

  * igt@gem_exec_fair@basic-pace:
    - shard-dg2:          NOTRUN -> [SKIP][37] ([i915#3539])
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-10/igt@gem_exec_fair@basic-pace.html

  * igt@gem_exec_fair@basic-pace-share@rcs0:
    - shard-tglu:         [PASS][38] -> [FAIL][39] ([i915#2842]) +1 other test fail
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/shard-tglu-3/igt@gem_exec_fair@basic-pace-share@rcs0.html
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-tglu-3/igt@gem_exec_fair@basic-pace-share@rcs0.html

  * igt@gem_exec_fence@concurrent:
    - shard-mtlp:         NOTRUN -> [SKIP][40] ([i915#4812])
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-8/igt@gem_exec_fence@concurrent.html

  * igt@gem_exec_fence@submit:
    - shard-dg2:          NOTRUN -> [SKIP][41] ([i915#4812]) +1 other test skip
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-2/igt@gem_exec_fence@submit.html

  * igt@gem_exec_flush@basic-batch-kernel-default-cmd:
    - shard-dg2:          NOTRUN -> [SKIP][42] ([i915#3539] / [i915#4852]) +5 other tests skip
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-5/igt@gem_exec_flush@basic-batch-kernel-default-cmd.html

  * igt@gem_exec_reloc@basic-gtt-read:
    - shard-dg2:          NOTRUN -> [SKIP][43] ([i915#3281]) +11 other tests skip
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-6/igt@gem_exec_reloc@basic-gtt-read.html

  * igt@gem_exec_reloc@basic-write-cpu-noreloc:
    - shard-mtlp:         NOTRUN -> [SKIP][44] ([i915#3281]) +5 other tests skip
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-1/igt@gem_exec_reloc@basic-write-cpu-noreloc.html

  * igt@gem_exec_schedule@preempt-queue-chain:
    - shard-mtlp:         NOTRUN -> [SKIP][45] ([i915#4537] / [i915#4812])
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-1/igt@gem_exec_schedule@preempt-queue-chain.html

  * igt@gem_exec_schedule@preempt-queue-contexts-chain:
    - shard-dg2:          NOTRUN -> [SKIP][46] ([i915#4537] / [i915#4812])
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-5/igt@gem_exec_schedule@preempt-queue-contexts-chain.html

  * igt@gem_exec_suspend@basic-s0@lmem0:
    - shard-dg2:          NOTRUN -> [INCOMPLETE][47] ([i915#9275])
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-6/igt@gem_exec_suspend@basic-s0@lmem0.html

  * igt@gem_fence_thrash@bo-copy:
    - shard-dg2:          NOTRUN -> [SKIP][48] ([i915#4860]) +4 other tests skip
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-5/igt@gem_fence_thrash@bo-copy.html

  * igt@gem_lmem_swapping@heavy-random:
    - shard-glk:          NOTRUN -> [SKIP][49] ([fdo#109271] / [i915#4613]) +1 other test skip
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-glk3/igt@gem_lmem_swapping@heavy-random.html

  * igt@gem_lmem_swapping@parallel-random-verify-ccs:
    - shard-mtlp:         NOTRUN -> [SKIP][50] ([i915#4613]) +1 other test skip
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-5/igt@gem_lmem_swapping@parallel-random-verify-ccs.html

  * igt@gem_mmap_gtt@basic-write-read:
    - shard-mtlp:         NOTRUN -> [SKIP][51] ([i915#4077]) +8 other tests skip
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-1/igt@gem_mmap_gtt@basic-write-read.html

  * igt@gem_mmap_gtt@cpuset-big-copy-odd:
    - shard-dg2:          NOTRUN -> [SKIP][52] ([i915#4077]) +7 other tests skip
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-5/igt@gem_mmap_gtt@cpuset-big-copy-odd.html

  * igt@gem_mmap_wc@bad-offset:
    - shard-mtlp:         NOTRUN -> [SKIP][53] ([i915#4083]) +5 other tests skip
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-8/igt@gem_mmap_wc@bad-offset.html

  * igt@gem_mmap_wc@write-prefaulted:
    - shard-dg2:          NOTRUN -> [SKIP][54] ([i915#4083])
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-10/igt@gem_mmap_wc@write-prefaulted.html

  * igt@gem_pread@exhaustion:
    - shard-glk:          NOTRUN -> [WARN][55] ([i915#2658])
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-glk8/igt@gem_pread@exhaustion.html

  * igt@gem_pread@snoop:
    - shard-dg2:          NOTRUN -> [SKIP][56] ([i915#3282]) +6 other tests skip
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-11/igt@gem_pread@snoop.html

  * igt@gem_pxp@create-regular-buffer:
    - shard-mtlp:         NOTRUN -> [SKIP][57] ([i915#4270]) +2 other tests skip
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-2/igt@gem_pxp@create-regular-buffer.html

  * igt@gem_pxp@verify-pxp-stale-ctx-execution:
    - shard-dg2:          NOTRUN -> [SKIP][58] ([i915#4270]) +4 other tests skip
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-5/igt@gem_pxp@verify-pxp-stale-ctx-execution.html

  * igt@gem_readwrite@beyond-eob:
    - shard-mtlp:         NOTRUN -> [SKIP][59] ([i915#3282]) +2 other tests skip
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-4/igt@gem_readwrite@beyond-eob.html

  * igt@gem_render_copy@y-tiled-ccs-to-y-tiled-mc-ccs:
    - shard-mtlp:         NOTRUN -> [SKIP][60] ([i915#8428]) +1 other test skip
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-1/igt@gem_render_copy@y-tiled-ccs-to-y-tiled-mc-ccs.html

  * igt@gem_render_tiled_blits@basic:
    - shard-dg2:          NOTRUN -> [SKIP][61] ([i915#4079]) +1 other test skip
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-11/igt@gem_render_tiled_blits@basic.html

  * igt@gem_set_tiling_vs_blt@tiled-to-tiled:
    - shard-mtlp:         NOTRUN -> [SKIP][62] ([i915#4079])
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-7/igt@gem_set_tiling_vs_blt@tiled-to-tiled.html

  * igt@gem_unfence_active_buffers:
    - shard-dg2:          NOTRUN -> [SKIP][63] ([i915#4879])
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-10/igt@gem_unfence_active_buffers.html

  * igt@gem_userptr_blits@coherency-sync:
    - shard-dg2:          NOTRUN -> [SKIP][64] ([i915#3297]) +3 other tests skip
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-10/igt@gem_userptr_blits@coherency-sync.html

  * igt@gem_userptr_blits@dmabuf-sync:
    - shard-glk:          NOTRUN -> [SKIP][65] ([fdo#109271] / [i915#3323])
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-glk9/igt@gem_userptr_blits@dmabuf-sync.html

  * igt@gem_userptr_blits@dmabuf-unsync:
    - shard-tglu:         NOTRUN -> [SKIP][66] ([i915#3297]) +1 other test skip
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-tglu-7/igt@gem_userptr_blits@dmabuf-unsync.html

  * igt@gem_userptr_blits@sd-probe:
    - shard-dg2:          NOTRUN -> [SKIP][67] ([i915#3297] / [i915#4958])
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-11/igt@gem_userptr_blits@sd-probe.html

  * igt@gen7_exec_parse@basic-allocation:
    - shard-mtlp:         NOTRUN -> [SKIP][68] ([fdo#109289]) +3 other tests skip
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-5/igt@gen7_exec_parse@basic-allocation.html

  * igt@gen7_exec_parse@batch-without-end:
    - shard-dg2:          NOTRUN -> [SKIP][69] ([fdo#109289])
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-6/igt@gen7_exec_parse@batch-without-end.html

  * igt@gen9_exec_parse@batch-invalid-length:
    - shard-mtlp:         NOTRUN -> [SKIP][70] ([i915#2856])
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-1/igt@gen9_exec_parse@batch-invalid-length.html

  * igt@gen9_exec_parse@batch-zero-length:
    - shard-tglu:         NOTRUN -> [SKIP][71] ([i915#2527] / [i915#2856])
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-tglu-2/igt@gen9_exec_parse@batch-zero-length.html

  * igt@gen9_exec_parse@shadow-peek:
    - shard-dg2:          NOTRUN -> [SKIP][72] ([i915#2856]) +4 other tests skip
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-6/igt@gen9_exec_parse@shadow-peek.html

  * igt@i915_fb_tiling:
    - shard-dg2:          NOTRUN -> [SKIP][73] ([i915#4881])
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-11/igt@i915_fb_tiling.html

  * igt@i915_module_load@resize-bar:
    - shard-mtlp:         NOTRUN -> [SKIP][74] ([i915#6412])
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-4/igt@i915_module_load@resize-bar.html

  * igt@i915_pipe_stress@stress-xrgb8888-ytiled:
    - shard-dg2:          NOTRUN -> [SKIP][75] ([i915#7091])
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-2/igt@i915_pipe_stress@stress-xrgb8888-ytiled.html

  * igt@i915_pm_rps@min-max-config-idle:
    - shard-dg2:          NOTRUN -> [SKIP][76] ([i915#6621]) +2 other tests skip
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-2/igt@i915_pm_rps@min-max-config-idle.html

  * igt@i915_pm_rps@thresholds-idle@gt0:
    - shard-dg2:          NOTRUN -> [SKIP][77] ([i915#8925]) +1 other test skip
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-6/igt@i915_pm_rps@thresholds-idle@gt0.html

  * igt@i915_query@query-topology-coherent-slice-mask:
    - shard-dg2:          NOTRUN -> [SKIP][78] ([i915#6188])
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-11/igt@i915_query@query-topology-coherent-slice-mask.html

  * igt@i915_query@query-topology-unsupported:
    - shard-mtlp:         NOTRUN -> [SKIP][79] ([fdo#109302])
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-6/igt@i915_query@query-topology-unsupported.html

  * igt@i915_selftest@mock@memory_region:
    - shard-snb:          NOTRUN -> [DMESG-WARN][80] ([i915#9311])
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-snb2/igt@i915_selftest@mock@memory_region.html

  * igt@kms_addfb_basic@basic-x-tiled-legacy:
    - shard-dg2:          NOTRUN -> [SKIP][81] ([i915#4212])
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-6/igt@kms_addfb_basic@basic-x-tiled-legacy.html

  * igt@kms_async_flips@crc@pipe-a-hdmi-a-3:
    - shard-dg2:          NOTRUN -> [FAIL][82] ([i915#8247]) +3 other tests fail
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-6/igt@kms_async_flips@crc@pipe-a-hdmi-a-3.html

  * igt@kms_async_flips@crc@pipe-d-hdmi-a-4:
    - shard-dg1:          NOTRUN -> [FAIL][83] ([i915#8247]) +3 other tests fail
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg1-18/igt@kms_async_flips@crc@pipe-d-hdmi-a-4.html

  * igt@kms_atomic@plane-primary-overlay-mutable-zpos:
    - shard-dg2:          NOTRUN -> [SKIP][84] ([i915#4098] / [i915#9531])
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-2/igt@kms_atomic@plane-primary-overlay-mutable-zpos.html

  * igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels:
    - shard-dg2:          NOTRUN -> [SKIP][85] ([i915#1769] / [i915#3555]) +1 other test skip
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-10/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip:
    - shard-mtlp:         [PASS][86] -> [FAIL][87] ([i915#5138]) +1 other test fail
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/shard-mtlp-2/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip.html
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-1/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip.html

  * igt@kms_big_fb@x-tiled-32bpp-rotate-270:
    - shard-dg2:          NOTRUN -> [SKIP][88] ([fdo#111614]) +6 other tests skip
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-11/igt@kms_big_fb@x-tiled-32bpp-rotate-270.html

  * igt@kms_big_fb@y-tiled-addfb-size-offset-overflow:
    - shard-dg2:          NOTRUN -> [SKIP][89] ([i915#5190]) +14 other tests skip
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-5/igt@kms_big_fb@y-tiled-addfb-size-offset-overflow.html

  * igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow:
    - shard-tglu:         NOTRUN -> [SKIP][90] ([fdo#111615])
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-tglu-10/igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow.html

  * igt@kms_big_fb@yf-tiled-addfb-size-overflow:
    - shard-mtlp:         NOTRUN -> [SKIP][91] ([i915#6187]) +1 other test skip
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-4/igt@kms_big_fb@yf-tiled-addfb-size-overflow.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip:
    - shard-dg2:          NOTRUN -> [SKIP][92] ([i915#4538] / [i915#5190]) +5 other tests skip
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-2/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip:
    - shard-mtlp:         NOTRUN -> [SKIP][93] ([fdo#111615]) +6 other tests skip
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-1/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html

  * igt@kms_big_joiner@2x-modeset:
    - shard-dg2:          NOTRUN -> [SKIP][94] ([i915#2705])
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-10/igt@kms_big_joiner@2x-modeset.html

  * igt@kms_cdclk@plane-scaling@pipe-c-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][95] ([i915#4087]) +3 other tests skip
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-1/igt@kms_cdclk@plane-scaling@pipe-c-edp-1.html

  * igt@kms_chamelium_audio@hdmi-audio-edid:
    - shard-mtlp:         NOTRUN -> [SKIP][96] ([i915#7828]) +4 other tests skip
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-4/igt@kms_chamelium_audio@hdmi-audio-edid.html

  * igt@kms_chamelium_color@ctm-green-to-red:
    - shard-mtlp:         NOTRUN -> [SKIP][97] ([fdo#111827])
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-5/igt@kms_chamelium_color@ctm-green-to-red.html

  * igt@kms_chamelium_color@ctm-max:
    - shard-dg2:          NOTRUN -> [SKIP][98] ([fdo#111827]) +2 other tests skip
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-11/igt@kms_chamelium_color@ctm-max.html

  * igt@kms_chamelium_color@ctm-negative:
    - shard-glk:          NOTRUN -> [SKIP][99] ([fdo#109271]) +108 other tests skip
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-glk7/igt@kms_chamelium_color@ctm-negative.html

  * igt@kms_chamelium_frames@dp-crc-fast:
    - shard-dg2:          NOTRUN -> [SKIP][100] ([i915#7828]) +11 other tests skip
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-2/igt@kms_chamelium_frames@dp-crc-fast.html

  * igt@kms_chamelium_frames@dp-frame-dump:
    - shard-tglu:         NOTRUN -> [SKIP][101] ([i915#7828])
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-tglu-3/igt@kms_chamelium_frames@dp-frame-dump.html

  * igt@kms_content_protection@dp-mst-lic-type-1:
    - shard-dg2:          NOTRUN -> [SKIP][102] ([i915#3299])
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-11/igt@kms_content_protection@dp-mst-lic-type-1.html

  * igt@kms_content_protection@legacy@pipe-a-dp-4:
    - shard-dg2:          NOTRUN -> [TIMEOUT][103] ([i915#7173])
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-11/igt@kms_content_protection@legacy@pipe-a-dp-4.html

  * igt@kms_content_protection@srm:
    - shard-dg2:          NOTRUN -> [SKIP][104] ([i915#7118]) +3 other tests skip
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-10/igt@kms_content_protection@srm.html
    - shard-mtlp:         NOTRUN -> [SKIP][105] ([i915#6944])
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-5/igt@kms_content_protection@srm.html

  * igt@kms_cursor_crc@cursor-offscreen-512x512:
    - shard-dg2:          NOTRUN -> [SKIP][106] ([i915#3359]) +1 other test skip
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-5/igt@kms_cursor_crc@cursor-offscreen-512x512.html

  * igt@kms_cursor_crc@cursor-onscreen-32x10:
    - shard-mtlp:         NOTRUN -> [SKIP][107] ([i915#3555] / [i915#8814]) +1 other test skip
   [107]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-1/igt@kms_cursor_crc@cursor-onscreen-32x10.html

  * igt@kms_cursor_crc@cursor-sliding-32x10:
    - shard-dg2:          NOTRUN -> [SKIP][108] ([i915#3555]) +8 other tests skip
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-6/igt@kms_cursor_crc@cursor-sliding-32x10.html

  * igt@kms_cursor_crc@cursor-sliding-512x170:
    - shard-mtlp:         NOTRUN -> [SKIP][109] ([i915#3359])
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-5/igt@kms_cursor_crc@cursor-sliding-512x170.html

  * igt@kms_cursor_legacy@2x-flip-vs-cursor-atomic:
    - shard-dg2:          NOTRUN -> [SKIP][110] ([fdo#109274] / [fdo#111767] / [i915#5354])
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-10/igt@kms_cursor_legacy@2x-flip-vs-cursor-atomic.html

  * igt@kms_cursor_legacy@2x-nonblocking-modeset-vs-cursor-atomic:
    - shard-mtlp:         NOTRUN -> [SKIP][111] ([i915#3546])
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-5/igt@kms_cursor_legacy@2x-nonblocking-modeset-vs-cursor-atomic.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic:
    - shard-dg2:          NOTRUN -> [SKIP][112] ([i915#4103] / [i915#4213] / [i915#5608]) +1 other test skip
   [112]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-2/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size:
    - shard-dg2:          NOTRUN -> [SKIP][113] ([i915#4103] / [i915#4213])
   [113]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-11/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size.html

  * igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions:
    - shard-tglu:         NOTRUN -> [SKIP][114] ([fdo#109274])
   [114]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-tglu-9/igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions.html

  * igt@kms_cursor_legacy@cursorb-vs-flipb-legacy:
    - shard-dg2:          NOTRUN -> [SKIP][115] ([fdo#109274] / [i915#5354]) +7 other tests skip
   [115]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-11/igt@kms_cursor_legacy@cursorb-vs-flipb-legacy.html

  * igt@kms_display_modes@mst-extended-mode-negative:
    - shard-dg2:          NOTRUN -> [SKIP][116] ([i915#8588])
   [116]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-10/igt@kms_display_modes@mst-extended-mode-negative.html

  * igt@kms_dsc@dsc-basic:
    - shard-mtlp:         NOTRUN -> [SKIP][117] ([i915#3555] / [i915#3840] / [i915#4098] / [i915#9159])
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-1/igt@kms_dsc@dsc-basic.html

  * igt@kms_dsc@dsc-with-output-formats:
    - shard-mtlp:         NOTRUN -> [SKIP][118] ([i915#3555] / [i915#3840])
   [118]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-2/igt@kms_dsc@dsc-with-output-formats.html

  * igt@kms_fbcon_fbt@fbc-suspend:
    - shard-tglu:         [PASS][119] -> [INCOMPLETE][120] ([i915#8797])
   [119]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/shard-tglu-2/igt@kms_fbcon_fbt@fbc-suspend.html
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-tglu-2/igt@kms_fbcon_fbt@fbc-suspend.html

  * igt@kms_flip@2x-flip-vs-expired-vblank-interruptible:
    - shard-snb:          NOTRUN -> [SKIP][121] ([fdo#109271] / [fdo#111767])
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-snb2/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible.html

  * igt@kms_flip@2x-flip-vs-fences-interruptible:
    - shard-dg2:          NOTRUN -> [SKIP][122] ([i915#8381]) +1 other test skip
   [122]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-5/igt@kms_flip@2x-flip-vs-fences-interruptible.html

  * igt@kms_flip@2x-modeset-vs-vblank-race:
    - shard-dg2:          NOTRUN -> [SKIP][123] ([fdo#109274]) +5 other tests skip
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-10/igt@kms_flip@2x-modeset-vs-vblank-race.html

  * igt@kms_flip@2x-wf_vblank-ts-check:
    - shard-mtlp:         NOTRUN -> [SKIP][124] ([i915#3637]) +3 other tests skip
   [124]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-2/igt@kms_flip@2x-wf_vblank-ts-check.html

  * igt@kms_flip@2x-wf_vblank-ts-check-interruptible:
    - shard-tglu:         NOTRUN -> [SKIP][125] ([fdo#109274] / [i915#3637])
   [125]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-tglu-2/igt@kms_flip@2x-wf_vblank-ts-check-interruptible.html

  * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling@pipe-a-default-mode:
    - shard-mtlp:         NOTRUN -> [SKIP][126] ([i915#2672]) +1 other test skip
   [126]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-5/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling@pipe-a-default-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling@pipe-a-valid-mode:
    - shard-dg2:          NOTRUN -> [SKIP][127] ([i915#2672]) +3 other tests skip
   [127]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-2/igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling@pipe-a-default-mode:
    - shard-mtlp:         NOTRUN -> [SKIP][128] ([i915#8810])
   [128]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-1/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling@pipe-a-default-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-downscaling@pipe-a-default-mode:
    - shard-mtlp:         NOTRUN -> [SKIP][129] ([i915#3555] / [i915#8810])
   [129]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-4/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-downscaling@pipe-a-default-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-valid-mode:
    - shard-dg2:          NOTRUN -> [SKIP][130] ([i915#2672] / [i915#3555])
   [130]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-5/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-valid-mode.html

  * igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-pwrite:
    - shard-dg2:          [PASS][131] -> [FAIL][132] ([i915#6880]) +1 other test fail
   [131]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/shard-dg2-11/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-pwrite.html
   [132]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-11/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-msflip-blt:
    - shard-dg2:          NOTRUN -> [FAIL][133] ([i915#6880])
   [133]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-6/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-msflip-blt.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-mmap-gtt:
    - shard-mtlp:         NOTRUN -> [SKIP][134] ([i915#8708]) +3 other tests skip
   [134]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-7/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-wc:
    - shard-dg2:          NOTRUN -> [SKIP][135] ([i915#8708]) +13 other tests skip
   [135]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-6/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-plflip-blt:
    - shard-dg2:          NOTRUN -> [SKIP][136] ([i915#5354]) +26 other tests skip
   [136]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-10/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-mmap-wc:
    - shard-tglu:         NOTRUN -> [SKIP][137] ([fdo#109280]) +2 other tests skip
   [137]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-tglu-8/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-gtt:
    - shard-tglu:         NOTRUN -> [SKIP][138] ([fdo#110189]) +2 other tests skip
   [138]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-tglu-6/igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-tiling-y:
    - shard-mtlp:         NOTRUN -> [SKIP][139] ([i915#5460])
   [139]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-1/igt@kms_frontbuffer_tracking@fbcpsr-tiling-y.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-blt:
    - shard-dg2:          NOTRUN -> [SKIP][140] ([i915#3458]) +22 other tests skip
   [140]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-11/igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-render:
    - shard-mtlp:         NOTRUN -> [SKIP][141] ([i915#1825]) +18 other tests skip
   [141]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-4/igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-render.html

  * igt@kms_hdr@static-swap:
    - shard-dg2:          NOTRUN -> [SKIP][142] ([i915#3555] / [i915#8228]) +3 other tests skip
   [142]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-7/igt@kms_hdr@static-swap.html

  * igt@kms_invalid_mode@clock-too-high@pipe-c-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][143] ([i915#9457]) +2 other tests skip
   [143]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-4/igt@kms_invalid_mode@clock-too-high@pipe-c-edp-1.html

  * igt@kms_plane_alpha_blend@alpha-basic@pipe-a-hdmi-a-1:
    - shard-glk:          NOTRUN -> [FAIL][144] ([i915#7862]) +1 other test fail
   [144]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-glk4/igt@kms_plane_alpha_blend@alpha-basic@pipe-a-hdmi-a-1.html

  * igt@kms_plane_lowres@tiling-none@pipe-b-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][145] ([i915#3582]) +3 other tests skip
   [145]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-1/igt@kms_plane_lowres@tiling-none@pipe-b-edp-1.html

  * igt@kms_plane_multiple@tiling-y:
    - shard-mtlp:         NOTRUN -> [SKIP][146] ([i915#3555] / [i915#8806])
   [146]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-1/igt@kms_plane_multiple@tiling-y.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25@pipe-d-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][147] ([i915#3555] / [i915#5235]) +1 other test skip
   [147]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-1/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25@pipe-d-edp-1.html

  * igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25@pipe-a-dp-4:
    - shard-dg2:          NOTRUN -> [SKIP][148] ([i915#5235]) +15 other tests skip
   [148]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-11/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25@pipe-a-dp-4.html

  * igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-75@pipe-a-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][149] ([i915#5235]) +5 other tests skip
   [149]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-8/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-75@pipe-a-edp-1.html

  * igt@kms_psr2_su@frontbuffer-xrgb8888:
    - shard-dg2:          NOTRUN -> [SKIP][150] ([i915#9683]) +3 other tests skip
   [150]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-2/igt@kms_psr2_su@frontbuffer-xrgb8888.html

  * igt@kms_rotation_crc@bad-pixel-format:
    - shard-dg2:          NOTRUN -> [SKIP][151] ([i915#4235])
   [151]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-7/igt@kms_rotation_crc@bad-pixel-format.html

  * igt@kms_rotation_crc@primary-rotation-90:
    - shard-tglu:         [PASS][152] -> [DMESG-WARN][153] ([i915#1982])
   [152]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/shard-tglu-3/igt@kms_rotation_crc@primary-rotation-90.html
   [153]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-tglu-9/igt@kms_rotation_crc@primary-rotation-90.html

  * igt@kms_rotation_crc@primary-y-tiled-reflect-x-270:
    - shard-mtlp:         NOTRUN -> [SKIP][154] ([i915#4235])
   [154]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-1/igt@kms_rotation_crc@primary-y-tiled-reflect-x-270.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90:
    - shard-dg2:          NOTRUN -> [SKIP][155] ([i915#4235] / [i915#5190])
   [155]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-10/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90.html

  * igt@kms_tiled_display@basic-test-pattern:
    - shard-dg2:          NOTRUN -> [SKIP][156] ([i915#8623]) +1 other test skip
   [156]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-11/igt@kms_tiled_display@basic-test-pattern.html

  * igt@kms_tv_load_detect@load-detect:
    - shard-dg2:          NOTRUN -> [SKIP][157] ([fdo#109309])
   [157]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-11/igt@kms_tv_load_detect@load-detect.html

  * igt@kms_universal_plane@cursor-fb-leak@pipe-d-edp-1:
    - shard-mtlp:         [PASS][158] -> [FAIL][159] ([i915#9196]) +1 other test fail
   [158]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/shard-mtlp-5/igt@kms_universal_plane@cursor-fb-leak@pipe-d-edp-1.html
   [159]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-7/igt@kms_universal_plane@cursor-fb-leak@pipe-d-edp-1.html

  * igt@kms_writeback@writeback-fb-id:
    - shard-dg2:          NOTRUN -> [SKIP][160] ([i915#2437]) +1 other test skip
   [160]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-6/igt@kms_writeback@writeback-fb-id.html

  * igt@perf_pmu@busy-double-start@bcs0:
    - shard-mtlp:         [PASS][161] -> [FAIL][162] ([i915#4349]) +4 other tests fail
   [161]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/shard-mtlp-8/igt@perf_pmu@busy-double-start@bcs0.html
   [162]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-4/igt@perf_pmu@busy-double-start@bcs0.html

  * igt@perf_pmu@cpu-hotplug:
    - shard-mtlp:         NOTRUN -> [SKIP][163] ([i915#8850])
   [163]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-5/igt@perf_pmu@cpu-hotplug.html

  * igt@perf_pmu@event-wait@rcs0:
    - shard-mtlp:         NOTRUN -> [SKIP][164] ([i915#3555] / [i915#8807])
   [164]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-4/igt@perf_pmu@event-wait@rcs0.html

  * igt@prime_udl:
    - shard-mtlp:         NOTRUN -> [SKIP][165] ([fdo#109291])
   [165]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-7/igt@prime_udl.html

  * igt@prime_vgem@basic-fence-flip:
    - shard-dg2:          NOTRUN -> [SKIP][166] ([i915#3708])
   [166]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-7/igt@prime_vgem@basic-fence-flip.html

  * igt@prime_vgem@basic-fence-mmap:
    - shard-mtlp:         NOTRUN -> [SKIP][167] ([i915#3708] / [i915#4077])
   [167]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-8/igt@prime_vgem@basic-fence-mmap.html

  * igt@prime_vgem@basic-gtt:
    - shard-dg2:          NOTRUN -> [SKIP][168] ([i915#3708] / [i915#4077])
   [168]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-10/igt@prime_vgem@basic-gtt.html

  * igt@prime_vgem@basic-read:
    - shard-dg2:          NOTRUN -> [SKIP][169] ([i915#3291] / [i915#3708])
   [169]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-5/igt@prime_vgem@basic-read.html

  * igt@v3d/v3d_job_submission@array-job-submission:
    - shard-mtlp:         NOTRUN -> [SKIP][170] ([i915#2575]) +4 other tests skip
   [170]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-7/igt@v3d/v3d_job_submission@array-job-submission.html

  * igt@v3d/v3d_submit_cl@multi-and-single-sync:
    - shard-tglu:         NOTRUN -> [SKIP][171] ([fdo#109315] / [i915#2575])
   [171]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-tglu-3/igt@v3d/v3d_submit_cl@multi-and-single-sync.html

  * igt@v3d/v3d_submit_csd@job-perfmon:
    - shard-dg2:          NOTRUN -> [SKIP][172] ([i915#2575]) +10 other tests skip
   [172]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-2/igt@v3d/v3d_submit_csd@job-perfmon.html

  * igt@vc4/vc4_tiling@get-after-free:
    - shard-mtlp:         NOTRUN -> [SKIP][173] ([i915#7711]) +3 other tests skip
   [173]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-6/igt@vc4/vc4_tiling@get-after-free.html

  * igt@vc4/vc4_wait_seqno@bad-seqno-1ns:
    - shard-dg2:          NOTRUN -> [SKIP][174] ([i915#7711]) +9 other tests skip
   [174]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-10/igt@vc4/vc4_wait_seqno@bad-seqno-1ns.html

  
#### Possible fixes ####

  * igt@gem_eio@reset-stress:
    - shard-dg1:          [FAIL][175] ([i915#5784]) -> [PASS][176]
   [175]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/shard-dg1-16/igt@gem_eio@reset-stress.html
   [176]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg1-15/igt@gem_eio@reset-stress.html

  * igt@gem_exec_suspend@basic-s0@smem:
    - shard-dg2:          [INCOMPLETE][177] ([i915#9275]) -> [PASS][178]
   [177]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/shard-dg2-2/igt@gem_exec_suspend@basic-s0@smem.html
   [178]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-6/igt@gem_exec_suspend@basic-s0@smem.html

  * igt@gem_lmem_swapping@smem-oom@lmem0:
    - shard-dg2:          [TIMEOUT][179] ([i915#5493]) -> [PASS][180]
   [179]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/shard-dg2-10/igt@gem_lmem_swapping@smem-oom@lmem0.html
   [180]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-6/igt@gem_lmem_swapping@smem-oom@lmem0.html
    - shard-dg1:          [DMESG-WARN][181] ([i915#4936] / [i915#5493]) -> [PASS][182]
   [181]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/shard-dg1-14/igt@gem_lmem_swapping@smem-oom@lmem0.html
   [182]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg1-18/igt@gem_lmem_swapping@smem-oom@lmem0.html

  * igt@gem_workarounds@reset-fd:
    - shard-mtlp:         [ABORT][183] ([i915#9414]) -> [PASS][184]
   [183]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/shard-mtlp-8/igt@gem_workarounds@reset-fd.html
   [184]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-4/igt@gem_workarounds@reset-fd.html

  * igt@gen9_exec_parse@allowed-single:
    - shard-glk:          [INCOMPLETE][185] ([i915#5566]) -> [PASS][186]
   [185]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/shard-glk6/igt@gen9_exec_parse@allowed-single.html
   [186]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-glk7/igt@gen9_exec_parse@allowed-single.html

  * igt@i915_power@sanity:
    - shard-mtlp:         [SKIP][187] ([i915#7984]) -> [PASS][188]
   [187]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/shard-mtlp-4/igt@i915_power@sanity.html
   [188]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-4/igt@i915_power@sanity.html

  * igt@i915_selftest@live@gem_contexts:
    - shard-mtlp:         [DMESG-FAIL][189] ([i915#9579]) -> [PASS][190]
   [189]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/shard-mtlp-6/igt@i915_selftest@live@gem_contexts.html
   [190]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-2/igt@i915_selftest@live@gem_contexts.html

  * igt@kms_atomic@crtc-invalid-params-fence@pipe-a-edp-1:
    - shard-mtlp:         [DMESG-WARN][191] ([i915#2017]) -> [PASS][192]
   [191]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/shard-mtlp-6/igt@kms_atomic@crtc-invalid-params-fence@pipe-a-edp-1.html
   [192]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-4/igt@kms_atomic@crtc-invalid-params-fence@pipe-a-edp-1.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip:
    - shard-mtlp:         [FAIL][193] ([i915#5138]) -> [PASS][194] +1 other test pass
   [193]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/shard-mtlp-8/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip.html
   [194]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-7/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions:
    - shard-glk:          [FAIL][195] ([i915#2346]) -> [PASS][196] +1 other test pass
   [195]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/shard-glk4/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html
   [196]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-glk9/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html

  * {igt@kms_pm_dc@dc9-dpms}:
    - shard-tglu:         [SKIP][197] ([i915#4281]) -> [PASS][198]
   [197]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/shard-tglu-10/igt@kms_pm_dc@dc9-dpms.html
   [198]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-tglu-9/igt@kms_pm_dc@dc9-dpms.html

  * {igt@kms_pm_rpm@modeset-lpsp-stress}:
    - shard-dg2:          [SKIP][199] ([i915#9519]) -> [PASS][200]
   [199]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/shard-dg2-11/igt@kms_pm_rpm@modeset-lpsp-stress.html
   [200]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-10/igt@kms_pm_rpm@modeset-lpsp-stress.html

  * igt@kms_sysfs_edid_timing:
    - shard-dg2:          [FAIL][201] ([IGT#2]) -> [PASS][202]
   [201]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/shard-dg2-5/igt@kms_sysfs_edid_timing.html
   [202]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-11/igt@kms_sysfs_edid_timing.html

  * igt@perf@non-zero-reason@0-rcs0:
    - shard-dg2:          [FAIL][203] ([i915#7484]) -> [PASS][204]
   [203]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/shard-dg2-5/igt@perf@non-zero-reason@0-rcs0.html
   [204]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-6/igt@perf@non-zero-reason@0-rcs0.html

  * igt@sysfs_timeslice_duration@timeout@vcs0:
    - shard-dg2:          [ABORT][205] -> [PASS][206]
   [205]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/shard-dg2-11/igt@sysfs_timeslice_duration@timeout@vcs0.html
   [206]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-dg2-11/igt@sysfs_timeslice_duration@timeout@vcs0.html

  
#### Warnings ####

  * igt@kms_async_flips@crc@pipe-d-edp-1:
    - shard-mtlp:         [FAIL][207] ([i915#8247]) -> [DMESG-FAIL][208] ([i915#8561]) +3 other tests dmesg-fail
   [207]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13920/shard-mtlp-7/igt@kms_async_flips@crc@pipe-d-edp-1.html
   [208]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/shard-mtlp-1/igt@kms_async_flips@crc@pipe-d-edp-1.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [IGT#2]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/2
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109274]: https://bugs.freedesktop.org/show_bug.cgi?id=109274
  [fdo#109280]: https://bugs.freedesktop.org/show_bug.cgi?id=109280
  [fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289
  [fdo#109291]: https://bugs.freedesktop.org/show_bug.cgi?id=109291
  [fdo#109293]: https://bugs.freedesktop.org/show_bug.cgi?id=109293
  [fdo#109302]: https://bugs.freedesktop.org/show_bug.cgi?id=109302
  [fdo#109309]: https://bugs.freedesktop.org/show_bug.cgi?id=109309
  [fdo#109314]: https://bugs.freedesktop.org/show_bug.cgi?id=109314
  [fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315
  [fdo#109506]: https://bugs.freedesktop.org/show_bug.cgi?id=109506
  [fdo#110189]: https://bugs.freedesktop.org/show_bug.cgi?id=110189
  [fdo#111614]: https://bugs.freedesktop.org/show_bug.cgi?id=111614
  [fdo#111615]: https://bugs.freedesktop.org/show_bug.cgi?id=111615
  [fdo#111767]: https://bugs.freedesktop.org/show_bug.cgi?id=111767
  [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
  [i915#1099]: https://gitlab.freedesktop.org/drm/intel/issues/1099
  [i915#1769]: https://gitlab.freedesktop.org/drm/intel/issues/1769
  [i915#1825]: https://gitlab.freedesktop.org/drm/intel/issues/1825
  [i915#1982]: https://gitlab.freedesktop.org/drm/intel/issues/1982
  [i915#2017]: https://gitlab.freedesktop.org/drm/intel/issues/2017
  [i915#2065]: https://gitlab.freedesktop.org/drm/intel/issues/2065
  [i915#2346]: https://gitlab.freedesktop.org/drm/intel/issues/2346
  [i915#2437]: https://gitlab.freedesktop.org/drm/intel/issues/2437
  [i915#2527]: https://gitlab.freedesktop.org/drm/intel/issues/2527
  [i915#2575]: https://gitlab.freedesktop.org/drm/intel/issues/2575
  [i915#2658]: https://gitlab.freedesktop.org/drm/intel/issues/2658
  [i915#2672]: https://gitlab.freedesktop.org/drm/intel/issues/2672
  [i915#2705]: https://gitlab.freedesktop.org/drm/intel/issues/2705
  [i915#280]: https://gitlab.freedesktop.org/drm/intel/issues/280
  [i915#2842]: https://gitlab.freedesktop.org/drm/intel/issues/2842
  [i915#2846]: https://gitlab.freedesktop.org/drm/intel/issues/2846
  [i915#2856]: https://gitlab.freedesktop.org/drm/intel/issues/2856
  [i915#3281]: https://gitlab.freedesktop.org/drm/intel/issues/3281
  [i915#3282]: https://gitlab.freedesktop.org/drm/intel/issues/3282
  [i915#3291]: https://gitlab.freedesktop.org/drm/intel/issues/3291
  [i915#3297]: https://gitlab.freedesktop.org/drm/intel/issues/3297
  [i915#3299]: https://gitlab.freedesktop.org/drm/intel/issues/3299
  [i915#3323]: https://gitlab.freedesktop.org/drm/intel/issues/3323
  [i915#3359]: https://gitlab.freedesktop.org/drm/intel/issues/3359
  [i915#3458]: https://gitlab.freedesktop.org/drm/intel/issues/3458
  [i915#3539]: https://gitlab.freedesktop.org/drm/intel/issues/3539
  [i915#3546]: https://gitlab.freedesktop.org/drm/intel/issues/3546
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#3582]: https://gitlab.freedesktop.org/drm/intel/issues/3582
  [i915#3591]: https://gitlab.freedesktop.org/drm/intel/issues/3591
  [i915#3637]: https://gitlab.freedesktop.org/drm/intel/issues/3637
  [i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
  [i915#3840]: https://gitlab.freedesktop.org/drm/intel/issues/3840
  [i915#3936]: https://gitlab.freedesktop.org/drm/intel/issues/3936
  [i915#4036]: https://gitlab.freedesktop.org/drm/intel/issues/4036
  [i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077
  [i915#4079]: https://gitlab.freedesktop.org/drm/intel/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083
  [i915#4087]: https://gitlab.freedesktop.org/drm/intel/issues/4087
  [i915#4098]: https://gitlab.freedesktop.org/drm/intel/issues/4098
  [i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103
  [i915#4212]: https://gitlab.freedesktop.org/drm/intel/issues/4212
  [i915#4213]: https://gitlab.freedesktop.org/drm/intel/issues/4213
  [i915#4235]: https://gitlab.freedesktop.org/drm/intel/issues/4235
  [i915#4270]: https://gitlab.freedesktop.org/drm/intel/issues/4270
  [i915#4281]: https://gitlab.freedesktop.org/drm/intel/issues/4281
  [i915#4349]: https://gitlab.freedesktop.org/drm/intel/issues/4349
  [i915#4473]: https://gitlab.freedesktop.org/drm/intel/issues/4473
  [i915#4537]: https://gitlab.freedesktop.org/drm/intel/issues/4537
  [i915#4538]: https://gitlab.freedesktop.org/drm/intel/issues/4538
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
  [i915#4771]: https://gitlab.freedesktop.org/drm/intel/issues/4771
  [i915#4812]: https://gitlab.freedesktop.org/drm/intel/issues/4812
  [i915#4852]: https://gitlab.freedesktop.org/drm/intel/issues/4852
  [i915#4854]: https://gitlab.freedesktop.org/drm/intel/issues/4854
  [i915#4860]: https://gitlab.freedesktop.org/drm/intel/issues/4860
  [i915#4879]: https://gitlab.freedesktop.org/drm/intel/issues/4879
  [i915#4881]: https://gitlab.freedesktop.org/drm/intel/issues/4881
  [i915#4936]: https://gitlab.freedesktop.org/drm/intel/issues/4936
  [i915#4958]: https://gitlab.freedesktop.org/drm/intel/issues/4958
  [i915#5138]: https://gitlab.freedesktop.org/drm/intel/issues/5138
  [i915#5190]: https://gitlab.freedesktop.org/drm/intel/issues/5190
  [i915#5235]: https://gitlab.freedesktop.org/drm/intel/issues/5235
  [i915#5354]: https://gitlab.freedesktop.org/drm/intel/issues/5354
  [i915#5460]: https://gitlab.freedesktop.org/drm/intel/issues/5460
  [i915#5493]: https://gitlab.freedesktop.org/drm/intel/issues/5493
  [i915#5566]: https://gitlab.freedesktop.org/drm/intel/issues/5566
  [i915#5608]: https://gitlab.freedesktop.org/drm/intel/issues/5608
  [i915#5784]: https://gitlab.freedesktop.org/drm/intel/issues/5784
  [i915#5978]: https://gitlab.freedesktop.org/drm/intel/issues/5978
  [i915#6095]: https://gitlab.freedesktop.org/drm/intel/issues/6095
  [i915#6187]: https://gitlab.freedesktop.org/drm/intel/issues/6187
  [i915#6188]: https://gitlab.freedesktop.org/drm/intel/issues/6188
  [i915#6268]: https://gitlab.freedesktop.org/drm/intel/issues/6268
  [i915#6412]: https://gitlab.freedesktop.org/drm/intel/issues/6412
  [i915#658]: https://gitlab.freedesktop.org/drm/intel/issues/658
  [i915#6621]: https://gitlab.freedesktop.org/drm/intel/issues/6621
  [i915#6880]: https://gitlab.freedesktop.org/drm/intel/issues/6880
  [i915#6944]: https://gitlab.freedesktop.org/drm/intel/issues/6944
  [i915#7091]: https://gitlab.freedesktop.org/drm/intel/issues/7091
  [i915#7118]: https://gitlab.freedesktop.org/drm/intel/issues/7118
  [i915#7173]: https://gitlab.freedesktop.org/drm/intel/issues/7173
  [i915#7484]: https://gitlab.freedesktop.org/drm/intel/issues/7484
  [i915#7697]: https://gitlab.freedesktop.org/drm/intel/issues/7697
  [i915#7701]: https://gitlab.freedesktop.org/drm/intel/issues/7701
  [i915#7707]: https://gitlab.freedesktop.org/drm/intel/issues/7707
  [i915#7711]: https://gitlab.freedesktop.org/drm/intel/issues/7711
  [i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828
  [i915#7862]: https://gitlab.freedesktop.org/drm/intel/issues/7862
  [i915#7984]: https://gitlab.freedesktop.org/drm/intel/issues/7984
  [i915#8063]: https://gitlab.freedesktop.org/drm/intel/issues/8063
  [i915#8228]: https://gitlab.freedesktop.org/drm/intel/issues/8228
  [i915#8247]: https://gitlab.freedesktop.org/drm/intel/issues/8247
  [i915#8381]: https://gitlab.freedesktop.org/drm/intel/issues/8381
  [i915#8411]: https://gitlab.freedesktop.org/drm/intel/issues/8411
  [i915#8414]: https://gitlab.freedesktop.org/drm/intel/issues/8414
  [i915#8428]: https://gitlab.freedesktop.org/drm/intel/issues/8428
  [i915#8430]: https://gitlab.freedesktop.org/drm/intel/issues/8430
  [i915#8555]: https://gitlab.freedesktop.org/drm/intel/issues/8555
  [i915#8561]: https://gitlab.freedesktop.org/drm/intel/issues/8561
  [i915#8562]: https://gitlab.freedesktop.org/drm/intel/issues/8562
  [i915#8588]: https://gitlab.freedesktop.org/drm/intel/issues/8588
  [i915#8623]: https://gitlab.freedesktop.org/drm/intel/issues/8623
  [i915#8708]: https://gitlab.freedesktop.org/drm/intel/issues/8708
  [i915#8709]: https://gitlab.freedesktop.org/drm/intel/issues/8709
  [i915#8797]: https://gitlab.freedesktop.org/drm/intel/issues/8797
  [i915#8806]: https://gitlab.freedesktop.org/drm/intel/issues/8806
  [i915#8807]: https://gitlab.freedesktop.org/drm/intel/issues/8807
  [i915#8810]: https://gitlab.freedesktop.org/drm/intel/issues/8810
  [i915#8814]: https://gitlab.freedesktop.org/drm/intel/issues/8814
  [i915#8850]: https://gitlab.freedesktop.org/drm/intel/issues/8850
  [i915#8925]: https://gitlab.freedesktop.org/drm/intel/issues/8925
  [i915#9159]: https://gitlab.freedesktop.org/drm/intel/issues/9159
  [i915#9196]: https://gitlab.freedesktop.org/drm/intel/issues/9196
  [i915#9275]: https://gitlab.freedesktop.org/drm/intel/issues/9275
  [i915#9311]: https://gitlab.freedesktop.org/drm/intel/issues/9311
  [i915#9412]: https://gitlab.freedesktop.org/drm/intel/issues/9412
  [i915#9414]: https://gitlab.freedesktop.org/drm/intel/issues/9414
  [i915#9423]: https://gitlab.freedesktop.org/drm/intel/issues/9423
  [i915#9424]: https://gitlab.freedesktop.org/drm/intel/issues/9424
  [i915#9433]: https://gitlab.freedesktop.org/drm/intel/issues/9433
  [i915#9457]: https://gitlab.freedesktop.org/drm/intel/issues/9457
  [i915#9519]: https://gitlab.freedesktop.org/drm/intel/issues/9519
  [i915#9531]: https://gitlab.freedesktop.org/drm/intel/issues/9531
  [i915#9579]: https://gitlab.freedesktop.org/drm/intel/issues/9579
  [i915#9606]: https://gitlab.freedesktop.org/drm/intel/issues/9606
  [i915#9653]: https://gitlab.freedesktop.org/drm/intel/issues/9653
  [i915#9673]: https://gitlab.freedesktop.org/drm/intel/issues/9673
  [i915#9681]: https://gitlab.freedesktop.org/drm/intel/issues/9681
  [i915#9683]: https://gitlab.freedesktop.org/drm/intel/issues/9683
  [i915#9685]: https://gitlab.freedesktop.org/drm/intel/issues/9685
  [i915#9688]: https://gitlab.freedesktop.org/drm/intel/issues/9688


Build changes
-------------

  * CI: CI-20190529 -> None
  * IGT: IGT_7601 -> IGTPW_10264
  * Piglit: piglit_4509 -> None

  CI-20190529: 20190529
  CI_DRM_13920: 278e4673d0a5f5cd5d0b585df88cbcb6d3afd0d8 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_10264: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/index.html
  IGT_7601: 9c6e7f255724e327627be7c8ed30e23742e97386 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10264/index.html

[-- Attachment #2: Type: text/html, Size: 68039 bytes --]

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [igt-dev] [i-g-t 5/5] tests/kms/testplan: Avoid duplicate names on Mega feature vs Functionality
  2023-11-25 16:20 [igt-dev] [i-g-t 0/5] Optimize kms tesplan documentation Bhanuprakash Modem
@ 2023-11-25 16:20 ` Bhanuprakash Modem
  0 siblings, 0 replies; 15+ messages in thread
From: Bhanuprakash Modem @ 2023-11-25 16:20 UTC (permalink / raw)
  To: igt-dev, swati2.sharma

Avoid duplicate names on Mega feature vs Functionality in KMS
testplan documentation.

This patch will do below updates in Functionality:
- eDP --> eDP_core
- hdr --> static_hdr
- psr --> psr1, psr2 (based on the requiremnet)

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
Reviewed-by: Mauro Carvalho Chehab <mauro.chehab@linux.intel.com>
---
 tests/intel/kms_fbcon_fbt.c            |   4 +-
 tests/intel/kms_frontbuffer_tracking.c | 228 ++++++++++++-------------
 tests/intel/kms_pm_dc.c                |   4 +-
 tests/intel/kms_psr.c                  |  38 ++---
 tests/intel/kms_psr_stress_test.c      |   2 +-
 tests/kms_feature_discovery.c          |   4 +-
 tests/kms_hdmi_inject.c                |   2 +-
 tests/kms_hdr.c                        |  13 +-
 tests/kms_panel_fitting.c              |   2 +-
 tests/kms_scaling_modes.c              |   2 +-
 10 files changed, 151 insertions(+), 148 deletions(-)

diff --git a/tests/intel/kms_fbcon_fbt.c b/tests/intel/kms_fbcon_fbt.c
index e2617a79a..90484dccf 100644
--- a/tests/intel/kms_fbcon_fbt.c
+++ b/tests/intel/kms_fbcon_fbt.c
@@ -57,13 +57,13 @@
  * SUBTEST: psr
  * Description: Test the relationship between fbcon and the frontbuffer tracking
  *              infrastructure with psr enabled.
- * Functionality: fbcon, fbt, psr
+ * Functionality: fbcon, fbt, psr1
  * Mega feature: PSR
  *
  * SUBTEST: psr-suspend
  * Description: Suspend test to validate the relationship between fbcon and the
  *              frontbuffer tracking infrastructure with psr enabled.
- * Functionality: fbcon, fbt, psr, suspend
+ * Functionality: fbcon, fbt, psr1, suspend
  * Mega feature: PSR
  */
 
diff --git a/tests/intel/kms_frontbuffer_tracking.c b/tests/intel/kms_frontbuffer_tracking.c
index abc44bf39..259dfd136 100644
--- a/tests/intel/kms_frontbuffer_tracking.c
+++ b/tests/intel/kms_frontbuffer_tracking.c
@@ -67,7 +67,7 @@
  *
  * SUBTEST: psr-%dp-rte
  * Description: Sanity test to enable PSR with %arg[1] panels.
- * Functionality: fbt, psr
+ * Functionality: fbt, psr1
  *
  * SUBTEST: fbcdrrs-%dp-rte
  * Description: Sanity test to enable FBC & DRRS with %arg[1] panels.
@@ -75,15 +75,15 @@
  *
  * SUBTEST: fbcpsr-%dp-rte
  * Description: Sanity test to enable FBC & PSR with %arg[1] panels.
- * Functionality: fbc, fbt, psr
+ * Functionality: fbc, fbt, psr1
  *
  * SUBTEST: psrdrrs-%dp-rte
  * Description: Sanity test to enable PSR & DRRS with %arg[1] panels.
- * Functionality: fbt, drrs, psr
+ * Functionality: fbt, drrs, psr1
  *
  * SUBTEST: fbcpsrdrrs-%dp-rte
  * Description: Sanity test to enable FBC, PSR & DRRS with %arg[1] panels.
- * Functionality: fbc, fbt, drrs, psr
+ * Functionality: fbc, fbt, drrs, psr1
  *
  * arg[1].values:   1, 2
  */
@@ -99,7 +99,7 @@
  *
  * SUBTEST: psr-1p-offscren-pri-%s-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: fbt, kms_core, psr
+ * Functionality: fbt, kms_core, psr1
  *
  * SUBTEST: fbcdrrs-1p-offscren-pri-%s-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
@@ -107,15 +107,15 @@
  *
  * SUBTEST: fbcpsr-1p-offscren-pri-%s-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: fbc, fbt, kms_core, psr
+ * Functionality: fbc, fbt, kms_core, psr1
  *
  * SUBTEST: psrdrrs-1p-offscren-pri-%s-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: drrs, fbt, kms_core, psr
+ * Functionality: drrs, fbt, kms_core, psr1
  *
  * SUBTEST: fbcpsrdrrs-1p-offscren-pri-%s-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Functionality: drrs, fbc, fbt, kms_core, psr1
  *
  * arg[1]:
  *
@@ -143,7 +143,7 @@
  * SUBTEST: psr-1p-offscren-pri-%s-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: fbt, kms_core, psr
+ * Functionality: fbt, kms_core, psr1
  *
  * SUBTEST: fbcdrrs-1p-offscren-pri-%s-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
@@ -153,17 +153,17 @@
  * SUBTEST: fbcpsr-1p-offscren-pri-%s-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: fbc, fbt, kms_core, psr
+ * Functionality: fbc, fbt, kms_core, psr1
  *
  * SUBTEST: psrdrrs-1p-offscren-pri-%s-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: drrs, fbt, kms_core, psr
+ * Functionality: drrs, fbt, kms_core, psr1
  *
  * SUBTEST: fbcpsrdrrs-1p-offscren-pri-%s-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Functionality: drrs, fbc, fbt, kms_core, psr1
  *
  * arg[1]:
  *
@@ -191,7 +191,7 @@
  * SUBTEST: psr-%dp-primscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: fbt, kms_core, psr
+ * Functionality: fbt, kms_core, psr1
  *
  * SUBTEST: fbcdrrs-%dp-primscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
@@ -201,17 +201,17 @@
  * SUBTEST: fbcpsr-%dp-primscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: fbc, fbt, kms_core, psr
+ * Functionality: fbc, fbt, kms_core, psr1
  *
  * SUBTEST: psrdrrs-%dp-primscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: drrs, fbt, kms_core, psr
+ * Functionality: drrs, fbt, kms_core, psr1
  *
  * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Functionality: drrs, fbc, fbt, kms_core, psr1
  *
  * arg[1].values:   1, 2
  *
@@ -239,7 +239,7 @@
  *
  * SUBTEST: psr-%dp-primscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: fbt, kms_core, psr
+ * Functionality: fbt, kms_core, psr1
  *
  * SUBTEST: fbcdrrs-%dp-primscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
@@ -247,15 +247,15 @@
  *
  * SUBTEST: fbcpsr-%dp-primscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: fbc, fbt, kms_core, psr
+ * Functionality: fbc, fbt, kms_core, psr1
  *
  * SUBTEST: psrdrrs-%dp-primscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: drrs, fbt, kms_core, psr
+ * Functionality: drrs, fbt, kms_core, psr1
  *
  * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Functionality: drrs, fbc, fbt, kms_core, psr1
  *
  * arg[1].values:   1, 2
  *
@@ -283,7 +283,7 @@
  *
  * SUBTEST: psr-%dp-primscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: fbt, kms_core, psr
+ * Functionality: fbt, kms_core, psr1
  *
  * SUBTEST: fbcdrrs-%dp-primscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
@@ -291,15 +291,15 @@
  *
  * SUBTEST: fbcpsr-%dp-primscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: fbc, fbt, kms_core, psr
+ * Functionality: fbc, fbt, kms_core, psr1
  *
  * SUBTEST: psrdrrs-%dp-primscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: drrs, fbt, kms_core, psr
+ * Functionality: drrs, fbt, kms_core, psr1
  *
  * SUBTEST: fbcpsrdrrs-%dp-primscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Functionality: drrs, fbc, fbt, kms_core, psr1
  *
  * arg[1].values:   1, 2
  *
@@ -324,7 +324,7 @@
  * SUBTEST: psr-%dp-primscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: fbt, kms_core, psr
+ * Functionality: fbt, kms_core, psr1
  *
  * SUBTEST: fbcdrrs-%dp-primscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
@@ -334,17 +334,17 @@
  * SUBTEST: fbcpsr-%dp-primscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: fbc, fbt, kms_core, psr
+ * Functionality: fbc, fbt, kms_core, psr1
  *
  * SUBTEST: psrdrrs-%dp-primscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: drrs, fbt, kms_core, psr
+ * Functionality: drrs, fbt, kms_core, psr1
  *
  * SUBTEST: fbcpsrdrrs-%dp-primscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Functionality: drrs, fbc, fbt, kms_core, psr1
  *
  * arg[1].values:   1, 2
  *
@@ -366,7 +366,7 @@
  *
  * SUBTEST: psr-2p-scndscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: fbt, kms_core, psr
+ * Functionality: fbt, kms_core, psr1
  *
  * SUBTEST: fbcdrrs-2p-scndscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
@@ -374,15 +374,15 @@
  *
  * SUBTEST: fbcpsr-2p-scndscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: fbc, fbt, kms_core, psr
+ * Functionality: fbc, fbt, kms_core, psr1
  *
  * SUBTEST: psrdrrs-2p-scndscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: drrs, fbt, kms_core, psr
+ * Functionality: drrs, fbt, kms_core, psr1
  *
  * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Functionality: drrs, fbc, fbt, kms_core, psr1
  *
  * arg[1]:
  *
@@ -411,7 +411,7 @@
  * SUBTEST: psr-2p-scndscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: fbt, kms_core, psr
+ * Functionality: fbt, kms_core, psr1
  *
  * SUBTEST: fbcdrrs-2p-scndscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
@@ -421,17 +421,17 @@
  * SUBTEST: fbcpsr-2p-scndscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: fbc, fbt, kms_core, psr
+ * Functionality: fbc, fbt, kms_core, psr1
  *
  * SUBTEST: psrdrrs-2p-scndscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: drrs, fbt, kms_core, psr
+ * Functionality: drrs, fbt, kms_core, psr1
  *
  * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-indfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Functionality: drrs, fbc, fbt, kms_core, psr1
  *
  * arg[1]:
  *
@@ -457,7 +457,7 @@
  *
  * SUBTEST: psr-2p-scndscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: fbt, kms_core, psr
+ * Functionality: fbt, kms_core, psr1
  *
  * SUBTEST: fbcdrrs-2p-scndscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
@@ -465,15 +465,15 @@
  *
  * SUBTEST: fbcpsr-2p-scndscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: fbc, fbt, kms_core, psr
+ * Functionality: fbc, fbt, kms_core, psr1
  *
  * SUBTEST: psrdrrs-2p-scndscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: drrs, fbt, kms_core, psr
+ * Functionality: drrs, fbt, kms_core, psr1
  *
  * SUBTEST: fbcpsrdrrs-2p-scndscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
- * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Functionality: drrs, fbc, fbt, kms_core, psr1
  *
  * arg[1]:
  *
@@ -496,7 +496,7 @@
  * SUBTEST: psr-2p-scndscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: fbt, kms_core, psr
+ * Functionality: fbt, kms_core, psr1
  *
  * SUBTEST: fbcdrrs-2p-scndscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
@@ -506,17 +506,17 @@
  * SUBTEST: fbcpsr-2p-scndscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: fbc, fbt, kms_core, psr
+ * Functionality: fbc, fbt, kms_core, psr1
  *
  * SUBTEST: psrdrrs-2p-scndscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: drrs, fbt, kms_core, psr
+ * Functionality: drrs, fbt, kms_core, psr1
  *
  * SUBTEST: fbcpsrdrrs-2p-scndscrn-pri-shrfb-draw-%s
  * Description: Draw a set of rectangles on the screen using the provided method
  * Driver requirement: i915
- * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Functionality: drrs, fbc, fbt, kms_core, psr1
  *
  * arg[1]:
  *
@@ -536,7 +536,7 @@
  *
  * SUBTEST: psr-%dp-pri-indfb-multidraw
  * Description: Draw a set of rectangles on the screen using alternated drawing methods
- * Functionality: fbt, kms_core, psr
+ * Functionality: fbt, kms_core, psr1
  *
  * SUBTEST: fbcdrrs-%dp-pri-indfb-multidraw
  * Description: Draw a set of rectangles on the screen using alternated drawing methods
@@ -544,15 +544,15 @@
  *
  * SUBTEST: fbcpsr-%dp-pri-indfb-multidraw
  * Description: Draw a set of rectangles on the screen using alternated drawing methods
- * Functionality: fbc, fbt, kms_core, psr
+ * Functionality: fbc, fbt, kms_core, psr1
  *
  * SUBTEST: psrdrrs-%dp-pri-indfb-multidraw
  * Description: Draw a set of rectangles on the screen using alternated drawing methods
- * Functionality: drrs, fbt, kms_core, psr
+ * Functionality: drrs, fbt, kms_core, psr1
  *
  * SUBTEST: fbcpsrdrrs-%dp-pri-indfb-multidraw
  * Description: Draw a set of rectangles on the screen using alternated drawing methods
- * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Functionality: drrs, fbc, fbt, kms_core, psr1
  *
  * arg[1].values:   1, 2
  */
@@ -568,7 +568,7 @@
  *
  * SUBTEST: psr-%s-draw-%s
  * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
- * Functionality: fbt, kms_core, psr
+ * Functionality: fbt, kms_core, psr1
  *
  * SUBTEST: fbcdrrs-%s-draw-%s
  * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
@@ -576,15 +576,15 @@
  *
  * SUBTEST: fbcpsr-%s-draw-%s
  * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
- * Functionality: fbc, fbt, kms_core, psr
+ * Functionality: fbc, fbt, kms_core, psr1
  *
  * SUBTEST: psrdrrs-%s-draw-%s
  * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
- * Functionality: drrs, fbt, kms_core, psr
+ * Functionality: drrs, fbt, kms_core, psr1
  *
  * SUBTEST: fbcpsrdrrs-%s-draw-%s
  * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
- * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Functionality: drrs, fbc, fbt, kms_core, psr1
  *
  * arg[1]:
  *
@@ -612,7 +612,7 @@
  * SUBTEST: psr-%s-draw-%s
  * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
  * Driver requirement: i915
- * Functionality: fbt, kms_core, psr
+ * Functionality: fbt, kms_core, psr1
  *
  * SUBTEST: fbcdrrs-%s-draw-%s
  * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
@@ -622,17 +622,17 @@
  * SUBTEST: fbcpsr-%s-draw-%s
  * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
  * Driver requirement: i915
- * Functionality: fbc, fbt, kms_core, psr
+ * Functionality: fbc, fbt, kms_core, psr1
  *
  * SUBTEST: psrdrrs-%s-draw-%s
  * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
  * Driver requirement: i915
- * Functionality: drrs, fbt, kms_core, psr
+ * Functionality: drrs, fbt, kms_core, psr1
  *
  * SUBTEST: fbcpsrdrrs-%s-draw-%s
  * Description: Test pixel formats (%arg[1]) that are not FORMAT_DEFAULT
  * Driver requirement: i915
- * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Functionality: drrs, fbc, fbt, kms_core, psr1
  *
  * arg[1]:
  *
@@ -653,7 +653,7 @@
  *
  * SUBTEST: psr-slowdraw
  * Description: Sleep a little bit between drawing operations with PSR
- * Functionality: fbt, kms_core, psr
+ * Functionality: fbt, kms_core, psr1
  *
  * SUBTEST: fbcdrrs-slowdraw
  * Description: Sleep a little bit between drawing operations with FBC & DRRS
@@ -661,15 +661,15 @@
  *
  * SUBTEST: fbcpsr-slowdraw
  * Description: Sleep a little bit between drawing operations with FBC & PSR
- * Functionality: fbc, fbt, kms_core, psr
+ * Functionality: fbc, fbt, kms_core, psr1
  *
  * SUBTEST: psrdrrs-slowdraw
  * Description: Sleep a little bit between drawing operations with PSR & DRRS
- * Functionality: drrs, fbt, kms_core, psr
+ * Functionality: drrs, fbt, kms_core, psr1
  *
  * SUBTEST: fbcpsrdrrs-slowdraw
  * Description: Sleep a little bit between drawing operations with FBC, PSR & DRRS
- * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Functionality: drrs, fbc, fbt, kms_core, psr1
  */
 
 /**
@@ -683,7 +683,7 @@
  *
  * SUBTEST: psr-%dp-primscrn-%s-%sflip-blt
  * Description: Just exercise page flips with the patterns we have
- * Functionality: fbt, kms_core, psr
+ * Functionality: fbt, kms_core, psr1
  *
  * SUBTEST: fbcdrrs-%dp-primscrn-%s-%sflip-blt
  * Description: Just exercise page flips with the patterns we have
@@ -691,15 +691,15 @@
  *
  * SUBTEST: fbcpsr-%dp-primscrn-%s-%sflip-blt
  * Description: Just exercise page flips with the patterns we have
- * Functionality: fbc, fbt, kms_core, psr
+ * Functionality: fbc, fbt, kms_core, psr1
  *
  * SUBTEST: psrdrrs-%dp-primscrn-%s-%sflip-blt
  * Description: Just exercise page flips with the patterns we have
- * Functionality: drrs, fbt, kms_core, psr
+ * Functionality: drrs, fbt, kms_core, psr1
  *
  * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-%sflip-blt
  * Description: Just exercise page flips with the patterns we have
- * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Functionality: drrs, fbc, fbt, kms_core, psr1
  *
  * arg[1].values:   1, 2
  *
@@ -726,7 +726,7 @@
  *
  * SUBTEST: psr-2p-scndscrn-%s-%sflip-blt
  * Description: Just exercise page flips with the patterns we have
- * Functionality: fbt, kms_core, psr
+ * Functionality: fbt, kms_core, psr1
  *
  * SUBTEST: fbcdrrs-2p-scndscrn-%s-%sflip-blt
  * Description: Just exercise page flips with the patterns we have
@@ -734,15 +734,15 @@
  *
  * SUBTEST: fbcpsr-2p-scndscrn-%s-%sflip-blt
  * Description: Just exercise page flips with the patterns we have
- * Functionality: fbc, fbt, kms_core, psr
+ * Functionality: fbc, fbt, kms_core, psr1
  *
  * SUBTEST: psrdrrs-2p-scndscrn-%s-%sflip-blt
  * Description: Just exercise page flips with the patterns we have
- * Functionality: drrs, fbt, kms_core, psr
+ * Functionality: drrs, fbt, kms_core, psr1
  *
  * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-%sflip-blt
  * Description: Just exercise page flips with the patterns we have
- * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Functionality: drrs, fbc, fbt, kms_core, psr1
  *
  * arg[1]:
  *
@@ -767,11 +767,11 @@
  *
  * SUBTEST: fbcpsr-%dp-%s-fliptrack-mmap-gtt
  * Description: Check if the hardware tracking works after page flips
- * Functionality: fbc, fbt, kms_core, psr
+ * Functionality: fbc, fbt, kms_core, psr1
  *
  * SUBTEST: fbcpsrdrrs-%dp-%s-fliptrack-mmap-gtt
  * Description: Check if the hardware tracking works after page flips
- * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Functionality: drrs, fbc, fbt, kms_core, psr1
  *
  * arg[1].values:   1, 2
  *
@@ -792,7 +792,7 @@
  *
  * SUBTEST: psr-%dp-primscrn-%s-indfb-move
  * Description: Just move the %arg[2] around
- * Functionality: fbt, psr
+ * Functionality: fbt, psr1
  *
  * SUBTEST: fbcdrrs-%dp-primscrn-%s-indfb-move
  * Description: Just move the %arg[2] around
@@ -800,15 +800,15 @@
  *
  * SUBTEST: fbcpsr-%dp-primscrn-%s-indfb-move
  * Description: Just move the %arg[2] around
- * Functionality: fbc, fbt, psr
+ * Functionality: fbc, fbt, psr1
  *
  * SUBTEST: psrdrrs-%dp-primscrn-%s-indfb-move
  * Description: Just move the %arg[2] around
- * Functionality: drrs, fbt, psr
+ * Functionality: drrs, fbt, psr1
  *
  * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-indfb-move
  * Description: Just move the %arg[2] around
- * Functionality: drrs, fbc, fbt, psr
+ * Functionality: drrs, fbc, fbt, psr1
  *
  * arg[1].values:   1, 2
  *
@@ -829,7 +829,7 @@
  *
  * SUBTEST: psr-2p-scndscrn-%s-indfb-move
  * Description: Just move the %arg[1] around
- * Functionality: fbt, psr
+ * Functionality: fbt, psr1
  *
  * SUBTEST: fbcdrrs-2p-scndscrn-%s-indfb-move
  * Description: Just move the %arg[1] around
@@ -837,15 +837,15 @@
  *
  * SUBTEST: fbcpsr-2p-scndscrn-%s-indfb-move
  * Description: Just move the %arg[1] around
- * Functionality: fbc, fbt, psr
+ * Functionality: fbc, fbt, psr1
  *
  * SUBTEST: psrdrrs-2p-scndscrn-%s-indfb-move
  * Description: Just move the %arg[1] around
- * Functionality: drrs, fbt, psr
+ * Functionality: drrs, fbt, psr1
  *
  * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-indfb-move
  * Description: Just move the %arg[1] around
- * Functionality: drrs, fbc, fbt, psr
+ * Functionality: drrs, fbc, fbt, psr1
  *
  * arg[1]:
  *
@@ -864,7 +864,7 @@
  *
  * SUBTEST: psr-%dp-primscrn-%s-indfb-onoff
  * Description: Just enable and disable the %arg[2] a few times
- * Functionality: fbt, psr
+ * Functionality: fbt, psr1
  *
  * SUBTEST: fbcdrrs-%dp-primscrn-%s-indfb-onoff
  * Description: Just enable and disable the %arg[2] a few times
@@ -872,15 +872,15 @@
  *
  * SUBTEST: fbcpsr-%dp-primscrn-%s-indfb-onoff
  * Description: Just enable and disable the %arg[2] a few times
- * Functionality: fbc, fbt, psr
+ * Functionality: fbc, fbt, psr1
  *
  * SUBTEST: psrdrrs-%dp-primscrn-%s-indfb-onoff
  * Description: Just enable and disable the %arg[2] a few times
- * Functionality: drrs, fbt, psr
+ * Functionality: drrs, fbt, psr1
  *
  * SUBTEST: fbcpsrdrrs-%dp-primscrn-%s-indfb-onoff
  * Description: Just enable and disable the %arg[2] a few times
- * Functionality: drrs, fbc, fbt, psr
+ * Functionality: drrs, fbc, fbt, psr1
  *
  * arg[1].values:   1, 2
  *
@@ -901,7 +901,7 @@
  *
  * SUBTEST: psr-2p-scndscrn-%s-indfb-onoff
  * Description: Just enable and disable the %arg[1] a few times
- * Functionality: fbt, psr
+ * Functionality: fbt, psr1
  *
  * SUBTEST: fbcdrrs-2p-scndscrn-%s-indfb-onoff
  * Description: Just enable and disable the %arg[1] a few times
@@ -909,15 +909,15 @@
  *
  * SUBTEST: fbcpsr-2p-scndscrn-%s-indfb-onoff
  * Description: Just enable and disable the %arg[1] a few times
- * Functionality: fbc, fbt, psr
+ * Functionality: fbc, fbt, psr1
  *
  * SUBTEST: psrdrrs-2p-scndscrn-%s-indfb-onoff
  * Description: Just enable and disable the %arg[1] a few times
- * Functionality: drrs, fbt, psr
+ * Functionality: drrs, fbt, psr1
  *
  * SUBTEST: fbcpsrdrrs-2p-scndscrn-%s-indfb-onoff
  * Description: Just enable and disable the %arg[1] a few times
- * Functionality: drrs, fbc, fbt, psr
+ * Functionality: drrs, fbc, fbt, psr1
  *
  * arg[1]:
  *
@@ -936,7 +936,7 @@
  *
  * SUBTEST: psr-%dp-primscrn-spr-indfb-fullscreen
  * Description: Put a fullscreen plane covering the whole screen
- * Functionality: fbt, psr
+ * Functionality: fbt, psr1
  *
  * SUBTEST: fbcdrrs-%dp-primscrn-spr-indfb-fullscreen
  * Description: Put a fullscreen plane covering the whole screen
@@ -944,15 +944,15 @@
  *
  * SUBTEST: fbcpsr-%dp-primscrn-spr-indfb-fullscreen
  * Description: Put a fullscreen plane covering the whole screen
- * Functionality: fbc, fbt, psr
+ * Functionality: fbc, fbt, psr1
  *
  * SUBTEST: psrdrrs-%dp-primscrn-spr-indfb-fullscreen
  * Description: Put a fullscreen plane covering the whole screen
- * Functionality: drrs, fbt, psr
+ * Functionality: drrs, fbt, psr1
  *
  * SUBTEST: fbcpsrdrrs-%dp-primscrn-spr-indfb-fullscreen
  * Description: Put a fullscreen plane covering the whole screen
- * Functionality: drrs, fbc, fbt, psr
+ * Functionality: drrs, fbc, fbt, psr1
  *
  * SUBTEST: drrs-2p-scndscrn-spr-indfb-fullscreen
  * Description: Put a fullscreen plane covering the whole screen
@@ -964,7 +964,7 @@
  *
  * SUBTEST: psr-2p-scndscrn-spr-indfb-fullscreen
  * Description: Put a fullscreen plane covering the whole screen
- * Functionality: fbt, psr
+ * Functionality: fbt, psr1
  *
  * SUBTEST: fbcdrrs-2p-scndscrn-spr-indfb-fullscreen
  * Description: Put a fullscreen plane covering the whole screen
@@ -972,15 +972,15 @@
  *
  * SUBTEST: fbcpsr-2p-scndscrn-spr-indfb-fullscreen
  * Description: Put a fullscreen plane covering the whole screen
- * Functionality: fbc, fbt, psr
+ * Functionality: fbc, fbt, psr1
  *
  * SUBTEST: psrdrrs-2p-scndscrn-spr-indfb-fullscreen
  * Description: Put a fullscreen plane covering the whole screen
- * Functionality: drrs, fbt, psr
+ * Functionality: drrs, fbt, psr1
  *
  * SUBTEST: fbcpsrdrrs-2p-scndscrn-spr-indfb-fullscreen
  * Description: Put a fullscreen plane covering the whole screen
- * Functionality: drrs, fbc, fbt, psr
+ * Functionality: drrs, fbc, fbt, psr1
  *
  * arg[1].values:   1, 2
  */
@@ -996,7 +996,7 @@
  *
  * SUBTEST: psr-%s-scaledprimary
  * Description: Try different primary plane scaling strategies
- * Functionality: fbt, psr, scaling
+ * Functionality: fbt, psr1, scaling
  *
  * SUBTEST: fbcdrrs-%s-scaledprimary
  * Description: Try different primary plane scaling strategies
@@ -1004,15 +1004,15 @@
  *
  * SUBTEST: fbcpsr-%s-scaledprimary
  * Description: Try different primary plane scaling strategies
- * Functionality: fbc, fbt, psr, scaling
+ * Functionality: fbc, fbt, psr1, scaling
  *
  * SUBTEST: psrdrrs-%s-scaledprimary
  * Description: Try different primary plane scaling strategies
- * Functionality: drrs, fbt, psr, scaling
+ * Functionality: drrs, fbt, psr1, scaling
  *
  * SUBTEST: fbcpsrdrrs-%s-scaledprimary
  * Description: Try different primary plane scaling strategies
- * Functionality: drrs, fbc, fbt, psr, scaling
+ * Functionality: drrs, fbc, fbt, psr1, scaling
  *
  * arg[1]:
  *
@@ -1031,7 +1031,7 @@
  *
  * SUBTEST: psr-modesetfrombusy
  * Description: Modeset from a busy buffer to a non-busy buffer with PSR
- * Functionality: fbt, psr, scaling
+ * Functionality: fbt, psr1, scaling
  *
  * SUBTEST: fbcdrrs-modesetfrombusy
  * Description: Modeset from a busy buffer to a non-busy buffer with FBC & DRRS
@@ -1039,15 +1039,15 @@
  *
  * SUBTEST: fbcpsr-modesetfrombusy
  * Description: Modeset from a busy buffer to a non-busy buffer with FBC & PSR
- * Functionality: fbc, fbt, psr, scaling
+ * Functionality: fbc, fbt, psr1, scaling
  *
  * SUBTEST: psrdrrs-modesetfrombusy
  * Description: Modeset from a busy buffer to a non-busy buffer with PSR & DRRS
- * Functionality: drrs, fbt, psr, scaling
+ * Functionality: drrs, fbt, psr1, scaling
  *
  * SUBTEST: fbcpsrdrrs-modesetfrombusy
  * Description: Modeset from a busy buffer to a non-busy buffer with FBC, PSR & DRRS
- * Functionality: drrs, fbc, fbt, psr, scaling
+ * Functionality: drrs, fbc, fbt, psr1, scaling
  */
 
 /**
@@ -1061,7 +1061,7 @@
  *
  * SUBTEST: psr-suspend
  * Description: Make sure suspend/resume keeps us on the same state of PSR
- * Functionality: fbt, psr, suspend
+ * Functionality: fbt, psr1, suspend
  *
  * SUBTEST: fbcdrrs-suspend
  * Description: Make sure suspend/resume keeps us on the same state of FBC & DRRS
@@ -1069,15 +1069,15 @@
  *
  * SUBTEST: fbcpsr-suspend
  * Description: Make sure suspend/resume keeps us on the same state of FBC & PSR
- * Functionality: fbc, fbt, psr, suspend
+ * Functionality: fbc, fbt, psr1, suspend
  *
  * SUBTEST: psrdrrs-suspend
  * Description: Make sure suspend/resume keeps us on the same state of PSR & DRRS
- * Functionality: drrs, fbt, psr, suspend
+ * Functionality: drrs, fbt, psr1, suspend
  *
  * SUBTEST: fbcpsrdrrs-suspend
  * Description: Make sure suspend/resume keeps us on the same state of FBC, PSR & DRRS
- * Functionality: drrs, fbc, fbt, psr, suspend
+ * Functionality: drrs, fbc, fbt, psr1, suspend
  */
 
 /**
@@ -1094,7 +1094,7 @@
  * SUBTEST: psr-farfromfence-mmap-gtt
  * Description: Test drawing as far from the fence start as possible
  * Driver requirement: i915
- * Functionality: fbt, kms_core, psr
+ * Functionality: fbt, kms_core, psr1
  *
  * SUBTEST: fbcdrrs-farfromfence-mmap-gtt
  * Description: Test drawing as far from the fence start as possible
@@ -1104,17 +1104,17 @@
  * SUBTEST: fbcpsr-farfromfence-mmap-gtt
  * Description: Test drawing as far from the fence start as possible
  * Driver requirement: i915
- * Functionality: fbc, fbt, kms_core, psr
+ * Functionality: fbc, fbt, kms_core, psr1
  *
  * SUBTEST: psrdrrs-farfromfence-mmap-gtt
  * Description: Test drawing as far from the fence start as possible
  * Driver requirement: i915
- * Functionality: drrs, fbt, kms_core, psr
+ * Functionality: drrs, fbt, kms_core, psr1
  *
  * SUBTEST: fbcpsrdrrs-farfromfence-mmap-gtt
  * Description: Test drawing as far from the fence start as possible
  * Driver requirement: i915
- * Functionality: drrs, fbc, fbt, kms_core, psr
+ * Functionality: drrs, fbc, fbt, kms_core, psr1
  */
 
 /**
@@ -1128,11 +1128,11 @@
  *
  * SUBTEST: fbcpsr-stridechange
  * Description: Change the frontbuffer stride by doing a modeset
- * Functionality: fbc, fbt, psr
+ * Functionality: fbc, fbt, psr1
  *
  * SUBTEST: fbcpsrdrrs-stridechange
  * Description: Change the frontbuffer stride by doing a modeset
- * Functionality: drrs, fbc, fbt, psr
+ * Functionality: drrs, fbc, fbt, psr1
  */
 
 /**
@@ -1149,12 +1149,12 @@
  * SUBTEST: fbcpsr-tiling-%s
  * Description: Test %arg[1] formats, if the tiling format supports FBC do the
  *              basic drawing test, else set the mode & test if FBC is disabled
- * Functionality: fbc, fbt, psr, tiling
+ * Functionality: fbc, fbt, psr1, tiling
  *
  * SUBTEST: fbcpsrdrrs-tiling-%s
  * Description: Test %arg[1] formats, if the tiling format supports FBC do the
  *              basic drawing test, else set the mode & test if FBC is disabled
- * Functionality: drrs, fbc, fbt, psr, tiling
+ * Functionality: drrs, fbc, fbt, psr1, tiling
  *
  * arg[1]:
  *
diff --git a/tests/intel/kms_pm_dc.c b/tests/intel/kms_pm_dc.c
index 739ed6112..8006e54de 100644
--- a/tests/intel/kms_pm_dc.c
+++ b/tests/intel/kms_pm_dc.c
@@ -64,7 +64,7 @@
  *
  * SUBTEST: dc5-psr
  * Description: This test validates display engine entry to DC5 state while PSR is active
- * Functionality: pm_dc, psr
+ * Functionality: pm_dc, psr1
  *
  * SUBTEST: dc6-dpms
  * Description: Validate display engine entry to DC6 state while all connectors's
@@ -72,7 +72,7 @@
  *
  * SUBTEST: dc6-psr
  * Description: This test validates display engine entry to DC6 state while PSR is active
- * Functionality: pm_dc, psr
+ * Functionality: pm_dc, psr1
  *
  * SUBTEST: dc9-dpms
  * Description: This test validates display engine entry to DC9 state
diff --git a/tests/intel/kms_psr.c b/tests/intel/kms_psr.c
index b9e95fdfe..7fe6a2c30 100644
--- a/tests/intel/kms_psr.c
+++ b/tests/intel/kms_psr.c
@@ -44,13 +44,13 @@
 /**
  * SUBTEST: psr_basic
  * Description: Basic check for psr if it is detecting changes made in planes
- * Functionality: psr
+ * Functionality: psr1
  *
  * SUBTEST: psr_%s_%s
  * Description: Check if psr is detecting memory mapping, rendering and plane
  *              operations performed on %arg[1]
  * Driver requirement: i915
- * Functionality: kms_core, plane, psr
+ * Functionality: kms_core, plane, psr1
  *
  * arg[1]:
  *
@@ -68,12 +68,12 @@
  * SUBTEST: psr_sprite_plane_move
  * Description: Check if psr is detecting memory mapping, rendering and plane
  *              operations performed on sprite planes
- * Functionality: plane, psr
+ * Functionality: plane, psr1
  *
  * SUBTEST: psr_%s_%s
  * Description: Check if psr is detecting memory mapping, rendering and plane
  *              operations performed on %arg[1] planes
- * Functionality: kms_core, plane, psr
+ * Functionality: kms_core, plane, psr1
  *
  * arg[1]:
  *
@@ -91,7 +91,7 @@
  * SUBTEST: psr_primary_%s
  * Description: Check if psr is detecting memory mapping, rendering and plane
  *              operations performed on %arg[1] planes
- * Functionality: kms_core, psr
+ * Functionality: kms_core, psr1
  *
  * arg[1]:
  *
@@ -103,40 +103,40 @@
  * SUBTEST: psr_dpms
  * Description: Check if psr is detecting changes when rendering operation is
  *              performed  with dpms enabled or disabled
- * Functionality: dpms, psr
+ * Functionality: dpms, psr1
  *
  * SUBTEST: psr_no_drrs
  * Description: Check if psr is detecting changes when drrs is disabled
- * Functionality: drrs, psr
+ * Functionality: drrs, psr1
  *
  * SUBTEST: psr_suspend
  * Description: Check if psr is detecting changes when plane operation
  *              is performed with suspend resume cycles
- * Functionality: psr, suspend
+ * Functionality: psr1, suspend
  *
  * SUBTEST: psr2_dpms
  * Description: Check if psr is detecting changes when rendering operation
  *              is performed  with dpms enabled or disabled
- * Functionality: dpms, psr, psr2
+ * Functionality: dpms, psr2
  *
  * SUBTEST: psr2_no_drrs
  * Description: Check if psr is detecting changes when drrs is disabled
- * Functionality: drrs, psr, psr2
+ * Functionality: drrs, psr2
  *
  * SUBTEST: psr2_suspend
  * Description: Check if psr is detecting changes when plane operation is
  *              performed with suspend resume cycles
- * Functionality: psr, psr2, suspend
+ * Functionality: psr2, suspend
  *
  * SUBTEST: psr2_basic
  * Description: Basic check for psr if it is detecting changes made in planes
- * Functionality: psr, psr2
+ * Functionality: psr2
  *
  * SUBTEST: psr2_%s_%s
  * Description: Check if psr2 is detecting memory mapping, rendering and plane
  *              operations performed on %arg[1] planes
  * Driver requirement: i915
- * Functionality: kms_core, plane, psr, psr2
+ * Functionality: kms_core, plane, psr2
  *
  * arg[1]:
  *
@@ -154,12 +154,12 @@
  * SUBTEST: psr2_primary_page_flip
  * Description: Check if psr is detecting memory mapping, rendering and plane
  *              operations performed on primary planes
- * Functionality: plane, psr, psr2
+ * Functionality: plane, psr2
  *
  * SUBTEST: psr2_primary_%s
  * Description: Check if psr is detecting memory mapping, rendering and plane
  *              operations performed on primary planes
- * Functionality: kms_core, plane, psr, psr2
+ * Functionality: kms_core, plane, psr2
  *
  * arg[1]:
  *
@@ -171,7 +171,7 @@
  * SUBTEST: psr2_%s_%s
  * Description: Check if psr is detecting memory mapping, rendering and plane
  *              operations performed on %arg[1] planes
- * Functionality: kms_core, plane, psr, psr2
+ * Functionality: kms_core, plane, psr2
  *
  * arg[1]:
  *
@@ -273,17 +273,17 @@
  * SUBTEST: psr_cursor_plane_move
  * Description: Check if psr is detecting the plane operations performed on
  *		cursor planes
- * Functionality: psr
+ * Functionality: psr1
  *
  * SUBTEST: psr_primary_page_flip
  * Description: Check if psr is detecting page-flipping operations performed
  *		on primary planes
- * Functionality: psr
+ * Functionality: psr1
  *
  * SUBTEST: psr_sprite_plane_onoff
  * Description: Check if psr is detecting the plane operations performed on
  *		sprite planes
- * Functionality: psr
+ * Functionality: psr1
  */
 
 enum operations {
diff --git a/tests/intel/kms_psr_stress_test.c b/tests/intel/kms_psr_stress_test.c
index 28529b1f1..7aea8e8a5 100644
--- a/tests/intel/kms_psr_stress_test.c
+++ b/tests/intel/kms_psr_stress_test.c
@@ -3,7 +3,7 @@
  * TEST: kms psr stress test
  * Category: Display
  * Driver requirement: i915, xe
- * Functionality: plane, psr
+ * Functionality: plane, psr1
  * Mega feature: PSR
  * Test category: functionality test
  */
diff --git a/tests/kms_feature_discovery.c b/tests/kms_feature_discovery.c
index 24c71ed22..dff667c73 100644
--- a/tests/kms_feature_discovery.c
+++ b/tests/kms_feature_discovery.c
@@ -57,12 +57,12 @@
  *
  * SUBTEST: psr1
  * Description: Make sure that we have eDP panel with PSR1 support.
- * Functionality: feature_discovery, psr1, eDP
+ * Functionality: feature_discovery, psr1, eDP_core
  * Mega feature: PSR
  *
  * SUBTEST: psr2
  * Description: Make sure that we have eDP panel with PSR2 support.
- * Functionality: feature_discovery, psr2, eDP
+ * Functionality: feature_discovery, psr2, eDP_core
  * Mega feature: PSR
  *
  * SUBTEST: dp-mst
diff --git a/tests/kms_hdmi_inject.c b/tests/kms_hdmi_inject.c
index 9691f2818..a554ca2b1 100644
--- a/tests/kms_hdmi_inject.c
+++ b/tests/kms_hdmi_inject.c
@@ -51,7 +51,7 @@
  * SUBTEST: inject-audio
  * Description: Make sure that audio information exposed by ALSA match the forced
  *              EDID.
- * Functionality: audio, force_connector
+ * Functionality: hdmi_audio, force_connector
  */
 
 #define HDISPLAY_4K	3840
diff --git a/tests/kms_hdr.c b/tests/kms_hdr.c
index 4dd2eda37..99b78f7ef 100644
--- a/tests/kms_hdr.c
+++ b/tests/kms_hdr.c
@@ -25,7 +25,6 @@
  * Category: Display
  * Description: Test HDR metadata interfaces and bpc switch
  * Driver requirement: i915, xe
- * Functionality: colorspace, hdr
  * Mega feature: HDR
  * Test category: functionality test
  */
@@ -39,31 +38,35 @@
 /**
  * SUBTEST: bpc-switch
  * Description: Tests switching between different display output bpc modes
+ * Functionality: colorspace
  *
  * SUBTEST: bpc-switch-dpms
  * Description: Tests switching between different display output bpc modes with dpms
- * Functionality: colorspace, dpms, hdr
+ * Functionality: colorspace, dpms
  *
  * SUBTEST: bpc-switch-suspend
  * Description: Tests switching between different display output bpc modes with suspend
- * Functionality: colorspace, hdr, suspend
+ * Functionality: colorspace, suspend
  *
  * SUBTEST: invalid-hdr
  * Description: Test to ensure HDR is not enabled on non-HDR panel
+ * Functionality: colorspace, static_hdr
  *
  * SUBTEST: invalid-metadata-sizes
  * Description: Tests invalid HDR metadata sizes
+ * Functionality: colorspace, static_hdr
  *
  * SUBTEST: static-toggle-dpms
  * Description: Tests static toggle with dpms
- * Functionality: colorspace, dpms, hdr
+ * Functionality: colorspace, dpms, static_hdr
  *
  * SUBTEST: static-toggle-suspend
  * Description: Tests static toggle with suspend
- * Functionality: colorspace, hdr, suspend
+ * Functionality: colorspace, static_hdr, suspend
  *
  * SUBTEST: static-%s
  * Description: Tests %arg[1].
+ * Functionality: colorspace, static_hdr
  *
  * arg[1]:
  *
diff --git a/tests/kms_panel_fitting.c b/tests/kms_panel_fitting.c
index 4b5d9d5ab..f714ab474 100644
--- a/tests/kms_panel_fitting.c
+++ b/tests/kms_panel_fitting.c
@@ -27,7 +27,7 @@
  * Category: Display
  * Description: Test display panel fitting
  * Driver requirement: i915, xe
- * Functionality: eDP, panel_fitting, scaling
+ * Functionality: eDP_core, panel_fitting, scaling
  * Mega feature: General Display Features
  * Test category: functionality test
  */
diff --git a/tests/kms_scaling_modes.c b/tests/kms_scaling_modes.c
index add6e77c9..fae5755a8 100644
--- a/tests/kms_scaling_modes.c
+++ b/tests/kms_scaling_modes.c
@@ -29,7 +29,7 @@
  * Category: Display
  * Description: Test display scaling modes
  * Driver requirement: i915, xe
- * Functionality: eDP, plane, scaling
+ * Functionality: eDP_core, plane, scaling
  * Mega feature: General Display Features
  * Test category: functionality test
  */
-- 
2.40.0

^ permalink raw reply related	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2023-11-25 16:30 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-11-24  9:35 [igt-dev] [i-g-t 0/5] Optimize kms tesplan documentation Bhanuprakash Modem
2023-11-24  9:35 ` [igt-dev] [i-g-t 1/5] tests/kms/testplan: Move testplan documentation to beginning of the file Bhanuprakash Modem
2023-11-24 17:07   ` Sharma, Swati2
2023-11-24  9:35 ` [igt-dev] [i-g-t 2/5] tests/kms/testplan: Regroup testplan documentation Bhanuprakash Modem
2023-11-24 17:08   ` Sharma, Swati2
2023-11-24  9:36 ` [igt-dev] [i-g-t 3/5] tests/kms/testplan: Optimize KMS " Bhanuprakash Modem
2023-11-24 17:08   ` Sharma, Swati2
2023-11-24  9:36 ` [igt-dev] [i-g-t 4/5] tests/kms/testplan: Fix Mega Feature in " Bhanuprakash Modem
2023-11-24 17:09   ` Sharma, Swati2
2023-11-24  9:36 ` [igt-dev] [i-g-t 5/5] tests/kms/testplan: Avoid duplicate names on Mega feature vs Functionality Bhanuprakash Modem
2023-11-24 12:28 ` [igt-dev] ✓ Fi.CI.BAT: success for Optimize kms tesplan documentation (rev4) Patchwork
2023-11-24 13:24 ` [igt-dev] ✗ CI.xeBAT: failure " Patchwork
2023-11-24 14:37 ` [igt-dev] [i-g-t 0/5] Optimize kms tesplan documentation Sharma, Swati2
2023-11-25 14:33 ` [igt-dev] ✗ Fi.CI.IGT: failure for Optimize kms tesplan documentation (rev4) Patchwork
  -- strict thread matches above, loose matches on Subject: below --
2023-11-25 16:20 [igt-dev] [i-g-t 0/5] Optimize kms tesplan documentation Bhanuprakash Modem
2023-11-25 16:20 ` [igt-dev] [i-g-t 5/5] tests/kms/testplan: Avoid duplicate names on Mega feature vs Functionality Bhanuprakash Modem

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox