Skip to content

Commit bc54043

Browse files
committed
[OpenCL] Make extension function lookup return unusupported error
This commit changes the error code of failing to look up extension pointers in OpenCL return UR_RESULT_ERROR_UNSUPPORTED_FEATURE instead of UR_RESULT_ERROR_INVALID_VALUE. Likewise, some of the places this lookup was used, error would return UR_RESULT_ERROR_INVALID_OPERATION. The motivation behind this change is to make the error codes for cases where extensions are not supported for the OpenCL target clearer. Signed-off-by: Larsen, Steffen <[email protected]>
1 parent 6513abc commit bc54043

File tree

3 files changed

+27
-27
lines changed

3 files changed

+27
-27
lines changed

source/adapters/opencl/command_buffer.cpp

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ UR_APIEXPORT ur_result_t UR_APICALL urCommandBufferCreateExp(
2626
CLContext, cl_ext::ExtFuncPtrCache->clCreateCommandBufferKHRCache,
2727
cl_ext::CreateCommandBufferName, &clCreateCommandBufferKHR);
2828

29-
if (!clCreateCommandBufferKHR || Res != CL_SUCCESS)
30-
return UR_RESULT_ERROR_INVALID_OPERATION;
29+
if (Res != CL_SUCCESS)
30+
return Res;
3131

3232
auto CLCommandBuffer = clCreateCommandBufferKHR(
3333
1, cl_adapter::cast<cl_command_queue *>(&Queue), nullptr, &Res);
@@ -55,8 +55,8 @@ urCommandBufferRetainExp(ur_exp_command_buffer_handle_t hCommandBuffer) {
5555
CLContext, cl_ext::ExtFuncPtrCache->clRetainCommandBufferKHRCache,
5656
cl_ext::RetainCommandBufferName, &clRetainCommandBuffer);
5757

58-
if (!clRetainCommandBuffer || Res != CL_SUCCESS)
59-
return UR_RESULT_ERROR_INVALID_OPERATION;
58+
if (Res != CL_SUCCESS)
59+
return Res;
6060

6161
CL_RETURN_ON_FAILURE(clRetainCommandBuffer(hCommandBuffer->CLCommandBuffer));
6262
return UR_RESULT_SUCCESS;
@@ -73,8 +73,8 @@ urCommandBufferReleaseExp(ur_exp_command_buffer_handle_t hCommandBuffer) {
7373
CLContext, cl_ext::ExtFuncPtrCache->clReleaseCommandBufferKHRCache,
7474
cl_ext::ReleaseCommandBufferName, &clReleaseCommandBufferKHR);
7575

76-
if (!clReleaseCommandBufferKHR || Res != CL_SUCCESS)
77-
return UR_RESULT_ERROR_INVALID_OPERATION;
76+
if (Res != CL_SUCCESS)
77+
return Res;
7878

7979
CL_RETURN_ON_FAILURE(
8080
clReleaseCommandBufferKHR(hCommandBuffer->CLCommandBuffer));
@@ -90,8 +90,8 @@ urCommandBufferFinalizeExp(ur_exp_command_buffer_handle_t hCommandBuffer) {
9090
CLContext, cl_ext::ExtFuncPtrCache->clFinalizeCommandBufferKHRCache,
9191
cl_ext::FinalizeCommandBufferName, &clFinalizeCommandBufferKHR);
9292

93-
if (!clFinalizeCommandBufferKHR || Res != CL_SUCCESS)
94-
return UR_RESULT_ERROR_INVALID_OPERATION;
93+
if (Res != CL_SUCCESS)
94+
return Res;
9595

9696
CL_RETURN_ON_FAILURE(
9797
clFinalizeCommandBufferKHR(hCommandBuffer->CLCommandBuffer));
@@ -114,8 +114,8 @@ UR_APIEXPORT ur_result_t UR_APICALL urCommandBufferAppendKernelLaunchExp(
114114
CLContext, cl_ext::ExtFuncPtrCache->clCommandNDRangeKernelKHRCache,
115115
cl_ext::CommandNRRangeKernelName, &clCommandNDRangeKernelKHR);
116116

117-
if (!clCommandNDRangeKernelKHR || Res != CL_SUCCESS)
118-
return UR_RESULT_ERROR_INVALID_OPERATION;
117+
if (Res != CL_SUCCESS)
118+
return Res;
119119

