55 *
66 */
77
8+ #include " shared/source/helpers/preamble.h"
89#include " shared/test/common/cmd_parse/gen_cmd_parse.h"
10+ #include " shared/test/common/libult/ult_command_stream_receiver.h"
911#include " shared/test/common/test_macros/test.h"
1012
1113#include " level_zero/core/source/image/image_hw.h"
@@ -18,15 +20,15 @@ namespace ult {
1820
1921using L0DebuggerTest = Test<L0DebuggerHwFixture>;
2022
21- struct L0DebuggerInternalUsageTest : public L0DebuggerTest {
23+ struct L0DebuggerWithBlitterTest : public L0DebuggerTest {
2224 void SetUp () override {
2325 VariableBackup<HardwareInfo> backupHwInfo (defaultHwInfo.get ());
2426 defaultHwInfo->capabilityTable .blitterOperationsSupported = true ;
2527 L0DebuggerTest::SetUp ();
2628 }
2729};
2830
29- HWTEST_F (L0DebuggerInternalUsageTest , givenFlushTaskSubmissionEnabledWhenCommandListIsInititalizedOrResetThenCaptureSbaIsNotCalled) {
31+ HWTEST_F (L0DebuggerWithBlitterTest , givenFlushTaskSubmissionEnabledWhenCommandListIsInititalizedOrResetThenCaptureSbaIsNotCalled) {
3032 using STATE_BASE_ADDRESS = typename FamilyType::STATE_BASE_ADDRESS;
3133
3234 DebugManagerStateRestore restorer;
@@ -55,7 +57,7 @@ HWTEST_F(L0DebuggerInternalUsageTest, givenFlushTaskSubmissionEnabledWhenCommand
5557 commandList->destroy ();
5658}
5759
58- HWTEST_F (L0DebuggerInternalUsageTest, givenFlushTaskSubmissionDisabledWhenCommandListIsInititalizedOrResetThenCaptureSbaIsCalled ) {
60+ HWTEST_F (L0DebuggerWithBlitterTest, givenFlushTaskSubmissionDisabledWhenCommandListIsInititalizedOrResetThenCaptureSbaIsNotCalled ) {
5961 using STATE_BASE_ADDRESS = typename FamilyType::STATE_BASE_ADDRESS;
6062
6163 DebugManagerStateRestore restorer;
@@ -84,7 +86,7 @@ HWTEST_F(L0DebuggerInternalUsageTest, givenFlushTaskSubmissionDisabledWhenComman
8486 commandList->destroy ();
8587}
8688
87- HWTEST_F (L0DebuggerInternalUsageTest , givenDebuggerLogsDisabledWhenCommandListIsSynchronizedThenSbaAddressesAreNotPrinted) {
89+ HWTEST_F (L0DebuggerWithBlitterTest , givenDebuggerLogsDisabledWhenCommandListIsSynchronizedThenSbaAddressesAreNotPrinted) {
8890 DebugManagerStateRestore restorer;
8991 NEO::DebugManager.flags .DebuggerLogBitmask .set (0 );
9092
@@ -104,39 +106,107 @@ HWTEST_F(L0DebuggerInternalUsageTest, givenDebuggerLogsDisabledWhenCommandListIs
104106 commandList->destroy ();
105107}
106108
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+
108113 Mock<::L0::Kernel> kernel;
109114 DebugManagerStateRestore restorer;
110115 NEO::DebugManager.flags .EnableFlushTaskSubmission .set (true );
111116
112117 ze_command_queue_desc_t queueDesc = {};
113118 ze_result_t returnValue = ZE_RESULT_SUCCESS;
114119 ze_group_count_t groupCount{1 , 1 , 1 };
120+
121+ auto &csr = neoDevice->getUltCommandStreamReceiver <FamilyType>();
122+ csr.storeMakeResidentAllocations = true ;
123+
115124 auto commandList = CommandList::createImmediate (productFamily, device, &queueDesc, false , NEO::EngineGroupType::RenderCompute, returnValue);
116125
126+ EXPECT_TRUE (commandList->isFlushTaskSubmissionEnabled );
127+ EXPECT_EQ (&csr, commandList->csr );
128+
129+ csr.lastFlushedCommandStream = nullptr ;
117130 auto result = commandList->appendLaunchKernel (kernel.toHandle (), &groupCount, nullptr , 0 , nullptr );
118131 ASSERT_EQ (ZE_RESULT_SUCCESS, result);
119132
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+ }
120166 commandList->destroy ();
121167}
122168
123- HWTEST_F (L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionEnabledWithInternalCommandListForImmediateWhenAppendLaunchKernelThenSuccessIsReturned) {
169+ HWTEST_F (L0DebuggerWithBlitterTest, givenInternalUsageImmediateCommandListWhenExecutingThenDebuggerAllocationsAreNotResident) {
170+ using STATE_SIP = typename FamilyType::STATE_SIP;
171+
124172 Mock<::L0::Kernel> kernel;
125173 DebugManagerStateRestore restorer;
126174 NEO::DebugManager.flags .EnableFlushTaskSubmission .set (true );
127175
128176 ze_command_queue_desc_t queueDesc = {};
129177 ze_result_t returnValue = ZE_RESULT_SUCCESS;
130178 ze_group_count_t groupCount{1 , 1 , 1 };
179+
131180 auto commandList = CommandList::createImmediate (productFamily, device, &queueDesc, true , NEO::EngineGroupType::RenderCompute, returnValue);
132181
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+
133188 auto result = commandList->appendLaunchKernel (kernel.toHandle (), &groupCount, nullptr , 0 , nullptr );
134189 ASSERT_EQ (ZE_RESULT_SUCCESS, result);
135190
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+
136206 commandList->destroy ();
137207}
138208
139- HWTEST_F (L0DebuggerInternalUsageTest , givenUseCsrImmediateSubmissionEnabledForImmediateCommandListForAppendLaunchKernelIndirectThenSuccessIsReturned) {
209+ HWTEST_F (L0DebuggerWithBlitterTest , givenUseCsrImmediateSubmissionEnabledForImmediateCommandListForAppendLaunchKernelIndirectThenSuccessIsReturned) {
140210 Mock<::L0::Kernel> kernel;
141211 DebugManagerStateRestore restorer;
142212 NEO::DebugManager.flags .EnableFlushTaskSubmission .set (true );
@@ -153,7 +223,7 @@ HWTEST_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionEnabledForIm
153223 commandList->destroy ();
154224}
155225
156- HWTEST_F (L0DebuggerInternalUsageTest , givenUseCsrImmediateSubmissionDisabledForImmediateCommandListForAppendLaunchKernelIndirectThenSuccessIsReturned) {
226+ HWTEST_F (L0DebuggerWithBlitterTest , givenUseCsrImmediateSubmissionDisabledForImmediateCommandListForAppendLaunchKernelIndirectThenSuccessIsReturned) {
157227 Mock<::L0::Kernel> kernel;
158228 DebugManagerStateRestore restorer;
159229 NEO::DebugManager.flags .EnableFlushTaskSubmission .set (false );
@@ -170,7 +240,7 @@ HWTEST_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionDisabledForI
170240 commandList->destroy ();
171241}
172242
173- HWTEST_F (L0DebuggerInternalUsageTest , givenUseCsrImmediateSubmissionEnabledForImmediateCommandListForAppendMemoryCopyThenSuccessIsReturned) {
243+ HWTEST_F (L0DebuggerWithBlitterTest , givenUseCsrImmediateSubmissionEnabledForImmediateCommandListForAppendMemoryCopyThenSuccessIsReturned) {
174244 DebugManagerStateRestore restorer;
175245 NEO::DebugManager.flags .EnableFlushTaskSubmission .set (true );
176246
@@ -186,7 +256,7 @@ HWTEST_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionEnabledForIm
186256 commandList->destroy ();
187257}
188258
189- HWTEST_F (L0DebuggerInternalUsageTest , givenUseCsrImmediateSubmissionDisabledForImmediateCommandListForAppendMemoryCopyThenSuccessIsReturned) {
259+ HWTEST_F (L0DebuggerWithBlitterTest , givenUseCsrImmediateSubmissionDisabledForImmediateCommandListForAppendMemoryCopyThenSuccessIsReturned) {
190260 DebugManagerStateRestore restorer;
191261 NEO::DebugManager.flags .EnableFlushTaskSubmission .set (false );
192262
@@ -202,7 +272,7 @@ HWTEST_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionDisabledForI
202272 commandList->destroy ();
203273}
204274
205- HWTEST_F (L0DebuggerInternalUsageTest , givenUseCsrImmediateSubmissionEnabledForImmediateCommandListForAppendMemoryCopyRegionThenSuccessIsReturned) {
275+ HWTEST_F (L0DebuggerWithBlitterTest , givenUseCsrImmediateSubmissionEnabledForImmediateCommandListForAppendMemoryCopyRegionThenSuccessIsReturned) {
206276 DebugManagerStateRestore restorer;
207277 NEO::DebugManager.flags .EnableFlushTaskSubmission .set (true );
208278
@@ -223,7 +293,7 @@ HWTEST_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionEnabledForIm
223293 commandList->destroy ();
224294}
225295
226- HWTEST_F (L0DebuggerInternalUsageTest , givenUseCsrImmediateSubmissionEnabledForRegularCommandListForAppendMemoryCopyRegionThenSuccessIsReturned) {
296+ HWTEST_F (L0DebuggerWithBlitterTest , givenUseCsrImmediateSubmissionEnabledForRegularCommandListForAppendMemoryCopyRegionThenSuccessIsReturned) {
227297 DebugManagerStateRestore restorer;
228298 NEO::DebugManager.flags .EnableFlushTaskSubmission .set (true );
229299
@@ -256,7 +326,7 @@ HWTEST_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionEnabledForRe
256326 commandQueue->destroy ();
257327}
258328
259- HWTEST_F (L0DebuggerInternalUsageTest , givenUseCsrImmediateSubmissionDisabledForImmediateCommandListForAppendMemoryCopyRegionThenSuccessIsReturned) {
329+ HWTEST_F (L0DebuggerWithBlitterTest , givenUseCsrImmediateSubmissionDisabledForImmediateCommandListForAppendMemoryCopyRegionThenSuccessIsReturned) {
260330 DebugManagerStateRestore restorer;
261331 NEO::DebugManager.flags .EnableFlushTaskSubmission .set (false );
262332
@@ -275,7 +345,7 @@ HWTEST_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionDisabledForI
275345 commandList->destroy ();
276346}
277347
278- HWTEST2_F (L0DebuggerInternalUsageTest , givenUseCsrImmediateSubmissionEnabledCommandListAndAppendMemoryCopyCalledInLoopThenMultipleCommandBufferAreUsedAndSuccessIsReturned, IsAtLeastSkl) {
348+ HWTEST2_F (L0DebuggerWithBlitterTest , givenUseCsrImmediateSubmissionEnabledCommandListAndAppendMemoryCopyCalledInLoopThenMultipleCommandBufferAreUsedAndSuccessIsReturned, IsAtLeastSkl) {
279349 DebugManagerStateRestore restorer;
280350 NEO::DebugManager.flags .EnableFlushTaskSubmission .set (true );
281351
@@ -293,7 +363,7 @@ HWTEST2_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionEnabledComm
293363 commandList->destroy ();
294364}
295365
296- HWTEST2_F (L0DebuggerInternalUsageTest , givenUseCsrImmediateSubmissionDisabledCommandListAndAppendMemoryCopyCalledInLoopThenMultipleCommandBufferAreUsedAndSuccessIsReturned, IsAtLeastSkl) {
366+ HWTEST2_F (L0DebuggerWithBlitterTest , givenUseCsrImmediateSubmissionDisabledCommandListAndAppendMemoryCopyCalledInLoopThenMultipleCommandBufferAreUsedAndSuccessIsReturned, IsAtLeastSkl) {
297367 DebugManagerStateRestore restorer;
298368 NEO::DebugManager.flags .EnableFlushTaskSubmission .set (false );
299369
@@ -311,7 +381,7 @@ HWTEST2_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionDisabledCom
311381 commandList->destroy ();
312382}
313383
314- HWTEST2_F (L0DebuggerInternalUsageTest , givenDebuggingEnabledWhenInternalCmdQIsUsedThenDebuggerPathsAreNotExecuted, IsAtLeastSkl) {
384+ HWTEST2_F (L0DebuggerWithBlitterTest , givenDebuggingEnabledWhenInternalCmdQIsUsedThenDebuggerPathsAreNotExecuted, IsAtLeastSkl) {
315385 ze_command_queue_desc_t queueDesc = {};
316386
317387 std::unique_ptr<MockCommandQueueHw<gfxCoreFamily>, Deleter> commandQueue (new MockCommandQueueHw<gfxCoreFamily>(device, neoDevice->getDefaultEngine ().commandStreamReceiver , &queueDesc));
0 commit comments