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