diff --git a/SConstruct b/SConstruct index 02e99f6..93798b1 100644 --- a/SConstruct +++ b/SConstruct @@ -30,7 +30,7 @@ import common ####################################################################### # Configuration options -default_statetrackers = 'mesa' +default_statetrackers = ['mesa', 'python'] default_targets = 'graw-null' if common.default_platform in ('linux', 'freebsd', 'darwin'): diff --git a/src/gallium/state_trackers/python/SConscript b/src/gallium/state_trackers/python/SConscript index aadeaa0..37efc83 100644 --- a/src/gallium/state_trackers/python/SConscript +++ b/src/gallium/state_trackers/python/SConscript @@ -51,6 +51,9 @@ if 'python' in env['statetrackers']: env.Append(CPPDEFINES = ['HAVE_SOFTPIPE']) env.Prepend(LIBS = [softpipe]) + env.Prepend(LIBPATH = ['/home/tilman/devel/xorg/mesa/src/gallium/drivers/r600']) + env.Prepend(LIBPATH = ['/home/tilman/devel/xorg/mesa/src/gallium/winsys/r600/drm']) + env.Prepend(LIBS = ['r600', 'r600winsys']) env['no_import_lib'] = 1 env.SharedLibrary( diff --git a/src/gallium/state_trackers/python/st_device.c b/src/gallium/state_trackers/python/st_device.c index dce24bc..136c4ad 100644 --- a/src/gallium/state_trackers/python/st_device.c +++ b/src/gallium/state_trackers/python/st_device.c @@ -26,6 +26,7 @@ **************************************************************************/ +#include #include "pipe/p_screen.h" #include "pipe/p_context.h" #include "pipe/p_shader_tokens.h" @@ -87,6 +88,11 @@ st_device_create(boolean hardware) else screen = st_software_screen_create("softpipe"); + if (!screen) { + printf("no screen :(\n"); + goto no_screen; + } + screen = trace_screen_create(screen); if (!screen) goto no_screen; diff --git a/src/gallium/state_trackers/python/st_hardpipe_winsys.c b/src/gallium/state_trackers/python/st_hardpipe_winsys.c index c6743db..a28c0bf 100644 --- a/src/gallium/state_trackers/python/st_hardpipe_winsys.c +++ b/src/gallium/state_trackers/python/st_hardpipe_winsys.c @@ -34,6 +34,8 @@ #include "pipe/p_compiler.h" +#include + #ifdef PIPE_OS_WINDOWS #include #include @@ -205,8 +207,32 @@ st_hardpipe_load(void) struct pipe_screen * st_hardware_screen_create(void) { +#if 0 if(st_hardpipe_load()) return pfnGetGalliumScreenMESA(); else return st_software_screen_create(NULL); +#endif + void *ws; + int fd; + + fprintf(stderr, "opening drm etc\n"); + + fd = drmOpen ("radeon", NULL); + + if (fd < 0) { + fprintf(stderr, "drmOpen() failed\n"); + + return NULL; + } + + ws = r600_drm_winsys_create (fd); + + if (!ws) { + drmClose (fd); + fprintf(stderr, "cannot create winsys\n"); + return NULL; + } + + return r600_screen_create(ws); }