aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/pvr/refcount.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/pvr/refcount.c')
-rw-r--r--drivers/gpu/pvr/refcount.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/drivers/gpu/pvr/refcount.c b/drivers/gpu/pvr/refcount.c
index a8dc3d2..102b1c3 100644
--- a/drivers/gpu/pvr/refcount.c
+++ b/drivers/gpu/pvr/refcount.c
@@ -115,6 +115,8 @@ void PVRSRVKernelSyncInfoIncRef2(const IMG_CHAR *pszFile, IMG_INT iLine,
PVRSRV_KERNEL_SYNC_INFO *psKernelSyncInfo,
PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo)
{
+ IMG_UINT32 ui32RefValue = OSAtomicRead(psKernelSyncInfo->pvRefCount);
+
if(!(guiDebugMask & PVRSRV_REFCOUNT_CCB_DEBUG_SYNCINFO))
goto skip;
@@ -131,8 +133,8 @@ void PVRSRVKernelSyncInfoIncRef2(const IMG_CHAR *pszFile, IMG_INT iLine,
psKernelMemInfo,
NULL,
(psKernelMemInfo) ? psKernelMemInfo->sMemBlk.hOSMemHandle : NULL,
- psKernelSyncInfo->ui32RefCount,
- psKernelSyncInfo->ui32RefCount + 1,
+ ui32RefValue,
+ ui32RefValue + 1,
(psKernelMemInfo) ? psKernelMemInfo->uAllocSize : 0);
gsRefCountCCB[giOffset].pcMesg[PVRSRV_REFCOUNT_CCB_MESG_MAX - 1] = 0;
giOffset = (giOffset + 1) % PVRSRV_REFCOUNT_CCB_MAX;
@@ -140,7 +142,7 @@ void PVRSRVKernelSyncInfoIncRef2(const IMG_CHAR *pszFile, IMG_INT iLine,
PVRSRV_UNLOCK_CCB();
skip:
- psKernelSyncInfo->ui32RefCount++;
+ PVRSRVAcquireSyncInfoKM(psKernelSyncInfo);
}
IMG_INTERNAL
@@ -148,6 +150,8 @@ void PVRSRVKernelSyncInfoDecRef2(const IMG_CHAR *pszFile, IMG_INT iLine,
PVRSRV_KERNEL_SYNC_INFO *psKernelSyncInfo,
PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo)
{
+ IMG_UINT32 ui32RefValue = OSAtomicRead(psKernelSyncInfo->pvRefCount);
+
if(!(guiDebugMask & PVRSRV_REFCOUNT_CCB_DEBUG_SYNCINFO))
goto skip;
@@ -164,8 +168,8 @@ void PVRSRVKernelSyncInfoDecRef2(const IMG_CHAR *pszFile, IMG_INT iLine,
psKernelMemInfo,
(psKernelMemInfo) ? psKernelMemInfo->sMemBlk.hOSMemHandle : NULL,
NULL,
- psKernelSyncInfo->ui32RefCount,
- psKernelSyncInfo->ui32RefCount - 1,
+ ui32RefValue,
+ ui32RefValue - 1,
(psKernelMemInfo) ? psKernelMemInfo->uAllocSize : 0);
gsRefCountCCB[giOffset].pcMesg[PVRSRV_REFCOUNT_CCB_MESG_MAX - 1] = 0;
giOffset = (giOffset + 1) % PVRSRV_REFCOUNT_CCB_MAX;
@@ -173,7 +177,7 @@ void PVRSRVKernelSyncInfoDecRef2(const IMG_CHAR *pszFile, IMG_INT iLine,
PVRSRV_UNLOCK_CCB();
skip:
- psKernelSyncInfo->ui32RefCount--;
+ PVRSRVReleaseSyncInfoKM(psKernelSyncInfo);
}
IMG_INTERNAL