[Mesa-dev] [PATCH 04/17] auxiliary/vl: split out into a separate static library

Emil Velikov emil.l.velikov at gmail.com
Sun Sep 21 16:44:01 PDT 2014


Avoid building the relatively large object every time and forcing
on the non-vl targets. This gives us the following size improvement

   text    data     bss     dec     hex filename
5898697  189212 1977864 8065773  7b12ed before/nouveau_dri.so
5771203  189228  391176 6351607  60eaf7 after/nouveau_dri.so

Other targets  (gbm, xa) are likely to exhibit similar savings.

v2: Fix the 'pipe-loader' targets.

Signed-off-by: Emil Velikov <emil.l.velikov at gmail.com>
---
 configure.ac                                 | 15 ++++++++---
 src/gallium/auxiliary/Makefile.am            | 23 ++++++++++++++++
 src/gallium/auxiliary/Makefile.sources       | 39 +++++++++++++++++++++-------
 src/gallium/state_trackers/omx/Makefile.am   |  3 ++-
 src/gallium/state_trackers/vdpau/Makefile.am |  4 ++-
 src/gallium/state_trackers/xvmc/Makefile.am  |  6 +++--
 src/gallium/targets/omx/Makefile.am          | 12 ++++-----
 src/gallium/targets/pipe-loader/Makefile.am  | 11 ++++++--
 src/gallium/targets/vdpau/Makefile.am        | 13 ++++------
 src/gallium/targets/xvmc/Makefile.am         | 11 +++-----
 10 files changed, 96 insertions(+), 41 deletions(-)

diff --git a/configure.ac b/configure.ac
index 0cfe970..7e15911 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1413,23 +1413,30 @@ if test -n "$with_gallium_drivers" -a "x$with_gallium_drivers" != xswrast; then
     fi
 fi
 
+if test "x$enable_xvmc" = xyes -o \
+        "x$enable_vdpau" = xyes -o \
+        "x$enable_omx" = xyes; then
+    PKG_CHECK_MODULES([VL], [x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED])
+    need_gallium_vl=yes
+fi
+AM_CONDITIONAL(NEED_GALLIUM_VL, test "x$need_gallium_vl" = xyes)
+
 if test "x$enable_xvmc" = xyes; then
-    PKG_CHECK_MODULES([XVMC], [xvmc >= $XVMC_REQUIRED x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED])
+    PKG_CHECK_MODULES([XVMC], [xvmc >= $XVMC_REQUIRED])
     GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xvmc"
     enable_gallium_loader=$enable_shared_pipe_drivers
 fi
 AM_CONDITIONAL(HAVE_ST_XVMC, test "x$enable_xvmc" = xyes)
 
 if test "x$enable_vdpau" = xyes; then
-    PKG_CHECK_MODULES([VDPAU], [vdpau >= $VDPAU_REQUIRED x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED],
-                      [VDPAU_LIBS="`$PKG_CONFIG --libs x11-xcb xcb xcb-dri2`"])
+    PKG_CHECK_MODULES([VDPAU], [vdpau >= $VDPAU_REQUIRED])
     GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS vdpau"
     enable_gallium_loader=$enable_shared_pipe_drivers
 fi
 AM_CONDITIONAL(HAVE_ST_VDPAU, test "x$enable_vdpau" = xyes)
 
 if test "x$enable_omx" = xyes; then
-    PKG_CHECK_MODULES([OMX], [libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED])
+    PKG_CHECK_MODULES([OMX], [libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED])
     GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS omx"
     enable_gallium_loader=$enable_shared_pipe_drivers
 fi
