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
#if !defined (__KERNELDISPLAY_H__)
28
#define __KERNELDISPLAY_H__
30
#if defined (__cplusplus)
34
typedef PVRSRV_ERROR (*PFN_OPEN_DC_DEVICE)(IMG_UINT32, IMG_HANDLE*, PVRSRV_SYNC_DATA*);
35
typedef PVRSRV_ERROR (*PFN_CLOSE_DC_DEVICE)(IMG_HANDLE);
36
typedef PVRSRV_ERROR (*PFN_ENUM_DC_FORMATS)(IMG_HANDLE, IMG_UINT32*, DISPLAY_FORMAT*);
37
typedef PVRSRV_ERROR (*PFN_ENUM_DC_DIMS)(IMG_HANDLE,
41
typedef PVRSRV_ERROR (*PFN_GET_DC_SYSTEMBUFFER)(IMG_HANDLE, IMG_HANDLE*);
42
typedef PVRSRV_ERROR (*PFN_GET_DC_INFO)(IMG_HANDLE, DISPLAY_INFO*);
43
typedef PVRSRV_ERROR (*PFN_CREATE_DC_SWAPCHAIN)(IMG_HANDLE,
45
DISPLAY_SURF_ATTRIBUTES*,
46
DISPLAY_SURF_ATTRIBUTES*,
52
typedef PVRSRV_ERROR (*PFN_DESTROY_DC_SWAPCHAIN)(IMG_HANDLE,
54
typedef PVRSRV_ERROR (*PFN_SET_DC_DSTRECT)(IMG_HANDLE, IMG_HANDLE, IMG_RECT*);
55
typedef PVRSRV_ERROR (*PFN_SET_DC_SRCRECT)(IMG_HANDLE, IMG_HANDLE, IMG_RECT*);
56
typedef PVRSRV_ERROR (*PFN_SET_DC_DSTCK)(IMG_HANDLE, IMG_HANDLE, IMG_UINT32);
57
typedef PVRSRV_ERROR (*PFN_SET_DC_SRCCK)(IMG_HANDLE, IMG_HANDLE, IMG_UINT32);
58
typedef PVRSRV_ERROR (*PFN_GET_DC_BUFFERS)(IMG_HANDLE,
62
typedef PVRSRV_ERROR (*PFN_SWAP_TO_DC_BUFFER)(IMG_HANDLE,
68
typedef PVRSRV_ERROR (*PFN_SWAP_TO_DC_SYSTEM)(IMG_HANDLE, IMG_HANDLE);
69
typedef IMG_VOID (*PFN_QUERY_SWAP_COMMAND_ID)(IMG_HANDLE, IMG_HANDLE, IMG_HANDLE, IMG_HANDLE, IMG_UINT16*, IMG_BOOL*);
70
typedef IMG_VOID (*PFN_SET_DC_STATE)(IMG_HANDLE, IMG_UINT32);
72
typedef struct PVRSRV_DC_SRV2DISP_KMJTABLE_TAG
74
IMG_UINT32 ui32TableSize;
75
PFN_OPEN_DC_DEVICE pfnOpenDCDevice;
76
PFN_CLOSE_DC_DEVICE pfnCloseDCDevice;
77
PFN_ENUM_DC_FORMATS pfnEnumDCFormats;
78
PFN_ENUM_DC_DIMS pfnEnumDCDims;
79
PFN_GET_DC_SYSTEMBUFFER pfnGetDCSystemBuffer;
80
PFN_GET_DC_INFO pfnGetDCInfo;
81
PFN_GET_BUFFER_ADDR pfnGetBufferAddr;
82
PFN_CREATE_DC_SWAPCHAIN pfnCreateDCSwapChain;
83
PFN_DESTROY_DC_SWAPCHAIN pfnDestroyDCSwapChain;
84
PFN_SET_DC_DSTRECT pfnSetDCDstRect;
85
PFN_SET_DC_SRCRECT pfnSetDCSrcRect;
86
PFN_SET_DC_DSTCK pfnSetDCDstColourKey;
87
PFN_SET_DC_SRCCK pfnSetDCSrcColourKey;
88
PFN_GET_DC_BUFFERS pfnGetDCBuffers;
89
PFN_SWAP_TO_DC_BUFFER pfnSwapToDCBuffer;
90
PFN_SWAP_TO_DC_SYSTEM pfnSwapToDCSystem;
91
PFN_SET_DC_STATE pfnSetDCState;
92
PFN_QUERY_SWAP_COMMAND_ID pfnQuerySwapCommandID;
94
} PVRSRV_DC_SRV2DISP_KMJTABLE;
96
typedef IMG_BOOL (*PFN_ISR_HANDLER)(IMG_VOID*);
98
typedef PVRSRV_ERROR (*PFN_DC_REGISTER_DISPLAY_DEV)(PVRSRV_DC_SRV2DISP_KMJTABLE*, IMG_UINT32*);
99
typedef PVRSRV_ERROR (*PFN_DC_REMOVE_DISPLAY_DEV)(IMG_UINT32);
100
typedef PVRSRV_ERROR (*PFN_DC_OEM_FUNCTION)(IMG_UINT32, IMG_VOID*, IMG_UINT32, IMG_VOID*, IMG_UINT32);
101
typedef PVRSRV_ERROR (*PFN_DC_REGISTER_COMMANDPROCLIST)(IMG_UINT32, PPFN_CMD_PROC,IMG_UINT32[][2], IMG_UINT32);
102
typedef PVRSRV_ERROR (*PFN_DC_REMOVE_COMMANDPROCLIST)(IMG_UINT32, IMG_UINT32);
103
typedef IMG_VOID (*PFN_DC_CMD_COMPLETE)(IMG_HANDLE, IMG_BOOL);
104
typedef PVRSRV_ERROR (*PFN_DC_REGISTER_SYS_ISR)(PFN_ISR_HANDLER, IMG_VOID*, IMG_UINT32, IMG_UINT32);
105
typedef PVRSRV_ERROR (*PFN_DC_REGISTER_POWER)(IMG_UINT32, PFN_PRE_POWER, PFN_POST_POWER,
106
PFN_PRE_CLOCKSPEED_CHANGE, PFN_POST_CLOCKSPEED_CHANGE,
107
IMG_HANDLE, PVRSRV_DEV_POWER_STATE, PVRSRV_DEV_POWER_STATE);
109
typedef struct PVRSRV_DC_DISP2SRV_KMJTABLE_TAG
111
IMG_UINT32 ui32TableSize;
112
PFN_DC_REGISTER_DISPLAY_DEV pfnPVRSRVRegisterDCDevice;
113
PFN_DC_REMOVE_DISPLAY_DEV pfnPVRSRVRemoveDCDevice;
114
PFN_DC_OEM_FUNCTION pfnPVRSRVOEMFunction;
115
PFN_DC_REGISTER_COMMANDPROCLIST pfnPVRSRVRegisterCmdProcList;
116
PFN_DC_REMOVE_COMMANDPROCLIST pfnPVRSRVRemoveCmdProcList;
117
PFN_DC_CMD_COMPLETE pfnPVRSRVCmdComplete;
118
PFN_DC_REGISTER_SYS_ISR pfnPVRSRVRegisterSystemISRHandler;
119
PFN_DC_REGISTER_POWER pfnPVRSRVRegisterPowerDevice;
120
PFN_DC_CMD_COMPLETE pfnPVRSRVFreeCmdCompletePacket;
121
} PVRSRV_DC_DISP2SRV_KMJTABLE, *PPVRSRV_DC_DISP2SRV_KMJTABLE;
124
typedef struct DISPLAYCLASS_FLIP_COMMAND_TAG
127
IMG_HANDLE hExtDevice;
130
IMG_HANDLE hExtSwapChain;
133
IMG_HANDLE hExtBuffer;
136
IMG_HANDLE hPrivateTag;
139
IMG_UINT32 ui32ClipRectCount;
142
IMG_RECT *psClipRect;
145
IMG_UINT32 ui32SwapInterval;
147
} DISPLAYCLASS_FLIP_COMMAND;
149
#define DC_FLIP_COMMAND 0
151
#define DC_STATE_NO_FLUSH_COMMANDS 0
152
#define DC_STATE_FLUSH_COMMANDS 1
155
typedef IMG_BOOL (*PFN_DC_GET_PVRJTABLE)(PPVRSRV_DC_DISP2SRV_KMJTABLE);
157
IMG_IMPORT IMG_BOOL PVRGetDisplayClassJTable(PVRSRV_DC_DISP2SRV_KMJTABLE *psJTable);
160
#if defined (__cplusplus)