File: kernel_raytracing_tests.cpp

package info (click to toggle)
intel-compute-runtime 25.44.36015.8-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 79,632 kB
  • sloc: cpp: 931,547; lisp: 2,074; sh: 719; makefile: 162; python: 21
file content (40 lines) | stat: -rw-r--r-- 2,009 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/*
 * 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));
}