Mesa (main): loader: add function to get render node from dev_t
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Nov 26 20:00:50 UTC 2021
Module: Mesa
Branch: main
Commit: a25d4dd27615ff1ff2390402de57213ca35600a1
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=a25d4dd27615ff1ff2390402de57213ca35600a1
Author: Leandro Ribeiro <leandro.ribeiro at collabora.com>
Date: Mon Nov 15 13:50:50 2021 -0300
loader: add function to get render node from dev_t
Add function loader_get_render_node() to help us to get a render node
from dev_t. If the device does not expose a render node, this new
function returns NULL.
As this function uses drmGetDeviceFromDevId(), we bump libdrm minimal
version to 2.4.109.
Signed-off-by: Leandro Ribeiro <leandro.ribeiro at collabora.com>
Reviewed-by: Daniel Stone <daniels at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11248>
---
meson.build | 13 +------------
src/loader/loader.c | 26 ++++++++++++++++++++++++++
src/loader/loader.h | 4 ++++
3 files changed, 31 insertions(+), 12 deletions(-)
diff --git a/meson.build b/meson.build
index 9b4e5e28864..d249418ea60 100644
--- a/meson.build
+++ b/meson.build
@@ -1584,7 +1584,7 @@ _drm_amdgpu_ver = '2.4.107'
_drm_radeon_ver = '2.4.71'
_drm_nouveau_ver = '2.4.102'
_drm_intel_ver = '2.4.75'
-_drm_ver = '2.4.81'
+_drm_ver = '2.4.109'
_libdrm_checks = [
['intel', with_dri_i915 or with_gallium_i915],
@@ -1594,17 +1594,6 @@ _libdrm_checks = [
['nouveau', (with_gallium_nouveau or with_dri_nouveau)],
]
-# VC4 only needs core libdrm support of this version, not a libdrm_vc4
-# library.
-if with_gallium_vc4
- _drm_ver = '2.4.89'
-endif
-
-# etnaviv only needs core libdrm
-if with_gallium_etnaviv
- _drm_ver = '2.4.89'
-endif
-
# Loop over the enables versions and get the highest libdrm requirement for all
# active drivers.
_drm_blame = ''
diff --git a/src/loader/loader.c b/src/loader/loader.c
index 945c99fb4bf..c9a499c6fc2 100644
--- a/src/loader/loader.c
+++ b/src/loader/loader.c
@@ -178,6 +178,26 @@ loader_open_render_node(const char *name)
return fd;
}
+char *
+loader_get_render_node(dev_t device)
+{
+ char *render_node = NULL;
+ drmDevicePtr dev_ptr;
+
+ if (drmGetDeviceFromDevId(device, 0, &dev_ptr) < 0)
+ return NULL;
+
+ if (dev_ptr->available_nodes & (1 << DRM_NODE_RENDER)) {
+ render_node = strdup(dev_ptr->nodes[DRM_NODE_RENDER]);
+ if (!render_node)
+ log_(_LOADER_DEBUG, "MESA-LOADER: failed to allocate memory for render node\n");
+ }
+
+ drmFreeDevice(&dev_ptr);
+
+ return render_node;
+}
+
#ifdef USE_DRICONF
static const driOptionDescription __driConfigOptionsLoader[] = {
DRI_CONF_SECTION_INITIALIZATION
@@ -376,6 +396,12 @@ loader_open_render_node(const char *name)
return -1;
}
+char *
+loader_get_render_node(dev_t device)
+{
+ return NULL;
+}
+
int loader_get_user_preferred_fd(int default_fd, bool *different_device)
{
*different_device = false;
diff --git a/src/loader/loader.h b/src/loader/loader.h
index 8ce001cb7e6..0305e27dffa 100644
--- a/src/loader/loader.h
+++ b/src/loader/loader.h
@@ -28,6 +28,7 @@
#define LOADER_H
#include <stdbool.h>
+#include <sys/stat.h>
#ifdef __cplusplus
extern "C" {
@@ -43,6 +44,9 @@ loader_open_device(const char *);
int
loader_open_render_node(const char *name);
+char *
+loader_get_render_node(dev_t device);
+
bool
loader_get_pci_id_for_fd(int fd, int *vendor_id, int *chip_id);
More information about the mesa-commit
mailing list