diff options
Diffstat (limited to 'drivers/gpu/pvr/buffer_manager.h')
-rw-r--r-- | drivers/gpu/pvr/buffer_manager.h | 210 |
1 files changed, 210 insertions, 0 deletions
diff --git a/drivers/gpu/pvr/buffer_manager.h b/drivers/gpu/pvr/buffer_manager.h new file mode 100644 index 00000000000..1467cd3939f --- /dev/null +++ b/drivers/gpu/pvr/buffer_manager.h | |||
@@ -0,0 +1,210 @@ | |||
1 | /********************************************************************** | ||
2 | * | ||
3 | * Copyright(c) 2008 Imagination Technologies Ltd. All rights reserved. | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify it | ||
6 | * under the terms and conditions of the GNU General Public License, | ||
7 | * version 2, as published by the Free Software Foundation. | ||
8 | * | ||
9 | * This program is distributed in the hope it will be useful but, except | ||
10 | * as otherwise stated in writing, without any warranty; without even the | ||
11 | * implied warranty of merchantability or fitness for a particular purpose. | ||
12 | * See the GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License along with | ||
15 | * this program; if not, write to the Free Software Foundation, Inc., | ||
16 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | ||
17 | * | ||
18 | * The full GNU General Public License is included in this distribution in | ||
19 | * the file called "COPYING". | ||
20 | * | ||
21 | * Contact Information: | ||
22 | * Imagination Technologies Ltd. <gpl-support@imgtec.com> | ||
23 | * Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK | ||
24 | * | ||
25 | ******************************************************************************/ | ||
26 | |||
27 | #ifndef _BUFFER_MANAGER_H_ | ||
28 | #define _BUFFER_MANAGER_H_ | ||
29 | |||
30 | #include "img_types.h" | ||
31 | #include "ra.h" | ||
32 | #include "perproc.h" | ||
33 | |||
34 | #if defined(__cplusplus) | ||
35 | extern "C"{ | ||
36 | #endif | ||
37 | |||
38 | typedef struct _BM_HEAP_ BM_HEAP; | ||
39 | |||
40 | struct _BM_MAPPING_ | ||
41 | { | ||
42 | enum | ||
43 | { | ||
44 | hm_wrapped = 1, | ||
45 | hm_wrapped_scatter, | ||
46 | hm_wrapped_virtaddr, | ||
47 | hm_wrapped_scatter_virtaddr, | ||
48 | hm_env, | ||
49 | hm_contiguous | ||
50 | } eCpuMemoryOrigin; | ||
51 | |||
52 | BM_HEAP *pBMHeap; | ||
53 | RA_ARENA *pArena; | ||
54 | |||
55 | IMG_CPU_VIRTADDR CpuVAddr; | ||
56 | IMG_CPU_PHYADDR CpuPAddr; | ||
57 | IMG_DEV_VIRTADDR DevVAddr; | ||
58 | IMG_SYS_PHYADDR *psSysAddr; | ||
59 | IMG_SIZE_T uSize; | ||
60 | IMG_HANDLE hOSMemHandle; | ||
61 | IMG_UINT32 ui32Flags; | ||
62 | }; | ||
63 | |||
64 | typedef struct _BM_BUF_ | ||
65 | { | ||
66 | IMG_CPU_VIRTADDR *CpuVAddr; | ||
67 | IMG_VOID *hOSMemHandle; | ||
68 | IMG_CPU_PHYADDR CpuPAddr; | ||
69 | IMG_DEV_VIRTADDR DevVAddr; | ||
70 | |||
71 | BM_MAPPING *pMapping; | ||
72 | IMG_UINT32 ui32RefCount; | ||
73 | IMG_UINT32 ui32ExportCount; | ||
74 | } BM_BUF; | ||
75 | |||
76 | struct _BM_HEAP_ | ||
77 | { | ||
78 | IMG_UINT32 ui32Attribs; | ||
79 | BM_CONTEXT *pBMContext; | ||
80 | RA_ARENA *pImportArena; | ||
81 | RA_ARENA *pLocalDevMemArena; | ||
82 | RA_ARENA *pVMArena; | ||
83 | DEV_ARENA_DESCRIPTOR sDevArena; | ||
84 | MMU_HEAP *pMMUHeap; | ||
85 | PDUMP_MMU_ATTRIB *psMMUAttrib; | ||
86 | |||
87 | struct _BM_HEAP_ *psNext; | ||
88 | struct _BM_HEAP_ **ppsThis; | ||
89 | }; | ||
90 | |||
91 | struct _BM_CONTEXT_ | ||
92 | { | ||
93 | MMU_CONTEXT *psMMUContext; | ||
94 | |||
95 | |||
96 | BM_HEAP *psBMHeap; | ||
97 | |||
98 | |||
99 | BM_HEAP *psBMSharedHeap; | ||
100 | |||
101 | PVRSRV_DEVICE_NODE *psDeviceNode; | ||
102 | |||
103 | |||
104 | HASH_TABLE *pBufferHash; | ||
105 | |||
106 | |||
107 | IMG_HANDLE hResItem; | ||
108 | |||
109 | IMG_UINT32 ui32RefCount; | ||
110 | |||
111 | |||
112 | |||
113 | struct _BM_CONTEXT_ *psNext; | ||
114 | struct _BM_CONTEXT_ **ppsThis; | ||
115 | }; | ||
116 | |||
117 | |||
118 | |||
119 | typedef IMG_VOID *BM_HANDLE; | ||
120 | |||
121 | #define BP_POOL_MASK 0x7 | ||
122 | |||
123 | #define BP_CONTIGUOUS (1 << 3) | ||
124 | #define BP_PARAMBUFFER (1 << 4) | ||
125 | |||
126 | #define BM_MAX_DEVMEM_ARENAS 2 | ||
127 | |||
128 | IMG_HANDLE | ||
129 | BM_CreateContext(PVRSRV_DEVICE_NODE *psDeviceNode, | ||
130 | IMG_DEV_PHYADDR *psPDDevPAddr, | ||
131 | PVRSRV_PER_PROCESS_DATA *psPerProc, | ||
132 | IMG_BOOL *pbCreated); | ||
133 | |||
134 | |||
135 | PVRSRV_ERROR | ||
136 | BM_DestroyContext (IMG_HANDLE hBMContext, | ||
137 | IMG_BOOL *pbCreated); | ||
138 | |||
139 | |||
140 | IMG_HANDLE | ||
141 | BM_CreateHeap (IMG_HANDLE hBMContext, | ||
142 | DEVICE_MEMORY_HEAP_INFO *psDevMemHeapInfo); | ||
143 | |||
144 | IMG_VOID | ||
145 | BM_DestroyHeap (IMG_HANDLE hDevMemHeap); | ||
146 | |||
147 | |||
148 | IMG_BOOL | ||
149 | BM_Reinitialise (PVRSRV_DEVICE_NODE *psDeviceNode); | ||
150 | |||
151 | IMG_BOOL | ||
152 | BM_Alloc (IMG_HANDLE hDevMemHeap, | ||
153 | IMG_DEV_VIRTADDR *psDevVAddr, | ||
154 | IMG_SIZE_T uSize, | ||
155 | IMG_UINT32 *pui32Flags, | ||
156 | IMG_UINT32 uDevVAddrAlignment, | ||
157 | BM_HANDLE *phBuf); | ||
158 | |||
159 | IMG_BOOL | ||
160 | BM_Wrap ( IMG_HANDLE hDevMemHeap, | ||
161 | IMG_SIZE_T ui32Size, | ||
162 | IMG_SIZE_T ui32Offset, | ||
163 | IMG_BOOL bPhysContig, | ||
164 | IMG_SYS_PHYADDR *psSysAddr, | ||
165 | IMG_VOID *pvCPUVAddr, | ||
166 | IMG_UINT32 *pui32Flags, | ||
167 | BM_HANDLE *phBuf); | ||
168 | |||
169 | IMG_VOID | ||
170 | BM_Free (BM_HANDLE hBuf, | ||
171 | IMG_UINT32 ui32Flags); | ||
172 | |||
173 | |||
174 | IMG_CPU_VIRTADDR | ||
175 | BM_HandleToCpuVaddr (BM_HANDLE hBuf); | ||
176 | |||
177 | IMG_DEV_VIRTADDR | ||
178 | BM_HandleToDevVaddr (BM_HANDLE hBuf); | ||
179 | |||
180 | IMG_SYS_PHYADDR | ||
181 | BM_HandleToSysPaddr (BM_HANDLE hBuf); | ||
182 | |||
183 | IMG_HANDLE | ||
184 | BM_HandleToOSMemHandle (BM_HANDLE hBuf); | ||
185 | |||
186 | IMG_VOID BM_GetPhysPageAddr(PVRSRV_KERNEL_MEM_INFO *psMemInfo, | ||
187 | IMG_DEV_VIRTADDR sDevVPageAddr, | ||
188 | IMG_DEV_PHYADDR *psDevPAddr); | ||
189 | |||
190 | MMU_CONTEXT* BM_GetMMUContext(IMG_HANDLE hDevMemHeap); | ||
191 | |||
192 | MMU_CONTEXT* BM_GetMMUContextFromMemContext(IMG_HANDLE hDevMemContext); | ||
193 | |||
194 | IMG_HANDLE BM_GetMMUHeap(IMG_HANDLE hDevMemHeap); | ||
195 | |||
196 | PVRSRV_DEVICE_NODE* BM_GetDeviceNode(IMG_HANDLE hDevMemContext); | ||
197 | |||
198 | |||
199 | IMG_HANDLE BM_GetMappingHandle(PVRSRV_KERNEL_MEM_INFO *psMemInfo); | ||
200 | |||
201 | IMG_VOID BM_Export(BM_HANDLE hBuf); | ||
202 | |||
203 | IMG_VOID BM_FreeExport(BM_HANDLE hBuf, IMG_UINT32 ui32Flags); | ||
204 | |||
205 | #if defined(__cplusplus) | ||
206 | } | ||
207 | #endif | ||
208 | |||
209 | #endif | ||
210 | |||