summaryrefslogtreecommitdiffstats
path: root/src/gallium/targets
diff options
context:
space:
mode:
authorJakob Bornecrantz <[email protected]>2010-11-10 23:40:18 +0000
committerJakob Bornecrantz <[email protected]>2010-11-10 23:40:18 +0000
commit0faa7ada8419408070874d83dc2fcbad903f0dcc (patch)
treefbfe46510795bab6a64dc4226e5978de024341ec /src/gallium/targets
parent89deebb1af7191e9fd7432c181b166d13c659f15 (diff)
libgl-xlib: Use sw helper instead of roll your own
Diffstat (limited to 'src/gallium/targets')
-rw-r--r--src/gallium/targets/libgl-xlib/xlib.c90
1 files changed, 12 insertions, 78 deletions
diff --git a/src/gallium/targets/libgl-xlib/xlib.c b/src/gallium/targets/libgl-xlib/xlib.c
index 6f05714f9e0..b0d1e529104 100644
--- a/src/gallium/targets/libgl-xlib/xlib.c
+++ b/src/gallium/targets/libgl-xlib/xlib.c
@@ -33,92 +33,17 @@
#include "pipe/p_compiler.h"
#include "util/u_debug.h"
#include "target-helpers/wrap_screen.h"
+#include "target-helpers/inline_sw_helper.h"
#include "state_tracker/xlib_sw_winsys.h"
#include "xm_public.h"
#include "state_tracker/st_api.h"
#include "state_tracker/st_gl_api.h"
-/* 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
- * to avoid having global #defines for things like GALLIUM_LLVMPIPE,
- * GALLIUM_CELL, etc. Scons already eliminates those #defines, so
- * things that are painful for it now are likely to be painful for
- * other build systems in the future.
- *
- * Copies (full or partial):
- * targets/libgl-xlib
- * targets/graw-xlib
- * targets/dri-swrast
- * winsys/sw/drm
- * drivers/sw
- *
- */
-
-#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
-
-#ifdef GALLIUM_GALAHAD
-#include "galahad/glhd_public.h"
-#endif
-
-static struct pipe_screen *
-swrast_create_screen(struct sw_winsys *winsys)
-{
- const char *default_driver;
- const char *driver;
- struct pipe_screen *screen = NULL;
-
-#if defined(GALLIUM_CELL)
- default_driver = "cell";
-#elif 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_CELL)
- if (screen == NULL && strcmp(driver, "cell") == 0)
- screen = cell_create_screen( winsys );
-#endif
-
-#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
-
#if defined(GALLIUM_GALAHAD)
- if (screen) {
- struct pipe_screen *galahad_screen = galahad_screen_create(screen);
- if (galahad_screen)
- screen = galahad_screen;
- }
+#include "galahad/glhd_public.h"
#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.
@@ -138,10 +63,19 @@ swrast_xlib_create_screen( Display *display )
/* Create a software rasterizer on top of that winsys:
*/
- screen = swrast_create_screen( winsys );
+ screen = sw_screen_create( winsys );
if (screen == NULL)
goto fail;
+ /* XXX will fix soon */
+#if defined(GALLIUM_GALAHAD)
+ if (screen) {
+ struct pipe_screen *galahad_screen = galahad_screen_create( screen );
+ if (galahad_screen)
+ screen = galahad_screen;
+ }
+#endif
+
/* Inject any wrapping layers we want to here:
*/
return gallium_wrap_screen( screen );