mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-07 21:27:04 +08:00
Add returned status to MemoryOperationsHandler
Change-Id: Ic8685e3711cec03d8f83d371fa7152ee095a47a0 Signed-off-by: Maciej Plewka <maciej.plewka@intel.com>
This commit is contained in:
committed by
sys_ocldev
parent
77e22bd81b
commit
7827501b91
@@ -16,8 +16,8 @@ class MockMemoryOperationsHandler : public MemoryOperationsHandler {
|
||||
public:
|
||||
MockMemoryOperationsHandler() {}
|
||||
virtual ~MockMemoryOperationsHandler() {}
|
||||
bool makeResident(GraphicsAllocation &gfxAllocation) { return false; }
|
||||
bool evict(GraphicsAllocation &gfxAllocation) { return false; }
|
||||
bool isResident(GraphicsAllocation &gfxAllocation) { return false; }
|
||||
MemoryOperationsStatus makeResident(GraphicsAllocation &gfxAllocation) { return MemoryOperationsStatus::UNSUPPORTED; }
|
||||
MemoryOperationsStatus evict(GraphicsAllocation &gfxAllocation) { return MemoryOperationsStatus::UNSUPPORTED; }
|
||||
MemoryOperationsStatus isResident(GraphicsAllocation &gfxAllocation) { return MemoryOperationsStatus::UNSUPPORTED; }
|
||||
};
|
||||
} // namespace NEO
|
||||
@@ -6,6 +6,7 @@
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#include "core/memory_manager/memory_operations_status.h"
|
||||
#include "runtime/os_interface/windows/wddm_residency_allocations_container.h"
|
||||
#include "unit_tests/mocks/wddm_mock_helpers.h"
|
||||
|
||||
@@ -20,22 +21,22 @@ class MockWddmResidentAllocationsContainer : public WddmResidentAllocationsConta
|
||||
MockWddmResidentAllocationsContainer(Wddm *wddm) : WddmResidentAllocationsContainer(wddm) {}
|
||||
virtual ~MockWddmResidentAllocationsContainer() = default;
|
||||
|
||||
bool makeResidentResource(const D3DKMT_HANDLE &handle) override {
|
||||
MemoryOperationsStatus makeResidentResource(const D3DKMT_HANDLE &handle) override {
|
||||
makeResidentResult.called++;
|
||||
makeResidentResult.success = WddmResidentAllocationsContainer::makeResidentResource(handle);
|
||||
return makeResidentResult.success;
|
||||
makeResidentResult.operationSuccess = WddmResidentAllocationsContainer::makeResidentResource(handle);
|
||||
return makeResidentResult.operationSuccess;
|
||||
}
|
||||
|
||||
EvictionStatus evictAllResources() override {
|
||||
MemoryOperationsStatus evictAllResources() override {
|
||||
evictAllResourcesResult.called++;
|
||||
evictAllResourcesResult.status = WddmResidentAllocationsContainer::evictAllResources();
|
||||
return evictAllResourcesResult.status;
|
||||
evictAllResourcesResult.operationSuccess = WddmResidentAllocationsContainer::evictAllResources();
|
||||
return evictAllResourcesResult.operationSuccess;
|
||||
}
|
||||
|
||||
EvictionStatus evictResource(const D3DKMT_HANDLE &handle) override {
|
||||
MemoryOperationsStatus evictResource(const D3DKMT_HANDLE &handle) override {
|
||||
evictResourceResult.called++;
|
||||
evictResourceResult.status = WddmResidentAllocationsContainer::evictResource(handle);
|
||||
return evictResourceResult.status;
|
||||
evictResourceResult.operationSuccess = WddmResidentAllocationsContainer::evictResource(handle);
|
||||
return evictResourceResult.operationSuccess;
|
||||
}
|
||||
|
||||
std::unique_lock<SpinLock> acquireLock(SpinLock &lock) override {
|
||||
@@ -49,11 +50,11 @@ class MockWddmResidentAllocationsContainer : public WddmResidentAllocationsConta
|
||||
WddmResidentAllocationsContainer::removeResource(handle);
|
||||
}
|
||||
|
||||
WddmMockHelpers::CallResult makeResidentResult;
|
||||
WddmMockHelpers::CallResult acquireLockResult;
|
||||
WddmMockHelpers::CallResult removeResourceResult;
|
||||
WddmMockHelpers::EvictCallResult evictAllResourcesResult;
|
||||
WddmMockHelpers::EvictCallResult evictResourceResult;
|
||||
WddmMockHelpers::MemoryOperationResult makeResidentResult;
|
||||
WddmMockHelpers::MemoryOperationResult acquireLockResult;
|
||||
WddmMockHelpers::MemoryOperationResult removeResourceResult;
|
||||
WddmMockHelpers::MemoryOperationResult evictAllResourcesResult;
|
||||
WddmMockHelpers::MemoryOperationResult evictResourceResult;
|
||||
};
|
||||
|
||||
} // namespace NEO
|
||||
|
||||
@@ -27,9 +27,6 @@ struct MakeResidentCall : CallResult {
|
||||
std::vector<D3DKMT_HANDLE> handlePack;
|
||||
uint32_t handleCount = 0;
|
||||
};
|
||||
struct EvictCallResult : CallResult {
|
||||
EvictionStatus status = EvictionStatus::UNKNOWN;
|
||||
};
|
||||
struct KmDafLockCall : CallResult {
|
||||
std::vector<D3DKMT_HANDLE> lockedAllocations;
|
||||
};
|
||||
@@ -39,6 +36,9 @@ struct WaitFromCpuResult : CallResult {
|
||||
struct FreeGpuVirtualAddressCall : CallResult {
|
||||
uint64_t sizePassed = -1;
|
||||
};
|
||||
struct MemoryOperationResult : CallResult {
|
||||
MemoryOperationsStatus operationSuccess = MemoryOperationsStatus::UNSUPPORTED;
|
||||
};
|
||||
} // namespace WddmMockHelpers
|
||||
|
||||
} // namespace NEO
|
||||
|
||||
@@ -23,12 +23,12 @@ struct DrmMemoryOperationsHandlerTest : public ::testing::Test {
|
||||
};
|
||||
|
||||
TEST_F(DrmMemoryOperationsHandlerTest, whenMakingResidentAllocaionExpectMakeResidentFail) {
|
||||
EXPECT_FALSE(drmMemoryOperationsHandler->makeResident(graphicsAllocation));
|
||||
EXPECT_FALSE(drmMemoryOperationsHandler->isResident(graphicsAllocation));
|
||||
EXPECT_EQ(drmMemoryOperationsHandler->makeResident(graphicsAllocation), MemoryOperationsStatus::UNSUPPORTED);
|
||||
EXPECT_EQ(drmMemoryOperationsHandler->isResident(graphicsAllocation), MemoryOperationsStatus::UNSUPPORTED);
|
||||
}
|
||||
|
||||
TEST_F(DrmMemoryOperationsHandlerTest, whenEvictingResidentAllocationExpectEvictFalse) {
|
||||
EXPECT_FALSE(drmMemoryOperationsHandler->makeResident(graphicsAllocation));
|
||||
EXPECT_FALSE(drmMemoryOperationsHandler->evict(graphicsAllocation));
|
||||
EXPECT_FALSE(drmMemoryOperationsHandler->isResident(graphicsAllocation));
|
||||
EXPECT_EQ(drmMemoryOperationsHandler->makeResident(graphicsAllocation), MemoryOperationsStatus::UNSUPPORTED);
|
||||
EXPECT_EQ(drmMemoryOperationsHandler->evict(graphicsAllocation), MemoryOperationsStatus::UNSUPPORTED);
|
||||
EXPECT_EQ(drmMemoryOperationsHandler->isResident(graphicsAllocation), MemoryOperationsStatus::UNSUPPORTED);
|
||||
}
|
||||
|
||||
@@ -844,7 +844,7 @@ TEST_F(WddmLockWithMakeResidentTests, whenApplyBlockingMakeResidentAndMakeReside
|
||||
}
|
||||
TEST_F(WddmLockWithMakeResidentTests, givenNoTemporaryResourcesWhenEvictingAllTemporaryResourcesThenEvictionIsNotApplied) {
|
||||
wddm->getTemporaryResourcesContainer()->evictAllResources();
|
||||
EXPECT_EQ(EvictionStatus::NOT_APPLIED, mockTemporaryResources->evictAllResourcesResult.status);
|
||||
EXPECT_EQ(MemoryOperationsStatus::MEMORY_NOT_FOUND, mockTemporaryResources->evictAllResourcesResult.operationSuccess);
|
||||
}
|
||||
TEST_F(WddmLockWithMakeResidentTests, whenEvictingAllTemporaryResourcesThenAcquireTemporaryResourcesLock) {
|
||||
wddm->getTemporaryResourcesContainer()->evictAllResources();
|
||||
@@ -859,7 +859,7 @@ TEST_F(WddmLockWithMakeResidentTests, whenEvictingAllTemporaryResourcesAndAllEvi
|
||||
EXPECT_CALL(gmockWddm, evict(::testing::_, ::testing::_, ::testing::_)).Times(1).WillOnce(::testing::Return(true));
|
||||
gmockWddm.getTemporaryResourcesContainer()->evictAllResources();
|
||||
EXPECT_EQ(1u, mockTemporaryResources->evictAllResourcesResult.called);
|
||||
EXPECT_EQ(EvictionStatus::SUCCESS, mockTemporaryResources->evictAllResourcesResult.status);
|
||||
EXPECT_EQ(MemoryOperationsStatus::SUCCESS, mockTemporaryResources->evictAllResourcesResult.operationSuccess);
|
||||
}
|
||||
TEST_F(WddmLockWithMakeResidentTests, givenThreeAllocationsWhenEvictingAllTemporaryResourcesThenCallEvictForEachAllocationAndCleanList) {
|
||||
GmockWddm gmockWddm;
|
||||
@@ -881,11 +881,11 @@ TEST_F(WddmLockWithMakeResidentTests, givenThreeAllocationsWhenEvictingAllTempor
|
||||
}
|
||||
EXPECT_CALL(gmockWddm, evict(::testing::_, ::testing::_, ::testing::_)).Times(1).WillOnce(::testing::Return(false));
|
||||
gmockWddm.getTemporaryResourcesContainer()->evictAllResources();
|
||||
EXPECT_EQ(EvictionStatus::FAILED, mockTemporaryResources->evictAllResourcesResult.status);
|
||||
EXPECT_EQ(MemoryOperationsStatus::FAILED, mockTemporaryResources->evictAllResourcesResult.operationSuccess);
|
||||
}
|
||||
TEST_F(WddmLockWithMakeResidentTests, givenNoTemporaryResourcesWhenEvictingTemporaryResourceThenEvictionIsNotApplied) {
|
||||
wddm->getTemporaryResourcesContainer()->evictResource(ALLOCATION_HANDLE);
|
||||
EXPECT_EQ(EvictionStatus::NOT_APPLIED, mockTemporaryResources->evictResourceResult.status);
|
||||
EXPECT_EQ(MemoryOperationsStatus::MEMORY_NOT_FOUND, mockTemporaryResources->evictResourceResult.operationSuccess);
|
||||
}
|
||||
TEST_F(WddmLockWithMakeResidentTests, whenEvictingTemporaryResourceThenAcquireTemporaryResourcesLock) {
|
||||
wddm->getTemporaryResourcesContainer()->evictResource(ALLOCATION_HANDLE);
|
||||
@@ -897,7 +897,7 @@ TEST_F(WddmLockWithMakeResidentTests, whenEvictingNonExistingTemporaryResourceTh
|
||||
EXPECT_FALSE(mockTemporaryResources->resourceHandles.empty());
|
||||
wddm->getTemporaryResourcesContainer()->evictResource(ALLOCATION_HANDLE + 1);
|
||||
EXPECT_FALSE(mockTemporaryResources->resourceHandles.empty());
|
||||
EXPECT_EQ(EvictionStatus::NOT_APPLIED, mockTemporaryResources->evictResourceResult.status);
|
||||
EXPECT_EQ(MemoryOperationsStatus::MEMORY_NOT_FOUND, mockTemporaryResources->evictResourceResult.operationSuccess);
|
||||
}
|
||||
TEST_F(WddmLockWithMakeResidentTests, whenEvictingTemporaryResourceAndEvictFailsThenReturnFail) {
|
||||
GmockWddm gmockWddm;
|
||||
@@ -906,7 +906,7 @@ TEST_F(WddmLockWithMakeResidentTests, whenEvictingTemporaryResourceAndEvictFails
|
||||
EXPECT_CALL(gmockWddm, evict(::testing::_, ::testing::_, ::testing::_)).Times(1).WillOnce(::testing::Return(false));
|
||||
gmockWddm.getTemporaryResourcesContainer()->evictResource(ALLOCATION_HANDLE);
|
||||
EXPECT_TRUE(mockTemporaryResources->resourceHandles.empty());
|
||||
EXPECT_EQ(EvictionStatus::FAILED, mockTemporaryResources->evictResourceResult.status);
|
||||
EXPECT_EQ(MemoryOperationsStatus::FAILED, mockTemporaryResources->evictResourceResult.operationSuccess);
|
||||
}
|
||||
TEST_F(WddmLockWithMakeResidentTests, whenEvictingTemporaryResourceAndEvictSucceedThenReturnSuccess) {
|
||||
GmockWddm gmockWddm;
|
||||
@@ -915,7 +915,7 @@ TEST_F(WddmLockWithMakeResidentTests, whenEvictingTemporaryResourceAndEvictSucce
|
||||
EXPECT_CALL(gmockWddm, evict(::testing::_, ::testing::_, ::testing::_)).Times(1).WillOnce(::testing::Return(true));
|
||||
gmockWddm.getTemporaryResourcesContainer()->evictResource(ALLOCATION_HANDLE);
|
||||
EXPECT_TRUE(mockTemporaryResources->resourceHandles.empty());
|
||||
EXPECT_EQ(EvictionStatus::SUCCESS, mockTemporaryResources->evictResourceResult.status);
|
||||
EXPECT_EQ(MemoryOperationsStatus::SUCCESS, mockTemporaryResources->evictResourceResult.operationSuccess);
|
||||
}
|
||||
TEST_F(WddmLockWithMakeResidentTests, whenEvictingTemporaryResourceThenOtherResourcesRemainOnTheList) {
|
||||
mockTemporaryResources->resourceHandles.push_back(0x1);
|
||||
|
||||
@@ -26,12 +26,12 @@ struct WddmMemoryOperationsHandlerTest : public WddmTest {
|
||||
};
|
||||
|
||||
TEST_F(WddmMemoryOperationsHandlerTest, whenMakingResidentAllocaionExpectMakeResidentCalled) {
|
||||
EXPECT_TRUE(wddmMemoryOperationsHandler->makeResident(wddmAllocation));
|
||||
EXPECT_TRUE(wddmMemoryOperationsHandler->isResident(wddmAllocation));
|
||||
EXPECT_EQ(wddmMemoryOperationsHandler->makeResident(wddmAllocation), MemoryOperationsStatus::SUCCESS);
|
||||
EXPECT_EQ(wddmMemoryOperationsHandler->isResident(wddmAllocation), MemoryOperationsStatus::SUCCESS);
|
||||
}
|
||||
|
||||
TEST_F(WddmMemoryOperationsHandlerTest, whenEvictingResidentAllocationExpectEvictCalled) {
|
||||
EXPECT_TRUE(wddmMemoryOperationsHandler->makeResident(wddmAllocation));
|
||||
EXPECT_TRUE(wddmMemoryOperationsHandler->evict(wddmAllocation));
|
||||
EXPECT_FALSE(wddmMemoryOperationsHandler->isResident(wddmAllocation));
|
||||
EXPECT_EQ(wddmMemoryOperationsHandler->makeResident(wddmAllocation), MemoryOperationsStatus::SUCCESS);
|
||||
EXPECT_EQ(wddmMemoryOperationsHandler->evict(wddmAllocation), MemoryOperationsStatus::SUCCESS);
|
||||
EXPECT_EQ(wddmMemoryOperationsHandler->isResident(wddmAllocation), MemoryOperationsStatus::MEMORY_NOT_FOUND);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user