freedreno/drm: Add fd_device_open() helper
authorRob Clark <robdclark@chromium.org>
Wed, 2 Feb 2022 17:46:55 +0000 (09:46 -0800)
committerMarge Bot <emma+marge@anholt.net>
Fri, 25 Mar 2022 02:03:30 +0000 (02:03 +0000)
Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14900>

src/freedreno/computerator/main.c
src/freedreno/drm/freedreno_device.c
src/freedreno/drm/freedreno_drmif.h
src/freedreno/perfcntrs/fdperf.c

index 0468380..6c4f145 100644 (file)
@@ -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);
index 31c306f..0a3ebb4 100644 (file)
@@ -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)
 {
index 074f475..85c1a77 100644 (file)
@@ -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);
index 34a7d43..52fecfe 100644 (file)
@@ -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;