Skip to content

Commit 5911515

Browse files
Refactor debugger code
- helper sets all SbaAddresses for debugger in EncodeStateBaseAddress<GfxFamily>::setSbaAddressesForDebugger() - change DebuggerL0::captureStateBaseAddress() to take LinearStream - move getSbaTrackingCommandsSize() to Debugger class Related-To: NEO-6845 Signed-off-by: Mateusz Hoppe <mateusz.hoppe@intel.com>
1 parent f3bcbfb commit 5911515

23 files changed

+105
-48
lines changed

level_zero/core/source/cmdlist/cmdlist_hw.inl

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2256,14 +2256,9 @@ void CommandListCoreFamily<gfxCoreFamily>::programStateBaseAddress(NEO::CommandC
22562256
NEO::EncodeStateBaseAddress<GfxFamily>::encode(commandContainer, sba, this->partitionCount > 1);
22572257
if (NEO::Debugger::isDebugEnabled(this->internalUsage) && device->getL0Debugger()) {
22582258
NEO::Debugger::SbaAddresses sbaAddresses = {};
2259-
sbaAddresses.BindlessSurfaceStateBaseAddress = sba.getBindlessSurfaceStateBaseAddress();
2260-
sbaAddresses.DynamicStateBaseAddress = sba.getDynamicStateBaseAddress();
2261-
sbaAddresses.GeneralStateBaseAddress = sba.getGeneralStateBaseAddress();
2262-
NEO::EncodeStateBaseAddress<GfxFamily>::setIohAddressForDebugger(sbaAddresses, sba);
2263-
sbaAddresses.InstructionBaseAddress = sba.getInstructionBaseAddress();
2264-
sbaAddresses.SurfaceStateBaseAddress = sba.getSurfaceStateBaseAddress();
2265-
2266-
device->getL0Debugger()->captureStateBaseAddress(commandContainer, sbaAddresses);
2259+
NEO::EncodeStateBaseAddress<GfxFamily>::setSbaAddressesForDebugger(sbaAddresses, sba);
2260+
2261+
device->getL0Debugger()->captureStateBaseAddress(*commandContainer.getCommandStream(), sbaAddresses);
22672262
}
22682263
}
22692264

