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.veli...@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 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev