Re: [PATCH i-g-t v5 7/7] kms_flip: Change __wait_for_vblank to use helper function.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 2016-05-17 06:32 AM, Marius Vlad wrote:
On Mon, May 16, 2016 at 09:38:32AM -0400, robert.foss@xxxxxxxxxxxxx wrote:
From: Robert Foss <robert.foss@xxxxxxxxxxxxx>

Change __wait_for_vblank() to use kmstest_get_vbl_flag() helper function.

Signed-off-by: Robert Foss <robert.foss@xxxxxxxxxxxxx>
---
  tests/kms_flip.c | 8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/tests/kms_flip.c b/tests/kms_flip.c
index eda2fcc..0ecca07 100644
--- a/tests/kms_flip.c
+++ b/tests/kms_flip.c
@@ -481,15 +481,15 @@ static int __wait_for_vblank(unsigned int flags, int crtc_idx,
  {
  	drmVBlank wait_vbl;
  	int ret;
-	unsigned crtc_idx_mask;
+	uint32_t pipe_id_flag;
  	bool event = !(flags & TEST_VBLANK_BLOCK);

  	memset(&wait_vbl, 0, sizeof(wait_vbl));

-	crtc_idx_mask = crtc_idx << DRM_VBLANK_HIGH_CRTC_SHIFT;
-	igt_assert(!(crtc_idx_mask & ~DRM_VBLANK_HIGH_CRTC_MASK));
If crtc_idx is 1 (pipe B), crtc_idx_mask = (1 << DRM_VBLANK_HIGH_CRTC_SHIFT) = 2.
+	pipe_id_flag = kmstest_get_vbl_flag(crtc_idx);
+	igt_assert(!(pipe_id_flag & ~DRM_VBLANK_HIGH_CRTC_MASK));
If crtc_idx is 1 (pipe B), kmstest_get_vbl_flag(crtc_idx) = DRM_VBLANK_SECONDARY = 0x20000000

And the assertion fails as !(0x20000000 & ~0x0000003e) = 0.

Should kmstest_get_vbl_flag() always return pipe_id << 1?

From re-reading the pipe id parsing code in drm_irq.c drm_wait_vblank()
it would seem to me that the assertion is incorrect, specifically for the case of _DRM_VBLANK_SECONDARY.

Supplying the flag _DRM_VBLANK_SECONDARY and setting the high crtc id field to 1 fboth seem to be valid ways to communicate the same thing.

	flags = vblwait->request.type & _DRM_VBLANK_FLAGS_MASK;
	high_pipe = (vblwait->request.type &_DRM_VBLANK_HIGH_CRTC_MASK);
	if (high_pipe)
		pipe = high_pipe >> _DRM_VBLANK_HIGH_CRTC_SHIFT;
	else
		pipe = flags & _DRM_VBLANK_SECONDARY ? 1 : 0;


Maybe adding correct and more thorough assertion to kmstest_get_vbl_flag() and removing the failing assertion is the way forward.



-	wait_vbl.request.type = crtc_idx_mask;
+	wait_vbl.request.type = pipe_id_flag;
  	if (flags & TEST_VBLANK_ABSOLUTE)
  		wait_vbl.request.type |= DRM_VBLANK_ABSOLUTE;
  	else
--
2.7.4

_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux