draw: corrections to allow for different cliptest cases
[mesa.git] / src / gallium / auxiliary / target-helpers / inline_sw_helper.h
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 * cell, 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 #ifdef GALLIUM_CELL
23 #include "cell/ppu/cell_public.h"
24 #endif
25
26 static INLINE struct pipe_screen *
27 sw_screen_create(struct sw_winsys *winsys)
28 {
29 const char *default_driver;
30 const char *driver;
31 struct pipe_screen *screen = NULL;
32
33 #if defined(GALLIUM_CELL)
34 default_driver = "cell";
35 #elif defined(GALLIUM_LLVMPIPE)
36 default_driver = "llvmpipe";
37 #elif defined(GALLIUM_SOFTPIPE)
38 default_driver = "softpipe";
39 #else
40 default_driver = "";
41 #endif
42
43 driver = debug_get_option("GALLIUM_DRIVER", default_driver);
44
45 #if defined(GALLIUM_CELL)
46 if (screen == NULL && strcmp(driver, "cell") == 0)
47 screen = cell_create_screen(winsys);
48 #endif
49
50 #if defined(GALLIUM_LLVMPIPE)
51 if (screen == NULL && strcmp(driver, "llvmpipe") == 0)
52 screen = llvmpipe_create_screen(winsys);
53 #endif
54
55 #if defined(GALLIUM_SOFTPIPE)
56 if (screen == NULL)
57 screen = softpipe_create_screen(winsys);
58 #endif
59
60 return screen;
61 }
62
63 #endif