mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-21 09:14:47 +08:00
Revert "Deferred deletion of allocations in main thread"
This reverts commit 418e0f7322.
Signed-off-by: Compute-Runtime-Validation <compute-runtime-validation@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
0e6cc86821
commit
cac134028c
@@ -96,7 +96,7 @@ void *DeferredDeleter::run(void *arg) {
|
||||
}
|
||||
lock.unlock();
|
||||
// Delete items placed into deferred delete queue
|
||||
self->clearQueue(false);
|
||||
self->clearQueue();
|
||||
lock.lock();
|
||||
// Check whether working thread should be stopped
|
||||
} while (!self->shouldStop());
|
||||
@@ -105,33 +105,21 @@ void *DeferredDeleter::run(void *arg) {
|
||||
}
|
||||
|
||||
void DeferredDeleter::drain(bool blocking) {
|
||||
clearQueue(false);
|
||||
clearQueue();
|
||||
if (blocking) {
|
||||
while (!areElementsReleased())
|
||||
;
|
||||
}
|
||||
}
|
||||
|
||||
void DeferredDeleter::clearQueueTillFirstFailure() {
|
||||
if (numClients > 0) {
|
||||
return;
|
||||
}
|
||||
clearQueue(true);
|
||||
}
|
||||
|
||||
void DeferredDeleter::clearQueue(bool breakOnFailure) {
|
||||
void DeferredDeleter::clearQueue() {
|
||||
do {
|
||||
auto deletion = queue.removeFrontOne();
|
||||
if (deletion) {
|
||||
if (deletion->apply()) {
|
||||
elementsToRelease--;
|
||||
} else {
|
||||
if (breakOnFailure) {
|
||||
queue.pushFrontOne(*deletion.release());
|
||||
break;
|
||||
} else {
|
||||
queue.pushTailOne(*deletion.release());
|
||||
}
|
||||
queue.pushTailOne(*deletion.release());
|
||||
}
|
||||
}
|
||||
} while (!queue.peekIsEmpty());
|
||||
|
||||
@@ -31,13 +31,11 @@ class DeferredDeleter {
|
||||
|
||||
MOCKABLE_VIRTUAL void drain(bool blocking);
|
||||
|
||||
MOCKABLE_VIRTUAL void clearQueueTillFirstFailure();
|
||||
|
||||
protected:
|
||||
void stop();
|
||||
void safeStop();
|
||||
void ensureThread();
|
||||
MOCKABLE_VIRTUAL void clearQueue(bool breakOnFailure);
|
||||
MOCKABLE_VIRTUAL void clearQueue();
|
||||
MOCKABLE_VIRTUAL bool areElementsReleased();
|
||||
MOCKABLE_VIRTUAL bool shouldStop();
|
||||
|
||||
|
||||
@@ -258,7 +258,7 @@ void MemoryManager::checkGpuUsageAndDestroyGraphicsAllocations(GraphicsAllocatio
|
||||
if (gfxAllocation->isUsed()) {
|
||||
if (gfxAllocation->isUsedByManyOsContexts()) {
|
||||
multiContextResourceDestructor->deferDeletion(new DeferrableAllocationDeletion{*this, *gfxAllocation});
|
||||
multiContextResourceDestructor->clearQueueTillFirstFailure();
|
||||
multiContextResourceDestructor->drain(false);
|
||||
return;
|
||||
}
|
||||
for (auto &engine : getRegisteredEngines()) {
|
||||
|
||||
Reference in New Issue
Block a user