diff options
Diffstat (limited to 'src/gallium/auxiliary')
-rw-r--r-- | src/gallium/auxiliary/target-helpers/inline_sw_helper.h | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/gallium/auxiliary/target-helpers/inline_sw_helper.h b/src/gallium/auxiliary/target-helpers/inline_sw_helper.h index 596c691e9c1..8a144db09c3 100644 --- a/src/gallium/auxiliary/target-helpers/inline_sw_helper.h +++ b/src/gallium/auxiliary/target-helpers/inline_sw_helper.h @@ -57,5 +57,41 @@ sw_screen_create(struct sw_winsys *winsys) return sw_screen_create_named(winsys, driver); } +#if defined(GALLIUM_SOFTPIPE) +#if defined(DRI_TARGET) +#include "target-helpers/inline_debug_helper.h" +#include "sw/dri/dri_sw_winsys.h" +#include "dri_screen.h" + +const __DRIextension **__driDriverGetExtensions_swrast(void); + +PUBLIC const __DRIextension **__driDriverGetExtensions_swrast(void) +{ + globalDriverAPI = &galliumsw_driver_api; + return galliumsw_driver_extensions; +} + +INLINE struct pipe_screen * +drisw_create_screen(struct drisw_loader_funcs *lf) +{ + struct sw_winsys *winsys = NULL; + struct pipe_screen *screen = NULL; + + winsys = dri_create_sw_winsys(lf); + if (winsys == NULL) + return NULL; + + screen = sw_screen_create(winsys); + if (screen == NULL) { + winsys->destroy(winsys); + return NULL; + } + + screen = debug_screen_wrap(screen); + return screen; +} +#endif // DRI_TARGET +#endif // GALLIUM_SOFTPIPE + #endif |