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
23static INLINE struct pipe_screen *
24sw_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
42static INLINE struct pipe_screen *
43sw_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