Skip to content

Commit 6263b95

Browse files
feature: Enabling Blitter offset for Remap
Related-To: NEO-11934 Signed-off-by: Andrzej Koska <andrzej.koska@intel.com>
1 parent 39aa702 commit 6263b95

File tree

9 files changed

+118
-33
lines changed

9 files changed

+118
-33
lines changed

level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_1.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2960,7 +2960,7 @@ HWTEST_F(CommandListCreate, givenCommandListWhenAppendingBarrierWithIncorrectWai
29602960
EXPECT_EQ(returnValue, ZE_RESULT_ERROR_INVALID_ARGUMENT);
29612961
}
29622962

2963-
HWTEST2_F(CommandListCreate, givenCopyCommandListWhenProfilingBeforeCommandForCopyOnlyThenCommandsHaveCorrectEventOffsets, IsAtLeastSkl) {
2963+
HWTEST2_F(CommandListCreate, givenCopyCommandListWhenProfilingBeforeCommandForCopyOnlyThenCommandsHaveCorrectEventOffsets, IsAtLeastGen12lp) {
29642964
using GfxFamily = typename NEO::GfxFamilyMapper<gfxCoreFamily>::GfxFamily;
29652965
using MI_STORE_REGISTER_MEM = typename GfxFamily::MI_STORE_REGISTER_MEM;
29662966
auto commandList = std::make_unique<WhiteBox<::L0::CommandListCoreFamily<gfxCoreFamily>>>();
@@ -2990,15 +2990,15 @@ HWTEST2_F(CommandListCreate, givenCopyCommandListWhenProfilingBeforeCommandForCo
29902990
auto itor = find<MI_STORE_REGISTER_MEM *>(cmdList.begin(), cmdList.end());
29912991
EXPECT_NE(cmdList.end(), itor);
29922992
auto cmd = genCmdCast<MI_STORE_REGISTER_MEM *>(*itor);
2993-
EXPECT_EQ(cmd->getRegisterAddress(), RegisterOffsets::globalTimestampLdw);
2993+
EXPECT_EQ(cmd->getRegisterAddress(), RegisterOffsets::bcs0Base + RegisterOffsets::globalTimestampLdw);
29942994
EXPECT_EQ(cmd->getMemoryAddress(), ptrOffset(baseAddr, globalOffset));
29952995
EXPECT_NE(cmdList.end(), ++itor);
29962996
cmd = genCmdCast<MI_STORE_REGISTER_MEM *>(*itor);
2997-
EXPECT_EQ(cmd->getRegisterAddress(), RegisterOffsets::gpThreadTimeRegAddressOffsetLow);
2997+
EXPECT_EQ(cmd->getRegisterAddress(), RegisterOffsets::bcs0Base + RegisterOffsets::gpThreadTimeRegAddressOffsetLow);
29982998
EXPECT_EQ(cmd->getMemoryAddress(), ptrOffset(baseAddr, contextOffset));
29992999
}
30003000

3001-
HWTEST2_F(CommandListCreate, givenCopyCommandListWhenProfilingAfterCommandForCopyOnlyThenCommandsHaveCorrectEventOffsets, IsAtLeastSkl) {
3001+
HWTEST2_F(CommandListCreate, givenCopyCommandListWhenProfilingAfterCommandForCopyOnlyThenCommandsHaveCorrectEventOffsets, IsAtLeastGen12lp) {
30023002
using GfxFamily = typename NEO::GfxFamilyMapper<gfxCoreFamily>::GfxFamily;
30033003
using MI_STORE_REGISTER_MEM = typename GfxFamily::MI_STORE_REGISTER_MEM;
30043004
auto commandList = std::make_unique<WhiteBox<::L0::CommandListCoreFamily<gfxCoreFamily>>>();
@@ -3025,11 +3025,11 @@ HWTEST2_F(CommandListCreate, givenCopyCommandListWhenProfilingAfterCommandForCop
30253025
auto itor = find<MI_STORE_REGISTER_MEM *>(cmdList.begin(), cmdList.end());
30263026
EXPECT_NE(cmdList.end(), itor);
30273027
auto cmd = genCmdCast<MI_STORE_REGISTER_MEM *>(*itor);
3028-
EXPECT_EQ(cmd->getRegisterAddress(), RegisterOffsets::globalTimestampLdw);
3028+
EXPECT_EQ(cmd->getRegisterAddress(), RegisterOffsets::bcs0Base + RegisterOffsets::globalTimestampLdw);
30293029
EXPECT_EQ(cmd->getMemoryAddress(), ptrOffset(baseAddr, globalOffset));
30303030
EXPECT_NE(cmdList.end(), ++itor);
30313031
cmd = genCmdCast<MI_STORE_REGISTER_MEM *>(*itor);
3032-
EXPECT_EQ(cmd->getRegisterAddress(), RegisterOffsets::gpThreadTimeRegAddressOffsetLow);
3032+
EXPECT_EQ(cmd->getRegisterAddress(), RegisterOffsets::bcs0Base + RegisterOffsets::gpThreadTimeRegAddressOffsetLow);
30333033
EXPECT_EQ(cmd->getMemoryAddress(), ptrOffset(baseAddr, contextOffset));
30343034
}
30353035

level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_memory.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -679,7 +679,7 @@ HWTEST2_F(AppendMemoryCopy, givenCommandListAndHostPointersWhenMemoryCopyCalledT
679679
EXPECT_EQ(expectedDcFlushPipeControl, dcFlushPipeControl);
680680
}
681681

682-
HWTEST2_F(AppendMemoryCopy, givenCopyCommandListWhenTimestampPassedToMemoryCopyThenAppendProfilingCalledOnceBeforeAndAfterCommand, IsAtLeastSkl) {
682+
HWTEST2_F(AppendMemoryCopy, givenCopyCommandListWhenTimestampPassedToMemoryCopyThenAppendProfilingCalledOnceBeforeAndAfterCommand, IsAtLeastGen12lp) {
683683
using GfxFamily = typename NEO::GfxFamilyMapper<gfxCoreFamily>::GfxFamily;
684684
using MI_STORE_REGISTER_MEM = typename GfxFamily::MI_STORE_REGISTER_MEM;
685685
using MI_FLUSH_DW = typename GfxFamily::MI_FLUSH_DW;
@@ -712,23 +712,23 @@ HWTEST2_F(AppendMemoryCopy, givenCopyCommandListWhenTimestampPassedToMemoryCopyT
712712
auto itor = find<MI_STORE_REGISTER_MEM *>(cmdList.begin(), cmdList.end());
713713
EXPECT_NE(cmdList.end(), itor);
714714
auto cmd = genCmdCast<MI_STORE_REGISTER_MEM *>(*itor);
715-
EXPECT_EQ(cmd->getRegisterAddress(), RegisterOffsets::globalTimestampLdw);
715+
EXPECT_EQ(cmd->getRegisterAddress(), RegisterOffsets::bcs0Base + RegisterOffsets::globalTimestampLdw);
716716
itor++;
717717
EXPECT_NE(cmdList.end(), itor);
718718
cmd = genCmdCast<MI_STORE_REGISTER_MEM *>(*itor);
719-
EXPECT_EQ(cmd->getRegisterAddress(), RegisterOffsets::gpThreadTimeRegAddressOffsetLow);
719+
EXPECT_EQ(cmd->getRegisterAddress(), RegisterOffsets::bcs0Base + RegisterOffsets::gpThreadTimeRegAddressOffsetLow);
720720

721721
itor = find<MI_FLUSH_DW *>(itor, cmdList.end());
722722
EXPECT_NE(cmdList.end(), itor);
723723

724724
itor = find<MI_STORE_REGISTER_MEM *>(itor, cmdList.end());
725725
EXPECT_NE(cmdList.end(), itor);
726726
cmd = genCmdCast<MI_STORE_REGISTER_MEM *>(*itor);
727-
EXPECT_EQ(cmd->getRegisterAddress(), RegisterOffsets::globalTimestampLdw);
727+
EXPECT_EQ(cmd->getRegisterAddress(), RegisterOffsets::bcs0Base + RegisterOffsets::globalTimestampLdw);
728728
itor++;
729729
EXPECT_NE(cmdList.end(), itor);
730730
cmd = genCmdCast<MI_STORE_REGISTER_MEM *>(*itor);
731-
EXPECT_EQ(cmd->getRegisterAddress(), RegisterOffsets::gpThreadTimeRegAddressOffsetLow);
731+
EXPECT_EQ(cmd->getRegisterAddress(), RegisterOffsets::bcs0Base + RegisterOffsets::gpThreadTimeRegAddressOffsetLow);
732732
itor++;
733733
EXPECT_EQ(cmdList.end(), itor);
734734
}

level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_blit.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ HWTEST2_F(AppendMemoryCopy, givenCopyOnlyCommandListThenDcFlushIsNotAddedAfterBl
221221
EXPECT_EQ(cmd->getSourceBaseAddress(), ptrOffset(srcPtr, srcOffset));
222222
}
223223

224-
HWTEST2_F(AppendMemoryCopy, givenCopyCommandListWhenTimestampPassedToMemoryCopyRegionBlitThenTimeStampRegistersAreAdded, IsAtLeastSkl) {
224+
HWTEST2_F(AppendMemoryCopy, givenCopyCommandListWhenTimestampPassedToMemoryCopyRegionBlitThenTimeStampRegistersAreAdded, IsAtLeastGen12lp) {
225225
using GfxFamily = typename NEO::GfxFamilyMapper<gfxCoreFamily>::GfxFamily;
226226
using MI_STORE_REGISTER_MEM = typename GfxFamily::MI_STORE_REGISTER_MEM;
227227
auto commandList = std::make_unique<WhiteBox<::L0::CommandListCoreFamily<gfxCoreFamily>>>();
@@ -262,29 +262,29 @@ HWTEST2_F(AppendMemoryCopy, givenCopyCommandListWhenTimestampPassedToMemoryCopyR
262262
auto itor = find<MI_STORE_REGISTER_MEM *>(cmdList.begin(), cmdList.end());
263263
EXPECT_NE(cmdList.end(), itor);
264264
auto cmd = genCmdCast<MI_STORE_REGISTER_MEM *>(*itor);
265-
EXPECT_EQ(cmd->getRegisterAddress(), RegisterOffsets::globalTimestampLdw);
265+
EXPECT_EQ(cmd->getRegisterAddress(), RegisterOffsets::bcs0Base + RegisterOffsets::globalTimestampLdw);
266266
EXPECT_EQ(cmd->getMemoryAddress(), ptrOffset(baseAddr, globalStartOffset));
267267
itor++;
268268
EXPECT_NE(cmdList.end(), itor);
269269
cmd = genCmdCast<MI_STORE_REGISTER_MEM *>(*itor);
270-
EXPECT_EQ(cmd->getRegisterAddress(), RegisterOffsets::gpThreadTimeRegAddressOffsetLow);
270+
EXPECT_EQ(cmd->getRegisterAddress(), RegisterOffsets::bcs0Base + RegisterOffsets::gpThreadTimeRegAddressOffsetLow);
271271
EXPECT_EQ(cmd->getMemoryAddress(), ptrOffset(baseAddr, contextStartOffset));
272272
itor++;
273273
itor = find<MI_STORE_REGISTER_MEM *>(itor, cmdList.end());
274274
EXPECT_NE(cmdList.end(), itor);
275275
cmd = genCmdCast<MI_STORE_REGISTER_MEM *>(*itor);
276-
EXPECT_EQ(cmd->getRegisterAddress(), RegisterOffsets::globalTimestampLdw);
276+
EXPECT_EQ(cmd->getRegisterAddress(), RegisterOffsets::bcs0Base + RegisterOffsets::globalTimestampLdw);
277277
EXPECT_EQ(cmd->getMemoryAddress(), ptrOffset(baseAddr, globalEndOffset));
278278
itor++;
279279
EXPECT_NE(cmdList.end(), itor);
280280
cmd = genCmdCast<MI_STORE_REGISTER_MEM *>(*itor);
281-
EXPECT_EQ(cmd->getRegisterAddress(), RegisterOffsets::gpThreadTimeRegAddressOffsetLow);
281+
EXPECT_EQ(cmd->getRegisterAddress(), RegisterOffsets::bcs0Base + RegisterOffsets::gpThreadTimeRegAddressOffsetLow);
282282
EXPECT_EQ(cmd->getMemoryAddress(), ptrOffset(baseAddr, contextEndOffset));
283283
itor++;
284284
EXPECT_EQ(cmdList.end(), itor);
285285
}
286286

287-
HWTEST2_F(AppendMemoryCopy, givenCopyCommandListWhenTimestampPassedToImageCopyBlitThenTimeStampRegistersAreAdded, IsAtLeastSkl) {
287+
HWTEST2_F(AppendMemoryCopy, givenCopyCommandListWhenTimestampPassedToImageCopyBlitThenTimeStampRegistersAreAdded, IsAtLeastGen12lp) {
288288
using GfxFamily = typename NEO::GfxFamilyMapper<gfxCoreFamily>::GfxFamily;
289289
using MI_STORE_REGISTER_MEM = typename GfxFamily::MI_STORE_REGISTER_MEM;
290290
auto commandList = std::make_unique<WhiteBox<::L0::CommandListCoreFamily<gfxCoreFamily>>>();
@@ -314,7 +314,7 @@ HWTEST2_F(AppendMemoryCopy, givenCopyCommandListWhenTimestampPassedToImageCopyBl
314314
auto itor = find<MI_STORE_REGISTER_MEM *>(cmdList.begin(), cmdList.end());
315315
EXPECT_NE(cmdList.end(), itor);
316316
auto cmd = genCmdCast<MI_STORE_REGISTER_MEM *>(*itor);
317-
EXPECT_EQ(cmd->getRegisterAddress(), RegisterOffsets::globalTimestampLdw);
317+
EXPECT_EQ(cmd->getRegisterAddress(), RegisterOffsets::bcs0Base + RegisterOffsets::globalTimestampLdw);
318318
}
319319

320320
using ImageSupport = IsWithinProducts<IGFX_SKYLAKE, IGFX_TIGERLAKE_LP>;

level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_xe2_and_later.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@
2323
namespace L0 {
2424
namespace ult {
2525

26-
HWTEST_EXCLUDE_PRODUCT(AppendMemoryCopy, givenCopyCommandListWhenTimestampPassedToMemoryCopyRegionBlitThenTimeStampRegistersAreAdded_IsAtLeastSkl, IGFX_XE2_HPG_CORE);
27-
HWTEST_EXCLUDE_PRODUCT(AppendMemoryCopy, givenCopyCommandListWhenTimestampPassedToMemoryCopyThenAppendProfilingCalledOnceBeforeAndAfterCommand_IsAtLeastSkl, IGFX_XE2_HPG_CORE);
26+
HWTEST_EXCLUDE_PRODUCT(AppendMemoryCopy, givenCopyCommandListWhenTimestampPassedToMemoryCopyRegionBlitThenTimeStampRegistersAreAdded_IsAtLeastGen12lp, IGFX_XE2_HPG_CORE);
27+
HWTEST_EXCLUDE_PRODUCT(AppendMemoryCopy, givenCopyCommandListWhenTimestampPassedToMemoryCopyThenAppendProfilingCalledOnceBeforeAndAfterCommand_IsAtLeastGen12lp, IGFX_XE2_HPG_CORE);
2828

2929
using Platforms = IsAtLeastXe2HpgCore;
3030

opencl/test/unit_test/command_stream/command_stream_receiver_hw_1_tests.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1068,12 +1068,12 @@ HWTEST2_F(RelaxedOrderingBcsTests, givenDependenciesWhenFlushingThenProgramCorre
10681068
EXPECT_TRUE(csr.latestFlushedBatchBuffer.hasRelaxedOrderingDependencies);
10691069

10701070
auto lrrCmd = reinterpret_cast<MI_LOAD_REGISTER_REG *>(ptrOffset(csr.commandStream.getCpuBase(), cmdsOffset));
1071-
EXPECT_EQ(lrrCmd->getSourceRegisterAddress(), RegisterOffsets::csGprR4);
1072-
EXPECT_EQ(lrrCmd->getDestinationRegisterAddress(), RegisterOffsets::csGprR0);
1071+
EXPECT_EQ(lrrCmd->getSourceRegisterAddress(), RegisterOffsets::bcs0Base + RegisterOffsets::csGprR4);
1072+
EXPECT_EQ(lrrCmd->getDestinationRegisterAddress(), RegisterOffsets::bcs0Base + RegisterOffsets::csGprR0);
10731073

10741074
lrrCmd++;
1075-
EXPECT_EQ(lrrCmd->getSourceRegisterAddress(), RegisterOffsets::csGprR4 + 4);
1076-
EXPECT_EQ(lrrCmd->getDestinationRegisterAddress(), RegisterOffsets::csGprR0 + 4);
1075+
EXPECT_EQ(lrrCmd->getSourceRegisterAddress(), RegisterOffsets::bcs0Base + RegisterOffsets::csGprR4 + 4);
1076+
EXPECT_EQ(lrrCmd->getDestinationRegisterAddress(), RegisterOffsets::bcs0Base + RegisterOffsets::csGprR0 + 4);
10771077

10781078
auto eventNode = timestamp.peekNodes()[0];
10791079
auto compareAddress = eventNode->getGpuAddress() + eventNode->getContextEndOffset();

opencl/test/unit_test/xe2_hpg_core/command_stream_receiver_hw_tests_xe2_hpg_core.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ XE2_HPG_CORETEST_F(CommandStreamReceiverXe2HpgCoreTests, givenProfilingEnabledWh
102102

103103
auto lriCmd = genCmdCast<MI_STORE_REGISTER_MEM *>(*cmdIterator);
104104

105-
EXPECT_EQ(expectRegister, lriCmd->getRegisterAddress());
105+
EXPECT_EQ(expectRegister + RegisterOffsets::bcs0Base, lriCmd->getRegisterAddress());
106106
EXPECT_EQ(expectedAddress, lriCmd->getMemoryAddress());
107107
};
108108

shared/source/command_container/command_encoder.inl

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -378,6 +378,9 @@ void EncodeSetMMIO<Family>::encodeMEM(LinearStream &cmdStream, uint32_t offset,
378378
cmd.setRegisterAddress(offset);
379379
cmd.setMemoryAddress(address);
380380
remapOffset(&cmd);
381+
if (isBcs) {
382+
cmd.setRegisterAddress(offset + RegisterOffsets::bcs0Base);
383+
}
381384

382385
auto buffer = cmdStream.getSpaceForCmd<MI_LOAD_REGISTER_MEM>();
383386
*buffer = cmd;
@@ -389,6 +392,10 @@ void EncodeSetMMIO<Family>::encodeREG(LinearStream &cmdStream, uint32_t dstOffse
389392
cmd.setSourceRegisterAddress(srcOffset);
390393
cmd.setDestinationRegisterAddress(dstOffset);
391394
remapOffset(&cmd);
395+
if (isBcs) {
396+
cmd.setSourceRegisterAddress(srcOffset + RegisterOffsets::bcs0Base);
397+
cmd.setDestinationRegisterAddress(dstOffset + RegisterOffsets::bcs0Base);
398+
}
392399
auto buffer = cmdStream.getSpaceForCmd<MI_LOAD_REGISTER_REG>();
393400
*buffer = cmd;
394401
}
@@ -408,6 +415,9 @@ inline void EncodeStoreMMIO<Family>::encode(MI_STORE_REGISTER_MEM *cmdBuffer, ui
408415
cmd.setRegisterAddress(offset);
409416
cmd.setMemoryAddress(address);
410417
appendFlags(&cmd, workloadPartition);
418+
if (isBcs) {
419+
cmd.setRegisterAddress(offset + RegisterOffsets::bcs0Base);
420+
}
411421
*cmdBuffer = cmd;
412422
}
413423

shared/test/unit_test/command_container/command_encoder_tests.cpp

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -680,6 +680,81 @@ HWTEST2_F(CommandEncoderTests, whenUsingDefaultFilteringAndAppendSamplerStatePar
680680
EXPECT_EQ(SAMPLER_STATE::LOW_QUALITY_FILTER_DISABLE, state.getLowQualityFilter());
681681
}
682682

683+
HWTEST2_F(CommandEncoderTests, givenMiStoreRegisterMemWhenEncodeAndIsBcsThenRegisterOffsetsBcs0Base, IsAtLeastGen12lp) {
684+
using MI_STORE_REGISTER_MEM = typename FamilyType::MI_STORE_REGISTER_MEM;
685+
686+
uint64_t baseAddr = 0x10;
687+
uint32_t offset = 0x2000;
688+
689+
constexpr size_t bufferSize = 2100;
690+
uint8_t buffer[bufferSize];
691+
LinearStream cmdStream(buffer, bufferSize);
692+
auto buf = cmdStream.getSpaceForCmd<MI_STORE_REGISTER_MEM>();
693+
694+
bool isBcs = true;
695+
EncodeStoreMMIO<FamilyType>::encode(buf, offset, baseAddr, true, isBcs);
696+
auto storeRegMem = genCmdCast<MI_STORE_REGISTER_MEM *>(buffer);
697+
ASSERT_NE(nullptr, storeRegMem);
698+
EXPECT_EQ(storeRegMem->getRegisterAddress(), RegisterOffsets::bcs0Base + offset);
699+
700+
isBcs = false;
701+
EncodeStoreMMIO<FamilyType>::encode(buf, offset, baseAddr, true, isBcs);
702+
storeRegMem = genCmdCast<MI_STORE_REGISTER_MEM *>(buffer);
703+
ASSERT_NE(nullptr, storeRegMem);
704+
EXPECT_EQ(storeRegMem->getRegisterAddress(), offset);
705+
}
706+
707+
HWTEST2_F(CommandEncoderTests, givenMiLoadRegisterMemWhenEncodememAndIsBcsThenRegisterOffsetsBcs0Base, IsAtLeastGen12lp) {
708+
using MI_LOAD_REGISTER_MEM = typename FamilyType::MI_LOAD_REGISTER_MEM;
709+
710+
uint64_t baseAddr = 0x10;
711+
uint32_t offset = 0x2000;
712+
713+
constexpr size_t bufferSize = 2100;
714+
uint8_t buffer[bufferSize];
715+
LinearStream cmdStream(buffer, bufferSize);
716+
uint8_t *ptr = buffer;
717+
bool isBcs = true;
718+
719+
EncodeSetMMIO<FamilyType>::encodeMEM(cmdStream, offset, baseAddr, isBcs);
720+
auto loadRegMem = genCmdCast<MI_LOAD_REGISTER_MEM *>(ptr);
721+
ASSERT_NE(nullptr, loadRegMem);
722+
EXPECT_EQ(loadRegMem->getRegisterAddress(), RegisterOffsets::bcs0Base + offset);
723+
724+
isBcs = false;
725+
ptr += sizeof(MI_LOAD_REGISTER_MEM);
726+
EncodeSetMMIO<FamilyType>::encodeMEM(cmdStream, offset, baseAddr, isBcs);
727+
loadRegMem = genCmdCast<MI_LOAD_REGISTER_MEM *>(ptr);
728+
ASSERT_NE(nullptr, loadRegMem);
729+
EXPECT_EQ(loadRegMem->getRegisterAddress(), offset);
730+
}
731+
732+
HWTEST2_F(CommandEncoderTests, givenMiLoadRegisterRegwhenencoderegAndIsBcsThenRegisterOffsetsBcs0Base, IsAtLeastGen12lp) {
733+
using MI_LOAD_REGISTER_REG = typename FamilyType::MI_LOAD_REGISTER_REG;
734+
735+
uint32_t srcOffset = 0x2000;
736+
uint32_t dstOffset = 0x2004;
737+
738+
constexpr size_t bufferSize = 2100;
739+
uint8_t buffer[bufferSize];
740+
LinearStream cmdStream(buffer, bufferSize);
741+
uint8_t *ptr = buffer;
742+
bool isBcs = true;
743+
744+
EncodeSetMMIO<FamilyType>::encodeREG(cmdStream, dstOffset, srcOffset, isBcs);
745+
auto storeRegReg = genCmdCast<MI_LOAD_REGISTER_REG *>(buffer);
746+
ASSERT_NE(nullptr, storeRegReg);
747+
EXPECT_EQ(storeRegReg->getSourceRegisterAddress(), RegisterOffsets::bcs0Base + srcOffset);
748+
EXPECT_EQ(storeRegReg->getDestinationRegisterAddress(), RegisterOffsets::bcs0Base + dstOffset);
749+
750+
isBcs = false;
751+
ptr += sizeof(MI_LOAD_REGISTER_REG);
752+
EncodeSetMMIO<FamilyType>::encodeREG(cmdStream, dstOffset, srcOffset, isBcs);
753+
storeRegReg = genCmdCast<MI_LOAD_REGISTER_REG *>(ptr);
754+
EXPECT_EQ(storeRegReg->getSourceRegisterAddress(), srcOffset);
755+
EXPECT_EQ(storeRegReg->getDestinationRegisterAddress(), dstOffset);
756+
}
757+
683758
HWTEST2_F(CommandEncoderTests, whenForcingLowQualityFilteringAndAppendSamplerStateParamsThenEnableLowQualityFilter, IsAtLeastGen12lp) {
684759

685760
DebugManagerStateRestore dbgRestore;

shared/test/unit_test/direct_submission/direct_submission_tests_2.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2211,12 +2211,12 @@ HWTEST2_F(DirectSubmissionRelaxedOrderingTests, givenBcsRelaxedOrderingEnabledWh
22112211
auto lrrCmdIt = find<MI_LOAD_REGISTER_REG *>(hwParser.cmdList.begin(), hwParser.cmdList.end());
22122212
auto lrrCmd = genCmdCast<MI_LOAD_REGISTER_REG *>(*lrrCmdIt);
22132213

2214-
EXPECT_EQ(lrrCmd->getSourceRegisterAddress(), RegisterOffsets::csGprR3);
2215-
EXPECT_EQ(lrrCmd->getDestinationRegisterAddress(), RegisterOffsets::csGprR0);
2214+
EXPECT_EQ(lrrCmd->getSourceRegisterAddress(), RegisterOffsets::bcs0Base + RegisterOffsets::csGprR3);
2215+
EXPECT_EQ(lrrCmd->getDestinationRegisterAddress(), RegisterOffsets::bcs0Base + RegisterOffsets::csGprR0);
22162216

22172217
lrrCmd++;
2218-
EXPECT_EQ(lrrCmd->getSourceRegisterAddress(), RegisterOffsets::csGprR3 + 4);
2219-
EXPECT_EQ(lrrCmd->getDestinationRegisterAddress(), RegisterOffsets::csGprR0 + 4);
2218+
EXPECT_EQ(lrrCmd->getSourceRegisterAddress(), RegisterOffsets::bcs0Base + RegisterOffsets::csGprR3 + 4);
2219+
EXPECT_EQ(lrrCmd->getDestinationRegisterAddress(), RegisterOffsets::bcs0Base + RegisterOffsets::csGprR0 + 4);
22202220

22212221
auto bbStartCmd = reinterpret_cast<MI_BATCH_BUFFER_START *>(++lrrCmd);
22222222
EXPECT_EQ(1u, bbStartCmd->getIndirectAddressEnable());
@@ -2276,12 +2276,12 @@ HWTEST2_F(DirectSubmissionRelaxedOrderingTests, whenProgrammingEndingCmdsThenSet
22762276
auto lrrCmdIt = find<MI_LOAD_REGISTER_REG *>(hwParser.cmdList.begin(), hwParser.cmdList.end());
22772277
auto lrrCmd = genCmdCast<MI_LOAD_REGISTER_REG *>(*lrrCmdIt);
22782278

2279-
EXPECT_EQ(lrrCmd->getSourceRegisterAddress(), RegisterOffsets::csGprR3);
2280-
EXPECT_EQ(lrrCmd->getDestinationRegisterAddress(), RegisterOffsets::csGprR0);
2279+
EXPECT_EQ(lrrCmd->getSourceRegisterAddress(), RegisterOffsets::bcs0Base + RegisterOffsets::csGprR3);
2280+
EXPECT_EQ(lrrCmd->getDestinationRegisterAddress(), RegisterOffsets::bcs0Base + RegisterOffsets::csGprR0);
22812281

22822282
lrrCmd++;
2283-
EXPECT_EQ(lrrCmd->getSourceRegisterAddress(), RegisterOffsets::csGprR3 + 4);
2284-
EXPECT_EQ(lrrCmd->getDestinationRegisterAddress(), RegisterOffsets::csGprR0 + 4);
2283+
EXPECT_EQ(lrrCmd->getSourceRegisterAddress(), RegisterOffsets::bcs0Base + RegisterOffsets::csGprR3 + 4);
2284+
EXPECT_EQ(lrrCmd->getDestinationRegisterAddress(), RegisterOffsets::bcs0Base + RegisterOffsets::csGprR0 + 4);
22852285

22862286
auto bbStartCmd = reinterpret_cast<MI_BATCH_BUFFER_START *>(++lrrCmd);
22872287
EXPECT_EQ(1u, bbStartCmd->getIndirectAddressEnable());

0 commit comments

Comments
 (0)