[PATCHv2 2/4] st/xa: use pipe-loader to get screen (original) (raw)
Rob Clark robdclark at gmail.com
Mon Feb 10 10:34:19 PST 2014
- Previous message: [PATCHv2 1/4] pipe-loader: split out "client" version
- Next message: [PATCHv2 2/4] st/xa: use pipe-loader to get screen
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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/state_trackers/xa/Makefile.am | 1 + src/gallium/state_trackers/xa/xa_priv.h | 1 + src/gallium/state_trackers/xa/xa_tracker.c | 9 +++- 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 | 68 +++++++++++++++++++++++++++ src/gallium/targets/xa/xa.c | 49 +++++++++++++++++++ src/gallium/targets/xa/xa.h | 37 +++++++++++++++ src/gallium/targets/xa/xatracker.pc.in | 9 ++++ 12 files changed, 182 insertions(+), 105 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/xa.c create mode 100644 src/gallium/targets/xa/xa.h 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/state_trackers/xa/Makefile.am b/src/gallium/state_trackers/xa/Makefile.am
index 7d0b366..af79ccd 100644
--- a/src/gallium/state_trackers/xa/Makefile.am
+++ b/src/gallium/state_trackers/xa/Makefile.am
@@ -29,6 +29,7 @@ AM_CFLAGS =
$(VISIBILITY_CFLAGS)
AM_CPPFLAGS =
+ -I$(top_srcdir)/src/gallium/targets/xa
-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..6943a29 100644
--- a/src/gallium/state_trackers/xa/xa_tracker.c
+++ b/src/gallium/state_trackers/xa/xa_tracker.c
@@ -28,8 +28,10 @@
#include "xa_tracker.h"
#include "xa_priv.h"
+#include "xa.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 +145,9 @@ xa_tracker_create(int drm_fd)
if (!xa)
return NULL;
- xa->screen = driver_descriptor.create_screen(drm_fd);
+ xa->dev = xa_pipe_probe(drm_fd);
+ if (xa->dev)
+ xa->screen = xa_pipe_create_screen(xa->dev);
if (!xa->screen)
goto out_no_screen;
@@ -190,6 +194,8 @@ xa_tracker_create(int drm_fd)
out_no_pipe:
xa->screen->destroy(xa->screen);
out_no_screen:
+ if (xa->dev)
+ xa_pipe_release(xa->dev);
free(xa);
return NULL;
}
@@ -200,6 +206,7 @@ xa_tracker_destroy(struct xa_tracker *xa)
free(xa->supported_formats);
xa_context_destroy(xa->default_ctx);
xa->screen->destroy(xa->screen);
+ xa_pipe_release(xa->dev);
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 (XAMAJOR):(XA_MAJOR):(XAMAJOR):(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 - (MKDIRP)(MKDIR_P) (MKDIRP)(top_builddir)/$(LIB_DIR)/gallium - ln -f .libs/libxatracker.so* (topbuilddir)/(top_builddir)/(topbuilddir)/(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..dddb05c --- /dev/null +++ b/src/gallium/targets/xa/Makefile.am @@ -0,0 +1,68 @@ +# 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
+ $(GALLIUM_PIPE_LOADER_DEFINES)
+ -DPIPE_SEARCH_DIR="$(libdir)/gallium-pipe"
+
+AM_CFLAGS =
+ $(GALLIUM_CFLAGS)
+ $(LIBUDEV_CFLAGS)
+ $(LIBDRM_CFLAGS)
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = xatracker.pc
+
+lib_LTLIBRARIES = libxatracker.la
+
+libxatracker_la_SOURCES = xa.c
+
+libxatracker_la_LIBADD =
+ $(GALLIUM_PIPE_LOADER_LIBS)
+ $(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader.la
+ $(top_builddir)/src/gallium/state_trackers/xa/libxatracker.la
+ $(top_builddir)/src/gallium/auxiliary/libgallium.la
+ $(LIBUDEV_LIBS)
+ $(LIBDRM_LIBS)
+
+libxatracker_la_LDFLAGS =
+ -no-undefined
+ -version-number (XAMAJOR):(XA_MAJOR):(XAMAJOR):(XA_MINOR):$(XA_TINY)
+
+# FIXME: this shouldn't be needed
+if HAVE_MESA_LLVM
+libxatracker_la_LINK = (CXXLINK)(CXXLINK) (CXXLINK)(libxatracker_la_LDFLAGS)
+# Mention a dummy pure C++ file to trigger generation of the $(LINK) variable
+nodist_EXTRA_libxatracker_la_SOURCES = dummy-cpp.cpp
+
+libxatracker_la_LIBADD += $(LLVM_LIBS)
+libxatracker_la_LDFLAGS += $(LLVM_LDFLAGS)
+else
+libxatracker_la_LINK = (CXXLINK)(CXXLINK) (CXXLINK)(libxatracker_la_LDFLAGS)
+# Mention a dummy pure C file to trigger generation of the $(LINK) variable
+nodist_EXTRA_libxatracker_la_SOURCES = dummy-c.c
+endif
diff --git a/src/gallium/targets/xa/xa.c b/src/gallium/targets/xa/xa.c
new file mode 100644
index 0000000..e3ceaf6
--- /dev/null
+++ b/src/gallium/targets/xa/xa.c
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2014 Red Hat
+ *
+ * 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.
+ *
+ * Authors:
+ * Rob Clark <robclark at freedesktop.org>
+ */
+
+#include "xa.h"
+
+struct pipe_loader_device *
+xa_pipe_probe(int fd)
+{
+ struct pipe_loader_device *dev;
+ if (pipe_loader_drm_probe_fd(&dev, fd))
+ return dev;
+ return NULL;
+}
+
+void
+xa_pipe_release(struct pipe_loader_device *dev)
+{
+ if (dev)
+ pipe_loader_release(&dev, 1);
+}
+
+struct pipe_screen *
+xa_pipe_create_screen(struct pipe_loader_device dev)
+{
+ return pipe_loader_create_screen(dev, PIPE_SEARCH_DIR);
+}
diff --git a/src/gallium/targets/xa/xa.h b/src/gallium/targets/xa/xa.h
new file mode 100644
index 0000000..9de6851
--- /dev/null
+++ b/src/gallium/targets/xa/xa.h
@@ -0,0 +1,37 @@
+/
+ * Copyright (C) 2014 Red Hat
+ *
+ * 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.
+ *
+ * Authors:
+ * Rob Clark <robclark at freedesktop.org>
+ */
+
+#ifndef XA_H
+#define XA_H
+
+#include "pipe/p_screen.h"
+#include "pipe-loader/pipe_loader.h"
+
+struct pipe_loader_device *xa_pipe_probe(int fd);
+void xa_pipe_release(struct pipe_loader_device *dev);
+struct pipe_screen * xa_pipe_create_screen(struct pipe_loader_device dev);
+
+#endif / XA_H */
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
1.8.5.3
- Previous message: [PATCHv2 1/4] pipe-loader: split out "client" version
- Next message: [PATCHv2 2/4] st/xa: use pipe-loader to get screen
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]