mirror of
https://github.com/tiagovignatti/intel-gpu-tools.git
synced 2025-06-18 21:36:27 +00:00
tests/gem_mmap: Convert to subtests
I wanted to write a testcase for gtt mmap access restriction checking and only noticed after conversion to subtests that this here is for cpu mmaps ;-) Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
parent
86f60ee593
commit
c2c0efc21a
@ -30,6 +30,7 @@ TESTS_progs_M = \
|
|||||||
gem_flink \
|
gem_flink \
|
||||||
gem_flink_race \
|
gem_flink_race \
|
||||||
gem_linear_blits \
|
gem_linear_blits \
|
||||||
|
gem_mmap \
|
||||||
gem_mmap_gtt \
|
gem_mmap_gtt \
|
||||||
gem_partial_pwrite_pread \
|
gem_partial_pwrite_pread \
|
||||||
gem_pread \
|
gem_pread \
|
||||||
@ -75,7 +76,6 @@ TESTS_progs = \
|
|||||||
gem_hangcheck_forcewake \
|
gem_hangcheck_forcewake \
|
||||||
gem_largeobject \
|
gem_largeobject \
|
||||||
gem_lut_handle \
|
gem_lut_handle \
|
||||||
gem_mmap \
|
|
||||||
gem_mmap_offset_exhaustion \
|
gem_mmap_offset_exhaustion \
|
||||||
gem_pin \
|
gem_pin \
|
||||||
gem_pipe_control_store_loop \
|
gem_pipe_control_store_loop \
|
||||||
|
@ -40,56 +40,63 @@
|
|||||||
#include "drmtest.h"
|
#include "drmtest.h"
|
||||||
|
|
||||||
#define OBJECT_SIZE 16384
|
#define OBJECT_SIZE 16384
|
||||||
|
int fd;
|
||||||
|
int handle;
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int fd;
|
|
||||||
struct drm_i915_gem_mmap arg;
|
struct drm_i915_gem_mmap arg;
|
||||||
uint8_t expected[OBJECT_SIZE];
|
uint8_t expected[OBJECT_SIZE];
|
||||||
uint8_t buf[OBJECT_SIZE];
|
uint8_t buf[OBJECT_SIZE];
|
||||||
uint8_t *addr;
|
uint8_t *addr;
|
||||||
int ret;
|
int ret;
|
||||||
int handle;
|
|
||||||
|
|
||||||
fd = drm_open_any();
|
igt_subtest_init(argc, argv);
|
||||||
|
|
||||||
memset(&arg, 0, sizeof(arg));
|
igt_fixture
|
||||||
arg.handle = 0x10101010;
|
fd = drm_open_any();
|
||||||
arg.offset = 0;
|
|
||||||
arg.size = 4096;
|
|
||||||
printf("Testing mmaping of bad object.\n");
|
|
||||||
ret = ioctl(fd, DRM_IOCTL_I915_GEM_MMAP, &arg);
|
|
||||||
igt_assert(ret == -1 && errno == ENOENT);
|
|
||||||
|
|
||||||
handle = gem_create(fd, OBJECT_SIZE);
|
igt_subtest("bad-object") {
|
||||||
|
memset(&arg, 0, sizeof(arg));
|
||||||
|
arg.handle = 0x10101010;
|
||||||
|
arg.offset = 0;
|
||||||
|
arg.size = 4096;
|
||||||
|
ret = ioctl(fd, DRM_IOCTL_I915_GEM_MMAP, &arg);
|
||||||
|
igt_assert(ret == -1 && errno == ENOENT);
|
||||||
|
}
|
||||||
|
|
||||||
printf("Testing mmaping of newly created object.\n");
|
igt_fixture
|
||||||
arg.handle = handle;
|
handle = gem_create(fd, OBJECT_SIZE);
|
||||||
arg.offset = 0;
|
|
||||||
arg.size = OBJECT_SIZE;
|
|
||||||
ret = ioctl(fd, DRM_IOCTL_I915_GEM_MMAP, &arg);
|
|
||||||
igt_assert(ret == 0);
|
|
||||||
addr = (uint8_t *)(uintptr_t)arg.addr_ptr;
|
|
||||||
|
|
||||||
printf("Testing contents of newly created object.\n");
|
igt_subtest("new-object") {
|
||||||
memset(expected, 0, sizeof(expected));
|
arg.handle = handle;
|
||||||
igt_assert(memcmp(addr, expected, sizeof(expected)) == 0);
|
arg.offset = 0;
|
||||||
|
arg.size = OBJECT_SIZE;
|
||||||
|
ret = ioctl(fd, DRM_IOCTL_I915_GEM_MMAP, &arg);
|
||||||
|
igt_assert(ret == 0);
|
||||||
|
addr = (uint8_t *)(uintptr_t)arg.addr_ptr;
|
||||||
|
|
||||||
printf("Testing coherency of writes and mmap reads.\n");
|
printf("Testing contents of newly created object.\n");
|
||||||
memset(buf, 0, sizeof(buf));
|
memset(expected, 0, sizeof(expected));
|
||||||
memset(buf + 1024, 0x01, 1024);
|
igt_assert(memcmp(addr, expected, sizeof(expected)) == 0);
|
||||||
memset(expected + 1024, 0x01, 1024);
|
|
||||||
gem_write(fd, handle, 0, buf, OBJECT_SIZE);
|
|
||||||
igt_assert(memcmp(buf, addr, sizeof(buf)) == 0);
|
|
||||||
|
|
||||||
printf("Testing that mapping stays after close\n");
|
printf("Testing coherency of writes and mmap reads.\n");
|
||||||
gem_close(fd, handle);
|
memset(buf, 0, sizeof(buf));
|
||||||
igt_assert(memcmp(buf, addr, sizeof(buf)) == 0);
|
memset(buf + 1024, 0x01, 1024);
|
||||||
|
memset(expected + 1024, 0x01, 1024);
|
||||||
|
gem_write(fd, handle, 0, buf, OBJECT_SIZE);
|
||||||
|
igt_assert(memcmp(buf, addr, sizeof(buf)) == 0);
|
||||||
|
|
||||||
printf("Testing unmapping\n");
|
printf("Testing that mapping stays after close\n");
|
||||||
munmap(addr, OBJECT_SIZE);
|
gem_close(fd, handle);
|
||||||
|
igt_assert(memcmp(buf, addr, sizeof(buf)) == 0);
|
||||||
|
|
||||||
close(fd);
|
printf("Testing unmapping\n");
|
||||||
|
munmap(addr, OBJECT_SIZE);
|
||||||
|
}
|
||||||
|
|
||||||
|
igt_fixture
|
||||||
|
close(fd);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user