mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-06 02:18:05 +08:00
Move KMD Notify logic from CSR to specialized helper
- Decission about timeout enabling and value moved out of CSR - Timeout multiplier is no longer Linux specific Change-Id: I6858fe2f811ef13802b95e0470e310210a9dea8b
This commit is contained in:
committed by
sys_ocldev
parent
10ada58bd6
commit
87f8f735f9
@@ -569,12 +569,12 @@ inline void CommandStreamReceiverHw<GfxFamily>::emitNoop(LinearStream &commandSt
|
||||
template <typename GfxFamily>
|
||||
inline void CommandStreamReceiverHw<GfxFamily>::waitForTaskCountWithKmdNotifyFallback(uint32_t taskCountToWait, FlushStamp flushStampToWait, bool useQuickKmdSleep) {
|
||||
const auto &kmdNotifyProperties = this->hwInfo.capabilityTable.kmdNotifyProperties;
|
||||
useQuickKmdSleep |= kmdNotifyProperties.applyQuickKmdSleepForSporadicWait(lastWaitForCompletionTimestamp);
|
||||
|
||||
int64_t kmdNotifyDelay = kmdNotifyProperties.selectDelay(useQuickKmdSleep) * computeTimeoutMultiplier(useQuickKmdSleep, taskCountToWait);
|
||||
int64_t waitTimeout = kmdNotifyProperties.pickTimeoutValue(lastWaitForCompletionTimestamp, useQuickKmdSleep, *getTagAddress(), taskCountToWait);
|
||||
|
||||
auto status = waitForCompletionWithTimeout(kmdNotifyProperties.enableKmdNotify && flushStampToWait != 0,
|
||||
kmdNotifyDelay, taskCountToWait);
|
||||
auto status = waitForCompletionWithTimeout(kmdNotifyProperties.timeoutEnabled(flushStampToWait),
|
||||
waitTimeout,
|
||||
taskCountToWait);
|
||||
if (!status) {
|
||||
waitForFlushStamp(flushStampToWait);
|
||||
//now call blocking wait, this is to ensure that task count is reached
|
||||
|
||||
Reference in New Issue
Block a user