diff --git a/src/gallium/auxiliary/Makefile.am b/src/gallium/auxiliary/Makefile.am
index 4d8ba89..e9b027a 100644
--- a/src/gallium/auxiliary/Makefile.am
+++ b/src/gallium/auxiliary/Makefile.am
@@ -46,3 +46,26 @@ indices/u_unfilled_gen.c: $(srcdir)/indices/u_unfilled_gen.py
 util/u_format_table.c: $(srcdir)/util/u_format_table.py $(srcdir)/util/u_format_pack.py $(srcdir)/util/u_format_parse.py $(srcdir)/util/u_format.csv
 	$(AM_V_at)$(MKDIR_P) util
 	$(AM_V_GEN) $(PYTHON2) $(srcdir)/util/u_format_table.py $(srcdir)/util/u_format.csv > $@
+
+
+if NEED_GALLIUM_VL
+
+noinst_LTLIBRARIES += libgalliumvl.la
+
+libgalliumvl_la_CFLAGS = \
+	$(AM_CFLAGS) \
+	$(VL_CFLAGS) \
+	$(LIBDRM_CFLAGS) \
+	$(GALLIUM_PIPE_LOADER_DEFINES) \
+	-DPIPE_SEARCH_DIR=\"$(libdir)/gallium-pipe\"
+
+if HAVE_GALLIUM_STATIC_TARGETS
+libgalliumvl_la_CFLAGS += \
+	-DGALLIUM_STATIC_TARGETS=1
+
+endif # HAVE_GALLIUM_STATIC_TARGETS
+
+libgalliumvl_la_SOURCES = \
+	$(VL_SOURCES)
+
+endif
diff --git a/src/gallium/auxiliary/Makefile.sources b/src/gallium/auxiliary/Makefile.sources
index 58d8af7..5f99d24 100644
--- a/src/gallium/auxiliary/Makefile.sources
+++ b/src/gallium/auxiliary/Makefile.sources
@@ -143,20 +143,41 @@ C_SOURCES := \
 	util/u_transfer.c \
 	util/u_resource.c \
 	util/u_upload_mgr.c \
-	util/u_vbuf.c \
-	vl/vl_csc.c \
+	util/u_vbuf.c
+
+VL_SOURCES := \
 	vl/vl_compositor.c \
+	vl/vl_compositor.h \
+	vl/vl_csc.c \
+	vl/vl_csc.h \
+	vl/vl_decoder.c \
+	vl/vl_decoder.h \
+	vl/vl_defines.h \
+	vl/vl_deint_filter.c \
+	vl/vl_deint_filter.h \
+	vl/vl_idct.c \
+	vl/vl_idct.h \
 	vl/vl_matrix_filter.c \
+	vl/vl_matrix_filter.h \
+	vl/vl_mc.c \
+	vl/vl_mc.h \
 	vl/vl_median_filter.c \
-	vl/vl_decoder.c \
-	vl/vl_mpeg12_decoder.c \
+	vl/vl_median_filter.h \
 	vl/vl_mpeg12_bitstream.c \
+	vl/vl_mpeg12_bitstream.h \
+	vl/vl_mpeg12_decoder.c \
+	vl/vl_mpeg12_decoder.h \
+	vl/vl_rbsp.h \
+	vl/vl_types.h \
+	vl/vl_vertex_buffers.c \
+	vl/vl_vertex_buffers.h \
+	vl/vl_video_buffer.c \
+	vl/vl_video_buffer.h \
+	vl/vl_vlc.h \
+	vl/vl_winsys_dri.c \
+	vl/vl_winsys.h \
 	vl/vl_zscan.c \
-        vl/vl_idct.c \
-	vl/vl_mc.c \
-        vl/vl_vertex_buffers.c \
-        vl/vl_video_buffer.c \
-	vl/vl_deint_filter.c
+	vl/vl_zscan.h
 
 GENERATED_SOURCES := \
 	indices/u_indices_gen.c \
