}
}
- 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);
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)
{
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);
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;