summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEmil Velikov <[email protected]>2014-06-16 14:23:50 +0100
committerEmil Velikov <[email protected]>2014-07-02 10:52:53 +0100
commit6eabddd531918b922619cb16f1250b211d5c193a (patch)
tree4cbc70b0ea712f2e23e073f8f55e2ed94538bae8 /src
parent9a7fd2954fa24a6d899c1fa5e7be55723d6892b8 (diff)
targets/dri-nouveau: Convert to static/shared pipe-drivers
Similiar to other targets, we'd like to convert all the separate targets into a single one, thus we'll minimize the duplication and overall size of mesa. The conversion per API basis, with the drivers available either statically or shared. Currently the former is the default. v2: Correctly append the version script to the linker flags. Signed-off-by: Emil Velikov <[email protected]> Tested-by: Rob Clark <[email protected]> Tested-by: Thomas Helland <thomashelland90 at gmail.com> Acked-by: Tom Stellard <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/gallium/Automake.inc2
-rw-r--r--src/gallium/targets/Makefile.am10
-rw-r--r--src/gallium/targets/dri-nouveau/Makefile.am52
-rw-r--r--src/gallium/targets/dri-nouveau/nouveau_dri.dyn3
-rw-r--r--src/gallium/targets/dri-nouveau/target.c36
-rw-r--r--src/gallium/targets/dri/Makefile.am103
-rw-r--r--src/gallium/targets/dri/dri.sym (renamed from src/gallium/targets/dri.sym)0
-rw-r--r--src/gallium/targets/dri/target.c1
8 files changed, 109 insertions, 98 deletions
diff --git a/src/gallium/Automake.inc b/src/gallium/Automake.inc
index 4600b9c5b6b..e70a1363e1a 100644
--- a/src/gallium/Automake.inc
+++ b/src/gallium/Automake.inc
@@ -61,7 +61,7 @@ GALLIUM_DRI_LINKER_FLAGS = \
if HAVE_LD_VERSION_SCRIPT
GALLIUM_DRI_LINKER_FLAGS += \
- -Wl,--version-script=$(top_srcdir)/src/gallium/targets/dri.sym
+ -Wl,--version-script=$(top_srcdir)/src/gallium/targets/dri/dri.sym
endif
diff --git a/src/gallium/targets/Makefile.am b/src/gallium/targets/Makefile.am
index d86cd33af94..1a44c56ccfe 100644
--- a/src/gallium/targets/Makefile.am
+++ b/src/gallium/targets/Makefile.am
@@ -22,6 +22,10 @@
SUBDIRS =
+if HAVE_DRI2
+SUBDIRS += dri
+endif
+
if HAVE_X11_DRIVER
SUBDIRS += libgl-xlib
endif
@@ -96,12 +100,6 @@ SUBDIRS += radeonsi/dri
endif
endif
-if HAVE_GALLIUM_NOUVEAU
-if HAVE_DRI2
-SUBDIRS += dri-nouveau
-endif
-endif
-
if HAVE_GALLIUM_SOFTPIPE
if HAVE_DRISW
SUBDIRS += dri-swrast
diff --git a/src/gallium/targets/dri-nouveau/Makefile.am b/src/gallium/targets/dri-nouveau/Makefile.am
deleted file mode 100644
index a479040d6c7..00000000000
--- 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 a10356b2792..00000000000
--- 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 f0fcdd834dd..00000000000
--- 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/Makefile.am b/src/gallium/targets/dri/Makefile.am
new file mode 100644
index 00000000000..22202065dec
--- /dev/null
+++ b/src/gallium/targets/dri/Makefile.am
@@ -0,0 +1,103 @@
+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,--dynamic-list=$(top_srcdir)/src/gallium/targets/dri-vdpau.dyn \
+ $(GC_SECTIONS)
+
+if HAVE_LD_VERSION_SCRIPT
+gallium_dri_la_LDFLAGS += \
+ -Wl,--version-script=$(top_srcdir)/src/gallium/targets/dri/dri.sym
+endif # HAVE_LD_VERSION_SCRIPT
+
+# XXX: Fold libdridrm/libdrisw as 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_s.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) \
+ $(EXPAT_LIBS) \
+ $(LIBDRM_LIBS) \
+ $(GALLIUM_COMMON_LIB_DEPS)
+
+if HAVE_GALLIUM_STATIC_TARGETS
+
+MEGADRIVERS =
+STATIC_TARGET_CPPFLAGS =
+STATIC_TARGET_LIB_DEPS = \
+ $(top_builddir)/src/loader/libloader.la
+
+if HAVE_GALLIUM_NOUVEAU
+MEGADRIVERS += nouveau
+STATIC_TARGET_CPPFLAGS += -DGALLIUM_NOUVEAU
+STATIC_TARGET_LIB_DEPS += \
+ $(top_builddir)/src/gallium/winsys/nouveau/drm/libnouveaudrm.la \
+ $(top_builddir)/src/gallium/drivers/nouveau/libnouveau.la \
+ $(NOUVEAU_LIBS)
+endif
+
+gallium_dri_la_SOURCES += target.c
+AM_CPPFLAGS += $(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 LIBGL_DRIVERS_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.sym b/src/gallium/targets/dri/dri.sym
index c99aa09b4d9..c99aa09b4d9 100644
--- a/src/gallium/targets/dri.sym
+++ b/src/gallium/targets/dri/dri.sym
diff --git a/src/gallium/targets/dri/target.c b/src/gallium/targets/dri/target.c
new file mode 100644
index 00000000000..fde4a4a7dcf
--- /dev/null
+++ b/src/gallium/targets/dri/target.c
@@ -0,0 +1 @@
+#include "target-helpers/inline_drm_helper.h"