diff --git a/src/gallium/state_trackers/omx/Makefile.am b/src/gallium/state_trackers/omx/Makefile.am
index 68eed02..e039f51 100644
--- a/src/gallium/state_trackers/omx/Makefile.am
+++ b/src/gallium/state_trackers/omx/Makefile.am
@@ -26,7 +26,8 @@ include $(top_srcdir)/src/gallium/Automake.inc
 AM_CFLAGS = \
 	$(GALLIUM_CFLAGS) \
 	$(VISIBILITY_CFLAGS) \
-	$(OMX_CFLAGS)
+	$(OMX_CFLAGS) \
+	$(VL_CFLAGS)
 
 noinst_LTLIBRARIES = libomxtracker.la
 
diff --git a/src/gallium/state_trackers/vdpau/Makefile.am b/src/gallium/state_trackers/vdpau/Makefile.am
index a74b5bf..3102493 100644
--- a/src/gallium/state_trackers/vdpau/Makefile.am
+++ b/src/gallium/state_trackers/vdpau/Makefile.am
@@ -29,7 +29,9 @@ VDPAU_MINOR = 0
 AM_CFLAGS = \
 	$(GALLIUM_CFLAGS) \
 	$(VISIBILITY_CFLAGS) \
-	$(VDPAU_CFLAGS)
+	$(VDPAU_CFLAGS) \
+	$(VL_CFLAGS)
+
 AM_CPPFLAGS = \
 	-I$(top_srcdir)/include \
 	-DVER_MAJOR=$(VDPAU_MAJOR) \
diff --git a/src/gallium/state_trackers/xvmc/Makefile.am b/src/gallium/state_trackers/xvmc/Makefile.am
index abaa88e..f6e56a6 100644
--- a/src/gallium/state_trackers/xvmc/Makefile.am
+++ b/src/gallium/state_trackers/xvmc/Makefile.am
@@ -26,7 +26,9 @@ include $(top_srcdir)/src/gallium/Automake.inc
 
 AM_CFLAGS = \
 	$(GALLIUM_CFLAGS) \
-	$(XVMC_CFLAGS)
+	$(VISIBILITY_CFLAGS) \
+	$(XVMC_CFLAGS) \
+	$(VL_CFLAGS)
 
 noinst_LTLIBRARIES = libxvmctracker.la
 
@@ -44,7 +46,7 @@ noinst_PROGRAMS = \
 
 noinst_HEADERS = tests/testlib.h
 
-TEST_LIBS = $(XVMC_LIBS) -lXvMCW
+TEST_LIBS = $(XVMC_LIBS) $(VL_LIBS) -lXvMCW
 tests_test_context_SOURCES = tests/test_context.c tests/testlib.c
 tests_test_context_LDADD = $(TEST_LIBS)
 tests_test_surface_SOURCES = tests/test_surface.c tests/testlib.c
diff --git a/src/gallium/targets/omx/Makefile.am b/src/gallium/targets/omx/Makefile.am
index 4045548..2889616 100644
--- a/src/gallium/targets/omx/Makefile.am
+++ b/src/gallium/targets/omx/Makefile.am
@@ -7,8 +7,7 @@ omxdir = $(OMX_LIB_INSTALL_DIR)
 omx_LTLIBRARIES = libomx_mesa.la
 
 nodist_EXTRA_libomx_mesa_la_SOURCES = dummy.cpp
-libomx_mesa_la_SOURCES = \
-	$(top_srcdir)/src/gallium/auxiliary/vl/vl_winsys_dri.c
+libomx_mesa_la_SOURCES =
 
 libomx_mesa_la_LDFLAGS = \
 	-shared \
@@ -25,14 +24,17 @@ endif # HAVE_LD_VERSION_SCRIPT
 
 libomx_mesa_la_LIBADD = \
 	$(top_builddir)/src/gallium/state_trackers/omx/libomxtracker.la \
+	$(top_builddir)/src/gallium/auxiliary/libgalliumvl.la \
 	$(top_builddir)/src/gallium/auxiliary/libgallium.la \
 	$(top_builddir)/src/util/libmesautil.la \
 	$(OMX_LIBS) \
