1b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "target-helpers/inline_wrapper_sw_helper.h" 3b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru#include "target-helpers/inline_debug_helper.h" 4b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "state_tracker/drm_driver.h" 5b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "svga/drm/svga_drm_public.h" 6b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "svga/svga_public.h" 7b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 8b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic struct pipe_screen * 9b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querucreate_screen(int fd) 10b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 11b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru struct svga_winsys_screen *sws; 12b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru struct pipe_screen *screen; 13b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 14b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru sws = svga_drm_winsys_screen_create(fd); 15b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!sws) 16b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return NULL; 17b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 18b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru screen = svga_screen_create(sws); 19b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!screen) 20b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return NULL; 21b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 22b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru screen = sw_screen_wrap(screen); 23b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 24b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru screen = debug_screen_wrap(screen); 25b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 26b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return screen; 27b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 28b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 29b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const struct drm_conf_ret throttle_ret = { 30b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru .type = DRM_CONF_INT, 31b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru .val.val_int = 2, 32b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 33b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 34b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const struct drm_conf_ret *drm_configuration(enum drm_conf conf) 35b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 36b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru switch (conf) { 37b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case DRM_CONF_THROTTLE: 38b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return &throttle_ret; 39b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru default: 40b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 41b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 42b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return NULL; 43b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 44b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 45b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDRM_DRIVER_DESCRIPTOR("vmwgfx", "vmwgfx", create_screen, drm_configuration) 46b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru