opencl: Print compilation log
Useful when debugging.
This commit is contained in:
parent
d2a1029724
commit
893a648182
@ -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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user