Useful when debugging. --- libavutil/opencl.c | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-)
diff --git a/libavutil/opencl.c b/libavutil/opencl.c index c2956fd..f720ce0 100644 --- a/libavutil/opencl.c +++ b/libavutil/opencl.c @@ -449,12 +449,14 @@ end: cl_program av_opencl_compile(const char *program_name, const char *build_opts) { int i; - cl_int status; + cl_int status, build_status; int kernel_code_idx = 0; const char *kernel_source; size_t kernel_code_len; char* ptr = NULL; cl_program program = NULL; + size_t log_size; + char *log = NULL; LOCK_OPENCL; for (i = 0; i < opencl_ctx.kernel_code_count; i++) { @@ -481,11 +483,36 @@ cl_program av_opencl_compile(const char *program_name, const char *build_opts) program = NULL; goto end; } - status = clBuildProgram(program, 1, &(opencl_ctx.device_id), build_opts, NULL, NULL); + + build_status = clBuildProgram(program, 1, &(opencl_ctx.device_id), build_opts, NULL, NULL); + status = clGetProgramBuildInfo(program, opencl_ctx.device_id, + CL_PROGRAM_BUILD_LOG, 0, NULL, &log_size); if (status != CL_SUCCESS) { + av_log(&opencl_ctx, AV_LOG_WARNING, + "Failed to get compilation log: %s\n", + av_opencl_errstr(status)); + } else { + log = av_malloc(log_size); + if (log) { + status = clGetProgramBuildInfo(program, opencl_ctx.device_id, + CL_PROGRAM_BUILD_LOG, log_size, + log, NULL); + if (status != CL_SUCCESS) { + av_log(&opencl_ctx, AV_LOG_WARNING, + "Failed to get compilation log: %s\n", + av_opencl_errstr(status)); + } else { + int level = build_status == CL_SUCCESS ? AV_LOG_DEBUG : + AV_LOG_ERROR; + av_log(&opencl_ctx, level, "Compilation log:\n%s\n", log); + } + } + av_freep(&log); + } + if (build_status != CL_SUCCESS) { av_log(&opencl_ctx, AV_LOG_ERROR, "Compilation failed with OpenCL program '%s': %s\n", - program_name, av_opencl_errstr(status)); + program_name, av_opencl_errstr(build_status)); program = NULL; goto end; } -- 2.1.4 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel