From: "B, Jeevan" <jeevan.b@intel.com>
To: "Hogander, Jouni" <jouni.hogander@intel.com>,
"igt-dev@lists.freedesktop.org" <igt-dev@lists.freedesktop.org>
Subject: Re: [igt-dev] [PATCH i-g-t 3/3] tests/kms_psr2_sf: Add new subtest for biplanar format
Date: Wed, 1 Dec 2021 08:38:04 +0000 [thread overview]
Message-ID: <fbcfba8858064e03a354a39d08658d37@intel.com> (raw)
In-Reply-To: <20211130073803.46388-4-jouni.hogander@intel.com>
>-----Original Message-----
>From: igt-dev <igt-dev-bounces@lists.freedesktop.org> On Behalf Of Jouni
>Högander
>Sent: Tuesday, November 30, 2021 1:08 PM
>To: igt-dev@lists.freedesktop.org
>Subject: [igt-dev] [PATCH i-g-t 3/3] tests/kms_psr2_sf: Add new subtest for
>biplanar format
>
>Add new testcase which uses NV12 format for primary plane. It is continuously
>updating overlay plane. It is also sending damaged area only on every second flip.
>
>Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
>---
> tests/i915/kms_psr2_sf.c | 92 +++++++++++++++++++++++++++++++---------
> 1 file changed, 73 insertions(+), 19 deletions(-)
>
>diff --git a/tests/i915/kms_psr2_sf.c b/tests/i915/kms_psr2_sf.c index
>a50c3e14..8a29f354 100644
>--- a/tests/i915/kms_psr2_sf.c
>+++ b/tests/i915/kms_psr2_sf.c
>@@ -38,8 +38,11 @@ IGT_TEST_DESCRIPTION("Tests to varify PSR2 selective
>fetch by sending multiple"
> #define CUR_SIZE 64
> #define MAX_DAMAGE_AREAS 5
>
>+#define MAX_SCREEN_CHANGES 5
>+
> enum operations {
> PLANE_UPDATE,
>+ PLANE_UPDATE_CONTINUOUS,
> PLANE_MOVE,
> OVERLAY_PRIM_UPDATE
> };
>@@ -59,6 +62,8 @@ typedef struct {
> igt_output_t *output;
> struct igt_fb fb_primary, fb_overlay, fb_cursor;
> struct igt_fb fb_test;
>+ struct igt_fb *fb_continuous;
>+ uint32_t primary_format;
> int damage_area_count;
> struct drm_mode_rect plane_update_clip[MAX_DAMAGE_AREAS];
> struct drm_mode_rect plane_move_clip;
>@@ -68,12 +73,14 @@ typedef struct {
> int test_plane_id;
> igt_plane_t *test_plane;
> cairo_t *cr;
>+ uint32_t screen_changes;
> } data_t;
>
> static const char *op_str(enum operations op) {
> static const char * const name[] = {
> [PLANE_UPDATE] = "plane-update",
>+ [PLANE_UPDATE_CONTINUOUS] = "plane-update-continuous",
> [PLANE_MOVE] = "plane-move",
> [OVERLAY_PRIM_UPDATE] = "overlay-primary-update",
> };
>@@ -222,7 +229,7 @@ static void prepare(data_t *data)
> /* all green frame */
> igt_create_color_fb(data->drm_fd,
> data->mode->hdisplay, data->mode->vdisplay,
>- DRM_FORMAT_XRGB8888,
>+ data->primary_format,
> DRM_FORMAT_MOD_LINEAR,
> 0.0, 1.0, 0.0,
> &data->fb_primary);
>@@ -251,6 +258,8 @@ static void prepare(data_t *data)
> 0.0, 0.0, 1.0,
> &data->fb_test);
>
>+ data->fb_continuous = &data->fb_overlay;
>+
> if (data->op == PLANE_MOVE) {
> plane_move_setup_square(data, &data->fb_test,
> data->mode->hdisplay/2,
>@@ -277,6 +286,7 @@ static void prepare(data_t *data)
> plane_update_setup_squares(data, &data->fb_test,
> data->mode->hdisplay,
> data->mode->vdisplay);
>+ data->fb_continuous = &data->fb_primary;
> data->test_plane = primary;
>
> if (data->op == OVERLAY_PRIM_UPDATE) { @@ -312,6 +322,7
>@@ static void prepare(data_t *data)
> igt_create_fb(data->drm_fd, CUR_SIZE, CUR_SIZE,
> DRM_FORMAT_ARGB8888,
>DRM_FORMAT_MOD_LINEAR,
> &data->fb_test);
>+ data->fb_continuous = &data->fb_cursor;
>
> draw_rect(data, &data->fb_test, 0, 0, CUR_SIZE, CUR_SIZE,
> 1.0, 1.0, 1.0, 1.0);
>@@ -334,7 +345,8 @@ static inline void manual(const char *expected)
> igt_debug_manual_check("all", expected); }
>
>-static void plane_update_expected_output(int plane_type, int box_count)
>+static void plane_update_expected_output(int plane_type, int box_count,
>+ int screen_changes)
> {
> char expected[64] = {};
>
>@@ -344,9 +356,16 @@ static void plane_update_expected_output(int
>plane_type, int box_count)
> box_count);
> break;
> case DRM_PLANE_TYPE_OVERLAY:
>- sprintf(expected,
>- "screen Green with Blue box and %d White box(es)",
>- box_count);
>+ /*
>+ * Continuous updates only for DRM_PLANE_TYPE_OVERLAY
>+ * for now.
>+ */
>+ if (screen_changes & 1)
>+ sprintf(expected,
>+ "screen Green with Blue box and %d White
>box(es)",
>+ box_count);
>+ else
>+ sprintf(expected, "screen Green with Blue box");
> break;
I think print logic should be reversed here.
With this change patch looks good to me.
Reviewed-by: Jeevan B <jeevan.b@intel.com>
Thanks
Jeevan B
> case DRM_PLANE_TYPE_CURSOR:
> sprintf(expected, "screen Green with %d White box(es)", @@ -
>407,7 +426,13 @@ static void expected_output(data_t *data)
> break;
> case PLANE_UPDATE:
> plane_update_expected_output(data->test_plane_id,
>- data->damage_area_count);
>+ data->damage_area_count,
>+ data->screen_changes);
>+ break;
>+ case PLANE_UPDATE_CONTINUOUS:
>+ plane_update_expected_output(data->test_plane_id,
>+ data->damage_area_count,
>+ data->screen_changes);
> break;
> case OVERLAY_PRIM_UPDATE:
> overlay_prim_update_expected_output(data-
>>damage_area_count);
>@@ -468,24 +493,28 @@ static void damaged_plane_update(data_t *data)
> uint32_t h = data->mode->hdisplay;
> uint32_t v = data->mode->vdisplay;
>
>- igt_plane_set_fb(test_plane, &data->fb_test);
>-
> if (data->test_plane_id == DRM_PLANE_TYPE_OVERLAY) {
> h = h/2;
> v = v/2;
> }
>
>- if (data->test_plane_id == DRM_PLANE_TYPE_CURSOR)
>- igt_plane_replace_prop_blob(test_plane,
>- IGT_PLANE_FB_DAMAGE_CLIPS,
>- &data->cursor_clip,
>- sizeof(struct drm_mode_rect));
>- else
>- igt_plane_replace_prop_blob(test_plane,
>- IGT_PLANE_FB_DAMAGE_CLIPS,
>- &data->plane_update_clip,
>- sizeof(struct drm_mode_rect)*
>- data->damage_area_count);
>+ if (data->screen_changes & 1) {
>+ igt_plane_set_fb(test_plane, &data->fb_test);
>+ } else {
>+ igt_plane_set_fb(test_plane, data->fb_continuous);
>+
>+ if (data->test_plane_id == DRM_PLANE_TYPE_CURSOR)
>+ igt_plane_replace_prop_blob(test_plane,
>+
>IGT_PLANE_FB_DAMAGE_CLIPS,
>+ &data->cursor_clip,
>+ sizeof(struct
>drm_mode_rect));
>+ else
>+ igt_plane_replace_prop_blob(test_plane,
>+
>IGT_PLANE_FB_DAMAGE_CLIPS,
>+ &data->plane_update_clip,
>+ sizeof(struct
>drm_mode_rect)*
>+ data->damage_area_count);
>+ }
>
> igt_plane_set_position(data->test_plane, 0, 0);
> igt_display_commit2(&data->display, COMMIT_ATOMIC); @@ -499,11
>+528,20 @@ static void run(data_t *data) {
> igt_assert(psr_wait_entry(data->debugfs_fd, PSR_MODE_2));
>
>+ data->screen_changes = 0;
>+
> switch (data->op) {
> case PLANE_UPDATE:
> case OVERLAY_PRIM_UPDATE:
> damaged_plane_update(data);
> break;
>+ case PLANE_UPDATE_CONTINUOUS:
>+ for (data->screen_changes = 0;
>+ data->screen_changes < MAX_SCREEN_CHANGES;
>+ data->screen_changes++) {
>+ damaged_plane_update(data);
>+ }
>+ break;
> case PLANE_MOVE:
> damaged_plane_move(data);
> break;
>@@ -568,6 +606,7 @@ igt_main
> data.damage_area_count = MAX_DAMAGE_AREAS;
> data.op = PLANE_UPDATE;
> data.test_plane_id = DRM_PLANE_TYPE_PRIMARY;
>+ data.primary_format = DRM_FORMAT_XRGB8888;
> prepare(&data);
> r = psr_wait_entry(data.debugfs_fd, PSR_MODE_2);
> if (!r)
>@@ -643,6 +682,21 @@ igt_main
> }
> }
>
>+ /*
>+ * Verify overlay plane selective fetch using NV12 primary
>+ * plane and continuous updates.
>+ */
>+ data.op = PLANE_UPDATE_CONTINUOUS;
>+ data.primary_format = DRM_FORMAT_NV12;
>+ igt_describe("Test that selective fetch works on overlay plane");
>+ igt_subtest_f("overlay-%s-sf", op_str(data.op)) {
>+ data.damage_area_count = 1;
>+ data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
>+ prepare(&data);
>+ run(&data);
>+ cleanup(&data);
>+ }
>+
> igt_fixture {
> close(data.debugfs_fd);
> display_fini(&data);
>--
>2.25.1
next prev parent reply other threads:[~2021-12-01 8:38 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-30 7:38 [igt-dev] [PATCH i-g-t 0/3] Biplanar testcases Jouni Högander
2021-11-30 7:38 ` [igt-dev] [PATCH i-g-t 1/3] tests/kms_psr2_su: Add offset to drawn rectangle Jouni Högander
2021-11-30 12:55 ` Souza, Jose
2021-11-30 7:38 ` [igt-dev] [PATCH i-g-t 2/3] tests/kms_psr2_su: add biplanar selective update tests Jouni Högander
2021-11-30 12:57 ` Souza, Jose
2021-11-30 7:38 ` [igt-dev] [PATCH i-g-t 3/3] tests/kms_psr2_sf: Add new subtest for biplanar format Jouni Högander
2021-12-01 8:38 ` B, Jeevan [this message]
2021-11-30 10:50 ` [igt-dev] ✓ Fi.CI.BAT: success for Biplanar testcases (rev5) Patchwork
2021-11-30 13:12 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=fbcfba8858064e03a354a39d08658d37@intel.com \
--to=jeevan.b@intel.com \
--cc=igt-dev@lists.freedesktop.org \
--cc=jouni.hogander@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.