From: Rob Clark <robcl...@freedesktop.org> This lets multiple gallium drivers use XA.
Signed-off-by: Rob Clark <robcl...@freedesktop.org> --- configure.ac | 8 ++-- src/gallium/state_trackers/xa/Makefile.am | 11 ++++- src/gallium/state_trackers/xa/xa_priv.h | 1 + src/gallium/state_trackers/xa/xa_tracker.c | 6 ++- src/gallium/state_trackers/xa/xatracker.pc.in | 9 ++++ src/gallium/targets/Makefile.am | 4 -- 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 ---- 9 files changed, 29 insertions(+), 106 deletions(-) create mode 100644 src/gallium/state_trackers/xa/xatracker.pc.in 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 diff --git a/configure.ac b/configure.ac index 2424dde..6f490fc 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 @@ -1959,7 +1960,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") @@ -2021,6 +2022,7 @@ AC_CONFIG_FILES([Makefile src/gallium/state_trackers/vdpau/Makefile src/gallium/state_trackers/vega/Makefile src/gallium/state_trackers/xa/Makefile + src/gallium/state_trackers/xa/xatracker.pc src/gallium/state_trackers/xvmc/Makefile src/gallium/targets/Makefile src/gallium/targets/dri-freedreno/Makefile @@ -2043,8 +2045,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/state_trackers/xa/Makefile.am b/src/gallium/state_trackers/xa/Makefile.am index 7d0b366..37ec0c4 100644 --- a/src/gallium/state_trackers/xa/Makefile.am +++ b/src/gallium/state_trackers/xa/Makefile.am @@ -25,6 +25,8 @@ include $(top_srcdir)/src/gallium/Automake.inc AM_CFLAGS = \ -Wall -pedantic \ + $(GALLIUM_PIPE_LOADER_DEFINES) \ + -DPIPE_SEARCH_DIR=\"$(libdir)/gallium-pipe\" \ $(GALLIUM_CFLAGS) \ $(VISIBILITY_CFLAGS) @@ -33,12 +35,19 @@ AM_CPPFLAGS = \ -I$(top_srcdir)/src/gallium/winsys \ -I$(top_srcdir)/src/gallium/drivers +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = xatracker.pc + xa_includedir = $(includedir) xa_include_HEADERS = \ xa_composite.h \ xa_context.h \ xa_tracker.h -noinst_LTLIBRARIES = libxatracker.la +lib_LTLIBRARIES = libxatracker.la libxatracker_la_SOURCES = $(C_SOURCES) +libxatracker_la_LIBADD = \ + $(GALLIUM_PIPE_LOADER_LIBS) \ + $(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader.la \ + $(top_builddir)/src/gallium/auxiliary/libgallium.la 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..840c361 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; @@ -200,6 +202,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); } @@ -363,6 +366,7 @@ xa_surface_from_handle(struct xa_tracker *xa, { struct winsys_handle whandle; memset(&whandle, 0, sizeof(whandle)); + whandle.type = DRM_API_HANDLE_TYPE_SHARED; whandle.handle = handle; whandle.stride = stride; return surface_create(xa, width, height, depth, stype, xa_format, flags, &whandle); diff --git a/src/gallium/state_trackers/xa/xatracker.pc.in b/src/gallium/state_trackers/xa/xatracker.pc.in new file mode 100644 index 0000000..c99d8d6 --- /dev/null +++ b/src/gallium/state_trackers/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 diff --git a/src/gallium/targets/Makefile.am b/src/gallium/targets/Makefile.am index e356020..4490808 100644 --- a/src/gallium/targets/Makefile.am +++ b/src/gallium/targets/Makefile.am @@ -42,10 +42,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 -- 1.8.5.3 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev