From 32d49d55ecd5150b8f4e4cd8bb5af5439d9aa7ff Mon Sep 17 00:00:00 2001 From: Ioannis Assiouras Date: Wed, 31 Jan 2024 23:00:14 +0000 Subject: [PATCH] SWDEV-443796 - Translate CL_INVALID_GL_OBJECT error for DX/CL interop Change-Id: If87bb9d0fb275dd4d9a8a949f4016a082a300144 --- opencl/amdocl/cl_common.hpp | 3 +++ opencl/amdocl/cl_d3d10.cpp | 12 ++++++------ opencl/amdocl/cl_d3d11.cpp | 12 ++++++------ opencl/amdocl/cl_d3d9.cpp | 12 ++++++------ 4 files changed, 21 insertions(+), 18 deletions(-) diff --git a/opencl/amdocl/cl_common.hpp b/opencl/amdocl/cl_common.hpp index a1680030c0..b06c512b1e 100644 --- a/opencl/amdocl/cl_common.hpp +++ b/opencl/amdocl/cl_common.hpp @@ -116,6 +116,9 @@ cl_int clEnqueueReleaseExtObjectsAMD(cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event, cl_command_type cmd_type); +static inline cl_int clDXTranslateErrorCode(cl_int err) { + return err == CL_INVALID_GL_OBJECT ? CL_INVALID_MEM_OBJECT : err; +} } // namespace amd diff --git a/opencl/amdocl/cl_d3d10.cpp b/opencl/amdocl/cl_d3d10.cpp index 6c4952bf4b..066a3d1f20 100644 --- a/opencl/amdocl/cl_d3d10.cpp +++ b/opencl/amdocl/cl_d3d10.cpp @@ -376,9 +376,9 @@ RUNTIME_EXIT RUNTIME_ENTRY(cl_int, clEnqueueAcquireD3D10ObjectsKHR, (cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event)) { - return amd::clEnqueueAcquireExtObjectsAMD(command_queue, num_objects, mem_objects, - num_events_in_wait_list, event_wait_list, event, - CL_COMMAND_ACQUIRE_D3D10_OBJECTS_KHR); + return amd::clDXTranslateErrorCode(amd::clEnqueueAcquireExtObjectsAMD( + command_queue, num_objects, mem_objects, num_events_in_wait_list, event_wait_list, event, + CL_COMMAND_ACQUIRE_D3D10_OBJECTS_KHR)); } RUNTIME_EXIT @@ -389,9 +389,9 @@ RUNTIME_EXIT RUNTIME_ENTRY(cl_int, clEnqueueReleaseD3D10ObjectsKHR, (cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event)) { - return amd::clEnqueueReleaseExtObjectsAMD(command_queue, num_objects, mem_objects, - num_events_in_wait_list, event_wait_list, event, - CL_COMMAND_RELEASE_D3D10_OBJECTS_KHR); + return amd::clDXTranslateErrorCode(amd::clEnqueueReleaseExtObjectsAMD( + command_queue, num_objects, mem_objects, num_events_in_wait_list, event_wait_list, event, + CL_COMMAND_RELEASE_D3D10_OBJECTS_KHR)); } RUNTIME_EXIT diff --git a/opencl/amdocl/cl_d3d11.cpp b/opencl/amdocl/cl_d3d11.cpp index d430b5e3ad..ffd3370df7 100644 --- a/opencl/amdocl/cl_d3d11.cpp +++ b/opencl/amdocl/cl_d3d11.cpp @@ -375,9 +375,9 @@ RUNTIME_EXIT RUNTIME_ENTRY(cl_int, clEnqueueAcquireD3D11ObjectsKHR, (cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event)) { - return amd::clEnqueueAcquireExtObjectsAMD(command_queue, num_objects, mem_objects, - num_events_in_wait_list, event_wait_list, event, - CL_COMMAND_ACQUIRE_D3D11_OBJECTS_KHR); + return amd::clDXTranslateErrorCode(amd::clEnqueueAcquireExtObjectsAMD( + command_queue, num_objects, mem_objects, num_events_in_wait_list, event_wait_list, event, + CL_COMMAND_ACQUIRE_D3D11_OBJECTS_KHR)); } RUNTIME_EXIT @@ -388,9 +388,9 @@ RUNTIME_EXIT RUNTIME_ENTRY(cl_int, clEnqueueReleaseD3D11ObjectsKHR, (cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event)) { - return amd::clEnqueueReleaseExtObjectsAMD(command_queue, num_objects, mem_objects, - num_events_in_wait_list, event_wait_list, event, - CL_COMMAND_RELEASE_D3D11_OBJECTS_KHR); + return amd::clDXTranslateErrorCode(amd::clEnqueueReleaseExtObjectsAMD( + command_queue, num_objects, mem_objects, num_events_in_wait_list, event_wait_list, event, + CL_COMMAND_RELEASE_D3D11_OBJECTS_KHR)); } RUNTIME_EXIT diff --git a/opencl/amdocl/cl_d3d9.cpp b/opencl/amdocl/cl_d3d9.cpp index 3778ab9725..90e3241892 100644 --- a/opencl/amdocl/cl_d3d9.cpp +++ b/opencl/amdocl/cl_d3d9.cpp @@ -213,18 +213,18 @@ RUNTIME_EXIT RUNTIME_ENTRY(cl_int, clEnqueueAcquireDX9MediaSurfacesKHR, (cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event)) { - return amd::clEnqueueAcquireExtObjectsAMD(command_queue, num_objects, mem_objects, - num_events_in_wait_list, event_wait_list, event, - CL_COMMAND_ACQUIRE_DX9_MEDIA_SURFACES_KHR); + return amd::clDXTranslateErrorCode(amd::clEnqueueAcquireExtObjectsAMD( + command_queue, num_objects, mem_objects, num_events_in_wait_list, event_wait_list, event, + CL_COMMAND_ACQUIRE_DX9_MEDIA_SURFACES_KHR)); } RUNTIME_EXIT RUNTIME_ENTRY(cl_int, clEnqueueReleaseDX9MediaSurfacesKHR, (cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event)) { - return amd::clEnqueueReleaseExtObjectsAMD(command_queue, num_objects, mem_objects, - num_events_in_wait_list, event_wait_list, event, - CL_COMMAND_RELEASE_DX9_MEDIA_SURFACES_KHR); + return amd::clDXTranslateErrorCode(amd::clEnqueueReleaseExtObjectsAMD( + command_queue, num_objects, mem_objects, num_events_in_wait_list, event_wait_list, event, + CL_COMMAND_RELEASE_DX9_MEDIA_SURFACES_KHR)); } RUNTIME_EXIT