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