summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2011-11-01 11:52:53 +0100
committerDaniel Vetter <daniel.vetter@ffwll.ch>2011-11-01 11:52:53 +0100
commit6b4f5c7ad84cac32151e9acd0c1692b74cf33fb2 (patch)
treead71047705c9c441bf9ebd6c112ee15be14ea10a
parent7c8d41f4d959ee5f09c76272589f4e9b7872af52 (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.c23
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);