pipe_radeonsi.c revision 01e04c3f
1#include "state_tracker/drm_driver.h"
2#include "target-helpers/inline_debug_helper.h"
3#include "radeon/drm/radeon_drm_public.h"
4#include "radeon/radeon_winsys.h"
5#include "amdgpu/drm/amdgpu_public.h"
6#include "radeonsi/si_public.h"
7#include "util/xmlpool.h"
8
9static struct pipe_screen *
10create_screen(int fd, const struct pipe_screen_config *config)
11{
12   struct radeon_winsys *rw;
13
14   /* First, try amdgpu. */
15   rw = amdgpu_winsys_create(fd, config, radeonsi_screen_create);
16
17   if (!rw)
18      rw = radeon_drm_winsys_create(fd, config, radeonsi_screen_create);
19
20   return rw ? debug_screen_wrap(rw->screen) : NULL;
21}
22
23static const struct drm_conf_ret throttle_ret = {
24   .type = DRM_CONF_INT,
25   .val.val_int = 2,
26};
27
28static const struct drm_conf_ret share_fd_ret = {
29   .type = DRM_CONF_BOOL,
30   .val.val_bool = true,
31};
32
33static const struct drm_conf_ret *drm_configuration(enum drm_conf conf)
34{
35   static const struct drm_conf_ret xml_options_ret = {
36      .type = DRM_CONF_POINTER,
37      .val.val_pointer =
38#include "radeonsi/si_driinfo.h"
39   };
40
41   switch (conf) {
42   case DRM_CONF_THROTTLE:
43      return &throttle_ret;
44   case DRM_CONF_SHARE_FD:
45      return &share_fd_ret;
46   case DRM_CONF_XML_OPTIONS:
47      return &xml_options_ret;
48   default:
49      break;
50   }
51   return NULL;
52}
53
54PUBLIC
55DRM_DRIVER_DESCRIPTOR("radeonsi", create_screen, drm_configuration)
56