mirror of
https://github.com/tiagovignatti/intel-gpu-tools.git
synced 2025-06-09 17:06:14 +00:00
tests/gem_mmap_gtt: also test gtt pwrite paths
This needs a properly pre-faulted dst bo. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
parent
ba2255a7e4
commit
733a1d9f34
@ -97,18 +97,28 @@ static void gem_close(int fd, uint32_t handle)
|
||||
assert(ret == 0);
|
||||
}
|
||||
|
||||
static void set_domain(int fd, uint32_t handle)
|
||||
{
|
||||
struct drm_i915_gem_set_domain set_domain;
|
||||
int ret;
|
||||
|
||||
set_domain.handle = handle;
|
||||
set_domain.read_domains = I915_GEM_DOMAIN_GTT;
|
||||
set_domain.write_domain = I915_GEM_DOMAIN_GTT;
|
||||
|
||||
ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_SET_DOMAIN, &set_domain);
|
||||
assert(ret == 0);
|
||||
}
|
||||
|
||||
static void *
|
||||
create_pointer(int fd)
|
||||
mmap_bo(int fd, uint32_t handle)
|
||||
{
|
||||
struct drm_i915_gem_mmap_gtt arg;
|
||||
uint32_t handle;
|
||||
void *ptr;
|
||||
int ret;
|
||||
|
||||
memset(&arg, 0, sizeof(arg));
|
||||
|
||||
handle = gem_create(fd, OBJECT_SIZE);
|
||||
|
||||
arg.handle = handle;
|
||||
ret = ioctl(fd, DRM_IOCTL_I915_GEM_MMAP_GTT, &arg);
|
||||
assert(ret == 0);
|
||||
@ -117,6 +127,19 @@ create_pointer(int fd)
|
||||
MAP_SHARED, fd, arg.offset);
|
||||
assert(ptr != MAP_FAILED);
|
||||
|
||||
return ptr;
|
||||
}
|
||||
|
||||
static void *
|
||||
create_pointer(int fd)
|
||||
{
|
||||
uint32_t handle;
|
||||
void *ptr;
|
||||
|
||||
handle = gem_create(fd, OBJECT_SIZE);
|
||||
|
||||
ptr = mmap_bo(fd, handle);
|
||||
|
||||
gem_close(fd, handle);
|
||||
|
||||
return ptr;
|
||||
@ -154,6 +177,29 @@ test_write(int fd)
|
||||
munmap(src, OBJECT_SIZE);
|
||||
}
|
||||
|
||||
static void
|
||||
test_write_gtt(int fd)
|
||||
{
|
||||
uint32_t dst;
|
||||
char *dst_gtt;
|
||||
void *src;
|
||||
|
||||
dst = gem_create(fd, OBJECT_SIZE);
|
||||
|
||||
/* prefault object into gtt */
|
||||
dst_gtt = mmap_bo(fd, dst);
|
||||
set_domain(fd, dst);
|
||||
memset(dst_gtt, 0, OBJECT_SIZE);
|
||||
munmap(dst_gtt, OBJECT_SIZE);
|
||||
|
||||
src = create_pointer(fd);
|
||||
|
||||
gem_write(fd, dst, 0, src, OBJECT_SIZE);
|
||||
|
||||
gem_close(fd, dst);
|
||||
munmap(src, OBJECT_SIZE);
|
||||
}
|
||||
|
||||
static void
|
||||
test_read(int fd)
|
||||
{
|
||||
@ -179,6 +225,7 @@ int main(int argc, char **argv)
|
||||
test_copy(fd);
|
||||
test_read(fd);
|
||||
test_write(fd);
|
||||
test_write_gtt(fd);
|
||||
|
||||
close(fd);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user