[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
129 {
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
140 {
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
169 {
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
187 {
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
201 {
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
211 {
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
225 {
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
235 {
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
250 {
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
264 {
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
279 {
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
295 {
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
311 {
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
328 {
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
344 {
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
355 {
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
370 {
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
384 {
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
394 {
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
409 {
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
420 {
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
436 {
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
448 {
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
471 {
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
481 {
482 PVRSRV_ERROR eError;
483 }PVRSRV_BRIDGE_OUT_SGXUNREFSHAREDPBDESC;
486 typedef struct PVRSRV_BRIDGE_IN_SGXADDSHAREDPBDESC_TAG
487 {
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
510 {
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
522 {
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
530 {
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
546 {
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
560 {
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
575 {
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
591 {
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
613 {
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
627 {
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
638 {
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
651 {
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
665 {
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
676 {
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
689 {
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
705 {
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
719 {
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
730 {
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
751 {
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
767 {
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)
775 }
776 #endif
778 #endif /* __SGX_BRIDGE_H__ */