Tizen 2.0 Release
[profile/ivi/osmesa.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 }