Clone of mesa.
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

drm_helper.h 5.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292
  1. #ifndef DRM_HELPER_H
  2. #define DRM_HELPER_H
  3. #include <stdio.h>
  4. #include "target-helpers/inline_debug_helper.h"
  5. #include "target-helpers/drm_helper_public.h"
  6. #ifdef GALLIUM_I915
  7. #include "i915/drm/i915_drm_public.h"
  8. #include "i915/i915_public.h"
  9. struct pipe_screen *
  10. pipe_i915_create_screen(int fd)
  11. {
  12. struct i915_winsys *iws;
  13. struct pipe_screen *screen;
  14. iws = i915_drm_winsys_create(fd);
  15. if (!iws)
  16. return NULL;
  17. screen = i915_screen_create(iws);
  18. return screen ? debug_screen_wrap(screen) : NULL;
  19. }
  20. #else
  21. struct pipe_screen *
  22. pipe_i915_create_screen(int fd)
  23. {
  24. fprintf(stderr, "i915g: driver missing\n");
  25. return NULL;
  26. }
  27. #endif
  28. #ifdef GALLIUM_ILO
  29. #include "intel/drm/intel_drm_public.h"
  30. #include "ilo/ilo_public.h"
  31. struct pipe_screen *
  32. pipe_ilo_create_screen(int fd)
  33. {
  34. struct intel_winsys *iws;
  35. struct pipe_screen *screen;
  36. iws = intel_winsys_create_for_fd(fd);
  37. if (!iws)
  38. return NULL;
  39. screen = ilo_screen_create(iws);
  40. return screen ? debug_screen_wrap(screen) : NULL;
  41. }
  42. #else
  43. struct pipe_screen *
  44. pipe_ilo_create_screen(int fd)
  45. {
  46. fprintf(stderr, "ilo: driver missing\n");
  47. return NULL;
  48. }
  49. #endif
  50. #ifdef GALLIUM_NOUVEAU
  51. #include "nouveau/drm/nouveau_drm_public.h"
  52. struct pipe_screen *
  53. pipe_nouveau_create_screen(int fd)
  54. {
  55. struct pipe_screen *screen;
  56. screen = nouveau_drm_screen_create(fd);
  57. return screen ? debug_screen_wrap(screen) : NULL;
  58. }
  59. #else
  60. struct pipe_screen *
  61. pipe_nouveau_create_screen(int fd)
  62. {
  63. fprintf(stderr, "nouveau: driver missing\n");
  64. return NULL;
  65. }
  66. #endif
  67. #ifdef GALLIUM_R300
  68. #include "radeon/radeon_winsys.h"
  69. #include "radeon/drm/radeon_drm_public.h"
  70. #include "r300/r300_public.h"
  71. struct pipe_screen *
  72. pipe_r300_create_screen(int fd)
  73. {
  74. struct radeon_winsys *rw;
  75. rw = radeon_drm_winsys_create(fd, r300_screen_create);
  76. return rw ? debug_screen_wrap(rw->screen) : NULL;
  77. }
  78. #else
  79. struct pipe_screen *
  80. pipe_r300_create_screen(int fd)
  81. {
  82. fprintf(stderr, "r300: driver missing\n");
  83. return NULL;
  84. }
  85. #endif
  86. #ifdef GALLIUM_R600
  87. #include "radeon/radeon_winsys.h"
  88. #include "radeon/drm/radeon_drm_public.h"
  89. #include "r600/r600_public.h"
  90. struct pipe_screen *
  91. pipe_r600_create_screen(int fd)
  92. {
  93. struct radeon_winsys *rw;
  94. rw = radeon_drm_winsys_create(fd, r600_screen_create);
  95. return rw ? debug_screen_wrap(rw->screen) : NULL;
  96. }
  97. #else
  98. struct pipe_screen *
  99. pipe_r600_create_screen(int fd)
  100. {
  101. fprintf(stderr, "r600: driver missing\n");
  102. return NULL;
  103. }
  104. #endif
  105. #ifdef GALLIUM_RADEONSI
  106. #include "radeon/radeon_winsys.h"
  107. #include "radeon/drm/radeon_drm_public.h"
  108. #include "amdgpu/drm/amdgpu_public.h"
  109. #include "radeonsi/si_public.h"
  110. struct pipe_screen *
  111. pipe_radeonsi_create_screen(int fd)
  112. {
  113. struct radeon_winsys *rw;
  114. /* First, try amdgpu. */
  115. rw = amdgpu_winsys_create(fd, radeonsi_screen_create);
  116. if (!rw)
  117. rw = radeon_drm_winsys_create(fd, radeonsi_screen_create);
  118. return rw ? debug_screen_wrap(rw->screen) : NULL;
  119. }
  120. #else
  121. struct pipe_screen *
  122. pipe_radeonsi_create_screen(int fd)
  123. {
  124. fprintf(stderr, "radeonsi: driver missing\n");
  125. return NULL;
  126. }
  127. #endif
  128. #ifdef GALLIUM_VMWGFX
  129. #include "svga/drm/svga_drm_public.h"
  130. #include "svga/svga_public.h"
  131. struct pipe_screen *
  132. pipe_vmwgfx_create_screen(int fd)
  133. {
  134. struct svga_winsys_screen *sws;
  135. struct pipe_screen *screen;
  136. sws = svga_drm_winsys_screen_create(fd);
  137. if (!sws)
  138. return NULL;
  139. screen = svga_screen_create(sws);
  140. return screen ? debug_screen_wrap(screen) : NULL;
  141. }
  142. #else
  143. struct pipe_screen *
  144. pipe_vmwgfx_create_screen(int fd)
  145. {
  146. fprintf(stderr, "svga: driver missing\n");
  147. return NULL;
  148. }
  149. #endif
  150. #ifdef GALLIUM_FREEDRENO
  151. #include "freedreno/drm/freedreno_drm_public.h"
  152. struct pipe_screen *
  153. pipe_freedreno_create_screen(int fd)
  154. {
  155. struct pipe_screen *screen;
  156. screen = fd_drm_screen_create(fd);
  157. return screen ? debug_screen_wrap(screen) : NULL;
  158. }
  159. #else
  160. struct pipe_screen *
  161. pipe_freedreno_create_screen(int fd)
  162. {
  163. fprintf(stderr, "freedreno: driver missing\n");
  164. return NULL;
  165. }
  166. #endif
  167. #ifdef GALLIUM_VIRGL
  168. #include "virgl/drm/virgl_drm_public.h"
  169. #include "virgl/virgl_public.h"
  170. struct pipe_screen *
  171. pipe_virgl_create_screen(int fd)
  172. {
  173. struct pipe_screen *screen;
  174. screen = virgl_drm_screen_create(fd);
  175. return screen ? debug_screen_wrap(screen) : NULL;
  176. }
  177. #else
  178. struct pipe_screen *
  179. pipe_virgl_create_screen(int fd)
  180. {
  181. fprintf(stderr, "virgl: driver missing\n");
  182. return NULL;
  183. }
  184. #endif
  185. #ifdef GALLIUM_VC4
  186. #include "vc4/drm/vc4_drm_public.h"
  187. struct pipe_screen *
  188. pipe_vc4_create_screen(int fd)
  189. {
  190. struct pipe_screen *screen;
  191. screen = vc4_drm_screen_create(fd);
  192. return screen ? debug_screen_wrap(screen) : NULL;
  193. }
  194. #else
  195. struct pipe_screen *
  196. pipe_vc4_create_screen(int fd)
  197. {
  198. fprintf(stderr, "vc4: driver missing\n");
  199. return NULL;
  200. }
  201. #endif
  202. #ifdef GALLIUM_ETNAVIV
  203. #include "etnaviv/drm/etnaviv_drm_public.h"
  204. struct pipe_screen *
  205. pipe_etna_create_screen(int fd)
  206. {
  207. struct pipe_screen *screen;
  208. screen = etna_drm_screen_create(fd);
  209. return screen ? debug_screen_wrap(screen) : NULL;
  210. }
  211. #else
  212. struct pipe_screen *
  213. pipe_etna_create_screen(int fd)
  214. {
  215. fprintf(stderr, "etnaviv: driver missing\n");
  216. return NULL;
  217. }
  218. #endif
  219. #endif /* DRM_HELPER_H */