[Intel-gfx] [PATCH i-g-t 2/2] igt/kms_rotation_crc: Add RGB565 90 degree test for gen>9
Juha-Pekka Heikkila
juhapekka.heikkila at gmail.com
Tue Nov 14 14:58:35 UTC 2017
Gen10 onwards 90 and 270 degree rotations are supported for RGB565 format.
v2 (Ville Syrjälä):
As a side effect to keep bad-pixel-format test valid on all supported
platforms it need to use DRM_FORMAT_C8 now.
While at it clean up kms_rotation_crc test a bit, take out
test_plane_rotation_ytiled_obj() function as
test_plane_rotation() can basically do the same.
Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila at gmail.com>
---
tests/kms_rotation_crc.c | 101 ++++++++++-------------------------------------
1 file changed, 20 insertions(+), 81 deletions(-)
diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c
index 27d1f80..0ed2ce3 100644
--- a/tests/kms_rotation_crc.c
+++ b/tests/kms_rotation_crc.c
@@ -376,7 +376,7 @@ static void test_plane_rotation(data_t *data, int plane_type)
igt_plane_set_size(plane, data->fb.height, data->fb.width);
ret = igt_display_try_commit2(display, commit);
- if (data->override_fmt || data->override_tiling) {
+ if (data->override_fmt == DRM_FORMAT_C8) {
igt_assert_eq(ret, -EINVAL);
continue;
}
@@ -421,70 +421,6 @@ static void test_plane_rotation(data_t *data, int plane_type)
igt_require_f(valid_tests, "no valid crtc/connector combinations found\n");
}
-static void test_plane_rotation_ytiled_obj(data_t *data,
- igt_output_t *output,
- int plane_type)
-{
- igt_display_t *display = &data->display;
- uint64_t tiling = LOCAL_I915_FORMAT_MOD_Y_TILED;
- uint32_t format = DRM_FORMAT_XRGB8888;
- int bpp = igt_drm_format_to_bpp(format);
- enum igt_commit_style commit = COMMIT_LEGACY;
- int fd = data->gfx_fd;
- igt_plane_t *plane;
- drmModeModeInfo *mode;
- unsigned int stride, size, w, h;
- uint32_t gem_handle;
- int ret;
-
- plane = igt_output_get_plane_type(output, plane_type);
- igt_require(igt_plane_has_prop(plane, IGT_PLANE_ROTATION));
-
- if (plane_type == DRM_PLANE_TYPE_PRIMARY || plane_type == DRM_PLANE_TYPE_CURSOR)
- commit = COMMIT_UNIVERSAL;
-
- if (plane_type == DRM_PLANE_TYPE_CURSOR)
- igt_require(display->has_cursor_plane);
-
- if (data->display.is_atomic)
- commit = COMMIT_ATOMIC;
-
- mode = igt_output_get_mode(output);
- w = mode->hdisplay;
- h = mode->vdisplay;
-
- for (stride = 512; stride < (w * bpp / 8); stride *= 2)
- ;
- for (size = 1024*1024; size < stride * h; size *= 2)
- ;
-
- gem_handle = gem_create(fd, size);
- ret = __gem_set_tiling(fd, gem_handle, I915_TILING_Y, stride);
- igt_assert_eq(ret, 0);
-
- do_or_die(__kms_addfb(fd, gem_handle, w, h, stride,
- format, tiling, LOCAL_DRM_MODE_FB_MODIFIERS,
- &data->fb.fb_id));
- data->fb.width = w;
- data->fb.height = h;
- data->fb.gem_handle = gem_handle;
-
- igt_plane_set_fb(plane, NULL);
- igt_display_commit(display);
-
- igt_plane_set_rotation(plane, data->rotation);
- igt_plane_set_fb(plane, &data->fb);
- igt_plane_set_size(plane, h, w);
-
- ret = igt_display_try_commit2(display, commit);
-
- igt_output_set_pipe(output, PIPE_NONE);
-
- kmstest_restore_vt_mode();
- igt_remove_fb(fd, &data->fb);
- igt_assert_eq(ret, 0);
-}
-
static void test_plane_rotation_exhaust_fences(data_t *data,
igt_output_t *output,
int plane_type)
@@ -697,7 +633,12 @@ igt_main
data.pos_x = 0,
data.pos_y = 0;
data.rotation = IGT_ROTATION_90;
- data.override_fmt = DRM_FORMAT_RGB565;
+ /*
+ * Inside test_plane_rotation() there's
+ * check for DRM_FORMAT_C8 to make this
+ * test work correctly.
+ */
+ data.override_fmt = DRM_FORMAT_C8;
test_plane_rotation(&data, DRM_PLANE_TYPE_PRIMARY);
}
@@ -709,24 +650,22 @@ igt_main
test_plane_rotation(&data, DRM_PLANE_TYPE_PRIMARY);
}
- igt_subtest_f("primary-rotation-90-Y-tiled") {
- enum pipe pipe;
- igt_output_t *output;
- int valid_tests = 0;
+ igt_subtest_f("primary-rotation-90-Y-tiled-16bpp") {
+ /*
+ * this test requires hw greater than gen9
+ */
+ igt_require(gen > 9);
+ data.rotation = IGT_ROTATION_90;
+ data.override_fmt = DRM_FORMAT_RGB565;
+ data.override_tiling = LOCAL_I915_FORMAT_MOD_Y_TILED;
+ test_plane_rotation(&data, DRM_PLANE_TYPE_PRIMARY);
+ }
+ igt_subtest_f("primary-rotation-90-Y-tiled") {
igt_require(gen >= 9);
data.rotation = IGT_ROTATION_90;
-
- for_each_pipe_with_valid_output(&data.display, pipe, output) {
- igt_output_set_pipe(output, pipe);
-
- test_plane_rotation_ytiled_obj(&data, output, DRM_PLANE_TYPE_PRIMARY);
-
- valid_tests++;
- break;
- }
-
- igt_require_f(valid_tests, "no valid crtc/connector combinations found\n");
+ data.override_fmt = DRM_FORMAT_XRGB8888;
+ test_plane_rotation(&data, DRM_PLANE_TYPE_PRIMARY);
}
igt_subtest_f("exhaust-fences") {
--
2.7.4
More information about the Intel-gfx
mailing list