Revert "Deferred deletion of allocations in main thread"

This reverts commit 2ea734491a.

Signed-off-by: Igor Venevtsev <igor.venevtsev@intel.com>
This commit is contained in:
Igor Venevtsev
2023-03-20 14:34:46 +00:00
committed by Compute-Runtime-Automation
parent 43cc747843
commit 062abef8ef
20 changed files with 24 additions and 196 deletions

View File

@@ -5,7 +5,6 @@
*
*/
#include "shared/test/common/mocks/mock_deferrable_deletion.h"
#include "shared/test/common/mocks/mock_deferred_deleter.h"
#include "gtest/gtest.h"
@@ -22,70 +21,16 @@ TEST(DeferredDeleter, WhenDeferredDeleterIsCreatedThenItIsNotAssignable) {
EXPECT_FALSE(std::is_copy_assignable<DeferredDeleter>::value);
}
struct DeferredDeleterTest : public ::testing::Test {
void SetUp() override {
deleter.reset(new MockDeferredDeleter());
}
void TearDown() override {
EXPECT_TRUE(deleter->isQueueEmpty());
EXPECT_EQ(0, deleter->getElementsToRelease());
}
std::unique_ptr<MockDeferredDeleter> deleter;
};
TEST_F(DeferredDeleterTest, WhenTheAllocationsAreReadyThenCallClearQueueTillFirstFailure) {
auto deletion1 = new MockDeferrableDeletion();
auto deletion2 = new MockDeferrableDeletion();
deleter->DeferredDeleter::deferDeletion(deletion1);
deleter->DeferredDeleter::deferDeletion(deletion2);
EXPECT_FALSE(deleter->isQueueEmpty());
deleter->clearQueueTillFirstFailure();
EXPECT_TRUE(deleter->isQueueEmpty());
EXPECT_EQ(1, deleter->clearQueueTillFirstFailureCalled);
EXPECT_EQ(1, deleter->clearCalled);
EXPECT_EQ(1, deleter->clearCalledWithBreakTillFailure);
}
TEST_F(DeferredDeleterTest, WhenSomeAllocationIsNotReadyThenCallClearQueueTillFirstFailureMultipleTimes) {
auto deletionReady = new MockDeferrableDeletion();
auto deletionNotReadyTill3 = new MockDeferrableDeletion();
deletionNotReadyTill3->setTrialTimes(3);
deleter->DeferredDeleter::deferDeletion(deletionReady);
deleter->DeferredDeleter::deferDeletion(deletionNotReadyTill3);
EXPECT_FALSE(deleter->isQueueEmpty());
deleter->clearQueueTillFirstFailure();
EXPECT_FALSE(deleter->isQueueEmpty());
EXPECT_EQ(1, deleter->clearQueueTillFirstFailureCalled);
EXPECT_EQ(1, deleter->clearCalled);
EXPECT_EQ(1, deleter->clearCalledWithBreakTillFailure);
deleter->clearQueueTillFirstFailure();
EXPECT_FALSE(deleter->isQueueEmpty());
deleter->clearQueueTillFirstFailure();
EXPECT_TRUE(deleter->isQueueEmpty());
}
TEST_F(DeferredDeleterTest, WhenSomeAllocationIsNotReadyThenCallClearQueueTillFirstFailureAndThenDrain) {
auto deletionReady = new MockDeferrableDeletion();
auto deletionNotReadyTill3 = new MockDeferrableDeletion();
deletionNotReadyTill3->setTrialTimes(3);
deleter->DeferredDeleter::deferDeletion(deletionReady);
deleter->DeferredDeleter::deferDeletion(deletionNotReadyTill3);
EXPECT_FALSE(deleter->isQueueEmpty());
deleter->clearQueueTillFirstFailure();
EXPECT_FALSE(deleter->isQueueEmpty());
EXPECT_EQ(1, deleter->clearQueueTillFirstFailureCalled);
EXPECT_EQ(1, deleter->clearCalled);
EXPECT_EQ(1, deleter->clearCalledWithBreakTillFailure);
deleter->drain();
TEST(DeferredDeleter, givenDeferredDeleterWhenBlockingDrainIsCalledThenArElementsReleasedIsCalled) {
auto deleter = std::make_unique<MockDeferredDeleter>();
deleter->drain(true);
EXPECT_NE(0, deleter->areElementsReleasedCalled);
EXPECT_EQ(1, deleter->drainCalled);
EXPECT_TRUE(deleter->isQueueEmpty());
}
TEST_F(DeferredDeleterTest, GivenDeferredDeleterWithEmptyQueueThenCallClearQueueTillFirstFailure) {
deleter->clearQueueTillFirstFailure();
TEST(DeferredDeleter, givenDeferredDeleterWhenNonBlockingDrainIsCalledThenArElementsReleasedIsNotCalled) {
auto deleter = std::make_unique<MockDeferredDeleter>();
deleter->drain(false);
EXPECT_EQ(0, deleter->areElementsReleasedCalled);
EXPECT_EQ(1, deleter->clearQueueTillFirstFailureCalled);
EXPECT_EQ(1, deleter->drainCalled);
}

View File

@@ -157,13 +157,7 @@ HWTEST_F(MemoryhManagerMultiContextResourceTests, givenAllocationUsedByManyOsCon
EXPECT_TRUE(nonDefaultOsContext->isLowPriority());
auto graphicsAllocation = memoryManager->allocateGraphicsMemoryWithProperties(MockAllocationProperties{device->getRootDeviceIndex(), MemoryConstants::pageSize});
auto &productHelper = device->getProductHelper();
if (productHelper.isMultiContextResourceDeferDeletionSupported()) {
multiContextDestructor->expectClearQueueTillFirstFailure();
} else {
multiContextDestructor->expectDrainBlockingValue(false);
}
multiContextDestructor->expectDrainBlockingValue(false);
nonDefaultCsr->taskCount = *nonDefaultCsr->getTagAddress();
nonDefaultCsr->latestFlushedTaskCount = *nonDefaultCsr->getTagAddress();