mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-05 09:09:04 +08:00
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:
committed by
sys_ocldev
parent
a5880f19af
commit
94761a78d6
@@ -64,6 +64,9 @@ CommandStreamReceiver::~CommandStreamReceiver() {
|
||||
|
||||
internalAllocationStorage->cleanAllocationList(-1, REUSABLE_ALLOCATION);
|
||||
internalAllocationStorage->cleanAllocationList(-1, TEMPORARY_ALLOCATION);
|
||||
if (getMemoryManager()) {
|
||||
getMemoryManager()->unregisterEngineForCsr(this);
|
||||
}
|
||||
}
|
||||
|
||||
void CommandStreamReceiver::makeResident(GraphicsAllocation &gfxAllocation) {
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -151,6 +151,7 @@ class MemoryManager {
|
||||
CommandStreamReceiver *getDefaultCommandStreamReceiver(uint32_t deviceId) const;
|
||||
EngineControlContainer &getRegisteredEngines();
|
||||
EngineControl *getRegisteredEngineForCsr(CommandStreamReceiver *commandStreamReceiver);
|
||||
void unregisterEngineForCsr(CommandStreamReceiver *commandStreamReceiver);
|
||||
HostPtrManager *getHostPtrManager() const { return hostPtrManager.get(); }
|
||||
void setDefaultEngineIndex(uint32_t index) { defaultEngineIndex = index; }
|
||||
virtual bool copyMemoryToAllocation(GraphicsAllocation *graphicsAllocation, const void *memoryToCopy, size_t sizeToCopy);
|
||||
|
||||
Reference in New Issue
Block a user