From: "Modem, Bhanuprakash" <bhanuprakash.modem@intel.com>
To: Albert Esteve <aesteve@redhat.com>, <igt-dev@lists.freedesktop.org>
Cc: belmouss@redhat.com, javierm@redhat.com
Subject: Re: [igt-dev] [PATCH v3 2/2] kms_cursor_legacy: modeset-atomic-cursor-hotspot
Date: Wed, 2 Aug 2023 13:41:35 +0530 [thread overview]
Message-ID: <2ccde5bf-bcff-b9ac-1bc4-eafc8b781880@intel.com> (raw)
In-Reply-To: <20230801084853.42075-3-aesteve@redhat.com>
On Tue-01-08-2023 02:18 pm, Albert Esteve wrote:
> Add a test for modesetting an atomic cursor plane
> hotspot property. Test added to verify the kernel
> patch at [1]. The test first checks if the
> plane is atomic and has the hotspot property.
> and if it does, it sets different random hot_x
> and hot_y values and checks that it is updated
> correctly after an atomic commit.
>
> [1] https://lists.freedesktop.org/archives/dri-devel/2023-July/414509.html
>
Please keep maintain the history of the patch.
Example:
V2: - Changes on top of Initial version
V3: - Changes between V2 & Current version
You can update this info while merging the patch. With above comments
addressed, this patch is
Reviewed-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> Signed-off-by: Albert Esteve <aesteve@redhat.com>
> Acked-by: Javier Martinez Canillas <javierm@redhat.com>
> Acked-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
> ---
> tests/kms_cursor_legacy.c | 79 +++++++++++++++++++++++++++++++++++++++
> 1 file changed, 79 insertions(+)
>
> diff --git a/tests/kms_cursor_legacy.c b/tests/kms_cursor_legacy.c
> index 1ebac9d31..87cfb9e64 100644
> --- a/tests/kms_cursor_legacy.c
> +++ b/tests/kms_cursor_legacy.c
> @@ -218,6 +218,12 @@ static igt_plane_t
> return cursor;
> }
>
> +static void set_cursor_hotspot(igt_plane_t *cursor, int hot_x, int hot_y)
> +{
> + igt_output_set_prop_value(cursor, IGT_PLANE_HOTSPOT_X, hot_x);
> + igt_output_set_prop_value(cursor, IGT_PLANE_HOTSPOT_Y, hot_y);
> +}
> +
> static void populate_cursor_args(igt_display_t *display, enum pipe pipe,
> struct drm_mode_cursor *arg, struct igt_fb *fb)
> {
> @@ -1607,6 +1613,68 @@ static void flip_vs_cursor_busy_crc(igt_display_t *display, bool atomic)
> put_ahnd(ahnd);
> }
>
> +static void modeset_atomic_cursor_hotspot(igt_display_t *display)
> +{
> + struct igt_fb cursor_fb;
> + igt_output_t *output;
> + enum pipe pipe;
> + igt_plane_t *cursor = NULL;
> + bool has_hotspot_prop;
> + uint64_t cursor_width, cursor_height;
> + uint32_t hot_x, hot_y, init_hot_x, init_hot_y;
> +
> + igt_require(display->is_atomic);
> + igt_require(display->has_virt_cursor_plane);
> + pipe = find_connected_pipe(display, false, &output);
> + igt_require(output);
> +
> + igt_info("Using pipe %s & %s\n",
> + kmstest_pipe_name(pipe), igt_output_name(output));
> +
> + cursor_width = cursor_height = 64;
> + igt_create_color_fb(display->drm_fd, cursor_width, cursor_height, DRM_FORMAT_ARGB8888,
> + DRM_FORMAT_MOD_LINEAR, 1., 1., 1., &cursor_fb);
> +
> + igt_display_commit2(display, COMMIT_ATOMIC);
> +
> + cursor = set_cursor_on_pipe(display, pipe, &cursor_fb);
> +
> + has_hotspot_prop = cursor->props[IGT_PLANE_HOTSPOT_X] ||
> + cursor->props[IGT_PLANE_HOTSPOT_Y];
> + igt_require_f(has_hotspot_prop, "Cursor plane lacks the hotspot property");
> +
> + init_hot_x = igt_plane_get_prop(cursor, IGT_PLANE_HOTSPOT_X);
> + init_hot_y = igt_plane_get_prop(cursor, IGT_PLANE_HOTSPOT_Y);
> +
> + /*
> + * Change the hotspot coordinates randomly and check that the property
> + * is updated accordingly.
> + */
> + srand(time(NULL));
> + for (int i = 0; i < 20; i++) {
> + hot_x = rand() % cursor_width;
> + hot_y = rand() % cursor_height;
> + igt_debug("Update cursor hotspot: (%d, %d)\n", hot_x, hot_y);
> +
> + /* Set cursor hotspot property values */
> + set_cursor_hotspot(cursor, hot_x, hot_y);
> +
> + igt_display_commit2(display, COMMIT_ATOMIC);
> +
> + /* After the commit, the cursor hotspot property values are updated */
> + igt_assert_eq(igt_plane_get_prop(cursor, IGT_PLANE_HOTSPOT_X), hot_x);
> + igt_assert_eq(igt_plane_get_prop(cursor, IGT_PLANE_HOTSPOT_Y), hot_y);
> + }
> +
> + /* Clean-up */
> + set_cursor_hotspot(cursor, init_hot_x, init_hot_y);
> + igt_plane_set_fb(cursor, NULL);
> + igt_output_set_pipe(output, PIPE_NONE);
> + igt_display_commit2(display, COMMIT_ATOMIC);
> +
> + igt_remove_fb(display->drm_fd, &cursor_fb);
> +}
> +
> igt_main
> {
> const int ncpus = sysconf(_SC_NPROCESSORS_ONLN);
> @@ -1681,6 +1749,17 @@ igt_main
> nonblocking_modeset_vs_cursor(&display, 16);
> }
>
> + igt_describe("Test changes the cursor hotspot and checks that the "
> + "property is updated accordignly");
> + igt_subtest_group {
> + igt_fixture
> + igt_display_require_output(&display);
> +
> + igt_subtest("modeset-atomic-cursor-hotspot") {
> + modeset_atomic_cursor_hotspot(&display);
> + }
> + }
> +
> igt_describe("This test executes flips on both CRTCs "
> "while running cursor updates in parallel");
> igt_subtest_group {
next prev parent reply other threads:[~2023-08-02 8:11 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-01 8:48 [igt-dev] [PATCH v3 0/2] Add atomic DRM cursor hotspot test Albert Esteve
2023-08-01 8:48 ` [igt-dev] [PATCH v3 1/2] igt_kms: add hotspot plane property Albert Esteve
2023-08-01 8:48 ` [igt-dev] [PATCH v3 2/2] kms_cursor_legacy: modeset-atomic-cursor-hotspot Albert Esteve
2023-08-02 8:11 ` Modem, Bhanuprakash [this message]
2023-08-02 9:20 ` Albert Esteve
2023-08-02 9:42 ` Modem, Bhanuprakash
2023-08-01 10:11 ` [igt-dev] ○ CI.xeBAT: info for Add atomic DRM cursor hotspot test (rev3) Patchwork
2023-08-01 10:19 ` [igt-dev] ✓ Fi.CI.BAT: success " Patchwork
2023-08-01 11:57 ` [igt-dev] ✓ Fi.CI.IGT: " 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=2ccde5bf-bcff-b9ac-1bc4-eafc8b781880@intel.com \
--to=bhanuprakash.modem@intel.com \
--cc=aesteve@redhat.com \
--cc=belmouss@redhat.com \
--cc=igt-dev@lists.freedesktop.org \
--cc=javierm@redhat.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.