/*************************************************************************/ /*! @Title PVR Bridge Functionality @Copyright Copyright (c) Imagination Technologies Ltd. All Rights Reserved @Description Header for the PVR Bridge code @License Dual MIT/GPLv2 The contents of this file are subject to the MIT license as set out below. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. Alternatively, the contents of this file may be used under the terms of the GNU General Public License Version 2 ("GPL") in which case the provisions of GPL are applicable instead of those above. If you wish to allow use of your version of this file only under the terms of GPL, and not to allow others to use your version of this file under the terms of the MIT license, indicate your decision by deleting the provisions above and replace them with the notice and other provisions required by GPL as set out in the file called "GPL-COPYING" included in this distribution. If you do not delete the provisions above, a recipient may use your version of this file under the terms of either the MIT license or GPL. This License is also included in this distribution in the file called "MIT-COPYING". EXCEPT AS OTHERWISE STATED IN A NEGOTIATED AGREEMENT: (A) THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT; AND (B) IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /**************************************************************************/ #ifndef __PVR_BRIDGE_H__ #define __PVR_BRIDGE_H__ #if defined (__cplusplus) extern "C" { #endif #include "servicesint.h" /* * Bridge Cmd Ids */ #ifdef __linux__ #include /*!< Nov 2006: according to ioctl-number.txt 'g' wasn't in use. */ #define PVRSRV_IOC_GID 'g' #define PVRSRV_IO(INDEX) _IO(PVRSRV_IOC_GID, INDEX, PVRSRV_BRIDGE_PACKAGE) #define PVRSRV_IOW(INDEX) _IOW(PVRSRV_IOC_GID, INDEX, PVRSRV_BRIDGE_PACKAGE) #define PVRSRV_IOR(INDEX) _IOR(PVRSRV_IOC_GID, INDEX, PVRSRV_BRIDGE_PACKAGE) #define PVRSRV_IOWR(INDEX) _IOWR(PVRSRV_IOC_GID, INDEX, PVRSRV_BRIDGE_PACKAGE) #else /* __linux__ */ #if defined(__QNXNTO__) #define PVRSRV_IOC_GID (0x0UL) #else #error Unknown platform: Cannot define ioctls #endif #define PVRSRV_IO(INDEX) (PVRSRV_IOC_GID + (INDEX)) #define PVRSRV_IOW(INDEX) (PVRSRV_IOC_GID + (INDEX)) #define PVRSRV_IOR(INDEX) (PVRSRV_IOC_GID + (INDEX)) #define PVRSRV_IOWR(INDEX) (PVRSRV_IOC_GID + (INDEX)) #define PVRSRV_BRIDGE_BASE PVRSRV_IOC_GID #endif /* __linux__ */ /* * Note *REMEMBER* to update PVRSRV_BRIDGE_LAST_CMD (below) if you add any new * bridge commands! * The command number of PVRSRV_BRIDGE_UM_KM_COMPAT_CHECK needs to be maintained as 0 across previous ddks, for compatibility check command to execute successfully */ #define PVRSRV_BRIDGE_UMKM_CMD_FIRST 0UL #define PVRSRV_BRIDGE_UM_KM_COMPAT_CHECK PVRSRV_IOWR(0) #define PVRSRV_BRIDGE_UMKM_CMD_LAST (0) #define PVRSRV_BRIDGE_CORE_CMD_FIRST (PVRSRV_BRIDGE_UMKM_CMD_LAST + 1) #define PVRSRV_BRIDGE_ENUM_DEVICES PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+0) /*!< enumerate device bridge index */ #define PVRSRV_BRIDGE_ACQUIRE_DEVICEINFO PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+1) /*!< acquire device data bridge index */ #define PVRSRV_BRIDGE_RELEASE_DEVICEINFO PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+2) /*!< release device data bridge index */ #define PVRSRV_BRIDGE_CREATE_DEVMEMCONTEXT PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+3) /*!< create device addressable memory context */ #define PVRSRV_BRIDGE_DESTROY_DEVMEMCONTEXT PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+4) /*!< destroy device addressable memory context */ #define PVRSRV_BRIDGE_GET_DEVMEM_HEAPINFO PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+5) /*!< get device memory heap info */ #define PVRSRV_BRIDGE_ALLOC_DEVICEMEM PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+6) /*!< alloc device memory bridge index */ #define PVRSRV_BRIDGE_FREE_DEVICEMEM PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+7) /*!< free device memory bridge index */ #define PVRSRV_BRIDGE_GETFREE_DEVICEMEM PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+8) /*!< get free device memory bridge index */ #define PVRSRV_BRIDGE_CREATE_COMMANDQUEUE PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+9) /*!< create Cmd Q bridge index */ #define PVRSRV_BRIDGE_DESTROY_COMMANDQUEUE PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+10) /*!< destroy Cmd Q bridge index */ #define PVRSRV_BRIDGE_MHANDLE_TO_MMAP_DATA PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+11) /*!< generate mmap data from a memory handle */ #define PVRSRV_BRIDGE_CONNECT_SERVICES PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+12) /*!< services connect bridge index */ #define PVRSRV_BRIDGE_DISCONNECT_SERVICES PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+13) /*!< services disconnect bridge index */ #define PVRSRV_BRIDGE_WRAP_DEVICE_MEM PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+14) /*!< wrap device memory bridge index */ #define PVRSRV_BRIDGE_GET_DEVICEMEMINFO PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+15) /*!< read the kernel meminfo record */ #define PVRSRV_BRIDGE_RESERVE_DEV_VIRTMEM PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+16) #define PVRSRV_BRIDGE_FREE_DEV_VIRTMEM PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+17) #define PVRSRV_BRIDGE_MAP_EXT_MEMORY PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+18) #define PVRSRV_BRIDGE_UNMAP_EXT_MEMORY PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+19) #define PVRSRV_BRIDGE_MAP_DEV_MEMORY PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+20) #define PVRSRV_BRIDGE_UNMAP_DEV_MEMORY PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+21) #define PVRSRV_BRIDGE_MAP_MEM_INFO_TO_USER PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+22) #define PVRSRV_BRIDGE_UNMAP_MEM_INFO_FROM_USER PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+23) #define PVRSRV_BRIDGE_EXPORT_DEVICEMEM PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+24) #define PVRSRV_BRIDGE_RELEASE_MMAP_DATA PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+25) #define PVRSRV_BRIDGE_CHG_DEV_MEM_ATTRIBS PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+26) #define PVRSRV_BRIDGE_MAP_DEV_MEMORY_2 PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+27) #define PVRSRV_BRIDGE_EXPORT_DEVICEMEM_2 PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+28) #if defined (SUPPORT_ION) #define PVRSRV_BRIDGE_MAP_ION_HANDLE PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+29) #define PVRSRV_BRIDGE_UNMAP_ION_HANDLE PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+30) #define PVRSRV_BRIDGE_ION_CMD_LAST (PVRSRV_BRIDGE_CORE_CMD_FIRST+30) #else #define PVRSRV_BRIDGE_ION_CMD_LAST (PVRSRV_BRIDGE_CORE_CMD_FIRST+28) #endif #if defined (SUPPORT_DMABUF) #define PVRSRV_BRIDGE_DMABUF_CMD_FIRST (PVRSRV_BRIDGE_ION_CMD_LAST+1) #define PVRSRV_BRIDGE_MAP_DMABUF PVRSRV_IOWR(PVRSRV_BRIDGE_DMABUF_CMD_FIRST+0) #define PVRSRV_BRIDGE_UNMAP_DMABUF PVRSRV_IOWR(PVRSRV_BRIDGE_DMABUF_CMD_FIRST+1) #define PVRSRV_BRIDGE_DMABUF_CMD_LAST (PVRSRV_BRIDGE_DMABUF_CMD_FIRST+1) #else #define PVRSRV_BRIDGE_DMABUF_CMD_LAST PVRSRV_BRIDGE_ION_CMD_LAST #endif #define PVRSRV_BRIDGE_CORE_CMD_LAST PVRSRV_BRIDGE_DMABUF_CMD_LAST /* SIM */ #define PVRSRV_BRIDGE_SIM_CMD_FIRST (PVRSRV_BRIDGE_CORE_CMD_LAST+1) #define PVRSRV_BRIDGE_PROCESS_SIMISR_EVENT PVRSRV_IOWR(PVRSRV_BRIDGE_SIM_CMD_FIRST+0) /*!< RTSIM pseudo ISR */ #define PVRSRV_BRIDGE_REGISTER_SIM_PROCESS PVRSRV_IOWR(PVRSRV_BRIDGE_SIM_CMD_FIRST+1) /*!< Register RTSIM process thread */ #define PVRSRV_BRIDGE_UNREGISTER_SIM_PROCESS PVRSRV_IOWR(PVRSRV_BRIDGE_SIM_CMD_FIRST+2) /*!< Unregister RTSIM process thread */ #define PVRSRV_BRIDGE_SIM_CMD_LAST (PVRSRV_BRIDGE_SIM_CMD_FIRST+2) /* User Mapping */ #define PVRSRV_BRIDGE_MAPPING_CMD_FIRST (PVRSRV_BRIDGE_SIM_CMD_LAST+1) #define PVRSRV_BRIDGE_MAPPHYSTOUSERSPACE PVRSRV_IOWR(PVRSRV_BRIDGE_MAPPING_CMD_FIRST+0) /*!< map CPU phys to user space */ #define PVRSRV_BRIDGE_UNMAPPHYSTOUSERSPACE PVRSRV_IOWR(PVRSRV_BRIDGE_MAPPING_CMD_FIRST+1) /*!< unmap CPU phys to user space */ #define PVRSRV_BRIDGE_GETPHYSTOUSERSPACEMAP PVRSRV_IOWR(PVRSRV_BRIDGE_MAPPING_CMD_FIRST+2) /*!< get user copy of Phys to Lin loopup table */ #define PVRSRV_BRIDGE_MAPPING_CMD_LAST (PVRSRV_BRIDGE_MAPPING_CMD_FIRST+2) #define PVRSRV_BRIDGE_STATS_CMD_FIRST (PVRSRV_BRIDGE_MAPPING_CMD_LAST+1) #define PVRSRV_BRIDGE_GET_FB_STATS PVRSRV_IOWR(PVRSRV_BRIDGE_STATS_CMD_FIRST+0) /*!< Get FB memory stats */ #define PVRSRV_BRIDGE_STATS_CMD_LAST (PVRSRV_BRIDGE_STATS_CMD_FIRST+0) /* API to retrieve misc. info. from services */ #define PVRSRV_BRIDGE_MISC_CMD_FIRST (PVRSRV_BRIDGE_STATS_CMD_LAST+1) #define PVRSRV_BRIDGE_GET_MISC_INFO PVRSRV_IOWR(PVRSRV_BRIDGE_MISC_CMD_FIRST+0) /*!< misc. info. */ #define PVRSRV_BRIDGE_RELEASE_MISC_INFO PVRSRV_IOWR(PVRSRV_BRIDGE_MISC_CMD_FIRST+1) /*!< misc. info. */ #define PVRSRV_BRIDGE_MISC_CMD_LAST (PVRSRV_BRIDGE_MISC_CMD_FIRST+1) /* Overlay ioctls */ #if defined (SUPPORT_OVERLAY_ROTATE_BLIT) #define PVRSRV_BRIDGE_OVERLAY_CMD_FIRST (PVRSRV_BRIDGE_MISC_CMD_LAST+1) #define PVRSRV_BRIDGE_INIT_3D_OVL_BLT_RES PVRSRV_IOWR(PVRSRV_BRIDGE_OVERLAY_CMD_FIRST+0) /*!< 3D Overlay rotate blit init */ #define PVRSRV_BRIDGE_DEINIT_3D_OVL_BLT_RES PVRSRV_IOWR(PVRSRV_BRIDGE_OVERLAY_CMD_FIRST+1) /*!< 3D Overlay rotate blit deinit */ #define PVRSRV_BRIDGE_OVERLAY_CMD_LAST (PVRSRV_BRIDGE_OVERLAY_CMD_FIRST+1) #else #define PVRSRV_BRIDGE_OVERLAY_CMD_LAST PVRSRV_BRIDGE_MISC_CMD_LAST #endif /* PDUMP */ #if defined(PDUMP) #define PVRSRV_BRIDGE_PDUMP_CMD_FIRST (PVRSRV_BRIDGE_OVERLAY_CMD_LAST+1) #define PVRSRV_BRIDGE_PDUMP_INIT PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+0) /*!< pdump command structure */ #define PVRSRV_BRIDGE_PDUMP_MEMPOL PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+1) /*!< pdump command structure */ #define PVRSRV_BRIDGE_PDUMP_DUMPMEM PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+2) /*!< pdump command structure */ #define PVRSRV_BRIDGE_PDUMP_REG PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+3) /*!< pdump command structure */ #define PVRSRV_BRIDGE_PDUMP_REGPOL PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+4) /*!< pdump command structure */ #define PVRSRV_BRIDGE_PDUMP_COMMENT PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+5) /*!< pdump command structure */ #define PVRSRV_BRIDGE_PDUMP_SETFRAME PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+6) /*!< pdump command structure */ #define PVRSRV_BRIDGE_PDUMP_ISCAPTURING PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+7) /*!< pdump command structure */ #define PVRSRV_BRIDGE_PDUMP_DUMPBITMAP PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+8) /*!< pdump command structure */ #define PVRSRV_BRIDGE_PDUMP_DUMPREADREG PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+9) /*!< pdump command structure */ #define PVRSRV_BRIDGE_PDUMP_SYNCPOL PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+10) /*!< pdump command structure */ #define PVRSRV_BRIDGE_PDUMP_DUMPSYNC PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+11) /*!< pdump command structure */ #define PVRSRV_BRIDGE_PDUMP_MEMPAGES PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+12) /*!< pdump command structure */ #define PVRSRV_BRIDGE_PDUMP_DRIVERINFO PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+13) /*!< pdump command structure */ #define PVRSRV_BRIDGE_PDUMP_DUMPPDDEVPADDR PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+15) /*!< pdump command structure */ #define PVRSRV_BRIDGE_PDUMP_CYCLE_COUNT_REG_READ PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+16) #define PVRSRV_BRIDGE_PDUMP_STARTINITPHASE PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+17) #define PVRSRV_BRIDGE_PDUMP_STOPINITPHASE PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+18) #define PVRSRV_BRIDGE_PDUMP_CMD_LAST (PVRSRV_BRIDGE_PDUMP_CMD_FIRST+18) #else /* Note we are carefull here not to leave a large gap in the ioctl numbers. * (Some ports may use these values to index into an array where large gaps can * waste memory) */ #define PVRSRV_BRIDGE_PDUMP_CMD_LAST PVRSRV_BRIDGE_OVERLAY_CMD_LAST #endif /* DisplayClass APIs */ #define PVRSRV_BRIDGE_OEM_CMD_FIRST (PVRSRV_BRIDGE_PDUMP_CMD_LAST+1) #define PVRSRV_BRIDGE_GET_OEMJTABLE PVRSRV_IOWR(PVRSRV_BRIDGE_OEM_CMD_FIRST+0) /*!< Get OEM Jtable */ #define PVRSRV_BRIDGE_OEM_CMD_LAST (PVRSRV_BRIDGE_OEM_CMD_FIRST+0) /* device class enum */ #define PVRSRV_BRIDGE_DEVCLASS_CMD_FIRST (PVRSRV_BRIDGE_OEM_CMD_LAST+1) #define PVRSRV_BRIDGE_MAP_DEVICECLASS_MEMORY PVRSRV_IOWR(PVRSRV_BRIDGE_DEVCLASS_CMD_FIRST+0) #define PVRSRV_BRIDGE_UNMAP_DEVICECLASS_MEMORY PVRSRV_IOWR(PVRSRV_BRIDGE_DEVCLASS_CMD_FIRST+1) #define PVRSRV_BRIDGE_ENUM_CLASS PVRSRV_IOWR(PVRSRV_BRIDGE_DEVCLASS_CMD_FIRST+2) #define PVRSRV_BRIDGE_DEVCLASS_CMD_LAST (PVRSRV_BRIDGE_DEVCLASS_CMD_FIRST+2) /* display class API */ #define PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST (PVRSRV_BRIDGE_DEVCLASS_CMD_LAST+1) #define PVRSRV_BRIDGE_OPEN_DISPCLASS_DEVICE PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+0) #define PVRSRV_BRIDGE_CLOSE_DISPCLASS_DEVICE PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+1) #define PVRSRV_BRIDGE_ENUM_DISPCLASS_FORMATS PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+2) #define PVRSRV_BRIDGE_ENUM_DISPCLASS_DIMS PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+3) #define PVRSRV_BRIDGE_GET_DISPCLASS_SYSBUFFER PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+4) #define PVRSRV_BRIDGE_GET_DISPCLASS_INFO PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+5) #define PVRSRV_BRIDGE_CREATE_DISPCLASS_SWAPCHAIN PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+6) #define PVRSRV_BRIDGE_DESTROY_DISPCLASS_SWAPCHAIN PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+7) #define PVRSRV_BRIDGE_SET_DISPCLASS_DSTRECT PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+8) #define PVRSRV_BRIDGE_SET_DISPCLASS_SRCRECT PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+9) #define PVRSRV_BRIDGE_SET_DISPCLASS_DSTCOLOURKEY PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+10) #define PVRSRV_BRIDGE_SET_DISPCLASS_SRCCOLOURKEY PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+11) #define PVRSRV_BRIDGE_GET_DISPCLASS_BUFFERS PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+12) #define PVRSRV_BRIDGE_SWAP_DISPCLASS_TO_BUFFER PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+13) #define PVRSRV_BRIDGE_SWAP_DISPCLASS_TO_BUFFER2 PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+14) #define PVRSRV_BRIDGE_SWAP_DISPCLASS_TO_SYSTEM PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+15) #define PVRSRV_BRIDGE_DISPCLASS_CMD_LAST (PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+15) /* buffer class API */ #define PVRSRV_BRIDGE_BUFCLASS_CMD_FIRST (PVRSRV_BRIDGE_DISPCLASS_CMD_LAST+1) #define PVRSRV_BRIDGE_OPEN_BUFFERCLASS_DEVICE PVRSRV_IOWR(PVRSRV_BRIDGE_BUFCLASS_CMD_FIRST+0) #define PVRSRV_BRIDGE_CLOSE_BUFFERCLASS_DEVICE PVRSRV_IOWR(PVRSRV_BRIDGE_BUFCLASS_CMD_FIRST+1) #define PVRSRV_BRIDGE_GET_BUFFERCLASS_INFO PVRSRV_IOWR(PVRSRV_BRIDGE_BUFCLASS_CMD_FIRST+2) #define PVRSRV_BRIDGE_GET_BUFFERCLASS_BUFFER PVRSRV_IOWR(PVRSRV_BRIDGE_BUFCLASS_CMD_FIRST+3) #define PVRSRV_BRIDGE_BUFCLASS_CMD_LAST (PVRSRV_BRIDGE_BUFCLASS_CMD_FIRST+3) /* Wrap/Unwrap external memory */ #define PVRSRV_BRIDGE_WRAP_CMD_FIRST (PVRSRV_BRIDGE_BUFCLASS_CMD_LAST+1) #define PVRSRV_BRIDGE_WRAP_EXT_MEMORY PVRSRV_IOWR(PVRSRV_BRIDGE_WRAP_CMD_FIRST+0) #define PVRSRV_BRIDGE_UNWRAP_EXT_MEMORY PVRSRV_IOWR(PVRSRV_BRIDGE_WRAP_CMD_FIRST+1) #define PVRSRV_BRIDGE_WRAP_CMD_LAST (PVRSRV_BRIDGE_WRAP_CMD_FIRST+1) /* Shared memory */ #define PVRSRV_BRIDGE_SHAREDMEM_CMD_FIRST (PVRSRV_BRIDGE_WRAP_CMD_LAST+1) #define PVRSRV_BRIDGE_ALLOC_SHARED_SYS_MEM PVRSRV_IOWR(PVRSRV_BRIDGE_SHAREDMEM_CMD_FIRST+0) #define PVRSRV_BRIDGE_FREE_SHARED_SYS_MEM PVRSRV_IOWR(PVRSRV_BRIDGE_SHAREDMEM_CMD_FIRST+1) #define PVRSRV_BRIDGE_MAP_MEMINFO_MEM PVRSRV_IOWR(PVRSRV_BRIDGE_SHAREDMEM_CMD_FIRST+2) #define PVRSRV_BRIDGE_UNMAP_MEMINFO_MEM PVRSRV_IOWR(PVRSRV_BRIDGE_SHAREDMEM_CMD_FIRST+3) #define PVRSRV_BRIDGE_SHAREDMEM_CMD_LAST (PVRSRV_BRIDGE_SHAREDMEM_CMD_FIRST+3) /* Intialisation Service support */ #define PVRSRV_BRIDGE_INITSRV_CMD_FIRST (PVRSRV_BRIDGE_SHAREDMEM_CMD_LAST+1) #define PVRSRV_BRIDGE_INITSRV_CONNECT PVRSRV_IOWR(PVRSRV_BRIDGE_INITSRV_CMD_FIRST+0) #define PVRSRV_BRIDGE_INITSRV_DISCONNECT PVRSRV_IOWR(PVRSRV_BRIDGE_INITSRV_CMD_FIRST+1) #define PVRSRV_BRIDGE_INITSRV_CMD_LAST (PVRSRV_BRIDGE_INITSRV_CMD_FIRST+1) /* Event Objects */ #define PVRSRV_BRIDGE_EVENT_OBJECT_CMD_FIRST (PVRSRV_BRIDGE_INITSRV_CMD_LAST+1) #define PVRSRV_BRIDGE_EVENT_OBJECT_WAIT PVRSRV_IOWR(PVRSRV_BRIDGE_EVENT_OBJECT_CMD_FIRST+0) #define PVRSRV_BRIDGE_EVENT_OBJECT_OPEN PVRSRV_IOWR(PVRSRV_BRIDGE_EVENT_OBJECT_CMD_FIRST+1) #define PVRSRV_BRIDGE_EVENT_OBJECT_CLOSE PVRSRV_IOWR(PVRSRV_BRIDGE_EVENT_OBJECT_CMD_FIRST+2) #define PVRSRV_BRIDGE_EVENT_OBJECT_CMD_LAST (PVRSRV_BRIDGE_EVENT_OBJECT_CMD_FIRST+2) /* Sync ops */ #define PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST (PVRSRV_BRIDGE_EVENT_OBJECT_CMD_LAST+1) #define PVRSRV_BRIDGE_CREATE_SYNC_INFO_MOD_OBJ PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+0) #define PVRSRV_BRIDGE_DESTROY_SYNC_INFO_MOD_OBJ PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+1) #define PVRSRV_BRIDGE_MODIFY_PENDING_SYNC_OPS PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+2) #define PVRSRV_BRIDGE_MODIFY_COMPLETE_SYNC_OPS PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+3) #define PVRSRV_BRIDGE_SYNC_OPS_TAKE_TOKEN PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+4) #define PVRSRV_BRIDGE_SYNC_OPS_FLUSH_TO_TOKEN PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+5) #define PVRSRV_BRIDGE_SYNC_OPS_FLUSH_TO_MOD_OBJ PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+6) #define PVRSRV_BRIDGE_SYNC_OPS_FLUSH_TO_DELTA PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+7) #define PVRSRV_BRIDGE_ALLOC_SYNC_INFO PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+8) #define PVRSRV_BRIDGE_FREE_SYNC_INFO PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+9) #define PVRSRV_BRIDGE_SYNC_OPS_CMD_LAST (PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+9) /* For sgx_bridge.h (msvdx_bridge.h should probably use these defines too) */ #define PVRSRV_BRIDGE_LAST_NON_DEVICE_CMD (PVRSRV_BRIDGE_SYNC_OPS_CMD_LAST+1) /****************************************************************************** * Bridge flags *****************************************************************************/ #define PVRSRV_KERNEL_MODE_CLIENT 1 /****************************************************************************** * Generic bridge structures *****************************************************************************/ /****************************************************************************** * bridge return structure *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_RETURN_TAG { PVRSRV_ERROR eError; IMG_HANDLE hData; }PVRSRV_BRIDGE_RETURN; /****************************************************************************** * bridge packaging structure *****************************************************************************/ typedef struct PVRSRV_BRIDGE_PACKAGE_TAG { IMG_UINT32 ui32BridgeID; /*!< ioctl/drvesc index */ IMG_UINT32 ui32Size; /*!< size of structure */ IMG_HANDLE hParamIn; /*!< input data buffer */ IMG_HANDLE hParamOut; /*!< output data buffer */ IMG_UINT32 ui32InBufferSize; /*!< size of input data buffer */ IMG_UINT32 ui32OutBufferSize; /*!< size of output data buffer */ IMG_HANDLE hKernelServices; /*!< kernel servcies handle */ }PVRSRV_BRIDGE_PACKAGE; /****************************************************************************** * Input structures for IOCTL/DRVESC *****************************************************************************/ /****************************************************************************** * 'bridge in' connect to services *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_CONNECT_SERVICES_TAG { IMG_UINT32 ui32Flags; } PVRSRV_BRIDGE_IN_CONNECT_SERVICES; /****************************************************************************** * 'bridge in' acquire device info *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_ACQUIRE_DEVICEINFO_TAG { IMG_UINT32 uiDevIndex; PVRSRV_DEVICE_TYPE eDeviceType; } PVRSRV_BRIDGE_IN_ACQUIRE_DEVICEINFO; /****************************************************************************** * 'bridge in' enum class *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_ENUMCLASS_TAG { PVRSRV_DEVICE_CLASS eDeviceClass; } PVRSRV_BRIDGE_IN_ENUMCLASS; /****************************************************************************** * 'bridge in' close display class device *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_CLOSE_DISPCLASS_DEVICE_TAG { IMG_HANDLE hDeviceKM; } PVRSRV_BRIDGE_IN_CLOSE_DISPCLASS_DEVICE; /****************************************************************************** * 'bridge in' enum display class formats *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_ENUM_DISPCLASS_FORMATS_TAG { IMG_HANDLE hDeviceKM; } PVRSRV_BRIDGE_IN_ENUM_DISPCLASS_FORMATS; /****************************************************************************** * 'bridge in' get display class sysbuffer *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_GET_DISPCLASS_SYSBUFFER_TAG { IMG_HANDLE hDeviceKM; } PVRSRV_BRIDGE_IN_GET_DISPCLASS_SYSBUFFER; /****************************************************************************** * 'bridge in' display class info *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_GET_DISPCLASS_INFO_TAG { IMG_HANDLE hDeviceKM; } PVRSRV_BRIDGE_IN_GET_DISPCLASS_INFO; /****************************************************************************** * 'bridge in' close buffer class device *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_CLOSE_BUFFERCLASS_DEVICE_TAG { IMG_HANDLE hDeviceKM; } PVRSRV_BRIDGE_IN_CLOSE_BUFFERCLASS_DEVICE; /****************************************************************************** * 'bridge in' close buffer class device *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_GET_BUFFERCLASS_INFO_TAG { IMG_HANDLE hDeviceKM; } PVRSRV_BRIDGE_IN_GET_BUFFERCLASS_INFO; /****************************************************************************** * 'bridge in' get device memory heap info *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_GET_DEVMEM_HEAPINFO_TAG { IMG_HANDLE hDevCookie; IMG_HANDLE hDevMemContext; }PVRSRV_BRIDGE_IN_GET_DEVMEM_HEAPINFO; /****************************************************************************** * 'bridge in' create device memory context *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_CREATE_DEVMEMCONTEXT_TAG { IMG_HANDLE hDevCookie; }PVRSRV_BRIDGE_IN_CREATE_DEVMEMCONTEXT; /****************************************************************************** * 'bridge in' destroy device memory context *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_DESTROY_DEVMEMCONTEXT_TAG { IMG_HANDLE hDevCookie; IMG_HANDLE hDevMemContext; }PVRSRV_BRIDGE_IN_DESTROY_DEVMEMCONTEXT; /****************************************************************************** * 'bridge in' alloc device memory *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_ALLOCDEVICEMEM_TAG { IMG_HANDLE hDevCookie; IMG_HANDLE hDevMemHeap; IMG_HANDLE hPrivData; IMG_UINT32 ui32PrivDataLength; IMG_UINT32 ui32Attribs; IMG_SIZE_T uSize; IMG_SIZE_T uAlignment; IMG_UINT32 ui32ChunkSize; IMG_UINT32 ui32NumVirtChunks; IMG_UINT32 ui32NumPhysChunks; IMG_HANDLE hMapChunk; }PVRSRV_BRIDGE_IN_ALLOCDEVICEMEM; /****************************************************************************** * 'bridge in' free device memory *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_FREEDEVICEMEM_TAG { IMG_HANDLE hDevCookie; IMG_HANDLE hKernelMemInfo; }PVRSRV_BRIDGE_IN_FREEDEVICEMEM; /****************************************************************************** * 'bridge in' export device memory *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_EXPORTDEVICEMEM_TAG { IMG_HANDLE hDevCookie; IMG_HANDLE hKernelMemInfo; }PVRSRV_BRIDGE_IN_EXPORTDEVICEMEM; /****************************************************************************** * 'bridge in' map ion handle *****************************************************************************/ #define ION_IMPORT_MAX_FDS 3 #define ION_IMPORT_MAX_CHUNK_COUNT 3 typedef struct _PVRSRV_BRIDGE_IN_MAP_ION_HANDLE_ { IMG_UINT32 ui32NumFDs; IMG_INT32 ai32BufferFDs[ION_IMPORT_MAX_FDS]; IMG_UINT32 ui32Attribs; IMG_UINT32 ui32ChunkCount; IMG_SIZE_T auiOffset[ION_IMPORT_MAX_CHUNK_COUNT]; IMG_SIZE_T auiSize[ION_IMPORT_MAX_CHUNK_COUNT]; IMG_HANDLE hDevCookie; IMG_HANDLE hDevMemHeap; } PVRSRV_BRIDGE_IN_MAP_ION_HANDLE; /****************************************************************************** * 'bridge in' unmap ion handle *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_UNMAP_ION_HANDLE_TAG { IMG_HANDLE hKernelMemInfo; }PVRSRV_BRIDGE_IN_UNMAP_ION_HANDLE; /****************************************************************************** * 'bridge in' map dmabuf *****************************************************************************/ typedef struct _PVRSRV_BRIDGE_IN_MAP_DMABUF_ { IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */ IMG_INT32 i32FD; IMG_SIZE_T uiOffset; IMG_SIZE_T uiSize; IMG_UINT32 ui32Attribs; IMG_HANDLE hDevCookie; IMG_HANDLE hDevMemHeap; } PVRSRV_BRIDGE_IN_MAP_DMABUF; /****************************************************************************** * 'bridge in' unmap dmabuf *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_UNMAP_DMABUF_TAG { IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */ IMG_HANDLE hKernelMemInfo; }PVRSRV_BRIDGE_IN_UNMAP_DMABUF; /****************************************************************************** * 'bridge in' get free device memory *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_GETFREEDEVICEMEM_TAG { IMG_UINT32 ui32Flags; } PVRSRV_BRIDGE_IN_GETFREEDEVICEMEM; /****************************************************************************** * 'bridge in' create Cmd Q *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_CREATECOMMANDQUEUE_TAG { IMG_HANDLE hDevCookie; IMG_SIZE_T uQueueSize; }PVRSRV_BRIDGE_IN_CREATECOMMANDQUEUE; /****************************************************************************** * 'bridge in' destroy Cmd Q *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_DESTROYCOMMANDQUEUE_TAG { IMG_HANDLE hDevCookie; PVRSRV_QUEUE_INFO *psQueueInfo; }PVRSRV_BRIDGE_IN_DESTROYCOMMANDQUEUE; /****************************************************************************** * 'bridge in' get full map data *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_MHANDLE_TO_MMAP_DATA_TAG { IMG_HANDLE hMHandle; /* Handle associated with the memory that needs to be mapped */ } PVRSRV_BRIDGE_IN_MHANDLE_TO_MMAP_DATA; /****************************************************************************** * 'bridge in' get full map data *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_RELEASE_MMAP_DATA_TAG { IMG_HANDLE hMHandle; /* Handle associated with the memory that needs to be mapped */ } PVRSRV_BRIDGE_IN_RELEASE_MMAP_DATA; /****************************************************************************** * 'bridge in' reserve vm *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_RESERVE_DEV_VIRTMEM_TAG { IMG_HANDLE hDevMemHeap; IMG_DEV_VIRTADDR *psDevVAddr; IMG_SIZE_T uSize; IMG_SIZE_T uAlignment; }PVRSRV_BRIDGE_IN_RESERVE_DEV_VIRTMEM; /****************************************************************************** * 'bridge out' connect to services *****************************************************************************/ typedef struct PVRSRV_BRIDGE_OUT_CONNECT_SERVICES_TAG { PVRSRV_ERROR eError; IMG_UINT8 ui8KernelArch; IMG_UINT64 hKernelServices; /* actually a IMG_HANDLE retrurnd from KM */ }PVRSRV_BRIDGE_OUT_CONNECT_SERVICES; /****************************************************************************** * 'bridge out' reserve vm *****************************************************************************/ typedef struct PVRSRV_BRIDGE_OUT_RESERVE_DEV_VIRTMEM_TAG { PVRSRV_ERROR eError; IMG_HANDLE hKernelMemInfo; IMG_HANDLE hKernelSyncInfo; PVRSRV_CLIENT_MEM_INFO sClientMemInfo; PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo; }PVRSRV_BRIDGE_OUT_RESERVE_DEV_VIRTMEM; /****************************************************************************** * 'bridge in' free vm *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_FREE_DEV_VIRTMEM_TAG { IMG_HANDLE hKernelMemInfo; PVRSRV_CLIENT_MEM_INFO sClientMemInfo; PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo; }PVRSRV_BRIDGE_IN_FREE_DEV_VIRTMEM; /****************************************************************************** * 'bridge in' map dev memory allocation to another heap *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_MAP_DEV_MEMORY_TAG { IMG_HANDLE hKernelMemInfo; IMG_HANDLE hDstDevMemHeap; }PVRSRV_BRIDGE_IN_MAP_DEV_MEMORY; /****************************************************************************** * 'bridge out' map dev memory allocation to another heap *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_MAP_DEV_MEMORY_TAG { PVRSRV_ERROR eError; PVRSRV_CLIENT_MEM_INFO sDstClientMemInfo; PVRSRV_CLIENT_SYNC_INFO sDstClientSyncInfo; }PVRSRV_BRIDGE_OUT_MAP_DEV_MEMORY; /****************************************************************************** * 'bridge in' unmap dev memory allocation *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_UNMAP_DEV_MEMORY_TAG { IMG_HANDLE hKernelMemInfo; }PVRSRV_BRIDGE_IN_UNMAP_DEV_MEMORY; /****************************************************************************** * 'bridge in' map pages *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_MAP_EXT_MEMORY_TAG { IMG_HANDLE hKernelMemInfo; IMG_SYS_PHYADDR *psSysPAddr; IMG_UINT32 ui32Flags; }PVRSRV_BRIDGE_IN_MAP_EXT_MEMORY; /****************************************************************************** * 'bridge in' unmap pages *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_UNMAP_EXT_MEMORY_TAG { IMG_UINT32 ui32BridgeFlags; /* Must be first member of structure */ PVRSRV_CLIENT_MEM_INFO sClientMemInfo; PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo; IMG_UINT32 ui32Flags; }PVRSRV_BRIDGE_IN_UNMAP_EXT_MEMORY; /****************************************************************************** * 'bridge in' map device class buffer pages *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_MAP_DEVICECLASS_MEMORY_TAG { IMG_HANDLE hDeviceClassBuffer; IMG_HANDLE hDevMemContext; }PVRSRV_BRIDGE_IN_MAP_DEVICECLASS_MEMORY; /****************************************************************************** * 'bridge out' map device class buffer pages *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_MAP_DEVICECLASS_MEMORY_TAG { PVRSRV_ERROR eError; PVRSRV_CLIENT_MEM_INFO sClientMemInfo; PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo; IMG_HANDLE hKernelMemInfo; IMG_HANDLE hMappingInfo; }PVRSRV_BRIDGE_OUT_MAP_DEVICECLASS_MEMORY; /****************************************************************************** * 'bridge in' unmap device class buffer pages *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_UNMAP_DEVICECLASS_MEMORY_TAG { IMG_HANDLE hKernelMemInfo; }PVRSRV_BRIDGE_IN_UNMAP_DEVICECLASS_MEMORY; /****************************************************************************** * 'bridge in' pdump memory poll *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_PDUMP_MEMPOL_TAG { IMG_HANDLE hKernelMemInfo; IMG_UINT32 ui32Offset; IMG_UINT32 ui32Value; IMG_UINT32 ui32Mask; PDUMP_POLL_OPERATOR eOperator; IMG_UINT32 ui32Flags; }PVRSRV_BRIDGE_IN_PDUMP_MEMPOL; /****************************************************************************** * 'bridge in' pdump sync poll *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_PDUMP_SYNCPOL_TAG { IMG_HANDLE hKernelSyncInfo; IMG_BOOL bIsRead; IMG_BOOL bUseLastOpDumpVal; IMG_UINT32 ui32Value; IMG_UINT32 ui32Mask; }PVRSRV_BRIDGE_IN_PDUMP_SYNCPOL; /****************************************************************************** * 'bridge in' pdump dump memory *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_PDUMP_DUMPMEM_TAG { IMG_HANDLE hLinAddr; IMG_HANDLE hAltLinAddr; IMG_HANDLE hKernelMemInfo; IMG_UINT32 ui32Offset; IMG_UINT32 ui32Bytes; IMG_UINT32 ui32Flags; }PVRSRV_BRIDGE_IN_PDUMP_DUMPMEM; /****************************************************************************** * 'bridge in' pdump dump sync *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_PDUMP_DUMPSYNC_TAG { IMG_HANDLE hAltLinAddr; IMG_HANDLE hKernelSyncInfo; IMG_UINT32 ui32Offset; IMG_UINT32 ui32Bytes; }PVRSRV_BRIDGE_IN_PDUMP_DUMPSYNC; /****************************************************************************** * 'bridge in' pdump dump reg *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_PDUMP_DUMPREG_TAG { IMG_HANDLE hDevCookie; PVRSRV_HWREG sHWReg; IMG_UINT32 ui32Flags; IMG_CHAR szRegRegion[32]; }PVRSRV_BRIDGE_IN_PDUMP_DUMPREG; /****************************************************************************** * 'bridge in' pdump dump reg *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_PDUMP_REGPOL_TAG { IMG_HANDLE hDevCookie; PVRSRV_HWREG sHWReg; IMG_UINT32 ui32Mask; IMG_UINT32 ui32Flags; IMG_CHAR szRegRegion[32]; }PVRSRV_BRIDGE_IN_PDUMP_REGPOL; /****************************************************************************** * 'bridge in' pdump dump PD reg *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_PDUMP_DUMPPDREG_TAG { PVRSRV_HWREG sHWReg; IMG_UINT32 ui32Flags; }PVRSRV_BRIDGE_IN_PDUMP_DUMPPDREG; /****************************************************************************** * 'bridge in' pdump dump mem pages *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_PDUMP_MEMPAGES_TAG { IMG_HANDLE hDevCookie; IMG_HANDLE hKernelMemInfo; IMG_DEV_PHYADDR *pPages; IMG_UINT32 ui32NumPages; IMG_DEV_VIRTADDR sDevVAddr; IMG_UINT32 ui32Start; IMG_UINT32 ui32Length; IMG_UINT32 ui32Flags; }PVRSRV_BRIDGE_IN_PDUMP_MEMPAGES; /****************************************************************************** * 'bridge in' pdump dump comment *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_PDUMP_COMMENT_TAG { IMG_CHAR szComment[PVRSRV_PDUMP_MAX_COMMENT_SIZE]; IMG_UINT32 ui32Flags; }PVRSRV_BRIDGE_IN_PDUMP_COMMENT; /****************************************************************************** * 'bridge in' pdump set frame *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_PDUMP_SETFRAME_TAG { IMG_UINT32 ui32Frame; }PVRSRV_BRIDGE_IN_PDUMP_SETFRAME; /****************************************************************************** * 'bridge in' pdump dump bitmap *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_PDUMP_BITMAP_TAG { IMG_HANDLE hDevCookie; IMG_CHAR szFileName[PVRSRV_PDUMP_MAX_FILENAME_SIZE]; IMG_UINT32 ui32FileOffset; IMG_UINT32 ui32Width; IMG_UINT32 ui32Height; IMG_UINT32 ui32StrideInBytes; IMG_DEV_VIRTADDR sDevBaseAddr; IMG_HANDLE hDevMemContext; IMG_UINT32 ui32Size; PDUMP_PIXEL_FORMAT ePixelFormat; PDUMP_MEM_FORMAT eMemFormat; IMG_UINT32 ui32Flags; }PVRSRV_BRIDGE_IN_PDUMP_BITMAP; /****************************************************************************** * 'bridge in' pdump dump read reg *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_PDUMP_READREG_TAG { IMG_HANDLE hDevCookie; IMG_CHAR szFileName[PVRSRV_PDUMP_MAX_FILENAME_SIZE]; IMG_UINT32 ui32FileOffset; IMG_UINT32 ui32Address; IMG_UINT32 ui32Size; IMG_UINT32 ui32Flags; IMG_CHAR szRegRegion[32]; }PVRSRV_BRIDGE_IN_PDUMP_READREG; /****************************************************************************** * 'bridge in' pdump dump driver-info *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_PDUMP_DRIVERINFO_TAG { IMG_CHAR szString[PVRSRV_PDUMP_MAX_COMMENT_SIZE]; IMG_BOOL bContinuous; }PVRSRV_BRIDGE_IN_PDUMP_DRIVERINFO; typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_PDUMP_DUMPPDDEVPADDR_TAG { IMG_HANDLE hKernelMemInfo; IMG_UINT32 ui32Offset; IMG_DEV_PHYADDR sPDDevPAddr; }PVRSRV_BRIDGE_IN_PDUMP_DUMPPDDEVPADDR; /****************************************************************************** * 'bridge in' pdump cycle count register read *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_PDUM_IN_CYCLE_COUNT_REG_READ_TAG { IMG_HANDLE hDevCookie; IMG_UINT32 ui32RegOffset; IMG_BOOL bLastFrame; }PVRSRV_BRIDGE_IN_PDUMP_CYCLE_COUNT_REG_READ; /***************************************************************************** * Output structures for BRIDGEs ****************************************************************************/ /****************************************************************************** * 'bridge out' enum. devices *****************************************************************************/ typedef struct PVRSRV_BRIDGE_OUT_ENUMDEVICE_TAG { PVRSRV_ERROR eError; IMG_UINT32 ui32NumDevices; PVRSRV_DEVICE_IDENTIFIER asDeviceIdentifier[PVRSRV_MAX_DEVICES]; }PVRSRV_BRIDGE_OUT_ENUMDEVICE; /****************************************************************************** * 'bridge out' acquire device info *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_ACQUIRE_DEVICEINFO_TAG { PVRSRV_ERROR eError; IMG_HANDLE hDevCookie; } PVRSRV_BRIDGE_OUT_ACQUIRE_DEVICEINFO; /****************************************************************************** * 'bridge out' enum. class devices *****************************************************************************/ typedef struct PVRSRV_BRIDGE_OUT_ENUMCLASS_TAG { PVRSRV_ERROR eError; IMG_UINT32 ui32NumDevices; IMG_UINT32 ui32DevID[PVRSRV_MAX_DEVICES]; }PVRSRV_BRIDGE_OUT_ENUMCLASS; /****************************************************************************** * 'bridge in' open display class devices *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_OPEN_DISPCLASS_DEVICE_TAG { IMG_UINT32 ui32DeviceID; IMG_HANDLE hDevCookie; }PVRSRV_BRIDGE_IN_OPEN_DISPCLASS_DEVICE; /****************************************************************************** * 'bridge out' open display class devices *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_OPEN_DISPCLASS_DEVICE_TAG { PVRSRV_ERROR eError; IMG_HANDLE hDeviceKM; }PVRSRV_BRIDGE_OUT_OPEN_DISPCLASS_DEVICE; /****************************************************************************** * 'bridge in' wrap pages *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_WRAP_EXT_MEMORY_TAG { IMG_HANDLE hDevCookie; IMG_HANDLE hDevMemContext; IMG_VOID *pvLinAddr; IMG_SIZE_T uByteSize; IMG_SIZE_T uPageOffset; IMG_BOOL bPhysContig; IMG_UINT32 ui32NumPageTableEntries; IMG_SYS_PHYADDR *psSysPAddr; IMG_UINT32 ui32Flags; }PVRSRV_BRIDGE_IN_WRAP_EXT_MEMORY; /****************************************************************************** * 'bridge out' wrap pages *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_WRAP_EXT_MEMORY_TAG { PVRSRV_ERROR eError; PVRSRV_CLIENT_MEM_INFO sClientMemInfo; PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo; }PVRSRV_BRIDGE_OUT_WRAP_EXT_MEMORY; /****************************************************************************** * 'bridge in' unwrap pages *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_UNWRAP_EXT_MEMORY_TAG { IMG_HANDLE hKernelMemInfo; }PVRSRV_BRIDGE_IN_UNWRAP_EXT_MEMORY; #define PVRSRV_MAX_DC_DISPLAY_FORMATS 10 #define PVRSRV_MAX_DC_DISPLAY_DIMENSIONS 10 #define PVRSRV_MAX_DC_SWAPCHAIN_BUFFERS 4 #define PVRSRV_MAX_DC_CLIP_RECTS 32 /****************************************************************************** * 'bridge out' enum display class formats *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_ENUM_DISPCLASS_FORMATS_TAG { PVRSRV_ERROR eError; IMG_UINT32 ui32Count; DISPLAY_FORMAT asFormat[PVRSRV_MAX_DC_DISPLAY_FORMATS]; }PVRSRV_BRIDGE_OUT_ENUM_DISPCLASS_FORMATS; /****************************************************************************** * 'bridge in' enum display class dims *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_ENUM_DISPCLASS_DIMS_TAG { IMG_HANDLE hDeviceKM; DISPLAY_FORMAT sFormat; }PVRSRV_BRIDGE_IN_ENUM_DISPCLASS_DIMS; /****************************************************************************** * 'bridge out' enum display class dims *****************************************************************************/ typedef struct PVRSRV_BRIDGE_OUT_ENUM_DISPCLASS_DIMS_TAG { PVRSRV_ERROR eError; IMG_UINT32 ui32Count; DISPLAY_DIMS asDim[PVRSRV_MAX_DC_DISPLAY_DIMENSIONS]; }PVRSRV_BRIDGE_OUT_ENUM_DISPCLASS_DIMS; /****************************************************************************** * 'bridge out' enum display class dims *****************************************************************************/ typedef struct PVRSRV_BRIDGE_OUT_GET_DISPCLASS_INFO_TAG { PVRSRV_ERROR eError; DISPLAY_INFO sDisplayInfo; }PVRSRV_BRIDGE_OUT_GET_DISPCLASS_INFO; /****************************************************************************** * 'bridge out' get display class system buffer *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_GET_DISPCLASS_SYSBUFFER_TAG { PVRSRV_ERROR eError; IMG_HANDLE hBuffer; }PVRSRV_BRIDGE_OUT_GET_DISPCLASS_SYSBUFFER; /****************************************************************************** * 'bridge in' create swap chain *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_CREATE_DISPCLASS_SWAPCHAIN_TAG { IMG_HANDLE hDeviceKM; DISPLAY_SURF_ATTRIBUTES sDstSurfAttrib; DISPLAY_SURF_ATTRIBUTES sSrcSurfAttrib; IMG_UINT32 ui32Flags; IMG_UINT32 ui32BufferCount; IMG_UINT32 ui32OEMFlags; IMG_UINT32 ui32SwapChainID; #if defined(PVR_ANDROID_NATIVE_WINDOW_HAS_FENCE) IMG_INT32 i32TimelineFd; IMG_INT32 i32Unused; #endif /* defined(PVR_ANDROID_NATIVE_WINDOW_HAS_FENCE) */ } PVRSRV_BRIDGE_IN_CREATE_DISPCLASS_SWAPCHAIN; /****************************************************************************** * 'bridge out' create swap chain *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_CREATE_DISPCLASS_SWAPCHAIN_TAG { PVRSRV_ERROR eError; IMG_UINT32 ui32SwapChainID; IMG_HANDLE hSwapChain; } PVRSRV_BRIDGE_OUT_CREATE_DISPCLASS_SWAPCHAIN; /****************************************************************************** * 'bridge in' destroy swap chain *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_DESTROY_DISPCLASS_SWAPCHAIN_TAG { IMG_HANDLE hDeviceKM; IMG_HANDLE hSwapChain; } PVRSRV_BRIDGE_IN_DESTROY_DISPCLASS_SWAPCHAIN; /****************************************************************************** * 'bridge in' set DST/SRC rect *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_SET_DISPCLASS_RECT_TAG { IMG_HANDLE hDeviceKM; IMG_HANDLE hSwapChain; IMG_RECT sRect; } PVRSRV_BRIDGE_IN_SET_DISPCLASS_RECT; /****************************************************************************** * 'bridge in' set DST/SRC colourkey *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_SET_DISPCLASS_COLOURKEY_TAG { IMG_HANDLE hDeviceKM; IMG_HANDLE hSwapChain; IMG_UINT32 ui32CKColour; } PVRSRV_BRIDGE_IN_SET_DISPCLASS_COLOURKEY; /****************************************************************************** * 'bridge in' get buffers (from swapchain) *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_GET_DISPCLASS_BUFFERS_TAG { IMG_HANDLE hDeviceKM; IMG_HANDLE hSwapChain; } PVRSRV_BRIDGE_IN_GET_DISPCLASS_BUFFERS; /****************************************************************************** * 'bridge out' get buffers (from swapchain) *****************************************************************************/ typedef struct PVRSRV_BRIDGE_OUT_GET_DISPCLASS_BUFFERS_TAG { PVRSRV_ERROR eError; IMG_UINT32 ui32BufferCount; IMG_HANDLE ahBuffer[PVRSRV_MAX_DC_SWAPCHAIN_BUFFERS]; IMG_SYS_PHYADDR asPhyAddr[PVRSRV_MAX_DC_SWAPCHAIN_BUFFERS]; } PVRSRV_BRIDGE_OUT_GET_DISPCLASS_BUFFERS; /****************************************************************************** * 'bridge in' swap to buffer *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_SWAP_DISPCLASS_TO_BUFFER_TAG { IMG_HANDLE hDeviceKM; IMG_HANDLE hBuffer; IMG_HANDLE hPrivateTag; IMG_UINT32 ui32SwapInterval; IMG_UINT32 ui32ClipRectCount; IMG_RECT sClipRect[PVRSRV_MAX_DC_CLIP_RECTS]; } PVRSRV_BRIDGE_IN_SWAP_DISPCLASS_TO_BUFFER; /****************************************************************************** * 'bridge in' swap to buffer 2 *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_SWAP_DISPCLASS_TO_BUFFER2_TAG { IMG_HANDLE hDeviceKM; IMG_HANDLE hSwapChain; IMG_UINT32 ui32SwapInterval; IMG_UINT32 ui32NumMemInfos; IMG_HANDLE hKernelMemInfos; IMG_HANDLE hKernelSyncInfos; IMG_UINT32 ui32PrivDataLength; IMG_HANDLE hPrivData; } PVRSRV_BRIDGE_IN_SWAP_DISPCLASS_TO_BUFFER2; /****************************************************************************** * 'bridge out' swap to buffer 2 *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_SWAP_DISPCLASS_TO_BUFFER2_TAG { PVRSRV_ERROR eError; IMG_HANDLE hFence; } PVRSRV_BRIDGE_OUT_SWAP_DISPCLASS_TO_BUFFER2; /****************************************************************************** * 'bridge in' swap to system buffer (primary) *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_SWAP_DISPCLASS_TO_SYSTEM_TAG { IMG_HANDLE hDeviceKM; IMG_HANDLE hSwapChain; } PVRSRV_BRIDGE_IN_SWAP_DISPCLASS_TO_SYSTEM; /****************************************************************************** * 'bridge in' open buffer class device *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_OPEN_BUFFERCLASS_DEVICE_TAG { IMG_UINT32 ui32DeviceID; IMG_HANDLE hDevCookie; } PVRSRV_BRIDGE_IN_OPEN_BUFFERCLASS_DEVICE; /****************************************************************************** * 'bridge out' open buffer class device *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_OPEN_BUFFERCLASS_DEVICE_TAG { PVRSRV_ERROR eError; IMG_HANDLE hDeviceKM; } PVRSRV_BRIDGE_OUT_OPEN_BUFFERCLASS_DEVICE; /****************************************************************************** * 'bridge out' get buffer class info *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_GET_BUFFERCLASS_INFO_TAG { PVRSRV_ERROR eError; BUFFER_INFO sBufferInfo; } PVRSRV_BRIDGE_OUT_GET_BUFFERCLASS_INFO; /****************************************************************************** * 'bridge in' get buffer class buffer *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_GET_BUFFERCLASS_BUFFER_TAG { IMG_HANDLE hDeviceKM; IMG_UINT32 ui32BufferIndex; } PVRSRV_BRIDGE_IN_GET_BUFFERCLASS_BUFFER; /****************************************************************************** * 'bridge out' get buffer class buffer *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_GET_BUFFERCLASS_BUFFER_TAG { PVRSRV_ERROR eError; IMG_HANDLE hBuffer; } PVRSRV_BRIDGE_OUT_GET_BUFFERCLASS_BUFFER; /****************************************************************************** * 'bridge out' get heap info *****************************************************************************/ typedef struct PVRSRV_BRIDGE_OUT_GET_DEVMEM_HEAPINFO_TAG { PVRSRV_ERROR eError; IMG_UINT32 ui32ClientHeapCount; PVRSRV_HEAP_INFO sHeapInfo[PVRSRV_MAX_CLIENT_HEAPS]; } PVRSRV_BRIDGE_OUT_GET_DEVMEM_HEAPINFO; /****************************************************************************** * 'bridge out' create device memory context *****************************************************************************/ typedef struct PVRSRV_BRIDGE_OUT_CREATE_DEVMEMCONTEXT_TAG { PVRSRV_ERROR eError; IMG_UINT32 ui32ClientHeapCount; IMG_HANDLE hDevMemContext; PVRSRV_HEAP_INFO sHeapInfo[PVRSRV_MAX_CLIENT_HEAPS]; } PVRSRV_BRIDGE_OUT_CREATE_DEVMEMCONTEXT; /****************************************************************************** * 'bridge out' create device memory context *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_CREATE_DEVMEMHEAP_TAG { PVRSRV_ERROR eError; IMG_HANDLE hDevMemHeap; } PVRSRV_BRIDGE_OUT_CREATE_DEVMEMHEAP; /****************************************************************************** * 'bridge out' alloc device memory *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_ALLOCDEVICEMEM_TAG { PVRSRV_ERROR eError; PVRSRV_CLIENT_MEM_INFO sClientMemInfo; PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo; } PVRSRV_BRIDGE_OUT_ALLOCDEVICEMEM; /****************************************************************************** * 'bridge out' free device memory *****************************************************************************/ typedef struct PVRSRV_BRIDGE_OUT_FREEDEVICEMEM_TAG { PVRSRV_ERROR eError; #if defined (PVRSRV_DEVMEM_TIME_STATS) IMG_UINT32 ui32TimeToDevUnmap; #endif } PVRSRV_BRIDGE_OUT_FREEDEVICEMEM; /****************************************************************************** * 'bridge out' export device memory *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_EXPORTDEVICEMEM_TAG { PVRSRV_ERROR eError; IMG_HANDLE hMemInfo; #if defined(SUPPORT_MEMINFO_IDS) IMG_UINT64 ui64Stamp; #endif } PVRSRV_BRIDGE_OUT_EXPORTDEVICEMEM; /****************************************************************************** * 'bridge out' map ion handle *****************************************************************************/ typedef struct IMG_COMPAT _PVRSRV_BRIDGE_OUT_MAP_ION_HANDLE_ { PVRSRV_ERROR eError; PVRSRV_CLIENT_MEM_INFO sClientMemInfo; PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo; IMG_SIZE_T uiIonBufferSize; } PVRSRV_BRIDGE_OUT_MAP_ION_HANDLE; /****************************************************************************** * 'bridge out' map dmabuf *****************************************************************************/ typedef struct IMG_COMPAT _PVRSRV_BRIDGE_OUT_MAP_DMABUF_ { PVRSRV_ERROR eError; IMG_HANDLE hKernelMemInfo; PVRSRV_CLIENT_MEM_INFO sClientMemInfo; PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo; IMG_SIZE_T uiSize; IMG_SIZE_T uiOffset; } PVRSRV_BRIDGE_OUT_MAP_DMABUF; /****************************************************************************** * 'bridge out' map meminfo to user mode *****************************************************************************/ typedef struct PVRSRV_BRIDGE_OUT_MAPMEMINFOTOUSER_TAG { PVRSRV_ERROR eError; IMG_PVOID pvLinAddr; IMG_HANDLE hMappingInfo; }PVRSRV_BRIDGE_OUT_MAPMEMINFOTOUSER; /****************************************************************************** * 'bridge out' get free device memory *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_GETFREEDEVICEMEM_TAG { PVRSRV_ERROR eError; IMG_SIZE_T uTotal; IMG_SIZE_T uFree; IMG_SIZE_T uLargestBlock; } PVRSRV_BRIDGE_OUT_GETFREEDEVICEMEM; //#ifdef LINUX /****************************************************************************** * 'bridge out' get full map data *****************************************************************************/ #include "pvrmmap.h" typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_MHANDLE_TO_MMAP_DATA_TAG { PVRSRV_ERROR eError; /* This is a the offset you should pass to mmap(2) so that * the driver can look up the full details for the mapping * request. */ IMG_UINTPTR_T uiMMapOffset; /* This is the byte offset you should add to the mapping you * get from mmap */ IMG_UINTPTR_T uiByteOffset; /* This is the real size of the mapping that will be created * which should be passed to mmap _and_ munmap. */ IMG_SIZE_T uiRealByteSize; /* User mode address associated with mapping */ IMG_UINTPTR_T uiUserVAddr; } PVRSRV_BRIDGE_OUT_MHANDLE_TO_MMAP_DATA; typedef struct PVRSRV_BRIDGE_OUT_RELEASE_MMAP_DATA_TAG { PVRSRV_ERROR eError; /* Flag that indicates whether the mapping should be destroyed */ IMG_BOOL bMUnmap; /* User mode address associated with mapping */ IMG_UINTPTR_T uiUserVAddr; /* Size of mapping */ IMG_SIZE_T uiRealByteSize; } PVRSRV_BRIDGE_OUT_RELEASE_MMAP_DATA; //#endif typedef struct PVRSRV_BRIDGE_IN_COMPAT_CHECK { IMG_UINT32 ui32DDKVersion; IMG_UINT32 ui32DDKBuild; } PVRSRV_BRIDGE_IN_COMPAT_CHECK; /****************************************************************************** * 'bridge in' get misc info *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_GET_MISC_INFO_TAG { PVRSRV_MISC_INFO sMiscInfo; }PVRSRV_BRIDGE_IN_GET_MISC_INFO; /****************************************************************************** * 'bridge out' get misc info *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_GET_MISC_INFO_TAG { PVRSRV_ERROR eError; PVRSRV_MISC_INFO sMiscInfo; }PVRSRV_BRIDGE_OUT_GET_MISC_INFO; /****************************************************************************** * 'bridge in' get misc info *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_RELEASE_MISC_INFO_TAG { PVRSRV_MISC_INFO sMiscInfo; }PVRSRV_BRIDGE_IN_RELEASE_MISC_INFO; /****************************************************************************** * 'bridge out' get misc info *****************************************************************************/ typedef struct PVRSRV_BRIDGE_OUT_RELEASE_MISC_INFO_TAG { PVRSRV_ERROR eError; PVRSRV_MISC_INFO sMiscInfo; }PVRSRV_BRIDGE_OUT_RELEASE_MISC_INFO; /****************************************************************************** * 'bridge out' PDUMP is capturing *****************************************************************************/ typedef struct PVRSRV_BRIDGE_OUT_PDUMP_ISCAPTURING_TAG { PVRSRV_ERROR eError; IMG_BOOL bIsCapturing; } PVRSRV_BRIDGE_OUT_PDUMP_ISCAPTURING; /****************************************************************************** * 'bridge in' get FB mem stats *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_GET_FB_STATS_TAG { IMG_SIZE_T uTotal; IMG_SIZE_T uAvailable; } PVRSRV_BRIDGE_IN_GET_FB_STATS; /****************************************************************************** * 'bridge in' Map CPU Physical to User Space *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_MAPPHYSTOUSERSPACE_TAG { IMG_HANDLE hDevCookie; IMG_SYS_PHYADDR sSysPhysAddr; IMG_UINT32 uiSizeInBytes; } PVRSRV_BRIDGE_IN_MAPPHYSTOUSERSPACE; /****************************************************************************** * 'bridge out' Map CPU Physical to User Space *****************************************************************************/ typedef struct PVRSRV_BRIDGE_OUT_MAPPHYSTOUSERSPACE_TAG { IMG_PVOID pvUserAddr; IMG_UINT32 uiActualSize; IMG_PVOID pvProcess; } PVRSRV_BRIDGE_OUT_MAPPHYSTOUSERSPACE; /****************************************************************************** * 'bridge in' Unmap CPU Physical to User Space *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_UNMAPPHYSTOUSERSPACE_TAG { IMG_HANDLE hDevCookie; IMG_PVOID pvUserAddr; IMG_PVOID pvProcess; } PVRSRV_BRIDGE_IN_UNMAPPHYSTOUSERSPACE; /****************************************************************************** * 'bridge out' Get user space pointer to Phys to Lin lookup table *****************************************************************************/ typedef struct PVRSRV_BRIDGE_OUT_GETPHYSTOUSERSPACEMAP_TAG { IMG_PVOID *ppvTbl; IMG_UINT32 uiTblSize; } PVRSRV_BRIDGE_OUT_GETPHYSTOUSERSPACEMAP; /****************************************************************************** * 'bridge in' Register RTSIM process thread *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_REGISTER_SIM_PROCESS_TAG { IMG_HANDLE hDevCookie; IMG_PVOID pvProcess; } PVRSRV_BRIDGE_IN_REGISTER_SIM_PROCESS; /****************************************************************************** * 'bridge out' Register RTSIM process thread *****************************************************************************/ typedef struct PVRSRV_BRIDGE_OUT_REGISTER_SIM_PROCESS_TAG { IMG_SYS_PHYADDR sRegsPhysBase; /*!< Physical address of current device register */ IMG_VOID *pvRegsBase; /*!< User mode linear address of SGX device registers */ IMG_PVOID pvProcess; IMG_UINT32 ulNoOfEntries; IMG_PVOID pvTblLinAddr; } PVRSRV_BRIDGE_OUT_REGISTER_SIM_PROCESS; /****************************************************************************** * 'bridge in' Unregister RTSIM process thread *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_UNREGISTER_SIM_PROCESS_TAG { IMG_HANDLE hDevCookie; IMG_PVOID pvProcess; IMG_VOID *pvRegsBase; /*!< User mode linear address of SGX device registers */ } PVRSRV_BRIDGE_IN_UNREGISTER_SIM_PROCESS; /****************************************************************************** * 'bridge in' process simulator ISR event *****************************************************************************/ typedef struct PVRSRV_BRIDGE_IN_PROCESS_SIMISR_EVENT_TAG { IMG_HANDLE hDevCookie; IMG_UINT32 ui32StatusAndMask; PVRSRV_ERROR eError; } PVRSRV_BRIDGE_IN_PROCESS_SIMISR_EVENT; /****************************************************************************** * 'bridge in' initialisation server disconnect *****************************************************************************/ typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_INITSRV_DISCONNECT_TAG { IMG_BOOL bInitSuccesful; } PVRSRV_BRIDGE_IN_INITSRV_DISCONNECT; typedef struct PVRSRV_BRIDGE_IN_ALLOC_SHARED_SYS_MEM_TAG { IMG_UINT32 ui32Flags; IMG_SIZE_T uSize; }PVRSRV_BRIDGE_IN_ALLOC_SHARED_SYS_MEM; typedef struct PVRSRV_BRIDGE_OUT_ALLOC_SHARED_SYS_MEM_TAG { PVRSRV_ERROR eError; IMG_HANDLE hKernelMemInfo; PVRSRV_CLIENT_MEM_INFO sClientMemInfo; }PVRSRV_BRIDGE_OUT_ALLOC_SHARED_SYS_MEM; typedef struct PVRSRV_BRIDGE_IN_FREE_SHARED_SYS_MEM_TAG { IMG_HANDLE hKernelMemInfo; PVRSRV_CLIENT_MEM_INFO sClientMemInfo; }PVRSRV_BRIDGE_IN_FREE_SHARED_SYS_MEM; typedef struct PVRSRV_BRIDGE_OUT_FREE_SHARED_SYS_MEM_TAG { PVRSRV_ERROR eError; }PVRSRV_BRIDGE_OUT_FREE_SHARED_SYS_MEM; typedef struct PVRSRV_BRIDGE_IN_MAP_MEMINFO_MEM_TAG { IMG_HANDLE hKernelMemInfo; }PVRSRV_BRIDGE_IN_MAP_MEMINFO_MEM; typedef struct PVRSRV_BRIDGE_OUT_MAP_MEMINFO_MEM_TAG { PVRSRV_CLIENT_MEM_INFO sClientMemInfo; PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo; IMG_HANDLE hKernelMemInfo; PVRSRV_ERROR eError; }PVRSRV_BRIDGE_OUT_MAP_MEMINFO_MEM; typedef struct PVRSRV_BRIDGE_IN_UNMAP_MEMINFO_MEM_TAG { PVRSRV_CLIENT_MEM_INFO sClientMemInfo; }PVRSRV_BRIDGE_IN_UNMAP_MEMINFO_MEM; typedef struct PVRSRV_BRIDGE_OUT_UNMAP_MEMINFO_MEM_TAG { PVRSRV_ERROR eError; }PVRSRV_BRIDGE_OUT_UNMAP_MEMINFO_MEM; typedef struct PVRSRV_BRIDGE_IN_EVENT_OBJECT_WAI_TAG { IMG_HANDLE hOSEventKM; } PVRSRV_BRIDGE_IN_EVENT_OBJECT_WAIT; typedef struct PVRSRV_BRIDGE_IN_EVENT_OBJECT_OPEN_TAG { PVRSRV_EVENTOBJECT sEventObject; } PVRSRV_BRIDGE_IN_EVENT_OBJECT_OPEN; typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_EVENT_OBJECT_OPEN_TAG { IMG_HANDLE hOSEvent; PVRSRV_ERROR eError; } PVRSRV_BRIDGE_OUT_EVENT_OBJECT_OPEN; typedef struct PVRSRV_BRIDGE_IN_EVENT_OBJECT_CLOSE_TAG { PVRSRV_EVENTOBJECT sEventObject; IMG_HANDLE hOSEventKM; } PVRSRV_BRIDGE_IN_EVENT_OBJECT_CLOSE; typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_CREATE_SYNC_INFO_MOD_OBJ_TAG { PVRSRV_ERROR eError; IMG_HANDLE hKernelSyncInfoModObj; } PVRSRV_BRIDGE_OUT_CREATE_SYNC_INFO_MOD_OBJ; typedef struct PVRSRV_BRIDGE_IN_DESTROY_SYNC_INFO_MOD_OBJ { IMG_HANDLE hKernelSyncInfoModObj; } PVRSRV_BRIDGE_IN_DESTROY_SYNC_INFO_MOD_OBJ; typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_MODIFY_PENDING_SYNC_OPS_TAG { IMG_HANDLE hKernelSyncInfoModObj; IMG_HANDLE hKernelSyncInfo; IMG_UINT32 ui32ModifyFlags; } PVRSRV_BRIDGE_IN_MODIFY_PENDING_SYNC_OPS; typedef struct PVRSRV_BRIDGE_IN_MODIFY_COMPLETE_SYNC_OPS_TAG { IMG_HANDLE hKernelSyncInfoModObj; } PVRSRV_BRIDGE_IN_MODIFY_COMPLETE_SYNC_OPS; typedef struct PVRSRV_BRIDGE_OUT_MODIFY_PENDING_SYNC_OPS_TAG { PVRSRV_ERROR eError; /* The following variable are used to return the PRE-INCREMENTED op vals */ IMG_UINT32 ui32ReadOpsPending; IMG_UINT32 ui32WriteOpsPending; IMG_UINT32 ui32ReadOps2Pending; } PVRSRV_BRIDGE_OUT_MODIFY_PENDING_SYNC_OPS; typedef struct PVRSRV_BRIDGE_IN_SYNC_OPS_TAKE_TOKEN_TAG { IMG_HANDLE hKernelSyncInfo; } PVRSRV_BRIDGE_IN_SYNC_OPS_TAKE_TOKEN; typedef struct PVRSRV_BRIDGE_OUT_SYNC_OPS_TAKE_TOKEN_TAG { PVRSRV_ERROR eError; IMG_UINT32 ui32ReadOpsPending; IMG_UINT32 ui32WriteOpsPending; IMG_UINT32 ui32ReadOps2Pending; } PVRSRV_BRIDGE_OUT_SYNC_OPS_TAKE_TOKEN; typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_SYNC_OPS_FLUSH_TO_TOKEN_TAG { IMG_HANDLE hKernelSyncInfo; IMG_UINT32 ui32ReadOpsPendingSnapshot; IMG_UINT32 ui32WriteOpsPendingSnapshot; IMG_UINT32 ui32ReadOps2PendingSnapshot; } PVRSRV_BRIDGE_IN_SYNC_OPS_FLUSH_TO_TOKEN; typedef struct PVRSRV_BRIDGE_IN_SYNC_OPS_FLUSH_TO_MOD_OBJ_TAG { IMG_HANDLE hKernelSyncInfoModObj; } PVRSRV_BRIDGE_IN_SYNC_OPS_FLUSH_TO_MOD_OBJ; typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_SYNC_OPS_FLUSH_TO_DELTA_TAG { IMG_HANDLE hKernelSyncInfo; IMG_UINT32 ui32Delta; } PVRSRV_BRIDGE_IN_SYNC_OPS_FLUSH_TO_DELTA; typedef struct PVRSRV_BRIDGE_IN_ALLOC_SYNC_INFO_TAG { IMG_HANDLE hDevCookie; } PVRSRV_BRIDGE_IN_ALLOC_SYNC_INFO; typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_ALLOC_SYNC_INFO_TAG { PVRSRV_ERROR eError; IMG_HANDLE hKernelSyncInfo; } PVRSRV_BRIDGE_OUT_ALLOC_SYNC_INFO; typedef struct PVRSRV_BRIDGE_IN_FREE_SYNC_INFO_TAG { IMG_HANDLE hKernelSyncInfo; } PVRSRV_BRIDGE_IN_FREE_SYNC_INFO; typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_CHG_DEV_MEM_ATTRIBS_TAG { IMG_SID hKernelMemInfo; IMG_UINT32 ui32Attribs; } PVRSRV_BRIDGE_IN_CHG_DEV_MEM_ATTRIBS; #if defined (__cplusplus) } #endif #endif /* __PVR_BRIDGE_H__ */ /****************************************************************************** End of file (pvr_bridge.h) ******************************************************************************/