include/st: new file swrast_screen_create.h
This commit is contained in:
parent
258f433fff
commit
cd73360e48
|
@ -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 );
|
||||
}
|
||||
|
Loading…
Reference in New Issue