From db2e1518ff4ecb4a394076321ea5cdda3483ccbe Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Thu, 25 Feb 2010 17:02:52 +0000 Subject: scons: Always build trace driver There are so many state trackers and winsys that rely on it for debug building, and trace can really build anywhere and is thin so there's no point is making it an option. Based on Xavier Chantry 's patch: "I also removed the trace check in xlib SConscript which is now useless, and that script seems to deal with the cell driver, so I added cell in the check for supported drivers." --- SConstruct | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'SConstruct') diff --git a/SConstruct b/SConstruct index ea63b90f46..e1c4a1898c 100644 --- a/SConstruct +++ b/SConstruct @@ -110,6 +110,10 @@ Export([ ####################################################################### # Environment setup +# Always build trace driver +if 'trace' not in env['drivers']: + env['drivers'].append('trace') + # Includes env.Append(CPPPATH = [ '#/include', -- cgit v1.2.3 From 706eda30578cbdd1456c09ccc2a570a5d6a99c92 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Tue, 9 Mar 2010 15:07:57 +0000 Subject: scons: Add new targets option. This will likely change. Most probably we'll just add an alias to indvidual targets and use the regular scons targets arguments. --- SConstruct | 2 ++ src/SConscript | 9 ++++----- src/gallium/SConscript | 4 ++++ src/gallium/targets/SConscript | 2 +- src/gallium/winsys/xlib/SConscript | 16 ++++++++-------- 5 files changed, 19 insertions(+), 14 deletions(-) (limited to 'SConstruct') diff --git a/SConstruct b/SConstruct index e1c4a1898c..4cadd01363 100644 --- a/SConstruct +++ b/SConstruct @@ -53,6 +53,8 @@ opts.Add(ListVariable('drivers', 'pipe drivers to build', default_drivers, ['softpipe', 'failover', 'svga', 'i915', 'i965', 'trace', 'r300', 'identity', 'llvmpipe'])) opts.Add(ListVariable('winsys', 'winsys drivers to build', default_winsys, ['xlib', 'vmware', 'intel', 'i965', 'gdi', 'radeon'])) +opts.Add(ListVariable('targets', 'target drivers to build', 'all', + ['xlib'])) opts.Add(EnumVariable('MSVS_VERSION', 'MS Visual C++ version', None, allowed_values=('7.1', '8.0', '9.0'))) diff --git a/src/SConscript b/src/SConscript index cd4896ada4..cf6db730da 100644 --- a/src/SConscript +++ b/src/SConscript @@ -1,13 +1,12 @@ Import('*') SConscript('glsl/SConscript') -SConscript('gallium/SConscript') if 'mesa' in env['statetrackers']: - SConscript('mesa/SConscript') + SConscript('mesa/SConscript') -SConscript('gallium/winsys/SConscript') +SConscript('gallium/SConscript') if platform != 'embedded': - SConscript('glut/glx/SConscript') - SConscript('glew/SConscript') + SConscript('glut/glx/SConscript') + SConscript('glew/SConscript') diff --git a/src/gallium/SConscript b/src/gallium/SConscript index d56c5c8461..ba541f9636 100644 --- a/src/gallium/SConscript +++ b/src/gallium/SConscript @@ -15,3 +15,7 @@ if platform != 'embedded': if platform == 'windows': SConscript('state_trackers/wgl/SConscript') + +SConscript('winsys/SConscript') + +SConscript('targets/SConscript') diff --git a/src/gallium/targets/SConscript b/src/gallium/targets/SConscript index 46cbe656f4..266d705f89 100644 --- a/src/gallium/targets/SConscript +++ b/src/gallium/targets/SConscript @@ -5,7 +5,7 @@ Import('*') # 'drm/SConscript', # ]) -if 'xlib' in env['winsys']: +if 'xlib' in env['targets']: SConscript([ 'libgl-xlib/SConscript', ]) diff --git a/src/gallium/winsys/xlib/SConscript b/src/gallium/winsys/xlib/SConscript index 587cdb8e38..1a1879f128 100644 --- a/src/gallium/winsys/xlib/SConscript +++ b/src/gallium/winsys/xlib/SConscript @@ -15,13 +15,13 @@ if env['platform'] == 'linux' \ '#/src/gallium/drivers', ]) - st_xlib = env.ConvenienceLibrary( - target = 'ws_xlib', - source = [ - 'xlib_cell.c', - 'xlib_llvmpipe.c', - 'xlib_softpipe.c', - 'xlib_sw_winsys.c', - ] + ws_xlib = env.ConvenienceLibrary( + target = 'ws_xlib', + source = [ + 'xlib_cell.c', + 'xlib_llvmpipe.c', + 'xlib_softpipe.c', + 'xlib_sw_winsys.c', + ] ) Export('ws_xlib') -- cgit v1.2.3 From 78d8e6c98a7f679b9468c5255043819a6588846e Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Tue, 9 Mar 2010 17:08:16 +0000 Subject: scons: Always build the identity driver. --- SConstruct | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'SConstruct') diff --git a/SConstruct b/SConstruct index 4cadd01363..5e171ea2e1 100644 --- a/SConstruct +++ b/SConstruct @@ -112,9 +112,11 @@ Export([ ####################################################################### # Environment setup -# Always build trace driver +# Always build trace and identity drivers if 'trace' not in env['drivers']: env['drivers'].append('trace') +if 'identity' not in env['drivers']: + env['drivers'].append('identity') # Includes env.Append(CPPPATH = [ -- cgit v1.2.3 From 601bfb5951ae303b54b4dd8a50bf0558017bf549 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Wed, 10 Mar 2010 10:34:29 +0000 Subject: python: Fix up state tracker for sw api. --- SConstruct | 1 + src/gallium/state_trackers/python/SConscript | 29 ++--- src/gallium/state_trackers/python/st_device.c | 52 +++----- src/gallium/state_trackers/python/st_device.h | 9 +- .../state_trackers/python/st_hardpipe_winsys.c | 11 +- .../state_trackers/python/st_llvmpipe_winsys.c | 141 --------------------- .../state_trackers/python/st_softpipe_winsys.c | 53 ++++++-- src/gallium/state_trackers/python/st_winsys.h | 14 +- 8 files changed, 85 insertions(+), 225 deletions(-) delete mode 100644 src/gallium/state_trackers/python/st_llvmpipe_winsys.c (limited to 'SConstruct') diff --git a/SConstruct b/SConstruct index 5e171ea2e1..606be015c0 100644 --- a/SConstruct +++ b/SConstruct @@ -124,6 +124,7 @@ env.Append(CPPPATH = [ '#/src/gallium/include', '#/src/gallium/auxiliary', '#/src/gallium/drivers', + '#/src/gallium/winsys', ]) if env['msvc']: diff --git a/src/gallium/state_trackers/python/SConscript b/src/gallium/state_trackers/python/SConscript index 527e065cd9..8010f122b7 100644 --- a/src/gallium/state_trackers/python/SConscript +++ b/src/gallium/state_trackers/python/SConscript @@ -33,31 +33,26 @@ if 'python' in env['statetrackers']: 'gallium.i', 'st_device.c', 'st_sample.c', + 'st_hardpipe_winsys.c', + 'st_softpipe_winsys.c', ] - drivers = [ - trace - ] + env.Prepend(LIBS = [ + trace, + gallium + ]) if 'llvmpipe' in env['drivers']: + env.Append(CPPDEFINES = ['HAVE_LLVMPIPE']) env.Tool('llvm') - sources += ['st_llvmpipe_winsys.c'] - drivers += [llvmpipe] - else: - sources += ['st_softpipe_winsys.c'] - drivers += [softpipe] - - pyst = env.ConvenienceLibrary( - target = 'pyst', - source = sources, - ) + env.Prepend(LIBS = [llvmpipe]) + if 'softpipe' in env['drivers']: + env.Append(CPPDEFINES = ['HAVE_SOFTPIPE']) + env.Prepend(LIBS = [softpipe]) env['no_import_lib'] = 1 env.SharedLibrary( target = '_gallium', - source = [ - 'st_hardpipe_winsys.c', - ], - LIBS = [pyst] + drivers + gallium + env['LIBS'], + source = sources, ) diff --git a/src/gallium/state_trackers/python/st_device.c b/src/gallium/state_trackers/python/st_device.c index 45e7841750..335e8e7f0d 100644 --- a/src/gallium/state_trackers/python/st_device.c +++ b/src/gallium/state_trackers/python/st_device.c @@ -34,8 +34,7 @@ #include "util/u_math.h" #include "util/u_memory.h" #include "util/u_simple_shaders.h" -#include "trace/tr_screen.h" -#include "trace/tr_context.h" +#include "trace/tr_public.h" #include "st_device.h" #include "st_winsys.h" @@ -75,43 +74,34 @@ st_device_destroy(struct st_device *st_dev) } -static struct st_device * -st_device_create_from_st_winsys(const struct st_winsys *st_ws) +struct st_device * +st_device_create(boolean hardware) { + struct pipe_screen *screen; struct st_device *st_dev; - - if(!st_ws->screen_create) - return NULL; - + + if (hardware) + screen = st_hardware_screen_create(); + else + screen = st_software_screen_create(); + + screen = trace_screen_create(screen); + if (!screen) + goto no_screen; + st_dev = CALLOC_STRUCT(st_device); - if(!st_dev) - return NULL; + if (!st_dev) + goto no_device; pipe_reference_init(&st_dev->reference, 1); - st_dev->st_ws = st_ws; - - st_dev->real_screen = st_ws->screen_create(); - if(!st_dev->real_screen) { - st_device_destroy(st_dev); - return NULL; - } - - st_dev->screen = trace_screen_create(st_dev->real_screen); - if(!st_dev->screen) { - st_device_destroy(st_dev); - return NULL; - } + st_dev->screen = screen; return st_dev; -} - -struct st_device * -st_device_create(boolean hardware) { - if(hardware) - return st_device_create_from_st_winsys(&st_hardpipe_winsys); - else - return st_device_create_from_st_winsys(&st_softpipe_winsys); +no_device: + screen->destroy(screen); +no_screen: + return NULL; } diff --git a/src/gallium/state_trackers/python/st_device.h b/src/gallium/state_trackers/python/st_device.h index de9e0215d8..6ec7409b11 100644 --- a/src/gallium/state_trackers/python/st_device.h +++ b/src/gallium/state_trackers/python/st_device.h @@ -47,7 +47,8 @@ struct st_surface }; -struct st_context { +struct st_context +{ struct st_device *st_dev; struct pipe_context *pipe; @@ -72,13 +73,11 @@ struct st_context { }; -struct st_device { +struct st_device +{ /* FIXME: we also need to refcount for textures and surfaces... */ struct pipe_reference reference; - const struct st_winsys *st_ws; - - struct pipe_screen *real_screen; struct pipe_screen *screen; }; diff --git a/src/gallium/state_trackers/python/st_hardpipe_winsys.c b/src/gallium/state_trackers/python/st_hardpipe_winsys.c index a3110a19d5..0bf7c51613 100644 --- a/src/gallium/state_trackers/python/st_hardpipe_winsys.c +++ b/src/gallium/state_trackers/python/st_hardpipe_winsys.c @@ -207,16 +207,11 @@ st_hardpipe_load(void) #endif -static struct pipe_screen * -st_hardpipe_screen_create(void) +struct pipe_screen * +st_hardware_screen_create(void) { if(st_hardpipe_load()) return pfnGetGalliumScreenMESA(); else - return st_softpipe_winsys.screen_create(); + return st_software_screen_create(); } - - -const struct st_winsys st_hardpipe_winsys = { - &st_hardpipe_screen_create -}; diff --git a/src/gallium/state_trackers/python/st_llvmpipe_winsys.c b/src/gallium/state_trackers/python/st_llvmpipe_winsys.c deleted file mode 100644 index 5d83b5a9e1..0000000000 --- a/src/gallium/state_trackers/python/st_llvmpipe_winsys.c +++ /dev/null @@ -1,141 +0,0 @@ -/************************************************************************** - * - * Copyright 2010 VMware, Inc. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sub license, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - * USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial portions - * of the Software. - * - * - **************************************************************************/ - -/** - * @file - * Llvmpipe support. - * - * @author Jose Fonseca - */ - - -#include "pipe/p_format.h" -#include "pipe/p_context.h" -#include "util/u_inlines.h" -#include "util/u_math.h" -#include "util/u_memory.h" -#include "llvmpipe/lp_winsys.h" -#include "st_winsys.h" - - -static boolean -llvmpipe_ws_is_displaytarget_format_supported( struct llvmpipe_winsys *ws, - enum pipe_format format ) -{ - return FALSE; -} - - -static void * -llvmpipe_ws_displaytarget_map(struct llvmpipe_winsys *ws, - struct llvmpipe_displaytarget *dt, - unsigned flags ) -{ - assert(0); - return NULL; -} - - -static void -llvmpipe_ws_displaytarget_unmap(struct llvmpipe_winsys *ws, - struct llvmpipe_displaytarget *dt ) -{ - assert(0); -} - - -static void -llvmpipe_ws_displaytarget_destroy(struct llvmpipe_winsys *winsys, - struct llvmpipe_displaytarget *dt) -{ - assert(0); -} - - -static struct llvmpipe_displaytarget * -llvmpipe_ws_displaytarget_create(struct llvmpipe_winsys *winsys, - enum pipe_format format, - unsigned width, unsigned height, - unsigned alignment, - unsigned *stride) -{ - return NULL; -} - - -static void -llvmpipe_ws_displaytarget_display(struct llvmpipe_winsys *winsys, - struct llvmpipe_displaytarget *dt, - void *context_private) -{ - assert(0); -} - - -static void -llvmpipe_ws_destroy(struct llvmpipe_winsys *winsys) -{ - FREE(winsys); -} - - -static struct pipe_screen * -st_llvmpipe_screen_create(void) -{ - static struct llvmpipe_winsys *winsys; - struct pipe_screen *screen; - - winsys = CALLOC_STRUCT(llvmpipe_winsys); - if (!winsys) - goto no_winsys; - - winsys->destroy = llvmpipe_ws_destroy; - winsys->is_displaytarget_format_supported = llvmpipe_ws_is_displaytarget_format_supported; - winsys->displaytarget_create = llvmpipe_ws_displaytarget_create; - winsys->displaytarget_map = llvmpipe_ws_displaytarget_map; - winsys->displaytarget_unmap = llvmpipe_ws_displaytarget_unmap; - winsys->displaytarget_display = llvmpipe_ws_displaytarget_display; - winsys->displaytarget_destroy = llvmpipe_ws_displaytarget_destroy; - - screen = llvmpipe_create_screen(winsys); - if (!screen) - goto no_screen; - - return screen; - -no_screen: - FREE(winsys); -no_winsys: - return NULL; -} - - - -const struct st_winsys st_softpipe_winsys = { - &st_llvmpipe_screen_create -}; diff --git a/src/gallium/state_trackers/python/st_softpipe_winsys.c b/src/gallium/state_trackers/python/st_softpipe_winsys.c index 81676bc3a4..cd3e786f1a 100644 --- a/src/gallium/state_trackers/python/st_softpipe_winsys.c +++ b/src/gallium/state_trackers/python/st_softpipe_winsys.c @@ -26,18 +26,45 @@ * **************************************************************************/ -/** - * @file - * Softpipe support. - * - * @author Keith Whitwell - * @author Brian Paul - * @author Jose Fonseca - */ - -#include "softpipe/sp_winsys.h" +#include "util/u_debug.h" +#include "softpipe/sp_public.h" +#include "llvmpipe/lp_public.h" +#include "state_tracker/sw_winsys.h" +#include "null/null_sw_winsys.h" #include "st_winsys.h" -const struct st_winsys st_softpipe_winsys = { - &softpipe_create_screen_malloc -}; + +struct pipe_screen * +st_software_screen_create(void) +{ + struct sw_winsys *ws; + const char *default_driver; + const char *driver; + struct pipe_screen *screen = NULL; + +#if defined(HAVE_LLVMPIPE) + default_driver = "llvmpipe"; +#elif defined(HAVE_SOFTPIPE) + default_driver = "softpipe"; +#endif + + ws = null_sw_create(); + if(!ws) + return NULL; + + driver = debug_get_option("GALLIUM_DRIVER", default_driver); + +#ifdef HAVE_LLVMPIPE + if (strcmp(driver, "llvmpipe") == 0) { + screen = llvmpipe_create_screen(ws); + } +#endif + +#ifdef HAVE_SOFTPIPE + if (strcmp(driver, "softpipe") == 0) { + screen = softpipe_create_screen(ws); + } +#endif + + return screen; +} diff --git a/src/gallium/state_trackers/python/st_winsys.h b/src/gallium/state_trackers/python/st_winsys.h index 0c7b6a200e..e1a99383a4 100644 --- a/src/gallium/state_trackers/python/st_winsys.h +++ b/src/gallium/state_trackers/python/st_winsys.h @@ -31,19 +31,13 @@ struct pipe_screen; -struct pipe_context; -struct st_winsys -{ - struct pipe_screen * - (*screen_create)(void); -}; +struct pipe_screen * +st_hardware_screen_create(void); - -extern const struct st_winsys st_softpipe_winsys; - -extern const struct st_winsys st_hardpipe_winsys; +struct pipe_screen * +st_software_screen_create(void); #endif /* ST_WINSYS_H_ */ -- cgit v1.2.3 From e8d884eab9b96f2db647363f17649ff35570c710 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Wed, 10 Mar 2010 11:34:09 +0000 Subject: scons: Fixup the libgl-gdi build. --- SConstruct | 2 -- src/gallium/targets/SConscript | 10 +++++----- src/gallium/targets/libgl-gdi/gdi_llvmpipe_winsys.c | 3 ++- src/gallium/targets/libgl-gdi/gdi_softpipe_winsys.c | 3 ++- 4 files changed, 9 insertions(+), 9 deletions(-) (limited to 'SConstruct') diff --git a/SConstruct b/SConstruct index 606be015c0..6ed44ddd06 100644 --- a/SConstruct +++ b/SConstruct @@ -53,8 +53,6 @@ opts.Add(ListVariable('drivers', 'pipe drivers to build', default_drivers, ['softpipe', 'failover', 'svga', 'i915', 'i965', 'trace', 'r300', 'identity', 'llvmpipe'])) opts.Add(ListVariable('winsys', 'winsys drivers to build', default_winsys, ['xlib', 'vmware', 'intel', 'i965', 'gdi', 'radeon'])) -opts.Add(ListVariable('targets', 'target drivers to build', 'all', - ['xlib'])) opts.Add(EnumVariable('MSVS_VERSION', 'MS Visual C++ version', None, allowed_values=('7.1', '8.0', '9.0'))) diff --git a/src/gallium/targets/SConscript b/src/gallium/targets/SConscript index 266d705f89..df62fc65fb 100644 --- a/src/gallium/targets/SConscript +++ b/src/gallium/targets/SConscript @@ -5,12 +5,12 @@ Import('*') # 'drm/SConscript', # ]) -if 'xlib' in env['targets']: +if 'xlib' in env['winsys']: SConscript([ 'libgl-xlib/SConscript', ]) -#if 'gdi' in env['winsys']: -# SConscript([ -# 'gdi/SConscript', -# ]) +if 'gdi' in env['winsys']: + SConscript([ + 'libgl-gdi/SConscript', + ]) diff --git a/src/gallium/targets/libgl-gdi/gdi_llvmpipe_winsys.c b/src/gallium/targets/libgl-gdi/gdi_llvmpipe_winsys.c index f20c2614e2..29316a1ce2 100644 --- a/src/gallium/targets/libgl-gdi/gdi_llvmpipe_winsys.c +++ b/src/gallium/targets/libgl-gdi/gdi_llvmpipe_winsys.c @@ -37,9 +37,10 @@ #include #include "stw_winsys.h" -#include "gdi_sw_winsys.h" +#include "gdi/gdi_sw_winsys.h" #include "llvmpipe/lp_texture.h" #include "llvmpipe/lp_screen.h" +#include "llvmpipe/lp_public.h" static struct pipe_screen * diff --git a/src/gallium/targets/libgl-gdi/gdi_softpipe_winsys.c b/src/gallium/targets/libgl-gdi/gdi_softpipe_winsys.c index 5c5c154c7f..dfe60195d9 100644 --- a/src/gallium/targets/libgl-gdi/gdi_softpipe_winsys.c +++ b/src/gallium/targets/libgl-gdi/gdi_softpipe_winsys.c @@ -37,9 +37,10 @@ #include #include "stw_winsys.h" -#include "gdi_sw_winsys.h" +#include "gdi/gdi_sw_winsys.h" #include "softpipe/sp_texture.h" #include "softpipe/sp_screen.h" +#include "softpipe/sp_public.h" static struct pipe_screen * -- cgit v1.2.3