如何写ScaleImage()
的硬件加速函数(三)
在“如何写ScaleImage()
的硬件加速函数(二)”中介绍的kernel
函数的写法可能会产生如下现象:
ScaleFilter()
不是总能被成功调用。- 每次修改过
ScaleFilter()
后,有时在~.cache/GraphicsMagick
目录中不会生成新的.bin
文件。 - 这种情况下,调试发现在
getOpenCLEnvironment(exception);
处就失败返回。
MagickPrivate Image *AccelerateScaleImage(const Image *image,
const size_t scaledColumns,const size_t scaledRows,
ExceptionInfo *exception)
{
Image
*filteredImage;
MagickCLEnv
clEnv;
assert(image != NULL);
assert(exception != (ExceptionInfo *) NULL);
if (checkAccelerateCondition(image) == MagickFalse)
return((Image *) NULL);
clEnv=getOpenCLEnvironment(exception);
if (clEnv == (MagickCLEnv) NULL)
return((Image *) NULL);
filteredImage=ComputeScaleImage(image,clEnv,scaledColumns,scaledRows,
exception);
return(filteredImage);
}
- 重启电脑似乎不能校正这种问题,但第二天开机这个问题就没有了,难道我的
ScaleFilter()
函数让CPU
或者GPU
内部错乱了? - 没添加额外调试输出前,没有找到任何异常日志。
- 忘说了一个关键问题,这两天电脑已经发现死机两次,包括今天早上这次,刚输入完密码回车后就死机。