[Mesa-dev] [PATCH 2/3] st/xa: use pipe-loader to get screen

Rob Clark robdclark at gmail.com
Sat Feb 8 14:41:56 PST 2014


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                                  |  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



More information about the mesa-dev mailing list