summaryrefslogtreecommitdiff
path: root/tests/kms_addfb_basic.c
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu.vizoso@collabora.com>2016-03-01 16:07:47 +0100
committerDaniel Stone <daniels@collabora.com>2016-04-14 13:54:24 +0100
commitb2671e8e70bc541284f4ad77a3ca204c195bb163 (patch)
tree7ba9cdd25906b14c57dbdf424bf717405aa689dd /tests/kms_addfb_basic.c
parentc94a828f151686faab5bfa2fe0955cd440cead16 (diff)
kms_addfb_basic: Split tiling_tests off
Move tests requiring tiled BOs to the end so they don't cause unrelated subtests to be skipped when testing drivers with only dumb buffer support. Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com> Reviewed-by: Daniel Stone <daniels@collabora.com> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'tests/kms_addfb_basic.c')
-rw-r--r--tests/kms_addfb_basic.c50
1 files changed, 45 insertions, 5 deletions
diff --git a/tests/kms_addfb_basic.c b/tests/kms_addfb_basic.c
index 648f98c1..79f48885 100644
--- a/tests/kms_addfb_basic.c
+++ b/tests/kms_addfb_basic.c
@@ -156,16 +156,50 @@ static void pitch_tests(int fd)
}
}
+ igt_fixture
+ gem_close(fd, gem_bo);
+}
+
+
+static void tiling_tests(int fd)
+{
+ struct drm_mode_fb_cmd2 f = {};
+ uint32_t tiled_x_bo;
+ uint32_t tiled_y_bo;
+
+ f.width = 512;
+ f.height = 512;
+ f.pixel_format = DRM_FORMAT_XRGB8888;
f.pitches[0] = 1024*4;
+ igt_fixture {
+ tiled_x_bo = igt_create_bo_with_dimensions(fd, 1024, 1024,
+ DRM_FORMAT_XRGB8888, LOCAL_I915_FORMAT_MOD_X_TILED,
+ 1024*4, NULL, NULL, NULL);
+ igt_assert(tiled_x_bo);
+
+ tiled_y_bo = igt_create_bo_with_dimensions(fd, 1024, 1024,
+ DRM_FORMAT_XRGB8888, LOCAL_I915_FORMAT_MOD_Y_TILED,
+ 1024*4, NULL, NULL, NULL);
+ igt_assert(tiled_y_bo);
+
+ gem_bo = igt_create_bo_with_dimensions(fd, 1024, 1024,
+ DRM_FORMAT_XRGB8888, 0, 0, NULL, NULL, NULL);
+ igt_assert(gem_bo);
+ }
+
+ f.pitches[0] = 1024*4;
igt_subtest("basic-X-tiled") {
- gem_set_tiling(fd, gem_bo, I915_TILING_X, 1024*4);
+ f.handles[0] = tiled_x_bo;
+
igt_assert(drmIoctl(fd, DRM_IOCTL_MODE_ADDFB2, &f) == 0);
igt_assert(drmIoctl(fd, DRM_IOCTL_MODE_RMFB, &f.fb_id) == 0);
f.fb_id = 0;
}
igt_subtest("framebuffer-vs-set-tiling") {
+ f.handles[0] = gem_bo;
+
gem_set_tiling(fd, gem_bo, I915_TILING_X, 1024*4);
igt_assert(drmIoctl(fd, DRM_IOCTL_MODE_ADDFB2, &f) == 0);
igt_assert(__gem_set_tiling(fd, gem_bo, I915_TILING_X, 512*4) == -EBUSY);
@@ -176,20 +210,24 @@ static void pitch_tests(int fd)
f.pitches[0] = 512*4;
igt_subtest("tile-pitch-mismatch") {
- gem_set_tiling(fd, gem_bo, I915_TILING_X, 1024*4);
+ f.handles[0] = tiled_x_bo;
+
igt_assert(drmIoctl(fd, DRM_IOCTL_MODE_ADDFB2, &f) == -1 &&
errno == EINVAL);
}
f.pitches[0] = 1024*4;
igt_subtest("basic-Y-tiled") {
- gem_set_tiling(fd, gem_bo, I915_TILING_Y, 1024*4);
+ f.handles[0] = tiled_y_bo;
+
igt_assert(drmIoctl(fd, DRM_IOCTL_MODE_ADDFB2, &f) == -1 &&
errno == EINVAL);
}
- igt_fixture
- gem_close(fd, gem_bo);
+ igt_fixture {
+ gem_close(fd, tiled_x_bo);
+ gem_close(fd, tiled_y_bo);
+ }
}
static void size_tests(int fd)
@@ -448,6 +486,8 @@ igt_main
addfb25_ytile(fd, gen);
+ tiling_tests(fd);
+
igt_fixture
close(fd);
}