]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - android-sdk/device-ti-proprietary-open.git/blob - omap5/sgx_src/eurasia_km/services4/include/sgx_bridge.h
jacinto6: sgx: add memtrack library
[android-sdk/device-ti-proprietary-open.git] / omap5 / sgx_src / eurasia_km / services4 / include / sgx_bridge.h
1 /*************************************************************************/ /*!
2 @Title          SGX Bridge Functionality
3 @Copyright      Copyright (c) Imagination Technologies Ltd. All Rights Reserved
4 @Description    Header for the sgx Brdige code
5 @License        Dual MIT/GPLv2
7 The contents of this file are subject to the MIT license as set out below.
9 Permission is hereby granted, free of charge, to any person obtaining a copy
10 of this software and associated documentation files (the "Software"), to deal
11 in the Software without restriction, including without limitation the rights
12 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13 copies of the Software, and to permit persons to whom the Software is
14 furnished to do so, subject to the following conditions:
16 The above copyright notice and this permission notice shall be included in
17 all copies or substantial portions of the Software.
19 Alternatively, the contents of this file may be used under the terms of
20 the GNU General Public License Version 2 ("GPL") in which case the provisions
21 of GPL are applicable instead of those above.
23 If you wish to allow use of your version of this file only under the terms of
24 GPL, and not to allow others to use your version of this file under the terms
25 of the MIT license, indicate your decision by deleting the provisions above
26 and replace them with the notice and other provisions required by GPL as set
27 out in the file called "GPL-COPYING" included in this distribution. If you do
28 not delete the provisions above, a recipient may use your version of this file
29 under the terms of either the MIT license or GPL.
31 This License is also included in this distribution in the file called
32 "MIT-COPYING".
34 EXCEPT AS OTHERWISE STATED IN A NEGOTIATED AGREEMENT: (A) THE SOFTWARE IS
35 PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
36 BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
37 PURPOSE AND NONINFRINGEMENT; AND (B) IN NO EVENT SHALL THE AUTHORS OR
38 COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
39 IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
40 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
41 */ /**************************************************************************/
43 #if !defined(__SGX_BRIDGE_H__)
44 #define __SGX_BRIDGE_H__
46 #if defined (SUPPORT_SID_INTERFACE)
47 #include "sgxapi.h"
48 #else
49 #include "sgxapi_km.h"
50 #endif
51 #include "sgxinfo.h"
52 #include "pvr_bridge.h"
54 #if defined (__cplusplus)
55 extern "C" {
56 #endif
59 /* 
60  * Bridge Cmd Ids
61  */
63 /* *REMEMBER* to update PVRSRV_BRIDGE_LAST_SGX_CMD if you add/remove a command! 
64  * Also you need to ensure all PVRSRV_BRIDGE_SGX_CMD_BASE+ offsets are sequential!
65  */
67 #define PVRSRV_BRIDGE_SGX_CMD_BASE (PVRSRV_BRIDGE_LAST_NON_DEVICE_CMD+1)
68 #define PVRSRV_BRIDGE_SGX_GETCLIENTINFO                 PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+0)
69 #define PVRSRV_BRIDGE_SGX_RELEASECLIENTINFO             PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+1)
70 #define PVRSRV_BRIDGE_SGX_GETINTERNALDEVINFO    PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+2)
71 #define PVRSRV_BRIDGE_SGX_DOKICK                                PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+3)
72 #define PVRSRV_BRIDGE_SGX_GETPHYSPAGEADDR               PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+4)
73 #define PVRSRV_BRIDGE_SGX_READREGISTRYDWORD             PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+5)
75 #define PVRSRV_BRIDGE_SGX_2DQUERYBLTSCOMPLETE   PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+9)
77 #if defined(TRANSFER_QUEUE)
78 #define PVRSRV_BRIDGE_SGX_SUBMITTRANSFER                        PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+13)
79 #endif
80 #define PVRSRV_BRIDGE_SGX_GETMISCINFO                           PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+14)
81 #define PVRSRV_BRIDGE_SGXINFO_FOR_SRVINIT                       PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+15)
82 #define PVRSRV_BRIDGE_SGX_DEVINITPART2                          PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+16)
84 #define PVRSRV_BRIDGE_SGX_FINDSHAREDPBDESC                      PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+17)
85 #define PVRSRV_BRIDGE_SGX_UNREFSHAREDPBDESC                     PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+18)
86 #define PVRSRV_BRIDGE_SGX_ADDSHAREDPBDESC                       PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+19)
87 #define PVRSRV_BRIDGE_SGX_REGISTER_HW_RENDER_CONTEXT    PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+20)
88 #define PVRSRV_BRIDGE_SGX_FLUSH_HW_RENDER_TARGET        PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+21)
89 #define PVRSRV_BRIDGE_SGX_UNREGISTER_HW_RENDER_CONTEXT  PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+22)
90 #if defined(SGX_FEATURE_2D_HARDWARE)
91 #define PVRSRV_BRIDGE_SGX_SUBMIT2D                                      PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+23)
92 #define PVRSRV_BRIDGE_SGX_REGISTER_HW_2D_CONTEXT        PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+24)
93 #define PVRSRV_BRIDGE_SGX_UNREGISTER_HW_2D_CONTEXT      PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+25)
94 #endif
95 #define PVRSRV_BRIDGE_SGX_REGISTER_HW_TRANSFER_CONTEXT  PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+26)
96 #define PVRSRV_BRIDGE_SGX_UNREGISTER_HW_TRANSFER_CONTEXT        PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+27)
98 #define PVRSRV_BRIDGE_SGX_SCHEDULE_PROCESS_QUEUES               PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+28)
100 #define PVRSRV_BRIDGE_SGX_READ_HWPERF_CB                        PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+29)
101 #define PVRSRV_BRIDGE_SGX_SET_RENDER_CONTEXT_PRIORITY      PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+30)
102 #define PVRSRV_BRIDGE_SGX_SET_TRANSFER_CONTEXT_PRIORITY      PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+31)
104 #if defined(PDUMP)
105 #define PVRSRV_BRIDGE_SGX_PDUMP_BUFFER_ARRAY            PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+32)
106 #define PVRSRV_BRIDGE_SGX_PDUMP_3D_SIGNATURE_REGISTERS  PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+33)
107 #define PVRSRV_BRIDGE_SGX_PDUMP_COUNTER_REGISTERS       PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+34)
108 #define PVRSRV_BRIDGE_SGX_PDUMP_TA_SIGNATURE_REGISTERS  PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+35)
109 #define PVRSRV_BRIDGE_SGX_PDUMP_HWPERFCB                                PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+36)
110 #define PVRSRV_BRIDGE_SGX_PDUMP_SAVEMEM                                 PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+37)
111 #endif
115 /* *REMEMBER* to update PVRSRV_BRIDGE_LAST_SGX_CMD if you add/remove a command! 
116  * You need to ensure all PVRSRV_BRIDGE_SGX_CMD_BASE+ offsets are sequential!
117  */
118 #define PVRSRV_BRIDGE_LAST_SGX_CMD (PVRSRV_BRIDGE_SGX_CMD_BASE+37)
120 /*****************************************************************************
121  * Input structures for IOCTL/DRVESC 
122  *****************************************************************************/
124 /*!
125  *****************************************************************************
126  *      `bridge in' SGX Get Phys Page Addr
127  *****************************************************************************/ 
128 typedef struct PVRSRV_BRIDGE_IN_GETPHYSPAGEADDR
130         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
131         IMG_HANDLE hDevMemHeap;
132         IMG_DEV_VIRTADDR sDevVAddr;
133 }PVRSRV_BRIDGE_IN_GETPHYSPAGEADDR;
135 /*!
136  *****************************************************************************
137  *      `bridge out' SGX Get Phys Page Addr
138  *****************************************************************************/ 
139 typedef struct PVRSRV_BRIDGE_OUT_GETPHYSPAGEADDR
141         PVRSRV_ERROR            eError;
142         IMG_DEV_PHYADDR         DevPAddr;
143         IMG_CPU_PHYADDR         CpuPAddr;
144 }PVRSRV_BRIDGE_OUT_GETPHYSPAGEADDR;
146 /*!
147  *****************************************************************************
148  *      `bridge in' set transfer context priority
149  *****************************************************************************/ 
150 typedef struct PVRSRV_BRIDGE_IN_SGX_SET_TRANSFER_CONTEXT_PRIORITY_TAG
151  {
152         IMG_UINT32                              ui32BridgeFlags; /* Must be first member of structure */
153  #if defined (SUPPORT_SID_INTERFACE)
154         IMG_SID                                 hDevCookie;
155         IMG_SID                                 hHWTransferContext;
156  #else
157         IMG_HANDLE                              hDevCookie;
158         IMG_HANDLE                              hHWTransferContext;
159  #endif
160     IMG_UINT32              ui32Priority;
161     IMG_UINT32              ui32OffsetOfPriorityField;
162 }PVRSRV_BRIDGE_IN_SGX_SET_TRANSFER_CONTEXT_PRIORITY;
164 /*!
165  *****************************************************************************
166  *      `bridge in' set render context priority
167  *****************************************************************************/ 
168 typedef struct PVRSRV_BRIDGE_IN_SGX_SET_RENDER_CONTEXT_PRIORITY_TAG
170         IMG_UINT32                              ui32BridgeFlags; /* Must be first member of structure */
171 #if defined (SUPPORT_SID_INTERFACE)
172         IMG_SID                                 hDevCookie;
173         IMG_SID                                 hHWRenderContext;
174 #else
175         IMG_HANDLE                              hDevCookie;
176         IMG_HANDLE                              hHWRenderContext;
177 #endif
178     IMG_UINT32              ui32Priority;
179     IMG_UINT32              ui32OffsetOfPriorityField;
180 }PVRSRV_BRIDGE_IN_SGX_SET_RENDER_CONTEXT_PRIORITY;
182 /*!
183  *****************************************************************************
184  *      `bridge in' Get Client Info
185  *****************************************************************************/ 
186 typedef struct PVRSRV_BRIDGE_IN_GETCLIENTINFO_TAG
188         IMG_UINT32                                      ui32BridgeFlags; /* Must be first member of structure */
189 #if defined (SUPPORT_SID_INTERFACE)
190         IMG_SID                                         hDevCookie;
191 #else
192         IMG_HANDLE                                      hDevCookie;
193 #endif
194 }PVRSRV_BRIDGE_IN_GETCLIENTINFO;
196 /*!
197  *****************************************************************************
198  *      `bridge out' Get internal device info
199  *****************************************************************************/ 
200 typedef struct PVRSRV_BRIDGE_OUT_GETINTERNALDEVINFO_TAG
202         SGX_INTERNAL_DEVINFO    sSGXInternalDevInfo;
203         PVRSRV_ERROR                            eError;
204 }PVRSRV_BRIDGE_OUT_GETINTERNALDEVINFO;
206 /*!
207  *****************************************************************************
208  *      `bridge in' Get internal device info
209  *****************************************************************************/ 
210 typedef struct PVRSRV_BRIDGE_IN_GETINTERNALDEVINFO_TAG
212         IMG_UINT32                              ui32BridgeFlags; /* Must be first member of structure */
213 #if defined (SUPPORT_SID_INTERFACE)
214         IMG_SID                                 hDevCookie;
215 #else
216         IMG_HANDLE                              hDevCookie;
217 #endif
218 }PVRSRV_BRIDGE_IN_GETINTERNALDEVINFO;
220 /*!
221  *****************************************************************************
222  *      `bridge out' Get Client Info
223  *****************************************************************************/ 
224 typedef struct PVRSRV_BRIDGE_OUT_GETCLIENTINFO_TAG
226         SGX_CLIENT_INFO         sClientInfo;
227         PVRSRV_ERROR                    eError;
228 }PVRSRV_BRIDGE_OUT_GETCLIENTINFO;
230 /*!
231  *****************************************************************************
232  *      `bridge in' Release Client Info
233  *****************************************************************************/ 
234 typedef struct PVRSRV_BRIDGE_IN_RELEASECLIENTINFO_TAG
236         IMG_UINT32                      ui32BridgeFlags; /* Must be first member of structure */
237 #if defined (SUPPORT_SID_INTERFACE)
238         IMG_SID                         hDevCookie;
239 #else
240         IMG_HANDLE                      hDevCookie;
241 #endif
242         SGX_CLIENT_INFO         sClientInfo;
243 }PVRSRV_BRIDGE_IN_RELEASECLIENTINFO;
245 /*!
246  *****************************************************************************
247  *      `bridge in' Pdump ISP mem Pol
248  *****************************************************************************/ 
249 typedef struct PVRSRV_BRIDGE_IN_ISPBREAKPOLL_TAG
251         IMG_UINT32                              ui32BridgeFlags; /* Must be first member of structure */
252 #if defined (SUPPORT_SID_INTERFACE)
253         IMG_SID                                 hDevCookie;
254 #else
255         IMG_HANDLE                              hDevCookie;
256 #endif
257 }PVRSRV_BRIDGE_IN_ISPBREAKPOLL;
259 /*!
260  *****************************************************************************
261  *      `bridge in' KickTA
262  *****************************************************************************/ 
263 typedef struct PVRSRV_BRIDGE_IN_DOKICK_TAG
265         IMG_UINT32                              ui32BridgeFlags; /* Must be first member of structure */
266 #if defined (SUPPORT_SID_INTERFACE)
267         IMG_SID                                 hDevCookie;
268 #else
269         IMG_HANDLE                              hDevCookie;
270 #endif
271         SGX_CCB_KICK                    sCCBKick;
272 }PVRSRV_BRIDGE_IN_DOKICK;
274 /*!
275  *****************************************************************************
276  *      `bridge in' SGXScheduleProcessQueues
277  *****************************************************************************/ 
278 typedef struct PVRSRV_BRIDGE_IN_SGX_SCHEDULE_PROCESS_QUEUES_TAG
280         IMG_UINT32                              ui32BridgeFlags; /* Must be first member of structure */
281 #if defined (SUPPORT_SID_INTERFACE)
282         IMG_SID                                 hDevCookie;
283 #else
284         IMG_HANDLE                              hDevCookie;
285 #endif
286 }PVRSRV_BRIDGE_IN_SGX_SCHEDULE_PROCESS_QUEUES;
289 #if defined(TRANSFER_QUEUE)
290 /*!
291  *****************************************************************************
292  *      `bridge in' SubmitTransfer
293  *****************************************************************************/ 
294 typedef struct PVRSRV_BRIDGE_IN_SUBMITTRANSFER_TAG
296         IMG_UINT32                              ui32BridgeFlags; /* Must be first member of structure */
297 #if defined (SUPPORT_SID_INTERFACE)
298         IMG_SID                                 hDevCookie;
299 #else
300         IMG_HANDLE                              hDevCookie;
301 #endif
302         PVRSRV_TRANSFER_SGX_KICK                        sKick;
303 }PVRSRV_BRIDGE_IN_SUBMITTRANSFER;
305 #if defined(SGX_FEATURE_2D_HARDWARE)
306 /*!
307  *****************************************************************************
308  *      `bridge in' Submit2D
309  *****************************************************************************/ 
310 typedef struct PVRSRV_BRIDGE_IN_SUBMIT2D_TAG
312         IMG_UINT32                              ui32BridgeFlags; /* Must be first member of structure */
313 #if defined (SUPPORT_SID_INTERFACE)
314         IMG_SID                                 hDevCookie;
315 #else
316         IMG_HANDLE                              hDevCookie;
317 #endif
318         PVRSRV_2D_SGX_KICK              sKick;
319 } PVRSRV_BRIDGE_IN_SUBMIT2D;
320 #endif
321 #endif
323 /*!
324  *****************************************************************************
325  *      `bridge in' ReadRegistryString
326  *****************************************************************************/ 
327 typedef struct PVRSRV_BRIDGE_IN_READREGDWORD_TAG
329         IMG_UINT32                              ui32BridgeFlags; /* Must be first member of structure */
330 #if defined (SUPPORT_SID_INTERFACE)
331         IMG_SID                                 hDevCookie;
332 #else
333         IMG_HANDLE                              hDevCookie;
334 #endif
335     IMG_PCHAR                           pszKey;
336     IMG_PCHAR                           pszValue;
337 }PVRSRV_BRIDGE_IN_READREGDWORD;
339 /*!
340  *****************************************************************************
341  *      `bridge out' ReadRegistryString
342  *****************************************************************************/ 
343 typedef struct PVRSRV_BRIDGE_OUT_READREGDWORD_TAG
345         PVRSRV_ERROR    eError;
346         IMG_UINT32              ui32Data;
347 }PVRSRV_BRIDGE_OUT_READREGDWORD;
350 /*!
351  *****************************************************************************
352  *      `bridge in' SGXGetMiscInfo
353  *****************************************************************************/
354 typedef struct PVRSRV_BRIDGE_IN_SGXGETMISCINFO_TAG
356         IMG_UINT32              ui32BridgeFlags; /* Must be first member of structure */
357 #if defined (SUPPORT_SID_INTERFACE)
358         IMG_SID                 hDevCookie;
359 #else
360         IMG_HANDLE              hDevCookie;
361 #endif
362         SGX_MISC_INFO   *psMiscInfo;
363 }PVRSRV_BRIDGE_IN_SGXGETMISCINFO;
365 /*!
366  *****************************************************************************
367  *      `bridge in' SGXGetInfoForSrvInit
368  *****************************************************************************/
369 typedef struct PVRSRV_BRIDGE_IN_SGXINFO_FOR_SRVINIT_TAG
371         IMG_UINT32              ui32BridgeFlags; /* Must be first member of structure */
372 #if defined (SUPPORT_SID_INTERFACE)
373         IMG_SID                 hDevCookie;
374 #else
375         IMG_HANDLE              hDevCookie;
376 #endif
377 }PVRSRV_BRIDGE_IN_SGXINFO_FOR_SRVINIT;
379 /*!
380  *****************************************************************************
381  *      `bridge out' SGXGetInfoForSrvInit
382  *****************************************************************************/
383 typedef struct PVRSRV_BRIDGE_OUT_SGXINFO_FOR_SRVINIT_TAG
385         PVRSRV_ERROR                    eError;
386         SGX_BRIDGE_INFO_FOR_SRVINIT     sInitInfo;
387 }PVRSRV_BRIDGE_OUT_SGXINFO_FOR_SRVINIT;
389 /*!
390  *****************************************************************************
391  *      `bridge in' SGXDevInitPart2
392  *****************************************************************************/
393 typedef struct PVRSRV_BRIDGE_IN_SGXDEVINITPART2_TAG
395         IMG_UINT32              ui32BridgeFlags; /* Must be first member of structure */
396 #if defined (SUPPORT_SID_INTERFACE)
397         IMG_SID                 hDevCookie;
398 #else
399         IMG_HANDLE              hDevCookie;
400 #endif
401         SGX_BRIDGE_INIT_INFO    sInitInfo;
402 }PVRSRV_BRIDGE_IN_SGXDEVINITPART2;
404 /*!
405  *****************************************************************************
406  *      `bridge out' SGXDevInitPart2
407  *****************************************************************************/
408 typedef struct PVRSRV_BRIDGE_OUT_SGXDEVINITPART2_TAG
410         PVRSRV_ERROR    eError;
411         IMG_UINT32              ui32KMBuildOptions;
413 }PVRSRV_BRIDGE_OUT_SGXDEVINITPART2;
415 /*!
416  *****************************************************************************
417  *      `bridge in' 2D query blits complete
418  *****************************************************************************/ 
419 typedef struct PVRSRV_BRIDGE_IN_2DQUERYBLTSCOMPLETE_TAG
421         IMG_UINT32                              ui32BridgeFlags; /* Must be first member of structure */
422 #if defined (SUPPORT_SID_INTERFACE)
423         IMG_SID                                 hDevCookie;
424         IMG_SID                                 hKernSyncInfo;
425 #else
426         IMG_HANDLE                              hDevCookie;
427         IMG_HANDLE                              hKernSyncInfo;
428 #endif
429         IMG_BOOL                                bWaitForComplete;
430 }PVRSRV_BRIDGE_IN_2DQUERYBLTSCOMPLETE;
433 #define PVRSRV_BRIDGE_SGX_SHAREDPBDESC_MAX_SUBMEMINFOS 10
435 typedef struct PVRSRV_BRIDGE_IN_SGXFINDSHAREDPBDESC_TAG
437         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
438 #if defined (SUPPORT_SID_INTERFACE)
439         IMG_SID    hDevCookie;
440 #else
441         IMG_HANDLE hDevCookie;
442 #endif
443         IMG_BOOL   bLockOnFailure;
444         IMG_UINT32 ui32TotalPBSize;
445 }PVRSRV_BRIDGE_IN_SGXFINDSHAREDPBDESC;
447 typedef struct PVRSRV_BRIDGE_OUT_SGXFINDSHAREDPBDESC_TAG
449 #if defined (SUPPORT_SID_INTERFACE)
450         IMG_SID hKernelMemInfo;
451         IMG_SID hSharedPBDesc;
452         IMG_SID hSharedPBDescKernelMemInfoHandle;
453         IMG_SID hHWPBDescKernelMemInfoHandle;
454         IMG_SID hBlockKernelMemInfoHandle;
455         IMG_SID hHWBlockKernelMemInfoHandle;
456         IMG_SID ahSharedPBDescSubKernelMemInfoHandles[PVRSRV_BRIDGE_SGX_SHAREDPBDESC_MAX_SUBMEMINFOS];
457 #else
458         IMG_HANDLE hKernelMemInfo;
459         IMG_HANDLE hSharedPBDesc;
460         IMG_HANDLE hSharedPBDescKernelMemInfoHandle;
461         IMG_HANDLE hHWPBDescKernelMemInfoHandle;
462         IMG_HANDLE hBlockKernelMemInfoHandle;
463         IMG_HANDLE hHWBlockKernelMemInfoHandle;
464         IMG_HANDLE ahSharedPBDescSubKernelMemInfoHandles[PVRSRV_BRIDGE_SGX_SHAREDPBDESC_MAX_SUBMEMINFOS];
465 #endif
466         IMG_UINT32 ui32SharedPBDescSubKernelMemInfoHandlesCount;
467         PVRSRV_ERROR eError;
468 }PVRSRV_BRIDGE_OUT_SGXFINDSHAREDPBDESC;
470 typedef struct PVRSRV_BRIDGE_IN_SGXUNREFSHAREDPBDESC_TAG
472         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
473 #if defined (SUPPORT_SID_INTERFACE)
474         IMG_SID    hSharedPBDesc;
475 #else
476         IMG_HANDLE hSharedPBDesc;
477 #endif
478 }PVRSRV_BRIDGE_IN_SGXUNREFSHAREDPBDESC;
480 typedef struct PVRSRV_BRIDGE_OUT_SGXUNREFSHAREDPBDESC_TAG
482         PVRSRV_ERROR eError;
483 }PVRSRV_BRIDGE_OUT_SGXUNREFSHAREDPBDESC;
486 typedef struct PVRSRV_BRIDGE_IN_SGXADDSHAREDPBDESC_TAG
488         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
489         IMG_UINT32 ui32TotalPBSize;
490 #if defined (SUPPORT_SID_INTERFACE)
491         IMG_SID    hDevCookie;
492         IMG_SID    hSharedPBDescKernelMemInfo;
493         IMG_SID    hHWPBDescKernelMemInfo;
494         IMG_SID    hBlockKernelMemInfo;
495         IMG_SID    hHWBlockKernelMemInfo;
496         IMG_SID    *phKernelMemInfoHandles;
497 #else
498         IMG_HANDLE hDevCookie;
499         IMG_HANDLE hSharedPBDescKernelMemInfo;
500         IMG_HANDLE hHWPBDescKernelMemInfo;
501         IMG_HANDLE hBlockKernelMemInfo;
502         IMG_HANDLE hHWBlockKernelMemInfo;
503         IMG_HANDLE *phKernelMemInfoHandles;
504 #endif
505         IMG_UINT32 ui32KernelMemInfoHandlesCount;
506         IMG_DEV_VIRTADDR sHWPBDescDevVAddr;
507 }PVRSRV_BRIDGE_IN_SGXADDSHAREDPBDESC;
509 typedef struct PVRSRV_BRIDGE_OUT_SGXADDSHAREDPBDESC_TAG
511         PVRSRV_ERROR eError;
512 #if defined (SUPPORT_SID_INTERFACE)
513         IMG_SID      hSharedPBDesc;
514 #else
515         IMG_HANDLE hSharedPBDesc;
516 #endif
517 }PVRSRV_BRIDGE_OUT_SGXADDSHAREDPBDESC;
520 #ifdef  PDUMP
521 typedef struct PVRSRV_BRIDGE_IN_PDUMP_BUFFER_ARRAY_TAG
523         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
524         SGX_KICKTA_DUMP_BUFFER *psBufferArray;
525         IMG_UINT32 ui32BufferArrayLength;
526         IMG_BOOL bDumpPolls;
527 } PVRSRV_BRIDGE_IN_PDUMP_BUFFER_ARRAY;
529 typedef struct PVRSRV_BRIDGE_IN_PDUMP_3D_SIGNATURE_REGISTERS_TAG
531         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
532 #if defined (SUPPORT_SID_INTERFACE)
533         IMG_SID    hDevCookie;
534         IMG_SID    hDevMemContext;
535 #else
536         IMG_HANDLE hDevCookie;
537         IMG_HANDLE hDevMemContext;
538 #endif
539         IMG_UINT32 ui32DumpFrameNum;
540         IMG_BOOL   bLastFrame;
541         IMG_UINT32 *pui32Registers;
542         IMG_UINT32 ui32NumRegisters;
543 }PVRSRV_BRIDGE_IN_PDUMP_3D_SIGNATURE_REGISTERS;
545 typedef struct PVRSRV_BRIDGE_IN_PDUMPCOUNTER_REGISTERS_TAG
547         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
548 #if defined (SUPPORT_SID_INTERFACE)
549         IMG_SID    hDevCookie;
550 #else
551         IMG_HANDLE hDevCookie;
552 #endif
553         IMG_UINT32 ui32DumpFrameNum;
554         IMG_BOOL bLastFrame;
555         IMG_UINT32 *pui32Registers;
556         IMG_UINT32 ui32NumRegisters;
557 }PVRSRV_BRIDGE_IN_PDUMP_COUNTER_REGISTERS;
559 typedef struct PVRSRV_BRIDGE_IN_PDUMP_TA_SIGNATURE_REGISTERS_TAG
561         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
562 #if defined (SUPPORT_SID_INTERFACE)
563         IMG_SID    hDevCookie;
564 #else
565         IMG_HANDLE hDevCookie;
566 #endif
567         IMG_UINT32 ui32DumpFrameNum;
568         IMG_UINT32 ui32TAKickCount;
569         IMG_BOOL bLastFrame;
570         IMG_UINT32 *pui32Registers;
571         IMG_UINT32 ui32NumRegisters;
572 }PVRSRV_BRIDGE_IN_PDUMP_TA_SIGNATURE_REGISTERS;
574 typedef struct PVRSRV_BRIDGE_IN_PDUMP_HWPERFCB_TAG
576         IMG_UINT32                      ui32BridgeFlags; /* Must be first member of structure */
577 #if defined (SUPPORT_SID_INTERFACE)
578         IMG_SID                         hDevCookie;
579         IMG_SID                         hDevMemContext;
580 #else
581         IMG_HANDLE                      hDevCookie;
582         IMG_HANDLE                      hDevMemContext;
583 #endif
584         IMG_CHAR                        szFileName[PVRSRV_PDUMP_MAX_FILENAME_SIZE];
585         IMG_UINT32                      ui32FileOffset;
586         IMG_UINT32                      ui32PDumpFlags;
588 }PVRSRV_BRIDGE_IN_PDUMP_HWPERFCB;
590 typedef struct PVRSRV_BRIDGE_IN_PDUMP_SAVEMEM
592         IMG_UINT32                      ui32BridgeFlags; /* Must be first member of structure */
593 #if defined (SUPPORT_SID_INTERFACE)
594         IMG_SID                         hDevCookie;
595         IMG_SID                         hDevMemContext;
596 #else
597         IMG_HANDLE                      hDevCookie;
598 #endif
599         IMG_CHAR                        szFileName[PVRSRV_PDUMP_MAX_FILENAME_SIZE];
600         IMG_UINT32                      ui32FileOffset;
601         IMG_DEV_VIRTADDR        sDevVAddr;
602         IMG_UINT32                      ui32Size;
603 #if !defined (SUPPORT_SID_INTERFACE)
604         IMG_HANDLE                      hDevMemContext;
605 #endif
606         IMG_UINT32                      ui32PDumpFlags;
608 }PVRSRV_BRIDGE_IN_PDUMP_SAVEMEM;
610 #endif
612 typedef struct PVRSRV_BRIDGE_IN_SGX_REGISTER_HW_RENDER_CONTEXT_TAG
614         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
615 #if defined (SUPPORT_SID_INTERFACE)
616         IMG_SID    hDevCookie;
617 #else
618         IMG_HANDLE hDevCookie;
619 #endif
620     IMG_CPU_VIRTADDR pHWRenderContextCpuVAddr;
621     IMG_UINT32       ui32HWRenderContextSize;
622     IMG_UINT32       ui32OffsetToPDDevPAddr;
623     IMG_HANDLE       hDevMemContext;
624 }PVRSRV_BRIDGE_IN_SGX_REGISTER_HW_RENDER_CONTEXT;
626 typedef struct PVRSRV_BRIDGE_OUT_SGX_REGISTER_HW_RENDER_CONTEXT_TAG
628         PVRSRV_ERROR eError;
629 #if defined (SUPPORT_SID_INTERFACE)
630         IMG_SID    hHWRenderContext;
631 #else
632         IMG_HANDLE hHWRenderContext;
633 #endif
634     IMG_DEV_VIRTADDR sHWRenderContextDevVAddr;
635 }PVRSRV_BRIDGE_OUT_SGX_REGISTER_HW_RENDER_CONTEXT;
637 typedef struct PVRSRV_BRIDGE_IN_SGX_UNREGISTER_HW_RENDER_CONTEXT_TAG
639         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
640         IMG_BOOL   bForceCleanup;
641 #if defined (SUPPORT_SID_INTERFACE)
642         IMG_SID    hDevCookie;
643         IMG_SID    hHWRenderContext;
644 #else
645         IMG_HANDLE hDevCookie;
646         IMG_HANDLE hHWRenderContext;
647 #endif
648 }PVRSRV_BRIDGE_IN_SGX_UNREGISTER_HW_RENDER_CONTEXT;
650 typedef struct PVRSRV_BRIDGE_IN_SGX_REGISTER_HW_TRANSFER_CONTEXT_TAG
652         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
653 #if defined (SUPPORT_SID_INTERFACE)
654         IMG_SID    hDevCookie;
655 #else
656         IMG_HANDLE hDevCookie;
657 #endif
658     IMG_CPU_VIRTADDR pHWTransferContextCpuVAddr;
659     IMG_UINT32       ui32HWTransferContextSize;
660     IMG_UINT32       ui32OffsetToPDDevPAddr;
661     IMG_HANDLE       hDevMemContext;
662 }PVRSRV_BRIDGE_IN_SGX_REGISTER_HW_TRANSFER_CONTEXT;
664 typedef struct PVRSRV_BRIDGE_OUT_SGX_REGISTER_HW_TRANSFER_CONTEXT_TAG
666         PVRSRV_ERROR eError;
667 #if defined (SUPPORT_SID_INTERFACE)
668         IMG_SID      hHWTransferContext;
669 #else
670         IMG_HANDLE hHWTransferContext;
671 #endif
672     IMG_DEV_VIRTADDR sHWTransferContextDevVAddr;
673 }PVRSRV_BRIDGE_OUT_SGX_REGISTER_HW_TRANSFER_CONTEXT;
675 typedef struct PVRSRV_BRIDGE_IN_SGX_UNREGISTER_HW_TRANSFER_CONTEXT_TAG
677         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
678         IMG_BOOL   bForceCleanup;
679 #if defined (SUPPORT_SID_INTERFACE)
680         IMG_SID    hDevCookie;
681         IMG_SID    hHWTransferContext;
682 #else
683         IMG_HANDLE hDevCookie;
684         IMG_HANDLE hHWTransferContext;
685 #endif
686 }PVRSRV_BRIDGE_IN_SGX_UNREGISTER_HW_TRANSFER_CONTEXT;
688 typedef struct PVRSRV_BRIDGE_IN_SGX_FLUSH_HW_RENDER_TARGET_TAG
690         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
691 #if defined (SUPPORT_SID_INTERFACE)
692         IMG_SID    hDevCookie;
693 #else
694         IMG_HANDLE hDevCookie;
695 #endif
696         IMG_DEV_VIRTADDR sHWRTDataSetDevVAddr;
697 }PVRSRV_BRIDGE_IN_SGX_FLUSH_HW_RENDER_TARGET;
699 /*!
700  *****************************************************************************
701  *      SGX 2D specific defines
702  *****************************************************************************/ 
703 #if defined(SGX_FEATURE_2D_HARDWARE)
704 typedef struct PVRSRV_BRIDGE_IN_SGX_REGISTER_HW_2D_CONTEXT_TAG
706         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
707 #if defined (SUPPORT_SID_INTERFACE)
708         IMG_SID    hDevCookie;
709 #else
710         IMG_HANDLE hDevCookie;
711 #endif
712     IMG_CPU_VIRTADDR pHW2DContextCpuVAddr;
713     IMG_UINT32       ui32HW2DContextSize;
714     IMG_UINT32       ui32OffsetToPDDevPAddr;
715     IMG_HANDLE       hDevMemContext;
716 }PVRSRV_BRIDGE_IN_SGX_REGISTER_HW_2D_CONTEXT;
718 typedef struct PVRSRV_BRIDGE_OUT_SGX_REGISTER_HW_2D_CONTEXT_TAG
720         PVRSRV_ERROR eError;
721 #if defined (SUPPORT_SID_INTERFACE)
722         IMG_SID    hHW2DContext;
723 #else
724         IMG_HANDLE hHW2DContext;
725 #endif
726     IMG_DEV_VIRTADDR sHW2DContextDevVAddr;
727 }PVRSRV_BRIDGE_OUT_SGX_REGISTER_HW_2D_CONTEXT;
729 typedef struct PVRSRV_BRIDGE_IN_SGX_UNREGISTER_HW_2D_CONTEXT_TAG
731         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
732         IMG_BOOL   bForceCleanup;
733 #if defined (SUPPORT_SID_INTERFACE)
734         IMG_SID    hDevCookie;
735         IMG_SID    hHW2DContext;
736 #else
737         IMG_HANDLE hDevCookie;
738         IMG_HANDLE hHW2DContext;
739 #endif
740 }PVRSRV_BRIDGE_IN_SGX_UNREGISTER_HW_2D_CONTEXT;
742 #define SGX2D_MAX_BLT_CMD_SIZ           256     /* Maximum size of a blit command, in bytes */
743 #endif /* SGX_FEATURE_2D_HARDWARE */
746 /*!
747  *****************************************************************************
748  *      `bridge in' SGXReadHWPerfCB
749  *****************************************************************************/
750 typedef struct PVRSRV_BRIDGE_IN_SGX_READ_HWPERF_CB_TAG
752         IMG_UINT32                                      ui32BridgeFlags; /* Must be first member of structure */
753 #if defined (SUPPORT_SID_INTERFACE)
754         IMG_SID                                         hDevCookie;
755 #else
756         IMG_HANDLE                                      hDevCookie;
757 #endif
758         IMG_UINT32                                      ui32ArraySize;
759         PVRSRV_SGX_HWPERF_CB_ENTRY      *psHWPerfCBData;
760 } PVRSRV_BRIDGE_IN_SGX_READ_HWPERF_CB;
762 /*!
763  *****************************************************************************
764  *      `bridge out' SGXReadHWPerfCB
765  *****************************************************************************/
766 typedef struct PVRSRV_BRIDGE_OUT_SGX_READ_HWPERF_CB_TAG
768         PVRSRV_ERROR            eError;
769         IMG_UINT32                      ui32DataCount;
770         IMG_UINT32                      ui32ClockSpeed;
771         IMG_UINT32                      ui32HostTimeStamp;
772 } PVRSRV_BRIDGE_OUT_SGX_READ_HWPERF_CB;
774 #if defined (__cplusplus)
776 #endif
778 #endif /* __SGX_BRIDGE_H__ */