Module: Mesa
Branch: main
Commit: e10d8cd5dd2bd1ea5a0475d0c2160255f94643c1
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e10d8cd5dd2bd1ea5a0475d0c2160255f94643c1

Author: Leandro Ribeiro <[email protected]>
Date:   Thu Sep 21 22:01:32 2023 -0300

loader: add loader_is_device_render_capable()

Add helper function to check if a device is render-capable.

Signed-off-by: Leandro Ribeiro <[email protected]>
Reviewed-by: Simon Ser <[email protected]>
Reviewed-by: Daniel Stone <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24825>

---

 src/loader/loader.c | 16 ++++++++++++++++
 src/loader/loader.h |  3 +++
 2 files changed, 19 insertions(+)

diff --git a/src/loader/loader.c b/src/loader/loader.c
index 4abb5649fa1..4b8f532fe74 100644
--- a/src/loader/loader.c
+++ b/src/loader/loader.c
@@ -192,6 +192,22 @@ loader_open_render_node_platform_device(const char * const 
drivers[],
    return fd;
 }
 
+bool
+loader_is_device_render_capable(int fd)
+{
+   drmDevicePtr dev_ptr;
+   bool ret;
+
+   if (drmGetDevice2(fd, 0, &dev_ptr) != 0)
+      return false;
+
+   ret = (dev_ptr->available_nodes & (1 << DRM_NODE_RENDER));
+
+   drmFreeDevice(&dev_ptr);
+
+   return ret;
+}
+
 char *
 loader_get_render_node(dev_t device)
 {
diff --git a/src/loader/loader.h b/src/loader/loader.h
index 9c50c91d2a7..8cbfb1afc00 100644
--- a/src/loader/loader.h
+++ b/src/loader/loader.h
@@ -50,6 +50,9 @@ int
 loader_open_render_node_platform_device(const char * const drivers[],
                                         unsigned int n_drivers);
 
+bool
+loader_is_device_render_capable(int fd);
+
 char *
 loader_get_render_node(dev_t device);
 

Reply via email to