diff options
author | Tomeu Vizoso <tomeu.vizoso@collabora.com> | 2016-03-01 16:07:47 +0100 |
---|---|---|
committer | Daniel Stone <daniels@collabora.com> | 2016-04-14 13:54:24 +0100 |
commit | b2671e8e70bc541284f4ad77a3ca204c195bb163 (patch) | |
tree | 7ba9cdd25906b14c57dbdf424bf717405aa689dd /tests/kms_addfb_basic.c | |
parent | c94a828f151686faab5bfa2fe0955cd440cead16 (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.c | 50 |
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); } |