Skip to content

Commit 8c2cb54

Browse files
Set correct bindless offset in arg descriptor
Signed-off-by: Maciej Plewka <maciej.plewka@intel.com>
1 parent 00b2a28 commit 8c2cb54

File tree

2 files changed

+12
-4
lines changed

2 files changed

+12
-4
lines changed

opencl/test/unit_test/program/kernel_info_from_patchtokens_tests.cpp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (C) 2019-2020 Intel Corporation
2+
* Copyright (C) 2019-2021 Intel Corporation
33
*
44
* SPDX-License-Identifier: MIT
55
*
@@ -367,19 +367,27 @@ TEST(KernelInfoFromPatchTokens, GivenKernelWithStatelessObjectArgWhenAddressingM
367367
std::vector<uint8_t> storage;
368368
NEO::PatchTokenBinary::KernelFromPatchtokens kernelTokens = PatchTokensTestData::ValidEmptyKernel::create(storage);
369369

370+
auto surfaceStateHeapOffset = 0x40;
371+
auto dataParamOffset = 0x32;
372+
370373
iOpenCL::SPatchStatelessGlobalMemoryObjectKernelArgument globalMemArg = {};
371374
globalMemArg.Token = iOpenCL::PATCH_TOKEN_STATELESS_GLOBAL_MEMORY_OBJECT_KERNEL_ARGUMENT;
372375
globalMemArg.Size = sizeof(iOpenCL::SPatchStatelessGlobalMemoryObjectKernelArgument);
373376
globalMemArg.ArgumentNumber = 0;
374-
globalMemArg.SurfaceStateHeapOffset = 0x40;
377+
globalMemArg.SurfaceStateHeapOffset = surfaceStateHeapOffset;
378+
globalMemArg.DataParamOffset = dataParamOffset;
375379

376380
kernelTokens.tokens.kernelArgs.resize(1);
377381
kernelTokens.tokens.kernelArgs[0].objectArg = &globalMemArg;
378382
NEO::KernelInfo kernelInfo = {};
379383
NEO::populateKernelInfo(kernelInfo, kernelTokens, sizeof(void *));
380384
auto &argPointer = kernelInfo.kernelDescriptor.payloadMappings.explicitArgs[0].as<NEO::ArgDescPointer>(true);
381385
EXPECT_TRUE(NEO::isValidOffset(argPointer.bindless));
386+
EXPECT_TRUE(NEO::isValidOffset(argPointer.stateless));
382387
EXPECT_FALSE(NEO::isValidOffset(argPointer.bindful));
388+
389+
EXPECT_EQ(argPointer.bindless, surfaceStateHeapOffset);
390+
EXPECT_EQ(argPointer.stateless, dataParamOffset);
383391
}
384392

385393
TEST(KernelInfoFromPatchTokens, GivenKernelWithStatelessObjectArgWhenAddressingModeIsBindfulThenBindlessOffsetIsSetProperly) {

shared/source/kernel/kernel_descriptor_from_patchtokens.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,8 @@ void populatePointerKernelArg(ArgDescPointer &dst,
140140

141141
case KernelDescriptor::BindlessAndStateless:
142142
dst.bindful = undefined<SurfaceStateHeapOffset>;
143-
dst.stateless = undefined<CrossThreadDataOffset>;
144-
dst.bindless = stateless;
143+
dst.stateless = stateless;
144+
dst.bindless = bindless;
145145
dst.pointerSize = pointerSize;
146146
break;
147147
}

0 commit comments

Comments
 (0)