Home | History | Annotate | Download | only in target-helpers
      1 #ifndef DRM_HELPER_H
      2 #define DRM_HELPER_H
      3 
      4 #include <stdio.h>
      5 #include "target-helpers/inline_debug_helper.h"
      6 #include "target-helpers/drm_helper_public.h"
      7 
      8 #ifdef GALLIUM_I915
      9 #include "i915/drm/i915_drm_public.h"
     10 #include "i915/i915_public.h"
     11 
     12 struct pipe_screen *
     13 pipe_i915_create_screen(int fd)
     14 {
     15    struct i915_winsys *iws;
     16    struct pipe_screen *screen;
     17 
     18    iws = i915_drm_winsys_create(fd);
     19    if (!iws)
     20       return NULL;
     21 
     22    screen = i915_screen_create(iws);
     23    return screen ? debug_screen_wrap(screen) : NULL;
     24 }
     25 
     26 #else
     27 
     28 struct pipe_screen *
     29 pipe_i915_create_screen(int fd)
     30 {
     31    fprintf(stderr, "i915g: driver missing\n");
     32    return NULL;
     33 }
     34 
     35 #endif
     36 
     37 #ifdef GALLIUM_ILO
     38 #include "intel/drm/intel_drm_public.h"
     39 #include "ilo/ilo_public.h"
     40 
     41 struct pipe_screen *
     42 pipe_ilo_create_screen(int fd)
     43 {
     44    struct intel_winsys *iws;
     45    struct pipe_screen *screen;
     46 
     47    iws = intel_winsys_create_for_fd(fd);
     48    if (!iws)
     49       return NULL;
     50 
     51    screen = ilo_screen_create(iws);
     52    return screen ? debug_screen_wrap(screen) : NULL;
     53 }
     54 
     55 #else
     56 
     57 struct pipe_screen *
     58 pipe_ilo_create_screen(int fd)
     59 {
     60    fprintf(stderr, "ilo: driver missing\n");
     61    return NULL;
     62 }
     63 
     64 #endif
     65 
     66 #ifdef GALLIUM_NOUVEAU
     67 #include "nouveau/drm/nouveau_drm_public.h"
     68 
     69 struct pipe_screen *
     70 pipe_nouveau_create_screen(int fd)
     71 {
     72    struct pipe_screen *screen;
     73 
     74    screen = nouveau_drm_screen_create(fd);
     75    return screen ? debug_screen_wrap(screen) : NULL;
     76 }
     77 
     78 #else
     79 
     80 struct pipe_screen *
     81 pipe_nouveau_create_screen(int fd)
     82 {
     83    fprintf(stderr, "nouveau: driver missing\n");
     84    return NULL;
     85 }
     86 
     87 #endif
     88 
     89 #ifdef GALLIUM_R300
     90 #include "radeon/radeon_winsys.h"
     91 #include "radeon/drm/radeon_drm_public.h"
     92 #include "r300/r300_public.h"
     93 
     94 struct pipe_screen *
     95 pipe_r300_create_screen(int fd)
     96 {
     97    struct radeon_winsys *rw;
     98 
     99    rw = radeon_drm_winsys_create(fd, r300_screen_create);
    100    return rw ? debug_screen_wrap(rw->screen) : NULL;
    101 }
    102 
    103 #else
    104 
    105 struct pipe_screen *
    106 pipe_r300_create_screen(int fd)
    107 {
    108    fprintf(stderr, "r300: driver missing\n");
    109    return NULL;
    110 }
    111 
    112 #endif
    113 
    114 #ifdef GALLIUM_R600
    115 #include "radeon/radeon_winsys.h"
    116 #include "radeon/drm/radeon_drm_public.h"
    117 #include "r600/r600_public.h"
    118 
    119 struct pipe_screen *
    120 pipe_r600_create_screen(int fd)
    121 {
    122    struct radeon_winsys *rw;
    123 
    124    rw = radeon_drm_winsys_create(fd, r600_screen_create);
    125    return rw ? debug_screen_wrap(rw->screen) : NULL;
    126 }
    127 
    128 #else
    129 
    130 struct pipe_screen *
    131 pipe_r600_create_screen(int fd)
    132 {
    133    fprintf(stderr, "r600: driver missing\n");
    134    return NULL;
    135 }
    136 
    137 #endif
    138 
    139 #ifdef GALLIUM_RADEONSI
    140 #include "radeon/radeon_winsys.h"
    141 #include "radeon/drm/radeon_drm_public.h"
    142 #include "amdgpu/drm/amdgpu_public.h"
    143 #include "radeonsi/si_public.h"
    144 
    145 struct pipe_screen *
    146 pipe_radeonsi_create_screen(int fd)
    147 {
    148    struct radeon_winsys *rw;
    149 
    150    /* First, try amdgpu. */
    151    rw = amdgpu_winsys_create(fd, radeonsi_screen_create);
    152 
    153    if (!rw)
    154       rw = radeon_drm_winsys_create(fd, radeonsi_screen_create);
    155 
    156    return rw ? debug_screen_wrap(rw->screen) : NULL;
    157 }
    158 
    159 #else
    160 
    161 struct pipe_screen *
    162 pipe_radeonsi_create_screen(int fd)
    163 {
    164    fprintf(stderr, "radeonsi: driver missing\n");
    165    return NULL;
    166 }
    167 
    168 #endif
    169 
    170 #ifdef GALLIUM_VMWGFX
    171 #include "svga/drm/svga_drm_public.h"
    172 #include "svga/svga_public.h"
    173 
    174 struct pipe_screen *
    175 pipe_vmwgfx_create_screen(int fd)
    176 {
    177    struct svga_winsys_screen *sws;
    178    struct pipe_screen *screen;
    179 
    180    sws = svga_drm_winsys_screen_create(fd);
    181    if (!sws)
    182       return NULL;
    183 
    184    screen = svga_screen_create(sws);
    185    return screen ? debug_screen_wrap(screen) : NULL;
    186 }
    187 
    188 #else
    189 
    190 struct pipe_screen *
    191 pipe_vmwgfx_create_screen(int fd)
    192 {
    193    fprintf(stderr, "svga: driver missing\n");
    194    return NULL;
    195 }
    196 
    197 #endif
    198 
    199 #ifdef GALLIUM_FREEDRENO
    200 #include "freedreno/drm/freedreno_drm_public.h"
    201 
    202 struct pipe_screen *
    203 pipe_freedreno_create_screen(int fd)
    204 {
    205    struct pipe_screen *screen;
    206 
    207    screen = fd_drm_screen_create(fd);
    208    return screen ? debug_screen_wrap(screen) : NULL;
    209 }
    210 
    211 #else
    212 
    213 struct pipe_screen *
    214 pipe_freedreno_create_screen(int fd)
    215 {
    216    fprintf(stderr, "freedreno: driver missing\n");
    217    return NULL;
    218 }
    219 
    220 #endif
    221 
    222 #ifdef GALLIUM_VIRGL
    223 #include "virgl/drm/virgl_drm_public.h"
    224 #include "virgl/virgl_public.h"
    225 
    226 struct pipe_screen *
    227 pipe_virgl_create_screen(int fd)
    228 {
    229    struct pipe_screen *screen;
    230 
    231    screen = virgl_drm_screen_create(fd);
    232    return screen ? debug_screen_wrap(screen) : NULL;
    233 }
    234 
    235 #else
    236 
    237 struct pipe_screen *
    238 pipe_virgl_create_screen(int fd)
    239 {
    240    fprintf(stderr, "virgl: driver missing\n");
    241    return NULL;
    242 }
    243 
    244 #endif
    245 
    246 #ifdef GALLIUM_VC4
    247 #include "vc4/drm/vc4_drm_public.h"
    248 
    249 struct pipe_screen *
    250 pipe_vc4_create_screen(int fd)
    251 {
    252    struct pipe_screen *screen;
    253 
    254    screen = vc4_drm_screen_create(fd);
    255    return screen ? debug_screen_wrap(screen) : NULL;
    256 }
    257 
    258 #else
    259 
    260 struct pipe_screen *
    261 pipe_vc4_create_screen(int fd)
    262 {
    263    fprintf(stderr, "vc4: driver missing\n");
    264    return NULL;
    265 }
    266 
    267 #endif
    268 
    269 #ifdef GALLIUM_ETNAVIV
    270 #include "etnaviv/drm/etnaviv_drm_public.h"
    271 
    272 struct pipe_screen *
    273 pipe_etna_create_screen(int fd)
    274 {
    275    struct pipe_screen *screen;
    276 
    277    screen = etna_drm_screen_create(fd);
    278    return screen ? debug_screen_wrap(screen) : NULL;
    279 }
    280 
    281 #else
    282 
    283 struct pipe_screen *
    284 pipe_etna_create_screen(int fd)
    285 {
    286    fprintf(stderr, "etnaviv: driver missing\n");
    287    return NULL;
    288 }
    289 
    290 #endif
    291 
    292 #ifdef GALLIUM_IMX
    293 #include "imx/drm/imx_drm_public.h"
    294 
    295 struct pipe_screen *
    296 pipe_imx_drm_create_screen(int fd)
    297 {
    298    struct pipe_screen *screen;
    299 
    300    screen = imx_drm_screen_create(fd);
    301    return screen ? debug_screen_wrap(screen) : NULL;
    302 }
    303 
    304 #else
    305 
    306 struct pipe_screen *
    307 pipe_imx_drm_create_screen(int fd)
    308 {
    309    fprintf(stderr, "imx-drm: driver missing\n");
    310    return NULL;
    311 }
    312 
    313 #endif
    314 
    315 
    316 #endif /* DRM_HELPER_H */
    317