pipe-loader: use radeonsi for MM if amdgpu dri is used
authorJeremy Newton <Jeremy.Newton@amd.com>
Wed, 10 Jul 2019 14:23:53 +0000 (10:23 -0400)
committerMarek Olšák <marek.olsak@amd.com>
Fri, 19 Jul 2019 23:59:02 +0000 (19:59 -0400)
The amdgpu dri is used for the closed source AMD driver. Since this driver
does not implement multimedia, we fall back to radeonsi in mesa to do
multimedia. This corrects the dri driver name for when it is set to amdgpu.

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com> (v1)
Signed-off-by: Jeremy Newton <Jeremy.Newton@amd.com>
Signed-off-by: Marek Olšák <marek.olsak@amd.com>
src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c

index 960d63b2c31fa0d6f4123dea685058df7b4ce3d8..45b941e1f13596c6a7602e06af88763c9855225d 100644 (file)
@@ -194,6 +194,15 @@ pipe_loader_drm_probe_fd_nodup(struct pipe_loader_device **dev, int fd)
    if (!ddev->base.driver_name)
       goto fail;
 
+   /* For the closed source AMD OpenGL driver, we want libgbm to load
+    * "amdgpu_dri.so", but we want Gallium multimedia drivers to load
+    * "radeonsi". So change amdgpu to radeonsi for Gallium.
+    */
+   if (strcmp(ddev->base.driver_name, "amdgpu") == 0) {
+      FREE(ddev->base.driver_name);
+      ddev->base.driver_name = strdup("radeonsi");
+   }
+
    struct util_dl_library **plib = NULL;
 #ifndef GALLIUM_STATIC_TARGETS
    plib = &ddev->lib;