feature: add programming heapless mode in SBA

Related-To: NEO-7621
Signed-off-by: Kamil Kopryk <kamil.kopryk@intel.com>
This commit is contained in:
Kamil Kopryk
2023-11-24 13:39:13 +00:00
committed by Compute-Runtime-Automation
parent 27751ac0cb
commit 982c2d665b
7 changed files with 21 additions and 5 deletions

View File

@@ -54,6 +54,7 @@ struct StateBaseAddressHelperArgs {
bool overrideSurfaceStateBaseAddress = false;
bool isDebuggerActive = false;
bool doubleSbaWa = false;
bool heaplessModeEnabled = false;
};
template <typename GfxFamily>
@@ -76,5 +77,7 @@ struct StateBaseAddressHelper {
static void programBindingTableBaseAddress(LinearStream &commandStream, uint64_t baseAddress, uint32_t sizeInPages, GmmHelper *gmmHelper);
static uint32_t getMaxBindlessSurfaceStates();
static void programHeaplessStateBaseAddress(STATE_BASE_ADDRESS &sba);
};
} // namespace NEO

View File

@@ -23,6 +23,10 @@ template <typename GfxFamily>
void StateBaseAddressHelper<GfxFamily>::programStateBaseAddressIntoCommandStream(StateBaseAddressHelperArgs<GfxFamily> &args, NEO::LinearStream &commandStream) {
StateBaseAddressHelper<GfxFamily>::programStateBaseAddress(args);
if (args.heaplessModeEnabled) {
programHeaplessStateBaseAddress(*args.stateBaseAddressCmd);
}
auto cmdSpace = StateBaseAddressHelper<GfxFamily>::getSpaceForSbaCmd(commandStream);
*cmdSpace = *args.stateBaseAddressCmd;
@@ -133,6 +137,10 @@ typename GfxFamily::STATE_BASE_ADDRESS *StateBaseAddressHelper<GfxFamily>::getSp
return cmdStream.getSpaceForCmd<typename GfxFamily::STATE_BASE_ADDRESS>();
}
template <typename GfxFamily>
void StateBaseAddressHelper<GfxFamily>::programHeaplessStateBaseAddress(STATE_BASE_ADDRESS &sba) {
}
template <typename GfxFamily>
void StateBaseAddressHelper<GfxFamily>::programBindingTableBaseAddress(LinearStream &commandStream, const IndirectHeap &ssh, GmmHelper *gmmHelper) {
StateBaseAddressHelper<GfxFamily>::programBindingTableBaseAddress(commandStream, ssh.getHeapGpuBase(), ssh.getHeapSizeInPages(), gmmHelper);