Skip to content

Commit 10bccdb

Browse files
fix: correct batch buffer level for debugger address tracking commands
Related-To: NEO-7807 Signed-off-by: Zbigniew Zdanowicz <[email protected]>
1 parent 50931b1 commit 10bccdb

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

level_zero/core/source/cmdlist/cmdlist_hw.inl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2800,7 +2800,7 @@ void CommandListCoreFamily<gfxCoreFamily>::programStateBaseAddress(NEO::CommandC
28002800
NEO::EncodeStateBaseAddress<GfxFamily>::setSbaTrackingForL0DebuggerIfEnabled(sbaTrackingEnabled,
28012801
*this->device->getNEODevice(),
28022802
*container.getCommandStream(),
2803-
sba, this->isFlushTaskSubmissionEnabled);
2803+
sba, (this->isFlushTaskSubmissionEnabled || this->dispatchCmdListBatchBufferAsPrimary));
28042804
}
28052805

28062806
template <GFXCORE_FAMILY gfxCoreFamily>

level_zero/core/test/unit_tests/sources/debugger/test_l0_debugger_sba_tracking.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,9 +279,11 @@ HWTEST2_F(L0DebuggerTest, givenL0DebuggerAndDebuggerLogsDisabledWhenCommandQueue
279279

280280
HWTEST2_F(L0DebuggerTest, givenDebuggingEnabledWhenNonCopyCommandListIsInititalizedOrResetThenSSHAddressIsTracked, Gen12Plus) {
281281
using STATE_BASE_ADDRESS = typename FamilyType::STATE_BASE_ADDRESS;
282+
using MI_BATCH_BUFFER_START = typename FamilyType::MI_BATCH_BUFFER_START;
282283

283284
DebugManagerStateRestore dbgRestorer;
284285
DebugManager.flags.EnableStateBaseAddressTracking.set(0);
286+
DebugManager.flags.DispatchCmdlistCmdBufferPrimary.set(0);
285287

286288
size_t usedSpaceBefore = 0;
287289
ze_result_t returnValue;
@@ -304,10 +306,34 @@ HWTEST2_F(L0DebuggerTest, givenDebuggingEnabledWhenNonCopyCommandListIsInititali
304306
EXPECT_EQ(expectedGpuVa, sshGpuVa);
305307
EXPECT_EQ(1u, getMockDebuggerL0Hw<FamilyType>()->captureStateBaseAddressCount);
306308

309+
auto bbStartList = findAll<MI_BATCH_BUFFER_START *>(cmdList.begin(), cmdList.end());
310+
for (const auto &bbStartIt : bbStartList) {
311+
auto bbStartCmd = reinterpret_cast<MI_BATCH_BUFFER_START *>(*bbStartIt);
312+
EXPECT_EQ(MI_BATCH_BUFFER_START::SECOND_LEVEL_BATCH_BUFFER_SECOND_LEVEL_BATCH, bbStartCmd->getSecondLevelBatchBuffer());
313+
}
314+
307315
commandList->reset();
308316
EXPECT_EQ(2u, getMockDebuggerL0Hw<FamilyType>()->captureStateBaseAddressCount);
309317

310318
commandList->destroy();
319+
320+
DebugManager.flags.DispatchCmdlistCmdBufferPrimary.set(1);
321+
commandListHandle = CommandList::create(productFamily, device, NEO::EngineGroupType::RenderCompute, 0u, returnValue)->toHandle();
322+
commandList = CommandList::fromHandle(commandListHandle);
323+
324+
cmdList.clear();
325+
ASSERT_TRUE(FamilyType::PARSE::parseCommandBuffer(
326+
cmdList,
327+
commandList->getCmdContainer().getCommandStream()->getCpuBase(),
328+
commandList->getCmdContainer().getCommandStream()->getUsed()));
329+
330+
bbStartList = findAll<MI_BATCH_BUFFER_START *>(cmdList.begin(), cmdList.end());
331+
for (const auto &bbStartIt : bbStartList) {
332+
auto bbStartCmd = reinterpret_cast<MI_BATCH_BUFFER_START *>(*bbStartIt);
333+
EXPECT_EQ(MI_BATCH_BUFFER_START::SECOND_LEVEL_BATCH_BUFFER_FIRST_LEVEL_BATCH, bbStartCmd->getSecondLevelBatchBuffer());
334+
}
335+
336+
commandList->destroy();
311337
}
312338

313339
HWTEST2_F(L0DebuggerTest, givenDebuggingEnabledWhenCommandListIsExecutedThenSbaBufferIsPushedToResidencyContainer, Gen12Plus) {

0 commit comments

Comments
 (0)