All of lore.kernel.org
 help / color / mirror / Atom feed
From: Albert Esteve <aesteve@redhat.com>
To: igt-dev@lists.freedesktop.org
Cc: belmouss@redhat.com, javierm@redhat.com
Subject: [igt-dev] [PATCH v3 1/2] igt_kms: add hotspot plane property
Date: Tue,  1 Aug 2023 10:48:52 +0200	[thread overview]
Message-ID: <20230801084853.42075-2-aesteve@redhat.com> (raw)
In-Reply-To: <20230801084853.42075-1-aesteve@redhat.com>

Introduce LOCAL_DRM_CLIENT_CAP_CURSOR_PLANE_HOTSPOT
capability definition until patched drm.h uapi header
is upstreamed and lands on IGT.

CURSOR_PLANE_HOTSPOT capability is enabled
conditionally, and then tracked in the igt_display
struct.

Add HOTSPOT_X and HOTSPOT_Y properties
to the atomic_plane_properties struct.

Signed-off-by: Albert Esteve <aesteve@redhat.com>
Acked-by: Javier Martinez Canillas <javierm@redhat.com>
Acked-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
Reviewed-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
---
 lib/igt_kms.c | 10 ++++++++++
 lib/igt_kms.h |  9 +++++++++
 2 files changed, 19 insertions(+)

diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index f2b0eed57..e0959ccff 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -601,6 +601,8 @@ const char * const igt_plane_prop_names[IGT_NUM_PLANE_PROPS] = {
 	[IGT_PLANE_CRTC_Y] = "CRTC_Y",
 	[IGT_PLANE_CRTC_W] = "CRTC_W",
 	[IGT_PLANE_CRTC_H] = "CRTC_H",
+	[IGT_PLANE_HOTSPOT_X] = "HOTSPOT_X",
+	[IGT_PLANE_HOTSPOT_Y] = "HOTSPOT_Y",
 	[IGT_PLANE_FB_ID] = "FB_ID",
 	[IGT_PLANE_CRTC_ID] = "CRTC_ID",
 	[IGT_PLANE_IN_FENCE_FD] = "IN_FENCE_FD",
@@ -2296,6 +2298,11 @@ static void igt_plane_reset(igt_plane_t *plane)
 	if (igt_plane_has_prop(plane, IGT_PLANE_SCALING_FILTER))
 		igt_plane_set_prop_enum(plane, IGT_PLANE_SCALING_FILTER, "Default");
 
+	if (igt_plane_has_prop(plane, IGT_PLANE_HOTSPOT_X))
+		igt_plane_set_prop_value(plane, IGT_PLANE_HOTSPOT_X, 0);
+	if (igt_plane_has_prop(plane, IGT_PLANE_HOTSPOT_Y))
+		igt_plane_set_prop_value(plane, IGT_PLANE_HOTSPOT_Y, 0);
+
 	igt_plane_clear_prop_changed(plane, IGT_PLANE_IN_FENCE_FD);
 	plane->values[IGT_PLANE_IN_FENCE_FD] = ~0ULL;
 	plane->gem_handle = 0;
@@ -2680,6 +2687,9 @@ void igt_display_require(igt_display_t *display, int drm_fd)
 	if (drmSetClientCap(drm_fd, DRM_CLIENT_CAP_ATOMIC, 1) == 0)
 		display->is_atomic = 1;
 
+	if (drmSetClientCap(drm_fd, LOCAL_DRM_CLIENT_CAP_CURSOR_PLANE_HOTSPOT, 1) == 0)
+		display->has_virt_cursor_plane = 1;
+
 	plane_resources = drmModeGetPlaneResources(display->drm_fd);
 	igt_assert(plane_resources);
 
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 1b6988c17..91355c910 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -41,6 +41,12 @@
 
 /* Low-level helpers with kmstest_ prefix */
 
+/**
+ * Clients which do set cursor hotspot and treat the cursor plane
+ * like a mouse cursor should set this property.
+ */
+#define LOCAL_DRM_CLIENT_CAP_CURSOR_PLANE_HOTSPOT	6
+
 /**
  * pipe:
  * @PIPE_NONE: Invalid pipe, used for disconnecting a output from a pipe.
@@ -318,6 +324,8 @@ enum igt_atomic_plane_properties {
        IGT_PLANE_ZPOS,
        IGT_PLANE_FB_DAMAGE_CLIPS,
        IGT_PLANE_SCALING_FILTER,
+       IGT_PLANE_HOTSPOT_X,
+       IGT_PLANE_HOTSPOT_Y,
        IGT_NUM_PLANE_PROPS
 };
 
@@ -448,6 +456,7 @@ struct igt_display {
 	igt_pipe_t *pipes;
 	bool has_cursor_plane;
 	bool is_atomic;
+	bool has_virt_cursor_plane;
 	bool first_commit;
 
 	uint64_t *modifiers;
-- 
2.40.0

  reply	other threads:[~2023-08-01  8:49 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 ` Albert Esteve [this message]
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
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=20230801084853.42075-2-aesteve@redhat.com \
    --to=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.