1
/**********************************************************************
3
* Copyright (C) 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_
30
#if defined (__cplusplus)
34
#include "pvr_bridge.h"
37
#if defined(__linux__)
38
PVRSRV_ERROR LinuxBridgeInit(IMG_VOID);
39
IMG_VOID LinuxBridgeDeInit(IMG_VOID);
43
PVRSRV_ERROR IMG_CALLCONV PVRSRVEnumerateDevicesKM(IMG_UINT32 *pui32NumDevices,
44
PVRSRV_DEVICE_IDENTIFIER *psDevIdList);
47
PVRSRV_ERROR IMG_CALLCONV PVRSRVAcquireDeviceDataKM(IMG_UINT32 uiDevIndex,
48
PVRSRV_DEVICE_TYPE eDeviceType,
49
IMG_HANDLE *phDevCookie);
52
PVRSRV_ERROR IMG_CALLCONV PVRSRVCreateCommandQueueKM(IMG_SIZE_T ui32QueueSize,
53
PVRSRV_QUEUE_INFO **ppsQueueInfo);
56
PVRSRV_ERROR IMG_CALLCONV PVRSRVDestroyCommandQueueKM(PVRSRV_QUEUE_INFO *psQueueInfo);
59
PVRSRV_ERROR IMG_CALLCONV PVRSRVGetDeviceMemHeapsKM(IMG_HANDLE hDevCookie,
60
#if defined (SUPPORT_SID_INTERFACE)
61
PVRSRV_HEAP_INFO_KM *psHeapInfo);
63
PVRSRV_HEAP_INFO *psHeapInfo);
67
PVRSRV_ERROR IMG_CALLCONV PVRSRVCreateDeviceMemContextKM(IMG_HANDLE hDevCookie,
68
PVRSRV_PER_PROCESS_DATA *psPerProc,
69
IMG_HANDLE *phDevMemContext,
70
IMG_UINT32 *pui32ClientHeapCount,
71
#if defined (SUPPORT_SID_INTERFACE)
72
PVRSRV_HEAP_INFO_KM *psHeapInfo,
74
PVRSRV_HEAP_INFO *psHeapInfo,
81
PVRSRV_ERROR IMG_CALLCONV PVRSRVDestroyDeviceMemContextKM(IMG_HANDLE hDevCookie,
82
IMG_HANDLE hDevMemContext,
83
IMG_BOOL *pbDestroyed);
87
PVRSRV_ERROR IMG_CALLCONV PVRSRVGetDeviceMemHeapInfoKM(IMG_HANDLE hDevCookie,
88
IMG_HANDLE hDevMemContext,
89
IMG_UINT32 *pui32ClientHeapCount,
90
#if defined (SUPPORT_SID_INTERFACE)
91
PVRSRV_HEAP_INFO_KM *psHeapInfo,
93
PVRSRV_HEAP_INFO *psHeapInfo,
100
PVRSRV_ERROR IMG_CALLCONV _PVRSRVAllocDeviceMemKM(IMG_HANDLE hDevCookie,
101
PVRSRV_PER_PROCESS_DATA *psPerProc,
102
IMG_HANDLE hDevMemHeap,
103
IMG_UINT32 ui32Flags,
105
IMG_SIZE_T ui32Alignment,
106
PVRSRV_KERNEL_MEM_INFO **ppsMemInfo);
109
#if defined(PVRSRV_LOG_MEMORY_ALLOCS)
110
#define PVRSRVAllocDeviceMemKM(devCookie, perProc, devMemHeap, flags, size, alignment, memInfo, logStr) \
111
(PVR_TRACE(("PVRSRVAllocDeviceMemKM(" #devCookie ", " #perProc ", " #devMemHeap ", " #flags ", " #size \
112
", " #alignment "," #memInfo "): " logStr " (size = 0x%x)", size)),\
113
_PVRSRVAllocDeviceMemKM(devCookie, perProc, devMemHeap, flags, size, alignment, memInfo))
115
#define PVRSRVAllocDeviceMemKM(devCookie, perProc, devMemHeap, flags, size, alignment, memInfo, logStr) \
116
_PVRSRVAllocDeviceMemKM(devCookie, perProc, devMemHeap, flags, size, alignment, memInfo)
121
PVRSRV_ERROR IMG_CALLCONV PVRSRVFreeDeviceMemKM(IMG_HANDLE hDevCookie,
122
PVRSRV_KERNEL_MEM_INFO *psMemInfo);
125
PVRSRV_ERROR IMG_CALLCONV PVRSRVDissociateDeviceMemKM(IMG_HANDLE hDevCookie,
126
PVRSRV_KERNEL_MEM_INFO *psMemInfo);
129
PVRSRV_ERROR IMG_CALLCONV PVRSRVReserveDeviceVirtualMemKM(IMG_HANDLE hDevMemHeap,
130
IMG_DEV_VIRTADDR *psDevVAddr,
132
IMG_SIZE_T ui32Alignment,
133
PVRSRV_KERNEL_MEM_INFO **ppsMemInfo);
136
PVRSRV_ERROR IMG_CALLCONV PVRSRVFreeDeviceVirtualMemKM(PVRSRV_KERNEL_MEM_INFO *psMemInfo);
139
PVRSRV_ERROR IMG_CALLCONV PVRSRVMapDeviceMemoryKM(PVRSRV_PER_PROCESS_DATA *psPerProc,
140
PVRSRV_KERNEL_MEM_INFO *psSrcMemInfo,
141
IMG_HANDLE hDstDevMemHeap,
142
PVRSRV_KERNEL_MEM_INFO **ppsDstMemInfo);
145
PVRSRV_ERROR IMG_CALLCONV PVRSRVUnmapDeviceMemoryKM(PVRSRV_KERNEL_MEM_INFO *psMemInfo);
148
PVRSRV_ERROR IMG_CALLCONV PVRSRVWrapExtMemoryKM(IMG_HANDLE hDevCookie,
149
PVRSRV_PER_PROCESS_DATA *psPerProc,
150
IMG_HANDLE hDevMemContext,
151
IMG_SIZE_T ui32ByteSize,
152
IMG_SIZE_T ui32PageOffset,
153
IMG_BOOL bPhysContig,
154
IMG_SYS_PHYADDR *psSysAddr,
156
IMG_UINT32 ui32Flags,
157
PVRSRV_KERNEL_MEM_INFO **ppsMemInfo);
160
PVRSRV_ERROR IMG_CALLCONV PVRSRVUnwrapExtMemoryKM(PVRSRV_KERNEL_MEM_INFO *psMemInfo);
163
PVRSRV_ERROR PVRSRVEnumerateDCKM(PVRSRV_DEVICE_CLASS DeviceClass,
164
IMG_UINT32 *pui32DevCount,
165
IMG_UINT32 *pui32DevID );
168
PVRSRV_ERROR PVRSRVOpenDCDeviceKM(PVRSRV_PER_PROCESS_DATA *psPerProc,
169
IMG_UINT32 ui32DeviceID,
170
IMG_HANDLE hDevCookie,
171
IMG_HANDLE *phDeviceKM);
174
PVRSRV_ERROR PVRSRVCloseDCDeviceKM(IMG_HANDLE hDeviceKM, IMG_BOOL bResManCallback);
177
PVRSRV_ERROR PVRSRVEnumDCFormatsKM(IMG_HANDLE hDeviceKM,
178
IMG_UINT32 *pui32Count,
179
DISPLAY_FORMAT *psFormat);
182
PVRSRV_ERROR PVRSRVEnumDCDimsKM(IMG_HANDLE hDeviceKM,
183
DISPLAY_FORMAT *psFormat,
184
IMG_UINT32 *pui32Count,
185
DISPLAY_DIMS *psDim);
188
PVRSRV_ERROR PVRSRVGetDCSystemBufferKM(IMG_HANDLE hDeviceKM,
189
IMG_HANDLE *phBuffer);
192
PVRSRV_ERROR PVRSRVGetDCInfoKM(IMG_HANDLE hDeviceKM,
193
DISPLAY_INFO *psDisplayInfo);
195
PVRSRV_ERROR PVRSRVCreateDCSwapChainKM(PVRSRV_PER_PROCESS_DATA *psPerProc,
196
IMG_HANDLE hDeviceKM,
197
IMG_UINT32 ui32Flags,
198
DISPLAY_SURF_ATTRIBUTES *psDstSurfAttrib,
199
DISPLAY_SURF_ATTRIBUTES *psSrcSurfAttrib,
200
IMG_UINT32 ui32BufferCount,
201
IMG_UINT32 ui32OEMFlags,
202
IMG_HANDLE *phSwapChain,
203
IMG_UINT32 *pui32SwapChainID);
205
PVRSRV_ERROR PVRSRVDestroyDCSwapChainKM(IMG_HANDLE hSwapChain);
207
PVRSRV_ERROR PVRSRVSetDCDstRectKM(IMG_HANDLE hDeviceKM,
208
IMG_HANDLE hSwapChain,
211
PVRSRV_ERROR PVRSRVSetDCSrcRectKM(IMG_HANDLE hDeviceKM,
212
IMG_HANDLE hSwapChain,
215
PVRSRV_ERROR PVRSRVSetDCDstColourKeyKM(IMG_HANDLE hDeviceKM,
216
IMG_HANDLE hSwapChain,
217
IMG_UINT32 ui32CKColour);
219
PVRSRV_ERROR PVRSRVSetDCSrcColourKeyKM(IMG_HANDLE hDeviceKM,
220
IMG_HANDLE hSwapChain,
221
IMG_UINT32 ui32CKColour);
223
PVRSRV_ERROR PVRSRVGetDCBuffersKM(IMG_HANDLE hDeviceKM,
224
IMG_HANDLE hSwapChain,
225
IMG_UINT32 *pui32BufferCount,
226
IMG_HANDLE *phBuffer);
228
PVRSRV_ERROR PVRSRVSwapToDCBufferKM(IMG_HANDLE hDeviceKM,
230
IMG_UINT32 ui32SwapInterval,
231
IMG_HANDLE hPrivateTag,
232
IMG_UINT32 ui32ClipRectCount,
233
IMG_RECT *psClipRect);
235
PVRSRV_ERROR PVRSRVSwapToDCSystemKM(IMG_HANDLE hDeviceKM,
236
IMG_HANDLE hSwapChain);
239
PVRSRV_ERROR PVRSRVOpenBCDeviceKM(PVRSRV_PER_PROCESS_DATA *psPerProc,
240
IMG_UINT32 ui32DeviceID,
241
IMG_HANDLE hDevCookie,
242
IMG_HANDLE *phDeviceKM);
244
PVRSRV_ERROR PVRSRVCloseBCDeviceKM(IMG_HANDLE hDeviceKM, IMG_BOOL bResManCallback);
247
PVRSRV_ERROR PVRSRVGetBCInfoKM(IMG_HANDLE hDeviceKM,
248
BUFFER_INFO *psBufferInfo);
250
PVRSRV_ERROR PVRSRVGetBCBufferKM(IMG_HANDLE hDeviceKM,
251
IMG_UINT32 ui32BufferIndex,
252
IMG_HANDLE *phBuffer);
256
PVRSRV_ERROR IMG_CALLCONV PVRSRVMapDeviceClassMemoryKM(PVRSRV_PER_PROCESS_DATA *psPerProc,
257
IMG_HANDLE hDevMemContext,
258
IMG_HANDLE hDeviceClassBuffer,
259
PVRSRV_KERNEL_MEM_INFO **ppsMemInfo,
260
IMG_HANDLE *phOSMapInfo);
263
PVRSRV_ERROR IMG_CALLCONV PVRSRVChangeDeviceMemoryAttributesKM(IMG_HANDLE hKernelMemInfo,
264
IMG_UINT32 ui32Attribs);
267
PVRSRV_ERROR IMG_CALLCONV PVRSRVUnmapDeviceClassMemoryKM(PVRSRV_KERNEL_MEM_INFO *psMemInfo);
270
PVRSRV_ERROR IMG_CALLCONV PVRSRVGetFreeDeviceMemKM(IMG_UINT32 ui32Flags,
271
IMG_SIZE_T *pui32Total,
272
IMG_SIZE_T *pui32Free,
273
IMG_SIZE_T *pui32LargestBlock);
275
PVRSRV_ERROR IMG_CALLCONV PVRSRVAllocSyncInfoKM(IMG_HANDLE hDevCookie,
276
IMG_HANDLE hDevMemContext,
277
PVRSRV_KERNEL_SYNC_INFO **ppsKernelSyncInfo);
279
PVRSRV_ERROR IMG_CALLCONV PVRSRVFreeSyncInfoKM(PVRSRV_KERNEL_SYNC_INFO *psKernelSyncInfo);
282
#if defined (SUPPORT_SID_INTERFACE)
283
PVRSRV_ERROR IMG_CALLCONV PVRSRVGetMiscInfoKM(PVRSRV_MISC_INFO_KM *psMiscInfo);
285
PVRSRV_ERROR IMG_CALLCONV PVRSRVGetMiscInfoKM(PVRSRV_MISC_INFO *psMiscInfo);
288
IMG_IMPORT PVRSRV_ERROR
289
PVRSRVAllocSharedSysMemoryKM(PVRSRV_PER_PROCESS_DATA *psPerProc,
290
IMG_UINT32 ui32Flags,
292
PVRSRV_KERNEL_MEM_INFO **ppsKernelMemInfo);
294
IMG_IMPORT PVRSRV_ERROR
295
PVRSRVFreeSharedSysMemoryKM(PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo);
297
IMG_IMPORT PVRSRV_ERROR
298
PVRSRVDissociateMemFromResmanKM(PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo);
300
#if defined (__cplusplus)