From d5e741d6d8ebffefa2851677643c6a1aeeb1d431 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Thu, 6 May 2010 14:20:13 +0100 Subject: [PATCH] graw-null: New target to ensure we always have a graw implementation available. --- src/gallium/targets/SConscript | 5 +- src/gallium/targets/graw-null/SConscript | 53 +++++++++++++++ src/gallium/targets/graw-null/graw_null.c | 83 +++++++++++++++++++++++ src/gallium/tests/raw/SConscript | 7 +- 4 files changed, 145 insertions(+), 3 deletions(-) create mode 100644 src/gallium/targets/graw-null/SConscript create mode 100644 src/gallium/targets/graw-null/graw_null.c diff --git a/src/gallium/targets/SConscript b/src/gallium/targets/SConscript index 1292d4f6193..be5db88e41c 100644 --- a/src/gallium/targets/SConscript +++ b/src/gallium/targets/SConscript @@ -10,10 +10,13 @@ if 'gdi' in env['winsys']: 'libgl-gdi/SConscript', ]) -if 'graw-xlib' in env['winsys']: +if env['platform'] == 'linux' and 'xlib' in env['winsys'] and 'graw-xlib' in env['winsys']: SConscript([ 'graw-xlib/SConscript', ]) +else: + SConscript('graw-null/SConscript') + if env['dri']: SConscript([ diff --git a/src/gallium/targets/graw-null/SConscript b/src/gallium/targets/graw-null/SConscript new file mode 100644 index 00000000000..99b6f5f4251 --- /dev/null +++ b/src/gallium/targets/graw-null/SConscript @@ -0,0 +1,53 @@ +####################################################################### +# SConscript for xlib winsys + +Import('*') + +env = env.Clone() + +env.Prepend(LIBS = [ + ws_null, + trace, + identity, +# gallium, +]) + +env.Append(CPPPATH = [ + '#src/gallium/drivers', +]) + +if env['platform'] == 'windows': + # For trace + env.Append(LIBS = [ + 'ws2_32', + ]) + +sources = [ + 'graw_null.c', +] + +if True: + env.Append(CPPDEFINES = 'GALLIUM_SOFTPIPE') + env.Prepend(LIBS = [softpipe]) + +if env['llvm']: + env.Append(CPPDEFINES = 'GALLIUM_LLVMPIPE') + env.Tool('udis86') + env.Prepend(LIBS = [llvmpipe]) + +# Need this for trace, identity drivers referenced by +# gallium_wrap_screen(). +# +env.Prepend(LIBS = [gallium]) + +# TODO: write a wrapper function http://www.scons.org/wiki/WrapperFunctions +graw = env.SharedLibrary( + target ='graw', + source = sources, +) + +env.InstallSharedLibrary(graw, version=(1, 0)) + +graw = env.FindIxes(graw, 'SHLIBPREFIX', 'SHLIBSUFFIX') + +Export('graw') diff --git a/src/gallium/targets/graw-null/graw_null.c b/src/gallium/targets/graw-null/graw_null.c new file mode 100644 index 00000000000..293015bc6bc --- /dev/null +++ b/src/gallium/targets/graw-null/graw_null.c @@ -0,0 +1,83 @@ +#include "pipe/p_compiler.h" +#include "util/u_debug.h" +#include "util/u_memory.h" +#include "target-helpers/wrap_screen.h" +#include "sw/null/null_sw_winsys.h" + +#ifdef GALLIUM_SOFTPIPE +#include "softpipe/sp_public.h" +#endif + +#ifdef GALLIUM_LLVMPIPE +#include "llvmpipe/lp_public.h" +#endif + +/* Haven't figured out a decent way to build the helper code yet - + * #include it here temporarily. + */ +#include "sw/sw_public.h" +#include "sw/sw.c" + +#include "state_tracker/graw.h" + +#include + + +struct pipe_screen * +graw_init( void ) +{ + const char *default_driver; + const char *driver; + struct pipe_screen *screen = NULL; + struct sw_winsys *winsys = NULL; + + /* Create the underlying winsys, which performs presents to Xlib + * drawables: + */ + winsys = null_sw_create(); + if (winsys == NULL) + return NULL; + +#if defined(GALLIUM_LLVMPIPE) + default_driver = "llvmpipe"; +#elif defined(GALLIUM_SOFTPIPE) + default_driver = "softpipe"; +#else + default_driver = ""; +#endif + + driver = debug_get_option("GALLIUM_DRIVER", default_driver); + +#if defined(GALLIUM_LLVMPIPE) + if (screen == NULL && strcmp(driver, "llvmpipe") == 0) + screen = llvmpipe_create_screen( winsys ); +#endif + +#if defined(GALLIUM_SOFTPIPE) + if (screen == NULL) + screen = softpipe_create_screen( winsys ); +#endif + + /* Inject any wrapping layers we want to here: + */ + return gallium_wrap_screen( screen ); +} + + +void * +graw_create_window( int x, + int y, + unsigned width, + unsigned height, + enum pipe_format format ) +{ + static int dummy; + return &dummy; +} + + +void +graw_destroy_window( void *window ) +{ +} + diff --git a/src/gallium/tests/raw/SConscript b/src/gallium/tests/raw/SConscript index 1b172e070fe..8a92ac2c499 100644 --- a/src/gallium/tests/raw/SConscript +++ b/src/gallium/tests/raw/SConscript @@ -1,12 +1,15 @@ Import('*') -if 'graw-xlib' not in env['winsys']: +try: + graw +except NameError: + print 'warning: graw library not avaiable: skipping build of graw test' Return() env = env.Clone() env.Prepend(LIBPATH = [graw.dir]) -env.Prepend(LIBS = [graw.name]) +env.Prepend(LIBS = ['graw']) progs = [ 'clear' -- 2.30.2