diff options
Diffstat (limited to 'pvr-source/services4/srvkm/devices/sgx/sgxutils.c')
-rw-r--r-- | pvr-source/services4/srvkm/devices/sgx/sgxutils.c | 14 |
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); |