diff --git a/lib/drmtest.c b/lib/drmtest.c index 6ee602cd..40f3ac58 100644 --- a/lib/drmtest.c +++ b/lib/drmtest.c @@ -32,10 +32,12 @@ #include #include #include +#include #include "drmtest.h" #include "i915_drm.h" #include "intel_chipset.h" +#include "intel_gpu_tools.h" /* This file contains a bunch of wrapper functions to directly use gem ioctls. * Mostly useful to write kernel tests. */ @@ -58,7 +60,6 @@ is_intel(int fd) /* Ensure the gpu is idle by launching a nop execbuf and stalling for it. */ void gem_quiescent_gpu(int fd) { -#define MI_BATCH_BUFFER_END (0xA<<23) uint32_t batch[2] = {MI_BATCH_BUFFER_END, 0}; uint32_t handle; struct drm_i915_gem_execbuffer2 execbuf; @@ -274,6 +275,20 @@ uint64_t gem_aperture_size(int fd) return aperture.aper_size; } +uint64_t gem_mappable_aperture_size(void) +{ + struct pci_device *pci_dev; + int bar; + pci_dev = intel_get_pci_device(); + + if (intel_gen(pci_dev->device_id) < 3) + bar = 0; + else + bar = 2; + + return pci_dev->regions[bar].size; +} + static pid_t signal_helper = -1; long long int sig_stat; static void signal_helper_process(pid_t pid) diff --git a/lib/drmtest.h b/lib/drmtest.h index 9b0e6483..dc69b430 100644 --- a/lib/drmtest.h +++ b/lib/drmtest.h @@ -48,6 +48,7 @@ void gem_sync(int fd, uint32_t handle); uint32_t gem_create(int fd, int size); void *gem_mmap(int fd, uint32_t handle, int size, int prot); uint64_t gem_aperture_size(int fd); +uint64_t gem_mappable_aperture_size(void); void drmtest_fork_signal_helper(void); void drmtest_stop_signal_helper(void);