From 3ae082f00cad3f2323a3747fe3b6f02b8f8c5285 Mon Sep 17 00:00:00 2001 From: George Sapountzis Date: Fri, 26 Mar 2010 18:44:40 +0200 Subject: swrastg: allow for any of the software rasterizers. This function should be put in targets/common or winsys/sw/common and shared with targers/libgl-xlib and winsys/sw/drm. For targets/common, you get layering violations in the build system unless all of drm_api's are moved under targets. --- src/gallium/targets/libgl-xlib/xlib.c | 64 +++++++++++++++++++++++------------ 1 file changed, 42 insertions(+), 22 deletions(-) (limited to 'src/gallium/targets/libgl-xlib') diff --git a/src/gallium/targets/libgl-xlib/xlib.c b/src/gallium/targets/libgl-xlib/xlib.c index 48e79fe4f3..4a8366280d 100644 --- a/src/gallium/targets/libgl-xlib/xlib.c +++ b/src/gallium/targets/libgl-xlib/xlib.c @@ -31,12 +31,9 @@ * Keith Whitwell */ #include "pipe/p_compiler.h" -#include "state_tracker/xlib_sw_winsys.h" #include "util/u_debug.h" -#include "softpipe/sp_public.h" -#include "llvmpipe/lp_public.h" -#include "cell/ppu/cell_public.h" #include "target-helpers/wrap_screen.h" +#include "state_tracker/xlib_sw_winsys.h" #include "xm_public.h" #include "state_tracker/st_manager.h" @@ -49,9 +46,8 @@ PUBLIC const struct st_module st_module_OpenGL = { .create_api = st_manager_create_api }; -/* Helper function to build a subset of a driver stack consisting of - * one of the software rasterizers (cell, llvmpipe, softpipe) and the - * xlib winsys. +/* Helper function to choose and instantiate one of the software rasterizers: + * cell, llvmpipe, softpipe. * * This function could be shared, but currently causes headaches for * the build systems, particularly scons if we try. Long term, want @@ -60,21 +56,26 @@ PUBLIC const struct st_module st_module_OpenGL = { * things that are painful for it now are likely to be painful for * other build systems in the future. */ + +#ifdef GALLIUM_SOFTPIPE +#include "softpipe/sp_public.h" +#endif + +#ifdef GALLIUM_LLVMPIPE +#include "llvmpipe/lp_public.h" +#endif + +#ifdef GALLIUM_CELL +#include "cell/ppu/cell_public.h" +#endif + static struct pipe_screen * -swrast_xlib_create_screen( Display *display ) +swrast_create_screen(struct sw_winsys *winsys) { const char *default_driver; const char *driver; - struct sw_winsys *winsys; struct pipe_screen *screen = NULL; - /* Create the underlying winsys, which performs presents to Xlib - * drawables: - */ - winsys = xlib_create_sw_winsys( display ); - if (winsys == NULL) - return NULL; - #if defined(GALLIUM_CELL) default_driver = "cell"; #elif defined(GALLIUM_LLVMPIPE) @@ -87,17 +88,13 @@ swrast_xlib_create_screen( Display *display ) driver = debug_get_option("GALLIUM_DRIVER", default_driver); - /* Create a software rasterizer on top of that winsys: - */ #if defined(GALLIUM_CELL) - if (screen == NULL && - strcmp(driver, "cell") == 0) + if (screen == NULL && strcmp(driver, "cell") == 0) screen = cell_create_screen( winsys ); #endif #if defined(GALLIUM_LLVMPIPE) - if (screen == NULL && - strcmp(driver, "llvmpipe") == 0) + if (screen == NULL && strcmp(driver, "llvmpipe") == 0) screen = llvmpipe_create_screen( winsys ); #endif @@ -106,6 +103,29 @@ swrast_xlib_create_screen( Display *display ) screen = softpipe_create_screen( winsys ); #endif + return screen; +} + +/* Helper function to build a subset of a driver stack consisting of + * one of the software rasterizers (cell, llvmpipe, softpipe) and the + * xlib winsys. + */ +static struct pipe_screen * +swrast_xlib_create_screen( Display *display ) +{ + struct sw_winsys *winsys; + struct pipe_screen *screen = NULL; + + /* Create the underlying winsys, which performs presents to Xlib + * drawables: + */ + winsys = xlib_create_sw_winsys( display ); + if (winsys == NULL) + return NULL; + + /* Create a software rasterizer on top of that winsys: + */ + screen = swrast_create_screen( winsys ); if (screen == NULL) goto fail; -- cgit v1.2.3