[igt-dev] [PATCH i-g-t] tests/i915/kms_big_fb: fix max stride async flip tests
Juha-Pekka Heikkila
juhapekka.heikkila at gmail.com
Thu Sep 29 13:40:17 UTC 2022
Change handling of inner loop so test will not fail on unrelated issues.
Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila at gmail.com>
---
tests/i915/kms_big_fb.c | 25 ++++++++-----------------
1 file changed, 8 insertions(+), 17 deletions(-)
diff --git a/tests/i915/kms_big_fb.c b/tests/i915/kms_big_fb.c
index 0c4cd95e7..0b5e955de 100644
--- a/tests/i915/kms_big_fb.c
+++ b/tests/i915/kms_big_fb.c
@@ -465,7 +465,7 @@ static bool test_pipe(data_t *data)
static bool
max_hw_stride_async_flip_test(data_t *data)
{
- uint32_t ret, startframe;
+ uint32_t ret;
const uint32_t w = data->output->config.default_mode.hdisplay,
h = data->output->config.default_mode.vdisplay;
igt_plane_t *primary;
@@ -510,14 +510,14 @@ max_hw_stride_async_flip_test(data_t *data)
INTEL_PIPE_CRC_SOURCE_AUTO);
igt_pipe_crc_start(data->pipe_crc);
+ igt_plane_set_fb(primary, &data->big_fb);
+ igt_fb_set_size(&data->big_fb, primary, w, h);
+ igt_plane_set_size(primary, w, h);
+ igt_display_commit_atomic(&data->display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
+ igt_pipe_crc_get_current(data->drm_fd, data->pipe_crc, &compare_crc);
+
igt_set_timeout(5, "Async pageflipping loop got stuck!\n");
for (int i = 0; i < 2; i++) {
- igt_plane_set_fb(primary, &data->big_fb);
- igt_fb_set_size(&data->big_fb, primary, w, h);
- igt_plane_set_size(primary, w, h);
- igt_display_commit_atomic(&data->display,
- DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
-
/* First async flip on Gen13+ will be treated as a sync flip*/
if (intel_display_ver(data->devid) >= 13) {
do {
@@ -528,9 +528,6 @@ max_hw_stride_async_flip_test(data_t *data)
igt_assert(ret == 0);
}
- igt_wait_for_vblank(data->drm_fd, data->display.pipes[primary->pipe->pipe].crtc_offset);
- startframe = kmstest_get_vblank(data->drm_fd, data->pipe, 0) + 1;
-
for (int j = 0; j < 2; j++) {
do {
ret = drmModePageFlip(data->drm_fd, data->output->config.crtc->crtc_id,
@@ -547,13 +544,7 @@ max_hw_stride_async_flip_test(data_t *data)
igt_assert(ret == 0);
}
- igt_pipe_crc_get_for_frame(data->drm_fd, data->pipe_crc,
- startframe, &compare_crc);
- igt_pipe_crc_get_for_frame(data->drm_fd, data->pipe_crc,
- startframe + 1, &async_crc);
-
- igt_assert_f(kmstest_get_vblank(data->drm_fd, data->pipe, 0) -
- startframe == 1, "lost frames\n");
+ igt_pipe_crc_get_current(data->drm_fd, data->pipe_crc, &async_crc);
igt_assert_f(igt_check_crc_equal(&compare_crc, &async_crc)^(i^1),
"CRC failure with async flip, crc %s match for checked round\n",
--
2.37.3
More information about the igt-dev
mailing list