--- /dev/null
+commit 339af2ae943d943f8ce986fc7bdcb8aa52b44922
+Author: Eric Anholt <eric@anholt.net>
+Date: Tue Oct 22 14:22:04 2013 -0700
+
+ glx: Add support for the new DRI loader entrypoint.
+
+ This is going to be exposed (and not the old entrypoint) for some DRI
+ drivers once the megadrivers series lands, and the plan is to
+ eventually transition all drivers to that. Hopefully this is
+ unobtrusive enough to merge to stable X servers so that they can be
+ compatible with new Mesa versions.
+
+ v2: typo fix in the comment
+
+ Signed-off-by: Eric Anholt <eric@anholt.net>
+ Reviewed-by: Adam Jackson <ajax@redhat.com>
+ Signed-off-by: Keith Packard <keithp@keithp.com>
+
+diff --git a/glx/glxdricommon.c b/glx/glxdricommon.c
+index c90f380..5686c5f 100644
+--- a/glx/glxdricommon.c
++++ b/glx/glxdricommon.c
+@@ -209,6 +209,14 @@ glxConvertConfigs(const __DRIcoreExtension * core,
+
+ static const char dri_driver_path[] = DRI_DRIVER_PATH;
+
++/* Temporary define to allow building without a dri_interface.h from
++ * updated Mesa. Some day when we don't care about Mesa that old any
++ * more this can be removed.
++ */
++#ifndef __DRI_DRIVER_GET_EXTENSIONS
++#define __DRI_DRIVER_GET_EXTENSIONS "__driDriverGetExtensions"
++#endif
++
+ void *
+ glxProbeDriver(const char *driverName,
+ void **coreExt, const char *coreName, int coreVersion,
+@@ -217,7 +225,8 @@ glxProbeDriver(const char *driverName,
+ int i;
+ void *driver;
+ char filename[PATH_MAX];
+- const __DRIextension **extensions;
++ char *get_extensions_name;
++ const __DRIextension **extensions = NULL;
+
+ snprintf(filename, sizeof filename, "%s/%s_dri.so",
+ dri_driver_path, driverName);
+@@ -229,7 +238,18 @@ glxProbeDriver(const char *driverName,
+ goto cleanup_failure;
+ }
+
+- extensions = dlsym(driver, __DRI_DRIVER_EXTENSIONS);
++ if (asprintf(&get_extensions_name, "%s_%s",
++ __DRI_DRIVER_GET_EXTENSIONS, driverName) != -1) {
++ const __DRIextension **(*get_extensions)(void);
++
++ get_extensions = dlsym(driver, get_extensions_name);
++ if (get_extensions)
++ extensions = get_extensions();
++ free(get_extensions_name);
++ }
++
++ if (!extensions)
++ extensions = dlsym(driver, __DRI_DRIVER_EXTENSIONS);
+ if (extensions == NULL) {
+ LogMessage(X_ERROR, "AIGLX error: %s exports no extensions (%s)\n",
+ driverName, dlerror());