tests/kms_addfb: Add testcass for garbage in unused planes

Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
This commit is contained in:
Daniel Vetter 2015-05-20 16:50:14 +02:00
parent 0591af9c76
commit 6bd42ce9c7

View File

@ -43,6 +43,62 @@
uint32_t gem_bo; uint32_t gem_bo;
uint32_t gem_bo_small; 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) static void pitch_tests(int fd)
{ {
struct drm_mode_fb_cmd2 f = {}; 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_assert(drmIoctl(fd, LOCAL_DRM_IOCTL_MODE_ADDFB2, &f) < 0 && errno == EINVAL);
} }
igt_fixture { igt_fixture
f.flags = LOCAL_DRM_MODE_FB_MODIFIERS; f.flags = LOCAL_DRM_MODE_FB_MODIFIERS;
}
igt_subtest("addfb25-bad-modifier") { igt_subtest("addfb25-bad-modifier") {
igt_require_fb_modifiers(fd); 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_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); gem_set_tiling(fd, gem_bo, I915_TILING_X, 1024*4);
}
igt_subtest("addfb25-X-tiled-mismatch") { igt_subtest("addfb25-X-tiled-mismatch") {
igt_require_fb_modifiers(fd); igt_require_fb_modifiers(fd);
@ -282,9 +336,8 @@ static void addfb25_tests(int fd)
f.fb_id = 0; f.fb_id = 0;
} }
igt_fixture { igt_fixture
gem_close(fd, gem_bo); gem_close(fd, gem_bo);
}
} }
static void addfb25_ytile(int fd, int gen) static void addfb25_ytile(int fd, int gen)
@ -359,6 +412,8 @@ igt_main
gen = intel_gen(intel_get_drm_devid(fd)); gen = intel_gen(intel_get_drm_devid(fd));
} }
invalid_tests(fd);
pitch_tests(fd); pitch_tests(fd);
size_tests(fd); size_tests(fd);