Unregister engine during destruction of related command stream receiver

Change-Id: I9225439b67a11c02998296bd9c3fbc4e2149cae2
Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
Mateusz Jablonski
2019-09-02 13:23:25 +02:00
committed by sys_ocldev
parent a5880f19af
commit 94761a78d6
5 changed files with 41 additions and 6 deletions

View File

@@ -383,6 +383,18 @@ EngineControl *MemoryManager::getRegisteredEngineForCsr(CommandStreamReceiver *c
return engineCtrl;
}
void MemoryManager::unregisterEngineForCsr(CommandStreamReceiver *commandStreamReceiver) {
auto numRegisteredEngines = registeredEngines.size();
for (auto i = 0u; i < numRegisteredEngines; i++) {
if (registeredEngines[i].commandStreamReceiver == commandStreamReceiver) {
registeredEngines[i].osContext->decRefInternal();
std::swap(registeredEngines[i], registeredEngines[numRegisteredEngines - 1]);
registeredEngines.pop_back();
return;
}
}
}
CommandStreamReceiver *MemoryManager::getDefaultCommandStreamReceiver(uint32_t deviceId) const {
return peekExecutionEnvironment().commandStreamReceivers[deviceId][defaultEngineIndex].get();
}