|
|
@@ -0,0 +1,67 @@ |
|
|
|
#include "pipe/p_compiler.h" |
|
|
|
#include "util/u_debug.h" |
|
|
|
#include "target-helpers/wrap_screen.h" |
|
|
|
|
|
|
|
struct sw_winsys; |
|
|
|
|
|
|
|
#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 |
|
|
|
|
|
|
|
/* |
|
|
|
* 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. |
|
|
|
*/ |
|
|
|
|
|
|
|
static INLINE struct pipe_screen * |
|
|
|
swrast_screen_create(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 |
|
|
|
|
|
|
|
return gallium_wrap_screen( screen ); |
|
|
|
} |
|
|
|
|