5 #include "target-helpers/inline_debug_helper.h"
6 #include "target-helpers/drm_helper_public.h"
7 #include "state_tracker/drm_driver.h"
8 #include "util/xmlpool.h"
10 static const struct drm_conf_ret throttle_ret
= {
15 static const struct drm_conf_ret share_fd_ret
= {
16 .type
= DRM_CONF_BOOL
,
20 const struct drm_conf_ret
*
21 pipe_default_configuration_query(enum drm_conf conf
)
24 case DRM_CONF_THROTTLE
:
26 case DRM_CONF_SHARE_FD
:
35 #include "i915/drm/i915_drm_public.h"
36 #include "i915/i915_public.h"
39 pipe_i915_create_screen(int fd
, const struct pipe_screen_config
*config
)
41 struct i915_winsys
*iws
;
42 struct pipe_screen
*screen
;
44 iws
= i915_drm_winsys_create(fd
);
48 screen
= i915_screen_create(iws
);
49 return screen
? debug_screen_wrap(screen
) : NULL
;
55 pipe_i915_create_screen(int fd
, const struct pipe_screen_config
*config
)
57 fprintf(stderr
, "i915g: driver missing\n");
63 #ifdef GALLIUM_NOUVEAU
64 #include "nouveau/drm/nouveau_drm_public.h"
67 pipe_nouveau_create_screen(int fd
, const struct pipe_screen_config
*config
)
69 struct pipe_screen
*screen
;
71 screen
= nouveau_drm_screen_create(fd
);
72 return screen
? debug_screen_wrap(screen
) : NULL
;
78 pipe_nouveau_create_screen(int fd
, const struct pipe_screen_config
*config
)
80 fprintf(stderr
, "nouveau: driver missing\n");
87 #include "pl111/drm/pl111_drm_public.h"
90 pipe_pl111_create_screen(int fd
, const struct pipe_screen_config
*config
)
92 struct pipe_screen
*screen
;
94 screen
= pl111_drm_screen_create(fd
);
95 return screen
? debug_screen_wrap(screen
) : NULL
;
101 pipe_pl111_create_screen(int fd
, const struct pipe_screen_config
*config
)
103 fprintf(stderr
, "pl111: driver missing\n");
110 #include "radeon/radeon_winsys.h"
111 #include "radeon/drm/radeon_drm_public.h"
112 #include "r300/r300_public.h"
115 pipe_r300_create_screen(int fd
, const struct pipe_screen_config
*config
)
117 struct radeon_winsys
*rw
;
119 rw
= radeon_drm_winsys_create(fd
, config
, r300_screen_create
);
120 return rw
? debug_screen_wrap(rw
->screen
) : NULL
;
126 pipe_r300_create_screen(int fd
, const struct pipe_screen_config
*config
)
128 fprintf(stderr
, "r300: driver missing\n");
135 #include "radeon/radeon_winsys.h"
136 #include "radeon/drm/radeon_drm_public.h"
137 #include "r600/r600_public.h"
140 pipe_r600_create_screen(int fd
, const struct pipe_screen_config
*config
)
142 struct radeon_winsys
*rw
;
144 rw
= radeon_drm_winsys_create(fd
, config
, r600_screen_create
);
145 return rw
? debug_screen_wrap(rw
->screen
) : NULL
;
151 pipe_r600_create_screen(int fd
, const struct pipe_screen_config
*config
)
153 fprintf(stderr
, "r600: driver missing\n");
159 #ifdef GALLIUM_RADEONSI
160 #include "radeon/radeon_winsys.h"
161 #include "radeon/drm/radeon_drm_public.h"
162 #include "amdgpu/drm/amdgpu_public.h"
163 #include "radeonsi/si_public.h"
166 pipe_radeonsi_create_screen(int fd
, const struct pipe_screen_config
*config
)
168 struct radeon_winsys
*rw
;
170 /* First, try amdgpu. */
171 rw
= amdgpu_winsys_create(fd
, config
, radeonsi_screen_create
);
174 rw
= radeon_drm_winsys_create(fd
, config
, radeonsi_screen_create
);
176 return rw
? debug_screen_wrap(rw
->screen
) : NULL
;
179 const struct drm_conf_ret
*
180 pipe_radeonsi_configuration_query(enum drm_conf conf
)
182 static const struct drm_conf_ret xml_options_ret
= {
183 .type
= DRM_CONF_POINTER
,
185 #include "radeonsi/si_driinfo.h"
189 case DRM_CONF_XML_OPTIONS
:
190 return &xml_options_ret
;
194 return pipe_default_configuration_query(conf
);
200 pipe_radeonsi_create_screen(int fd
, const struct pipe_screen_config
*config
)
202 fprintf(stderr
, "radeonsi: driver missing\n");
206 const struct drm_conf_ret
*
207 pipe_radeonsi_configuration_query(enum drm_conf conf
)
214 #ifdef GALLIUM_VMWGFX
215 #include "svga/drm/svga_drm_public.h"
216 #include "svga/svga_public.h"
219 pipe_vmwgfx_create_screen(int fd
, const struct pipe_screen_config
*config
)
221 struct svga_winsys_screen
*sws
;
222 struct pipe_screen
*screen
;
224 sws
= svga_drm_winsys_screen_create(fd
);
228 screen
= svga_screen_create(sws
);
229 return screen
? debug_screen_wrap(screen
) : NULL
;
235 pipe_vmwgfx_create_screen(int fd
, const struct pipe_screen_config
*config
)
237 fprintf(stderr
, "svga: driver missing\n");
243 #ifdef GALLIUM_FREEDRENO
244 #include "freedreno/drm/freedreno_drm_public.h"
247 pipe_freedreno_create_screen(int fd
, const struct pipe_screen_config
*config
)
249 struct pipe_screen
*screen
;
251 screen
= fd_drm_screen_create(fd
);
252 return screen
? debug_screen_wrap(screen
) : NULL
;
258 pipe_freedreno_create_screen(int fd
, const struct pipe_screen_config
*config
)
260 fprintf(stderr
, "freedreno: driver missing\n");
267 #include "virgl/drm/virgl_drm_public.h"
268 #include "virgl/virgl_public.h"
271 pipe_virgl_create_screen(int fd
, const struct pipe_screen_config
*config
)
273 struct pipe_screen
*screen
;
275 screen
= virgl_drm_screen_create(fd
);
276 return screen
? debug_screen_wrap(screen
) : NULL
;
282 pipe_virgl_create_screen(int fd
, const struct pipe_screen_config
*config
)
284 fprintf(stderr
, "virgl: driver missing\n");
291 #include "vc4/drm/vc4_drm_public.h"
294 pipe_vc4_create_screen(int fd
, const struct pipe_screen_config
*config
)
296 struct pipe_screen
*screen
;
298 screen
= vc4_drm_screen_create(fd
);
299 return screen
? debug_screen_wrap(screen
) : NULL
;
305 pipe_vc4_create_screen(int fd
, const struct pipe_screen_config
*config
)
307 fprintf(stderr
, "vc4: driver missing\n");
314 #include "vc5/drm/vc5_drm_public.h"
317 pipe_vc5_create_screen(int fd
, const struct pipe_screen_config
*config
)
319 struct pipe_screen
*screen
;
321 screen
= vc5_drm_screen_create(fd
);
322 return screen
? debug_screen_wrap(screen
) : NULL
;
328 pipe_vc5_create_screen(int fd
, const struct pipe_screen_config
*config
)
330 fprintf(stderr
, "vc5: driver missing\n");
336 #ifdef GALLIUM_ETNAVIV
337 #include "etnaviv/drm/etnaviv_drm_public.h"
340 pipe_etna_create_screen(int fd
, const struct pipe_screen_config
*config
)
342 struct pipe_screen
*screen
;
344 screen
= etna_drm_screen_create(fd
);
345 return screen
? debug_screen_wrap(screen
) : NULL
;
351 pipe_etna_create_screen(int fd
, const struct pipe_screen_config
*config
)
353 fprintf(stderr
, "etnaviv: driver missing\n");
360 #include "imx/drm/imx_drm_public.h"
363 pipe_imx_drm_create_screen(int fd
, const struct pipe_screen_config
*config
)
365 struct pipe_screen
*screen
;
367 screen
= imx_drm_screen_create(fd
);
368 return screen
? debug_screen_wrap(screen
) : NULL
;
374 pipe_imx_drm_create_screen(int fd
, const struct pipe_screen_config
*config
)
376 fprintf(stderr
, "imx-drm: driver missing\n");
383 #endif /* DRM_HELPER_H */