graw-null: New target to ensure we always have a graw implementation available.

This commit is contained in:
José Fonseca 2010-05-06 14:20:13 +01:00
parent 2b322ad147
commit d5e741d6d8
4 changed files with 145 additions and 3 deletions

View file

@ -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([

View file

@ -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')

View file

@ -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 <stdio.h>
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 )
{
}

View file

@ -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'