From 82bda4febcf4fdeca7fe48a2fa938b01eda3c2e6 Mon Sep 17 00:00:00 2001 From: Jaroslaw Chodor Date: Fri, 28 Feb 2020 07:20:33 +0100 Subject: [PATCH] Kernel descriptor, slm - don't use byVal Change-Id: I673179ca5caa610038805b91a961005db52ad28a --- shared/source/kernel/kernel_descriptor_from_patchtokens.cpp | 5 ++++- .../kernel/kernel_descriptor_from_patchtokens_tests.cpp | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/shared/source/kernel/kernel_descriptor_from_patchtokens.cpp b/shared/source/kernel/kernel_descriptor_from_patchtokens.cpp index 4ce5df27f5..f83279482c 100644 --- a/shared/source/kernel/kernel_descriptor_from_patchtokens.cpp +++ b/shared/source/kernel/kernel_descriptor_from_patchtokens.cpp @@ -392,6 +392,7 @@ void populateArgDescriptor(KernelDescriptor &dst, size_t argNum, const PatchToke dst.kernelAttributes.flags.usesSamplers = true; } break; case PatchTokenBinary::ArgObjectType::Slm: { + markArgAsPatchable(dst, argNum); auto &asBufferArg = dst.payloadMappings.explicitArgs[argNum].as(true); asBufferArg.requiredSlmAlignment = src.metadata.slm.token->SourceOffset; asBufferArg.slmOffset = src.metadata.slm.token->Offset; @@ -416,7 +417,9 @@ void populateArgDescriptor(KernelDescriptor &dst, size_t argNum, const PatchToke } for (auto &byValArg : src.byValMap) { - populateKernelArgDescriptor(dst, argNum, *byValArg); + if (PatchTokenBinary::ArgObjectType::Slm != src.objectType) { + populateKernelArgDescriptor(dst, argNum, *byValArg); + } } if (src.objectId) { diff --git a/shared/test/unit_test/kernel/kernel_descriptor_from_patchtokens_tests.cpp b/shared/test/unit_test/kernel/kernel_descriptor_from_patchtokens_tests.cpp index 0804c824a9..065c295977 100644 --- a/shared/test/unit_test/kernel/kernel_descriptor_from_patchtokens_tests.cpp +++ b/shared/test/unit_test/kernel/kernel_descriptor_from_patchtokens_tests.cpp @@ -1047,6 +1047,7 @@ TEST(KernelDescriptorFromPatchtokens, GivenKernelWithSlmArgumentAndMetadataThenK slmDesc.SourceOffset = 64; kernelTokens.tokens.kernelArgs[0].metadata.slm.token = &slmDesc; + kernelTokens.tokens.kernelArgs[0].byValMap.push_back(&slmDesc); NEO::KernelDescriptor dst = {}; NEO::populateKernelDescriptor(dst, kernelTokens, sizeof(void *)); EXPECT_TRUE(dst.payloadMappings.explicitArgs[0].is());