Skip to content

Commit d3d93d1

Browse files
committed
Add check + test for L0 null program.
1 parent 4500fa9 commit d3d93d1

File tree

2 files changed

+46
-0
lines changed

2 files changed

+46
-0
lines changed

source/adapters/level_zero/kernel.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1142,6 +1142,9 @@ UR_APIEXPORT ur_result_t UR_APICALL urKernelCreateWithNativeHandle(
11421142
ur_kernel_handle_t *
11431143
RetKernel ///< [out] pointer to the handle of the kernel object created.
11441144
) {
1145+
if (!Program) {
1146+
return UR_RESULT_ERROR_INVALID_NULL_HANDLE;
1147+
}
11451148
ze_kernel_handle_t ZeKernel = ur_cast<ze_kernel_handle_t>(NativeKernel);
11461149
ur_kernel_handle_t_ *Kernel = nullptr;
11471150
try {

test/adapters/level_zero/urKernelCreateWithNativeHandle.cpp

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,46 @@ TEST_P(urLevelZeroKernelNativeHandleTest, OwnedHandleRelease) {
6161
ASSERT_SUCCESS(urKernelRelease(kernel));
6262
ASSERT_SUCCESS(urProgramRelease(program));
6363
}
64+
65+
TEST_P(urLevelZeroKernelNativeHandleTest, NullProgram) {
66+
ze_context_handle_t native_context;
67+
urContextGetNativeHandle(context, (ur_native_handle_t *)&native_context);
68+
69+
ze_device_handle_t native_device;
70+
urDeviceGetNativeHandle(device, (ur_native_handle_t *)&native_device);
71+
72+
std::shared_ptr<std::vector<char>> il_binary;
73+
uur::KernelsEnvironment::instance->LoadSource("foo", il_binary);
74+
75+
auto kernel_name =
76+
uur::KernelsEnvironment::instance->GetEntryPointNames("foo")[0];
77+
78+
ze_module_desc_t moduleDesc = {ZE_STRUCTURE_TYPE_MODULE_DESC};
79+
moduleDesc.format = ZE_MODULE_FORMAT_IL_SPIRV;
80+
moduleDesc.inputSize = il_binary->size();
81+
moduleDesc.pInputModule =
82+
reinterpret_cast<const uint8_t *>(il_binary->data());
83+
moduleDesc.pBuildFlags = "";
84+
ze_module_handle_t module;
85+
86+
ASSERT_EQ(zeModuleCreate(native_context, native_device, &moduleDesc,
87+
&module, NULL),
88+
ZE_RESULT_SUCCESS);
89+
90+
ze_kernel_desc_t kernelDesc = {ZE_STRUCTURE_TYPE_KERNEL_DESC};
91+
kernelDesc.pKernelName = kernel_name.c_str();
92+
93+
ze_kernel_handle_t native_kernel;
94+
95+
ASSERT_EQ(zeKernelCreate(module, &kernelDesc, &native_kernel),
96+
ZE_RESULT_SUCCESS);
97+
98+
ur_kernel_native_properties_t kprops = {
99+
UR_STRUCTURE_TYPE_KERNEL_NATIVE_PROPERTIES, nullptr, 1};
100+
101+
ur_kernel_handle_t kernel;
102+
EXPECT_EQ(urKernelCreateWithNativeHandle((ur_native_handle_t)native_kernel,
103+
context, nullptr, &kprops,
104+
&kernel),
105+
UR_RESULT_ERROR_INVALID_NULL_HANDLE);
106+
}

0 commit comments

Comments
 (0)