level_zero/core/source/cmdqueue/cmdqueue_hw_base.inl

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -75,12 +75,7 @@ void CommandQueueHw<gfxCoreFamily>::programStateBaseAddress(uint64_t gsba, bool
7575
if (NEO::Debugger::isDebugEnabled(internalUsage) && device->getL0Debugger()) {
7676

7777
NEO::Debugger::SbaAddresses sbaAddresses = {};
78-
sbaAddresses.BindlessSurfaceStateBaseAddress = sbaCmd.getBindlessSurfaceStateBaseAddress();
79-
sbaAddresses.DynamicStateBaseAddress = sbaCmd.getDynamicStateBaseAddress();
80-
sbaAddresses.GeneralStateBaseAddress = sbaCmd.getGeneralStateBaseAddress();
81-
sbaAddresses.IndirectObjectBaseAddress = sbaCmd.getIndirectObjectBaseAddress();
82-
sbaAddresses.InstructionBaseAddress = sbaCmd.getInstructionBaseAddress();
83-
sbaAddresses.SurfaceStateBaseAddress = sbaCmd.getSurfaceStateBaseAddress();
78+
NEO::EncodeStateBaseAddress<GfxFamily>::setSbaAddressesForDebugger(sbaAddresses, sbaCmd);
8479

8580
device->getL0Debugger()->programSbaTrackingCommands(commandStream, sbaAddresses);
8681
}

level_zero/core/source/cmdqueue/cmdqueue_xe_hp_core_and_later.inl

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,7 @@ void CommandQueueHw<gfxCoreFamily>::programStateBaseAddress(uint64_t gsba, bool
6161
if (NEO::Debugger::isDebugEnabled(internalUsage) && device->getL0Debugger()) {
6262

6363
NEO::Debugger::SbaAddresses sbaAddresses = {};
64-
sbaAddresses.BindlessSurfaceStateBaseAddress = sbaCmd.getBindlessSurfaceStateBaseAddress();
65-
sbaAddresses.DynamicStateBaseAddress = sbaCmd.getDynamicStateBaseAddress();
66-
sbaAddresses.GeneralStateBaseAddress = sbaCmd.getGeneralStateBaseAddress();
67-
sbaAddresses.InstructionBaseAddress = sbaCmd.getInstructionBaseAddress();
68-
sbaAddresses.SurfaceStateBaseAddress = sbaCmd.getSurfaceStateBaseAddress();
64+
NEO::EncodeStateBaseAddress<GfxFamily>::setSbaAddressesForDebugger(sbaAddresses, sbaCmd);
6965

7066
device->getL0Debugger()->programSbaTrackingCommands(commandStream, sbaAddresses);
7167
}

level_zero/core/source/debugger/debugger_l0.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,9 +117,9 @@ DebuggerL0 ::~DebuggerL0() {
117117
device->getMemoryManager()->freeGraphicsMemory(moduleDebugArea);
118118
}
119119

120-
void DebuggerL0::captureStateBaseAddress(NEO::CommandContainer &container, SbaAddresses sba) {
120+
void DebuggerL0::captureStateBaseAddress(NEO::LinearStream &cmdStream, SbaAddresses sba) {
121121
if (DebuggerL0::isAnyTrackedAddressChanged(sba)) {
122-
programSbaTrackingCommands(*container.getCommandStream(), sba);
122+
programSbaTrackingCommands(cmdStream, sba);
123123
}
124124
}
125125

level_zero/core/source/debugger/debugger_l0.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,14 +92,13 @@ class DebuggerL0 : public NEO::Debugger, NEO::NonCopyableOrMovableClass {
9292
return sbaTrackingGpuVa.address;
9393
}
9494

95-
void captureStateBaseAddress(NEO::CommandContainer &container, SbaAddresses sba) override;
95+
void captureStateBaseAddress(NEO::LinearStream &cmdStream, SbaAddresses sba) override;
9696
void printTrackedAddresses(uint32_t contextId);
9797
MOCKABLE_VIRTUAL void registerElf(NEO::DebugData *debugData, NEO::GraphicsAllocation *isaAllocation);
9898
MOCKABLE_VIRTUAL void notifyCommandQueueCreated();
9999
MOCKABLE_VIRTUAL void notifyCommandQueueDestroyed();
100100
MOCKABLE_VIRTUAL void notifyModuleLoadAllocations(const StackVec<NEO::GraphicsAllocation *, 32> &allocs);
101101

102-
virtual size_t getSbaTrackingCommandsSize(size_t trackedAddressCount) = 0;
103102
virtual void programSbaTrackingCommands(NEO::LinearStream &cmdStream, const SbaAddresses &sba) = 0;
104103
virtual size_t getSbaAddressLoadCommandsSize() = 0;
105104
virtual void programSbaAddressLoad(NEO::LinearStream &cmdStream, uint64_t sbaGpuVa) = 0;

level_zero/core/test/unit_tests/mocks/mock_l0_debugger.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,9 @@ class MockDebuggerL0Hw : public L0::DebuggerL0Hw<GfxFamily> {
2929
return new MockDebuggerL0Hw<GfxFamily>(device);
3030
}
3131

32-
void captureStateBaseAddress(NEO::CommandContainer &container, NEO::Debugger::SbaAddresses sba) override {
32+
void captureStateBaseAddress(NEO::LinearStream &cmdStream, NEO::Debugger::SbaAddresses sba) override {
3333
captureStateBaseAddressCount++;
34-
L0::DebuggerL0Hw<GfxFamily>::captureStateBaseAddress(container, sba);
34+
L0::DebuggerL0Hw<GfxFamily>::captureStateBaseAddress(cmdStream, sba);
3535
}
3636

3737
size_t getSbaTrackingCommandsSize(size_t trackedAddressCount) override {

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -654,7 +654,10 @@ TEST(Debugger, givenNonLegacyDebuggerWhenInitializingDeviceCapsThenUnrecoverable
654654
isLegacyMode = false;
655655
}
656656

657-
void captureStateBaseAddress(CommandContainer &container, SbaAddresses sba) override{};
657+
void captureStateBaseAddress(NEO::LinearStream &cmdStream, SbaAddresses sba) override{};
658+
size_t getSbaTrackingCommandsSize(size_t trackedAddressCount) override {
659+
return 0;
660+
}
658661
};
659662
auto executionEnvironment = new NEO::ExecutionEnvironment();
660663
auto mockBuiltIns = new MockBuiltins();

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -581,13 +581,13 @@ HWTEST_F(L0DebuggerSimpleTest, givenNotChangedSurfaceStateWhenCapturingSBAThenNo
581581
NEO::Debugger::SbaAddresses sba = {};
582582
sba.SurfaceStateBaseAddress = 0x123456000;
583583

584-
debugger->captureStateBaseAddress(container, sba);
584+
debugger->captureStateBaseAddress(*container.getCommandStream(), sba);
585585
auto sizeUsed = container.getCommandStream()->getUsed();
586586

587587
EXPECT_NE(0u, sizeUsed);
588588
sba.SurfaceStateBaseAddress = 0;
589589

590-
debugger->captureStateBaseAddress(container, sba);
590+
debugger->captureStateBaseAddress(*container.getCommandStream(), sba);
591591
auto sizeUsed2 = container.getCommandStream()->getUsed();
592592

593593
EXPECT_EQ(sizeUsed, sizeUsed2);
@@ -604,7 +604,7 @@ HWTEST_F(L0DebuggerSimpleTest, givenChangedBaseAddressesWhenCapturingSBAThenNoTr
604604
NEO::Debugger::SbaAddresses sba = {};
605605
sba.SurfaceStateBaseAddress = 0x123456000;
606606

607-
debugger->captureStateBaseAddress(container, sba);
607+
debugger->captureStateBaseAddress(*container.getCommandStream(), sba);
608608
auto sizeUsed = container.getCommandStream()->getUsed();
609609

610610
EXPECT_NE(0u, sizeUsed);
@@ -617,7 +617,7 @@ HWTEST_F(L0DebuggerSimpleTest, givenChangedBaseAddressesWhenCapturingSBAThenNoTr
617617
NEO::Debugger::SbaAddresses sba = {};
618618
sba.GeneralStateBaseAddress = 0x123456000;
619619

620-
debugger->captureStateBaseAddress(container, sba);
620+
debugger->captureStateBaseAddress(*container.getCommandStream(), sba);
621621
auto sizeUsed = container.getCommandStream()->getUsed();
622622

623623
EXPECT_NE(0u, sizeUsed);
@@ -630,7 +630,7 @@ HWTEST_F(L0DebuggerSimpleTest, givenChangedBaseAddressesWhenCapturingSBAThenNoTr
630630
NEO::Debugger::SbaAddresses sba = {};
631631
sba.BindlessSurfaceStateBaseAddress = 0x123456000;
632632

633-
debugger->captureStateBaseAddress(container, sba);
633+
debugger->captureStateBaseAddress(*container.getCommandStream(), sba);
634634
auto sizeUsed = container.getCommandStream()->getUsed();
635635

636636
EXPECT_NE(0u, sizeUsed);

opencl/test/unit_test/command_stream/command_stream_receiver_flush_task_tests_xehp_and_later.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, CommandStreamReceiverFlushTaskXeHPAndLaterTests, gi
141141
auto &commandStreamReceiver = pDevice->getUltCommandStreamReceiver<FamilyType>();
142142

143143
configureCSRtoNonDirtyState<FamilyType>(false);
144+
commandStreamReceiver.isStateSipSent = false;
144145
flushTask(commandStreamReceiver);
145146
parseCommands<FamilyType>(commandStreamReceiver.getCS(0));
146147

@@ -180,6 +181,7 @@ HWTEST2_F(CommandStreamReceiverFlushTaskXeHPAndLaterTests, givenProgramPipeContr
180181
auto &commandStreamReceiver = pDevice->getUltCommandStreamReceiver<FamilyType>();
181182

182183
configureCSRtoNonDirtyState<FamilyType>(false);
184+
commandStreamReceiver.isStateSipSent = false;
183185
flushTask(commandStreamReceiver);
184186
parseCommands<FamilyType>(commandStreamReceiver.getCS(0));
185187

opencl/test/unit_test/command_stream/command_stream_receiver_hw_1_tests.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#include "shared/test/common/mocks/mock_device.h"
1919
#include "shared/test/common/mocks/mock_memory_manager.h"
2020
#include "shared/test/common/mocks/mock_os_context.h"
21+
#include "shared/test/common/mocks/mock_source_level_debugger.h"
2122
#include "shared/test/common/mocks/mock_timestamp_container.h"
2223
#include "shared/test/common/mocks/ult_device_factory.h"
2324
#include "shared/test/common/test_macros/test.h"
@@ -131,13 +132,17 @@ HWTEST_F(UltCommandStreamReceiverTest, givenSentStateSipFlagSetAndSourceLevelDeb
131132
commandStreamReceiver.isStateSipSent = true;
132133
auto sizeWithoutSourceKernelDebugging = commandStreamReceiver.getRequiredCmdStreamSize(dispatchFlags, *pDevice);
133134

134-
pDevice->setDebuggerActive(true);
135+
auto debugger = new MockSourceLevelDebugger();
136+
debugger->setActive(true);
137+
debugger->sbaTrackingSize = 24;
138+
139+
pDevice->getExecutionEnvironment()->rootDeviceEnvironments[pDevice->getRootDeviceIndex()]->debugger.reset(debugger);
140+
135141
commandStreamReceiver.isStateSipSent = true;
136142
auto sizeWithSourceKernelDebugging = commandStreamReceiver.getRequiredCmdStreamSize(dispatchFlags, *pDevice);
137143

138144
auto sizeForStateSip = PreemptionHelper::getRequiredStateSipCmdSize<FamilyType>(*pDevice, commandStreamReceiver.isRcs());
139145
EXPECT_EQ(sizeForStateSip, sizeWithSourceKernelDebugging - sizeWithoutSourceKernelDebugging - PreambleHelper<FamilyType>::getKernelDebuggingCommandsSize(true));
140-
pDevice->setDebuggerActive(false);
141146
}
142147

143148
HWTEST_F(UltCommandStreamReceiverTest, givenPreambleSentAndThreadArbitrationPolicyChangedWhenEstimatingFlushTaskSizeThenResultDependsOnPolicyProgrammingCmdSize) {

0 commit comments

Comments
 (0)