1bd739e95763d8051679649cc44d16d4fcbb0fec1Jakob Bornecrantz 2bd739e95763d8051679649cc44d16d4fcbb0fec1Jakob Bornecrantz#ifndef INLINE_SW_HELPER_H 3bd739e95763d8051679649cc44d16d4fcbb0fec1Jakob Bornecrantz#define INLINE_SW_HELPER_H 4bd739e95763d8051679649cc44d16d4fcbb0fec1Jakob Bornecrantz 5bd739e95763d8051679649cc44d16d4fcbb0fec1Jakob Bornecrantz#include "pipe/p_compiler.h" 6bd739e95763d8051679649cc44d16d4fcbb0fec1Jakob Bornecrantz#include "util/u_debug.h" 7bd739e95763d8051679649cc44d16d4fcbb0fec1Jakob Bornecrantz#include "state_tracker/sw_winsys.h" 8bd739e95763d8051679649cc44d16d4fcbb0fec1Jakob Bornecrantz 9bd739e95763d8051679649cc44d16d4fcbb0fec1Jakob Bornecrantz 10bd739e95763d8051679649cc44d16d4fcbb0fec1Jakob Bornecrantz/* Helper function to choose and instantiate one of the software rasterizers: 11ccd4d4367f2b4e5aebfc59b832599812a4a1c7d8Kai Wasserbäch * llvmpipe, softpipe. 12bd739e95763d8051679649cc44d16d4fcbb0fec1Jakob Bornecrantz */ 13bd739e95763d8051679649cc44d16d4fcbb0fec1Jakob Bornecrantz 14bd739e95763d8051679649cc44d16d4fcbb0fec1Jakob Bornecrantz#ifdef GALLIUM_SOFTPIPE 15bd739e95763d8051679649cc44d16d4fcbb0fec1Jakob Bornecrantz#include "softpipe/sp_public.h" 16bd739e95763d8051679649cc44d16d4fcbb0fec1Jakob Bornecrantz#endif 17bd739e95763d8051679649cc44d16d4fcbb0fec1Jakob Bornecrantz 18bd739e95763d8051679649cc44d16d4fcbb0fec1Jakob Bornecrantz#ifdef GALLIUM_LLVMPIPE 19bd739e95763d8051679649cc44d16d4fcbb0fec1Jakob Bornecrantz#include "llvmpipe/lp_public.h" 20bd739e95763d8051679649cc44d16d4fcbb0fec1Jakob Bornecrantz#endif 21bd739e95763d8051679649cc44d16d4fcbb0fec1Jakob Bornecrantz 22eb7cf3d2a64875d594e1c71b835a9e9704b7a8d6Jakob Bornecrantz 23bd739e95763d8051679649cc44d16d4fcbb0fec1Jakob Bornecrantzstatic INLINE struct pipe_screen * 24eb7cf3d2a64875d594e1c71b835a9e9704b7a8d6Jakob Bornecrantzsw_screen_create_named(struct sw_winsys *winsys, const char *driver) 25bd739e95763d8051679649cc44d16d4fcbb0fec1Jakob Bornecrantz{ 26bd739e95763d8051679649cc44d16d4fcbb0fec1Jakob Bornecrantz struct pipe_screen *screen = NULL; 27bd739e95763d8051679649cc44d16d4fcbb0fec1Jakob Bornecrantz 28bd739e95763d8051679649cc44d16d4fcbb0fec1Jakob Bornecrantz#if defined(GALLIUM_LLVMPIPE) 29bd739e95763d8051679649cc44d16d4fcbb0fec1Jakob Bornecrantz if (screen == NULL && strcmp(driver, "llvmpipe") == 0) 30bd739e95763d8051679649cc44d16d4fcbb0fec1Jakob Bornecrantz screen = llvmpipe_create_screen(winsys); 31bd739e95763d8051679649cc44d16d4fcbb0fec1Jakob Bornecrantz#endif 32bd739e95763d8051679649cc44d16d4fcbb0fec1Jakob Bornecrantz 33bd739e95763d8051679649cc44d16d4fcbb0fec1Jakob Bornecrantz#if defined(GALLIUM_SOFTPIPE) 34bd739e95763d8051679649cc44d16d4fcbb0fec1Jakob Bornecrantz if (screen == NULL) 35bd739e95763d8051679649cc44d16d4fcbb0fec1Jakob Bornecrantz screen = softpipe_create_screen(winsys); 36bd739e95763d8051679649cc44d16d4fcbb0fec1Jakob Bornecrantz#endif 37bd739e95763d8051679649cc44d16d4fcbb0fec1Jakob Bornecrantz 38bd739e95763d8051679649cc44d16d4fcbb0fec1Jakob Bornecrantz return screen; 39bd739e95763d8051679649cc44d16d4fcbb0fec1Jakob Bornecrantz} 40bd739e95763d8051679649cc44d16d4fcbb0fec1Jakob Bornecrantz 41eb7cf3d2a64875d594e1c71b835a9e9704b7a8d6Jakob Bornecrantz 42eb7cf3d2a64875d594e1c71b835a9e9704b7a8d6Jakob Bornecrantzstatic INLINE struct pipe_screen * 43eb7cf3d2a64875d594e1c71b835a9e9704b7a8d6Jakob Bornecrantzsw_screen_create(struct sw_winsys *winsys) 44eb7cf3d2a64875d594e1c71b835a9e9704b7a8d6Jakob Bornecrantz{ 45eb7cf3d2a64875d594e1c71b835a9e9704b7a8d6Jakob Bornecrantz const char *default_driver; 46eb7cf3d2a64875d594e1c71b835a9e9704b7a8d6Jakob Bornecrantz const char *driver; 47eb7cf3d2a64875d594e1c71b835a9e9704b7a8d6Jakob Bornecrantz 48ccd4d4367f2b4e5aebfc59b832599812a4a1c7d8Kai Wasserbäch#if defined(GALLIUM_LLVMPIPE) 49eb7cf3d2a64875d594e1c71b835a9e9704b7a8d6Jakob Bornecrantz default_driver = "llvmpipe"; 50eb7cf3d2a64875d594e1c71b835a9e9704b7a8d6Jakob Bornecrantz#elif defined(GALLIUM_SOFTPIPE) 51eb7cf3d2a64875d594e1c71b835a9e9704b7a8d6Jakob Bornecrantz default_driver = "softpipe"; 52eb7cf3d2a64875d594e1c71b835a9e9704b7a8d6Jakob Bornecrantz#else 53eb7cf3d2a64875d594e1c71b835a9e9704b7a8d6Jakob Bornecrantz default_driver = ""; 54eb7cf3d2a64875d594e1c71b835a9e9704b7a8d6Jakob Bornecrantz#endif 55eb7cf3d2a64875d594e1c71b835a9e9704b7a8d6Jakob Bornecrantz 56eb7cf3d2a64875d594e1c71b835a9e9704b7a8d6Jakob Bornecrantz driver = debug_get_option("GALLIUM_DRIVER", default_driver); 57eb7cf3d2a64875d594e1c71b835a9e9704b7a8d6Jakob Bornecrantz return sw_screen_create_named(winsys, driver); 58eb7cf3d2a64875d594e1c71b835a9e9704b7a8d6Jakob Bornecrantz} 59eb7cf3d2a64875d594e1c71b835a9e9704b7a8d6Jakob Bornecrantz 60eb7cf3d2a64875d594e1c71b835a9e9704b7a8d6Jakob Bornecrantz 61bd739e95763d8051679649cc44d16d4fcbb0fec1Jakob Bornecrantz#endif 62