1 /**********************************************************************
3 * Copyright(c) 2008 Imagination Technologies Ltd. All rights reserved.
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms and conditions of the GNU General Public License,
7 * version 2, as published by the Free Software Foundation.
9 * This program is distributed in the hope it will be useful but, except
10 * as otherwise stated in writing, without any warranty; without even the
11 * implied warranty of merchantability or fitness for a particular purpose.
12 * See the GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License along with
15 * this program; if not, write to the Free Software Foundation, Inc.,
16 * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
18 * The full GNU General Public License is included in this distribution in
19 * the file called "COPYING".
21 * Contact Information:
22 * Imagination Technologies Ltd. <gpl-support@imgtec.com>
23 * Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK
25 ******************************************************************************/
27 #ifndef __PVR_BRIDGE_KM_H_
28 #define __PVR_BRIDGE_KM_H_
31 #include "pvr_bridge.h"
34 PVRSRV_ERROR LinuxBridgeInit(IMG_VOID);
35 IMG_VOID LinuxBridgeDeInit(IMG_VOID);
38 PVRSRV_ERROR IMG_CALLCONV PVRSRVEnumerateDevicesKM(IMG_UINT32 *
40 PVRSRV_DEVICE_IDENTIFIER
44 PVRSRV_ERROR IMG_CALLCONV PVRSRVAcquireDeviceDataKM(IMG_UINT32
52 PVRSRV_ERROR IMG_CALLCONV PVRSRVCreateCommandQueueKM(IMG_UINT32
59 PVRSRV_ERROR IMG_CALLCONV
60 PVRSRVDestroyCommandQueueKM(PVRSRV_QUEUE_INFO * psQueueInfo);
63 PVRSRV_ERROR IMG_CALLCONV PVRSRVGetDeviceMemHeapsKM(IMG_HANDLE
69 PVRSRV_ERROR IMG_CALLCONV PVRSRVCreateDeviceMemContextKM(IMG_HANDLE
71 PVRSRV_PER_PROCESS_DATA
91 PVRSRV_ERROR IMG_CALLCONV PVRSRVDestroyDeviceMemContextKM(IMG_HANDLE
99 PVRSRV_ERROR IMG_CALLCONV PVRSRVGetDeviceMemHeapInfoKM(IMG_HANDLE
104 pui32ClientHeapCount,
113 PVRSRV_ERROR IMG_CALLCONV PVRSRVAllocDeviceMemKM(IMG_HANDLE
115 PVRSRV_PER_PROCESS_DATA
125 PVRSRV_KERNEL_MEM_INFO
129 PVRSRV_ERROR IMG_CALLCONV PVRSRVFreeDeviceMemKM(IMG_HANDLE
131 PVRSRV_KERNEL_MEM_INFO
135 PVRSRV_ERROR IMG_CALLCONV PVRSRVDissociateDeviceMemKM(IMG_HANDLE
137 PVRSRV_KERNEL_MEM_INFO
141 PVRSRV_ERROR IMG_CALLCONV PVRSRVReserveDeviceVirtualMemKM(IMG_HANDLE
150 PVRSRV_KERNEL_MEM_INFO
155 PVRSRV_ERROR IMG_CALLCONV
156 PVRSRVFreeDeviceVirtualMemKM(PVRSRV_KERNEL_MEM_INFO * psMemInfo);
159 PVRSRV_ERROR IMG_CALLCONV
160 PVRSRVMapDeviceMemoryKM(PVRSRV_PER_PROCESS_DATA * psPerProc,
161 PVRSRV_KERNEL_MEM_INFO * psSrcMemInfo,
162 IMG_HANDLE hDstDevMemHeap,
163 PVRSRV_KERNEL_MEM_INFO ** ppsDstMemInfo);
166 PVRSRV_ERROR IMG_CALLCONV
167 PVRSRVUnmapDeviceMemoryKM(PVRSRV_KERNEL_MEM_INFO * psMemInfo);
170 PVRSRV_ERROR IMG_CALLCONV PVRSRVWrapExtMemoryKM(IMG_HANDLE
172 PVRSRV_PER_PROCESS_DATA
184 PVRSRV_KERNEL_MEM_INFO
188 PVRSRV_ERROR IMG_CALLCONV
189 PVRSRVIsWrappedExtMemoryKM(IMG_HANDLE hDevCookie,
190 PVRSRV_PER_PROCESS_DATA *psPerProc,
191 IMG_UINT32 *pui32ByteSize,
192 IMG_VOID **pvLinAddr);
195 PVRSRV_ERROR IMG_CALLCONV
196 PVRSRVUnwrapExtMemoryKM(PVRSRV_KERNEL_MEM_INFO * psMemInfo);
199 PVRSRV_ERROR PVRSRVEnumerateDCKM(PVRSRV_DEVICE_CLASS DeviceClass,
200 IMG_UINT32 * pui32DevCount,
201 IMG_UINT32 * pui32DevID);
204 PVRSRV_ERROR PVRSRVOpenDCDeviceKM(PVRSRV_PER_PROCESS_DATA *
206 IMG_UINT32 ui32DeviceID,
207 IMG_HANDLE hDevCookie,
208 IMG_HANDLE * phDeviceKM);
211 PVRSRV_ERROR PVRSRVCloseDCDeviceKM(IMG_HANDLE hDeviceKM,
212 IMG_BOOL bResManCallback);
215 PVRSRV_ERROR PVRSRVEnumDCFormatsKM(IMG_HANDLE hDeviceKM,
216 IMG_UINT32 * pui32Count,
217 DISPLAY_FORMAT * psFormat);
220 PVRSRV_ERROR PVRSRVEnumDCDimsKM(IMG_HANDLE hDeviceKM,
221 DISPLAY_FORMAT * psFormat,
222 IMG_UINT32 * pui32Count,
223 DISPLAY_DIMS * psDim);
226 PVRSRV_ERROR PVRSRVGetDCSystemBufferKM(IMG_HANDLE hDeviceKM,
227 IMG_HANDLE * phBuffer);
230 PVRSRV_ERROR PVRSRVGetDCInfoKM(IMG_HANDLE hDeviceKM,
231 DISPLAY_INFO * psDisplayInfo);
233 PVRSRV_ERROR PVRSRVCreateDCSwapChainKM(PVRSRV_PER_PROCESS_DATA *
235 IMG_HANDLE hDeviceKM,
236 IMG_UINT32 ui32Flags,
237 DISPLAY_SURF_ATTRIBUTES *
239 DISPLAY_SURF_ATTRIBUTES *
241 IMG_UINT32 ui32BufferCount,
242 IMG_UINT32 ui32OEMFlags,
243 IMG_HANDLE * phSwapChain,
246 IMG_IMPORT PVRSRV_ERROR PVRSRVDestroyDCSwapChainKM(IMG_HANDLE
248 IMG_IMPORT PVRSRV_ERROR PVRSRVSetDCDstRectKM(IMG_HANDLE hDeviceKM,
249 IMG_HANDLE hSwapChain,
251 IMG_IMPORT PVRSRV_ERROR PVRSRVSetDCSrcRectKM(IMG_HANDLE hDeviceKM,
252 IMG_HANDLE hSwapChain,
254 IMG_IMPORT PVRSRV_ERROR PVRSRVSetDCDstColourKeyKM(IMG_HANDLE hDeviceKM,
259 IMG_IMPORT PVRSRV_ERROR PVRSRVSetDCSrcColourKeyKM(IMG_HANDLE hDeviceKM,
264 IMG_IMPORT PVRSRV_ERROR PVRSRVGetDCBuffersKM(IMG_HANDLE hDeviceKM,
265 IMG_HANDLE hSwapChain,
268 IMG_HANDLE * phBuffer);
269 IMG_IMPORT PVRSRV_ERROR PVRSRVSwapToDCBufferKM(IMG_HANDLE hDeviceKM,
273 IMG_HANDLE hPrivateTag,
276 IMG_RECT * psClipRect);
277 IMG_IMPORT PVRSRV_ERROR PVRSRVSwapToDCSystemKM(IMG_HANDLE hDeviceKM,
278 IMG_HANDLE hSwapChain);
281 PVRSRV_ERROR PVRSRVOpenBCDeviceKM(PVRSRV_PER_PROCESS_DATA *
283 IMG_UINT32 ui32DeviceID,
284 IMG_HANDLE hDevCookie,
285 IMG_HANDLE * phDeviceKM);
286 IMG_IMPORT PVRSRV_ERROR PVRSRVCloseBCDeviceKM(IMG_HANDLE hDeviceKM,
291 PVRSRV_ERROR PVRSRVGetBCInfoKM(IMG_HANDLE hDeviceKM,
292 BUFFER_INFO * psBufferInfo);
294 PVRSRV_ERROR PVRSRVGetBCBufferKM(IMG_HANDLE hDeviceKM,
295 IMG_UINT32 ui32BufferIndex,
296 IMG_HANDLE * phBuffer);
299 PVRSRV_ERROR IMG_CALLCONV
300 PVRSRVMapDeviceClassMemoryKM(PVRSRV_PER_PROCESS_DATA * psPerProc,
301 IMG_HANDLE hDeviceClassBuffer,
302 PVRSRV_KERNEL_MEM_INFO ** ppsMemInfo,
303 IMG_HANDLE * phOSMapInfo);
306 PVRSRV_ERROR IMG_CALLCONV
307 PVRSRVUnmapDeviceClassMemoryKM(PVRSRV_KERNEL_MEM_INFO * psMemInfo);
310 PVRSRV_ERROR IMG_CALLCONV PVRSRVGetFreeDeviceMemKM(IMG_UINT32
318 IMG_IMPORT PVRSRV_ERROR IMG_CALLCONV PVRSRVAllocSyncInfoKM(IMG_HANDLE
322 PVRSRV_KERNEL_SYNC_INFO
325 IMG_IMPORT PVRSRV_ERROR IMG_CALLCONV
326 PVRSRVFreeSyncInfoKM(PVRSRV_KERNEL_SYNC_INFO * psKernelSyncInfo);
329 PVRSRV_ERROR IMG_CALLCONV PVRSRVGetMiscInfoKM(PVRSRV_MISC_INFO *
332 PVRSRV_ERROR PVRSRVGetFBStatsKM(IMG_UINT32 * pui32Total,
333 IMG_UINT32 * pui32Available);
335 IMG_IMPORT PVRSRV_ERROR
336 PVRSRVAllocSharedSysMemoryKM(PVRSRV_PER_PROCESS_DATA * psPerProc,
337 IMG_UINT32 ui32Flags,
339 PVRSRV_KERNEL_MEM_INFO **
342 IMG_IMPORT PVRSRV_ERROR
343 PVRSRVFreeSharedSysMemoryKM(PVRSRV_KERNEL_MEM_INFO *
346 IMG_IMPORT PVRSRV_ERROR
347 PVRSRVDissociateMemFromResmanKM(PVRSRV_KERNEL_MEM_INFO *