fix: zero kernel residency container for shared system usm pointers
Signed-off-by: Zbigniew Zdanowicz <zbigniew.zdanowicz@intel.com>
This commit is contained in:
parent
f96fc552b2
commit
9419e702cc
|
@ -776,6 +776,7 @@ ze_result_t KernelImp::setArgBuffer(uint32_t argIndex, size_t argSize, const voi
|
|||
|
||||
if (allocData == nullptr) {
|
||||
if (NEO::debugManager.flags.DisableSystemPointerKernelArgument.get() != 1) {
|
||||
argumentsResidencyContainer[argIndex] = nullptr;
|
||||
const auto &argAsPtr = kernelImmData->getDescriptor().payloadMappings.explicitArgs[argIndex].as<NEO::ArgDescPointer>();
|
||||
auto patchLocation = ptrOffset(getCrossThreadData(), argAsPtr.stateless);
|
||||
patchWithRequiredSize(const_cast<uint8_t *>(patchLocation), argAsPtr.pointerSize, reinterpret_cast<uintptr_t>(requestedAddress));
|
||||
|
|
|
@ -333,11 +333,13 @@ TEST_F(SetKernelArgCacheTest, givenValidBufferArgumentWhenSetMultipleTimesThenSe
|
|||
EXPECT_EQ(mockKernel.kernelArgInfos[0].allocIdMemoryManagerCounter, svmAllocsManager->allocationsCounter);
|
||||
EXPECT_EQ(mockKernel.kernelArgInfos[0].allocId, allocData->getAllocId());
|
||||
|
||||
const auto &argumentsResidencyContainer = mockKernel.getArgumentsResidencyContainer();
|
||||
// different value - called
|
||||
auto secondSvmAllocation = svmAllocsManager->createSVMAlloc(4096, allocationProperties, context->rootDeviceIndices, context->deviceBitfields);
|
||||
svmAllocsManager->getSVMAlloc(secondSvmAllocation)->setAllocId(3u);
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, mockKernel.setArgBuffer(0, sizeof(secondSvmAllocation), &secondSvmAllocation));
|
||||
EXPECT_EQ(++callCounter, mockKernel.setArgBufferWithAllocCalled);
|
||||
EXPECT_NE(nullptr, argumentsResidencyContainer[0]);
|
||||
|
||||
// nullptr - not called, argInfo is updated
|
||||
EXPECT_FALSE(mockKernel.kernelArgInfos[0].isSetToNullptr);
|
||||
|
@ -345,6 +347,7 @@ TEST_F(SetKernelArgCacheTest, givenValidBufferArgumentWhenSetMultipleTimesThenSe
|
|||
EXPECT_EQ(ZE_RESULT_SUCCESS, mockKernel.setArgBuffer(0, sizeof(nullptr), nullptr));
|
||||
EXPECT_EQ(callCounter, mockKernel.setArgBufferWithAllocCalled);
|
||||
EXPECT_TRUE(mockKernel.kernelArgInfos[0].isSetToNullptr);
|
||||
EXPECT_EQ(nullptr, argumentsResidencyContainer[0]);
|
||||
|
||||
// nullptr again - not called
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, mockKernel.setArgBuffer(0, sizeof(nullptr), nullptr));
|
||||
|
@ -355,6 +358,7 @@ TEST_F(SetKernelArgCacheTest, givenValidBufferArgumentWhenSetMultipleTimesThenSe
|
|||
EXPECT_EQ(ZE_RESULT_SUCCESS, mockKernel.setArgBuffer(0, sizeof(secondSvmAllocation), &secondSvmAllocation));
|
||||
EXPECT_EQ(++callCounter, mockKernel.setArgBufferWithAllocCalled);
|
||||
EXPECT_FALSE(mockKernel.kernelArgInfos[0].isSetToNullptr);
|
||||
EXPECT_NE(nullptr, argumentsResidencyContainer[0]);
|
||||
|
||||
// allocations counter == 0 called
|
||||
svmAllocsManager->allocationsCounter = 0;
|
||||
|
@ -374,6 +378,7 @@ TEST_F(SetKernelArgCacheTest, givenValidBufferArgumentWhenSetMultipleTimesThenSe
|
|||
ASSERT_EQ(mockKernel.kernelArgInfos[0].value, secondSvmAllocation);
|
||||
ASSERT_EQ(mockKernel.kernelArgInfos[0].allocId, 0u);
|
||||
EXPECT_EQ(callCounter, mockKernel.setArgBufferWithAllocCalled);
|
||||
EXPECT_EQ(nullptr, argumentsResidencyContainer[0]);
|
||||
|
||||
svmAllocsManager->freeSVMAlloc(svmAllocation);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue