Home | History | Annotate | Download | only in target-helpers
      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 
     23 static INLINE struct pipe_screen *
     24 sw_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 
     42 static INLINE struct pipe_screen *
     43 sw_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