Mesa (master): winsys/drm: Add swrast.

Chia-I Wu olv at kemper.freedesktop.org
Fri Jan 22 08:50:14 UTC 2010


Module: Mesa
Branch: master
Commit: a1306f4ef6f83a86d03720641f3cdc5e13485fa6
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a1306f4ef6f83a86d03720641f3cdc5e13485fa6

Author: Chia-I Wu <olvaffe at gmail.com>
Date:   Fri Jan 22 15:51:51 2010 +0800

winsys/drm: Add swrast.

The swrast winsys always returns NULL when drm_api_create is called.

---

 configs/default                                    |    4 ++--
 configure.ac                                       |   12 ++++++++++++
 docs/egl.html                                      |   10 ++++++++++
 src/gallium/winsys/drm/swrast/Makefile             |   12 ++++++++++++
 src/gallium/winsys/drm/swrast/core/Makefile        |   10 ++++++++++
 .../winsys/drm/swrast/core/swrast_drm_api.c        |   13 +++++++++++++
 src/gallium/winsys/drm/swrast/egl_g3d/Makefile     |   12 ++++++++++++
 src/gallium/winsys/drm/swrast/egl_g3d/dummy.c      |    1 +
 8 files changed, 72 insertions(+), 2 deletions(-)

diff --git a/configs/default b/configs/default
index 6863495..2665f52 100644
--- a/configs/default
+++ b/configs/default
@@ -100,8 +100,8 @@ GALLIUM_DIRS = auxiliary drivers state_trackers
 GALLIUM_AUXILIARIES = $(TOP)/src/gallium/auxiliary/libgallium.a
 GALLIUM_DRIVERS_DIRS = softpipe failover svga i915 i965 r300 trace identity
 GALLIUM_DRIVERS = $(foreach DIR,$(GALLIUM_DRIVERS_DIRS),$(TOP)/src/gallium/drivers/$(DIR)/lib$(DIR).a)
-GALLIUM_WINSYS_DIRS = xlib egl_xlib
-GALLIUM_WINSYS_DRM_DIRS =
+GALLIUM_WINSYS_DIRS = drm xlib egl_xlib
+GALLIUM_WINSYS_DRM_DIRS = swrast
 GALLIUM_STATE_TRACKERS_DIRS = glx
 
 # native displays EGL should support
diff --git a/configure.ac b/configure.ac
index bb011ab..d6e32f5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1311,6 +1311,18 @@ if test "x$enable_gallium_nouveau" = xyes; then
     GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nv04 nv10 nv20 nv30 nv40 nv50"
 fi
 
+dnl
+dnl Gallium swrast configuration
+dnl
+AC_ARG_ENABLE([gallium-swrast],
+    [AS_HELP_STRING([--enable-gallium-swrast],
+        [build gallium swrast @<:@default=disabled@:>@])],
+    [enable_gallium_swrast="$enableval"],
+    [enable_gallium_swrast=auto])
+if test "x$enable_gallium_swrast" = xyes; then
+    GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS swrast"
+fi
+
 dnl prepend CORE_DIRS to SRC_DIRS
 SRC_DIRS="$CORE_DIRS $SRC_DIRS"
 
diff --git a/docs/egl.html b/docs/egl.html
index 5561d1a..efc7b1e 100644
--- a/docs/egl.html
+++ b/docs/egl.html
@@ -82,6 +82,15 @@ They will <em>not</em> be built without the <code>egl_g3d</code> state
 tracker.</p>
 
 </li>
+
+<li><code>--enable-gallium-swrast</code>
+
+<p>This option is not specific to EGL.  But if there is no driver for your
+hardware, or you are experiencing problems with the hardware driver, you can
+enable the swrast DRM driver.  It is a dummy driver and EGL will fallback to
+software rendering automatically.</p>
+
+</li>
 </ul>
 
 <h3>OpenGL</h3>
@@ -159,6 +168,7 @@ tracker to build.  The available drivers are</p>
 <li><code>egl_<dpy>_i965</code></li>
 <li><code>egl_<dpy>_radeon</code></li>
 <li><code>egl_<dpy>_nouveau</code></li>
+<li><code>egl_<dpy>_swrast</code></li>
 <li><code>egl_<dpy>_vmwgfx</code></li>
 </ul>
 
diff --git a/src/gallium/winsys/drm/swrast/Makefile b/src/gallium/winsys/drm/swrast/Makefile
new file mode 100644
index 0000000..363b895
--- /dev/null
+++ b/src/gallium/winsys/drm/swrast/Makefile
@@ -0,0 +1,12 @@
+# src/gallium/winsys/drm/swrast/Makefile
+TOP = ../../../../..
+include $(TOP)/configs/current
+
+SUBDIRS = core $(GALLIUM_STATE_TRACKERS_DIRS)
+
+default install clean:
+	@for dir in $(SUBDIRS) ; do \
+		if [ -d $$dir ] ; then \
+			(cd $$dir && $(MAKE) $@) || exit 1; \
+		fi \
+	done
diff --git a/src/gallium/winsys/drm/swrast/core/Makefile b/src/gallium/winsys/drm/swrast/core/Makefile
new file mode 100644
index 0000000..93931ae
--- /dev/null
+++ b/src/gallium/winsys/drm/swrast/core/Makefile
@@ -0,0 +1,10 @@
+# src/gallium/winsys/drm/swrast/core/Makefile
+
+TOP = ../../../../../..
+include $(TOP)/configs/current
+
+LIBNAME = swrastdrm
+
+C_SOURCES = swrast_drm_api.c
+
+include ../../../../Makefile.template
diff --git a/src/gallium/winsys/drm/swrast/core/swrast_drm_api.c b/src/gallium/winsys/drm/swrast/core/swrast_drm_api.c
new file mode 100644
index 0000000..8c9f80e
--- /dev/null
+++ b/src/gallium/winsys/drm/swrast/core/swrast_drm_api.c
@@ -0,0 +1,13 @@
+#include "state_tracker/drm_api.h"
+
+static struct drm_api swrast_drm_api =
+{
+   .name = "swrast",
+};
+
+struct drm_api *
+drm_api_create()
+{
+   (void) swrast_drm_api;
+   return NULL;
+}
diff --git a/src/gallium/winsys/drm/swrast/egl_g3d/Makefile b/src/gallium/winsys/drm/swrast/egl_g3d/Makefile
new file mode 100644
index 0000000..f0d051e
--- /dev/null
+++ b/src/gallium/winsys/drm/swrast/egl_g3d/Makefile
@@ -0,0 +1,12 @@
+TOP = ../../../../../..
+include $(TOP)/configs/current
+
+EGL_DRIVER_NAME = swrast
+EGL_DRIVER_SOURCES = dummy.c
+EGL_DRIVER_LIBS =
+
+EGL_DRIVER_PIPES = \
+	$(TOP)/src/gallium/winsys/drm/swrast/core/libswrastdrm.a \
+	$(TOP)/src/gallium/drivers/softpipe/libsoftpipe.a
+
+include ../../Makefile.egl_g3d
diff --git a/src/gallium/winsys/drm/swrast/egl_g3d/dummy.c b/src/gallium/winsys/drm/swrast/egl_g3d/dummy.c
new file mode 100644
index 0000000..4a1bc28
--- /dev/null
+++ b/src/gallium/winsys/drm/swrast/egl_g3d/dummy.c
@@ -0,0 +1 @@
+/* mklib expects at least one object file */




More information about the mesa-commit mailing list