[Intel-gfx] [PATCH igt 26/28] lib/display: Wait for a vblank after SetPlane()

Damien Lespiau damien.lespiau at intel.com
Fri Feb 7 15:49:10 CET 2014


Let's be testing friendly and gently wait for the next vblank before
returning from commit() when needed.

After igt_display_commit() one can safely look at the CRC.

Signed-off-by: Damien Lespiau <damien.lespiau at intel.com>
---
 lib/igt_kms.c | 8 ++++++++
 lib/igt_kms.h | 5 +++--
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 7d74bf8..862d8ba 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -1174,11 +1174,13 @@ static int igt_cursor_commit(igt_plane_t *plane, igt_output_t *output)
 static int igt_drm_plane_commit(igt_plane_t *plane, igt_output_t *output)
 {
 	igt_display_t *display = output->display;
+	igt_pipe_t *pipe;
 	uint32_t fb_id, crtc_id;
 	int ret;
 
 	fb_id = igt_plane_get_fd_id(plane);
 	crtc_id = output->config.crtc->crtc_id;
+	pipe = igt_output_get_driving_pipe(output);
 
 	if (plane->fb_changed && fb_id == 0) {
 		LOG(display,
@@ -1227,6 +1229,7 @@ static int igt_drm_plane_commit(igt_plane_t *plane, igt_output_t *output)
 
 		plane->fb_changed = false;
 		plane->position_changed = false;
+		pipe->need_wait_for_vblank = true;
 	}
 
 	return 0;
@@ -1346,6 +1349,11 @@ static int igt_output_commit(igt_output_t *output)
 		igt_plane_commit(plane, output);
 	}
 
+	if (pipe->need_wait_for_vblank) {
+		igt_wait_for_vblank(display->drm_fd, pipe->pipe);
+		pipe->need_wait_for_vblank = false;
+	}
+
 	return 0;
 }
 
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 96dd9e4..8c1c0a7 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -136,8 +136,9 @@ typedef struct {
 struct igt_pipe {
 	igt_display_t *display;
 	enum pipe pipe;
-	unsigned int need_set_crtc   : 1;
-	unsigned int need_set_cursor : 1;
+	unsigned int need_set_crtc        : 1;
+	unsigned int need_set_cursor      : 1;
+	unsigned int need_wait_for_vblank : 1;
 #define IGT_MAX_PLANES	4
 	int n_planes;
 	igt_plane_t planes[IGT_MAX_PLANES];
-- 
1.8.3.1




More information about the Intel-gfx mailing list