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; } #endif return screen; }
static struct pipe_screen * xlib_create_cell_screen( void ) { struct pipe_winsys *winsys; struct pipe_screen *screen; winsys = xlib_create_cell_winsys(); if (winsys == NULL) return NULL; screen = cell_create_screen(winsys); if (screen == NULL) goto fail; return screen; fail: if (winsys) winsys->destroy( winsys ); return NULL; }