diff options
author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2015-05-20 16:50:14 +0200 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2015-07-30 20:45:46 +0200 |
commit | 6bd42ce9c74f2b6d27b0263191295de232050ab5 (patch) | |
tree | 4b03cf20be3ded77a5153c5704abb4e5a37ecdfc | |
parent | 0591af9c76f21b1d9afd067adc6946799fc29179 (diff) |
tests/kms_addfb: Add testcass for garbage in unused planes
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
-rw-r--r-- | tests/kms_addfb.c | 67 |
1 files changed, 61 insertions, 6 deletions
diff --git a/tests/kms_addfb.c b/tests/kms_addfb.c index 28afdf0a..42ee6328 100644 --- a/tests/kms_addfb.c +++ b/tests/kms_addfb.c @@ -43,6 +43,62 @@ uint32_t gem_bo; uint32_t gem_bo_small; +static void invalid_tests(int fd) +{ + struct local_drm_mode_fb_cmd2 f = {}; + + f.width = 512; + f.height = 512; + f.pixel_format = DRM_FORMAT_XRGB8888; + f.pitches[0] = 512*4; + + igt_fixture { + gem_bo = gem_create(fd, 1024*1024*4); + igt_assert(gem_bo); + gem_bo_small = gem_create(fd, 1024*1024*4 - 4096); + igt_assert(gem_bo_small); + + f.handles[0] = gem_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("unused-handle") { + f.handles[1] = gem_bo_small; + igt_assert(drmIoctl(fd, DRM_IOCTL_MODE_ADDFB2, &f) == -1 && + errno == EINVAL); + f.handles[1] = 0; + } + + igt_subtest("unused-pitches") { + f.pitches[1] = 512; + igt_assert(drmIoctl(fd, DRM_IOCTL_MODE_ADDFB2, &f) == -1 && + errno == EINVAL); + f.pitches[1] = 0; + } + + igt_subtest("unused-offsets") { + f.offsets[1] = 512; + igt_assert(drmIoctl(fd, DRM_IOCTL_MODE_ADDFB2, &f) == -1 && + errno == EINVAL); + f.offsets[1] = 0; + } + + igt_subtest("unused-modifier") { + f.modifier[1] = LOCAL_I915_FORMAT_MOD_X_TILED; + igt_assert(drmIoctl(fd, DRM_IOCTL_MODE_ADDFB2, &f) == -1 && + errno == EINVAL); + f.modifier[1] = 0; + } + + igt_fixture { + gem_close(fd, gem_bo); + gem_close(fd, gem_bo_small); + } +} + static void pitch_tests(int fd) { struct drm_mode_fb_cmd2 f = {}; @@ -240,9 +296,8 @@ static void addfb25_tests(int fd) igt_assert(drmIoctl(fd, LOCAL_DRM_IOCTL_MODE_ADDFB2, &f) < 0 && errno == EINVAL); } - igt_fixture { + igt_fixture f.flags = LOCAL_DRM_MODE_FB_MODIFIERS; - } igt_subtest("addfb25-bad-modifier") { igt_require_fb_modifiers(fd); @@ -251,9 +306,8 @@ static void addfb25_tests(int fd) igt_assert(drmIoctl(fd, LOCAL_DRM_IOCTL_MODE_ADDFB2, &f) < 0 && errno == EINVAL); } - igt_fixture { + igt_fixture gem_set_tiling(fd, gem_bo, I915_TILING_X, 1024*4); - } igt_subtest("addfb25-X-tiled-mismatch") { igt_require_fb_modifiers(fd); @@ -282,9 +336,8 @@ static void addfb25_tests(int fd) f.fb_id = 0; } - igt_fixture { + igt_fixture gem_close(fd, gem_bo); - } } static void addfb25_ytile(int fd, int gen) @@ -359,6 +412,8 @@ igt_main gen = intel_gen(intel_get_drm_devid(fd)); } + invalid_tests(fd); + pitch_tests(fd); size_tests(fd); |