5
5
*
6
6
*/
7
7
8
+ #include " shared/source/helpers/preamble.h"
8
9
#include " shared/test/common/cmd_parse/gen_cmd_parse.h"
10
+ #include " shared/test/common/libult/ult_command_stream_receiver.h"
9
11
#include " shared/test/common/test_macros/test.h"
10
12
11
13
#include " level_zero/core/source/image/image_hw.h"
@@ -18,15 +20,15 @@ namespace ult {
18
20
19
21
using L0DebuggerTest = Test<L0DebuggerHwFixture>;
20
22
21
- struct L0DebuggerInternalUsageTest : public L0DebuggerTest {
23
+ struct L0DebuggerWithBlitterTest : public L0DebuggerTest {
22
24
void SetUp () override {
23
25
VariableBackup<HardwareInfo> backupHwInfo (defaultHwInfo.get ());
24
26
defaultHwInfo->capabilityTable .blitterOperationsSupported = true ;
25
27
L0DebuggerTest::SetUp ();
26
28
}
27
29
};
28
30
29
- HWTEST_F (L0DebuggerInternalUsageTest , givenFlushTaskSubmissionEnabledWhenCommandListIsInititalizedOrResetThenCaptureSbaIsNotCalled) {
31
+ HWTEST_F (L0DebuggerWithBlitterTest , givenFlushTaskSubmissionEnabledWhenCommandListIsInititalizedOrResetThenCaptureSbaIsNotCalled) {
30
32
using STATE_BASE_ADDRESS = typename FamilyType::STATE_BASE_ADDRESS;
31
33
32
34
DebugManagerStateRestore restorer;
@@ -55,7 +57,7 @@ HWTEST_F(L0DebuggerInternalUsageTest, givenFlushTaskSubmissionEnabledWhenCommand
55
57
commandList->destroy ();
56
58
}
57
59
58
- HWTEST_F (L0DebuggerInternalUsageTest, givenFlushTaskSubmissionDisabledWhenCommandListIsInititalizedOrResetThenCaptureSbaIsCalled ) {
60
+ HWTEST_F (L0DebuggerWithBlitterTest, givenFlushTaskSubmissionDisabledWhenCommandListIsInititalizedOrResetThenCaptureSbaIsNotCalled ) {
59
61
using STATE_BASE_ADDRESS = typename FamilyType::STATE_BASE_ADDRESS;
60
62
61
63
DebugManagerStateRestore restorer;
@@ -84,7 +86,7 @@ HWTEST_F(L0DebuggerInternalUsageTest, givenFlushTaskSubmissionDisabledWhenComman
84
86
commandList->destroy ();
85
87
}
86
88
87
- HWTEST_F (L0DebuggerInternalUsageTest , givenDebuggerLogsDisabledWhenCommandListIsSynchronizedThenSbaAddressesAreNotPrinted) {
89
+ HWTEST_F (L0DebuggerWithBlitterTest , givenDebuggerLogsDisabledWhenCommandListIsSynchronizedThenSbaAddressesAreNotPrinted) {
88
90
DebugManagerStateRestore restorer;
89
91
NEO::DebugManager.flags .DebuggerLogBitmask .set (0 );
90
92
@@ -104,39 +106,107 @@ HWTEST_F(L0DebuggerInternalUsageTest, givenDebuggerLogsDisabledWhenCommandListIs
104
106
commandList->destroy ();
105
107
}
106
108
107
- HWTEST_F (L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionEnabledForImmediateCommandListForAppendLaunchKernelThenSuccessIsReturned) {
109
+ HWTEST_F (L0DebuggerWithBlitterTest, givenImmediateCommandListWhenExecutingWithFlushTaskThenSipIsInstalledAndDebuggerAllocationsAreResident) {
110
+ using STATE_SIP = typename FamilyType::STATE_SIP;
111
+ using MI_LOAD_REGISTER_IMM = typename FamilyType::MI_LOAD_REGISTER_IMM;
112
+
108
113
Mock<::L0::Kernel> kernel;
109
114
DebugManagerStateRestore restorer;
110
115
NEO::DebugManager.flags .EnableFlushTaskSubmission .set (true );
111
116
112
117
ze_command_queue_desc_t queueDesc = {};
113
118
ze_result_t returnValue = ZE_RESULT_SUCCESS;
114
119
ze_group_count_t groupCount{1 , 1 , 1 };
120
+
121
+ auto &csr = neoDevice->getUltCommandStreamReceiver <FamilyType>();
122
+ csr.storeMakeResidentAllocations = true ;
123
+
115
124
auto commandList = CommandList::createImmediate (productFamily, device, &queueDesc, false , NEO::EngineGroupType::RenderCompute, returnValue);
116
125
126
+ EXPECT_TRUE (commandList->isFlushTaskSubmissionEnabled );
127
+ EXPECT_EQ (&csr, commandList->csr );
128
+
129
+ csr.lastFlushedCommandStream = nullptr ;
117
130
auto result = commandList->appendLaunchKernel (kernel.toHandle (), &groupCount, nullptr , 0 , nullptr );
118
131
ASSERT_EQ (ZE_RESULT_SUCCESS, result);
119
132
133
+ EXPECT_NE (nullptr , csr.lastFlushedCommandStream );
134
+
135
+ auto sbaBuffer = device->getL0Debugger ()->getSbaTrackingBuffer (commandList->csr ->getOsContext ().getContextId ());
136
+ auto sipIsa = NEO::SipKernel::getSipKernel (*neoDevice).getSipAllocation ();
137
+ auto debugSurface = device->getDebugSurface ();
138
+
139
+ EXPECT_TRUE (csr.isMadeResident (sbaBuffer));
140
+ EXPECT_TRUE (csr.isMadeResident (sipIsa));
141
+ EXPECT_TRUE (csr.isMadeResident (debugSurface));
142
+
143
+ GenCmdList cmdList;
144
+ ASSERT_TRUE (FamilyType::PARSE::parseCommandBuffer (
145
+ cmdList, commandList->csr ->getCS ().getCpuBase (), commandList->csr ->getCS ().getUsed ()));
146
+
147
+ const auto &hwHelper = HwHelper::get (defaultHwInfo->platform .eRenderCoreFamily );
148
+ if (hwHelper.isSipWANeeded (hwInfo)) {
149
+
150
+ auto miLoadImm = findAll<MI_LOAD_REGISTER_IMM *>(cmdList.begin (), cmdList.end ());
151
+
152
+ auto globalSipFound = 0u ;
153
+ for (size_t i = 0 ; i < miLoadImm.size (); i++) {
154
+ MI_LOAD_REGISTER_IMM *miLoad = genCmdCast<MI_LOAD_REGISTER_IMM *>(*miLoadImm[i]);
155
+ ASSERT_NE (nullptr , miLoad);
156
+
157
+ if (miLoad->getRegisterOffset () == NEO::GlobalSipRegister<FamilyType>::registerOffset) {
158
+ globalSipFound++;
159
+ }
160
+ }
161
+ EXPECT_NE (0u , globalSipFound);
162
+ } else {
163
+ auto sipItor = find<STATE_SIP *>(cmdList.begin (), cmdList.end ());
164
+ ASSERT_NE (cmdList.end (), sipItor);
165
+ }
120
166
commandList->destroy ();
121
167
}
122
168
123
- HWTEST_F (L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionEnabledWithInternalCommandListForImmediateWhenAppendLaunchKernelThenSuccessIsReturned) {
169
+ HWTEST_F (L0DebuggerWithBlitterTest, givenInternalUsageImmediateCommandListWhenExecutingThenDebuggerAllocationsAreNotResident) {
170
+ using STATE_SIP = typename FamilyType::STATE_SIP;
171
+
124
172
Mock<::L0::Kernel> kernel;
125
173
DebugManagerStateRestore restorer;
126
174
NEO::DebugManager.flags .EnableFlushTaskSubmission .set (true );
127
175
128
176
ze_command_queue_desc_t queueDesc = {};
129
177
ze_result_t returnValue = ZE_RESULT_SUCCESS;
130
178
ze_group_count_t groupCount{1 , 1 , 1 };
179
+
131
180
auto commandList = CommandList::createImmediate (productFamily, device, &queueDesc, true , NEO::EngineGroupType::RenderCompute, returnValue);
132
181
182
+ // Internal command list must not have flush task enabled
183
+ EXPECT_FALSE (commandList->isFlushTaskSubmissionEnabled );
184
+
185
+ auto &csr = reinterpret_cast <NEO::UltCommandStreamReceiver<FamilyType> &>(*commandList->csr );
186
+ csr.storeMakeResidentAllocations = true ;
187
+
133
188
auto result = commandList->appendLaunchKernel (kernel.toHandle (), &groupCount, nullptr , 0 , nullptr );
134
189
ASSERT_EQ (ZE_RESULT_SUCCESS, result);
135
190
191
+ auto sbaBuffer = device->getL0Debugger ()->getSbaTrackingBuffer (commandList->csr ->getOsContext ().getContextId ());
192
+ auto sipIsa = NEO::SipKernel::getSipKernel (*neoDevice).getSipAllocation ();
193
+ auto debugSurface = device->getDebugSurface ();
194
+
195
+ EXPECT_FALSE (csr.isMadeResident (sbaBuffer));
196
+ EXPECT_FALSE (csr.isMadeResident (sipIsa));
197
+ EXPECT_FALSE (csr.isMadeResident (debugSurface));
198
+
199
+ GenCmdList cmdList;
200
+ ASSERT_TRUE (FamilyType::PARSE::parseCommandBuffer (
201
+ cmdList, commandList->csr ->getCS ().getCpuBase (), commandList->csr ->getCS ().getUsed ()));
202
+
203
+ auto sipItor = find<STATE_SIP *>(cmdList.begin (), cmdList.end ());
204
+ ASSERT_EQ (cmdList.end (), sipItor);
205
+
136
206
commandList->destroy ();
137
207
}
138
208
139
- HWTEST_F (L0DebuggerInternalUsageTest , givenUseCsrImmediateSubmissionEnabledForImmediateCommandListForAppendLaunchKernelIndirectThenSuccessIsReturned) {
209
+ HWTEST_F (L0DebuggerWithBlitterTest , givenUseCsrImmediateSubmissionEnabledForImmediateCommandListForAppendLaunchKernelIndirectThenSuccessIsReturned) {
140
210
Mock<::L0::Kernel> kernel;
141
211
DebugManagerStateRestore restorer;
142
212
NEO::DebugManager.flags .EnableFlushTaskSubmission .set (true );
@@ -153,7 +223,7 @@ HWTEST_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionEnabledForIm
153
223
commandList->destroy ();
154
224
}
155
225
156
- HWTEST_F (L0DebuggerInternalUsageTest , givenUseCsrImmediateSubmissionDisabledForImmediateCommandListForAppendLaunchKernelIndirectThenSuccessIsReturned) {
226
+ HWTEST_F (L0DebuggerWithBlitterTest , givenUseCsrImmediateSubmissionDisabledForImmediateCommandListForAppendLaunchKernelIndirectThenSuccessIsReturned) {
157
227
Mock<::L0::Kernel> kernel;
158
228
DebugManagerStateRestore restorer;
159
229
NEO::DebugManager.flags .EnableFlushTaskSubmission .set (false );
@@ -170,7 +240,7 @@ HWTEST_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionDisabledForI
170
240
commandList->destroy ();
171
241
}
172
242
173
- HWTEST_F (L0DebuggerInternalUsageTest , givenUseCsrImmediateSubmissionEnabledForImmediateCommandListForAppendMemoryCopyThenSuccessIsReturned) {
243
+ HWTEST_F (L0DebuggerWithBlitterTest , givenUseCsrImmediateSubmissionEnabledForImmediateCommandListForAppendMemoryCopyThenSuccessIsReturned) {
174
244
DebugManagerStateRestore restorer;
175
245
NEO::DebugManager.flags .EnableFlushTaskSubmission .set (true );
176
246
@@ -186,7 +256,7 @@ HWTEST_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionEnabledForIm
186
256
commandList->destroy ();
187
257
}
188
258
189
- HWTEST_F (L0DebuggerInternalUsageTest , givenUseCsrImmediateSubmissionDisabledForImmediateCommandListForAppendMemoryCopyThenSuccessIsReturned) {
259
+ HWTEST_F (L0DebuggerWithBlitterTest , givenUseCsrImmediateSubmissionDisabledForImmediateCommandListForAppendMemoryCopyThenSuccessIsReturned) {
190
260
DebugManagerStateRestore restorer;
191
261
NEO::DebugManager.flags .EnableFlushTaskSubmission .set (false );
192
262
@@ -202,7 +272,7 @@ HWTEST_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionDisabledForI
202
272
commandList->destroy ();
203
273
}
204
274
205
- HWTEST_F (L0DebuggerInternalUsageTest , givenUseCsrImmediateSubmissionEnabledForImmediateCommandListForAppendMemoryCopyRegionThenSuccessIsReturned) {
275
+ HWTEST_F (L0DebuggerWithBlitterTest , givenUseCsrImmediateSubmissionEnabledForImmediateCommandListForAppendMemoryCopyRegionThenSuccessIsReturned) {
206
276
DebugManagerStateRestore restorer;
207
277
NEO::DebugManager.flags .EnableFlushTaskSubmission .set (true );
208
278
@@ -223,7 +293,7 @@ HWTEST_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionEnabledForIm
223
293
commandList->destroy ();
224
294
}
225
295
226
- HWTEST_F (L0DebuggerInternalUsageTest , givenUseCsrImmediateSubmissionEnabledForRegularCommandListForAppendMemoryCopyRegionThenSuccessIsReturned) {
296
+ HWTEST_F (L0DebuggerWithBlitterTest , givenUseCsrImmediateSubmissionEnabledForRegularCommandListForAppendMemoryCopyRegionThenSuccessIsReturned) {
227
297
DebugManagerStateRestore restorer;
228
298
NEO::DebugManager.flags .EnableFlushTaskSubmission .set (true );
229
299
@@ -256,7 +326,7 @@ HWTEST_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionEnabledForRe
256
326
commandQueue->destroy ();
257
327
}
258
328
259
- HWTEST_F (L0DebuggerInternalUsageTest , givenUseCsrImmediateSubmissionDisabledForImmediateCommandListForAppendMemoryCopyRegionThenSuccessIsReturned) {
329
+ HWTEST_F (L0DebuggerWithBlitterTest , givenUseCsrImmediateSubmissionDisabledForImmediateCommandListForAppendMemoryCopyRegionThenSuccessIsReturned) {
260
330
DebugManagerStateRestore restorer;
261
331
NEO::DebugManager.flags .EnableFlushTaskSubmission .set (false );
262
332
@@ -275,7 +345,7 @@ HWTEST_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionDisabledForI
275
345
commandList->destroy ();
276
346
}
277
347
278
- HWTEST2_F (L0DebuggerInternalUsageTest , givenUseCsrImmediateSubmissionEnabledCommandListAndAppendMemoryCopyCalledInLoopThenMultipleCommandBufferAreUsedAndSuccessIsReturned, IsAtLeastSkl) {
348
+ HWTEST2_F (L0DebuggerWithBlitterTest , givenUseCsrImmediateSubmissionEnabledCommandListAndAppendMemoryCopyCalledInLoopThenMultipleCommandBufferAreUsedAndSuccessIsReturned, IsAtLeastSkl) {
279
349
DebugManagerStateRestore restorer;
280
350
NEO::DebugManager.flags .EnableFlushTaskSubmission .set (true );
281
351
@@ -293,7 +363,7 @@ HWTEST2_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionEnabledComm
293
363
commandList->destroy ();
294
364
}
295
365
296
- HWTEST2_F (L0DebuggerInternalUsageTest , givenUseCsrImmediateSubmissionDisabledCommandListAndAppendMemoryCopyCalledInLoopThenMultipleCommandBufferAreUsedAndSuccessIsReturned, IsAtLeastSkl) {
366
+ HWTEST2_F (L0DebuggerWithBlitterTest , givenUseCsrImmediateSubmissionDisabledCommandListAndAppendMemoryCopyCalledInLoopThenMultipleCommandBufferAreUsedAndSuccessIsReturned, IsAtLeastSkl) {
297
367
DebugManagerStateRestore restorer;
298
368
NEO::DebugManager.flags .EnableFlushTaskSubmission .set (false );
299
369
@@ -311,7 +381,7 @@ HWTEST2_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionDisabledCom
311
381
commandList->destroy ();
312
382
}
313
383
314
- HWTEST2_F (L0DebuggerInternalUsageTest , givenDebuggingEnabledWhenInternalCmdQIsUsedThenDebuggerPathsAreNotExecuted, IsAtLeastSkl) {
384
+ HWTEST2_F (L0DebuggerWithBlitterTest , givenDebuggingEnabledWhenInternalCmdQIsUsedThenDebuggerPathsAreNotExecuted, IsAtLeastSkl) {
315
385
ze_command_queue_desc_t queueDesc = {};
316
386
317
387
std::unique_ptr<MockCommandQueueHw<gfxCoreFamily>, Deleter> commandQueue (new MockCommandQueueHw<gfxCoreFamily>(device, neoDevice->getDefaultEngine ().commandStreamReceiver , &queueDesc));
0 commit comments