120120
CL_RETURN_ON_FAILURE(clCommandNDRangeKernelKHR(
121121
hCommandBuffer->CLCommandBuffer, nullptr, nullptr,
@@ -161,8 +161,8 @@ UR_APIEXPORT ur_result_t UR_APICALL urCommandBufferAppendMemBufferCopyExp(
161161
CLContext, cl_ext::ExtFuncPtrCache->clCommandCopyBufferKHRCache,
162162
cl_ext::CommandCopyBufferName, &clCommandCopyBufferKHR);
163163

164-
if (!clCommandCopyBufferKHR || Res != CL_SUCCESS)
165-
return UR_RESULT_ERROR_INVALID_OPERATION;
164+
if (Res != CL_SUCCESS)
165+
return Res;
166166

167167
CL_RETURN_ON_FAILURE(clCommandCopyBufferKHR(
168168
hCommandBuffer->CLCommandBuffer, nullptr,
@@ -198,8 +198,8 @@ UR_APIEXPORT ur_result_t UR_APICALL urCommandBufferAppendMemBufferCopyRectExp(
198198
CLContext, cl_ext::ExtFuncPtrCache->clCommandCopyBufferRectKHRCache,
199199
cl_ext::CommandCopyBufferRectName, &clCommandCopyBufferRectKHR);
200200

201-
if (!clCommandCopyBufferRectKHR || Res != CL_SUCCESS)
202-
return UR_RESULT_ERROR_INVALID_OPERATION;
201+
if (Res != CL_SUCCESS)
202+
return Res;
203203

204204
CL_RETURN_ON_FAILURE(clCommandCopyBufferRectKHR(
205205
hCommandBuffer->CLCommandBuffer, nullptr,
@@ -287,8 +287,8 @@ UR_APIEXPORT ur_result_t UR_APICALL urCommandBufferAppendMemBufferFillExp(
287287
CLContext, cl_ext::ExtFuncPtrCache->clCommandFillBufferKHRCache,
288288
cl_ext::CommandFillBufferName, &clCommandFillBufferKHR);
289289

290-
if (!clCommandFillBufferKHR || Res != CL_SUCCESS)
291-
return UR_RESULT_ERROR_INVALID_OPERATION;
290+
if (Res != CL_SUCCESS)
291+
return Res;
292292

293293
CL_RETURN_ON_FAILURE(clCommandFillBufferKHR(
294294
hCommandBuffer->CLCommandBuffer, nullptr,
@@ -344,8 +344,8 @@ UR_APIEXPORT ur_result_t UR_APICALL urCommandBufferEnqueueExp(
344344
CLContext, cl_ext::ExtFuncPtrCache->clEnqueueCommandBufferKHRCache,
345345
cl_ext::EnqueueCommandBufferName, &clEnqueueCommandBufferKHR);
346346

347-
if (!clEnqueueCommandBufferKHR || Res != CL_SUCCESS)
348-
return UR_RESULT_ERROR_INVALID_OPERATION;
347+
if (Res != CL_SUCCESS)
348+
return Res;
349349

350350
const uint32_t NumberOfQueues = 1;
351351

@@ -387,8 +387,8 @@ UR_APIEXPORT ur_result_t UR_APICALL urCommandBufferGetInfoExp(
387387
CLContext, cl_ext::ExtFuncPtrCache->clGetCommandBufferInfoKHRCache,
388388
cl_ext::GetCommandBufferInfoName, &clGetCommandBufferInfoKHR);
389389

390-
if (!clGetCommandBufferInfoKHR || Res != CL_SUCCESS)
391-
return UR_RESULT_ERROR_INVALID_OPERATION;
390+
if (Res != CL_SUCCESS)
391+
return Res;
392392

393393
if (propName != UR_EXP_COMMAND_BUFFER_INFO_REFERENCE_COUNT) {
394394
return UR_RESULT_ERROR_INVALID_ENUMERATION;

source/adapters/opencl/common.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -365,9 +365,9 @@ static ur_result_t getExtFuncFromContext(cl_context Context,
365365
if (It != FPtrMap.end()) {
366366
auto F = It->second;
367367
// if cached that extension is not available return nullptr and
368-
// UR_RESULT_ERROR_INVALID_VALUE
368+
// UR_RESULT_ERROR_UNSUPPORTED_FEATURE
369369
*Fptr = F;
370-
return F ? UR_RESULT_SUCCESS : UR_RESULT_ERROR_INVALID_VALUE;
370+
return F ? UR_RESULT_SUCCESS : UR_RESULT_ERROR_UNSUPPORTED_FEATURE;
371371
}
372372

373373
cl_uint DeviceCount;
@@ -401,7 +401,7 @@ static ur_result_t getExtFuncFromContext(cl_context Context,
401401
if (!FuncPtr) {
402402
// Cache that the extension is not available
403403
FPtrMap[Context] = nullptr;
404-
return UR_RESULT_ERROR_INVALID_VALUE;
404+
return UR_RESULT_ERROR_UNSUPPORTED_FEATURE;
405405
}
406406

407407
*Fptr = FuncPtr;

source/adapters/opencl/enqueue.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -351,8 +351,8 @@ UR_APIEXPORT ur_result_t UR_APICALL urEnqueueDeviceGlobalVariableWrite(
351351
Ctx, cl_ext::ExtFuncPtrCache->clEnqueueWriteGlobalVariableCache,
352352
cl_ext::EnqueueWriteGlobalVariableName, &F);
353353

354-
if (!F || Res != CL_SUCCESS)
355-
return UR_RESULT_ERROR_INVALID_OPERATION;
354+
if (Res != CL_SUCCESS)
355+
return Res;
356356

357357
Res = F(cl_adapter::cast<cl_command_queue>(hQueue),
358358
cl_adapter::cast<cl_program>(hProgram), name, blockingWrite, count,
@@ -382,8 +382,8 @@ UR_APIEXPORT ur_result_t UR_APICALL urEnqueueDeviceGlobalVariableRead(
382382
Ctx, cl_ext::ExtFuncPtrCache->clEnqueueReadGlobalVariableCache,
383383
cl_ext::EnqueueReadGlobalVariableName, &F);
384384

385-
if (!F || Res != CL_SUCCESS)
386-
return UR_RESULT_ERROR_INVALID_OPERATION;
385+
if (Res != CL_SUCCESS)
386+
return Res;
387387

388388
Res = F(cl_adapter::cast<cl_command_queue>(hQueue),
389389
cl_adapter::cast<cl_program>(hProgram), name, blockingRead, count,

0 commit comments

Comments
 (0)