diff options
author | Gerd Hoffmann <kraxel@redhat.com> | 2019-12-02 11:51:27 +0100 |
---|---|---|
committer | Gerd Hoffmann <kraxel@redhat.com> | 2019-12-02 11:51:27 +0100 |
commit | 55a27b58035f9ae644913a3feb337315b17f86e2 (patch) | |
tree | 195c699684e0af1369f59c67c8b88b111cfc4c26 | |
parent | c9f399d8354fd72a950d112711e59ccf13f02a78 (diff) | |
download | drminfo-55a27b58035f9ae644913a3feb337315b17f86e2.tar.gz |
some vgem bits
-rw-r--r-- | drmtest.c | 12 | ||||
-rw-r--r-- | drmtools.c | 23 | ||||
-rw-r--r-- | drmtools.h | 1 |
3 files changed, 35 insertions, 1 deletions
@@ -336,6 +336,7 @@ static void usage(FILE *fp) " -p pixman mode\n" " -a autotest mode (don't print hardware info)\n" " -d run dma-buf tests\n" + " -v vgem dma-buf import test\n" " -c <nr> pick card\n" " -o <name> pick output\n" " -s <secs> set sleep time (default: 60)\n" @@ -352,17 +353,19 @@ int main(int argc, char **argv) int card = 0; int secs = 60; int lease_fd = -1; + int vgem_fd = -1; char *output = NULL; char *format = NULL; char *modename = NULL; bool dmabuf = false; bool autotest = false; bool pixman = false; + bool vgem = false; int updatetest = 0; int c,i,pid,rc; for (;;) { - c = getopt(argc, argv, "hpdau:L:c:s:o:i:f:m:"); + c = getopt(argc, argv, "hpdavu:L:c:s:o:i:f:m:"); if (c == -1) break; switch (c) { @@ -376,6 +379,9 @@ int main(int argc, char **argv) case 'a': autotest = true; break; + case 'v': + vgem = true; + break; case 'u': updatetest = atoi(optarg); break; @@ -435,6 +441,10 @@ int main(int argc, char **argv) drm_init_dev(card, output, modename, false, lease_fd); drm_get_caps(); + if (vgem) { + vgem_fd = drm_init_vgem(); + } + if (!fmt) { /* find first supported in list */ for (i = 0; i < fmtcnt; i++) { @@ -813,6 +813,29 @@ void drm_init_dev(int devnr, const char *output, scrtc = drmModeGetCrtc(drm_fd, drm_enc->crtc_id); } +int drm_init_vgem(void) +{ + char dev[64]; + drmVersion *ver; + int fd, i; + + for (i = 0; i < 128; i++) { + snprintf(dev, sizeof(dev), "/dev/dri/renderD%d", i + 128); + fd = device_open(dev); + if (fd < 0) + goto out; + ver = drmGetVersion(fd); + fprintf(stderr, "%d: %s\n", i, ver->name); + if (strcmp(ver->name, "vgem") == 0) + return fd; + close(fd); + } + +out: + fprintf(stderr, "vgem not found, driver not loaded?\n"); + exit(1); +} + void drm_fini_dev(void) { /* restore crtc */ @@ -44,6 +44,7 @@ extern drmVersion *version; void drm_init_dev(int devnr, const char *output, const char *modename, bool need_dumb, int lease_fd); +int drm_init_vgem(void); void drm_fini_dev(void); void drm_show_fb(void); |