feature: global bindless sampler offsets

- use global heap base for DSH when bindlessHeapsHelper enabled

Related-To: NEO-10505

Signed-off-by: Mateusz Hoppe <mateusz.hoppe@intel.com>
This commit is contained in:
Mateusz Hoppe
2024-04-24 14:08:57 +00:00
committed by Compute-Runtime-Automation
parent 25bed07989
commit d38ac4806b
14 changed files with 340 additions and 53 deletions

View File

@@ -137,6 +137,7 @@ HWTEST_F(BindlessCommandEncodeStatesTest, GivenBindlessHeapHelperAndGlobalDshNot
auto mockHelper = std::make_unique<MockBindlesHeapsHelper>(pDevice,
pDevice->getNumGenericSubDevices() > 1);
mockHelper->globalBindlessDsh = false;
auto globalBase = mockHelper->getGlobalHeapsBase();
pDevice->getExecutionEnvironment()->rootDeviceEnvironments[pDevice->getRootDeviceIndex()]->bindlessHeapsHelper.reset(mockHelper.release());
@@ -155,7 +156,7 @@ HWTEST_F(BindlessCommandEncodeStatesTest, GivenBindlessHeapHelperAndGlobalDshNot
auto usedBefore = dsh->getUsed();
EncodeStates<FamilyType>::copySamplerState(dsh, borderColorSize, numSamplers, 0, memory, pDevice->getBindlessHeapsHelper(), pDevice->getRootDeviceEnvironment());
auto expectedValue = usedBefore;
auto expectedValue = usedBefore + ptrDiff(dsh->getGpuBase(), globalBase);
auto usedAfter = dsh->getUsed();
EXPECT_EQ(alignUp(usedBefore + sizeof(SAMPLER_BORDER_COLOR_STATE), INTERFACE_DESCRIPTOR_DATA::SAMPLERSTATEPOINTER_ALIGN_SIZE) + sizeof(SAMPLER_STATE), usedAfter);

View File

@@ -98,6 +98,7 @@ HWTEST2_F(SbaForBindlessTests, givenGlobalBindlessBaseAddressWhenProgramStateBas
StateBaseAddressHelperArgs<FamilyType> args = createSbaHelperArgs<FamilyType>(cmd, pDevice->getGmmHelper());
args.globalHeapsBaseAddress = globalBindlessHeapsBaseAddress;
args.useGlobalHeapsBaseAddress = true;
args.ssh = &ssh;
StateBaseAddressHelper<FamilyType>::programStateBaseAddress(args);
@@ -115,7 +116,8 @@ HWTEST2_F(SbaForBindlessTests, givenGlobalBindlessBaseAddressWhenProgramStateBas
EXPECT_EQ(globalBindlessHeapsBaseAddress, cmd->getDynamicStateBaseAddress());
EXPECT_TRUE(cmd->getSurfaceStateBaseAddressModifyEnable());
EXPECT_EQ(globalBindlessHeapsBaseAddress, cmd->getSurfaceStateBaseAddress());
EXPECT_NE(globalBindlessHeapsBaseAddress, cmd->getSurfaceStateBaseAddress());
EXPECT_EQ(ssh.getHeapGpuBase(), cmd->getSurfaceStateBaseAddress());
}
HWTEST2_F(SbaForBindlessTests,