fix: correclty program StateBaseAddress in global bindless mode

- prepare bindful ssh when kernel requires ssh heap and
SurfaceStateBaseAddress
- remove lastAppendedKernelBindlesMode - local ssh heap may be needed
for bindless kernels with scratch or misaligned buffer args
- use ssh heap gpu address to program SurfaceStateBaseAddress, global base is
used for BindlessSurfaceState and DynamicState

Related-To: NEO-7063

Signed-off-by: Mateusz Hoppe <mateusz.hoppe@intel.com>
This commit is contained in:
Mateusz Hoppe
2024-09-19 14:35:03 +00:00
committed by Compute-Runtime-Automation
parent 200acbe743
commit 4a068c8eab
15 changed files with 234 additions and 230 deletions

View File

@@ -27,20 +27,12 @@ inline size_t getStateSize(const IndirectHeap &heap, const bool useGlobalHeaps)
}
}
inline uint64_t getStateBaseAddress(const IndirectHeap &heap, const bool useGlobalHeaps, const bool isBindlessKernel) {
if (useGlobalHeaps && isBindlessKernel) {
return heap.getGraphicsAllocation()->getGpuBaseAddress();
} else {
return heap.getHeapGpuBase();
}
inline uint64_t getStateBaseAddressForSsh(const IndirectHeap &heap, const bool useGlobalHeaps) {
return heap.getHeapGpuBase();
}
inline size_t getStateSize(const IndirectHeap &heap, const bool useGlobalHeaps, const bool isBindlessKernel) {
if (useGlobalHeaps && isBindlessKernel) {
return MemoryConstants::sizeOf4GBinPageEntities;
} else {
return heap.getHeapSizeInPages();
}
inline size_t getStateSizeForSsh(const IndirectHeap &heap, const bool useGlobalHeaps) {
return heap.getHeapSizeInPages();
}
} // namespace NEO