@@ -85,7 +85,7 @@ TEST(ExecutionEnvironment, givenPlatformWhenItIsCreatedThenItCreatesCommandStrea
85
85
Platform platform;
86
86
auto executionEnvironment = platform.peekExecutionEnvironment ();
87
87
platform.initialize ();
88
- EXPECT_NE (nullptr , executionEnvironment->commandStreamReceiver );
88
+ EXPECT_NE (nullptr , executionEnvironment->commandStreamReceivers [ 0u ]. get () );
89
89
}
90
90
91
91
TEST (ExecutionEnvironment, givenPlatformWhenItIsCreatedThenItCreatesMemoryManagerInExecutionEnvironment) {
@@ -105,18 +105,42 @@ TEST(ExecutionEnvironment, givenDeviceWhenItIsDestroyedThenMemoryManagerIsStillA
105
105
106
106
TEST (ExecutionEnvironment, givenExecutionEnvironmentWhenInitializeCommandStreamReceiverIsCalledThenItIsInitalized) {
107
107
std::unique_ptr<ExecutionEnvironment> executionEnvironment (new ExecutionEnvironment);
108
- executionEnvironment->initializeCommandStreamReceiver (platformDevices[0 ]);
109
- EXPECT_NE (nullptr , executionEnvironment->commandStreamReceiver );
108
+ executionEnvironment->initializeCommandStreamReceiver (platformDevices[0 ], 0u );
109
+ EXPECT_NE (nullptr , executionEnvironment->commandStreamReceivers [ 0u ] );
110
110
}
111
111
112
- TEST (ExecutionEnvironment, givenExecutionEnvironmentWhenInitializeMemoryManagerIsCalledThenItIsInitalized ) {
112
+ TEST (ExecutionEnvironment, givenExecutionEnvironmentWhenInitializeIsCalledWithDifferentDeviceIndexesThenInternalStorageIsResized ) {
113
113
std::unique_ptr<ExecutionEnvironment> executionEnvironment (new ExecutionEnvironment);
114
- executionEnvironment->initializeCommandStreamReceiver (platformDevices[0 ]);
115
- executionEnvironment->initializeMemoryManager (false , false );
116
- EXPECT_NE (nullptr , executionEnvironment->memoryManager );
114
+ EXPECT_EQ (0u , executionEnvironment->commandStreamReceivers .size ());
115
+ executionEnvironment->initializeCommandStreamReceiver (platformDevices[0 ], 0u );
116
+ EXPECT_EQ (1u , executionEnvironment->commandStreamReceivers .size ());
117
+ EXPECT_NE (nullptr , executionEnvironment->commandStreamReceivers [0u ]);
118
+ executionEnvironment->initializeCommandStreamReceiver (platformDevices[0 ], 1u );
119
+ EXPECT_EQ (2u , executionEnvironment->commandStreamReceivers .size ());
120
+ EXPECT_NE (nullptr , executionEnvironment->commandStreamReceivers [1u ]);
121
+ }
122
+
123
+ TEST (ExecutionEnvironment, givenExecutionEnvironmentWhenInitializeIsCalledMultipleTimesForTheSameIndexThenCommandStreamReceiverIsReused) {
124
+ auto executionEnvironment = std::make_unique<ExecutionEnvironment>();
125
+ EXPECT_EQ (0u , executionEnvironment->commandStreamReceivers .size ());
126
+ executionEnvironment->initializeCommandStreamReceiver (platformDevices[0 ], 1u );
127
+
128
+ auto currentCommandStreamReceiver = executionEnvironment->commandStreamReceivers [1u ].get ();
129
+
130
+ executionEnvironment->initializeCommandStreamReceiver (platformDevices[0 ], 1u );
131
+
132
+ EXPECT_EQ (currentCommandStreamReceiver, executionEnvironment->commandStreamReceivers [1u ].get ());
133
+ EXPECT_EQ (2u , executionEnvironment->commandStreamReceivers .size ());
134
+ EXPECT_EQ (nullptr , executionEnvironment->commandStreamReceivers [0u ].get ());
117
135
}
118
136
119
- static_assert (sizeof (ExecutionEnvironment) == sizeof(std::mutex) + (is64bit ? 80 : 44 ), "New members detected in ExecutionEnvironment, please ensure that destruction sequence of objects is correct");
137
+ TEST (ExecutionEnvironment, givenExecutionEnvironmentWhenInitializeMemoryManagerIsCalledThenItIsInitalized) {
138
+ auto executionEnvironment = std::make_unique<ExecutionEnvironment>();
139
+ executionEnvironment->initializeCommandStreamReceiver (platformDevices[0 ], 0u );
140
+ executionEnvironment->initializeMemoryManager (false , false , 0u );
141
+ EXPECT_NE (nullptr , executionEnvironment->memoryManager );
142
+ }
143
+ static_assert (sizeof (ExecutionEnvironment) == sizeof(std::vector<std::unique_ptr<CommandStreamReceiver>>) + sizeof(std::mutex) + (is64bit ? 72 : 40 ), "New members detected in ExecutionEnvironment, please ensure that destruction sequence of objects is correct");
120
144
121
145
TEST (ExecutionEnvironment, givenExecutionEnvironmentWithVariousMembersWhenItIsDestroyedThenDeleteSequenceIsSpecified) {
122
146
uint32_t destructorId = 0u ;
@@ -150,7 +174,7 @@ TEST(ExecutionEnvironment, givenExecutionEnvironmentWithVariousMembersWhenItIsDe
150
174
executionEnvironment->gmmHelper = std::make_unique<GmmHelperMock>(destructorId, platformDevices[0 ]);
151
175
executionEnvironment->osInterface = std::make_unique<OsInterfaceMock>(destructorId);
152
176
executionEnvironment->memoryManager = std::make_unique<MemoryMangerMock>(destructorId);
153
- executionEnvironment->commandStreamReceiver = std::make_unique<CommandStreamReceiverMock>(destructorId);
177
+ executionEnvironment->commandStreamReceivers . push_back ( std::make_unique<CommandStreamReceiverMock>(destructorId) );
154
178
executionEnvironment->builtins = std::make_unique<BuiltinsMock>(destructorId);
155
179
executionEnvironment->compilerInterface = std::make_unique<CompilerInterfaceMock>(destructorId);
156
180
executionEnvironment->sourceLevelDebugger = std::make_unique<SourceLevelDebuggerMock>(destructorId);
@@ -166,7 +190,7 @@ TEST(ExecutionEnvironment, givenMultipleDevicesWhenTheyAreCreatedTheyAllReuseThe
166
190
auto memoryManager = device->getMemoryManager ();
167
191
168
192
std::unique_ptr<Device> device2 (Device::create<OCLRT::Device>(nullptr , executionEnvironment, 1u ));
169
- EXPECT_EQ (&commandStreamReceiver, &device ->getCommandStreamReceiver ());
193
+ EXPECT_NE (&commandStreamReceiver, &device2 ->getCommandStreamReceiver ());
170
194
EXPECT_EQ (memoryManager, device2->getMemoryManager ());
171
195
}
172
196
@@ -176,8 +200,8 @@ HWTEST_F(ExecutionEnvironmentHw, givenExecutionEnvironmentWhenCommandStreamRecei
176
200
ExecutionEnvironment executionEnvironment;
177
201
HardwareInfo localHwInfo = *platformDevices[0 ];
178
202
localHwInfo.capabilityTable .ftrRenderCompressedBuffers = true ;
179
- executionEnvironment.initializeCommandStreamReceiver (&localHwInfo);
180
- auto csr = static_cast <UltCommandStreamReceiver<FamilyType> *>(executionEnvironment.commandStreamReceiver .get ());
203
+ executionEnvironment.initializeCommandStreamReceiver (&localHwInfo, 0u );
204
+ auto csr = static_cast <UltCommandStreamReceiver<FamilyType> *>(executionEnvironment.commandStreamReceivers [ 0u ] .get ());
181
205
ASSERT_NE (nullptr , csr);
182
206
EXPECT_TRUE (csr->createPageTableManagerCalled );
183
207
}
@@ -186,9 +210,9 @@ HWTEST_F(ExecutionEnvironmentHw, givenExecutionEnvironmentWhenCommandStreamRecei
186
210
ExecutionEnvironment executionEnvironment;
187
211
HardwareInfo localHwInfo = *platformDevices[0 ];
188
212
localHwInfo.capabilityTable .ftrRenderCompressedImages = true ;
189
- executionEnvironment.initializeCommandStreamReceiver (&localHwInfo);
190
- EXPECT_NE (nullptr , executionEnvironment.commandStreamReceiver );
191
- auto csr = static_cast <UltCommandStreamReceiver<FamilyType> *>(executionEnvironment.commandStreamReceiver .get ());
213
+ executionEnvironment.initializeCommandStreamReceiver (&localHwInfo, 0u );
214
+ EXPECT_NE (nullptr , executionEnvironment.commandStreamReceivers [ 0 ] );
215
+ auto csr = static_cast <UltCommandStreamReceiver<FamilyType> *>(executionEnvironment.commandStreamReceivers [ 0u ] .get ());
192
216
ASSERT_NE (nullptr , csr);
193
217
EXPECT_TRUE (csr->createPageTableManagerCalled );
194
218
}
0 commit comments