Kernel descriptor, slm - don't use byVal

Change-Id: I673179ca5caa610038805b91a961005db52ad28a
This commit is contained in:
Jaroslaw Chodor
2020-02-28 07:20:33 +01:00
parent 424120a86e
commit 82bda4febc
2 changed files with 5 additions and 1 deletions

View File

@@ -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<ArgDescPointer>(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) {

View File

@@ -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<NEO::ArgDescriptor::ArgTPointer>());