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