Tizen 2.0 Release
[profile/ivi/osmesa.git] / src / gallium / auxiliary / target-helpers / inline_wrapper_sw_helper.h
1
2 #ifndef INLINE_WRAPPER_SW_HELPER_H
3 #define INLINE_WRAPPER_SW_HELPER_H
4
5 #include "target-helpers/inline_sw_helper.h"
6 #include "sw/wrapper/wrapper_sw_winsys.h"
7
8 /**
9  * Try to wrap a hw screen with a software screen.
10  * On failure will return given screen.
11  */
12 static INLINE struct pipe_screen *
13 sw_screen_wrap(struct pipe_screen *screen)
14 {
15    struct sw_winsys *sws;
16    struct pipe_screen *sw_screen = NULL;
17    const char *driver;
18
19    driver = debug_get_option("GALLIUM_DRIVER", "native");
20    if (strcmp(driver, "native") == 0)
21       return screen;
22
23    sws = wrapper_sw_winsys_wrap_pipe_screen(screen);
24    if (!sws)
25       goto err;
26
27    sw_screen = sw_screen_create_named(sws, driver);
28
29    if (!sw_screen)
30       goto err_winsys;
31
32    return sw_screen;
33
34 err_winsys:
35    return wrapper_sw_winsys_dewrap_pipe_screen(sws);
36 err:
37    return screen;
38 }
39
40 #endif