summaryrefslogtreecommitdiffstats
path: root/src/egl/drivers/dri2/platform_x11.c
diff options
context:
space:
mode:
authorEmil Velikov <emil.l.velikov@gmail.com>2015-07-29 17:19:06 +0100
committerEmil Velikov <emil.l.velikov@gmail.com>2015-08-07 19:16:10 +0100
commit45e110bad9d5d31eb67d7d32937aa5a752108df8 (patch)
tree470d493e8b3d547bad8219891dd491ad67086fcd /src/egl/drivers/dri2/platform_x11.c
parentfaf0f811e3f9fb724a89c463c0cb6a0d61715f95 (diff)
downloadexternal_mesa3d-45e110bad9d5d31eb67d7d32937aa5a752108df8.zip
external_mesa3d-45e110bad9d5d31eb67d7d32937aa5a752108df8.tar.gz
external_mesa3d-45e110bad9d5d31eb67d7d32937aa5a752108df8.tar.bz2
egl/x11: trust our loader over the xserver for the drivername
This is a port of commit 7bd95ec437a(dri2: Trust our own driver name lookup over the server's.) from glx/dri2. v2: Add newline between code and multiline comment. (Matt) Cc: Julien Isorce <julien.isorce@gmail.com> Reported-by: Julien Isorce <julien.isorce@gmail.com> Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com> Acked-by: Alex Deucher <alexander.deucher@amd.com> Reviewed-by: Eric Anholt <eric@anholt.net>
Diffstat (limited to 'src/egl/drivers/dri2/platform_x11.c')
-rw-r--r--src/egl/drivers/dri2/platform_x11.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/egl/drivers/dri2/platform_x11.c b/src/egl/drivers/dri2/platform_x11.c
index 745e16a..a251694 100644
--- a/src/egl/drivers/dri2/platform_x11.c
+++ b/src/egl/drivers/dri2/platform_x11.c
@@ -519,7 +519,7 @@ dri2_x11_connect(struct dri2_egl_display *dri2_dpy)
xcb_generic_error_t *error;
xcb_screen_iterator_t s;
xcb_screen_t *screen;
- char *driver_name, *device_name;
+ char *driver_name, *loader_driver_name, *device_name;
const xcb_query_extension_reply_t *extension;
xcb_prefetch_extension_data (dri2_dpy->conn, &xcb_xfixes_id);
@@ -596,6 +596,16 @@ dri2_x11_connect(struct dri2_egl_display *dri2_dpy)
}
driver_name = xcb_dri2_connect_driver_name (connect);
+
+ /* If Mesa knows about the appropriate driver for this fd, then trust it.
+ * Otherwise, default to the server's value.
+ */
+ loader_driver_name = loader_get_driver_for_fd(dri2_dpy->fd, 0);
+ if (loader_driver_name) {
+ free(driver_name);
+ driver_name = loader_driver_name;
+ }
+
dri2_dpy->driver_name =
strndup(driver_name,
xcb_dri2_connect_driver_name_length(connect));