[PATCH i-g-t v2] tests/kms_universal_plane: Fix fb count mismatch

Nemesa Garg nemesa.garg at intel.com
Sat Apr 5 10:18:07 UTC 2025


There is a mismatch in the count of fb before
start and end of the test. This is because cursor
fbs still not removed and we are counting the fbs.
Add a 2 vblank wait before counting the fbs so that
all cursors fbs gets removed.
Since unpinning of cursor fb occurs during vblank in xe,
we need to wait atleast 1 vblank for driver to remove
cursor fb. We need 1 additional vblank because vblank
event is scheduled before unpinning.

v2: Use is_xe_device[Chaitanya]

Signed-off-by: Nemesa Garg <nemesa.garg at intel.com>
---
 tests/kms_universal_plane.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/tests/kms_universal_plane.c b/tests/kms_universal_plane.c
index 8e0b4dda0..2d9716575 100644
--- a/tests/kms_universal_plane.c
+++ b/tests/kms_universal_plane.c
@@ -703,6 +703,16 @@ cursor_leak_test_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
 			    COMMIT_ATOMIC : COMMIT_LEGACY);
 	cursor_leak_test_fini(data, output, &background_fb, cursor_fb);
 
+	/* Since unpinning of cursor fb occurs during vblank in xe, we need
+	 * to wait atleast 1 vblank for driver to remove cursor fb. We need
+	 * 1 additional vblank because vblank event is scheduled before
+	 * unpinning. Therefore add 2 vblank wait to ensure that all
+	 * cursor-related framebuffers can be removed before counting the
+	 * framebuffer.
+	 */
+	if (is_xe_device(data->drm_fd))
+		igt_wait_for_vblank_count(data->drm_fd, data->display.pipes[pipe].crtc_offset, 2);
+
 	/* We should be back to the same framebuffer count as when we started */
 	count2 = intel_gem_fb_count(data);
 
-- 
2.25.1



More information about the igt-dev mailing list