compute-runtime/shared/test/unit_test/kernel/kernel_raytracing_tests.cpp

41 lines
2.0 KiB
C++

/*
* Copyright (C) 2022 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "shared/source/device_binary_format/patchtokens_decoder.h"
#include "shared/source/kernel/kernel_descriptor.h"
#include "shared/source/kernel/kernel_descriptor_from_patchtokens.h"
#include "shared/test/common/device_binary_format/patchtokens_tests.h"
#include "shared/test/common/test_macros/test.h"
TEST(KernelDescriptorFromPatchtokens, GivenKernelWithRTDispatchGlobalsThenKernelDescriptorIsProperlyPopulated) {
std::vector<uint8_t> storage;
NEO::PatchTokenBinary::KernelFromPatchtokens kernelTokens = PatchTokensTestData::ValidEmptyKernel::create(storage);
NEO::KernelDescriptor dst{};
NEO::populateKernelDescriptor(dst, kernelTokens, 4);
EXPECT_EQ(NEO::undefined<NEO::CrossThreadDataOffset>, dst.payloadMappings.implicitArgs.rtDispatchGlobals.stateless);
EXPECT_EQ(0, dst.payloadMappings.implicitArgs.rtDispatchGlobals.pointerSize);
EXPECT_EQ(NEO::undefined<NEO::SurfaceStateHeapOffset>, dst.payloadMappings.implicitArgs.rtDispatchGlobals.bindful);
EXPECT_TRUE(NEO::isUndefinedOffset(dst.payloadMappings.implicitArgs.rtDispatchGlobals.bindless));
EXPECT_EQ(NEO::KernelDescriptor::BindfulAndStateless, dst.kernelAttributes.bufferAddressingMode);
iOpenCL::SPatchAllocateRTGlobalBuffer rtDispatchArg = {};
rtDispatchArg.Token = iOpenCL::PATCH_TOKEN_ALLOCATE_RT_GLOBAL_BUFFER;
rtDispatchArg.SurfaceStateHeapOffset = 1;
rtDispatchArg.DataParamOffset = 2;
rtDispatchArg.DataParamSize = 3;
kernelTokens.tokens.allocateRTGlobalBuffer = &rtDispatchArg;
NEO::populateKernelDescriptor(dst, kernelTokens, 4);
EXPECT_EQ(2, dst.payloadMappings.implicitArgs.rtDispatchGlobals.stateless);
EXPECT_EQ(3, dst.payloadMappings.implicitArgs.rtDispatchGlobals.pointerSize);
EXPECT_EQ(1, dst.payloadMappings.implicitArgs.rtDispatchGlobals.bindful);
EXPECT_TRUE(NEO::isUndefinedOffset(dst.payloadMappings.implicitArgs.rtDispatchGlobals.bindless));
}