Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
drivers
gpu
drm
radeon
radeon_object.h
Go to the documentation of this file.
1
/*
2
* Copyright 2008 Advanced Micro Devices, Inc.
3
* Copyright 2008 Red Hat Inc.
4
* Copyright 2009 Jerome Glisse.
5
*
6
* Permission is hereby granted, free of charge, to any person obtaining a
7
* copy of this software and associated documentation files (the "Software"),
8
* to deal in the Software without restriction, including without limitation
9
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
10
* and/or sell copies of the Software, and to permit persons to whom the
11
* Software is furnished to do so, subject to the following conditions:
12
*
13
* The above copyright notice and this permission notice shall be included in
14
* all copies or substantial portions of the Software.
15
*
16
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
20
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
21
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22
* OTHER DEALINGS IN THE SOFTWARE.
23
*
24
* Authors: Dave Airlie
25
* Alex Deucher
26
* Jerome Glisse
27
*/
28
#ifndef __RADEON_OBJECT_H__
29
#define __RADEON_OBJECT_H__
30
31
#include <
drm/radeon_drm.h
>
32
#include "
radeon.h
"
33
40
static
inline
unsigned
radeon_mem_type_to_domain(
u32
mem_type
)
41
{
42
switch
(mem_type) {
43
case
TTM_PL_VRAM
:
44
return
RADEON_GEM_DOMAIN_VRAM
;
45
case
TTM_PL_TT
:
46
return
RADEON_GEM_DOMAIN_GTT
;
47
case
TTM_PL_SYSTEM
:
48
return
RADEON_GEM_DOMAIN_CPU
;
49
default
:
50
break
;
51
}
52
return
0;
53
}
54
55
int
radeon_bo_reserve
(
struct
radeon_bo
*bo,
bool
no_intr
);
56
57
static
inline
void
radeon_bo_unreserve(
struct
radeon_bo
*bo)
58
{
59
ttm_bo_unreserve
(&bo->
tbo
);
60
}
61
71
static
inline
u64
radeon_bo_gpu_offset(
struct
radeon_bo
*bo)
72
{
73
return
bo->
tbo
.offset;
74
}
75
76
static
inline
unsigned
long
radeon_bo_size(
struct
radeon_bo
*bo)
77
{
78
return
bo->
tbo
.num_pages <<
PAGE_SHIFT
;
79
}
80
81
static
inline
bool
radeon_bo_is_reserved(
struct
radeon_bo
*bo)
82
{
83
return
!!
atomic_read
(&bo->
tbo
.reserved);
84
}
85
86
static
inline
unsigned
radeon_bo_ngpu_pages(
struct
radeon_bo
*bo)
87
{
88
return
(bo->
tbo
.num_pages <<
PAGE_SHIFT
) /
RADEON_GPU_PAGE_SIZE
;
89
}
90
91
static
inline
unsigned
radeon_bo_gpu_page_alignment(
struct
radeon_bo
*bo)
92
{
93
return
(bo->
tbo
.mem.page_alignment <<
PAGE_SHIFT
) /
RADEON_GPU_PAGE_SIZE
;
94
}
95
105
static
inline
u64
radeon_bo_mmap_offset(
struct
radeon_bo
*bo)
106
{
107
return
bo->
tbo
.addr_space_offset;
108
}
109
110
extern
int
radeon_bo_wait
(
struct
radeon_bo
*bo,
u32
*mem_type,
111
bool
no_wait);
112
113
extern
int
radeon_bo_create
(
struct
radeon_device
*
rdev
,
114
unsigned
long
size
,
int
byte_align,
115
bool
kernel,
u32
domain,
116
struct
sg_table
*
sg
,
117
struct
radeon_bo
**bo_ptr);
118
extern
int
radeon_bo_kmap
(
struct
radeon_bo
*bo,
void
**
ptr
);
119
extern
void
radeon_bo_kunmap
(
struct
radeon_bo
*bo);
120
extern
void
radeon_bo_unref
(
struct
radeon_bo
**bo);
121
extern
int
radeon_bo_pin
(
struct
radeon_bo
*bo,
u32
domain,
u64
*gpu_addr);
122
extern
int
radeon_bo_pin_restricted
(
struct
radeon_bo
*bo,
u32
domain,
123
u64
max_offset,
u64
*gpu_addr);
124
extern
int
radeon_bo_unpin
(
struct
radeon_bo
*bo);
125
extern
int
radeon_bo_evict_vram
(
struct
radeon_device
*
rdev
);
126
extern
void
radeon_bo_force_delete
(
struct
radeon_device
*
rdev
);
127
extern
int
radeon_bo_init
(
struct
radeon_device
*
rdev
);
128
extern
void
radeon_bo_fini
(
struct
radeon_device
*
rdev
);
129
extern
void
radeon_bo_list_add_object
(
struct
radeon_bo_list
*lobj,
130
struct
list_head
*
head
);
131
extern
int
radeon_bo_list_validate
(
struct
list_head
*
head
);
132
extern
int
radeon_bo_fbdev_mmap
(
struct
radeon_bo
*bo,
133
struct
vm_area_struct
*vma);
134
extern
int
radeon_bo_set_tiling_flags
(
struct
radeon_bo
*bo,
135
u32
tiling_flags
,
u32
pitch
);
136
extern
void
radeon_bo_get_tiling_flags
(
struct
radeon_bo
*bo,
137
u32
*
tiling_flags
,
u32
*
pitch
);
138
extern
int
radeon_bo_check_tiling
(
struct
radeon_bo
*bo,
bool
has_moved,
139
bool
force_drop);
140
extern
void
radeon_bo_move_notify
(
struct
ttm_buffer_object
*bo,
141
struct
ttm_mem_reg
*
mem
);
142
extern
int
radeon_bo_fault_reserve_notify
(
struct
ttm_buffer_object
*bo);
143
extern
int
radeon_bo_get_surface_reg
(
struct
radeon_bo
*bo);
144
145
/*
146
* sub allocation
147
*/
148
149
static
inline
uint64_t
radeon_sa_bo_gpu_addr(
struct
radeon_sa_bo
*sa_bo)
150
{
151
return
sa_bo->
manager
->gpu_addr + sa_bo->
soffset
;
152
}
153
154
static
inline
void
* radeon_sa_bo_cpu_addr(
struct
radeon_sa_bo
*sa_bo)
155
{
156
return
sa_bo->
manager
->cpu_ptr + sa_bo->
soffset
;
157
}
158
159
extern
int
radeon_sa_bo_manager_init
(
struct
radeon_device
*
rdev
,
160
struct
radeon_sa_manager
*sa_manager,
161
unsigned
size
,
u32
domain);
162
extern
void
radeon_sa_bo_manager_fini
(
struct
radeon_device
*
rdev
,
163
struct
radeon_sa_manager
*sa_manager);
164
extern
int
radeon_sa_bo_manager_start
(
struct
radeon_device
*
rdev
,
165
struct
radeon_sa_manager
*sa_manager);
166
extern
int
radeon_sa_bo_manager_suspend
(
struct
radeon_device
*
rdev
,
167
struct
radeon_sa_manager
*sa_manager);
168
extern
int
radeon_sa_bo_new
(
struct
radeon_device
*
rdev
,
169
struct
radeon_sa_manager
*sa_manager,
170
struct
radeon_sa_bo
**sa_bo,
171
unsigned
size
,
unsigned
align
,
bool
block
);
172
extern
void
radeon_sa_bo_free
(
struct
radeon_device
*
rdev
,
173
struct
radeon_sa_bo
**sa_bo,
174
struct
radeon_fence
*fence);
175
#if defined(CONFIG_DEBUG_FS)
176
extern
void
radeon_sa_bo_dump_debug_info(
struct
radeon_sa_manager
*sa_manager,
177
struct
seq_file
*
m
);
178
#endif
179
180
181
#endif
Generated on Thu Jan 10 2013 13:33:27 for Linux Kernel by
1.8.2