Update to use igc indirect detection v3. Fix for not detecting indirects
passed as implicit arguments.
Related-To: NEO-11396
Signed-off-by: Dominik Dabek <dominik.dabek@intel.com>
- 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>
Image implicit args allocation is not related to redescribed image
and is already added to the residencyContainer in setArgImage.
Signed-off-by: Fabian Zwolinski <fabian.zwolinski@intel.com>
rename private scratch space into scratch space slot 1 as it can be generic
Related-To: NEO-9944
Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
rename private scratch space into scratch space slot 1 as it can be generic
Related-To: NEO-9944
Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
Read indirect_stateless_count in module external functions.
If greater than 0, mark all kernels that have the has_stack_calls flag
set from this module as having indirect accesses.
Related-To: NEO-7712
Signed-off-by: Dominik Dabek <dominik.dabek@intel.com>
Read indirect detection version intel compat notes from zebin.
This is to prepare for enabling indirect access optimization in AOT
built kernels.
Related-To: NEO-7712
Signed-off-by: Dominik Dabek <dominik.dabek@intel.com>
bindless slot 0: image
bindless slot 1: image implicit args
bindless slot 2: redescribed image
Redescribed image moved one slot higher.
Separate allocation is created for new bindless slot.
Related-To: NEO-9740
Signed-off-by: Fabian Zwolinski <fabian.zwolinski@intel.com>
bindless slot 0: image
bindless slot 1: image implicit args
bindless slot 2: redescribed image
Redescribed image moved one slot higher.
Separate allocation is created for new bindless slot.
Related-To: NEO-9740
Signed-off-by: Fabian Zwolinski <fabian.zwolinski@intel.com>
- if binding table entries are used in bindless kernel, program Binding
table
Related-To: NEO-7063
Signed-off-by: Mateusz Hoppe <mateusz.hoppe@intel.com>
- global and const buffer may have BTI index allocated, ssh template
must be allocated with size for all stateful args
Related-To: NEO-7063
Signed-off-by: Mateusz Hoppe <mateusz.hoppe@intel.com>
- usingSurfaceStateHeap indicates if any of the args is using local ssh
in bindless kernels:
without global allocator - ssh is used for all args
with global bindless allocator - ssh used only for buffer with offset
set in surface state, otherwise not used
When any of the args is using ssh - getSurfaceStateHeapDataSize() returns
non-zero size.
Related-To: NEO-7063
Signed-off-by: Mateusz Hoppe <mateusz.hoppe@intel.com>
Related-To: NEO-8350
- given a virtual address part of a mapping to multiple physical
allocations, then the buffer surface state size is increased to
include the allocations which follow the current allocation, which
allows users access to the remainder of the mapped buffer.
Signed-off-by: Spruit, Neil R <neil.r.spruit@intel.com>
If several kernel heaps are sharing the same page then use a temporary
buffer to collect all of them and transfer to memory in one shot.
Previously there were several transfers performed (one per kernel) and,
observably, they happened not to be immediately effective at times.
Related-To: NEO-7788
Signed-off-by: Maciej Bielski <maciej.bielski@intel.com>
So far, there is a separate page allocated for each kernel's ISA within
`KernelImmutableData::initialize()`. Apparently the ISA blocks are often
much smaller than a 64k page, which leads to poor memory utilization and
was even observed to cause the device OOM error if a single module has
several keys.
Improve the situation by reusing the parent allocation (owned by the
module instance) for modules, which kernel ISAs can fit together within
a single 64k page. This improves the memory utilization on a single
module level.
Related-To: NEO-7788
Signed-off-by: Maciej Bielski <maciej.bielski@intel.com>
So far, there is a separate page allocated for each kernel's ISA within
`KernelImmutableData::initialize()`. Apparently the ISA blocks are often
much smaller than a 64k page, which leads to poor memory utilization and
was even observed to cause the device OOM error if a single module has
several keys.
Improve the situation by reusing the parent allocation (owned by the
module instance) for modules, which kernel ISAs can fit together within
a single 64k page. This improves the memory utilization on a single
module level.
Related-To: NEO-7788
Signed-off-by: Maciej Bielski <maciej.bielski@intel.com>