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 __SERVICES_H__
28
#define __SERVICES_H__
30
#if defined (__cplusplus)
35
#include "servicesext.h"
36
#include "pdumpdefs.h"
39
#define PVRSRV_4K_PAGE_SIZE 4096UL
41
#define PVRSRV_MAX_CMD_SIZE 1024
43
#define PVRSRV_MAX_DEVICES 16
45
#define EVENTOBJNAME_MAXLENGTH (50)
47
#define PVRSRV_MEM_READ (1UL<<0)
48
#define PVRSRV_MEM_WRITE (1UL<<1)
49
#define PVRSRV_MEM_CACHE_CONSISTENT (1UL<<2)
50
#define PVRSRV_MEM_NO_SYNCOBJ (1UL<<3)
51
#define PVRSRV_MEM_INTERLEAVED (1UL<<4)
52
#define PVRSRV_MEM_DUMMY (1UL<<5)
53
#define PVRSRV_MEM_EDM_PROTECT (1UL<<6)
54
#define PVRSRV_MEM_ZERO (1UL<<7)
55
#define PVRSRV_MEM_USER_SUPPLIED_DEVVADDR (1UL<<8)
56
#define PVRSRV_MEM_RAM_BACKED_ALLOCATION (1UL<<9)
57
#define PVRSRV_MEM_NO_RESMAN (1UL<<10)
58
#define PVRSRV_MEM_EXPORTED (1UL<<11)
61
#define PVRSRV_HAP_CACHED (1UL<<12)
62
#define PVRSRV_HAP_UNCACHED (1UL<<13)
63
#define PVRSRV_HAP_WRITECOMBINE (1UL<<14)
64
#define PVRSRV_HAP_CACHETYPE_MASK (PVRSRV_HAP_CACHED|PVRSRV_HAP_UNCACHED|PVRSRV_HAP_WRITECOMBINE)
65
#define PVRSRV_HAP_KERNEL_ONLY (1UL<<15)
66
#define PVRSRV_HAP_SINGLE_PROCESS (1UL<<16)
67
#define PVRSRV_HAP_MULTI_PROCESS (1UL<<17)
68
#define PVRSRV_HAP_FROM_EXISTING_PROCESS (1UL<<18)
69
#define PVRSRV_HAP_NO_CPU_VIRTUAL (1UL<<19)
70
#define PVRSRV_HAP_MAPTYPE_MASK (PVRSRV_HAP_KERNEL_ONLY \
71
|PVRSRV_HAP_SINGLE_PROCESS \
72
|PVRSRV_HAP_MULTI_PROCESS \
73
|PVRSRV_HAP_FROM_EXISTING_PROCESS \
74
|PVRSRV_HAP_NO_CPU_VIRTUAL)
76
#define PVRSRV_MEM_CACHED PVRSRV_HAP_CACHED
77
#define PVRSRV_MEM_UNCACHED PVRSRV_HAP_UNCACHED
78
#define PVRSRV_MEM_WRITECOMBINE PVRSRV_HAP_WRITECOMBINE
80
#define PVRSRV_MEM_BACKINGSTORE_FIELD_SHIFT (24)
82
#define PVRSRV_MAP_NOUSERVIRTUAL (1UL<<27)
84
#define PVRSRV_NO_CONTEXT_LOSS 0
85
#define PVRSRV_SEVERE_LOSS_OF_CONTEXT 1
86
#define PVRSRV_PRE_STATE_CHANGE_MASK 0x80
89
#define PVRSRV_DEFAULT_DEV_COOKIE (1)
92
#define PVRSRV_MISC_INFO_TIMER_PRESENT (1UL<<0)
93
#define PVRSRV_MISC_INFO_CLOCKGATE_PRESENT (1UL<<1)
94
#define PVRSRV_MISC_INFO_MEMSTATS_PRESENT (1UL<<2)
95
#define PVRSRV_MISC_INFO_GLOBALEVENTOBJECT_PRESENT (1UL<<3)
96
#define PVRSRV_MISC_INFO_DDKVERSION_PRESENT (1UL<<4)
97
#define PVRSRV_MISC_INFO_CPUCACHEFLUSH_PRESENT (1UL<<5)
99
#define PVRSRV_MISC_INFO_RESET_PRESENT (1UL<<31)
101
#define PVRSRV_PDUMP_MAX_FILENAME_SIZE 20
102
#define PVRSRV_PDUMP_MAX_COMMENT_SIZE 200
105
#define PVRSRV_CHANGEDEVMEM_ATTRIBS_CACHECOHERENT 0x00000001
107
#define PVRSRV_MAPEXTMEMORY_FLAGS_ALTERNATEVA 0x00000001
108
#define PVRSRV_MAPEXTMEMORY_FLAGS_PHYSCONTIG 0x00000002
110
#define PVRSRV_MODIFYSYNCOPS_FLAGS_WO_INC 0x00000001
111
#define PVRSRV_MODIFYSYNCOPS_FLAGS_RO_INC 0x00000002
113
typedef enum _PVRSRV_DEVICE_TYPE_
115
PVRSRV_DEVICE_TYPE_UNKNOWN = 0 ,
116
PVRSRV_DEVICE_TYPE_MBX1 = 1 ,
117
PVRSRV_DEVICE_TYPE_MBX1_LITE = 2 ,
119
PVRSRV_DEVICE_TYPE_M24VA = 3,
120
PVRSRV_DEVICE_TYPE_MVDA2 = 4,
121
PVRSRV_DEVICE_TYPE_MVED1 = 5,
122
PVRSRV_DEVICE_TYPE_MSVDX = 6,
124
PVRSRV_DEVICE_TYPE_SGX = 7,
126
PVRSRV_DEVICE_TYPE_VGX = 8,
129
PVRSRV_DEVICE_TYPE_EXT = 9,
131
PVRSRV_DEVICE_TYPE_LAST = 9,
133
PVRSRV_DEVICE_TYPE_FORCE_I32 = 0x7fffffff
135
} PVRSRV_DEVICE_TYPE;
137
#define HEAP_ID( _dev_ , _dev_heap_idx_ ) ( ((_dev_)<<24) | ((_dev_heap_idx_)&((1<<24)-1)) )
138
#define HEAP_IDX( _heap_id_ ) ( (_heap_id_)&((1<<24) - 1 ) )
139
#define HEAP_DEV( _heap_id_ ) ( (_heap_id_)>>24 )
141
#define PVRSRV_UNDEFINED_HEAP_ID (~0LU)
145
IMG_EGL = 0x00000001,
146
IMG_OPENGLES1 = 0x00000002,
147
IMG_OPENGLES2 = 0x00000003,
148
IMG_D3DM = 0x00000004,
149
IMG_SRV_UM = 0x00000005,
150
IMG_OPENVG = 0x00000006,
151
IMG_SRVCLIENT = 0x00000007,
152
IMG_VISTAKMD = 0x00000008,
153
IMG_VISTA3DNODE = 0x00000009,
154
IMG_VISTAMVIDEONODE = 0x0000000A,
155
IMG_VISTAVPBNODE = 0x0000000B,
156
IMG_OPENGL = 0x0000000C,
157
IMG_D3D = 0x0000000D,
158
#if defined(SUPPORT_GRAPHICS_HAL)
159
IMG_GRAPHICS_HAL = 0x0000000E
165
#define APPHINT_MAX_STRING_SIZE 256
177
typedef struct _PVRSRV_DEV_DATA_ *PPVRSRV_DEV_DATA;
179
typedef struct _PVRSRV_DEVICE_IDENTIFIER_
181
PVRSRV_DEVICE_TYPE eDeviceType;
182
PVRSRV_DEVICE_CLASS eDeviceClass;
183
IMG_UINT32 ui32DeviceIndex;
185
} PVRSRV_DEVICE_IDENTIFIER;
188
typedef struct _PVRSRV_CLIENT_DEV_DATA_
190
IMG_UINT32 ui32NumDevices;
191
PVRSRV_DEVICE_IDENTIFIER asDevID[PVRSRV_MAX_DEVICES];
192
PVRSRV_ERROR (*apfnDevConnect[PVRSRV_MAX_DEVICES])(PPVRSRV_DEV_DATA);
193
PVRSRV_ERROR (*apfnDumpTrace[PVRSRV_MAX_DEVICES])(PPVRSRV_DEV_DATA);
195
} PVRSRV_CLIENT_DEV_DATA;
198
typedef struct _PVRSRV_CONNECTION_
200
IMG_HANDLE hServices;
201
IMG_UINT32 ui32ProcessID;
202
PVRSRV_CLIENT_DEV_DATA sClientDevData;
206
typedef struct _PVRSRV_DEV_DATA_
208
PVRSRV_CONNECTION sConnection;
209
IMG_HANDLE hDevCookie;
213
typedef struct _PVRSRV_MEMUPDATE_
215
IMG_UINT32 ui32UpdateAddr;
216
IMG_UINT32 ui32UpdateVal;
219
typedef struct _PVRSRV_HWREG_
221
IMG_UINT32 ui32RegAddr;
222
IMG_UINT32 ui32RegVal;
225
typedef struct _PVRSRV_MEMBLK_
227
IMG_DEV_VIRTADDR sDevVirtAddr;
228
IMG_HANDLE hOSMemHandle;
229
IMG_HANDLE hOSWrapMem;
232
IMG_SYS_PHYADDR *psIntSysPAddr;
236
typedef struct _PVRSRV_KERNEL_MEM_INFO_ *PPVRSRV_KERNEL_MEM_INFO;
238
typedef struct _PVRSRV_CLIENT_MEM_INFO_
244
IMG_PVOID pvLinAddrKM;
247
IMG_DEV_VIRTADDR sDevVAddr;
254
IMG_CPU_PHYADDR sCpuPAddr;
257
IMG_UINT32 ui32Flags;
262
IMG_UINT32 ui32ClientFlags;
265
IMG_SIZE_T ui32AllocSize;
269
struct _PVRSRV_CLIENT_SYNC_INFO_ *psClientSyncInfo;
272
IMG_HANDLE hMappingInfo;
275
IMG_HANDLE hKernelMemInfo;
280
#if defined(SUPPORT_MEMINFO_IDS)
281
#if !defined(USE_CODE)
283
IMG_UINT64 ui64Stamp;
290
IMG_HANDLE hOSMapInfo;
292
struct _PVRSRV_CLIENT_MEM_INFO_ *psNext;
294
} PVRSRV_CLIENT_MEM_INFO, *PPVRSRV_CLIENT_MEM_INFO;
297
#define PVRSRV_MAX_CLIENT_HEAPS (32)
298
typedef struct _PVRSRV_HEAP_INFO_
300
IMG_UINT32 ui32HeapID;
301
IMG_HANDLE hDevMemHeap;
302
IMG_DEV_VIRTADDR sDevVAddrBase;
303
IMG_UINT32 ui32HeapByteSize;
304
IMG_UINT32 ui32Attribs;
310
typedef struct _PVRSRV_EVENTOBJECT_
313
IMG_CHAR szName[EVENTOBJNAME_MAXLENGTH];
315
IMG_HANDLE hOSEventKM;
317
} PVRSRV_EVENTOBJECT;
319
typedef struct _PVRSRV_MISC_INFO_
321
IMG_UINT32 ui32StateRequest;
322
IMG_UINT32 ui32StatePresent;
325
IMG_VOID *pvSOCTimerRegisterKM;
326
IMG_VOID *pvSOCTimerRegisterUM;
327
IMG_HANDLE hSOCTimerRegisterOSMemHandle;
328
IMG_HANDLE hSOCTimerRegisterMappingInfo;
331
IMG_VOID *pvSOCClockGateRegs;
332
IMG_UINT32 ui32SOCClockGateRegsSize;
335
IMG_CHAR *pszMemoryStr;
336
IMG_UINT32 ui32MemoryStrLen;
339
PVRSRV_EVENTOBJECT sGlobalEventObject;
340
IMG_HANDLE hOSGlobalEvent;
343
IMG_UINT32 aui32DDKVersion[4];
347
IMG_BOOL bCPUCacheFlushAll;
349
IMG_BOOL bDeferCPUCacheFlush;
351
IMG_PVOID pvRangeAddrStart;
353
IMG_PVOID pvRangeAddrEnd;
358
typedef enum _PVRSRV_CLIENT_EVENT_
360
PVRSRV_CLIENT_EVENT_HWTIMEOUT = 0,
361
} PVRSRV_CLIENT_EVENT;
364
PVRSRV_ERROR IMG_CALLCONV PVRSRVClientEvent(IMG_CONST PVRSRV_CLIENT_EVENT eEvent,
365
PVRSRV_DEV_DATA *psDevData,
369
PVRSRV_ERROR IMG_CALLCONV PVRSRVConnect(PVRSRV_CONNECTION *psConnection);
372
PVRSRV_ERROR IMG_CALLCONV PVRSRVDisconnect(PVRSRV_CONNECTION *psConnection);
375
PVRSRV_ERROR IMG_CALLCONV PVRSRVEnumerateDevices(IMG_CONST PVRSRV_CONNECTION *psConnection,
376
IMG_UINT32 *puiNumDevices,
377
PVRSRV_DEVICE_IDENTIFIER *puiDevIDs);
379
PVRSRV_ERROR IMG_CALLCONV PVRSRVAcquireDeviceData(IMG_CONST PVRSRV_CONNECTION *psConnection,
380
IMG_UINT32 uiDevIndex,
381
PVRSRV_DEV_DATA *psDevData,
382
PVRSRV_DEVICE_TYPE eDeviceType);
384
PVRSRV_ERROR IMG_CALLCONV PVRSRVGetMiscInfo (IMG_CONST PVRSRV_CONNECTION *psConnection, PVRSRV_MISC_INFO *psMiscInfo);
387
PVRSRV_ERROR IMG_CALLCONV PVRSRVReleaseMiscInfo (IMG_CONST PVRSRV_CONNECTION *psConnection, PVRSRV_MISC_INFO *psMiscInfo);
391
IMG_UINT32 ReadHWReg(IMG_PVOID pvLinRegBaseAddr, IMG_UINT32 ui32Offset);
394
IMG_VOID WriteHWReg(IMG_PVOID pvLinRegBaseAddr, IMG_UINT32 ui32Offset, IMG_UINT32 ui32Value);
396
IMG_IMPORT IMG_VOID WriteHWRegs(IMG_PVOID pvLinRegBaseAddr, IMG_UINT32 ui32Count, PVRSRV_HWREG *psHWRegs);
400
PVRSRV_ERROR PVRSRVPollForValue ( const PVRSRV_CONNECTION *psConnection,
402
volatile IMG_UINT32 *pui32LinMemAddr,
403
IMG_UINT32 ui32Value,
405
IMG_UINT32 ui32Waitus,
406
IMG_UINT32 ui32Tries);
409
PVRSRV_ERROR IMG_CALLCONV PVRSRVCreateDeviceMemContext(IMG_CONST PVRSRV_DEV_DATA *psDevData,
410
IMG_HANDLE *phDevMemContext,
411
IMG_UINT32 *pui32SharedHeapCount,
412
PVRSRV_HEAP_INFO *psHeapInfo);
415
PVRSRV_ERROR IMG_CALLCONV PVRSRVDestroyDeviceMemContext(IMG_CONST PVRSRV_DEV_DATA *psDevData,
416
IMG_HANDLE hDevMemContext);
419
PVRSRV_ERROR IMG_CALLCONV PVRSRVGetDeviceMemHeapInfo(IMG_CONST PVRSRV_DEV_DATA *psDevData,
420
IMG_HANDLE hDevMemContext,
421
IMG_UINT32 *pui32SharedHeapCount,
422
PVRSRV_HEAP_INFO *psHeapInfo);
424
#if defined(PVRSRV_LOG_MEMORY_ALLOCS)
425
#define PVRSRVAllocDeviceMem_log(psDevData, hDevMemHeap, ui32Attribs, ui32Size, ui32Alignment, ppsMemInfo, logStr) \
426
(PVR_TRACE(("PVRSRVAllocDeviceMem(" #psDevData "," #hDevMemHeap "," #ui32Attribs "," #ui32Size "," #ui32Alignment "," #ppsMemInfo ")" \
427
": " logStr " (size = 0x%lx)", ui32Size)), \
428
PVRSRVAllocDeviceMem(psDevData, hDevMemHeap, ui32Attribs, ui32Size, ui32Alignment, ppsMemInfo))
430
#define PVRSRVAllocDeviceMem_log(psDevData, hDevMemHeap, ui32Attribs, ui32Size, ui32Alignment, ppsMemInfo, logStr) \
431
PVRSRVAllocDeviceMem(psDevData, hDevMemHeap, ui32Attribs, ui32Size, ui32Alignment, ppsMemInfo)
436
PVRSRV_ERROR IMG_CALLCONV PVRSRVAllocDeviceMem(IMG_CONST PVRSRV_DEV_DATA *psDevData,
437
IMG_HANDLE hDevMemHeap,
438
IMG_UINT32 ui32Attribs,
440
IMG_SIZE_T ui32Alignment,
441
PVRSRV_CLIENT_MEM_INFO **ppsMemInfo);
444
PVRSRV_ERROR IMG_CALLCONV PVRSRVFreeDeviceMem(IMG_CONST PVRSRV_DEV_DATA *psDevData,
445
PVRSRV_CLIENT_MEM_INFO *psMemInfo);
448
PVRSRV_ERROR IMG_CALLCONV PVRSRVExportDeviceMem(IMG_CONST PVRSRV_DEV_DATA *psDevData,
449
PVRSRV_CLIENT_MEM_INFO *psMemInfo,
450
IMG_HANDLE *phMemInfo);
453
PVRSRV_ERROR IMG_CALLCONV PVRSRVReserveDeviceVirtualMem(IMG_CONST PVRSRV_DEV_DATA *psDevData,
454
IMG_HANDLE hDevMemHeap,
455
IMG_DEV_VIRTADDR *psDevVAddr,
457
IMG_SIZE_T ui32Alignment,
458
PVRSRV_CLIENT_MEM_INFO **ppsMemInfo);
460
PVRSRV_ERROR IMG_CALLCONV PVRSRVFreeDeviceVirtualMem(IMG_CONST PVRSRV_DEV_DATA *psDevData,
461
PVRSRV_CLIENT_MEM_INFO *psMemInfo);
464
PVRSRV_ERROR IMG_CALLCONV PVRSRVMapDeviceMemory (IMG_CONST PVRSRV_DEV_DATA *psDevData,
465
IMG_HANDLE hKernelMemInfo,
466
IMG_HANDLE hDstDevMemHeap,
467
PVRSRV_CLIENT_MEM_INFO **ppsDstMemInfo);
470
PVRSRV_ERROR IMG_CALLCONV PVRSRVUnmapDeviceMemory (IMG_CONST PVRSRV_DEV_DATA *psDevData,
471
PVRSRV_CLIENT_MEM_INFO *psMemInfo);
474
PVRSRV_ERROR IMG_CALLCONV PVRSRVMapExtMemory (IMG_CONST PVRSRV_DEV_DATA *psDevData,
475
PVRSRV_CLIENT_MEM_INFO *psMemInfo,
476
IMG_SYS_PHYADDR *psSysPAddr,
477
IMG_UINT32 ui32Flags);
479
PVRSRV_ERROR IMG_CALLCONV PVRSRVUnmapExtMemory (IMG_CONST PVRSRV_DEV_DATA *psDevData,
480
PVRSRV_CLIENT_MEM_INFO *psMemInfo,
481
IMG_UINT32 ui32Flags);
484
PVRSRV_ERROR IMG_CALLCONV PVRSRVWrapExtMemory2(IMG_CONST PVRSRV_DEV_DATA *psDevData,
485
IMG_HANDLE hDevMemContext,
486
IMG_SIZE_T ui32ByteSize,
487
IMG_SIZE_T ui32PageOffset,
488
IMG_BOOL bPhysContig,
489
IMG_SYS_PHYADDR *psSysPAddr,
491
IMG_UINT32 ui32Flags,
492
PVRSRV_CLIENT_MEM_INFO **ppsMemInfo);
494
PVRSRV_ERROR IMG_CALLCONV PVRSRVWrapExtMemory(IMG_CONST PVRSRV_DEV_DATA *psDevData,
495
IMG_HANDLE hDevMemContext,
496
IMG_SIZE_T ui32ByteSize,
497
IMG_SIZE_T ui32PageOffset,
498
IMG_BOOL bPhysContig,
499
IMG_SYS_PHYADDR *psSysPAddr,
501
PVRSRV_CLIENT_MEM_INFO **ppsMemInfo);
503
PVRSRV_ERROR IMG_CALLCONV PVRSRVUnwrapExtMemory (IMG_CONST PVRSRV_DEV_DATA *psDevData,
504
PVRSRV_CLIENT_MEM_INFO *psMemInfo);
506
PVRSRV_ERROR PVRSRVChangeDeviceMemoryAttributes(IMG_CONST PVRSRV_DEV_DATA *psDevData,
507
PVRSRV_CLIENT_MEM_INFO *psClientMemInfo,
508
IMG_UINT32 ui32Attribs);
511
PVRSRV_ERROR IMG_CALLCONV PVRSRVMapDeviceClassMemory (IMG_CONST PVRSRV_DEV_DATA *psDevData,
512
IMG_HANDLE hDevMemContext,
513
IMG_HANDLE hDeviceClassBuffer,
514
PVRSRV_CLIENT_MEM_INFO **ppsMemInfo);
516
PVRSRV_ERROR IMG_CALLCONV PVRSRVUnmapDeviceClassMemory (IMG_CONST PVRSRV_DEV_DATA *psDevData,
517
PVRSRV_CLIENT_MEM_INFO *psMemInfo);
520
PVRSRV_ERROR IMG_CALLCONV PVRSRVMapPhysToUserSpace(IMG_CONST PVRSRV_DEV_DATA *psDevData,
521
IMG_SYS_PHYADDR sSysPhysAddr,
522
IMG_UINT32 uiSizeInBytes,
523
IMG_PVOID *ppvUserAddr,
524
IMG_UINT32 *puiActualSize,
525
IMG_PVOID *ppvProcess);
528
PVRSRV_ERROR IMG_CALLCONV PVRSRVUnmapPhysToUserSpace(IMG_CONST PVRSRV_DEV_DATA *psDevData,
529
IMG_PVOID pvUserAddr,
530
IMG_PVOID pvProcess);
532
typedef enum _PVRSRV_SYNCVAL_MODE_
534
PVRSRV_SYNCVAL_READ = IMG_TRUE,
535
PVRSRV_SYNCVAL_WRITE = IMG_FALSE,
537
} PVRSRV_SYNCVAL_MODE, *PPVRSRV_SYNCVAL_MODE;
539
typedef IMG_UINT32 PVRSRV_SYNCVAL;
541
IMG_IMPORT PVRSRV_ERROR PVRSRVWaitForOpsComplete(PPVRSRV_CLIENT_MEM_INFO psMemInfo,
542
PVRSRV_SYNCVAL_MODE eMode, PVRSRV_SYNCVAL OpRequired);
544
IMG_IMPORT PVRSRV_ERROR PVRSRVWaitForAllOpsComplete(PPVRSRV_CLIENT_MEM_INFO psMemInfo,
545
PVRSRV_SYNCVAL_MODE eMode);
547
IMG_IMPORT IMG_BOOL PVRSRVTestOpsComplete(PPVRSRV_CLIENT_MEM_INFO psMemInfo,
548
PVRSRV_SYNCVAL_MODE eMode, PVRSRV_SYNCVAL OpRequired);
550
IMG_IMPORT IMG_BOOL PVRSRVTestAllOpsComplete(PPVRSRV_CLIENT_MEM_INFO psMemInfo,
551
PVRSRV_SYNCVAL_MODE eMode);
553
IMG_IMPORT IMG_BOOL PVRSRVTestOpsNotComplete(PPVRSRV_CLIENT_MEM_INFO psMemInfo,
554
PVRSRV_SYNCVAL_MODE eMode, PVRSRV_SYNCVAL OpRequired);
556
IMG_IMPORT IMG_BOOL PVRSRVTestAllOpsNotComplete(PPVRSRV_CLIENT_MEM_INFO psMemInfo,
557
PVRSRV_SYNCVAL_MODE eMode);
559
IMG_IMPORT PVRSRV_SYNCVAL PVRSRVGetPendingOpSyncVal(PPVRSRV_CLIENT_MEM_INFO psMemInfo,
560
PVRSRV_SYNCVAL_MODE eMode);
564
PVRSRV_ERROR IMG_CALLCONV PVRSRVEnumerateDeviceClass(IMG_CONST PVRSRV_CONNECTION *psConnection,
565
PVRSRV_DEVICE_CLASS DeviceClass,
566
IMG_UINT32 *pui32DevCount,
567
IMG_UINT32 *pui32DevID);
570
IMG_HANDLE IMG_CALLCONV PVRSRVOpenDCDevice(IMG_CONST PVRSRV_DEV_DATA *psDevData,
571
IMG_UINT32 ui32DeviceID);
574
PVRSRV_ERROR IMG_CALLCONV PVRSRVCloseDCDevice(IMG_CONST PVRSRV_CONNECTION *psConnection, IMG_HANDLE hDevice);
577
PVRSRV_ERROR IMG_CALLCONV PVRSRVEnumDCFormats (IMG_HANDLE hDevice,
578
IMG_UINT32 *pui32Count,
579
DISPLAY_FORMAT *psFormat);
582
PVRSRV_ERROR IMG_CALLCONV PVRSRVEnumDCDims (IMG_HANDLE hDevice,
583
IMG_UINT32 *pui32Count,
584
DISPLAY_FORMAT *psFormat,
585
DISPLAY_DIMS *psDims);
588
PVRSRV_ERROR IMG_CALLCONV PVRSRVGetDCSystemBuffer(IMG_HANDLE hDevice,
589
IMG_HANDLE *phBuffer);
592
PVRSRV_ERROR IMG_CALLCONV PVRSRVGetDCInfo(IMG_HANDLE hDevice,
593
DISPLAY_INFO* psDisplayInfo);
596
PVRSRV_ERROR IMG_CALLCONV PVRSRVCreateDCSwapChain (IMG_HANDLE hDevice,
597
IMG_UINT32 ui32Flags,
598
DISPLAY_SURF_ATTRIBUTES *psDstSurfAttrib,
599
DISPLAY_SURF_ATTRIBUTES *psSrcSurfAttrib,
600
IMG_UINT32 ui32BufferCount,
601
IMG_UINT32 ui32OEMFlags,
602
IMG_UINT32 *pui32SwapChainID,
603
IMG_HANDLE *phSwapChain);
606
PVRSRV_ERROR IMG_CALLCONV PVRSRVDestroyDCSwapChain (IMG_HANDLE hDevice,
607
IMG_HANDLE hSwapChain);
610
PVRSRV_ERROR IMG_CALLCONV PVRSRVSetDCDstRect (IMG_HANDLE hDevice,
611
IMG_HANDLE hSwapChain,
612
IMG_RECT *psDstRect);
615
PVRSRV_ERROR IMG_CALLCONV PVRSRVSetDCSrcRect (IMG_HANDLE hDevice,
616
IMG_HANDLE hSwapChain,
617
IMG_RECT *psSrcRect);
620
PVRSRV_ERROR IMG_CALLCONV PVRSRVSetDCDstColourKey (IMG_HANDLE hDevice,
621
IMG_HANDLE hSwapChain,
622
IMG_UINT32 ui32CKColour);
625
PVRSRV_ERROR IMG_CALLCONV PVRSRVSetDCSrcColourKey (IMG_HANDLE hDevice,
626
IMG_HANDLE hSwapChain,
627
IMG_UINT32 ui32CKColour);
630
PVRSRV_ERROR IMG_CALLCONV PVRSRVGetDCBuffers(IMG_HANDLE hDevice,
631
IMG_HANDLE hSwapChain,
632
IMG_HANDLE *phBuffer);
635
PVRSRV_ERROR IMG_CALLCONV PVRSRVSwapToDCBuffer (IMG_HANDLE hDevice,
637
IMG_UINT32 ui32ClipRectCount,
638
IMG_RECT *psClipRect,
639
IMG_UINT32 ui32SwapInterval,
640
IMG_HANDLE hPrivateTag);
643
PVRSRV_ERROR IMG_CALLCONV PVRSRVSwapToDCSystem (IMG_HANDLE hDevice,
644
IMG_HANDLE hSwapChain);
648
IMG_HANDLE IMG_CALLCONV PVRSRVOpenBCDevice(IMG_CONST PVRSRV_DEV_DATA *psDevData,
649
IMG_UINT32 ui32DeviceID);
652
PVRSRV_ERROR IMG_CALLCONV PVRSRVCloseBCDevice(IMG_CONST PVRSRV_CONNECTION *psConnection,
656
PVRSRV_ERROR IMG_CALLCONV PVRSRVGetBCBufferInfo(IMG_HANDLE hDevice,
657
BUFFER_INFO *psBuffer);
660
PVRSRV_ERROR IMG_CALLCONV PVRSRVGetBCBuffer(IMG_HANDLE hDevice,
661
IMG_UINT32 ui32BufferIndex,
662
IMG_HANDLE *phBuffer);
666
PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpInit(IMG_CONST PVRSRV_CONNECTION *psConnection);
669
PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpStartInitPhase(IMG_CONST PVRSRV_CONNECTION *psConnection);
672
PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpStopInitPhase(IMG_CONST PVRSRV_CONNECTION *psConnection);
675
PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpMemPol(IMG_CONST PVRSRV_CONNECTION *psConnection,
676
PVRSRV_CLIENT_MEM_INFO *psMemInfo,
677
IMG_UINT32 ui32Offset,
678
IMG_UINT32 ui32Value,
680
IMG_UINT32 ui32Flags);
683
PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpSyncPol(IMG_CONST PVRSRV_CONNECTION *psConnection,
684
PVRSRV_CLIENT_SYNC_INFO *psClientSyncInfo,
686
IMG_UINT32 ui32Value,
687
IMG_UINT32 ui32Mask);
690
PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpMem(IMG_CONST PVRSRV_CONNECTION *psConnection,
691
IMG_PVOID pvAltLinAddr,
692
PVRSRV_CLIENT_MEM_INFO *psMemInfo,
693
IMG_UINT32 ui32Offset,
694
IMG_UINT32 ui32Bytes,
695
IMG_UINT32 ui32Flags);
698
PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpSync(IMG_CONST PVRSRV_CONNECTION *psConnection,
699
IMG_PVOID pvAltLinAddr,
700
PVRSRV_CLIENT_SYNC_INFO *psClientSyncInfo,
701
IMG_UINT32 ui32Offset,
702
IMG_UINT32 ui32Bytes);
705
PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpReg(IMG_CONST PVRSRV_CONNECTION *psConnection,
706
IMG_UINT32 ui32RegAddr,
707
IMG_UINT32 ui32RegValue,
708
IMG_UINT32 ui32Flags);
711
PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpRegPolWithFlags(IMG_CONST PVRSRV_CONNECTION *psConnection,
712
IMG_UINT32 ui32RegAddr,
713
IMG_UINT32 ui32RegValue,
715
IMG_UINT32 ui32Flags);
717
PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpRegPol(IMG_CONST PVRSRV_CONNECTION *psConnection,
718
IMG_UINT32 ui32RegAddr,
719
IMG_UINT32 ui32RegValue,
720
IMG_UINT32 ui32Mask);
723
PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpPDReg(IMG_CONST PVRSRV_CONNECTION *psConnection,
724
IMG_UINT32 ui32RegAddr,
725
IMG_UINT32 ui32RegValue);
727
PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpPDDevPAddr(IMG_CONST PVRSRV_CONNECTION *psConnection,
728
PVRSRV_CLIENT_MEM_INFO *psMemInfo,
729
IMG_UINT32 ui32Offset,
730
IMG_DEV_PHYADDR sPDDevPAddr);
733
PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpMemPages(IMG_CONST PVRSRV_CONNECTION *psConnection,
734
IMG_HANDLE hKernelMemInfo,
735
IMG_DEV_PHYADDR *pPages,
736
IMG_UINT32 ui32NumPages,
737
IMG_DEV_VIRTADDR sDevAddr,
738
IMG_UINT32 ui32Start,
739
IMG_UINT32 ui32Length,
740
IMG_BOOL bContinuous);
743
PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpSetFrame(IMG_CONST PVRSRV_CONNECTION *psConnection,
744
IMG_UINT32 ui32Frame);
747
PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpComment(IMG_CONST PVRSRV_CONNECTION *psConnection,
748
IMG_CONST IMG_CHAR *pszComment,
749
IMG_BOOL bContinuous);
752
PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpCommentf(IMG_CONST PVRSRV_CONNECTION *psConnection,
753
IMG_BOOL bContinuous,
754
IMG_CONST IMG_CHAR *pszFormat, ...);
757
PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpCommentWithFlagsf(IMG_CONST PVRSRV_CONNECTION *psConnection,
758
IMG_UINT32 ui32Flags,
759
IMG_CONST IMG_CHAR *pszFormat, ...);
762
PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpDriverInfo(IMG_CONST PVRSRV_CONNECTION *psConnection,
764
IMG_BOOL bContinuous);
767
PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpIsCapturing(IMG_CONST PVRSRV_CONNECTION *psConnection,
768
IMG_BOOL *pbIsCapturing);
771
PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpBitmap(IMG_CONST PVRSRV_CONNECTION *psConnection,
772
IMG_CHAR *pszFileName,
773
IMG_UINT32 ui32FileOffset,
774
IMG_UINT32 ui32Width,
775
IMG_UINT32 ui32Height,
776
IMG_UINT32 ui32StrideInBytes,
777
IMG_DEV_VIRTADDR sDevBaseAddr,
779
PDUMP_PIXEL_FORMAT ePixelFormat,
780
PDUMP_MEM_FORMAT eMemFormat,
781
IMG_UINT32 ui32PDumpFlags);
784
PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpRegRead(IMG_CONST PVRSRV_CONNECTION *psConnection,
785
IMG_CONST IMG_CHAR *pszFileName,
786
IMG_UINT32 ui32FileOffset,
787
IMG_UINT32 ui32Address,
789
IMG_UINT32 ui32PDumpFlags);
793
IMG_BOOL IMG_CALLCONV PVRSRVPDumpIsCapturingTest(IMG_CONST PVRSRV_CONNECTION *psConnection);
796
PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpCycleCountRegRead(IMG_CONST PVRSRV_CONNECTION *psConnection,
797
IMG_UINT32 ui32RegOffset,
798
IMG_BOOL bLastFrame);
800
IMG_IMPORT IMG_HANDLE PVRSRVLoadLibrary(const IMG_CHAR *pszLibraryName);
801
IMG_IMPORT PVRSRV_ERROR PVRSRVUnloadLibrary(IMG_HANDLE hExtDrv);
802
IMG_IMPORT PVRSRV_ERROR PVRSRVGetLibFuncAddr(IMG_HANDLE hExtDrv, const IMG_CHAR *pszFunctionName, IMG_VOID **ppvFuncAddr);
804
IMG_IMPORT IMG_UINT32 PVRSRVClockus (void);
805
IMG_IMPORT IMG_VOID PVRSRVWaitus (IMG_UINT32 ui32Timeus);
806
IMG_IMPORT IMG_VOID PVRSRVReleaseThreadQuanta (void);
807
IMG_IMPORT IMG_UINT32 IMG_CALLCONV PVRSRVGetCurrentProcessID(void);
808
IMG_IMPORT IMG_CHAR * IMG_CALLCONV PVRSRVSetLocale(const IMG_CHAR *pszLocale);
814
IMG_IMPORT IMG_VOID IMG_CALLCONV PVRSRVCreateAppHintState(IMG_MODULE_ID eModuleID,
815
const IMG_CHAR *pszAppName,
816
IMG_VOID **ppvState);
817
IMG_IMPORT IMG_VOID IMG_CALLCONV PVRSRVFreeAppHintState(IMG_MODULE_ID eModuleID,
818
IMG_VOID *pvHintState);
820
IMG_IMPORT IMG_BOOL IMG_CALLCONV PVRSRVGetAppHint(IMG_VOID *pvHintState,
821
const IMG_CHAR *pszHintName,
822
IMG_DATA_TYPE eDataType,
823
const IMG_VOID *pvDefault,
826
IMG_IMPORT IMG_PVOID IMG_CALLCONV PVRSRVAllocUserModeMem (IMG_SIZE_T ui32Size);
827
IMG_IMPORT IMG_PVOID IMG_CALLCONV PVRSRVCallocUserModeMem (IMG_SIZE_T ui32Size);
828
IMG_IMPORT IMG_PVOID IMG_CALLCONV PVRSRVReallocUserModeMem (IMG_PVOID pvBase, IMG_SIZE_T uNewSize);
829
IMG_IMPORT IMG_VOID IMG_CALLCONV PVRSRVFreeUserModeMem (IMG_PVOID pvMem);
830
IMG_IMPORT IMG_VOID PVRSRVMemCopy(IMG_VOID *pvDst, const IMG_VOID *pvSrc, IMG_SIZE_T ui32Size);
831
IMG_IMPORT IMG_VOID PVRSRVMemSet(IMG_VOID *pvDest, IMG_UINT8 ui8Value, IMG_SIZE_T ui32Size);
833
struct _PVRSRV_MUTEX_OPAQUE_STRUCT_;
834
typedef struct _PVRSRV_MUTEX_OPAQUE_STRUCT_ *PVRSRV_MUTEX_HANDLE;
836
IMG_IMPORT PVRSRV_ERROR IMG_CALLCONV PVRSRVCreateMutex(PVRSRV_MUTEX_HANDLE *phMutex);
837
IMG_IMPORT PVRSRV_ERROR IMG_CALLCONV PVRSRVDestroyMutex(PVRSRV_MUTEX_HANDLE hMutex);
838
IMG_IMPORT IMG_VOID IMG_CALLCONV PVRSRVLockMutex(PVRSRV_MUTEX_HANDLE hMutex);
839
IMG_IMPORT IMG_VOID IMG_CALLCONV PVRSRVUnlockMutex(PVRSRV_MUTEX_HANDLE hMutex);
841
#if (defined(DEBUG) && defined(__linux__))
842
IMG_PVOID PVRSRVAllocUserModeMemTracking(IMG_SIZE_T ui32Size, IMG_CHAR *pszFileName, IMG_UINT32 ui32LineNumber);
843
IMG_PVOID PVRSRVCallocUserModeMemTracking(IMG_SIZE_T ui32Size, IMG_CHAR *pszFileName, IMG_UINT32 ui32LineNumber);
844
IMG_VOID PVRSRVFreeUserModeMemTracking(IMG_VOID *pvMem);
845
IMG_PVOID PVRSRVReallocUserModeMemTracking(IMG_VOID *pvMem, IMG_SIZE_T ui32NewSize, IMG_CHAR *pszFileName, IMG_UINT32 ui32LineNumber);
848
IMG_IMPORT PVRSRV_ERROR PVRSRVEventObjectWait(const PVRSRV_CONNECTION *psConnection,
849
IMG_HANDLE hOSEvent);
852
PVRSRV_ERROR IMG_CALLCONV PVRSRVModifyPendingSyncOps(PVRSRV_CONNECTION *psConnection,
853
IMG_HANDLE hKernelSyncInfo,
854
IMG_UINT32 ui32ModifyFlags,
855
IMG_UINT32 *pui32ReadOpsPending,
856
IMG_UINT32 *pui32WriteOpsPending);
859
PVRSRV_ERROR IMG_CALLCONV PVRSRVModifyCompleteSyncOps(PVRSRV_CONNECTION *psConnection,
860
IMG_HANDLE hKernelSyncInfo,
861
IMG_UINT32 ui32ModifyFlags);
864
#define TIME_NOT_PASSED_UINT32(a,b,c) ((a - b) < c)
866
#if defined (__cplusplus)