summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2013-09-24 10:24:07 -0700
committerEric Anholt <[email protected]>2013-10-24 14:13:08 -0700
commitead86e378fd4a8b19f7a3f185c751a41b2530b2f (patch)
tree2379a451f6bc5b72cc3c5cd0dc9a8afd141518f9
parent1925a9aebd64b2e08574118891394d9d56db25ae (diff)
nouveau: Build the driver into the shared mesa_dri_drivers.so.
v2: drop dridir now that it's unused. v3: Consistently put spaces around += in the updated Makefile.am block. v4: Set a global driverAPI variable so loaders don't have to update to createNewScreen2() (though they may want to for thread safety). v5: Fix missed public symbol in nouveau. (caught by Emil) Reviewed-by: Matt Turner <[email protected]> (v2) Reviewed-by: Emil Velikov <[email protected]>
-rw-r--r--configure.ac2
-rw-r--r--src/mesa/drivers/dri/Makefile.am4
-rw-r--r--src/mesa/drivers/dri/nouveau/Makefile.am20
-rw-r--r--src/mesa/drivers/dri/nouveau/nouveau_screen.c17
-rw-r--r--src/mesa/drivers/dri/nouveau/nouveau_screen.h2
5 files changed, 24 insertions, 21 deletions
diff --git a/configure.ac b/configure.ac
index d47636d4dad..c352cf5a536 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1039,7 +1039,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 7c573566898..d69bf38b535 100644
--- a/src/mesa/drivers/dri/Makefile.am
+++ b/src/mesa/drivers/dri/Makefile.am
@@ -17,7 +17,9 @@ MEGADRIVERS += i965_dri.so
endif
if HAVE_NOUVEAU_DRI
-SUBDIRS+=nouveau
+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 7e6605f29c5..377b9a24e05 100644
--- a/src/mesa/drivers/dri/nouveau/Makefile.am
+++ b/src/mesa/drivers/dri/nouveau/Makefile.am
@@ -33,20 +33,6 @@ AM_CFLAGS = \
$(VISIBILITY_CFLAGS) \
$(NOUVEAU_CFLAGS)
-dridir = $(DRI_DRIVER_INSTALL_DIR)
-dri_LTLIBRARIES = nouveau_vieux_dri.la
-
-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;
+noinst_LTLIBRARIES = libnouveau_dri.la
+libnouveau_dri_la_SOURCES = $(NOUVEAU_C_FILES)
+libnouveau_dri_la_LIBADD = $(NOUVEAU_LIBS)
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_screen.c b/src/mesa/drivers/dri/nouveau/nouveau_screen.c
index 6816406f539..4ab830e4dc3 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,22 @@ 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[] = {
+static const __DRIextension *nouveau_driver_extensions[] = {
&driCoreExtension.base,
&driDRI2Extension.base,
+ &nouveau_vtable.base,
NULL
};
+
+PUBLIC const __DRIextension **__driDriverGetExtensions_nouveau_vieux(void)
+{
+ globalDriverAPI = &nouveau_driver_api;
+
+ 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 bcf57e21f28..45b1ee928d6 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 {