   
       screen->driver = dlopen(filename, RTLD_LAZY | RTLD_LOCAL);
       if (screen->driver == NULL) {
+diff --exclude '*~' -rc xorg-server-1.5.3-orig/glx/glxdriswrast.c xorg-server-1.5.3/glx/glxdriswrast.c
+*** xorg-server-1.5.3-orig/glx/glxdriswrast.c	2008-11-05 17:52:17.000000000 +0100
+--- xorg-server-1.5.3/glx/glxdriswrast.c	2009-09-02 23:12:19.000000000 +0200
+***************
+*** 470,477 ****
+      screen->base.swapInterval   = NULL;
+      screen->base.pScreen       = pScreen;
+  
+      snprintf(filename, sizeof filename,
+! 	     "%s/%s_dri.so", dri_driver_path, driverName);
+  
+      screen->driver = dlopen(filename, RTLD_LAZY | RTLD_LOCAL);
+      if (screen->driver == NULL) {
+--- 470,480 ----
+      screen->base.swapInterval   = NULL;
+      screen->base.pScreen       = pScreen;
+  
++     char *real_dri_driver_path = getenv("XORG_DRI_DRIVER_PATH");
++     if (!real_dri_driver_path) real_dri_driver_path = dri_driver_path;
++ 
+      snprintf(filename, sizeof filename,
+! 	     "%s/%s_dri.so", real_dri_driver_path, driverName);
+  
+      screen->driver = dlopen(filename, RTLD_LAZY | RTLD_LOCAL);
+      if (screen->driver == NULL) {

  
      screen->driver = dlopen(filename, RTLD_LAZY | RTLD_LOCAL);
      if (screen->driver == NULL) {
--- 945,955 ----
  	goto handle_error;
      }
  

diff --exclude '*~' -rc xorg-server-1.5.3-orig/glx/glxdri.c xorg-server-1.5.3/glx/glxdri.c
*** xorg-server-1.5.3-orig/glx/glxdri.c	2008-11-05 19:48:30.000000000 +0100
--- xorg-server-1.5.3/glx/glxdri.c	2009-09-02 23:11:06.000000000 +0200
***************
*** 1013,1020 ****
  	goto handle_error;
      }
  
