[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