diff options
author | Alistair Strachan <alistair.strachan@imgtec.com> | 2011-07-28 17:34:33 +0100 |
---|---|---|
committer | Iliyan Malchev <malchev@google.com> | 2011-08-02 19:24:56 -0700 |
commit | f40692ed4e0189032df9a851cd8033eabb0ce256 (patch) | |
tree | e60c167fd371d1514710ae05dc3da479d7f0d0c8 | |
parent | d91993a302f17939567fb1a4b409969446f1cbc7 (diff) | |
download | kernel_samsung_espresso10-f40692ed4e0189032df9a851cd8033eabb0ce256.tar.gz kernel_samsung_espresso10-f40692ed4e0189032df9a851cd8033eabb0ce256.tar.bz2 kernel_samsung_espresso10-f40692ed4e0189032df9a851cd8033eabb0ce256.zip |
gpu: pvr: Update to DDK 1.8.18.964
- Add SUPPORT_GET_DC_BUFFERS_SYS_PHYADDRS to enable returning
of display buffer physical addresses to user-space.
Required for C110 HWC.
-rw-r--r-- | drivers/gpu/pvr/bridged_pvr_bridge.c | 5 | ||||
-rw-r--r-- | drivers/gpu/pvr/deviceclass.c | 31 | ||||
-rw-r--r-- | drivers/gpu/pvr/pvr_bridge.h | 2 | ||||
-rw-r--r-- | drivers/gpu/pvr/pvr_bridge_km.h | 3 | ||||
-rw-r--r-- | drivers/gpu/pvr/pvrversion.h | 4 | ||||
-rw-r--r-- | drivers/gpu/pvr/services.h | 27 |
6 files changed, 64 insertions, 8 deletions
diff --git a/drivers/gpu/pvr/bridged_pvr_bridge.c b/drivers/gpu/pvr/bridged_pvr_bridge.c index 3105847ce08..783ca444abf 100644 --- a/drivers/gpu/pvr/bridged_pvr_bridge.c +++ b/drivers/gpu/pvr/bridged_pvr_bridge.c @@ -2837,10 +2837,11 @@ PVRSRVGetDCBuffersBW(IMG_UINT32 ui32BridgeID, pvSwapChain, &psGetDispClassBuffersOUT->ui32BufferCount, #if defined (SUPPORT_SID_INTERFACE) - pahBuffer); + pahBuffer, #else - psGetDispClassBuffersOUT->ahBuffer); + psGetDispClassBuffersOUT->ahBuffer, #endif + psGetDispClassBuffersOUT->asPhyAddr); if (psGetDispClassBuffersOUT->eError != PVRSRV_OK) { return 0; diff --git a/drivers/gpu/pvr/deviceclass.c b/drivers/gpu/pvr/deviceclass.c index a4230d40ab6..f051d303af0 100644 --- a/drivers/gpu/pvr/deviceclass.c +++ b/drivers/gpu/pvr/deviceclass.c @@ -1299,7 +1299,8 @@ IMG_EXPORT PVRSRV_ERROR PVRSRVGetDCBuffersKM(IMG_HANDLE hDeviceKM, IMG_HANDLE hSwapChainRef, IMG_UINT32 *pui32BufferCount, - IMG_HANDLE *phBuffer) + IMG_HANDLE *phBuffer, + IMG_SYS_PHYADDR *psPhyAddr) { PVRSRV_DISPLAYCLASS_INFO *psDCInfo; PVRSRV_DC_SWAPCHAIN *psSwapChain; @@ -1307,7 +1308,7 @@ PVRSRV_ERROR PVRSRVGetDCBuffersKM(IMG_HANDLE hDeviceKM, PVRSRV_ERROR eError; IMG_UINT32 i; - if(!hDeviceKM || !hSwapChainRef || !phBuffer) + if(!hDeviceKM || !hSwapChainRef || !phBuffer || !psPhyAddr) { PVR_DPF((PVR_DBG_ERROR,"PVRSRVGetDCBuffersKM: Invalid parameters")); return PVRSRV_ERROR_INVALID_PARAMS; @@ -1333,6 +1334,32 @@ PVRSRV_ERROR PVRSRVGetDCBuffersKM(IMG_HANDLE hDeviceKM, phBuffer[i] = (IMG_HANDLE)&psSwapChain->asBuffer[i]; } +#if defined(SUPPORT_GET_DC_BUFFERS_SYS_PHYADDRS) + for(i = 0; i < *pui32BufferCount; i++) + { + IMG_UINT32 ui32ByteSize, ui32TilingStride; + IMG_SYS_PHYADDR *pPhyAddr; + IMG_BOOL bIsContiguous; + IMG_HANDLE hOSMapInfo; + IMG_VOID *pvVAddr; + + eError = psDCInfo->psFuncTable->pfnGetBufferAddr(psDCInfo->hExtDevice, + ahExtBuffer[i], + &pPhyAddr, + &ui32ByteSize, + &pvVAddr, + &hOSMapInfo, + &bIsContiguous, + &ui32TilingStride); + if(eError != PVRSRV_OK) + { + break; + } + + psPhyAddr[i] = *pPhyAddr; + } +#endif + return eError; } diff --git a/drivers/gpu/pvr/pvr_bridge.h b/drivers/gpu/pvr/pvr_bridge.h index 90330d4615d..d3e5916a9db 100644 --- a/drivers/gpu/pvr/pvr_bridge.h +++ b/drivers/gpu/pvr/pvr_bridge.h @@ -1151,7 +1151,7 @@ typedef struct PVRSRV_BRIDGE_OUT_GET_DISPCLASS_BUFFERS_TAG #else IMG_HANDLE ahBuffer[PVRSRV_MAX_DC_SWAPCHAIN_BUFFERS]; #endif - + IMG_SYS_PHYADDR asPhyAddr[PVRSRV_MAX_DC_SWAPCHAIN_BUFFERS]; } PVRSRV_BRIDGE_OUT_GET_DISPCLASS_BUFFERS; diff --git a/drivers/gpu/pvr/pvr_bridge_km.h b/drivers/gpu/pvr/pvr_bridge_km.h index cdd4f4960eb..184e999bd31 100644 --- a/drivers/gpu/pvr/pvr_bridge_km.h +++ b/drivers/gpu/pvr/pvr_bridge_km.h @@ -225,7 +225,8 @@ IMG_IMPORT PVRSRV_ERROR PVRSRVGetDCBuffersKM(IMG_HANDLE hDeviceKM, IMG_HANDLE hSwapChain, IMG_UINT32 *pui32BufferCount, - IMG_HANDLE *phBuffer); + IMG_HANDLE *phBuffer, + IMG_SYS_PHYADDR *psPhyAddr); IMG_IMPORT PVRSRV_ERROR PVRSRVSwapToDCBufferKM(IMG_HANDLE hDeviceKM, IMG_HANDLE hBuffer, diff --git a/drivers/gpu/pvr/pvrversion.h b/drivers/gpu/pvr/pvrversion.h index cd51214f959..ab43fa4da41 100644 --- a/drivers/gpu/pvr/pvrversion.h +++ b/drivers/gpu/pvr/pvrversion.h @@ -36,7 +36,7 @@ #define PVRVERSION_FAMILY "eurasiacon.pj" #define PVRVERSION_BRANCHNAME "1.8.18" -#define PVRVERSION_BUILD 949 +#define PVRVERSION_BUILD 964 #define PVRVERSION_BSCONTROL "Unknown" #define PVRVERSION_STRING "1.8.18." PVR_STR2(PVRVERSION_BUILD) @@ -45,7 +45,7 @@ #define COPYRIGHT_TXT "Copyright (c) Imagination Technologies Ltd. All Rights Reserved." #define PVRVERSION_BUILD_HI 18 -#define PVRVERSION_BUILD_LO 949 +#define PVRVERSION_BUILD_LO 964 #define PVRVERSION_STRING_NUMERIC PVR_STR2(PVRVERSION_MAJ) "." PVR_STR2(PVRVERSION_MIN) "." PVR_STR2(PVRVERSION_BUILD_HI) "." PVR_STR2(PVRVERSION_BUILD_LO) #endif /* _PVRVERSION_H_ */ diff --git a/drivers/gpu/pvr/services.h b/drivers/gpu/pvr/services.h index eec9521a0a7..f60436e0125 100644 --- a/drivers/gpu/pvr/services.h +++ b/drivers/gpu/pvr/services.h @@ -686,6 +686,22 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVMapDeviceMemory2(IMG_CONST PVRSRV_DEV_DATA *psDe PVRSRV_CLIENT_MEM_INFO **ppsDstMemInfo); #endif +#if defined(SUPPORT_ION) +PVRSRV_ERROR PVRSRVMapIonHandle(const PVRSRV_DEV_DATA *psDevData, +#if defined (SUPPORT_SID_INTERFACE) + IMG_SID hDevMemContext, +#else + IMG_HANDLE hDevMemContext, +#endif + IMG_INT32 uiFD, + IMG_UINT32 uiSize, + IMG_UINT32 ui32Attribs, + PVRSRV_CLIENT_MEM_INFO **ppsMemInfo); + +PVRSRV_ERROR PVRSRVUnmapIonHandle(const PVRSRV_DEV_DATA *psDevData, + PVRSRV_CLIENT_MEM_INFO *psMemInfo); +#endif + typedef enum _PVRSRV_SYNCVAL_MODE_ { PVRSRV_SYNCVAL_READ = IMG_TRUE, @@ -822,6 +838,17 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVGetDCBuffers(IMG_HANDLE hDevice, #endif IMG_IMPORT +PVRSRV_ERROR IMG_CALLCONV PVRSRVGetDCBuffers2(IMG_HANDLE hDevice, +#if defined (SUPPORT_SID_INTERFACE) + IMG_SID hSwapChain, + IMG_SID *phBuffer, +#else + IMG_HANDLE hSwapChain, + IMG_HANDLE *phBuffer, +#endif + IMG_SYS_PHYADDR *psPhyAddr); + +IMG_IMPORT PVRSRV_ERROR IMG_CALLCONV PVRSRVSwapToDCBuffer (IMG_HANDLE hDevice, #if defined (SUPPORT_SID_INTERFACE) IMG_SID hBuffer, |