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.
Signed-off-by: Emil Velikov <emil.l.veli...@gmail.com> --- configure.ac | 5 +- src/gallium/Automake.inc | 2 +- src/gallium/targets/Makefile.am | 10 +-- 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/Makefile.am | 103 ++++++++++++++++++++++++ src/gallium/targets/{ => dri}/dri.sym | 0 src/gallium/targets/dri/target.c | 1 + 9 files changed, 112 insertions(+), 100 deletions(-) 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 create mode 100644 src/gallium/targets/dri/Makefile.am rename src/gallium/targets/{ => dri}/dri.sym (100%) create mode 100644 src/gallium/targets/dri/target.c diff --git a/configure.ac b/configure.ac index 7bd9548..3463875 100644 --- a/configure.ac +++ b/configure.ac @@ -852,6 +852,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 @@ -1977,7 +1978,7 @@ if test -n "$with_gallium_drivers"; then PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED]) gallium_require_drm_loader GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau" - gallium_check_st "nouveau/drm" "dri-nouveau" "xa/nouveau" "xvmc/nouveau" "vdpau/nouveau" "omx/nouveau" + gallium_check_st "nouveau/drm" "dri/nouveau" "xa/nouveau" "xvmc/nouveau" "vdpau/nouveau" "omx/nouveau" ;; xfreedreno) HAVE_GALLIUM_FREEDRENO=yes @@ -2215,9 +2216,9 @@ AC_CONFIG_FILES([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-swrast/Makefile src/gallium/targets/dri-vmwgfx/Makefile + src/gallium/targets/dri/Makefile src/gallium/targets/egl-static/Makefile src/gallium/targets/gbm/Makefile src/gallium/targets/libgl-xlib/Makefile diff --git a/src/gallium/Automake.inc b/src/gallium/Automake.inc index 4600b9c..e70a136 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 d86cd33..1a44c56 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 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/Makefile.am b/src/gallium/targets/dri/Makefile.am new file mode 100644 index 0000000..18ae9c5 --- /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 similarity index 100% rename from src/gallium/targets/dri.sym rename to 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 0000000..fde4a4a --- /dev/null +++ b/src/gallium/targets/dri/target.c @@ -0,0 +1 @@ +#include "target-helpers/inline_drm_helper.h" -- 2.0.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev