@@ -517,17 +517,24 @@ HWTEST_F(L0DebuggerSimpleTest, givenNonZeroGpuVasWhenProgrammingSbaTrackingThenC
517517 NEO::LinearStream cmdStream (buffer.begin (), buffer.size ());
518518 uint64_t gsba = 0x60000 ;
519519 uint64_t ssba = 0x1234567000 ;
520+ uint64_t iba = 0xfff80000 ;
521+ uint64_t ioba = 0x8100000 ;
522+ uint64_t dsba = 0xffff0000aaaa0000 ;
520523
521524 NEO::Debugger::SbaAddresses sbaAddresses = {};
522525 sbaAddresses.GeneralStateBaseAddress = gsba;
523526 sbaAddresses.SurfaceStateBaseAddress = ssba;
527+ sbaAddresses.InstructionBaseAddress = iba;
528+ sbaAddresses.IndirectObjectBaseAddress = ioba;
529+ sbaAddresses.DynamicStateBaseAddress = dsba;
530+ sbaAddresses.BindlessSurfaceStateBaseAddress = ssba;
524531
525532 debugger->programSbaTrackingCommands (cmdStream, sbaAddresses);
526533
527534 GenCmdList cmdList;
528535 ASSERT_TRUE (FamilyType::PARSE::parseCommandBuffer (cmdList, cmdStream.getCpuBase (), cmdStream.getUsed ()));
529536
530- EXPECT_EQ (2 * sizeof (MI_STORE_DATA_IMM), cmdStream.getUsed ());
537+ EXPECT_EQ (6 * sizeof (MI_STORE_DATA_IMM), cmdStream.getUsed ());
531538
532539 auto sdiItor = find<MI_STORE_DATA_IMM *>(cmdList.begin (), cmdList.end ());
533540 ASSERT_NE (cmdList.end (), sdiItor);
@@ -546,6 +553,42 @@ HWTEST_F(L0DebuggerSimpleTest, givenNonZeroGpuVasWhenProgrammingSbaTrackingThenC
546553 EXPECT_EQ (static_cast <uint32_t >(ssba >> 32 ), cmdSdi->getDataDword1 ());
547554 EXPECT_EQ (expectedGpuVa, cmdSdi->getAddress ());
548555 EXPECT_TRUE (cmdSdi->getStoreQword ());
556+
557+ sdiItor++;
558+ cmdSdi = genCmdCast<MI_STORE_DATA_IMM *>(*sdiItor);
559+
560+ expectedGpuVa = debugger->sbaTrackingGpuVa .address + offsetof (SbaTrackedAddresses, DynamicStateBaseAddress);
561+ EXPECT_EQ (static_cast <uint32_t >(dsba & 0x0000FFFFFFFFULL ), cmdSdi->getDataDword0 ());
562+ EXPECT_EQ (static_cast <uint32_t >(dsba >> 32 ), cmdSdi->getDataDword1 ());
563+ EXPECT_EQ (expectedGpuVa, cmdSdi->getAddress ());
564+ EXPECT_TRUE (cmdSdi->getStoreQword ());
565+
566+ sdiItor++;
567+ cmdSdi = genCmdCast<MI_STORE_DATA_IMM *>(*sdiItor);
568+
569+ expectedGpuVa = debugger->sbaTrackingGpuVa .address + offsetof (SbaTrackedAddresses, IndirectObjectBaseAddress);
570+ EXPECT_EQ (static_cast <uint32_t >(ioba & 0x0000FFFFFFFFULL ), cmdSdi->getDataDword0 ());
571+ EXPECT_EQ (static_cast <uint32_t >(ioba >> 32 ), cmdSdi->getDataDword1 ());
572+ EXPECT_EQ (expectedGpuVa, cmdSdi->getAddress ());
573+ EXPECT_TRUE (cmdSdi->getStoreQword ());
574+
575+ sdiItor++;
576+ cmdSdi = genCmdCast<MI_STORE_DATA_IMM *>(*sdiItor);
577+
578+ expectedGpuVa = debugger->sbaTrackingGpuVa .address + offsetof (SbaTrackedAddresses, InstructionBaseAddress);
579+ EXPECT_EQ (static_cast <uint32_t >(iba & 0x0000FFFFFFFFULL ), cmdSdi->getDataDword0 ());
580+ EXPECT_EQ (static_cast <uint32_t >(iba >> 32 ), cmdSdi->getDataDword1 ());
581+ EXPECT_EQ (expectedGpuVa, cmdSdi->getAddress ());
582+ EXPECT_TRUE (cmdSdi->getStoreQword ());
583+
584+ sdiItor++;
585+ cmdSdi = genCmdCast<MI_STORE_DATA_IMM *>(*sdiItor);
586+
587+ expectedGpuVa = debugger->sbaTrackingGpuVa .address + offsetof (SbaTrackedAddresses, BindlessSurfaceStateBaseAddress);
588+ EXPECT_EQ (static_cast <uint32_t >(ssba & 0x0000FFFFFFFFULL ), cmdSdi->getDataDword0 ());
589+ EXPECT_EQ (static_cast <uint32_t >(ssba >> 32 ), cmdSdi->getDataDword1 ());
590+ EXPECT_EQ (expectedGpuVa, cmdSdi->getAddress ());
591+ EXPECT_TRUE (cmdSdi->getStoreQword ());
549592}
550593
551594HWTEST_F (L0DebuggerSimpleTest, givenZeroGpuVasWhenProgrammingSbaTrackingThenStreamIsNotUsed) {
0 commit comments