mirror of
https://github.com/intel/compute-runtime.git
synced 2025-09-15 13:01:45 +08:00
Add parameter to set surface state base address value
This change introduces capability to set surface state base address when surface state heap or global base address are not available Related-To: NEO-7187 Signed-off-by: Zbigniew Zdanowicz <zbigniew.zdanowicz@intel.com>
This commit is contained in:

committed by
Compute-Runtime-Automation

parent
99c5de855c
commit
0011368775
@ -57,6 +57,7 @@ void CommandQueueHw<gfxCoreFamily>::programStateBaseAddress(uint64_t gsba, bool
|
||||
indirectObjectHeapBaseAddress, // indirectObjectHeapBaseAddress
|
||||
instructionHeapBaseAddress, // instructionHeapBaseAddress
|
||||
globalHeapsBase, // globalHeapsBaseAddress
|
||||
0, // surfaceStateBaseAddress
|
||||
&sbaCmd, // stateBaseAddressCmd
|
||||
nullptr, // dsh
|
||||
nullptr, // ioh
|
||||
@ -69,7 +70,8 @@ void CommandQueueHw<gfxCoreFamily>::programStateBaseAddress(uint64_t gsba, bool
|
||||
useGlobalSshAndDsh, // useGlobalHeapsBaseAddress
|
||||
false, // isMultiOsContextCapable
|
||||
false, // useGlobalAtomics
|
||||
false // areMultipleSubDevicesInContext
|
||||
false, // areMultipleSubDevicesInContext
|
||||
false // overrideSurfaceStateBaseAddress
|
||||
};
|
||||
|
||||
NEO::StateBaseAddressHelper<GfxFamily>::programStateBaseAddress(stateBaseAddressHelperArgs);
|
||||
|
@ -48,6 +48,7 @@ void CommandQueueHw<gfxCoreFamily>::programStateBaseAddress(uint64_t gsba, bool
|
||||
indirectObjectStateBaseAddress, // indirectObjectHeapBaseAddress
|
||||
instructionStateBaseAddress, // instructionHeapBaseAddress
|
||||
globalHeapsBase, // globalHeapsBaseAddress
|
||||
0, // surfaceStateBaseAddress
|
||||
&sbaCmd, // stateBaseAddressCmd
|
||||
nullptr, // dsh
|
||||
nullptr, // ioh
|
||||
@ -60,7 +61,8 @@ void CommandQueueHw<gfxCoreFamily>::programStateBaseAddress(uint64_t gsba, bool
|
||||
true, // useGlobalHeapsBaseAddress
|
||||
multiOsContextCapable, // isMultiOsContextCapable
|
||||
false, // useGlobalAtomics
|
||||
false // areMultipleSubDevicesInContext
|
||||
false, // areMultipleSubDevicesInContext
|
||||
false // overrideSurfaceStateBaseAddress
|
||||
};
|
||||
|
||||
NEO::StateBaseAddressHelper<GfxFamily>::programStateBaseAddress(stateBaseAddressHelperArgs);
|
||||
|
@ -1218,6 +1218,7 @@ HWCMDTEST_F(IGFX_GEN8_CORE, CommandStreamReceiverFlushTaskTests, givenCsrWhenGen
|
||||
0, // indirectObjectHeapBaseAddress
|
||||
generalStateBaseAddress, // instructionHeapBaseAddress
|
||||
0, // globalHeapsBaseAddress
|
||||
0, // surfaceStateBaseAddress
|
||||
&sbaCmd, // stateBaseAddressCmd
|
||||
&dsh, // dsh
|
||||
&ioh, // ioh
|
||||
@ -1230,7 +1231,8 @@ HWCMDTEST_F(IGFX_GEN8_CORE, CommandStreamReceiverFlushTaskTests, givenCsrWhenGen
|
||||
false, // useGlobalHeapsBaseAddress
|
||||
false, // isMultiOsContextCapable
|
||||
false, // useGlobalAtomics
|
||||
false // areMultipleSubDevicesInContext
|
||||
false, // areMultipleSubDevicesInContext
|
||||
false // overrideSurfaceStateBaseAddress
|
||||
};
|
||||
StateBaseAddressHelper<FamilyType>::programStateBaseAddress(args);
|
||||
|
||||
@ -1247,6 +1249,7 @@ HWTEST_F(CommandStreamReceiverFlushTaskTests, givenNonZeroGeneralStateBaseAddres
|
||||
0, // indirectObjectHeapBaseAddress
|
||||
generalStateBaseAddress, // instructionHeapBaseAddress
|
||||
0, // globalHeapsBaseAddress
|
||||
0, // surfaceStateBaseAddress
|
||||
&sbaCmd, // stateBaseAddressCmd
|
||||
&dsh, // dsh
|
||||
&ioh, // ioh
|
||||
@ -1259,7 +1262,8 @@ HWTEST_F(CommandStreamReceiverFlushTaskTests, givenNonZeroGeneralStateBaseAddres
|
||||
false, // useGlobalHeapsBaseAddress
|
||||
false, // isMultiOsContextCapable
|
||||
false, // useGlobalAtomics
|
||||
false // areMultipleSubDevicesInContext
|
||||
false, // areMultipleSubDevicesInContext
|
||||
false // overrideSurfaceStateBaseAddress
|
||||
};
|
||||
StateBaseAddressHelper<FamilyType>::programStateBaseAddress(args);
|
||||
|
||||
@ -1278,6 +1282,7 @@ HWTEST_F(CommandStreamReceiverFlushTaskTests, givenNonZeroInternalHeapBaseAddres
|
||||
internalHeapBaseAddress, // indirectObjectHeapBaseAddress
|
||||
0, // instructionHeapBaseAddress
|
||||
0, // globalHeapsBaseAddress
|
||||
0, // surfaceStateBaseAddress
|
||||
&sbaCmd, // stateBaseAddressCmd
|
||||
&dsh, // dsh
|
||||
&ioh, // ioh
|
||||
@ -1290,7 +1295,8 @@ HWTEST_F(CommandStreamReceiverFlushTaskTests, givenNonZeroInternalHeapBaseAddres
|
||||
false, // useGlobalHeapsBaseAddress
|
||||
false, // isMultiOsContextCapable
|
||||
false, // useGlobalAtomics
|
||||
false // areMultipleSubDevicesInContext
|
||||
false, // areMultipleSubDevicesInContext
|
||||
false // overrideSurfaceStateBaseAddress
|
||||
};
|
||||
StateBaseAddressHelper<FamilyType>::programStateBaseAddress(args);
|
||||
|
||||
@ -1313,6 +1319,7 @@ HWCMDTEST_F(IGFX_GEN8_CORE, CommandStreamReceiverFlushTaskTests, givenSbaProgram
|
||||
internalHeapBase, // indirectObjectHeapBaseAddress
|
||||
instructionHeapBase, // instructionHeapBaseAddress
|
||||
0, // globalHeapsBaseAddress
|
||||
0, // surfaceStateBaseAddress
|
||||
&sbaCmd, // stateBaseAddressCmd
|
||||
nullptr, // dsh
|
||||
nullptr, // ioh
|
||||
@ -1325,7 +1332,8 @@ HWCMDTEST_F(IGFX_GEN8_CORE, CommandStreamReceiverFlushTaskTests, givenSbaProgram
|
||||
false, // useGlobalHeapsBaseAddress
|
||||
false, // isMultiOsContextCapable
|
||||
false, // useGlobalAtomics
|
||||
false // areMultipleSubDevicesInContext
|
||||
false, // areMultipleSubDevicesInContext
|
||||
false // overrideSurfaceStateBaseAddress
|
||||
};
|
||||
StateBaseAddressHelper<FamilyType>::programStateBaseAddress(args);
|
||||
|
||||
|
@ -330,6 +330,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, CommandStreamReceiverFlushTaskXeHPAndLaterTests, gi
|
||||
internalHeapBase, // indirectObjectHeapBaseAddress
|
||||
instructionHeapBase, // instructionHeapBaseAddress
|
||||
0, // globalHeapsBaseAddress
|
||||
0, // surfaceStateBaseAddress
|
||||
&sbaCmd, // stateBaseAddressCmd
|
||||
nullptr, // dsh
|
||||
nullptr, // ioh
|
||||
@ -342,7 +343,8 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, CommandStreamReceiverFlushTaskXeHPAndLaterTests, gi
|
||||
false, // useGlobalHeapsBaseAddress
|
||||
false, // isMultiOsContextCapable
|
||||
false, // useGlobalAtomics
|
||||
false // areMultipleSubDevicesInContext
|
||||
false, // areMultipleSubDevicesInContext
|
||||
false // overrideSurfaceStateBaseAddress
|
||||
};
|
||||
StateBaseAddressHelper<FamilyType>::programStateBaseAddress(args);
|
||||
|
||||
|
@ -466,6 +466,7 @@ HWTEST2_F(StateBaseAddressXeHPAndLaterTests, givenMemoryCompressionEnabledWhenAp
|
||||
0, // indirectObjectHeapBaseAddress
|
||||
0, // instructionHeapBaseAddress
|
||||
0, // globalHeapsBaseAddress
|
||||
0, // surfaceStateBaseAddress
|
||||
&sbaCmd, // stateBaseAddressCmd
|
||||
nullptr, // dsh
|
||||
nullptr, // ioh
|
||||
@ -478,7 +479,8 @@ HWTEST2_F(StateBaseAddressXeHPAndLaterTests, givenMemoryCompressionEnabledWhenAp
|
||||
false, // useGlobalHeapsBaseAddress
|
||||
false, // isMultiOsContextCapable
|
||||
false, // useGlobalAtomics
|
||||
false // areMultipleSubDevicesInContext
|
||||
false, // areMultipleSubDevicesInContext
|
||||
false // overrideSurfaceStateBaseAddress
|
||||
};
|
||||
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args, true);
|
||||
if (memoryCompressionState == MemoryCompressionState::Enabled) {
|
||||
@ -504,6 +506,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, StateBaseAddressXeHPAndLaterTests, givenNonZeroInte
|
||||
ihba, // indirectObjectHeapBaseAddress
|
||||
0, // instructionHeapBaseAddress
|
||||
0, // globalHeapsBaseAddress
|
||||
0, // surfaceStateBaseAddress
|
||||
&sbaCmd, // stateBaseAddressCmd
|
||||
nullptr, // dsh
|
||||
nullptr, // ioh
|
||||
@ -516,7 +519,8 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, StateBaseAddressXeHPAndLaterTests, givenNonZeroInte
|
||||
false, // useGlobalHeapsBaseAddress
|
||||
false, // isMultiOsContextCapable
|
||||
false, // useGlobalAtomics
|
||||
false // areMultipleSubDevicesInContext
|
||||
false, // areMultipleSubDevicesInContext
|
||||
false // overrideSurfaceStateBaseAddress
|
||||
};
|
||||
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args, true);
|
||||
EXPECT_EQ(0ull, sbaCmd.getGeneralStateBaseAddress());
|
||||
|
@ -56,6 +56,7 @@ XE_HPC_CORETEST_F(CmdsProgrammingTestsXeHpcCore, givenSpecificProductFamilyWhenA
|
||||
0, // indirectObjectHeapBaseAddress
|
||||
0, // instructionHeapBaseAddress
|
||||
0, // globalHeapsBaseAddress
|
||||
0, // surfaceStateBaseAddress
|
||||
&sbaCmd, // stateBaseAddressCmd
|
||||
nullptr, // dsh
|
||||
nullptr, // ioh
|
||||
@ -68,7 +69,8 @@ XE_HPC_CORETEST_F(CmdsProgrammingTestsXeHpcCore, givenSpecificProductFamilyWhenA
|
||||
false, // useGlobalHeapsBaseAddress
|
||||
false, // isMultiOsContextCapable
|
||||
false, // useGlobalAtomics
|
||||
false // areMultipleSubDevicesInContext
|
||||
false, // areMultipleSubDevicesInContext
|
||||
false // overrideSurfaceStateBaseAddress
|
||||
};
|
||||
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args, true);
|
||||
|
||||
@ -92,6 +94,7 @@ XE_HPC_CORETEST_F(CmdsProgrammingTestsXeHpcCore, givenL1CachingOverrideWhenState
|
||||
0, // indirectObjectHeapBaseAddress
|
||||
0, // instructionHeapBaseAddress
|
||||
0, // globalHeapsBaseAddress
|
||||
0, // surfaceStateBaseAddress
|
||||
&sbaCmd, // stateBaseAddressCmd
|
||||
nullptr, // dsh
|
||||
nullptr, // ioh
|
||||
@ -104,7 +107,8 @@ XE_HPC_CORETEST_F(CmdsProgrammingTestsXeHpcCore, givenL1CachingOverrideWhenState
|
||||
false, // useGlobalHeapsBaseAddress
|
||||
false, // isMultiOsContextCapable
|
||||
false, // useGlobalAtomics
|
||||
false // areMultipleSubDevicesInContext
|
||||
false, // areMultipleSubDevicesInContext
|
||||
false // overrideSurfaceStateBaseAddress
|
||||
};
|
||||
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args, true);
|
||||
|
||||
|
@ -56,6 +56,7 @@ DG2TEST_F(CmdsProgrammingTestsDg2, givenSpecificProductFamilyWhenAppendingSbaThe
|
||||
0, // indirectObjectHeapBaseAddress
|
||||
0, // instructionHeapBaseAddress
|
||||
0, // globalHeapsBaseAddress
|
||||
0, // surfaceStateBaseAddress
|
||||
&sbaCmd, // stateBaseAddressCmd
|
||||
nullptr, // dsh
|
||||
nullptr, // ioh
|
||||
@ -68,7 +69,8 @@ DG2TEST_F(CmdsProgrammingTestsDg2, givenSpecificProductFamilyWhenAppendingSbaThe
|
||||
false, // useGlobalHeapsBaseAddress
|
||||
false, // isMultiOsContextCapable
|
||||
false, // useGlobalAtomics
|
||||
false // areMultipleSubDevicesInContext
|
||||
false, // areMultipleSubDevicesInContext
|
||||
false // overrideSurfaceStateBaseAddress
|
||||
};
|
||||
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args, true);
|
||||
|
||||
@ -92,6 +94,7 @@ DG2TEST_F(CmdsProgrammingTestsDg2, givenL1CachingOverrideWhenStateBaseAddressIsP
|
||||
0, // indirectObjectHeapBaseAddress
|
||||
0, // instructionHeapBaseAddress
|
||||
0, // globalHeapsBaseAddress
|
||||
0, // surfaceStateBaseAddress
|
||||
&sbaCmd, // stateBaseAddressCmd
|
||||
nullptr, // dsh
|
||||
nullptr, // ioh
|
||||
@ -104,7 +107,8 @@ DG2TEST_F(CmdsProgrammingTestsDg2, givenL1CachingOverrideWhenStateBaseAddressIsP
|
||||
false, // useGlobalHeapsBaseAddress
|
||||
false, // isMultiOsContextCapable
|
||||
false, // useGlobalAtomics
|
||||
false // areMultipleSubDevicesInContext
|
||||
false, // areMultipleSubDevicesInContext
|
||||
false // overrideSurfaceStateBaseAddress
|
||||
};
|
||||
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args, true);
|
||||
|
||||
|
@ -56,6 +56,7 @@ XE_HPG_CORETEST_F(CmdsProgrammingTestsXeHpgCore, givenSpecificProductFamilyWhenA
|
||||
0, // indirectObjectHeapBaseAddress
|
||||
0, // instructionHeapBaseAddress
|
||||
0, // globalHeapsBaseAddress
|
||||
0, // surfaceStateBaseAddress
|
||||
&sbaCmd, // stateBaseAddressCmd
|
||||
nullptr, // dsh
|
||||
nullptr, // ioh
|
||||
@ -68,7 +69,8 @@ XE_HPG_CORETEST_F(CmdsProgrammingTestsXeHpgCore, givenSpecificProductFamilyWhenA
|
||||
false, // useGlobalHeapsBaseAddress
|
||||
false, // isMultiOsContextCapable
|
||||
false, // useGlobalAtomics
|
||||
false // areMultipleSubDevicesInContext
|
||||
false, // areMultipleSubDevicesInContext
|
||||
false // overrideSurfaceStateBaseAddress
|
||||
};
|
||||
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args, true);
|
||||
|
||||
@ -92,6 +94,7 @@ XE_HPG_CORETEST_F(CmdsProgrammingTestsXeHpgCore, givenL1CachingOverrideWhenState
|
||||
0, // indirectObjectHeapBaseAddress
|
||||
0, // instructionHeapBaseAddress
|
||||
0, // globalHeapsBaseAddress
|
||||
0, // surfaceStateBaseAddress
|
||||
&sbaCmd, // stateBaseAddressCmd
|
||||
nullptr, // dsh
|
||||
nullptr, // ioh
|
||||
@ -104,7 +107,8 @@ XE_HPG_CORETEST_F(CmdsProgrammingTestsXeHpgCore, givenL1CachingOverrideWhenState
|
||||
false, // useGlobalHeapsBaseAddress
|
||||
false, // isMultiOsContextCapable
|
||||
false, // useGlobalAtomics
|
||||
false // areMultipleSubDevicesInContext
|
||||
false, // areMultipleSubDevicesInContext
|
||||
false // overrideSurfaceStateBaseAddress
|
||||
};
|
||||
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args, true);
|
||||
|
||||
|
@ -377,6 +377,7 @@ void EncodeStateBaseAddress<Family>::encode(EncodeStateBaseAddressArgs<Family> &
|
||||
args.container->getIndirectObjectHeapBaseAddress(), // indirectObjectHeapBaseAddress
|
||||
args.container->getInstructionHeapBaseAddress(), // instructionHeapBaseAddress
|
||||
0, // globalHeapsBaseAddress
|
||||
0, // surfaceStateBaseAddress
|
||||
&args.sbaCmd, // stateBaseAddressCmd
|
||||
dsh, // dsh
|
||||
ioh, // ioh
|
||||
@ -389,7 +390,8 @@ void EncodeStateBaseAddress<Family>::encode(EncodeStateBaseAddressArgs<Family> &
|
||||
false, // useGlobalHeapsBaseAddress
|
||||
false, // isMultiOsContextCapable
|
||||
args.useGlobalAtomics, // useGlobalAtomics
|
||||
false // areMultipleSubDevicesInContext
|
||||
false, // areMultipleSubDevicesInContext
|
||||
false // overrideSurfaceStateBaseAddress
|
||||
};
|
||||
|
||||
StateBaseAddressHelper<Family>::programStateBaseAddress(stateBaseAddressHelperArgs);
|
||||
|
@ -484,6 +484,7 @@ void EncodeStateBaseAddress<Family>::encode(EncodeStateBaseAddressArgs<Family> &
|
||||
args.container->getIndirectObjectHeapBaseAddress(), // indirectObjectHeapBaseAddress
|
||||
args.container->getInstructionHeapBaseAddress(), // instructionHeapBaseAddress
|
||||
0, // globalHeapsBaseAddress
|
||||
0, // surfaceStateBaseAddress
|
||||
&args.sbaCmd, // stateBaseAddressCmd
|
||||
dsh, // dsh
|
||||
ioh, // ioh
|
||||
@ -496,7 +497,8 @@ void EncodeStateBaseAddress<Family>::encode(EncodeStateBaseAddressArgs<Family> &
|
||||
false, // useGlobalHeapsBaseAddress
|
||||
args.multiOsContextCapable, // isMultiOsContextCapable
|
||||
args.useGlobalAtomics, // useGlobalAtomics
|
||||
false // areMultipleSubDevicesInContext
|
||||
false, // areMultipleSubDevicesInContext
|
||||
false // overrideSurfaceStateBaseAddress
|
||||
};
|
||||
|
||||
StateBaseAddressHelper<Family>::programStateBaseAddress(stateBaseAddressHelperArgs);
|
||||
|
@ -410,23 +410,25 @@ CompletionStamp CommandStreamReceiverHw<GfxFamily>::flushTask(
|
||||
STATE_BASE_ADDRESS stateBaseAddressCmd;
|
||||
|
||||
StateBaseAddressHelperArgs<GfxFamily> args = {
|
||||
newGSHbase, // generalStateBase
|
||||
indirectObjectStateBaseAddress, // indirectObjectHeapBaseAddress
|
||||
instructionHeapBaseAddress, // instructionHeapBaseAddress
|
||||
0, // globalHeapsBaseAddress
|
||||
&stateBaseAddressCmd, // stateBaseAddressCmd
|
||||
dsh, // dsh
|
||||
ioh, // ioh
|
||||
ssh, // ssh
|
||||
device.getGmmHelper(), // gmmHelper
|
||||
mocsIndex, // statelessMocsIndex
|
||||
memoryCompressionState, // memoryCompressionState
|
||||
true, // setInstructionStateBaseAddress
|
||||
true, // setGeneralStateBaseAddress
|
||||
false, // useGlobalHeapsBaseAddress
|
||||
isMultiOsContextCapable(), // isMultiOsContextCapable
|
||||
dispatchFlags.useGlobalAtomics, // useGlobalAtomics
|
||||
dispatchFlags.areMultipleSubDevicesInContext // areMultipleSubDevicesInContext
|
||||
newGSHbase, // generalStateBase
|
||||
indirectObjectStateBaseAddress, // indirectObjectHeapBaseAddress
|
||||
instructionHeapBaseAddress, // instructionHeapBaseAddress
|
||||
0, // globalHeapsBaseAddress
|
||||
0, // surfaceStateBaseAddress
|
||||
&stateBaseAddressCmd, // stateBaseAddressCmd
|
||||
dsh, // dsh
|
||||
ioh, // ioh
|
||||
ssh, // ssh
|
||||
device.getGmmHelper(), // gmmHelper
|
||||
mocsIndex, // statelessMocsIndex
|
||||
memoryCompressionState, // memoryCompressionState
|
||||
true, // setInstructionStateBaseAddress
|
||||
true, // setGeneralStateBaseAddress
|
||||
false, // useGlobalHeapsBaseAddress
|
||||
isMultiOsContextCapable(), // isMultiOsContextCapable
|
||||
dispatchFlags.useGlobalAtomics, // useGlobalAtomics
|
||||
dispatchFlags.areMultipleSubDevicesInContext, // areMultipleSubDevicesInContext
|
||||
false // overrideSurfaceStateBaseAddress
|
||||
};
|
||||
|
||||
StateBaseAddressHelper<GfxFamily>::programStateBaseAddress(args);
|
||||
@ -610,7 +612,7 @@ CompletionStamp CommandStreamReceiverHw<GfxFamily>::flushTask(
|
||||
streamToSubmit.getGraphicsAllocation()->updateTaskCount(this->taskCount + 1, this->osContext->getContextId());
|
||||
streamToSubmit.getGraphicsAllocation()->updateResidencyTaskCount(this->taskCount + 1, this->osContext->getContextId());
|
||||
|
||||
if (submitCSR | submitTask) {
|
||||
if (submitCSR || submitTask) {
|
||||
if (this->dispatchMode == DispatchMode::ImmediateDispatch) {
|
||||
flushHandler(batchBuffer, this->getResidencyAllocations());
|
||||
if (dispatchFlags.blocking || dispatchFlags.dcFlush || dispatchFlags.guardCommandBufferWithPipeControl) {
|
||||
|
@ -53,6 +53,11 @@ void StateBaseAddressHelper<Gen8Family>::programStateBaseAddress(
|
||||
args.stateBaseAddressCmd->setGeneralStateBufferSize(0xfffff);
|
||||
}
|
||||
|
||||
if (args.overrideSurfaceStateBaseAddress) {
|
||||
args.stateBaseAddressCmd->setSurfaceStateBaseAddressModifyEnable(true);
|
||||
args.stateBaseAddressCmd->setSurfaceStateBaseAddress(args.surfaceStateBaseAddress);
|
||||
}
|
||||
|
||||
if (DebugManager.flags.OverrideStatelessMocsIndex.get() != -1) {
|
||||
args.statelessMocsIndex = DebugManager.flags.OverrideStatelessMocsIndex.get();
|
||||
}
|
||||
|
@ -26,6 +26,7 @@ struct StateBaseAddressHelperArgs {
|
||||
uint64_t indirectObjectHeapBaseAddress = 0;
|
||||
uint64_t instructionHeapBaseAddress = 0;
|
||||
uint64_t globalHeapsBaseAddress = 0;
|
||||
uint64_t surfaceStateBaseAddress = 0;
|
||||
|
||||
STATE_BASE_ADDRESS *stateBaseAddressCmd = nullptr;
|
||||
|
||||
@ -43,6 +44,7 @@ struct StateBaseAddressHelperArgs {
|
||||
bool isMultiOsContextCapable = false;
|
||||
bool useGlobalAtomics = false;
|
||||
bool areMultipleSubDevicesInContext = false;
|
||||
bool overrideSurfaceStateBaseAddress = false;
|
||||
};
|
||||
|
||||
template <typename GfxFamily>
|
||||
|
@ -73,6 +73,11 @@ void StateBaseAddressHelper<GfxFamily>::programStateBaseAddress(
|
||||
args.stateBaseAddressCmd->setGeneralStateBufferSize(0xfffff);
|
||||
}
|
||||
|
||||
if (args.overrideSurfaceStateBaseAddress) {
|
||||
args.stateBaseAddressCmd->setSurfaceStateBaseAddressModifyEnable(true);
|
||||
args.stateBaseAddressCmd->setSurfaceStateBaseAddress(args.surfaceStateBaseAddress);
|
||||
}
|
||||
|
||||
if (DebugManager.flags.OverrideStatelessMocsIndex.get() != -1) {
|
||||
args.statelessMocsIndex = DebugManager.flags.OverrideStatelessMocsIndex.get();
|
||||
}
|
||||
|
@ -23,6 +23,7 @@ BDWTEST_F(SBATest, givenUsedBindlessBuffersWhenAppendStateBaseAddressParametersI
|
||||
0, // indirectObjectHeapBaseAddress
|
||||
0, // instructionHeapBaseAddress
|
||||
0, // globalHeapsBaseAddress
|
||||
0, // surfaceStateBaseAddress
|
||||
&stateBaseAddress, // stateBaseAddressCmd
|
||||
nullptr, // dsh
|
||||
nullptr, // ioh
|
||||
@ -35,7 +36,8 @@ BDWTEST_F(SBATest, givenUsedBindlessBuffersWhenAppendStateBaseAddressParametersI
|
||||
false, // useGlobalHeapsBaseAddress
|
||||
false, // isMultiOsContextCapable
|
||||
false, // useGlobalAtomics
|
||||
false // areMultipleSubDevicesInContext
|
||||
false, // areMultipleSubDevicesInContext
|
||||
false // overrideSurfaceStateBaseAddress
|
||||
};
|
||||
|
||||
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args, true);
|
||||
@ -43,3 +45,39 @@ BDWTEST_F(SBATest, givenUsedBindlessBuffersWhenAppendStateBaseAddressParametersI
|
||||
EXPECT_EQ(0u, ssh.getUsed());
|
||||
EXPECT_EQ(0, memcmp(&stateBaseAddressReference, &stateBaseAddress, sizeof(STATE_BASE_ADDRESS)));
|
||||
}
|
||||
|
||||
BDWTEST_F(SBATest,
|
||||
givenUsedBindlessBuffersAndOverridenSurfaceStateBaseAddressWhenAppendStateBaseAddressParametersIsCalledThenSbaCmdHasCorrectSurfaceStateBaseAddress) {
|
||||
using STATE_BASE_ADDRESS = typename FamilyType::STATE_BASE_ADDRESS;
|
||||
|
||||
constexpr uint64_t surfaceStateBaseAddress = 0xBADA550000;
|
||||
|
||||
STATE_BASE_ADDRESS stateBaseAddressCmd = {};
|
||||
|
||||
StateBaseAddressHelperArgs<FamilyType> args = {
|
||||
0, // generalStateBase
|
||||
0, // indirectObjectHeapBaseAddress
|
||||
0, // instructionHeapBaseAddress
|
||||
0, // globalHeapsBaseAddress
|
||||
surfaceStateBaseAddress, // surfaceStateBaseAddress
|
||||
&stateBaseAddressCmd, // stateBaseAddressCmd
|
||||
nullptr, // dsh
|
||||
nullptr, // ioh
|
||||
&ssh, // ssh
|
||||
nullptr, // gmmHelper
|
||||
0, // statelessMocsIndex
|
||||
MemoryCompressionState::NotApplicable, // memoryCompressionState
|
||||
false, // setInstructionStateBaseAddress
|
||||
false, // setGeneralStateBaseAddress
|
||||
false, // useGlobalHeapsBaseAddress
|
||||
false, // isMultiOsContextCapable
|
||||
false, // useGlobalAtomics
|
||||
false, // areMultipleSubDevicesInContext
|
||||
true // overrideSurfaceStateBaseAddress
|
||||
};
|
||||
|
||||
StateBaseAddressHelper<FamilyType>::programStateBaseAddress(args);
|
||||
|
||||
EXPECT_TRUE(stateBaseAddressCmd.getSurfaceStateBaseAddressModifyEnable());
|
||||
EXPECT_EQ(surfaceStateBaseAddress, stateBaseAddressCmd.getSurfaceStateBaseAddress());
|
||||
}
|
||||
|
@ -27,6 +27,7 @@ HWTEST2_F(SBATest, WhenAppendStateBaseAddressParametersIsCalledThenSBACmdHasBind
|
||||
0, // indirectObjectHeapBaseAddress
|
||||
0, // instructionHeapBaseAddress
|
||||
0, // globalHeapsBaseAddress
|
||||
0, // surfaceStateBaseAddress
|
||||
&stateBaseAddress, // stateBaseAddressCmd
|
||||
nullptr, // dsh
|
||||
nullptr, // ioh
|
||||
@ -39,7 +40,8 @@ HWTEST2_F(SBATest, WhenAppendStateBaseAddressParametersIsCalledThenSBACmdHasBind
|
||||
false, // useGlobalHeapsBaseAddress
|
||||
false, // isMultiOsContextCapable
|
||||
false, // useGlobalAtomics
|
||||
false // areMultipleSubDevicesInContext
|
||||
false, // areMultipleSubDevicesInContext
|
||||
false // overrideSurfaceStateBaseAddress
|
||||
};
|
||||
|
||||
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args, true);
|
||||
@ -67,6 +69,7 @@ HWTEST2_F(SBATest, WhenProgramStateBaseAddressParametersIsCalledThenSBACmdHasBin
|
||||
0, // indirectObjectHeapBaseAddress
|
||||
0, // instructionHeapBaseAddress
|
||||
0, // globalHeapsBaseAddress
|
||||
0, // surfaceStateBaseAddress
|
||||
cmd, // stateBaseAddressCmd
|
||||
nullptr, // dsh
|
||||
nullptr, // ioh
|
||||
@ -79,7 +82,8 @@ HWTEST2_F(SBATest, WhenProgramStateBaseAddressParametersIsCalledThenSBACmdHasBin
|
||||
false, // useGlobalHeapsBaseAddress
|
||||
false, // isMultiOsContextCapable
|
||||
false, // useGlobalAtomics
|
||||
false // areMultipleSubDevicesInContext
|
||||
false, // areMultipleSubDevicesInContext
|
||||
false // overrideSurfaceStateBaseAddress
|
||||
};
|
||||
|
||||
StateBaseAddressHelper<FamilyType>::programStateBaseAddress(args);
|
||||
@ -87,6 +91,47 @@ HWTEST2_F(SBATest, WhenProgramStateBaseAddressParametersIsCalledThenSBACmdHasBin
|
||||
EXPECT_EQ(ssh.getMaxAvailableSpace() / 64 - 1, cmd->getBindlessSurfaceStateSize());
|
||||
EXPECT_EQ(ssh.getHeapGpuBase(), cmd->getBindlessSurfaceStateBaseAddress());
|
||||
EXPECT_TRUE(cmd->getBindlessSurfaceStateBaseAddressModifyEnable());
|
||||
|
||||
EXPECT_TRUE(cmd->getSurfaceStateBaseAddressModifyEnable());
|
||||
EXPECT_EQ(ssh.getHeapGpuBase(), cmd->getSurfaceStateBaseAddress());
|
||||
}
|
||||
|
||||
HWTEST2_F(SBATest,
|
||||
givenProgramSurfaceStateBaseAddressUsingHeapBaseWhenOverrideSurfaceStateBaseAddressUsedThenSbaDispatchedWithOverrideValue, IsAtLeastSkl) {
|
||||
using STATE_BASE_ADDRESS = typename FamilyType::STATE_BASE_ADDRESS;
|
||||
|
||||
EXPECT_NE(IGFX_BROADWELL, ::productFamily);
|
||||
|
||||
constexpr uint64_t surfaceStateBaseAddress = 0xBADA550000;
|
||||
|
||||
STATE_BASE_ADDRESS cmd;
|
||||
|
||||
StateBaseAddressHelperArgs<FamilyType> args = {
|
||||
0, // generalStateBase
|
||||
0, // indirectObjectHeapBaseAddress
|
||||
0, // instructionHeapBaseAddress
|
||||
0, // globalHeapsBaseAddress
|
||||
surfaceStateBaseAddress, // surfaceStateBaseAddress
|
||||
&cmd, // stateBaseAddressCmd
|
||||
nullptr, // dsh
|
||||
nullptr, // ioh
|
||||
&ssh, // ssh
|
||||
pDevice->getGmmHelper(), // gmmHelper
|
||||
0, // statelessMocsIndex
|
||||
MemoryCompressionState::NotApplicable, // memoryCompressionState
|
||||
false, // setInstructionStateBaseAddress
|
||||
false, // setGeneralStateBaseAddress
|
||||
false, // useGlobalHeapsBaseAddress
|
||||
false, // isMultiOsContextCapable
|
||||
false, // useGlobalAtomics
|
||||
false, // areMultipleSubDevicesInContext
|
||||
true // overrideSurfaceStateBaseAddress
|
||||
};
|
||||
|
||||
StateBaseAddressHelper<FamilyType>::programStateBaseAddress(args);
|
||||
|
||||
EXPECT_TRUE(cmd.getSurfaceStateBaseAddressModifyEnable());
|
||||
EXPECT_EQ(surfaceStateBaseAddress, cmd.getSurfaceStateBaseAddress());
|
||||
}
|
||||
|
||||
using SbaForBindlessTests = Test<DeviceFixture>;
|
||||
@ -96,7 +141,7 @@ HWTEST2_F(SbaForBindlessTests, givenGlobalBindlessBaseAddressWhenProgramStateBas
|
||||
|
||||
EXPECT_NE(IGFX_BROADWELL, ::productFamily);
|
||||
|
||||
uint64_t globalBindlessHeapsBaseAddress = 0x12340000;
|
||||
constexpr uint64_t globalBindlessHeapsBaseAddress = 0x12340000;
|
||||
|
||||
StackVec<char, 4096> buffer(4096);
|
||||
NEO::LinearStream cmdStream(buffer.begin(), buffer.size());
|
||||
@ -108,6 +153,7 @@ HWTEST2_F(SbaForBindlessTests, givenGlobalBindlessBaseAddressWhenProgramStateBas
|
||||
0, // indirectObjectHeapBaseAddress
|
||||
0, // instructionHeapBaseAddress
|
||||
globalBindlessHeapsBaseAddress, // globalHeapsBaseAddress
|
||||
0, // surfaceStateBaseAddress
|
||||
cmd, // stateBaseAddressCmd
|
||||
nullptr, // dsh
|
||||
nullptr, // ioh
|
||||
@ -120,16 +166,82 @@ HWTEST2_F(SbaForBindlessTests, givenGlobalBindlessBaseAddressWhenProgramStateBas
|
||||
true, // useGlobalHeapsBaseAddress
|
||||
false, // isMultiOsContextCapable
|
||||
false, // useGlobalAtomics
|
||||
false // areMultipleSubDevicesInContext
|
||||
false, // areMultipleSubDevicesInContext
|
||||
false // overrideSurfaceStateBaseAddress
|
||||
};
|
||||
|
||||
StateBaseAddressHelper<FamilyType>::programStateBaseAddress(args);
|
||||
|
||||
EXPECT_TRUE(cmd->getBindlessSurfaceStateBaseAddressModifyEnable());
|
||||
EXPECT_EQ(cmd->getBindlessSurfaceStateBaseAddress(), globalBindlessHeapsBaseAddress);
|
||||
EXPECT_EQ(globalBindlessHeapsBaseAddress, cmd->getBindlessSurfaceStateBaseAddress());
|
||||
|
||||
auto surfaceStateCount = StateBaseAddressHelper<FamilyType>::getMaxBindlessSurfaceStates();
|
||||
EXPECT_EQ(surfaceStateCount, cmd->getBindlessSurfaceStateSize());
|
||||
|
||||
EXPECT_TRUE(cmd->getBindlessSurfaceStateBaseAddressModifyEnable());
|
||||
EXPECT_EQ(globalBindlessHeapsBaseAddress, cmd->getBindlessSurfaceStateBaseAddress());
|
||||
|
||||
EXPECT_TRUE(cmd->getDynamicStateBaseAddressModifyEnable());
|
||||
EXPECT_TRUE(cmd->getDynamicStateBufferSizeModifyEnable());
|
||||
EXPECT_EQ(globalBindlessHeapsBaseAddress, cmd->getDynamicStateBaseAddress());
|
||||
|
||||
EXPECT_TRUE(cmd->getSurfaceStateBaseAddressModifyEnable());
|
||||
EXPECT_EQ(globalBindlessHeapsBaseAddress, cmd->getSurfaceStateBaseAddress());
|
||||
}
|
||||
|
||||
HWTEST2_F(SbaForBindlessTests,
|
||||
givenGlobalBindlessBaseAddressOverridenSurfaceStateBaseAddressWhenProgramStateBaseAddressThenSbaProgrammedCorrectly, IsAtLeastSkl) {
|
||||
using STATE_BASE_ADDRESS = typename FamilyType::STATE_BASE_ADDRESS;
|
||||
|
||||
EXPECT_NE(IGFX_BROADWELL, ::productFamily);
|
||||
|
||||
constexpr uint64_t globalBindlessHeapsBaseAddress = 0x12340000;
|
||||
constexpr uint64_t surfaceStateBaseAddress = 0xBADA550000;
|
||||
|
||||
StackVec<char, 4096> buffer(4096);
|
||||
NEO::LinearStream cmdStream(buffer.begin(), buffer.size());
|
||||
|
||||
STATE_BASE_ADDRESS *cmd = reinterpret_cast<STATE_BASE_ADDRESS *>(cmdStream.getSpace(0));
|
||||
|
||||
StateBaseAddressHelperArgs<FamilyType> args = {
|
||||
0, // generalStateBase
|
||||
0, // indirectObjectHeapBaseAddress
|
||||
0, // instructionHeapBaseAddress
|
||||
globalBindlessHeapsBaseAddress, // globalHeapsBaseAddress
|
||||
surfaceStateBaseAddress, // surfaceStateBaseAddress
|
||||
cmd, // stateBaseAddressCmd
|
||||
nullptr, // dsh
|
||||
nullptr, // ioh
|
||||
nullptr, // ssh
|
||||
pDevice->getGmmHelper(), // gmmHelper
|
||||
0, // statelessMocsIndex
|
||||
MemoryCompressionState::NotApplicable, // memoryCompressionState
|
||||
false, // setInstructionStateBaseAddress
|
||||
false, // setGeneralStateBaseAddress
|
||||
true, // useGlobalHeapsBaseAddress
|
||||
false, // isMultiOsContextCapable
|
||||
false, // useGlobalAtomics
|
||||
false, // areMultipleSubDevicesInContext
|
||||
true // overrideSurfaceStateBaseAddress
|
||||
};
|
||||
|
||||
StateBaseAddressHelper<FamilyType>::programStateBaseAddress(args);
|
||||
|
||||
EXPECT_TRUE(cmd->getBindlessSurfaceStateBaseAddressModifyEnable());
|
||||
EXPECT_EQ(globalBindlessHeapsBaseAddress, cmd->getBindlessSurfaceStateBaseAddress());
|
||||
|
||||
auto surfaceStateCount = StateBaseAddressHelper<FamilyType>::getMaxBindlessSurfaceStates();
|
||||
EXPECT_EQ(surfaceStateCount, cmd->getBindlessSurfaceStateSize());
|
||||
|
||||
EXPECT_TRUE(cmd->getBindlessSurfaceStateBaseAddressModifyEnable());
|
||||
EXPECT_EQ(globalBindlessHeapsBaseAddress, cmd->getBindlessSurfaceStateBaseAddress());
|
||||
|
||||
EXPECT_TRUE(cmd->getDynamicStateBaseAddressModifyEnable());
|
||||
EXPECT_TRUE(cmd->getDynamicStateBufferSizeModifyEnable());
|
||||
EXPECT_EQ(globalBindlessHeapsBaseAddress, cmd->getDynamicStateBaseAddress());
|
||||
|
||||
EXPECT_TRUE(cmd->getSurfaceStateBaseAddressModifyEnable());
|
||||
EXPECT_EQ(surfaceStateBaseAddress, cmd->getSurfaceStateBaseAddress());
|
||||
}
|
||||
|
||||
using IohSupported = IsWithinGfxCore<GFXCORE_FAMILY::IGFX_GEN9_CORE, GFXCORE_FAMILY::IGFX_GEN12LP_CORE>;
|
||||
@ -139,8 +251,8 @@ HWTEST2_F(SbaForBindlessTests, givenGlobalBindlessBaseAddressWhenPassingIndirect
|
||||
|
||||
EXPECT_NE(IGFX_BROADWELL, ::productFamily);
|
||||
|
||||
uint64_t globalBindlessHeapsBaseAddress = 0x12340000;
|
||||
uint64_t indirectObjectBaseAddress = 0x12340000;
|
||||
constexpr uint64_t globalBindlessHeapsBaseAddress = 0x12340000;
|
||||
constexpr uint64_t indirectObjectBaseAddress = 0x12340000;
|
||||
|
||||
StackVec<char, 4096> buffer(4096);
|
||||
NEO::LinearStream cmdStream(buffer.begin(), buffer.size());
|
||||
@ -152,6 +264,7 @@ HWTEST2_F(SbaForBindlessTests, givenGlobalBindlessBaseAddressWhenPassingIndirect
|
||||
indirectObjectBaseAddress, // indirectObjectHeapBaseAddress
|
||||
0, // instructionHeapBaseAddress
|
||||
globalBindlessHeapsBaseAddress, // globalHeapsBaseAddress
|
||||
0, // surfaceStateBaseAddress
|
||||
cmd, // stateBaseAddressCmd
|
||||
nullptr, // dsh
|
||||
nullptr, // ioh
|
||||
@ -164,7 +277,8 @@ HWTEST2_F(SbaForBindlessTests, givenGlobalBindlessBaseAddressWhenPassingIndirect
|
||||
true, // useGlobalHeapsBaseAddress
|
||||
false, // isMultiOsContextCapable
|
||||
false, // useGlobalAtomics
|
||||
false // areMultipleSubDevicesInContext
|
||||
false, // areMultipleSubDevicesInContext
|
||||
false // overrideSurfaceStateBaseAddress
|
||||
};
|
||||
|
||||
StateBaseAddressHelper<FamilyType>::programStateBaseAddress(args);
|
||||
@ -187,6 +301,7 @@ HWTEST2_F(SBATest, givenSbaWhenOverrideBindlessSurfaceBaseIsFalseThenBindlessSur
|
||||
0, // indirectObjectHeapBaseAddress
|
||||
0, // instructionHeapBaseAddress
|
||||
0, // globalHeapsBaseAddress
|
||||
0, // surfaceStateBaseAddress
|
||||
&stateBaseAddress, // stateBaseAddressCmd
|
||||
nullptr, // dsh
|
||||
nullptr, // ioh
|
||||
@ -199,7 +314,8 @@ HWTEST2_F(SBATest, givenSbaWhenOverrideBindlessSurfaceBaseIsFalseThenBindlessSur
|
||||
true, // useGlobalHeapsBaseAddress
|
||||
false, // isMultiOsContextCapable
|
||||
false, // useGlobalAtomics
|
||||
false // areMultipleSubDevicesInContext
|
||||
false, // areMultipleSubDevicesInContext
|
||||
false // overrideSurfaceStateBaseAddress
|
||||
};
|
||||
|
||||
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args, false);
|
||||
@ -212,7 +328,7 @@ HWTEST2_F(SBATest, givenGlobalBindlessBaseAddressWhenSshIsPassedThenBindlessSurf
|
||||
|
||||
EXPECT_NE(IGFX_BROADWELL, ::productFamily);
|
||||
|
||||
uint64_t globalBindlessHeapsBaseAddress = 0x12340000;
|
||||
constexpr uint64_t globalBindlessHeapsBaseAddress = 0x12340000;
|
||||
|
||||
StackVec<char, 4096> buffer(4096);
|
||||
NEO::LinearStream cmdStream(buffer.begin(), buffer.size());
|
||||
@ -224,6 +340,7 @@ HWTEST2_F(SBATest, givenGlobalBindlessBaseAddressWhenSshIsPassedThenBindlessSurf
|
||||
0, // indirectObjectHeapBaseAddress
|
||||
0, // instructionHeapBaseAddress
|
||||
globalBindlessHeapsBaseAddress, // globalHeapsBaseAddress
|
||||
0, // surfaceStateBaseAddress
|
||||
cmd, // stateBaseAddressCmd
|
||||
nullptr, // dsh
|
||||
nullptr, // ioh
|
||||
@ -236,7 +353,8 @@ HWTEST2_F(SBATest, givenGlobalBindlessBaseAddressWhenSshIsPassedThenBindlessSurf
|
||||
true, // useGlobalHeapsBaseAddress
|
||||
false, // isMultiOsContextCapable
|
||||
false, // useGlobalAtomics
|
||||
false // areMultipleSubDevicesInContext
|
||||
false, // areMultipleSubDevicesInContext
|
||||
false // overrideSurfaceStateBaseAddress
|
||||
};
|
||||
|
||||
StateBaseAddressHelper<FamilyType>::programStateBaseAddress(args);
|
||||
@ -248,7 +366,7 @@ HWTEST2_F(SBATest, givenSurfaceStateHeapWhenNotUsingGlobalHeapBaseThenBindlessSu
|
||||
|
||||
EXPECT_NE(IGFX_BROADWELL, ::productFamily);
|
||||
|
||||
uint64_t globalBindlessHeapsBaseAddress = 0x12340000;
|
||||
constexpr uint64_t globalBindlessHeapsBaseAddress = 0x12340000;
|
||||
|
||||
StackVec<char, 4096> buffer(4096);
|
||||
NEO::LinearStream cmdStream(buffer.begin(), buffer.size());
|
||||
@ -260,6 +378,7 @@ HWTEST2_F(SBATest, givenSurfaceStateHeapWhenNotUsingGlobalHeapBaseThenBindlessSu
|
||||
0, // indirectObjectHeapBaseAddress
|
||||
0, // instructionHeapBaseAddress
|
||||
globalBindlessHeapsBaseAddress, // globalHeapsBaseAddress
|
||||
0, // surfaceStateBaseAddress
|
||||
cmd, // stateBaseAddressCmd
|
||||
nullptr, // dsh
|
||||
nullptr, // ioh
|
||||
@ -272,7 +391,8 @@ HWTEST2_F(SBATest, givenSurfaceStateHeapWhenNotUsingGlobalHeapBaseThenBindlessSu
|
||||
false, // useGlobalHeapsBaseAddress
|
||||
false, // isMultiOsContextCapable
|
||||
false, // useGlobalAtomics
|
||||
false // areMultipleSubDevicesInContext
|
||||
false, // areMultipleSubDevicesInContext
|
||||
false // overrideSurfaceStateBaseAddress
|
||||
};
|
||||
|
||||
StateBaseAddressHelper<FamilyType>::programStateBaseAddress(args);
|
||||
@ -345,6 +465,7 @@ HWTEST2_F(SBATest, givenDebugFlagSetWhenAppendingSbaThenProgramCorrectL1CachePol
|
||||
0, // indirectObjectHeapBaseAddress
|
||||
0, // instructionHeapBaseAddress
|
||||
0, // globalHeapsBaseAddress
|
||||
0, // surfaceStateBaseAddress
|
||||
&sbaCmd, // stateBaseAddressCmd
|
||||
nullptr, // dsh
|
||||
nullptr, // ioh
|
||||
@ -357,7 +478,8 @@ HWTEST2_F(SBATest, givenDebugFlagSetWhenAppendingSbaThenProgramCorrectL1CachePol
|
||||
false, // useGlobalHeapsBaseAddress
|
||||
false, // isMultiOsContextCapable
|
||||
false, // useGlobalAtomics
|
||||
false // areMultipleSubDevicesInContext
|
||||
false, // areMultipleSubDevicesInContext
|
||||
false // overrideSurfaceStateBaseAddress
|
||||
};
|
||||
|
||||
for (const auto &input : testInputs) {
|
||||
@ -411,4 +533,4 @@ HWTEST2_F(SBATest, givenDebugFlagSetWhenAppendingRssThenProgramCorrectL1CachePol
|
||||
EXPECT_EQ(input.cachePolicy, rssCmd.getL1CachePolicyL1CacheControl());
|
||||
}
|
||||
memoryManager->freeGraphicsMemory(allocation);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user