fix: assume stateless access to buffers

- if buffers are not bindful or bindless, set stateless addressing mode
for buffers

Related-To: NEO-12800

Signed-off-by: Mateusz Hoppe <mateusz.hoppe@intel.com>
This commit is contained in:
Mateusz Hoppe 2024-12-30 10:42:13 +00:00 committed by Compute-Runtime-Automation
parent a258c9b010
commit 44264b2b5c
2 changed files with 26 additions and 0 deletions

View File

@ -1046,7 +1046,11 @@ DecodeError decodeZeInfoKernelPayloadArguments(KernelDescriptor &dst, Yaml::Yaml
if (bindlessBufferAccess) { if (bindlessBufferAccess) {
dst.kernelAttributes.bufferAddressingMode = KernelDescriptor::BindlessAndStateless; dst.kernelAttributes.bufferAddressingMode = KernelDescriptor::BindlessAndStateless;
} else if (!bindfulBufferAccess) {
DEBUG_BREAK_IF(dst.kernelAttributes.numArgsStateful != 0 && !dst.kernelAttributes.flags.usesImages);
dst.kernelAttributes.bufferAddressingMode = KernelDescriptor::Stateless;
} }
if (bindlessImageAccess) { if (bindlessImageAccess) {
dst.kernelAttributes.imageAddressingMode = KernelDescriptor::Bindless; dst.kernelAttributes.imageAddressingMode = KernelDescriptor::Bindless;
} }

View File

@ -1551,6 +1551,28 @@ kernels:
EXPECT_EQ(KernelDescriptor::BindlessAndStateless, kernelDescriptor->kernelAttributes.bufferAddressingMode); EXPECT_EQ(KernelDescriptor::BindlessAndStateless, kernelDescriptor->kernelAttributes.bufferAddressingMode);
} }
TEST_F(decodeZeInfoKernelEntryTest, GivenStatelessArgBufferAndMissingHas4GbBuffersInExecEnvWhenDecodingZeInfoThenAssumeBuffersAccessedInStatelessMode) {
ConstStringRef zeinfo = R"===(
kernels:
- name : some_kernel
execution_env:
simd_size: 8
payload_arguments:
- arg_type: arg_bypointer
offset: 0
size: 8
arg_index: 0
addrmode: stateless
addrspace: global
access_type: readwrite
...
)===";
auto err = decodeZeInfoKernelEntry(zeinfo);
EXPECT_EQ(NEO::DecodeError::success, err);
EXPECT_EQ(KernelDescriptor::Stateless, kernelDescriptor->kernelAttributes.bufferAddressingMode);
}
TEST_F(decodeZeInfoKernelEntryTest, GivenStatefulImplicitArgsWhenDecodingZeInfoThenNumberOfStatefulArgsIsCorrect) { TEST_F(decodeZeInfoKernelEntryTest, GivenStatefulImplicitArgsWhenDecodingZeInfoThenNumberOfStatefulArgsIsCorrect) {
ConstStringRef zeinfo = R"===( ConstStringRef zeinfo = R"===(
kernels: kernels: