diff -Nru pvr-omap4-dkms-1.9.0.6.1.1/debian/changelog pvr-omap4-dkms-1.9.0.7.1.1/debian/changelog --- pvr-omap4-dkms-1.9.0.6.1.1/debian/changelog 2012-10-25 14:12:20.000000000 +0000 +++ pvr-omap4-dkms-1.9.0.7.1.1/debian/changelog 2012-10-25 14:12:20.000000000 +0000 @@ -1,3 +1,9 @@ +pvr-omap4-dkms (1.9.0.7.1.1-1) precise; urgency=low + + * New sgx-lib version 1.9.0.7.1-1glp1 + + -- Xavier Boudet Mon, 15 Oct 2012 13:20:56 +0200 + pvr-omap4-dkms (1.9.0.6.1.1-2) precise; urgency=low * Update Vcs diff -Nru pvr-omap4-dkms-1.9.0.6.1.1/sgx/include4/pvrversion.h pvr-omap4-dkms-1.9.0.7.1.1/sgx/include4/pvrversion.h --- pvr-omap4-dkms-1.9.0.6.1.1/sgx/include4/pvrversion.h 2012-09-18 05:57:06.000000000 +0000 +++ pvr-omap4-dkms-1.9.0.7.1.1/sgx/include4/pvrversion.h 2012-10-15 10:07:43.000000000 +0000 @@ -57,17 +57,17 @@ #define PVRVERSION_BRANCH 19 #define PVRVERSION_FAMILY "sgxddk" -#define PVRVERSION_BRANCHNAME "1.9.RC2" -#define PVRVERSION_BUILD 2139099 +#define PVRVERSION_BRANCHNAME "1.9" +#define PVRVERSION_BUILD 2166536 #define PVRVERSION_BSCONTROL "SGX_DDK_Linux_CustomerTI" -#define PVRVERSION_STRING "SGX_DDK_Linux_CustomerTI sgxddk 19 1.9.RC2@" PVR_STR2(PVRVERSION_BUILD) -#define PVRVERSION_STRING_SHORT "1.9.RC2@" PVR_STR2(PVRVERSION_BUILD) +#define PVRVERSION_STRING "SGX_DDK_Linux_CustomerTI sgxddk 19 1.9@" PVR_STR2(PVRVERSION_BUILD) +#define PVRVERSION_STRING_SHORT "1.9@" PVR_STR2(PVRVERSION_BUILD) #define COPYRIGHT_TXT "Copyright (c) Imagination Technologies Ltd. All Rights Reserved." -#define PVRVERSION_BUILD_HI 213 -#define PVRVERSION_BUILD_LO 9099 +#define PVRVERSION_BUILD_HI 216 +#define PVRVERSION_BUILD_LO 6536 #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 -Nru pvr-omap4-dkms-1.9.0.6.1.1/sgx/include4/services.h pvr-omap4-dkms-1.9.0.7.1.1/sgx/include4/services.h --- pvr-omap4-dkms-1.9.0.6.1.1/sgx/include4/services.h 2012-08-07 16:30:28.000000000 +0000 +++ pvr-omap4-dkms-1.9.0.7.1.1/sgx/include4/services.h 2012-10-15 10:07:43.000000000 +0000 @@ -1517,7 +1517,7 @@ IMG_IMPORT IMG_PVOID IMG_CALLCONV PVRSRVReallocUserModeMemTracking(IMG_VOID *pvMem, IMG_SIZE_T ui32NewSize, IMG_CHAR *pszFileName, IMG_UINT32 ui32LineNumber); -#endif /* defined(DEBUG) && (defined(__linux__) || defined(_UITRON_)) */ +#endif /****************************************************************************** * PVR Event Object API(s) diff -Nru pvr-omap4-dkms-1.9.0.6.1.1/sgx/include4/sgx_options.h pvr-omap4-dkms-1.9.0.7.1.1/sgx/include4/sgx_options.h --- pvr-omap4-dkms-1.9.0.6.1.1/sgx/include4/sgx_options.h 2012-08-07 16:30:28.000000000 +0000 +++ pvr-omap4-dkms-1.9.0.7.1.1/sgx/include4/sgx_options.h 2012-10-15 10:07:43.000000000 +0000 @@ -136,13 +136,7 @@ #define OPTIONS_BIT11 0x0 - -#if defined(SGX_FEATURE_OVERLAPPED_SPM) || defined (INTERNAL_TEST) -#define SGX_FEATURE_OVERLAPPED_SPM_SET_OFFSET OPTIONS_BIT12 -#define OPTIONS_BIT12 (0x1U << 12) -#else #define OPTIONS_BIT12 0x0 -#endif /* SGX_FEATURE_RENDER_TARGET_ARRAYS */ #if defined(SGX_FEATURE_SYSTEM_CACHE) || defined (INTERNAL_TEST) diff -Nru pvr-omap4-dkms-1.9.0.6.1.1/sgx/services4/3rdparty/dc_omapfb3_linux/omaplfb_displayclass.c pvr-omap4-dkms-1.9.0.7.1.1/sgx/services4/3rdparty/dc_omapfb3_linux/omaplfb_displayclass.c --- pvr-omap4-dkms-1.9.0.6.1.1/sgx/services4/3rdparty/dc_omapfb3_linux/omaplfb_displayclass.c 2012-08-07 16:30:28.000000000 +0000 +++ pvr-omap4-dkms-1.9.0.7.1.1/sgx/services4/3rdparty/dc_omapfb3_linux/omaplfb_displayclass.c 2012-10-15 10:07:43.000000000 +0000 @@ -1304,7 +1304,7 @@ __FUNCTION__, uiFBDevID, n); /* INTEGRATION_POINT: limit to MAX 3 FBs to save TILER container space */ - if (n > 3) + if (n != 3) n = 3; sAllocData.w *= n; diff -Nru pvr-omap4-dkms-1.9.0.6.1.1/sgx/services4/include/servicesint.h pvr-omap4-dkms-1.9.0.7.1.1/sgx/services4/include/servicesint.h --- pvr-omap4-dkms-1.9.0.6.1.1/sgx/services4/include/servicesint.h 2012-08-07 16:30:28.000000000 +0000 +++ pvr-omap4-dkms-1.9.0.7.1.1/sgx/services4/include/servicesint.h 2012-10-15 10:07:43.000000000 +0000 @@ -138,9 +138,7 @@ To activate the "share mem workaround", add PVRSRV_MEM_XPROC to the flags for the allocation. This will cause the "map" API to call use Alloc Device Mem but will share the underlying memory - block and sync data. Note that this is a workaround for a bug - exposed by a specific use-case on a particular platform. Do not - use this functionality generally. + block and sync data. */ struct { /* Record whether the workaround is active for this diff -Nru pvr-omap4-dkms-1.9.0.6.1.1/sgx/services4/srvkm/bridged/sgx/bridged_sgx_bridge.c pvr-omap4-dkms-1.9.0.7.1.1/sgx/services4/srvkm/bridged/sgx/bridged_sgx_bridge.c --- pvr-omap4-dkms-1.9.0.6.1.1/sgx/services4/srvkm/bridged/sgx/bridged_sgx_bridge.c 2012-08-07 16:30:28.000000000 +0000 +++ pvr-omap4-dkms-1.9.0.7.1.1/sgx/services4/srvkm/bridged/sgx/bridged_sgx_bridge.c 2012-10-15 10:07:43.000000000 +0000 @@ -611,7 +611,6 @@ PVRSRV_BRIDGE_SGX_DOKICK_RETURN_RESULT: -//#if (!defined(_UITRON_) && !defined(UNDER_VISTA)) || defined (SUPPORT_SID_INTERFACE) if(phKernelSyncInfoHandles) { OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, @@ -3753,7 +3752,7 @@ PVR_UNREFERENCED_PARAMETER(psRetOUT); PVR_UNREFERENCED_PARAMETER(psPerProc); return 0; -#endif /* defined(LINUX) || defined(UNDER_XP) */ +#endif #else PVR_UNREFERENCED_PARAMETER(ui32BridgeID); PVR_UNREFERENCED_PARAMETER(psPDumpHWPerfCBIN); diff -Nru pvr-omap4-dkms-1.9.0.6.1.1/sgx/services4/srvkm/common/buffer_manager.c pvr-omap4-dkms-1.9.0.7.1.1/sgx/services4/srvkm/common/buffer_manager.c --- pvr-omap4-dkms-1.9.0.6.1.1/sgx/services4/srvkm/common/buffer_manager.c 2012-08-07 16:30:28.000000000 +0000 +++ pvr-omap4-dkms-1.9.0.7.1.1/sgx/services4/srvkm/common/buffer_manager.c 2012-10-15 10:07:43.000000000 +0000 @@ -185,6 +185,12 @@ ui32PrivDataLength, IMG_NULL); /* We allocate VM space */ + if (!bSuccess) + { + PVR_DPF((PVR_DBG_ERROR, "AllocMemory: BM_ImportMemory failed")); + return IMG_FALSE; + } + if (puiActualSize != ui32ChunkSize * ui32NumPhysChunks) { /* diff -Nru pvr-omap4-dkms-1.9.0.6.1.1/sgx/services4/srvkm/common/deviceclass.c pvr-omap4-dkms-1.9.0.7.1.1/sgx/services4/srvkm/common/deviceclass.c --- pvr-omap4-dkms-1.9.0.6.1.1/sgx/services4/srvkm/common/deviceclass.c 2012-08-07 16:30:28.000000000 +0000 +++ pvr-omap4-dkms-1.9.0.7.1.1/sgx/services4/srvkm/common/deviceclass.c 2012-10-15 10:07:43.000000000 +0000 @@ -2116,6 +2116,15 @@ psSwapChainRef = (PVRSRV_DC_SWAPCHAIN_REF*)hSwapChainRef; psSwapChain = psSwapChainRef->psSwapChain; + /* + If more then 1 reference to the swapchain exist then + ignore any request to swap to the system buffer + */ + if (psSwapChain->ui32RefCount > 1) + { + return PVRSRV_OK; + } + /* get the queue from the buffer structure */ psQueue = psSwapChain->psQueue; diff -Nru pvr-omap4-dkms-1.9.0.6.1.1/sgx/services4/srvkm/devices/sgx/sgxkick.c pvr-omap4-dkms-1.9.0.7.1.1/sgx/services4/srvkm/devices/sgx/sgxkick.c --- pvr-omap4-dkms-1.9.0.6.1.1/sgx/services4/srvkm/devices/sgx/sgxkick.c 2012-08-07 16:30:28.000000000 +0000 +++ pvr-omap4-dkms-1.9.0.7.1.1/sgx/services4/srvkm/devices/sgx/sgxkick.c 2012-10-15 10:07:43.000000000 +0000 @@ -757,6 +757,24 @@ } #endif/* SUPPORT_SGX_GENERALISED_SYNCOBJECTS */ + if (psCCBKick->hTA3DSyncInfo) + { + psSyncInfo = (PVRSRV_KERNEL_SYNC_INFO *)psCCBKick->hTA3DSyncInfo; + psSyncInfo->psSyncData->ui32ReadOpsPending--; + } + + if (psCCBKick->hTASyncInfo) + { + psSyncInfo = (PVRSRV_KERNEL_SYNC_INFO *)psCCBKick->hTASyncInfo; + psSyncInfo->psSyncData->ui32ReadOpsPending--; + } + + if (psCCBKick->h3DSyncInfo) + { + psSyncInfo = (PVRSRV_KERNEL_SYNC_INFO *)psCCBKick->h3DSyncInfo; + psSyncInfo->psSyncData->ui32ReadOpsPending--; + } + PVR_TTRACE(PVRSRV_TRACE_GROUP_KICK, PVRSRV_TRACE_CLASS_FUNCTION_EXIT, KICK_TOKEN_DOKICK); return eError; diff -Nru pvr-omap4-dkms-1.9.0.6.1.1/sgx/services4/srvkm/env/linux/mmap.c pvr-omap4-dkms-1.9.0.7.1.1/sgx/services4/srvkm/env/linux/mmap.c --- pvr-omap4-dkms-1.9.0.6.1.1/sgx/services4/srvkm/env/linux/mmap.c 2012-08-07 16:30:28.000000000 +0000 +++ pvr-omap4-dkms-1.9.0.7.1.1/sgx/services4/srvkm/env/linux/mmap.c 2012-10-15 10:07:43.000000000 +0000 @@ -1154,6 +1154,7 @@ IMG_VOID *pvBase = IMG_NULL; int iRetVal = 0; IMG_UINT32 ui32ByteOffset = 0; /* Keep compiler happy */ + IMG_UINT32 ui32FlushSize = 0; PVR_UNREFERENCED_PARAMETER(pFile); @@ -1259,16 +1260,28 @@ /* Compute the flush region (if necessary) inside the mmap mutex */ if(psOffsetStruct->psLinuxMemArea->bNeedsCacheInvalidate) { - IMG_UINT32 ui32DummyByteSize; + psFlushMemArea = psOffsetStruct->psLinuxMemArea; - DetermineUsersSizeAndByteOffset(psOffsetStruct->psLinuxMemArea, - &ui32DummyByteSize, - &ui32ByteOffset); + /* Sparse mappings have to ask the BM for the virtual size */ + if (psFlushMemArea->hBMHandle) + { + pvBase = (IMG_VOID *)ps_vma->vm_start; + ui32ByteOffset = 0; + ui32FlushSize = BM_GetVirtualSize(psFlushMemArea->hBMHandle); + } + else + { + IMG_UINT32 ui32DummyByteSize; - pvBase = (IMG_VOID *)ps_vma->vm_start + ui32ByteOffset; - psFlushMemArea = psOffsetStruct->psLinuxMemArea; + DetermineUsersSizeAndByteOffset(psFlushMemArea, + &ui32DummyByteSize, + &ui32ByteOffset); + + pvBase = (IMG_VOID *)ps_vma->vm_start + ui32ByteOffset; + ui32FlushSize = psFlushMemArea->ui32ByteSize; + } - psOffsetStruct->psLinuxMemArea->bNeedsCacheInvalidate = IMG_FALSE; + psFlushMemArea->bNeedsCacheInvalidate = IMG_FALSE; } @@ -1289,7 +1302,7 @@ if(psFlushMemArea) { OSInvalidateCPUCacheRangeKM(psFlushMemArea, ui32ByteOffset, pvBase, - psFlushMemArea->ui32ByteSize); + ui32FlushSize); } return iRetVal; diff -Nru pvr-omap4-dkms-1.9.0.6.1.1/sgx/services4/srvkm/env/linux/osfunc.c pvr-omap4-dkms-1.9.0.7.1.1/sgx/services4/srvkm/env/linux/osfunc.c --- pvr-omap4-dkms-1.9.0.6.1.1/sgx/services4/srvkm/env/linux/osfunc.c 2012-08-07 16:30:28.000000000 +0000 +++ pvr-omap4-dkms-1.9.0.7.1.1/sgx/services4/srvkm/env/linux/osfunc.c 2012-10-15 10:07:43.000000000 +0000 @@ -4021,7 +4021,14 @@ psMMapOffsetStructList = &psLinuxMemArea->sMMapOffsetStructList; ui32AreaLength = psLinuxMemArea->ui32ByteSize; - PVR_ASSERT(ui32Length <= ui32AreaLength); + /* + Don't check the length in the case of sparse mappings as + we only know the physical length not the virtual + */ + if (!psLinuxMemArea->hBMHandle) + { + PVR_ASSERT(ui32Length <= ui32AreaLength); + } if(psLinuxMemArea->eAreaType == LINUX_MEM_AREA_SUB_ALLOC) { diff -Nru pvr-omap4-dkms-1.9.0.6.1.1/sgx/services4/srvkm/include/osfunc.h pvr-omap4-dkms-1.9.0.7.1.1/sgx/services4/srvkm/include/osfunc.h --- pvr-omap4-dkms-1.9.0.6.1.1/sgx/services4/srvkm/include/osfunc.h 2012-08-07 16:30:28.000000000 +0000 +++ pvr-omap4-dkms-1.9.0.7.1.1/sgx/services4/srvkm/include/osfunc.h 2012-10-15 10:07:43.000000000 +0000 @@ -62,7 +62,7 @@ /* setup conditional pageable / non-pageable select */ - /* Non-Vista OSs only need pageable */ + /* Other OSs only need pageable */ #define PVRSRV_PAGEABLE_SELECT PVRSRV_OS_PAGEABLE_HEAP /****************************************************************************** diff -Nru pvr-omap4-dkms-1.9.0.6.1.1/sgx/services4/srvkm/include/pdump_osfunc.h pvr-omap4-dkms-1.9.0.7.1.1/sgx/services4/srvkm/include/pdump_osfunc.h --- pvr-omap4-dkms-1.9.0.6.1.1/sgx/services4/srvkm/include/pdump_osfunc.h 2012-08-07 16:30:28.000000000 +0000 +++ pvr-omap4-dkms-1.9.0.7.1.1/sgx/services4/srvkm/include/pdump_osfunc.h 2012-10-15 10:07:43.000000000 +0000 @@ -246,7 +246,6 @@ IMG_VOID PDumpOSDebugPrintf(IMG_CHAR* pszFormat, ...) IMG_FORMAT_PRINTF(1, 2); /* - * FIXME: Is this function useful for Symbian? * Write into a IMG_CHAR* on all OSes. Can be allocated on the stack or heap. */ /*! diff -Nru pvr-omap4-dkms-1.9.0.6.1.1/sgx/services4/srvkm/include/perfkm.h pvr-omap4-dkms-1.9.0.7.1.1/sgx/services4/srvkm/include/perfkm.h --- pvr-omap4-dkms-1.9.0.6.1.1/sgx/services4/srvkm/include/perfkm.h 2012-08-07 16:30:28.000000000 +0000 +++ pvr-omap4-dkms-1.9.0.7.1.1/sgx/services4/srvkm/include/perfkm.h 2012-10-15 10:07:43.000000000 +0000 @@ -1,5 +1,5 @@ /*************************************************************************/ /*! -@Title Vista-specific Perf initialisation +@Title Perf initialisation @Copyright Copyright (c) Imagination Technologies Ltd. All Rights Reserved @License Dual MIT/GPLv2 @@ -43,11 +43,6 @@ #include "img_types.h" -/* - * Note, WDDM needs to perform initialisation and deinitialisation - * in order to support HW performance measurement. Other platforms - * should not need to do anything in these functions. - */ #define PERFINIT() #define PERFDEINIT()