From e57405e8d516c09b890c6f1c3bd8fe7780417c95 Mon Sep 17 00:00:00 2001 From: Jakob Bornecrantz Date: Fri, 26 Mar 2010 14:47:20 +0100 Subject: [PATCH] swrastg: Use llvmpipe if built but only on scons --- src/gallium/targets/dri-swrast/Makefile | 2 +- src/gallium/targets/dri-swrast/SConscript | 16 +++++++++--- .../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 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; } -- 2.30.2