[Mesa-dev] [PATCHv3 2/4] st/xa: use pipe-loader to get screen
Emil Velikov
emil.l.velikov at gmail.com
Thu Feb 13 05:39:41 PST 2014
On 11/02/14 23:51, Rob Clark wrote:
> From: Rob Clark <robclark at freedesktop.org>
>
> This lets multiple gallium drivers use XA.
>
> Signed-off-by: Rob Clark <robclark at freedesktop.org>
> ---
> configure.ac | 9 +--
> src/gallium/auxiliary/pipe-loader/Makefile.am | 1 -
> src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c | 2 -
> src/gallium/state_trackers/xa/Makefile.am | 3 +
> src/gallium/state_trackers/xa/xa_priv.h | 1 +
> src/gallium/state_trackers/xa/xa_tracker.c | 7 ++-
> src/gallium/targets/Makefile.am | 8 +--
> src/gallium/targets/xa-vmwgfx/Makefile.am | 61 --------------------
> src/gallium/targets/xa-vmwgfx/vmw_target.c | 26 ---------
> src/gallium/targets/xa-vmwgfx/xatracker.pc.in | 9 ---
> src/gallium/targets/xa/Makefile.am | 67 ++++++++++++++++++++++
> src/gallium/targets/xa/xatracker.pc.in | 9 +++
> 12 files changed, 95 insertions(+), 108 deletions(-)
> delete mode 100644 src/gallium/targets/xa-vmwgfx/Makefile.am
> delete mode 100644 src/gallium/targets/xa-vmwgfx/vmw_target.c
> delete mode 100644 src/gallium/targets/xa-vmwgfx/xatracker.pc.in
> create mode 100644 src/gallium/targets/xa/Makefile.am
> create mode 100644 src/gallium/targets/xa/xatracker.pc.in
>
> diff --git a/configure.ac b/configure.ac
> index cba6301..29ca954 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -1270,6 +1270,7 @@ dnl XA configuration
> dnl
> if test "x$enable_xa" = xyes; then
> GALLIUM_STATE_TRACKERS_DIRS="xa $GALLIUM_STATE_TRACKERS_DIRS"
> + enable_gallium_loader=yes
> fi
> AM_CONDITIONAL(HAVE_ST_XA, test "x$enable_xa" = xyes)
>
> @@ -1743,7 +1744,7 @@ if test "x$with_gallium_drivers" != x; then
> xsvga)
> HAVE_GALLIUM_SVGA=yes
> GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga softpipe"
> - gallium_check_st "svga/drm" "dri-vmwgfx" "xa-vmwgfx"
> + gallium_check_st "svga/drm" "dri-vmwgfx" ""
> ;;
> xi915)
> HAVE_GALLIUM_I915=yes
> @@ -1962,7 +1963,7 @@ AC_SUBST([XVMC_MAJOR], 1)
> AC_SUBST([XVMC_MINOR], 0)
>
> AC_SUBST([XA_MAJOR], 2)
> -AC_SUBST([XA_MINOR], 1)
> +AC_SUBST([XA_MINOR], 2)
> AC_SUBST([XA_TINY], 0)
> AC_SUBST([XA_VERSION], "$XA_MAJOR.$XA_MINOR.$XA_TINY")
>
> @@ -2035,6 +2036,8 @@ AC_CONFIG_FILES([Makefile
> src/gallium/targets/egl-static/Makefile
> src/gallium/targets/gbm/Makefile
> src/gallium/targets/opencl/Makefile
> + src/gallium/targets/xa/Makefile
> + src/gallium/targets/xa/xatracker.pc
> src/gallium/targets/osmesa/Makefile
> src/gallium/targets/osmesa/osmesa.pc
> src/gallium/targets/pipe-loader/Makefile
> @@ -2046,8 +2049,6 @@ AC_CONFIG_FILES([Makefile
> src/gallium/targets/r600/xvmc/Makefile
> src/gallium/targets/libgl-xlib/Makefile
> src/gallium/targets/vdpau-nouveau/Makefile
> - src/gallium/targets/xa-vmwgfx/Makefile
> - src/gallium/targets/xa-vmwgfx/xatracker.pc
> src/gallium/targets/xvmc-nouveau/Makefile
> src/gallium/tests/trivial/Makefile
> src/gallium/tests/unit/Makefile
> diff --git a/src/gallium/auxiliary/pipe-loader/Makefile.am b/src/gallium/auxiliary/pipe-loader/Makefile.am
> index 72b4798..2901a71 100644
> --- a/src/gallium/auxiliary/pipe-loader/Makefile.am
> +++ b/src/gallium/auxiliary/pipe-loader/Makefile.am
> @@ -30,7 +30,6 @@ COMMON_LIBADD = \
> endif
>
> libpipe_loader_la_CFLAGS = \
> - -DSTANDALONE_LOADER \
> $(GALLIUM_PIPE_LOADER_DEFINES) \
> $(AM_CFLAGS) $(AM_CPPFLAGS)
> libpipe_loader_la_SOURCES = $(COMMON_SOURCES)
> diff --git a/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c b/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c
> index e53e8af..95a4f84 100644
> --- a/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c
> +++ b/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c
> @@ -47,9 +47,7 @@ static struct sw_winsys *(*backends[])() = {
> #ifdef HAVE_WINSYS_XLIB
> x11_sw_create,
> #endif
> -#ifndef STANDALONE_LOADER
> null_sw_create
> -#endif
> };
>
> int
> diff --git a/src/gallium/state_trackers/xa/Makefile.am b/src/gallium/state_trackers/xa/Makefile.am
> index 7d0b366..72486b9 100644
> --- a/src/gallium/state_trackers/xa/Makefile.am
> +++ b/src/gallium/state_trackers/xa/Makefile.am
> @@ -29,6 +29,9 @@ AM_CFLAGS = \
> $(VISIBILITY_CFLAGS)
>
> AM_CPPFLAGS = \
> + $(GALLIUM_PIPE_LOADER_DEFINES) \
> + -DPIPE_SEARCH_DIR=\"$(libdir)/gallium-pipe\" \
> + -I$(top_srcdir)/src/gallium/targets/xa \
^^ left out from the wrappers approach.
> -I$(top_srcdir)/src/gallium/ \
> -I$(top_srcdir)/src/gallium/winsys \
> -I$(top_srcdir)/src/gallium/drivers
> diff --git a/src/gallium/state_trackers/xa/xa_priv.h b/src/gallium/state_trackers/xa/xa_priv.h
> index ee182e7..b99c214 100644
> --- a/src/gallium/state_trackers/xa/xa_priv.h
> +++ b/src/gallium/state_trackers/xa/xa_priv.h
> @@ -74,6 +74,7 @@ struct xa_tracker {
> unsigned int format_map[XA_LAST_SURFACE_TYPE][2];
> int d_depth_bits_last;
> int ds_depth_bits_last;
> + struct pipe_loader_device *dev;
> struct pipe_screen *screen;
> struct xa_context *default_ctx;
> };
> diff --git a/src/gallium/state_trackers/xa/xa_tracker.c b/src/gallium/state_trackers/xa/xa_tracker.c
> index cda6501..794c0a3 100644
> --- a/src/gallium/state_trackers/xa/xa_tracker.c
> +++ b/src/gallium/state_trackers/xa/xa_tracker.c
> @@ -30,6 +30,7 @@
> #include "xa_priv.h"
> #include "pipe/p_state.h"
> #include "pipe/p_format.h"
> +#include "pipe-loader/pipe_loader.h"
> #include "state_tracker/drm_driver.h"
> #include "util/u_inlines.h"
>
> @@ -143,7 +144,8 @@ xa_tracker_create(int drm_fd)
> if (!xa)
> return NULL;
>
> - xa->screen = driver_descriptor.create_screen(drm_fd);
> + if (pipe_loader_drm_probe_fd(&xa->dev, drm_fd))
> + xa->screen = pipe_loader_create_screen(xa->dev, PIPE_SEARCH_DIR);
> if (!xa->screen)
> goto out_no_screen;
>
> @@ -190,6 +192,8 @@ xa_tracker_create(int drm_fd)
> out_no_pipe:
> xa->screen->destroy(xa->screen);
> out_no_screen:
> + if (xa->dev)
> + pipe_loader_release(&xa->dev, 1);
> free(xa);
> return NULL;
> }
> @@ -200,6 +204,7 @@ xa_tracker_destroy(struct xa_tracker *xa)
> free(xa->supported_formats);
> xa_context_destroy(xa->default_ctx);
> xa->screen->destroy(xa->screen);
> + pipe_loader_release(&xa->dev, 1);
> free(xa);
> }
>
> diff --git a/src/gallium/targets/Makefile.am b/src/gallium/targets/Makefile.am
> index e356020..a7c70f4 100644
> --- a/src/gallium/targets/Makefile.am
> +++ b/src/gallium/targets/Makefile.am
> @@ -34,6 +34,10 @@ if HAVE_GALLIUM_GBM
> SUBDIRS += gbm
> endif
>
> +if HAVE_ST_XA
> +SUBDIRS += xa
> +endif
> +
> if HAVE_CLOVER
> SUBDIRS += opencl
> endif
> @@ -42,10 +46,6 @@ if HAVE_GALLIUM_SVGA
> if HAVE_DRI
> SUBDIRS += dri-vmwgfx
> endif
> -
> -if HAVE_ST_XA
> -SUBDIRS += xa-vmwgfx
> -endif
> endif
>
> if HAVE_GALLIUM_FREEDRENO
> diff --git a/src/gallium/targets/xa-vmwgfx/Makefile.am b/src/gallium/targets/xa-vmwgfx/Makefile.am
> deleted file mode 100644
> index 6fe0510..0000000
> --- a/src/gallium/targets/xa-vmwgfx/Makefile.am
> +++ /dev/null
> @@ -1,61 +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 = \
> - -Wall -pedantic \
> - $(GALLIUM_CFLAGS) \
> - $(XORG_CFLAGS)
> -AM_CPPFLAGS = \
> - -I$(top_srcdir)/src/gallium/drivers \
> - -I$(top_srcdir)/src/gallium/winsys
> -
> -pkgconfigdir = $(libdir)/pkgconfig
> -pkgconfig_DATA = xatracker.pc
> -
> -lib_LTLIBRARIES = libxatracker.la
> -
> -libxatracker_la_SOURCES = vmw_target.c
> -
> -libxatracker_la_LDFLAGS = -version-number $(XA_MAJOR):$(XA_MINOR):$(XA_TINY)
> -
> -libxatracker_la_LIBADD = \
> - $(top_builddir)/src/gallium/auxiliary/libgallium.la \
> - $(top_builddir)/src/gallium/state_trackers/xa/libxatracker.la \
> - $(top_builddir)/src/gallium/winsys/svga/drm/libsvgadrm.la \
> - $(top_builddir)/src/gallium/drivers/svga/libsvga.la \
> - $(top_builddir)/src/gallium/drivers/trace/libtrace.la \
> - $(top_builddir)/src/gallium/drivers/rbug/librbug.la
> -
> -nodist_EXTRA_libxatracker_la_SOURCES = dummy.cpp
> -
> -if HAVE_MESA_LLVM
> -libxatracker_la_LDFLAGS += $(LLVM_LDFLAGS)
> -libxatracker_la_LIBADD += $(LLVM_LIBS)
> -endif
> -
> -# 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: libxatracker.la
> - $(MKDIR_P) $(top_builddir)/$(LIB_DIR)/gallium
> - ln -f .libs/libxatracker.so* $(top_builddir)/$(LIB_DIR)/gallium/
> diff --git a/src/gallium/targets/xa-vmwgfx/vmw_target.c b/src/gallium/targets/xa-vmwgfx/vmw_target.c
> deleted file mode 100644
> index 1087801..0000000
> --- a/src/gallium/targets/xa-vmwgfx/vmw_target.c
> +++ /dev/null
> @@ -1,26 +0,0 @@
> -
> -#include "target-helpers/inline_debug_helper.h"
> -#include "state_tracker/drm_driver.h"
> -#include "svga/drm/svga_drm_public.h"
> -#include "svga/svga_public.h"
> -
> -static struct pipe_screen *
> -create_screen(int fd)
> -{
> - struct svga_winsys_screen *sws;
> - struct pipe_screen *screen;
> -
> - sws = svga_drm_winsys_screen_create(fd);
> - if (!sws)
> - return NULL;
> -
> - screen = svga_screen_create(sws);
> - if (!screen)
> - return NULL;
> -
> - screen = debug_screen_wrap(screen);
> -
> - return screen;
> -}
> -
> -DRM_DRIVER_DESCRIPTOR("vmwgfx", "vmwgfx", create_screen, NULL)
> diff --git a/src/gallium/targets/xa-vmwgfx/xatracker.pc.in b/src/gallium/targets/xa-vmwgfx/xatracker.pc.in
> deleted file mode 100644
> index c99d8d6..0000000
> --- a/src/gallium/targets/xa-vmwgfx/xatracker.pc.in
> +++ /dev/null
> @@ -1,9 +0,0 @@
> -prefix=@prefix@
> -exec_prefix=${prefix}
> -libdir=@libdir@
> -includedir=@includedir@
> -
> -Name: xatracker
> -Description: Xorg Gallium3D acceleration library
> -Version: @XA_VERSION@
> -Libs: -L${libdir} -lxatracker
> diff --git a/src/gallium/targets/xa/Makefile.am b/src/gallium/targets/xa/Makefile.am
> new file mode 100644
> index 0000000..e305dbf
> --- /dev/null
> +++ b/src/gallium/targets/xa/Makefile.am
> @@ -0,0 +1,67 @@
> +# 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_CPPFLAGS = \
> + -I$(top_srcdir)/include \
> + -I$(top_srcdir)/src/gallium/state_trackers/xa \
> + -I$(top_srcdir)/src/gallium/winsys
> +
> +AM_CFLAGS = \
> + $(GALLIUM_CFLAGS) \
> + $(LIBUDEV_CFLAGS) \
Please drop the libudev "fun"
> + $(LIBDRM_CFLAGS)
> +
> +pkgconfigdir = $(libdir)/pkgconfig
> +pkgconfig_DATA = xatracker.pc
> +
> +lib_LTLIBRARIES = libxatracker.la
> +
> +libxatracker_la_SOURCES =
> +
> +libxatracker_la_LIBADD = \
> + $(GALLIUM_PIPE_LOADER_LIBS) \
> + $(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader.la \
> + $(top_builddir)/src/gallium/winsys/sw/null/libws_null.la \
> + $(top_builddir)/src/gallium/state_trackers/xa/libxatracker.la \
> + $(top_builddir)/src/gallium/auxiliary/libgallium.la \
> + $(LIBUDEV_LIBS) \
Same here
> + $(LIBDRM_LIBS)
> +
> +libxatracker_la_LDFLAGS = \
> + -no-undefined \
> + -version-number $(XA_MAJOR):$(XA_MINOR):$(XA_TINY)
> +
> +# FIXME: this shouldn't be needed
Drop the comment, it refers to the *_LINK line
> +if HAVE_MESA_LLVM
> +# Mention a dummy pure C++ file to trigger generation of the $(LINK) variable
> +nodist_EXTRA_libxatracker_la_SOURCES = dummy-cpp.cpp
Move before the HAVE_MESA_LLVM. It will translate to no-on if not required.
> +
> +libxatracker_la_LIBADD += $(LLVM_LIBS)
> +libxatracker_la_LDFLAGS += $(LLVM_LDFLAGS)
> +else
> +# Mention a dummy pure C file to trigger generation of the $(LINK) variable
> +nodist_EXTRA_libxatracker_la_SOURCES = dummy-c.c
> +endif
Drop the else hunk
> +
> +include $(top_srcdir)/install-lib-links.mk
> diff --git a/src/gallium/targets/xa/xatracker.pc.in b/src/gallium/targets/xa/xatracker.pc.in
> new file mode 100644
> index 0000000..c99d8d6
> --- /dev/null
> +++ b/src/gallium/targets/xa/xatracker.pc.in
> @@ -0,0 +1,9 @@
> +prefix=@prefix@
> +exec_prefix=${prefix}
> +libdir=@libdir@
> +includedir=@includedir@
> +
> +Name: xatracker
> +Description: Xorg Gallium3D acceleration library
> +Version: @XA_VERSION@
> +Libs: -L${libdir} -lxatracker
>
More information about the mesa-dev
mailing list