feature: add bindless samplers support to level zero

- samplers using bindless adressing require patching bindless offsets to
sampler states on kernel's cross thread data

Related-To: NEO-10505

Signed-off-by: Mateusz Hoppe <mateusz.hoppe@intel.com>
This commit is contained in:
Mateusz Hoppe
2024-03-29 06:44:27 +00:00
committed by Compute-Runtime-Automation
parent 420e1391b2
commit f86d4220a5
13 changed files with 210 additions and 14 deletions

View File

@@ -55,9 +55,17 @@ void StateBaseAddressHelper<GfxFamily>::appendStateBaseAddressParameters(
const auto surfaceStateCount = args.ssh->getMaxAvailableSpace() / sizeof(RENDER_SURFACE_STATE);
args.stateBaseAddressCmd->setBindlessSurfaceStateSize(static_cast<uint32_t>(surfaceStateCount - 1));
}
}
args.stateBaseAddressCmd->setBindlessSamplerStateBaseAddressModifyEnable(true);
if (args.dsh) {
args.stateBaseAddressCmd->setBindlessSamplerStateBaseAddress(args.dsh->getHeapGpuBase());
args.stateBaseAddressCmd->setBindlessSamplerStateBufferSize(args.dsh->getHeapSizeInPages());
args.stateBaseAddressCmd->setBindlessSamplerStateBaseAddressModifyEnable(true);
}
} else {
args.stateBaseAddressCmd->setBindlessSamplerStateBaseAddressModifyEnable(true);
args.stateBaseAddressCmd->setBindlessSamplerStateBaseAddress(args.globalHeapsBaseAddress);
args.stateBaseAddressCmd->setBindlessSamplerStateBufferSize(MemoryConstants::sizeOf4GBinPageEntities);
}
auto &productHelper = args.gmmHelper->getRootDeviceEnvironment().template getHelper<ProductHelper>();