@@ -683,6 +683,7 @@ TEST_F(Wddm20Tests, GivenMultipleHandlesWhenMakingResidentThenAllocationListIsCo
683683 D3DKMT_HANDLE handles[2 ] = {ALLOCATION_HANDLE, ALLOCATION_HANDLE};
684684 gdi->getMakeResidentArg ().NumAllocations = 0 ;
685685 gdi->getMakeResidentArg ().AllocationList = nullptr ;
686+ wddm->callBaseMakeResident = true ;
686687
687688 bool error = wddm->makeResident (handles, 2 , false , nullptr , 0x1000 );
688689 EXPECT_TRUE (error);
@@ -697,6 +698,7 @@ TEST_F(Wddm20Tests, GivenMultipleHandlesWhenMakingResidentThenBytesToTrimIsCorre
697698 gdi->getMakeResidentArg ().NumAllocations = 0 ;
698699 gdi->getMakeResidentArg ().AllocationList = nullptr ;
699700 gdi->getMakeResidentArg ().NumBytesToTrim = 30 ;
701+ wddm->callBaseMakeResident = true ;
700702
701703 uint64_t bytesToTrim = 0 ;
702704 bool success = wddm->makeResident (handles, 2 , false , &bytesToTrim, 0x1000 );
@@ -713,6 +715,7 @@ TEST_F(Wddm20Tests, WhenMakingNonResidentThenEvictIsCalled) {
713715 gdi->getEvictArg ().hDevice = 0 ;
714716 gdi->getEvictArg ().NumAllocations = 0 ;
715717 gdi->getEvictArg ().NumBytesToTrim = 20 ;
718+ wddm->callBaseEvict = true ;
716719
717720 uint64_t sizeToTrim = 10 ;
718721 wddm->evict (&handle, 1 , sizeToTrim);
@@ -918,7 +921,7 @@ TEST_F(WddmLockWithMakeResidentTests, givenAllocationThatDoesntNeedMakeResidentB
918921
919922TEST_F (WddmLockWithMakeResidentTests, givenAllocationThatNeedsMakeResidentBeforeLockWhenLockThenCallBlockingMakeResident) {
920923 wddm->lockResource (ALLOCATION_HANDLE, true , 0x1000 );
921- EXPECT_EQ (1u , mockTemporaryResources ->makeResidentResult .called );
924+ EXPECT_EQ (1u , wddm ->makeResidentResult .called );
922925}
923926
924927TEST_F (WddmLockWithMakeResidentTests, givenAllocationWhenApplyBlockingMakeResidentThenAcquireUniqueLock) {
@@ -934,6 +937,7 @@ TEST_F(WddmLockWithMakeResidentTests, givenAllocationWhenApplyBlockingMakeReside
934937}
935938
936939TEST_F (WddmLockWithMakeResidentTests, givenAllocationWhenApplyBlockingMakeResidentThenWaitForCurrentPagingFenceValue) {
940+ wddm->callBaseMakeResident = true ;
937941 wddm->mockPagingFence = 0u ;
938942 wddm->temporaryResources ->makeResidentResource (ALLOCATION_HANDLE, 0x1000 );
939943 UINT64 expectedCallNumber = NEO::wddmResidencyLoggingAvailable ? MockGdi::pagingFenceReturnValue + 1 : 0ull ;
@@ -945,71 +949,71 @@ TEST_F(WddmLockWithMakeResidentTests, givenAllocationWhenApplyBlockingMakeReside
945949TEST_F (WddmLockWithMakeResidentTests, givenAllocationWhenApplyBlockingMakeResidentAndMakeResidentCallFailsThenEvictTemporaryResourcesAndRetry) {
946950 MockWddmAllocation allocation (rootDeviceEnvironment->getGmmClientContext ());
947951 allocation.handle = 0x3 ;
948- MockWddm mockWddm (*executionEnvironment->rootDeviceEnvironments [0 ]);
949- mockWddm.makeResidentResult = false ;
952+ WddmMock mockWddm (*executionEnvironment->rootDeviceEnvironments [0 ]);
953+ mockWddm.makeResidentStatus = false ;
950954 auto mockTemporaryResources = static_cast <MockWddmResidentAllocationsContainer *>(mockWddm.temporaryResources .get ());
951955 mockWddm.temporaryResources ->makeResidentResource (allocation.handle , 0x1000 );
952956 EXPECT_EQ (1u , mockTemporaryResources->evictAllResourcesResult .called );
953- EXPECT_EQ (allocation.handle , mockWddm.makeResidentParamsPassed [ 0 ]. handles [0 ]);
954- EXPECT_EQ (2u , mockWddm.makeResidentCalled );
957+ EXPECT_EQ (allocation.handle , mockWddm.makeResidentResult . handlePack [0 ]);
958+ EXPECT_EQ (2u , mockWddm.makeResidentResult . called );
955959}
956960
957961TEST_F (WddmLockWithMakeResidentTests, whenApplyBlockingMakeResidentAndTemporaryResourcesAreEvictedSuccessfullyThenCallMakeResidentOneMoreTime) {
958962 MockWddmAllocation allocation (rootDeviceEnvironment->getGmmClientContext ());
959963 allocation.handle = 0x3 ;
960- MockWddm mockWddm (*executionEnvironment->rootDeviceEnvironments [0 ]);
961- mockWddm.makeResidentResult = false ;
964+ WddmMock mockWddm (*executionEnvironment->rootDeviceEnvironments [0 ]);
965+ mockWddm.makeResidentStatus = false ;
962966 auto mockTemporaryResources = static_cast <MockWddmResidentAllocationsContainer *>(mockWddm.temporaryResources .get ());
963967 mockTemporaryResources->resourceHandles .push_back (allocation.handle );
964968 mockWddm.temporaryResources ->makeResidentResource (allocation.handle , 0x1000 );
965969 EXPECT_EQ (2u , mockTemporaryResources->evictAllResourcesResult .called );
966- EXPECT_EQ (1u , mockWddm.evictCalled );
967- EXPECT_EQ (allocation.handle , mockWddm.makeResidentParamsPassed [ 0 ]. handles [0 ]);
968- EXPECT_EQ (3u , mockWddm.makeResidentCalled );
970+ EXPECT_EQ (1u , mockWddm.evictResult . called );
971+ EXPECT_EQ (allocation.handle , mockWddm.makeResidentResult . handlePack [0 ]);
972+ EXPECT_EQ (3u , mockWddm.makeResidentResult . called );
969973}
970974
971975TEST_F (WddmLockWithMakeResidentTests, whenApplyBlockingMakeResidentAndMakeResidentStillFailsThenDontStoreTemporaryResource) {
972976 MockWddmAllocation allocation (rootDeviceEnvironment->getGmmClientContext ());
973977 allocation.handle = 0x2 ;
974- MockWddm mockWddm (*executionEnvironment->rootDeviceEnvironments [0 ]);
975- mockWddm.makeResidentResult = false ;
978+ WddmMock mockWddm (*executionEnvironment->rootDeviceEnvironments [0 ]);
979+ mockWddm.makeResidentStatus = false ;
976980 auto mockTemporaryResources = static_cast <MockWddmResidentAllocationsContainer *>(mockWddm.temporaryResources .get ());
977981 mockTemporaryResources->resourceHandles .push_back (0x1 );
978982 EXPECT_EQ (1u , mockTemporaryResources->resourceHandles .size ());
979983 mockWddm.temporaryResources ->makeResidentResource (allocation.handle , 0x1000 );
980984 EXPECT_EQ (0u , mockTemporaryResources->resourceHandles .size ());
981- EXPECT_EQ (1u , mockWddm.evictCalled );
982- EXPECT_EQ (allocation.handle , mockWddm.makeResidentParamsPassed [ 0 ]. handles [0 ]);
983- EXPECT_EQ (3u , mockWddm.makeResidentCalled );
985+ EXPECT_EQ (1u , mockWddm.evictResult . called );
986+ EXPECT_EQ (allocation.handle , mockWddm.makeResidentResult . handlePack [0 ]);
987+ EXPECT_EQ (3u , mockWddm.makeResidentResult . called );
984988}
985989
986990TEST_F (WddmLockWithMakeResidentTests, whenApplyBlockingMakeResidentAndMakeResidentPassesAfterEvictThenStoreTemporaryResource) {
987991 MockWddmAllocation allocation (rootDeviceEnvironment->getGmmClientContext ());
988992 allocation.handle = 0x2 ;
989- MockWddm mockWddm (*executionEnvironment->rootDeviceEnvironments [0 ]);
993+ WddmMock mockWddm (*executionEnvironment->rootDeviceEnvironments [0 ]);
990994 mockWddm.makeResidentResults = {false , true };
991995 auto mockTemporaryResources = static_cast <MockWddmResidentAllocationsContainer *>(mockWddm.temporaryResources .get ());
992996 mockTemporaryResources->resourceHandles .push_back (0x1 );
993997 EXPECT_EQ (1u , mockTemporaryResources->resourceHandles .size ());
994998 mockWddm.temporaryResources ->makeResidentResource (allocation.handle , 0x1000 );
995999 EXPECT_EQ (1u , mockTemporaryResources->resourceHandles .size ());
9961000 EXPECT_EQ (0x2 , mockTemporaryResources->resourceHandles .back ());
997- EXPECT_EQ (1u , mockWddm.evictCalled );
998- EXPECT_EQ (allocation.handle , mockWddm.makeResidentParamsPassed [ 0 ]. handles [0 ]);
999- EXPECT_EQ (2u , mockWddm.makeResidentCalled );
1001+ EXPECT_EQ (1u , mockWddm.evictResult . called );
1002+ EXPECT_EQ (allocation.handle , mockWddm.makeResidentResult . handlePack [0 ]);
1003+ EXPECT_EQ (2u , mockWddm.makeResidentResult . called );
10001004}
10011005
10021006TEST_F (WddmLockWithMakeResidentTests, whenApplyBlockingMakeResidentAndMakeResidentPassesThenStoreTemporaryResource) {
10031007 MockWddmAllocation allocation (rootDeviceEnvironment->getGmmClientContext ());
10041008 allocation.handle = 0x2 ;
1005- MockWddm mockWddm (*executionEnvironment->rootDeviceEnvironments [0 ]);
1009+ WddmMock mockWddm (*executionEnvironment->rootDeviceEnvironments [0 ]);
10061010 auto mockTemporaryResources = static_cast <MockWddmResidentAllocationsContainer *>(mockWddm.temporaryResources .get ());
10071011 mockTemporaryResources->resourceHandles .push_back (0x1 );
10081012 mockWddm.temporaryResources ->makeResidentResource (allocation.handle , 0x1000 );
10091013 EXPECT_EQ (2u , mockTemporaryResources->resourceHandles .size ());
10101014 EXPECT_EQ (0x2 , mockTemporaryResources->resourceHandles .back ());
1011- EXPECT_EQ (allocation.handle , mockWddm.makeResidentParamsPassed [ 0 ]. handles [0 ]);
1012- EXPECT_EQ (1u , mockWddm.makeResidentCalled );
1015+ EXPECT_EQ (allocation.handle , mockWddm.makeResidentResult . handlePack [0 ]);
1016+ EXPECT_EQ (1u , mockWddm.makeResidentResult . called );
10131017}
10141018
10151019TEST_F (WddmLockWithMakeResidentTests, givenNoTemporaryResourcesWhenEvictingAllTemporaryResourcesThenEvictionIsNotApplied) {
@@ -1025,38 +1029,38 @@ TEST_F(WddmLockWithMakeResidentTests, whenEvictingAllTemporaryResourcesThenAcqui
10251029
10261030TEST_F (WddmLockWithMakeResidentTests, whenEvictingAllTemporaryResourcesAndAllEvictionsSucceedThenReturnSuccess) {
10271031 MockWddmAllocation allocation (rootDeviceEnvironment->getGmmClientContext ());
1028- MockWddm mockWddm (*executionEnvironment->rootDeviceEnvironments [0 ]);
1032+ WddmMock mockWddm (*executionEnvironment->rootDeviceEnvironments [0 ]);
10291033 auto mockTemporaryResources = static_cast <MockWddmResidentAllocationsContainer *>(mockWddm.temporaryResources .get ());
10301034 mockTemporaryResources->resourceHandles .push_back (allocation.handle );
10311035 mockWddm.getTemporaryResourcesContainer ()->evictAllResources ();
10321036 EXPECT_EQ (1u , mockTemporaryResources->evictAllResourcesResult .called );
10331037 EXPECT_EQ (MemoryOperationsStatus::SUCCESS, mockTemporaryResources->evictAllResourcesResult .operationSuccess );
1034- EXPECT_EQ (1u , mockWddm.evictCalled );
1038+ EXPECT_EQ (1u , mockWddm.evictResult . called );
10351039}
10361040
10371041TEST_F (WddmLockWithMakeResidentTests, givenThreeAllocationsWhenEvictingAllTemporaryResourcesThenCallEvictForEachAllocationAndCleanList) {
1038- MockWddm mockWddm (*executionEnvironment->rootDeviceEnvironments [0 ]);
1042+ WddmMock mockWddm (*executionEnvironment->rootDeviceEnvironments [0 ]);
10391043 auto mockTemporaryResources = static_cast <MockWddmResidentAllocationsContainer *>(mockWddm.temporaryResources .get ());
10401044 constexpr uint32_t numAllocations = 3u ;
10411045 for (auto i = 0u ; i < numAllocations; i++) {
10421046 mockTemporaryResources->resourceHandles .push_back (i);
10431047 }
10441048 mockWddm.getTemporaryResourcesContainer ()->evictAllResources ();
10451049 EXPECT_TRUE (mockTemporaryResources->resourceHandles .empty ());
1046- EXPECT_EQ (1u , mockWddm.evictCalled );
1050+ EXPECT_EQ (1u , mockWddm.evictResult . called );
10471051}
10481052
10491053TEST_F (WddmLockWithMakeResidentTests, givenThreeAllocationsWhenEvictingAllTemporaryResourcesAndOneOfThemFailsThenReturnFail) {
1050- MockWddm mockWddm (*executionEnvironment->rootDeviceEnvironments [0 ].get ());
1051- mockWddm.evictResult = false ;
1054+ WddmMock mockWddm (*executionEnvironment->rootDeviceEnvironments [0 ].get ());
1055+ mockWddm.evictStatus = false ;
10521056 auto mockTemporaryResources = static_cast <MockWddmResidentAllocationsContainer *>(mockWddm.temporaryResources .get ());
10531057 constexpr uint32_t numAllocations = 3u ;
10541058 for (auto i = 0u ; i < numAllocations; i++) {
10551059 mockTemporaryResources->resourceHandles .push_back (i);
10561060 }
10571061 mockWddm.getTemporaryResourcesContainer ()->evictAllResources ();
10581062 EXPECT_EQ (MemoryOperationsStatus::FAILED, mockTemporaryResources->evictAllResourcesResult .operationSuccess );
1059- EXPECT_EQ (1u , mockWddm.evictCalled );
1063+ EXPECT_EQ (1u , mockWddm.evictResult . called );
10601064}
10611065
10621066TEST_F (WddmLockWithMakeResidentTests, givenNoTemporaryResourcesWhenEvictingTemporaryResourceThenEvictionIsNotApplied) {
@@ -1079,24 +1083,24 @@ TEST_F(WddmLockWithMakeResidentTests, whenEvictingNonExistingTemporaryResourceTh
10791083}
10801084
10811085TEST_F (WddmLockWithMakeResidentTests, whenEvictingTemporaryResourceAndEvictFailsThenReturnFail) {
1082- MockWddm mockWddm (*executionEnvironment->rootDeviceEnvironments [0 ]);
1083- mockWddm.evictResult = false ;
1086+ WddmMock mockWddm (*executionEnvironment->rootDeviceEnvironments [0 ]);
1087+ mockWddm.evictStatus = false ;
10841088 auto mockTemporaryResources = static_cast <MockWddmResidentAllocationsContainer *>(mockWddm.temporaryResources .get ());
10851089 mockTemporaryResources->resourceHandles .push_back (ALLOCATION_HANDLE);
10861090 mockWddm.getTemporaryResourcesContainer ()->evictResource (ALLOCATION_HANDLE);
10871091 EXPECT_TRUE (mockTemporaryResources->resourceHandles .empty ());
10881092 EXPECT_EQ (MemoryOperationsStatus::FAILED, mockTemporaryResources->evictResourceResult .operationSuccess );
1089- EXPECT_EQ (1u , mockWddm.evictCalled );
1093+ EXPECT_EQ (1u , mockWddm.evictResult . called );
10901094}
10911095
10921096TEST_F (WddmLockWithMakeResidentTests, whenEvictingTemporaryResourceAndEvictSucceedThenReturnSuccess) {
1093- MockWddm mockWddm (*executionEnvironment->rootDeviceEnvironments [0 ]);
1097+ WddmMock mockWddm (*executionEnvironment->rootDeviceEnvironments [0 ]);
10941098 auto mockTemporaryResources = static_cast <MockWddmResidentAllocationsContainer *>(mockWddm.temporaryResources .get ());
10951099 mockTemporaryResources->resourceHandles .push_back (ALLOCATION_HANDLE);
10961100 mockWddm.getTemporaryResourcesContainer ()->evictResource (ALLOCATION_HANDLE);
10971101 EXPECT_TRUE (mockTemporaryResources->resourceHandles .empty ());
10981102 EXPECT_EQ (MemoryOperationsStatus::SUCCESS, mockTemporaryResources->evictResourceResult .operationSuccess );
1099- EXPECT_EQ (1u , mockWddm.evictCalled );
1103+ EXPECT_EQ (1u , mockWddm.evictResult . called );
11001104}
11011105
11021106TEST_F (WddmLockWithMakeResidentTests, whenEvictingTemporaryResourceThenOtherResourcesRemainOnTheList) {
@@ -1428,6 +1432,7 @@ TEST_F(WddmTest, GivenResidencyLoggingEnabledWhenMakeResidentSuccessThenExpectSi
14281432 DebugManagerStateRestore dbgRestore;
14291433 DebugManager.flags .WddmResidencyLogger .set (true );
14301434 wddm->callBaseCreatePagingLogger = false ;
1435+ wddm->callBaseMakeResident = true ;
14311436
14321437 wddm->createPagingFenceLogger ();
14331438 EXPECT_NE (nullptr , wddm->residencyLogger .get ());
@@ -1454,6 +1459,7 @@ TEST_F(WddmTest, GivenResidencyLoggingEnabledWhenMakeResidentFailThenExpectTrimR
14541459 DebugManagerStateRestore dbgRestore;
14551460 DebugManager.flags .WddmResidencyLogger .set (true );
14561461 wddm->callBaseCreatePagingLogger = false ;
1462+ wddm->callBaseMakeResident = true ;
14571463
14581464 wddm->createPagingFenceLogger ();
14591465 EXPECT_NE (nullptr , wddm->residencyLogger .get ());
@@ -1499,6 +1505,7 @@ TEST_F(WddmTest, GivenResidencyLoggingEnabledWhenMakeResidentAndWaitPagingThenEx
14991505 DebugManagerStateRestore dbgRestore;
15001506 DebugManager.flags .WddmResidencyLogger .set (true );
15011507 wddm->callBaseCreatePagingLogger = false ;
1508+ wddm->callBaseMakeResident = true ;
15021509
15031510 wddm->createPagingFenceLogger ();
15041511 EXPECT_NE (nullptr , wddm->residencyLogger .get ());
0 commit comments