From: Mohammed Khajapasha <mohammed.khajapasha@intel.com>
To: igt-dev@lists.freedesktop.org, arkadiusz.hiler@intel.com
Subject: [igt-dev] [PATCH i-g-t 10/11] lib/kms: Convert pipe id flags for a vblank using crtc offset
Date: Sun, 12 Jul 2020 01:36:01 +0530 [thread overview]
Message-ID: <20200711200602.3217-11-mohammed.khajapasha@intel.com> (raw)
In-Reply-To: <20200711200602.3217-1-mohammed.khajapasha@intel.com>
In i915 with non-contiguous pipes display, pipes always not same
as crtc index in display pipes array. Hence reading pipe id flags
for a vblank event using crtc offset.
Signed-off-by: Mohammed Khajapasha <mohammed.khajapasha@intel.com>
---
lib/igt_kms.c | 51 +++++++++++++++++++++++++++++++++++----------------
lib/igt_kms.h | 14 +++++++++++---
2 files changed, 46 insertions(+), 19 deletions(-)
diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index d56f2e56..5b9f2175 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -1983,6 +1983,8 @@ void igt_display_require(igt_display_t *display, int drm_fd)
/* pipe is enabled/disabled */
pipe->enabled = true;
pipe->crtc_id = resources->crtcs[i];
+ /* offset of a pipe in crtcs list */
+ pipe->crtc_offset = i;
}
drmSetClientCap(drm_fd, DRM_CLIENT_CAP_UNIVERSAL_PLANES, 1);
@@ -4131,18 +4133,23 @@ void igt_pipe_request_out_fence(igt_pipe_t *pipe)
/**
* igt_wait_for_vblank_count:
* @drm_fd: A drm file descriptor
- * @pipe: Pipe to wait_for_vblank on
+ * @crtc_offset: offset of a Pipe to wait_for_vblank on
* @count: Number of vblanks to wait on
*
+ * With non-contiguous pipe display, pipe mapping always
+ * not same with crtc mapping, for i915 pipe is enum id of i915's crtc object
+ * and pipe id not equal to crtc offset in mode config list hence passing
+ * crtc offset to read vblank count for a pipe.
+ *
* Waits for a given number of vertical blank intervals
*/
-void igt_wait_for_vblank_count(int drm_fd, enum pipe pipe, int count)
+void igt_wait_for_vblank_count(int drm_fd, int crtc_offset, int count)
{
drmVBlank wait_vbl;
uint32_t pipe_id_flag;
memset(&wait_vbl, 0, sizeof(wait_vbl));
- pipe_id_flag = kmstest_get_vbl_flag(pipe);
+ pipe_id_flag = kmstest_get_vbl_flag(crtc_offset);
wait_vbl.request.type = DRM_VBLANK_RELATIVE;
wait_vbl.request.type |= pipe_id_flag;
@@ -4154,13 +4161,18 @@ void igt_wait_for_vblank_count(int drm_fd, enum pipe pipe, int count)
/**
* igt_wait_for_vblank:
* @drm_fd: A drm file descriptor
- * @pipe: Pipe to wait_for_vblank on
+ * @crtc_offset: offset of a Pipe to wait_for_vblank on
+ *
+ * With non-contiguous pipe display, pipe mapping always
+ * not same with crtc mapping, for i915 pipe is enum id of i915's crtc object
+ * and pipe id not equal to crtc offset in mode config list hence passing
+ * crtc offset to read vblank count for a pipe.
*
* Waits for 1 vertical blank intervals
*/
-void igt_wait_for_vblank(int drm_fd, enum pipe pipe)
+void igt_wait_for_vblank(int drm_fd, int crtc_offset)
{
- igt_wait_for_vblank_count(drm_fd, pipe, 1);
+ igt_wait_for_vblank_count(drm_fd, crtc_offset, 1);
}
/**
@@ -4383,22 +4395,29 @@ void igt_cleanup_uevents(struct udev_monitor *mon)
/**
* kmstest_get_vbl_flag:
- * @pipe_id: Pipe to convert to flag representation.
+ * @crtc_offset: CRTC offset to convert into pipe flag representation.
*
- * Convert a pipe id into the flag representation
- * expected in DRM while processing DRM_IOCTL_WAIT_VBLANK.
+ * With non-contiguous pipe display, pipe mapping always
+ * not same with crtc mapping, for i915 pipe is enum id of i915's crtc object
+ * and pipe id not equal to crtc offset in mode config list hence passing
+ * crtc offset of a pipe to convert into the pipe flag representation
+ * which expected in DRM while processing DRM_IOCTL_WAIT_VBLANK.
*/
-uint32_t kmstest_get_vbl_flag(uint32_t pipe_id)
+uint32_t kmstest_get_vbl_flag(int crtc_offset)
{
- if (pipe_id == 0)
- return 0;
- else if (pipe_id == 1)
- return _DRM_VBLANK_SECONDARY;
+ uint32_t pipe_id;
+
+ if (crtc_offset == 0)
+ pipe_id = 0;
+ else if (crtc_offset == 1)
+ pipe_id = _DRM_VBLANK_SECONDARY;
else {
- uint32_t pipe_flag = pipe_id << 1;
+ uint32_t pipe_flag = crtc_offset << 1;
igt_assert(!(pipe_flag & ~DRM_VBLANK_HIGH_CRTC_MASK));
- return pipe_flag;
+ pipe_id = pipe_flag;
}
+
+ return pipe_id;
}
static inline const uint32_t *
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 7109c9a5..162c4850 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -338,8 +338,14 @@ typedef struct igt_plane {
int format_mod_count;
} igt_plane_t;
+/*
+ * In i915, with non-contiguous pipe display, a pipe is not always
+ * same as a crtc mapping in display, pipe is enum id of a i915's crtc object
+ * using crtc offset to get the offset of a pipe from mode config list
+ */
struct igt_pipe {
igt_display_t *display;
+ /* Id of a pipe object */
enum pipe pipe;
/* pipe is enabled or not */
bool enabled;
@@ -354,6 +360,8 @@ struct igt_pipe {
uint64_t values[IGT_NUM_CRTC_PROPS];
uint32_t crtc_id;
+ /* crtc offset of a pipe in mode config list */
+ uint32_t crtc_offset;
int32_t out_fence_fd;
};
@@ -448,8 +456,8 @@ void igt_fb_set_position(struct igt_fb *fb, igt_plane_t *plane,
void igt_fb_set_size(struct igt_fb *fb, igt_plane_t *plane,
uint32_t w, uint32_t h);
-void igt_wait_for_vblank(int drm_fd, enum pipe pipe);
-void igt_wait_for_vblank_count(int drm_fd, enum pipe pipe, int count);
+void igt_wait_for_vblank(int drm_fd, int crtc_offset);
+void igt_wait_for_vblank_count(int drm_fd, int crtc_offset, int count);
static inline bool igt_output_is_connected(igt_output_t *output)
{
@@ -769,7 +777,7 @@ void igt_pipe_refresh(igt_display_t *display, enum pipe pipe, bool force);
void igt_enable_connectors(int drm_fd);
void igt_reset_connectors(void);
-uint32_t kmstest_get_vbl_flag(uint32_t pipe_id);
+uint32_t kmstest_get_vbl_flag(int crtc_offset);
const struct edid *igt_kms_get_base_edid(void);
const struct edid *igt_kms_get_alt_edid(void);
--
2.24.1
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
next prev parent reply other threads:[~2020-07-11 20:06 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-11 20:05 [igt-dev] [PATCH i-g-t 00/11] lib/igt_kms: Add support for display with Mohammed Khajapasha
2020-07-11 20:05 ` [igt-dev] [PATCH i-g-t 01/11] lib/igt_kms: Add support for display with non-contiguous pipes Mohammed Khajapasha
2020-07-11 20:05 ` [igt-dev] [PATCH i-g-t 02/11] lib/igt_kms: Add igt_require_pipe() function Mohammed Khajapasha
2020-07-11 20:05 ` [igt-dev] [PATCH i-g-t 03/11] tests/kms_cursor_legacy: Read crtc id for enable pipes Mohammed Khajapasha
2020-07-11 20:05 ` [igt-dev] [PATCH i-g-t 04/11] tests/kms_lease: Get pipe from crtc " Mohammed Khajapasha
2020-07-15 14:21 ` Arkadiusz Hiler
2020-07-11 20:05 ` [igt-dev] [PATCH i-g-t 05/11] tests/kms_lease: Read crtc id for a valid pipe Mohammed Khajapasha
2020-07-15 14:19 ` Arkadiusz Hiler
2020-07-11 20:05 ` [igt-dev] [PATCH i-g-t 06/11] lib/kms: Skip igt test cases for disabled display pipes Mohammed Khajapasha
2020-07-11 20:05 ` [igt-dev] [PATCH i-g-t 07/11] tests/kms: Skip kms test cases for disabled pipes Mohammed Khajapasha
2020-07-11 20:05 ` [igt-dev] [PATCH i-g-t 08/11] tests/kms_atomic_transition: Set modeset for enable pipes only Mohammed Khajapasha
2020-07-11 20:06 ` [igt-dev] [PATCH i-g-t 09/11] i915/gem_eio: Set modeset for enable pipes Mohammed Khajapasha
2020-07-11 20:06 ` Mohammed Khajapasha [this message]
2020-07-15 14:50 ` [igt-dev] [PATCH i-g-t 10/11] lib/kms: Convert pipe id flags for a vblank using crtc offset Arkadiusz Hiler
2020-07-16 10:12 ` Jani Nikula
2020-07-16 10:40 ` Arkadiusz Hiler
2020-07-16 17:23 ` Khajapasha, Mohammed
2020-07-16 18:07 ` Khajapasha, Mohammed
2020-07-17 13:02 ` Arkadiusz Hiler
2020-07-17 15:43 ` Khajapasha, Mohammed
2020-07-20 9:44 ` Arkadiusz Hiler
2020-07-11 20:06 ` [igt-dev] [PATCH i-g-t 11/11] tests/kms: Use crtc offset to read vblank event for a pipe Mohammed Khajapasha
2020-07-11 20:41 ` [igt-dev] ✓ Fi.CI.BAT: success for lib/igt_kms: Add support for display with (rev7) Patchwork
2020-07-11 21:53 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
2020-07-15 11:54 ` [igt-dev] ✓ Fi.CI.IGT: success " Patchwork
-- strict thread matches above, loose matches on Subject: below --
2020-07-20 15:20 [igt-dev] [PATCH i-g-t 00/11] lib/igt_kms: Add support for display with Mohammed Khajapasha
2020-07-20 15:20 ` [igt-dev] [PATCH i-g-t 10/11] lib/kms: Convert pipe id flags for a vblank using crtc offset Mohammed Khajapasha
2020-07-20 11:48 [igt-dev] [PATCH i-g-t 00/11] lib/igt_kms: Add support for display with Mohammed Khajapasha
2020-07-20 11:48 ` [igt-dev] [PATCH i-g-t 10/11] lib/kms: Convert pipe id flags for a vblank using crtc offset Mohammed Khajapasha
2020-07-17 15:40 [igt-dev] [PATCH i-g-t 00/11] lib/igt_kms: Add support for display with Mohammed Khajapasha
2020-07-17 15:41 ` [igt-dev] [PATCH i-g-t 10/11] lib/kms: Convert pipe id flags for a vblank using crtc offset Mohammed Khajapasha
2020-07-20 9:35 ` Arkadiusz Hiler
2020-07-11 18:04 [igt-dev] [PATCH i-g-t 00/11] lib/igt_kms: Add support for display with Mohammed Khajapasha
2020-07-11 18:04 ` [igt-dev] [PATCH i-g-t 10/11] lib/kms: Convert pipe id flags for a vblank using crtc offset Mohammed Khajapasha
2020-07-06 4:40 [igt-dev] [PATCH i-g-t 00/11] lib/igt_kms: Add support for display with Mohammed Khajapasha
2020-07-06 4:40 ` [igt-dev] [PATCH i-g-t 10/11] lib/kms: Convert pipe id flags for a vblank using crtc offset Mohammed Khajapasha
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=20200711200602.3217-11-mohammed.khajapasha@intel.com \
--to=mohammed.khajapasha@intel.com \
--cc=arkadiusz.hiler@intel.com \
--cc=igt-dev@lists.freedesktop.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox