summaryrefslogtreecommitdiffstats
path: root/pvr-source/services4/srvkm/devices/sgx/sgxutils.c
diff options
context:
space:
mode:
Diffstat (limited to 'pvr-source/services4/srvkm/devices/sgx/sgxutils.c')
-rw-r--r--pvr-source/services4/srvkm/devices/sgx/sgxutils.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/pvr-source/services4/srvkm/devices/sgx/sgxutils.c b/pvr-source/services4/srvkm/devices/sgx/sgxutils.c
index 227675d..d5cb3c1 100644
--- a/pvr-source/services4/srvkm/devices/sgx/sgxutils.c
+++ b/pvr-source/services4/srvkm/devices/sgx/sgxutils.c
@@ -172,9 +172,11 @@ IMG_VOID SGXTestActivePowerEvent (PVRSRV_DEVICE_NODE *psDeviceNode,
((psSGXHostCtl->ui32InterruptFlags & PVRSRV_USSE_EDM_INTERRUPT_IDLE) != 0))
{
psSGXHostCtl->ui32InterruptClearFlags |= PVRSRV_USSE_EDM_INTERRUPT_IDLE;
- psDevInfo->bSGXIdle = IMG_TRUE;
-
- SysSGXIdleEntered();
+ if (psDevInfo->bSGXIdle == IMG_FALSE)
+ {
+ psDevInfo->bSGXIdle = IMG_TRUE;
+ SysSGXIdleEntered();
+ }
}
/*
@@ -709,9 +711,6 @@ PVRSRV_ERROR SGXScheduleCCBCommandKM(PVRSRV_DEVICE_NODE *psDeviceNode,
/* Note that a power-up has been dumped in the init phase. */
PDUMPSUSPEND();
- SysSGXCommandPending(psDevInfo->bSGXIdle);
- psDevInfo->bSGXIdle = IMG_FALSE;
-
/* Ensure that SGX is powered up before kicking the ukernel. */
eError = PVRSRVSetDevicePowerStateKM(psDeviceNode->sDevId.ui32DeviceIndex,
PVRSRV_DEV_POWER_STATE_ON);
@@ -729,6 +728,9 @@ PVRSRV_ERROR SGXScheduleCCBCommandKM(PVRSRV_DEVICE_NODE *psDeviceNode,
return eError;
}
+ SysSGXCommandPending(psDevInfo->bSGXIdle);
+ psDevInfo->bSGXIdle = IMG_FALSE;
+
eError = SGXScheduleCCBCommand(psDeviceNode, eCmdType, psCommandData, ui32CallerID, ui32PDumpFlags, hDevMemContext, bLastInScene);
PVRSRVPowerUnlock(ui32CallerID);