libgl-xlib: Use sw helper instead of roll your own
authorJakob Bornecrantz <jakob@vmware.com>
Wed, 10 Nov 2010 23:40:18 +0000 (23:40 +0000)
committerJakob Bornecrantz <jakob@vmware.com>
Wed, 10 Nov 2010 23:40:18 +0000 (23:40 +0000)
src/gallium/targets/libgl-xlib/xlib.c

index 6f05714f9e0ff09e5f3665d046a6e5dc015208ad..b0d1e529104498f0fc7de6eac166328658dc0ac7 100644 (file)
 #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 );