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

Author: Jakob Bornecrantz <[email protected]>
Date:   Fri Mar 26 14:47:20 2010 +0100

swrastg: Use llvmpipe if built but only on scons

---

 src/gallium/targets/dri-swrast/Makefile         |    2 +-
 src/gallium/targets/dri-swrast/SConscript       |   16 ++++++++++++--
 src/gallium/targets/dri-swrast/swrast_drm_api.c |   25 ++++++++++++++++++----
 3 files changed, 34 insertions(+), 9 deletions(-)

diff --git a/src/gallium/targets/dri-swrast/Makefile 
b/src/gallium/targets/dri-swrast/Makefile
index 3780da2..fcfd690 100644
--- a/src/gallium/targets/dri-swrast/Makefile
+++ b/src/gallium/targets/dri-swrast/Makefile
@@ -3,7 +3,7 @@ include $(TOP)/configs/current
 
 LIBNAME = swrastg_dri.so
 
-DRIVER_DEFINES = -D__NOT_HAVE_DRM_H
+DRIVER_DEFINES = -D__NOT_HAVE_DRM_H -DGALLIUM_SOFTPIPE
 
 PIPE_DRIVERS = \
        $(TOP)/src/gallium/state_trackers/dri/sw/libdrisw.a \
diff --git a/src/gallium/targets/dri-swrast/SConscript 
b/src/gallium/targets/dri-swrast/SConscript
index e9f742c..94ff99a 100644
--- a/src/gallium/targets/dri-swrast/SConscript
+++ b/src/gallium/targets/dri-swrast/SConscript
@@ -1,7 +1,7 @@
 Import('*')
 
-if not 'softpipe' in env['drivers']:
-    print 'warning: softpipe driver not built skipping swrastg_dri.so'
+if not set(('softpipe', 'llvmpipe')).intersection(env['drivers']):
+    print 'warning: no supported pipe driver: skipping build of swrastg_dri.so'
     Return()
 
 env = drienv.Clone()
@@ -13,7 +13,6 @@ env.Append(CPPPATH = [
 env.Prepend(LIBS = [
     st_drisw,
     ws_dri,
-    softpipe,
     trace,
     mesa,
     glsl,
@@ -21,6 +20,17 @@ env.Prepend(LIBS = [
     COMMON_DRI_SW_OBJECTS
 ])
 
+if 'softpipe' in env['drivers']:
+    env.Append(CPPDEFINES = 'GALLIUM_SOFTPIPE')
+    env.Prepend(LIBS = [softpipe])
+
+if 'llvmpipe' in env['drivers']:
+    env.Tool('llvm')
+    if 'LLVM_VERSION' in env:
+        env.Append(CPPDEFINES = 'GALLIUM_LLVMPIPE')
+        env.Tool('udis86')
+        env.Prepend(LIBS = [llvmpipe])
+
 swrastg_sources = [
     'swrast_drm_api.c'
 ]
diff --git a/src/gallium/targets/dri-swrast/swrast_drm_api.c 
b/src/gallium/targets/dri-swrast/swrast_drm_api.c
index 211836d..2246516 100644
--- a/src/gallium/targets/dri-swrast/swrast_drm_api.c
+++ b/src/gallium/targets/dri-swrast/swrast_drm_api.c
@@ -28,12 +28,18 @@
 
 #include "pipe/p_compiler.h"
 #include "util/u_memory.h"
-
-#include "softpipe/sp_public.h"
 #include "state_tracker/drm_api.h"
 #include "state_tracker/sw_winsys.h"
 #include "dri_sw_winsys.h"
 
+#ifdef GALLIUM_SOFTPIPE
+#include "softpipe/sp_public.h"
+#endif
+
+#ifdef GALLIUM_LLVMPIPE
+#include "llvmpipe/lp_public.h"
+#endif
+
 static struct pipe_screen *
 swrast_create_screen(struct drm_api *api,
                      int drmFD,
@@ -57,15 +63,24 @@ swrast_create_screen(struct drm_api *api,
    if (winsys == NULL)
       return NULL;
 
-   screen = softpipe_create_screen( winsys );
-   if (screen == NULL)
+#ifdef GALLIUM_LLVMPIPE
+   if (!screen)
+      screen = llvmpipe_create_screen(winsys);
+#endif
+
+#ifdef GALLIUM_SOFTPIPE
+   if (!screen)
+      screen = softpipe_create_screen(winsys);
+#endif
+
+   if (!screen)
       goto fail;
 
    return screen;
 
 fail:
    if (winsys)
-      winsys->destroy( winsys );
+      winsys->destroy(winsys);
 
    return NULL;
 }

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to