[Mesa-dev] [PATCH 23/23] targets/dri: convert drm targets to static/pipe-loader

Emil Velikov emil.l.velikov at gmail.com
Sun May 18 00:07:45 PDT 2014


Similar to every other target now we can create a gallium-
megadriver, that includes all the pipe-drivers requested
at configure time statically linked it (default).

As a nice side effect - the msm/kgsl freedreno combo should
work as is - no more need for second dri module :)

One can build the target with shared pipe-drivers (loaded
via the pipe-loader), although they do not (yet) provide
access to $hw_drm_screen_create needed for vdpau-gl interop.

Signed-off-by: Emil Velikov <emil.l.velikov at gmail.com>
---
 configure.ac                                       | 10 +--
 install-gallium-links.mk                           |  5 +-
 src/gallium/Automake.inc                           |  2 +-
 src/gallium/SConscript                             |  2 +-
 src/gallium/state_trackers/dri/common/dri_screen.c | 16 +++-
 src/gallium/state_trackers/dri/common/dri_screen.h |  3 +
 src/gallium/state_trackers/dri/drm/Makefile.am     |  8 ++
 src/gallium/state_trackers/dri/drm/SConscript      |  4 +
 src/gallium/state_trackers/dri/drm/dri2.c          | 30 +++++--
 src/gallium/targets/Makefile.am                    | 51 +-----------
 src/gallium/targets/dri-freedreno/Makefile.am      | 59 --------------
 src/gallium/targets/dri-freedreno/target-kgsl.c    | 20 -----
 src/gallium/targets/dri-freedreno/target-msm.c     | 20 -----
 src/gallium/targets/dri-i915/Makefile.am           | 59 --------------
 src/gallium/targets/dri-i915/target.c              | 29 -------
 src/gallium/targets/dri-ilo/Makefile.am            | 52 ------------
 src/gallium/targets/dri-ilo/target.c               | 44 -----------
 src/gallium/targets/dri-nouveau/Makefile.am        | 52 ------------
 src/gallium/targets/dri-nouveau/nouveau_dri.dyn    |  3 -
 src/gallium/targets/dri-nouveau/target.c           | 36 ---------
 src/gallium/targets/dri-vmwgfx/Makefile.am         | 51 ------------
 src/gallium/targets/dri-vmwgfx/SConscript          | 33 --------
 src/gallium/targets/dri-vmwgfx/target.c            | 52 ------------
 src/gallium/targets/dri-vmwgfx/vmw_powf.c          | 17 ----
 src/gallium/targets/dri.sym                        |  8 --
 src/gallium/targets/dri/Makefile.am                | 92 ++++++++++++++++++++++
 src/gallium/targets/dri/SConscript                 | 42 ++++++++++
 src/gallium/targets/dri/dri.sym                    |  8 ++
 src/gallium/targets/dri/target.c                   |  1 +
 src/gallium/targets/r300/common/drm_target.c       | 68 ----------------
 src/gallium/targets/r300/dri/Makefile.am           | 54 -------------
 src/gallium/targets/r300/dri/drm_target.c          |  1 -
 src/gallium/targets/r300/dri/radeon.dyn            |  3 -
 src/gallium/targets/r600/common/drm_target.c       | 74 -----------------
 src/gallium/targets/r600/dri/Makefile.am           | 56 -------------
 src/gallium/targets/r600/dri/drm_target.c          |  1 -
 src/gallium/targets/radeonsi/common/drm_target.c   | 74 -----------------
 src/gallium/targets/radeonsi/dri/Makefile.am       | 55 -------------
 src/gallium/targets/radeonsi/dri/drm_target.c      |  1 -
 39 files changed, 207 insertions(+), 989 deletions(-)
 delete mode 100644 src/gallium/targets/dri-freedreno/Makefile.am
 delete mode 100644 src/gallium/targets/dri-freedreno/target-kgsl.c
 delete mode 100644 src/gallium/targets/dri-freedreno/target-msm.c
 delete mode 100644 src/gallium/targets/dri-i915/Makefile.am
 delete mode 100644 src/gallium/targets/dri-i915/target.c
 delete mode 100644 src/gallium/targets/dri-ilo/Makefile.am
 delete mode 100644 src/gallium/targets/dri-ilo/target.c
 delete mode 100644 src/gallium/targets/dri-nouveau/Makefile.am
 delete mode 100644 src/gallium/targets/dri-nouveau/nouveau_dri.dyn
 delete mode 100644 src/gallium/targets/dri-nouveau/target.c
 delete mode 100644 src/gallium/targets/dri-vmwgfx/Makefile.am
 delete mode 100644 src/gallium/targets/dri-vmwgfx/SConscript
 delete mode 100644 src/gallium/targets/dri-vmwgfx/target.c
 delete mode 100644 src/gallium/targets/dri-vmwgfx/vmw_powf.c
 delete mode 100644 src/gallium/targets/dri.sym
 create mode 100644 src/gallium/targets/dri/Makefile.am
 create mode 100644 src/gallium/targets/dri/SConscript
 create mode 100644 src/gallium/targets/dri/dri.sym
 create mode 100644 src/gallium/targets/dri/target.c
 delete mode 100644 src/gallium/targets/r300/common/drm_target.c
 delete mode 100644 src/gallium/targets/r300/dri/Makefile.am
 delete mode 120000 src/gallium/targets/r300/dri/drm_target.c
 delete mode 100644 src/gallium/targets/r300/dri/radeon.dyn
 delete mode 100644 src/gallium/targets/r600/common/drm_target.c
 delete mode 100644 src/gallium/targets/r600/dri/Makefile.am
 delete mode 120000 src/gallium/targets/r600/dri/drm_target.c
 delete mode 100644 src/gallium/targets/radeonsi/common/drm_target.c
 delete mode 100644 src/gallium/targets/radeonsi/dri/Makefile.am
 delete mode 120000 src/gallium/targets/radeonsi/dri/drm_target.c

diff --git a/configure.ac b/configure.ac
index 9e54036..a32cb5d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -794,6 +794,7 @@ esac
 if test "x$enable_dri" = xyes; then
     GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/dri"
     GALLIUM_STATE_TRACKERS_DIRS="dri $GALLIUM_STATE_TRACKERS_DIRS"
+    enable_gallium_loader=yes
 fi
 
 if test "x$enable_gallium_osmesa" = xyes; then