+	$(VL_LIBS) \
+	$(LIBDRM_LIBS) \
 	$(GALLIUM_COMMON_LIB_DEPS)
 
 if HAVE_GALLIUM_STATIC_TARGETS
 
-STATIC_TARGET_CPPFLAGS = -DGALLIUM_STATIC_TARGETS=1
+STATIC_TARGET_CPPFLAGS =
 STATIC_TARGET_LIB_DEPS = \
 	$(top_builddir)/src/loader/libloader.la
 
@@ -80,10 +82,6 @@ libomx_mesa_la_LIBADD += $(STATIC_TARGET_LIB_DEPS)
 
 else # HAVE_GALLIUM_STATIC_TARGETS
 
-libomx_mesa_la_CPPFLAGS = \
-	$(GALLIUM_PIPE_LOADER_DEFINES) \
-	-DPIPE_SEARCH_DIR=\"$(libdir)/gallium-pipe\"
-
 # XXX: Use the pipe-loader-client over pipe-loader ?
 libomx_mesa_la_LIBADD += \
 	$(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader.la \
diff --git a/src/gallium/targets/pipe-loader/Makefile.am b/src/gallium/targets/pipe-loader/Makefile.am
index ee93078..ec610e6 100644
--- a/src/gallium/targets/pipe-loader/Makefile.am
+++ b/src/gallium/targets/pipe-loader/Makefile.am
@@ -36,9 +36,16 @@ AM_CPPFLAGS = \
 pipedir = $(libdir)/gallium-pipe
 pipe_LTLIBRARIES =
 
-PIPE_LIBS = \
+PIPE_LIBS =
+
+if NEED_GALLIUM_VL
+PIPE_LIBS += \
+	$(top_builddir)/src/gallium/auxiliary/libgalliumvl.la
+endif
+
+PIPE_LIBS += \
 	$(top_builddir)/src/gallium/auxiliary/libgallium.la \
-        $(top_builddir)/src/util/libmesautil.la \
+	$(top_builddir)/src/util/libmesautil.la \
 	$(top_builddir)/src/gallium/drivers/rbug/librbug.la \
 	$(top_builddir)/src/gallium/drivers/trace/libtrace.la \
 	$(top_builddir)/src/gallium/drivers/galahad/libgalahad.la \
diff --git a/src/gallium/targets/vdpau/Makefile.am b/src/gallium/targets/vdpau/Makefile.am
index 440cf22..485b6e5 100644
--- a/src/gallium/targets/vdpau/Makefile.am
+++ b/src/gallium/targets/vdpau/Makefile.am
@@ -7,8 +7,7 @@ vdpaudir = $(VDPAU_LIB_INSTALL_DIR)
 vdpau_LTLIBRARIES = libvdpau_gallium.la
 
 nodist_EXTRA_libvdpau_gallium_la_SOURCES = dummy.cpp
-libvdpau_gallium_la_SOURCES = \
-	$(top_srcdir)/src/gallium/auxiliary/vl/vl_winsys_dri.c
+libvdpau_gallium_la_SOURCES =
 
 libvdpau_gallium_la_LDFLAGS = \
 	-shared \
@@ -28,11 +27,13 @@ libvdpau_gallium_la_LDFLAGS += \
 	-Wl,--dynamic-list=$(top_srcdir)/src/gallium/targets/dri-vdpau.dyn
 endif # HAVE_LD_DYNAMIC_LIST
 
+# XXX: libvdpau_gallium does _not_ link against libvdpau
 libvdpau_gallium_la_LIBADD = \
 	$(top_builddir)/src/gallium/state_trackers/vdpau/libvdpautracker.la \
+	$(top_builddir)/src/gallium/auxiliary/libgalliumvl.la \
 	$(top_builddir)/src/gallium/auxiliary/libgallium.la \
 	$(top_builddir)/src/util/libmesautil.la \
-	$(VDPAU_LIBS) \
+	$(VL_LIBS) \
 	$(LIBDRM_LIBS) \
 	$(GALLIUM_COMMON_LIB_DEPS)
 
@@ -40,7 +41,7 @@ libvdpau_gallium_la_LIBADD = \
 if HAVE_GALLIUM_STATIC_TARGETS
 
 MEGADRIVERS =
-STATIC_TARGET_CPPFLAGS = -DGALLIUM_STATIC_TARGETS=1
+STATIC_TARGET_CPPFLAGS =
 STATIC_TARGET_LIB_DEPS = \
 	$(top_builddir)/src/loader/libloader.la
 
@@ -91,10 +92,6 @@ libvdpau_gallium_la_LIBADD += $(STATIC_TARGET_LIB_DEPS)
 
 else # HAVE_GALLIUM_STATIC_TARGETS
 
-libvdpau_gallium_la_CPPFLAGS = \
-	$(GALLIUM_PIPE_LOADER_DEFINES) \
-	-DPIPE_SEARCH_DIR=\"$(libdir)/gallium-pipe\"
-
 # XXX: Use the pipe-loader-client over pipe-loader ?
 libvdpau_gallium_la_LIBADD += \
 	$(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader.la \
diff --git a/src/gallium/targets/xvmc/Makefile.am b/src/gallium/targets/xvmc/Makefile.am
index 884bccf..896b61d 100644
--- a/src/gallium/targets/xvmc/Makefile.am
+++ b/src/gallium/targets/xvmc/Makefile.am
@@ -7,8 +7,7 @@ xvmcdir = $(XVMC_LIB_INSTALL_DIR)
 xvmc_LTLIBRARIES = libXvMCgallium.la
 
 nodist_EXTRA_libXvMCgallium_la_SOURCES = dummy.cpp
-libXvMCgallium_la_SOURCES = \
-	$(top_srcdir)/src/gallium/auxiliary/vl/vl_winsys_dri.c
+libXvMCgallium_la_SOURCES =
 
 libXvMCgallium_la_LDFLAGS = \
 	-shared \
@@ -25,9 +24,11 @@ endif # HAVE_LD_VERSION_SCRIPT
 
 libXvMCgallium_la_LIBADD = \
 	$(top_builddir)/src/gallium/state_trackers/xvmc/libxvmctracker.la \
+	$(top_builddir)/src/gallium/auxiliary/libgalliumvl.la \
 	$(top_builddir)/src/gallium/auxiliary/libgallium.la \
 	$(top_builddir)/src/util/libmesautil.la \
 	$(XVMC_LIBS) \
+	$(VL_LIBS) \
 	$(LIBDRM_LIBS) \
 	$(GALLIUM_COMMON_LIB_DEPS)
 
@@ -35,7 +36,7 @@ libXvMCgallium_la_LIBADD = \
 if HAVE_GALLIUM_STATIC_TARGETS
 
 MEGADRIVERS =
-STATIC_TARGET_CPPFLAGS = -DGALLIUM_STATIC_TARGETS=1
+STATIC_TARGET_CPPFLAGS =
 STATIC_TARGET_LIB_DEPS = \
 	$(top_builddir)/src/loader/libloader.la
 
@@ -64,10 +65,6 @@ libXvMCgallium_la_LIBADD += $(STATIC_TARGET_LIB_DEPS)
 
 else # HAVE_GALLIUM_STATIC_TARGETS
 
-libXvMCgallium_la_CPPFLAGS = \
-	$(GALLIUM_PIPE_LOADER_DEFINES) \
-	-DPIPE_SEARCH_DIR=\"$(libdir)/gallium-pipe\"
-
 # XXX: Use the pipe-loader-client over pipe-loader ?
 libXvMCgallium_la_LIBADD += \
 	$(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader.la \
-- 
2.1.0



More information about the mesa-dev mailing list