[Mesa-dev] [PATCH 09/14] nouveau: Build the driver into the shared mesa_dri_drivers.so.

Eric Anholt eric at anholt.net
Mon Sep 30 13:44:46 PDT 2013


---
 configure.ac                                  |  2 +-
 src/mesa/drivers/dri/Makefile.am              |  2 ++
 src/mesa/drivers/dri/nouveau/Makefile.am      | 23 ++++++-----------------
 src/mesa/drivers/dri/nouveau/nouveau_screen.c | 15 +++++++++++++--
 src/mesa/drivers/dri/nouveau/nouveau_screen.h |  2 ++
 5 files changed, 24 insertions(+), 20 deletions(-)

diff --git a/configure.ac b/configure.ac
index bc111f3..92f6a26 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1035,7 +1035,7 @@ fi
 enable_dricore=no
 enable_megadriver=no
 for driver in $DRI_DIRS; do
-    if test $driver != "i965"; then
+    if test $driver != "i965" -a $driver != "nouveau"; then
         enable_dricore=yes
     else
         enable_megadriver=yes
diff --git a/src/mesa/drivers/dri/Makefile.am b/src/mesa/drivers/dri/Makefile.am
index 9d15c43..6152fcc 100644
--- a/src/mesa/drivers/dri/Makefile.am
+++ b/src/mesa/drivers/dri/Makefile.am
@@ -27,6 +27,8 @@ endif
 
 if HAVE_NOUVEAU_DRI
 SUBDIRS+=nouveau
+MEGADRIVERS_DEPS = nouveau/libnouveau_dri.la
+MEGADRIVERS += nouveau_vieux_dri.so
 endif
 
 if HAVE_R200_DRI
diff --git a/src/mesa/drivers/dri/nouveau/Makefile.am b/src/mesa/drivers/dri/nouveau/Makefile.am
index 7172e62..90dfd64 100644
--- a/src/mesa/drivers/dri/nouveau/Makefile.am
+++ b/src/mesa/drivers/dri/nouveau/Makefile.am
@@ -23,6 +23,8 @@
 
 include Makefile.sources
 
+if HAVE_NOUVEAU_DRI
+
 AM_CFLAGS = \
 	-I$(top_srcdir)/include \
 	-I$(top_srcdir)/src/ \
@@ -35,21 +37,8 @@ AM_CFLAGS = \
 
 dridir = $(DRI_DRIVER_INSTALL_DIR)
 
-if HAVE_NOUVEAU_DRI
-dri_LTLIBRARIES = nouveau_vieux_dri.la
-endif
+noinst_LTLIBRARIES = libnouveau_dri.la
+libnouveau_dri_la_SOURCES = $(NOUVEAU_C_FILES)
+libnouveau_dri_la_LIBADD = $(NOUVEAU_LIBS)
 
-nouveau_vieux_dri_la_SOURCES = \
-	$(NOUVEAU_C_FILES)
-
-nouveau_vieux_dri_la_LDFLAGS = $(DRI_DRIVER_LDFLAGS)
-nouveau_vieux_dri_la_LIBADD = \
-	../common/libdricommon.la \
-	$(DRI_LIB_DEPS) \
-	$(NOUVEAU_LIBS)
-
-# Provide compatibility with scripts for the old Mesa build system for
-# a while by putting a link to the driver into /lib of the build tree.
-all-local: nouveau_vieux_dri.la
-	$(MKDIR_P) $(top_builddir)/$(LIB_DIR);
-	ln -f .libs/nouveau_vieux_dri.so $(top_builddir)/$(LIB_DIR)/nouveau_vieux_dri.so;
+endif
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_screen.c b/src/mesa/drivers/dri/nouveau/nouveau_screen.c
index 6816406..fa2bfd2 100644
--- a/src/mesa/drivers/dri/nouveau/nouveau_screen.c
+++ b/src/mesa/drivers/dri/nouveau/nouveau_screen.c
@@ -246,7 +246,7 @@ static const __DRIextension *nouveau_screen_extensions[] = {
     NULL
 };
 
-const struct __DriverAPIRec driDriverAPI = {
+const struct __DriverAPIRec nouveau_driver_api = {
 	.InitScreen      = nouveau_init_screen2,
 	.DestroyScreen   = nouveau_destroy_screen,
 	.CreateBuffer    = nouveau_create_buffer,
@@ -257,9 +257,20 @@ const struct __DriverAPIRec driDriverAPI = {
 	.UnbindContext   = nouveau_context_unbind,
 };
 
+static const struct __DRIDriverVtableExtensionRec nouveau_vtable = {
+   .base = { __DRI_DRIVER_VTABLE, 1 },
+   .vtable = &nouveau_driver_api,
+};
+
 /* This is the table of extensions that the loader will dlsym() for. */
-PUBLIC const __DRIextension *__driDriverExtensions[] = {
+PUBLIC const __DRIextension *nouveau_driver_extensions[] = {
 	&driCoreExtension.base,
 	&driDRI2Extension.base,
+	&nouveau_vtable.base,
 	NULL
 };
+
+PUBLIC const __DRIextension **__driDriverGetExtensions_nouveau_vieux(void)
+{
+   return nouveau_driver_extensions;
+}
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_screen.h b/src/mesa/drivers/dri/nouveau/nouveau_screen.h
index bcf57e2..45b1ee9 100644
--- a/src/mesa/drivers/dri/nouveau/nouveau_screen.h
+++ b/src/mesa/drivers/dri/nouveau/nouveau_screen.h
@@ -27,6 +27,8 @@
 #ifndef __NOUVEAU_SCREEN_H__
 #define __NOUVEAU_SCREEN_H__
 
+const __DRIextension **__driDriverGetExtensions_nouveau_vieux(void);
+
 struct nouveau_context;
 
 struct nouveau_screen {
-- 
1.8.4.rc3



More information about the mesa-dev mailing list