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
293 {
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
304 {
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
325 {
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
334 {
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
346 {
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
356 {
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
366 {
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
376 {
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
386 {
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
396 {
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
406 {
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
416 {
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
427 {
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
439 {
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
451 {
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
462 {
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
474 {
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
494 {
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
504 {
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
516 {
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
528 {
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_
541 {
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
557 {
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
566 {
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
576 {
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
588 {
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
600 {
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
610 {
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
620 {
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
633 {
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
642 {
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
656 {
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
669 {
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
681 {
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
694 {
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
707 {
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
719 {
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
731 {
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
743 {
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
757 {
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
770 {
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
785 {
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
800 {
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
816 {
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
830 {
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
843 {
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
856 {
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
867 {
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
884 {
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
896 {
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
908 {
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
930 {
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
946 {
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
954 {
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
965 {
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
980 {
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
992 {
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
1004 {
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
1016 {
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
1027 {
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
1038 {
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
1056 {
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
1067 {
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
1085 {
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
1097 {
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
1109 {
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
1121 {
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
1132 {
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
1143 {
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
1160 {
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
1172 {
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
1184 {
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
1197 {
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
1210 {
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
1222 {
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
1234 {
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
1250 {
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
1270 {
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
1281 {
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
1293 {
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
1305 {
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
1316 {
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
1327 {
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
1339 {
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
1350 {
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
1362 {
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
1375 {
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
1386 {
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
1399 {
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_
1413 {
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
1427 {
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
1439 {
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
1454 {
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
1476 {
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
1491 {
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
1502 {
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
1513 {
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
1524 {
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
1535 {
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
1547 {
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
1557 {
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
1569 {
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
1582 {
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
1594 {
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
1607 {
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
1618 {
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
1630 {
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
1644 {
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
1656 {
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
1668 {
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
1675 {
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
1682 {
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
1689 {
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
1696 {
1697 PVRSRV_ERROR eError;
1698 }PVRSRV_BRIDGE_OUT_FREE_SHARED_SYS_MEM;
1700 typedef struct PVRSRV_BRIDGE_IN_MAP_MEMINFO_MEM_TAG
1701 {
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
1707 {
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
1715 {
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
1721 {
1722 PVRSRV_ERROR eError;
1723 }PVRSRV_BRIDGE_OUT_UNMAP_MEMINFO_MEM;
1725 typedef struct PVRSRV_BRIDGE_IN_EVENT_OBJECT_WAI_TAG
1726 {
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
1732 {
1733 PVRSRV_EVENTOBJECT sEventObject;
1734 } PVRSRV_BRIDGE_IN_EVENT_OBJECT_OPEN;
1736 typedef struct PVRSRV_BRIDGE_OUT_EVENT_OBJECT_OPEN_TAG
1737 {
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
1743 {
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
1749 {
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
1757 {
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
1763 {
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
1772 {
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
1778 {
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
1789 {
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
1796 {
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
1806 {
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
1815 {
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
1821 {
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
1828 {
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
1835 {
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
1842 {
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
1849 {
1850 IMG_SID hKernelMemInfo;
1851 IMG_UINT32 ui32Attribs;
1852 } PVRSRV_BRIDGE_IN_CHG_DEV_MEM_ATTRIBS;
1855 #if defined (__cplusplus)
1856 }
1857 #endif
1859 #endif /* __PVR_BRIDGE_H__ */
1861 /******************************************************************************
1862 End of file (pvr_bridge.h)
1863 ******************************************************************************/