Skip to content

Commit 4aae1a8

Browse files
Pass Wddm to WddmResidencyController
Change-Id: I2379ffdfb740a869f6d157ed22f40ce509d6bebe Signed-off-by: Maciej Dziuban <maciej.dziuban@intel.com>
1 parent 8ead8f7 commit 4aae1a8

File tree

4 files changed

+34
-25
lines changed

4 files changed

+34
-25
lines changed

runtime/os_interface/windows/os_context_win.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
namespace OCLRT {
1414

15-
OsContextWin::OsContextImpl(Wddm &wddm, uint32_t osContextId) : wddm(wddm), residencyController(osContextId) {
15+
OsContextWin::OsContextImpl(Wddm &wddm, uint32_t osContextId) : wddm(wddm), residencyController(wddm, osContextId) {
1616
UNRECOVERABLE_IF(!wddm.isInitialized());
1717
auto wddmInterface = wddm.getWddmInterface();
1818
if (!wddm.createContext(context)) {

runtime/os_interface/windows/wddm_residency_controller.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,12 @@
88
#include "runtime/os_interface/windows/wddm_residency_controller.h"
99
#include "runtime/os_interface/windows/wddm_allocation.h"
1010
#include "runtime/os_interface/debug_settings_manager.h"
11+
#include "runtime/os_interface/windows/wddm/wddm.h"
1112
#include "runtime/utilities/spinlock.h"
1213

1314
namespace OCLRT {
1415

15-
WddmResidencyController::WddmResidencyController(uint32_t osContextId) : osContextId(osContextId) {}
16+
WddmResidencyController::WddmResidencyController(Wddm &wddm, uint32_t osContextId) : wddm(wddm), osContextId(osContextId) {}
1617

1718
void WddmResidencyController::acquireLock() {
1819
bool previousLockValue = false;

runtime/os_interface/windows/wddm_residency_controller.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,11 @@ namespace OCLRT {
1717

1818
class GraphicsAllocation;
1919
class WddmAllocation;
20+
class Wddm;
2021

2122
class WddmResidencyController {
2223
public:
23-
WddmResidencyController(uint32_t osContextId);
24+
WddmResidencyController(Wddm &wddm, uint32_t osContextId);
2425

2526
void acquireLock();
2627
void releaseLock();
@@ -46,9 +47,12 @@ class WddmResidencyController {
4647
void resetMonitoredFenceParams(D3DKMT_HANDLE &handle, uint64_t *cpuAddress, D3DGPU_VIRTUAL_ADDRESS &gpuAddress);
4748

4849
protected:
50+
Wddm &wddm;
4951
uint32_t osContextId;
52+
5053
std::atomic<bool> lock = false;
5154
std::atomic_flag trimCallbackLock = ATOMIC_FLAG_INIT;
55+
5256
uint64_t lastTrimFenceValue = 0u;
5357
ResidencyContainer trimCandidateList;
5458
uint32_t trimCandidatesCount = 0;

unit_tests/os_interface/windows/wddm_residency_controller_tests.cpp

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
#include "runtime/os_interface/windows/wddm_residency_controller.h"
99
#include "runtime/os_interface/os_context.h"
10+
#include "unit_tests/mocks/mock_wddm.h"
1011
#include "unit_tests/os_interface/windows/mock_wddm_allocation.h"
1112

1213
#include "test.h"
@@ -22,36 +23,39 @@ class MockWddmResidencyController : public WddmResidencyController {
2223
};
2324

2425
struct WddmResidencyControllerTest : ::testing::Test {
26+
const uint32_t osContextId = 0u;
27+
2528
void SetUp() {
26-
osContext = std::make_unique<OsContext>(nullptr, 0u);
27-
residencyController = std::make_unique<MockWddmResidencyController>(osContext->getContextId());
29+
wddm = std::unique_ptr<Wddm>(Wddm::createWddm());
30+
wddm->init();
31+
residencyController = std::make_unique<MockWddmResidencyController>(*wddm, osContextId);
2832
}
2933

30-
std::unique_ptr<OsContext> osContext;
34+
std::unique_ptr<Wddm> wddm;
3135
std::unique_ptr<MockWddmResidencyController> residencyController;
3236
};
3337

3438
TEST_F(WddmResidencyControllerTest, givenUsedAllocationWhenCallingRemoveFromTrimCandidateListIfUsedThenRemoveIt) {
3539
MockWddmAllocation allocation;
3640
residencyController->addToTrimCandidateList(&allocation);
3741
residencyController->removeFromTrimCandidateListIfUsed(&allocation, false);
38-
EXPECT_EQ(trimListUnusedPosition, allocation.getTrimCandidateListPosition(osContext->getContextId()));
42+
EXPECT_EQ(trimListUnusedPosition, allocation.getTrimCandidateListPosition(osContextId));
3943
}
4044

4145
TEST_F(WddmResidencyControllerTest, givenUnusedAllocationWhenCallingRemoveFromTrimCandidateListIfUsedThenIgnore) {
4246
MockWddmAllocation allocation;
4347
residencyController->removeFromTrimCandidateListIfUsed(&allocation, false);
44-
EXPECT_EQ(trimListUnusedPosition, allocation.getTrimCandidateListPosition(osContext->getContextId()));
48+
EXPECT_EQ(trimListUnusedPosition, allocation.getTrimCandidateListPosition(osContextId));
4549
}
4650

4751
TEST_F(WddmResidencyControllerTest, addToTrimCandidateListPlacesAllocationInContainerAndAssignsPosition) {
4852
MockWddmAllocation allocation;
4953
residencyController->addToTrimCandidateList(&allocation);
5054

5155
EXPECT_NE(0u, residencyController->trimCandidateList.size());
52-
EXPECT_NE(trimListUnusedPosition, allocation.getTrimCandidateListPosition(osContext->getContextId()));
56+
EXPECT_NE(trimListUnusedPosition, allocation.getTrimCandidateListPosition(osContextId));
5357

54-
size_t position = allocation.getTrimCandidateListPosition(osContext->getContextId());
58+
size_t position = allocation.getTrimCandidateListPosition(osContextId);
5559
ASSERT_LT(position, residencyController->trimCandidateList.size());
5660

5761
EXPECT_EQ(&allocation, residencyController->trimCandidateList[position]);
@@ -64,9 +68,9 @@ TEST_F(WddmResidencyControllerTest, addToTrimCandidateListDoesNotInsertAllocatio
6468

6569
residencyController->addToTrimCandidateList(&allocation);
6670

67-
EXPECT_NE(trimListUnusedPosition, allocation.getTrimCandidateListPosition(osContext->getContextId()));
71+
EXPECT_NE(trimListUnusedPosition, allocation.getTrimCandidateListPosition(osContextId));
6872

69-
size_t position = allocation.getTrimCandidateListPosition(osContext->getContextId());
73+
size_t position = allocation.getTrimCandidateListPosition(osContextId);
7074
ASSERT_LT(position, residencyController->trimCandidateList.size());
7175

7276
EXPECT_EQ(&allocation, residencyController->trimCandidateList[position]);
@@ -75,7 +79,7 @@ TEST_F(WddmResidencyControllerTest, addToTrimCandidateListDoesNotInsertAllocatio
7579
residencyController->addToTrimCandidateList(&allocation);
7680

7781
EXPECT_EQ(previousSize, residencyController->trimCandidateList.size());
78-
EXPECT_EQ(position, allocation.getTrimCandidateListPosition(osContext->getContextId()));
82+
EXPECT_EQ(position, allocation.getTrimCandidateListPosition(osContextId));
7983
}
8084

8185
TEST_F(WddmResidencyControllerTest, removeFromTrimCandidateListAssignsUnusedPosition) {
@@ -84,14 +88,14 @@ TEST_F(WddmResidencyControllerTest, removeFromTrimCandidateListAssignsUnusedPosi
8488
residencyController->addToTrimCandidateList(&allocation);
8589
residencyController->removeFromTrimCandidateList(&allocation, false);
8690

87-
EXPECT_EQ(trimListUnusedPosition, allocation.getTrimCandidateListPosition(osContext->getContextId()));
91+
EXPECT_EQ(trimListUnusedPosition, allocation.getTrimCandidateListPosition(osContextId));
8892
}
8993

9094
TEST_F(WddmResidencyControllerTest, removeFromTrimCandidateListRemovesAllocationInAssignedPosition) {
9195
MockWddmAllocation allocation;
9296

9397
residencyController->addToTrimCandidateList(&allocation);
94-
size_t position = allocation.getTrimCandidateListPosition(osContext->getContextId());
98+
size_t position = allocation.getTrimCandidateListPosition(osContextId);
9599

96100
residencyController->removeFromTrimCandidateList(&allocation, false);
97101

@@ -140,8 +144,8 @@ TEST_F(WddmResidencyControllerTest, successiveAddingToTrimCandidateListAssignsNe
140144
residencyController->addToTrimCandidateList(&allocation3);
141145

142146
EXPECT_EQ(3u, residencyController->trimCandidateList.size());
143-
EXPECT_NE(allocation1.getTrimCandidateListPosition(osContext->getContextId()), allocation2.getTrimCandidateListPosition(osContext->getContextId()));
144-
EXPECT_NE(allocation2.getTrimCandidateListPosition(osContext->getContextId()), allocation3.getTrimCandidateListPosition(osContext->getContextId()));
147+
EXPECT_NE(allocation1.getTrimCandidateListPosition(osContextId), allocation2.getTrimCandidateListPosition(osContextId));
148+
EXPECT_NE(allocation2.getTrimCandidateListPosition(osContextId), allocation3.getTrimCandidateListPosition(osContextId));
145149
}
146150

147151
TEST_F(WddmResidencyControllerTest, DISABLED_removingNotLastAllocationFromTrimCandidateListSubstituesLastPositionAllocation) {
@@ -155,8 +159,8 @@ TEST_F(WddmResidencyControllerTest, DISABLED_removingNotLastAllocationFromTrimCa
155159

156160
EXPECT_EQ(2u, residencyController->trimCandidateList.size());
157161

158-
EXPECT_EQ(2u, allocation3.getTrimCandidateListPosition(osContext->getContextId()));
159-
EXPECT_NE(allocation2.getTrimCandidateListPosition(osContext->getContextId()), allocation3.getTrimCandidateListPosition(osContext->getContextId()));
162+
EXPECT_EQ(2u, allocation3.getTrimCandidateListPosition(osContextId));
163+
EXPECT_NE(allocation2.getTrimCandidateListPosition(osContextId), allocation3.getTrimCandidateListPosition(osContextId));
160164
}
161165

162166
TEST_F(WddmResidencyControllerTest, removingNotLastAllocationFromTrimCandidateListPutsNullEntry) {
@@ -165,8 +169,8 @@ TEST_F(WddmResidencyControllerTest, removingNotLastAllocationFromTrimCandidateLi
165169
residencyController->addToTrimCandidateList(&allocation1);
166170
residencyController->addToTrimCandidateList(&allocation2);
167171
residencyController->addToTrimCandidateList(&allocation3);
168-
size_t position2 = allocation2.getTrimCandidateListPosition(osContext->getContextId());
169-
size_t position3 = allocation3.getTrimCandidateListPosition(osContext->getContextId());
172+
size_t position2 = allocation2.getTrimCandidateListPosition(osContextId);
173+
size_t position3 = allocation3.getTrimCandidateListPosition(osContextId);
170174

171175
residencyController->removeFromTrimCandidateList(&allocation2, false);
172176

@@ -183,8 +187,8 @@ TEST_F(WddmResidencyControllerTest, compactTrimCandidateListRemovesInitialNullEn
183187
residencyController->addToTrimCandidateList(&allocation3);
184188
residencyController->addToTrimCandidateList(&allocation4);
185189

186-
size_t position3 = allocation3.getTrimCandidateListPosition(osContext->getContextId());
187-
size_t position4 = allocation4.getTrimCandidateListPosition(osContext->getContextId());
190+
size_t position3 = allocation3.getTrimCandidateListPosition(osContextId);
191+
size_t position4 = allocation4.getTrimCandidateListPosition(osContextId);
188192

189193
residencyController->removeFromTrimCandidateList(&allocation2, false);
190194
residencyController->removeFromTrimCandidateList(&allocation1, false);
@@ -196,10 +200,10 @@ TEST_F(WddmResidencyControllerTest, compactTrimCandidateListRemovesInitialNullEn
196200
EXPECT_EQ(2u, residencyController->trimCandidateList.size());
197201

198202
EXPECT_EQ(residencyController->trimCandidateList[0], &allocation3);
199-
EXPECT_EQ(0u, allocation3.getTrimCandidateListPosition(osContext->getContextId()));
203+
EXPECT_EQ(0u, allocation3.getTrimCandidateListPosition(osContextId));
200204

201205
EXPECT_EQ(residencyController->trimCandidateList[1], &allocation4);
202-
EXPECT_EQ(1u, allocation4.getTrimCandidateListPosition(osContext->getContextId()));
206+
EXPECT_EQ(1u, allocation4.getTrimCandidateListPosition(osContextId));
203207
}
204208

205209
TEST_F(WddmResidencyControllerTest, compactTrimCandidateListWithNonNullEntries) {

0 commit comments

Comments
 (0)