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