• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 #ifndef SW_HELPER_H
3 #define SW_HELPER_H
4 
5 #include "pipe/p_compiler.h"
6 #include "util/u_debug.h"
7 #include "target-helpers/sw_helper_public.h"
8 #include "frontend/sw_winsys.h"
9 
10 
11 /* Helper function to choose and instantiate one of the software rasterizers:
12  * llvmpipe, softpipe, swr.
13  */
14 
15 #ifdef GALLIUM_ZINK
16 #include "zink/zink_public.h"
17 #endif
18 
19 #ifdef GALLIUM_SOFTPIPE
20 #include "softpipe/sp_public.h"
21 #endif
22 
23 #ifdef GALLIUM_LLVMPIPE
24 #include "llvmpipe/lp_public.h"
25 #endif
26 
27 #ifdef GALLIUM_SWR
28 #include "swr/swr_public.h"
29 #endif
30 
31 #ifdef GALLIUM_VIRGL
32 #include "virgl/virgl_public.h"
33 #include "virgl/vtest/virgl_vtest_public.h"
34 #endif
35 
36 static inline struct pipe_screen *
sw_screen_create_named(struct sw_winsys * winsys,const char * driver)37 sw_screen_create_named(struct sw_winsys *winsys, const char *driver)
38 {
39    struct pipe_screen *screen = NULL;
40 
41 #if defined(GALLIUM_LLVMPIPE)
42    if (screen == NULL && strcmp(driver, "llvmpipe") == 0)
43       screen = llvmpipe_create_screen(winsys);
44 #endif
45 
46 #if defined(GALLIUM_VIRGL)
47    if (screen == NULL && strcmp(driver, "virpipe") == 0) {
48       struct virgl_winsys *vws;
49       vws = virgl_vtest_winsys_wrap(winsys);
50       screen = virgl_create_screen(vws, NULL);
51    }
52 #endif
53 
54 #if defined(GALLIUM_SOFTPIPE)
55    if (screen == NULL && strcmp(driver, "softpipe") == 0)
56       screen = softpipe_create_screen(winsys);
57 #endif
58 
59 #if defined(GALLIUM_SWR)
60    if (screen == NULL && strcmp(driver, "swr") == 0)
61       screen = swr_create_screen(winsys);
62 #endif
63 
64 #if defined(GALLIUM_ZINK)
65    if (screen == NULL && strcmp(driver, "zink") == 0)
66       screen = zink_create_screen(winsys);
67 #endif
68 
69    return screen;
70 }
71 
72 
73 struct pipe_screen *
sw_screen_create(struct sw_winsys * winsys)74 sw_screen_create(struct sw_winsys *winsys)
75 {
76    const char *default_driver;
77    const char *driver;
78 
79 #if defined(GALLIUM_LLVMPIPE)
80    default_driver = "llvmpipe";
81 #elif defined(GALLIUM_SOFTPIPE)
82    default_driver = "softpipe";
83 #elif defined(GALLIUM_SWR)
84    default_driver = "swr";
85 #elif defined(GALLIUM_ZINK)
86    default_driver = "zink";
87 #else
88    default_driver = "";
89 #endif
90 
91    driver = debug_get_option("GALLIUM_DRIVER", default_driver);
92    return sw_screen_create_named(winsys, driver);
93 }
94 
95 #endif
96