1
0

radeon_cs.c 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. #include "libdrm_macros.h"
  2. #include <stdio.h>
  3. #include "radeon_cs.h"
  4. #include "radeon_cs_int.h"
  5. drm_public struct radeon_cs *
  6. radeon_cs_create(struct radeon_cs_manager *csm, uint32_t ndw)
  7. {
  8. struct radeon_cs_int *csi = csm->funcs->cs_create(csm, ndw);
  9. return (struct radeon_cs *)csi;
  10. }
  11. drm_public int
  12. radeon_cs_write_reloc(struct radeon_cs *cs, struct radeon_bo *bo,
  13. uint32_t read_domain, uint32_t write_domain,
  14. uint32_t flags)
  15. {
  16. struct radeon_cs_int *csi = (struct radeon_cs_int *)cs;
  17. return csi->csm->funcs->cs_write_reloc(csi,
  18. bo,
  19. read_domain,
  20. write_domain,
  21. flags);
  22. }
  23. drm_public int
  24. radeon_cs_begin(struct radeon_cs *cs, uint32_t ndw,
  25. const char *file, const char *func, int line)
  26. {
  27. struct radeon_cs_int *csi = (struct radeon_cs_int *)cs;
  28. return csi->csm->funcs->cs_begin(csi, ndw, file, func, line);
  29. }
  30. drm_public int
  31. radeon_cs_end(struct radeon_cs *cs,
  32. const char *file, const char *func, int line)
  33. {
  34. struct radeon_cs_int *csi = (struct radeon_cs_int *)cs;
  35. return csi->csm->funcs->cs_end(csi, file, func, line);
  36. }
  37. drm_public int radeon_cs_emit(struct radeon_cs *cs)
  38. {
  39. struct radeon_cs_int *csi = (struct radeon_cs_int *)cs;
  40. return csi->csm->funcs->cs_emit(csi);
  41. }
  42. drm_public int radeon_cs_destroy(struct radeon_cs *cs)
  43. {
  44. struct radeon_cs_int *csi = (struct radeon_cs_int *)cs;
  45. return csi->csm->funcs->cs_destroy(csi);
  46. }
  47. drm_public int radeon_cs_erase(struct radeon_cs *cs)
  48. {
  49. struct radeon_cs_int *csi = (struct radeon_cs_int *)cs;
  50. return csi->csm->funcs->cs_erase(csi);
  51. }
  52. drm_public int radeon_cs_need_flush(struct radeon_cs *cs)
  53. {
  54. struct radeon_cs_int *csi = (struct radeon_cs_int *)cs;
  55. return csi->csm->funcs->cs_need_flush(csi);
  56. }
  57. drm_public void radeon_cs_print(struct radeon_cs *cs, FILE *file)
  58. {
  59. struct radeon_cs_int *csi = (struct radeon_cs_int *)cs;
  60. csi->csm->funcs->cs_print(csi, file);
  61. }
  62. drm_public void
  63. radeon_cs_set_limit(struct radeon_cs *cs, uint32_t domain, uint32_t limit)
  64. {
  65. struct radeon_cs_int *csi = (struct radeon_cs_int *)cs;
  66. if (domain == RADEON_GEM_DOMAIN_VRAM)
  67. csi->csm->vram_limit = limit;
  68. else
  69. csi->csm->gart_limit = limit;
  70. }
  71. drm_public void radeon_cs_space_set_flush(struct radeon_cs *cs,
  72. void (*fn)(void *), void *data)
  73. {
  74. struct radeon_cs_int *csi = (struct radeon_cs_int *)cs;
  75. csi->space_flush_fn = fn;
  76. csi->space_flush_data = data;
  77. }
  78. drm_public uint32_t radeon_cs_get_id(struct radeon_cs *cs)
  79. {
  80. struct radeon_cs_int *csi = (struct radeon_cs_int *)cs;
  81. return csi->id;
  82. }