Merge branch '7.8'
[mesa.git] / src / mesa / drivers / dri / radeon / radeon_bo.c
1 #include <radeon_bocs_wrapper.h>
2 #include <radeon_bo_int_drm.h>
3
4 void radeon_bo_debug(struct radeon_bo *bo,
5 const char *op)
6 {
7 struct radeon_bo_int *boi = (struct radeon_bo_int *)bo;
8
9 fprintf(stderr, "%s %p 0x%08X 0x%08X 0x%08X\n",
10 op, bo, bo->handle, boi->size, boi->cref);
11 }
12
13 struct radeon_bo *radeon_bo_open(struct radeon_bo_manager *bom,
14 uint32_t handle,
15 uint32_t size,
16 uint32_t alignment,
17 uint32_t domains,
18 uint32_t flags)
19 {
20 struct radeon_bo *bo;
21 bo = bom->funcs->bo_open(bom, handle, size, alignment, domains, flags);
22 return bo;
23 }
24
25 void radeon_bo_ref(struct radeon_bo *bo)
26 {
27 struct radeon_bo_int *boi = (struct radeon_bo_int *)bo;
28 boi->cref++;
29 boi->bom->funcs->bo_ref(boi);
30 }
31
32 struct radeon_bo *radeon_bo_unref(struct radeon_bo *bo)
33 {
34 struct radeon_bo_int *boi = (struct radeon_bo_int *)bo;
35 boi->cref--;
36 return boi->bom->funcs->bo_unref(boi);
37 }
38
39 int radeon_bo_map(struct radeon_bo *bo, int write)
40 {
41 struct radeon_bo_int *boi = (struct radeon_bo_int *)bo;
42 return boi->bom->funcs->bo_map(boi, write);
43 }
44
45 int radeon_bo_unmap(struct radeon_bo *bo)
46 {
47 struct radeon_bo_int *boi = (struct radeon_bo_int *)bo;
48 return boi->bom->funcs->bo_unmap(boi);
49 }
50
51 int radeon_bo_wait(struct radeon_bo *bo)
52 {
53 struct radeon_bo_int *boi = (struct radeon_bo_int *)bo;
54 if (!boi->bom->funcs->bo_wait)
55 return 0;
56 return boi->bom->funcs->bo_wait(boi);
57 }
58
59 int radeon_bo_is_busy(struct radeon_bo *bo,
60 uint32_t *domain)
61 {
62 struct radeon_bo_int *boi = (struct radeon_bo_int *)bo;
63 return boi->bom->funcs->bo_is_busy(boi, domain);
64 }
65
66 int radeon_bo_set_tiling(struct radeon_bo *bo,
67 uint32_t tiling_flags, uint32_t pitch)
68 {
69 struct radeon_bo_int *boi = (struct radeon_bo_int *)bo;
70 return boi->bom->funcs->bo_set_tiling(boi, tiling_flags, pitch);
71 }
72
73 int radeon_bo_get_tiling(struct radeon_bo *bo,
74 uint32_t *tiling_flags, uint32_t *pitch)
75 {
76 struct radeon_bo_int *boi = (struct radeon_bo_int *)bo;
77 return boi->bom->funcs->bo_get_tiling(boi, tiling_flags, pitch);
78 }
79
80 int radeon_bo_is_static(struct radeon_bo *bo)
81 {
82 struct radeon_bo_int *boi = (struct radeon_bo_int *)bo;
83 if (boi->bom->funcs->bo_is_static)
84 return boi->bom->funcs->bo_is_static(boi);
85 return 0;
86 }
87
88 int radeon_bo_is_referenced_by_cs(struct radeon_bo *bo,
89 struct radeon_cs *cs)
90 {
91 struct radeon_bo_int *boi = (struct radeon_bo_int *)bo;
92 return boi->cref > 1;
93 }
94
95 uint32_t radeon_bo_get_handle(struct radeon_bo *bo)
96 {
97 return bo->handle;
98 }
99
100 uint32_t radeon_bo_get_src_domain(struct radeon_bo *bo)
101 {
102 struct radeon_bo_int *boi = (struct radeon_bo_int *)bo;
103 uint32_t src_domain;
104
105 src_domain = boi->space_accounted & 0xffff;
106 if (!src_domain)
107 src_domain = boi->space_accounted >> 16;
108
109 return src_domain;
110 }