OSDN Git Service

332b1cba9849d18c6fe79cc7f59a1cd9630d6f03
[android-x86/external-mesa.git] / src / gallium / auxiliary / target-helpers / drm_helper.h
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 virgl_winsys *vws;
230    struct pipe_screen *screen;
231
232    vws = virgl_drm_winsys_create(fd);
233    if (!vws)
234       return NULL;
235
236    screen = virgl_create_screen(vws);
237    return screen ? debug_screen_wrap(screen) : NULL;
238 }
239
240 #else
241
242 struct pipe_screen *
243 pipe_virgl_create_screen(int fd)
244 {
245    fprintf(stderr, "virgl: driver missing\n");
246    return NULL;
247 }
248
249 #endif
250
251 #ifdef GALLIUM_VC4
252 #include "vc4/drm/vc4_drm_public.h"
253
254 struct pipe_screen *
255 pipe_vc4_create_screen(int fd)
256 {
257    struct pipe_screen *screen;
258
259    screen = vc4_drm_screen_create(fd);
260    return screen ? debug_screen_wrap(screen) : NULL;
261 }
262
263 #else
264
265 struct pipe_screen *
266 pipe_vc4_create_screen(int fd)
267 {
268    fprintf(stderr, "vc4: driver missing\n");
269    return NULL;
270 }
271
272 #endif
273
274
275 #endif /* DRM_HELPER_H */