igt/gem_evict_everything: Compute number of surfaces to saturate the aperture
authorChris Wilson <chris@chris-wilson.co.uk>
Thu, 5 Jun 2014 12:19:39 +0000 (13:19 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Thu, 5 Jun 2014 12:34:02 +0000 (13:34 +0100)
The goal is to only fill the aperture, not all of memory, so fine-tune
the computed number of surfaces, hopefully avoiding an integer overflow
in the process.

References: https://bugs.freedesktop.org/show_bug.cgi?id=79573
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
tests/eviction_common.c

index f02326b..6c6eab4 100644 (file)
@@ -74,9 +74,9 @@ static int minor_evictions(int fd, struct igt_eviction_test_ops *ops,
        nr_surfaces *= 7;
        nr_surfaces += 3;
 
-       total_surfaces = (uint64_t)intel_get_total_ram_mb() * 9 /10 * 1024 *1024 / surface_size;
+       total_surfaces = gem_aperture_size(fd) / surface_size + 1;
        igt_require(nr_surfaces < total_surfaces);
-       igt_require(total_surfaces * surface_size > gem_aperture_size(fd));
+       igt_require(intel_check_memory(total_surfaces, surface_size, CHECK_RAM));
 
        bo = malloc((nr_surfaces + total_surfaces)*sizeof(*bo));
        igt_assert(bo);