Merge remote branch 'origin/master' into glsl2
[mesa.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;
17
18 sws = wrapper_sw_winsys_warp_pipe_screen(screen);
19 if (!sws)
20 goto err;
21
22 sw_screen = sw_screen_create(sws);
23 if (sw_screen == screen)
24 goto err_winsys;
25
26 return sw_screen;
27
28 err_winsys:
29 sws->destroy(sws);
30 err:
31 return screen;
32 }
33
34 #endif