aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/pvr/handle.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/pvr/handle.h')
-rw-r--r--drivers/gpu/pvr/handle.h383
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)
31extern "C" {
32#endif
33
34#include "img_types.h"
35#include "hash.h"
36#include "resman.h"
37
38typedef 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
65typedef 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
77struct _PVRSRV_HANDLE_BASE_;
78typedef struct _PVRSRV_HANDLE_BASE_ PVRSRV_HANDLE_BASE;
79
80#ifdef PVR_SECURE_HANDLES
81extern PVRSRV_HANDLE_BASE *gpsKernelHandleBase;
82
83#define KERNEL_HANDLE_BASE (gpsKernelHandleBase)
84
85PVRSRV_ERROR PVRSRVAllocHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, PVRSRV_HANDLE_ALLOC_FLAG eFlag);
86
87PVRSRV_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
89PVRSRV_ERROR PVRSRVFindHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType);
90
91PVRSRV_ERROR PVRSRVLookupHandleAnyType(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, PVRSRV_HANDLE_TYPE *peType, IMG_HANDLE hHandle);
92
93PVRSRV_ERROR PVRSRVLookupHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType);
94
95PVRSRV_ERROR PVRSRVLookupSubHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType, IMG_HANDLE hAncestor);
96
97PVRSRV_ERROR PVRSRVGetParentHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *phParent, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType);
98
99PVRSRV_ERROR PVRSRVLookupAndReleaseHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType);
100
101PVRSRV_ERROR PVRSRVReleaseHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType);
102
103PVRSRV_ERROR PVRSRVNewHandleBatch(PVRSRV_HANDLE_BASE *psBase, IMG_UINT32 ui32BatchSize);
104
105PVRSRV_ERROR PVRSRVCommitHandleBatch(PVRSRV_HANDLE_BASE *psBase);
106
107IMG_VOID PVRSRVReleaseHandleBatch(PVRSRV_HANDLE_BASE *psBase);
108
109PVRSRV_ERROR PVRSRVSetMaxHandle(PVRSRV_HANDLE_BASE *psBase, IMG_UINT32 ui32MaxHandle);
110
111IMG_UINT32 PVRSRVGetMaxHandle(PVRSRV_HANDLE_BASE *psBase);
112
113PVRSRV_ERROR PVRSRVEnableHandlePurging(PVRSRV_HANDLE_BASE *psBase);
114
115PVRSRV_ERROR PVRSRVPurgeHandles(PVRSRV_HANDLE_BASE *psBase);
116
117PVRSRV_ERROR PVRSRVAllocHandleBase(PVRSRV_HANDLE_BASE **ppsBase);
118
119PVRSRV_ERROR PVRSRVFreeHandleBase(PVRSRV_HANDLE_BASE *psBase);
120
121PVRSRV_ERROR PVRSRVHandleInit(IMG_VOID);
122
123PVRSRV_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
132static INLINE
133PVRSRV_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
146static INLINE
147PVRSRV_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
161static INLINE
162PVRSRV_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
174static INLINE
175PVRSRV_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
188static INLINE
189PVRSRV_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
201static INLINE
202PVRSRV_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
215static INLINE
216PVRSRV_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
230static INLINE
231PVRSRV_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
243static INLINE
244PVRSRV_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
256static INLINE
257PVRSRV_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
268static INLINE
269PVRSRV_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
279static INLINE
280IMG_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
288static INLINE
289PVRSRV_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
300static INLINE
301IMG_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
311static INLINE
312PVRSRV_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
322static INLINE
323PVRSRV_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
333static INLINE
334PVRSRV_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
344static INLINE
345PVRSRV_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
355static INLINE
356PVRSRV_ERROR PVRSRVHandleInit(IMG_VOID)
357{
358 return PVRSRV_OK;
359}
360
361#ifdef INLINE_IS_PRAGMA
362#pragma inline(PVRSRVHandleDeInit)
363#endif
364static INLINE
365PVRSRV_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