~ubuntu-branches/ubuntu/maverick/libdrm/maverick-proposed

« back to all changes in this revision

Viewing changes to radeon/radeon_bo.c

  • Committer: Bazaar Package Importer
  • Author(s): Timo Aaltonen
  • Date: 2010-01-09 00:00:29 UTC
  • mfrom: (1.3.3 upstream)
  • mto: (2.2.9 experimental)
  • mto: This revision was merged to the branch mainline in revision 39.
  • Revision ID: james.westby@ubuntu.com-20100109000029-yhmol07llcxuzk0c
Tags: upstream-2.4.17
ImportĀ upstreamĀ versionĀ 2.4.17

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include <radeon_bo.h>
 
2
#include <radeon_bo_int.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
    if (bo == NULL)
 
36
        return NULL;
 
37
 
 
38
    boi->cref--;
 
39
    return boi->bom->funcs->bo_unref(boi);
 
40
}
 
41
 
 
42
int radeon_bo_map(struct radeon_bo *bo, int write)
 
43
{
 
44
    struct radeon_bo_int *boi = (struct radeon_bo_int *)bo;
 
45
    return boi->bom->funcs->bo_map(boi, write);
 
46
}
 
47
 
 
48
int radeon_bo_unmap(struct radeon_bo *bo)
 
49
{
 
50
    struct radeon_bo_int *boi = (struct radeon_bo_int *)bo;
 
51
    return boi->bom->funcs->bo_unmap(boi);
 
52
}
 
53
 
 
54
int radeon_bo_wait(struct radeon_bo *bo)
 
55
{
 
56
    struct radeon_bo_int *boi = (struct radeon_bo_int *)bo;
 
57
    if (!boi->bom->funcs->bo_wait)
 
58
        return 0;
 
59
    return boi->bom->funcs->bo_wait(boi);
 
60
}
 
61
 
 
62
int radeon_bo_is_busy(struct radeon_bo *bo,
 
63
                      uint32_t *domain)
 
64
{
 
65
    struct radeon_bo_int *boi = (struct radeon_bo_int *)bo;
 
66
    return boi->bom->funcs->bo_is_busy(boi, domain);
 
67
}
 
68
 
 
69
int radeon_bo_set_tiling(struct radeon_bo *bo,
 
70
                         uint32_t tiling_flags, uint32_t pitch)
 
71
{
 
72
    struct radeon_bo_int *boi = (struct radeon_bo_int *)bo;
 
73
    return boi->bom->funcs->bo_set_tiling(boi, tiling_flags, pitch);
 
74
}
 
75
 
 
76
int radeon_bo_get_tiling(struct radeon_bo *bo,
 
77
                          uint32_t *tiling_flags, uint32_t *pitch)
 
78
{
 
79
    struct radeon_bo_int *boi = (struct radeon_bo_int *)bo;
 
80
    return boi->bom->funcs->bo_get_tiling(boi, tiling_flags, pitch);
 
81
}
 
82
 
 
83
int radeon_bo_is_static(struct radeon_bo *bo)
 
84
{
 
85
    struct radeon_bo_int *boi = (struct radeon_bo_int *)bo;
 
86
    if (boi->bom->funcs->bo_is_static)
 
87
        return boi->bom->funcs->bo_is_static(boi);
 
88
    return 0;
 
89
}
 
90
 
 
91
int radeon_bo_is_referenced_by_cs(struct radeon_bo *bo,
 
92
                                  struct radeon_cs *cs)
 
93
{
 
94
    struct radeon_bo_int *boi = (struct radeon_bo_int *)bo;
 
95
    return boi->cref > 1;
 
96
}
 
97
 
 
98
uint32_t radeon_bo_get_handle(struct radeon_bo *bo)
 
99
{
 
100
    return bo->handle;
 
101
}
 
102
 
 
103
uint32_t radeon_bo_get_src_domain(struct radeon_bo *bo)
 
104
{
 
105
    struct radeon_bo_int *boi = (struct radeon_bo_int *)bo;
 
106
    uint32_t src_domain;
 
107
 
 
108
    src_domain = boi->space_accounted & 0xffff;
 
109
    if (!src_domain)
 
110
        src_domain = boi->space_accounted >> 16;
 
111
 
 
112
    return src_domain;
 
113
}