Deferred deletion of allocations in main thread

Add a clearQueueTillFirstFailure interface to DeferredDeleter, which
iterates the queue from the front and delete the allocations in the
queue till a failure. It is called by defer deletion of allocations
occupied by mutliple contexts to unlock the execution in main thread

Related-To: NEO-7532

Signed-off-by: HeFan2017 <fan.f.he@intel.com>
This commit is contained in:
HeFan2017
2022-12-12 10:57:02 +00:00
committed by Compute-Runtime-Automation
parent 1ad4b81b28
commit 2ea734491a
21 changed files with 245 additions and 51 deletions

View File

@@ -24,6 +24,8 @@ class MockDeferredDeleter : public DeferredDeleter {
void drain(bool blocking) override;
void clearQueueTillFirstFailure() override;
bool areElementsReleased() override;
bool shouldStop() override;
@@ -60,6 +62,8 @@ class MockDeferredDeleter : public DeferredDeleter {
std::atomic<int> clearCalled;
std::atomic<int> clearCalledWithBreakTillFailure;
int deferDeletionCalled = 0;
bool stopAfter3loopsInRun = false;
@@ -69,10 +73,16 @@ class MockDeferredDeleter : public DeferredDeleter {
void expectDrainBlockingValue(bool value);
void expectClearQueueTillFirstFailure();
bool expectedDrainValue = false;
bool expectDrainCalled = false;
void clearQueue() override;
bool expectClearQueueTillFirstFailureCalled = false;
int clearQueueTillFirstFailureCalled = 0;
void clearQueue(bool breakOnFailure) override;
};
} // namespace NEO