From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06b.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 05AD410E561 for ; Fri, 5 May 2023 04:49:30 +0000 (UTC) Date: Fri, 5 May 2023 06:49:24 +0200 From: Mauro Carvalho Chehab To: Bhanuprakash Modem Message-ID: <20230505064924.7d36bfb1@maurocar-mobl2> In-Reply-To: <20230504102451.3047783-2-bhanuprakash.modem@intel.com> References: <20230504102451.3047783-1-bhanuprakash.modem@intel.com> <20230504102451.3047783-2-bhanuprakash.modem@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Subject: Re: [igt-dev] [i-g-t 1/3] tests/kms: Document kms subtests for XE BAT List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: igt-dev@lists.freedesktop.org Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" List-ID: On Thu, 4 May 2023 15:54:49 +0530 Bhanuprakash Modem wrote: > Add documentation for kms tests those are in XE BAT which is used > by IGT test plan documentation. > > Tests included in this patch: > - tests/chamelium/kms_chamelium_edid.c > - tests/chamelium/kms_chamelium_frames.c > - tests/chamelium/kms_chamelium_hpd.c > - tests/i915/kms_psr.c > - tests/kms_addfb_basic.c > - tests/kms_cursor_legacy.c > - tests/kms_flip.c > - tests/kms_force_connector_basic.c > - tests/kms_pipe_crc_basic.c > - tests/kms_prop_blob.c > > Signed-off-by: Bhanuprakash Modem > --- > tests/chamelium/kms_chamelium_edid.c | 27 +++++ > tests/chamelium/kms_chamelium_frames.c | 22 ++++ > tests/chamelium/kms_chamelium_hpd.c | 39 +++++++ > tests/i915/kms_psr.c | 31 ++++++ > tests/kms_addfb_basic.c | 147 +++++++++++++++++++++++++ > tests/kms_cursor_legacy.c | 44 ++++++++ > tests/kms_flip.c | 27 +++++ > tests/kms_force_connector_basic.c | 29 +++++ > tests/kms_pipe_crc_basic.c | 58 ++++++++++ > tests/kms_prop_blob.c | 12 ++ > 10 files changed, 436 insertions(+) > > diff --git a/tests/chamelium/kms_chamelium_edid.c b/tests/chamelium/kms_chamelium_edid.c > index 7e7262ed3..4a52e6922 100644 > --- a/tests/chamelium/kms_chamelium_edid.c > +++ b/tests/chamelium/kms_chamelium_edid.c > @@ -24,6 +24,11 @@ > * Lyude Paul > */ > > +/** > + * TEST: Tests behaviour of edid & timings using chamelium > + * Category: Display > + */ > + > #include > #include > #include > @@ -139,6 +144,28 @@ 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 > + * Run type: BAT > + * Functionality: dp > + * Mega feature: DP > + * > + * SUBTEST: hdmi-edid-read > + * Description: Make sure the EDID exposed by KMS is the same as the screen's > + * Test category: functionality test > + * Run type: BAT > + * Functionality: hdmi > + * Mega feature: HDMI > + * > + * SUBTEST: vga-edid-read > + * Description: Make sure the EDID exposed by KMS is the same as the screen's > + * Test category: functionality test > + * Run type: BAT > + * Functionality: vga > + * Mega feature: VGA > + */ > 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, > diff --git a/tests/chamelium/kms_chamelium_frames.c b/tests/chamelium/kms_chamelium_frames.c > index 008bc34b6..22a7ba936 100644 > --- a/tests/chamelium/kms_chamelium_frames.c > +++ b/tests/chamelium/kms_chamelium_frames.c > @@ -24,6 +24,11 @@ > * Lyude Paul > */ > > +/** > + * TEST: Tests to capture frames using chamelium > + * Category: Display > + */ > + > #include "igt_eld.h" > #include "igt_infoframe.h" > #include "kms_chamelium_helper.h" > @@ -534,6 +539,23 @@ 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 > + * Run type: BAT > + * Functionality: dp > + * Mega feature: DP > + * > + * 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 > + * Run type: BAT > + * Functionality: hdmi > + * Mega feature: HDMI > + */ > 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"; > diff --git a/tests/chamelium/kms_chamelium_hpd.c b/tests/chamelium/kms_chamelium_hpd.c > index 2b17ce29d..efd40ba54 100644 > --- a/tests/chamelium/kms_chamelium_hpd.c > +++ b/tests/chamelium/kms_chamelium_hpd.c > @@ -24,6 +24,11 @@ > * Lyude Paul > */ > > +/** > + * TEST: Tests behaviour of hpd using chamelium > + * Category: Display > + */ > + > #include "kms_chamelium_helper.h" > > #define HPD_STORM_PULSE_INTERVAL_DP 100 /* ms */ > @@ -104,6 +109,31 @@ 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 > + * Run type: BAT > + * Functionality: dp_hotplug > + * Mega feature: DP > + * > + * SUBTEST: hdmi-hpd-fast > + * Description: Check that we get uevents and updated connector status on > + * hotplug and unplug > + * Test category: functionality test > + * Run type: BAT > + * Functionality: hdmi_hotplug > + * Mega feature: HDMI > + * > + * SUBTEST: vga-hpd-fast > + * Description: Check that we get uevents and updated connector status on > + * hotplug and unplug > + * Test category: functionality test > + * Run type: BAT > + * Functionality: vga_hotplug > + * Mega feature: VGA > + */ > static const char test_basic_hotplug_desc[] = > "Check that we get uevents and updated connector status on " > "hotplug and unplug"; > @@ -238,6 +268,15 @@ 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 > + * Run type: BAT > + * Functionality: hotplug > + * Mega feature: General Display Features > + */ > 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"; > diff --git a/tests/i915/kms_psr.c b/tests/i915/kms_psr.c > index 0e8d7f4f0..6c89de45d 100644 > --- a/tests/i915/kms_psr.c > +++ b/tests/i915/kms_psr.c > @@ -22,6 +22,11 @@ > * > */ > > +/** > + * TEST: Tests behaviour of PSR & PSR2 > + * Category: Display > + */ > + > #include "igt.h" > #include "igt_sysfs.h" > #include "igt_psr.h" > @@ -300,6 +305,32 @@ static void fb_dirty_fb_ioctl(data_t *data, struct igt_fb *fb) > igt_assert(ret == 0 || ret == -ENOSYS); > } > > +/** > + * SUBTEST: cursor_plane_move > + * Description: Check if psr is detecting the plane operations performed on > + * cursor planes > + * Test category: functionality test > + * Run type: BAT > + * Functionality: psr > + * Mega feature: PSR > + * > + * SUBTEST: primary_page_flip > + * Description: Check if psr is detecting page-flipping operations performed > + * on primary planes > + * Test category: functionality test > + * Run type: BAT > + * Functionality: psr > + * Mega feature: PSR > + * > + * SUBTEST: sprite_plane_onoff > + * Description: Check if psr is detecting the plane operations performed on > + * sprite planes > + * Test category: functionality test > + * Run type: BAT > + * Functionality: psr > + * Mega feature: PSR > + */ > + > static void run_test(data_t *data) > { > uint32_t handle = data->fb_white.gem_handle; > diff --git a/tests/kms_addfb_basic.c b/tests/kms_addfb_basic.c > index e4783624f..6f77c19de 100644 > --- a/tests/kms_addfb_basic.c > +++ b/tests/kms_addfb_basic.c > @@ -25,6 +25,11 @@ > * > */ > > +/** > + * TEST: Sanity test for ioctls DRM_IOCTL_MODE_ADDFB2 & DRM_IOCTL_MODE_RMFB. > + * Category: Display > + */ > + > #include "igt.h" > #include > #include > @@ -60,6 +65,35 @@ static int legacy_addfb(int fd, struct drm_mode_fb_cmd *arg) > return err; > } > > +/** > + * SUBTEST: unused-handle > + * Description: Test that addfb2 call fails correctly for unused handle > + * Test category: functionality test > + * Run type: BAT > + * Functionality: kms_gem_interop > + * Mega feature: General Display Features > + * > + * SUBTEST: unused-pitches > + * Description: Test that addfb2 call fails correctly for unused pitches > + * Test category: functionality test > + * Run type: BAT > + * Functionality: kms_gem_interop > + * Mega feature: General Display Features > + * > + * SUBTEST: unused-offsets > + * Description: Test that addfb2 call fails correctly for unused offset > + * Test category: functionality test > + * Run type: BAT > + * Functionality: kms_gem_interop > + * Mega feature: General Display Features > + * > + * SUBTEST: unused-modifier > + * Description: Test that addfb2 call fails correctly for unused modifier > + * Test category: functionality test > + * Run type: BAT > + * Functionality: kms_gem_interop > + * Mega feature: General Display Features > + */ > static void invalid_tests(int fd) > { > struct drm_mode_fb_cmd2 f = {}; > @@ -273,6 +307,39 @@ static void invalid_tests(int fd) > } > } > > +/** > + * SUBTEST: no-handle > + * Description: Test that addfb2 call fails correctly without handle > + * Test category: functionality test > + * Run type: BAT > + * Functionality: kms_gem_interop > + * Mega feature: General Display Features > + * > + * SUBTEST: basic > + * Description: Check if addfb2 call works with given handle > + * Test category: functionality test > + * Run type: BAT > + * 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 > + * Test category: functionality test > + * Run type: BAT > + * Functionality: kms_gem_interop > + * Mega feature: General Display Features > + * > + * arg[1]: > + * > + * @0: 0 > + * @32: 32 > + * @63: 63 > + * @128: 128 > + * @256: 256 > + * @999: 999 > + * @1024: 1024 > + * @65536: 65536 There's an alternate syntax that IMO makes the comment cleaner in this specific case[1], and will produce exactly the same result of the above block: * SUBTEST: bad-pitch-%i * Description: bad-pitch-%arg[1]: Test that addfb2 call fails correctly for bad-pitches * Test category: functionality test * Run type: BAT * Functionality: kms_gem_interop * Mega feature: General Display Features * * arg[1].values: 0, 32, 63, 128, 256, 999, 1024, 65536 Please use this for number arguments. [1] See https://gfx-linux.intel.com/igt-doc.html#igt-test-documentation > + */ > static void pitch_tests(int fd) > { > struct drm_mode_fb_cmd2 f = {}; > @@ -399,6 +466,42 @@ static void tiling_tests(int fd) > } > } > > +/** > + * SUBTEST: size-max > + * Description: Check if addfb2 call works with max size of buffer object > + * Test category: functionality test > + * Run type: BAT > + * Functionality: kms_gem_interop > + * Mega feature: General Display Features > + * > + * SUBTEST: too-wide > + * Description: Test that addfb2 call fails correctly with increased width of fb > + * Test category: functionality test > + * Run type: BAT > + * Functionality: kms_gem_interop > + * Mega feature: General Display Features > + * > + * SUBTEST: too-high > + * Description: Test that addfb2 call fails correctly with increased height of fb > + * Test category: functionality test > + * Run type: BAT > + * 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 > + * Test category: functionality test > + * Run type: BAT > + * Functionality: kms_gem_interop > + * Mega feature: General Display Features > + * > + * SUBTEST: small-bo > + * Description: Check if addfb2 call works for given height > + * Test category: functionality test > + * Run type: BAT > + * Functionality: kms_gem_interop > + * Mega feature: General Display Features > + */ > static void size_tests(int fd) > { > struct drm_mode_fb_cmd2 f = {}; > @@ -514,6 +617,21 @@ static void size_tests(int fd) > } > } > > +/** > + * SUBTEST: addfb25-modifier-no-flag > + * Description: Test that addfb2 call fails correctly for x-tiling with given modifier > + * Test category: functionality test > + * Run type: BAT > + * Functionality: kms_gem_interop > + * Mega feature: General Display Features > + * > + * SUBTEST: addfb25-bad-modifier > + * Description: Test that addfb2 call fails correctly for irrelevant modifier > + * Test category: functionality test > + * Run type: BAT > + * Functionality: kms_gem_interop > + * Mega feature: General Display Features > + */ > static void addfb25_tests(int fd) > { > struct drm_mode_fb_cmd2 f = {}; > @@ -700,6 +818,35 @@ static void addfb25_4tile(int fd) > gem_close(fd, gem_bo); > } > > +/** > + * SUBTEST: invalid-get-prop-any > + * Description: Test that get-properties ioctl call fails correctly for invalid object type > + * Test category: functionality test > + * Run type: BAT > + * Functionality: kms_gem_interop > + * Mega feature: General Display Features > + * > + * SUBTEST: invalid-get-prop > + * Description: Test that get-properties ioctl call fails correctly for fb mode object > + * Test category: functionality test > + * Run type: BAT > + * Functionality: kms_gem_interop > + * Mega feature: General Display Features > + * > + * SUBTEST: invalid-set-prop-any > + * Description: Test that set-properties ioctl call fails correctly for invalid object type > + * Test category: functionality test > + * Run type: BAT > + * Functionality: kms_gem_interop > + * Mega feature: General Display Features > + * > + * SUBTEST: invalid-set-prop > + * Description: Test that get-properties ioctl call fails correctly for fb mode object > + * Test category: functionality test > + * Run type: BAT > + * Functionality: kms_gem_interop > + * Mega feature: General Display Features > + */ > static void prop_tests(int fd) > { > struct drm_mode_fb_cmd2 f = {}; > diff --git a/tests/kms_cursor_legacy.c b/tests/kms_cursor_legacy.c > index 7df6a6125..05085d607 100644 > --- a/tests/kms_cursor_legacy.c > +++ b/tests/kms_cursor_legacy.c > @@ -22,6 +22,11 @@ > * > */ > > +/** > + * TEST: Stress legacy cursor ioctl > + * Category: Display > + */ > + > #include > #include > > @@ -536,6 +541,45 @@ enum basic_flip_cursor { > > #define BASIC_BUSY 0x1 > > +/** > + * SUBTEST: basic-busy-flip-before-cursor-%s > + * Description: Cursor test with %arg[1] mode > + * Test category: functionality test > + * Run type: BAT > + * Functionality: cursor > + * Mega feature: General Display Features > + * > + * arg[1]: > + * > + * @atomic: atomic > + * @legacy: legacy > + * > + * SUBTEST: basic-flip-after-cursor-%s > + * Description: Cursor test with %arg[1] mode > + * Test category: functionality test > + * Run type: BAT > + * Functionality: cursor > + * Mega feature: General Display Features > + * > + * arg[1]: > + * > + * @atomic: atomic > + * @legacy: legacy > + * @varying-size: varying-size I would define this on a different way, like: * Description: Cursor test with %arg[1] * * arg[1]: * * @atomic: atomic mode * @legacy: legacy mode * @varying-size: varying size on atomic mode (I'm guessing that the last one is also on atomic mode) > + * > + * SUBTEST: basic-flip-before-cursor-%s > + * Description: Cursor test with %arg[1] mode > + * Test category: functionality test > + * Run type: BAT > + * Functionality: cursor > + * Mega feature: General Display Features > + * > + * arg[1]: > + * > + * @atomic: atomic > + * @legacy: legacy > + * @varying-size: varying-size As arg[1] definition is at the same comment block, you don't need to repeat it here, as the argument definitions are valid for the entire comment block. > + */ > static void basic_flip_cursor(igt_display_t *display, > enum flip_test mode, > enum basic_flip_cursor order, > diff --git a/tests/kms_flip.c b/tests/kms_flip.c > index e4c98b8ec..611d3fbe3 100755 > --- a/tests/kms_flip.c > +++ b/tests/kms_flip.c > @@ -21,6 +21,11 @@ > * IN THE SOFTWARE. > */ > > +/** > + * TEST: Tests for validating modeset, dpms and pageflips > + * Category: Display > + */ > + > #include "config.h" > > #include "igt.h" > @@ -1557,6 +1562,28 @@ static void run_test_on_crtc_set(struct test_output *o, int *crtc_idxs, > __run_test_on_crtc_set(o, crtc_idxs, crtc_count, duration_ms); > } > > +/** > + * SUBTEST: basic-flip-vs-%s > + * Description: Basic test for validating %arg[1] > + * Test category: functionality test > + * Run type: BAT > + * Functionality: vblank > + * Mega feature: General Display Features > + * > + * arg[1]: > + * > + * @dpms: dpms > + * @modeset: modeset > + * @wf_vblank: wf_vblank It probably makes sense tor replace wf_vblank with a more meaningful string. Maybe: @wf_vblank: wait for vertical blank or: @wf_vblank: wait for vblank > + * > + * SUBTEST: basic-plain-flip > + * Description: Basic test for validating page flip > + * Test category: functionality test > + * Run type: BAT > + * Functionality: vblank > + * Mega feature: General Display Features > + */ > + > static void run_test(int duration, int flags) > { > struct test_output o; > diff --git a/tests/kms_force_connector_basic.c b/tests/kms_force_connector_basic.c > index f1508efba..7e35693cf 100644 > --- a/tests/kms_force_connector_basic.c > +++ b/tests/kms_force_connector_basic.c > @@ -22,6 +22,11 @@ > * > */ > > +/** > + * TEST: Check the debugfs force connector/edid features work correctly > + * Category: Display > + */ > + > #include "igt.h" > > IGT_TEST_DESCRIPTION("Check the debugfs force connector/edid features work" > @@ -151,6 +156,14 @@ static void force_load_detect(int drm_fd, drmModeConnectorPtr connector, drmMode > } > } > > +/** > + * SUBTEST: force-connector-state > + * Description: Test to check the forced connector state > + * Test category: functionality test > + * Run type: BAT > + * Functionality: force_connector > + * Mega feature: General Display Features > + */ > static void force_connector_state(int drm_fd, drmModeConnectorPtr connector) > { > igt_display_t display; > @@ -190,6 +203,14 @@ 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 > + * Test category: functionality test > + * Run type: BAT > + * Functionality: force_connector > + * Mega feature: General Display Features > + */ > static void force_edid(int drm_fd, drmModeConnectorPtr connector) > { > drmModeConnector *temp; > @@ -231,6 +252,14 @@ static void force_edid(int drm_fd, drmModeConnectorPtr connector) > > } > > +/** > + * SUBTEST: prune-stale-modes > + * Description: Tests pruning of stale modes > + * Test category: functionality test > + * Run type: BAT > + * 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_pipe_crc_basic.c b/tests/kms_pipe_crc_basic.c > index 65afc9f60..84c73fd7f 100644 > --- a/tests/kms_pipe_crc_basic.c > +++ b/tests/kms_pipe_crc_basic.c > @@ -22,6 +22,11 @@ > * > */ > > +/** > + * TEST: Tests behaviour of CRC > + * Category: Display > + */ > + > #include "igt.h" > #include "igt_sysfs.h" > #include > @@ -80,6 +85,50 @@ enum { > TEST_HANG = 1 << 3, > }; > > +/** > + * SUBTEST: read-crc > + * Description: Test for pipe CRC reads > + * Test category: functionality test > + * Run type: BAT > + * Functionality: crc > + * Mega feature: General Display Features > + * > + * SUBTEST: read-crc-frame-sequence > + * Description: Tests the pipe CRC read and ensure frame sequence > + * Test category: functionality test > + * Run type: BAT > + * Functionality: crc > + * Mega feature: General Display Features > + * > + * SUBTEST: nonblocking-crc > + * Description: Test for O_NONBLOCK CRC reads > + * Test category: functionality test > + * Run type: BAT > + * Functionality: crc > + * Mega feature: General Display Features > + * > + * SUBTEST: nonblocking-crc-frame-sequence > + * Description: Test for O_NONBLOCK CRC reads and ensure frame sequence > + * Test category: functionality test > + * Run type: BAT > + * Functionality: crc > + * Mega feature: General Display Features > + * > + * SUBTEST: suspend-read-crc > + * Description: Suspend test for pipe CRC reads > + * Test category: functionality test > + * Run type: BAT > + * Functionality: crc > + * Mega feature: General Display Features > + * > + * SUBTEST: hang-read-crc > + * Description: Hang test for pipe CRC read > + * Test category: functionality test > + * Run type: BAT > + * Functionality: crc > + * Mega feature: General Display Features > + */ > + > static void test_read_crc(data_t *data, enum pipe pipe, > igt_output_t *output, unsigned flags) > { > @@ -177,6 +226,15 @@ static void test_read_crc(data_t *data, enum pipe pipe, > igt_display_commit(display); > } > > +/** > + * SUBTEST: compare-crc-sanitycheck > + * Description: Basic sanity check for CRC mismatches > + * Test category: functionality test > + * Run type: BAT > + * Functionality: crc > + * Mega feature: General Display Features > + */ > + > /* > * CRC-sanity test, to make sure there would be no CRC mismatches > * > diff --git a/tests/kms_prop_blob.c b/tests/kms_prop_blob.c > index 96aa6d8d6..6a5a5f410 100644 > --- a/tests/kms_prop_blob.c > +++ b/tests/kms_prop_blob.c > @@ -25,6 +25,10 @@ > * Daniel Stone > */ > > +/** > + * TEST: Tests behaviour of mass-data 'blob' properties > + * Category: Display > + */ > #include "igt.h" > #include > #include > @@ -238,6 +242,14 @@ test_core(int fd) > igt_assert_eq(validate_prop(fd, 0), ENOENT); > } > > +/** > + * SUBTEST: basic > + * Description: Test to ensure property support exists > + * Test category: functionality test > + * Run type: BAT > + * Functionality: kms_core > + * Mega feature: General Display Features > + */ > static void > test_basic(int fd) > {