@@ -2134,12 +2135,8 @@ AC_CONFIG_FILES([Makefile
 		src/gallium/state_trackers/xa/Makefile
 		src/gallium/state_trackers/xvmc/Makefile
 		src/gallium/targets/Makefile
-		src/gallium/targets/dri-freedreno/Makefile
-		src/gallium/targets/dri-i915/Makefile
-		src/gallium/targets/dri-ilo/Makefile
-		src/gallium/targets/dri-nouveau/Makefile
+		src/gallium/targets/dri/Makefile
 		src/gallium/targets/dri-swrast/Makefile
-		src/gallium/targets/dri-vmwgfx/Makefile
 		src/gallium/targets/egl-static/Makefile
 		src/gallium/targets/gbm/Makefile
 		src/gallium/targets/omx/Makefile
@@ -2147,9 +2144,6 @@ AC_CONFIG_FILES([Makefile
 		src/gallium/targets/osmesa/Makefile
 		src/gallium/targets/osmesa/osmesa.pc
 		src/gallium/targets/pipe-loader/Makefile
-		src/gallium/targets/radeonsi/dri/Makefile
-		src/gallium/targets/r300/dri/Makefile
-		src/gallium/targets/r600/dri/Makefile
 		src/gallium/targets/libgl-xlib/Makefile
 		src/gallium/targets/vdpau/Makefile
 		src/gallium/targets/xa/Makefile
diff --git a/install-gallium-links.mk b/install-gallium-links.mk
index f45f1b4..78fa711 100644
--- a/install-gallium-links.mk
+++ b/install-gallium-links.mk
@@ -5,15 +5,14 @@ if BUILD_SHARED
 if HAVE_COMPAT_SYMLINKS
 all-local : .libs/install-gallium-links
 
-.libs/install-gallium-links : $(dri_LTLIBRARIES) $(egl_LTLIBRARIES) $(lib_LTLIBRARIES)
+.libs/install-gallium-links : $(egl_LTLIBRARIES) $(lib_LTLIBRARIES)
 	$(AM_V_GEN)$(MKDIR_P) $(top_builddir)/$(LIB_DIR);	\
 	link_dir=$(top_builddir)/$(LIB_DIR)/gallium;		\
 	if test x$(egl_LTLIBRARIES) != x; then			\
 		link_dir=$(top_builddir)/$(LIB_DIR)/egl;	\
 	fi;							\
 	$(MKDIR_P) $$link_dir;					\
-	file_list=$(dri_LTLIBRARIES:%.la=.libs/%.so);		\
-	file_list+=$(egl_LTLIBRARIES:%.la=.libs/%.$(LIB_EXT)*);	\
+	file_list=$(egl_LTLIBRARIES:%.la=.libs/%.$(LIB_EXT)*);	\
 	file_list+=$(lib_LTLIBRARIES:%.la=.libs/%.$(LIB_EXT)*);	\
 	for f in $$file_list; do 				\
 		if test -h .libs/$$f; then			\
diff --git a/src/gallium/Automake.inc b/src/gallium/Automake.inc
index b998ebc..29552a9 100644
--- a/src/gallium/Automake.inc
+++ b/src/gallium/Automake.inc
@@ -57,7 +57,7 @@ GALLIUM_DRI_LINKER_FLAGS = \
 	-shrext .so \
 	-module \
 	-avoid-version \
-	-Wl,--version-script=$(top_srcdir)/src/gallium/targets/dri.sym \
+	-Wl,--version-script=$(top_srcdir)/src/gallium/targets/dri/dri.sym \
 	$(GC_SECTIONS)
 
 GALLIUM_COMMON_LIB_DEPS = \
diff --git a/src/gallium/SConscript b/src/gallium/SConscript
index 816c79c..8ada7e0 100644
--- a/src/gallium/SConscript
+++ b/src/gallium/SConscript
@@ -119,7 +119,7 @@ if not env['embedded']:
     if env['dri']:
         SConscript([
             'targets/dri-swrast/SConscript',
-            'targets/dri-vmwgfx/SConscript',
+            'targets/dri/SConscript',
         ])
 
 
diff --git a/src/gallium/state_trackers/dri/common/dri_screen.c b/src/gallium/state_trackers/dri/common/dri_screen.c
index 7a6dcb2..0d9be1c 100644
--- a/src/gallium/state_trackers/dri/common/dri_screen.c
+++ b/src/gallium/state_trackers/dri/common/dri_screen.c
@@ -37,6 +37,7 @@
 #include "util/u_inlines.h"
 #include "pipe/p_screen.h"
 #include "pipe/p_format.h"
+#include "pipe-loader/pipe_loader.h"
 #include "state_tracker/st_gl_api.h" /* for st_gl_api_create */
 #include "state_tracker/drm_driver.h"
 
@@ -387,6 +388,11 @@ dri_destroy_screen(__DRIscreen * sPriv)
 
    dri_destroy_screen_helper(screen);
 
+#ifndef __NOT_HAVE_DRM_H
+#if !GALLIUM_STATIC_TARGETS
+   pipe_loader_release(&screen->dev, 1);
+#endif
+#endif
    free(screen);
    sPriv->driverPrivate = NULL;
    sPriv->extensions = NULL;
@@ -428,9 +434,17 @@ dri_init_screen_helper(struct dri_screen *screen,
    driParseOptionInfo(&screen->optionCacheDefaults, gallium_config_options.xml);
 
    driParseConfigFiles(&screen->optionCache,
-		       &screen->optionCacheDefaults,
+                       &screen->optionCacheDefaults,
                        screen->sPriv->myNum,
+#ifndef __NOT_HAVE_DRM_H
+#if GALLIUM_STATIC_TARGETS
+                       dd_driver_name());
+#else
+                       screen->dev->driver_name);
+#endif
+#else /* __NOT_HAVE_DRM_H */
                        driver_descriptor.name);
+#endif /* __NOT_HAVE_DRM_H */
 
    /* Handle force_s3tc_enable. */
    if (!util_format_s3tc_enabled &&
diff --git a/src/gallium/state_trackers/dri/common/dri_screen.h b/src/gallium/state_trackers/dri/common/dri_screen.h
index 7c8e582..2d07f51 100644
--- a/src/gallium/state_trackers/dri/common/dri_screen.h
+++ b/src/gallium/state_trackers/dri/common/dri_screen.h
@@ -43,6 +43,7 @@
 
 struct dri_context;
 struct dri_drawable;
+struct pipe_loader_device;
 
 struct dri_screen
 {
@@ -70,6 +71,8 @@ struct dri_screen
    /* drm */
    int fd;
 
+   struct pipe_loader_device *dev;
+
    /* gallium */
    boolean d_depth_bits_last;
    boolean sd_depth_bits_last;
diff --git a/src/gallium/state_trackers/dri/drm/Makefile.am b/src/gallium/state_trackers/dri/drm/Makefile.am
index f41f45d..e6c01a4 100644
--- a/src/gallium/state_trackers/dri/drm/Makefile.am
+++ b/src/gallium/state_trackers/dri/drm/Makefile.am
@@ -24,6 +24,8 @@ include Makefile.sources
 include $(top_srcdir)/src/gallium/Automake.inc
 
 AM_CPPFLAGS = \
+	$(GALLIUM_PIPE_LOADER_DEFINES) \
+	-DPIPE_SEARCH_DIR=\"$(libdir)/gallium-pipe\" \
 	-I$(top_srcdir)/include \
 	-I$(top_srcdir)/src/mapi \
 	-I$(top_srcdir)/src/mesa \
@@ -34,6 +36,12 @@ AM_CPPFLAGS = \
 	$(LIBDRM_CFLAGS) \
 	$(VISIBILITY_CFLAGS)
 
+if HAVE_GALLIUM_STATIC_TARGETS
+AM_CPPFLAGS += \
+	-DGALLIUM_FLEXIBLE_TARGETS=1 \
+	-DGALLIUM_STATIC_TARGETS=1
+endif
+
 noinst_LTLIBRARIES = libdridrm.la
 
 libdridrm_la_SOURCES = $(C_SOURCES)
diff --git a/src/gallium/state_trackers/dri/drm/SConscript b/src/gallium/state_trackers/dri/drm/SConscript
index 07eaa0a..d75f999 100644
--- a/src/gallium/state_trackers/dri/drm/SConscript
+++ b/src/gallium/state_trackers/dri/drm/SConscript
@@ -15,6 +15,10 @@ env.Append(CPPPATH = [
     xmlpool_options.dir.dir, # Dir to generated xmlpool/options.h
 ])
 
+env.Append(CPPDEFINES = [
+    'GALLIUM_STATIC_TARGETS=1'
+])
+
 st_dri = env.ConvenienceLibrary(
     target = 'st_dri',
     source = env.ParseSourceList('Makefile.sources', 'C_SOURCES')
diff --git a/src/gallium/state_trackers/dri/drm/dri2.c b/src/gallium/state_trackers/dri/drm/dri2.c
index 7dccc5e..2c72387 100644
--- a/src/gallium/state_trackers/dri/drm/dri2.c
+++ b/src/gallium/state_trackers/dri/drm/dri2.c
@@ -36,6 +36,7 @@
 #include "state_tracker/drm_driver.h"
 #include "state_tracker/st_texture.h"
 #include "state_tracker/st_context.h"
+#include "pipe-loader/pipe_loader.h"
 #include "main/texobj.h"
 
 #include "dri_screen.h"
@@ -1075,7 +1076,7 @@ dri2_init_screen(__DRIscreen * sPriv)
 {
    const __DRIconfig **configs;
    struct dri_screen *screen;
-   struct pipe_screen *pscreen;
+   struct pipe_screen *pscreen = NULL;
    const struct drm_conf_ret *throttle_ret = NULL;
    const struct drm_conf_ret *dmabuf_ret = NULL;
 
@@ -1088,11 +1089,23 @@ dri2_init_screen(__DRIscreen * sPriv)
 
    sPriv->driverPrivate = (void *)screen;
 
-   pscreen = driver_descriptor.create_screen(screen->fd);
-   if (driver_descriptor.configuration) {
-      throttle_ret = driver_descriptor.configuration(DRM_CONF_THROTTLE);
-      dmabuf_ret = driver_descriptor.configuration(DRM_CONF_SHARE_FD);
-   }
+#if GALLIUM_STATIC_TARGETS
+   pscreen = dd_create_screen(screen->fd);
+   if (!pscreen)
+      goto no_screen;
+
+   throttle_ret = dd_configuration(DRM_CONF_THROTTLE);
+   dmabuf_ret = dd_configuration(DRM_CONF_SHARE_FD);
+#else
+   if (pipe_loader_drm_probe_fd(&screen->dev, screen->fd, true))
+      pscreen = pipe_loader_create_screen(screen->dev, PIPE_SEARCH_DIR);
+
+   if (!pscreen)
+      goto no_screen;
+
+   throttle_ret = pipe_loader_configuration(screen->dev, DRM_CONF_THROTTLE);
+   dmabuf_ret = pipe_loader_configuration(screen->dev, DRM_CONF_SHARE_FD);
+#endif
 
    if (throttle_ret && throttle_ret->val.val_int != -1) {
       screen->throttling_enabled = TRUE;
@@ -1126,6 +1139,11 @@ dri2_init_screen(__DRIscreen * sPriv)
    return configs;
 fail:
    dri_destroy_screen_helper(screen);
+no_screen:
+#if !GALLIUM_STATIC_TARGETS
+   if (screen->dev)
+      pipe_loader_release(&screen->dev, 1);
+#endif
    FREE(screen);
    return NULL;
 }
diff --git a/src/gallium/targets/Makefile.am b/src/gallium/targets/Makefile.am
index 0c779f8..f91d92a 100644
--- a/src/gallium/targets/Makefile.am
+++ b/src/gallium/targets/Makefile.am
@@ -30,6 +30,10 @@ if HAVE_GALLIUM_OSMESA
 SUBDIRS += osmesa
 endif
 
+if HAVE_DRI
+SUBDIRS += dri
+endif
+
 if HAVE_GALLIUM_GBM
 SUBDIRS += gbm
 endif
@@ -54,53 +58,6 @@ if HAVE_CLOVER
 SUBDIRS += opencl
 endif
 
-if HAVE_GALLIUM_SVGA
-if HAVE_DRI
-SUBDIRS += dri-vmwgfx
-endif
-endif
-
-if HAVE_GALLIUM_FREEDRENO
-if HAVE_DRI
-SUBDIRS += dri-freedreno
-endif
-endif
-
-if HAVE_GALLIUM_I915
-if HAVE_DRI
-SUBDIRS += dri-i915
-endif
-endif
-
-if HAVE_GALLIUM_ILO
-if HAVE_DRI
-SUBDIRS += dri-ilo
-endif
-endif
-
-if HAVE_GALLIUM_R300
-if HAVE_DRI
-SUBDIRS += r300/dri
-endif
-endif
-
-if HAVE_GALLIUM_R600
-if HAVE_DRI
-SUBDIRS += r600/dri
-endif
-endif
-
-if HAVE_GALLIUM_RADEONSI
-if HAVE_DRI
-SUBDIRS += radeonsi/dri
-endif
-endif
-
-if HAVE_GALLIUM_NOUVEAU
-if HAVE_DRI
-SUBDIRS += dri-nouveau
-endif
-endif
 
 if HAVE_GALLIUM_SOFTPIPE
 if HAVE_DRI
diff --git a/src/gallium/targets/dri-freedreno/Makefile.am b/src/gallium/targets/dri-freedreno/Makefile.am
deleted file mode 100644
index 23db169..0000000
--- a/src/gallium/targets/dri-freedreno/Makefile.am
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright © 2012 Intel Corporation
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish, distribute, sublicense,
-# and/or sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice (including the next
-# paragraph) shall be included in all copies or substantial portions of the
-# Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-# DEALINGS IN THE SOFTWARE.
-
-include $(top_srcdir)/src/gallium/Automake.inc
-
-AM_CFLAGS = \
-	$(GALLIUM_DRI_CFLAGS)
-AM_CPPFLAGS = \
-	-DGALLIUM_RBUG \
-	-DGALLIUM_TRACE \
-	-DGALLIUM_NOOP
-
-dridir = $(DRI_DRIVER_INSTALL_DIR)
-dri_LTLIBRARIES = kgsl_dri.la msm_dri.la
-
-COMMON_LDFLAGS = $(GALLIUM_DRI_LINKER_FLAGS)
-
-COMMON_LIBADD = \
-	$(top_builddir)/src/mesa/drivers/dri/common/libdricommon.la \
-	$(top_builddir)/src/gallium/state_trackers/dri/drm/libdridrm.la \
-	$(top_builddir)/src/gallium/winsys/freedreno/drm/libfreedrenodrm.la \
-	$(top_builddir)/src/gallium/drivers/freedreno/libfreedreno.la \
-	$(top_builddir)/src/gallium/drivers/trace/libtrace.la \
-	$(top_builddir)/src/gallium/drivers/rbug/librbug.la \
-	$(top_builddir)/src/gallium/drivers/noop/libnoop.la \
-	$(GALLIUM_DRI_LIB_DEPS) \
-	$(LIBDRM_LIBS) \
-	$(FREEDRENO_LIBS)
-
-nodist_EXTRA_kgsl_dri_la_SOURCES = dummy.cpp
-kgsl_dri_la_SOURCES = target-kgsl.c
-kgsl_dri_la_LDFLAGS = $(COMMON_LDFLAGS)
-kgsl_dri_la_LIBADD  = $(COMMON_LIBADD)
-
-nodist_EXTRA_msm_dri_la_SOURCES = dummy.cpp
-msm_dri_la_SOURCES  = target-msm.c
-msm_dri_la_LDFLAGS  = $(COMMON_LDFLAGS)
-msm_dri_la_LIBADD   = $(COMMON_LIBADD)
-
-include $(top_srcdir)/install-gallium-links.mk
diff --git a/src/gallium/targets/dri-freedreno/target-kgsl.c b/src/gallium/targets/dri-freedreno/target-kgsl.c
deleted file mode 100644
index dcaf299..0000000
--- a/src/gallium/targets/dri-freedreno/target-kgsl.c
+++ /dev/null
@@ -1,20 +0,0 @@
-
-#include "target-helpers/inline_debug_helper.h"
-#include "state_tracker/drm_driver.h"
-#include "freedreno/drm/freedreno_drm_public.h"
-
-static struct pipe_screen *
-create_screen(int fd)
-{
-   struct pipe_screen *screen;
-
-   screen = fd_drm_screen_create(fd);
-   if (!screen)
-      return NULL;
-
-   screen = debug_screen_wrap(screen);
-
-   return screen;
-}
-
-DRM_DRIVER_DESCRIPTOR("freedreno", "kgsl", create_screen, NULL)
diff --git a/src/gallium/targets/dri-freedreno/target-msm.c b/src/gallium/targets/dri-freedreno/target-msm.c
deleted file mode 100644
index 4a6299b..0000000
--- a/src/gallium/targets/dri-freedreno/target-msm.c
+++ /dev/null
@@ -1,20 +0,0 @@
-
-#include "target-helpers/inline_debug_helper.h"
-#include "state_tracker/drm_driver.h"
-#include "freedreno/drm/freedreno_drm_public.h"
-
-static struct pipe_screen *
-create_screen(int fd)
-{
-   struct pipe_screen *screen;
-
-   screen = fd_drm_screen_create(fd);
-   if (!screen)
-      return NULL;
-
-   screen = debug_screen_wrap(screen);
-
-   return screen;
-}
-
-DRM_DRIVER_DESCRIPTOR("freedreno", "msm", create_screen, NULL)
diff --git a/src/gallium/targets/dri-i915/Makefile.am b/src/gallium/targets/dri-i915/Makefile.am
deleted file mode 100644
index 6abbcaa..0000000
--- a/src/gallium/targets/dri-i915/Makefile.am
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright © 2012 Intel Corporation
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish, distribute, sublicense,
-# and/or sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice (including the next
-# paragraph) shall be included in all copies or substantial portions of the
-# Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-# DEALINGS IN THE SOFTWARE.
-
-include $(top_srcdir)/src/gallium/Automake.inc
-
-AM_CFLAGS = \
-	$(GALLIUM_DRI_CFLAGS)
-AM_CPPFLAGS = \
-	-DGALLIUM_RBUG \
-	-DGALLIUM_TRACE \
-	-DGALLIUM_GALAHAD \
-	-DGALLIUM_SOFTPIPE
-
-dridir = $(DRI_DRIVER_INSTALL_DIR)
-dri_LTLIBRARIES = i915_dri.la
-
-nodist_EXTRA_i915_dri_la_SOURCES = dummy.cpp
-i915_dri_la_SOURCES = target.c
-
-i915_dri_la_LDFLAGS = $(GALLIUM_DRI_LINKER_FLAGS)
-
-i915_dri_la_LIBADD = \
-	$(top_builddir)/src/mesa/drivers/dri/common/libdricommon.la \
-	$(top_builddir)/src/gallium/state_trackers/dri/drm/libdridrm.la \
-	$(top_builddir)/src/gallium/winsys/i915/drm/libi915drm.la \
-	$(top_builddir)/src/gallium/winsys/sw/wrapper/libwsw.la \
-	$(top_builddir)/src/gallium/drivers/softpipe/libsoftpipe.la \
-	$(top_builddir)/src/gallium/drivers/galahad/libgalahad.la \
-	$(top_builddir)/src/gallium/drivers/trace/libtrace.la \
-	$(top_builddir)/src/gallium/drivers/rbug/librbug.la \
-	$(top_builddir)/src/gallium/drivers/i915/libi915.la \
-	$(GALLIUM_DRI_LIB_DEPS) \
-	$(INTEL_LIBS)
-
-if HAVE_MESA_LLVM
-AM_CPPFLAGS += -DGALLIUM_LLVMPIPE
-i915_dri_la_LIBADD += $(top_builddir)/src/gallium/drivers/llvmpipe/libllvmpipe.la
-endif
-
-include $(top_srcdir)/install-gallium-links.mk
diff --git a/src/gallium/targets/dri-i915/target.c b/src/gallium/targets/dri-i915/target.c
deleted file mode 100644
index 935eb0e..0000000
--- a/src/gallium/targets/dri-i915/target.c
+++ /dev/null
@@ -1,29 +0,0 @@
-
-#include "state_tracker/drm_driver.h"
-#include "target-helpers/inline_wrapper_sw_helper.h"
-#include "target-helpers/inline_debug_helper.h"
-#include "i915/drm/i915_drm_public.h"
-#include "i915/i915_public.h"
-
-static struct pipe_screen *
-create_screen(int fd)
-{
-   struct i915_winsys *iws;
-   struct pipe_screen *screen;
-
-   iws = i915_drm_winsys_create(fd);
-   if (!iws)
-      return NULL;
-
-   screen = i915_screen_create(iws);
-   if (!screen)
-      return NULL;
-
-   screen = sw_screen_wrap(screen);
-
-   screen = debug_screen_wrap(screen);
-
-   return screen;
-}
-
-DRM_DRIVER_DESCRIPTOR("i915", "i915", create_screen, NULL)
diff --git a/src/gallium/targets/dri-ilo/Makefile.am b/src/gallium/targets/dri-ilo/Makefile.am
deleted file mode 100644
index 41eab06..0000000
--- a/src/gallium/targets/dri-ilo/Makefile.am
+++ /dev/null
@@ -1,52 +0,0 @@
-# Copyright © 2012 Intel Corporation
-# Copyright © 2013 LunarG, Inc.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish, distribute, sublicense,
-# and/or sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice (including the next
-# paragraph) shall be included in all copies or substantial portions of the
-# Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-# DEALINGS IN THE SOFTWARE.
-
-include $(top_srcdir)/src/gallium/Automake.inc
-
-AM_CFLAGS = \
-	$(GALLIUM_DRI_CFLAGS)
-AM_CPPFLAGS = \
-	-DGALLIUM_RBUG \
-	-DGALLIUM_TRACE \
-	-DGALLIUM_GALAHAD
-
-dridir = $(DRI_DRIVER_INSTALL_DIR)
-dri_LTLIBRARIES = ilo_dri.la
-
-nodist_EXTRA_ilo_dri_la_SOURCES = dummy.cpp
-ilo_dri_la_SOURCES = target.c
-
-ilo_dri_la_LDFLAGS = $(GALLIUM_DRI_LINKER_FLAGS)
-
-ilo_dri_la_LIBADD = \
-	$(top_builddir)/src/mesa/drivers/dri/common/libdricommon.la \
-	$(top_builddir)/src/gallium/state_trackers/dri/drm/libdridrm.la \
-	$(top_builddir)/src/gallium/winsys/intel/drm/libintelwinsys.la \
-	$(top_builddir)/src/gallium/drivers/galahad/libgalahad.la \
-	$(top_builddir)/src/gallium/drivers/trace/libtrace.la \
-	$(top_builddir)/src/gallium/drivers/rbug/librbug.la \
-	$(top_builddir)/src/gallium/drivers/ilo/libilo.la \
-	$(GALLIUM_DRI_LIB_DEPS) \
-	$(INTEL_LIBS)
-
-include $(top_srcdir)/install-gallium-links.mk
diff --git a/src/gallium/targets/dri-ilo/target.c b/src/gallium/targets/dri-ilo/target.c
deleted file mode 100644
index 3ce75e9..0000000
--- a/src/gallium/targets/dri-ilo/target.c
+++ /dev/null
@@ -1,44 +0,0 @@
-#include "state_tracker/drm_driver.h"
-#include "target-helpers/inline_debug_helper.h"
-#include "intel/intel_winsys.h"
-#include "ilo/ilo_public.h"
-
-static struct pipe_screen *
-create_screen(int fd)
-{
-   struct intel_winsys *iws;
-   struct pipe_screen *screen;
-
-   iws = intel_winsys_create_for_fd(fd);
-   if (!iws)
-      return NULL;
-
-   screen = ilo_screen_create(iws);
-   if (!screen) {
-      intel_winsys_destroy(iws);
-      return NULL;
-   }
-
-   screen = debug_screen_wrap(screen);
-
-   return screen;
-}
-
-
-static const struct drm_conf_ret share_fd_ret = {
-   .type = DRM_CONF_BOOL,
-   .val.val_int = true,
-};
-
-static const struct drm_conf_ret *drm_configuration(enum drm_conf conf)
-{
-   switch (conf) {
-   case DRM_CONF_SHARE_FD:
-      return &share_fd_ret;
-   default:
-      break;
-   }
-   return NULL;
-}
-
-DRM_DRIVER_DESCRIPTOR("i965", "i915", create_screen, drm_configuration)
diff --git a/src/gallium/targets/dri-nouveau/Makefile.am b/src/gallium/targets/dri-nouveau/Makefile.am
deleted file mode 100644
index a479040..0000000
--- a/src/gallium/targets/dri-nouveau/Makefile.am
+++ /dev/null
@@ -1,52 +0,0 @@
-# Copyright © 2012 Intel Corporation
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish, distribute, sublicense,
-# and/or sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice (including the next
-# paragraph) shall be included in all copies or substantial portions of the
-# Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-# DEALINGS IN THE SOFTWARE.
-
-include $(top_srcdir)/src/gallium/Automake.inc
-
-AM_CFLAGS = \
-	$(GALLIUM_DRI_CFLAGS)
-AM_CPPFLAGS = \
-	-DGALLIUM_RBUG \
-	-DGALLIUM_TRACE
-
-dridir = $(DRI_DRIVER_INSTALL_DIR)
-dri_LTLIBRARIES = nouveau_dri.la
-
-nodist_EXTRA_nouveau_dri_la_SOURCES = dummy.cpp
-nouveau_dri_la_SOURCES = target.c
-
-nouveau_dri_la_LDFLAGS = \
-	$(GALLIUM_DRI_LINKER_FLAGS) \
-	-Wl,--dynamic-list=$(srcdir)/nouveau_dri.dyn
-
-nouveau_dri_la_LIBADD = \
-	$(top_builddir)/src/mesa/drivers/dri/common/libdricommon.la \
-	$(top_builddir)/src/gallium/state_trackers/dri/drm/libdridrm.la \
-	$(top_builddir)/src/gallium/winsys/nouveau/drm/libnouveaudrm.la \
-	$(top_builddir)/src/gallium/drivers/trace/libtrace.la \
-	$(top_builddir)/src/gallium/drivers/rbug/librbug.la \
-	$(top_builddir)/src/gallium/drivers/nouveau/libnouveau.la \
-	$(GALLIUM_DRI_LIB_DEPS) \
-	$(LIBDRM_LIBS) \
-	$(NOUVEAU_LIBS)
-
-include $(top_srcdir)/install-gallium-links.mk
diff --git a/src/gallium/targets/dri-nouveau/nouveau_dri.dyn b/src/gallium/targets/dri-nouveau/nouveau_dri.dyn
deleted file mode 100644
index a10356b..0000000
--- a/src/gallium/targets/dri-nouveau/nouveau_dri.dyn
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-	nouveau_drm_screen_create;
-};
diff --git a/src/gallium/targets/dri-nouveau/target.c b/src/gallium/targets/dri-nouveau/target.c
deleted file mode 100644
index f0fcdd8..0000000
--- a/src/gallium/targets/dri-nouveau/target.c
+++ /dev/null
@@ -1,36 +0,0 @@
-
-#include "target-helpers/inline_debug_helper.h"
-#include "state_tracker/drm_driver.h"
-#include "nouveau/drm/nouveau_drm_public.h"
-
-static struct pipe_screen *
-create_screen(int fd)
-{
-   struct pipe_screen *screen;
-
-   screen = nouveau_drm_screen_create(fd);
-   if (!screen)
-      return NULL;
-
-   screen = debug_screen_wrap(screen);
-
-   return screen;
-}
-
-static const struct drm_conf_ret share_fd_ret = {
-   .type = DRM_CONF_BOOL,
-   .val.val_int = true,
-};
-
-static const struct drm_conf_ret *drm_configuration(enum drm_conf conf)
-{
-   switch (conf) {
-   case DRM_CONF_SHARE_FD:
-      return &share_fd_ret;
-   default:
-      break;
-   }
-   return NULL;
-}
-
-DRM_DRIVER_DESCRIPTOR("nouveau", "nouveau", create_screen, drm_configuration)
diff --git a/src/gallium/targets/dri-vmwgfx/Makefile.am b/src/gallium/targets/dri-vmwgfx/Makefile.am
deleted file mode 100644
index 58a3630..0000000
--- a/src/gallium/targets/dri-vmwgfx/Makefile.am
+++ /dev/null
@@ -1,51 +0,0 @@
-# Copyright © 2012 Intel Corporation
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish, distribute, sublicense,
-# and/or sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice (including the next
-# paragraph) shall be included in all copies or substantial portions of the
-# Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-# DEALINGS IN THE SOFTWARE.
-
-include $(top_srcdir)/src/gallium/Automake.inc
-
-AM_CFLAGS = \
-	$(GALLIUM_DRI_CFLAGS)
-AM_CPPFLAGS = \
-	-DGALLIUM_RBUG \
-	-DGALLIUM_TRACE
-
-dridir = $(DRI_DRIVER_INSTALL_DIR)
-dri_LTLIBRARIES = vmwgfx_dri.la
-
-nodist_EXTRA_vmwgfx_dri_la_SOURCES = dummy.cpp
-vmwgfx_dri_la_SOURCES = \
-	target.c \
-	vmw_powf.c
-
-vmwgfx_dri_la_LDFLAGS = $(GALLIUM_DRI_LINKER_FLAGS)
-
-vmwgfx_dri_la_LIBADD = \
-	$(top_builddir)/src/mesa/drivers/dri/common/libdricommon.la \
-	$(top_builddir)/src/gallium/state_trackers/dri/drm/libdridrm.la \
-	$(top_builddir)/src/gallium/winsys/svga/drm/libsvgadrm.la \
-	$(top_builddir)/src/gallium/winsys/sw/wrapper/libwsw.la \
-	$(top_builddir)/src/gallium/drivers/trace/libtrace.la \
-	$(top_builddir)/src/gallium/drivers/rbug/librbug.la \
-	$(top_builddir)/src/gallium/drivers/svga/libsvga.la \
-	$(GALLIUM_DRI_LIB_DEPS)
-
-include $(top_srcdir)/install-gallium-links.mk
diff --git a/src/gallium/targets/dri-vmwgfx/SConscript b/src/gallium/targets/dri-vmwgfx/SConscript
deleted file mode 100644
index 0d19944..0000000
--- a/src/gallium/targets/dri-vmwgfx/SConscript
+++ /dev/null
@@ -1,33 +0,0 @@
-Import('*')
-
-env = drienv.Clone()
-
-if env['suncc']:
-    print 'warning: not building dri-vmwgfx'
-    Return()
-
-if env['build'] == 'release':
-    env.Append(CPPDEFINES = ['GALLIUM_RBUG'])
-    env.Prepend(LIBS = [rbug])
-else:
-    env.Append(CPPDEFINES = ['GALLIUM_TRACE', 'GALLIUM_RBUG', 'GALLIUM_GALAHAD', 'GALLIUM_SOFTPIPE'])
-    env.Prepend(LIBS = [trace, rbug, galahad, softpipe, ws_wrapper])
-
-
-env.Prepend(LIBS = [
-    st_dri,
-    svgadrm,
-    svga,
-    mesa,
-    glsl,
-    gallium,
-    COMMON_DRI_DRM_OBJECTS
-])
-
-module = env.LoadableModule(
-    target = 'vmwgfx_dri.so',
-    source = 'target.c',
-    SHLIBPREFIX = '',
-)
-
-env.Alias('dri-vmwgfx', module)
diff --git a/src/gallium/targets/dri-vmwgfx/target.c b/src/gallium/targets/dri-vmwgfx/target.c
deleted file mode 100644
index e3fbda1..0000000
--- a/src/gallium/targets/dri-vmwgfx/target.c
+++ /dev/null
@@ -1,52 +0,0 @@
-
-#include "target-helpers/inline_wrapper_sw_helper.h"
-#include "target-helpers/inline_debug_helper.h"
-#include "state_tracker/drm_driver.h"
-#include "svga/drm/svga_drm_public.h"
-#include "svga/svga_public.h"
-
-static struct pipe_screen *
-create_screen(int fd)
-{
-   struct svga_winsys_screen *sws;
-   struct pipe_screen *screen;
-
-   sws = svga_drm_winsys_screen_create(fd);
-   if (!sws)
-      return NULL;
-
-   screen = svga_screen_create(sws);
-   if (!screen)
-      return NULL;
-
-   screen = sw_screen_wrap(screen);
-
-   screen = debug_screen_wrap(screen);
-
-   return screen;
-}
-
-static const struct drm_conf_ret throttle_ret = {
-   .type = DRM_CONF_INT,
-   .val.val_int = 2,
-};
-
-static const struct drm_conf_ret share_fd_ret = {
-   .type = DRM_CONF_BOOL,
-   .val.val_int = true,
-};
-
-static const struct drm_conf_ret *drm_configuration(enum drm_conf conf)
-{
-   switch (conf) {
-   case DRM_CONF_THROTTLE:
-      return &throttle_ret;
-   case DRM_CONF_SHARE_FD:
-      return &share_fd_ret;
-   default:
-      break;
-   }
-   return NULL;
-}
-
-DRM_DRIVER_DESCRIPTOR("vmwgfx", "vmwgfx", create_screen, drm_configuration)
diff --git a/src/gallium/targets/dri-vmwgfx/vmw_powf.c b/src/gallium/targets/dri-vmwgfx/vmw_powf.c
deleted file mode 100644
index ca5e39b..0000000
--- a/src/gallium/targets/dri-vmwgfx/vmw_powf.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * Powf may leave an unresolved symbol pointing to a libstdc++.so powf.
- * However, not all libstdc++.so include this function, so optionally
- * replace the powf function with calls to expf and logf.
- */
-
-#ifdef VMW_RESOLVE_POWF
-
-extern float expf(float x);
-extern float logf(float x);
-extern float powf(float x, float y);
-
-float powf(float x, float y) {
-    return expf(logf(x)*y);
-}
-
-#endif
diff --git a/src/gallium/targets/dri.sym b/src/gallium/targets/dri.sym
deleted file mode 100644
index c99aa09..0000000
--- a/src/gallium/targets/dri.sym
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-	global:
-		__driDriverExtensions;
-		nouveau_drm_screen_create;
-		radeon_drm_winsys_create;
-	local:
-		*;
-};
diff --git a/src/gallium/targets/dri/Makefile.am b/src/gallium/targets/dri/Makefile.am
new file mode 100644
index 0000000..12d8a56
--- /dev/null
+++ b/src/gallium/targets/dri/Makefile.am
@@ -0,0 +1,92 @@
+include $(top_srcdir)/src/gallium/Automake.inc
+
+AM_CFLAGS = \
+	$(GALLIUM_TARGET_CFLAGS)
+
+AM_CPPFLAGS = \
+	-DGALLIUM_GALAHAD \
+	-DGALLIUM_NOOP \
+	-DGALLIUM_RBUG \
+	-DGALLIUM_TRACE
+
+dridir = $(DRI_DRIVER_INSTALL_DIR)
+dri_LTLIBRARIES = gallium_dri.la
+
+nodist_EXTRA_gallium_dri_la_SOURCES = dummy.cpp
+gallium_dri_la_SOURCES =
+
+gallium_dri_la_LDFLAGS = \
+	-shared \
+	-shrext .so \
+	-module \
+	-avoid-version \
+	-Wl,--version-script=$(top_srcdir)/src/gallium/targets/dri/dri.sym \
+	-Wl,--dynamic-list=$(top_srcdir)/src/gallium/targets/dri-vdpau.dyn \
+	$(GC_SECTIONS)
+
+# XXX: Convert libdricommon to handle both drm and swrast (like classic DRI)
+# XXX: Fold libdridrm/libdrisw as drm drivers become megadriver (__dri*DriverExtension) aware
+gallium_dri_la_LIBADD = \
+	$(top_builddir)/src/mesa/libmesagallium.la \
+	$(top_builddir)/src/mesa/drivers/dri/common/libdricommon.la \
+	$(top_builddir)/src/gallium/state_trackers/dri/drm/libdridrm.la \
+	$(top_builddir)/src/gallium/auxiliary/libgallium.la \
+	$(top_builddir)/src/gallium/drivers/galahad/libgalahad.la \
+	$(top_builddir)/src/gallium/drivers/noop/libnoop.la \
+	$(top_builddir)/src/gallium/drivers/rbug/librbug.la \
+	$(top_builddir)/src/gallium/drivers/trace/libtrace.la \
+	$(SELINUX_LIBS) \
+	$(LIBDRM_LIBS) \
+	$(GALLIUM_COMMON_LIB_DEPS)
+
+#if we have more than swrast target
+gallium_dri_la_LIBADD += \
+	$(EXPAT_LIBS)
+#endif
+
+if HAVE_GALLIUM_STATIC_TARGETS
+
+gallium_dri_la_SOURCES += target.c
+AM_CPPFLAGS += \
+	-DNEED_DRIVER_DESCRIPTOR_EXTRA=1 \
+	$(STATIC_TARGET_CPPFLAGS)
+gallium_dri_la_LIBADD += $(STATIC_TARGET_LIB_DEPS)
+
+else # HAVE_GALLIUM_STATIC_TARGETS
+
+gallium_dri_la_LIBADD += \
+	$(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader.la \
+	$(GALLIUM_PIPE_LOADER_WINSYS_LIBS) \
+	$(GALLIUM_PIPE_LOADER_LIBS)
+
+endif # HAVE_GALLIUM_STATIC_TARGETS
+
+if HAVE_MESA_LLVM
+gallium_dri_la_LIBADD += $(LLVM_LIBS)
+gallium_dri_la_LDFLAGS += $(LLVM_LDFLAGS)
+endif
+
+if HAVE_COMPAT_SYMLINKS
+# Add a link to allow setting VDPAU_DRIVER_PATH to /lib/gallium of the build tree.
+all-local: $(dri_LTLIBRARIES)
+	$(AM_V_GEN)link_dir=$(top_builddir)/$(LIB_DIR)/gallium;		\
+	$(MKDIR_P) $${link_dir};					\
+	for i in $(MEGADRIVERS); do					\
+		j=gallium_dri.so;					\
+		k=$${i}_dri.so;						\
+		ln -f .libs/$${j}					\
+		      $${link_dir}/$${k};				\
+	done
+endif
+
+# hardlink each megadriver instance, but don't actually have
+# gallium_dri.so in the set of final installed files.
+install-data-hook:
+	$(AM_V_GEN)dest_dir=$(DESTDIR)/$(dridir);			\
+	for i in $(MEGADRIVERS); do					\
+		j=gallium_dri.so;					\
+		k=$${i}_dri.so;						\
+		ln -f $${dest_dir}/$${j}				\
+		      $${dest_dir}/$${k};				\
+	done;								\
+	$(RM) -f $$dest_dir/gallium_dri.*
diff --git a/src/gallium/targets/dri/SConscript b/src/gallium/targets/dri/SConscript
new file mode 100644
index 0000000..a4062ab
--- /dev/null
+++ b/src/gallium/targets/dri/SConscript
@@ -0,0 +1,42 @@
+Import('*')
+
+env = drienv.Clone()
+
+if env['suncc']:
+    print 'warning: not building dri-vmwgfx'
+    Return()
+
+env.Append(CPPPATH = [
+    '#/src/loader',
+])
+
+if env['build'] == 'release':
+    env.Append(CPPDEFINES = ['GALLIUM_RBUG'])
+    env.Prepend(LIBS = [rbug])
+else:
+    env.Append(CPPDEFINES = ['GALLIUM_TRACE', 'GALLIUM_RBUG', 'GALLIUM_GALAHAD', 'GALLIUM_SOFTPIPE'])
+    env.Prepend(LIBS = [trace, rbug, galahad, softpipe, ws_wrapper])
+
+env.Append(CPPDEFINES = [
+    'GALLIUM_VMWGFX',
+    'NEED_DRIVER_DESCRIPTOR_EXTRA=1',
+])
+
+
+env.Prepend(LIBS = [
+    st_dri,
+    svgadrm,
+    svga,
+    mesa,
+    glsl,
+    gallium,
+    COMMON_DRI_DRM_OBJECTS
+])
+
+module = env.LoadableModule(
+    target = 'vmwgfx_dri.so',
+    source = 'target.c',
+    SHLIBPREFIX = '',
+)
+
+env.Alias('dri-vmwgfx', module)
diff --git a/src/gallium/targets/dri/dri.sym b/src/gallium/targets/dri/dri.sym
new file mode 100644
index 0000000..c99aa09
--- /dev/null
+++ b/src/gallium/targets/dri/dri.sym
@@ -0,0 +1,8 @@
+{
+	global:
+		__driDriverExtensions;
+		nouveau_drm_screen_create;
+		radeon_drm_winsys_create;
+	local:
+		*;
+};
diff --git a/src/gallium/targets/dri/target.c b/src/gallium/targets/dri/target.c
new file mode 100644
index 0000000..fde4a4a
--- /dev/null
+++ b/src/gallium/targets/dri/target.c
@@ -0,0 +1 @@
+#include "target-helpers/inline_drm_helper.h"
diff --git a/src/gallium/targets/r300/common/drm_target.c b/src/gallium/targets/r300/common/drm_target.c
deleted file mode 100644
index dff83da..0000000
--- a/src/gallium/targets/r300/common/drm_target.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/**************************************************************************
- *
- * Copyright 2013 Advanced Micro Devices, Inc.
- * All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- **************************************************************************/
-
-#include "target-helpers/inline_debug_helper.h"
-#include "state_tracker/drm_driver.h"
-#include "radeon/drm/radeon_drm_public.h"
-#include "radeon/drm/radeon_winsys.h"
-#include "r300/r300_public.h"
-
-static struct pipe_screen *
-create_screen(int fd)
-{
-   struct radeon_winsys *sws;
-
-   sws = radeon_drm_winsys_create(fd, r300_screen_create);
-   return sws ? debug_screen_wrap(sws->screen) : NULL;
-}
-
-/* Technically this is only true for kernels >= 3.12, which
- * support lseek on dma-buf fds.
- *
- * We could check for this in create_screen and return the correct
- * value, but for now just return true in all cases.
- * 
- * createImageFromFds fails gracefully on kernel < 3.12, so this
- * shouldn't be a huge problem.
- */
-static const struct drm_conf_ret share_fd_ret = {
-   .type = DRM_CONF_BOOL,
-   .val.val_int = true,
-};
-
-static const struct drm_conf_ret *drm_configuration(enum drm_conf conf)
-{
-   switch (conf) {
-   case DRM_CONF_SHARE_FD:
-      return &share_fd_ret;
-   default:
-      break;
-   }
-   return NULL;
-}
-
-DRM_DRIVER_DESCRIPTOR("r300", "radeon", create_screen, drm_configuration)
diff --git a/src/gallium/targets/r300/dri/Makefile.am b/src/gallium/targets/r300/dri/Makefile.am
deleted file mode 100644
index c780fd9..0000000
--- a/src/gallium/targets/r300/dri/Makefile.am
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright © 2012 Intel Corporation
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish, distribute, sublicense,
-# and/or sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice (including the next
-# paragraph) shall be included in all copies or substantial portions of the
-# Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-# DEALINGS IN THE SOFTWARE.
-
-include $(top_srcdir)/src/gallium/Automake.inc
-
-AM_CFLAGS = \
-	$(GALLIUM_DRI_CFLAGS)
-AM_CPPFLAGS = \
-	-DGALLIUM_RBUG \
-	-DGALLIUM_TRACE \
-	-DGALLIUM_GALAHAD
-
-dridir = $(DRI_DRIVER_INSTALL_DIR)
-dri_LTLIBRARIES = r300_dri.la
-
-nodist_EXTRA_r300_dri_la_SOURCES = dummy.cpp
-r300_dri_la_SOURCES = \
-	drm_target.c
-
-r300_dri_la_LDFLAGS = \
-	$(GALLIUM_DRI_LINKER_FLAGS) \
-	-Wl,--dynamic-list=$(srcdir)/radeon.dyn
-
-r300_dri_la_LIBADD = \
-	$(top_builddir)/src/mesa/drivers/dri/common/libdricommon.la \
-	$(top_builddir)/src/gallium/state_trackers/dri/drm/libdridrm.la \
-	$(top_builddir)/src/gallium/winsys/radeon/drm/libradeonwinsys.la \
-	$(top_builddir)/src/gallium/drivers/galahad/libgalahad.la \
-	$(top_builddir)/src/gallium/drivers/trace/libtrace.la \
-	$(top_builddir)/src/gallium/drivers/rbug/librbug.la \
-	$(top_builddir)/src/gallium/drivers/r300/libr300.la \
-	$(GALLIUM_DRI_LIB_DEPS) \
-	$(RADEON_LIBS)
-
-include $(top_srcdir)/install-gallium-links.mk
diff --git a/src/gallium/targets/r300/dri/drm_target.c b/src/gallium/targets/r300/dri/drm_target.c
deleted file mode 120000
index 6955421..0000000
--- a/src/gallium/targets/r300/dri/drm_target.c
+++ /dev/null
@@ -1 +0,0 @@
-../common/drm_target.c
\ No newline at end of file
diff --git a/src/gallium/targets/r300/dri/radeon.dyn b/src/gallium/targets/r300/dri/radeon.dyn
deleted file mode 100644
index 8d243dc..0000000
--- a/src/gallium/targets/r300/dri/radeon.dyn
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-	radeon_drm_winsys_create;
-};
diff --git a/src/gallium/targets/r600/common/drm_target.c b/src/gallium/targets/r600/common/drm_target.c
deleted file mode 100644
index 09250c7..0000000
--- a/src/gallium/targets/r600/common/drm_target.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/**************************************************************************
- *
- * Copyright 2013 Advanced Micro Devices, Inc.
- * All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- **************************************************************************/
-
-#include "state_tracker/drm_driver.h"
-#include "target-helpers/inline_debug_helper.h"
-#include "radeon/drm/radeon_drm_public.h"
-#include "radeon/drm/radeon_winsys.h"
-#include "r600/r600_public.h"
-
-static struct pipe_screen *create_screen(int fd)
-{
-   struct radeon_winsys *radeon;
-
-   radeon = radeon_drm_winsys_create(fd, r600_screen_create);
-   return radeon ? debug_screen_wrap(radeon->screen) : NULL;
-}
-
-static const struct drm_conf_ret throttle_ret = {
-   .type = DRM_CONF_INT,
-   .val.val_int = 2,
-};
-
-/* Technically this is only true for kernels >= 3.12, which
- * support lseek on dma-buf fds.
- *
- * We could check for this in create_screen and return the correct
- * value, but for now just return true in all cases.
- * 
- * createImageFromFds fails gracefully on kernel < 3.12, so this
- * shouldn't be a huge problem.
- */
-static const struct drm_conf_ret share_fd_ret = {
-   .type = DRM_CONF_BOOL,
-   .val.val_int = true,
-};
-
-static const struct drm_conf_ret *drm_configuration(enum drm_conf conf)
-{
-   switch (conf) {
-   case DRM_CONF_THROTTLE:
-      return &throttle_ret;
-   case DRM_CONF_SHARE_FD:
-      return &share_fd_ret;
-   default:
-      break;
-   }
-   return NULL;
-}
-
-DRM_DRIVER_DESCRIPTOR("r600", "radeon", create_screen, drm_configuration)
diff --git a/src/gallium/targets/r600/dri/Makefile.am b/src/gallium/targets/r600/dri/Makefile.am
deleted file mode 100644
index 8e3e561..0000000
--- a/src/gallium/targets/r600/dri/Makefile.am
+++ /dev/null
@@ -1,56 +0,0 @@
-# Copyright © 2012 Intel Corporation
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish, distribute, sublicense,
-# and/or sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice (including the next
-# paragraph) shall be included in all copies or substantial portions of the
-# Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-# DEALINGS IN THE SOFTWARE.
-
-include $(top_srcdir)/src/gallium/Automake.inc
-
-AM_CFLAGS = \
-	$(GALLIUM_DRI_CFLAGS)
-AM_CPPFLAGS = \
-	-DGALLIUM_RBUG \
-	-DGALLIUM_TRACE \
-	-DGALLIUM_NOOP
-
-dridir = $(DRI_DRIVER_INSTALL_DIR)
-dri_LTLIBRARIES = r600_dri.la
-
-nodist_EXTRA_r600_dri_la_SOURCES = dummy.cpp
-r600_dri_la_SOURCES = \
-	drm_target.c
-
-r600_dri_la_LDFLAGS = \
-	$(GALLIUM_DRI_LINKER_FLAGS) \
-	-Wl,--dynamic-list=$(srcdir)/../../r300/dri/radeon.dyn
-
-r600_dri_la_LIBADD = \
-	$(top_builddir)/src/mesa/drivers/dri/common/libdricommon.la \
-	$(top_builddir)/src/gallium/drivers/radeon/libradeon.la \
-	$(top_builddir)/src/gallium/drivers/r600/libr600.la \
-	$(top_builddir)/src/gallium/state_trackers/dri/drm/libdridrm.la \
-	$(top_builddir)/src/gallium/winsys/radeon/drm/libradeonwinsys.la \
-	$(top_builddir)/src/gallium/drivers/trace/libtrace.la \
-	$(top_builddir)/src/gallium/drivers/rbug/librbug.la \
-	$(top_builddir)/src/gallium/drivers/noop/libnoop.la \
-	$(GALLIUM_DRI_LIB_DEPS) \
-	$(LIBDRM_LIBS) \
-	$(RADEON_LIBS)
-
-include $(top_srcdir)/install-gallium-links.mk
diff --git a/src/gallium/targets/r600/dri/drm_target.c b/src/gallium/targets/r600/dri/drm_target.c
deleted file mode 120000
index 6955421..0000000
--- a/src/gallium/targets/r600/dri/drm_target.c
+++ /dev/null
@@ -1 +0,0 @@
-../common/drm_target.c
\ No newline at end of file
diff --git a/src/gallium/targets/radeonsi/common/drm_target.c b/src/gallium/targets/radeonsi/common/drm_target.c
deleted file mode 100644
index 74980af..0000000
--- a/src/gallium/targets/radeonsi/common/drm_target.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/**************************************************************************
- *
- * Copyright 2013 Advanced Micro Devices, Inc.
- * All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- **************************************************************************/
-
-#include "state_tracker/drm_driver.h"
-#include "target-helpers/inline_debug_helper.h"
-#include "radeon/drm/radeon_drm_public.h"
-#include "radeon/drm/radeon_winsys.h"
-#include "radeonsi/si_public.h"
-
-static struct pipe_screen *create_screen(int fd)
-{
-   struct radeon_winsys *radeon;
-
-   radeon = radeon_drm_winsys_create(fd, radeonsi_screen_create);
-   return radeon ? debug_screen_wrap(radeon->screen) : NULL;
-}
-
-static const struct drm_conf_ret throttle_ret = {
-   .type = DRM_CONF_INT,
-   .val.val_int = 2,
-};
-
-/* Technically this is only true for kernels >= 3.12, which
- * support lseek on dma-buf fds.
- *
- * We could check for this in create_screen and return the correct
- * value, but for now just return true in all cases.
- * 
- * createImageFromFds fails gracefully on kernel < 3.12, so this
- * shouldn't be a huge problem.
- */
-static const struct drm_conf_ret share_fd_ret = {
-   .type = DRM_CONF_BOOL,
-   .val.val_int = true,
-};
-
-static const struct drm_conf_ret *drm_configuration(enum drm_conf conf)
-{
-   switch (conf) {
-   case DRM_CONF_THROTTLE:
-      return &throttle_ret;
-   case DRM_CONF_SHARE_FD:
-      return &share_fd_ret;
-   default:
-      break;
-   }
-   return NULL;
-}
-
-DRM_DRIVER_DESCRIPTOR("radeonsi", "radeon", create_screen, drm_configuration)
diff --git a/src/gallium/targets/radeonsi/dri/Makefile.am b/src/gallium/targets/radeonsi/dri/Makefile.am
deleted file mode 100644
index 470b213..0000000
--- a/src/gallium/targets/radeonsi/dri/Makefile.am
+++ /dev/null
@@ -1,55 +0,0 @@
-# Copyright © 2012 Intel Corporation
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish, distribute, sublicense,
-# and/or sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice (including the next
-# paragraph) shall be included in all copies or substantial portions of the
-# Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-# DEALINGS IN THE SOFTWARE.
-
-include $(top_srcdir)/src/gallium/Automake.inc
-
-AM_CFLAGS = \
-	$(GALLIUM_DRI_CFLAGS)
-AM_CPPFLAGS = \
-	-DGALLIUM_RBUG \
-	-DGALLIUM_TRACE \
-	-DGALLIUM_NOOP
-
-dridir = $(DRI_DRIVER_INSTALL_DIR)
-dri_LTLIBRARIES = radeonsi_dri.la
-
-nodist_EXTRA_radeonsi_dri_la_SOURCES = dummy.cpp
-radeonsi_dri_la_SOURCES = \
-	drm_target.c
-
-radeonsi_dri_la_LDFLAGS = \
-	$(GALLIUM_DRI_LINKER_FLAGS) \
-	-Wl,--dynamic-list=$(srcdir)/../../r300/dri/radeon.dyn
-
-radeonsi_dri_la_LIBADD = \
-	$(top_builddir)/src/mesa/drivers/dri/common/libdricommon.la \
-	$(top_builddir)/src/gallium/drivers/radeon/libradeon.la \
-	$(top_builddir)/src/gallium/drivers/radeonsi/libradeonsi.la \
-	$(top_builddir)/src/gallium/state_trackers/dri/drm/libdridrm.la \
-	$(top_builddir)/src/gallium/winsys/radeon/drm/libradeonwinsys.la \
-	$(top_builddir)/src/gallium/drivers/trace/libtrace.la \
-	$(top_builddir)/src/gallium/drivers/rbug/librbug.la \
-	$(top_builddir)/src/gallium/drivers/noop/libnoop.la \
-	$(GALLIUM_DRI_LIB_DEPS) \
-	$(RADEON_LIBS)
-
-include $(top_srcdir)/install-gallium-links.mk
diff --git a/src/gallium/targets/radeonsi/dri/drm_target.c b/src/gallium/targets/radeonsi/dri/drm_target.c
deleted file mode 120000
index 6955421..0000000
--- a/src/gallium/targets/radeonsi/dri/drm_target.c
+++ /dev/null
@@ -1 +0,0 @@
-../common/drm_target.c
\ No newline at end of file
-- 
1.9.2



More information about the mesa-dev mailing list