From: Dave Airlie <[email protected]>

This checks the kernel driver name is amdgpu before calling
libdrm_amdgpu.

This avoids the following error:
amdgpu_device_initialize: DRM version is 1.6.0 but this driver is only 
compatible with 3.x.x

when run on a machine with i915 graphics as well as amdgpu.

Signed-off-by: Dave Airlie <[email protected]>
---
 src/amd/vulkan/radv_device.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c
index 3d7ebab..c47ea19 100644
--- a/src/amd/vulkan/radv_device.c
+++ b/src/amd/vulkan/radv_device.c
@@ -32,6 +32,7 @@
 #include "radv_private.h"
 #include "util/strtod.h"
 
+#include <xf86drm.h>
 #include <amdgpu.h>
 #include <amdgpu_drm.h>
 #include "amdgpu_id.h"
@@ -55,6 +56,7 @@ radv_physical_device_init(struct radv_physical_device *device,
                          const char *path)
 {
        VkResult result;
+       drmVersionPtr version;
        int fd;
 
        fd = open(path, O_RDWR | O_CLOEXEC);
@@ -62,6 +64,18 @@ radv_physical_device_init(struct radv_physical_device 
*device,
                return vk_errorf(VK_ERROR_INCOMPATIBLE_DRIVER,
                                 "failed to open %s: %m", path);
 
+       version = drmGetVersion(fd);
+       if (!version)
+               return vk_errorf(VK_ERROR_INCOMPATIBLE_DRIVER,
+                                "failed to get version %s: %m", path);
+
+       if (strcmp(version->name, "amdgpu")) {
+               drmFreeVersion(version);
+               close(fd);
+               return VK_ERROR_INCOMPATIBLE_DRIVER;
+       }
+       drmFreeVersion(version);
+
        device->_loader_data.loaderMagic = ICD_LOADER_MAGIC;
        device->instance = instance;
        assert(strlen(path) < ARRAY_SIZE(device->path));
-- 
2.5.5

_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to