feature: Enabling Blitter Remapping for REGISTER_MEM

Related-To: NEO-11934

Signed-off-by: Andrzej Koska <andrzej.koska@intel.com>
This commit is contained in:
Andrzej Koska
2024-09-09 17:09:52 +00:00
committed by Compute-Runtime-Automation
parent 334b6e0d51
commit d4f59c1b09
7 changed files with 100 additions and 21 deletions

View File

@@ -680,6 +680,83 @@ HWTEST2_F(CommandEncoderTests, whenUsingDefaultFilteringAndAppendSamplerStatePar
EXPECT_EQ(SAMPLER_STATE::LOW_QUALITY_FILTER_DISABLE, state.getLowQualityFilter());
}
HWTEST2_F(CommandEncoderTests, givenMiStoreRegisterMemwhenRemapAndIsBcsThenRegisterOffsetsBcs0Base, IsAtLeastGen12lp) {
using MI_STORE_REGISTER_MEM = typename FamilyType::MI_STORE_REGISTER_MEM;
uint64_t baseAddr = 0x10;
uint32_t offset = 0x2000; // remapable
constexpr size_t bufferSize = 2100;
uint8_t buffer[bufferSize];
LinearStream cmdStream(buffer, bufferSize);
auto buf = cmdStream.getSpaceForCmd<MI_STORE_REGISTER_MEM>();
bool isBcs = true;
EncodeStoreMMIO<FamilyType>::encode(buf, offset, baseAddr, true, isBcs);
auto storeRegMem = genCmdCast<MI_STORE_REGISTER_MEM *>(buffer);
ASSERT_NE(nullptr, storeRegMem);
EXPECT_EQ(storeRegMem->getRegisterAddress(), RegisterOffsets::bcs0Base + offset);
isBcs = false;
EncodeStoreMMIO<FamilyType>::encode(buf, offset, baseAddr, true, isBcs);
storeRegMem = genCmdCast<MI_STORE_REGISTER_MEM *>(buffer);
ASSERT_NE(nullptr, storeRegMem);
EXPECT_EQ(storeRegMem->getRegisterAddress(), offset);
offset = 0x1900; // not remapable
isBcs = true;
EncodeStoreMMIO<FamilyType>::encode(buf, offset, baseAddr, true, isBcs);
storeRegMem = genCmdCast<MI_STORE_REGISTER_MEM *>(buffer);
ASSERT_NE(nullptr, storeRegMem);
EXPECT_EQ(storeRegMem->getRegisterAddress(), offset);
isBcs = false;
EncodeStoreMMIO<FamilyType>::encode(buf, offset, baseAddr, true, isBcs);
storeRegMem = genCmdCast<MI_STORE_REGISTER_MEM *>(buffer);
ASSERT_NE(nullptr, storeRegMem);
EXPECT_EQ(storeRegMem->getRegisterAddress(), offset);
}
HWTEST2_F(CommandEncoderTests, givenMiLoadRegisterMemwhenRemapAndIsBcsThenRegisterOffsetsBcs0Base, IsAtLeastGen12lp) {
using MI_LOAD_REGISTER_MEM = typename FamilyType::MI_LOAD_REGISTER_MEM;
uint64_t baseAddr = 0x10;
uint32_t offset = 0x2000; // remapable
constexpr size_t bufferSize = 2100;
uint8_t buffer[bufferSize];
LinearStream cmdStream(buffer, bufferSize);
uint8_t *ptr = buffer;
bool isBcs = true;
EncodeSetMMIO<FamilyType>::encodeMEM(cmdStream, offset, baseAddr, isBcs);
auto loadRegMem = genCmdCast<MI_LOAD_REGISTER_MEM *>(ptr);
ASSERT_NE(nullptr, loadRegMem);
EXPECT_EQ(loadRegMem->getRegisterAddress(), RegisterOffsets::bcs0Base + offset);
isBcs = false;
ptr += sizeof(MI_LOAD_REGISTER_MEM);
EncodeSetMMIO<FamilyType>::encodeMEM(cmdStream, offset, baseAddr, isBcs);
loadRegMem = genCmdCast<MI_LOAD_REGISTER_MEM *>(ptr);
ASSERT_NE(nullptr, loadRegMem);
EXPECT_EQ(loadRegMem->getRegisterAddress(), offset);
offset = 0x1900; // not remapable
isBcs = true;
ptr += sizeof(MI_LOAD_REGISTER_MEM);
EncodeSetMMIO<FamilyType>::encodeMEM(cmdStream, offset, baseAddr, isBcs);
loadRegMem = genCmdCast<MI_LOAD_REGISTER_MEM *>(ptr);
ASSERT_NE(nullptr, loadRegMem);
EXPECT_EQ(loadRegMem->getRegisterAddress(), offset);
isBcs = false;
ptr += sizeof(MI_LOAD_REGISTER_MEM);
EncodeSetMMIO<FamilyType>::encodeMEM(cmdStream, offset, baseAddr, isBcs);
loadRegMem = genCmdCast<MI_LOAD_REGISTER_MEM *>(ptr);
ASSERT_NE(nullptr, loadRegMem);
EXPECT_EQ(loadRegMem->getRegisterAddress(), offset);
}
HWTEST2_F(CommandEncoderTests, whenForcingLowQualityFilteringAndAppendSamplerStateParamsThenEnableLowQualityFilter, IsAtLeastGen12lp) {
DebugManagerStateRestore dbgRestore;