diff options
author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2011-11-01 11:52:53 +0100 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2011-11-01 11:52:53 +0100 |
commit | 6b4f5c7ad84cac32151e9acd0c1692b74cf33fb2 (patch) | |
tree | ad71047705c9c441bf9ebd6c112ee15be14ea10a | |
parent | 7c8d41f4d959ee5f09c76272589f4e9b7872af52 (diff) |
tests/gem_largeobject: accomodate for puny apertures
... like on my i855gm.
Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-rw-r--r-- | tests/gem_largeobject.c | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/tests/gem_largeobject.c b/tests/gem_largeobject.c index 72f6b1e..f7973bd 100644 --- a/tests/gem_largeobject.c +++ b/tests/gem_largeobject.c @@ -43,19 +43,38 @@ unsigned char data[OBJ_SIZE]; +static uint64_t +gem_aperture_size(int fd) +{ + struct drm_i915_gem_get_aperture aperture; + + aperture.aper_size = 512*1024*1024; + (void)drmIoctl(fd, DRM_IOCTL_I915_GEM_GET_APERTURE, &aperture); + return aperture.aper_size; +} + static void test_large_object(int fd) { struct drm_i915_gem_create create; struct drm_i915_gem_pwrite pwrite; struct drm_i915_gem_pin pin; + uint32_t obj_size; int ret; memset(&create, 0, sizeof(create)); memset(&pwrite, 0, sizeof(pwrite)); memset(&pin, 0, sizeof(pin)); - create.size = OBJ_SIZE; + if (gem_aperture_size(fd)*3/4 < OBJ_SIZE/2) + obj_size = OBJ_SIZE / 4; + else if (gem_aperture_size(fd)*3/4 < OBJ_SIZE) + obj_size = OBJ_SIZE / 2; + else + obj_size = OBJ_SIZE; + create.size = obj_size; + printf("obj size %i\n", obj_size); + ret = ioctl(fd, DRM_IOCTL_I915_GEM_CREATE, &create); if (ret) { fprintf(stderr, "object creation failed: %s\n", @@ -72,7 +91,7 @@ test_large_object(int fd) } pwrite.handle = create.handle; - pwrite.size = OBJ_SIZE; + pwrite.size = obj_size; pwrite.data_ptr = (uint64_t)data; ret = ioctl(fd, DRM_IOCTL_I915_GEM_PWRITE, &pwrite); |