<2022-04-10 Sun>
替代ImageMagick
的ThrowMagickException()
我为GraphicsMagick
增加了AccelerateEvent
,因为我在opencl.c:CompileOpenCLKernel()
中没有找到合适的方法替代ImageMagick
的ThrowMagickException()
,目前用日志代替异常(其实这个异常本身也没有结束程序的功能,况且如果这里发生错误的话也没必要结束程序):
status=openCL_library->clBuildProgram(device->program,1,&device->deviceID,
options,NULL,NULL);
if (status != CL_SUCCESS)
{
// (void) ThrowMagickException(exception,GetMagickModule(),DelegateWarning,
// "clBuildProgram failed.","(%d)",(int)status);
(void) LogMagickEvent(AccelerateEvent,GetMagickModule(), // TODO(ocl)
"clBuildProgram failed: %d",(int)status);
LogOpenCLBuildFailure(device,kernel,exception);
return(MagickFalse);
}
如果程序走进这个if
分支中,说明使用硬件加速失败,期望的行为是走原来流程,这样的话就不会因为初始化硬件加速而耽误太长时间。而实际上程序确实花费了一定的时间且走了原有流程。原ImageMagick
中也是如此,我觉得这是一个问题。
见commit
:handling TODO(ocl): AccelerateEvent。