[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