From e1924eba1cba3b96a11639b196ba061f13ef9498 Mon Sep 17 00:00:00 2001 From: Lostoner Date: Tue, 22 Aug 2023 20:12:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=BC=80=E5=8F=91=E6=9D=BFGL?= =?UTF-8?q?ES=5Fimpl=E8=B7=AF=E5=BE=84=EF=BC=8C=E5=B0=81=E8=A3=85opencl?= =?UTF-8?q?=E5=87=BD=E6=95=B0clEnqueueReadBufferRect=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Lostoner --- include/opencl_wrapper.h | 4 ++++ src/opencl_wrapper.cpp | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/include/opencl_wrapper.h b/include/opencl_wrapper.h index d477770..62f6a1a 100644 --- a/include/opencl_wrapper.h +++ b/include/opencl_wrapper.h @@ -69,6 +69,9 @@ using clEnqueueReadImageFunc = cl_int (*)(cl_command_queue, cl_mem, cl_bool, con size_t, void *, cl_uint, const cl_event *, cl_event *); using clEnqueueReadBufferFunc = cl_int (*)(cl_command_queue, cl_mem, cl_bool, size_t, size_t, void *, cl_uint, const cl_event *, cl_event *); +using clEnqueueReadBufferRectFunc = cl_int (*)(cl_command_queue, cl_mem, cl_bool, const size_t *, const size_t *, + const size_t *, size_t, size_t, size_t, size_t, void *, cl_uint, + const cl_event *, cl_event *); using clGetProgramBuildInfoFunc = cl_int (*)(cl_program, cl_device_id, cl_program_build_info, size_t, void *, size_t *); using clRetainProgramFunc = cl_int (*)(cl_program program); using clEnqueueMapBufferFunc = void *(*)(cl_command_queue, cl_mem, cl_bool, cl_map_flags, size_t, size_t, cl_uint, @@ -165,6 +168,7 @@ CL_DECLARE_FUNC_PTR(clEnqueueCopyImage); CL_DECLARE_FUNC_PTR(clRetainProgram); CL_DECLARE_FUNC_PTR(clGetProgramBuildInfo); CL_DECLARE_FUNC_PTR(clEnqueueReadBuffer); +CL_DECLARE_FUNC_PTR(clEnqueueReadBufferRect); CL_DECLARE_FUNC_PTR(clEnqueueWriteBuffer); CL_DECLARE_FUNC_PTR(clEnqueueWriteImage); CL_DECLARE_FUNC_PTR(clEnqueueReadImage); diff --git a/src/opencl_wrapper.cpp b/src/opencl_wrapper.cpp index da0a8e1..a856e87 100644 --- a/src/opencl_wrapper.cpp +++ b/src/opencl_wrapper.cpp @@ -33,6 +33,8 @@ static const std::vector g_opencl_library_paths = { "/vendor/lib64/chipsetsdk/libGLES_mali.so", "/system/lib64/libGLES_mali.so", "libGLES_mali.so", + "/vendor/lib64/chipsetsdk/libhvgr_v200.so", + "/vendor/lib64/chipsetsdk/libEGL_impl.so", #endif }; @@ -108,6 +110,7 @@ static bool LoadLibraryFromPath(const std::string &library_path, void **handle_p LOAD_OPENCL_FUNCTION_PTR(clRetainProgram); LOAD_OPENCL_FUNCTION_PTR(clGetProgramBuildInfo); LOAD_OPENCL_FUNCTION_PTR(clEnqueueReadBuffer); + LOAD_OPENCL_FUNCTION_PTR(clEnqueueReadBufferRect); LOAD_OPENCL_FUNCTION_PTR(clEnqueueWriteBuffer); LOAD_OPENCL_FUNCTION_PTR(clEnqueueReadImage); LOAD_OPENCL_FUNCTION_PTR(clEnqueueWriteImage); @@ -194,6 +197,7 @@ CL_DEFINE_FUNC_PTR(clEnqueueCopyImage); CL_DEFINE_FUNC_PTR(clRetainProgram); CL_DEFINE_FUNC_PTR(clGetProgramBuildInfo); CL_DEFINE_FUNC_PTR(clEnqueueReadBuffer); +CL_DEFINE_FUNC_PTR(clEnqueueReadBufferRect); CL_DEFINE_FUNC_PTR(clEnqueueWriteBuffer); CL_DEFINE_FUNC_PTR(clEnqueueWriteImage); CL_DEFINE_FUNC_PTR(clEnqueueReadImage); @@ -496,6 +500,21 @@ cl_int clEnqueueReadBuffer(cl_command_queue command_queue, cl_mem buffer, cl_boo event_wait_list, event); } +// clEnqueueReadBufferRect wrapper, use OpenCLWrapper function. +cl_int clEnqueueReadBufferRect(cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_read, + const size_t *buffer_origin, const size_t *host_origin, const size_t *region, + size_t buffer_row_pitch, size_t buffer_slice_pitch, size_t host_row_pitch, + size_t host_slice_pitch, void *ptr, cl_uint num_events_in_wait_list, + const cl_event *event_wait_list, cl_event *event) +{ + OHOS::InitOpenCL(); + auto func = OHOS::clEnqueueReadBufferRect; + MS_ASSERT(func != nullptr); + return func(command_queue, buffer, blocking_read, buffer_origin, host_origin, region, buffer_row_pitch, + buffer_slice_pitch, host_row_pitch, host_slice_pitch, ptr, num_events_in_wait_list, + event_wait_list, event); +} + // clEnqueueWriteBuffer wrapper, use OpenCLWrapper function. cl_int clEnqueueWriteBuffer(cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_write, size_t offset, size_t size, const void *ptr, cl_uint num_events_in_wait_list, -- Gitee