blob: 55111d311a9719cbfba5f86094ffa84970a5ec1d [file] [log] [blame]
/**********************************************************************
*
* Copyright (C) Imagination Technologies Ltd. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful but, except
* as otherwise stated in writing, without any warranty; without even the
* implied warranty of merchantability or fitness for a particular purpose.
* See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
*
* The full GNU General Public License is included in this distribution in
* the file called "COPYING".
*
* Contact Information:
* Imagination Technologies Ltd. <gpl-support@imgtec.com>
* Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK
*
******************************************************************************/
#if !defined (__KERNELDISPLAY_H__)
#define __KERNELDISPLAY_H__
#if defined (__cplusplus)
extern "C" {
#endif
typedef PVRSRV_ERROR (*PFN_OPEN_DC_DEVICE)(IMG_UINT32, IMG_HANDLE*, PVRSRV_SYNC_DATA*);
typedef PVRSRV_ERROR (*PFN_CLOSE_DC_DEVICE)(IMG_HANDLE);
typedef PVRSRV_ERROR (*PFN_ENUM_DC_FORMATS)(IMG_HANDLE, IMG_UINT32*, DISPLAY_FORMAT*);
typedef PVRSRV_ERROR (*PFN_ENUM_DC_DIMS)(IMG_HANDLE,
DISPLAY_FORMAT*,
IMG_UINT32*,
DISPLAY_DIMS*);
typedef PVRSRV_ERROR (*PFN_GET_DC_SYSTEMBUFFER)(IMG_HANDLE, IMG_HANDLE*);
typedef PVRSRV_ERROR (*PFN_GET_DC_INFO)(IMG_HANDLE, DISPLAY_INFO*);
typedef PVRSRV_ERROR (*PFN_CREATE_DC_SWAPCHAIN)(IMG_HANDLE,
IMG_UINT32,
DISPLAY_SURF_ATTRIBUTES*,
DISPLAY_SURF_ATTRIBUTES*,
IMG_UINT32,
PVRSRV_SYNC_DATA**,
IMG_UINT32,
IMG_HANDLE*,
IMG_UINT32*);
typedef PVRSRV_ERROR (*PFN_DESTROY_DC_SWAPCHAIN)(IMG_HANDLE,
IMG_HANDLE);
typedef PVRSRV_ERROR (*PFN_SET_DC_DSTRECT)(IMG_HANDLE, IMG_HANDLE, IMG_RECT*);
typedef PVRSRV_ERROR (*PFN_SET_DC_SRCRECT)(IMG_HANDLE, IMG_HANDLE, IMG_RECT*);
typedef PVRSRV_ERROR (*PFN_SET_DC_DSTCK)(IMG_HANDLE, IMG_HANDLE, IMG_UINT32);
typedef PVRSRV_ERROR (*PFN_SET_DC_SRCCK)(IMG_HANDLE, IMG_HANDLE, IMG_UINT32);
typedef PVRSRV_ERROR (*PFN_GET_DC_BUFFERS)(IMG_HANDLE,
IMG_HANDLE,
IMG_UINT32*,
IMG_HANDLE*);
typedef PVRSRV_ERROR (*PFN_SWAP_TO_DC_BUFFER)(IMG_HANDLE,
IMG_HANDLE,
IMG_UINT32,
IMG_HANDLE,
IMG_UINT32,
IMG_RECT*);
typedef PVRSRV_ERROR (*PFN_SWAP_TO_DC_SYSTEM)(IMG_HANDLE, IMG_HANDLE);
typedef IMG_VOID (*PFN_QUERY_SWAP_COMMAND_ID)(IMG_HANDLE, IMG_HANDLE, IMG_HANDLE, IMG_HANDLE, IMG_UINT16*, IMG_BOOL*);
typedef IMG_VOID (*PFN_SET_DC_STATE)(IMG_HANDLE, IMG_UINT32);
typedef struct PVRSRV_DC_SRV2DISP_KMJTABLE_TAG
{
IMG_UINT32 ui32TableSize;
PFN_OPEN_DC_DEVICE pfnOpenDCDevice;
PFN_CLOSE_DC_DEVICE pfnCloseDCDevice;
PFN_ENUM_DC_FORMATS pfnEnumDCFormats;
PFN_ENUM_DC_DIMS pfnEnumDCDims;
PFN_GET_DC_SYSTEMBUFFER pfnGetDCSystemBuffer;
PFN_GET_DC_INFO pfnGetDCInfo;
PFN_GET_BUFFER_ADDR pfnGetBufferAddr;
PFN_CREATE_DC_SWAPCHAIN pfnCreateDCSwapChain;
PFN_DESTROY_DC_SWAPCHAIN pfnDestroyDCSwapChain;
PFN_SET_DC_DSTRECT pfnSetDCDstRect;
PFN_SET_DC_SRCRECT pfnSetDCSrcRect;
PFN_SET_DC_DSTCK pfnSetDCDstColourKey;
PFN_SET_DC_SRCCK pfnSetDCSrcColourKey;
PFN_GET_DC_BUFFERS pfnGetDCBuffers;
PFN_SWAP_TO_DC_BUFFER pfnSwapToDCBuffer;
PFN_SWAP_TO_DC_SYSTEM pfnSwapToDCSystem;
PFN_SET_DC_STATE pfnSetDCState;
PFN_QUERY_SWAP_COMMAND_ID pfnQuerySwapCommandID;
} PVRSRV_DC_SRV2DISP_KMJTABLE;
typedef IMG_BOOL (*PFN_ISR_HANDLER)(IMG_VOID*);
typedef PVRSRV_ERROR (*PFN_DC_REGISTER_DISPLAY_DEV)(PVRSRV_DC_SRV2DISP_KMJTABLE*, IMG_UINT32*);
typedef PVRSRV_ERROR (*PFN_DC_REMOVE_DISPLAY_DEV)(IMG_UINT32);
typedef PVRSRV_ERROR (*PFN_DC_OEM_FUNCTION)(IMG_UINT32, IMG_VOID*, IMG_UINT32, IMG_VOID*, IMG_UINT32);
typedef PVRSRV_ERROR (*PFN_DC_REGISTER_COMMANDPROCLIST)(IMG_UINT32, PPFN_CMD_PROC,IMG_UINT32[][2], IMG_UINT32);
typedef PVRSRV_ERROR (*PFN_DC_REMOVE_COMMANDPROCLIST)(IMG_UINT32, IMG_UINT32);
typedef IMG_VOID (*PFN_DC_CMD_COMPLETE)(IMG_HANDLE, IMG_BOOL);
typedef PVRSRV_ERROR (*PFN_DC_REGISTER_SYS_ISR)(PFN_ISR_HANDLER, IMG_VOID*, IMG_UINT32, IMG_UINT32);
typedef PVRSRV_ERROR (*PFN_DC_REGISTER_POWER)(IMG_UINT32, PFN_PRE_POWER, PFN_POST_POWER,
PFN_PRE_CLOCKSPEED_CHANGE, PFN_POST_CLOCKSPEED_CHANGE,
IMG_HANDLE, PVRSRV_DEV_POWER_STATE, PVRSRV_DEV_POWER_STATE);
typedef struct _PVRSRV_KERNEL_MEM_INFO_* PDC_MEM_INFO;
typedef PVRSRV_ERROR (*PFN_DC_MEMINFO_GET_CPU_VADDR)(PDC_MEM_INFO, IMG_CPU_VIRTADDR *pVAddr);
typedef PVRSRV_ERROR (*PFN_DC_MEMINFO_GET_CPU_PADDR)(PDC_MEM_INFO, IMG_SIZE_T uByteOffset, IMG_CPU_PHYADDR *pPAddr);
typedef PVRSRV_ERROR (*PFN_DC_MEMINFO_GET_BYTE_SIZE)(PDC_MEM_INFO, IMG_SIZE_T *uByteSize);
typedef IMG_BOOL (*PFN_DC_MEMINFO_IS_PHYS_CONTIG)(PDC_MEM_INFO);
typedef struct PVRSRV_DC_DISP2SRV_KMJTABLE_TAG
{
IMG_UINT32 ui32TableSize;
PFN_DC_REGISTER_DISPLAY_DEV pfnPVRSRVRegisterDCDevice;
PFN_DC_REMOVE_DISPLAY_DEV pfnPVRSRVRemoveDCDevice;
PFN_DC_OEM_FUNCTION pfnPVRSRVOEMFunction;
PFN_DC_REGISTER_COMMANDPROCLIST pfnPVRSRVRegisterCmdProcList;
PFN_DC_REMOVE_COMMANDPROCLIST pfnPVRSRVRemoveCmdProcList;
PFN_DC_CMD_COMPLETE pfnPVRSRVCmdComplete;
PFN_DC_REGISTER_SYS_ISR pfnPVRSRVRegisterSystemISRHandler;
PFN_DC_REGISTER_POWER pfnPVRSRVRegisterPowerDevice;
PFN_DC_CMD_COMPLETE pfnPVRSRVFreeCmdCompletePacket;
PFN_DC_MEMINFO_GET_CPU_VADDR pfnPVRSRVDCMemInfoGetCpuVAddr;
PFN_DC_MEMINFO_GET_CPU_PADDR pfnPVRSRVDCMemInfoGetCpuPAddr;
PFN_DC_MEMINFO_GET_BYTE_SIZE pfnPVRSRVDCMemInfoGetByteSize;
PFN_DC_MEMINFO_IS_PHYS_CONTIG pfnPVRSRVDCMemInfoIsPhysContig;
} PVRSRV_DC_DISP2SRV_KMJTABLE, *PPVRSRV_DC_DISP2SRV_KMJTABLE;
typedef struct DISPLAYCLASS_FLIP_COMMAND_TAG
{
IMG_HANDLE hExtDevice;
IMG_HANDLE hExtSwapChain;
IMG_HANDLE hExtBuffer;
IMG_HANDLE hPrivateTag;
IMG_UINT32 ui32ClipRectCount;
IMG_RECT *psClipRect;
IMG_UINT32 ui32SwapInterval;
} DISPLAYCLASS_FLIP_COMMAND;
typedef struct DISPLAYCLASS_FLIP_COMMAND2_TAG
{
IMG_HANDLE hExtDevice;
IMG_HANDLE hExtSwapChain;
IMG_HANDLE hUnused;
IMG_UINT32 ui32SwapInterval;
IMG_PVOID pvPrivData;
IMG_UINT32 ui32PrivDataLength;
PDC_MEM_INFO *ppsMemInfos;
IMG_UINT32 ui32NumMemInfos;
} DISPLAYCLASS_FLIP_COMMAND2;
#define DC_FLIP_COMMAND 0
#define DC_STATE_NO_FLUSH_COMMANDS 0
#define DC_STATE_FLUSH_COMMANDS 1
typedef IMG_BOOL (*PFN_DC_GET_PVRJTABLE)(PPVRSRV_DC_DISP2SRV_KMJTABLE);
IMG_IMPORT IMG_BOOL PVRGetDisplayClassJTable(PVRSRV_DC_DISP2SRV_KMJTABLE *psJTable);
#if defined (__cplusplus)
}
#endif
#endif