From 9ea36968d3f62251bf6327ea4b4417f7dadcf7c9 Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Wed, 2 Feb 2022 09:46:55 -0800 Subject: [PATCH] freedreno/drm: Add fd_device_open() helper Signed-off-by: Rob Clark Part-of: --- src/freedreno/computerator/main.c | 6 +----- src/freedreno/drm/freedreno_device.c | 14 ++++++++++++++ src/freedreno/drm/freedreno_drmif.h | 1 + src/freedreno/perfcntrs/fdperf.c | 7 +++---- 4 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/freedreno/computerator/main.c b/src/freedreno/computerator/main.c index 0468380..6c4f145 100644 --- a/src/freedreno/computerator/main.c +++ b/src/freedreno/computerator/main.c @@ -236,11 +236,7 @@ main(int argc, char **argv) } } - int fd = drmOpenWithType("msm", NULL, DRM_NODE_RENDER); - if (fd < 0) - err(1, "could not open drm device"); - - struct fd_device *dev = fd_device_new(fd); + struct fd_device *dev = fd_device_open(); struct fd_pipe *pipe = fd_pipe_new(dev, FD_PIPE_3D); const struct fd_dev_id *dev_id = fd_pipe_dev_id(pipe); diff --git a/src/freedreno/drm/freedreno_device.c b/src/freedreno/drm/freedreno_device.c index 31c306f..0a3ebb4 100644 --- a/src/freedreno/drm/freedreno_device.c +++ b/src/freedreno/drm/freedreno_device.c @@ -106,6 +106,20 @@ fd_device_new_dup(int fd) return dev; } +/* Convenience helper to open the drm device and return new fd_device: + */ +struct fd_device * +fd_device_open(void) +{ + int fd; + + fd = drmOpenWithType("msm", NULL, DRM_NODE_RENDER); + if (fd < 0) + return NULL; + + return fd_device_new(fd); +} + struct fd_device * fd_device_ref(struct fd_device *dev) { diff --git a/src/freedreno/drm/freedreno_drmif.h b/src/freedreno/drm/freedreno_drmif.h index 074f475..85c1a77 100644 --- a/src/freedreno/drm/freedreno_drmif.h +++ b/src/freedreno/drm/freedreno_drmif.h @@ -115,6 +115,7 @@ struct fd_fence { struct fd_device *fd_device_new(int fd); struct fd_device *fd_device_new_dup(int fd); +struct fd_device *fd_device_open(void); struct fd_device *fd_device_ref(struct fd_device *dev); void fd_device_purge(struct fd_device *dev); void fd_device_del(struct fd_device *dev); diff --git a/src/freedreno/perfcntrs/fdperf.c b/src/freedreno/perfcntrs/fdperf.c index 34a7d43..52fecfe 100644 --- a/src/freedreno/perfcntrs/fdperf.c +++ b/src/freedreno/perfcntrs/fdperf.c @@ -118,13 +118,12 @@ delta(uint32_t a, uint32_t b) static void find_device(void) { - int ret, fd; + int ret; - fd = drmOpenWithType("msm", NULL, DRM_NODE_RENDER); - if (fd < 0) + dev.dev = fd_device_open(); + if (!dev.dev) err(1, "could not open drm device"); - dev.dev = fd_device_new(fd); dev.pipe = fd_pipe_new(dev.dev, FD_PIPE_3D); uint64_t val; -- 2.7.4