/********************************************************************** * * 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. * 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 #define DC_STATE_FORCE_SWAP_TO_SYSTEM 2 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