summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJakob Bornecrantz <[email protected]>2010-03-26 14:47:20 +0100
committerJakob Bornecrantz <[email protected]>2010-03-26 14:56:26 +0100
commite57405e8d516c09b890c6f1c3bd8fe7780417c95 (patch)
tree3309702546a78e9649097b9c5925a116950406ed
parent7f91f2efb5b92a9ad8506c54643142f40f286d5c (diff)
swrastg: Use llvmpipe if built but only on scons
-rw-r--r--src/gallium/targets/dri-swrast/Makefile2
-rw-r--r--src/gallium/targets/dri-swrast/SConscript16
-rw-r--r--src/gallium/targets/dri-swrast/swrast_drm_api.c25
3 files changed, 34 insertions, 9 deletions
diff --git a/src/gallium/targets/dri-swrast/Makefile b/src/gallium/targets/dri-swrast/Makefile
index 3780da27550..fcfd690e438 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 e9f742c43ce..94ff99a0a90 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 211836d784f..224651603d1 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;
}