mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-03 23:03:02 +08:00
L0 Debugger Windows - Enable single address space SBA tracking
Related-to: NEO-6719 Signed-off-by: Yates, Brandon <brandon.yates@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
24ff26c396
commit
6c5a56f1a6
@@ -30,6 +30,8 @@ DebuggerL0::DebuggerL0(NEO::Device *device) : device(device) {
|
||||
|
||||
void DebuggerL0::initialize() {
|
||||
|
||||
initSbaTrackingMode();
|
||||
|
||||
if (NEO::DebugManager.flags.DebuggerForceSbaTrackingMode.get() != -1) {
|
||||
setSingleAddressSpaceSbaTracking(NEO::DebugManager.flags.DebuggerForceSbaTrackingMode.get());
|
||||
}
|
||||
|
||||
@@ -96,6 +96,7 @@ class DebuggerL0 : public NEO::Debugger, NEO::NonCopyableOrMovableClass {
|
||||
MOCKABLE_VIRTUAL void notifyCommandQueueCreated();
|
||||
MOCKABLE_VIRTUAL void notifyCommandQueueDestroyed();
|
||||
MOCKABLE_VIRTUAL void notifyModuleLoadAllocations(const StackVec<NEO::GraphicsAllocation *, 32> &allocs);
|
||||
void initSbaTrackingMode();
|
||||
|
||||
virtual void programSbaTrackingCommands(NEO::LinearStream &cmdStream, const SbaAddresses &sba) = 0;
|
||||
virtual size_t getSbaAddressLoadCommandsSize() = 0;
|
||||
@@ -107,6 +108,7 @@ class DebuggerL0 : public NEO::Debugger, NEO::NonCopyableOrMovableClass {
|
||||
void setSingleAddressSpaceSbaTracking(bool value) {
|
||||
singleAddressSpaceSbaTracking = value;
|
||||
}
|
||||
bool getSingleAddressSpaceSbaTracking() { return singleAddressSpaceSbaTracking; }
|
||||
|
||||
protected:
|
||||
static bool isAnyTrackedAddressChanged(SbaAddresses sba) {
|
||||
|
||||
@@ -25,6 +25,10 @@ bool DebuggerL0::initDebuggingInOs(NEO::OSInterface *osInterface) {
|
||||
return false;
|
||||
}
|
||||
|
||||
void DebuggerL0::initSbaTrackingMode() {
|
||||
singleAddressSpaceSbaTracking = false;
|
||||
}
|
||||
|
||||
void DebuggerL0::registerElf(NEO::DebugData *debugData, NEO::GraphicsAllocation *isaAllocation) {
|
||||
if (device->getRootDeviceEnvironment().osInterface.get() != nullptr) {
|
||||
auto drm = device->getRootDeviceEnvironment().osInterface->getDriverModel()->as<NEO::Drm>();
|
||||
|
||||
@@ -25,6 +25,10 @@ bool DebuggerL0::initDebuggingInOs(NEO::OSInterface *osInterface) {
|
||||
return true;
|
||||
}
|
||||
|
||||
void DebuggerL0::initSbaTrackingMode() {
|
||||
singleAddressSpaceSbaTracking = true;
|
||||
}
|
||||
|
||||
void DebuggerL0::registerElf(NEO::DebugData *debugData, NEO::GraphicsAllocation *isaAllocation) {
|
||||
}
|
||||
|
||||
|
||||
@@ -84,5 +84,27 @@ struct L0DebuggerHwFixture : public L0DebuggerFixture {
|
||||
DebuggerL0 *debuggerHw = nullptr;
|
||||
};
|
||||
|
||||
struct L0DebuggerPerContextAddressSpaceFixture : public L0DebuggerHwFixture {
|
||||
void SetUp() {
|
||||
NEO::DebugManager.flags.DebuggerForceSbaTrackingMode.set(0);
|
||||
L0DebuggerHwFixture::SetUp();
|
||||
}
|
||||
void TearDown() {
|
||||
L0DebuggerHwFixture::TearDown();
|
||||
}
|
||||
DebugManagerStateRestore restorer;
|
||||
};
|
||||
|
||||
struct L0DebuggerHwParameterizedFixture : ::testing::TestWithParam<int>, public L0DebuggerHwFixture {
|
||||
void SetUp() override {
|
||||
NEO::DebugManager.flags.DebuggerForceSbaTrackingMode.set(GetParam());
|
||||
L0DebuggerHwFixture::SetUp();
|
||||
}
|
||||
void TearDown() override {
|
||||
L0DebuggerHwFixture::TearDown();
|
||||
}
|
||||
DebugManagerStateRestore restorer;
|
||||
};
|
||||
|
||||
} // namespace ult
|
||||
} // namespace L0
|
||||
|
||||
@@ -73,6 +73,10 @@ TEST_F(L0DebuggerLinuxTest, whenDebuggerIsCreatedThenItCallsDrmToRegisterResourc
|
||||
EXPECT_TRUE(drmMock->registerClassesCalled);
|
||||
}
|
||||
|
||||
TEST_F(L0DebuggerLinuxTest, givenLinuxOSWhenL0DebuggerIsCreatedAddressModeIsNotSingleSpace) {
|
||||
EXPECT_FALSE(device->getL0Debugger()->getSingleAddressSpaceSbaTracking());
|
||||
}
|
||||
|
||||
TEST(L0DebuggerLinux, givenVmBindAndPerContextVmEnabledInDrmWhenInitializingDebuggingInOsThenRegisterResourceClassesIsCalled) {
|
||||
auto executionEnvironment = std::make_unique<NEO::ExecutionEnvironment>();
|
||||
|
||||
|
||||
@@ -21,20 +21,21 @@ namespace L0 {
|
||||
namespace ult {
|
||||
|
||||
using L0DebuggerTest = Test<L0DebuggerHwFixture>;
|
||||
using L0DebuggerParameterizedTests = L0DebuggerHwParameterizedFixture;
|
||||
|
||||
TEST_F(L0DebuggerTest, givenL0DebuggerWhenCallingIsLegacyThenFalseIsReturned) {
|
||||
TEST_P(L0DebuggerParameterizedTests, givenL0DebuggerWhenCallingIsLegacyThenFalseIsReturned) {
|
||||
EXPECT_FALSE(neoDevice->getDebugger()->isLegacy());
|
||||
}
|
||||
|
||||
TEST_F(L0DebuggerTest, givenL0DebuggerWhenGettingSourceLevelDebuggerThenNullptrReturned) {
|
||||
TEST_P(L0DebuggerParameterizedTests, givenL0DebuggerWhenGettingSourceLevelDebuggerThenNullptrReturned) {
|
||||
EXPECT_EQ(nullptr, neoDevice->getSourceLevelDebugger());
|
||||
}
|
||||
|
||||
TEST_F(L0DebuggerTest, givenL0DebuggerWhenGettingL0DebuggerThenValidDebuggerInstanceIsReturned) {
|
||||
TEST_P(L0DebuggerParameterizedTests, givenL0DebuggerWhenGettingL0DebuggerThenValidDebuggerInstanceIsReturned) {
|
||||
EXPECT_NE(nullptr, device->getL0Debugger());
|
||||
}
|
||||
|
||||
TEST_F(L0DebuggerTest, givenL0DebuggerWhenGettingSipAllocationThenValidSipTypeIsReturned) {
|
||||
TEST_P(L0DebuggerParameterizedTests, givenL0DebuggerWhenGettingSipAllocationThenValidSipTypeIsReturned) {
|
||||
neoDevice->setDebuggerActive(true);
|
||||
auto systemRoutine = SipKernel::getSipKernel(*neoDevice).getSipAllocation();
|
||||
ASSERT_NE(nullptr, systemRoutine);
|
||||
@@ -49,12 +50,12 @@ TEST_F(L0DebuggerTest, givenL0DebuggerWhenGettingSipAllocationThenValidSipTypeIs
|
||||
EXPECT_EQ(expectedSipAllocation, systemRoutine);
|
||||
}
|
||||
|
||||
TEST_F(L0DebuggerTest, givenL0DebuggerWhenGettingSipTypeThenDebugBindlessIsReturned) {
|
||||
TEST_P(L0DebuggerParameterizedTests, givenL0DebuggerWhenGettingSipTypeThenDebugBindlessIsReturned) {
|
||||
auto sipType = SipKernel::getSipKernelType(*neoDevice);
|
||||
EXPECT_EQ(NEO::SipKernelType::DbgBindless, sipType);
|
||||
}
|
||||
|
||||
TEST_F(L0DebuggerTest, givenL0DebuggerWhenGettingStateSaveAreaHeaderThenValidSipTypeIsReturned) {
|
||||
TEST_P(L0DebuggerParameterizedTests, givenL0DebuggerWhenGettingStateSaveAreaHeaderThenValidSipTypeIsReturned) {
|
||||
auto &stateSaveAreaHeader = SipKernel::getSipKernel(*neoDevice).getStateSaveAreaHeader();
|
||||
|
||||
auto sipType = SipKernel::getSipKernelType(*neoDevice);
|
||||
@@ -63,12 +64,12 @@ TEST_F(L0DebuggerTest, givenL0DebuggerWhenGettingStateSaveAreaHeaderThenValidSip
|
||||
EXPECT_EQ(expectedStateSaveAreaHeader, stateSaveAreaHeader);
|
||||
}
|
||||
|
||||
TEST_F(L0DebuggerTest, givenProgramDebuggingEnabledWhenDebuggerIsCreatedThenFusedEusAreDisabled) {
|
||||
TEST_P(L0DebuggerParameterizedTests, givenProgramDebuggingEnabledWhenDebuggerIsCreatedThenFusedEusAreDisabled) {
|
||||
EXPECT_TRUE(driverHandle->enableProgramDebugging);
|
||||
EXPECT_FALSE(neoDevice->getHardwareInfo().capabilityTable.fusedEuEnabled);
|
||||
}
|
||||
|
||||
TEST_F(L0DebuggerTest, givenProgramDebuggingEnabledWhenDebuggerIsCreatedThenCompressionIsDisabled) {
|
||||
TEST_P(L0DebuggerParameterizedTests, givenProgramDebuggingEnabledWhenDebuggerIsCreatedThenCompressionIsDisabled) {
|
||||
EXPECT_TRUE(driverHandle->enableProgramDebugging);
|
||||
EXPECT_FALSE(neoDevice->getHardwareInfo().capabilityTable.ftrRenderCompressedBuffers);
|
||||
EXPECT_FALSE(neoDevice->getHardwareInfo().capabilityTable.ftrRenderCompressedImages);
|
||||
@@ -137,7 +138,8 @@ TEST(Debugger, givenDebuggingEnabledInExecEnvWhenAllocatingIsaThenSingleBankIsUs
|
||||
neoDevice->getMemoryManager()->freeGraphicsMemory(allocation);
|
||||
}
|
||||
|
||||
HWTEST_F(L0DebuggerTest, givenDebuggingEnabledWhenCommandListIsExecutedThenValidKernelDebugCommandsAreAdded) {
|
||||
using L0DebuggerPerContextAddressSpaceTest = Test<L0DebuggerPerContextAddressSpaceFixture>;
|
||||
HWTEST_F(L0DebuggerPerContextAddressSpaceTest, givenDebuggingEnabledWhenCommandListIsExecutedThenValidKernelDebugCommandsAreAdded) {
|
||||
using MI_LOAD_REGISTER_IMM = typename FamilyType::MI_LOAD_REGISTER_IMM;
|
||||
using STATE_SIP = typename FamilyType::STATE_SIP;
|
||||
|
||||
@@ -203,7 +205,9 @@ HWTEST_F(L0DebuggerTest, givenDebuggingEnabledWhenCommandListIsExecutedThenValid
|
||||
commandQueue->destroy();
|
||||
}
|
||||
|
||||
HWTEST_F(L0DebuggerTest, givenDebuggerWhenAppendingKernelToCommandListThenBindlessSurfaceStateForDebugSurfaceIsProgrammedAtOffsetZero) {
|
||||
using Gen12Plus = IsAtLeastGfxCore<IGFX_GEN12_CORE>;
|
||||
|
||||
HWTEST2_P(L0DebuggerParameterizedTests, givenDebuggerWhenAppendingKernelToCommandListThenBindlessSurfaceStateForDebugSurfaceIsProgrammedAtOffsetZero, Gen12Plus) {
|
||||
using RENDER_SURFACE_STATE = typename FamilyType::RENDER_SURFACE_STATE;
|
||||
|
||||
Mock<::L0::Kernel> kernel;
|
||||
@@ -233,7 +237,7 @@ HWTEST_F(L0DebuggerTest, givenDebuggerWhenAppendingKernelToCommandListThenBindle
|
||||
EXPECT_EQ(RENDER_SURFACE_STATE::COHERENCY_TYPE_GPU_COHERENT, debugSurfaceState->getCoherencyType());
|
||||
}
|
||||
|
||||
HWTEST_F(L0DebuggerTest, givenDebuggerWhenAppendingKernelToCommandListThenDebugSurfaceIsProgrammedWithL3DisabledMOCS) {
|
||||
HWTEST2_P(L0DebuggerParameterizedTests, givenDebuggerWhenAppendingKernelToCommandListThenDebugSurfaceIsProgrammedWithL3DisabledMOCS, Gen12Plus) {
|
||||
using RENDER_SURFACE_STATE = typename FamilyType::RENDER_SURFACE_STATE;
|
||||
|
||||
Mock<::L0::Kernel> kernel;
|
||||
@@ -255,7 +259,7 @@ HWTEST_F(L0DebuggerTest, givenDebuggerWhenAppendingKernelToCommandListThenDebugS
|
||||
EXPECT_EQ(actualMocs, mocsNoCache);
|
||||
}
|
||||
|
||||
HWTEST_F(L0DebuggerTest, givenEnabledDebuggingWhenIsaTypeAllocatedOnMultitileDeviceThenSharedAllocationIsCreated) {
|
||||
HWTEST_P(L0DebuggerParameterizedTests, givenEnabledDebuggingWhenIsaTypeAllocatedOnMultitileDeviceThenSharedAllocationIsCreated) {
|
||||
auto debugger = device->getL0Debugger();
|
||||
ASSERT_NE(nullptr, debugger);
|
||||
|
||||
@@ -640,7 +644,7 @@ HWTEST_F(L0DebuggerTest, givenDebuggerWhenCreatedThenModuleHeapDebugAreaIsCreate
|
||||
neoDevice->getMemoryManager()->freeGraphicsMemory(allocation);
|
||||
}
|
||||
|
||||
HWTEST_F(L0DebuggerTest, givenBindlessSipWhenModuleHeapDebugAreaIsCreatedThenReservedFieldIsSet) {
|
||||
HWTEST_P(L0DebuggerParameterizedTests, givenBindlessSipWhenModuleHeapDebugAreaIsCreatedThenReservedFieldIsSet) {
|
||||
DebugManagerStateRestore restorer;
|
||||
NEO::DebugManager.flags.UseBindlessDebugSip.set(1);
|
||||
|
||||
@@ -660,7 +664,7 @@ HWTEST_F(L0DebuggerTest, givenBindlessSipWhenModuleHeapDebugAreaIsCreatedThenRes
|
||||
EXPECT_EQ(1u, header->reserved1);
|
||||
}
|
||||
|
||||
HWTEST_F(L0DebuggerTest, givenUseBindlessDebugSipZeroWhenModuleHeapDebugAreaIsCreatedThenReservedFieldIsSet) {
|
||||
HWTEST_P(L0DebuggerParameterizedTests, givenUseBindlessDebugSipZeroWhenModuleHeapDebugAreaIsCreatedThenReservedFieldIsSet) {
|
||||
DebugManagerStateRestore restorer;
|
||||
NEO::DebugManager.flags.UseBindlessDebugSip.set(0);
|
||||
|
||||
@@ -714,5 +718,8 @@ using ATSOrDG2 = IsWithinGfxCore<IGFX_XE_HP_CORE, IGFX_XE_HPG_CORE>;
|
||||
HWTEST2_F(L0DebuggerTest, givenAtsOrDg2AndDebugIsActiveThenDisableL3CacheInGmmHelperIsSet, ATSOrDG2) {
|
||||
EXPECT_TRUE(static_cast<MockGmmHelper *>(neoDevice->getGmmHelper())->allResourcesUncached);
|
||||
}
|
||||
|
||||
INSTANTIATE_TEST_CASE_P(SBAModesForDebugger, L0DebuggerParameterizedTests, ::testing::Values(0, 1));
|
||||
|
||||
} // namespace ult
|
||||
} // namespace L0
|
||||
|
||||
@@ -19,17 +19,15 @@
|
||||
namespace L0 {
|
||||
namespace ult {
|
||||
|
||||
using L0DebuggerTest = Test<L0DebuggerHwFixture>;
|
||||
|
||||
struct L0DebuggerWithBlitterTest : public L0DebuggerTest {
|
||||
struct L0DebuggerWithBlitterTest : public L0DebuggerHwParameterizedFixture {
|
||||
void SetUp() override {
|
||||
VariableBackup<HardwareInfo> backupHwInfo(defaultHwInfo.get());
|
||||
defaultHwInfo->capabilityTable.blitterOperationsSupported = true;
|
||||
L0DebuggerTest::SetUp();
|
||||
L0DebuggerHwParameterizedFixture::SetUp();
|
||||
}
|
||||
};
|
||||
|
||||
HWTEST_F(L0DebuggerWithBlitterTest, givenFlushTaskSubmissionEnabledWhenCommandListIsInititalizedOrResetThenCaptureSbaIsNotCalled) {
|
||||
HWTEST_P(L0DebuggerWithBlitterTest, givenFlushTaskSubmissionEnabledWhenCommandListIsInititalizedOrResetThenCaptureSbaIsNotCalled) {
|
||||
using STATE_BASE_ADDRESS = typename FamilyType::STATE_BASE_ADDRESS;
|
||||
|
||||
DebugManagerStateRestore restorer;
|
||||
@@ -58,7 +56,7 @@ HWTEST_F(L0DebuggerWithBlitterTest, givenFlushTaskSubmissionEnabledWhenCommandLi
|
||||
commandList->destroy();
|
||||
}
|
||||
|
||||
HWTEST_F(L0DebuggerWithBlitterTest, givenFlushTaskSubmissionDisabledWhenCommandListIsInititalizedOrResetThenCaptureSbaIsNotCalled) {
|
||||
HWTEST_P(L0DebuggerWithBlitterTest, givenFlushTaskSubmissionDisabledWhenCommandListIsInititalizedOrResetThenCaptureSbaIsNotCalled) {
|
||||
using STATE_BASE_ADDRESS = typename FamilyType::STATE_BASE_ADDRESS;
|
||||
|
||||
DebugManagerStateRestore restorer;
|
||||
@@ -87,7 +85,7 @@ HWTEST_F(L0DebuggerWithBlitterTest, givenFlushTaskSubmissionDisabledWhenCommandL
|
||||
commandList->destroy();
|
||||
}
|
||||
|
||||
HWTEST_F(L0DebuggerWithBlitterTest, givenDebuggerLogsDisabledWhenCommandListIsSynchronizedThenSbaAddressesAreNotPrinted) {
|
||||
HWTEST_P(L0DebuggerWithBlitterTest, givenDebuggerLogsDisabledWhenCommandListIsSynchronizedThenSbaAddressesAreNotPrinted) {
|
||||
DebugManagerStateRestore restorer;
|
||||
NEO::DebugManager.flags.DebuggerLogBitmask.set(0);
|
||||
|
||||
@@ -107,7 +105,8 @@ HWTEST_F(L0DebuggerWithBlitterTest, givenDebuggerLogsDisabledWhenCommandListIsSy
|
||||
commandList->destroy();
|
||||
}
|
||||
|
||||
HWTEST_F(L0DebuggerWithBlitterTest, givenImmediateCommandListWhenExecutingWithFlushTaskThenSipIsInstalledAndDebuggerAllocationsAreResident) {
|
||||
using Gen12Plus = IsAtLeastGfxCore<IGFX_GEN12_CORE>;
|
||||
HWTEST2_P(L0DebuggerWithBlitterTest, givenImmediateCommandListWhenExecutingWithFlushTaskThenSipIsInstalledAndDebuggerAllocationsAreResident, Gen12Plus) {
|
||||
using STATE_SIP = typename FamilyType::STATE_SIP;
|
||||
using MI_LOAD_REGISTER_IMM = typename FamilyType::MI_LOAD_REGISTER_IMM;
|
||||
|
||||
@@ -168,7 +167,7 @@ HWTEST_F(L0DebuggerWithBlitterTest, givenImmediateCommandListWhenExecutingWithFl
|
||||
commandList->destroy();
|
||||
}
|
||||
|
||||
HWTEST_F(L0DebuggerWithBlitterTest, givenInternalUsageImmediateCommandListWhenExecutingThenDebuggerAllocationsAreNotResident) {
|
||||
HWTEST_P(L0DebuggerWithBlitterTest, givenInternalUsageImmediateCommandListWhenExecutingThenDebuggerAllocationsAreNotResident) {
|
||||
using STATE_SIP = typename FamilyType::STATE_SIP;
|
||||
|
||||
Mock<::L0::Kernel> kernel;
|
||||
@@ -209,7 +208,7 @@ HWTEST_F(L0DebuggerWithBlitterTest, givenInternalUsageImmediateCommandListWhenEx
|
||||
commandList->destroy();
|
||||
}
|
||||
|
||||
HWTEST_F(L0DebuggerWithBlitterTest, givenUseCsrImmediateSubmissionEnabledForImmediateCommandListForAppendLaunchKernelIndirectThenSuccessIsReturned) {
|
||||
HWTEST2_P(L0DebuggerWithBlitterTest, givenUseCsrImmediateSubmissionEnabledForImmediateCommandListForAppendLaunchKernelIndirectThenSuccessIsReturned, Gen12Plus) {
|
||||
Mock<::L0::Kernel> kernel;
|
||||
DebugManagerStateRestore restorer;
|
||||
NEO::DebugManager.flags.EnableFlushTaskSubmission.set(true);
|
||||
@@ -226,7 +225,7 @@ HWTEST_F(L0DebuggerWithBlitterTest, givenUseCsrImmediateSubmissionEnabledForImme
|
||||
commandList->destroy();
|
||||
}
|
||||
|
||||
HWTEST_F(L0DebuggerWithBlitterTest, givenUseCsrImmediateSubmissionDisabledForImmediateCommandListForAppendLaunchKernelIndirectThenSuccessIsReturned) {
|
||||
HWTEST2_P(L0DebuggerWithBlitterTest, givenUseCsrImmediateSubmissionDisabledForImmediateCommandListForAppendLaunchKernelIndirectThenSuccessIsReturned, Gen12Plus) {
|
||||
Mock<::L0::Kernel> kernel;
|
||||
DebugManagerStateRestore restorer;
|
||||
NEO::DebugManager.flags.EnableFlushTaskSubmission.set(false);
|
||||
@@ -243,7 +242,7 @@ HWTEST_F(L0DebuggerWithBlitterTest, givenUseCsrImmediateSubmissionDisabledForImm
|
||||
commandList->destroy();
|
||||
}
|
||||
|
||||
HWTEST_F(L0DebuggerWithBlitterTest, givenUseCsrImmediateSubmissionEnabledForImmediateCommandListForAppendMemoryCopyThenSuccessIsReturned) {
|
||||
HWTEST2_P(L0DebuggerWithBlitterTest, givenUseCsrImmediateSubmissionEnabledForImmediateCommandListForAppendMemoryCopyThenSuccessIsReturned, Gen12Plus) {
|
||||
DebugManagerStateRestore restorer;
|
||||
NEO::DebugManager.flags.EnableFlushTaskSubmission.set(true);
|
||||
|
||||
@@ -259,7 +258,7 @@ HWTEST_F(L0DebuggerWithBlitterTest, givenUseCsrImmediateSubmissionEnabledForImme
|
||||
commandList->destroy();
|
||||
}
|
||||
|
||||
HWTEST_F(L0DebuggerWithBlitterTest, givenUseCsrImmediateSubmissionDisabledForImmediateCommandListForAppendMemoryCopyThenSuccessIsReturned) {
|
||||
HWTEST2_P(L0DebuggerWithBlitterTest, givenUseCsrImmediateSubmissionDisabledForImmediateCommandListForAppendMemoryCopyThenSuccessIsReturned, Gen12Plus) {
|
||||
DebugManagerStateRestore restorer;
|
||||
NEO::DebugManager.flags.EnableFlushTaskSubmission.set(false);
|
||||
|
||||
@@ -275,7 +274,7 @@ HWTEST_F(L0DebuggerWithBlitterTest, givenUseCsrImmediateSubmissionDisabledForImm
|
||||
commandList->destroy();
|
||||
}
|
||||
|
||||
HWTEST_F(L0DebuggerWithBlitterTest, givenUseCsrImmediateSubmissionEnabledForImmediateCommandListForAppendMemoryCopyRegionThenSuccessIsReturned) {
|
||||
HWTEST2_P(L0DebuggerWithBlitterTest, givenUseCsrImmediateSubmissionEnabledForImmediateCommandListForAppendMemoryCopyRegionThenSuccessIsReturned, Gen12Plus) {
|
||||
DebugManagerStateRestore restorer;
|
||||
NEO::DebugManager.flags.EnableFlushTaskSubmission.set(true);
|
||||
|
||||
@@ -296,7 +295,7 @@ HWTEST_F(L0DebuggerWithBlitterTest, givenUseCsrImmediateSubmissionEnabledForImme
|
||||
commandList->destroy();
|
||||
}
|
||||
|
||||
HWTEST_F(L0DebuggerWithBlitterTest, givenUseCsrImmediateSubmissionEnabledForRegularCommandListForAppendMemoryCopyRegionThenSuccessIsReturned) {
|
||||
HWTEST2_P(L0DebuggerWithBlitterTest, givenUseCsrImmediateSubmissionEnabledForRegularCommandListForAppendMemoryCopyRegionThenSuccessIsReturned, Gen12Plus) {
|
||||
DebugManagerStateRestore restorer;
|
||||
NEO::DebugManager.flags.EnableFlushTaskSubmission.set(true);
|
||||
|
||||
@@ -329,7 +328,7 @@ HWTEST_F(L0DebuggerWithBlitterTest, givenUseCsrImmediateSubmissionEnabledForRegu
|
||||
commandQueue->destroy();
|
||||
}
|
||||
|
||||
HWTEST_F(L0DebuggerWithBlitterTest, givenUseCsrImmediateSubmissionDisabledForImmediateCommandListForAppendMemoryCopyRegionThenSuccessIsReturned) {
|
||||
HWTEST2_P(L0DebuggerWithBlitterTest, givenUseCsrImmediateSubmissionDisabledForImmediateCommandListForAppendMemoryCopyRegionThenSuccessIsReturned, Gen12Plus) {
|
||||
DebugManagerStateRestore restorer;
|
||||
NEO::DebugManager.flags.EnableFlushTaskSubmission.set(false);
|
||||
|
||||
@@ -348,7 +347,7 @@ HWTEST_F(L0DebuggerWithBlitterTest, givenUseCsrImmediateSubmissionDisabledForImm
|
||||
commandList->destroy();
|
||||
}
|
||||
|
||||
HWTEST2_F(L0DebuggerWithBlitterTest, givenUseCsrImmediateSubmissionEnabledCommandListAndAppendMemoryCopyCalledInLoopThenMultipleCommandBufferAreUsedAndSuccessIsReturned, IsAtLeastSkl) {
|
||||
HWTEST2_P(L0DebuggerWithBlitterTest, givenUseCsrImmediateSubmissionEnabledCommandListAndAppendMemoryCopyCalledInLoopThenMultipleCommandBufferAreUsedAndSuccessIsReturned, Gen12Plus) {
|
||||
DebugManagerStateRestore restorer;
|
||||
NEO::DebugManager.flags.EnableFlushTaskSubmission.set(true);
|
||||
|
||||
@@ -366,7 +365,7 @@ HWTEST2_F(L0DebuggerWithBlitterTest, givenUseCsrImmediateSubmissionEnabledComman
|
||||
commandList->destroy();
|
||||
}
|
||||
|
||||
HWTEST2_F(L0DebuggerWithBlitterTest, givenUseCsrImmediateSubmissionDisabledCommandListAndAppendMemoryCopyCalledInLoopThenMultipleCommandBufferAreUsedAndSuccessIsReturned, IsAtLeastSkl) {
|
||||
HWTEST2_P(L0DebuggerWithBlitterTest, givenUseCsrImmediateSubmissionDisabledCommandListAndAppendMemoryCopyCalledInLoopThenMultipleCommandBufferAreUsedAndSuccessIsReturned, Gen12Plus) {
|
||||
DebugManagerStateRestore restorer;
|
||||
NEO::DebugManager.flags.EnableFlushTaskSubmission.set(false);
|
||||
|
||||
@@ -384,7 +383,7 @@ HWTEST2_F(L0DebuggerWithBlitterTest, givenUseCsrImmediateSubmissionDisabledComma
|
||||
commandList->destroy();
|
||||
}
|
||||
|
||||
HWTEST2_F(L0DebuggerWithBlitterTest, givenDebuggingEnabledWhenInternalCmdQIsUsedThenDebuggerPathsAreNotExecuted, IsAtLeastSkl) {
|
||||
HWTEST2_P(L0DebuggerWithBlitterTest, givenDebuggingEnabledWhenInternalCmdQIsUsedThenDebuggerPathsAreNotExecuted, IsAtLeastSkl) {
|
||||
ze_command_queue_desc_t queueDesc = {};
|
||||
|
||||
std::unique_ptr<MockCommandQueueHw<gfxCoreFamily>, Deleter> commandQueue(new MockCommandQueueHw<gfxCoreFamily>(device, neoDevice->getDefaultEngine().commandStreamReceiver, &queueDesc));
|
||||
@@ -428,7 +427,7 @@ HWTEST2_F(L0DebuggerWithBlitterTest, givenDebuggingEnabledWhenInternalCmdQIsUsed
|
||||
commandList->destroy();
|
||||
}
|
||||
|
||||
HWTEST_F(L0DebuggerWithBlitterTest, givenDebuggingEnabledWhenCommandListIsExecutedOnCopyOnlyCmdQThenKernelDebugCommandsAreNotAdded) {
|
||||
HWTEST_P(L0DebuggerWithBlitterTest, givenDebuggingEnabledWhenCommandListIsExecutedOnCopyOnlyCmdQThenKernelDebugCommandsAreNotAdded) {
|
||||
using MI_LOAD_REGISTER_IMM = typename FamilyType::MI_LOAD_REGISTER_IMM;
|
||||
using STATE_SIP = typename FamilyType::STATE_SIP;
|
||||
|
||||
@@ -508,6 +507,7 @@ HWTEST_F(L0DebuggerWithBlitterTest, givenDebuggingEnabledWhenCommandListIsExecut
|
||||
|
||||
commandQueue->destroy();
|
||||
}
|
||||
INSTANTIATE_TEST_CASE_P(SBAModesForDebugger, L0DebuggerWithBlitterTest, ::testing::Values(0, 1));
|
||||
|
||||
} // namespace ult
|
||||
} // namespace L0
|
||||
|
||||
@@ -19,13 +19,45 @@
|
||||
namespace L0 {
|
||||
namespace ult {
|
||||
|
||||
struct PerContextAddressSpaceFixture : public Test<DeviceFixture> {
|
||||
void SetUp() override {
|
||||
NEO::DebugManager.flags.DebuggerForceSbaTrackingMode.set(0);
|
||||
Test<DeviceFixture>::SetUp();
|
||||
}
|
||||
|
||||
void TearDown() override {
|
||||
Test<DeviceFixture>::TearDown();
|
||||
}
|
||||
|
||||
DebugManagerStateRestore restorer;
|
||||
};
|
||||
|
||||
struct L0DebuggerSimpleParameterizedTest : public ::testing::TestWithParam<int>, DeviceFixture {
|
||||
void SetUp() override {
|
||||
NEO::DebugManager.flags.DebuggerForceSbaTrackingMode.set(GetParam());
|
||||
DeviceFixture::SetUp();
|
||||
}
|
||||
|
||||
void TearDown() override {
|
||||
DeviceFixture::TearDown();
|
||||
}
|
||||
|
||||
DebugManagerStateRestore restorer;
|
||||
};
|
||||
|
||||
using L0DebuggerPerContextAddressSpaceTest = Test<L0DebuggerPerContextAddressSpaceFixture>;
|
||||
|
||||
using L0DebuggerTest = Test<L0DebuggerHwFixture>;
|
||||
|
||||
HWTEST_F(L0DebuggerTest, givenL0DebuggerWhenCreatedThenPerContextSbaTrackingBuffersAreAllocated) {
|
||||
using L0DebuggerParameterizedTests = L0DebuggerHwParameterizedFixture;
|
||||
|
||||
HWTEST_P(L0DebuggerParameterizedTests, givenL0DebuggerWhenCreatedThenPerContextSbaTrackingBuffersAreAllocated) {
|
||||
auto debugger = device->getL0Debugger();
|
||||
ASSERT_NE(nullptr, debugger);
|
||||
|
||||
EXPECT_NE(0u, debugger->getSbaTrackingGpuVa());
|
||||
if (!debugger->getSingleAddressSpaceSbaTracking()) {
|
||||
EXPECT_NE(0u, debugger->getSbaTrackingGpuVa());
|
||||
}
|
||||
std::vector<NEO::GraphicsAllocation *> allocations;
|
||||
|
||||
auto &allEngines = device->getNEODevice()->getMemoryManager()->getRegisteredEngines();
|
||||
@@ -68,11 +100,13 @@ HWTEST_F(L0DebuggerTest, givenCreatedL0DebuggerThenSbaTrackingBuffersContainVali
|
||||
}
|
||||
}
|
||||
|
||||
HWTEST_F(L0DebuggerTest, givenL0DebuggerWhenCreatedThenPerContextSbaTrackingBuffersAreAllocatedWithProperStorageInfo) {
|
||||
HWTEST_P(L0DebuggerParameterizedTests, givenL0DebuggerWhenCreatedThenPerContextSbaTrackingBuffersAreAllocatedWithProperStorageInfo) {
|
||||
auto debugger = device->getL0Debugger();
|
||||
ASSERT_NE(nullptr, debugger);
|
||||
|
||||
EXPECT_NE(0u, debugger->getSbaTrackingGpuVa());
|
||||
if (!debugger->getSingleAddressSpaceSbaTracking()) {
|
||||
EXPECT_NE(0u, debugger->getSbaTrackingGpuVa());
|
||||
}
|
||||
std::vector<NEO::GraphicsAllocation *> allocations;
|
||||
|
||||
for (auto &engine : device->getNEODevice()->getAllEngines()) {
|
||||
@@ -160,8 +194,9 @@ HWTEST_F(L0DebuggerMultiSubDeviceTest, givenMultiSubDevicesWhenSbaTrackingBuffer
|
||||
}
|
||||
|
||||
using NotGen8Or11 = AreNotGfxCores<IGFX_GEN8_CORE, IGFX_GEN11_CORE>;
|
||||
using Gen12Plus = IsAtLeastGfxCore<IGFX_GEN12_CORE>;
|
||||
|
||||
HWTEST2_F(L0DebuggerTest, givenDebuggingEnabledAndRequiredGsbaWhenCommandListIsExecutedThenProgramGsbaWritesToSbaTrackingBuffer, NotGen8Or11) {
|
||||
HWTEST2_F(L0DebuggerPerContextAddressSpaceTest, givenDebuggingEnabledAndRequiredGsbaWhenCommandListIsExecutedThenProgramGsbaWritesToSbaTrackingBuffer, NotGen8Or11) {
|
||||
using MI_STORE_DATA_IMM = typename FamilyType::MI_STORE_DATA_IMM;
|
||||
using STATE_BASE_ADDRESS = typename FamilyType::STATE_BASE_ADDRESS;
|
||||
|
||||
@@ -220,7 +255,7 @@ HWTEST2_F(L0DebuggerTest, givenDebuggingEnabledAndRequiredGsbaWhenCommandListIsE
|
||||
commandQueue->destroy();
|
||||
}
|
||||
|
||||
HWTEST_F(L0DebuggerTest, givenDebuggingEnabledAndDebuggerLogsWhenCommandQueueIsSynchronizedThenSbaAddressesArePrinted) {
|
||||
HWTEST2_F(L0DebuggerTest, givenDebuggingEnabledAndDebuggerLogsWhenCommandQueueIsSynchronizedThenSbaAddressesArePrinted, Gen12Plus) {
|
||||
DebugManagerStateRestore restorer;
|
||||
NEO::DebugManager.flags.DebuggerLogBitmask.set(255);
|
||||
|
||||
@@ -255,7 +290,7 @@ HWTEST_F(L0DebuggerTest, givenDebuggingEnabledAndDebuggerLogsWhenCommandQueueIsS
|
||||
|
||||
using L0DebuggerSimpleTest = Test<DeviceFixture>;
|
||||
|
||||
HWTEST_F(L0DebuggerSimpleTest, givenNullL0DebuggerAndDebuggerLogsWhenCommandQueueIsSynchronizedThenSbaAddressesAreNotPrinted) {
|
||||
HWTEST2_F(L0DebuggerSimpleTest, givenNullL0DebuggerAndDebuggerLogsWhenCommandQueueIsSynchronizedThenSbaAddressesAreNotPrinted, Gen12Plus) {
|
||||
DebugManagerStateRestore restorer;
|
||||
NEO::DebugManager.flags.DebuggerLogBitmask.set(255);
|
||||
|
||||
@@ -286,7 +321,7 @@ HWTEST_F(L0DebuggerSimpleTest, givenNullL0DebuggerAndDebuggerLogsWhenCommandQueu
|
||||
commandQueue->destroy();
|
||||
}
|
||||
|
||||
HWTEST_F(L0DebuggerTest, givenL0DebuggerAndDebuggerLogsDisabledWhenCommandQueueIsSynchronizedThenSbaAddressesAreNotPrinted) {
|
||||
HWTEST2_F(L0DebuggerTest, givenL0DebuggerAndDebuggerLogsDisabledWhenCommandQueueIsSynchronizedThenSbaAddressesAreNotPrinted, Gen12Plus) {
|
||||
DebugManagerStateRestore restorer;
|
||||
NEO::DebugManager.flags.DebuggerLogBitmask.set(0);
|
||||
|
||||
@@ -317,7 +352,7 @@ HWTEST_F(L0DebuggerTest, givenL0DebuggerAndDebuggerLogsDisabledWhenCommandQueueI
|
||||
commandQueue->destroy();
|
||||
}
|
||||
|
||||
HWTEST2_F(L0DebuggerTest, givenDebuggingEnabledWhenNonCopyCommandListIsInititalizedOrResetThenSSHAddressIsTracked, NotGen8Or11) {
|
||||
HWTEST2_F(L0DebuggerTest, givenDebuggingEnabledWhenNonCopyCommandListIsInititalizedOrResetThenSSHAddressIsTracked, Gen12Plus) {
|
||||
using STATE_BASE_ADDRESS = typename FamilyType::STATE_BASE_ADDRESS;
|
||||
|
||||
size_t usedSpaceBefore = 0;
|
||||
@@ -347,7 +382,7 @@ HWTEST2_F(L0DebuggerTest, givenDebuggingEnabledWhenNonCopyCommandListIsInititali
|
||||
commandList->destroy();
|
||||
}
|
||||
|
||||
HWTEST2_F(L0DebuggerTest, givenDebuggingEnabledWhenCommandListIsExecutedThenSbaBufferIsPushedToResidencyContainer, IsAtLeastSkl) {
|
||||
HWTEST2_F(L0DebuggerTest, givenDebuggingEnabledWhenCommandListIsExecutedThenSbaBufferIsPushedToResidencyContainer, Gen12Plus) {
|
||||
ze_command_queue_desc_t queueDesc = {};
|
||||
|
||||
std::unique_ptr<MockCommandQueueHw<gfxCoreFamily>, Deleter> commandQueue(new MockCommandQueueHw<gfxCoreFamily>(device, neoDevice->getDefaultEngine().commandStreamReceiver, &queueDesc));
|
||||
@@ -375,10 +410,10 @@ HWTEST2_F(L0DebuggerTest, givenDebuggingEnabledWhenCommandListIsExecutedThenSbaB
|
||||
commandList->destroy();
|
||||
}
|
||||
|
||||
HWTEST_F(L0DebuggerSimpleTest, givenNonZeroGpuVasWhenProgrammingSbaTrackingThenCorrectCmdsAreAddedToStream) {
|
||||
HWTEST_F(PerContextAddressSpaceFixture, givenNonZeroGpuVasWhenProgrammingSbaTrackingThenCorrectCmdsAreAddedToStream) {
|
||||
using MI_STORE_DATA_IMM = typename FamilyType::MI_STORE_DATA_IMM;
|
||||
auto debugger = std::make_unique<MockDebuggerL0Hw<FamilyType>>(neoDevice);
|
||||
|
||||
debugger->singleAddressSpaceSbaTracking = 0;
|
||||
debugger->sbaTrackingGpuVa.address = 0x45670000;
|
||||
auto expectedGpuVa = debugger->sbaTrackingGpuVa.address + offsetof(SbaTrackedAddresses, GeneralStateBaseAddress);
|
||||
|
||||
@@ -461,7 +496,7 @@ HWTEST_F(L0DebuggerSimpleTest, givenNonZeroGpuVasWhenProgrammingSbaTrackingThenC
|
||||
EXPECT_TRUE(cmdSdi->getStoreQword());
|
||||
}
|
||||
|
||||
HWTEST_F(L0DebuggerSimpleTest, givenCanonizedGpuVasWhenProgrammingSbaTrackingThenNonCanonicalAddressesAreStored) {
|
||||
HWTEST_F(PerContextAddressSpaceFixture, givenCanonizedGpuVasWhenProgrammingSbaTrackingThenNonCanonicalAddressesAreStored) {
|
||||
using MI_STORE_DATA_IMM = typename FamilyType::MI_STORE_DATA_IMM;
|
||||
auto debugger = std::make_unique<MockDebuggerL0Hw<FamilyType>>(neoDevice);
|
||||
|
||||
@@ -547,7 +582,7 @@ HWTEST_F(L0DebuggerSimpleTest, givenCanonizedGpuVasWhenProgrammingSbaTrackingThe
|
||||
EXPECT_TRUE(cmdSdi->getStoreQword());
|
||||
}
|
||||
|
||||
HWTEST_F(L0DebuggerSimpleTest, givenZeroGpuVasWhenProgrammingSbaTrackingThenStreamIsNotUsed) {
|
||||
HWTEST2_P(L0DebuggerSimpleParameterizedTest, givenZeroGpuVasWhenProgrammingSbaTrackingThenStreamIsNotUsed, Gen12Plus) {
|
||||
using MI_STORE_DATA_IMM = typename FamilyType::MI_STORE_DATA_IMM;
|
||||
auto debugger = std::make_unique<MockDebuggerL0Hw<FamilyType>>(neoDevice);
|
||||
|
||||
@@ -567,7 +602,7 @@ HWTEST_F(L0DebuggerSimpleTest, givenZeroGpuVasWhenProgrammingSbaTrackingThenStre
|
||||
EXPECT_EQ(0u, cmdStream.getUsed());
|
||||
}
|
||||
|
||||
HWTEST_F(L0DebuggerSimpleTest, givenNotChangedSurfaceStateWhenCapturingSBAThenNoTrackingCmdsAreAdded) {
|
||||
HWTEST2_P(L0DebuggerSimpleParameterizedTest, givenNotChangedSurfaceStateWhenCapturingSBAThenNoTrackingCmdsAreAdded, Gen12Plus) {
|
||||
auto debugger = std::make_unique<MockDebuggerL0Hw<FamilyType>>(neoDevice);
|
||||
|
||||
debugger->sbaTrackingGpuVa.address = 0x45670000;
|
||||
@@ -590,7 +625,7 @@ HWTEST_F(L0DebuggerSimpleTest, givenNotChangedSurfaceStateWhenCapturingSBAThenNo
|
||||
EXPECT_EQ(sizeUsed, sizeUsed2);
|
||||
}
|
||||
|
||||
HWTEST_F(L0DebuggerSimpleTest, givenChangedBaseAddressesWhenCapturingSBAThenNoTrackingCmdsAreAdded) {
|
||||
HWTEST2_P(L0DebuggerSimpleParameterizedTest, givenChangedBaseAddressesWhenCapturingSBAThenTrackingCmdsAreAdded, Gen12Plus) {
|
||||
auto debugger = std::make_unique<MockDebuggerL0Hw<FamilyType>>(neoDevice);
|
||||
|
||||
debugger->sbaTrackingGpuVa.address = 0x45670000;
|
||||
@@ -634,5 +669,8 @@ HWTEST_F(L0DebuggerSimpleTest, givenChangedBaseAddressesWhenCapturingSBAThenNoTr
|
||||
}
|
||||
}
|
||||
|
||||
INSTANTIATE_TEST_CASE_P(SBAModesForDebugger, L0DebuggerParameterizedTests, ::testing::Values(0, 1));
|
||||
INSTANTIATE_TEST_CASE_P(SBAModesForDebugger, L0DebuggerSimpleParameterizedTest, ::testing::Values(0, 1));
|
||||
|
||||
} // namespace ult
|
||||
} // namespace L0
|
||||
|
||||
@@ -77,5 +77,9 @@ TEST_F(L0DebuggerWindowsTest, givenProgramDebuggingEnabledWhenDriverHandleIsCrea
|
||||
EXPECT_EQ(nullptr, neoDevice->getSourceLevelDebugger());
|
||||
}
|
||||
|
||||
TEST_F(L0DebuggerWindowsTest, givenWindowsOSWhenL0DebuggerIsCreatedAddressModeIsSingleSpace) {
|
||||
EXPECT_TRUE(device->getL0Debugger()->getSingleAddressSpaceSbaTracking());
|
||||
}
|
||||
|
||||
} // namespace ult
|
||||
} // namespace L0
|
||||
|
||||
Reference in New Issue
Block a user