lib/drmtest: extract mappable aperture trasher infrastructure

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
Daniel Vetter
2012-01-15 18:32:11 +01:00
parent 7b14b093d4
commit d75d69d0a9
3 changed files with 55 additions and 34 deletions
+41
View File
@@ -289,6 +289,7 @@ uint64_t gem_mappable_aperture_size(void)
return pci_dev->regions[bar].size;
}
/* signal interrupt helpers */
static pid_t signal_helper = -1;
long long int sig_stat;
static void signal_helper_process(pid_t pid)
@@ -330,3 +331,43 @@ void drmtest_stop_signal_helper(void)
signal_helper = -1;
}
/* mappable aperture trasher helper */
drm_intel_bo **trash_bos;
int num_trash_bos;
void drmtest_init_aperture_trashers(drm_intel_bufmgr *bufmgr)
{
int i;
num_trash_bos = gem_mappable_aperture_size() / (1024*1024);
trash_bos = malloc(num_trash_bos * sizeof(drm_intel_bo *));
assert(trash_bos);
for (i = 0; i < num_trash_bos; i++)
trash_bos[i] = drm_intel_bo_alloc(bufmgr, "trash bo", 1024*1024, 4096);
}
void drmtest_trash_aperture(void)
{
int i;
uint8_t *gtt_ptr;
for (i = 0; i < num_trash_bos; i++) {
drm_intel_gem_bo_map_gtt(trash_bos[i]);
gtt_ptr = trash_bos[i]->virtual;
*gtt_ptr = 0;
drm_intel_gem_bo_unmap_gtt(trash_bos[i]);
}
}
void drmtest_cleanup_aperture_trashers(void)
{
int i;
for (i = 0; i < num_trash_bos; i++)
drm_intel_bo_unreference(trash_bos[i]);
free(trash_bos);
}
+8
View File
@@ -32,12 +32,14 @@
#include <errno.h>
#include "xf86drm.h"
#include "intel_batchbuffer.h"
int drm_open_any(void);
int drm_open_any_master(void);
void gem_quiescent_gpu(int fd);
/* ioctl wrappers and similar stuff for bare metal testing */
void gem_set_tiling(int fd, uint32_t handle, int tiling, int stride);
void gem_close(int fd, uint32_t handle);
void gem_write(int fd, uint32_t handle, uint32_t offset, const void *buf, uint32_t size);
@@ -50,5 +52,11 @@ 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);
/* generally useful helpers */
void drmtest_fork_signal_helper(void);
void drmtest_stop_signal_helper(void);
/* helpers based upon the libdrm buffer manager */
void drmtest_init_aperture_trashers(drm_intel_bufmgr *bufmgr);
void drmtest_trash_aperture(void);
void drmtest_cleanup_aperture_trashers(void);