1 
2 #ifndef INLINE_SW_HELPER_H
3 #define INLINE_SW_HELPER_H
4 
5 #include "pipe/p_compiler.h"
6 #include "util/u_debug.h"
7 #include "state_tracker/sw_winsys.h"
8 
9 
10 /* Helper function to choose and instantiate one of the software rasterizers:
11  * llvmpipe, softpipe.
12  */
13 
14 #ifdef GALLIUM_SOFTPIPE
15 #include "softpipe/sp_public.h"
16 #endif
17 
18 #ifdef GALLIUM_LLVMPIPE
19 #include "llvmpipe/lp_public.h"
20 #endif
21 
22 
23 static INLINE struct pipe_screen *
sw_screen_create_named(struct sw_winsys * winsys,const char * driver)24 sw_screen_create_named(struct sw_winsys *winsys, const char *driver)
25 {
26    struct pipe_screen *screen = NULL;
27 
28 #if defined(GALLIUM_LLVMPIPE)
29    if (screen == NULL && strcmp(driver, "llvmpipe") == 0)
30       screen = llvmpipe_create_screen(winsys);
31 #endif
32 
33 #if defined(GALLIUM_SOFTPIPE)
34    if (screen == NULL)
35       screen = softpipe_create_screen(winsys);
36 #endif
37 
38    return screen;
39 }
40 
41 
42 static INLINE struct pipe_screen *
sw_screen_create(struct sw_winsys * winsys)43 sw_screen_create(struct sw_winsys *winsys)
44 {
45    const char *default_driver;
46    const char *driver;
47 
48 #if defined(GALLIUM_LLVMPIPE)
49    default_driver = "llvmpipe";
50 #elif defined(GALLIUM_SOFTPIPE)
51    default_driver = "softpipe";
52 #else
53    default_driver = "";
54 #endif
55 
56    driver = debug_get_option("GALLIUM_DRIVER", default_driver);
57    return sw_screen_create_named(winsys, driver);
58 }
59 
60 
61 #endif
62