]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - android-sdk/device-ti-proprietary-open.git/blob - jacinto6/sgx_src/eurasia_km/services4/include/pvr_bridge.h
cf84f76082f76dba532a7af6040255a023a80ce8
[android-sdk/device-ti-proprietary-open.git] / jacinto6 / sgx_src / eurasia_km / services4 / include / pvr_bridge.h
1 /*************************************************************************/ /*!
2 @Title          PVR Bridge Functionality
3 @Copyright      Copyright (c) Imagination Technologies Ltd. All Rights Reserved
4 @Description    Header for the PVR Bridge 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 #ifndef __PVR_BRIDGE_H__
44 #define __PVR_BRIDGE_H__
46 #if defined (__cplusplus)
47 extern "C" {
48 #endif
50 #include "servicesint.h"
52 /*
53  * Bridge Cmd Ids
54  */
57 #ifdef __linux__
59                 #include <linux/ioctl.h>
60     /*!< Nov 2006: according to ioctl-number.txt 'g' wasn't in use. */
61     #define PVRSRV_IOC_GID      'g'
62     #define PVRSRV_IO(INDEX)    _IO(PVRSRV_IOC_GID, INDEX, PVRSRV_BRIDGE_PACKAGE)
63     #define PVRSRV_IOW(INDEX)   _IOW(PVRSRV_IOC_GID, INDEX, PVRSRV_BRIDGE_PACKAGE)
64     #define PVRSRV_IOR(INDEX)   _IOR(PVRSRV_IOC_GID, INDEX, PVRSRV_BRIDGE_PACKAGE)
65     #define PVRSRV_IOWR(INDEX)  _IOWR(PVRSRV_IOC_GID, INDEX, PVRSRV_BRIDGE_PACKAGE)
67 #else /* __linux__ */
69  #if  defined(__QNXNTO__)
70                         #define PVRSRV_IOC_GID      (0x0UL)
71                 #else
72                         #error Unknown platform: Cannot define ioctls
73                 #endif
75         #define PVRSRV_IO(INDEX)    (PVRSRV_IOC_GID + (INDEX))
76         #define PVRSRV_IOW(INDEX)   (PVRSRV_IOC_GID + (INDEX))
77         #define PVRSRV_IOR(INDEX)   (PVRSRV_IOC_GID + (INDEX))
78         #define PVRSRV_IOWR(INDEX)  (PVRSRV_IOC_GID + (INDEX))
80         #define PVRSRV_BRIDGE_BASE                  PVRSRV_IOC_GID
81 #endif /* __linux__ */
84 /*
85  * Note *REMEMBER* to update PVRSRV_BRIDGE_LAST_CMD (below) if you add any new
86  * bridge commands!
87  * The command number of PVRSRV_BRIDGE_UM_KM_COMPAT_CHECK needs to be maintained as 0 across previous ddks, for compatibility check command to execute successfully
88  */
90 #define PVRSRV_BRIDGE_UMKM_CMD_FIRST                    0UL
91 #define PVRSRV_BRIDGE_UM_KM_COMPAT_CHECK                PVRSRV_IOWR(0)
92 #define PVRSRV_BRIDGE_UMKM_CMD_LAST                     (0)
94 #define PVRSRV_BRIDGE_CORE_CMD_FIRST                    (PVRSRV_BRIDGE_UMKM_CMD_LAST + 1)
95 #define PVRSRV_BRIDGE_ENUM_DEVICES                              PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+0)     /*!< enumerate device bridge index */
96 #define PVRSRV_BRIDGE_ACQUIRE_DEVICEINFO                PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+1)     /*!< acquire device data bridge index */
97 #define PVRSRV_BRIDGE_RELEASE_DEVICEINFO                PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+2)     /*!< release device data bridge index */
98 #define PVRSRV_BRIDGE_CREATE_DEVMEMCONTEXT              PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+3)     /*!< create device addressable memory context */
99 #define PVRSRV_BRIDGE_DESTROY_DEVMEMCONTEXT             PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+4)     /*!< destroy device addressable memory context */
100 #define PVRSRV_BRIDGE_GET_DEVMEM_HEAPINFO               PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+5)     /*!< get device memory heap info */
101 #define PVRSRV_BRIDGE_ALLOC_DEVICEMEM                   PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+6)     /*!< alloc device memory bridge index */
102 #define PVRSRV_BRIDGE_FREE_DEVICEMEM                    PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+7)     /*!< free device memory bridge index */
103 #define PVRSRV_BRIDGE_GETFREE_DEVICEMEM                 PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+8)     /*!< get free device memory bridge index */
104 #define PVRSRV_BRIDGE_CREATE_COMMANDQUEUE               PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+9)     /*!< create Cmd Q bridge index */
105 #define PVRSRV_BRIDGE_DESTROY_COMMANDQUEUE              PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+10)    /*!< destroy Cmd Q bridge index */
106 #define PVRSRV_BRIDGE_MHANDLE_TO_MMAP_DATA              PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+11)   /*!< generate mmap data from a memory handle */
107 #define PVRSRV_BRIDGE_CONNECT_SERVICES                  PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+12)    /*!< services connect bridge index */
108 #define PVRSRV_BRIDGE_DISCONNECT_SERVICES               PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+13)    /*!< services disconnect bridge index */
109 #define PVRSRV_BRIDGE_WRAP_DEVICE_MEM                   PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+14)    /*!< wrap device memory bridge index */
110 #define PVRSRV_BRIDGE_GET_DEVICEMEMINFO                 PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+15)    /*!< read the kernel meminfo record */
111 #define PVRSRV_BRIDGE_RESERVE_DEV_VIRTMEM               PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+16)
112 #define PVRSRV_BRIDGE_FREE_DEV_VIRTMEM                  PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+17)
113 #define PVRSRV_BRIDGE_MAP_EXT_MEMORY                    PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+18)
114 #define PVRSRV_BRIDGE_UNMAP_EXT_MEMORY                  PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+19)
115 #define PVRSRV_BRIDGE_MAP_DEV_MEMORY                    PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+20)
116 #define PVRSRV_BRIDGE_UNMAP_DEV_MEMORY                  PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+21)
117 #define PVRSRV_BRIDGE_MAP_MEM_INFO_TO_USER              PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+22)
118 #define PVRSRV_BRIDGE_UNMAP_MEM_INFO_FROM_USER  PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+23)
119 #define PVRSRV_BRIDGE_EXPORT_DEVICEMEM                  PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+24)
120 #define PVRSRV_BRIDGE_RELEASE_MMAP_DATA                 PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+25)
121 #define PVRSRV_BRIDGE_CHG_DEV_MEM_ATTRIBS               PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+26)
122 #define PVRSRV_BRIDGE_MAP_DEV_MEMORY_2                  PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+27)
123 #define PVRSRV_BRIDGE_EXPORT_DEVICEMEM_2                PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+28)
124 #if defined (SUPPORT_ION)
125 #define PVRSRV_BRIDGE_MAP_ION_HANDLE                    PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+29)
126 #define PVRSRV_BRIDGE_UNMAP_ION_HANDLE                  PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+30)
127 #define PVRSRV_BRIDGE_CORE_CMD_LAST                             (PVRSRV_BRIDGE_CORE_CMD_FIRST+30)
128 #else
129 #define PVRSRV_BRIDGE_CORE_CMD_LAST                             (PVRSRV_BRIDGE_CORE_CMD_FIRST+28)
130 #endif
131 /* SIM */
132 #define PVRSRV_BRIDGE_SIM_CMD_FIRST                             (PVRSRV_BRIDGE_CORE_CMD_LAST+1)
133 #define PVRSRV_BRIDGE_PROCESS_SIMISR_EVENT              PVRSRV_IOWR(PVRSRV_BRIDGE_SIM_CMD_FIRST+0)      /*!< RTSIM pseudo ISR */
134 #define PVRSRV_BRIDGE_REGISTER_SIM_PROCESS              PVRSRV_IOWR(PVRSRV_BRIDGE_SIM_CMD_FIRST+1)      /*!< Register RTSIM process thread */
135 #define PVRSRV_BRIDGE_UNREGISTER_SIM_PROCESS    PVRSRV_IOWR(PVRSRV_BRIDGE_SIM_CMD_FIRST+2)      /*!< Unregister RTSIM process thread */
136 #define PVRSRV_BRIDGE_SIM_CMD_LAST                              (PVRSRV_BRIDGE_SIM_CMD_FIRST+2)
138 /* User Mapping */
139 #define PVRSRV_BRIDGE_MAPPING_CMD_FIRST                 (PVRSRV_BRIDGE_SIM_CMD_LAST+1)
140 #define PVRSRV_BRIDGE_MAPPHYSTOUSERSPACE                PVRSRV_IOWR(PVRSRV_BRIDGE_MAPPING_CMD_FIRST+0)  /*!< map CPU phys to user space */
141 #define PVRSRV_BRIDGE_UNMAPPHYSTOUSERSPACE              PVRSRV_IOWR(PVRSRV_BRIDGE_MAPPING_CMD_FIRST+1)  /*!< unmap CPU phys to user space */
142 #define PVRSRV_BRIDGE_GETPHYSTOUSERSPACEMAP             PVRSRV_IOWR(PVRSRV_BRIDGE_MAPPING_CMD_FIRST+2)  /*!< get user copy of Phys to Lin loopup table */
143 #define PVRSRV_BRIDGE_MAPPING_CMD_LAST                  (PVRSRV_BRIDGE_MAPPING_CMD_FIRST+2)
145 #define PVRSRV_BRIDGE_STATS_CMD_FIRST                   (PVRSRV_BRIDGE_MAPPING_CMD_LAST+1)
146 #define PVRSRV_BRIDGE_GET_FB_STATS                              PVRSRV_IOWR(PVRSRV_BRIDGE_STATS_CMD_FIRST+0)    /*!< Get FB memory stats */
147 #define PVRSRV_BRIDGE_STATS_CMD_LAST                    (PVRSRV_BRIDGE_STATS_CMD_FIRST+0)
149 /* API to retrieve misc. info. from services */
150 #define PVRSRV_BRIDGE_MISC_CMD_FIRST                    (PVRSRV_BRIDGE_STATS_CMD_LAST+1)
151 #define PVRSRV_BRIDGE_GET_MISC_INFO                             PVRSRV_IOWR(PVRSRV_BRIDGE_MISC_CMD_FIRST+0)     /*!< misc. info. */
152 #define PVRSRV_BRIDGE_RELEASE_MISC_INFO                 PVRSRV_IOWR(PVRSRV_BRIDGE_MISC_CMD_FIRST+1)     /*!< misc. info. */
153 #define PVRSRV_BRIDGE_MISC_CMD_LAST                             (PVRSRV_BRIDGE_MISC_CMD_FIRST+1)
155 /* Overlay ioctls */
157 #if defined (SUPPORT_OVERLAY_ROTATE_BLIT)
158 #define PVRSRV_BRIDGE_OVERLAY_CMD_FIRST                 (PVRSRV_BRIDGE_MISC_CMD_LAST+1)
159 #define PVRSRV_BRIDGE_INIT_3D_OVL_BLT_RES               PVRSRV_IOWR(PVRSRV_BRIDGE_OVERLAY_CMD_FIRST+0)  /*!< 3D Overlay rotate blit init */
160 #define PVRSRV_BRIDGE_DEINIT_3D_OVL_BLT_RES             PVRSRV_IOWR(PVRSRV_BRIDGE_OVERLAY_CMD_FIRST+1)  /*!< 3D Overlay rotate blit deinit */
161 #define PVRSRV_BRIDGE_OVERLAY_CMD_LAST                  (PVRSRV_BRIDGE_OVERLAY_CMD_FIRST+1)
162 #else
163 #define PVRSRV_BRIDGE_OVERLAY_CMD_LAST                  PVRSRV_BRIDGE_MISC_CMD_LAST
164 #endif
166 /* PDUMP */
167 #if defined(PDUMP)
168 #define PVRSRV_BRIDGE_PDUMP_CMD_FIRST                   (PVRSRV_BRIDGE_OVERLAY_CMD_LAST+1)
169 #define PVRSRV_BRIDGE_PDUMP_INIT                        PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+0)    /*!< pdump command structure */
170 #define PVRSRV_BRIDGE_PDUMP_MEMPOL                      PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+1)    /*!< pdump command structure */
171 #define PVRSRV_BRIDGE_PDUMP_DUMPMEM                     PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+2)    /*!< pdump command structure */
172 #define PVRSRV_BRIDGE_PDUMP_REG                         PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+3)    /*!< pdump command structure */
173 #define PVRSRV_BRIDGE_PDUMP_REGPOL                      PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+4)    /*!< pdump command structure */
174 #define PVRSRV_BRIDGE_PDUMP_COMMENT                     PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+5)    /*!< pdump command structure */
175 #define PVRSRV_BRIDGE_PDUMP_SETFRAME                    PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+6)    /*!< pdump command structure */
176 #define PVRSRV_BRIDGE_PDUMP_ISCAPTURING                 PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+7)    /*!< pdump command structure */
177 #define PVRSRV_BRIDGE_PDUMP_DUMPBITMAP                  PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+8)    /*!< pdump command structure */
178 #define PVRSRV_BRIDGE_PDUMP_DUMPREADREG                 PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+9)    /*!< pdump command structure */
179 #define PVRSRV_BRIDGE_PDUMP_SYNCPOL                     PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+10)   /*!< pdump command structure */
180 #define PVRSRV_BRIDGE_PDUMP_DUMPSYNC                    PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+11)   /*!< pdump command structure */
181 #define PVRSRV_BRIDGE_PDUMP_MEMPAGES                    PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+12)   /*!< pdump command structure */
182 #define PVRSRV_BRIDGE_PDUMP_DRIVERINFO                  PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+13)   /*!< pdump command structure */
183 #define PVRSRV_BRIDGE_PDUMP_DUMPPDDEVPADDR              PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+15)   /*!< pdump command structure */
184 #define PVRSRV_BRIDGE_PDUMP_CYCLE_COUNT_REG_READ        PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+16)
185 #define PVRSRV_BRIDGE_PDUMP_STARTINITPHASE                      PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+17)
186 #define PVRSRV_BRIDGE_PDUMP_STOPINITPHASE                       PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+18)
187 #define PVRSRV_BRIDGE_PDUMP_CMD_LAST                    (PVRSRV_BRIDGE_PDUMP_CMD_FIRST+18)
188 #else
189 /* Note we are carefull here not to leave a large gap in the ioctl numbers.
190  * (Some ports may use these values to index into an array where large gaps can
191  * waste memory) */
192 #define PVRSRV_BRIDGE_PDUMP_CMD_LAST                    PVRSRV_BRIDGE_OVERLAY_CMD_LAST
193 #endif
195 /* DisplayClass APIs */
196 #define PVRSRV_BRIDGE_OEM_CMD_FIRST                             (PVRSRV_BRIDGE_PDUMP_CMD_LAST+1)
197 #define PVRSRV_BRIDGE_GET_OEMJTABLE                             PVRSRV_IOWR(PVRSRV_BRIDGE_OEM_CMD_FIRST+0)      /*!< Get OEM Jtable */
198 #define PVRSRV_BRIDGE_OEM_CMD_LAST                              (PVRSRV_BRIDGE_OEM_CMD_FIRST+0)
200 /* device class enum */
201 #define PVRSRV_BRIDGE_DEVCLASS_CMD_FIRST                (PVRSRV_BRIDGE_OEM_CMD_LAST+1)
202 #define PVRSRV_BRIDGE_MAP_DEVICECLASS_MEMORY    PVRSRV_IOWR(PVRSRV_BRIDGE_DEVCLASS_CMD_FIRST+0)
203 #define PVRSRV_BRIDGE_UNMAP_DEVICECLASS_MEMORY  PVRSRV_IOWR(PVRSRV_BRIDGE_DEVCLASS_CMD_FIRST+1)
204 #define PVRSRV_BRIDGE_ENUM_CLASS                                PVRSRV_IOWR(PVRSRV_BRIDGE_DEVCLASS_CMD_FIRST+2)
205 #define PVRSRV_BRIDGE_DEVCLASS_CMD_LAST                 (PVRSRV_BRIDGE_DEVCLASS_CMD_FIRST+2)
207 /* display class API */
208 #define PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST               (PVRSRV_BRIDGE_DEVCLASS_CMD_LAST+1)
209 #define PVRSRV_BRIDGE_OPEN_DISPCLASS_DEVICE             PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+0)
210 #define PVRSRV_BRIDGE_CLOSE_DISPCLASS_DEVICE    PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+1)
211 #define PVRSRV_BRIDGE_ENUM_DISPCLASS_FORMATS    PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+2)
212 #define PVRSRV_BRIDGE_ENUM_DISPCLASS_DIMS               PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+3)
213 #define PVRSRV_BRIDGE_GET_DISPCLASS_SYSBUFFER   PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+4)
214 #define PVRSRV_BRIDGE_GET_DISPCLASS_INFO                PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+5)
215 #define PVRSRV_BRIDGE_CREATE_DISPCLASS_SWAPCHAIN                PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+6)
216 #define PVRSRV_BRIDGE_DESTROY_DISPCLASS_SWAPCHAIN               PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+7)
217 #define PVRSRV_BRIDGE_SET_DISPCLASS_DSTRECT             PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+8)
218 #define PVRSRV_BRIDGE_SET_DISPCLASS_SRCRECT             PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+9)
219 #define PVRSRV_BRIDGE_SET_DISPCLASS_DSTCOLOURKEY                PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+10)
220 #define PVRSRV_BRIDGE_SET_DISPCLASS_SRCCOLOURKEY                PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+11)
221 #define PVRSRV_BRIDGE_GET_DISPCLASS_BUFFERS             PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+12)
222 #define PVRSRV_BRIDGE_SWAP_DISPCLASS_TO_BUFFER  PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+13)
223 #define PVRSRV_BRIDGE_SWAP_DISPCLASS_TO_BUFFER2 PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+14)
224 #define PVRSRV_BRIDGE_SWAP_DISPCLASS_TO_SYSTEM  PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+15)
225 #define PVRSRV_BRIDGE_DISPCLASS_CMD_LAST                (PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+15)
227 /* buffer class API */
228 #define PVRSRV_BRIDGE_BUFCLASS_CMD_FIRST                (PVRSRV_BRIDGE_DISPCLASS_CMD_LAST+1)
229 #define PVRSRV_BRIDGE_OPEN_BUFFERCLASS_DEVICE   PVRSRV_IOWR(PVRSRV_BRIDGE_BUFCLASS_CMD_FIRST+0)
230 #define PVRSRV_BRIDGE_CLOSE_BUFFERCLASS_DEVICE  PVRSRV_IOWR(PVRSRV_BRIDGE_BUFCLASS_CMD_FIRST+1)
231 #define PVRSRV_BRIDGE_GET_BUFFERCLASS_INFO              PVRSRV_IOWR(PVRSRV_BRIDGE_BUFCLASS_CMD_FIRST+2)
232 #define PVRSRV_BRIDGE_GET_BUFFERCLASS_BUFFER    PVRSRV_IOWR(PVRSRV_BRIDGE_BUFCLASS_CMD_FIRST+3)
233 #define PVRSRV_BRIDGE_BUFCLASS_CMD_LAST                 (PVRSRV_BRIDGE_BUFCLASS_CMD_FIRST+3)
235 /* Wrap/Unwrap external memory */
236 #define PVRSRV_BRIDGE_WRAP_CMD_FIRST                    (PVRSRV_BRIDGE_BUFCLASS_CMD_LAST+1)
237 #define PVRSRV_BRIDGE_WRAP_EXT_MEMORY                   PVRSRV_IOWR(PVRSRV_BRIDGE_WRAP_CMD_FIRST+0)
238 #define PVRSRV_BRIDGE_UNWRAP_EXT_MEMORY                 PVRSRV_IOWR(PVRSRV_BRIDGE_WRAP_CMD_FIRST+1)
239 #define PVRSRV_BRIDGE_WRAP_CMD_LAST                             (PVRSRV_BRIDGE_WRAP_CMD_FIRST+1)
241 /* Shared memory */
242 #define PVRSRV_BRIDGE_SHAREDMEM_CMD_FIRST               (PVRSRV_BRIDGE_WRAP_CMD_LAST+1)
243 #define PVRSRV_BRIDGE_ALLOC_SHARED_SYS_MEM              PVRSRV_IOWR(PVRSRV_BRIDGE_SHAREDMEM_CMD_FIRST+0)
244 #define PVRSRV_BRIDGE_FREE_SHARED_SYS_MEM               PVRSRV_IOWR(PVRSRV_BRIDGE_SHAREDMEM_CMD_FIRST+1)
245 #define PVRSRV_BRIDGE_MAP_MEMINFO_MEM                   PVRSRV_IOWR(PVRSRV_BRIDGE_SHAREDMEM_CMD_FIRST+2)
246 #define PVRSRV_BRIDGE_UNMAP_MEMINFO_MEM                 PVRSRV_IOWR(PVRSRV_BRIDGE_SHAREDMEM_CMD_FIRST+3)
247 #define PVRSRV_BRIDGE_SHAREDMEM_CMD_LAST                (PVRSRV_BRIDGE_SHAREDMEM_CMD_FIRST+3)
249 /* Intialisation Service support */
250 #define PVRSRV_BRIDGE_INITSRV_CMD_FIRST                 (PVRSRV_BRIDGE_SHAREDMEM_CMD_LAST+1)
251 #define PVRSRV_BRIDGE_INITSRV_CONNECT                   PVRSRV_IOWR(PVRSRV_BRIDGE_INITSRV_CMD_FIRST+0)
252 #define PVRSRV_BRIDGE_INITSRV_DISCONNECT                PVRSRV_IOWR(PVRSRV_BRIDGE_INITSRV_CMD_FIRST+1)
253 #define PVRSRV_BRIDGE_INITSRV_CMD_LAST                  (PVRSRV_BRIDGE_INITSRV_CMD_FIRST+1)
255 /* Event Objects */
256 #define PVRSRV_BRIDGE_EVENT_OBJECT_CMD_FIRST    (PVRSRV_BRIDGE_INITSRV_CMD_LAST+1)
257 #define PVRSRV_BRIDGE_EVENT_OBJECT_WAIT                 PVRSRV_IOWR(PVRSRV_BRIDGE_EVENT_OBJECT_CMD_FIRST+0)
258 #define PVRSRV_BRIDGE_EVENT_OBJECT_OPEN                 PVRSRV_IOWR(PVRSRV_BRIDGE_EVENT_OBJECT_CMD_FIRST+1)
259 #define PVRSRV_BRIDGE_EVENT_OBJECT_CLOSE                PVRSRV_IOWR(PVRSRV_BRIDGE_EVENT_OBJECT_CMD_FIRST+2)
260 #define PVRSRV_BRIDGE_EVENT_OBJECT_CMD_LAST             (PVRSRV_BRIDGE_EVENT_OBJECT_CMD_FIRST+2)
262 /* Sync ops */
263 #define PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST                (PVRSRV_BRIDGE_EVENT_OBJECT_CMD_LAST+1)
264 #define PVRSRV_BRIDGE_CREATE_SYNC_INFO_MOD_OBJ  PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+0)
265 #define PVRSRV_BRIDGE_DESTROY_SYNC_INFO_MOD_OBJ PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+1)
266 #define PVRSRV_BRIDGE_MODIFY_PENDING_SYNC_OPS   PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+2)
267 #define PVRSRV_BRIDGE_MODIFY_COMPLETE_SYNC_OPS  PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+3)
268 #define PVRSRV_BRIDGE_SYNC_OPS_TAKE_TOKEN       PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+4)
269 #define PVRSRV_BRIDGE_SYNC_OPS_FLUSH_TO_TOKEN   PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+5)
270 #define PVRSRV_BRIDGE_SYNC_OPS_FLUSH_TO_MOD_OBJ PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+6)
271 #define PVRSRV_BRIDGE_SYNC_OPS_FLUSH_TO_DELTA   PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+7)
272 #define PVRSRV_BRIDGE_ALLOC_SYNC_INFO           PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+8)
273 #define PVRSRV_BRIDGE_FREE_SYNC_INFO            PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+9)
274 #define PVRSRV_BRIDGE_SYNC_OPS_CMD_LAST                 (PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+9)
276 /* For sgx_bridge.h (msvdx_bridge.h should probably use these defines too) */
277 #define PVRSRV_BRIDGE_LAST_NON_DEVICE_CMD               (PVRSRV_BRIDGE_SYNC_OPS_CMD_LAST+1)
280 /******************************************************************************
281  * Bridge flags
282  *****************************************************************************/
283 #define PVRSRV_KERNEL_MODE_CLIENT                               1
285 /******************************************************************************
286  * Generic bridge structures
287  *****************************************************************************/
289 /******************************************************************************
290  *      bridge return structure
291  *****************************************************************************/
292 typedef struct PVRSRV_BRIDGE_RETURN_TAG
294         PVRSRV_ERROR eError;
295         IMG_VOID *pvData;
297 }PVRSRV_BRIDGE_RETURN;
300 /******************************************************************************
301  *      bridge packaging structure
302  *****************************************************************************/
303 typedef struct PVRSRV_BRIDGE_PACKAGE_TAG
305         IMG_UINT32                              ui32BridgeID;                   /*!< ioctl/drvesc index */
306         IMG_UINT32                              ui32Size;                               /*!< size of structure */
307         IMG_VOID                                *pvParamIn;                             /*!< input data buffer */
308         IMG_UINT32                              ui32InBufferSize;               /*!< size of input data buffer */
309         IMG_VOID                                *pvParamOut;                    /*!< output data buffer */
310         IMG_UINT32                              ui32OutBufferSize;              /*!< size of output data buffer */
312         IMG_HANDLE                              hKernelServices;                /*!< kernel servcies handle */
313 }PVRSRV_BRIDGE_PACKAGE;
316 /******************************************************************************
317  * Input structures for IOCTL/DRVESC
318  *****************************************************************************/
321 /******************************************************************************
322  *      'bridge in' connect to services
323  *****************************************************************************/
324 typedef struct PVRSRV_BRIDGE_IN_CONNECT_SERVICES_TAG
326         IMG_UINT32              ui32BridgeFlags; /* Must be first member of structure */
327         IMG_UINT32              ui32Flags;
328 } PVRSRV_BRIDGE_IN_CONNECT_SERVICES;
330 /******************************************************************************
331  *      'bridge in' acquire device info
332  *****************************************************************************/
333 typedef struct PVRSRV_BRIDGE_IN_ACQUIRE_DEVICEINFO_TAG
335         IMG_UINT32                      ui32BridgeFlags; /* Must be first member of structure */
336         IMG_UINT32                      uiDevIndex;
337         PVRSRV_DEVICE_TYPE      eDeviceType;
339 } PVRSRV_BRIDGE_IN_ACQUIRE_DEVICEINFO;
342 /******************************************************************************
343  *      'bridge in' enum class
344  *****************************************************************************/
345 typedef struct PVRSRV_BRIDGE_IN_ENUMCLASS_TAG
347         IMG_UINT32                      ui32BridgeFlags; /* Must be first member of structure */
348         PVRSRV_DEVICE_CLASS sDeviceClass;
349 } PVRSRV_BRIDGE_IN_ENUMCLASS;
352 /******************************************************************************
353  *      'bridge in' close display class device
354  *****************************************************************************/
355 typedef struct PVRSRV_BRIDGE_IN_CLOSE_DISPCLASS_DEVICE_TAG
357         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
358         IMG_HANDLE                      hDeviceKM;
359 } PVRSRV_BRIDGE_IN_CLOSE_DISPCLASS_DEVICE;
362 /******************************************************************************
363  *      'bridge in' enum display class formats
364  *****************************************************************************/
365 typedef struct PVRSRV_BRIDGE_IN_ENUM_DISPCLASS_FORMATS_TAG
367         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
368         IMG_HANDLE                      hDeviceKM;
369 } PVRSRV_BRIDGE_IN_ENUM_DISPCLASS_FORMATS;
372 /******************************************************************************
373  *      'bridge in' get display class sysbuffer
374  *****************************************************************************/
375 typedef struct PVRSRV_BRIDGE_IN_GET_DISPCLASS_SYSBUFFER_TAG
377         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
378         IMG_HANDLE                      hDeviceKM;
379 } PVRSRV_BRIDGE_IN_GET_DISPCLASS_SYSBUFFER;
382 /******************************************************************************
383  *      'bridge in' display class info
384  *****************************************************************************/
385 typedef struct PVRSRV_BRIDGE_IN_GET_DISPCLASS_INFO_TAG
387         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
388         IMG_HANDLE                      hDeviceKM;
389 } PVRSRV_BRIDGE_IN_GET_DISPCLASS_INFO;
392 /******************************************************************************
393  *      'bridge in' close buffer class device
394  *****************************************************************************/
395 typedef struct PVRSRV_BRIDGE_IN_CLOSE_BUFFERCLASS_DEVICE_TAG
397         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
398         IMG_HANDLE                      hDeviceKM;
399 } PVRSRV_BRIDGE_IN_CLOSE_BUFFERCLASS_DEVICE;
402 /******************************************************************************
403  *      'bridge in' close buffer class device
404  *****************************************************************************/
405 typedef struct PVRSRV_BRIDGE_IN_GET_BUFFERCLASS_INFO_TAG
407         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
408         IMG_HANDLE                      hDeviceKM;
409 } PVRSRV_BRIDGE_IN_GET_BUFFERCLASS_INFO;
412 /******************************************************************************
413  *      'bridge out' acquire device info
414  *****************************************************************************/
415 typedef struct PVRSRV_BRIDGE_IN_RELEASE_DEVICEINFO_TAG
417         IMG_UINT32                      ui32BridgeFlags; /* Must be first member of structure */
418         IMG_HANDLE                      hDevCookie;
420 } PVRSRV_BRIDGE_IN_RELEASE_DEVICEINFO;
423 /******************************************************************************
424  *      'bridge in' free class devices info.
425  *****************************************************************************/
426 typedef struct PVRSRV_BRIDGE_IN_FREE_CLASSDEVICEINFO_TAG
428         IMG_UINT32                      ui32BridgeFlags; /* Must be first member of structure */
429         PVRSRV_DEVICE_CLASS DeviceClass;
430         IMG_VOID*                       pvDevInfo;
432 }PVRSRV_BRIDGE_IN_FREE_CLASSDEVICEINFO;
435 /******************************************************************************
436  *      'bridge in' get device memory heap info
437  *****************************************************************************/
438 typedef struct PVRSRV_BRIDGE_IN_GET_DEVMEM_HEAPINFO_TAG
440         IMG_UINT32                      ui32BridgeFlags; /* Must be first member of structure */
441         IMG_HANDLE                      hDevCookie;
442         IMG_HANDLE                      hDevMemContext;
444 }PVRSRV_BRIDGE_IN_GET_DEVMEM_HEAPINFO;
447 /******************************************************************************
448  *      'bridge in' create device memory context
449  *****************************************************************************/
450 typedef struct PVRSRV_BRIDGE_IN_CREATE_DEVMEMCONTEXT_TAG
452         IMG_UINT32                      ui32BridgeFlags; /* Must be first member of structure */
453         IMG_HANDLE                      hDevCookie;
455 }PVRSRV_BRIDGE_IN_CREATE_DEVMEMCONTEXT;
458 /******************************************************************************
459  *      'bridge in' destroy device memory context
460  *****************************************************************************/
461 typedef struct PVRSRV_BRIDGE_IN_DESTROY_DEVMEMCONTEXT_TAG
463         IMG_UINT32                      ui32BridgeFlags; /* Must be first member of structure */
464         IMG_HANDLE                      hDevCookie;
465         IMG_HANDLE                      hDevMemContext;
467 }PVRSRV_BRIDGE_IN_DESTROY_DEVMEMCONTEXT;
470 /******************************************************************************
471  *      'bridge in' alloc device memory
472  *****************************************************************************/
473 typedef struct PVRSRV_BRIDGE_IN_ALLOCDEVICEMEM_TAG
475         IMG_UINT32                      ui32BridgeFlags; /* Must be first member of structure */
476         IMG_HANDLE                      hDevCookie;
477         IMG_HANDLE                      hDevMemHeap;
478         IMG_UINT32                      ui32Attribs;
479         IMG_SIZE_T                      uSize;
480         IMG_SIZE_T                      uAlignment;
481         IMG_PVOID                       pvPrivData;
482         IMG_UINT32                      ui32PrivDataLength;
484         IMG_UINT32                      ui32ChunkSize;
485         IMG_UINT32                      ui32NumVirtChunks;
486         IMG_UINT32                      ui32NumPhysChunks;
487         IMG_BOOL                        *pabMapChunk;
488 }PVRSRV_BRIDGE_IN_ALLOCDEVICEMEM;
490 /******************************************************************************
491  *      'bridge in' map meminfo to user mode
492  *****************************************************************************/
493 typedef struct PVRSRV_BRIDGE_IN_MAPMEMINFOTOUSER_TAG
495         IMG_UINT32  ui32BridgeFlags; /* Must be first member of structure */
496         PVRSRV_KERNEL_MEM_INFO  *psKernelMemInfo;
498 }PVRSRV_BRIDGE_IN_MAPMEMINFOTOUSER;
500 /******************************************************************************
501  *      'bridge in' unmap meminfo from user mode
502  *****************************************************************************/
503 typedef struct PVRSRV_BRIDGE_IN_UNMAPMEMINFOFROMUSER_TAG
505         IMG_UINT32      ui32BridgeFlags; /* Must be first member of structure */
506         PVRSRV_KERNEL_MEM_INFO  *psKernelMemInfo;
507         IMG_PVOID                                pvLinAddr;
508         IMG_HANDLE                               hMappingInfo;
510 }PVRSRV_BRIDGE_IN_UNMAPMEMINFOFROMUSER;
512 /******************************************************************************
513  *      'bridge in' free device memory
514  *****************************************************************************/
515 typedef struct PVRSRV_BRIDGE_IN_FREEDEVICEMEM_TAG
517         IMG_UINT32              ui32BridgeFlags; /* Must be first member of structure */
518         IMG_HANDLE                              hDevCookie;
519         PVRSRV_KERNEL_MEM_INFO  *psKernelMemInfo;
520         PVRSRV_CLIENT_MEM_INFO  sClientMemInfo;
522 }PVRSRV_BRIDGE_IN_FREEDEVICEMEM;
524 /******************************************************************************
525  *      'bridge in' export device memory
526  *****************************************************************************/
527 typedef struct PVRSRV_BRIDGE_IN_EXPORTDEVICEMEM_TAG
529         IMG_UINT32      ui32BridgeFlags; /* Must be first member of structure */
530         IMG_HANDLE                              hDevCookie;
531         PVRSRV_KERNEL_MEM_INFO  *psKernelMemInfo;
533 }PVRSRV_BRIDGE_IN_EXPORTDEVICEMEM;
535 /******************************************************************************
536  *      'bridge in' map ion handle
537  *****************************************************************************/
538 #define ION_IMPORT_MAX_FDS 3
539 #define ION_IMPORT_MAX_CHUNK_COUNT 3
540 typedef struct _PVRSRV_BRIDGE_IN_MAP_ION_HANDLE_
542         IMG_UINT32                      ui32BridgeFlags; /* Must be first member of structure */
543         IMG_UINT32                      ui32NumFDs;
544         IMG_INT32                       ai32BufferFDs[ION_IMPORT_MAX_FDS];
545         IMG_UINT32                      ui32Attribs;
546         IMG_UINT32                      ui32ChunkCount;
547         IMG_SIZE_T                      auiOffset[ION_IMPORT_MAX_CHUNK_COUNT];
548         IMG_SIZE_T                      auiSize[ION_IMPORT_MAX_CHUNK_COUNT];
549         IMG_HANDLE                      hDevCookie;
550         IMG_HANDLE                      hDevMemHeap;
551 } PVRSRV_BRIDGE_IN_MAP_ION_HANDLE;
553 /******************************************************************************
554  *      'bridge in' unmap ion handle
555  *****************************************************************************/
556 typedef struct PVRSRV_BRIDGE_IN_UNMAP_ION_HANDLE_TAG
558         IMG_UINT32              ui32BridgeFlags; /* Must be first member of structure */
559         PVRSRV_KERNEL_MEM_INFO  *psKernelMemInfo;
560 }PVRSRV_BRIDGE_IN_UNMAP_ION_HANDLE;
562 /******************************************************************************
563  *      'bridge in' get free device memory
564  *****************************************************************************/
565 typedef struct PVRSRV_BRIDGE_IN_GETFREEDEVICEMEM_TAG
567         IMG_UINT32                      ui32BridgeFlags; /* Must be first member of structure */
568         IMG_UINT32                      ui32Flags;
570 } PVRSRV_BRIDGE_IN_GETFREEDEVICEMEM;
572 /******************************************************************************
573  *      'bridge in' create Cmd Q
574  *****************************************************************************/
575 typedef struct PVRSRV_BRIDGE_IN_CREATECOMMANDQUEUE_TAG
577         IMG_UINT32                      ui32BridgeFlags; /* Must be first member of structure */
578         IMG_HANDLE                      hDevCookie;
579         IMG_SIZE_T                      uQueueSize;
581 }PVRSRV_BRIDGE_IN_CREATECOMMANDQUEUE;
584 /******************************************************************************
585  *      'bridge in' destroy Cmd Q
586  *****************************************************************************/
587 typedef struct PVRSRV_BRIDGE_IN_DESTROYCOMMANDQUEUE_TAG
589         IMG_UINT32                      ui32BridgeFlags; /* Must be first member of structure */
590         IMG_HANDLE                      hDevCookie;
591         PVRSRV_QUEUE_INFO       *psQueueInfo;
593 }PVRSRV_BRIDGE_IN_DESTROYCOMMANDQUEUE;
596 /******************************************************************************
597  *      'bridge in' get full map data
598  *****************************************************************************/
599 typedef struct PVRSRV_BRIDGE_IN_MHANDLE_TO_MMAP_DATA_TAG
601         IMG_UINT32                      ui32BridgeFlags; /* Must be first member of structure */
602         IMG_HANDLE                      hMHandle;        /* Handle associated with the memory that needs to be mapped */
603 } PVRSRV_BRIDGE_IN_MHANDLE_TO_MMAP_DATA;
606 /******************************************************************************
607  *      'bridge in' get full map data
608  *****************************************************************************/
609 typedef struct PVRSRV_BRIDGE_IN_RELEASE_MMAP_DATA_TAG
611         IMG_UINT32                      ui32BridgeFlags; /* Must be first member of structure */
612         IMG_HANDLE                      hMHandle;        /* Handle associated with the memory that needs to be mapped */
613 } PVRSRV_BRIDGE_IN_RELEASE_MMAP_DATA;
616 /******************************************************************************
617  *      'bridge in' reserve vm
618  *****************************************************************************/
619 typedef struct PVRSRV_BRIDGE_IN_RESERVE_DEV_VIRTMEM_TAG
621         IMG_UINT32                      ui32BridgeFlags; /* Must be first member of structure */
622         IMG_HANDLE                      hDevMemHeap;
623         IMG_DEV_VIRTADDR        *psDevVAddr;
624         IMG_SIZE_T                      uSize;
625         IMG_SIZE_T                      uAlignment;
627 }PVRSRV_BRIDGE_IN_RESERVE_DEV_VIRTMEM;
629 /******************************************************************************
630  *      'bridge out' connect to services
631  *****************************************************************************/
632 typedef struct PVRSRV_BRIDGE_OUT_CONNECT_SERVICES_TAG
634         PVRSRV_ERROR    eError;
635         IMG_HANDLE              hKernelServices;
636 }PVRSRV_BRIDGE_OUT_CONNECT_SERVICES;
638 /******************************************************************************
639  *      'bridge out' reserve vm
640  *****************************************************************************/
641 typedef struct PVRSRV_BRIDGE_OUT_RESERVE_DEV_VIRTMEM_TAG
643         PVRSRV_ERROR            eError;
644         PVRSRV_KERNEL_MEM_INFO  *psKernelMemInfo;
645         PVRSRV_KERNEL_SYNC_INFO *psKernelSyncInfo;
646         PVRSRV_CLIENT_MEM_INFO  sClientMemInfo;
647         PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo;
649 }PVRSRV_BRIDGE_OUT_RESERVE_DEV_VIRTMEM;
652 /******************************************************************************
653  *      'bridge in' free vm
654  *****************************************************************************/
655 typedef struct PVRSRV_BRIDGE_IN_FREE_DEV_VIRTMEM_TAG
657         IMG_UINT32              ui32BridgeFlags; /* Must be first member of structure */
658         PVRSRV_KERNEL_MEM_INFO  *psKernelMemInfo;
659         PVRSRV_CLIENT_MEM_INFO  sClientMemInfo;
660         PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo;
662 }PVRSRV_BRIDGE_IN_FREE_DEV_VIRTMEM;
665 /******************************************************************************
666  *      'bridge in' map dev memory allocation to another heap
667  *****************************************************************************/
668 typedef struct PVRSRV_BRIDGE_IN_MAP_DEV_MEMORY_TAG
670         IMG_UINT32                              ui32BridgeFlags; /* Must be first member of structure */
671         IMG_HANDLE                              hKernelMemInfo;
672         IMG_HANDLE                              hDstDevMemHeap;
674 }PVRSRV_BRIDGE_IN_MAP_DEV_MEMORY;
677 /******************************************************************************
678  *      'bridge out' map dev memory allocation to another heap
679  *****************************************************************************/
680 typedef struct PVRSRV_BRIDGE_OUT_MAP_DEV_MEMORY_TAG
682         PVRSRV_ERROR            eError;
683         PVRSRV_KERNEL_MEM_INFO  *psDstKernelMemInfo;
684         PVRSRV_CLIENT_MEM_INFO  sDstClientMemInfo;
685         PVRSRV_CLIENT_SYNC_INFO sDstClientSyncInfo;
687 }PVRSRV_BRIDGE_OUT_MAP_DEV_MEMORY;
690 /******************************************************************************
691  *      'bridge in' unmap dev memory allocation
692  *****************************************************************************/
693 typedef struct PVRSRV_BRIDGE_IN_UNMAP_DEV_MEMORY_TAG
695         IMG_UINT32              ui32BridgeFlags; /* Must be first member of structure */
696         PVRSRV_KERNEL_MEM_INFO          *psKernelMemInfo;
697         PVRSRV_CLIENT_MEM_INFO  sClientMemInfo;
698         PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo;
700 }PVRSRV_BRIDGE_IN_UNMAP_DEV_MEMORY;
703 /******************************************************************************
704  *      'bridge in' map pages
705  *****************************************************************************/
706 typedef struct PVRSRV_BRIDGE_IN_MAP_EXT_MEMORY_TAG
708         IMG_UINT32       ui32BridgeFlags; /* Must be first member of structure */
709         PVRSRV_KERNEL_MEM_INFO  *psKernelMemInfo;
710         IMG_SYS_PHYADDR *psSysPAddr;
711         IMG_UINT32       ui32Flags;
713 }PVRSRV_BRIDGE_IN_MAP_EXT_MEMORY;
715 /******************************************************************************
716  *      'bridge in' unmap pages
717  *****************************************************************************/
718 typedef struct PVRSRV_BRIDGE_IN_UNMAP_EXT_MEMORY_TAG
720         IMG_UINT32                                      ui32BridgeFlags; /* Must be first member of structure */
721         PVRSRV_CLIENT_MEM_INFO          sClientMemInfo;
722         PVRSRV_CLIENT_SYNC_INFO         sClientSyncInfo;
723         IMG_UINT32                                      ui32Flags;
725 }PVRSRV_BRIDGE_IN_UNMAP_EXT_MEMORY;
727 /******************************************************************************
728  *      'bridge in' map device class buffer pages
729  *****************************************************************************/
730 typedef struct PVRSRV_BRIDGE_IN_MAP_DEVICECLASS_MEMORY_TAG
732         IMG_UINT32              ui32BridgeFlags; /* Must be first member of structure */
733         IMG_HANDLE              hDeviceClassBuffer;
734         IMG_HANDLE              hDevMemContext;
736 }PVRSRV_BRIDGE_IN_MAP_DEVICECLASS_MEMORY;
739 /******************************************************************************
740  *      'bridge out' map device class buffer pages
741  *****************************************************************************/
742 typedef struct PVRSRV_BRIDGE_OUT_MAP_DEVICECLASS_MEMORY_TAG
744         PVRSRV_ERROR            eError;
745         PVRSRV_CLIENT_MEM_INFO  sClientMemInfo;
746         PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo;
747         PVRSRV_KERNEL_MEM_INFO  *psKernelMemInfo;
748         IMG_HANDLE                              hMappingInfo;
750 }PVRSRV_BRIDGE_OUT_MAP_DEVICECLASS_MEMORY;
753 /******************************************************************************
754  *      'bridge in' unmap device class buffer pages
755  *****************************************************************************/
756 typedef struct PVRSRV_BRIDGE_IN_UNMAP_DEVICECLASS_MEMORY_TAG
758         IMG_UINT32              ui32BridgeFlags; /* Must be first member of structure */
759         PVRSRV_KERNEL_MEM_INFO  *psKernelMemInfo;
760         PVRSRV_CLIENT_MEM_INFO  sClientMemInfo;
761         PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo;
763 }PVRSRV_BRIDGE_IN_UNMAP_DEVICECLASS_MEMORY;
766 /******************************************************************************
767  *      'bridge in' pdump memory poll
768  *****************************************************************************/
769 typedef struct PVRSRV_BRIDGE_IN_PDUMP_MEMPOL_TAG
771         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
772         PVRSRV_KERNEL_MEM_INFO  *psKernelMemInfo;
773         IMG_UINT32 ui32Offset;
774         IMG_UINT32 ui32Value;
775         IMG_UINT32 ui32Mask;
776         PDUMP_POLL_OPERATOR             eOperator;
777         IMG_UINT32 ui32Flags;
779 }PVRSRV_BRIDGE_IN_PDUMP_MEMPOL;
781 /******************************************************************************
782  *      'bridge in' pdump sync poll
783  *****************************************************************************/
784 typedef struct PVRSRV_BRIDGE_IN_PDUMP_SYNCPOL_TAG
786         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
787         PVRSRV_KERNEL_SYNC_INFO *psKernelSyncInfo;
788         IMG_BOOL   bIsRead;
789         IMG_BOOL   bUseLastOpDumpVal;
790         IMG_UINT32 ui32Value;
791         IMG_UINT32 ui32Mask;
793 }PVRSRV_BRIDGE_IN_PDUMP_SYNCPOL;
796 /******************************************************************************
797  *      'bridge in' pdump dump memory
798  *****************************************************************************/
799 typedef struct PVRSRV_BRIDGE_IN_PDUMP_DUMPMEM_TAG
801         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
802         IMG_PVOID  pvLinAddr;
803         IMG_PVOID  pvAltLinAddr;
804         PVRSRV_KERNEL_MEM_INFO  *psKernelMemInfo;
805         IMG_UINT32 ui32Offset;
806         IMG_UINT32 ui32Bytes;
807         IMG_UINT32 ui32Flags;
809 }PVRSRV_BRIDGE_IN_PDUMP_DUMPMEM;
812 /******************************************************************************
813  *      'bridge in' pdump dump sync
814  *****************************************************************************/
815 typedef struct PVRSRV_BRIDGE_IN_PDUMP_DUMPSYNC_TAG
817         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
818         IMG_PVOID  pvAltLinAddr;
819         PVRSRV_KERNEL_SYNC_INFO *psKernelSyncInfo;
820         IMG_UINT32 ui32Offset;
821         IMG_UINT32 ui32Bytes;
823 }PVRSRV_BRIDGE_IN_PDUMP_DUMPSYNC;
826 /******************************************************************************
827  *      'bridge in' pdump dump reg
828  *****************************************************************************/
829 typedef struct PVRSRV_BRIDGE_IN_PDUMP_DUMPREG_TAG
831         IMG_UINT32              ui32BridgeFlags; /* Must be first member of structure */
832         IMG_HANDLE              hDevCookie;
833         PVRSRV_HWREG    sHWReg;
834         IMG_UINT32              ui32Flags;
835         IMG_CHAR                szRegRegion[32];
837 }PVRSRV_BRIDGE_IN_PDUMP_DUMPREG;
839 /******************************************************************************
840  *      'bridge in' pdump dump reg
841  *****************************************************************************/
842 typedef struct PVRSRV_BRIDGE_IN_PDUMP_REGPOL_TAG
844         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
845         IMG_HANDLE hDevCookie;
846         PVRSRV_HWREG sHWReg;
847         IMG_UINT32 ui32Mask;
848         IMG_UINT32 ui32Flags;
849         IMG_CHAR   szRegRegion[32];
850 }PVRSRV_BRIDGE_IN_PDUMP_REGPOL;
852 /******************************************************************************
853  *      'bridge in' pdump dump PD reg
854  *****************************************************************************/
855 typedef struct PVRSRV_BRIDGE_IN_PDUMP_DUMPPDREG_TAG
857         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
858         PVRSRV_HWREG sHWReg;
859         IMG_UINT32 ui32Flags;
861 }PVRSRV_BRIDGE_IN_PDUMP_DUMPPDREG;
863 /******************************************************************************
864  *      'bridge in' pdump dump mem pages
865  *****************************************************************************/
866 typedef struct PVRSRV_BRIDGE_IN_PDUMP_MEMPAGES_TAG
868         IMG_UINT32                      ui32BridgeFlags; /* Must be first member of structure */
869         IMG_HANDLE                      hDevCookie;
870         IMG_HANDLE                      hKernelMemInfo;
871         IMG_DEV_PHYADDR         *pPages;
872         IMG_UINT32                      ui32NumPages;
873         IMG_DEV_VIRTADDR        sDevVAddr;
874         IMG_UINT32                      ui32Start;
875         IMG_UINT32                      ui32Length;
876         IMG_UINT32                      ui32Flags;
878 }PVRSRV_BRIDGE_IN_PDUMP_MEMPAGES;
880 /******************************************************************************
881  *      'bridge in' pdump dump comment
882  *****************************************************************************/
883 typedef struct PVRSRV_BRIDGE_IN_PDUMP_COMMENT_TAG
885         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
886         IMG_CHAR szComment[PVRSRV_PDUMP_MAX_COMMENT_SIZE];
887         IMG_UINT32 ui32Flags;
889 }PVRSRV_BRIDGE_IN_PDUMP_COMMENT;
892 /******************************************************************************
893  *      'bridge in' pdump set frame
894  *****************************************************************************/
895 typedef struct PVRSRV_BRIDGE_IN_PDUMP_SETFRAME_TAG
897         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
898         IMG_UINT32 ui32Frame;
900 }PVRSRV_BRIDGE_IN_PDUMP_SETFRAME;
903 /******************************************************************************
904  *      'bridge in' pdump dump bitmap
905  *****************************************************************************/
907 typedef struct PVRSRV_BRIDGE_IN_PDUMP_BITMAP_TAG
909         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
910         IMG_HANDLE hDevCookie;
911         IMG_CHAR   szFileName[PVRSRV_PDUMP_MAX_FILENAME_SIZE];
912         IMG_UINT32 ui32FileOffset;
913         IMG_UINT32 ui32Width;
914         IMG_UINT32 ui32Height;
915         IMG_UINT32 ui32StrideInBytes;
916         IMG_DEV_VIRTADDR sDevBaseAddr;
917         IMG_HANDLE hDevMemContext;
918         IMG_UINT32 ui32Size;
919         PDUMP_PIXEL_FORMAT ePixelFormat;
920         PDUMP_MEM_FORMAT eMemFormat;
921         IMG_UINT32 ui32Flags;
923 }PVRSRV_BRIDGE_IN_PDUMP_BITMAP;
926 /******************************************************************************
927  *      'bridge in' pdump dump read reg
928  *****************************************************************************/
929 typedef struct PVRSRV_BRIDGE_IN_PDUMP_READREG_TAG
931         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
932         IMG_HANDLE hDevCookie;
933         IMG_CHAR   szFileName[PVRSRV_PDUMP_MAX_FILENAME_SIZE];
934         IMG_UINT32 ui32FileOffset;
935         IMG_UINT32 ui32Address;
936         IMG_UINT32 ui32Size;
937         IMG_UINT32 ui32Flags;
938         IMG_CHAR   szRegRegion[32];
940 }PVRSRV_BRIDGE_IN_PDUMP_READREG;
942 /******************************************************************************
943  *      'bridge in' pdump dump driver-info
944  *****************************************************************************/
945 typedef struct PVRSRV_BRIDGE_IN_PDUMP_DRIVERINFO_TAG
947         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
948         IMG_CHAR szString[PVRSRV_PDUMP_MAX_COMMENT_SIZE];
949         IMG_BOOL bContinuous;
951 }PVRSRV_BRIDGE_IN_PDUMP_DRIVERINFO;
953 typedef struct PVRSRV_BRIDGE_IN_PDUMP_DUMPPDDEVPADDR_TAG
955         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
956         IMG_HANDLE hKernelMemInfo;
957         IMG_UINT32 ui32Offset;
958         IMG_DEV_PHYADDR sPDDevPAddr;
959 }PVRSRV_BRIDGE_IN_PDUMP_DUMPPDDEVPADDR;
961 /******************************************************************************
962  *      'bridge in' pdump cycle count register read
963  *****************************************************************************/
964 typedef struct PVRSRV_BRIDGE_PDUM_IN_CYCLE_COUNT_REG_READ_TAG
966         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
967         IMG_HANDLE hDevCookie;
968         IMG_UINT32 ui32RegOffset;
969         IMG_BOOL bLastFrame;
970 }PVRSRV_BRIDGE_IN_PDUMP_CYCLE_COUNT_REG_READ;
972 /*****************************************************************************
973  * Output structures for BRIDGEs
974  ****************************************************************************/
976 /******************************************************************************
977  *      'bridge out' enum. devices
978  *****************************************************************************/
979 typedef struct PVRSRV_BRIDGE_OUT_ENUMDEVICE_TAG
981         PVRSRV_ERROR eError;
982         IMG_UINT32 ui32NumDevices;
983         PVRSRV_DEVICE_IDENTIFIER asDeviceIdentifier[PVRSRV_MAX_DEVICES];
985 }PVRSRV_BRIDGE_OUT_ENUMDEVICE;
988 /******************************************************************************
989  *      'bridge out' acquire device info
990  *****************************************************************************/
991 typedef struct PVRSRV_BRIDGE_OUT_ACQUIRE_DEVICEINFO_TAG
994         PVRSRV_ERROR            eError;
995         IMG_HANDLE                      hDevCookie;
997 } PVRSRV_BRIDGE_OUT_ACQUIRE_DEVICEINFO;
1000 /******************************************************************************
1001  *      'bridge out' enum. class devices
1002  *****************************************************************************/
1003 typedef struct PVRSRV_BRIDGE_OUT_ENUMCLASS_TAG
1005         PVRSRV_ERROR eError;
1006         IMG_UINT32 ui32NumDevices;
1007         IMG_UINT32 ui32DevID[PVRSRV_MAX_DEVICES];
1009 }PVRSRV_BRIDGE_OUT_ENUMCLASS;
1012 /******************************************************************************
1013  *      'bridge in' open display class devices
1014  *****************************************************************************/
1015 typedef struct PVRSRV_BRIDGE_IN_OPEN_DISPCLASS_DEVICE_TAG
1017         IMG_UINT32              ui32BridgeFlags; /* Must be first member of structure */
1018         IMG_UINT32              ui32DeviceID;
1019         IMG_HANDLE              hDevCookie;
1021 }PVRSRV_BRIDGE_IN_OPEN_DISPCLASS_DEVICE;
1023 /******************************************************************************
1024  *      'bridge out' open display class devices
1025  *****************************************************************************/
1026 typedef struct PVRSRV_BRIDGE_OUT_OPEN_DISPCLASS_DEVICE_TAG
1028         PVRSRV_ERROR    eError;
1029         IMG_HANDLE              hDeviceKM;
1031 }PVRSRV_BRIDGE_OUT_OPEN_DISPCLASS_DEVICE;
1034 /******************************************************************************
1035  *      'bridge in' wrap pages
1036  *****************************************************************************/
1037 typedef struct PVRSRV_BRIDGE_IN_WRAP_EXT_MEMORY_TAG
1039         IMG_UINT32                              ui32BridgeFlags; /* Must be first member of structure */
1040         IMG_HANDLE              hDevCookie;
1041         IMG_HANDLE                              hDevMemContext;
1042         IMG_VOID                                *pvLinAddr;
1043         IMG_SIZE_T              uByteSize;
1044         IMG_SIZE_T              uPageOffset;
1045         IMG_BOOL                bPhysContig;
1046         IMG_UINT32                              ui32NumPageTableEntries;
1047         IMG_SYS_PHYADDR         *psSysPAddr;
1048         IMG_UINT32                              ui32Flags;
1050 }PVRSRV_BRIDGE_IN_WRAP_EXT_MEMORY;
1052 /******************************************************************************
1053  *      'bridge out' wrap pages
1054  *****************************************************************************/
1055 typedef struct PVRSRV_BRIDGE_OUT_WRAP_EXT_MEMORY_TAG
1057         PVRSRV_ERROR    eError;
1058         PVRSRV_CLIENT_MEM_INFO  sClientMemInfo;
1059         PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo;
1061 }PVRSRV_BRIDGE_OUT_WRAP_EXT_MEMORY;
1063 /******************************************************************************
1064  *      'bridge in' unwrap pages
1065  *****************************************************************************/
1066 typedef struct PVRSRV_BRIDGE_IN_UNWRAP_EXT_MEMORY_TAG
1068         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
1069         IMG_HANDLE hKernelMemInfo;
1070         PVRSRV_CLIENT_MEM_INFO  sClientMemInfo;
1071         PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo;
1073 }PVRSRV_BRIDGE_IN_UNWRAP_EXT_MEMORY;
1076 #define PVRSRV_MAX_DC_DISPLAY_FORMATS                   10
1077 #define PVRSRV_MAX_DC_DISPLAY_DIMENSIONS                10
1078 #define PVRSRV_MAX_DC_SWAPCHAIN_BUFFERS                 4
1079 #define PVRSRV_MAX_DC_CLIP_RECTS                                32
1081 /******************************************************************************
1082  *      'bridge out' enum display class formats
1083  *****************************************************************************/
1084 typedef struct PVRSRV_BRIDGE_OUT_ENUM_DISPCLASS_FORMATS_TAG
1086         PVRSRV_ERROR    eError;
1087         IMG_UINT32              ui32Count;
1088         DISPLAY_FORMAT  asFormat[PVRSRV_MAX_DC_DISPLAY_FORMATS];
1090 }PVRSRV_BRIDGE_OUT_ENUM_DISPCLASS_FORMATS;
1093 /******************************************************************************
1094  *      'bridge in' enum display class dims
1095  *****************************************************************************/
1096 typedef struct PVRSRV_BRIDGE_IN_ENUM_DISPCLASS_DIMS_TAG
1098         IMG_UINT32              ui32BridgeFlags; /* Must be first member of structure */
1099         IMG_HANDLE              hDeviceKM;
1100         DISPLAY_FORMAT  sFormat;
1102 }PVRSRV_BRIDGE_IN_ENUM_DISPCLASS_DIMS;
1105 /******************************************************************************
1106  *      'bridge out' enum display class dims
1107  *****************************************************************************/
1108 typedef struct PVRSRV_BRIDGE_OUT_ENUM_DISPCLASS_DIMS_TAG
1110         PVRSRV_ERROR    eError;
1111         IMG_UINT32              ui32Count;
1112         DISPLAY_DIMS    asDim[PVRSRV_MAX_DC_DISPLAY_DIMENSIONS];
1114 }PVRSRV_BRIDGE_OUT_ENUM_DISPCLASS_DIMS;
1117 /******************************************************************************
1118  *      'bridge out' enum display class dims
1119  *****************************************************************************/
1120 typedef struct PVRSRV_BRIDGE_OUT_GET_DISPCLASS_INFO_TAG
1122         PVRSRV_ERROR    eError;
1123         DISPLAY_INFO    sDisplayInfo;
1125 }PVRSRV_BRIDGE_OUT_GET_DISPCLASS_INFO;
1128 /******************************************************************************
1129  *      'bridge out' get display class system buffer
1130  *****************************************************************************/
1131 typedef struct PVRSRV_BRIDGE_OUT_GET_DISPCLASS_SYSBUFFER_TAG
1133         PVRSRV_ERROR    eError;
1134         IMG_HANDLE              hBuffer;
1136 }PVRSRV_BRIDGE_OUT_GET_DISPCLASS_SYSBUFFER;
1139 /******************************************************************************
1140  *      'bridge in' create swap chain
1141  *****************************************************************************/
1142 typedef struct PVRSRV_BRIDGE_IN_CREATE_DISPCLASS_SWAPCHAIN_TAG
1144         IMG_UINT32                              ui32BridgeFlags; /* Must be first member of structure */
1145         IMG_HANDLE                              hDeviceKM;
1146         IMG_UINT32                              ui32Flags;
1147         DISPLAY_SURF_ATTRIBUTES sDstSurfAttrib;
1148         DISPLAY_SURF_ATTRIBUTES sSrcSurfAttrib;
1149         IMG_UINT32                              ui32BufferCount;
1150         IMG_UINT32                              ui32OEMFlags;
1151         IMG_UINT32                              ui32SwapChainID;
1153 } PVRSRV_BRIDGE_IN_CREATE_DISPCLASS_SWAPCHAIN;
1156 /******************************************************************************
1157  *      'bridge out' create swap chain
1158  *****************************************************************************/
1159 typedef struct PVRSRV_BRIDGE_OUT_CREATE_DISPCLASS_SWAPCHAIN_TAG
1161         PVRSRV_ERROR            eError;
1162         IMG_HANDLE                      hSwapChain;
1163         IMG_UINT32                      ui32SwapChainID;
1165 } PVRSRV_BRIDGE_OUT_CREATE_DISPCLASS_SWAPCHAIN;
1168 /******************************************************************************
1169  *      'bridge in' destroy swap chain
1170  *****************************************************************************/
1171 typedef struct PVRSRV_BRIDGE_IN_DESTROY_DISPCLASS_SWAPCHAIN_TAG
1173         IMG_UINT32                      ui32BridgeFlags; /* Must be first member of structure */
1174         IMG_HANDLE                      hDeviceKM;
1175         IMG_HANDLE                      hSwapChain;
1177 } PVRSRV_BRIDGE_IN_DESTROY_DISPCLASS_SWAPCHAIN;
1180 /******************************************************************************
1181  *      'bridge in' set DST/SRC rect
1182  *****************************************************************************/
1183 typedef struct PVRSRV_BRIDGE_IN_SET_DISPCLASS_RECT_TAG
1185         IMG_UINT32                      ui32BridgeFlags; /* Must be first member of structure */
1186         IMG_HANDLE                      hDeviceKM;
1187         IMG_HANDLE                      hSwapChain;
1188         IMG_RECT                        sRect;
1190 } PVRSRV_BRIDGE_IN_SET_DISPCLASS_RECT;
1193 /******************************************************************************
1194  *      'bridge in' set DST/SRC colourkey
1195  *****************************************************************************/
1196 typedef struct PVRSRV_BRIDGE_IN_SET_DISPCLASS_COLOURKEY_TAG
1198         IMG_UINT32                      ui32BridgeFlags; /* Must be first member of structure */
1199         IMG_HANDLE                      hDeviceKM;
1200         IMG_HANDLE                      hSwapChain;
1201         IMG_UINT32                      ui32CKColour;
1203 } PVRSRV_BRIDGE_IN_SET_DISPCLASS_COLOURKEY;
1206 /******************************************************************************
1207  *      'bridge in' get buffers (from swapchain)
1208  *****************************************************************************/
1209 typedef struct PVRSRV_BRIDGE_IN_GET_DISPCLASS_BUFFERS_TAG
1211         IMG_UINT32                      ui32BridgeFlags; /* Must be first member of structure */
1212         IMG_HANDLE                      hDeviceKM;
1213         IMG_HANDLE                      hSwapChain;
1215 } PVRSRV_BRIDGE_IN_GET_DISPCLASS_BUFFERS;
1218 /******************************************************************************
1219  *      'bridge out' get buffers (from swapchain)
1220  *****************************************************************************/
1221 typedef struct PVRSRV_BRIDGE_OUT_GET_DISPCLASS_BUFFERS_TAG
1223         PVRSRV_ERROR            eError;
1224         IMG_UINT32                      ui32BufferCount;
1225         IMG_HANDLE                      ahBuffer[PVRSRV_MAX_DC_SWAPCHAIN_BUFFERS];
1226         IMG_SYS_PHYADDR         asPhyAddr[PVRSRV_MAX_DC_SWAPCHAIN_BUFFERS];
1227 } PVRSRV_BRIDGE_OUT_GET_DISPCLASS_BUFFERS;
1230 /******************************************************************************
1231  *      'bridge in' swap to buffer
1232  *****************************************************************************/
1233 typedef struct PVRSRV_BRIDGE_IN_SWAP_DISPCLASS_TO_BUFFER_TAG
1235         IMG_UINT32                      ui32BridgeFlags; /* Must be first member of structure */
1236         IMG_HANDLE                      hDeviceKM;
1237         IMG_HANDLE                      hBuffer;
1238         IMG_UINT32                      ui32SwapInterval;
1239         IMG_HANDLE                      hPrivateTag;
1240         IMG_UINT32                      ui32ClipRectCount;
1241         IMG_RECT                        sClipRect[PVRSRV_MAX_DC_CLIP_RECTS];
1243 } PVRSRV_BRIDGE_IN_SWAP_DISPCLASS_TO_BUFFER;
1246 /******************************************************************************
1247  *      'bridge in' swap to buffer 2
1248  *****************************************************************************/
1249 typedef struct PVRSRV_BRIDGE_IN_SWAP_DISPCLASS_TO_BUFFER2_TAG
1251         IMG_UINT32                      ui32BridgeFlags; /* Must be first member of structure */
1252         IMG_HANDLE                      hDeviceKM;
1253         IMG_HANDLE                      hSwapChain;
1254         IMG_UINT32                      ui32SwapInterval;
1256         IMG_UINT32                      ui32NumMemInfos;
1257         PVRSRV_KERNEL_MEM_INFO  **ppsKernelMemInfos;
1258         PVRSRV_KERNEL_SYNC_INFO **ppsKernelSyncInfos;
1260         IMG_UINT32                      ui32PrivDataLength;
1261         IMG_PVOID                       pvPrivData;
1263 } PVRSRV_BRIDGE_IN_SWAP_DISPCLASS_TO_BUFFER2;
1266 /******************************************************************************
1267  *      'bridge out' swap to buffer 2
1268  *****************************************************************************/
1269 typedef struct PVRSRV_BRIDGE_OUT_SWAP_DISPCLASS_TO_BUFFER2_TAG
1271         PVRSRV_ERROR            eError;
1272         IMG_HANDLE                      hFence;
1274 } PVRSRV_BRIDGE_OUT_SWAP_DISPCLASS_TO_BUFFER2;
1277 /******************************************************************************
1278  *      'bridge in' swap to system buffer (primary)
1279  *****************************************************************************/
1280 typedef struct PVRSRV_BRIDGE_IN_SWAP_DISPCLASS_TO_SYSTEM_TAG
1282         IMG_UINT32                      ui32BridgeFlags; /* Must be first member of structure */
1283         IMG_HANDLE                      hDeviceKM;
1284         IMG_HANDLE                      hSwapChain;
1286 } PVRSRV_BRIDGE_IN_SWAP_DISPCLASS_TO_SYSTEM;
1289 /******************************************************************************
1290  *      'bridge in' open buffer class device
1291  *****************************************************************************/
1292 typedef struct PVRSRV_BRIDGE_IN_OPEN_BUFFERCLASS_DEVICE_TAG
1294         IMG_UINT32                      ui32BridgeFlags; /* Must be first member of structure */
1295         IMG_UINT32                      ui32DeviceID;
1296         IMG_HANDLE                      hDevCookie;
1298 } PVRSRV_BRIDGE_IN_OPEN_BUFFERCLASS_DEVICE;
1301 /******************************************************************************
1302  *      'bridge out' open buffer class device
1303  *****************************************************************************/
1304 typedef struct PVRSRV_BRIDGE_OUT_OPEN_BUFFERCLASS_DEVICE_TAG
1306         PVRSRV_ERROR eError;
1307         IMG_HANDLE                      hDeviceKM;
1309 } PVRSRV_BRIDGE_OUT_OPEN_BUFFERCLASS_DEVICE;
1312 /******************************************************************************
1313  *      'bridge out' get buffer class info
1314  *****************************************************************************/
1315 typedef struct PVRSRV_BRIDGE_OUT_GET_BUFFERCLASS_INFO_TAG
1317         PVRSRV_ERROR            eError;
1318         BUFFER_INFO                     sBufferInfo;
1320 } PVRSRV_BRIDGE_OUT_GET_BUFFERCLASS_INFO;
1323 /******************************************************************************
1324  *      'bridge in' get buffer class buffer
1325  *****************************************************************************/
1326 typedef struct PVRSRV_BRIDGE_IN_GET_BUFFERCLASS_BUFFER_TAG
1328         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
1329         IMG_HANDLE                      hDeviceKM;
1330         IMG_UINT32 ui32BufferIndex;
1332 } PVRSRV_BRIDGE_IN_GET_BUFFERCLASS_BUFFER;
1335 /******************************************************************************
1336  *      'bridge out' get buffer class buffer
1337  *****************************************************************************/
1338 typedef struct PVRSRV_BRIDGE_OUT_GET_BUFFERCLASS_BUFFER_TAG
1340         PVRSRV_ERROR eError;
1341         IMG_HANDLE                      hBuffer;
1343 } PVRSRV_BRIDGE_OUT_GET_BUFFERCLASS_BUFFER;
1346 /******************************************************************************
1347  *      'bridge out' get heap info
1348  *****************************************************************************/
1349 typedef struct PVRSRV_BRIDGE_OUT_GET_DEVMEM_HEAPINFO_TAG
1351         PVRSRV_ERROR            eError;
1352         IMG_UINT32                      ui32ClientHeapCount;
1353         PVRSRV_HEAP_INFO        sHeapInfo[PVRSRV_MAX_CLIENT_HEAPS];
1355 } PVRSRV_BRIDGE_OUT_GET_DEVMEM_HEAPINFO;
1358 /******************************************************************************
1359  *      'bridge out' create device memory context
1360  *****************************************************************************/
1361 typedef struct PVRSRV_BRIDGE_OUT_CREATE_DEVMEMCONTEXT_TAG
1363         PVRSRV_ERROR            eError;
1364         IMG_HANDLE                      hDevMemContext;
1365         IMG_UINT32                      ui32ClientHeapCount;
1366         PVRSRV_HEAP_INFO        sHeapInfo[PVRSRV_MAX_CLIENT_HEAPS];
1368 } PVRSRV_BRIDGE_OUT_CREATE_DEVMEMCONTEXT;
1371 /******************************************************************************
1372  *      'bridge out' create device memory context
1373  *****************************************************************************/
1374 typedef struct PVRSRV_BRIDGE_OUT_CREATE_DEVMEMHEAP_TAG
1376         PVRSRV_ERROR            eError;
1377         IMG_HANDLE                      hDevMemHeap;
1379 } PVRSRV_BRIDGE_OUT_CREATE_DEVMEMHEAP;
1382 /******************************************************************************
1383  *      'bridge out' alloc device memory
1384  *****************************************************************************/
1385 typedef struct PVRSRV_BRIDGE_OUT_ALLOCDEVICEMEM_TAG
1387         PVRSRV_ERROR            eError;
1388         PVRSRV_KERNEL_MEM_INFO  *psKernelMemInfo;
1389         PVRSRV_CLIENT_MEM_INFO  sClientMemInfo;
1390         PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo;
1392 } PVRSRV_BRIDGE_OUT_ALLOCDEVICEMEM;
1395 /******************************************************************************
1396  *      'bridge out' export device memory
1397  *****************************************************************************/
1398 typedef struct PVRSRV_BRIDGE_OUT_EXPORTDEVICEMEM_TAG
1400         PVRSRV_ERROR                    eError;
1401         IMG_HANDLE                              hMemInfo;
1402 #if defined(SUPPORT_MEMINFO_IDS)
1403         IMG_UINT64                              ui64Stamp;
1404 #endif
1406 } PVRSRV_BRIDGE_OUT_EXPORTDEVICEMEM;
1409 /******************************************************************************
1410  *      'bridge out' map ion handle
1411  *****************************************************************************/
1412 typedef struct _PVRSRV_BRIDGE_OUT_MAP_ION_HANDLE_
1414         PVRSRV_ERROR            eError;
1415         PVRSRV_KERNEL_MEM_INFO  *psKernelMemInfo;
1416         PVRSRV_CLIENT_MEM_INFO  sClientMemInfo;
1417         PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo;
1418         IMG_SIZE_T                              uiIonBufferSize;
1420 } PVRSRV_BRIDGE_OUT_MAP_ION_HANDLE;
1423 /******************************************************************************
1424  *      'bridge out' map meminfo to user mode
1425  *****************************************************************************/
1426 typedef struct PVRSRV_BRIDGE_OUT_MAPMEMINFOTOUSER_TAG
1428         PVRSRV_ERROR                    eError;
1429         IMG_PVOID                               pvLinAddr;
1430         IMG_HANDLE                              hMappingInfo;
1432 }PVRSRV_BRIDGE_OUT_MAPMEMINFOTOUSER;
1435 /******************************************************************************
1436  *      'bridge out' get free device memory
1437  *****************************************************************************/
1438 typedef struct PVRSRV_BRIDGE_OUT_GETFREEDEVICEMEM_TAG
1440         PVRSRV_ERROR eError;
1441         IMG_SIZE_T uTotal;
1442         IMG_SIZE_T uFree;
1443         IMG_SIZE_T uLargestBlock;
1445 } PVRSRV_BRIDGE_OUT_GETFREEDEVICEMEM;
1448 //#ifdef LINUX
1449 /******************************************************************************
1450  *      'bridge out' get full map data
1451  *****************************************************************************/
1452 #include "pvrmmap.h"
1453 typedef struct PVRSRV_BRIDGE_OUT_MHANDLE_TO_MMAP_DATA_TAG
1455     PVRSRV_ERROR                eError;
1457     /* This is a the offset you should pass to mmap(2) so that
1458      * the driver can look up the full details for the mapping
1459      * request. */
1460      IMG_UINTPTR_T              uiMMapOffset;
1462     /* This is the byte offset you should add to the mapping you
1463      * get from mmap */
1464     IMG_UINTPTR_T               uiByteOffset;
1466     /* This is the real size of the mapping that will be created
1467      * which should be passed to mmap _and_ munmap. */
1468     IMG_SIZE_T                  uiRealByteSize;
1470     /* User mode address associated with mapping */
1471     IMG_UINTPTR_T       uiUserVAddr;
1473 } PVRSRV_BRIDGE_OUT_MHANDLE_TO_MMAP_DATA;
1475 typedef struct PVRSRV_BRIDGE_OUT_RELEASE_MMAP_DATA_TAG
1477     PVRSRV_ERROR                eError;
1479     /* Flag that indicates whether the mapping should be destroyed */
1480     IMG_BOOL                    bMUnmap;
1482     /* User mode address associated with mapping */
1483     IMG_UINTPTR_T               uiUserVAddr;
1485     /* Size of mapping */
1486     IMG_SIZE_T                  uiRealByteSize;
1487 } PVRSRV_BRIDGE_OUT_RELEASE_MMAP_DATA;
1488 //#endif
1490 typedef struct PVRSRV_BRIDGE_IN_COMPAT_CHECK
1492         IMG_UINT32              ui32BridgeFlags; /* Must be first member of structure */
1493         IMG_UINT32              ui32DDKVersion;
1494         IMG_UINT32              ui32DDKBuild;
1496 } PVRSRV_BRIDGE_IN_COMPAT_CHECK;
1498 /******************************************************************************
1499  *      'bridge in' get misc info
1500  *****************************************************************************/
1501 typedef struct PVRSRV_BRIDGE_IN_GET_MISC_INFO_TAG
1503         IMG_UINT32                      ui32BridgeFlags; /* Must be first member of structure */
1504         PVRSRV_MISC_INFO        sMiscInfo;
1506 }PVRSRV_BRIDGE_IN_GET_MISC_INFO;
1509 /******************************************************************************
1510  *      'bridge out' get misc info
1511  *****************************************************************************/
1512 typedef struct PVRSRV_BRIDGE_OUT_GET_MISC_INFO_TAG
1514         PVRSRV_ERROR            eError;
1515         PVRSRV_MISC_INFO        sMiscInfo;
1517 }PVRSRV_BRIDGE_OUT_GET_MISC_INFO;
1520 /******************************************************************************
1521  *      'bridge in' get misc info
1522  *****************************************************************************/
1523 typedef struct PVRSRV_BRIDGE_IN_RELEASE_MISC_INFO_TAG
1525         IMG_UINT32                      ui32BridgeFlags; /* Must be first member of structure */
1526         PVRSRV_MISC_INFO        sMiscInfo;
1528 }PVRSRV_BRIDGE_IN_RELEASE_MISC_INFO;
1531 /******************************************************************************
1532  *      'bridge out' get misc info
1533  *****************************************************************************/
1534 typedef struct PVRSRV_BRIDGE_OUT_RELEASE_MISC_INFO_TAG
1536         PVRSRV_ERROR            eError;
1537         PVRSRV_MISC_INFO        sMiscInfo;
1539 }PVRSRV_BRIDGE_OUT_RELEASE_MISC_INFO;
1542 /******************************************************************************
1543  *      'bridge out' PDUMP is capturing
1544  *****************************************************************************/
1546 typedef struct PVRSRV_BRIDGE_OUT_PDUMP_ISCAPTURING_TAG
1548         PVRSRV_ERROR eError;
1549         IMG_BOOL bIsCapturing;
1551 } PVRSRV_BRIDGE_OUT_PDUMP_ISCAPTURING;
1553 /******************************************************************************
1554  *      'bridge in' get FB mem stats
1555  *****************************************************************************/
1556 typedef struct PVRSRV_BRIDGE_IN_GET_FB_STATS_TAG
1558         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
1559         IMG_SIZE_T uTotal;
1560         IMG_SIZE_T uAvailable;
1562 } PVRSRV_BRIDGE_IN_GET_FB_STATS;
1565 /******************************************************************************
1566  *      'bridge in' Map CPU Physical to User Space
1567  *****************************************************************************/
1568 typedef struct PVRSRV_BRIDGE_IN_MAPPHYSTOUSERSPACE_TAG
1570         IMG_UINT32                      ui32BridgeFlags; /* Must be first member of structure */
1571         IMG_HANDLE                      hDevCookie;
1572         IMG_SYS_PHYADDR         sSysPhysAddr;
1573         IMG_UINT32                      uiSizeInBytes;
1575 } PVRSRV_BRIDGE_IN_MAPPHYSTOUSERSPACE;
1578 /******************************************************************************
1579  *      'bridge out' Map CPU Physical to User Space
1580  *****************************************************************************/
1581 typedef struct PVRSRV_BRIDGE_OUT_MAPPHYSTOUSERSPACE_TAG
1583         IMG_PVOID                       pvUserAddr;
1584         IMG_UINT32                      uiActualSize;
1585         IMG_PVOID                       pvProcess;
1587 } PVRSRV_BRIDGE_OUT_MAPPHYSTOUSERSPACE;
1590 /******************************************************************************
1591  *      'bridge in' Unmap CPU Physical to User Space
1592  *****************************************************************************/
1593 typedef struct PVRSRV_BRIDGE_IN_UNMAPPHYSTOUSERSPACE_TAG
1595         IMG_UINT32                      ui32BridgeFlags; /* Must be first member of structure */
1596         IMG_HANDLE                      hDevCookie;
1597         IMG_PVOID                       pvUserAddr;
1598         IMG_PVOID                       pvProcess;
1600 } PVRSRV_BRIDGE_IN_UNMAPPHYSTOUSERSPACE;
1603 /******************************************************************************
1604  *      'bridge out' Get user space pointer to Phys to Lin lookup table
1605  *****************************************************************************/
1606 typedef struct PVRSRV_BRIDGE_OUT_GETPHYSTOUSERSPACEMAP_TAG
1608         IMG_PVOID                       *ppvTbl;
1609         IMG_UINT32                      uiTblSize;
1611 } PVRSRV_BRIDGE_OUT_GETPHYSTOUSERSPACEMAP;
1614 /******************************************************************************
1615  *      'bridge in' Register RTSIM process thread
1616  *****************************************************************************/
1617 typedef struct PVRSRV_BRIDGE_IN_REGISTER_SIM_PROCESS_TAG
1619         IMG_UINT32                      ui32BridgeFlags; /* Must be first member of structure */
1620         IMG_HANDLE                      hDevCookie;
1621         IMG_PVOID                       pvProcess;
1623 } PVRSRV_BRIDGE_IN_REGISTER_SIM_PROCESS;
1626 /******************************************************************************
1627  *      'bridge out' Register RTSIM process thread
1628  *****************************************************************************/
1629 typedef struct PVRSRV_BRIDGE_OUT_REGISTER_SIM_PROCESS_TAG
1631         IMG_SYS_PHYADDR         sRegsPhysBase;                  /*!< Physical address of current device register */
1632         IMG_VOID                        *pvRegsBase;                    /*!< User mode linear address of SGX device registers */
1633         IMG_PVOID                       pvProcess;
1634         IMG_UINT32                      ulNoOfEntries;
1635         IMG_PVOID                       pvTblLinAddr;
1637 } PVRSRV_BRIDGE_OUT_REGISTER_SIM_PROCESS;
1640 /******************************************************************************
1641  *      'bridge in' Unregister RTSIM process thread
1642  *****************************************************************************/
1643 typedef struct PVRSRV_BRIDGE_IN_UNREGISTER_SIM_PROCESS_TAG
1645         IMG_UINT32                      ui32BridgeFlags; /* Must be first member of structure */
1646         IMG_HANDLE                      hDevCookie;
1647         IMG_PVOID                       pvProcess;
1648         IMG_VOID                        *pvRegsBase;                    /*!< User mode linear address of SGX device registers */
1650 } PVRSRV_BRIDGE_IN_UNREGISTER_SIM_PROCESS;
1652 /******************************************************************************
1653  *      'bridge in' process simulator ISR event
1654  *****************************************************************************/
1655 typedef struct PVRSRV_BRIDGE_IN_PROCESS_SIMISR_EVENT_TAG
1657         IMG_UINT32                      ui32BridgeFlags; /* Must be first member of structure */
1658         IMG_HANDLE                      hDevCookie;
1659         IMG_UINT32                      ui32StatusAndMask;
1660         PVRSRV_ERROR            eError;
1662 } PVRSRV_BRIDGE_IN_PROCESS_SIMISR_EVENT;
1664 /******************************************************************************
1665  *      'bridge in' initialisation server disconnect
1666  *****************************************************************************/
1667 typedef struct PVRSRV_BRIDGE_IN_INITSRV_DISCONNECT_TAG
1669         IMG_UINT32                      ui32BridgeFlags; /* Must be first member of structure */
1670         IMG_BOOL                        bInitSuccesful;
1671 } PVRSRV_BRIDGE_IN_INITSRV_DISCONNECT;
1674 typedef struct PVRSRV_BRIDGE_IN_ALLOC_SHARED_SYS_MEM_TAG
1676         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
1677     IMG_UINT32 ui32Flags;
1678     IMG_SIZE_T uSize;
1679 }PVRSRV_BRIDGE_IN_ALLOC_SHARED_SYS_MEM;
1681 typedef struct PVRSRV_BRIDGE_OUT_ALLOC_SHARED_SYS_MEM_TAG
1683         PVRSRV_ERROR            eError;
1684         PVRSRV_KERNEL_MEM_INFO  *psKernelMemInfo;
1685         PVRSRV_CLIENT_MEM_INFO  sClientMemInfo;
1686 }PVRSRV_BRIDGE_OUT_ALLOC_SHARED_SYS_MEM;
1688 typedef struct PVRSRV_BRIDGE_IN_FREE_SHARED_SYS_MEM_TAG
1690         IMG_UINT32              ui32BridgeFlags; /* Must be first member of structure */
1691         PVRSRV_KERNEL_MEM_INFO  *psKernelMemInfo;
1692         PVRSRV_CLIENT_MEM_INFO  sClientMemInfo;
1693 }PVRSRV_BRIDGE_IN_FREE_SHARED_SYS_MEM;
1695 typedef struct PVRSRV_BRIDGE_OUT_FREE_SHARED_SYS_MEM_TAG
1697         PVRSRV_ERROR eError;
1698 }PVRSRV_BRIDGE_OUT_FREE_SHARED_SYS_MEM;
1700 typedef struct PVRSRV_BRIDGE_IN_MAP_MEMINFO_MEM_TAG
1702         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
1703         IMG_HANDLE hKernelMemInfo;
1704 }PVRSRV_BRIDGE_IN_MAP_MEMINFO_MEM;
1706 typedef struct PVRSRV_BRIDGE_OUT_MAP_MEMINFO_MEM_TAG
1708         PVRSRV_CLIENT_MEM_INFO  sClientMemInfo;
1709         PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo;
1710         PVRSRV_KERNEL_MEM_INFO  *psKernelMemInfo;
1711         PVRSRV_ERROR eError;
1712 }PVRSRV_BRIDGE_OUT_MAP_MEMINFO_MEM;
1714 typedef struct PVRSRV_BRIDGE_IN_UNMAP_MEMINFO_MEM_TAG
1716         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
1717         PVRSRV_CLIENT_MEM_INFO sClientMemInfo;
1718 }PVRSRV_BRIDGE_IN_UNMAP_MEMINFO_MEM;
1720 typedef struct PVRSRV_BRIDGE_OUT_UNMAP_MEMINFO_MEM_TAG
1722         PVRSRV_ERROR eError;
1723 }PVRSRV_BRIDGE_OUT_UNMAP_MEMINFO_MEM;
1725 typedef struct PVRSRV_BRIDGE_IN_EVENT_OBJECT_WAI_TAG
1727         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
1728         IMG_HANDLE      hOSEventKM;
1729 } PVRSRV_BRIDGE_IN_EVENT_OBJECT_WAIT;
1731 typedef struct PVRSRV_BRIDGE_IN_EVENT_OBJECT_OPEN_TAG
1733         PVRSRV_EVENTOBJECT sEventObject;
1734 } PVRSRV_BRIDGE_IN_EVENT_OBJECT_OPEN;
1736 typedef struct  PVRSRV_BRIDGE_OUT_EVENT_OBJECT_OPEN_TAG
1738         IMG_HANDLE hOSEvent;
1739         PVRSRV_ERROR eError;
1740 } PVRSRV_BRIDGE_OUT_EVENT_OBJECT_OPEN;
1742 typedef struct PVRSRV_BRIDGE_IN_EVENT_OBJECT_CLOSE_TAG
1744         PVRSRV_EVENTOBJECT sEventObject;
1745         IMG_HANDLE hOSEventKM;
1746 } PVRSRV_BRIDGE_IN_EVENT_OBJECT_CLOSE;
1748 typedef struct PVRSRV_BRIDGE_OUT_CREATE_SYNC_INFO_MOD_OBJ_TAG
1750         PVRSRV_ERROR eError;
1752         IMG_HANDLE hKernelSyncInfoModObj;
1754 } PVRSRV_BRIDGE_OUT_CREATE_SYNC_INFO_MOD_OBJ;
1756 typedef struct PVRSRV_BRIDGE_IN_DESTROY_SYNC_INFO_MOD_OBJ
1758         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
1759         IMG_HANDLE hKernelSyncInfoModObj;
1760 } PVRSRV_BRIDGE_IN_DESTROY_SYNC_INFO_MOD_OBJ;
1762 typedef struct PVRSRV_BRIDGE_IN_MODIFY_PENDING_SYNC_OPS_TAG
1764         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
1765         IMG_HANDLE hKernelSyncInfoModObj;
1766         IMG_HANDLE hKernelSyncInfo;
1767         IMG_UINT32 ui32ModifyFlags;
1769 } PVRSRV_BRIDGE_IN_MODIFY_PENDING_SYNC_OPS;
1771 typedef struct PVRSRV_BRIDGE_IN_MODIFY_COMPLETE_SYNC_OPS_TAG
1773         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
1774         IMG_HANDLE hKernelSyncInfoModObj;
1775 } PVRSRV_BRIDGE_IN_MODIFY_COMPLETE_SYNC_OPS;
1777 typedef struct PVRSRV_BRIDGE_OUT_MODIFY_PENDING_SYNC_OPS_TAG
1779         PVRSRV_ERROR eError;
1781         /* The following variable are used to return the PRE-INCREMENTED op vals */
1782         IMG_UINT32 ui32ReadOpsPending;
1783         IMG_UINT32 ui32WriteOpsPending;
1784         IMG_UINT32 ui32ReadOps2Pending;
1786 } PVRSRV_BRIDGE_OUT_MODIFY_PENDING_SYNC_OPS;
1788 typedef struct PVRSRV_BRIDGE_IN_SYNC_OPS_TAKE_TOKEN_TAG
1790         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
1791         IMG_HANDLE hKernelSyncInfo;
1793 } PVRSRV_BRIDGE_IN_SYNC_OPS_TAKE_TOKEN;
1795 typedef struct PVRSRV_BRIDGE_OUT_SYNC_OPS_TAKE_TOKEN_TAG
1797         PVRSRV_ERROR eError;
1799         IMG_UINT32 ui32ReadOpsPending;
1800         IMG_UINT32 ui32WriteOpsPending;
1801         IMG_UINT32 ui32ReadOps2Pending;
1803 } PVRSRV_BRIDGE_OUT_SYNC_OPS_TAKE_TOKEN;
1805 typedef struct PVRSRV_BRIDGE_IN_SYNC_OPS_FLUSH_TO_TOKEN_TAG
1807         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
1808         IMG_HANDLE hKernelSyncInfo;
1809         IMG_UINT32 ui32ReadOpsPendingSnapshot;
1810         IMG_UINT32 ui32WriteOpsPendingSnapshot;
1811         IMG_UINT32 ui32ReadOps2PendingSnapshot;
1812 } PVRSRV_BRIDGE_IN_SYNC_OPS_FLUSH_TO_TOKEN;
1814 typedef struct PVRSRV_BRIDGE_IN_SYNC_OPS_FLUSH_TO_MOD_OBJ_TAG
1816         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
1817         IMG_HANDLE hKernelSyncInfoModObj;
1818 } PVRSRV_BRIDGE_IN_SYNC_OPS_FLUSH_TO_MOD_OBJ;
1820 typedef struct PVRSRV_BRIDGE_IN_SYNC_OPS_FLUSH_TO_DELTA_TAG
1822         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
1823         IMG_HANDLE hKernelSyncInfo;
1824         IMG_UINT32 ui32Delta;
1825 } PVRSRV_BRIDGE_IN_SYNC_OPS_FLUSH_TO_DELTA;
1827 typedef struct PVRSRV_BRIDGE_IN_ALLOC_SYNC_INFO_TAG
1829         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
1831         IMG_HANDLE hDevCookie;
1832 } PVRSRV_BRIDGE_IN_ALLOC_SYNC_INFO;
1834 typedef struct PVRSRV_BRIDGE_OUT_ALLOC_SYNC_INFO_TAG
1836         PVRSRV_ERROR eError;
1838         IMG_HANDLE hKernelSyncInfo;
1839 } PVRSRV_BRIDGE_OUT_ALLOC_SYNC_INFO;
1841 typedef struct PVRSRV_BRIDGE_IN_FREE_SYNC_INFO_TAG
1843         IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */
1845         IMG_HANDLE hKernelSyncInfo;
1846 } PVRSRV_BRIDGE_IN_FREE_SYNC_INFO;
1848 typedef struct PVRSRV_BRIDGE_IN_CHG_DEV_MEM_ATTRIBS_TAG
1850         IMG_SID                         hKernelMemInfo;
1851         IMG_UINT32                      ui32Attribs;
1852 } PVRSRV_BRIDGE_IN_CHG_DEV_MEM_ATTRIBS;
1855 #if defined (__cplusplus)
1857 #endif
1859 #endif /* __PVR_BRIDGE_H__ */
1861 /******************************************************************************
1862  End of file (pvr_bridge.h)
1863 ******************************************************************************/