Set global heap size to constant value
Related-To: NEO-5055 Signed-off-by: Zbigniew Zdanowicz <zbigniew.zdanowicz@intel.com>
This commit is contained in:
parent
d7aba6747c
commit
0950f5a23e
|
@ -529,6 +529,7 @@ void EncodeStateBaseAddress<Family>::encode(EncodeStateBaseAddressArgs<Family> &
|
||||||
auto ioh = args.container->isHeapDirty(HeapType::INDIRECT_OBJECT) ? args.container->getIndirectHeap(HeapType::INDIRECT_OBJECT) : nullptr;
|
auto ioh = args.container->isHeapDirty(HeapType::INDIRECT_OBJECT) ? args.container->getIndirectHeap(HeapType::INDIRECT_OBJECT) : nullptr;
|
||||||
auto ssh = args.container->isHeapDirty(HeapType::SURFACE_STATE) ? args.container->getIndirectHeap(HeapType::SURFACE_STATE) : nullptr;
|
auto ssh = args.container->isHeapDirty(HeapType::SURFACE_STATE) ? args.container->getIndirectHeap(HeapType::SURFACE_STATE) : nullptr;
|
||||||
auto isDebuggerActive = device.isDebuggerActive() || device.getDebugger() != nullptr;
|
auto isDebuggerActive = device.isDebuggerActive() || device.getDebugger() != nullptr;
|
||||||
|
bool setGeneralStateBaseAddress = args.sbaProperties ? false : true;
|
||||||
|
|
||||||
StateBaseAddressHelperArgs<Family> stateBaseAddressHelperArgs = {
|
StateBaseAddressHelperArgs<Family> stateBaseAddressHelperArgs = {
|
||||||
0, // generalStateBaseAddress
|
0, // generalStateBaseAddress
|
||||||
|
@ -547,7 +548,7 @@ void EncodeStateBaseAddress<Family>::encode(EncodeStateBaseAddressArgs<Family> &
|
||||||
args.l1CachePolicyDebuggerActive, // l1CachePolicyDebuggerActive
|
args.l1CachePolicyDebuggerActive, // l1CachePolicyDebuggerActive
|
||||||
NEO::MemoryCompressionState::NotApplicable, // memoryCompressionState
|
NEO::MemoryCompressionState::NotApplicable, // memoryCompressionState
|
||||||
true, // setInstructionStateBaseAddress
|
true, // setInstructionStateBaseAddress
|
||||||
true, // setGeneralStateBaseAddress
|
setGeneralStateBaseAddress, // setGeneralStateBaseAddress
|
||||||
false, // useGlobalHeapsBaseAddress
|
false, // useGlobalHeapsBaseAddress
|
||||||
args.multiOsContextCapable, // isMultiOsContextCapable
|
args.multiOsContextCapable, // isMultiOsContextCapable
|
||||||
args.useGlobalAtomics, // useGlobalAtomics
|
args.useGlobalAtomics, // useGlobalAtomics
|
||||||
|
|
|
@ -36,7 +36,7 @@ void StateBaseAddressHelper<GfxFamily>::appendStateBaseAddressParameters(
|
||||||
args.stateBaseAddressCmd->setGeneralStateBaseAddress(args.gmmHelper->decanonize(baseAddress));
|
args.stateBaseAddressCmd->setGeneralStateBaseAddress(args.gmmHelper->decanonize(baseAddress));
|
||||||
args.stateBaseAddressCmd->setGeneralStateBaseAddressModifyEnable(true);
|
args.stateBaseAddressCmd->setGeneralStateBaseAddressModifyEnable(true);
|
||||||
args.stateBaseAddressCmd->setGeneralStateBufferSizeModifyEnable(true);
|
args.stateBaseAddressCmd->setGeneralStateBufferSizeModifyEnable(true);
|
||||||
args.stateBaseAddressCmd->setGeneralStateBufferSize(static_cast<uint32_t>(args.sbaProperties->indirectObjectSize.value));
|
args.stateBaseAddressCmd->setGeneralStateBufferSize(0xfffff);
|
||||||
}
|
}
|
||||||
if (args.sbaProperties->surfaceStateBaseAddress.value != StreamProperty64::initValue) {
|
if (args.sbaProperties->surfaceStateBaseAddress.value != StreamProperty64::initValue) {
|
||||||
args.stateBaseAddressCmd->setBindlessSurfaceStateBaseAddressModifyEnable(true);
|
args.stateBaseAddressCmd->setBindlessSurfaceStateBaseAddressModifyEnable(true);
|
||||||
|
|
|
@ -535,3 +535,29 @@ HWTEST2_F(CommandEncodeStatesTest, givenSbaPropertiesWhenBindingBaseAddressSetTh
|
||||||
EXPECT_EQ(bindingTablePoolBaseAddress, bindTablePoolCmd->getBindingTablePoolBaseAddress());
|
EXPECT_EQ(bindingTablePoolBaseAddress, bindTablePoolCmd->getBindingTablePoolBaseAddress());
|
||||||
EXPECT_EQ(bindingTablePoolSize, bindTablePoolCmd->getBindingTablePoolBufferSize());
|
EXPECT_EQ(bindingTablePoolSize, bindTablePoolCmd->getBindingTablePoolBufferSize());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HWTEST2_F(CommandEncodeStatesTest, givenSbaPropertiesWhenGeneralBaseAddressSetThenExpectAddressFromPropertiesUsedNotFromContainer, IsAtLeastXeHpCore) {
|
||||||
|
using STATE_BASE_ADDRESS = typename FamilyType::STATE_BASE_ADDRESS;
|
||||||
|
|
||||||
|
auto indirectHeapBaseAddress = cmdContainer->getIndirectObjectHeapBaseAddress();
|
||||||
|
auto indirectHeapBaseAddressProperties = indirectHeapBaseAddress + 0x10000;
|
||||||
|
|
||||||
|
StateBaseAddressProperties sbaProperties;
|
||||||
|
sbaProperties.setPropertiesIndirectState(indirectHeapBaseAddressProperties, MemoryConstants::kiloByte);
|
||||||
|
|
||||||
|
STATE_BASE_ADDRESS sba;
|
||||||
|
EncodeStateBaseAddressArgs<FamilyType> args = createDefaultEncodeStateBaseAddressArgs<FamilyType>(cmdContainer.get(), sba, 4);
|
||||||
|
args.sbaProperties = &sbaProperties;
|
||||||
|
|
||||||
|
EncodeStateBaseAddress<FamilyType>::encode(args);
|
||||||
|
|
||||||
|
GenCmdList commands;
|
||||||
|
CmdParse<FamilyType>::parseCommandBuffer(commands,
|
||||||
|
cmdContainer->getCommandStream()->getCpuBase(),
|
||||||
|
cmdContainer->getCommandStream()->getUsed());
|
||||||
|
auto itorSbaCmd = find<STATE_BASE_ADDRESS *>(commands.begin(), commands.end());
|
||||||
|
ASSERT_NE(commands.end(), itorSbaCmd);
|
||||||
|
|
||||||
|
auto sbaCmd = reinterpret_cast<STATE_BASE_ADDRESS *>(*itorSbaCmd);
|
||||||
|
EXPECT_EQ(indirectHeapBaseAddressProperties, sbaCmd->getGeneralStateBaseAddress());
|
||||||
|
}
|
||||||
|
|
|
@ -638,6 +638,7 @@ HWTEST2_F(SbaTest, givenStateBaseAddressPropertiesWhenSettingIndirectStateAndGlo
|
||||||
|
|
||||||
constexpr uint64_t indirectHeapBase = 0x10000;
|
constexpr uint64_t indirectHeapBase = 0x10000;
|
||||||
constexpr uint32_t indirectHeapSize = 0x10;
|
constexpr uint32_t indirectHeapSize = 0x10;
|
||||||
|
constexpr uint32_t constGlobalHeapSize = 0xfffff;
|
||||||
|
|
||||||
auto gmmHelper = pDevice->getGmmHelper();
|
auto gmmHelper = pDevice->getGmmHelper();
|
||||||
StateBaseAddressProperties sbaProperties;
|
StateBaseAddressProperties sbaProperties;
|
||||||
|
@ -665,7 +666,7 @@ HWTEST2_F(SbaTest, givenStateBaseAddressPropertiesWhenSettingIndirectStateAndGlo
|
||||||
EXPECT_TRUE(sbaCmd.getGeneralStateBaseAddressModifyEnable());
|
EXPECT_TRUE(sbaCmd.getGeneralStateBaseAddressModifyEnable());
|
||||||
EXPECT_TRUE(sbaCmd.getGeneralStateBufferSizeModifyEnable());
|
EXPECT_TRUE(sbaCmd.getGeneralStateBufferSizeModifyEnable());
|
||||||
EXPECT_EQ(indirectHeapBase, sbaCmd.getGeneralStateBaseAddress());
|
EXPECT_EQ(indirectHeapBase, sbaCmd.getGeneralStateBaseAddress());
|
||||||
EXPECT_EQ(indirectHeapSize, sbaCmd.getGeneralStateBufferSize());
|
EXPECT_EQ(constGlobalHeapSize, sbaCmd.getGeneralStateBufferSize());
|
||||||
|
|
||||||
EXPECT_FALSE(sbaCmd.getDisableSupportForMultiGpuAtomicsForStatelessAccesses());
|
EXPECT_FALSE(sbaCmd.getDisableSupportForMultiGpuAtomicsForStatelessAccesses());
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue