diff options
Diffstat (limited to 'drivers/gpu/pvr/handle.h')
-rw-r--r-- | drivers/gpu/pvr/handle.h | 383 |
1 files changed, 383 insertions, 0 deletions
diff --git a/drivers/gpu/pvr/handle.h b/drivers/gpu/pvr/handle.h new file mode 100644 index 00000000000..56de04aede0 --- /dev/null +++ b/drivers/gpu/pvr/handle.h | |||
@@ -0,0 +1,383 @@ | |||
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 __HANDLE_H__ | ||
28 | #define __HANDLE_H__ | ||
29 | |||
30 | #if defined (__cplusplus) | ||
31 | extern "C" { | ||
32 | #endif | ||
33 | |||
34 | #include "img_types.h" | ||
35 | #include "hash.h" | ||
36 | #include "resman.h" | ||
37 | |||
38 | typedef enum | ||
39 | { | ||
40 | PVRSRV_HANDLE_TYPE_NONE = 0, | ||
41 | PVRSRV_HANDLE_TYPE_PERPROC_DATA, | ||
42 | PVRSRV_HANDLE_TYPE_DEV_NODE, | ||
43 | PVRSRV_HANDLE_TYPE_DEV_MEM_CONTEXT, | ||
44 | PVRSRV_HANDLE_TYPE_DEV_MEM_HEAP, | ||
45 | PVRSRV_HANDLE_TYPE_MEM_INFO, | ||
46 | PVRSRV_HANDLE_TYPE_SYNC_INFO, | ||
47 | PVRSRV_HANDLE_TYPE_DISP_INFO, | ||
48 | PVRSRV_HANDLE_TYPE_DISP_SWAP_CHAIN, | ||
49 | PVRSRV_HANDLE_TYPE_BUF_INFO, | ||
50 | PVRSRV_HANDLE_TYPE_DISP_BUFFER, | ||
51 | PVRSRV_HANDLE_TYPE_BUF_BUFFER, | ||
52 | PVRSRV_HANDLE_TYPE_SGX_HW_RENDER_CONTEXT, | ||
53 | PVRSRV_HANDLE_TYPE_SGX_HW_TRANSFER_CONTEXT, | ||
54 | PVRSRV_HANDLE_TYPE_SGX_HW_2D_CONTEXT, | ||
55 | PVRSRV_HANDLE_TYPE_SHARED_PB_DESC, | ||
56 | PVRSRV_HANDLE_TYPE_MEM_INFO_REF, | ||
57 | PVRSRV_HANDLE_TYPE_SHARED_SYS_MEM_INFO, | ||
58 | PVRSRV_HANDLE_TYPE_SHARED_EVENT_OBJECT, | ||
59 | PVRSRV_HANDLE_TYPE_EVENT_OBJECT_CONNECT, | ||
60 | PVRSRV_HANDLE_TYPE_MMAP_INFO, | ||
61 | PVRSRV_HANDLE_TYPE_SOC_TIMER, | ||
62 | PVRSRV_HANDLE_TYPE_SYNC_INFO_MOD_OBJ | ||
63 | } PVRSRV_HANDLE_TYPE; | ||
64 | |||
65 | typedef enum | ||
66 | { | ||
67 | |||
68 | PVRSRV_HANDLE_ALLOC_FLAG_NONE = 0, | ||
69 | |||
70 | PVRSRV_HANDLE_ALLOC_FLAG_SHARED = 0x01, | ||
71 | |||
72 | PVRSRV_HANDLE_ALLOC_FLAG_MULTI = 0x02, | ||
73 | |||
74 | PVRSRV_HANDLE_ALLOC_FLAG_PRIVATE = 0x04 | ||
75 | } PVRSRV_HANDLE_ALLOC_FLAG; | ||
76 | |||
77 | struct _PVRSRV_HANDLE_BASE_; | ||
78 | typedef struct _PVRSRV_HANDLE_BASE_ PVRSRV_HANDLE_BASE; | ||
79 | |||
80 | #ifdef PVR_SECURE_HANDLES | ||
81 | extern PVRSRV_HANDLE_BASE *gpsKernelHandleBase; | ||
82 | |||
83 | #define KERNEL_HANDLE_BASE (gpsKernelHandleBase) | ||
84 | |||
85 | PVRSRV_ERROR PVRSRVAllocHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, PVRSRV_HANDLE_ALLOC_FLAG eFlag); | ||
86 | |||
87 | PVRSRV_ERROR PVRSRVAllocSubHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, PVRSRV_HANDLE_ALLOC_FLAG eFlag, IMG_HANDLE hParent); | ||
88 | |||
89 | PVRSRV_ERROR PVRSRVFindHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType); | ||
90 | |||
91 | PVRSRV_ERROR PVRSRVLookupHandleAnyType(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, PVRSRV_HANDLE_TYPE *peType, IMG_HANDLE hHandle); | ||
92 | |||
93 | PVRSRV_ERROR PVRSRVLookupHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType); | ||
94 | |||
95 | PVRSRV_ERROR PVRSRVLookupSubHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType, IMG_HANDLE hAncestor); | ||
96 | |||
97 | PVRSRV_ERROR PVRSRVGetParentHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *phParent, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType); | ||
98 | |||
99 | PVRSRV_ERROR PVRSRVLookupAndReleaseHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType); | ||
100 | |||
101 | PVRSRV_ERROR PVRSRVReleaseHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType); | ||
102 | |||
103 | PVRSRV_ERROR PVRSRVNewHandleBatch(PVRSRV_HANDLE_BASE *psBase, IMG_UINT32 ui32BatchSize); | ||
104 | |||
105 | PVRSRV_ERROR PVRSRVCommitHandleBatch(PVRSRV_HANDLE_BASE *psBase); | ||
106 | |||
107 | IMG_VOID PVRSRVReleaseHandleBatch(PVRSRV_HANDLE_BASE *psBase); | ||
108 | |||
109 | PVRSRV_ERROR PVRSRVSetMaxHandle(PVRSRV_HANDLE_BASE *psBase, IMG_UINT32 ui32MaxHandle); | ||
110 | |||
111 | IMG_UINT32 PVRSRVGetMaxHandle(PVRSRV_HANDLE_BASE *psBase); | ||
112 | |||
113 | PVRSRV_ERROR PVRSRVEnableHandlePurging(PVRSRV_HANDLE_BASE *psBase); | ||
114 | |||
115 | PVRSRV_ERROR PVRSRVPurgeHandles(PVRSRV_HANDLE_BASE *psBase); | ||
116 | |||
117 | PVRSRV_ERROR PVRSRVAllocHandleBase(PVRSRV_HANDLE_BASE **ppsBase); | ||
118 | |||
119 | PVRSRV_ERROR PVRSRVFreeHandleBase(PVRSRV_HANDLE_BASE *psBase); | ||
120 | |||
121 | PVRSRV_ERROR PVRSRVHandleInit(IMG_VOID); | ||
122 | |||
123 | PVRSRV_ERROR PVRSRVHandleDeInit(IMG_VOID); | ||
124 | |||
125 | #else | ||
126 | |||
127 | #define KERNEL_HANDLE_BASE IMG_NULL | ||
128 | |||
129 | #ifdef INLINE_IS_PRAGMA | ||
130 | #pragma inline(PVRSRVAllocHandle) | ||
131 | #endif | ||
132 | static INLINE | ||
133 | PVRSRV_ERROR PVRSRVAllocHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, PVRSRV_HANDLE_ALLOC_FLAG eFlag) | ||
134 | { | ||
135 | PVR_UNREFERENCED_PARAMETER(eType); | ||
136 | PVR_UNREFERENCED_PARAMETER(eFlag); | ||
137 | PVR_UNREFERENCED_PARAMETER(psBase); | ||
138 | |||
139 | *phHandle = pvData; | ||
140 | return PVRSRV_OK; | ||
141 | } | ||
142 | |||
143 | #ifdef INLINE_IS_PRAGMA | ||
144 | #pragma inline(PVRSRVAllocSubHandle) | ||
145 | #endif | ||
146 | static INLINE | ||
147 | PVRSRV_ERROR PVRSRVAllocSubHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, PVRSRV_HANDLE_ALLOC_FLAG eFlag, IMG_HANDLE hParent) | ||
148 | { | ||
149 | PVR_UNREFERENCED_PARAMETER(eType); | ||
150 | PVR_UNREFERENCED_PARAMETER(eFlag); | ||
151 | PVR_UNREFERENCED_PARAMETER(hParent); | ||
152 | PVR_UNREFERENCED_PARAMETER(psBase); | ||
153 | |||
154 | *phHandle = pvData; | ||
155 | return PVRSRV_OK; | ||
156 | } | ||
157 | |||
158 | #ifdef INLINE_IS_PRAGMA | ||
159 | #pragma inline(PVRSRVFindHandle) | ||
160 | #endif | ||
161 | static INLINE | ||
162 | PVRSRV_ERROR PVRSRVFindHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType) | ||
163 | { | ||
164 | PVR_UNREFERENCED_PARAMETER(eType); | ||
165 | PVR_UNREFERENCED_PARAMETER(psBase); | ||
166 | |||
167 | *phHandle = pvData; | ||
168 | return PVRSRV_OK; | ||
169 | } | ||
170 | |||
171 | #ifdef INLINE_IS_PRAGMA | ||
172 | #pragma inline(PVRSRVLookupHandleAnyType) | ||
173 | #endif | ||
174 | static INLINE | ||
175 | PVRSRV_ERROR PVRSRVLookupHandleAnyType(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, PVRSRV_HANDLE_TYPE *peType, IMG_HANDLE hHandle) | ||
176 | { | ||
177 | PVR_UNREFERENCED_PARAMETER(psBase); | ||
178 | |||
179 | *peType = PVRSRV_HANDLE_TYPE_NONE; | ||
180 | |||
181 | *ppvData = hHandle; | ||
182 | return PVRSRV_OK; | ||
183 | } | ||
184 | |||
185 | #ifdef INLINE_IS_PRAGMA | ||
186 | #pragma inline(PVRSRVLookupHandle) | ||
187 | #endif | ||
188 | static INLINE | ||
189 | PVRSRV_ERROR PVRSRVLookupHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType) | ||
190 | { | ||
191 | PVR_UNREFERENCED_PARAMETER(psBase); | ||
192 | PVR_UNREFERENCED_PARAMETER(eType); | ||
193 | |||
194 | *ppvData = hHandle; | ||
195 | return PVRSRV_OK; | ||
196 | } | ||
197 | |||
198 | #ifdef INLINE_IS_PRAGMA | ||
199 | #pragma inline(PVRSRVLookupSubHandle) | ||
200 | #endif | ||
201 | static INLINE | ||
202 | PVRSRV_ERROR PVRSRVLookupSubHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType, IMG_HANDLE hAncestor) | ||
203 | { | ||
204 | PVR_UNREFERENCED_PARAMETER(psBase); | ||
205 | PVR_UNREFERENCED_PARAMETER(eType); | ||
206 | PVR_UNREFERENCED_PARAMETER(hAncestor); | ||
207 | |||
208 | *ppvData = hHandle; | ||
209 | return PVRSRV_OK; | ||
210 | } | ||
211 | |||
212 | #ifdef INLINE_IS_PRAGMA | ||
213 | #pragma inline(PVRSRVGetParentHandle) | ||
214 | #endif | ||
215 | static INLINE | ||
216 | PVRSRV_ERROR PVRSRVGetParentHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *phParent, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType) | ||
217 | { | ||
218 | PVR_UNREFERENCED_PARAMETER(psBase); | ||
219 | PVR_UNREFERENCED_PARAMETER(eType); | ||
220 | PVR_UNREFERENCED_PARAMETER(hHandle); | ||
221 | |||
222 | *phParent = IMG_NULL; | ||
223 | |||
224 | return PVRSRV_OK; | ||
225 | } | ||
226 | |||
227 | #ifdef INLINE_IS_PRAGMA | ||
228 | #pragma inline(PVRSRVLookupAndReleaseHandle) | ||
229 | #endif | ||
230 | static INLINE | ||
231 | PVRSRV_ERROR PVRSRVLookupAndReleaseHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType) | ||
232 | { | ||
233 | PVR_UNREFERENCED_PARAMETER(eType); | ||
234 | PVR_UNREFERENCED_PARAMETER(psBase); | ||
235 | |||
236 | *ppvData = hHandle; | ||
237 | return PVRSRV_OK; | ||
238 | } | ||
239 | |||
240 | #ifdef INLINE_IS_PRAGMA | ||
241 | #pragma inline(PVRSRVReleaseHandle) | ||
242 | #endif | ||
243 | static INLINE | ||
244 | PVRSRV_ERROR PVRSRVReleaseHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType) | ||
245 | { | ||
246 | PVR_UNREFERENCED_PARAMETER(hHandle); | ||
247 | PVR_UNREFERENCED_PARAMETER(eType); | ||
248 | PVR_UNREFERENCED_PARAMETER(psBase); | ||
249 | |||
250 | return PVRSRV_OK; | ||
251 | } | ||
252 | |||
253 | #ifdef INLINE_IS_PRAGMA | ||
254 | #pragma inline(PVRSRVNewHandleBatch) | ||
255 | #endif | ||
256 | static INLINE | ||
257 | PVRSRV_ERROR PVRSRVNewHandleBatch(PVRSRV_HANDLE_BASE *psBase, IMG_UINT32 ui32BatchSize) | ||
258 | { | ||
259 | PVR_UNREFERENCED_PARAMETER(psBase); | ||
260 | PVR_UNREFERENCED_PARAMETER(ui32BatchSize); | ||
261 | |||
262 | return PVRSRV_OK; | ||
263 | } | ||
264 | |||
265 | #ifdef INLINE_IS_PRAGMA | ||
266 | #pragma inline(PVRSRVCommitHandleBatch) | ||
267 | #endif | ||
268 | static INLINE | ||
269 | PVRSRV_ERROR PVRSRVCommitHandleBatch(PVRSRV_HANDLE_BASE *psBase) | ||
270 | { | ||
271 | PVR_UNREFERENCED_PARAMETER(psBase); | ||
272 | |||
273 | return PVRSRV_OK; | ||
274 | } | ||
275 | |||
276 | #ifdef INLINE_IS_PRAGMA | ||
277 | #pragma inline(PVRSRVReleaseHandleBatch) | ||
278 | #endif | ||
279 | static INLINE | ||
280 | IMG_VOID PVRSRVReleaseHandleBatch(PVRSRV_HANDLE_BASE *psBase) | ||
281 | { | ||
282 | PVR_UNREFERENCED_PARAMETER(psBase); | ||
283 | } | ||
284 | |||
285 | #ifdef INLINE_IS_PRAGMA | ||
286 | #pragma inline(PVRSRVSetMaxHandle) | ||
287 | #endif | ||
288 | static INLINE | ||
289 | PVRSRV_ERROR PVRSRVSetMaxHandle(PVRSRV_HANDLE_BASE *psBase, IMG_UINT32 ui32MaxHandle) | ||
290 | { | ||
291 | PVR_UNREFERENCED_PARAMETER(psBase); | ||
292 | PVR_UNREFERENCED_PARAMETER(ui32MaxHandle); | ||
293 | |||
294 | return PVRSRV_ERROR_NOT_SUPPORTED; | ||
295 | } | ||
296 | |||
297 | #ifdef INLINE_IS_PRAGMA | ||
298 | #pragma inline(PVRSRVGetMaxHandle) | ||
299 | #endif | ||
300 | static INLINE | ||
301 | IMG_UINT32 PVRSRVGetMaxHandle(PVRSRV_HANDLE_BASE *psBase) | ||
302 | { | ||
303 | PVR_UNREFERENCED_PARAMETER(psBase); | ||
304 | |||
305 | return 0; | ||
306 | } | ||
307 | |||
308 | #ifdef INLINE_IS_PRAGMA | ||
309 | #pragma inline(PVRSRVEnableHandlePurging) | ||
310 | #endif | ||
311 | static INLINE | ||
312 | PVRSRV_ERROR PVRSRVEnableHandlePurging(PVRSRV_HANDLE_BASE *psBase) | ||
313 | { | ||
314 | PVR_UNREFERENCED_PARAMETER(psBase); | ||
315 | |||
316 | return PVRSRV_OK; | ||
317 | } | ||
318 | |||
319 | #ifdef INLINE_IS_PRAGMA | ||
320 | #pragma inline(PVRSRVPurgeHandles) | ||
321 | #endif | ||
322 | static INLINE | ||
323 | PVRSRV_ERROR PVRSRVPurgeHandles(PVRSRV_HANDLE_BASE *psBase) | ||
324 | { | ||
325 | PVR_UNREFERENCED_PARAMETER(psBase); | ||
326 | |||
327 | return PVRSRV_OK; | ||
328 | } | ||
329 | |||
330 | #ifdef INLINE_IS_PRAGMA | ||
331 | #pragma inline(PVRSRVAllocHandleBase) | ||
332 | #endif | ||
333 | static INLINE | ||
334 | PVRSRV_ERROR PVRSRVAllocHandleBase(PVRSRV_HANDLE_BASE **ppsBase) | ||
335 | { | ||
336 | *ppsBase = IMG_NULL; | ||
337 | |||
338 | return PVRSRV_OK; | ||
339 | } | ||
340 | |||
341 | #ifdef INLINE_IS_PRAGMA | ||
342 | #pragma inline(PVRSRVFreeHandleBase) | ||
343 | #endif | ||
344 | static INLINE | ||
345 | PVRSRV_ERROR PVRSRVFreeHandleBase(PVRSRV_HANDLE_BASE *psBase) | ||
346 | { | ||
347 | PVR_UNREFERENCED_PARAMETER(psBase); | ||
348 | |||
349 | return PVRSRV_OK; | ||
350 | } | ||
351 | |||
352 | #ifdef INLINE_IS_PRAGMA | ||
353 | #pragma inline(PVRSRVHandleInit) | ||
354 | #endif | ||
355 | static INLINE | ||
356 | PVRSRV_ERROR PVRSRVHandleInit(IMG_VOID) | ||
357 | { | ||
358 | return PVRSRV_OK; | ||
359 | } | ||
360 | |||
361 | #ifdef INLINE_IS_PRAGMA | ||
362 | #pragma inline(PVRSRVHandleDeInit) | ||
363 | #endif | ||
364 | static INLINE | ||
365 | PVRSRV_ERROR PVRSRVHandleDeInit(IMG_VOID) | ||
366 | { | ||
367 | return PVRSRV_OK; | ||
368 | } | ||
369 | |||
370 | #endif | ||
371 | |||
372 | #define PVRSRVAllocHandleNR(psBase, phHandle, pvData, eType, eFlag) \ | ||
373 | (IMG_VOID)PVRSRVAllocHandle(psBase, phHandle, pvData, eType, eFlag) | ||
374 | |||
375 | #define PVRSRVAllocSubHandleNR(psBase, phHandle, pvData, eType, eFlag, hParent) \ | ||
376 | (IMG_VOID)PVRSRVAllocSubHandle(psBase, phHandle, pvData, eType, eFlag, hParent) | ||
377 | |||
378 | #if defined (__cplusplus) | ||
379 | } | ||
380 | #endif | ||
381 | |||
382 | #endif | ||
383 | |||